nolo-cli 0.213.0 → 0.223.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/README.md +3 -2
  2. package/{_executeModel-CUJLCFWR.js → _executeModel-4GGQQHOB.js} +111 -82
  3. package/{accountResolver-4LKIHEKL.js → accountResolver-EK2S4PWF.js} +6 -6
  4. package/{action-DF5UYSJF.js → action-CK64LS6S.js} +12 -11
  5. package/{addContentAction-WERAONNY.js → addContentAction-GDHDOF4U.js} +18 -17
  6. package/{addDialogAgentAction-7VI7YRML.js → addDialogAgentAction-CAKRU3ZT.js} +21 -20
  7. package/{agentDeleteCommand-XJORXPGU.js → agentDeleteCommand-BPV2XZL7.js} +128 -119
  8. package/{agentEmailCommands-XTYYFR6Z.js → agentEmailCommands-EJOS75YL.js} +132 -124
  9. package/{agentFavoriteCommands-EDK743YA.js → agentFavoriteCommands-2LKGKSUD.js} +7 -8
  10. package/{agentGrantCommands-RQWK2TEV.js → agentGrantCommands-QQV4N4JW.js} +5 -5
  11. package/{agentListCommands-OBLRBLHS.js → agentListCommands-HIZODBF3.js} +155 -92
  12. package/{agentMachineCommands-5FMT3OT5.js → agentMachineCommands-ZMQ2CY7Y.js} +62 -54
  13. package/{agentProviderCommands-Q5O33MED.js → agentProviderCommands-WKJOAWBP.js} +5 -5
  14. package/{agentPullCommand-6EM3URVK.js → agentPullCommand-XN6ZPBUW.js} +7 -7
  15. package/agentRecordCommands-OMXVDLDX.js +176 -0
  16. package/agentRunCommand-CB34YWMV.js +206 -0
  17. package/{agentRunControl-TAMHJQSR.js → agentRunControl-JNONH3RP.js} +30 -15
  18. package/{agentRuntimeLocal-SOO2OPJG.js → agentRuntimeLocal-QZPFWMLG.js} +52 -45
  19. package/{agentSlice-CHR6KOZN.js → agentSlice-RD2CDU7T.js} +20 -19
  20. package/{appDeleteCommands-GUP6P5YE.js → appDeleteCommands-QCCFDIEQ.js} +61 -53
  21. package/{appDeployCommands-MH2FX4O5.js → appDeployCommands-V2T7TNMQ.js} +61 -53
  22. package/{appDeployStatusCommands-SUHN3HPJ.js → appDeployStatusCommands-6PGH7ZCG.js} +61 -53
  23. package/{appGetCommands-YWDEX6Z4.js → appGetCommands-3L7WWJA6.js} +61 -53
  24. package/{appListCommands-ZQVMLPAY.js → appListCommands-ENJCK4PO.js} +61 -53
  25. package/{authCommand-PWX2ZNUP.js → authCommand-6V47SYGK.js} +29 -28
  26. package/{authCommands-HV3EAU3V.js → authCommands-GAJ3NIXO.js} +14 -13
  27. package/{builtinSkillRegistry-2QETTQPM.js → builtinSkillRegistry-2ECA42FC.js} +11 -13
  28. package/{chromeCommands-REEAH4SX.js → chromeCommands-G5UDKVSV.js} +3 -3
  29. package/{chromeOpsCommands-DIVM2K3T.js → chromeOpsCommands-YKX2QX3A.js} +20 -10
  30. package/{chunk-CRHOO2ZR.js → chunk-27PCUMJI.js} +2 -2
  31. package/chunk-2CI3ZFWD.js +97 -0
  32. package/{chunk-NSAPDIN2.js → chunk-2GJKRKI6.js} +541 -31
  33. package/{chunk-SM3NSZJV.js → chunk-2UCBGYO4.js} +20 -1
  34. package/{chunk-PYRUW7XN.js → chunk-2VUZSVAS.js} +136 -54
  35. package/{chunk-YB3YZK56.js → chunk-2WZXXAQD.js} +1 -67
  36. package/chunk-2YGBI2XB.js +30 -0
  37. package/chunk-2ZKFCIJJ.js +13 -0
  38. package/{chunk-QG4AOSON.js → chunk-34J5K2YA.js} +13 -32
  39. package/{chunk-LOEO7LRC.js → chunk-3IK6ILVW.js} +4 -1
  40. package/{chunk-CTPXME7U.js → chunk-3LMUPOHG.js} +29 -6
  41. package/chunk-44X52WOJ.js +1621 -0
  42. package/{chunk-6VLJ6YA7.js → chunk-4DESLZTK.js} +9 -9
  43. package/{chunk-MYOH447Z.js → chunk-4JVNURX4.js} +1 -1
  44. package/chunk-5CHGAKRT.js +364 -0
  45. package/{chunk-YDH3FDFQ.js → chunk-5FUN7EG4.js} +1 -1
  46. package/{chunk-INUFILG6.js → chunk-5RKUPJYL.js} +1 -1
  47. package/{chunk-ZC3CMUKU.js → chunk-6OVNSQHN.js} +84 -2
  48. package/{chunk-MOIJOHA5.js → chunk-6WU5572L.js} +36 -25
  49. package/{chunk-IXNGOHV5.js → chunk-7EEZJ6BS.js} +11 -152
  50. package/{chunk-Y6ORVLSS.js → chunk-7ET2U67U.js} +1 -1
  51. package/{chunk-G7MLNNEX.js → chunk-7JLY4WYF.js} +5 -5
  52. package/{chunk-P5L7CXOC.js → chunk-7Z6EW7AH.js} +3 -2
  53. package/{chunk-NJLL224W.js → chunk-AD5EWDFD.js} +2 -2
  54. package/{chunk-J2NHJ7WX.js → chunk-AIHYNKGV.js} +4 -4
  55. package/{chunk-HPFCI4SK.js → chunk-AK5O76CC.js} +3 -3
  56. package/{chunk-Y63ZSOR6.js → chunk-AL3TYDIF.js} +1 -1
  57. package/{chunk-ALQ3657A.js → chunk-AMEOV5VZ.js} +32 -12
  58. package/chunk-AN74ON4G.js +675 -0
  59. package/{chunk-HRMJUN5J.js → chunk-AQZ6BMRK.js} +1 -1
  60. package/{chunk-XHQC4PXX.js → chunk-B4GOW4MT.js} +424 -194
  61. package/{chunk-4KB6WQUL.js → chunk-BGP2EDFG.js} +1 -1
  62. package/{chunk-NBTY7YJF.js → chunk-BR3GT6MR.js} +1 -0
  63. package/{chunk-7RFNTILS.js → chunk-BUDVRYES.js} +2 -2
  64. package/{chunk-SVYO6AO7.js → chunk-BV3FLP2L.js} +41 -1
  65. package/{chunk-RZOV7OMV.js → chunk-C4VAR65S.js} +83 -141
  66. package/{chunk-COFEN36Z.js → chunk-C4WTX5TU.js} +2 -2
  67. package/{chunk-ZL5RAEEB.js → chunk-CIRB724Q.js} +1 -1
  68. package/{chunk-F6UUQOG6.js → chunk-CKT6QUE2.js} +4 -4
  69. package/{chunk-X7SDOJUM.js → chunk-CMZ3Z5PT.js} +14 -14
  70. package/{secretCommands-LXDWOLZ6.js → chunk-D726I5AZ.js} +191 -16
  71. package/{chunk-TAKB25RM.js → chunk-DNKTQ3IN.js} +4 -4
  72. package/chunk-DVQH4BTR.js +1137 -0
  73. package/{chunk-WYDI6TGM.js → chunk-DWX2HEVC.js} +91 -132
  74. package/{chunk-5MQRBSMW.js → chunk-EIAI3PPH.js} +111 -113
  75. package/chunk-EUCFKKDM.js +247 -0
  76. package/chunk-EWQ3HGNZ.js +90 -0
  77. package/{chunk-RPQXPZZF.js → chunk-F3GRJO4Z.js} +908 -13
  78. package/{chunk-YTF4WH7J.js → chunk-FIYSMXHY.js} +1 -1
  79. package/{chunk-75XIDFBW.js → chunk-FJ23FZXF.js} +72 -28
  80. package/{chunk-INN4LTAJ.js → chunk-FJK526XH.js} +2 -2
  81. package/chunk-FS2XP5D7.js +142 -0
  82. package/{chunk-FUGMREBO.js → chunk-FYF2TONJ.js} +5 -5
  83. package/{chunk-PCLE46CE.js → chunk-GBWGPTA7.js} +2 -1
  84. package/{chunk-TX5EYMGT.js → chunk-GYVCJABP.js} +30 -254
  85. package/{chunk-3UKL3HPD.js → chunk-HOCHUZQ7.js} +8 -78
  86. package/{chunk-EHSZD5OI.js → chunk-HXER7YJF.js} +4 -4
  87. package/chunk-HYIETXA6.js +99 -0
  88. package/{chunk-H2TJUNCH.js → chunk-I4EADJ4P.js} +6 -6
  89. package/{chunk-TCZHTTUU.js → chunk-I7WBYGBP.js} +8 -8
  90. package/{chunk-6DWMYIUY.js → chunk-IILMY4W4.js} +14 -9
  91. package/chunk-JA3ICVJY.js +271 -0
  92. package/{chunk-ZRSNONOB.js → chunk-JWXITTQB.js} +8 -3
  93. package/{chunk-H4UOTUOX.js → chunk-KEN3N2TN.js} +148 -18
  94. package/{chunk-LEC5ALIN.js → chunk-KEPOVMF4.js} +1 -1
  95. package/{chunk-UHJGXRJ4.js → chunk-KQSYAIZR.js} +3 -3
  96. package/{chunk-4VJAC32I.js → chunk-L5I543VB.js} +3 -2
  97. package/chunk-LKA64WH4.js +227 -0
  98. package/{chunk-QHPRUL4O.js → chunk-LVL6GFCM.js} +4 -4
  99. package/{chunk-H5HF7TJA.js → chunk-MAIITKBT.js} +2 -2
  100. package/chunk-MBG66ZBH.js +226 -0
  101. package/{chunk-YUA6OAH5.js → chunk-MDLS23JK.js} +2 -2
  102. package/{chunk-VL5KOY2C.js → chunk-MK2Q7ZJD.js} +67 -5
  103. package/{chunk-MDB67IWP.js → chunk-MS4NZNKI.js} +10 -10
  104. package/{chunk-VO4WSAVP.js → chunk-MYHNBEXD.js} +3 -3
  105. package/{chunk-ZXOUUDCG.js → chunk-MZLE5HQ3.js} +3654 -231
  106. package/{chunk-AZMYUSVF.js → chunk-N5Z2V73W.js} +1 -1
  107. package/{chunk-V5Y3R6BT.js → chunk-NIZ2BXFD.js} +213 -210
  108. package/{chunk-KFLT5KAD.js → chunk-NWP2OYOX.js} +20 -20
  109. package/{chunk-G2BQWAVT.js → chunk-O6J3OTOP.js} +4 -4
  110. package/{chunk-VNYYOX3V.js → chunk-OB6DVWPF.js} +141 -48
  111. package/{chunk-YWSEPJ7C.js → chunk-OBWT45ZU.js} +3 -3
  112. package/{chunk-ZNWI6OVT.js → chunk-ODJ7BVSI.js} +80 -11
  113. package/{chunk-XJWWBO34.js → chunk-OJKUU3LP.js} +5 -7
  114. package/{chunk-HUBHAQK2.js → chunk-ON37YXGX.js} +29 -29
  115. package/{chunk-UYD5HQ6T.js → chunk-P5ZJRTCH.js} +5429 -1752
  116. package/{chunk-6XIE5ZGI.js → chunk-PDCV7P5W.js} +1 -1
  117. package/{chunk-WRYQ35LQ.js → chunk-PJCIP64Z.js} +859 -57
  118. package/{chunk-7QTZCMKL.js → chunk-PJVKMGPZ.js} +1089 -1639
  119. package/{chunk-A7TFUNZO.js → chunk-PPJYZRSQ.js} +6 -2
  120. package/chunk-QHEN7NZ7.js +46 -0
  121. package/{chunk-OQPKUBPB.js → chunk-QNWG52I4.js} +19 -7
  122. package/{chunk-YGILMZ7N.js → chunk-QVBXJNZ2.js} +1 -1
  123. package/{chunk-7BT37FK3.js → chunk-RDH5CQ4T.js} +648 -131
  124. package/{chunk-C6KNNXWU.js → chunk-RGQ4UUWZ.js} +25 -2
  125. package/{chunk-OWYYDMGJ.js → chunk-S2NTVGA2.js} +4 -2
  126. package/{chunk-KC4XDTT3.js → chunk-SOF4OWDM.js} +6 -4
  127. package/{chunk-RLBNLZVC.js → chunk-SQYIK6HO.js} +1 -1
  128. package/{chunk-YJAFKXMU.js → chunk-SVT62ULE.js} +50 -48
  129. package/{chunk-KIM6CLW5.js → chunk-SY3C4SQ7.js} +42 -15
  130. package/{chunk-JY5NGFFH.js → chunk-SYTHYBMI.js} +5 -5
  131. package/{chunk-WMTBPBMP.js → chunk-T6DXNI6Z.js} +52 -50
  132. package/chunk-TLE77UJ5.js +230 -0
  133. package/{chunk-4VNS5WPM.js → chunk-U67V476Y.js} +1 -8
  134. package/{chunk-F7CI2ZC5.js → chunk-UAIHKQIA.js} +2 -1
  135. package/{chunk-R5O4QAWG.js → chunk-UB3D4TRQ.js} +11 -77
  136. package/{chunk-WPORQFYN.js → chunk-UVLYNWIE.js} +2 -2
  137. package/{chunk-NOKUNJON.js → chunk-UYOICCYG.js} +29 -19
  138. package/{chunk-4I7ERB7F.js → chunk-VREDDN25.js} +1 -1
  139. package/{chunk-O2TZF4AI.js → chunk-WAE3GFCJ.js} +3 -3
  140. package/{chunk-H7PPIYWP.js → chunk-WI67URFP.js} +20 -20
  141. package/{chunk-7OCO4TDT.js → chunk-WJVYAO6P.js} +1 -1
  142. package/{chunk-T43B7LB2.js → chunk-WKGQSYTB.js} +1 -1
  143. package/{chunk-BBJ22CLB.js → chunk-WUUH4LWZ.js} +60 -30
  144. package/{chunk-4T2WNOY7.js → chunk-X7UF53VA.js} +33 -22
  145. package/{chunk-TY3TIUJK.js → chunk-XI2BWJM5.js} +65 -0
  146. package/{chunk-LLRPJECG.js → chunk-XWVCYUUU.js} +16 -159
  147. package/{chunk-J5JTMQIA.js → chunk-YFLVRVYK.js} +1 -1
  148. package/{chunk-EYLGAEB4.js → chunk-YGMBIXCF.js} +132 -0
  149. package/chunk-YL3EFYL3.js +199 -0
  150. package/{chunk-MMA3LZ3W.js → chunk-YNIYE47Z.js} +1 -1
  151. package/{chunk-W4S457LU.js → chunk-YU4ZPWVF.js} +41 -5
  152. package/{chunk-7Y4YTDQF.js → chunk-YWWDC3O7.js} +281 -159
  153. package/chunk-YZMNK53S.js +68 -0
  154. package/{chunk-RSHTSUEG.js → chunk-Z2PITYZN.js} +2060 -602
  155. package/{chunk-FY7F4Q6X.js → chunk-Z4PCXPUE.js} +2 -2
  156. package/{cliAgentConfigHelpers-WJBZQTLW.js → cliAgentConfigHelpers-TKYL43MT.js} +15 -16
  157. package/{cliAuthorityBrokerClient-PM3U6Q6J.js → cliAuthorityBrokerClient-XHH7MH2P.js} +1 -1
  158. package/{cliAuthorityStoreDriver-TKLXNNTG.js → cliAuthorityStoreDriver-6FE3BJNB.js} +1 -1
  159. package/{cliEnvHelpers-BVYTMUPJ.js → cliEnvHelpers-VPSJ4XWC.js} +3 -3
  160. package/{cliExecutor-BWBF2MTI.js → cliExecutor-4MAX3PZL.js} +2 -2
  161. package/cliLocalAgentRecordReader-MHHD4T7R.js +90 -0
  162. package/{commandRegistry-W63CYRZJ.js → commandRegistry-5DA5UP7S.js} +105 -97
  163. package/{contentThunks-U7PL5MQD.js → contentThunks-5GUQ7FWJ.js} +47 -43
  164. package/{cooldownCommands-TIGUHXTD.js → cooldownCommands-X7P5M2V5.js} +5 -4
  165. package/{createAgentAutomationAction-OLBQDD6R.js → createAgentAutomationAction-UCLTHQRI.js} +51 -49
  166. package/{createDialogAction-SVH6B3SB.js → createDialogAction-UPN774AF.js} +46 -48
  167. package/{createPageAction-F4DIWZ2Z.js → createPageAction-JRQ2TA4O.js} +50 -48
  168. package/{cursorProvider-YGGNMVWX.js → cursorProvider-2RACMEMF.js} +1 -1
  169. package/{db-HUCI5R4G.js → db-CS4ZJQKV.js} +1 -1
  170. package/{dbSlice-BVH2YZPQ.js → dbSlice-WNON7TOL.js} +17 -16
  171. package/{deleteFile-5YOEKV4U.js → deleteFile-Q3YDB4ML.js} +9 -9
  172. package/{desktopFolderProjects-SFY5EZS3.js → desktopFolderProjects-4POAMVJN.js} +2 -2
  173. package/{dialogCommands-KHIEPY3M.js → dialogCommands-VRI7VCXH.js} +64 -57
  174. package/dialogNotifyCommand-6TMCX4D2.js +36 -0
  175. package/{dialogSlice-ZCTDV2PZ.js → dialogSlice-LFNVUSAN.js} +42 -40
  176. package/{dialogUsageCommand-7KCPYGHG.js → dialogUsageCommand-HTVPR2CX.js} +11 -10
  177. package/{docCreateCommands-DPMZI7G5.js → docCreateCommands-AMPXMOX3.js} +61 -55
  178. package/{docDeleteCommands-IRQQLUBT.js → docDeleteCommands-I5WFAEHP.js} +63 -57
  179. package/{docReadCommands-LK37XH6L.js → docReadCommands-X53ELNIE.js} +61 -55
  180. package/{docStore-V2KECILA.js → docStore-2VAWVLWH.js} +21 -20
  181. package/{docUpdateCommands-O6T3HJHH.js → docUpdateCommands-6QPNDC7M.js} +64 -58
  182. package/{fetchMessages-NR4KNQLO.js → fetchMessages-TQEUZD7H.js} +8 -7
  183. package/{getPricing-2MNMXEVG.js → getPricing-MB2GBXOK.js} +6 -6
  184. package/{handleSendMessageAction-2PE25WM3.js → handleSendMessageAction-AAJOHXOB.js} +194 -302
  185. package/{hostCredentialCreate-S233UMAP.js → hostCredentialCreate-GLMJ22M6.js} +123 -114
  186. package/index.js +29 -29
  187. package/{keys-BEGDOTRL.js → keys-RWF7UCB4.js} +5 -4
  188. package/legacyMigration-TF4SYJCZ.js +19 -0
  189. package/{lib-5KKIBFIT.js → lib-OT5OTXRU.js} +7087 -6664
  190. package/{localDialogRead-7NNDVVF7.js → localDialogRead-SVTPA5GY.js} +3 -3
  191. package/{localFirstLog-DHNOY2NA.js → localFirstLog-OIETGK66.js} +1 -1
  192. package/localRecall-2J6QPOK2.js +15 -0
  193. package/{localRuntimeAdapter-KY6WXNBR.js → localRuntimeAdapter-BMP57P42.js} +119 -110
  194. package/{localRuntimeAuthority-OYH4AE4G.js → localRuntimeAuthority-IBJAT62G.js} +1 -1
  195. package/{localRuntimeDb-VBIMCWUC.js → localRuntimeDb-N7KHDXS2.js} +2 -2
  196. package/{machineCommands-Q6HA3IXF.js → machineCommands-3MLIAK5Q.js} +128 -119
  197. package/{machineInfo-UKPTZO5Y.js → machineInfo-LWHTEBHJ.js} +1 -1
  198. package/machineWsRunDispatch-FKIGROQF.js +191 -0
  199. package/{memberThunks-7EDJADWU.js → memberThunks-ZGLZ36PK.js} +29 -28
  200. package/{memoryCommands-ASCE5STX.js → memoryCommands-5WC3T66U.js} +4 -4
  201. package/models-ULVWLSQ6.js +9 -0
  202. package/{oauthTokenStore-OEERZFUC.js → oauthTokenStore-RUYNYALS.js} +1 -1
  203. package/{offlineMarxistsAgentCommand-2QTHJCHV.js → offlineMarxistsAgentCommand-4IC3Y4C6.js} +4 -4
  204. package/overlay-THLKYIWY.js +11 -0
  205. package/package.json +2 -2
  206. package/{pdf-U6KSUEZZ.js → pdf-KE3QI2V7.js} +1 -1
  207. package/{processSpawn-ZU5QFM43.js → processSpawn-6GEO77KV.js} +1 -1
  208. package/{profileConfig-KN3N2BLF.js → profileConfig-KOWK4HOG.js} +1 -1
  209. package/{projectArchive-DRTDIMEV.js → projectArchive-HK63GMF4.js} +52 -50
  210. package/{providerPresetApply-YXGV6NXB.js → providerPresetApply-OIFQ73LH.js} +19 -12
  211. package/{providerRegistry-S6UL6UNA.js → providerRegistry-KZ3SDZ3D.js} +10 -10
  212. package/{read-4V2RMG7N.js → read-MRQHJMJ2.js} +10 -10
  213. package/{readDocTool-BH6ATGQO.js → readDocTool-4BGTXTXA.js} +2 -2
  214. package/{readlineWorkspace-2W4WRCOU.js → readlineWorkspace-AKAHSCNY.js} +7982 -6274
  215. package/{removeDialogAgentAction-LYAZGNKW.js → removeDialogAgentAction-B6H7DXFM.js} +23 -22
  216. package/{runAgentClientLoop-J2VQBS2Z.js → runAgentClientLoop-UVAWGEON.js} +81 -79
  217. package/{runtimeDoctorCommands-QAI3MBKQ.js → runtimeDoctorCommands-FW6XKDUG.js} +12 -12
  218. package/{runtimeModeArgs-2Y7BALTO.js → runtimeModeArgs-X7DL7PUN.js} +1 -1
  219. package/secretCommands-LJXOOYA7.js +24 -0
  220. package/{setDialogExtraReferencesAction-OCRPGPYH.js → setDialogExtraReferencesAction-EVCY3TRW.js} +22 -21
  221. package/{setPrimaryDialogAgentAction-HFJDQIBU.js → setPrimaryDialogAgentAction-KPFVPHCJ.js} +23 -22
  222. package/{settingThunks-RAMHMTGM.js → settingThunks-ENOAK2WV.js} +97 -88
  223. package/{skillDiscovery-XKHROSH2.js → skillDiscovery-B5V23AXP.js} +4 -4
  224. package/{skillSummaryMarker-42HKSXYY.js → skillSummaryMarker-62UW7HI7.js} +1 -1
  225. package/{slateToRenderMarkdown-Y5IYN73U.js → slateToRenderMarkdown-R3X74MCX.js} +1 -1
  226. package/{slateUtils-NGV2NMKM.js → slateUtils-ESQAJ6RN.js} +1 -1
  227. package/{spaceCommands-KVJZVKVO.js → spaceCommands-DTTNAS2L.js} +61 -53
  228. package/store-JRVN62NM.js +46 -0
  229. package/{streamAgentChatTurn-GHBMJJ6S.js → streamAgentChatTurn-R5UY25VB.js} +875 -618
  230. package/{switchDialogAgentAction-EBRMW3RA.js → switchDialogAgentAction-SZ44XDRY.js} +21 -20
  231. package/{tableCommands-MP6VFSVT.js → tableCommands-HITDSLHS.js} +10 -10
  232. package/tombstones-FQQMEDOW.js +32 -0
  233. package/{toolApiClient-HGNO53TC.js → toolApiClient-OGQEBQVX.js} +4 -4
  234. package/{tools-EWKCPKMS.js → tools-HWFG6GMJ.js} +75 -74
  235. package/tuiSummaryLlmCaller-HQQZAMYF.js +44 -0
  236. package/{updateCommands-ZQYU6SCI.js → updateCommands-RJVCRSBP.js} +10 -8
  237. package/{updateDialogTitleAction-5GGMBTDF.js → updateDialogTitleAction-KNPOAMVS.js} +48 -46
  238. package/{usageCommand-F4IPVMIZ.js → usageCommand-FWZCB7AM.js} +11 -10
  239. package/{usageRebuildCommand-HAW2AD5N.js → usageRebuildCommand-SP2BLNJU.js} +12 -11
  240. package/userDataMerge-HT2ZVHBJ.js +13 -0
  241. package/{windowsSelfUpdate-257DV2T6.js → windowsSelfUpdate-KERHIAB4.js} +3 -3
  242. package/{workloadLifecycle-4C42SVBD.js → workloadLifecycle-DYNEYHV5.js} +6 -6
  243. package/agentRecordCommands-ZQ7SVYGG.js +0 -167
  244. package/agentRunCommand-WS7IGO2W.js +0 -196
  245. package/chunk-3CGG2PAL.js +0 -594
  246. package/chunk-5XBUWM6I.js +0 -89
  247. package/chunk-CJEIOP3E.js +0 -0
  248. package/chunk-EHGEOAHI.js +0 -636
  249. package/chunk-FW6YHHLI.js +0 -842
  250. package/chunk-GPVRUGGY.js +0 -115
  251. package/chunk-HSVBJRF4.js +0 -339
  252. package/chunk-WJZOQR2J.js +0 -151
  253. package/chunk-ZCWRMUWT.js +0 -89
  254. package/dist-M676ULYG.js +0 -7314
  255. package/machineWsRunDispatch-WWJQ6WR3.js +0 -182
  256. package/models-PJBE6JDV.js +0 -9
  257. package/tuiSummaryLlmCaller-ALQYUUWB.js +0 -189
  258. package/{chunk-WACI5I6V.js → chunk-2THCNKE4.js} +3 -3
  259. package/{chunk-2QHFH3DR.js → chunk-47ITIXO7.js} +6 -6
  260. package/{chunk-GOO6G4PY.js → chunk-CKG3PRZ7.js} +0 -0
  261. package/{chunk-OQHIVPG4.js → chunk-SNBZZPYH.js} +3 -3
  262. package/{chunk-AETZ7AD6.js → chunk-W6RFEDN4.js} +3 -3
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  describeAttachmentForModel
3
- } from "./chunk-WJZOQR2J.js";
3
+ } from "./chunk-NIZ2BXFD.js";
4
4
 
5
5
  // packages/ai/attachments/projectUserPart.ts
6
6
  var isRecord = (value) => typeof value === "object" && value !== null;
@@ -49,6 +49,7 @@ function isLocalCliAgentKey(agentKey) {
49
49
  }
50
50
 
51
51
  export {
52
+ CURRENT_OPERATOR_USER_ID,
52
53
  NOLO_DEFAULT_AGENT_ID,
53
54
  NOLO_DEFAULT_AGENT_KEY,
54
55
  LOCAL_CODEX_AGENT_ID,
@@ -4,10 +4,10 @@ import {
4
4
  require_requiredArgs,
5
5
  require_toDate,
6
6
  require_typeof
7
- } from "./chunk-MMA3LZ3W.js";
7
+ } from "./chunk-YNIYE47Z.js";
8
8
  import {
9
9
  __commonJS
10
- } from "./chunk-4VNS5WPM.js";
10
+ } from "./chunk-U67V476Y.js";
11
11
 
12
12
  // node_modules/date-fns/isDate/index.js
13
13
  var require_isDate = __commonJS({
@@ -82,12 +82,52 @@ var buildRestorePatch = (nowIso) => ({
82
82
  restoredAt: nowIso,
83
83
  updatedAt: nowIso
84
84
  });
85
+ var COMPACT_TOMBSTONE_FIELDS = [
86
+ "dbKey",
87
+ "id",
88
+ "contentKey",
89
+ "appKey",
90
+ "appId",
91
+ "type",
92
+ "userId",
93
+ "deletedAt",
94
+ "updatedAt",
95
+ "createdAt",
96
+ "created",
97
+ "title",
98
+ "name",
99
+ "displayName",
100
+ "spaceId",
101
+ "serverOrigin"
102
+ ];
103
+ var compactTombstoneRecord = (record) => {
104
+ if (!isTombstoneRecord(record)) return record;
105
+ const compacted = {};
106
+ for (const field of COMPACT_TOMBSTONE_FIELDS) {
107
+ if (field in record) compacted[field] = record[field];
108
+ }
109
+ return compacted;
110
+ };
111
+ var shouldCompactTombstoneRecord = (record, nowMs = Date.now(), retentionMs = TOMBSTONE_DETAIL_RETENTION_MS) => {
112
+ if (!isTombstoneRecord(record)) return false;
113
+ const tombstoneTs = getTombstoneTimestamp(record);
114
+ return tombstoneTs > 0 && nowMs - tombstoneTs >= retentionMs;
115
+ };
116
+ var prepareTombstoneRecordForCache = (record, nowMs = Date.now()) => shouldCompactTombstoneRecord(record, nowMs) ? compactTombstoneRecord(record) : record;
117
+ var canPhysicallyPurgeTombstoneRecord = (record, options = {}) => isTombstoneRecord(record) && options.explicitPurge === true;
85
118
 
86
119
  export {
120
+ TOMBSTONE_DETAIL_RETENTION_MS,
87
121
  getRecordTimestamp,
88
122
  getTombstoneTimestamp,
123
+ getRestoreTimestamp,
89
124
  isTombstoneRecord,
125
+ isRestoredAfterTombstone,
90
126
  shouldReplaceWithNextRecord,
91
127
  buildTombstoneRecord,
92
- buildRestorePatch
128
+ buildRestorePatch,
129
+ compactTombstoneRecord,
130
+ shouldCompactTombstoneRecord,
131
+ prepareTombstoneRecordForCache,
132
+ canPhysicallyPurgeTombstoneRecord
93
133
  };
@@ -6,11 +6,17 @@ import {
6
6
  publicAgentKey
7
7
  } from "./chunk-M2EJHDJP.js";
8
8
  import {
9
- isRecord
10
- } from "./chunk-KUG52IAP.js";
9
+ dialogIdFromKey,
10
+ isSupportedDialogId,
11
+ parseDialogPathIdentity,
12
+ splitDialogKeyIdentity
13
+ } from "./chunk-YZMNK53S.js";
11
14
  import {
12
15
  asNonEmptyStringArray
13
16
  } from "./chunk-I42VC5KR.js";
17
+ import {
18
+ isRecord
19
+ } from "./chunk-KUG52IAP.js";
14
20
  import {
15
21
  asOptionalFiniteNumber
16
22
  } from "./chunk-WWC7I6TA.js";
@@ -614,8 +620,6 @@ var CLOSED_OBJECT_SCHEMA_TOOL_NAMES = /* @__PURE__ */ new Set([
614
620
  "cloud_probe",
615
621
  "cloud_exec"
616
622
  ]);
617
- var DIALOG_ID_RE = /^[0-9A-HJKMNP-TV-Z]{26}$/i;
618
- var DIALOG_PATH_RE = /^\/(?:space\/([^/]+)\/)?dialog-(.+)-([0-9A-HJKMNP-TV-Z]{26})\/?$/i;
619
623
  function stringToolParam(description) {
620
624
  return { type: "string", description };
621
625
  }
@@ -786,33 +790,32 @@ function clampNoloPositiveInteger(value, fallback, max = 500) {
786
790
  return Math.min(Math.floor(parsed), max);
787
791
  }
788
792
  function getNoloDialogIdFromKey(dbKey) {
789
- const index = dbKey.lastIndexOf("-");
790
- return index >= 0 ? dbKey.slice(index + 1) : dbKey;
793
+ return dialogIdFromKey(dbKey);
791
794
  }
792
795
  function resolveNoloDialogInput(rawInput, userId) {
793
796
  const raw = rawInput.trim();
794
797
  if (raw.startsWith("http://") || raw.startsWith("https://")) {
795
798
  const url = new URL(raw);
796
- const match = url.pathname.match(DIALOG_PATH_RE);
797
- if (!match) throw new Error(`Unsupported dialog URL path: ${url.pathname}`);
798
- const [, spaceId, ownerId, dialogId] = match;
799
+ const identity = parseDialogPathIdentity(url.pathname);
800
+ if (!identity) throw new Error(`Unsupported dialog URL path: ${url.pathname}`);
799
801
  return {
800
- dbKey: `dialog-${ownerId}-${dialogId}`,
801
- dialogId,
802
- ownerId,
803
- spaceId: spaceId ? decodeURIComponent(spaceId) : null
802
+ dbKey: `dialog-${identity.ownerId}-${identity.dialogId}`,
803
+ dialogId: identity.dialogId,
804
+ ownerId: identity.ownerId,
805
+ spaceId: identity.spaceId
804
806
  };
805
807
  }
806
808
  if (raw.startsWith("dialog-")) {
807
- const dialogId = getNoloDialogIdFromKey(raw);
809
+ const identity = splitDialogKeyIdentity(raw);
810
+ if (!identity) throw new Error(`Unsupported dialog key: ${raw}`);
808
811
  return {
809
812
  dbKey: raw,
810
- dialogId,
811
- ownerId: raw.slice("dialog-".length, Math.max("dialog-".length, raw.length - dialogId.length - 1)),
813
+ dialogId: identity.dialogId,
814
+ ownerId: identity.userId,
812
815
  spaceId: null
813
816
  };
814
817
  }
815
- if (!DIALOG_ID_RE.test(raw)) {
818
+ if (!isSupportedDialogId(raw)) {
816
819
  throw new Error(`Unsupported dialog id: ${raw}`);
817
820
  }
818
821
  return {
@@ -1150,119 +1153,53 @@ function buildNoloWorkspaceCommandArgs(call) {
1150
1153
  }
1151
1154
  }
1152
1155
 
1153
- // packages/agent-runtime/subtaskBudget.ts
1154
- var DEFAULT_SUBTASK_MAX_TOOL_CALLS = 200;
1155
- var DEFAULT_SUBTASK_MAX_WALL_CLOCK_MS = 60 * 60 * 1e3;
1156
- var SUBTASK_MAX_TOOL_CALLS_ENV = "NOLO_SUBTASK_MAX_TOOL_CALLS";
1157
- var SUBTASK_MAX_WALL_CLOCK_MS_ENV = "NOLO_SUBTASK_MAX_WALL_CLOCK_MS";
1158
- var SUBTASK_BUDGET_EXHAUSTED_MARKER = "[budget-exhausted]";
1159
- function parseSubtaskBudgetLimit(raw, fallback) {
1160
- if (typeof raw === "number") {
1161
- if (!Number.isFinite(raw) || raw <= 0) return fallback;
1162
- return Math.floor(raw);
1163
- }
1164
- if (typeof raw !== "string") return fallback;
1165
- const trimmed = raw.trim();
1166
- if (!trimmed) return fallback;
1167
- const parsed = Number(trimmed);
1168
- if (!Number.isFinite(parsed) || parsed <= 0) return fallback;
1169
- return Math.floor(parsed);
1156
+ // packages/ai/agent/dispatchSelectionPolicy.ts
1157
+ var MODEL_TIERS = [
1158
+ { tier: "extreme", models: ["GPT-6 Astra", "Claude Opus 5.5"], pattern: /^(?:gpt-6-astra|claude-opus-5[.-]5)(?:$|[-@])/ },
1159
+ { tier: "complex", models: ["GPT-6.1 Sol", "Gemini 4 Argon", "Claude Fable 5.1", "Claude Sonnet 5.5", "MiMo V2.6 Pro", "Kimi K3", "Gemini 2.5 Pro"], pattern: /^(?:gpt-6[.-]1-sol|gemini-4-argon|claude-fable-5[.-]1|claude-sonnet-5[.-]5|mimo-v2[.-]6-pro|kimi-k3|gemini-2[.-]5-pro)(?:$|[-@])/ },
1160
+ { tier: "normal", models: ["DeepSeek Flash\uFF08\u5404\u4EE3\uFF09", "LongCat 2.5", "Gemini 3.8 Flash", "GLM 5.3 Flash"], pattern: /^(?:deepseek-(?:[a-z0-9.-]+-)?flash(?:[-@].*)?|longcat-2[.-]5|gemini-3[.-]8-flash|glm-5[.-]3-flash)(?:$|[-@])/ },
1161
+ { tier: "easy", models: ["MiniMax M3.1 Flash", "GPT-6 Luna"], pattern: /^(?:(?:minimax-)?m3[.-]1-flash|gpt-6-luna)(?:$|[-@])/ }
1162
+ ];
1163
+ var MODEL_TIER_GUIDANCE = MODEL_TIERS.map(({ tier, models }) => `${tier}: ${models.join("\u3001")}`).join("\n");
1164
+ function resolveModelTier(model) {
1165
+ if (typeof model !== "string") return "unknown";
1166
+ const id = model.trim().toLowerCase().split("/").at(-1).replace(/\s+/g, "-");
1167
+ return MODEL_TIERS.find(({ pattern }) => pattern.test(id))?.tier ?? "unknown";
1170
1168
  }
1171
- function resolveSubtaskBudgetLimits(options) {
1172
- const env = options?.env ?? (typeof process !== "undefined" ? process.env : {});
1173
- const explicitToolCalls = options?.maxToolCalls;
1174
- const explicitWallClock = options?.maxWallClockMs;
1175
- return {
1176
- maxToolCalls: typeof explicitToolCalls === "number" ? parseSubtaskBudgetLimit(explicitToolCalls, parseSubtaskBudgetLimit(env?.[SUBTASK_MAX_TOOL_CALLS_ENV], DEFAULT_SUBTASK_MAX_TOOL_CALLS)) : parseSubtaskBudgetLimit(env?.[SUBTASK_MAX_TOOL_CALLS_ENV], DEFAULT_SUBTASK_MAX_TOOL_CALLS),
1177
- maxWallClockMs: typeof explicitWallClock === "number" ? parseSubtaskBudgetLimit(explicitWallClock, parseSubtaskBudgetLimit(env?.[SUBTASK_MAX_WALL_CLOCK_MS_ENV], DEFAULT_SUBTASK_MAX_WALL_CLOCK_MS)) : parseSubtaskBudgetLimit(env?.[SUBTASK_MAX_WALL_CLOCK_MS_ENV], DEFAULT_SUBTASK_MAX_WALL_CLOCK_MS)
1178
- };
1169
+ function normalizeDispatchDifficulty(value) {
1170
+ if (value === "easy" || value === "\u7B80\u5355") return "easy";
1171
+ if (value === "complex" || value === "\u590D\u6742") return "complex";
1172
+ if (value === "extreme" || value === "\u6781\u7AEF\u590D\u6742" || value === "\u6781\u5176\u590D\u6742") return "extreme";
1173
+ return "normal";
1179
1174
  }
1180
- function resolveSubtaskBudgetDeadlineMs(args) {
1181
- const ownDeadlineAtMs = args.childStartedAtMs + args.limits.maxWallClockMs;
1182
- const parentDeadlineAtMs = args.parentDeadlineAtMs;
1183
- if (typeof parentDeadlineAtMs === "number" && Number.isFinite(parentDeadlineAtMs)) {
1184
- return Math.min(parentDeadlineAtMs, ownDeadlineAtMs);
1185
- }
1186
- return ownDeadlineAtMs;
1175
+ function normalizeSelectionReason(value) {
1176
+ if (typeof value !== "string") return void 0;
1177
+ const trimmed = value.trim();
1178
+ return trimmed.length > 0 ? trimmed : void 0;
1187
1179
  }
1188
- function resolveDispatchedSubtaskBudget(args) {
1189
- const limits = resolveSubtaskBudgetLimits({
1190
- ...typeof args?.maxToolCalls === "number" ? { maxToolCalls: args.maxToolCalls } : {},
1191
- ...typeof args?.maxWallClockMs === "number" ? { maxWallClockMs: args.maxWallClockMs } : {},
1192
- ...args?.env ? { env: args.env } : {}
1193
- });
1194
- const childStartedAtMs = args?.childStartedAtMs ?? Date.now();
1195
- const deadlineAtMs = resolveSubtaskBudgetDeadlineMs({
1196
- parentDeadlineAtMs: args?.parentDeadlineAtMs ?? null,
1197
- childStartedAtMs,
1198
- limits
1199
- });
1200
- return {
1201
- // 父截止更早时,子 run 的墙钟额度被压到「距离父截止的剩余时间」。
1202
- limits: {
1203
- maxToolCalls: limits.maxToolCalls,
1204
- maxWallClockMs: Math.max(1, deadlineAtMs - childStartedAtMs)
1205
- },
1206
- deadlineAtMs
1207
- };
1180
+ function checkDispatchSelection(input) {
1181
+ const dimension = input.dimension === "design_frontend" || input.dimension === "writing" ? input.dimension : "general";
1182
+ const difficulty = normalizeDispatchDifficulty(input.difficulty);
1183
+ const modelTier = resolveModelTier(input.model);
1184
+ const status = modelTier === "unknown" ? "unknown" : modelTier === difficulty ? "matched" : "mismatch";
1185
+ const selectionReason = normalizeSelectionReason(input.selectionReason);
1186
+ const message = status === "matched" ? void 0 : status === "unknown" ? "\u6A21\u578B\u6863\u4F4D\u672A\u77E5\uFF1B\u6309\u9886\u57DF\u4E0E\u53EF\u7528\u6027\u5224\u65AD\uFF0C\u4E0D\u963B\u65AD\uFF0C\u5DF2\u542F\u52A8\u52FF\u81EA\u52A8\u91CD\u6D3E\u3002" : selectionReason ? "\u6863\u4F4D\u4E0E\u96BE\u5EA6\u4E0D\u4E00\u81F4\uFF1B\u5DF2\u7ED9\u51FA\u8DE8\u6863\u7406\u7531\uFF0C\u4E0D\u963B\u65AD\uFF0C\u5DF2\u542F\u52A8\u52FF\u81EA\u52A8\u91CD\u6D3E\u3002" : "\u6863\u4F4D\u4E0E\u96BE\u5EA6\u4E0D\u4E00\u81F4\uFF1B\u8DE8\u6863\u6D3E\u53D1\u9700\u5728 selectionReason \u8BF4\u660E\u7406\u7531\u3002";
1187
+ return { dimension, difficulty, modelTier, status, ...message ? { message } : {}, ...selectionReason ? { selectionReason } : {} };
1208
1188
  }
1209
- function createSubtaskBudgetTracker(options) {
1210
- const now = options.now ?? (() => Date.now());
1211
- const startedAtMs = options.startedAtMs ?? now();
1212
- let toolCallsExecuted = 0;
1213
- const elapsedMs = () => Math.max(0, now() - startedAtMs);
1214
- const exhaustion = () => {
1215
- const elapsed = elapsedMs();
1216
- if (toolCallsExecuted >= options.limits.maxToolCalls) {
1217
- return {
1218
- limit: "max-tool-calls",
1219
- limits: options.limits,
1220
- toolCallsExecuted,
1221
- elapsedMs: elapsed,
1222
- atMs: now()
1223
- };
1224
- }
1225
- if (elapsed >= options.limits.maxWallClockMs) {
1226
- return {
1227
- limit: "max-wall-clock-ms",
1228
- limits: options.limits,
1229
- toolCallsExecuted,
1230
- elapsedMs: elapsed,
1231
- atMs: now()
1232
- };
1233
- }
1234
- return null;
1235
- };
1236
- return {
1237
- limits: options.limits,
1238
- startedAtMs,
1239
- get toolCallsExecuted() {
1240
- return toolCallsExecuted;
1241
- },
1242
- elapsedMs,
1243
- remainingToolCalls: () => Math.max(0, options.limits.maxToolCalls - toolCallsExecuted),
1244
- isExhausted: () => exhaustion() !== null,
1245
- exhaustion,
1246
- recordToolCallExecuted: () => {
1247
- toolCallsExecuted += 1;
1248
- return toolCallsExecuted;
1249
- }
1189
+ function checkDispatchSelectionAdmission(input) {
1190
+ const check = checkDispatchSelection(input);
1191
+ if (check.status !== "mismatch" || check.selectionReason) return { ok: true, check };
1192
+ const error = {
1193
+ code: "selection_reason_required",
1194
+ message: `\u8DE8\u6863\u9009\u62E9\u7F3A\u5C11 selectionReason\uFF1A\u6863\u4F4D ${check.modelTier} \u4E0E\u96BE\u5EA6 ${check.difficulty} \u4E0D\u4E00\u81F4\uFF0C\u8BF7\u8865\u5145\u672C\u6B21\u8DE8\u6863\u7684\u5177\u4F53\u7406\u7531\u540E\u518D\u542F\u52A8\u3002`,
1195
+ hint: "\u8865\u4E00\u53E5\u672C\u6B21\u4E3A\u4EC0\u4E48\u8FD9\u6837\u8DE8\u6863\uFF08\u5982\u9886\u57DF\u4F18\u52BF\u3001\u7528\u6237\u660E\u786E\u6307\u5B9A\uFF09\u5373\u53EF\uFF1B\u53EA\u6821\u9A8C\u7406\u7531\u662F\u5426\u5B58\u5728\uFF0C\u4E0D\u4EE3\u8868\u5DF2\u6838\u5B9E\u7528\u6237\u6388\u6743\u3001\u989D\u5EA6/\u8D39\u7528\u6743\u9650\u6216\u7F51\u7EDC\u53EF\u7528\u6027\u3002"
1250
1196
  };
1197
+ return { ok: false, check, error };
1251
1198
  }
1252
- function buildSubtaskBudgetExhaustedContent(args) {
1253
- const { exhaustion } = args;
1254
- const limitLabel = exhaustion.limit === "max-tool-calls" ? `\u5DE5\u5177\u8C03\u7528\u4E0A\u9650\uFF08\u5DF2\u6267\u884C ${exhaustion.toolCallsExecuted}/${exhaustion.limits.maxToolCalls} \u6B21\uFF09` : `\u5899\u949F\u4E0A\u9650\uFF08\u5DF2\u8FD0\u884C ${Math.round(exhaustion.elapsedMs / 1e3)} \u79D2 / \u4E0A\u9650 ${Math.round(
1255
- exhaustion.limits.maxWallClockMs / 1e3
1256
- )} \u79D2\uFF09`;
1257
- const recent = (args.recentToolNames ?? []).slice(-5);
1258
- const recentText = recent.length > 0 ? recent.join("\u3001") : "\uFF08\u672C\u8F6E\u65E0\u5DE5\u5177\u8C03\u7528\uFF09";
1259
- return [
1260
- `${SUBTASK_BUDGET_EXHAUSTED_MARKER} \u5DF2\u8FBE\u5B50\u4EFB\u52A1\u9884\u7B97\u4E0A\u9650\uFF08${limitLabel}\uFF09\uFF0C\u672C\u6B21\u5B50\u4EFB\u52A1\u5230\u6B64\u4F18\u96C5\u7EC8\u6B62\u3002`,
1261
- "\u8FD9\u662F\u4E00\u4EFD**\u4E2D\u95F4\u7ED3\u8BBA**\uFF0C\u4E0D\u662F\u5B8C\u6574\u4EA4\u4ED8\uFF0C\u4E5F\u4E0D\u662F\u5931\u8D25\uFF1A\u4E0A\u6587\u4FDD\u7559\u7684\u662F\u672C\u8F6E\u5DF2\u5B8C\u6210\u7684\u9636\u6BB5\u6027\u6210\u679C\uFF0C\u53EF\u76F4\u63A5\u4F5C\u4E3A\u9636\u6BB5\u4EA4\u63A5\u4F7F\u7528\u3002",
1262
- `\u5F53\u524D\u5B8C\u6210\u5230\u54EA\u4E00\u6B65\uFF1A\u5DF2\u5B8C\u6210 ${args.roundsCompleted} \u8F6E\u6A21\u578B\u5F80\u8FD4\u3001${exhaustion.toolCallsExecuted} \u6B21\u5DE5\u5177\u8C03\u7528\uFF1B\u6700\u8FD1\u5B8C\u6210\u7684\u5DE5\u5177\uFF1A${recentText}\u3002`,
1263
- "\u5DF2\u5B8C\u6210\u7684\u5DE5\u5177\u7ED3\u679C\u5168\u90E8\u4FDD\u7559\u5728\u672C\u56DE\u5408\u7684 transcript / \u7ED3\u679C\u4E2D\uFF0C\u6CA1\u6709\u4EFB\u4F55\u56DE\u6EDA\u6216\u4E22\u5F03\u3002",
1264
- "\u5982\u9700\u7EE7\u7EED\u63A8\u8FDB\uFF0C\u8BF7\u7531\u7236\u65B9\u643A\u5E26\u5F53\u524D\u4E2D\u95F4\u7ED3\u8BBA\u91CD\u65B0\u6D3E\u53D1\uFF08\u53EF\u6309\u9700\u8C03\u9AD8\u9884\u7B97\u4E0A\u9650\uFF09\u3002"
1265
- ].join("\n");
1199
+ function assertDispatchSelectionAdmission(input) {
1200
+ const admission = checkDispatchSelectionAdmission(input);
1201
+ if (!admission.ok && admission.error) throw new Error(`${admission.error.message} ${admission.error.hint}`);
1202
+ return admission.check;
1266
1203
  }
1267
1204
 
1268
1205
  // packages/ai/agent/agentSelectionPriority.ts
@@ -1309,21 +1246,28 @@ var AGENT_SELECTION_PRIORITY_INSTRUCTIONS = ` - \u4F18\u5148\u7EA7\u5951\u7EA6
1309
1246
  (3) \u672A\u6536\u85CF\u7684 OAuth / \u81EA\u5B9A\u4E49 Agent\uFF08billingSource="user_subscription"\uFF0F"owner_subscription" \u6216 "user_api"\uFF09
1310
1247
  (4) \u5176\u4ED6\u81EA\u5EFA Agent\uFF08isOwned=true\uFF09
1311
1248
  (5) \u516C\u5F00 / \u5E73\u53F0 Agent\uFF08billingSource="platform_credits" \u6216\u793E\u533A\u516C\u5F00\uFF09
1312
- \u6B64\u6392\u5E8F\u662F\u5019\u9009\u4F18\u5148\u7EA7\u5206\u7EC4\uFF08\u4E0D\u662F\u6A21\u578B\u80FD\u529B tier\uFF09\uFF0C\u53EA\u51B3\u5B9A\u5019\u9009\u8D44\u683C\u4E0E\u5206\u7EC4\u5148\u540E\uFF0C\u4E0D\u4EE3\u8868\u300C\u6392\u7B2C\u4E00\u7684\u5C31\u8BE5\u9009\u300D\uFF1A\u7EC4\u5185\u6309\u300C\u9009\u4EBA\u300D\u56DB\u6B65\uFF08\u9886\u57DF\u80DC\u4EFB\u5148\u884C\u3001tier \u5F31\u5148\u9A8C\uFF09\u4E0E\u5F53\u6B21\u53EF\u7528\u6027\u6311\u9009\uFF08reviewer \u89C1\u300Creviewer \u9009\u4EBA\u300D\uFF09\u3002
1313
- - \u6536\u85CF\u4F18\u5148\u786C\u95E8\uFF08\u8986\u76D6\u9876\u6863\u6210\u672C\u95E8\uFF09\uFF1A\u5F53\u5B58\u5728\u53EF\u7528\u4E14\u9002\u5408\u4EFB\u52A1\u7684\u6536\u85CF user_subscription / user_api / local Agent \u65F6\uFF0C\u7981\u6B62\u6539\u6D3E platform_credits\u3002favorite + platform_credits \u53EA\u8868\u793A\u7528\u6237\u8868\u8FBE\u8FC7\u504F\u597D\uFF0C\u4E0D\u4EE3\u8868\u514D\u8D39\u6216\u514D\u6388\u6743\uFF1B\u4F7F\u7528\u5B83\u4ECD\u987B\u9075\u5B88\u5E73\u53F0\u79EF\u5206\u6263\u8D39\u544A\u77E5/\u6388\u6743\u89C4\u5219\u3002\u4F46\u6CE8\u610F\u533A\u5206\uFF1AbillingSource="owner_subscription" \u7684\u6536\u85CF Agent\uFF08\u975E\u81EA\u6709\u3001\u8DD1 owner \u7684\u8BA2\u9605\u901A\u9053\uFF09\u4E0D\u5C5E\u4E8E\u6B64\u5217\u2014\u2014\u5B83\u662F\u53EF\u76F4\u63A5\u4F7F\u7528\u7684\uFF0C\u4E0D\u4EA7\u751F\u4EFB\u4F55\u6263\u8D39\uFF0C\u4E0D\u8981\u5BF9\u5B83\u7D22\u53D6\u6263\u8D39\u6388\u6743\u3001\u4E5F\u4E0D\u8981\u56E0\u6B64\u6539\u6D3E\u5E73\u53F0 Agent\u3002\u6BCF\u6B21 startAgentRun \u90FD\u521B\u5EFA\u72EC\u7ACB\u7684 run/dialog\uFF1B\u5E76\u884C\u6D3E\u53D1\u65F6\u5FC5\u987B\u7528\u5404\u81EA\u7684 runId\uFF0C\u5E76\u7528 batchId \u7BA1\u7406\u6279\u6B21\uFF0C\u907F\u514D\u7F16\u6392\u5C42\u6DF7\u6DC6\u7ED3\u679C\u3002\u4EC5\u5F53\u6536\u85CF Agent \u786E\u8BA4\u4E0D\u53EF\u7528\u540E\u624D\u5141\u8BB8\u6D3E\u5E73\u53F0 Agent\uFF0C\u4E14\u5FC5\u987B\u5F53\u6B21\u544A\u77E5\u7528\u6237\u5C06\u6D88\u8017\u5E73\u53F0\u79EF\u5206\u3002
1249
+ \u6B64\u6392\u5E8F\u662F\u5019\u9009\u4F18\u5148\u7EA7\u5206\u7EC4\uFF08\u4E0D\u662F\u6A21\u578B\u80FD\u529B tier\uFF09\uFF0C\u4E0D\u4EE3\u8868\u300C\u6392\u7B2C\u4E00\u7684\u5C31\u8BE5\u9009\u300D\uFF1B\u7ED3\u5408\u4E0B\u8FF0\u9886\u57DF\u5339\u914D\u3001\u6863\u4F4D\u53C2\u8003\u4E0E\u5F53\u6B21\u53EF\u7528\u6027\u6311\u9009\uFF08reviewer \u89C1\u300Creviewer \u9009\u4EBA\u300D\uFF09\u3002
1250
+ - \u6536\u85CF\u4F18\u5148\u786C\u95E8\uFF08\u8986\u76D6\u9AD8\u590D\u6742\u5EA6\u6863\u6210\u672C\u95E8\uFF09\uFF1A\u5F53\u5B58\u5728\u53EF\u7528\u4E14\u9002\u5408\u4EFB\u52A1\u7684\u6536\u85CF user_subscription / user_api / local Agent \u65F6\uFF0C\u7981\u6B62\u6539\u6D3E platform_credits\u3002favorite + platform_credits \u53EA\u8868\u793A\u7528\u6237\u8868\u8FBE\u8FC7\u504F\u597D\uFF0C\u4E0D\u4EE3\u8868\u514D\u8D39\u6216\u514D\u6388\u6743\uFF1B\u4F7F\u7528\u5B83\u4ECD\u987B\u9075\u5B88\u5E73\u53F0\u79EF\u5206\u6263\u8D39\u544A\u77E5/\u6388\u6743\u89C4\u5219\u3002\u4F46\u6CE8\u610F\u533A\u5206\uFF1AbillingSource="owner_subscription" \u7684\u6536\u85CF Agent\uFF08\u975E\u81EA\u6709\u3001\u8DD1 owner \u7684\u8BA2\u9605\u901A\u9053\uFF09\u4E0D\u5C5E\u4E8E\u6B64\u5217\u2014\u2014\u5B83\u662F\u53EF\u76F4\u63A5\u4F7F\u7528\u7684\uFF0C\u4E0D\u4EA7\u751F\u4EFB\u4F55\u6263\u8D39\uFF0C\u4E0D\u8981\u5BF9\u5B83\u7D22\u53D6\u6263\u8D39\u6388\u6743\u3001\u4E5F\u4E0D\u8981\u56E0\u6B64\u6539\u6D3E\u5E73\u53F0 Agent\u3002\u6BCF\u6B21 startAgentRun \u90FD\u521B\u5EFA\u72EC\u7ACB\u7684 run/dialog\uFF1B\u5E76\u884C\u6D3E\u53D1\u65F6\u5FC5\u987B\u7528\u5404\u81EA\u7684 runId\uFF0C\u5E76\u7528 batchId \u7BA1\u7406\u6279\u6B21\uFF0C\u907F\u514D\u7F16\u6392\u5C42\u6DF7\u6DC6\u7ED3\u679C\u3002\u4EC5\u5F53\u6536\u85CF Agent \u786E\u8BA4\u4E0D\u53EF\u7528\u540E\u624D\u5141\u8BB8\u6D3E\u5E73\u53F0 Agent\uFF0C\u4E14\u5FC5\u987B\u5F53\u6B21\u544A\u77E5\u7528\u6237\u5C06\u6D88\u8017\u5E73\u53F0\u79EF\u5206\u3002
1314
1251
  - \u5339\u914D\u53C2\u8003\uFF1A\u6309\u4EFB\u52A1\u6240\u9700\u80FD\u529B\u7B5B tools \u5B57\u6BB5\uFF1B\u540C\u6863\u5019\u9009\u4F18\u5148\u6210\u672C\u4F4E\uFF08\u4F4E inputPrice\uFF09\u6216\u8D70\u7528\u6237\u79C1\u6709\u51ED\u636E\u7684\u901A\u9053\u3002tools \u5B57\u6BB5\u53EA\u53CD\u6620\u989D\u5916\u80FD\u529B\uFF0C\u4E0D\u53CD\u6620 coding \u80FD\u529B\u2014\u2014\u4EE3\u7801\u5DE5\u5177\u7531 host \u81EA\u52A8\u6CE8\u5165\uFF0Ctools=[] \u4E0D\u4EE3\u8868\u4E0D\u80FD\u5199\u4EE3\u7801\uFF0C\u4E0D\u8981\u636E\u6B64\u6392\u9664\u5019\u9009\u3002
1315
- - reset-aware economics\uFF08\u53EA\u4F5C\u540C\u6863\u3001\u9002\u5408\u3001\u5F53\u524D\u53EF\u7528\u5019\u9009\u4E4B\u95F4\u7684\u7ECF\u6D4E\u504F\u597D\uFF0C\u4E0D\u8986\u76D6\u6536\u85CF\u786C\u95E8\u3001\u80FD\u529B\u5339\u914D\u6216\u53EF\u7528\u6027\uFF09\uFF1AlistAgents \u5DF2\u66B4\u9732 economics\uFF08\u5B98\u65B9\u5CF0\u8C37\u4EF7\u683C/\u914D\u989D\u500D\u7387\uFF09\u548C quota\uFF08\u4E0A\u6E38\u771F\u5B9E remaining/limit/utilization/resetAt \u7A97\u53E3\uFF09\u3002\u5BF9\u4E8E billingSource="user_subscription"\uFF0C\u82E5 quota \u7A97\u53E3\u540C\u65F6\u7ED9\u51FA\u672A\u7528\u989D\u5EA6\u4FE1\u53F7\uFF08remaining/limit \u6216 utilization\uFF09\u4E14 resetAt \u5728\u672A\u6765\uFF0C\u4E14\u8BE5\u7A97\u53E3\u4EE3\u8868\u8BA2\u9605\u989D\u5EA6\u672C\u8EAB\uFF08\u5982 Claude \u8BA2\u9605\u7684 5h/7d \u914D\u989D\u7A97\u53E3\u8FD9\u7C7B\u4E0D\u7528\u5C31\u4F5C\u5E9F\u7684\u5DF2\u4ED8\u989D\u5EA6\uFF09\uFF0C\u800C\u4E0D\u662F\u7EAF\u541E\u5410\u5BB9\u91CF\uFF0C\u5219\u8FD9\u90E8\u5206\u5DF2\u4ED8\u989D\u5EA6\u4F1A\u5728 reset \u540E\u5931\u6548\uFF1B\u5728\u8D28\u91CF/\u80FD\u529B\u90FD\u8DB3\u591F\u65F6\uFF0Creset \u8D8A\u8FD1\u4E14\u672A\u7528\u989D\u5EA6\u8D8A\u591A\uFF0C\u8D8A\u5E94\u4F18\u5148\u6D88\u8017\uFF0C\u907F\u514D\u628A\u5DF2\u4ED8\u6B3E\u989D\u5EA6\u767D\u767D\u8FC7\u671F\u540E\u518D\u53BB\u4EA7\u751F PAYG / platform \u6210\u672C\u3002\u4E0D\u8981\u56E0\u4E3A\u53EA\u6709 resetAt \u5C31\u63A8\u65AD\u201C\u8FD8\u6709\u53EF\u7528\u989D\u5EA6\u201D\uFF0C\u4E5F\u4E0D\u8981\u628A billingSource="user_api" \u7684 requests/tokens rate-limit reset\u3001nextAvailableAt\uFF08429 \u51B7\u5374\u6062\u590D\uFF09\u8BEF\u5F53\u6210\u201C\u5DF2\u4ED8\u989D\u5EA6\u8FC7\u671F\u201D\uFF1B\u5B83\u4EEC\u662F\u5BB9\u91CF/\u53EF\u7528\u6027\u4FE1\u53F7\uFF0C\u4E0D\u662F\u7ECF\u6D4E\u4F18\u60E0\u3002\u901A\u7528 requests/tokens rate-limit \u5BB9\u91CF\u7A97\u53E3\u5373\u4F7F\u51FA\u73B0\u5728 billingSource="user_subscription" \u901A\u9053\u4E0A\uFF0C\u4E5F\u53EA\u662F\u901F\u7387\u5BB9\u91CF\u800C\u975E\u4F1A\u8FC7\u671F\u7684\u5DF2\u4ED8\u8D44\u4EA7\uFF0C\u4E0D\u5F97\u89E6\u53D1\u8BE5\u504F\u597D\uFF1B\u5206\u4E0D\u6E05\u7A97\u53E3\u8BED\u4E49\u65F6\u6309\u5BB9\u91CF\u5904\u7406\uFF0C\u4E0D\u6309\u7ECF\u6D4E\u8D44\u4EA7\u5904\u7406\u3002owner_subscription \u4E0D\u5360\u5F53\u524D\u7528\u6237\u989D\u5EA6\uFF0C\u4ECD\u6309\u201C\u8C03\u7528\u8005\u4E0E\u5E73\u53F0\u96F6\u65B0\u589E\u6210\u672C\u201D\u7406\u89E3\uFF0C\u4F46\u4E0D\u8981\u628A owner \u7684 quota \u5F53\u6210\u5F53\u524D\u7528\u6237\u9700\u8981\u4E3B\u52A8\u70E7\u5B8C\u7684\u8D44\u4EA7\u3002\u82E5 economics \u663E\u793A\u5373\u5C06\u8DE8 peak/off_peak \u6216 quotaMultiplier/priceMultiplier \u5C06\u53D8\u5316\uFF0C\u628A changesAt \u4E0E\u4EFB\u52A1\u9884\u8BA1\u65F6\u957F\u4E00\u8D77\u8003\u8651\uFF1B\u8BC1\u636E\u4E0D\u8DB3\u65F6\u4FDD\u6301 neutral\uFF0C\u4E0D\u731C\u3002
1252
+ - reset-aware economics\uFF08\u53EA\u4F5C\u540C\u6863\u3001\u9002\u5408\u3001\u5F53\u524D\u53EF\u7528\u5019\u9009\u4E4B\u95F4\u7684\u7ECF\u6D4E\u504F\u597D\uFF0C\u4E0D\u8986\u76D6\u6536\u85CF\u786C\u95E8\u3001\u80FD\u529B\u5339\u914D\u6216\u53EF\u7528\u6027\uFF09\uFF1AlistAgents \u5DF2\u66B4\u9732 economics\uFF08\u5B98\u65B9\u5CF0\u8C37\u4EF7\u683C/\u914D\u989D\u500D\u7387\uFF09\u548C quota\uFF08\u4E0A\u6E38\u771F\u5B9E remaining/limit/utilization/resetAt \u7A97\u53E3\uFF09\u3002\u5BF9\u4E8E billingSource="user_subscription"\uFF0C\u82E5 quota \u7A97\u53E3\u540C\u65F6\u7ED9\u51FA\u672A\u7528\u989D\u5EA6\u4FE1\u53F7\uFF08remaining/limit \u6216 utilization\uFF09\u4E14 resetAt \u5728\u672A\u6765\uFF0C\u4E14\u8BE5\u7A97\u53E3\u4EE3\u8868\u8BA2\u9605\u989D\u5EA6\u672C\u8EAB\uFF08\u5982 Claude \u8BA2\u9605\u7684 5h/7d \u914D\u989D\u7A97\u53E3\u8FD9\u7C7B\u4E0D\u7528\u5C31\u4F5C\u5E9F\u7684\u5DF2\u4ED8\u989D\u5EA6\uFF09\uFF0C\u800C\u4E0D\u662F\u7EAF\u541E\u5410\u5BB9\u91CF\uFF0C\u5219\u8FD9\u90E8\u5206\u5DF2\u4ED8\u989D\u5EA6\u4F1A\u5728 reset \u540E\u5931\u6548\uFF1B\u5728\u8D28\u91CF/\u80FD\u529B\u90FD\u8DB3\u591F\u65F6\uFF0Creset \u8D8A\u8FD1\u4E14\u672A\u7528\u989D\u5EA6\u8D8A\u591A\uFF0C\u8D8A\u5E94\u4F18\u5148\u6D88\u8017\uFF0C\u907F\u514D\u628A\u5DF2\u4ED8\u6B3E\u989D\u5EA6\u767D\u767D\u8FC7\u671F\u540E\u518D\u53BB\u4EA7\u751F PAYG / platform \u6210\u672C\u3002\u4ECD\u6709\u6548\u4E14\u9002\u7528\u4E8E\u672C\u6B21\u8BF7\u6C42\u7684\u5F53\u524D\u7A97\u53E3\u82E5 utilization \u8FBE 1 \u6216 remaining \u4E3A 0\uFF0C\u6309\u5F53\u6B21\u4E0D\u53EF\u7528\u5904\u7406\u3001\u76F4\u63A5\u8DF3\u8FC7\u8BE5\u5019\u9009\uFF0C\u4E0D\u5FC5\u5148\u649E\u4E00\u6B21 429 \u6362\u53D6\u5931\u8D25\u8BC1\u636E\uFF1B\u7A97\u53E3\u5DF2\u8FC7 resetAt \u6216\u72B6\u6001\u4E0D\u660E\u65F6\u6309\u53EF\u7528\u6027\u672A\u77E5\u5904\u7406\uFF0C\u5148\u5237\u65B0\u518D\u5224\u65AD\uFF0C\u4E0D\u8981\u636E\u8FC7\u671F\u5FEB\u7167\u8DF3\u8FC7\uFF1B\u4E0D\u8981\u56E0\u4E3A\u53EA\u6709 resetAt \u5C31\u63A8\u65AD\u201C\u8FD8\u6709\u53EF\u7528\u989D\u5EA6\u201D\uFF0C\u4E5F\u4E0D\u8981\u628A billingSource="user_api" \u7684 requests/tokens rate-limit reset\u3001nextAvailableAt\uFF08429 \u51B7\u5374\u6062\u590D\uFF09\u8BEF\u5F53\u6210\u201C\u5DF2\u4ED8\u989D\u5EA6\u8FC7\u671F\u201D\uFF1B\u5B83\u4EEC\u662F\u5BB9\u91CF/\u53EF\u7528\u6027\u4FE1\u53F7\uFF0C\u4E0D\u662F\u7ECF\u6D4E\u4F18\u60E0\u3002\u901A\u7528 requests/tokens rate-limit \u5BB9\u91CF\u7A97\u53E3\u5373\u4F7F\u51FA\u73B0\u5728 billingSource="user_subscription" \u901A\u9053\u4E0A\uFF0C\u4E5F\u53EA\u662F\u901F\u7387\u5BB9\u91CF\u800C\u975E\u4F1A\u8FC7\u671F\u7684\u5DF2\u4ED8\u8D44\u4EA7\uFF0C\u4E0D\u5F97\u89E6\u53D1\u8BE5\u504F\u597D\uFF1B\u5206\u4E0D\u6E05\u7A97\u53E3\u8BED\u4E49\u65F6\u6309\u5BB9\u91CF\u5904\u7406\uFF0C\u4E0D\u6309\u7ECF\u6D4E\u8D44\u4EA7\u5904\u7406\u3002owner_subscription \u4E0D\u5360\u5F53\u524D\u7528\u6237\u989D\u5EA6\uFF0C\u4ECD\u6309\u201C\u8C03\u7528\u8005\u4E0E\u5E73\u53F0\u96F6\u65B0\u589E\u6210\u672C\u201D\u7406\u89E3\uFF0C\u4F46\u4E0D\u8981\u628A owner \u7684 quota \u5F53\u6210\u5F53\u524D\u7528\u6237\u9700\u8981\u4E3B\u52A8\u70E7\u5B8C\u7684\u8D44\u4EA7\u3002\u82E5 economics \u663E\u793A\u5373\u5C06\u8DE8 peak/off_peak \u6216 quotaMultiplier/priceMultiplier \u5C06\u53D8\u5316\uFF0C\u628A changesAt \u4E0E\u4EFB\u52A1\u9884\u8BA1\u65F6\u957F\u4E00\u8D77\u8003\u8651\uFF1B\u8BC1\u636E\u4E0D\u8DB3\u65F6\u4FDD\u6301 neutral\uFF0C\u4E0D\u731C\u3002
1316
1253
  - isOwned=true\u3001isOAuth=true \u6216 apiSource="custom" \u7684\u5019\u9009\u6309\u4F18\u5148\u7EA7\u5951\u7EA6\u5904\u7406\u3002
1317
1254
  - \u514D\u8BE2\u95EE\u8FB9\u754C\uFF08\u6307\u9488\uFF09\uFF1A\u6392\u5E8F\u5B8C\u6210\u540E\u76F4\u63A5\u6D3E\u53D1\uFF0C\u4E0D\u56E0\u300C\u9009\u8C01/\u80FD\u4E0D\u80FD\u7528\u300D\u5F81\u8BE2\u7528\u6237\uFF1B\u5931\u8D25\u65F6\u53EA\u5728\u514D\u8D39\u5019\u9009\uFF08user_subscription / owner_subscription / user_api / local\uFF09\u4E4B\u95F4**\u9759\u9ED8**\u6362\u4EE3\uFF08\u4E0D\u5F97\u56E0\u6B64\u9759\u9ED8\u6539\u6D3E platform_credits\uFF09\u3002\u8BE2\u95EE\u8FB9\u754C\u89C1\u300C\u4FDD\u62A4\u7528\u6237\u6CE8\u610F\u529B\u300D\u4E00\u6761\u3002\u672C\u6761\u4E0D\u653E\u5BBD\u4EFB\u4F55\u95F8\u95E8\uFF1A\u5E73\u53F0\u79EF\u5206\u6263\u8D39\u786E\u8BA4\u3001429 \u6539\u6D3E\u544A\u77E5\u3001\u65E0\u6CD5\u786E\u8BA4\u8BA1\u8D39\u5F52\u5C5E\u65F6\u6309\u53EF\u80FD\u6263\u8D39\u5148\u95EE\uFF0C\u5168\u90E8\u7167\u65E7\u3002
1318
- - qualityContext \u662F task-domain-specific evidence\uFF0C\u5206\u4E24\u79CD\u7528\u9014\uFF1A\u2460 \u80DC\u4EFB\u6027\u7B5B\u9009\u2014\u2014\u5339\u914D\u9886\u57DF\u5185\u6709\u660E\u786E\u4E0D\u9002\u914D\u8BC1\u636E\u7684\u5019\u9009\u53EF\u76F4\u63A5\u6392\u9664\uFF08\u300C\u9009\u4EBA\u300D\u7B2C 1 \u6B65\uFF09\uFF0C\u5148\u4E8E\u4F18\u5148\u7EA7\u5206\u7EC4\u4E0E\u6210\u672C\u89C4\u5219\uFF1B\u2461 \u80DC\u4EFB\u5019\u9009\u4E4B\u95F4\u7684\u6BD4\u8F83\u2014\u2014\u8FD9\u65F6\u624D\u6392\u5728\u73B0\u6709\u4F18\u5148\u7EA7 / \u6210\u672C / \u53EF\u7528\u6027\u89C4\u5219\u4E4B\u540E\u53C2\u8003\u3002
1319
- \u6BCF\u884C\u5F62\u5982 \`dimension [direction] (benchmark version): model=score\`\u3002\u6BCF\u4E2A dimension\uFF08preference / rubric / slop / repetition / length / task_success \u7B49\uFF09\u90FD\u662F\u4E00\u6761\u72EC\u7ACB evidence\uFF0C\u4E0D\u662F\u603B\u5206\u7684\u4E00\u90E8\u5206\u3002
1320
- direction \u53EA\u662F\u6307\u6807\u65B9\u5411\uFF1Ahigher_better \u8D8A\u9AD8\u8D8A\u597D\uFF0Clower_better \u8D8A\u4F4E\u8D8A\u597D\uFF0Cneutral \u53EA\u63CF\u8FF0\u884C\u4E3A\u7279\u5F81\uFF08\u5982\u8F93\u51FA\u957F\u5EA6\uFF09\uFF0C\u4E0D\u4EE3\u8868\u4F18\u52A3\u3002
1321
- \u7981\u6B62\u628A\u4E0D\u540C dimension \u76F8\u52A0 / \u5E73\u5747 / \u5F52\u4E00\u5316\uFF0C\u6216\u751F\u6210 overall score / winner / rank\uFF1B\u7981\u6B62\u8DE8 benchmark identity \u6BD4\u8F83 raw score\uFF1B\u540C\u4E00 dimension \u5185\u53EA\u6BD4\u8F83\u540C\u4E00\u884C\u7684\u540C\u7C7B benchmark evidence\u3002
1322
- \u672A\u5217\u51FA\u7684 model \u6216 dimension \u8868\u793A\u6CA1\u6709 curated evidence\uFF1A\u4E0D\u662F 0\uFF0C\u4E5F\u4E0D\u662F\u8F83\u5F31\u3002\u54EA\u4E9B dimension \u66F4\u91CD\u8981\u7531\u5F53\u524D\u4EFB\u52A1\u51B3\u5B9A\uFF0C\u4E0D\u8981\u5199\u6B7B\u6743\u91CD\u3002
1323
- - speedContext \u901F\u5EA6\u89C4\u5219\uFF1A\u4E0A\u4E0B\u6587\u660E\u786E\u7684\u6267\u884C\u578B\u4EFB\u52A1\uFF08\u76EE\u6807/\u6587\u4EF6/\u9A8C\u6536\u5DF2\u8BB2\u6E05\uFF0C\u53EA\u9700\u7167\u505A\uFF09\u4E2D\uFF0C\u514D\u8D39\u79C1\u6709\u901A\u9053\uFF08billingSource \u4E3A user_subscription / owner_subscription / user_api / local\uFF09\u4E4B\u95F4\u901F\u5EA6\u4F18\u5148\uFF1A\u5148\u770B firstOutput\uFF08\u9996\u4E2A\u8F93\u51FA\u8017\u65F6\uFF0C\u8D8A\u77ED\u8D8A\u597D\uFF09\uFF0C\u518D\u770B tps\uFF08\u8D8A\u9AD8\u8D8A\u597D\uFF09\u3002\u901F\u5EA6\u6392\u5E8F\u53EA\u770B observed \u884C\uFF08\u672C\u7528\u6237\u771F\u5B9E\u8C03\u7528\uFF09\uFF0C\u4E0D\u5B58\u5728\u5176\u5B83\u6570\u636E\u6765\u6E90\u3002\u672C\u6761\u5728\u514D\u8D39\u79C1\u6709\u901A\u9053\u5185\u90E8\u8986\u76D6\u4E0A\u9762\u7684\u4F18\u5148\u7EA7\u5206\u7EC4 (1)~(4) \u6392\u5E8F\uFF0C\u4F46\u53EA\u5728\u300C\u9009\u4EBA\u300D\u7B5B\u51FA\u7684\u80DC\u4EFB\u5019\u9009\u4E4B\u95F4\u6BD4\u8F83\u901F\u5EA6\uFF1A\u4E0D\u80FD\u56E0\u66F4\u5FEB\u628A\u4E0D\u80DC\u4EFB\u7684\u5019\u9009\u6392\u4E0A\u6765\uFF1B\u6536\u85CF\u4E0D\u4F5C\u5206\u7EC4\u95E8\u69DB\uFF0C\u53EA\u5728\u901F\u5EA6\u76F8\u8FD1\u65F6\u4F5C\u6B21\u7EA7\u6392\u5E8F\uFF1B\u6536\u85CF\u4F18\u5148\u786C\u95E8\u4ECD\u53EA\u7EA6\u675F\u4E0D\u5F97\u6539\u6D3E platform_credits\u3002\u63A2\u7D22\u578B\u4EFB\u52A1\u548C\u6DF1\u5EA6 review \u4ECD\u4EE5\u80FD\u529B\u4F18\u5148\uFF0C\u901F\u5EA6\u4E0D\u4F5C\u4E3B\u4F9D\u636E\u3002\u901F\u5EA6\u53EA\u5728\u514D\u8D39\u79C1\u6709\u901A\u9053\u4E4B\u95F4\u6BD4\u8F83\uFF0C\u4E0D\u8986\u76D6\u5E73\u53F0\u79EF\u5206\u6388\u6743\u4E0E 429 \u544A\u77E5\u5951\u7EA6\uFF0C\u4E0D\u80FD\u56E0\u4E3A\u5E73\u53F0 Agent \u66F4\u5FEB\u5C31\u6539\u6D3E\u5E73\u53F0\u3002
1324
- \u6BCF\u884C\u90FD\u662F observed=\u672C\u7528\u6237\u6700\u8FD1\u771F\u5B9E\u8C03\u7528\uFF08n=\u6837\u672C\u6570\uFF0C\u6837\u672C\u5C11\u65F6\u53EF\u4FE1\u5EA6\u4F4E\uFF09\uFF1Btps=n/a \u8868\u793A\u65E0\u53EF\u4FE1\u541E\u5410\u6837\u672C\uFF0C\u4E0D\u4EE3\u8868\u6162\u3002\u672A\u5217\u51FA\u7684 model \u8868\u793A\u6CA1\u6709\u901F\u5EA6\u6570\u636E\uFF0C\u4E0D\u662F\u6162\u3002\u7981\u6B62\u628A\u901F\u5EA6\u4E0E qualityContext \u5408\u6210\u603B\u5206\u3002
1255
+ - \u89C4\u5212\u5373\u9009\u4EBA\uFF1A\u8DE8\u6863\u5199\u5177\u4F53 selectionReason\uFF08\u7528\u6237\u6307\u5B9A/\u9886\u57DF\u4F18\u52BF/\u771F\u5B9E\u901A\u9053\u5931\u8D25/\u65E0\u5408\u9002\u5019\u9009\u7B49\uFF09\uFF0C\u53EA\u6821\u9A8C\u7406\u7531\u5B58\u5728\u3001\u4E0D\u4F2A\u79F0\u5DF2\u6838\u5B9E\u4E8B\u5B9E\uFF0C\u4E0D\u987B\u5148\u5236\u9020\u4F4E\u6863\u5931\u8D25\u3002\u8DE8\u6863 selectionReason \u975E\u7A7A\u5373\u53EF\u653E\u884C\uFF0C\u4E0D\u4F5C\u4E3A\u963B\u65AD\u6216\u81EA\u52A8\u53D6\u6D88\u6D3E\u53D1\u7684\u6761\u4EF6\u3002
1256
+ - \u9009\u4EBA\uFF08\u9886\u57DF\u5339\u914D\u4F18\u5148\u4E8E\u6863\u4F4D\uFF0C\u7528\u6237\u53EF\u8986\u76D6\uFF09\uFF1Adimension \u4E3A general\uFF08\u901A\u7528\uFF09/ design_frontend\uFF08\u8BBE\u8BA1\u524D\u7AEF\uFF09/ writing\uFF08\u5199\u4F5C\uFF09\uFF0C\u4E0D\u540C LLM \u5728\u4E0D\u540C\u9886\u57DF\u5404\u6709\u5F3A\u5F31\uFF0C\u4E0D\u662F\u5355\u7EAF\u5927\u5C0F\u6392\u5E8F\u3002\u5F53\u6B21\u7528\u6237\u70B9\u540D > \u7528\u6237\u8BB0\u5FC6\u4E2D\u7684\u5206\u5DE5/\u7981\u5FCC > \u8FD1\u671F\u540C\u7C7B\u4EFB\u52A1\u5931\u8D25\u8BC1\u636E\uFF1B\u660E\u786E\u4E0D\u9002\u914D\u624D\u6392\u9664\uFF0C\u7F3A\u8BC1\u636E\u4E0D\u7B49\u4E8E\u5F31\u3002
1257
+ difficulty \u4EC5 easy\uFF08\u7B80\u5355\uFF09/ normal\uFF08\u6B63\u5E38\uFF09/ complex\uFF08\u590D\u6742\uFF09/ extreme\uFF08\u6781\u5176\u590D\u6742\uFF1B\u6781\u7AEF\u590D\u6742\u540C\u4E49\uFF09\u56DB\u6863\uFF0C\u672A\u77E5\u6216\u672A\u586B\u9ED8\u8BA4 normal\uFF1B\u8FD9\u662F\u4EFB\u52A1\u96BE\u5EA6\uFF0C\u4E0D\u662F\u5019\u9009\u8D44\u683C\u786C\u95E8\u3002
1258
+ \u80FD\u529B\u6863\u6620\u5C04\uFF08\u5171\u4EAB\u4EBA\u5DE5\u6620\u5C04\uFF0C\u552F\u4E00\u771F\u6E90 dispatchSelectionPolicy.ts\uFF09\uFF1A
1259
+ ${MODEL_TIER_GUIDANCE}
1260
+ \u56FE\u50CF\u6A21\u578B\u53EA\u7528\u4E8E\u56FE\u50CF\u4EFB\u52A1\uFF0C\u4E0D\u7528\u4E8E\u4EE3\u7801 / \u6587\u672C\u4EFB\u52A1\u3002
1261
+ \u6A21\u578B\u6863\u4F4D\u53EA\u53D6\u5171\u4EAB\u4EBA\u5DE5\u6620\u5C04\uFF1B\u672A\u77E5\u6A21\u578B\u4FDD\u6301 unknown \u4E14\u4ECD\u53EF\u7528\uFF0C\u4E0D\u7531 LLM \u81EA\u5C01\u6863\u4F4D\uFF0C\u4E0D\u9ED8\u8BA4\u9876\u6863\u3001\u4E0D\u5411\u7528\u6237\u7D22\u8981\u5B9A\u6863\u3002
1262
+ \u9886\u57DF\u5177\u4F53\u504F\u597D\uFF1A\u8BBE\u8BA1 / \u524D\u7AEF\uFF1AClaude \u6A21\u578B\u4F18\u5148\uFF0CClaude \u4E4B\u95F4 Opus \u4F18\u4E8E Sonnet\uFF1B\u4E4B\u540E Gemini\uFF0CPro \u4F18\u4E8E Flash\u3002\u5199\u4F5C\uFF1AGemini \u4F18\u5148\u4E8E\u5176\u4ED6\u6A21\u578B\u3002\u5176\u4F59\u6A21\u578B\u5728\u5BF9\u5E94\u7EF4\u5EA6\u672A\u77E5\uFF0C\u4E0D\u63A8\u5B9A\u5B8C\u6574\u6392\u540D\u3002
1263
+ \u9886\u57DF\u504F\u597D\u53EF\u4F5C\u4E3A\u8DE8\u6863\u9009\u62E9\u7406\u7531\uFF0C\u4E0D\u8868\u793A\u4E0D\u80FD\u6362\u6863\uFF1B\u504F\u597D\u4E0D\u8986\u76D6\u771F\u5B9E\u80FD\u529B\u9650\u5236\u3001\u8D39\u7528\u6388\u6743\u3001\u4F5C\u8005\u56DE\u907F\u4E0E\u5F53\u6B21\u53EF\u7528\u6027\uFF0C\u4E0D\u5F97\u56E0\u4E3A\u300C\u8BBE\u8BA1\u4EFB\u52A1\u504F\u597D Opus\u300D\u5C31\u81EA\u52A8\u6D88\u8017\u5E73\u53F0\u79EF\u5206\u3002
1264
+ \u5DE5\u5177\u4EC5\u8FD4\u56DE\u6863\u4F4D\u5DEE\u5F02\u63D0\u9192\u4E14\u7167\u5E38\u542F\u52A8\uFF0C\u4E0D\u5F3A\u5236\u9009\u4EBA\u3001\u4E0D\u81EA\u52A8\u53D6\u6D88\u91CD\u6D3E\uFF1B\u6D3E\u53D1 Agent \u81EA\u884C\u7ED3\u5408\u9886\u57DF\u4F18\u52BF\u3001\u771F\u5B9E\u989D\u5EA6/\u7F51\u7EDC\u4E0E\u5019\u9009\u53EF\u7528\u6027\u3001\u7528\u6237\u6307\u5B9A\u4F5C\u5224\u65AD\u3002\u901F\u5EA6\u89C4\u5219\u7EDF\u4E00\u89C1\u5E38\u9A7B\u300C\u6D3E\u53D1\u9009\u4EBA \xB7 \u53EF\u7528\u6027\u4E0E\u901F\u5EA6\u300D\uFF0C\u4E0D\u5F97\u636E\u901F\u5EA6\u63A8\u5BFC\u6A21\u578B\u6863\u4F4D\u3002
1325
1265
  - 429 \u9650\u6D41\u4E0E\u77E5\u60C5\u6743\u5951\u7EA6\uFF1A\u4EFB\u4F55\u7528\u6237\u79C1\u6709\u51ED\u636E\u4E0E\u81EA\u5EFA Agent\uFF08billingSource \u4E3A user_subscription / owner_subscription / user_api / local\uFF0C\u6216 isOwned=true\uFF09\u5728 listAgents \u7684 agents[].availabilityStatus \u4E3A rate_limited \u6216 quota_exhausted \u65F6\uFF0C\u7981\u6B62\u9759\u9ED8\u8DF3\u8FC7\uFF1B\u6539\u6D3E\u5E73\u53F0 Agent\uFF08\u6D88\u8017\u5E73\u53F0\u79EF\u5206\uFF09\u524D\u5FC5\u987B\u5728\u56DE\u590D\u4E2D\u544A\u77E5\u7528\u6237\uFF1A\u54EA\u4E2A\u8BA2\u9605/\u81EA\u5EFA agent \u9650\u6D41\u3001\u9884\u8BA1\u4F55\u65F6\u6062\u590D\uFF08nextAvailableAt\uFF09\u3001\u672C\u6B21\u5C06\u6263\u5E73\u53F0\u79EF\u5206\uFF1BavailabilityStatus \u4E0E nextAvailableAt \u4EC5\u662F\u53C2\u8003\u4FE1\u606F\uFF0C\u4E0D\u62E6\u6D3E\u53D1\uFF0C\u4E0D\u5F97\u4EC5\u51ED\u51B7\u5374\u6807\u6CE8\u6392\u9664\u5019\u9009\uFF1B\u7528\u6237\u4ECD\u53EF\u7167\u5E38\u6D3E\u53D1\u5E76\u83B7\u5F97\u4E0A\u6E38\u771F\u5B9E\u7ED3\u679C\u3002`;
1326
1266
 
1267
+ // packages/agent-runtime/agentThread.ts
1268
+ var AGENT_THREAD_ACTIVE_STATUSES = ["pending", "running"];
1269
+ var AGENT_THREAD_TERMINAL_STATUSES = ["done", "failed", "cancelled", "orphaned"];
1270
+
1327
1271
  export {
1328
1272
  DEFAULT_READ_DIALOG_MAX_RESPONSE_CHARS,
1329
1273
  projectDialogReadForAgent,
@@ -1350,14 +1294,12 @@ export {
1350
1294
  verifyNoloDialogSubjectRefQuery,
1351
1295
  buildNoloTableQueryRequest,
1352
1296
  buildNoloWorkspaceCommandArgs,
1353
- DEFAULT_SUBTASK_MAX_TOOL_CALLS,
1354
- DEFAULT_SUBTASK_MAX_WALL_CLOCK_MS,
1355
- resolveSubtaskBudgetLimits,
1356
- resolveDispatchedSubtaskBudget,
1357
- createSubtaskBudgetTracker,
1358
- buildSubtaskBudgetExhaustedContent,
1297
+ resolveModelTier,
1298
+ assertDispatchSelectionAdmission,
1359
1299
  compareAgentSelection,
1360
1300
  AGENT_SELECTION_PRIORITY_INSTRUCTIONS,
1361
1301
  buildAgentRuntimeAgentLookupKeys,
1362
- shouldFetchAgentRuntimeRecordRemotely
1302
+ shouldFetchAgentRuntimeRecordRemotely,
1303
+ AGENT_THREAD_ACTIVE_STATUSES,
1304
+ AGENT_THREAD_TERMINAL_STATUSES
1363
1305
  };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getRuntimeServerContext,
3
3
  scheduleDeleteReplication
4
- } from "./chunk-PYRUW7XN.js";
4
+ } from "./chunk-2VUZSVAS.js";
5
5
  import {
6
6
  fetchFromClientDb
7
7
  } from "./chunk-AGP3YSEC.js";
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-PXYBUFDB.js";
11
11
  import {
12
12
  buildTombstoneRecord
13
- } from "./chunk-SVYO6AO7.js";
13
+ } from "./chunk-BV3FLP2L.js";
14
14
 
15
15
  // packages/database/fileStorage.ts
16
16
  var DB_NAME = "nolo-file-storage";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolvePlatformAuthToken
3
- } from "./chunk-TCZHTTUU.js";
3
+ } from "./chunk-I7WBYGBP.js";
4
4
  import {
5
5
  getCredentialsDir
6
6
  } from "./chunk-G7Y4GXTY.js";
@@ -1,6 +1,3 @@
1
- import {
2
- load
3
- } from "./chunk-KHCLMKZZ.js";
4
1
  import {
5
2
  DEFAULT_SKILL_CATALOG_BUDGET,
6
3
  applySkillDescriptionBudget,
@@ -8,7 +5,10 @@ import {
8
5
  mapDiscoveredSkillsToCatalogEntries,
9
6
  resolveSkillCatalog,
10
7
  resolveSkillCatalogSync
11
- } from "./chunk-ZRSNONOB.js";
8
+ } from "./chunk-JWXITTQB.js";
9
+ import {
10
+ load
11
+ } from "./chunk-KHCLMKZZ.js";
12
12
 
13
13
  // packages/agent-runtime/skillDiscovery.ts
14
14
  import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
@@ -1,20 +1,15 @@
1
1
  import {
2
2
  refreshSubscriptionQuotas
3
- } from "./chunk-YGILMZ7N.js";
3
+ } from "./chunk-QVBXJNZ2.js";
4
4
  import {
5
5
  getReadableCliDb
6
- } from "./chunk-J5JTMQIA.js";
7
- import {
8
- BIGMODEL_PROVIDER_TARGET,
9
- buildCredentialUseGrant,
10
- verifyCredentialUseGrant
11
- } from "./chunk-XFYFMTOM.js";
6
+ } from "./chunk-YFLVRVYK.js";
12
7
  import {
13
8
  clearCliLocalRuntimePreparedAgentCache
14
- } from "./chunk-UYD5HQ6T.js";
9
+ } from "./chunk-P5ZJRTCH.js";
15
10
  import {
16
11
  readCredentialAvailability
17
- } from "./chunk-YTF4WH7J.js";
12
+ } from "./chunk-FIYSMXHY.js";
18
13
  import {
19
14
  buildCreatedAgentRecord,
20
15
  buildUpdatedAgentRecord,
@@ -25,17 +20,22 @@ import {
25
20
  resolveAgentRecordFromHybridStore,
26
21
  sanitizeAgentRecordForCliOutput,
27
22
  writeAgentRecord
28
- } from "./chunk-MOIJOHA5.js";
23
+ } from "./chunk-6WU5572L.js";
24
+ import {
25
+ BIGMODEL_PROVIDER_TARGET,
26
+ buildCredentialUseGrant,
27
+ verifyCredentialUseGrant
28
+ } from "./chunk-XFYFMTOM.js";
29
29
  import {
30
30
  resolveCliAgentKeyInput
31
- } from "./chunk-NBTY7YJF.js";
31
+ } from "./chunk-BR3GT6MR.js";
32
32
  import {
33
33
  toErrorMessage
34
34
  } from "./chunk-HNMXYYJR.js";
35
35
  import {
36
36
  parseUserIdFromAuthToken,
37
37
  resolveAuthToken
38
- } from "./chunk-WACI5I6V.js";
38
+ } from "./chunk-2THCNKE4.js";
39
39
 
40
40
  // packages/cli/agentRecordCommands.ts
41
41
  async function runAgentReadCommand(args, deps = {}) {
@@ -256,7 +256,7 @@ async function runAgentCreateCommand(args, deps = {}) {
256
256
  let verifyResult;
257
257
  if (parsed.verify) {
258
258
  try {
259
- const { verifyCustomProvider } = await import("./agentProviderCommands-Q5O33MED.js");
259
+ const { verifyCustomProvider } = await import("./agentProviderCommands-WKJOAWBP.js");
260
260
  const rec = built.nextRecord;
261
261
  const verifyCredentialRef = typeof rec.credentialRef === "string" && rec.credentialRef.trim() ? rec.credentialRef.trim() : "";
262
262
  if (verifyCredentialRef) {
@@ -395,7 +395,7 @@ async function runAgentCreateCommand(args, deps = {}) {
395
395
  const OAUTH_REFS = /* @__PURE__ */ new Set(["claude", "chatgpt", "xai", "antigravity", "cloudflare"]);
396
396
  if (apiKeyRef && OAUTH_REFS.has(apiKeyRef)) {
397
397
  try {
398
- const { createOAuthTokenStore } = await import("./oauthTokenStore-OEERZFUC.js");
398
+ const { createOAuthTokenStore } = await import("./oauthTokenStore-RUYNYALS.js");
399
399
  const store = createOAuthTokenStore();
400
400
  if (!store.read(apiKeyRef)) {
401
401
  authHint = `Subscription "${apiKeyRef}" is not authorized yet. Run \`nolo auth ${apiKeyRef}\` to log in.`;