nolo-cli 0.80.0-alpha.2 → 0.80.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 (156) hide show
  1. package/README.md +2 -2
  2. package/{_executeModel-T3FPYFVF.js → _executeModel-UXVEB3GO.js} +46 -46
  3. package/{action-D22U6CTH.js → action-YVYQEAAV.js} +11 -11
  4. package/{addContentAction-XAPUTGL4.js → addContentAction-O7R66HEX.js} +9 -9
  5. package/{addDialogAgentAction-M7VLLBZM.js → addDialogAgentAction-74OA7KYP.js} +8 -8
  6. package/{agentDeleteCommand-JCDEGE35.js → agentDeleteCommand-OODHSL4K.js} +30 -28
  7. package/{agentEmailCommands-IP5NOVLR.js → agentEmailCommands-3R73WSCD.js} +64 -60
  8. package/{agentGrantCommands-R3VQEZJR.js → agentGrantCommands-M3XFO6EN.js} +2 -2
  9. package/{agentListCommands-IWIHYQT3.js → agentListCommands-TBTEXV2E.js} +38 -30
  10. package/{agentMachineCommands-A2WJJOAL.js → agentMachineCommands-3GKE6ZHG.js} +30 -28
  11. package/{agentProviderCommands-65ZC2WB4.js → agentProviderCommands-GNPTL5XR.js} +87 -0
  12. package/{agentPullCommand-N7L2CT7L.js → agentPullCommand-O5MPVJ5E.js} +3 -3
  13. package/{agentRecordCommands-2URSSQJS.js → agentRecordCommands-3664GLRE.js} +61 -57
  14. package/{agentRunCommand-HICCPFML.js → agentRunCommand-YNSEOBTR.js} +62 -58
  15. package/{agentRunControl-T44MESII.js → agentRunControl-XLGD3UZ5.js} +1 -1
  16. package/{agentRuntimeLocal-C3VUNWAT.js → agentRuntimeLocal-5BX6PI4X.js} +28 -26
  17. package/{agentSlice-EACXUOWW.js → agentSlice-KTVOEUDX.js} +10 -10
  18. package/{appDeleteCommands-KYL3Z76U.js → appDeleteCommands-UNTBD55Y.js} +30 -28
  19. package/{appDeployCommands-3RSNVJ7Q.js → appDeployCommands-LOF4JNBZ.js} +30 -28
  20. package/{appDeployStatusCommands-2Z4N3G2G.js → appDeployStatusCommands-MMLE6BDW.js} +30 -28
  21. package/{appGetCommands-J2WLYQRO.js → appGetCommands-WFJAJK6B.js} +30 -28
  22. package/{appListCommands-XT2ZCBMO.js → appListCommands-NC265RGX.js} +30 -28
  23. package/{authCommand-EVGFLAHO.js → authCommand-F4EFRRX6.js} +164 -24
  24. package/{authCommands-ILTBI6JV.js → authCommands-RGOGCPP6.js} +4 -5
  25. package/builtinSkillRegistry-FUAVTRVZ.js +33 -0
  26. package/{chatQueueReduxAdapter-XEIJO5WR.js → chatQueueReduxAdapter-4YQF4NHY.js} +24 -24
  27. package/{chromeCommands-VOIRNJBL.js → chromeCommands-FZYAU75D.js} +1 -1
  28. package/{chromeOpsCommands-M7DPCX2T.js → chromeOpsCommands-62P2Q2YB.js} +31 -1
  29. package/{chunk-C3FZR5EC.js → chunk-2F7RJC6L.js} +1 -1
  30. package/{chunk-IPTKVTHL.js → chunk-35EWBHJO.js} +10 -10
  31. package/{chunk-HQUORJTM.js → chunk-3BMYXEUW.js} +1 -1
  32. package/{chunk-3QPYFHAH.js → chunk-3DII57IT.js} +1 -1
  33. package/{chunk-KIS76A2P.js → chunk-3IIEFNGY.js} +38 -4
  34. package/{chunk-MEVSATIF.js → chunk-4OZYL5FG.js} +66 -792
  35. package/{chunk-GBPZKFYK.js → chunk-53HEEOTT.js} +4 -4
  36. package/{chunk-5XTOKQLW.js → chunk-5UTFL4QJ.js} +6 -2
  37. package/chunk-5ZUL4CUO.js +10 -0
  38. package/{chunk-E6RGHPDR.js → chunk-6D6VBVEW.js} +4 -6
  39. package/{chunk-CMH2SYHX.js → chunk-6OZ36FXI.js} +2 -2
  40. package/{chunk-QA6YKM3H.js → chunk-76WEAXJB.js} +49 -10
  41. package/{chunk-BYEJ7K2Z.js → chunk-7S4YWN7P.js} +1 -1
  42. package/{chunk-SREASRV5.js → chunk-ABQYVJBJ.js} +1 -1
  43. package/chunk-ACTMNVHM.js +93 -0
  44. package/{chunk-XWNRAIUL.js → chunk-AFUORTY4.js} +6 -16
  45. package/{chunk-AFIWC5NH.js → chunk-BLJWCTRL.js} +1 -1
  46. package/chunk-BNGW5ASC.js +344 -0
  47. package/{chunk-SZLVDREM.js → chunk-BP4XNZRM.js} +3 -3
  48. package/{chunk-2KDR4CWE.js → chunk-BYMV6QZG.js} +24 -1
  49. package/{chunk-HH65VA5U.js → chunk-CPH3W5A7.js} +15 -3
  50. package/{chunk-U6LKJRJB.js → chunk-D2P6UDPQ.js} +42 -26
  51. package/{chunk-L2Y24GRM.js → chunk-DEUUPHOO.js} +16 -12
  52. package/{chunk-MYU3MJCF.js → chunk-DHDMC6FO.js} +175 -7
  53. package/{chunk-CDVGNZDA.js → chunk-EFVDQUCT.js} +11 -173
  54. package/{chunk-EXMHJN7C.js → chunk-EYAQT56M.js} +4 -3
  55. package/{chunk-KSQLYFKT.js → chunk-FLLFOP5L.js} +6 -6
  56. package/{chunk-H7UKKEIS.js → chunk-GFD4ALW3.js} +1 -1
  57. package/{chunk-PYXL2CJL.js → chunk-GPCZ7UXG.js} +1 -1
  58. package/{chunk-K7AG465Q.js → chunk-GQBOR3G6.js} +4 -2
  59. package/{chunk-QUH3XHL5.js → chunk-H3PIH2EO.js} +7 -7
  60. package/{chunk-YFADVSZE.js → chunk-H62HCIUP.js} +6 -6
  61. package/{chunk-PZM3EENV.js → chunk-HJUYAD4A.js} +1 -1
  62. package/{chunk-ALGK6TIE.js → chunk-HMPEO3ZE.js} +3 -3
  63. package/{chunk-3JQ2NRYU.js → chunk-HVURBGF3.js} +4 -4
  64. package/{chunk-FPTQQSS6.js → chunk-IAO6JBYW.js} +26 -5
  65. package/{chunk-V3ZKNK5D.js → chunk-IIVGDG4I.js} +11 -10
  66. package/{chunk-UDQWGU7F.js → chunk-J4MOO56S.js} +1 -1
  67. package/{chunk-DSRXPQWA.js → chunk-JAXOVNM4.js} +43 -43
  68. package/{chunk-KC5FAHVS.js → chunk-JEDZAO7L.js} +1 -1
  69. package/{chunk-6XIE5ZGI.js → chunk-JPGCXHNM.js} +1 -1
  70. package/chunk-JRQFUXY7.js +1625 -0
  71. package/chunk-KQ4ONNQD.js +677 -0
  72. package/{chunk-D74EWXL4.js → chunk-LBEDNSMY.js} +419 -72
  73. package/{chunk-X7Z7U4Z6.js → chunk-LIIKM7DD.js} +15 -15
  74. package/{chunk-RXX4GDIH.js → chunk-LS2ZANRJ.js} +1 -1
  75. package/{chunk-BJIRLHJR.js → chunk-M2EJHDJP.js} +4 -0
  76. package/{chunk-EVBFYPDC.js → chunk-MC4XLIJ7.js} +6 -2
  77. package/{chunk-THWDM2R6.js → chunk-MPV6E6WR.js} +608 -60
  78. package/{chunk-HI374WVI.js → chunk-MWAO7TZZ.js} +902 -301
  79. package/{chunk-QRBAZ5PW.js → chunk-NKRYKK7T.js} +3 -3
  80. package/{chunk-ZLPA7K55.js → chunk-OA6Q2A4I.js} +29 -10
  81. package/{chunk-QC5LGHYP.js → chunk-OF7AQZUG.js} +10 -5
  82. package/{chunk-UJ63UXGE.js → chunk-OIVSQH2O.js} +1006 -801
  83. package/{chunk-AETZ7AD6.js → chunk-Q554LLSI.js} +1 -1
  84. package/chunk-Q5FJJ6XI.js +103 -0
  85. package/{chunk-AJHEFRGJ.js → chunk-Q67DOFOO.js} +214 -5
  86. package/{chunk-UZ6XXCVR.js → chunk-QDSINZM3.js} +15 -2
  87. package/{chunk-AFIKMMGC.js → chunk-QIAVMDHY.js} +1 -1
  88. package/{chunk-QCZX4FTW.js → chunk-SH43IESU.js} +173 -15
  89. package/{chunk-FSFQ3A7S.js → chunk-SNPMM7H3.js} +137 -12
  90. package/{chunk-P7FA2HMM.js → chunk-SQZDZXP5.js} +13 -15
  91. package/{chunk-SPAQ4PVV.js → chunk-SV5IJK6K.js} +1 -1
  92. package/{chunk-BJCWNHVU.js → chunk-TOP2VXOR.js} +2 -2
  93. package/{chunk-L5E7NSWK.js → chunk-TRCMIJA7.js} +1198 -50
  94. package/{chunk-4EJ5QYB5.js → chunk-UKZDAFYT.js} +1 -1
  95. package/{chunk-PGSKWZCB.js → chunk-UZGQNTVW.js} +1 -1
  96. package/{chunk-ZZCJUXUI.js → chunk-V4MJDUSR.js} +2 -2
  97. package/{chunk-JYYZCK2Z.js → chunk-V7E4PXQD.js} +1 -1
  98. package/{chunk-OZX2IPKM.js → chunk-VLTIYV3X.js} +1 -1
  99. package/{chunk-NHRQCXIQ.js → chunk-VMFTFOWF.js} +13 -3
  100. package/{chunk-E36HZARC.js → chunk-WADCY6G6.js} +3 -3
  101. package/{chunk-5J7W2VWW.js → chunk-WV42OMV7.js} +6 -265
  102. package/{chunk-DWPNOYMB.js → chunk-YQTQQX2H.js} +1 -1
  103. package/{chunk-Q6FF2MCK.js → chunk-Z77CRGTW.js} +1 -1
  104. package/{contentThunks-3SPROFG5.js → contentThunks-2USKJBI4.js} +25 -25
  105. package/{createAgentAutomationAction-EIP2EG3O.js → createAgentAutomationAction-NTLU42X2.js} +25 -25
  106. package/{createDialogAction-RLUSTN4D.js → createDialogAction-UCYF4BUN.js} +28 -28
  107. package/{createPageAction-4Y52G7WG.js → createPageAction-QFGUGZ5M.js} +26 -26
  108. package/{dbSlice-GKGGFNOB.js → dbSlice-XVWBAGYN.js} +8 -8
  109. package/{deleteFile-LWSR674W.js → deleteFile-YG6QMJLU.js} +3 -3
  110. package/{dialogCommands-IPCKBWGL.js → dialogCommands-X4OB6SC6.js} +34 -30
  111. package/{dialogSlice-THY45JWM.js → dialogSlice-HQFQIQDZ.js} +24 -24
  112. package/{docCreateCommands-QGJ2IM64.js → docCreateCommands-DFST4PFR.js} +31 -29
  113. package/{docDeleteCommands-ZZXWBKNG.js → docDeleteCommands-V37JZOSP.js} +32 -30
  114. package/{docReadCommands-FE37G3KU.js → docReadCommands-Z64VDPDQ.js} +31 -29
  115. package/{docStore-ZQ3ECOPY.js → docStore-GVWEDN5E.js} +9 -9
  116. package/{docUpdateCommands-EOHC5LRT.js → docUpdateCommands-I6FB6ENK.js} +31 -29
  117. package/{fetchMessages-DRABNDPZ.js → fetchMessages-EIU7UFFK.js} +3 -4
  118. package/{getPricing-HRMSOF3E.js → getPricing-LUSEABA6.js} +4 -4
  119. package/{handleSendMessageAction-CE4M5XIE.js → handleSendMessageAction-TLB2SAU4.js} +24 -24
  120. package/index.js +101 -84
  121. package/{localDialogRead-PUQKFI73.js → localDialogRead-BTFJ4V2I.js} +2 -2
  122. package/{localRuntimeDb-P37ZTX55.js → localRuntimeDb-SYQGUF4U.js} +1 -1
  123. package/{machineCommands-KSONYK2P.js → machineCommands-PV5XA7UF.js} +61 -57
  124. package/{machineWsRunDispatch-RBSOKO6F.js → machineWsRunDispatch-W2DPC7TZ.js} +59 -55
  125. package/{memberThunks-KATHH3F4.js → memberThunks-QGFLFVCI.js} +9 -9
  126. package/{models-GS72DVJS.js → models-T3SG6MJ5.js} +2 -2
  127. package/{offlineMarxistsAgentCommand-GEH6SNNA.js → offlineMarxistsAgentCommand-HGXZV4XJ.js} +1 -1
  128. package/package.json +1 -1
  129. package/providerPresetApply-FG6NZ57W.js +214 -0
  130. package/providerRegistry-757OWH3O.js +31 -0
  131. package/{read-LC6HVYBN.js → read-COE3ZYR6.js} +5 -4
  132. package/{readDocTool-N3ERJHHF.js → readDocTool-5USN4A6V.js} +1 -1
  133. package/{readlineWorkspace-WVK6LIF5.js → readlineWorkspace-PHZXJKJM.js} +187 -108
  134. package/{removeDialogAgentAction-F5GPTALR.js → removeDialogAgentAction-IX3MN2ZO.js} +11 -11
  135. package/{runAgentClientLoop-NE5EHXSS.js → runAgentClientLoop-26DG6ZEY.js} +45 -45
  136. package/{runtimeDoctorCommands-CROTMULY.js → runtimeDoctorCommands-X6WDBEQX.js} +2 -2
  137. package/{setDialogExtraReferencesAction-AY4ZCF3A.js → setDialogExtraReferencesAction-X4HCPNZL.js} +9 -9
  138. package/{setPrimaryDialogAgentAction-HPMG7V3R.js → setPrimaryDialogAgentAction-4GMIQLOD.js} +11 -11
  139. package/{settingSlice-OEJA4NQO.js → settingSlice-ZQZVUPKK.js} +10 -10
  140. package/{spaceCommands-FRU7SOMI.js → spaceCommands-3QH2QFNW.js} +29 -27
  141. package/{streamAgentChatTurn-A6L6O22P.js → streamAgentChatTurn-BY7IPY5C.js} +57 -56
  142. package/{switchDialogAgentAction-HMDZTZ4I.js → switchDialogAgentAction-N52LRPA3.js} +8 -8
  143. package/{tableCommands-SUNTHAYX.js → tableCommands-O6NWHFKV.js} +1 -1
  144. package/{toolApiClient-VGYUB4P5.js → toolApiClient-QVJ6HDNN.js} +2 -2
  145. package/{tools-JS475NYO.js → tools-4Y2EYH5D.js} +41 -39
  146. package/tuiSummaryLlmCaller-T2SHYMDZ.js +127 -0
  147. package/{updateCommands-Y363MC3L.js → updateCommands-2M74UL7P.js} +2 -2
  148. package/{updateDialogTitleAction-GMZUT6RP.js → updateDialogTitleAction-2S4DCP35.js} +45 -28
  149. package/chunk-3IT2PFHL.js +0 -611
  150. package/chunk-I42VC5KR.js +0 -15
  151. package/chunk-NG4UT4K4.js +0 -79
  152. package/codingSkills-E6KSDNSJ.js +0 -48
  153. package/tuiSummaryLlmCaller-3Z24VUWM.js +0 -116
  154. package/{chunk-3RAG2NAD.js → chunk-UKWGR5SS.js} +3 -3
  155. package/{db-VQSAOWAO.js → db-WK5MDZVN.js} +1 -1
  156. package/{localRuntimeAuthority-R5UBODT3.js → localRuntimeAuthority-6IR6BBXE.js} +3 -3
@@ -0,0 +1,344 @@
1
+ import {
2
+ publicAgentKey
3
+ } from "./chunk-M2EJHDJP.js";
4
+
5
+ // packages/core/builtinAgentCatalog.ts
6
+ var BUILTIN_AGENT_CATALOG = [
7
+ // ── 平台内置 6 个(builtinAgents BUILTIN_*)──
8
+ {
9
+ id: "01NOLOAPPBLD000000019KCKT0",
10
+ group: "builtin",
11
+ name: "nolo",
12
+ provider: "nolo",
13
+ model: "deepseek-flash",
14
+ runtimeFallback: true
15
+ },
16
+ {
17
+ id: "01APPBUILDER00000001YAII3I",
18
+ group: "builtin",
19
+ name: "\u5E94\u7528\u6784\u5EFA\u52A9\u624B",
20
+ provider: "nolo",
21
+ model: "deepseek-flash"
22
+ },
23
+ {
24
+ id: "01ECOMMERCEAG00000001PYQ2J",
25
+ group: "builtin",
26
+ name: "\u7535\u5546\u5546\u54C1\u53C2\u6570\u52A9\u624B",
27
+ provider: "openai",
28
+ model: "gpt-6-luna"
29
+ },
30
+ {
31
+ id: "01NOLOAGENTCRT000000000001",
32
+ group: "builtin",
33
+ name: "AI \u521B\u5EFA\u52A9\u624B",
34
+ provider: "nolo",
35
+ model: "deepseek-flash"
36
+ },
37
+ {
38
+ id: "01NOLOFEEDBACKA000000000R2",
39
+ group: "builtin",
40
+ name: "\u53CD\u9988\u5165\u53E3",
41
+ provider: "nolo",
42
+ model: "deepseek-flash"
43
+ },
44
+ {
45
+ id: "01CHROMEOPR000000000001",
46
+ group: "builtin",
47
+ name: "Chrome \u64CD\u4F5C\u5458",
48
+ provider: "nolo",
49
+ model: "deepseek-flash"
50
+ },
51
+ // ── quick-chat 档位 public(图片助手已无 runtimeFallback,见下方图片档段) ──
52
+ // 2026-09-10 兜底最小化:runtimeFallback 只保留产品代码显式引用的条目
53
+ // (nolo 默认档、PLATFORM_TIER_AGENT_KEYS 的 flash/image-compat、
54
+ // SYSTEM_BUILTIN_TRUSTED 的 flash/pro/glm-flash)。广场档与图片助手不再
55
+ // 兜底——记录缺失时明确报 Agent not found,而不是合成无 prompt 的裸配置。
56
+ {
57
+ id: "01DSV4FLASHPB00000000JFPFD",
58
+ group: "public",
59
+ name: "DeepSeek Flash",
60
+ provider: "nolo",
61
+ model: "deepseek-flash",
62
+ runtimeFallback: true
63
+ },
64
+ {
65
+ id: "01DSV4PRONPB00000001VIR3EK",
66
+ group: "public",
67
+ name: "DeepSeek V4 Pro",
68
+ provider: "nolo",
69
+ model: "deepseek-v4-pro",
70
+ runtimeFallback: true
71
+ },
72
+ {
73
+ id: "01GLM52DIPB00000000I3E2MY",
74
+ group: "public",
75
+ name: "GLM 5.3",
76
+ provider: "nolo",
77
+ model: "glm-5.3"
78
+ },
79
+ {
80
+ id: "01GLMFLASHPB00000000BT20BC",
81
+ group: "public",
82
+ name: "GLM 5.3 Flash",
83
+ provider: "nolo",
84
+ model: "glm-5-3-flash",
85
+ runtimeFallback: true
86
+ },
87
+ {
88
+ id: "01KIMIK26OLLAMA0000000001",
89
+ // 已下架的公共入口:保留 internal catalog entry 仅用于旧 Agent 记录的运行时兼容。
90
+ group: "internal",
91
+ lifecycle: "retired",
92
+ name: "Kimi K2.6\uFF08\u517C\u5BB9\uFF09",
93
+ provider: "nolo",
94
+ model: "kimi-k2.6",
95
+ runtimeFallback: true
96
+ },
97
+ // ── 广场公开聊天档(从 createSpaceAgents PUBLIC_AGENT_DEFS 收编,2026-08-19)──
98
+ // ID 与 createSpaceAgents 的 deterministicId 结果一致;provider 按 agentSeedBuilder
99
+ // 默认规则:显式 provider 用显式值,未写则 openai。
100
+ // 2026-09-10 预设收敛:GPT-5.6 Sol/Terra、GPT-5.5 Pro 从广场退场转 internal 兼容,
101
+ // 公开聊天档只保留 Luna + nolo 托管组 + 图片档(图片档仍在广场,但不再 runtimeFallback)。
102
+ {
103
+ id: "01GPT56SOLPB00000000VXMGCW",
104
+ // 已从广场/预设退场(2026-09-10):保留 internal 兼容条目,仅为存量 agent
105
+ // 记录提供运行时路由;不再出现在广场与 createSpaceAgents 播种清单。
106
+ group: "internal",
107
+ lifecycle: "retired",
108
+ name: "GPT-5.6 Sol\uFF08\u517C\u5BB9\uFF09",
109
+ provider: "openai",
110
+ model: "gpt-5.6-sol"
111
+ },
112
+ {
113
+ id: "01GPT56TERPB00000001UX7RKW",
114
+ // 已从广场/预设退场(2026-09-10):同 Sol,internal 兼容。
115
+ group: "internal",
116
+ lifecycle: "retired",
117
+ name: "GPT-5.6 Terra\uFF08\u517C\u5BB9\uFF09",
118
+ provider: "openai",
119
+ model: "gpt-5.6-terra"
120
+ },
121
+ {
122
+ id: "01GPT56LUNPB00000001VVVZHS",
123
+ // 2026-09-23 换代:同一稳定 ID(用户收藏 / 别名 / Space 内容键不失效)升级为
124
+ // 平台托管 GPT-6 Luna。注意与 retired 的区别:Luna 是在架商品原地换代,
125
+ //
126
+ // provider 必须是 "nolo"(平台托管命名空间),不能写上游名 "openai":
127
+ // ① 计费按 calculatePrice(provider, model) 查价,平台价只注册在 nolo 下,
128
+ // 写 openai 会落零价虚拟模型(2026-09-24 实测 openai/gpt-6-luna → cost 0);
129
+ // ② agent-run 的托管路由门 isPlatformManagedProvider 只认 nolo/deepseek/
130
+ // kimi 系,provider 非 nolo 时读不到 hosted routing table,直连 key 也拿不到。
131
+ // 平台 agent 统一收敛到 nolo provider 是既定方向(见 modelUpgradeTable 的
132
+ // 「尽量迁移到 nolo 平台托管」原则),其余上游名 provider 逐步退场。
133
+ group: "public",
134
+ lifecycle: "active",
135
+ name: "GPT-6 Luna",
136
+ provider: "nolo",
137
+ model: "gpt-6-luna"
138
+ },
139
+ {
140
+ id: "01GPT55PROPUB00000000IV47M",
141
+ // 已从广场/预设退场(2026-09-10 retired,2026-09-23 起 overlay 强制过滤
142
+ // 存量 DB 记录):internal 兼容,理由同 Sol。
143
+ group: "internal",
144
+ lifecycle: "retired",
145
+ name: "GPT-5.5 Pro\uFF08\u517C\u5BB9\uFF09",
146
+ provider: "openai",
147
+ model: "gpt-5.5-pro"
148
+ },
149
+ {
150
+ id: "01CLSO50DIPB00000000A1DVVU",
151
+ // 旧代 Claude 广场入口(2026-09-01 下架时随条目删除,只剩线上孤儿记录,
152
+ // 2026-09-24 重新收编):internal + retired 保留运行时兼容,广场由 overlay
153
+ // 按 retiredCatalogIds 过滤其存量 agent-pub-* 记录(退场 ≠ 删除——Space
154
+ // contentKey / dialog primaryAgentKey 硬引用不断链)。model 沿用 2026-09-15
155
+ // 恢复的真实 DeepInfra 官方名(与平台模型名同名)。
156
+ group: "internal",
157
+ lifecycle: "retired",
158
+ name: "Claude Sonnet 5\uFF08\u517C\u5BB9\uFF09",
159
+ provider: "nolo",
160
+ model: "anthropic/claude-sonnet-5"
161
+ },
162
+ {
163
+ id: "01FABLE5DIPB00000001VJBKM4",
164
+ // 同 Sonnet 5:旧代 Claude 广场入口转 internal + retired 兼容条目。
165
+ group: "internal",
166
+ lifecycle: "retired",
167
+ name: "Claude Fable 5\uFF08\u517C\u5BB9\uFF09",
168
+ provider: "nolo",
169
+ model: "anthropic/claude-fable-5"
170
+ },
171
+ {
172
+ id: "01CLOP48DIPB0000000001OI1W",
173
+ // 同 Sonnet 5 / Fable 5。这条尤其重要:线上同时存在
174
+ // agent-system-01CLOP48DIPB...(userId=system)与 owner 副本。catalog 若无该
175
+ // 条目,overlay 的「DB 有、catalog 无 → 用户自建」规则会把 system 名下记录当成
176
+ // 用户自建保留——正是 2026-09-24 设计会商点名的「事故复活通道」实例。
177
+ group: "internal",
178
+ lifecycle: "retired",
179
+ name: "Claude Opus 5\uFF08\u517C\u5BB9\uFF09",
180
+ provider: "nolo",
181
+ model: "anthropic/claude-opus-5"
182
+ },
183
+ // Claude 系 2026-09-24 广场重新上架:只上架最新一代(Fable 5.1 / Opus 5.5)。
184
+ // 平台托管通道 2026-09-15 起已是真实 DeepInfra 模型(nolo 目录),provider
185
+ // 收敛到 nolo 命名空间;旧代 Sonnet 5 / Fable 5 只保留上面的 retired 兼容条目。
186
+ // Gemini 文本档只上架最新一代:旧版留在广场只会分散选择、拉长列表,而
187
+ // 用户想要的是「最新的那个 Gemini」。旧版模型仍可保留用于兼容历史请求,
188
+ // (modelAbility / 定价表照旧),下架的只是广场入口。
189
+ {
190
+ id: "01CLDFBL51PB000000013N70D7",
191
+ group: "public",
192
+ lifecycle: "active",
193
+ name: "Claude Fable 5.1",
194
+ provider: "nolo",
195
+ model: "anthropic/claude-fable-5-1"
196
+ },
197
+ {
198
+ id: "01CLDOPU55PB00000001MQHSW0",
199
+ group: "public",
200
+ lifecycle: "active",
201
+ name: "Claude Opus 5.5",
202
+ provider: "nolo",
203
+ model: "anthropic/claude-opus-5-5"
204
+ },
205
+ {
206
+ id: "01GEM37FLPB00000000FJCRNC",
207
+ group: "public",
208
+ name: "Gemini 3.8 Flash",
209
+ provider: "nolo",
210
+ model: "gemini-3.8-flash"
211
+ },
212
+ {
213
+ id: "01GROK46PLAZ00000001PTJZ3K",
214
+ group: "public",
215
+ name: "Grok 4.6",
216
+ provider: "xai",
217
+ model: "grok-4.6"
218
+ },
219
+ {
220
+ id: "01GPTIMG2GEN00000000SSEBOS",
221
+ group: "public",
222
+ name: "GPT Image 2 \u56FE\u7247\u751F\u6210\u5668",
223
+ provider: "nolo",
224
+ model: "gpt-6-luna",
225
+ hasImageOutput: true,
226
+ imageModel: "gpt-image-2",
227
+ imageWorkflow: "generate",
228
+ imageConfig: { enabled: true }
229
+ },
230
+ {
231
+ id: "01GPTIMG2EDT00000001R4R4H4",
232
+ group: "public",
233
+ name: "GPT Image 2 \u56FE\u7247\u7F16\u8F91\u5668",
234
+ provider: "nolo",
235
+ model: "gpt-6-luna",
236
+ hasImageOutput: true,
237
+ imageModel: "gpt-image-2",
238
+ imageWorkflow: "edit",
239
+ imageConfig: { enabled: true }
240
+ },
241
+ {
242
+ id: "01GPTIMG2CNT00000000USKZFO",
243
+ group: "public",
244
+ name: "GPT Image 2 \u8FDE\u7EED\u521B\u4F5C\u52A9\u624B",
245
+ provider: "nolo",
246
+ model: "gpt-6-luna",
247
+ hasImageOutput: true,
248
+ imageModel: "gpt-image-2",
249
+ imageWorkflow: "continuous",
250
+ imageConfig: { enabled: true }
251
+ },
252
+ {
253
+ id: "01NB2LITEGEN00000001XE1MNO",
254
+ group: "public",
255
+ name: "Nano Banana 2 Lite \u6587\u751F\u56FE",
256
+ provider: "nolo",
257
+ model: "gemini-3.1-flash-lite-image",
258
+ hasImageOutput: true
259
+ }
260
+ ];
261
+ var CATALOG_BY_ID = new Map(BUILTIN_AGENT_CATALOG.map((e) => [e.id, e]));
262
+ function builtinAgentCatalogEntryById(id) {
263
+ if (!id) return void 0;
264
+ return CATALOG_BY_ID.get(id);
265
+ }
266
+ function builtinRuntimeFallbackEntries() {
267
+ return BUILTIN_AGENT_CATALOG.filter((e) => e.runtimeFallback === true);
268
+ }
269
+ function builtinPlatformEntries() {
270
+ return BUILTIN_AGENT_CATALOG.filter((e) => e.group === "builtin");
271
+ }
272
+ function isRetiredCatalogEntry(entry2) {
273
+ return entry2?.lifecycle === "retired";
274
+ }
275
+
276
+ // packages/core/builtinAgents.ts
277
+ var entry = (id) => {
278
+ const e = builtinAgentCatalogEntryById(id);
279
+ if (!e) throw new Error(`missing builtin agent catalog entry: ${id}`);
280
+ return e;
281
+ };
282
+ var BUILTIN_NOLO_AGENT_ID = entry("01NOLOAPPBLD000000019KCKT0").id;
283
+ var BUILTIN_NOLO_AGENT_KEY = publicAgentKey(BUILTIN_NOLO_AGENT_ID);
284
+ var BUILTIN_NOLO_AGENT_NAME = entry("01NOLOAPPBLD000000019KCKT0").name;
285
+ var BUILTIN_NOLO_AGENT_MODEL = entry("01NOLOAPPBLD000000019KCKT0").model;
286
+ var BUILTIN_APP_BUILDER_AGENT_ID = entry("01APPBUILDER00000001YAII3I").id;
287
+ var BUILTIN_APP_BUILDER_AGENT_KEY = publicAgentKey(BUILTIN_APP_BUILDER_AGENT_ID);
288
+ var BUILTIN_ECOMMERCE_AGENT_ID = entry("01ECOMMERCEAG00000001PYQ2J").id;
289
+ var BUILTIN_ECOMMERCE_AGENT_KEY = publicAgentKey(BUILTIN_ECOMMERCE_AGENT_ID);
290
+ var BUILTIN_AGENT_CREATOR_AGENT_ID = entry("01NOLOAGENTCRT000000000001").id;
291
+ var BUILTIN_AGENT_CREATOR_AGENT_KEY = publicAgentKey(BUILTIN_AGENT_CREATOR_AGENT_ID);
292
+ var BUILTIN_FEEDBACK_AGENT_ID = entry("01NOLOFEEDBACKA000000000R2").id;
293
+ var BUILTIN_FEEDBACK_AGENT_KEY = publicAgentKey(BUILTIN_FEEDBACK_AGENT_ID);
294
+ var BUILTIN_CHROME_OPERATOR_AGENT_ID = entry("01CHROMEOPR000000000001").id;
295
+ var BUILTIN_CHROME_OPERATOR_AGENT_KEY = publicAgentKey(BUILTIN_CHROME_OPERATOR_AGENT_ID);
296
+ var BUILTIN_PLATFORM_AGENT_KEYS = builtinPlatformEntries().map(
297
+ (e) => publicAgentKey(e.id)
298
+ );
299
+ var BUILTIN_PLATFORM_AGENT_KEY_SET = new Set(BUILTIN_PLATFORM_AGENT_KEYS);
300
+ var PUBLIC_DEEPSEEK_V4_FLASH_AGENT_ID = entry("01DSV4FLASHPB00000000JFPFD").id;
301
+ var PUBLIC_DEEPSEEK_V4_FLASH_AGENT_KEY = publicAgentKey(PUBLIC_DEEPSEEK_V4_FLASH_AGENT_ID);
302
+ var PUBLIC_DEEPSEEK_V4_PRO_AGENT_ID = entry("01DSV4PRONPB00000001VIR3EK").id;
303
+ var PUBLIC_DEEPSEEK_V4_PRO_AGENT_KEY = publicAgentKey(PUBLIC_DEEPSEEK_V4_PRO_AGENT_ID);
304
+ var PUBLIC_GLM_53_FLASH_AGENT_ID = entry("01GLMFLASHPB00000000BT20BC").id;
305
+ var PUBLIC_GLM_53_FLASH_AGENT_KEY = publicAgentKey(PUBLIC_GLM_53_FLASH_AGENT_ID);
306
+ var PUBLIC_KIMI_K26_IMAGE_AGENT_ID = entry("01KIMIK26OLLAMA0000000001").id;
307
+ var PUBLIC_KIMI_K26_IMAGE_AGENT_KEY = publicAgentKey(PUBLIC_KIMI_K26_IMAGE_AGENT_ID);
308
+ var PUBLIC_GPT_IMAGE_2_GENERATOR_AGENT_ID = entry("01GPTIMG2GEN00000000SSEBOS").id;
309
+ var PUBLIC_GPT_IMAGE_2_GENERATOR_AGENT_KEY = publicAgentKey(PUBLIC_GPT_IMAGE_2_GENERATOR_AGENT_ID);
310
+ var PUBLIC_GPT_IMAGE_2_EDITOR_AGENT_ID = entry("01GPTIMG2EDT00000001R4R4H4").id;
311
+ var PUBLIC_GPT_IMAGE_2_EDITOR_AGENT_KEY = publicAgentKey(PUBLIC_GPT_IMAGE_2_EDITOR_AGENT_ID);
312
+ var PUBLIC_GPT_IMAGE_2_CONTINUOUS_AGENT_ID = entry("01GPTIMG2CNT00000000USKZFO").id;
313
+ var PUBLIC_GPT_IMAGE_2_CONTINUOUS_AGENT_KEY = publicAgentKey(PUBLIC_GPT_IMAGE_2_CONTINUOUS_AGENT_ID);
314
+ var PUBLIC_NANO_BANANA_2_LITE_AGENT_ID = entry("01NB2LITEGEN00000001XE1MNO").id;
315
+ var PUBLIC_NANO_BANANA_2_LITE_AGENT_KEY = publicAgentKey(PUBLIC_NANO_BANANA_2_LITE_AGENT_ID);
316
+ var SYSTEM_BUILTIN_TRUSTED_AGENT_KEYS = [
317
+ PUBLIC_DEEPSEEK_V4_FLASH_AGENT_KEY,
318
+ PUBLIC_DEEPSEEK_V4_PRO_AGENT_KEY,
319
+ PUBLIC_GLM_53_FLASH_AGENT_KEY
320
+ ];
321
+ var SYSTEM_BUILTIN_TRUSTED_AGENT_KEY_SET = new Set(
322
+ SYSTEM_BUILTIN_TRUSTED_AGENT_KEYS
323
+ );
324
+ var isSystemBuiltinTrustedAgentKey = (key) => typeof key === "string" && SYSTEM_BUILTIN_TRUSTED_AGENT_KEY_SET.has(key);
325
+ var isBuiltinPlatformAgentKey = (key) => typeof key === "string" && BUILTIN_PLATFORM_AGENT_KEY_SET.has(key);
326
+
327
+ export {
328
+ builtinAgentCatalogEntryById,
329
+ builtinRuntimeFallbackEntries,
330
+ isRetiredCatalogEntry,
331
+ BUILTIN_NOLO_AGENT_KEY,
332
+ BUILTIN_NOLO_AGENT_NAME,
333
+ BUILTIN_NOLO_AGENT_MODEL,
334
+ BUILTIN_PLATFORM_AGENT_KEYS,
335
+ PUBLIC_DEEPSEEK_V4_FLASH_AGENT_ID,
336
+ PUBLIC_DEEPSEEK_V4_PRO_AGENT_ID,
337
+ PUBLIC_GLM_53_FLASH_AGENT_ID,
338
+ PUBLIC_GPT_IMAGE_2_GENERATOR_AGENT_ID,
339
+ PUBLIC_GPT_IMAGE_2_EDITOR_AGENT_ID,
340
+ PUBLIC_GPT_IMAGE_2_CONTINUOUS_AGENT_ID,
341
+ PUBLIC_NANO_BANANA_2_LITE_AGENT_ID,
342
+ isSystemBuiltinTrustedAgentKey,
343
+ isBuiltinPlatformAgentKey
344
+ };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  selectCurrentServer,
3
3
  selectRemoteServers
4
- } from "./chunk-XWNRAIUL.js";
4
+ } from "./chunk-AFUORTY4.js";
5
5
  import {
6
6
  createUserKey,
7
7
  extractAgentInfo,
@@ -10,11 +10,11 @@ import {
10
10
  sanitizeShareData,
11
11
  shareKey,
12
12
  toNonEmptyString
13
- } from "./chunk-NHRQCXIQ.js";
13
+ } from "./chunk-VMFTFOWF.js";
14
14
  import {
15
15
  noloDeleteRequest,
16
16
  noloWriteRequest
17
- } from "./chunk-3RAG2NAD.js";
17
+ } from "./chunk-UKWGR5SS.js";
18
18
  import {
19
19
  normalizeTimeFields
20
20
  } from "./chunk-QOKAKDPE.js";
@@ -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
  };
@@ -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
  }
@@ -6,9 +6,8 @@ import {
6
6
  } from "./chunk-HS7MLR74.js";
7
7
  import {
8
8
  clipMultilineText,
9
- fetchAndSerializeTable,
10
- resolveBuiltinSkillPage
11
- } from "./chunk-MEVSATIF.js";
9
+ fetchAndSerializeTable
10
+ } from "./chunk-4OZYL5FG.js";
12
11
  import {
13
12
  isGatewayHttpStatus
14
13
  } from "./chunk-NF64D32W.js";
@@ -20,7 +19,7 @@ import {
20
19
  } from "./chunk-3L2WKC3W.js";
21
20
  import {
22
21
  slateToSimplifiedMarkdown
23
- } from "./chunk-UDQWGU7F.js";
22
+ } from "./chunk-J4MOO56S.js";
24
23
  import {
25
24
  waitForAbortableDelay
26
25
  } from "./chunk-N4G4PKQ6.js";
@@ -29,25 +28,26 @@ import {
29
28
  } from "./chunk-MEYIRKDN.js";
30
29
  import {
31
30
  fetchAndCacheMessages
32
- } from "./chunk-D74EWXL4.js";
31
+ } from "./chunk-LBEDNSMY.js";
33
32
  import {
34
33
  shouldUseServerProxy
35
34
  } from "./chunk-YYLHWIW6.js";
36
35
  import {
37
36
  fetchServerSyncedCredential
38
- } from "./chunk-QUH3XHL5.js";
37
+ } from "./chunk-H3PIH2EO.js";
39
38
  import {
40
39
  buildSkillGuidancePromptBlock,
41
40
  extractRuntimePageCapabilities,
41
+ resolveBuiltinSkillPage,
42
42
  resolveSkillGraphFromRoots
43
- } from "./chunk-3IT2PFHL.js";
43
+ } from "./chunk-JRQFUXY7.js";
44
44
  import {
45
45
  buildIdentityBlock,
46
46
  buildRuntimeGuidanceBlocks,
47
47
  compileContextLayers,
48
48
  normalizeChatCompletionsBodyForProvider,
49
49
  resolveToolGuidedSections
50
- } from "./chunk-ZLPA7K55.js";
50
+ } from "./chunk-OA6Q2A4I.js";
51
51
  import {
52
52
  convertMessagesToResponsesInput,
53
53
  getUsageRequestOptions,
@@ -57,26 +57,26 @@ import {
57
57
  import {
58
58
  ANTIGRAVITY_CLOUD_CODE_BASE_URL,
59
59
  isAntigravityOAuthAgent
60
- } from "./chunk-PGSKWZCB.js";
60
+ } from "./chunk-UZGQNTVW.js";
61
61
  import {
62
62
  buildProviderAuthHeaders
63
- } from "./chunk-CMH2SYHX.js";
63
+ } from "./chunk-6OZ36FXI.js";
64
+ import {
65
+ estimateTokenCount
66
+ } from "./chunk-PSCNXBYA.js";
64
67
  import {
65
68
  isOpenAiResponsesModel,
66
69
  resolvePlatformChatCompletionsEndpoint,
67
70
  resolvePlatformResponsesEndpoint
68
- } from "./chunk-K7AG465Q.js";
69
- import {
70
- estimateTokenCount
71
- } from "./chunk-PSCNXBYA.js";
71
+ } from "./chunk-GQBOR3G6.js";
72
72
  import {
73
73
  clampReasoningEffort,
74
74
  getModelConfig,
75
75
  isModelSupportReasoningEffort
76
- } from "./chunk-UJ63UXGE.js";
76
+ } from "./chunk-OIVSQH2O.js";
77
77
  import {
78
78
  createFileCredentialBroker
79
- } from "./chunk-3JQ2NRYU.js";
79
+ } from "./chunk-HVURBGF3.js";
80
80
  import {
81
81
  toErrorMessage
82
82
  } from "./chunk-HNMXYYJR.js";
@@ -91,32 +91,33 @@ import {
91
91
  import {
92
92
  isDeepInfraKimiModel,
93
93
  isFireworksKimiModel,
94
+ isPlatformMimoProviderModel,
94
95
  resolveFireworksKimiModel
95
- } from "./chunk-AJHEFRGJ.js";
96
+ } from "./chunk-Q67DOFOO.js";
96
97
  import {
97
98
  createSpaceKey
98
99
  } from "./chunk-UAD2WT54.js";
99
100
  import {
100
101
  read
101
- } from "./chunk-YFADVSZE.js";
102
+ } from "./chunk-H62HCIUP.js";
102
103
  import {
103
104
  asTrimmedLowercaseString
104
105
  } from "./chunk-QSJ3HFEF.js";
105
106
  import {
106
107
  extractCustomId
107
- } from "./chunk-BJIRLHJR.js";
108
+ } from "./chunk-M2EJHDJP.js";
108
109
  import {
109
110
  getRuntimeServerContext
110
- } from "./chunk-3RAG2NAD.js";
111
+ } from "./chunk-UKWGR5SS.js";
111
112
  import {
112
113
  isAbortError
113
114
  } from "./chunk-QOKAKDPE.js";
114
- import {
115
- asTrimmedString
116
- } from "./chunk-3EUW3WEO.js";
117
115
  import {
118
116
  isRecord
119
117
  } from "./chunk-KUG52IAP.js";
118
+ import {
119
+ asTrimmedString
120
+ } from "./chunk-3EUW3WEO.js";
120
121
  import {
121
122
  API_ENDPOINTS
122
123
  } from "./chunk-LCBAMY2M.js";
@@ -367,10 +368,12 @@ function isResponsesConversationStateRejection(status, responseBody) {
367
368
  // packages/agent-runtime/agentCallPlan.ts
368
369
  var CODEX_RESPONSES_URL = "https://chatgpt.com/backend-api/codex/responses";
369
370
  var CURSOR_AGENT_URL = "https://api2.cursor.sh/agent.v1.AgentService/Run";
371
+ var DEVIN_CONNECT_URL = "https://server.codeium.com/exa.api_server_pb.ApiServerService/GetChatMessage";
370
372
  function resolveClientWire(plan) {
371
373
  if (plan.upstreamWire === "gemini-cca") return "chat.completions";
372
374
  if (plan.upstreamWire === "anthropic-messages") return "chat.completions";
373
375
  if (plan.upstreamWire === "cursor-connect") return "chat.completions";
376
+ if (plan.upstreamWire === "devin-connect") return "chat.completions";
374
377
  if (plan.upstreamWire === "responses" && plan.authMethod.kind === "oauth" && plan.authMethod.ref === "chatgpt") {
375
378
  return "chat.completions";
376
379
  }
@@ -450,6 +453,16 @@ function resolveAgentCallPlan(agentConfig, _env) {
450
453
  vendor: provider || "cursor"
451
454
  };
452
455
  }
456
+ if (apiKeyRef === "devin" || provider === "devin") {
457
+ return {
458
+ authMethod: { kind: "oauth", ref: "devin" },
459
+ transport: "server-proxy",
460
+ upstreamWire: "devin-connect",
461
+ endpoint: DEVIN_CONNECT_URL,
462
+ requiredHeaders: ["connect-protocol-version"],
463
+ vendor: provider || "devin"
464
+ };
465
+ }
453
466
  if (agentConfig.cliProvider || agentConfig.apiSource === "cli" || provider === "cli") {
454
467
  return {
455
468
  authMethod: { kind: "cli", provider: agentConfig.cliProvider || provider || "codex" },
@@ -706,9 +719,12 @@ var shouldInjectLlamaCppThinkingToggle = (agentConfig) => {
706
719
  if (!isLoopbackUrl(agentConfig.customProviderUrl)) return false;
707
720
  return /qwen/i.test(agentConfig.model ?? "");
708
721
  };
709
- var shouldDisableMiMoThinking = (agentConfig) => {
722
+ var shouldDisableMiMoThinking = (agentConfig, resolvedModel) => {
710
723
  if (agentConfig.enableThinking === true) return false;
711
- return /xiaomimimo\.com/i.test(agentConfig.customProviderUrl ?? "") || (agentConfig.provider ?? "").toLowerCase() === "mimo";
724
+ if (/xiaomimimo\.com/i.test(agentConfig.customProviderUrl ?? "") || (agentConfig.provider ?? "").toLowerCase() === "mimo") {
725
+ return true;
726
+ }
727
+ return isPlatformMimoProviderModel(agentConfig.provider, resolvedModel);
712
728
  };
713
729
  var shouldDisableKimiThinking = (agentConfig, providerName, resolvedModel) => {
714
730
  if (agentConfig.enableThinking !== false) return false;
@@ -823,7 +839,7 @@ var generateOpenAIRequestBody = (agentConfig, providerName, messages, contexts,
823
839
  enable_thinking: agentConfig.enableThinking
824
840
  };
825
841
  }
826
- if (shouldDisableMiMoThinking(agentConfig)) {
842
+ if (shouldDisableMiMoThinking(agentConfig, resolvedModel)) {
827
843
  requestBody.thinking = { type: "disabled" };
828
844
  }
829
845
  if (shouldDisableKimiThinking(agentConfig, providerName, resolvedModel)) {