nolo-cli 0.78.0-alpha.1 → 0.78.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 (152) hide show
  1. package/README.md +2 -2
  2. package/{_executeModel-T3FPYFVF.js → _executeModel-W26HVI75.js} +46 -46
  3. package/{action-D22U6CTH.js → action-6DXQGJMX.js} +11 -11
  4. package/{addContentAction-XAPUTGL4.js → addContentAction-I7VX5SAC.js} +9 -9
  5. package/{addDialogAgentAction-M7VLLBZM.js → addDialogAgentAction-OJSFV7DZ.js} +8 -8
  6. package/{agentDeleteCommand-2TYFURBN.js → agentDeleteCommand-XNFWCKBH.js} +30 -28
  7. package/{agentEmailCommands-7P35ZMUA.js → agentEmailCommands-W3X3EJ3V.js} +62 -60
  8. package/{agentGrantCommands-R3VQEZJR.js → agentGrantCommands-YW6PQAQ2.js} +2 -2
  9. package/{agentListCommands-IFUOWXP3.js → agentListCommands-DFWFU6XO.js} +38 -30
  10. package/{agentMachineCommands-G46ZZ2ZQ.js → agentMachineCommands-LMFOAEL4.js} +30 -28
  11. package/{agentProviderCommands-65ZC2WB4.js → agentProviderCommands-ZBYHGTGY.js} +87 -0
  12. package/{agentPullCommand-N7L2CT7L.js → agentPullCommand-GLOOXJ2E.js} +3 -3
  13. package/{agentRecordCommands-R74LTQEQ.js → agentRecordCommands-FVVVCQFM.js} +59 -57
  14. package/{agentRunCommand-IRSZYCEU.js → agentRunCommand-HTBVIBGV.js} +60 -58
  15. package/{agentRunControl-T44MESII.js → agentRunControl-XLGD3UZ5.js} +1 -1
  16. package/{agentRuntimeLocal-PUZINLWJ.js → agentRuntimeLocal-2JFG4HDU.js} +28 -26
  17. package/{agentSlice-EACXUOWW.js → agentSlice-ZNLGFUB5.js} +10 -10
  18. package/{appDeleteCommands-U4NTEJYQ.js → appDeleteCommands-2UN4N2NR.js} +30 -28
  19. package/{appDeployCommands-FXF45Q7F.js → appDeployCommands-37D74KRR.js} +30 -28
  20. package/{appDeployStatusCommands-KONVRM53.js → appDeployStatusCommands-QBLWL2IA.js} +30 -28
  21. package/{appGetCommands-3VOGIZ7T.js → appGetCommands-6KXIDF2T.js} +30 -28
  22. package/{appListCommands-A6ROBW7P.js → appListCommands-G2WFGEWQ.js} +30 -28
  23. package/{authCommand-EVGFLAHO.js → authCommand-V2DJ7DB7.js} +164 -24
  24. package/{authCommands-ILTBI6JV.js → authCommands-RGOGCPP6.js} +4 -5
  25. package/builtinSkillRegistry-WBGYKIAZ.js +33 -0
  26. package/{chatQueueReduxAdapter-XEIJO5WR.js → chatQueueReduxAdapter-XCJHIY3R.js} +24 -24
  27. package/chunk-2ADBVBEM.js +1625 -0
  28. package/{chunk-FPTQQSS6.js → chunk-2AYMFHUG.js} +26 -5
  29. package/{chunk-EXMHJN7C.js → chunk-2F4VYGFW.js} +2 -2
  30. package/{chunk-C3FZR5EC.js → chunk-2F7RJC6L.js} +1 -1
  31. package/{chunk-HQUORJTM.js → chunk-3BMYXEUW.js} +1 -1
  32. package/{chunk-733J6D44.js → chunk-3CMTBX3X.js} +6 -6
  33. package/{chunk-PZM3EENV.js → chunk-3CR2LC6X.js} +1 -1
  34. package/{chunk-DWPNOYMB.js → chunk-3R5PH4IP.js} +1 -1
  35. package/{chunk-ZY4K4CZR.js → chunk-4BYPU626.js} +909 -304
  36. package/{chunk-ZZCJUXUI.js → chunk-4DRWWIOL.js} +2 -2
  37. package/{chunk-H7UKKEIS.js → chunk-576IMUGH.js} +1 -1
  38. package/{chunk-QRBAZ5PW.js → chunk-5DFFKASO.js} +3 -3
  39. package/{chunk-MGU5ADIQ.js → chunk-5NMZNPTN.js} +10 -10
  40. package/{chunk-5XTOKQLW.js → chunk-5UTFL4QJ.js} +6 -2
  41. package/{chunk-CDVGNZDA.js → chunk-5V4NJHRM.js} +11 -173
  42. package/chunk-5ZUL4CUO.js +10 -0
  43. package/{chunk-BJCWNHVU.js → chunk-6BEA566T.js} +2 -2
  44. package/{chunk-E6RGHPDR.js → chunk-6D6VBVEW.js} +4 -6
  45. package/{chunk-U6LKJRJB.js → chunk-7MYYE7WX.js} +42 -26
  46. package/{chunk-BYEJ7K2Z.js → chunk-7S4YWN7P.js} +1 -1
  47. package/{chunk-AFIWC5NH.js → chunk-A2C4AKKM.js} +1 -1
  48. package/{chunk-SREASRV5.js → chunk-ABQYVJBJ.js} +1 -1
  49. package/{chunk-XEEHSS64.js → chunk-AQZRTHDZ.js} +1200 -52
  50. package/{chunk-AJHEFRGJ.js → chunk-ASGDO77C.js} +122 -1
  51. package/{chunk-2KDR4CWE.js → chunk-BYMV6QZG.js} +24 -1
  52. package/{chunk-MYU3MJCF.js → chunk-CLI4LFSM.js} +175 -7
  53. package/{chunk-HH65VA5U.js → chunk-CPH3W5A7.js} +15 -3
  54. package/{chunk-PYXL2CJL.js → chunk-DNQPPRHY.js} +1 -1
  55. package/{chunk-3QPYFHAH.js → chunk-DPQ2WVBY.js} +1 -1
  56. package/{chunk-DSRXPQWA.js → chunk-F2CGG72C.js} +43 -43
  57. package/{chunk-P7FA2HMM.js → chunk-FQYMLZ6C.js} +13 -15
  58. package/{chunk-BJIRLHJR.js → chunk-GII32WZW.js} +1 -0
  59. package/{chunk-FSFQ3A7S.js → chunk-GRYGRGPS.js} +10 -10
  60. package/{chunk-D74EWXL4.js → chunk-HMEMJ7GH.js} +386 -46
  61. package/{chunk-OZX2IPKM.js → chunk-HQCSU3DI.js} +1 -1
  62. package/{chunk-3JQ2NRYU.js → chunk-HVURBGF3.js} +4 -4
  63. package/{chunk-ALGK6TIE.js → chunk-HYZHJ5GW.js} +3 -3
  64. package/{chunk-Q6FF2MCK.js → chunk-IIKPWSPX.js} +1 -1
  65. package/{chunk-X7Z7U4Z6.js → chunk-JBBZ5KUM.js} +15 -15
  66. package/{chunk-KC5FAHVS.js → chunk-JEDZAO7L.js} +1 -1
  67. package/{chunk-6XIE5ZGI.js → chunk-JPGCXHNM.js} +1 -1
  68. package/{chunk-4EJ5QYB5.js → chunk-JTK3TJYV.js} +1 -1
  69. package/{chunk-CMH2SYHX.js → chunk-K7M3MWCE.js} +2 -2
  70. package/{chunk-5J7W2VWW.js → chunk-L2ICPOAL.js} +6 -265
  71. package/{chunk-RXX4GDIH.js → chunk-LS2ZANRJ.js} +1 -1
  72. package/{chunk-EVBFYPDC.js → chunk-MC4XLIJ7.js} +6 -2
  73. package/{chunk-PGSKWZCB.js → chunk-MJHQ3NRV.js} +1 -1
  74. package/{chunk-ZLPA7K55.js → chunk-N3OAPEZE.js} +29 -10
  75. package/{chunk-K7AG465Q.js → chunk-ND2J3NRB.js} +4 -2
  76. package/{chunk-G3NT6BM3.js → chunk-NFMHIUY3.js} +142 -59
  77. package/{chunk-XWNRAIUL.js → chunk-PH5J5VUY.js} +6 -16
  78. package/{chunk-AETZ7AD6.js → chunk-Q554LLSI.js} +1 -1
  79. package/chunk-Q5FJJ6XI.js +103 -0
  80. package/{chunk-JYYZCK2Z.js → chunk-QFMFJZLO.js} +1 -1
  81. package/{chunk-KIS76A2P.js → chunk-QHETQ3KI.js} +38 -4
  82. package/{chunk-UZ6XXCVR.js → chunk-RZANZZL2.js} +15 -2
  83. package/{chunk-SPAQ4PVV.js → chunk-SAFZABH7.js} +1 -1
  84. package/{chunk-QC5LGHYP.js → chunk-SMZSWB44.js} +10 -5
  85. package/chunk-TL6L5XUT.js +266 -0
  86. package/{chunk-QUH3XHL5.js → chunk-TVNI5FLG.js} +7 -7
  87. package/{chunk-YFADVSZE.js → chunk-UA5S3LQQ.js} +6 -6
  88. package/{chunk-QA6YKM3H.js → chunk-UTCCPWB2.js} +32 -4
  89. package/{chunk-E36HZARC.js → chunk-VHJLQHPQ.js} +3 -3
  90. package/{chunk-NHRQCXIQ.js → chunk-VMFTFOWF.js} +13 -3
  91. package/{chunk-UJ63UXGE.js → chunk-VRLI2WNW.js} +1073 -752
  92. package/{chunk-NG4UT4K4.js → chunk-WS22FPWT.js} +1 -1
  93. package/{chunk-MEVSATIF.js → chunk-WXPVOQD7.js} +66 -792
  94. package/{chunk-AFIKMMGC.js → chunk-XKQJJK4F.js} +1 -1
  95. package/{chunk-SZLVDREM.js → chunk-XMGHGEN6.js} +3 -3
  96. package/{chunk-L2Y24GRM.js → chunk-XTUY5EL4.js} +16 -12
  97. package/{chunk-V3ZKNK5D.js → chunk-YOXYA2GU.js} +10 -10
  98. package/{chunk-GBPZKFYK.js → chunk-Z33ARZCP.js} +4 -4
  99. package/chunk-ZAB3A45K.js +677 -0
  100. package/{chunk-UDQWGU7F.js → chunk-ZBT3WNBK.js} +1 -1
  101. package/{contentThunks-3SPROFG5.js → contentThunks-VURN3DFW.js} +25 -25
  102. package/{createAgentAutomationAction-EIP2EG3O.js → createAgentAutomationAction-QZAAY77R.js} +25 -25
  103. package/{createDialogAction-RLUSTN4D.js → createDialogAction-CHGXVTAC.js} +28 -28
  104. package/{createPageAction-4Y52G7WG.js → createPageAction-IOGAFIN7.js} +26 -26
  105. package/{dbSlice-GKGGFNOB.js → dbSlice-YXQ6RYIH.js} +8 -8
  106. package/{deleteFile-LWSR674W.js → deleteFile-YG6QMJLU.js} +3 -3
  107. package/{dialogCommands-G223U5WU.js → dialogCommands-XREAP6WQ.js} +32 -30
  108. package/{dialogSlice-THY45JWM.js → dialogSlice-DOPGWGS4.js} +24 -24
  109. package/{docCreateCommands-2P47IJDK.js → docCreateCommands-3PYZGSCL.js} +31 -29
  110. package/{docDeleteCommands-N3EGDOIC.js → docDeleteCommands-3Y6MU44Q.js} +32 -30
  111. package/{docReadCommands-6BFV2HI7.js → docReadCommands-UBANMAFR.js} +31 -29
  112. package/{docStore-ZQ3ECOPY.js → docStore-SYYFBENY.js} +9 -9
  113. package/{docUpdateCommands-ZTMPXHC5.js → docUpdateCommands-4GK2X6BN.js} +31 -29
  114. package/{fetchMessages-DRABNDPZ.js → fetchMessages-EIU7UFFK.js} +3 -4
  115. package/{getPricing-HRMSOF3E.js → getPricing-F2C65RIX.js} +4 -4
  116. package/{handleSendMessageAction-CE4M5XIE.js → handleSendMessageAction-NPVTY2GE.js} +24 -24
  117. package/index.js +88 -80
  118. package/{localDialogRead-PUQKFI73.js → localDialogRead-BTFJ4V2I.js} +2 -2
  119. package/{localRuntimeDb-P37ZTX55.js → localRuntimeDb-SYQGUF4U.js} +1 -1
  120. package/{machineCommands-4OT7KVCD.js → machineCommands-I66X2XB7.js} +59 -57
  121. package/{machineWsRunDispatch-TR3EYESP.js → machineWsRunDispatch-W4FVBOUM.js} +57 -55
  122. package/{memberThunks-KATHH3F4.js → memberThunks-5T4J6KXQ.js} +9 -9
  123. package/{models-GS72DVJS.js → models-WW7VFNXB.js} +2 -2
  124. package/{offlineMarxistsAgentCommand-GEH6SNNA.js → offlineMarxistsAgentCommand-JEWCIAWM.js} +1 -1
  125. package/package.json +1 -1
  126. package/providerPresetApply-OCWWKBSD.js +214 -0
  127. package/providerRegistry-ZJQU7AJ7.js +31 -0
  128. package/{read-LC6HVYBN.js → read-M2Q6WEKB.js} +5 -4
  129. package/{readDocTool-N3ERJHHF.js → readDocTool-T37P3YPB.js} +1 -1
  130. package/{readlineWorkspace-GSL5CYNJ.js → readlineWorkspace-VY5AMOGR.js} +196 -111
  131. package/{removeDialogAgentAction-F5GPTALR.js → removeDialogAgentAction-HB3JBVAI.js} +11 -11
  132. package/{runAgentClientLoop-NE5EHXSS.js → runAgentClientLoop-3NDADLVE.js} +45 -45
  133. package/{runtimeDoctorCommands-CROTMULY.js → runtimeDoctorCommands-X6WDBEQX.js} +2 -2
  134. package/{setDialogExtraReferencesAction-AY4ZCF3A.js → setDialogExtraReferencesAction-4XLHRV37.js} +9 -9
  135. package/{setPrimaryDialogAgentAction-HPMG7V3R.js → setPrimaryDialogAgentAction-C3JOFC4W.js} +11 -11
  136. package/{settingSlice-OEJA4NQO.js → settingSlice-CZRURSTH.js} +10 -10
  137. package/{spaceCommands-MRP5U3C3.js → spaceCommands-ENYCUUZH.js} +29 -27
  138. package/{streamAgentChatTurn-A6L6O22P.js → streamAgentChatTurn-634OFUSR.js} +57 -56
  139. package/{switchDialogAgentAction-HMDZTZ4I.js → switchDialogAgentAction-C6KVUKJP.js} +8 -8
  140. package/{tableCommands-SUNTHAYX.js → tableCommands-O6NWHFKV.js} +1 -1
  141. package/{toolApiClient-VGYUB4P5.js → toolApiClient-7PSIFQPJ.js} +2 -2
  142. package/{tools-JS475NYO.js → tools-ILBLCF7D.js} +41 -39
  143. package/tuiSummaryLlmCaller-LFUBZKXK.js +127 -0
  144. package/{updateCommands-Y363MC3L.js → updateCommands-2M74UL7P.js} +2 -2
  145. package/{updateDialogTitleAction-GMZUT6RP.js → updateDialogTitleAction-RKFET73N.js} +45 -28
  146. package/chunk-3IT2PFHL.js +0 -611
  147. package/chunk-I42VC5KR.js +0 -15
  148. package/codingSkills-E6KSDNSJ.js +0 -48
  149. package/tuiSummaryLlmCaller-3Z24VUWM.js +0 -116
  150. package/{chunk-3RAG2NAD.js → chunk-UKWGR5SS.js} +3 -3
  151. package/{db-VQSAOWAO.js → db-WK5MDZVN.js} +1 -1
  152. package/{localRuntimeAuthority-R5UBODT3.js → localRuntimeAuthority-6IR6BBXE.js} +3 -3
@@ -19,8 +19,20 @@ var FIREWORKS_KIMI_LATEST_MODEL = "accounts/fireworks/models/kimi-latest";
19
19
  var FIREWORKS_KIMI_CURRENT_MODEL = "accounts/fireworks/models/kimi-k2p7-code";
20
20
  var FIREWORKS_KIMI_K2P6_MODEL = "accounts/fireworks/models/kimi-k2p6";
21
21
  var DEEPINFRA_KIMI_FALLBACK_MODEL = "moonshotai/Kimi-K2.6";
22
+ var isOllamaCloudKimiModel = (model) => model === PLATFORM_HOSTED_KIMI_K3_MODEL || model === PLATFORM_HOSTED_KIMI_K26_MODEL;
22
23
  var isFireworksKimiModel = (model) => model === FIREWORKS_KIMI_LATEST_MODEL || model === FIREWORKS_KIMI_CURRENT_MODEL || model === FIREWORKS_KIMI_K2P6_MODEL;
23
24
  var isDeepInfraKimiModel = (model) => model === DEEPINFRA_KIMI_FALLBACK_MODEL;
25
+ var isPlatformKimiProviderModel = (provider, model) => {
26
+ const normalizedProvider = asTrimmedLowercaseString(provider);
27
+ if (normalizedProvider === PLATFORM_HOSTED_KIMI_PROVIDER || normalizedProvider === LEGACY_OLLAMA_CLOUD_PROVIDER) {
28
+ return isOllamaCloudKimiModel(model);
29
+ }
30
+ return false;
31
+ };
32
+ var isPlatformManagedProvider = (provider, model) => {
33
+ const normalized = asTrimmedLowercaseString(provider);
34
+ return isNoloHostedProvider(normalized) || normalized === "deepseek" || isPlatformKimiProviderModel(normalized, model);
35
+ };
24
36
  var resolveFireworksKimiModel = (model) => {
25
37
  if (model === FIREWORKS_KIMI_LATEST_MODEL) {
26
38
  return FIREWORKS_KIMI_CURRENT_MODEL;
@@ -50,6 +62,9 @@ var PLATFORM_HOSTED_GEMINI_FLASH_IMAGE_MODEL = "gemini-3.1-flash-image-preview";
50
62
  var PLATFORM_HOSTED_GEMINI_PRO_IMAGE_MODEL = "gemini-3-pro-image-preview";
51
63
  var PLATFORM_HOSTED_GEMINI_FLASH_LITE_IMAGE_MODEL = "gemini-3.1-flash-lite-image";
52
64
  var PLATFORM_HOSTED_OPENAI_IMAGE_MODEL = "gpt-image-2";
65
+ var PLATFORM_HOSTED_MIMO_FLASH_MODEL = "mimo-v2.6-flash";
66
+ var PLATFORM_HOSTED_MIMO_PRO_MODEL = "mimo-v2.6-pro";
67
+ var PLATFORM_HOSTED_MIMO_PRO_ULTRASPEED_MODEL = "mimo-v2.6-pro-ultraspeed";
53
68
  var PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL = "deepseek-flash";
54
69
  var PLATFORM_HOSTED_DEEPSEEK_FLASH_VISION_EXP_MODEL = "deepseek-v4-flash-vision-exp";
55
70
  var PLATFORM_HOSTED_DEEPSEEK_PRO_MODEL = "deepseek-v4-pro";
@@ -239,6 +254,39 @@ var PLATFORM_HOSTED_ROUTING_TABLE = {
239
254
  wire: "chat.completions",
240
255
  agentRunHosted: false
241
256
  },
257
+ // MiMo V2.6 系 -> 小米官方按量计费 API(api.xiaomimimo.com,key 用 MIMO_API_KEY)。
258
+ // 模型 id 与上游一致,无 upstreamModelId(直传,不做 remap);
259
+ // wire 是 chat.completions(不是 responses 特例,走通用 hostedRoute 分支)。
260
+ //
261
+ // 上游事实(mimo.mi.com 官方文档 /api/chat/openai-api,2026-09-20 版):
262
+ // - `thinking.type` 默认 enabled;平台未显式开启思考时补 {type:"disabled"}
263
+ // (判据同时认 provider=mimo / xiaomimimo.com 端点与下面的托管模型 id);
264
+ // - 同时兼容 `max_tokens` 与 `max_completion_tokens`(实测 200 OK);文档
265
+ // 未提及 `stream_options` / `include_usage`——平台因此不请求
266
+ // include_usage,usage 由响应体自带(含 prompt_tokens_details.cached_tokens,
267
+ // 缓存命中按 inputCacheHit 价计入积分);
268
+ // - 1M 上下文 / 128K 最大输出 / 文本+图+音视频输入(全模态理解)。
269
+ [PLATFORM_HOSTED_MIMO_FLASH_MODEL]: {
270
+ endpoint: "https://api.xiaomimimo.com/v1/chat/completions",
271
+ usageProvider: "mimo",
272
+ keyName: "mimo",
273
+ wire: "chat.completions",
274
+ agentRunHosted: true
275
+ },
276
+ [PLATFORM_HOSTED_MIMO_PRO_MODEL]: {
277
+ endpoint: "https://api.xiaomimimo.com/v1/chat/completions",
278
+ usageProvider: "mimo",
279
+ keyName: "mimo",
280
+ wire: "chat.completions",
281
+ agentRunHosted: true
282
+ },
283
+ [PLATFORM_HOSTED_MIMO_PRO_ULTRASPEED_MODEL]: {
284
+ endpoint: "https://api.xiaomimimo.com/v1/chat/completions",
285
+ usageProvider: "mimo",
286
+ keyName: "mimo",
287
+ wire: "chat.completions",
288
+ agentRunHosted: true
289
+ },
242
290
  // OpenAI Image -> OpenAI Responses API
243
291
  [PLATFORM_HOSTED_OPENAI_IMAGE_MODEL]: {
244
292
  endpoint: "https://api.openai.com/v1/responses",
@@ -415,7 +463,7 @@ function buildClientVersionGateErrorDetail(decision) {
415
463
  // packages/ai/llm/platformHosted.ts
416
464
  var PLATFORM_CREDITS_PER_USD = 8;
417
465
  var toPlatformCredits = (usdPerMillion) => Number((usdPerMillion * PLATFORM_CREDITS_PER_USD).toFixed(6));
418
- var CNY_UPSTREAM_MULTIPLIER = 1.2;
466
+ var CNY_UPSTREAM_MULTIPLIER = 1.1;
419
467
  var toCnyCredits = (cnyPerMillion) => Number((cnyPerMillion * CNY_UPSTREAM_MULTIPLIER).toFixed(6));
420
468
  var PLATFORM_HOSTED_GROK_PRICE = {
421
469
  input: toPlatformCredits(2),
@@ -597,6 +645,40 @@ var createPlatformHostedGeminiImageModel = ({
597
645
  imageGenerationProfiles,
598
646
  supportsTool: false
599
647
  });
648
+ var PLATFORM_HOSTED_MIMO_MODELS = [
649
+ PLATFORM_HOSTED_MIMO_FLASH_MODEL,
650
+ PLATFORM_HOSTED_MIMO_PRO_MODEL,
651
+ PLATFORM_HOSTED_MIMO_PRO_ULTRASPEED_MODEL
652
+ ];
653
+ var isPlatformHostedMimoModel = (model) => {
654
+ const m = asTrimmedLowercaseString(model);
655
+ return PLATFORM_HOSTED_MIMO_MODELS.includes(m);
656
+ };
657
+ var isPlatformMimoProviderModel = (provider, model) => isPlatformManagedProvider(provider) && isPlatformHostedMimoModel(model);
658
+ var PLATFORM_HOSTED_MIMO_FLASH_PRICE = {
659
+ input: toCnyCredits(1),
660
+ // ¥1.00
661
+ inputCacheHit: toCnyCredits(0.02),
662
+ // ¥0.02
663
+ output: toCnyCredits(2)
664
+ // ¥2.00
665
+ };
666
+ var PLATFORM_HOSTED_MIMO_PRO_PRICE = {
667
+ input: toCnyCredits(3),
668
+ // ¥3.00
669
+ inputCacheHit: toCnyCredits(0.025),
670
+ // ¥0.025
671
+ output: toCnyCredits(6)
672
+ // ¥6.00
673
+ };
674
+ var PLATFORM_HOSTED_MIMO_PRO_ULTRASPEED_PRICE = {
675
+ input: toCnyCredits(30),
676
+ // ¥30.00
677
+ inputCacheHit: toCnyCredits(0.25),
678
+ // ¥0.25
679
+ output: toCnyCredits(60)
680
+ // ¥60.00
681
+ };
600
682
  var PLATFORM_HOSTED_DEEPSEEK_FLASH_PEAK_PRICE = {
601
683
  input: toCnyCredits(2),
602
684
  // ¥2
@@ -754,6 +836,40 @@ var platformHostedModels = [
754
836
  supportsReasoningEffort: true,
755
837
  minClientVersion: PLATFORM_HOSTED_GLM_53_FLASH_MIN_CLIENT_VERSION
756
838
  },
839
+ // MiMo V2.6 系(小米官方按量计费 API,key 用 MIMO_API_KEY):1M 上下文、
840
+ // 最大输出 128K、原生多模态输入(文本/图/音/视频)、函数调用与深度思考。
841
+ // 能力值来源:mimo.mi.com 模型列表页 + 官方模型目录(max_output_length
842
+ // 131072、context 1048576、input_modalities 含 image/audio/video),2026-09-21。
843
+ {
844
+ name: PLATFORM_HOSTED_MIMO_FLASH_MODEL,
845
+ displayName: "MiMo V2.6 Flash",
846
+ hasVision: true,
847
+ price: { ...PLATFORM_HOSTED_MIMO_FLASH_PRICE },
848
+ maxOutputTokens: 131072,
849
+ contextWindow: 1048576,
850
+ supportsTool: true,
851
+ supportsReasoningEffort: true
852
+ },
853
+ {
854
+ name: PLATFORM_HOSTED_MIMO_PRO_MODEL,
855
+ displayName: "MiMo V2.6 Pro",
856
+ hasVision: true,
857
+ price: { ...PLATFORM_HOSTED_MIMO_PRO_PRICE },
858
+ maxOutputTokens: 131072,
859
+ contextWindow: 1048576,
860
+ supportsTool: true,
861
+ supportsReasoningEffort: true
862
+ },
863
+ {
864
+ name: PLATFORM_HOSTED_MIMO_PRO_ULTRASPEED_MODEL,
865
+ displayName: "MiMo V2.6 Pro Ultraspeed",
866
+ hasVision: true,
867
+ price: { ...PLATFORM_HOSTED_MIMO_PRO_ULTRASPEED_PRICE },
868
+ maxOutputTokens: 131072,
869
+ contextWindow: 1048576,
870
+ supportsTool: true,
871
+ supportsReasoningEffort: true
872
+ },
757
873
  // Claude 系(真实 DeepInfra 模型,官方 id 与平台 id 同名):无缓存价,
758
874
  // 计费按 input 全价(见 calculatePrice 的 deepinfra 分支)。
759
875
  {
@@ -1012,6 +1128,11 @@ export {
1012
1128
  PLATFORM_HOSTED_GLM_53_FLASH_BASETEN_PRICE,
1013
1129
  isPlatformHostedOpenAIImageModel,
1014
1130
  isPlatformHostedImageModel,
1131
+ isPlatformMimoProviderModel,
1132
+ PLATFORM_HOSTED_DEEPSEEK_FLASH_PEAK_PRICE,
1133
+ PLATFORM_HOSTED_DEEPSEEK_FLASH_OFF_PEAK_PRICE,
1134
+ PLATFORM_HOSTED_DEEPSEEK_PRO_PEAK_PRICE,
1135
+ PLATFORM_HOSTED_DEEPSEEK_PRO_OFF_PEAK_PRICE,
1015
1136
  getPlatformHostedDeepSeekV4Price,
1016
1137
  isPlatformHostedDeepseekModel,
1017
1138
  isPlatformHostedDeepSeekV4Model,
@@ -285,6 +285,27 @@ function saveProfileAgentSelection(selection, path = getDefaultProfileConfigPath
285
285
  `, "utf8");
286
286
  return config;
287
287
  }
288
+ function getProfileOAuthSync(provider, path = getDefaultProfileConfigPath()) {
289
+ const config = loadProfileConfig(path);
290
+ if (!config) return void 0;
291
+ const profile = config.profiles[config.currentProfile];
292
+ return profile?.oauthSync?.[provider];
293
+ }
294
+ function saveProfileOAuthSync(provider, sync, path = getDefaultProfileConfigPath()) {
295
+ if (isProtectedHomeProfileWrite(path)) return null;
296
+ const config = loadProfileConfig(path);
297
+ if (!config) return null;
298
+ const profile = config.profiles[config.currentProfile];
299
+ if (!profile) return null;
300
+ profile.oauthSync = {
301
+ ...profile.oauthSync ?? {},
302
+ [provider]: sync
303
+ };
304
+ mkdirSync(dirname(path), { recursive: true });
305
+ writeFileSync(path, `${JSON.stringify(config, null, 2)}
306
+ `, "utf8");
307
+ return config;
308
+ }
288
309
 
289
310
  export {
290
311
  getDefaultProfileConfigPath,
@@ -299,5 +320,7 @@ export {
299
320
  saveProfileLocale,
300
321
  getAgentSelectionAuditPath,
301
322
  readLastAgentSelectionAudit,
302
- saveProfileAgentSelection
323
+ saveProfileAgentSelection,
324
+ getProfileOAuthSync,
325
+ saveProfileOAuthSync
303
326
  };
@@ -1,7 +1,13 @@
1
+ import {
2
+ buildSkillDocMarkdown
3
+ } from "./chunk-Q554LLSI.js";
1
4
  import {
2
5
  SYSTEM_AGENT_CAPABILITIES,
3
6
  SYSTEM_AGENT_CAPABILITY_IDS
4
- } from "./chunk-UZ6XXCVR.js";
7
+ } from "./chunk-RZANZZL2.js";
8
+ import {
9
+ createKey
10
+ } from "./chunk-VMFTFOWF.js";
5
11
 
6
12
  // packages/ai/tools/codeWorkDiscipline.ts
7
13
  var CODE_WORK_DISCIPLINE_BODY = `## \u6548\u7387\u4F18\u5148\uFF08\u7701 token\uFF09
@@ -44,6 +50,9 @@ var TOOL_PACKS = {
44
50
  // queryModelUsage / queryUserGrowthReport:server-only 工具(web/CLI executor
45
51
  // 直接返回 serverOnlyResult),不随 CORE 常驻——server 端由 agent 显式
46
52
  // tools 配置按需挂载(utilityServerTools 执行器),web 端不再挂死 schema。
53
+ // setTodoList 已移至「conversation-todo」系统能力包(defaultEnabled:true)
54
+ // 作为唯一 owner——single source of truth:普通 agent 默认仍有 setTodoList,
55
+ // 但关闭「对话 Todo」开关即可真正摘掉它(CORE 常驻时该开关形同虚设)。
47
56
  CORE: [
48
57
  "read",
49
58
  "createDoc",
@@ -52,8 +61,7 @@ var TOOL_PACKS = {
52
61
  "updateSelf",
53
62
  "ask_user",
54
63
  "createAgentAutomation",
55
- "notifyUser",
56
- "setTodoList"
64
+ "notifyUser"
57
65
  ],
58
66
  // L2 - 联网搜索:与 CAPABILITY_PACKS「web-search」对齐。
59
67
  // 社交读工具属于「social-reader」包,不得因 exa_search 被旁路注入。
@@ -73,9 +81,7 @@ var TOOL_PACKS = {
73
81
  "launchProcess",
74
82
  "listProcesses",
75
83
  "taskWait",
76
- "taskLogs",
77
84
  "taskStop",
78
- "tasks",
79
85
  // watchCompletion:push 后登记「业务终态订阅」,部署结束时服务端唤醒父对话
80
86
  // (等待期间 0 轮询 0 token)。与代码工作流同链路(push → CI → 通知),随
81
87
  // 「代码执行」能力包走。
@@ -274,7 +280,10 @@ function resolveEffectiveEnabledPacks(args) {
274
280
  ];
275
281
  }
276
282
  var SYSTEM_BUILTIN_SKILL_PACK_IDS = SYSTEM_AGENT_CAPABILITY_IDS;
277
- var DEFAULT_MOUNT_SYSTEM_CAPABILITY_IDS = ["agent-orchestration"];
283
+ var DEFAULT_MOUNT_SYSTEM_CAPABILITY_IDS = [
284
+ "agent-orchestration",
285
+ "conversation-todo"
286
+ ];
278
287
  function getDefaultSystemCapabilityTools() {
279
288
  const ids = DEFAULT_MOUNT_SYSTEM_CAPABILITY_IDS;
280
289
  return SYSTEM_AGENT_CAPABILITY_PACKS.filter((pack) => ids.includes(pack.id)).flatMap((pack) => [...pack.tools]);
@@ -367,6 +376,160 @@ function applyDefaultWebToolPacks(args) {
367
376
  return [...enhanced];
368
377
  }
369
378
 
379
+ // packages/ai/skills/builtinObjectSkills.ts
380
+ var BUILTIN_OBJECT_SKILL_IDS = {
381
+ table: "builtin-table-skill-v1",
382
+ doc: "builtin-doc-skill-v1",
383
+ // key 改名为 code-style(它本来就叫「编码风格技能」,"code" 这个名字是它抢的,
384
+ // 与「代码执行」能力包撞车)。**id 值保持不变**——skillId 与页面 key 都从它派生,
385
+ // 改了会让存量 agent.references 失配。
386
+ "code-style": "builtin-code-skill-v1",
387
+ image: "builtin-image-skill-v1",
388
+ file: "builtin-file-skill-v1",
389
+ pagebuilder: "builtin-pagebuilder-skill-v1"
390
+ };
391
+ var SKILL_DEFS = {
392
+ doc: {
393
+ id: BUILTIN_OBJECT_SKILL_IDS.doc,
394
+ name: "\u6587\u6863\u7F16\u8F91\u6280\u80FD",
395
+ description: "\u63D0\u4F9B\u6587\u6863\u8BFB\u53D6\u4E0E\u66F4\u65B0\u80FD\u529B\uFF0C\u4F9B\u6587\u6863\u52A9\u624B\u4F7F\u7528\u3002\u89E6\u53D1\u8BCD\uFF1A\u6587\u6863\u3001\u6DA6\u8272\u3001\u6539\u5199\u3001\u7EED\u5199\u3001\u6392\u7248\u3001\u6587\u7AE0\u3001document\u3001polish\u3002",
396
+ toolNames: ["readDoc", "updateDoc"],
397
+ promptPatch: [
398
+ "\u6587\u6863\u7F16\u8F91\u6307\u5357\uFF1A",
399
+ "1. \u4FEE\u6539\u524D\u5148 readDoc \u8BFB\u53D6\u5F53\u524D\u6587\u6863\u771F\u503C\uFF0C\u518D\u57FA\u4E8E\u73B0\u6709\u5185\u5BB9\u7528 updateDoc \u505A\u5B9A\u70B9\u589E\u91CF\u7F16\u8F91\u3002",
400
+ "2. \u4E0D\u8981\u8131\u79BB\u73B0\u6709\u5185\u5BB9\u7A7A\u60F3\u91CD\u5199\uFF1B\u6DA6\u8272/\u6539\u5199/\u7EED\u5199\u90FD\u5E94\u4FDD\u7559\u7528\u6237\u539F\u6709\u7684\u7ED3\u6784\u4E0E\u4E8B\u5B9E\u3002"
401
+ ].join("\n")
402
+ },
403
+ table: {
404
+ id: BUILTIN_OBJECT_SKILL_IDS.table,
405
+ name: "\u8868\u683C\u7F16\u8F91\u6280\u80FD",
406
+ description: "\u63D0\u4F9B\u8868\u683C\u521B\u5EFA\u3001\u67E5\u8BE2\u3001\u65B0\u589E\u3001\u66F4\u65B0\u4E0E\u5220\u9664\u80FD\u529B\uFF0C\u4F9B\u8868\u683C\u52A9\u624B\u4F7F\u7528\u3002\u89E6\u53D1\u8BCD\uFF1A\u8868\u683C\u3001\u5EFA\u8868\u3001\u65B0\u589E\u4E00\u884C\u3001\u8BB0\u5F55\u3001\u5B57\u6BB5\u3001table\u3001spreadsheet\u3001csv\u3002",
407
+ // 与 app-builder 能力包共用同一份清单(TOOL_PACKS.TABLE)。
408
+ // 以前两边各抄一份,改一个忘另一个就会静默不同步。
409
+ toolNames: [...TOOL_PACKS.TABLE],
410
+ promptPatch: [
411
+ "\u8868\u683C\u64CD\u4F5C\u6307\u5357\uFF1A",
412
+ "1. \u7528\u6237\u8981\u65B0\u5EFA\u8868\u683C\u65F6\uFF0C\u8C03\u7528 createTable\uFF0C\u5E76\u4ECE\u9700\u6C42\u63A8\u65AD\u5408\u7406\u7684\u5B57\u6BB5\u8BBE\u8BA1\uFF08\u5B57\u6BB5\u540D\u3001\u7C7B\u578B\u3001\u5FC5\u586B\u3001\u53EF\u9009\u503C\uFF09\u3002",
413
+ "2. \u65B0\u589E\u8BB0\u5F55\u5FC5\u987B\u8C03\u7528 addTableRow / addTableRows\uFF0C\u4E0D\u8981\u53EA\u5728\u56DE\u7B54\u91CC\u53E3\u5934\u63CF\u8FF0\u3002",
414
+ "3. addTableRow \u7684 values \u662F\u5BF9\u8C61\uFF0Ckey \u5FC5\u987B\u7528\u5B57\u6BB5\u540D\uFF08name\uFF0C\u4E0D\u662F\u663E\u793A\u540D label\uFF09\uFF1B\u5C3D\u91CF\u4ECE\u7528\u6237\u81EA\u7136\u8BED\u8A00\u63A8\u65AD\u5E76\u586B\u6EE1\u76F8\u5173\u5B57\u6BB5\uFF0C\u5FC5\u586B\u5B57\u6BB5\u5C24\u5176\u6CE8\u610F\uFF1B\u7528\u6237\u6CA1\u63D0\u5230\u7684\u5B57\u6BB5\u53EF\u7528\u7A7A\u5B57\u7B26\u4E32\u6216 null \u5360\u4F4D\uFF1B\u7EDD\u4E0D\u8981\u4F20\u7A7A\u5BF9\u8C61 {}\u3002",
415
+ "4. \u66F4\u65B0\u6216\u5220\u9664\u524D\uFF0C\u5148\u7528 queryTableRows \u786E\u8BA4\u76EE\u6807\u884C\uFF0C\u5FC5\u8981\u65F6\u5411\u7528\u6237\u786E\u8BA4\u76EE\u6807\u884C/\u5B57\u6BB5\u3002"
416
+ ].join("\n")
417
+ },
418
+ "code-style": {
419
+ id: BUILTIN_OBJECT_SKILL_IDS["code-style"],
420
+ name: "\u7F16\u7801\u98CE\u683C\u6280\u80FD",
421
+ description: "\u63D0\u4F9B\u7F16\u7801\u89C4\u8303\u4E0E\u98CE\u683C\u7EA6\u675F\uFF0C\u4F9B\u4EE3\u7801\u4EFB\u52A1\u4F7F\u7528\u3002\u89E6\u53D1\u8BCD\uFF1A\u4EE3\u7801\u3001\u7F16\u7801\u3001\u91CD\u6784\u3001\u4FEEbug\u3001code\u3001refactor\u3001bugfix\u3001coding-style\u3002",
422
+ toolNames: [],
423
+ promptPatch: [
424
+ "\u7F16\u7801\u98CE\u683C\u4E0E\u89C4\u8303\u6307\u5357\uFF1A",
425
+ "1. \u6587\u4EF6\u62C6\u5206\uFF1A\u4F18\u5148\u62C6\u5206\u4E3A\u591A\u6587\u4EF6\uFF08MANY SMALL FILES\uFF09\uFF0C\u5178\u578B\u957F\u5EA6 200-400 \u884C\uFF0C\u5355\u6587\u4EF6\u6700\u591A 800 \u884C\uFF08800 max\uFF09\u3002",
426
+ "2. \u51FD\u6570\u4E0E\u5D4C\u5957\uFF1A\u51FD\u6570\u4FDD\u6301\u77ED\u5C0F\uFF08<50 lines\uFF09\uFF0C\u4F18\u5148\u4F7F\u7528 early returns \u63D0\u524D\u8FD4\u56DE\uFF0C\u5D4C\u5957\u5C42\u7EA7\u4E0D\u8D85\u8FC7 4 \u5C42\uFF08nesting \u22644\uFF09\u3002",
427
+ "3. \u4E0D\u53EF\u53D8\u6027\uFF08immutability\uFF09\uFF1A\u4FDD\u6301\u6570\u636E\u4E0D\u53EF\u53D8\uFF0C\u4E0D\u8981\u539F\u5730 mutate \u73B0\u6709\u5BF9\u8C61\u6216\u6570\u7EC4\uFF0C\u5FC5\u987B\u8FD4\u56DE\u65B0\u5BF9\u8C61/\u6570\u7EC4\u3002",
428
+ "4. \u9519\u8BEF\u5904\u7406\u4E0E\u6821\u9A8C\uFF1A\u663E\u5F0F\u5904\u7406\u6240\u6709\u9519\u8BEF\uFF08explicit error handling\uFF09\uFF0C\u5728\u7CFB\u7EDF\u8FB9\u754C\u5B8C\u6210\u6821\u9A8C\uFF08validate at boundaries\uFF09\uFF0C\u4E0D\u9690\u5F0F\u541E\u9519\u3002",
429
+ "5. \u5B8C\u6210\u524D Checklist\uFF1A\u5B8C\u6210\u524D\u81EA\u67E5\u51FD\u6570/\u6587\u4EF6\u5C3A\u5BF8\u3001\u5D4C\u5957\u6DF1\u5EA6\u3001\u4E0D\u53EF\u53D8\u6027\u4E0E\u8FB9\u754C\u9519\u8BEF\u5904\u7406\u3002"
430
+ ].join("\n")
431
+ },
432
+ image: {
433
+ id: BUILTIN_OBJECT_SKILL_IDS.image,
434
+ name: "\u56FE\u7247\u5206\u6790\u6280\u80FD",
435
+ description: "\u63D0\u4F9B\u56FE\u7247\u7406\u89E3\u3001\u63CF\u8FF0\u4E0E\u6574\u7406\u5EFA\u8BAE\u80FD\u529B\uFF0C\u4F9B\u56FE\u7247\u52A9\u624B\u4F7F\u7528\u3002\u89E6\u53D1\u8BCD\uFF1A\u56FE\u7247\u3001\u56FE\u50CF\u3001\u5206\u6790\u3001\u63CF\u8FF0\u3001\u547D\u540D\u3001\u6574\u7406\u3001image\u3001photo\u3001picture\u3002",
436
+ toolNames: [],
437
+ promptPatch: [
438
+ "\u56FE\u7247\u5206\u6790\u6307\u5357\uFF1A",
439
+ "1. \u5F53\u524D\u9636\u6BB5\u91CD\u70B9\u56F4\u7ED5\u5F53\u524D\u56FE\u7247\u505A\u7406\u89E3\u3001\u63CF\u8FF0\u3001\u63D0\u70BC\u91CD\u70B9\u3001\u7ED9\u51FA\u547D\u540D/\u6574\u7406\u5EFA\u8BAE\u548C\u540E\u7EED\u5904\u7406\u5EFA\u8BAE\u3002",
440
+ "2. \u4E0D\u8981\u5047\u88C5\u5DF2\u7ECF\u5177\u5907\u590D\u6742\u56FE\u7247\u7F16\u8F91\u80FD\u529B\uFF1B\u5982\u679C\u7528\u6237\u8981\u66F4\u5F3A\u64CD\u4F5C\uFF0C\u660E\u786E\u8BF4\u660E\u5F53\u524D\u53EF\u505A\u7684\u662F\u5206\u6790\u4E0E\u7EC4\u7EC7\u3002"
441
+ ].join("\n")
442
+ },
443
+ file: {
444
+ id: BUILTIN_OBJECT_SKILL_IDS.file,
445
+ name: "\u6587\u4EF6\u5904\u7406\u6280\u80FD",
446
+ description: "\u63D0\u4F9B\u6587\u4EF6\u7406\u89E3\u3001\u6574\u7406\u4E0E\u5904\u7406\u5EFA\u8BAE\u80FD\u529B\uFF0C\u4F9B\u6587\u4EF6\u52A9\u624B\u4F7F\u7528\u3002\u89E6\u53D1\u8BCD\uFF1A\u6587\u4EF6\u3001\u89E3\u6790\u3001\u63D0\u53D6\u3001\u6574\u7406\u3001\u5904\u7406\u3001file\u3001document\u3001pdf\u3002",
447
+ toolNames: [],
448
+ promptPatch: [
449
+ "\u6587\u4EF6\u5904\u7406\u6307\u5357\uFF1A",
450
+ "1. \u5F53\u524D\u9636\u6BB5\u91CD\u70B9\u56F4\u7ED5\u5F53\u524D\u6587\u4EF6\u63D0\u4F9B\u7406\u89E3\u3001\u6574\u7406\u3001\u63D0\u53D6\u4E0E\u540E\u7EED\u5904\u7406\u5EFA\u8BAE\u3002",
451
+ "2. \u4E0D\u8981\u5047\u88C5\u5DF2\u7ECF\u5B8C\u6210\u6587\u4EF6\u5185\u5BB9\u89E3\u6790\uFF1B\u5FC5\u8981\u65F6\u660E\u786E\u544A\u8BC9\u7528\u6237\u5F53\u524D\u66F4\u591A\u662F\u5360\u4F4D\u578B\u5DE5\u4F5C\u6D41\u5165\u53E3\uFF0C\u7B49\u5F85\u540E\u7EED\u63A5\u5165\u66F4\u5B8C\u6574\u7684\u6587\u4EF6\u5904\u7406\u80FD\u529B\u3002"
452
+ ].join("\n")
453
+ },
454
+ pagebuilder: {
455
+ id: BUILTIN_OBJECT_SKILL_IDS.pagebuilder,
456
+ name: "\u52A8\u6001\u4EA4\u4E92\u7EC4\u4EF6\u751F\u6210\u6280\u80FD",
457
+ description: "\u628A\u4E00\u53E5\u8BDD\u9700\u6C42\u53D8\u6210\u53EF\u770B\u7684\u4EA4\u4E92\u9875\u9762\u3001\u62A5\u544A\u3001\u770B\u677F\u3001\u4E3B\u9875\u3001\u6559\u7A0B\u3001\u5BF9\u6BD4\u9875\u6216\u8BA1\u5212\u9875\u3002\u4EFB\u4F55 agent \u5728\u9700\u8981\u8F93\u51FA\u53EF\u4EA4\u4E92\u53EF\u89C6\u5316\u6D88\u606F\u65F6\u6309\u9700\u52A0\u8F7D\u3002\u89E6\u53D1\u8BCD\uFF1A\u9875\u9762\u3001\u62A5\u8868\u3001\u770B\u677F\u3001\u65E5\u62A5\u3001\u5468\u62A5\u3001\u4E3B\u9875\u3001\u6559\u7A0B\u3001\u5BF9\u6BD4\u9875\u3001\u8BA1\u5212\u9875\u3001\u53EF\u89C6\u5316\u3001\u4EA4\u4E92\u9875\u9762\u3001\u4EEA\u8868\u76D8\u3001dashboard\u3001report\u3001page\u3001landing\u3002",
458
+ toolNames: [],
459
+ promptPatch: [
460
+ "\u52A8\u6001\u4EA4\u4E92\u7EC4\u4EF6\u751F\u6210\u89C4\u5219\uFF1A",
461
+ "\u4F60\u73B0\u5728\u7684\u4EFB\u52A1\u662F\u628A\u7528\u6237\u9700\u6C42\u53D8\u6210\u4E00\u4E2A\u53EF\u770B\u7684\u4EA4\u4E92\u9875\u9762/\u62A5\u544A/\u770B\u677F/\u4E3B\u9875/\u6559\u7A0B/\u5BF9\u6BD4\u9875/\u8BA1\u5212\u9875\u3002\u7528\u6237\u770B\u4E0D\u5230\u6E90\u7801\uFF0C\u53EA\u4F1A\u770B\u5230\u9875\u9762\u7ED3\u679C\u3002",
462
+ "",
463
+ "\u7EDD\u5BF9\u89C4\u5219\uFF1A",
464
+ "1. \u53EA\u8F93\u51FA\u4E00\u4E2A Markdown \u4EE3\u7801\u5757\uFF0C\u4EE3\u7801\u5757\u8BED\u8A00\u5FC5\u987B\u662F tsx preview\u3002",
465
+ "2. \u4EE3\u7801\u5757\u5916\u4E0D\u8981\u8F93\u51FA\u89E3\u91CA\u3001\u524D\u8A00\u3001\u7ED3\u5C3E\u3001\u6E05\u5355\u6216\u601D\u8003\u8FC7\u7A0B\u3002",
466
+ "3. \u4EE3\u7801\u5FC5\u987B\u5B9A\u4E49\u9876\u5C42 function Example()\uFF0C\u4E0D\u8981\u8C03\u7528 render()\uFF0C\u4E0D\u8981 export default\u3002",
467
+ "4. \u4E0D\u8981\u5199 import\u3002\u8FD0\u884C\u73AF\u5883\u5DF2\u7ECF\u63D0\u4F9B React\u3001useState\u3001useEffect\u3001useMemo\u3001useCallback\u3001useRef\u3001ReactECharts\u3001react-icons/lu \u7684\u56FE\u6807\u7EC4\u4EF6\u3002",
468
+ "5. \u6240\u6709\u4EA4\u4E92\u5FC5\u987B\u5728 Example \u5185\u7528 React state \u5B9E\u73B0\uFF0C\u6309\u94AE\u3001Tab\u3001FAQ\u3001\u6B65\u9AA4\u5207\u6362\u3001\u7B5B\u9009\u90FD\u8981\u771F\u7684\u53EF\u70B9\u51FB\u3002",
469
+ "6. \u4E3A\u4E3B\u8981\u533A\u5757\u52A0 data-artifact-section \u5C5E\u6027\u3002",
470
+ "7. \u751F\u6210\u7ED3\u679C\u4F18\u5148\u662F\u4E00\u9875\u5B8C\u6574\u53EF\u7528\u7684\u9875\u9762\uFF0C\u4E0D\u8981\u53EA\u505A\u5B64\u7ACB\u5361\u7247\u6216\u4E00\u4E2A\u56FE\u3002",
471
+ "8. \u5982\u679C\u7528\u6237\u6CA1\u6709\u7ED9\u5177\u4F53\u6570\u636E\uFF0C\u53EF\u4EE5\u751F\u6210\u5408\u7406\u7684\u793A\u4F8B\u6570\u636E\uFF0C\u4F46\u8981\u4FDD\u6301\u4E1A\u52A1\u53EF\u4FE1\u3002",
472
+ "",
473
+ "\u5404\u7C7B\u9875\u9762\u9ED8\u8BA4\u7ED3\u6784\uFF1A",
474
+ "- \u4FE1\u606F\u5C55\u793A\u7C7B\uFF08\u4E3B\u9875\u3001\u4EA7\u54C1\u4ECB\u7ECD\u3001\u670D\u52A1\u9875\u3001\u4F5C\u54C1\u96C6\u3001\u6D3B\u52A8\u9875\uFF09\uFF1A\u9996\u5C4F\u5B9A\u4F4D\u3001\u670D\u52A1/\u80FD\u529B\u5361\u7247\u3001\u4EE3\u8868\u6210\u679C\u5361\u7247\u3001\u53EF\u4FE1\u80CC\u4E66\u3001\u8054\u7CFB\u6216\u884C\u52A8\u6309\u94AE\u3002",
475
+ "- \u6570\u636E\u5206\u6790\u7C7B\uFF08\u65E5\u62A5\u3001\u5468\u62A5\u3001\u770B\u677F\u3001\u8D28\u68C0\u3001\u9500\u552E\u6F0F\u6597\u3001\u53CD\u9988\u5206\u6790\uFF09\uFF1A\u9876\u90E8\u6458\u8981\u3001\u6838\u5FC3\u6307\u6807\u3001\u8D8B\u52BF\u56FE\u3001\u660E\u7EC6\u8868\u683C\u6216\u5F02\u5E38\u5217\u8868\u3001\u4E0B\u4E00\u6B65\u5EFA\u8BAE\u3002",
476
+ "- \u6D41\u7A0B\u8BF4\u660E\u7C7B\uFF08\u6559\u7A0B\u3001SOP\u3001onboarding\u3001\u64CD\u4F5C\u6307\u5357\u3001\u8BFE\u7A0B\u6B65\u9AA4\uFF09\uFF1A\u5B66\u4E60\u76EE\u6807\u3001\u6B65\u9AA4\u5361\u7247\u3001\u793A\u4F8B/\u7EC3\u4E60\u3001\u68C0\u67E5\u6E05\u5355\u6216\u4E0B\u4E00\u6B65\u6309\u94AE\u3002",
477
+ "- \u51B3\u7B56\u6BD4\u8F83\u7C7B\uFF08\u65B9\u6848\u5BF9\u6BD4\u3001\u4EA7\u54C1\u9009\u578B\u3001\u7ADE\u54C1\u5206\u6790\u3001\u91C7\u8D2D\u5EFA\u8BAE\uFF09\uFF1A\u5BF9\u6BD4\u7EF4\u5EA6\u8868\u683C\u3001\u4F18\u7F3A\u70B9\u5361\u7247\u3001\u8BC4\u5206\u6216\u9002\u914D\u5EA6\u3001\u63A8\u8350\u7ED3\u8BBA\u3002",
478
+ "- \u8BA1\u5212\u6392\u5E03\u7C7B\uFF08\u9879\u76EE\u8BA1\u5212\u3001\u5B66\u4E60\u8BA1\u5212\u3001\u5185\u5BB9\u65E5\u5386\u3001\u53D1\u5E03\u8282\u594F\uFF09\uFF1A\u9636\u6BB5\u76EE\u6807\u3001\u4EFB\u52A1\u5217\u8868\u3001\u4F18\u5148\u7EA7\u3001\u91CC\u7A0B\u7891\u5361\u7247\u3001\u98CE\u9669\u63D0\u9192\u3002",
479
+ "- \u6DF7\u5408\u6C47\u62A5\u7C7B\uFF08\u878D\u8D44\u9875\u3001\u9879\u76EE\u6982\u89C8\u3001\u590D\u6742\u6C47\u62A5\uFF09\uFF1A\u81F3\u5C11\u5305\u542B MetricCard\u3001Chart\u3001Table \u548C Section\uFF0C\u4E0D\u8981\u53EA\u505A\u5355\u4E00\u5217\u8868\u3002",
480
+ "- \u6559\u7A0B/\u6B65\u9AA4/FAQ/Tab/\u7B5B\u9009/\u9875\u9762\u5185\u8DF3\u8F6C\u5FC5\u987B\u505A\u6210\u771F\u5B9E\u53EF\u70B9\u51FB\u4EA4\u4E92\u3002",
481
+ "",
482
+ "\u4EE3\u7801\u98CE\u683C\uFF1A",
483
+ "1. \u4F7F\u7528\u5185\u8054 style \u6216\u7EC4\u4EF6\u5185 <style>\uFF0C\u4E0D\u8981\u4F9D\u8D56 Tailwind \u6216\u5916\u90E8 CSS\u3002",
484
+ "2. \u9875\u9762\u5BBD\u5EA6\u3001\u95F4\u8DDD\u3001\u5B57\u53F7\u8981\u9002\u5408\u6D88\u606F\u5185\u9884\u89C8\uFF1B\u4E0D\u8981\u7528\u8FC7\u5927\u7684\u843D\u5730\u9875 hero\u3002",
485
+ "3. \u989C\u8272\u8981\u514B\u5236\uFF0C\u6709\u5C42\u6B21\uFF1B\u907F\u514D\u6574\u9875\u5355\u4E00\u84DD\u7D2B\u6E10\u53D8\u3002",
486
+ "4. \u8868\u683C\u3001\u56FE\u8868\u3001\u5361\u7247\u3001\u6309\u94AE\u90FD\u8981\u6709 hover/active/focus \u7684\u7EC6\u8282\u3002",
487
+ "5. \u5FC5\u8981\u65F6\u4F7F\u7528 ReactECharts \u753B\u56FE\uFF1B\u7B80\u5355\u67F1\u72B6\u56FE\u4E5F\u53EF\u4EE5\u7528 div \u5B9E\u73B0\uFF0C\u4FDD\u8BC1\u7A33\u5B9A\u3002",
488
+ "6. \u4EE3\u7801\u5C3D\u91CF\u77ED\u800C\u5B8C\u6574\uFF0C\u9ED8\u8BA4 150-260 \u884C\u4EE5\u5185\u3002",
489
+ "",
490
+ "\u8F93\u51FA\u683C\u5F0F\u793A\u4F8B\uFF1A",
491
+ "```tsx preview",
492
+ "function Example() {",
493
+ " const [tab, setTab] = useState('overview');",
494
+ " return <main><section data-artifact-section>...</section></main>;",
495
+ "}",
496
+ "```"
497
+ ].join("\n")
498
+ }
499
+ };
500
+ function buildBuiltinObjectSkillConfig(kind) {
501
+ const def = SKILL_DEFS[kind];
502
+ return {
503
+ version: "0.1",
504
+ kind: "skill",
505
+ id: def.id,
506
+ name: def.name,
507
+ description: def.description,
508
+ triggerMode: "explicit",
509
+ toolNames: def.toolNames,
510
+ promptPatch: def.promptPatch
511
+ };
512
+ }
513
+ function buildBuiltinObjectSkillDbKey(kind, userId) {
514
+ return createKey("page" /* DOC */, userId, BUILTIN_OBJECT_SKILL_IDS[kind]);
515
+ }
516
+ function buildBuiltinObjectSkillReference(kind, userId) {
517
+ return {
518
+ dbKey: buildBuiltinObjectSkillDbKey(kind, userId),
519
+ title: SKILL_DEFS[kind].name,
520
+ type: "instruction"
521
+ };
522
+ }
523
+ function buildBuiltinObjectSkillPageContent(kind) {
524
+ const def = SKILL_DEFS[kind];
525
+ return buildSkillDocMarkdown({
526
+ body: `# ${def.name}
527
+
528
+ ${def.description}`,
529
+ skillConfig: buildBuiltinObjectSkillConfig(kind)
530
+ });
531
+ }
532
+
370
533
  export {
371
534
  buildCodeWorkDiscipline,
372
535
  TOOL_PACKS,
@@ -380,5 +543,10 @@ export {
380
543
  FORCED_TOOLS,
381
544
  applyDisabledTools,
382
545
  addDefaultLightWebToolsForConfiguredAgents,
383
- applyDefaultWebToolPacks
546
+ applyDefaultWebToolPacks,
547
+ BUILTIN_OBJECT_SKILL_IDS,
548
+ buildBuiltinObjectSkillConfig,
549
+ buildBuiltinObjectSkillDbKey,
550
+ buildBuiltinObjectSkillReference,
551
+ buildBuiltinObjectSkillPageContent
384
552
  };
@@ -405,6 +405,8 @@ function createRunActivityTracker(runId, deps = {}, options = {}) {
405
405
  const fs = deps.fs ?? nodeFs;
406
406
  const now = deps.now ?? (() => /* @__PURE__ */ new Date());
407
407
  const minWriteIntervalMs = options.minWriteIntervalMs ?? DEFAULT_ACTIVITY_WRITE_INTERVAL_MS;
408
+ const keepAlive = options.keepAlive ?? true;
409
+ let disposed = false;
408
410
  let lastEventAt = now().toISOString();
409
411
  let inFlight = null;
410
412
  const counters = { llmCalls: 0, toolCalls: 0, fileEdits: 0 };
@@ -425,7 +427,9 @@ function createRunActivityTracker(runId, deps = {}, options = {}) {
425
427
  };
426
428
  }
427
429
  function doWrite() {
430
+ if (disposed) return;
428
431
  writeTimer = void 0;
432
+ const attemptAt = now().getTime();
429
433
  withRunRecordLock(
430
434
  runId,
431
435
  deps,
@@ -438,7 +442,10 @@ function createRunActivityTracker(runId, deps = {}, options = {}) {
438
442
  },
439
443
  { strict: true }
440
444
  );
445
+ if (lastWriteAt < attemptAt) lastWriteAt = attemptAt;
446
+ if (keepAlive) scheduleWrite();
441
447
  }
448
+ scheduleWrite();
442
449
  function scheduleWrite() {
443
450
  if (writeTimer !== void 0) return;
444
451
  const elapsed = now().getTime() - lastWriteAt;
@@ -446,6 +453,7 @@ function createRunActivityTracker(runId, deps = {}, options = {}) {
446
453
  writeTimer = setTimeout(doWrite, delay);
447
454
  }
448
455
  function onLoopEvent(event) {
456
+ if (disposed) return;
449
457
  lastEventAt = new Date(event.atMs).toISOString();
450
458
  switch (event.kind) {
451
459
  case "llm-start":
@@ -480,6 +488,7 @@ function createRunActivityTracker(runId, deps = {}, options = {}) {
480
488
  doWrite();
481
489
  }
482
490
  function dispose() {
491
+ disposed = true;
483
492
  if (writeTimer !== void 0) {
484
493
  clearTimeout(writeTimer);
485
494
  writeTimer = void 0;
@@ -817,10 +826,13 @@ async function spawnLocalBackgroundRun(input, deps = {}) {
817
826
  });
818
827
  proc.unref();
819
828
  if (typeof proc.pid === "number") {
820
- record.pid = proc.pid;
821
829
  const processStartedAt = (deps.getProcessStartTime ?? defaultGetProcessStartTime)(proc.pid);
822
- if (processStartedAt) record.processStartedAt = processStartedAt.toISOString();
823
- writeRunRecord(record, deps);
830
+ withRunRecordLock(runId, deps, () => {
831
+ const latest = readRunRecord(runId, deps) ?? record;
832
+ latest.pid = proc.pid;
833
+ if (processStartedAt) latest.processStartedAt = processStartedAt.toISOString();
834
+ writeRunRecord(latest, deps);
835
+ });
824
836
  }
825
837
  return { runId, pid: proc.pid, logPath, queuePath, batchId };
826
838
  }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generatePkcePair,
3
3
  startCallbackServer
4
- } from "./chunk-GBPZKFYK.js";
4
+ } from "./chunk-Z33ARZCP.js";
5
5
  import {
6
6
  toErrorMessage
7
7
  } from "./chunk-HNMXYYJR.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DEFAULT_AGENT_BASE_POLICY,
3
3
  DEFAULT_USER_PREFERENCE_PROFILE
4
- } from "./chunk-XWNRAIUL.js";
4
+ } from "./chunk-PH5J5VUY.js";
5
5
 
6
6
  // packages/ai/policy/runtimePolicy.ts
7
7
  var clampLevel = (value, fallback) => {
@@ -1,25 +1,61 @@
1
1
  import {
2
2
  normalizeTimingMs
3
- } from "./chunk-E36HZARC.js";
3
+ } from "./chunk-VHJLQHPQ.js";
4
4
  import {
5
5
  MODEL_LOOKUP_MAP
6
- } from "./chunk-UJ63UXGE.js";
6
+ } from "./chunk-VRLI2WNW.js";
7
7
  import {
8
8
  ALL_MODELS
9
- } from "./chunk-NG4UT4K4.js";
9
+ } from "./chunk-WS22FPWT.js";
10
+ import {
11
+ asTrimmedNonEmptyStringArray
12
+ } from "./chunk-VMFTFOWF.js";
10
13
  import {
11
14
  asOptionalFiniteNumber
12
15
  } from "./chunk-WWC7I6TA.js";
13
- import {
14
- asTrimmedNonEmptyStringArray
15
- } from "./chunk-I42VC5KR.js";
16
16
  import {
17
17
  BUILTIN_NOLO_AGENT_KEY
18
- } from "./chunk-5J7W2VWW.js";
18
+ } from "./chunk-TL6L5XUT.js";
19
19
  import {
20
20
  asOptionalTrimmedString
21
21
  } from "./chunk-G3SUCT4W.js";
22
22
 
23
+ // packages/ai/token/cacheTokenFields.ts
24
+ var finiteTokenCount = (value) => {
25
+ if (typeof value !== "number" || !Number.isFinite(value)) return void 0;
26
+ return Math.max(0, Math.floor(value));
27
+ };
28
+ var readNested = (value, path) => {
29
+ let cursor = value;
30
+ for (const key of path) {
31
+ if (!cursor || typeof cursor !== "object") return void 0;
32
+ cursor = cursor[key];
33
+ }
34
+ return finiteTokenCount(cursor);
35
+ };
36
+ var firstPositive = (usage, readers) => {
37
+ for (const read of readers) {
38
+ const value = read(usage);
39
+ if (value !== void 0 && value !== 0) return value;
40
+ }
41
+ return 0;
42
+ };
43
+ var topLevel = (field) => (usage) => {
44
+ if (!usage || typeof usage !== "object") return void 0;
45
+ return finiteTokenCount(usage[field]);
46
+ };
47
+ var nested = (path) => (usage) => readNested(usage, path);
48
+ var readCacheReadInputTokens = (usage) => firstPositive(usage, [
49
+ topLevel("cache_read_input_tokens"),
50
+ topLevel("prompt_cache_hit_tokens"),
51
+ nested(["input_tokens_details", "cached_tokens"]),
52
+ nested(["prompt_tokens_details", "cached_tokens"])
53
+ ]);
54
+ var readCacheCreationInputTokens = (usage) => firstPositive(usage, [
55
+ topLevel("cache_creation_input_tokens"),
56
+ topLevel("prompt_cache_miss_tokens")
57
+ ]);
58
+
23
59
  // packages/ai/llm/getModelContextWindow.ts
24
60
  var DEFAULT_CONTEXT_WINDOW = 256e3;
25
61
  var QWEN_3_6_CONTEXT_WINDOW = 262144;
@@ -157,42 +193,6 @@ var getModelInfo = (modelName) => {
157
193
  return map.get(modelName) || map.get(modelName.toLowerCase()) || null;
158
194
  };
159
195
 
160
- // packages/ai/token/cacheTokenFields.ts
161
- var finiteTokenCount = (value) => {
162
- if (typeof value !== "number" || !Number.isFinite(value)) return void 0;
163
- return Math.max(0, Math.floor(value));
164
- };
165
- var readNested = (value, path) => {
166
- let cursor = value;
167
- for (const key of path) {
168
- if (!cursor || typeof cursor !== "object") return void 0;
169
- cursor = cursor[key];
170
- }
171
- return finiteTokenCount(cursor);
172
- };
173
- var firstPositive = (usage, readers) => {
174
- for (const read of readers) {
175
- const value = read(usage);
176
- if (value !== void 0 && value !== 0) return value;
177
- }
178
- return 0;
179
- };
180
- var topLevel = (field) => (usage) => {
181
- if (!usage || typeof usage !== "object") return void 0;
182
- return finiteTokenCount(usage[field]);
183
- };
184
- var nested = (path) => (usage) => readNested(usage, path);
185
- var readCacheReadInputTokens = (usage) => firstPositive(usage, [
186
- topLevel("cache_read_input_tokens"),
187
- topLevel("prompt_cache_hit_tokens"),
188
- nested(["input_tokens_details", "cached_tokens"]),
189
- nested(["prompt_tokens_details", "cached_tokens"])
190
- ]);
191
- var readCacheCreationInputTokens = (usage) => firstPositive(usage, [
192
- topLevel("cache_creation_input_tokens"),
193
- topLevel("prompt_cache_miss_tokens")
194
- ]);
195
-
196
196
  // packages/ai/token/normalizeUsage.ts
197
197
  var normalizeStringArray = (value) => {
198
198
  if (!Array.isArray(value)) return void 0;