nolo-cli 0.76.0 → 0.77.0

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 (86) hide show
  1. package/{_executeModel-I3XRMAJ2.js → _executeModel-G6BRN2BO.js} +21 -21
  2. package/{agentDeleteCommand-DCTG26JW.js → agentDeleteCommand-C5JTDBIX.js} +15 -14
  3. package/{agentEmailCommands-MRRHBLDQ.js → agentEmailCommands-AYSYNUSH.js} +28 -27
  4. package/{agentListCommands-CUE46CSP.js → agentListCommands-CVFL3P3D.js} +17 -16
  5. package/{agentMachineCommands-FYDEKBIO.js → agentMachineCommands-2EPX7IYC.js} +15 -14
  6. package/{agentProviderCommands-X3FA6BUM.js → agentProviderCommands-EHR3PV2V.js} +1 -1
  7. package/{agentRecordCommands-P2MSNP7R.js → agentRecordCommands-DPZVHOOA.js} +27 -26
  8. package/{agentRunCommand-YJOW3VB3.js → agentRunCommand-BE53VNNN.js} +27 -26
  9. package/{agentRuntimeLocal-T43UNWAY.js → agentRuntimeLocal-BPN5IOFT.js} +13 -12
  10. package/{agentSlice-7GDS5Q2S.js → agentSlice-PYJFXGZL.js} +1 -1
  11. package/{appDeleteCommands-YBKY3VEI.js → appDeleteCommands-TREMNXCA.js} +16 -15
  12. package/{appDeployCommands-EBC76HO4.js → appDeployCommands-7FYCMERT.js} +16 -15
  13. package/{appDeployStatusCommands-WXRC5KEK.js → appDeployStatusCommands-7LAYH7IX.js} +16 -15
  14. package/{appGetCommands-VZZQEDOV.js → appGetCommands-BONTQ2XH.js} +16 -15
  15. package/{appListCommands-HYSPVQ77.js → appListCommands-BYIELWUL.js} +16 -15
  16. package/{authCommand-E4GDVKMW.js → authCommand-J5C7GS33.js} +9 -8
  17. package/{builtinSkillRegistry-5SYVTS6Z.js → builtinSkillRegistry-YITVDLWG.js} +1 -1
  18. package/{chatQueueReduxAdapter-CXEWIDFZ.js → chatQueueReduxAdapter-PIOXZBGH.js} +8 -8
  19. package/{chunk-UO66QKGI.js → chunk-2F4VYGFW.js} +2 -2
  20. package/{chunk-3T4PRBHV.js → chunk-3DZIWHJ6.js} +1 -1
  21. package/{chunk-IO7DYRPW.js → chunk-4PAFEM6V.js} +3 -3
  22. package/{chunk-BNMZ7QUV.js → chunk-5DAMTON3.js} +1 -1
  23. package/chunk-5ZUL4CUO.js +10 -0
  24. package/{chunk-WSOMSDQB.js → chunk-6HCLDVEI.js} +35 -1
  25. package/{chunk-GRJTR4PU.js → chunk-6LWO3QQS.js} +2 -2
  26. package/{chunk-JC2WQS66.js → chunk-7TEU3WX2.js} +17 -13
  27. package/{chunk-L2VNQQ7M.js → chunk-ACFF7U3F.js} +273 -13
  28. package/{chunk-MFW4BGJS.js → chunk-AGX5TE5W.js} +1 -1
  29. package/{chunk-UWMQ6FPM.js → chunk-ASGDO77C.js} +118 -1
  30. package/{chunk-4FRNB4ZG.js → chunk-D4TJCP3V.js} +3 -3
  31. package/{chunk-TGRQUFLU.js → chunk-DNQPPRHY.js} +1 -1
  32. package/{chunk-NVHJWYUO.js → chunk-DQD4PYQY.js} +13 -13
  33. package/{chunk-KO7QCXLL.js → chunk-FSISQCCB.js} +13 -13
  34. package/{chunk-VQD6BTML.js → chunk-FWGPT6VI.js} +3 -3
  35. package/{chunk-Y2IFJ7VM.js → chunk-HLRYI5XO.js} +1 -1
  36. package/{chunk-IMDA4FW4.js → chunk-IEILL33V.js} +48 -37
  37. package/{chunk-6RCZYDDC.js → chunk-JRFQPOPS.js} +3 -3
  38. package/{chunk-P3AS5IPM.js → chunk-JT7FRJP5.js} +1 -0
  39. package/{chunk-X77EN2BJ.js → chunk-K7M3MWCE.js} +2 -2
  40. package/{chunk-VARZWSKW.js → chunk-LGSXBNWH.js} +1 -1
  41. package/{chunk-EVBFYPDC.js → chunk-MC4XLIJ7.js} +6 -2
  42. package/{chunk-DS3SQTDT.js → chunk-MJHQ3NRV.js} +1 -1
  43. package/{chunk-W7PGACND.js → chunk-MRT4KARW.js} +7 -7
  44. package/{chunk-T4F2EQGN.js → chunk-ND2J3NRB.js} +2 -2
  45. package/{chunk-LEYH5NOH.js → chunk-PGO7O65Q.js} +3 -3
  46. package/{chunk-FMODTASJ.js → chunk-Q5FJJ6XI.js} +1 -7
  47. package/{chunk-Q246OUG5.js → chunk-RHB6OCZS.js} +3 -3
  48. package/{chunk-ZSG2AQU4.js → chunk-RJ3TDODF.js} +50 -11
  49. package/{chunk-EXWOCYCR.js → chunk-TIJK4PBP.js} +9 -4
  50. package/{chunk-S6STPUMG.js → chunk-UDK3ZSMN.js} +1 -1
  51. package/{chunk-ZKGIAM7I.js → chunk-UQ45IHLM.js} +1 -1
  52. package/{chunk-VW3YGKWR.js → chunk-UQYEVBMM.js} +89 -15
  53. package/{chunk-Q4KVAB6L.js → chunk-UUVQJZ75.js} +26 -7
  54. package/{chunk-OCL2YCAU.js → chunk-VEJ4BOQV.js} +38 -38
  55. package/{chunk-6H7GN3JL.js → chunk-VRLI2WNW.js} +10 -1
  56. package/{chunk-23RQKXP6.js → chunk-WS22FPWT.js} +1 -1
  57. package/{chunk-AYT2OKNM.js → chunk-XIYOAH3S.js} +2 -2
  58. package/{chunk-ZIHJVHFH.js → chunk-Z33ARZCP.js} +1 -1
  59. package/{contentThunks-Y2ACIFDB.js → contentThunks-RYZTYVUV.js} +9 -9
  60. package/{createAgentAutomationAction-TNE3QMJR.js → createAgentAutomationAction-GUBB2LWY.js} +9 -9
  61. package/{createDialogAction-BMGHBTQB.js → createDialogAction-577E6FB2.js} +10 -10
  62. package/{createPageAction-FFNIZPIS.js → createPageAction-4CNYIRJ5.js} +9 -9
  63. package/{dialogCommands-3JC3BIXC.js → dialogCommands-U4RQIRKK.js} +16 -15
  64. package/{dialogSlice-3E7Z7HZV.js → dialogSlice-YXMORK5T.js} +8 -8
  65. package/{docCreateCommands-6LNQLCTA.js → docCreateCommands-AXXATGCL.js} +15 -14
  66. package/{docDeleteCommands-ZJOAPWZS.js → docDeleteCommands-CRPIFYFA.js} +16 -15
  67. package/{docReadCommands-LJTRSBG6.js → docReadCommands-4IMZXFDR.js} +15 -14
  68. package/{docStore-R47ABXBB.js → docStore-3U5FBN2O.js} +1 -1
  69. package/{docUpdateCommands-7P3QF3N2.js → docUpdateCommands-RRPRZXCE.js} +15 -14
  70. package/{getPricing-TV6ZB7ES.js → getPricing-F2C65RIX.js} +3 -3
  71. package/{handleSendMessageAction-FFYOGXAO.js → handleSendMessageAction-BQIRKHC6.js} +8 -8
  72. package/index.js +50 -50
  73. package/{machineCommands-FN5GGQV3.js → machineCommands-RNBADNTE.js} +26 -25
  74. package/{machineWsRunDispatch-H47IA7ZT.js → machineWsRunDispatch-7J6WNF57.js} +26 -25
  75. package/{models-CMXFDBQH.js → models-WW7VFNXB.js} +2 -2
  76. package/package.json +1 -1
  77. package/{providerPresetApply-D2GGHPI7.js → providerPresetApply-SAJAK7C3.js} +6 -6
  78. package/{providerRegistry-MU6C4ABD.js → providerRegistry-COD57OVY.js} +6 -6
  79. package/{readlineWorkspace-2RP77YDN.js → readlineWorkspace-ZO2W3N4U.js} +30 -29
  80. package/{runAgentClientLoop-CEBV5UPD.js → runAgentClientLoop-KJZ7DK6D.js} +19 -19
  81. package/{spaceCommands-JHT4ALCQ.js → spaceCommands-VZRYKVWZ.js} +15 -14
  82. package/{streamAgentChatTurn-SFCZP4GY.js → streamAgentChatTurn-L3SO4N2R.js} +26 -24
  83. package/{tools-K3YOTESV.js → tools-GRV74JPO.js} +16 -16
  84. package/tuiSummaryLlmCaller-ATDKMGI5.js +127 -0
  85. package/{updateDialogTitleAction-CSPKYQRO.js → updateDialogTitleAction-KRUWX66L.js} +29 -12
  86. package/tuiSummaryLlmCaller-T2OA5ZVB.js +0 -116
@@ -3,12 +3,14 @@ var BASE_BUILTIN_DIALOG_LLM_CONFIG = {
3
3
  apiSource: "platform",
4
4
  useServerProxy: true
5
5
  };
6
+ var BUILTIN_DIALOG_LLM_FALLBACK_MODEL = "deepseek-flash";
7
+ var BUILTIN_DIALOG_LLM_CHAT_FALLBACK_MODEL = "glm-5-3-flash";
6
8
  var BUILTIN_TITLE_LLM_CONFIG = {
7
9
  ...BASE_BUILTIN_DIALOG_LLM_CONFIG,
8
10
  provider: "nolo",
9
11
  id: "builtin-dialog-title-llm",
10
12
  name: "Builtin Dialog Title LLM",
11
- model: "glm-5-3-flash",
13
+ model: "mimo-v2.6-flash",
12
14
  prompt: "You are a title generator for chat history. \u4F60\u53EA\u505A\u4E00\u4EF6\u4E8B\uFF1A\u6839\u636E\u5BF9\u8BDD\u5185\u5BB9\u8F93\u51FA\u6700\u7EC8\u6807\u9898\u3002\u786C\u6027\u89C4\u5219\uFF1A1) \u53EA\u8F93\u51FA\u6807\u9898\u8FD9\u4E00\u884C\uFF1B\u4E25\u7981\u8F93\u51FA\u63A8\u7406\u3001\u5206\u6790\u3001\u6B65\u9AA4\u3001\u89E3\u91CA\u3001\u524D\u8A00\u3001\u540E\u8BB0\u3001\u7FFB\u8BD1\u3001\u81F4\u6B49\u6216\u4EFB\u4F55\u989D\u5916\u8BF4\u660E\u30022) \u4E0D\u8981\u56DE\u7B54\u7528\u6237\u8BF7\u6C42\uFF0C\u4E0D\u8981\u5199\u6458\u8981\uFF0C\u53EA\u7ED9\u6807\u9898\u7ED3\u679C\u30023) \u6807\u9898\u5C3D\u91CF\u77ED\uFF1A\u901A\u5E38 2-5 \u4E2A\u8BCD\uFF0C\u82F1\u6587\u4E0D\u8D85\u8FC7 6 \u4E2A\u8BCD\u30024) \u4F7F\u7528\u5BF9\u8BDD\u4E3B\u8BED\u8A00\uFF1B\u6DF7\u5408\u8BED\u8A00\u65F6\u4F18\u5148\u7528\u6237\u4E3B\u8981\u8BED\u8A00\u30025) \u4F18\u5148\u590D\u7528\u5BF9\u8BDD\u4E2D\u7684\u5177\u4F53\u4E3B\u9898\u8BCD\uFF0C\u907F\u514D issue\u3001help\u3001discussion\u3001analysis\u3001update \u8FD9\u7C7B\u7A7A\u6CDB\u8BCD\u30026) \u5FFD\u7565 tool JSON\u3001\u51FD\u6570\u540D\u3001branch label\u3001agent \u540D\u3001\u7CFB\u7EDF\u6307\u4EE4\u548C\u7F16\u6392\u75D5\u8FF9\uFF08\u5982 GPT\u3001Claude\u3001Gemini\uFF09\uFF1B\u6807\u9898\u8981\u843D\u5728\u7528\u6237\u771F\u6B63\u8BA8\u8BBA\u7684\u5BF9\u8C61\u6216\u51B3\u7B56\u4E0A\u30027) \u66F4\u504F\u597D\u201C\u5BF9\u8C61 + \u52A8\u4F5C/\u5224\u65AD\u201D\u7684\u77ED\u6807\u9898\uFF0C\u4F8B\u5982\u201CAI \u90AE\u4EF6\u52A9\u624B\u53D6\u820D\u201D\u201C\u4E1C\u4EAC\u56DB\u65E5\u6162\u65C5\u884C\u201D\u201C\u91CD\u590D\u6263\u8D39\u9000\u6B3E\u201D\u30028) \u7EAF\u6587\u672C\uFF0C\u4E0D\u8981\u9879\u76EE\u7B26\u53F7\u3001\u7F16\u53F7\u3001markdown\u3001emoji\u3002\u6700\u7EC8\u53EA\u8FD4\u56DE\u6807\u9898\u6587\u672C\u3002 Output only the title text."
13
15
  };
14
16
  var BUILTIN_SUMMARY_LLM_CONFIG = {
@@ -16,13 +18,15 @@ var BUILTIN_SUMMARY_LLM_CONFIG = {
16
18
  provider: "nolo",
17
19
  id: "builtin-dialog-summary-llm",
18
20
  name: "Builtin Dialog Summary LLM",
19
- model: "glm-5-3-flash",
21
+ model: "mimo-v2.6-flash",
20
22
  // @deprecated 用 COMPACTION_SUMMARY_SYSTEM_PROMPT(packages/ai/context/compactionShared.ts)。
21
23
  // 生产代码已全部迁移;此旧两段式 prompt 仅被 scripts/probes/dialog 探针脚本使用,待探针迁移后删除。
22
24
  prompt: "\u4F60\u662F\u4E00\u4E2A\u4E13\u4E1A\u7684\u5BF9\u8BDD\u8BB0\u5FC6\u52A9\u7406\u3002\u8BF7\u57FA\u4E8E\u3010\u73B0\u6709\u8BB0\u5FC6\u3011\u548C\u3010\u65B0\u589E\u5BF9\u8BDD\u3011\uFF0C\u8F93\u51FA\u4E00\u4EFD\u66F4\u65B0\u540E\u7684\u5BF9\u8BDD\u8BB0\u5FC6\u6863\u6848\u3002\u4E25\u683C\u53EA\u8F93\u51FA\u4E0B\u9762\u4E24\u90E8\u5206\uFF0C\u6807\u9898\u5FC5\u987B\u5B8C\u5168\u4E00\u81F4\uFF1A\n\u5173\u952E\u4E8B\u5B9E\u6863\u6848\n- ...\n\u5BF9\u8BDD\u5267\u60C5\u6458\u8981\n- ...\n\u8981\u6C42\uFF1A1) \u4F7F\u7528\u5BF9\u8BDD\u4E3B\u8BED\u8A00\uFF1B\u6DF7\u5408\u8BED\u8A00\u65F6\u4F18\u5148\u8DDF\u968F\u7528\u6237\u4E3B\u8981\u8BED\u8A00\uFF0C\u4E13\u6709\u540D\u8BCD\u4FDD\u7559\u539F\u6587\u30022) \u5173\u952E\u4E8B\u5B9E\u6863\u6848\u53EA\u4FDD\u7559\u4E4B\u540E\u7EE7\u7EED\u5BF9\u8BDD\u4ECD\u6709\u4EF7\u503C\u7684\u4FE1\u606F\uFF0C\u4F8B\u5982\u7528\u6237\u504F\u597D\u3001\u76EE\u6807\u3001\u7EA6\u675F\u3001\u6280\u672F\u6808\u3001\u786E\u5B9A\u7684\u6587\u4EF6\u540D/\u53D8\u91CF\u540D\u3001\u6838\u5FC3\u51B3\u7B56\u3001\u5F85\u529E\u4E8B\u9879\u30023) \u5BF9\u8BDD\u5267\u60C5\u6458\u8981\u5148\u6781\u7B80\u6982\u62EC\u65E7\u4E0A\u4E0B\u6587\uFF0C\u518D\u66F4\u8BE6\u7EC6\u8BB0\u5F55\u6700\u8FD1\u65B0\u589E\u7684\u8FDB\u5C55\u3001\u5206\u6B67\u3001\u7ED3\u8BBA\u548C\u4E0B\u4E00\u6B65\u30024) \u5FFD\u7565\u5BD2\u6684\u3001\u91CD\u590D\u5C1D\u8BD5\u3001\u5DF2\u653E\u5F03\u65B9\u6848\u548C\u65E0\u4EF7\u503C\u5E9F\u8BDD\u30025) \u4E0D\u8981\u7F16\u9020\u672A\u51FA\u73B0\u7684\u4FE1\u606F\uFF0C\u4E0D\u8981\u8F93\u51FA\u5F00\u573A\u767D\u3001\u7ED3\u675F\u8BED\u3001markdown \u4EE3\u7801\u5757\u6216\u989D\u5916\u7AE0\u8282\u3002"
23
25
  };
24
26
 
25
27
  export {
28
+ BUILTIN_DIALOG_LLM_FALLBACK_MODEL,
29
+ BUILTIN_DIALOG_LLM_CHAT_FALLBACK_MODEL,
26
30
  BUILTIN_TITLE_LLM_CONFIG,
27
31
  BUILTIN_SUMMARY_LLM_CONFIG
28
32
  };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  trimTrailingSlash
3
- } from "./chunk-X77EN2BJ.js";
3
+ } from "./chunk-K7M3MWCE.js";
4
4
  import {
5
5
  toErrorMessage
6
6
  } from "./chunk-HNMXYYJR.js";
@@ -5,14 +5,14 @@ import {
5
5
  inlineImageUrlsForCustomProvider,
6
6
  prepareTools,
7
7
  shouldInlineImageUrlsForAgent
8
- } from "./chunk-VQD6BTML.js";
8
+ } from "./chunk-FWGPT6VI.js";
9
9
  import {
10
10
  INVALID_TOOL_ARGS_REPLACEMENT,
11
11
  buildInvalidToolCallSelfHealResult,
12
12
  parseToolCallArguments,
13
13
  performFetchRequest,
14
14
  sanitizeOutboundMessages
15
- } from "./chunk-JC2WQS66.js";
15
+ } from "./chunk-7TEU3WX2.js";
16
16
  import {
17
17
  createSSEParser,
18
18
  createToolRunId,
@@ -23,7 +23,7 @@ import {
23
23
  toolRunSetPending,
24
24
  toolRunStarted,
25
25
  toolRunSucceeded
26
- } from "./chunk-NVHJWYUO.js";
26
+ } from "./chunk-DQD4PYQY.js";
27
27
  import {
28
28
  getPublicImageAgentMode
29
29
  } from "./chunk-VIDPVFP3.js";
@@ -35,10 +35,10 @@ import {
35
35
  messageStreamEnd,
36
36
  messageStreaming,
37
37
  updateToolMessage
38
- } from "./chunk-L2VNQQ7M.js";
38
+ } from "./chunk-ACFF7U3F.js";
39
39
  import {
40
40
  streamAgentChatTurn
41
- } from "./chunk-4FRNB4ZG.js";
41
+ } from "./chunk-D4TJCP3V.js";
42
42
  import {
43
43
  addActiveController,
44
44
  removeActiveController,
@@ -56,10 +56,10 @@ import {
56
56
  import {
57
57
  EMPTY_ASSISTANT_REPAIR_PROMPT,
58
58
  getModelInfo
59
- } from "./chunk-OCL2YCAU.js";
59
+ } from "./chunk-VEJ4BOQV.js";
60
60
  import {
61
61
  getApiEndpoint
62
- } from "./chunk-6H7GN3JL.js";
62
+ } from "./chunk-VRLI2WNW.js";
63
63
  import {
64
64
  toErrorMessage
65
65
  } from "./chunk-HNMXYYJR.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  getModelConfig
3
- } from "./chunk-6H7GN3JL.js";
3
+ } from "./chunk-VRLI2WNW.js";
4
4
  import {
5
5
  isPlatformHostedDeepseekModel,
6
6
  isPlatformHostedOpenAIImageModel,
7
7
  resolvePlatformHostedRouting
8
- } from "./chunk-UWMQ6FPM.js";
8
+ } from "./chunk-ASGDO77C.js";
9
9
  import {
10
10
  asTrimmedLowercaseString
11
11
  } from "./chunk-QSJ3HFEF.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  clearCliLocalRuntimePreparedAgentCache
3
- } from "./chunk-IMDA4FW4.js";
3
+ } from "./chunk-IEILL33V.js";
4
4
  import {
5
5
  getReadableCliDb
6
6
  } from "./chunk-LS2ZANRJ.js";
@@ -12,7 +12,7 @@ import {
12
12
  resolveAgentRecordFromHybridStore,
13
13
  sanitizeAgentRecordForCliOutput,
14
14
  writeAgentRecord
15
- } from "./chunk-Y2IFJ7VM.js";
15
+ } from "./chunk-HLRYI5XO.js";
16
16
  import {
17
17
  resolveCliAgentKeyInput
18
18
  } from "./chunk-SPAQ4PVV.js";
@@ -212,7 +212,7 @@ async function runAgentCreateCommand(args, deps = {}) {
212
212
  clearCliLocalRuntimePreparedAgentCache();
213
213
  let verifyResult;
214
214
  if (parsed.verify) {
215
- const { verifyCustomProvider } = await import("./agentProviderCommands-X3FA6BUM.js");
215
+ const { verifyCustomProvider } = await import("./agentProviderCommands-EHR3PV2V.js");
216
216
  const rec = built.nextRecord;
217
217
  verifyResult = await verifyCustomProvider({
218
218
  providerUrl: rec.customProviderUrl,
@@ -93,17 +93,11 @@ function buildDevinOAuthCredential(token, now = Date.now()) {
93
93
  obtainedAt: now
94
94
  };
95
95
  }
96
- function isDevinOAuthAgent(agent) {
97
- const ref = agent.apiKeyRef?.trim().toLowerCase();
98
- const prov = agent.provider?.trim().toLowerCase();
99
- return ref === "devin" || prov === "devin";
100
- }
101
96
 
102
97
  export {
103
98
  DEVIN_CONNECT_URL,
104
99
  buildDevinAuthUrl,
105
100
  extractDevinToken,
106
101
  detectLocalDevinCredentials,
107
- buildDevinOAuthCredential,
108
- isDevinOAuthAgent
102
+ buildDevinOAuthCredential
109
103
  };
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createCliLocalRuntimeAdapter,
3
3
  summarizeEndpoint
4
- } from "./chunk-IMDA4FW4.js";
4
+ } from "./chunk-IEILL33V.js";
5
5
  import {
6
6
  clipMultilineText
7
- } from "./chunk-NVHJWYUO.js";
7
+ } from "./chunk-DQD4PYQY.js";
8
8
  import {
9
9
  runLocalAgentTurn
10
- } from "./chunk-VW3YGKWR.js";
10
+ } from "./chunk-UQYEVBMM.js";
11
11
  import {
12
12
  applyToolSurfaceConstraints
13
13
  } from "./chunk-OKCTLCKS.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ANTIGRAVITY_CLOUD_CODE_BASE_URL
3
- } from "./chunk-DS3SQTDT.js";
3
+ } from "./chunk-MJHQ3NRV.js";
4
4
  import {
5
5
  kimiCodeModels,
6
6
  moonshotModels,
@@ -9,13 +9,13 @@ import {
9
9
  qwenTokenPlanModels,
10
10
  stepfunModels,
11
11
  stepfunStepPlanModels
12
- } from "./chunk-6H7GN3JL.js";
12
+ } from "./chunk-VRLI2WNW.js";
13
13
  import {
14
14
  PLATFORM_HOSTED_DEEPSEEK_FLASH_OFF_PEAK_PRICE,
15
15
  PLATFORM_HOSTED_DEEPSEEK_FLASH_PEAK_PRICE,
16
16
  PLATFORM_HOSTED_DEEPSEEK_PRO_OFF_PEAK_PRICE,
17
17
  PLATFORM_HOSTED_DEEPSEEK_PRO_PEAK_PRICE
18
- } from "./chunk-UWMQ6FPM.js";
18
+ } from "./chunk-ASGDO77C.js";
19
19
 
20
20
  // packages/integrations/commandcode/models.ts
21
21
  var commandCodeModels = [
@@ -252,6 +252,15 @@ var STEPFUN_MODEL_OPTIONS = stepfunModels.map((m, i) => ({
252
252
  hasVision: m.hasVision,
253
253
  ...i === 0 ? { recommended: true } : {}
254
254
  }));
255
+ var MIMO_MODEL_OPTIONS = [
256
+ { id: "mimo-v2.6-flash", label: "MiMo V2.6 Flash", hasVision: true, recommended: true },
257
+ { id: "mimo-v2.6-pro", label: "MiMo V2.6 Pro", hasVision: true },
258
+ {
259
+ id: "mimo-v2.6-pro-ultraspeed",
260
+ label: "MiMo V2.6 Pro Ultraspeed",
261
+ hasVision: true
262
+ }
263
+ ];
255
264
  var STEPFUN_STEP_PLAN_MODEL_OPTIONS = stepfunStepPlanModels.map((m, i) => ({
256
265
  id: m.name,
257
266
  label: m.displayName ?? m.name,
@@ -354,21 +363,36 @@ var SUBSCRIPTION_OAUTH_PROVIDERS = [
354
363
  kind: "oauth",
355
364
  id: "devin-oauth",
356
365
  label: "Devin Pro",
357
- description: "Devin Subscription (Free SWE-2)",
366
+ description: "Devin Pro $20/\u6708\uFF1A\u65E5/\u5468 quota \u8986\u76D6 sessions/CLI/Desktop\uFF0C\u8D85\u989D\u6309 API \u4EF7\u8D2D credits\uFF1BSWE-2 \u9650\u65F6\u514D\u8D39\u81F3 2026-10-10",
358
367
  apiKeyRef: "devin",
359
368
  provider: "devin",
360
369
  defaultModel: "swe-2-max",
361
370
  defaultReasoningEffort: "high",
362
371
  modelOptions: [
363
- { id: "swe-2-max", label: "SWE-2 Max (Unlimited Free with $20 Pro)", hasVision: true, recommended: true },
372
+ // selector 全部来自上游 live catalog(GetCliModelConfigs)并逐個实测可调。
373
+ // 旧列表 9 个选项里 6 个是上游不存在的死 id(swe-2 / swe-1.7 /
374
+ // claude-3.7-sonnet / gpt-5.2 / gpt-4o / claude-sonnet-4.6 均
375
+ // permission_denied),已替换。注意 catalog selector 是连字符写法,
376
+ // 点号/裸写法上游不接受。
377
+ { id: "swe-2-max", label: "SWE-2 Max", hasVision: true, recommended: true },
364
378
  { id: "swe-2-high", label: "SWE-2 High", hasVision: true },
365
379
  { id: "swe-2-medium", label: "SWE-2 Medium", hasVision: true },
366
- { id: "swe-2", label: "SWE-2", hasVision: true },
367
- { id: "swe-1.7", label: "SWE-1.7", hasVision: true },
368
- { id: "claude-3.7-sonnet", label: "Claude 3.7 Sonnet", hasVision: true },
369
- { id: "claude-sonnet-4.6", label: "Claude Sonnet 4.6", hasVision: true },
370
- { id: "gpt-5.2", label: "GPT-5.2", hasVision: true },
371
- { id: "gpt-4o", label: "GPT-4o", hasVision: true }
380
+ { id: "swe-1-7", label: "SWE-1.7 Max", hasVision: true },
381
+ { id: "swe-1-7-lightning", label: "SWE-1.7 Lightning Max", hasVision: true },
382
+ { id: "swe-1-6-fast", label: "SWE-1.6 Fast", hasVision: true },
383
+ { id: "claude-opus-5-medium", label: "Claude Opus 5 Medium", hasVision: true },
384
+ { id: "claude-fable-5-1-medium", label: "Claude Fable 5.1 Medium", hasVision: true },
385
+ { id: "claude-sonnet-5-medium", label: "Claude Sonnet 5 Medium", hasVision: true },
386
+ { id: "claude-sonnet-4-6", label: "Claude Sonnet 4.6", hasVision: true },
387
+ { id: "gpt-6-astra-medium", label: "GPT-6 Astra Medium", hasVision: true },
388
+ { id: "gpt-5-6-sol-medium", label: "GPT-5.6 Sol Medium", hasVision: true },
389
+ { id: "gpt-5-6-luna-medium", label: "GPT-5.6 Luna Medium", hasVision: true },
390
+ { id: "MODEL_GPT_5_2_MEDIUM", label: "GPT-5.2 Medium", hasVision: true },
391
+ { id: "gemini-3-8-flash-medium", label: "Gemini 3.8 Flash Medium", hasVision: true },
392
+ { id: "gemini-3-1-pro-high", label: "Gemini 3.1 Pro High", hasVision: true },
393
+ { id: "kimi-k3-high", label: "Kimi K3 High", hasVision: true },
394
+ { id: "glm-5-3-high", label: "GLM-5.3 High", hasVision: false },
395
+ { id: "glm-5-3-flash-high", label: "GLM-5.3 Flash High", hasVision: true }
372
396
  ]
373
397
  }
374
398
  ];
@@ -565,6 +589,21 @@ var CUSTOM_API_KEY_TEMPLATES = [
565
589
  commercialKind: "api",
566
590
  accessVariant: "metered_key"
567
591
  },
592
+ // 小米 MiMo 官方按量计费 API(api.xiaomimimo.com):与上面的「MiMo Token Plan」
593
+ // 订阅模板是两条不同的通道(key 不通用);本条是用户自带 Key 的 metered 通道,
594
+ // 与平台托管(provider=nolo + mimo-v2.6-*,平台积分计费)并存、互不影响。
595
+ {
596
+ kind: "api_key_template",
597
+ id: "mimo-api",
598
+ label: "MiMo API \u7528\u91CF\u8BA1\u8D39",
599
+ description: "\u5C0F\u7C73 MiMo \u5B98\u65B9 API\uFF08OpenAI \u517C\u5BB9\uFF0C\u6309\u91CF\u8BA1\u8D39\uFF1BKey \u987B\u4E3A\u6309\u91CF\u8BA1\u8D39 Key\uFF0C\u975E Token Plan \u8BA2\u9605 Key\uFF09",
600
+ provider: "mimo",
601
+ baseUrl: "https://api.xiaomimimo.com/v1",
602
+ defaultModel: "mimo-v2.6-flash",
603
+ modelOptions: MIMO_MODEL_OPTIONS,
604
+ commercialKind: "api",
605
+ accessVariant: "metered_key"
606
+ },
568
607
  {
569
608
  kind: "api_key_template",
570
609
  id: "kimi-api",
@@ -35,15 +35,16 @@ import {
35
35
  resolvePlatformAuthToken,
36
36
  resolvePlatformServerUrl,
37
37
  resolveProviderTransportDecision
38
- } from "./chunk-X77EN2BJ.js";
38
+ } from "./chunk-K7M3MWCE.js";
39
39
  import {
40
40
  clipCompactText,
41
41
  isMeaningfulChatCompletionOutput,
42
42
  isMeaningfulResponsesOutput
43
43
  } from "./chunk-KT6LENVP.js";
44
44
  import {
45
- NOLO_CLIENT_VERSION_HEADER
46
- } from "./chunk-UWMQ6FPM.js";
45
+ NOLO_CLIENT_VERSION_HEADER,
46
+ isPlatformMimoProviderModel
47
+ } from "./chunk-ASGDO77C.js";
47
48
  import {
48
49
  isRecord
49
50
  } from "./chunk-KUG52IAP.js";
@@ -465,7 +466,11 @@ function isAbortOrTimeoutError(error) {
465
466
  }
466
467
  var CHAT_PROXY_PATH = "/api/v1/chat";
467
468
  function shouldDisableThinking(providerConfig) {
468
- return providerConfig.provider.toLowerCase() === "mimo" || /xiaomimimo\.com/i.test(providerConfig.endpoint);
469
+ return providerConfig.provider.toLowerCase() === "mimo" || /xiaomimimo\.com/i.test(providerConfig.endpoint) || // 平台托管 MiMo(provider=nolo + mimo-v2.6-*):endpoint 通常已解析成
470
+ // api.xiaomimimo.com/...(上面的正则已命中),但 transport=direct 时
471
+ // endpoint 是 nolo 服务器地址——模型 id 判据保证两跳都关掉 thinking
472
+ // (上游 thinking 默认 enabled)。
473
+ isPlatformMimoProviderModel(providerConfig.provider, providerConfig.model);
469
474
  }
470
475
  function isResponsesEndpoint(endpoint) {
471
476
  return /\/responses$/i.test(endpoint.trim());
@@ -9,7 +9,7 @@ import {
9
9
  initReactI18next,
10
10
  instance,
11
11
  toast
12
- } from "./chunk-L2VNQQ7M.js";
12
+ } from "./chunk-ACFF7U3F.js";
13
13
  import {
14
14
  require_date_fns
15
15
  } from "./chunk-M76ECQRD.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  requireTokenUser
3
- } from "./chunk-MFW4BGJS.js";
3
+ } from "./chunk-AGX5TE5W.js";
4
4
  import {
5
5
  resolveServerUrl
6
6
  } from "./chunk-A7GB5UGH.js";
@@ -8,18 +8,19 @@ import {
8
8
  readSseFrames,
9
9
  streamSseDataValues,
10
10
  throwIfChatCompletionStreamFailed
11
- } from "./chunk-EXWOCYCR.js";
11
+ } from "./chunk-TIJK4PBP.js";
12
12
  import {
13
13
  DEVIN_CONNECT_URL
14
- } from "./chunk-FMODTASJ.js";
14
+ } from "./chunk-Q5FJJ6XI.js";
15
15
  import {
16
16
  clipToolText,
17
17
  hasImageInRuntimeMessages,
18
+ resolveAgentContextWindow,
18
19
  resolveAgentImageInputSupport,
19
20
  resolveHistoricalToolContentCap,
20
21
  resolveToolOutputProfile,
21
22
  stripImagePartsFromMessages
22
- } from "./chunk-WSOMSDQB.js";
23
+ } from "./chunk-6HCLDVEI.js";
23
24
  import {
24
25
  downgradeUnparsableToolCalls,
25
26
  hasParsableObjectArguments,
@@ -43,7 +44,7 @@ import {
43
44
  requiresBareImageUrl,
44
45
  resolveToolGuidedSections,
45
46
  toBareImageUrlMessages
46
- } from "./chunk-Q4KVAB6L.js";
47
+ } from "./chunk-UUVQJZ75.js";
47
48
  import {
48
49
  convertMessagesToResponsesInput,
49
50
  extractReasoningFromResponseOutput,
@@ -72,11 +73,11 @@ import {
72
73
  getAntigravityUserAgent,
73
74
  readAntigravityProjectId,
74
75
  resolveAntigravityCloudCodeBaseUrl
75
- } from "./chunk-DS3SQTDT.js";
76
+ } from "./chunk-MJHQ3NRV.js";
76
77
  import {
77
78
  buildProviderAuthHeaders,
78
79
  buildProviderExecutionPlan
79
- } from "./chunk-X77EN2BJ.js";
80
+ } from "./chunk-K7M3MWCE.js";
80
81
  import {
81
82
  buildDialogFallbackTitleFromUserInput
82
83
  } from "./chunk-2MBTWINN.js";
@@ -90,7 +91,7 @@ import {
90
91
  resolveEmptyAssistantFallbackMessage,
91
92
  resolveEmptyAssistantOutcome,
92
93
  resolveTruncatedReasoningTailLog
93
- } from "./chunk-OCL2YCAU.js";
94
+ } from "./chunk-VEJ4BOQV.js";
94
95
  import {
95
96
  COMPACTION_SUMMARY_SCHEMA_VERSION,
96
97
  COMPACTION_SUMMARY_SYSTEM_PROMPT,
@@ -12202,7 +12203,7 @@ function summarizeToolArguments(toolName, rawArgs) {
12202
12203
  }
12203
12204
 
12204
12205
  // packages/agent-runtime/leafFinalHandoff.ts
12205
- var LEAF_FINAL_HANDOFF_INSTRUCTIONS = `Leaf subtask final: return only the result, blockers/findings, and minimal evidence the parent needs. Do not narrate your process or restate the task. Keep success minimal (a one-line result is enough); on failure include the blocker, severity when relevant, and an evidence reference (file:line, test command, commit, artifact, or run/dialog). If the task explicitly requires a long-form deliverable (document, translation, dataset, code, or other artifact), provide that deliverable in full and keep only the handoff around it concise.`;
12206
+ var LEAF_FINAL_HANDOFF_INSTRUCTIONS = `Leaf subtask final: return only the result, blockers/findings, and minimal evidence the parent needs. Do not narrate your process or restate the task. Keep success minimal (a one-line result is enough); on failure include the blocker, severity when relevant, and an evidence reference (file:line, test command, commit, artifact, or run/dialog). If the task explicitly requires a long-form deliverable (document, translation, dataset, code, or other artifact), provide that deliverable in full and keep only the handoff around it concise. During execution, follow the brief as given: only when new evidence would materially change the goal, risk, irreversibility, or DoD should you surface it as a blocker/finding in the handoff \u2014 do not silently expand scope or re-litigate the settled direction.`;
12206
12207
 
12207
12208
  // packages/agent-runtime/contextBlockScope.ts
12208
12209
  var isContextBlockScope = (value) => {
@@ -13047,10 +13048,10 @@ var TOOL_METADATA_KEYS = [
13047
13048
  "pasteId",
13048
13049
  "source"
13049
13050
  ];
13050
- function trimHistoryToContextBudget(history, model) {
13051
+ function trimHistoryToContextBudget(history, model, contextWindowOverride) {
13051
13052
  if (history.length === 0) return { history, droppedCount: 0 };
13052
13053
  const { rawMessageBudget } = planContextUsage({
13053
- contextWindow: getModelContextWindow(model ?? ""),
13054
+ contextWindow: contextWindowOverride ?? getModelContextWindow(model ?? ""),
13054
13055
  summaryTokens: 0,
13055
13056
  // localLoop 没有 web 端的负载分档器;medium 是中性默认值,
13056
13057
  // 不为了省几个 token 在这里复制一份分类逻辑。
@@ -13541,7 +13542,7 @@ async function runLocalAgentTurn(input) {
13541
13542
  }
13542
13543
  return resolvedProvider;
13543
13544
  };
13544
- const contextWindow = getModelContextWindow(agentConfig.model ?? "");
13545
+ const contextWindow = resolveAgentContextWindow(agentConfig);
13545
13546
  const compressionTriggerRatio = resolveCompressionTriggerRatio(contextWindow);
13546
13547
  let realContextUsagePercent;
13547
13548
  if (input.continueDialogId && typeof input.adapter.loadLastContextUsage === "function") {
@@ -13583,6 +13584,7 @@ async function runLocalAgentTurn(input) {
13583
13584
  history,
13584
13585
  model: agentConfig.model,
13585
13586
  resolveProvider: resolveProviderOnce,
13587
+ contextWindow,
13586
13588
  realContextUsagePercent
13587
13589
  });
13588
13590
  history = compacted.history;
@@ -13592,7 +13594,7 @@ async function runLocalAgentTurn(input) {
13592
13594
  console.warn("[localLoop] auto-compaction unexpected error:", error);
13593
13595
  }
13594
13596
  loopTimingMark("maybeAutoCompactLocalHistory", 0);
13595
- const trimmedHistory = trimHistoryToContextBudget(history, agentConfig.model);
13597
+ const trimmedHistory = trimHistoryToContextBudget(history, agentConfig.model, contextWindow);
13596
13598
  if (trimmedHistory.droppedCount > 0) {
13597
13599
  history = trimmedHistory.history;
13598
13600
  }
@@ -13679,6 +13681,7 @@ async function runLocalAgentTurn(input) {
13679
13681
  ],
13680
13682
  model: agentConfig.model,
13681
13683
  resolveProvider: resolveProviderOnce,
13684
+ contextWindow,
13682
13685
  realContextUsagePercent: ratio
13683
13686
  });
13684
13687
  if (compacted.usage) {
@@ -19353,7 +19356,7 @@ function buildLoadSkillExecutor(args2) {
19353
19356
  const { resolveSkillByName } = await import("./skillDiscovery-CYUCJMAG.js");
19354
19357
  const resolved = resolveSkillByName(args2.cwd, name);
19355
19358
  if (!resolved) {
19356
- const { resolveBuiltinSkillByName } = await import("./builtinSkillRegistry-5SYVTS6Z.js");
19359
+ const { resolveBuiltinSkillByName } = await import("./builtinSkillRegistry-YITVDLWG.js");
19357
19360
  const builtin = resolveBuiltinSkillByName(name);
19358
19361
  if (builtin) {
19359
19362
  return {
@@ -20332,6 +20335,62 @@ function parseDevinConnectFrames(buffer3) {
20332
20335
  remainder: buffer3.subarray(offset)
20333
20336
  };
20334
20337
  }
20338
+ function parseDevinMetadataUsage(metaBytes) {
20339
+ let prompt = 0;
20340
+ let completion;
20341
+ let cacheRead = 0;
20342
+ let cacheWrite = 0;
20343
+ let sawAny = false;
20344
+ let offset = 0;
20345
+ while (offset < metaBytes.length) {
20346
+ let tag = 0;
20347
+ let shift = 0;
20348
+ while (offset < metaBytes.length) {
20349
+ const b = metaBytes[offset++];
20350
+ tag |= (b & 127) << shift;
20351
+ if (!(b & 128)) break;
20352
+ shift += 7;
20353
+ }
20354
+ const fieldNum = tag >>> 3;
20355
+ const wireType = tag & 7;
20356
+ if (wireType === 0) {
20357
+ let val = 0;
20358
+ let s = 0;
20359
+ while (offset < metaBytes.length) {
20360
+ const b = metaBytes[offset++];
20361
+ val |= (b & 127) << s;
20362
+ if (!(b & 128)) break;
20363
+ s += 7;
20364
+ }
20365
+ if (fieldNum === 2) {
20366
+ prompt = val;
20367
+ sawAny = true;
20368
+ } else if (fieldNum === 3) {
20369
+ completion = val;
20370
+ sawAny = true;
20371
+ } else if (fieldNum === 4) {
20372
+ cacheWrite = val;
20373
+ sawAny = true;
20374
+ } else if (fieldNum === 5) {
20375
+ cacheRead = val;
20376
+ sawAny = true;
20377
+ }
20378
+ } else if (wireType === 2) {
20379
+ let len = 0;
20380
+ let s = 0;
20381
+ while (offset < metaBytes.length) {
20382
+ const b = metaBytes[offset++];
20383
+ len |= (b & 127) << s;
20384
+ if (!(b & 128)) break;
20385
+ s += 7;
20386
+ }
20387
+ offset += len;
20388
+ } else {
20389
+ break;
20390
+ }
20391
+ }
20392
+ return sawAny ? { prompt, completion, cacheRead, cacheWrite } : null;
20393
+ }
20335
20394
  function parseDevinConnectTrailer(payload) {
20336
20395
  const text = payload.toString("utf8").trim();
20337
20396
  if (!text || text === "{}") return null;
@@ -20352,6 +20411,7 @@ function decodeDevinResponsePayload(payload) {
20352
20411
  let content = "";
20353
20412
  let reasoning = "";
20354
20413
  let finishReason = null;
20414
+ let usage = null;
20355
20415
  const events = [];
20356
20416
  while (offset < payload.length) {
20357
20417
  let tag = 0;
@@ -20433,15 +20493,17 @@ function decodeDevinResponsePayload(payload) {
20433
20493
  if (argsDelta !== void 0) {
20434
20494
  events.push({ type: "tool-call-args", argsDelta, ...id ? { id } : {} });
20435
20495
  }
20496
+ } else if (fieldNum === 7) {
20497
+ usage = parseDevinMetadataUsage(valBytes);
20436
20498
  }
20437
20499
  } else {
20438
20500
  break;
20439
20501
  }
20440
20502
  }
20441
- return { content, reasoning, finishReason, events };
20503
+ return { content, reasoning, finishReason, events, usage };
20442
20504
  }
20443
20505
  function createDevinProvider(options) {
20444
- const { token, model = "swe-2", fetchImpl = fetch, tools = [], temperature } = options;
20506
+ const { token, model = "swe-2-max", fetchImpl = fetch, tools = [], temperature } = options;
20445
20507
  return {
20446
20508
  model,
20447
20509
  async complete(messages, opts) {
@@ -20476,6 +20538,7 @@ function createDevinProvider(options) {
20476
20538
  let text = "";
20477
20539
  let reasoning = "";
20478
20540
  let finishReason = null;
20541
+ let frameUsage = null;
20479
20542
  const toolCallOrder = [];
20480
20543
  const toolCallById = /* @__PURE__ */ new Map();
20481
20544
  let currentToolCallId = null;
@@ -20500,6 +20563,9 @@ function createDevinProvider(options) {
20500
20563
  continue;
20501
20564
  }
20502
20565
  const delta = decodeDevinResponsePayload(f.payload);
20566
+ if (delta.usage?.completion !== void 0) {
20567
+ frameUsage = delta.usage;
20568
+ }
20503
20569
  text += delta.content;
20504
20570
  reasoning += delta.reasoning;
20505
20571
  if (delta.finishReason) finishReason = delta.finishReason;
@@ -20552,10 +20618,18 @@ function createDevinProvider(options) {
20552
20618
  if (!text && !reasoning && toolCalls.length === 0) {
20553
20619
  throw new Error("Devin Connect upstream completed without content or tool calls");
20554
20620
  }
20621
+ const usage = frameUsage ? {
20622
+ prompt_tokens: frameUsage.prompt + frameUsage.cacheRead,
20623
+ completion_tokens: frameUsage.completion ?? 0,
20624
+ total_tokens: frameUsage.prompt + frameUsage.cacheRead + (frameUsage.completion ?? 0) + frameUsage.cacheWrite,
20625
+ ...frameUsage.cacheRead > 0 ? { prompt_tokens_details: { cached_tokens: frameUsage.cacheRead } } : {},
20626
+ ...frameUsage.cacheWrite > 0 ? { cache_creation_input_tokens: frameUsage.cacheWrite } : {}
20627
+ } : void 0;
20555
20628
  return {
20556
20629
  content: text,
20557
20630
  model: selectedModel,
20558
20631
  provider: "devin",
20632
+ ...usage ? { usage } : {},
20559
20633
  ...reasoning ? { reasoning_content: reasoning } : {},
20560
20634
  ...toolCalls.length > 0 ? { tool_calls: toolCalls } : {},
20561
20635
  // The upstream finish event wins whenever it is present. A tool call