nolo-cli 0.80.0-alpha.1 → 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-2TYFURBN.js → agentDeleteCommand-OODHSL4K.js} +30 -28
  7. package/{agentEmailCommands-7P35ZMUA.js → agentEmailCommands-3R73WSCD.js} +64 -60
  8. package/{agentGrantCommands-R3VQEZJR.js → agentGrantCommands-M3XFO6EN.js} +2 -2
  9. package/{agentListCommands-IFUOWXP3.js → agentListCommands-TBTEXV2E.js} +38 -30
  10. package/{agentMachineCommands-G46ZZ2ZQ.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-R74LTQEQ.js → agentRecordCommands-3664GLRE.js} +61 -57
  14. package/{agentRunCommand-UKJAECQ6.js → agentRunCommand-YNSEOBTR.js} +62 -58
  15. package/{agentRunControl-T44MESII.js → agentRunControl-XLGD3UZ5.js} +1 -1
  16. package/{agentRuntimeLocal-PUZINLWJ.js → agentRuntimeLocal-5BX6PI4X.js} +28 -26
  17. package/{agentSlice-EACXUOWW.js → agentSlice-KTVOEUDX.js} +10 -10
  18. package/{appDeleteCommands-U4NTEJYQ.js → appDeleteCommands-UNTBD55Y.js} +30 -28
  19. package/{appDeployCommands-FXF45Q7F.js → appDeployCommands-LOF4JNBZ.js} +30 -28
  20. package/{appDeployStatusCommands-KONVRM53.js → appDeployStatusCommands-MMLE6BDW.js} +30 -28
  21. package/{appGetCommands-3VOGIZ7T.js → appGetCommands-WFJAJK6B.js} +30 -28
  22. package/{appListCommands-A6ROBW7P.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-MGU5ADIQ.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-733J6D44.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-G3NT6BM3.js → chunk-MPV6E6WR.js} +608 -60
  78. package/{chunk-ZY4K4CZR.js → chunk-MWAO7TZZ.js} +909 -304
  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-EOU7ZSTU.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-G223U5WU.js → dialogCommands-X4OB6SC6.js} +34 -30
  111. package/{dialogSlice-THY45JWM.js → dialogSlice-HQFQIQDZ.js} +24 -24
  112. package/{docCreateCommands-2P47IJDK.js → docCreateCommands-DFST4PFR.js} +31 -29
  113. package/{docDeleteCommands-N3EGDOIC.js → docDeleteCommands-V37JZOSP.js} +32 -30
  114. package/{docReadCommands-6BFV2HI7.js → docReadCommands-Z64VDPDQ.js} +31 -29
  115. package/{docStore-ZQ3ECOPY.js → docStore-GVWEDN5E.js} +9 -9
  116. package/{docUpdateCommands-ZTMPXHC5.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-4OT7KVCD.js → machineCommands-PV5XA7UF.js} +61 -57
  124. package/{machineWsRunDispatch-TR3EYESP.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-RE3P324X.js → readlineWorkspace-PHZXJKJM.js} +194 -109
  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-MRP5U3C3.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
@@ -4,15 +4,15 @@ import {
4
4
  refreshAntigravityOAuthToken,
5
5
  refreshOpenAiCodexToken,
6
6
  xaiRefresh
7
- } from "./chunk-GBPZKFYK.js";
7
+ } from "./chunk-53HEEOTT.js";
8
+ import {
9
+ defaultLoopbackRequest
10
+ } from "./chunk-EADNWBAZ.js";
8
11
  import {
9
12
  createChromeConnectorClient,
10
13
  createVerifiedChromeConnectorClient,
11
14
  executeChromeConnectorTool
12
- } from "./chunk-QCZX4FTW.js";
13
- import {
14
- defaultLoopbackRequest
15
- } from "./chunk-EADNWBAZ.js";
15
+ } from "./chunk-SH43IESU.js";
16
16
  import {
17
17
  ackRunRecord,
18
18
  appendRunQueue,
@@ -29,7 +29,7 @@ import {
29
29
  terminateRunProcess,
30
30
  transitionRunToTerminal,
31
31
  withQueueLock
32
- } from "./chunk-HH65VA5U.js";
32
+ } from "./chunk-CPH3W5A7.js";
33
33
  import {
34
34
  clearCredentialAvailability,
35
35
  markCredentialUnavailable,
@@ -40,27 +40,27 @@ import {
40
40
  } from "./chunk-DWUCB2A3.js";
41
41
  import {
42
42
  buildLocalAgentLookupKeys
43
- } from "./chunk-Q6FF2MCK.js";
43
+ } from "./chunk-Z77CRGTW.js";
44
44
  import {
45
45
  LOCAL_CODEX_AGENT_ID,
46
46
  LOCAL_CODEX_AGENT_KEY,
47
47
  NOLO_DEFAULT_AGENT_ID,
48
48
  NOLO_DEFAULT_AGENT_KEY
49
- } from "./chunk-SPAQ4PVV.js";
49
+ } from "./chunk-SV5IJK6K.js";
50
50
  import {
51
51
  CliProviderQuotaError,
52
52
  executeCli
53
53
  } from "./chunk-MP64VFGD.js";
54
54
  import {
55
55
  inferCaptureIntent
56
- } from "./chunk-3QPYFHAH.js";
56
+ } from "./chunk-3DII57IT.js";
57
57
  import {
58
58
  buildCliPrompt
59
59
  } from "./chunk-ATNTHIZI.js";
60
60
  import {
61
61
  inlineImageUrlsForCustomProvider,
62
62
  prepareTools
63
- } from "./chunk-ALGK6TIE.js";
63
+ } from "./chunk-HMPEO3ZE.js";
64
64
  import {
65
65
  getServerProviderSecret
66
66
  } from "./chunk-HS7MLR74.js";
@@ -78,11 +78,11 @@ import {
78
78
  rememberMemoryFunctionSchema,
79
79
  resolveAgentRequiredPackIds,
80
80
  setTodoListFunc
81
- } from "./chunk-MEVSATIF.js";
81
+ } from "./chunk-4OZYL5FG.js";
82
82
  import {
83
83
  fetchWithTransientRetry,
84
84
  isTransientFetchError
85
- } from "./chunk-5XTOKQLW.js";
85
+ } from "./chunk-5UTFL4QJ.js";
86
86
  import {
87
87
  TASK_PREVIEW_MAX,
88
88
  formatListRunsCard,
@@ -95,25 +95,29 @@ import {
95
95
  resolveRunLabel,
96
96
  shortRunId
97
97
  } from "./chunk-NTW5GWDM.js";
98
+ import {
99
+ getModelPricing
100
+ } from "./chunk-EYAQT56M.js";
98
101
  import {
99
102
  applyBuiltinAgentRuntimeOverride,
100
103
  applyTokenUsageToDayStats,
101
104
  prepareTokenUsageData,
102
105
  resolveBuiltinPlatformAgentConfig,
103
106
  runKeyed
104
- } from "./chunk-D74EWXL4.js";
107
+ } from "./chunk-LBEDNSMY.js";
105
108
  import {
109
+ BUILTIN_DIALOG_LLM_CHAT_FALLBACK_MODEL,
106
110
  BUILTIN_TITLE_LLM_CONFIG
107
- } from "./chunk-EVBFYPDC.js";
111
+ } from "./chunk-MC4XLIJ7.js";
108
112
  import {
109
113
  fetchServerSyncedCredential
110
- } from "./chunk-QUH3XHL5.js";
114
+ } from "./chunk-H3PIH2EO.js";
111
115
  import {
112
116
  require_date_fns
113
117
  } from "./chunk-M76ECQRD.js";
114
118
  import {
115
119
  getDefaultCliLocalRuntimeDb
116
- } from "./chunk-C3FZR5EC.js";
120
+ } from "./chunk-2F7RJC6L.js";
117
121
  import {
118
122
  FORCED_TOOLS,
119
123
  addDefaultLightWebToolsForConfiguredAgents,
@@ -123,7 +127,7 @@ import {
123
127
  applySystemBuiltinSkillFilter,
124
128
  expandEnabledPacks,
125
129
  resolveEffectiveEnabledPacks
126
- } from "./chunk-MYU3MJCF.js";
130
+ } from "./chunk-DHDMC6FO.js";
127
131
  import {
128
132
  DEFAULT_HYBRID_READ_TIMEOUT_MS,
129
133
  Duration_exports,
@@ -139,6 +143,7 @@ import {
139
143
  buildLocalWorkspaceToolset,
140
144
  buildNoloWorkspaceCliToolExecutors,
141
145
  codexStreamFailureStatus,
146
+ createDevinProvider,
142
147
  createHybridRecordStore,
143
148
  createLocalWorkspaceToolExecutors,
144
149
  evaluateFileWritePolicy,
@@ -159,7 +164,7 @@ import {
159
164
  resolveOpenAiCompatibleProviderConfig,
160
165
  shouldUseGeminiNativeToolRoute,
161
166
  summarizeToolArguments
162
- } from "./chunk-ZY4K4CZR.js";
167
+ } from "./chunk-MWAO7TZZ.js";
163
168
  import {
164
169
  PlatformStreamInterruptedError,
165
170
  buildPlatformChatCompletionRequest,
@@ -171,53 +176,57 @@ import {
171
176
  readSseDataValues,
172
177
  resolvePlatformChatProviderConfig,
173
178
  shouldUsePlatformChatProvider
174
- } from "./chunk-QC5LGHYP.js";
179
+ } from "./chunk-OF7AQZUG.js";
175
180
  import {
176
181
  resolveAgentRuntimeConfigFromRecord,
177
182
  resolveHistoricalToolContentCap
178
- } from "./chunk-KIS76A2P.js";
183
+ } from "./chunk-3IIEFNGY.js";
184
+ import {
185
+ isDevinOAuthAgent
186
+ } from "./chunk-5ZUL4CUO.js";
179
187
  import {
180
188
  collectStablePromptPrefix,
181
189
  convertMessagesToResponsesInput,
182
190
  stablePromptCacheKey,
183
191
  toResponsesTools
184
192
  } from "./chunk-PUOC4YRO.js";
185
- import {
186
- isAntigravityOAuthAgent
187
- } from "./chunk-PGSKWZCB.js";
188
- import {
189
- resolvePlatformAuthToken
190
- } from "./chunk-CMH2SYHX.js";
191
193
  import {
192
194
  buildNoloWorkspaceOpenAiTools,
193
195
  parseNoloWorkspaceToolArguments,
194
196
  resolveRuntimeToolSurfaceForAgent
195
- } from "./chunk-V3ZKNK5D.js";
197
+ } from "./chunk-IIVGDG4I.js";
196
198
  import {
197
199
  mergeAvailabilityDeadline,
198
200
  resolveAvailabilityAction,
199
201
  resolveCooldownGate
200
202
  } from "./chunk-CJCJF5XB.js";
203
+ import {
204
+ isAntigravityOAuthAgent
205
+ } from "./chunk-UZGQNTVW.js";
206
+ import {
207
+ resolvePlatformAuthToken
208
+ } from "./chunk-6OZ36FXI.js";
201
209
  import {
202
210
  buildDialogFallbackTitleFromUserInput,
203
211
  normalizeDialogTitle
204
212
  } from "./chunk-2MBTWINN.js";
205
213
  import {
206
214
  normalizeUsage
207
- } from "./chunk-DSRXPQWA.js";
215
+ } from "./chunk-JAXOVNM4.js";
208
216
  import {
209
217
  clipCompactText,
210
218
  createProviderCallTimingTracker,
211
219
  finalizeProviderCallTiming,
212
220
  observeMeaningfulProviderResponseAt,
213
221
  withProviderCallTimingFields
214
- } from "./chunk-E36HZARC.js";
222
+ } from "./chunk-WADCY6G6.js";
215
223
  import {
216
224
  estimateTokenCount
217
225
  } from "./chunk-PSCNXBYA.js";
218
226
  import {
227
+ getModelConfig,
219
228
  isAdaptiveThinkingModelId
220
- } from "./chunk-UJ63UXGE.js";
229
+ } from "./chunk-OIVSQH2O.js";
221
230
  import {
222
231
  compactWhitespace
223
232
  } from "./chunk-DWLEOOGR.js";
@@ -226,7 +235,7 @@ import {
226
235
  resolveCurrentRunRuntimeToolPolicy,
227
236
  resolveLocalWorkspaceExecutorOptionsFromPolicy,
228
237
  resolveRequestedRuntimeToolNames
229
- } from "./chunk-3JQ2NRYU.js";
238
+ } from "./chunk-HVURBGF3.js";
230
239
  import {
231
240
  createOAuthTokenStore,
232
241
  isTokenExpired,
@@ -246,24 +255,42 @@ import {
246
255
  import {
247
256
  DEFAULT_NOLO_SERVER_URL
248
257
  } from "./chunk-OLZBQWZU.js";
258
+ import {
259
+ isNoloHostedProvider,
260
+ isPlatformHostedImageModel
261
+ } from "./chunk-Q67DOFOO.js";
249
262
  import {
250
263
  createTokenKey,
251
264
  createTokenStatsKey,
252
265
  createUserKey,
253
266
  dialogMessageRange
254
- } from "./chunk-NHRQCXIQ.js";
267
+ } from "./chunk-VMFTFOWF.js";
255
268
  import {
256
269
  asTrimmedLowercaseString
257
270
  } from "./chunk-QSJ3HFEF.js";
258
271
  import {
272
+ PUBLIC_DEEPSEEK_V4_FLASH_AGENT_ID,
273
+ PUBLIC_DEEPSEEK_V4_PRO_AGENT_ID,
274
+ PUBLIC_GLM_53_FLASH_AGENT_ID,
275
+ PUBLIC_GPT_IMAGE_2_CONTINUOUS_AGENT_ID,
276
+ PUBLIC_GPT_IMAGE_2_EDITOR_AGENT_ID,
277
+ PUBLIC_GPT_IMAGE_2_GENERATOR_AGENT_ID,
278
+ PUBLIC_NANO_BANANA_2_LITE_AGENT_ID,
279
+ builtinAgentCatalogEntryById,
280
+ isRetiredCatalogEntry,
259
281
  isSystemBuiltinTrustedAgentKey
260
- } from "./chunk-5J7W2VWW.js";
282
+ } from "./chunk-BNGW5ASC.js";
261
283
  import {
262
- asTrimmedString
263
- } from "./chunk-3EUW3WEO.js";
284
+ parsePublicAgentId,
285
+ parseSystemAgentId,
286
+ publicAgentKey
287
+ } from "./chunk-M2EJHDJP.js";
264
288
  import {
265
289
  isRecord
266
290
  } from "./chunk-KUG52IAP.js";
291
+ import {
292
+ asTrimmedString
293
+ } from "./chunk-3EUW3WEO.js";
267
294
  import {
268
295
  NOLO_CLUSTER_SERVERS
269
296
  } from "./chunk-LCBAMY2M.js";
@@ -574,6 +601,10 @@ var STRINGS = {
574
601
  en: "\u2713 Copied the selection to the clipboard.",
575
602
  zh: "\u2713 \u5DF2\u590D\u5236\u9009\u533A\u5230\u526A\u8D34\u677F\u3002"
576
603
  },
604
+ copiedSelectionBusy: {
605
+ en: "\u2713 Copied the selection to the clipboard. Press Esc to stop generating.",
606
+ zh: "\u2713 \u5DF2\u590D\u5236\u9009\u533A\u5230\u526A\u8D34\u677F\u3002\u6309 Esc \u505C\u6B62\u751F\u6210\u3002"
607
+ },
577
608
  copiedAllHistory: {
578
609
  en: "\u2713 Copied the full conversation to the clipboard.",
579
610
  zh: "\u2713 \u5DF2\u590D\u5236\u5B8C\u6574\u5BF9\u8BDD\u5230\u526A\u8D34\u677F\u3002"
@@ -1715,6 +1746,9 @@ function buildCliChromeConnectorOpenAiTools(args) {
1715
1746
  function buildOpenAiTools(args) {
1716
1747
  const toolset = buildLocalWorkspaceToolsetForEnv(args);
1717
1748
  const workspaceToolNames = toolset.toolNames;
1749
+ const modelWorkspaceToolNames = (args.effectiveToolNames ?? workspaceToolNames).filter(
1750
+ (toolName) => toolName !== "taskWait" || !hasRunWakeChannel(args.env)
1751
+ );
1718
1752
  const toolNameSet = new Set(args.toolNames ?? []);
1719
1753
  const uiAskChoiceTools = toolNameSet.has("ask_user") ? prepareTools(["ask_user"]) : [];
1720
1754
  const readPastedTextTools = toolNameSet.has("readPastedText") ? [
@@ -1756,7 +1790,7 @@ function buildOpenAiTools(args) {
1756
1790
  ...uiAskChoiceTools,
1757
1791
  ...readPastedTextTools,
1758
1792
  ...buildLocalWorkspaceOpenAiTools({
1759
- toolNames: args.effectiveToolNames ?? workspaceToolNames,
1793
+ toolNames: modelWorkspaceToolNames,
1760
1794
  exposeShellTools: toolset.exposeShellTools
1761
1795
  }),
1762
1796
  ...buildCliChromeConnectorOpenAiTools({ toolNames: args.toolNames }),
@@ -9311,6 +9345,59 @@ var resolveCursorTransport = async (ctx) => {
9311
9345
  return null;
9312
9346
  };
9313
9347
 
9348
+ // packages/cli/client/providerResolution/devinTransport.ts
9349
+ var resolveDevinTransport = async (ctx) => {
9350
+ const {
9351
+ agentConfig,
9352
+ apiKeyRefResolver,
9353
+ deps,
9354
+ buildProviderOpenAiTools,
9355
+ additionalToolNames
9356
+ } = ctx;
9357
+ if (isDevinOAuthAgent(agentConfig)) {
9358
+ const accessToken = await apiKeyRefResolver("devin");
9359
+ if (!accessToken) {
9360
+ throw new Error(
9361
+ 'OAuth credential for "devin" not found locally. Run `nolo auth devin`.'
9362
+ );
9363
+ }
9364
+ const model = agentConfig.model || "swe-2-max";
9365
+ const { requestedToolNames, tools } = resolveProviderOpenAiToolBundle(
9366
+ agentConfig,
9367
+ deps.env,
9368
+ buildProviderOpenAiTools,
9369
+ additionalToolNames
9370
+ );
9371
+ const devinProvider = createDevinProvider({
9372
+ token: accessToken,
9373
+ model,
9374
+ fetchImpl: ctx.fetchImpl,
9375
+ tools,
9376
+ // agentConfig.temperature reaches every transport except the Devin one;
9377
+ // forward it so the agent form's sampling knob stops being a no-op here.
9378
+ // Left undefined it keeps the upstream client's value.
9379
+ temperature: typeof agentConfig.temperature === "number" ? agentConfig.temperature : void 0
9380
+ });
9381
+ logLocalRuntimeDiagnostic("provider.selected", {
9382
+ agentKey: agentConfig.key,
9383
+ transport: "devin-connect",
9384
+ provider: "devin",
9385
+ model,
9386
+ hasApiKey: true,
9387
+ toolCount: tools.length,
9388
+ requestedToolNames,
9389
+ temperature: typeof agentConfig.temperature === "number" ? agentConfig.temperature : null
9390
+ });
9391
+ return {
9392
+ model,
9393
+ complete: async (messages, options) => {
9394
+ return devinProvider.complete(messages, options);
9395
+ }
9396
+ };
9397
+ }
9398
+ return null;
9399
+ };
9400
+
9314
9401
  // packages/cli/client/providerResolution/directOpenAiCompatibleTransport.ts
9315
9402
  var resolveDirectOpenAiCompatibleTransport = async (ctx) => {
9316
9403
  const { agentConfig, deps, fetchImpl, loopbackRequest, additionalToolNames, buildProviderOpenAiTools, recordLocalAvailability, apiKeyRefResolver, credentialBroker, syncFetcher, serverUrl, authToken } = ctx;
@@ -9704,6 +9791,7 @@ var TRANSPORTS = [
9704
9791
  resolveAnthropicOAuthTransport,
9705
9792
  resolveCodexOAuthTransport,
9706
9793
  resolveCursorTransport,
9794
+ resolveDevinTransport,
9707
9795
  resolveGeminiNativeToolTransport,
9708
9796
  resolvePlatformProxyTransport,
9709
9797
  // 兜底必须留在最后。
@@ -10053,6 +10141,446 @@ async function syncLocalDialogEvidenceToRemote(args) {
10053
10141
  return { attempted: true };
10054
10142
  }
10055
10143
 
10144
+ // packages/core/publicAgentSeeds.ts
10145
+ var AGENT_SEED_DEFAULTS = {
10146
+ isPublic: true,
10147
+ allowFork: true,
10148
+ hasVision: false,
10149
+ tools: []
10150
+ };
10151
+ function deterministicId(prefix, seed) {
10152
+ let h = 2166136261;
10153
+ for (let i = 0; i < seed.length; i++) {
10154
+ h ^= seed.charCodeAt(i);
10155
+ h = h * 16777619 >>> 0;
10156
+ }
10157
+ const suffix = h.toString(36).toUpperCase().padStart(14, "0");
10158
+ return (prefix + suffix).slice(0, 26);
10159
+ }
10160
+ function defineAgentSeed(input) {
10161
+ const providerForLookup = isPlatformHostedImageModel(input.model) ? "nolo" : input.provider || "nolo";
10162
+ const tools = input.tools ? [...input.tools] : [...AGENT_SEED_DEFAULTS.tools];
10163
+ const isPublic = input.isPublic ?? AGENT_SEED_DEFAULTS.isPublic;
10164
+ const allowFork = input.allowFork ?? AGENT_SEED_DEFAULTS.allowFork;
10165
+ const tags = input.tags ? [...input.tags] : [];
10166
+ const isPlatformHosted = isNoloHostedProvider(input.provider);
10167
+ const isPlatformPriced = !isPlatformHostedImageModel(input.model) && (isPlatformHosted || input.apiSource === "platform" || input.isPublic === true && !input.apiSource);
10168
+ let inputPrice = isPlatformPriced ? void 0 : input.inputPrice;
10169
+ let outputPrice = isPlatformPriced ? void 0 : input.outputPrice;
10170
+ let hasVision = input.hasVision;
10171
+ const pricesProvided = input.inputPrice !== void 0 || input.outputPrice !== void 0;
10172
+ if (!isPlatformPriced && (inputPrice === void 0 || outputPrice === void 0)) {
10173
+ const pricing = getModelPricing(providerForLookup, input.model);
10174
+ if (!pricing) {
10175
+ throw new Error(`\u672A\u627E\u5230\u6A21\u578B\u4EF7\u683C\u5143\u6570\u636E: ${providerForLookup}/${input.model}`);
10176
+ }
10177
+ if (inputPrice === void 0) inputPrice = pricing.inputPrice;
10178
+ if (outputPrice === void 0) outputPrice = pricing.outputPrice;
10179
+ }
10180
+ if (hasVision === void 0) {
10181
+ if (pricesProvided) {
10182
+ hasVision = AGENT_SEED_DEFAULTS.hasVision;
10183
+ } else {
10184
+ const modelConfig = getModelConfig(providerForLookup, input.model);
10185
+ hasVision = !!modelConfig.hasVision;
10186
+ }
10187
+ }
10188
+ const userVisibleTexts = [
10189
+ ["name", input.name],
10190
+ ["introduction", input.introduction],
10191
+ [
10192
+ "greeting",
10193
+ typeof input.greeting === "string" ? input.greeting : input.greeting?.text
10194
+ ],
10195
+ ["prompt", input.prompt],
10196
+ ...(input.tags ?? []).map((tag) => ["tags", tag])
10197
+ ];
10198
+ for (const [fieldName, text] of userVisibleTexts) {
10199
+ if (!text) continue;
10200
+ const hit = text.match(/平台托管|runinfra|openrouter|ollama/i);
10201
+ if (hit) {
10202
+ throw new Error(
10203
+ `\u516C\u5F00 agent seed\u300C${input.name}\u300D\u7684\u7528\u6237\u53EF\u89C1\u5B57\u6BB5 ${fieldName} \u542B\u4E0A\u6E38\u8DEF\u7531/\u6258\u7BA1\u6E20\u9053\u8BCD\u300C${hit[0]}\u300D\uFF0C\u7981\u6B62\u5199\u5165\uFF08\u6362\u4F9B\u5E94\u5546\u4E0D\u5E94\u7275\u52A8\u7528\u6237\u6587\u6848\uFF1B\u6A21\u578B\u5382\u5546\u540D\u4E0D\u5728\u6B64\u9650\uFF09`
10204
+ );
10205
+ }
10206
+ }
10207
+ const { inputPrice: _strippedInputPrice, outputPrice: _strippedOutputPrice, ...inputRest } = input;
10208
+ const record = {
10209
+ ...inputRest,
10210
+ tools,
10211
+ isPublic,
10212
+ allowFork,
10213
+ tags,
10214
+ hasVision
10215
+ };
10216
+ if (!isPlatformPriced) {
10217
+ record.inputPrice = inputPrice;
10218
+ record.outputPrice = outputPrice;
10219
+ }
10220
+ return record;
10221
+ }
10222
+ var GPT_6_LUNA_DEF = defineAgentSeed({
10223
+ // salt 冻结为历史值 "shared-space-openai-gpt-5-6-luna":deterministicId 由
10224
+ // prefix+salt 哈希得出,改 salt 会换 ID——2026-09-23 Luna 原地换代
10225
+ // (GPT-5.6 Luna → GPT-6 Luna)必须保留稳定 ID,用户收藏/别名/Space
10226
+ // 内容键才不失效。
10227
+ id: deterministicId("01GPT56LUNPB", "shared-space-openai-gpt-5-6-luna"),
10228
+ presetKey: "gpt-6-luna",
10229
+ name: "GPT-6 Luna",
10230
+ // provider 用平台托管命名空间 "nolo"(平台 agent 统一收敛方向):平台价只注册在
10231
+ // nolo 下,agent-run 的托管路由门也只认 nolo。写上游名 "openai" 会让计费落零价
10232
+ // 虚拟模型并绕过 hosted routing(2026-09-24 review CRITICAL)。
10233
+ provider: "nolo",
10234
+ model: "gpt-6-luna",
10235
+ isPublic: true,
10236
+ platformAudit: true,
10237
+ introduction: "OpenAI GPT-6 Luna \u516C\u5F00\u52A9\u624B\uFF08\u8F7B\u91CF\u6863\uFF09\uFF0C\u9002\u5408\u9AD8\u541E\u5410\u3001\u4F4E\u6210\u672C\u3001\u901F\u5EA6\u654F\u611F\u4EFB\u52A1\u3002",
10238
+ greeting: "\u4F60\u597D\uFF0C\u6211\u662F GPT-6 Luna\u3002\u8F7B\u91CF\u6863\u4F4D\uFF0C\u9002\u5408\u5FEB\u901F\u3001\u4F4E\u6210\u672C\u4EFB\u52A1\u3002",
10239
+ prompt: "\u4F18\u5148\u5FEB\u901F\u5B8C\u6210\u4EFB\u52A1\uFF1B\u4FDD\u6301\u56DE\u7B54\u76F4\u63A5\u3001\u7ED3\u8BBA\u660E\u786E\u3002",
10240
+ tools: [],
10241
+ tags: ["openai"]
10242
+ });
10243
+ var DEEPSEEK_V4_FLASH_DEF = defineAgentSeed({
10244
+ id: PUBLIC_DEEPSEEK_V4_FLASH_AGENT_ID,
10245
+ presetKey: "deepseek-v4-flash",
10246
+ name: "DeepSeek Flash",
10247
+ provider: "nolo",
10248
+ model: "deepseek-flash",
10249
+ isPublic: true,
10250
+ introduction: "DeepSeek Flash \u516C\u5F00\u52A9\u624B\uFF0C\u9002\u5408\u9AD8\u6027\u4EF7\u6BD4\u901A\u7528\u95EE\u7B54\u3001\u4EE3\u7801\u4E0E\u957F\u4E0A\u4E0B\u6587\u4EFB\u52A1\u3002",
10251
+ greeting: "\u4F60\u597D\uFF0C\u6211\u662F DeepSeek Flash\u3002\u9002\u5408\u5FEB\u901F\u5904\u7406\u901A\u7528\u95EE\u9898\u3001\u4EE3\u7801\u548C\u957F\u4E0A\u4E0B\u6587\u4EFB\u52A1\u3002",
10252
+ prompt: "\u4F18\u5148\u5FEB\u901F\u3001\u76F4\u63A5\u3001\u7A33\u5B9A\u5730\u5B8C\u6210\u4EFB\u52A1\uFF1B\u9700\u8981\u63A8\u7406\u65F6\u4FDD\u6301\u6B65\u9AA4\u6E05\u6670\u3002",
10253
+ tools: [],
10254
+ tags: ["nolo", "deepseek"]
10255
+ });
10256
+ var DEEPSEEK_V4_PRO_DEF = defineAgentSeed({
10257
+ id: PUBLIC_DEEPSEEK_V4_PRO_AGENT_ID,
10258
+ presetKey: "deepseek-v4-pro",
10259
+ name: "DeepSeek V4 Pro",
10260
+ provider: "nolo",
10261
+ model: "deepseek-v4-pro",
10262
+ hasVision: false,
10263
+ isPublic: true,
10264
+ introduction: "DeepSeek V4 Pro \u516C\u5F00\u52A9\u624B\uFF0C\u9002\u5408\u590D\u6742\u63A8\u7406\u3001\u4EE3\u7801\u3001agentic \u5DE5\u4F5C\u6D41\u4E0E\u957F\u4E0A\u4E0B\u6587\u4EFB\u52A1\u3002",
10265
+ greeting: "\u4F60\u597D\uFF0C\u6211\u662F DeepSeek V4 Pro\u3002\u9002\u5408\u590D\u6742\u63A8\u7406\u3001\u4EE3\u7801\u5206\u6790\u548C\u957F\u4E0A\u4E0B\u6587\u4EFB\u52A1\u3002",
10266
+ prompt: "\u9762\u5BF9\u590D\u6742\u4EFB\u52A1\u4F18\u5148\u62C6\u6E05\u76EE\u6807\u3001\u8BC1\u636E\u548C\u6267\u884C\u8DEF\u5F84\uFF0C\u518D\u7ED9\u51FA\u53EF\u9760\u7ED3\u8BBA\u3002",
10267
+ tools: [],
10268
+ tags: ["nolo", "deepseek"]
10269
+ });
10270
+ var GLM_5_3_DEF = defineAgentSeed({
10271
+ id: "01GLM52DIPB00000000I3E2MY",
10272
+ presetKey: "glm-5.3",
10273
+ name: "GLM 5.3",
10274
+ provider: "nolo",
10275
+ model: "glm-5.3",
10276
+ isPublic: true,
10277
+ hasVision: true,
10278
+ introduction: "GLM 5.3 \u516C\u5F00\u52A9\u624B\uFF0C\u9002\u5408\u590D\u6742\u63A8\u7406\u3001\u957F\u4E0A\u4E0B\u6587\u3001\u4E2D\u6587\u7406\u89E3\u4E0E\u4EE3\u7801\u5206\u6790\u3002",
10279
+ greeting: "\u4F60\u597D\uFF0C\u6211\u662F GLM 5.3\u3002\u9002\u5408\u5904\u7406\u590D\u6742\u5206\u6790\u3001\u9AD8\u8D28\u91CF\u4E2D\u6587\u95EE\u7B54\u4E0E\u4EE3\u7801\u63A8\u7406\u4EFB\u52A1\u3002",
10280
+ prompt: "\u4F18\u5148\u7ED9\u51FA\u76F4\u63A5\u3001\u51C6\u786E\u3001\u53EF\u6267\u884C\u7684\u56DE\u7B54\uFF1B\u590D\u6742\u95EE\u9898\u5148\u7406\u6E05\u76EE\u6807\u548C\u7EA6\u675F\u518D\u63A8\u7406\uFF0C\u4FDD\u6301\u7ED3\u6784\u6E05\u6670\u3001\u4F9D\u636E\u660E\u786E\u3002",
10281
+ tools: [],
10282
+ tags: ["nolo", "glm"]
10283
+ });
10284
+ var GLM_5_3_FLASH_DEF = defineAgentSeed({
10285
+ id: PUBLIC_GLM_53_FLASH_AGENT_ID,
10286
+ presetKey: "glm-5-3-flash",
10287
+ name: "GLM 5.3 Flash",
10288
+ provider: "nolo",
10289
+ model: "glm-5-3-flash",
10290
+ isPublic: true,
10291
+ hasVision: true,
10292
+ introduction: "GLM 5.3 Flash \u516C\u5F00\u52A9\u624B\uFF0C\u5EC9\u4EF7\u5FEB\u6863\uFF0C\u9002\u5408\u9AD8\u9891\u8F7B\u91CF\u95EE\u7B54\u4E0E\u6279\u91CF\u4EFB\u52A1\u3002\u6CE8\u610F\uFF1A\u8BE5\u6A21\u578B\u9ED8\u8BA4\u6DF1\u5EA6\u601D\u8003\uFF0C\u601D\u8003\u8FC7\u7A0B token \u8BA1\u5165\u8F93\u51FA\u8BA1\u8D39\uFF08\u8F93\u51FA 3.2 \u79EF\u5206/\u767E\u4E07 token\uFF09\uFF0C\u5B9E\u9645\u6D88\u8017\u9AD8\u4E8E\u540C\u957F\u5EA6\u53EF\u89C1\u56DE\u590D\uFF1B\u628A agent \u7684 reasoning_effort \u8BBE\u4E3A low \u53EF\u5173\u95ED\u601D\u8003\u2014\u2014\u5355\u8F6E\u95EE\u7B54\u5B9E\u6D4B\u8F93\u51FA token \u964D\u5230\u7EA6 1/5\uFF0C\u591A\u8F6E\u5DE5\u5177\u5FAA\u73AF\u91CC\u7EA6\u964D 4 \u6210\uFF08\u5DE5\u5177\u8F6E\u672C\u8EAB\u601D\u8003\u5C31\u5C11\uFF09\uFF0C\u53EF\u89C1\u56DE\u590D\u957F\u5EA6\u4E0E\u5DE5\u5177\u8C03\u7528\u6B63\u786E\u6027\u5747\u4E0D\u53D8\uFF1Bmedium \u6863 token \u7565\u964D\u4F46\u5EF6\u8FDF\u4E0D\u6539\u5584\u3002",
10293
+ greeting: "\u4F60\u597D\uFF0C\u6211\u662F GLM 5.3 Flash\u3002\u8F7B\u91CF\u5FEB\u901F\u3001\u4EF7\u683C\u4F4E\uFF0C\u9002\u5408\u65E5\u5E38\u95EE\u7B54\u4E0E\u6279\u91CF\u8F7B\u91CF\u4EFB\u52A1\u3002",
10294
+ prompt: "\u76F4\u63A5\u3001\u7B80\u6D01\u5730\u5B8C\u6210\u4EFB\u52A1\uFF1B\u56DE\u7B54\u4FDD\u6301\u7B80\u77ED\uFF0C\u5148\u7ED9\u7ED3\u8BBA\u3002",
10295
+ // 关掉思考:该模型默认档的 reasoning token 计入输出计费,而实测 low 档
10296
+ // reasoning 输出为 0(10/10 样本),单轮问答输出 token 降到约 1/5、多轮工具
10297
+ // 循环降约 4 成,可见回复长度、工具调用正确性与循环完成度均不变。
10298
+ // medium 档只省约 29% token 且延迟不改善,故直接用 low。
10299
+ reasoning_effort: "low",
10300
+ tools: [],
10301
+ tags: ["nolo", "glm", "flash"]
10302
+ });
10303
+ var CLAUDE_FABLE_5_1_DEF = defineAgentSeed({
10304
+ id: deterministicId("01CLDFBL51PB", "shared-space-anthropic-claude-fable-5-1"),
10305
+ presetKey: "claude-fable-5-1",
10306
+ name: "Claude Fable 5.1",
10307
+ provider: "nolo",
10308
+ model: "anthropic/claude-fable-5-1",
10309
+ isPublic: true,
10310
+ hasVision: true,
10311
+ introduction: "Claude Fable 5.1 \u516C\u5F00\u52A9\u624B\uFF0C\u9002\u5408\u590D\u6742\u95EE\u7B54\u3001\u957F\u6587\u5206\u6790\u3001\u4EE3\u7801\u548C\u56FE\u7247\u7406\u89E3\u3002",
10312
+ greeting: "\u4F60\u597D\uFF0C\u6211\u662F Claude Fable 5.1\u3002\u9002\u5408\u590D\u6742\u95EE\u9898\u3001\u957F\u6587\u5206\u6790\u3001\u4EE3\u7801\u548C\u56FE\u7247\u7406\u89E3\u3002",
10313
+ prompt: "\u9762\u5BF9\u590D\u6742\u4EFB\u52A1\u5148\u5398\u6E05\u76EE\u6807\u548C\u7EA6\u675F\uFF0C\u518D\u7ED9\u51FA\u53EF\u9760\u3001\u53EF\u6267\u884C\u3001\u53EF\u590D\u6838\u7684\u7ED3\u679C\u3002",
10314
+ tools: [],
10315
+ tags: ["anthropic", "claude", "fable"]
10316
+ });
10317
+ var CLAUDE_OPUS_5_5_DEF = defineAgentSeed({
10318
+ id: deterministicId("01CLDOPU55PB", "shared-space-anthropic-claude-opus-5-5"),
10319
+ presetKey: "claude-opus-5-5",
10320
+ name: "Claude Opus 5.5",
10321
+ provider: "nolo",
10322
+ model: "anthropic/claude-opus-5-5",
10323
+ isPublic: true,
10324
+ hasVision: true,
10325
+ introduction: "Claude Opus 5.5 \u516C\u5F00\u52A9\u624B\uFF0C\u9002\u5408\u9AD8\u96BE\u63A8\u7406\u3001\u957F\u94FE\u8DEF\u5206\u6790\u548C\u56FE\u7247\u7406\u89E3\u3002",
10326
+ greeting: "\u4F60\u597D\uFF0C\u6211\u662F Claude Opus 5.5\u3002\u9002\u5408\u9AD8\u96BE\u63A8\u7406\u3001\u590D\u6742\u5206\u6790\u548C\u56FE\u7247\u7406\u89E3\u3002",
10327
+ prompt: "\u5148\u786E\u8BA4\u95EE\u9898\u76EE\u6807\u3001\u8BC1\u636E\u548C\u98CE\u9669\uFF0C\u518D\u7ED9\u51FA\u7ED3\u6784\u6E05\u695A\u3001\u7ED3\u8BBA\u660E\u786E\u7684\u56DE\u7B54\u3002",
10328
+ tools: [],
10329
+ tags: ["anthropic", "claude", "opus"]
10330
+ });
10331
+ var GROK_4_6_DEF = defineAgentSeed({
10332
+ id: deterministicId("01GROK46PLAZ", "shared-space-xai-grok-4-6"),
10333
+ presetKey: "grok-4.6",
10334
+ name: "Grok 4.6",
10335
+ provider: "xai",
10336
+ model: "grok-4.6",
10337
+ isPublic: true,
10338
+ hasVision: true,
10339
+ introduction: "xAI Grok 4.6 \u516C\u5F00\u52A9\u624B\uFF0C\u9002\u5408\u5B9E\u65F6\u4FE1\u606F\u5206\u6790\u3001\u590D\u6742\u63A8\u7406\u3001\u4EE3\u7801\u548C\u591A\u6A21\u6001\u4EFB\u52A1\u3002",
10340
+ greeting: "\u4F60\u597D\uFF0C\u6211\u662F Grok 4.6\u3002\u53EF\u4EE5\u5E2E\u4F60\u5206\u6790\u95EE\u9898\u3001\u7F16\u5199\u4EE3\u7801\u3001\u7406\u89E3\u56FE\u7247\u5E76\u5904\u7406\u590D\u6742\u4EFB\u52A1\u3002",
10341
+ prompt: "\u4F18\u5148\u7ED9\u51FA\u76F4\u63A5\u3001\u51C6\u786E\u3001\u53EF\u6267\u884C\u7684\u56DE\u7B54\uFF1B\u9762\u5BF9\u590D\u6742\u95EE\u9898\u5148\u68B3\u7406\u76EE\u6807\u548C\u7EA6\u675F\uFF0C\u518D\u8FDB\u884C\u53EF\u9760\u63A8\u7406\u3002\u5BF9\u4E0D\u786E\u5B9A\u7684\u5185\u5BB9\u660E\u786E\u8BF4\u660E\u4F9D\u636E\u4E0E\u65F6\u6548\u6027\uFF0C\u4E0D\u7F16\u9020\u3002",
10342
+ tools: [],
10343
+ tags: ["xai", "grok"]
10344
+ });
10345
+ var GEMINI_3_8_FLASH_DEF = defineAgentSeed({
10346
+ // 种子串冻结以维持确定性 ID 稳定,勿随版本改名。
10347
+ id: deterministicId("01GEM37FLPB", "shared-space-google-gemini-3-7-flash"),
10348
+ presetKey: "gemini-3.8-flash",
10349
+ name: "Gemini 3.8 Flash",
10350
+ provider: "nolo",
10351
+ model: "gemini-3.8-flash",
10352
+ isPublic: true,
10353
+ introduction: "Gemini 3.8 Flash \u516C\u5F00\u52A9\u624B\uFF0C\u9002\u5408\u5FEB\u901F\u524D\u6CBF\u95EE\u7B54\u3001\u4EE3\u7801\u3001\u591A\u6A21\u6001\u548C\u957F\u4E0A\u4E0B\u6587\u4EFB\u52A1\u3002",
10354
+ greeting: "\u4F60\u597D\uFF0C\u6211\u662F Gemini 3.8 Flash\u3002\u9002\u5408\u5FEB\u901F\u5904\u7406\u957F\u4E0A\u4E0B\u6587\u3001\u591A\u6A21\u6001\u548C\u4EE3\u7801\u4EFB\u52A1\u3002",
10355
+ prompt: "\u4F18\u5148\u76F4\u63A5\u5B8C\u6210\u4EFB\u52A1\uFF1B\u9700\u8981\u63A8\u7406\u6216\u5199\u4EE3\u7801\u65F6\u4FDD\u6301\u6B65\u9AA4\u6E05\u6670\u3001\u7ED3\u8BBA\u53EF\u9760\u3002",
10356
+ tools: [],
10357
+ tags: ["google", "gemini"]
10358
+ });
10359
+ var GPT_IMAGE_2_GENERATOR_DEF = defineAgentSeed({
10360
+ id: PUBLIC_GPT_IMAGE_2_GENERATOR_AGENT_ID,
10361
+ presetKey: "gpt-image-2-generator",
10362
+ name: "GPT Image 2 \u56FE\u7247\u751F\u6210\u5668",
10363
+ provider: "nolo",
10364
+ model: "gpt-6-luna",
10365
+ imageModel: "gpt-image-2",
10366
+ isPublic: true,
10367
+ hasImageOutput: true,
10368
+ imageWorkflow: "generate",
10369
+ imageConfig: { enabled: true },
10370
+ introduction: "\u4E13\u95E8\u8D1F\u8D23 GPT Image 2 \u65B0\u56FE\u751F\u6210\uFF1A\u6587\u672C\u751F\u6210\u65B0\u56FE\u7247\uFF0C\u4E5F\u53EF\u628A\u4E0A\u4F20\u56FE\u7247\u5F53\u4F5C\u53C2\u8003\u56FE\u6765\u751F\u6210\u65B0\u7684\u753B\u9762\u3002",
10371
+ greeting: "\u4F60\u597D\uFF0C\u6211\u662F GPT Image 2 \u56FE\u7247\u751F\u6210\u5668\u3002\u76F4\u63A5\u544A\u8BC9\u6211\u4F60\u60F3\u753B\u4EC0\u4E48\uFF1B\u5982\u679C\u4F60\u4E0A\u4F20\u53C2\u8003\u56FE\uFF0C\u6211\u4F1A\u628A\u5B83\u4EEC\u5F53\u4F5C\u7075\u611F\u53C2\u8003\u6765\u751F\u6210\u4E00\u5F20\u65B0\u7684\u56FE\u7247\u3002",
10372
+ prompt: [
10373
+ "\u5B9A\u4F4D\uFF1A",
10374
+ "- \u4F60\u7684\u4E3B\u4EFB\u52A1\u662F\u6587\u672C\u751F\u6210\u65B0\u56FE\u7247\u3002",
10375
+ "- \u5982\u679C\u7528\u6237\u4E0A\u4F20\u4E86\u53C2\u8003\u56FE\uFF0C\u5B83\u4EEC\u53EA\u7528\u4E8E\u53C2\u8003\u56FE\u5F71\u54CD\u65B0\u56FE\u6784\u56FE\u3001\u98CE\u683C\u3001\u89D2\u8272\u5173\u7CFB\u548C\u89C6\u89C9\u65B9\u5411\u3002",
10376
+ "- \u4E0D\u8981\u628A\u8FD9\u7C7B\u8BF7\u6C42\u5904\u7406\u6210\u591A\u8F6E\u8FDE\u7EED\u7F16\u8F91\u4F1A\u8BDD\uFF1B\u9ED8\u8BA4\u6309\u5355\u6B21\u8BF7\u6C42\u5B8C\u6210\u4E00\u7248\u65B0\u56FE\u3002",
10377
+ "",
10378
+ "\u5DE5\u4F5C\u65B9\u5F0F\uFF1A",
10379
+ "- \u7528\u6237\u7ED9\u51FA\u6E05\u6670\u9700\u6C42\u540E\uFF0C\u76F4\u63A5\u751F\u6210\uFF0C\u4E0D\u5148\u5199\u957F\u7BC7\u89E3\u91CA\u3002",
10380
+ "- prompt \u8981\u660E\u786E\u4E3B\u4F53\u3001\u573A\u666F\u3001\u955C\u5934\u3001\u5149\u7EBF\u3001\u6750\u8D28\u3001\u98CE\u683C\u4E0E\u7981\u6B62\u9879\u3002",
10381
+ "- \u5982\u679C\u7528\u6237\u8981\u6C42\u591A\u7248\u672C\uFF0C\u53EF\u4EE5\u4E00\u6B21\u7ED9\u5C11\u91CF\u5019\u9009\uFF1B\u9ED8\u8BA4\u5148\u7ED9 1 \u5F20\u3002",
10382
+ "- \u5982\u679C\u7528\u6237\u5176\u5B9E\u662F\u5728\u8981\u6C42\u7CBE\u786E\u6539\u56FE\u3001\u5C40\u90E8\u66FF\u6362\u3001\u591A\u56FE\u62FC\u5408\u6216 mask \u4FEE\u6539\uFF0C\u63D0\u9192\u66F4\u9002\u5408\u6539\u7528\u201CGPT Image 2 \u56FE\u7247\u7F16\u8F91\u5668\u201D\u3002",
10383
+ "",
10384
+ "\u56DE\u590D\u65B9\u5F0F\uFF1A",
10385
+ "- \u9ED8\u8BA4\u4E2D\u6587\u8F93\u51FA\uFF0C\u7B80\u77ED\u8BF4\u660E\u7ED3\u679C\uFF0C\u5E76\u7ED9 2-4 \u4E2A\u4E0B\u4E00\u6B65\u53EF\u7EE7\u7EED\u5FAE\u8C03\u7684\u65B9\u5411\u3002"
10386
+ ].join("\n"),
10387
+ tools: ["openAIGptImageGenerate"],
10388
+ tags: ["image", "openai", "gpt-image-2", "generate"]
10389
+ });
10390
+ var GPT_IMAGE_2_EDITOR_DEF = defineAgentSeed({
10391
+ id: PUBLIC_GPT_IMAGE_2_EDITOR_AGENT_ID,
10392
+ presetKey: "gpt-image-2-editor",
10393
+ name: "GPT Image 2 \u56FE\u7247\u7F16\u8F91\u5668",
10394
+ provider: "nolo",
10395
+ model: "gpt-6-luna",
10396
+ imageModel: "gpt-image-2",
10397
+ isPublic: true,
10398
+ hasImageOutput: true,
10399
+ imageWorkflow: "edit",
10400
+ imageConfig: { enabled: true },
10401
+ introduction: "\u4E13\u95E8\u8D1F\u8D23 GPT Image 2 \u5355\u6B21\u8BF7\u6C42\u6539\u56FE\uFF1A\u652F\u6301\u5355\u56FE\u7F16\u8F91\u3001\u591A\u56FE\u53C2\u8003\u5408\u6210\uFF0C\u4EE5\u53CA\u5E26 mask \u7684\u7CBE\u786E\u4FEE\u6539\u3002",
10402
+ greeting: "\u4F60\u597D\uFF0C\u6211\u662F GPT Image 2 \u56FE\u7247\u7F16\u8F91\u5668\u3002\u628A\u8981\u4FEE\u6539\u7684\u56FE\u7247\u3001\u53C2\u8003\u56FE\u6216 mask \u53D1\u7ED9\u6211\uFF0C\u6211\u4F1A\u6309\u5355\u6B21\u8BF7\u6C42\u6539\u56FE\u7684\u65B9\u5F0F\u7ED9\u4F60\u4E00\u7248\u7ED3\u679C\u3002",
10403
+ prompt: [
10404
+ "\u5B9A\u4F4D\uFF1A",
10405
+ "- \u4F60\u7684\u4E3B\u4EFB\u52A1\u662F\u5355\u6B21\u8BF7\u6C42\u6539\u56FE\uFF0C\u4E0D\u662F\u957F\u5BF9\u8BDD\u966A\u4F34\u5F0F\u521B\u4F5C\u3002",
10406
+ "- \u4F60\u652F\u6301\u5355\u56FE\u7F16\u8F91\u3001\u591A\u56FE\u53C2\u8003\u3001\u62FC\u5408\u6784\u56FE\uFF0C\u4EE5\u53CA\u53EF\u9009\u7684 mask \u5C40\u90E8\u4FEE\u6539\u3002",
10407
+ "- \u5982\u679C\u7528\u6237\u8981\u7684\u662F\u6301\u7EED\u51E0\u8F6E\u201C\u7EE7\u7EED\u6539\u3001\u518D\u6765\u4E00\u7248\u3001\u5EF6\u7EED\u4E0A\u4E00\u8F6E\u201D\u7684\u521B\u4F5C\u8FC7\u7A0B\uFF0C\u63D0\u9192\u66F4\u9002\u5408\u201CGPT Image 2 \u8FDE\u7EED\u521B\u4F5C\u52A9\u624B\u201D\u3002",
10408
+ "",
10409
+ "\u5DE5\u4F5C\u65B9\u5F0F\uFF1A",
10410
+ "- \u6536\u5230\u56FE\u7247\u540E\uFF0C\u4F18\u5148\u6309\u5355\u6B21\u8BF7\u6C42\u6539\u56FE\u5B8C\u6210\u5F53\u524D\u76EE\u6807\u3002",
10411
+ "- \u591A\u56FE\u53C2\u8003\u65F6\uFF0C\u8981\u660E\u786E\u6BCF\u5F20\u56FE\u5206\u522B\u627F\u62C5\u4E3B\u4F53\u3001\u98CE\u683C\u3001\u80CC\u666F\u6216\u6784\u56FE\u53C2\u8003\u3002",
10412
+ "- \u5982\u679C\u7528\u6237\u63D0\u4F9B\u4E86 mask\uFF0C\u5C31\u628A mask \u89C6\u4E3A\u5FC5\u987B\u9075\u5B88\u7684\u7F16\u8F91\u8303\u56F4\u3002",
10413
+ "- \u5982\u679C\u7F3A\u5C11\u5173\u952E\u539F\u56FE\u3001\u53C2\u8003\u56FE\u6216 mask\uFF0C\u5148\u7528\u4E00\u53E5\u8BDD\u6307\u51FA\u7F3A\u53E3\uFF0C\u518D\u7B49\u7528\u6237\u8865\u9F50\u3002",
10414
+ "- \u8C03\u7528 openAIGptImageEdit \u65F6\uFF0C\u4F18\u5148\u590D\u7528\u7528\u6237\u5DF2\u4E0A\u4F20\u7684\u539F\u59CB http(s) \u56FE\u7247 URL\uFF1B\u4E0D\u8981\u81EA\u5DF1\u624B\u5199 data URL \u6216\u91CD\u7F16\u7801\u7F29\u7565\u56FE\u3002",
10415
+ "- \u8C03\u7528 openAIGptImageEdit \u65F6\uFF0C\u4E0D\u8981\u4F20 transparent background\uFF1Bbackground \u4E00\u5F8B\u7528 opaque\uFF0C\u9664\u975E\u5E95\u5C42\u80FD\u529B\u4EE5\u540E\u660E\u786E\u652F\u6301\u518D\u8C03\u6574\u3002",
10416
+ "- \u5982\u679C outputFormat \u662F png\uFF08\u6216\u6CA1\u6709\u663E\u5F0F\u6539\u6210 jpeg/webp\uFF09\uFF0C\u4E0D\u8981\u4F20 outputCompression\u3002",
10417
+ "",
10418
+ "\u56DE\u590D\u65B9\u5F0F\uFF1A",
10419
+ "- \u9ED8\u8BA4\u4E2D\u6587\u8F93\u51FA\uFF0C\u7B80\u77ED\u8BF4\u660E\u8FD9\u6B21\u6539\u52A8\uFF0C\u5E76\u7ED9 2-4 \u4E2A\u53EF\u7EE7\u7EED\u7EC6\u5316\u7684\u65B9\u5411\u3002"
10420
+ ].join("\n"),
10421
+ tools: ["openAIGptImageEdit"],
10422
+ tags: ["image", "openai", "gpt-image-2", "edit"]
10423
+ });
10424
+ var GPT_IMAGE_2_CONTINUOUS_DEF = defineAgentSeed({
10425
+ id: PUBLIC_GPT_IMAGE_2_CONTINUOUS_AGENT_ID,
10426
+ presetKey: "gpt-image-2-continuous",
10427
+ name: "GPT Image 2 \u8FDE\u7EED\u521B\u4F5C\u52A9\u624B",
10428
+ provider: "nolo",
10429
+ model: "gpt-6-luna",
10430
+ imageModel: "gpt-image-2",
10431
+ isPublic: true,
10432
+ hasImageOutput: true,
10433
+ imageWorkflow: "continuous",
10434
+ imageConfig: { enabled: true },
10435
+ introduction: "\u4E13\u95E8\u8D1F\u8D23 GPT Image 2 \u591A\u8F6E\u8FDE\u7EED\u521B\u4F5C\uFF1A\u9002\u5408\u5148\u51FA\u4E00\u7248\uFF0C\u518D\u56F4\u7ED5\u4E0A\u4E00\u8F6E\u56FE\u7247\u7EE7\u7EED\u4FEE\u6539\u3001\u7EE7\u7EED\u6269\u5C55\u548C\u7EE7\u7EED\u8FED\u4EE3\u3002",
10436
+ greeting: "\u4F60\u597D\uFF0C\u6211\u662F GPT Image 2 \u8FDE\u7EED\u521B\u4F5C\u52A9\u624B\u3002\u4F60\u53EF\u4EE5\u5148\u8BA9\u6211\u51FA\u4E00\u7248\u56FE\uFF0C\u518D\u56F4\u7ED5\u4E0A\u4E00\u8F6E\u7EE7\u7EED\u4FEE\u6539\u3001\u7EE7\u7EED\u6269\u5C55\u6216\u7EE7\u7EED\u5B9A\u7A3F\u3002",
10437
+ prompt: [
10438
+ "\u5B9A\u4F4D\uFF1A",
10439
+ "- \u4F60\u7684\u4E3B\u4EFB\u52A1\u662F\u591A\u8F6E\u8FDE\u7EED\u521B\u4F5C\u3002",
10440
+ "- \u7528\u6237\u7ECF\u5E38\u4F1A\u57FA\u4E8E\u4E0A\u4E00\u8F6E\u7ED3\u679C\u7EE7\u7EED\u4FEE\u6539\u3001\u7EE7\u7EED\u7EC6\u5316\u3001\u7EE7\u7EED\u6362\u98CE\u683C\u3001\u7EE7\u7EED\u8865\u5143\u7D20\u3002",
10441
+ "- \u4F60\u8981\u628A\u5F53\u524D\u5BF9\u8BDD\u91CC\u7684\u4E0A\u4E00\u8F6E\u56FE\u7247\u89C6\u4F5C\u9ED8\u8BA4\u5EF6\u7EED\u5BF9\u8C61\uFF0C\u800C\u4E0D\u662F\u6BCF\u8F6E\u90FD\u91CD\u65B0\u5F00\u59CB\u3002",
10442
+ "",
10443
+ "\u5DE5\u4F5C\u65B9\u5F0F\uFF1A",
10444
+ "- \u5982\u679C\u5F53\u524D\u8F6E\u7528\u6237\u6CA1\u6709\u4E0A\u4F20\u65B0\u56FE\uFF0C\u4E14\u4E0A\u4E0B\u6587\u91CC\u4E5F\u6CA1\u6709\u4E0A\u4E00\u8F6E\u53EF\u7528\u56FE\u7247\uFF0C\u4F46\u7528\u6237\u662F\u5728\u8981\u6C42\u5148\u51FA\u4E00\u7248\u56FE\uFF0C\u5148\u8C03\u7528 openAIGptImageGenerate \u751F\u6210\u521D\u59CB\u7248\u672C\u3002",
10445
+ "- \u5982\u679C\u5F53\u524D\u8F6E\u7528\u6237\u4E0A\u4F20\u4E86\u65B0\u56FE\uFF0C\u4F18\u5148\u57FA\u4E8E\u65B0\u56FE\u7EE7\u7EED\u521B\u4F5C\u3002",
10446
+ "- \u5982\u679C\u7528\u6237\u6CA1\u6709\u4E0A\u4F20\u65B0\u56FE\uFF0C\u4F46\u4E0A\u4E0B\u6587\u91CC\u5DF2\u6709\u4E0A\u4E00\u8F6E\u53EF\u7528\u56FE\u7247\uFF0C\u9ED8\u8BA4\u6CBF\u7528\u4E0A\u4E00\u8F6E\u7ED3\u679C\u7EE7\u7EED\u4FEE\u6539\u3002",
10447
+ "- \u8C03\u7528 openAIGptImageEdit \u65F6\uFF0C\u4F18\u5148\u590D\u7528\u5F53\u524D\u5BF9\u8BDD\u91CC\u6700\u8FD1\u4E00\u8F6E\u53EF\u7528\u7684\u539F\u59CB http(s) \u56FE\u7247 URL\uFF1B\u4E0D\u8981\u628A\u5DF2\u6709\u56FE\u7247\u91CD\u65B0\u624B\u5199\u6210 data URL \u6216\u4F4E\u4FDD\u771F\u7F29\u7565\u56FE\u3002",
10448
+ "- \u5982\u679C\u7528\u6237\u8BF7\u6C42\u7F16\u8F91\u5374\u6CA1\u6709\u4EFB\u4F55\u53EF\u7528\u56FE\u7247\uFF0C\u5C31\u660E\u786E\u63D0\u793A\u7528\u6237\u5148\u4E0A\u4F20\u4E00\u5F20\u56FE\u7247\u518D\u7EE7\u7EED\u3002",
10449
+ "- \u9ED8\u8BA4\u5148\u7ED9\u5FEB\u901F\u3001\u53EF\u8FED\u4EE3\u7684\u4E00\u7248\uFF1B\u7528\u6237\u660E\u786E\u8BF4\u8981\u6700\u7EC8\u7248\u3001\u9AD8\u6E05\u7248\u65F6\uFF0C\u518D\u63D0\u9AD8\u8D28\u91CF\u3002",
10450
+ "- \u8C03\u7528 openAIGptImageEdit \u65F6\uFF0C\u4E0D\u8981\u4F20 transparent background\uFF1Bbackground \u4E00\u5F8B\u7528 opaque\uFF0C\u9664\u975E\u5E95\u5C42\u80FD\u529B\u4EE5\u540E\u660E\u786E\u652F\u6301\u518D\u8C03\u6574\u3002",
10451
+ "- \u5982\u679C outputFormat \u662F png\uFF08\u6216\u6CA1\u6709\u663E\u5F0F\u6539\u6210 jpeg/webp\uFF09\uFF0C\u4E0D\u8981\u4F20 outputCompression\u3002",
10452
+ "",
10453
+ "\u56DE\u590D\u65B9\u5F0F\uFF1A",
10454
+ "- \u9ED8\u8BA4\u4E2D\u6587\u8F93\u51FA\uFF0C\u4FDD\u6301\u8FDE\u7EED\u534F\u4F5C\u53E3\u543B\uFF0C\u751F\u6210\u540E\u63D0\u793A\u7528\u6237\u53EF\u4EE5\u4ECE\u54EA\u4E9B\u65B9\u5411\u7EE7\u7EED\u7EC6\u5316\u3002"
10455
+ ].join("\n"),
10456
+ tools: ["openAIGptImageGenerate", "openAIGptImageEdit"],
10457
+ tags: ["image", "openai", "gpt-image-2", "continuous"]
10458
+ });
10459
+ var NANO_BANANA_2_LITE_GENERATOR_DEF = defineAgentSeed({
10460
+ id: PUBLIC_NANO_BANANA_2_LITE_AGENT_ID,
10461
+ presetKey: "nano-banana-2-lite-generator",
10462
+ name: "Nano Banana 2 Lite \u6587\u751F\u56FE",
10463
+ provider: "nolo",
10464
+ model: "gemini-3.1-flash-lite-image",
10465
+ isPublic: true,
10466
+ hasImageOutput: true,
10467
+ imageWorkflow: "generate",
10468
+ imageConfig: { enabled: true },
10469
+ introduction: "Nano Banana 2 Lite \u516C\u5F00\u6587\u751F\u56FE\u52A9\u624B\uFF1AGoogle \u6700\u5FEB\u3001\u6700\u4FBF\u5B9C\u7684\u56FE\u7247\u6A21\u578B\uFF0C\u9002\u5408\u5FEB\u901F\u8349\u7A3F\u3001\u6279\u91CF\u751F\u56FE\u548C\u4F4E\u6210\u672C\u89C6\u89C9\u63A2\u7D22\u3002",
10470
+ greeting: "\u4F60\u597D\uFF0C\u6211\u662F Nano Banana 2 Lite \u6587\u751F\u56FE\u52A9\u624B\u3002\u544A\u8BC9\u6211\u4F60\u60F3\u753B\u4EC0\u4E48\uFF0C\u6211\u4F1A\u7528 Google \u6700\u5FEB\u7684\u56FE\u7247\u6A21\u578B\u5FEB\u901F\u751F\u6210\u3002",
10471
+ prompt: [
10472
+ "\u5B9A\u4F4D\uFF1A",
10473
+ "- \u4F60\u7684\u4E3B\u4EFB\u52A1\u662F\u5FEB\u901F\u751F\u6210\u65B0\u56FE\u7247\u3002",
10474
+ "- \u5982\u679C\u7528\u6237\u9700\u8981\u66F4\u7CBE\u81F4\u7684\u7F16\u8F91\u3001\u591A\u56FE\u5408\u6210\u6216\u590D\u6742\u4FEE\u56FE\uFF0C\u5EFA\u8BAE\u4ED6\u4EEC\u53BB\u4F7F\u7528\u201CGPT Image 2 \u56FE\u7247\u7F16\u8F91\u5668\u201D\u6216\u201C\u8BC1\u4EF6\u7167\u5236\u4F5C\u201D\u7B49\u66F4\u5408\u9002\u7684\u5DE5\u5177\u3002",
10475
+ "",
10476
+ "\u5DE5\u4F5C\u65B9\u5F0F\uFF1A",
10477
+ "- \u7528\u6237\u7ED9\u51FA\u6E05\u6670\u9700\u6C42\u540E\uFF0C\u76F4\u63A5\u7528\u5F53\u524D\u6A21\u578B\u751F\u6210\u56FE\u7247\u3002",
10478
+ "- \u5BF9\u7528\u6237\u8BF4\u660E\u65F6\uFF0C\u628A\u5F53\u524D\u56FE\u7247\u6A21\u578B\u79F0\u4E3A\u56FE\u7247\u751F\u6210\u6A21\u578B\uFF0C\u4E0D\u8981\u628A\u6A21\u578B\u8BF4\u6210\u5DE5\u5177\u3002",
10479
+ "- prompt \u8981\u660E\u786E\u4E3B\u4F53\u3001\u573A\u666F\u3001\u98CE\u683C\u3001\u5149\u7EBF\u3001\u6C1B\u56F4\u3002",
10480
+ "- \u5982\u679C\u7528\u6237\u8981\u6C42\u591A\u7248\u672C\uFF0C\u53EF\u4EE5\u4E00\u6B21\u7ED9\u5C11\u91CF\u5019\u9009\uFF1B\u9ED8\u8BA4\u5148\u7ED9 1 \u5F20\u3002",
10481
+ "- \u5982\u679C\u7528\u6237\u4E0A\u4F20\u4E86\u53C2\u8003\u56FE\uFF0C\u8BA9\u6A21\u578B\u53C2\u8003\u6784\u56FE\u6216\u98CE\u683C\u3002",
10482
+ "- \u9ED8\u8BA4\u6BD4\u4F8B 5:4\uFF0C\u9ED8\u8BA4\u5C3A\u5BF8 2K\uFF1B\u7528\u6237\u660E\u786E\u8981\u6C42\u65F6\u6309\u6307\u5B9A\u503C\u4F20\u5165\u3002",
10483
+ "",
10484
+ "\u56DE\u590D\u65B9\u5F0F\uFF1A",
10485
+ "- \u9ED8\u8BA4\u4E2D\u6587\u8F93\u51FA\uFF0C\u7B80\u77ED\u8BF4\u660E\u7ED3\u679C\uFF0C\u5E76\u7ED9 2-4 \u4E2A\u53EF\u7EE7\u7EED\u8C03\u6574\u7684\u65B9\u5411\uFF08\u98CE\u683C\u3001\u6BD4\u4F8B\u3001\u6784\u56FE\u3001\u7EC6\u8282\u7B49\uFF09\u3002"
10486
+ ].join("\n"),
10487
+ tools: [],
10488
+ tags: ["image", "google", "gemini", "nano-banana", "fast", "generate"]
10489
+ });
10490
+ var PUBLIC_AGENT_DEFS = [
10491
+ GPT_6_LUNA_DEF,
10492
+ DEEPSEEK_V4_FLASH_DEF,
10493
+ DEEPSEEK_V4_PRO_DEF,
10494
+ GLM_5_3_DEF,
10495
+ GLM_5_3_FLASH_DEF,
10496
+ CLAUDE_FABLE_5_1_DEF,
10497
+ CLAUDE_OPUS_5_5_DEF,
10498
+ GROK_4_6_DEF,
10499
+ GEMINI_3_8_FLASH_DEF,
10500
+ GPT_IMAGE_2_GENERATOR_DEF,
10501
+ GPT_IMAGE_2_EDITOR_DEF,
10502
+ GPT_IMAGE_2_CONTINUOUS_DEF,
10503
+ NANO_BANANA_2_LITE_GENERATOR_DEF
10504
+ ];
10505
+ var PLATFORM_AUDITED_AGENT_SPECS = PUBLIC_AGENT_DEFS.filter((def) => def.platformAudit).map((def) => ({
10506
+ name: def.name,
10507
+ key: publicAgentKey(def.id)
10508
+ }));
10509
+
10510
+ // packages/agent-runtime/publicAgentCatalogOverride.ts
10511
+ var SEED_BY_ID = new Map(
10512
+ PUBLIC_AGENT_DEFS.map((seed) => [seed.id, seed])
10513
+ );
10514
+ function toPlatformOwnedCatalogId(value) {
10515
+ if (typeof value !== "string") return null;
10516
+ const trimmed = value.trim();
10517
+ if (!trimmed) return null;
10518
+ const parsed = parsePublicAgentId(trimmed);
10519
+ if (parsed) return parsed;
10520
+ const systemId = parseSystemAgentId(trimmed);
10521
+ if (systemId) return systemId;
10522
+ return null;
10523
+ }
10524
+ function readPlatformOwnedKey(record) {
10525
+ const fields = record;
10526
+ for (const value of [fields.dbKey, fields.id]) {
10527
+ if (typeof value !== "string") continue;
10528
+ if (toPlatformOwnedCatalogId(value) === null) continue;
10529
+ return value;
10530
+ }
10531
+ return null;
10532
+ }
10533
+ function resolvePublicAgentCatalogOverride(agentKey) {
10534
+ const id = toPlatformOwnedCatalogId(agentKey);
10535
+ if (!id) return null;
10536
+ const entry = builtinAgentCatalogEntryById(id);
10537
+ if (!entry) return null;
10538
+ if (entry.group !== "public" || isRetiredCatalogEntry(entry)) return null;
10539
+ const seed = SEED_BY_ID.get(entry.id);
10540
+ if (!seed) return null;
10541
+ return {
10542
+ name: entry.name,
10543
+ provider: entry.provider,
10544
+ model: entry.model,
10545
+ introduction: seed.introduction,
10546
+ greeting: seed.greeting,
10547
+ prompt: seed.prompt,
10548
+ tools: [...seed.tools],
10549
+ tags: [...seed.tags]
10550
+ };
10551
+ }
10552
+ function overlayGreeting(recordGreeting, seedGreeting) {
10553
+ const seedText = typeof seedGreeting === "string" ? seedGreeting : isRecord(seedGreeting) ? seedGreeting.text : void 0;
10554
+ if (typeof seedText !== "string" || !seedText) return recordGreeting;
10555
+ if (isRecord(recordGreeting)) {
10556
+ return { ...recordGreeting, text: seedText };
10557
+ }
10558
+ if (recordGreeting === void 0 || recordGreeting === null) {
10559
+ return seedGreeting;
10560
+ }
10561
+ if (typeof recordGreeting === "string") {
10562
+ return seedText;
10563
+ }
10564
+ return recordGreeting;
10565
+ }
10566
+ function applyPublicAgentCatalogOverride(record, agentKey) {
10567
+ const override = resolvePublicAgentCatalogOverride(agentKey) ?? resolvePublicAgentCatalogOverride(readPlatformOwnedKey(record));
10568
+ if (!override) return record;
10569
+ const current = record;
10570
+ const greeting = overlayGreeting(current.greeting, override.greeting);
10571
+ return {
10572
+ ...record,
10573
+ name: override.name,
10574
+ provider: override.provider,
10575
+ model: override.model,
10576
+ introduction: override.introduction,
10577
+ prompt: override.prompt,
10578
+ tools: [...override.tools],
10579
+ tags: [...override.tags],
10580
+ ...greeting !== void 0 ? { greeting } : {}
10581
+ };
10582
+ }
10583
+
10056
10584
  // packages/cli/client/cliLocalAgentRecordReader.ts
10057
10585
  function resolveBuiltinLocalCliAgentConfig(agentRef, userId) {
10058
10586
  const normalized = agentRef.trim();
@@ -10085,7 +10613,10 @@ async function readAgentFromStore(args) {
10085
10613
  if (!record || typeof record !== "object") continue;
10086
10614
  return applyBuiltinAgentRuntimeOverride(
10087
10615
  args.agentRef,
10088
- resolveAgentRuntimeConfigFromRecord(key, record)
10616
+ resolveAgentRuntimeConfigFromRecord(
10617
+ key,
10618
+ applyPublicAgentCatalogOverride(record)
10619
+ )
10089
10620
  );
10090
10621
  }
10091
10622
  return resolveBuiltinPlatformAgentConfig(args.agentRef);
@@ -11679,7 +12210,7 @@ var REFRESH_BY_PROVIDER = {
11679
12210
  cursor: cursorRefresh
11680
12211
  };
11681
12212
  function isOAuthProvider(value) {
11682
- return value === "chatgpt" || value === "xai" || value === "antigravity" || value === "claude" || value === "cursor";
12213
+ return value === "chatgpt" || value === "xai" || value === "antigravity" || value === "claude" || value === "cursor" || value === "devin";
11683
12214
  }
11684
12215
  function createOAuthApiKeyRefResolver(options = {}) {
11685
12216
  return async (ref, opts) => {
@@ -11771,13 +12302,18 @@ async function generateLocalDialogTitle(input) {
11771
12302
  return { title: fallbackTitle, source: "fallback" };
11772
12303
  }
11773
12304
  if (input.resolveProviderConfig && input.buildRequest && input.parseResponse) {
11774
- try {
11775
- const providerConfig = await input.resolveProviderConfig({
11776
- agentConfig: { ...BUILTIN_TITLE_LLM_CONFIG, key: BUILTIN_TITLE_LLM_CONFIG.id },
11777
- env
11778
- });
11779
- if (providerConfig?.authToken) {
11780
- const request = input.buildRequest({
12305
+ const resolveProviderConfig = input.resolveProviderConfig;
12306
+ const buildRequest = input.buildRequest;
12307
+ const parseResponse = input.parseResponse;
12308
+ const attemptPlatformTitle = async (model) => {
12309
+ try {
12310
+ const agentConfig = model ? { ...BUILTIN_TITLE_LLM_CONFIG, model } : BUILTIN_TITLE_LLM_CONFIG;
12311
+ const providerConfig = await resolveProviderConfig({
12312
+ agentConfig: { ...agentConfig, key: agentConfig.id },
12313
+ env
12314
+ });
12315
+ if (!providerConfig?.authToken) return null;
12316
+ const request = buildRequest({
11781
12317
  providerConfig,
11782
12318
  messages: [
11783
12319
  {
@@ -11809,21 +12345,26 @@ async function generateLocalDialogTitle(input) {
11809
12345
  body: JSON.stringify(patchedBody),
11810
12346
  signal: AbortSignal.timeout(timeoutMs)
11811
12347
  });
11812
- if (res.ok) {
11813
- const raw = await res.text().catch(() => "");
11814
- const data = safeParseJson(raw);
11815
- if (data) {
11816
- const parsed = input.parseResponse({ providerConfig, data });
11817
- const generated = normalizeDialogTitle(
11818
- extractTitleFromLlmContent(parsed.content)
11819
- );
11820
- if (generated) {
11821
- return { title: generated, source: "llm" };
11822
- }
11823
- }
11824
- }
12348
+ if (!res.ok) return null;
12349
+ const raw = await res.text().catch(() => "");
12350
+ const data = safeParseJson(raw);
12351
+ if (!data) return null;
12352
+ const parsed = parseResponse({ providerConfig, data });
12353
+ const generated = normalizeDialogTitle(
12354
+ extractTitleFromLlmContent(parsed.content)
12355
+ );
12356
+ return generated || null;
12357
+ } catch {
12358
+ return null;
11825
12359
  }
11826
- } catch {
12360
+ };
12361
+ const primaryTitle = await attemptPlatformTitle();
12362
+ if (primaryTitle) return { title: primaryTitle, source: "llm" };
12363
+ const fallbackModelTitle = await attemptPlatformTitle(
12364
+ BUILTIN_DIALOG_LLM_CHAT_FALLBACK_MODEL
12365
+ );
12366
+ if (fallbackModelTitle) {
12367
+ return { title: fallbackModelTitle, source: "llm" };
11827
12368
  }
11828
12369
  }
11829
12370
  if (input.resolveDirectProviderConfig) {
@@ -12583,7 +13124,14 @@ function createCliLocalRuntimeAdapter(deps) {
12583
13124
  agentKey: agentConfig?.key,
12584
13125
  ...runtimeToolExecutionLimits
12585
13126
  });
12586
- const exposedAgentConfig = agentConfig ? { ...agentConfig, exposedToolNames: activeAgentToolNames } : agentConfig;
13127
+ const exposedAgentConfig = agentConfig ? {
13128
+ ...agentConfig,
13129
+ exposedToolNames: activeAgentToolNames,
13130
+ toolSurface: {
13131
+ ...agentConfig.toolSurface ?? {},
13132
+ finalToolNames: activeAgentToolNames
13133
+ }
13134
+ } : agentConfig;
12587
13135
  if (exposedAgentConfig && !deps.pastedTextStore) {
12588
13136
  preparedAgentRuntimeCache.set(cacheKey, {
12589
13137
  agentConfig: exposedAgentConfig,