nolo-cli 0.107.0-alpha.3 → 0.107.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.
- package/README.md +1 -1
- package/{_executeModel-UDCSOTD2.js → _executeModel-C4EH5TZG.js} +77 -69
- package/action-GVA5ARSJ.js +20 -0
- package/{addContentAction-MB2HHMDZ.js → addContentAction-M2WOWZCL.js} +13 -12
- package/{addDialogAgentAction-MCEABSBA.js → addDialogAgentAction-QMAQ5Z6N.js} +19 -20
- package/{agentDeleteCommand-OWYHN6D6.js → agentDeleteCommand-D3RICSHX.js} +118 -43
- package/{agentEmailCommands-BQFXQIHF.js → agentEmailCommands-YC2A4USQ.js} +99 -89
- package/agentListCommands-UDJELMYP.js +741 -0
- package/{agentMachineCommands-6DTI7YSG.js → agentMachineCommands-XH4IBGTO.js} +48 -44
- package/{agentProviderCommands-GNPTL5XR.js → agentProviderCommands-CMVTBY5X.js} +97 -2
- package/{agentPullCommand-O5MPVJ5E.js → agentPullCommand-B4T2DJ5H.js} +1 -1
- package/agentRecordCommands-3EOC2QMN.js +138 -0
- package/agentRunCommand-BTHYOVVS.js +167 -0
- package/{agentRunControl-AVJR4JW4.js → agentRunControl-3HWA2LLQ.js} +2 -2
- package/{agentRuntimeLocal-KCMC2TBD.js → agentRuntimeLocal-N4YGKL7M.js} +44 -40
- package/{agentSlice-R7PR6KYM.js → agentSlice-NIN4T6CF.js} +15 -14
- package/{appDeleteCommands-JEPA3EWE.js → appDeleteCommands-7DAF33AM.js} +46 -42
- package/{appDeployCommands-UTB76XFM.js → appDeployCommands-ZPZSMFGZ.js} +46 -42
- package/{appDeployStatusCommands-LGHF2SBD.js → appDeployStatusCommands-FWBDSSS5.js} +46 -42
- package/{appGetCommands-PX2BFHOB.js → appGetCommands-SZZOHGEP.js} +46 -42
- package/{appListCommands-BSMPTWKC.js → appListCommands-FPMUBDPM.js} +46 -42
- package/{authCommand-YW42YZA4.js → authCommand-VL3G26NQ.js} +119 -25
- package/{authCommands-RGOGCPP6.js → authCommands-5RTUDYZW.js} +7 -5
- package/{builtinSkillRegistry-FUAVTRVZ.js → builtinSkillRegistry-ZK4K67Y5.js} +11 -9
- package/{chromeCommands-FZYAU75D.js → chromeCommands-AU5ZJXBG.js} +289 -37
- package/{chromeOpsCommands-62P2Q2YB.js → chromeOpsCommands-ZYTCMNHG.js} +156 -22
- package/{chunk-JDPFV2JV.js → chunk-2NNRWRM5.js} +20 -11
- package/{chunk-JEDZAO7L.js → chunk-2SYTUTLI.js} +257 -37
- package/{chunk-HVURBGF3.js → chunk-2U3NHADM.js} +6 -6
- package/{chunk-AVTT555J.js → chunk-2ZHBFX5R.js} +29 -9
- package/{chunk-QTGQ2LTL.js → chunk-3DQY5IFB.js} +6 -10
- package/chunk-4LCOCOR5.js +50 -0
- package/{chunk-JPGCXHNM.js → chunk-4LKMZ3RR.js} +1 -1
- package/{chunk-2GRGFCF6.js → chunk-4VJAC32I.js} +2 -1
- package/{chunk-6D6VBVEW.js → chunk-4W24JM32.js} +80 -14
- package/{chunk-MC4XLIJ7.js → chunk-523DITKR.js} +1 -1
- package/{chunk-E4MARS3Q.js → chunk-5GVBDNTO.js} +1 -1
- package/chunk-5MMAK75Q.js +15 -0
- package/{chunk-7S4YWN7P.js → chunk-5UUIGN6I.js} +4 -4
- package/{chunk-42V6BK2E.js → chunk-62IL3KQV.js} +4 -34
- package/{chunk-C63CN6KA.js → chunk-6IJDSYUA.js} +849 -279
- package/{chunk-4MK3I7Y4.js → chunk-6MAW4XOF.js} +5 -5
- package/chunk-76HO2DP6.js +15 -0
- package/chunk-7AY2H3GA.js +13692 -0
- package/{chunk-4CR5I7BD.js → chunk-7HYOPBUW.js} +47 -67
- package/{chunk-VLTIYV3X.js → chunk-7I25CBT5.js} +34 -8
- package/chunk-AGIM7IMJ.js +147 -0
- package/{chunk-5UTFL4QJ.js → chunk-AOTBKDRK.js} +7 -0
- package/{chunk-6OZ36FXI.js → chunk-BIPGGSJS.js} +22 -4
- package/{chunk-EYAQT56M.js → chunk-BNQMNUKZ.js} +9 -6
- package/{chunk-62CATUYY.js → chunk-CBUMFIFE.js} +834 -962
- package/{chunk-OIVSQH2O.js → chunk-CDEEFJXN.js} +308 -11
- package/chunk-CHOZJMJS.js +78 -0
- package/{chunk-ETI2NYVF.js → chunk-CIP3AAMT.js} +4 -4
- package/{chunk-GBRG75BQ.js → chunk-D2MDMY2M.js} +1 -0
- package/{chunk-IBOZNTG2.js → chunk-DGEUP3DK.js} +23 -28
- package/{chunk-Q554LLSI.js → chunk-DMXLXZKL.js} +1 -1
- package/{chunk-3VNWWVKB.js → chunk-E3YWHWCR.js} +50 -18
- package/{chunk-HKNXJGEC.js → chunk-ECFHBYUW.js} +85 -50
- package/{chunk-ACTMNVHM.js → chunk-EHSYSKXV.js} +1 -1
- package/{chunk-WV42OMV7.js → chunk-ELUDRSRD.js} +8 -8
- package/{chunk-ABQYVJBJ.js → chunk-EV235ILT.js} +5 -5
- package/{chunk-TRV2MIDW.js → chunk-EXAJ6DCR.js} +1 -0
- package/{chunk-BFDFRLLQ.js → chunk-EZ4VZHAG.js} +5 -5
- package/{chunk-GO3Z72MT.js → chunk-FHLMQIU7.js} +65 -95
- package/{chunk-2F7RJC6L.js → chunk-FOXQ7BAB.js} +1 -1
- package/{chunk-SH43IESU.js → chunk-GGC55Q32.js} +199 -29
- package/chunk-GMZLP5DV.js +82 -0
- package/{chunk-FDTR4QJ6.js → chunk-H6A6X4EK.js} +32 -1
- package/{chunk-DVINR3PL.js → chunk-HDLLCBRF.js} +1 -1
- package/{chunk-QOKAKDPE.js → chunk-HIM3FCLF.js} +0 -1
- package/{chunk-ONXOABJR.js → chunk-HNGRBWYF.js} +3 -0
- package/{chunk-BNGW5ASC.js → chunk-I2RGRVQ7.js} +22 -2
- package/{chunk-O6OSWFZQ.js → chunk-IHPDK6UD.js} +6 -0
- package/{chunk-QDSINZM3.js → chunk-IXH3HKY2.js} +1 -22
- package/{chunk-GQBOR3G6.js → chunk-JBKHQOYK.js} +8 -4
- package/{chunk-XD2MJFUG.js → chunk-JEFXP73H.js} +1 -1
- package/{chunk-PBA4UJBK.js → chunk-JIXGJTBU.js} +4 -4
- package/{chunk-AEOE4Z6Q.js → chunk-K6L5PNXK.js} +39 -15
- package/{chunk-Z77CRGTW.js → chunk-KA5O5KQL.js} +1 -1
- package/{chunk-GPCZ7UXG.js → chunk-KD6D6BLA.js} +1 -1
- package/{chunk-UZGQNTVW.js → chunk-KHKTDMYG.js} +8 -6
- package/{chunk-MRIHM22T.js → chunk-LBFL6RZG.js} +58 -9
- package/{chunk-C3M4465B.js → chunk-LKIVH2I2.js} +403 -658
- package/{chunk-LS2ZANRJ.js → chunk-LOCNXNOU.js} +1 -1
- package/{chunk-DHDMC6FO.js → chunk-LUBFABMJ.js} +15 -14
- package/{chunk-NA35QHCF.js → chunk-LVBFKW65.js} +1 -1
- package/chunk-LWLNLZC5.js +265 -0
- package/{chunk-EEGDMATE.js → chunk-M3NMHYRB.js} +86 -81
- package/chunk-N4NGJDT6.js +929 -0
- package/{chunk-GL3EHUR4.js → chunk-N7NLLRQQ.js} +68 -46
- package/{chunk-BFU6C242.js → chunk-NMFV26UG.js} +1 -1
- package/{chunk-FZGV4FGK.js → chunk-NUHHBEJC.js} +378 -187
- package/chunk-NWENLDMM.js +42 -0
- package/chunk-O7SVKKLY.js +875 -0
- package/chunk-OCZKATRC.js +129 -0
- package/{chunk-6Z7MY3V7.js → chunk-OEJLGVBL.js} +5 -5
- package/{chunk-VMFTFOWF.js → chunk-OKGVNZTL.js} +35 -8
- package/{chunk-GEPUP7OO.js → chunk-OR2UWD6X.js} +3 -3
- package/{chunk-KQHGZWSV.js → chunk-OXME3PEE.js} +1 -1
- package/{chunk-J4MOO56S.js → chunk-PNXHPLRU.js} +10 -2
- package/{chunk-3BMYXEUW.js → chunk-R5AJODNI.js} +1 -1
- package/{chunk-P5EVSOPA.js → chunk-R6EBQEQE.js} +22 -29
- package/{chunk-NOF3HDSN.js → chunk-RLSF5CSE.js} +11 -9
- package/chunk-RQ6CTX2E.js +164 -0
- package/{chunk-3UZPUAES.js → chunk-RSB4PWX4.js} +1 -1
- package/{chunk-KQ4ONNQD.js → chunk-RXA3HAVW.js} +190 -8
- package/{chunk-IIVGDG4I.js → chunk-SJKULPGX.js} +13 -7
- package/chunk-SQHMSDDU.js +8004 -0
- package/{chunk-Q67DOFOO.js → chunk-SZC4REES.js} +212 -105
- package/{chunk-JRQFUXY7.js → chunk-TBAXFWOS.js} +99 -22
- package/{chunk-PQFHGD77.js → chunk-TBM2RS3U.js} +161 -14
- package/{chunk-XT35TTFG.js → chunk-TCYU7L6V.js} +18 -20
- package/{chunk-BYMV6QZG.js → chunk-TNIX77YM.js} +4 -0
- package/chunk-TY3TIUJK.js +89 -0
- package/{chunk-I3TQJXQ7.js → chunk-U3C3IA32.js} +9 -2
- package/{chunk-YYLHWIW6.js → chunk-UKZX3NHN.js} +1 -1
- package/chunk-UM7TA3K4.js +1008 -0
- package/{chunk-6YTOJY35.js → chunk-VBG7GWWR.js} +253 -8
- package/chunk-VIWDGTDA.js +8 -0
- package/chunk-VJVNU77E.js +83 -0
- package/{chunk-W7HLWAQ7.js → chunk-VPLUU4IX.js} +118 -90
- package/{chunk-UKWGR5SS.js → chunk-VY6VFGKR.js} +194 -1144
- package/chunk-VZLO4XJD.js +17 -0
- package/{chunk-AHAHBQMU.js → chunk-WDLSZMTA.js} +2 -2
- package/{chunk-53HEEOTT.js → chunk-WF5X57VW.js} +83 -16
- package/{chunk-VRTTFDBM.js → chunk-WPHY3VPF.js} +35 -22
- package/{chunk-ASIFZ2WY.js → chunk-YKZLFY5J.js} +66 -54
- package/chunk-YV25TM3R.js +780 -0
- package/{chunk-B2C6QTY4.js → chunk-YXKNBVYW.js} +19 -17
- package/chunk-ZRAU6T47.js +56 -0
- package/commandRegistry-UU6IOTHI.js +833 -0
- package/{contentThunks-IV2T3EJC.js → contentThunks-ARD56LKI.js} +39 -36
- package/{cooldownCommands-REAWYVTY.js → cooldownCommands-ZLEPIB4A.js} +2 -2
- package/{createAgentAutomationAction-JCOIEYY4.js → createAgentAutomationAction-HWJLU6DD.js} +40 -37
- package/createDialogAction-CHYA6PZE.js +70 -0
- package/{createPageAction-D2VOOLP3.js → createPageAction-TSCYNFX7.js} +47 -43
- package/{chunk-VFEJQMH4.js → cursorProvider-YGGNMVWX.js} +2751 -10172
- package/{dbSlice-A6C6H32X.js → dbSlice-TG4MZ5EB.js} +12 -11
- package/{deleteFile-YG6QMJLU.js → deleteFile-KESP65GC.js} +7 -6
- package/{dialogCommands-H7FPUYUQ.js → dialogCommands-IJYQAQMB.js} +49 -46
- package/{dialogSlice-6JZOOTDS.js → dialogSlice-H476I77R.js} +57 -37
- package/{dist-VODFSGNG.js → dist-NJC2W7I4.js} +61 -54
- package/{docCreateCommands-WRG2JLGM.js → docCreateCommands-AZSK4NAG.js} +48 -44
- package/{docDeleteCommands-SHWJIBJS.js → docDeleteCommands-DDJMSMFZ.js} +49 -45
- package/{docReadCommands-WJN3WT6O.js → docReadCommands-5F5Q6EBZ.js} +47 -43
- package/{docStore-HUPQ2FSS.js → docStore-HW2RDZDM.js} +17 -13
- package/{docUpdateCommands-IE32IL6O.js → docUpdateCommands-XPNPVZOC.js} +48 -44
- package/{fetchMessages-EIU7UFFK.js → fetchMessages-3PXAHKCR.js} +5 -5
- package/{getPricing-LUSEABA6.js → getPricing-DOBBZLOK.js} +4 -4
- package/{handleSendMessageAction-DFPMQ7YM.js → handleSendMessageAction-IOXE7ILC.js} +109 -42
- package/index.js +87 -884
- package/{lib-FRRS27KN.js → lib-PU2G2MSO.js} +523 -191
- package/{localDialogRead-BTFJ4V2I.js → localDialogRead-UYCKO7YZ.js} +2 -2
- package/{localRuntimeAuthority-6IR6BBXE.js → localRuntimeAuthority-TU6OBC76.js} +9 -6
- package/{localRuntimeDb-SYQGUF4U.js → localRuntimeDb-VKWVOPPI.js} +1 -1
- package/{machineCommands-OL4NLMXG.js → machineCommands-Q7TDGM6P.js} +96 -86
- package/machineWsRunDispatch-T5VFOQ3R.js +154 -0
- package/{memberThunks-P2ECUJ56.js → memberThunks-5S5D3N4U.js} +20 -18
- package/{models-T3SG6MJ5.js → models-PQU25T6Q.js} +2 -2
- package/oauthTokenStore-ITEB663N.js +23 -0
- package/package.json +1 -1
- package/processSpawn-SOAV3FEV.js +11 -0
- package/profileConfig-ZGOFORWV.js +43 -0
- package/{providerPresetApply-FG6NZ57W.js → providerPresetApply-HAQWVAQX.js} +7 -7
- package/{providerRegistry-757OWH3O.js → providerRegistry-5FGWB3X5.js} +11 -7
- package/{read-COE3ZYR6.js → read-LSYFLSIM.js} +8 -7
- package/{readDocTool-5USN4A6V.js → readDocTool-XWRXV3DR.js} +5 -3
- package/{readlineWorkspace-BOENUIW2.js → readlineWorkspace-25U6P3DG.js} +2595 -2031
- package/{removeDialogAgentAction-J6X5QMTA.js → removeDialogAgentAction-4TEFC3VL.js} +22 -26
- package/{runAgentClientLoop-5ZA62FBA.js → runAgentClientLoop-CZOYWHDN.js} +78 -71
- package/{runtimeDoctorCommands-X6WDBEQX.js → runtimeDoctorCommands-PIVSBZRZ.js} +4 -4
- package/runtimeModeArgs-2Y7BALTO.js +31 -0
- package/{setDialogExtraReferencesAction-WX5VTY6O.js → setDialogExtraReferencesAction-LSEN44OY.js} +16 -14
- package/{setPrimaryDialogAgentAction-FN22THHT.js → setPrimaryDialogAgentAction-SR366X5A.js} +23 -27
- package/{chunk-GP5LKBUZ.js → settingThunks-CTVPPGIN.js} +226 -940
- package/{skillDiscovery-CYUCJMAG.js → skillDiscovery-ZBU76COE.js} +3 -3
- package/{slateUtils-RIZES3PV.js → slateUtils-NGV2NMKM.js} +1 -1
- package/{spaceCommands-5GLCWZPO.js → spaceCommands-3UK63WPE.js} +51 -47
- package/{streamAgentChatTurn-6UZJMYRB.js → streamAgentChatTurn-LV6ZWUD4.js} +214 -114
- package/{switchDialogAgentAction-LVTEV3FR.js → switchDialogAgentAction-M6NAFOOU.js} +19 -20
- package/{tableCommands-O6NWHFKV.js → tableCommands-6U4BMLRR.js} +10 -10
- package/{toolApiClient-QVJ6HDNN.js → toolApiClient-AD7CXTA4.js} +4 -3
- package/tools-UJOV6CQZ.js +117 -0
- package/{tuiSummaryLlmCaller-OHHFTHMG.js → tuiSummaryLlmCaller-DEH7ZEM6.js} +25 -23
- package/{updateCommands-2M74UL7P.js → updateCommands-4EHDLF5J.js} +3 -3
- package/{updateDialogTitleAction-QTKNIURB.js → updateDialogTitleAction-JYXKIBNJ.js} +84 -45
- package/action-P4TNFGAD.js +0 -31
- package/agentListCommands-B2V4YAC4.js +0 -410
- package/agentRecordCommands-UTHKMMJY.js +0 -128
- package/agentRunCommand-D4OBAOVW.js +0 -156
- package/browser-image-compression-MFDTD7K6.js +0 -1763
- package/chatQueueReduxAdapter-2P6NFX64.js +0 -186
- package/chunk-CQ3WA2NE.js +0 -299
- package/chunk-M76ECQRD.js +0 -13658
- package/chunk-MEYIRKDN.js +0 -8967
- package/chunk-PUOC4YRO.js +0 -394
- package/chunk-Q5FJJ6XI.js +0 -103
- package/chunk-S7Z2HMCN.js +0 -25
- package/chunk-T75QD6AB.js +0 -20923
- package/chunk-Y5GCAMGP.js +0 -9
- package/chunk-YPREESF4.js +0 -225
- package/createDialogAction-NGG7YVNU.js +0 -65
- package/machineWsRunDispatch-64SG2RUI.js +0 -144
- package/settingSlice-P4ZW7K5X.js +0 -204
- package/syncMapping-N6RGXGBW.js +0 -437
- package/tools-KMGFWO43.js +0 -110
- package/{chunk-X7HHHIOZ.js → chunk-Y6ROFCZO.js} +0 -0
- package/{db-WK5MDZVN.js → db-VQSAOWAO.js} +1 -1
|
@@ -180,6 +180,36 @@ function resolveCooldownGate(input, now) {
|
|
|
180
180
|
}
|
|
181
181
|
return now - lastProbeAt >= PROBE_INTERVAL_MS ? "probe" : "blocked";
|
|
182
182
|
}
|
|
183
|
+
function resolveCredentialKey(agent) {
|
|
184
|
+
if (!agent || typeof agent !== "object") return void 0;
|
|
185
|
+
for (const field of ["apiKeyRef", "credentialRef"]) {
|
|
186
|
+
const value = agent[field];
|
|
187
|
+
if (typeof value === "string") {
|
|
188
|
+
const trimmed = value.trim();
|
|
189
|
+
if (trimmed) return trimmed;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return void 0;
|
|
193
|
+
}
|
|
194
|
+
function resolveCredentialKeyWithFallback(agent) {
|
|
195
|
+
const byRef = resolveCredentialKey(agent);
|
|
196
|
+
if (byRef) return byRef;
|
|
197
|
+
if (!agent || typeof agent !== "object") return void 0;
|
|
198
|
+
const endpoint = agent.customProviderUrl;
|
|
199
|
+
if (typeof endpoint === "string") {
|
|
200
|
+
const trimmed = endpoint.trim();
|
|
201
|
+
if (trimmed) {
|
|
202
|
+
try {
|
|
203
|
+
const origin = new URL(trimmed).origin;
|
|
204
|
+
if (origin && origin !== "null") return `custom-endpoint:${origin}`;
|
|
205
|
+
} catch {
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
const key = agent.key;
|
|
210
|
+
if (typeof key === "string" && key.trim()) return `custom-agent:${key.trim()}`;
|
|
211
|
+
return void 0;
|
|
212
|
+
}
|
|
183
213
|
|
|
184
214
|
export {
|
|
185
215
|
QUOTA_ERROR_PATTERNS,
|
|
@@ -188,5 +218,6 @@ export {
|
|
|
188
218
|
isQuotaLimited403Body,
|
|
189
219
|
resolveAvailabilityAction,
|
|
190
220
|
mergeAvailabilityDeadline,
|
|
191
|
-
resolveCooldownGate
|
|
221
|
+
resolveCooldownGate,
|
|
222
|
+
resolveCredentialKeyWithFallback
|
|
192
223
|
};
|
|
@@ -206,9 +206,12 @@ export {
|
|
|
206
206
|
resolveNoloStateDir,
|
|
207
207
|
getLegacyCredentialPath,
|
|
208
208
|
migrateLegacyCredentialFile,
|
|
209
|
+
DEFAULT_REFRESH_SKEW_MS,
|
|
209
210
|
getCredentialsDir,
|
|
211
|
+
getCredentialPath,
|
|
210
212
|
readOAuthCredential,
|
|
211
213
|
writeOAuthCredential,
|
|
214
|
+
removeOAuthCredential,
|
|
212
215
|
createOAuthTokenStore,
|
|
213
216
|
isTokenExpired,
|
|
214
217
|
resolveFreshAccessToken
|
|
@@ -209,6 +209,13 @@ var BUILTIN_AGENT_CATALOG = [
|
|
|
209
209
|
provider: "nolo",
|
|
210
210
|
model: "gemini-3.8-flash"
|
|
211
211
|
},
|
|
212
|
+
{
|
|
213
|
+
id: "01GEM4ARGPB00000001TDQ94E",
|
|
214
|
+
group: "public",
|
|
215
|
+
name: "Gemini 4 Argon",
|
|
216
|
+
provider: "nolo",
|
|
217
|
+
model: "gemini-4-argon"
|
|
218
|
+
},
|
|
212
219
|
{
|
|
213
220
|
id: "01GROK46PLAZ00000001PTJZ3K",
|
|
214
221
|
group: "public",
|
|
@@ -296,7 +303,20 @@ var BUILTIN_CHROME_OPERATOR_AGENT_KEY = publicAgentKey(BUILTIN_CHROME_OPERATOR_A
|
|
|
296
303
|
var BUILTIN_PLATFORM_AGENT_KEYS = builtinPlatformEntries().map(
|
|
297
304
|
(e) => publicAgentKey(e.id)
|
|
298
305
|
);
|
|
299
|
-
var
|
|
306
|
+
var BUILTIN_PLATFORM_AGENT_ID_SET = new Set(
|
|
307
|
+
builtinPlatformEntries().map((e) => e.id)
|
|
308
|
+
);
|
|
309
|
+
if (builtinPlatformEntries().some((e) => e.id.includes("-"))) {
|
|
310
|
+
throw new Error("builtin platform agent ids must not contain hyphens");
|
|
311
|
+
}
|
|
312
|
+
var parseBuiltinPlatformAgentId = (key) => {
|
|
313
|
+
if (typeof key !== "string") return null;
|
|
314
|
+
if (key !== key.slice(key.lastIndexOf("-") + 1) && !key.startsWith("agent-")) {
|
|
315
|
+
return null;
|
|
316
|
+
}
|
|
317
|
+
const id = key.slice(key.lastIndexOf("-") + 1);
|
|
318
|
+
return BUILTIN_PLATFORM_AGENT_ID_SET.has(id) ? id : null;
|
|
319
|
+
};
|
|
300
320
|
var PUBLIC_DEEPSEEK_V4_FLASH_AGENT_ID = entry("01DSV4FLASHPB00000000JFPFD").id;
|
|
301
321
|
var PUBLIC_DEEPSEEK_V4_FLASH_AGENT_KEY = publicAgentKey(PUBLIC_DEEPSEEK_V4_FLASH_AGENT_ID);
|
|
302
322
|
var PUBLIC_DEEPSEEK_V4_PRO_AGENT_ID = entry("01DSV4PRONPB00000001VIR3EK").id;
|
|
@@ -322,7 +342,7 @@ var SYSTEM_BUILTIN_TRUSTED_AGENT_KEY_SET = new Set(
|
|
|
322
342
|
SYSTEM_BUILTIN_TRUSTED_AGENT_KEYS
|
|
323
343
|
);
|
|
324
344
|
var isSystemBuiltinTrustedAgentKey = (key) => typeof key === "string" && SYSTEM_BUILTIN_TRUSTED_AGENT_KEY_SET.has(key);
|
|
325
|
-
var isBuiltinPlatformAgentKey = (key) =>
|
|
345
|
+
var isBuiltinPlatformAgentKey = (key) => parseBuiltinPlatformAgentId(key) !== null;
|
|
326
346
|
|
|
327
347
|
export {
|
|
328
348
|
builtinAgentCatalogEntryById,
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CHROME_CONNECTOR_LEGACY_TOOL_ALIASES
|
|
3
|
+
} from "./chunk-LWLNLZC5.js";
|
|
4
|
+
|
|
1
5
|
// packages/agent-runtime/toolNameAliases.ts
|
|
2
6
|
var LEGACY_TOOL_NAME_ALIASES = {
|
|
7
|
+
// Nolo Browser Connector: legacy chrome_* → canonical browser_*
|
|
8
|
+
...CHROME_CONNECTOR_LEGACY_TOOL_ALIASES,
|
|
3
9
|
createPage: "createDoc",
|
|
4
10
|
updatePage: "updateDoc",
|
|
5
11
|
update_page: "updateDoc",
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
BUILTIN_NOLO_AGENT_KEY
|
|
3
|
-
} from "./chunk-BNGW5ASC.js";
|
|
4
|
-
|
|
5
1
|
// packages/ai/tools/agentCapabilities.ts
|
|
6
2
|
var SYSTEM_AGENT_CAPABILITIES = [
|
|
7
3
|
{
|
|
@@ -20,14 +16,6 @@ var SYSTEM_AGENT_CAPABILITIES = [
|
|
|
20
16
|
defaultEnabled: false,
|
|
21
17
|
icon: "\u{1F578}\uFE0F"
|
|
22
18
|
},
|
|
23
|
-
{
|
|
24
|
-
id: "conversation-todo",
|
|
25
|
-
label: "\u5BF9\u8BDD Todo",
|
|
26
|
-
description: "\u5728\u591A\u6B65\u9AA4\u5BF9\u8BDD\u4E2D\u663E\u793A\u548C\u66F4\u65B0\u4EFB\u52A1\u8FDB\u5EA6\u3002\u5173\u95ED\u540E\uFF0CAgent \u4E0D\u4F1A\u4F7F\u7528\u5BF9\u8BDD\u5185 Todo \u5DE5\u5177\u3002",
|
|
27
|
-
tools: ["setTodoList"],
|
|
28
|
-
defaultEnabled: true,
|
|
29
|
-
icon: "\u2611\uFE0F"
|
|
30
|
-
},
|
|
31
19
|
{
|
|
32
20
|
id: "agent-orchestration",
|
|
33
21
|
label: "\u591A agent \u7F16\u6392",
|
|
@@ -47,17 +35,8 @@ var DEFAULT_SYSTEM_AGENT_CAPABILITIES = Object.fromEntries(
|
|
|
47
35
|
])
|
|
48
36
|
);
|
|
49
37
|
|
|
50
|
-
// packages/core/init.ts
|
|
51
|
-
var nolotusId = "0e95801d90";
|
|
52
|
-
var ADMIN_IDS = /* @__PURE__ */ new Set([nolotusId]);
|
|
53
|
-
var isSystemAdmin = (userId) => userId != null && ADMIN_IDS.has(userId);
|
|
54
|
-
var noloAgentId = BUILTIN_NOLO_AGENT_KEY;
|
|
55
|
-
|
|
56
38
|
export {
|
|
57
39
|
SYSTEM_AGENT_CAPABILITIES,
|
|
58
40
|
SYSTEM_AGENT_CAPABILITY_IDS,
|
|
59
|
-
DEFAULT_SYSTEM_AGENT_CAPABILITIES
|
|
60
|
-
nolotusId,
|
|
61
|
-
isSystemAdmin,
|
|
62
|
-
noloAgentId
|
|
41
|
+
DEFAULT_SYSTEM_AGENT_CAPABILITIES
|
|
63
42
|
};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getModelConfig
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CDEEFJXN.js";
|
|
4
4
|
import {
|
|
5
5
|
isPlatformHostedDeepseekModel,
|
|
6
6
|
isPlatformHostedOpenAIImageModel,
|
|
7
7
|
resolvePlatformHostedRouting
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-SZC4REES.js";
|
|
9
9
|
import {
|
|
10
10
|
asTrimmedLowercaseString
|
|
11
11
|
} from "./chunk-QSJ3HFEF.js";
|
|
@@ -43,18 +43,22 @@ function isOpenAiResponsesModel(args) {
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
if (provider === "deepseek" || provider === "nolo" || provider === "ollama-cloud") {
|
|
46
|
+
const hostedRoute = resolvePlatformHostedRouting(args.model);
|
|
47
|
+
if (hostedRoute) return hostedRoute.wire === "responses";
|
|
46
48
|
if (isPlatformHostedDeepseekModel(args.model)) return true;
|
|
47
49
|
if (isPlatformHostedOpenAIImageModel(args.model)) return true;
|
|
48
50
|
}
|
|
49
51
|
return false;
|
|
50
52
|
}
|
|
53
|
+
var PLATFORM_HOSTED_RESPONSES_GATEWAY_MARKER = "nolo-platform-gateway://responses";
|
|
54
|
+
var CLOUDFLARE_ACCOUNT_ID_PLACEHOLDER = "{account}";
|
|
51
55
|
function resolvePlatformResponsesEndpoint(provider, model) {
|
|
52
56
|
const normalized = asTrimmedLowercaseString(provider);
|
|
53
57
|
if (normalized === "openai") return OPENAI_RESPONSES_ENDPOINT;
|
|
54
58
|
if (normalized === "deepseek" || normalized === "nolo" || normalized === "ollama-cloud") {
|
|
55
59
|
const route = resolvePlatformHostedRouting(model);
|
|
56
60
|
if (route && route.wire === "responses") {
|
|
57
|
-
return route.endpoint;
|
|
61
|
+
return route.endpoint.includes(CLOUDFLARE_ACCOUNT_ID_PLACEHOLDER) ? PLATFORM_HOSTED_RESPONSES_GATEWAY_MARKER : route.endpoint;
|
|
58
62
|
}
|
|
59
63
|
if (!model || isPlatformHostedDeepseekModel(model)) {
|
|
60
64
|
return DEEPSEEK_RESPONSES_ENDPOINT;
|
|
@@ -72,7 +76,7 @@ function resolvePlatformChatCompletionsEndpoint(provider, model) {
|
|
|
72
76
|
const aliased = PLATFORM_PROVIDER_ENDPOINT_ALIASES[key] ?? key;
|
|
73
77
|
if (aliased === "nolo") {
|
|
74
78
|
const route = resolvePlatformHostedRouting(model);
|
|
75
|
-
if (route && route.wire
|
|
79
|
+
if (route && route.wire === "chat.completions") {
|
|
76
80
|
return route.endpoint;
|
|
77
81
|
}
|
|
78
82
|
return void 0;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
selectCurrentServer,
|
|
3
3
|
selectRemoteServers
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-NWENLDMM.js";
|
|
5
5
|
import {
|
|
6
6
|
createUserKey,
|
|
7
7
|
extractAgentInfo,
|
|
@@ -10,14 +10,14 @@ import {
|
|
|
10
10
|
sanitizeShareData,
|
|
11
11
|
shareKey,
|
|
12
12
|
toNonEmptyString
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-OKGVNZTL.js";
|
|
14
14
|
import {
|
|
15
15
|
noloDeleteRequest,
|
|
16
16
|
noloWriteRequest
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-VY6VFGKR.js";
|
|
18
18
|
import {
|
|
19
19
|
normalizeTimeFields
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-HIM3FCLF.js";
|
|
21
21
|
import {
|
|
22
22
|
selectIdentityUser,
|
|
23
23
|
selectIdentityUserId
|
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildLocalAgentLookupKeys,
|
|
3
3
|
shouldReadAgentKeyRemotely
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-KA5O5KQL.js";
|
|
5
5
|
import {
|
|
6
6
|
resolveCliAgentKeyInput
|
|
7
7
|
} from "./chunk-SV5IJK6K.js";
|
|
8
8
|
import {
|
|
9
9
|
toErrorMessage
|
|
10
10
|
} from "./chunk-HNMXYYJR.js";
|
|
11
|
-
import {
|
|
12
|
-
readPipeText,
|
|
13
|
-
spawnProcess
|
|
14
|
-
} from "./chunk-X7HHHIOZ.js";
|
|
15
11
|
import {
|
|
16
12
|
parseUserIdFromAuthToken,
|
|
17
13
|
readOption,
|
|
@@ -19,9 +15,13 @@ import {
|
|
|
19
15
|
resolveServerCandidates,
|
|
20
16
|
resolveServerUrl
|
|
21
17
|
} from "./chunk-A7GB5UGH.js";
|
|
18
|
+
import {
|
|
19
|
+
readPipeText,
|
|
20
|
+
spawnProcess
|
|
21
|
+
} from "./chunk-Y6ROFCZO.js";
|
|
22
22
|
import {
|
|
23
23
|
createAgentKey
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-OKGVNZTL.js";
|
|
25
25
|
|
|
26
26
|
// packages/cli/agentRecordHelpers.ts
|
|
27
27
|
import { readFileSync } from "node:fs";
|
|
@@ -252,6 +252,30 @@ async function writeAgentRecord(args) {
|
|
|
252
252
|
throw new Error(`write failed: HTTP ${res.status} ${JSON.stringify(data)}`);
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
|
+
async function invalidateAgentRecordCache(args) {
|
|
256
|
+
const invalidated = [];
|
|
257
|
+
for (const key of new Set(args.keys.filter((k) => typeof k === "string" && k))) {
|
|
258
|
+
try {
|
|
259
|
+
await args.db.del(key);
|
|
260
|
+
invalidated.push(key);
|
|
261
|
+
} catch {
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return invalidated;
|
|
265
|
+
}
|
|
266
|
+
async function refreshAgentRecordCache(args) {
|
|
267
|
+
try {
|
|
268
|
+
await args.db.put(args.agentKey, {
|
|
269
|
+
...args.record,
|
|
270
|
+
dbKey: args.agentKey,
|
|
271
|
+
key: args.record?.key || args.agentKey,
|
|
272
|
+
serverOrigin: args.serverOrigin,
|
|
273
|
+
cachedAt: Date.now()
|
|
274
|
+
});
|
|
275
|
+
} catch {
|
|
276
|
+
await invalidateAgentRecordCache({ db: args.db, keys: [args.agentKey] });
|
|
277
|
+
}
|
|
278
|
+
}
|
|
255
279
|
async function resolveAgentRecordFromHybridStore(args) {
|
|
256
280
|
const agentKey = resolveCliAgentKeyInput(args.agentInput);
|
|
257
281
|
const authToken = args.cliArgs ? resolveAuthToken(args.cliArgs, args.env) : resolveAuthToken(args.env);
|
|
@@ -484,7 +508,7 @@ function parseAgentUpdateArgs(args) {
|
|
|
484
508
|
);
|
|
485
509
|
const expiresAt = parseIsoTimestampOption(readOption(args, "--expires-at"), "--expires-at");
|
|
486
510
|
const handle = readOption(args, "--handle")?.trim();
|
|
487
|
-
const promptSources = [prompt, promptFile, promptDoc].filter(
|
|
511
|
+
const promptSources = [prompt, promptFile, promptDoc].filter((value) => value !== void 0);
|
|
488
512
|
if (promptSources.length > 1) {
|
|
489
513
|
throw new Error("--prompt / --prompt-file / --prompt-doc are mutually exclusive.");
|
|
490
514
|
}
|
|
@@ -492,7 +516,7 @@ function parseAgentUpdateArgs(args) {
|
|
|
492
516
|
if (cliProvider) updates.cliProvider = cliProvider;
|
|
493
517
|
if (apiSource) updates.apiSource = apiSource;
|
|
494
518
|
if (provider) updates.provider = provider;
|
|
495
|
-
if (prompt) updates.prompt = prompt;
|
|
519
|
+
if (prompt !== void 0) updates.prompt = prompt;
|
|
496
520
|
if (promptFile) updates.prompt = readFileSync(promptFile, "utf8");
|
|
497
521
|
if (tools) updates.tools = parseJsonishValue(tools);
|
|
498
522
|
if (name) updates.name = name;
|
|
@@ -511,7 +535,7 @@ function parseAgentUpdateArgs(args) {
|
|
|
511
535
|
updates[entry.slice(0, index)] = parseJsonishValue(entry.slice(index + 1));
|
|
512
536
|
}
|
|
513
537
|
if (Object.keys(updates).length === 0) {
|
|
514
|
-
if (!promptDoc && !copyProviderFrom) {
|
|
538
|
+
if (!promptDoc && !copyProviderFrom && !presetId) {
|
|
515
539
|
throw new Error("No updates provided. Use --model / --cli-provider / --api-source / --field key=value.");
|
|
516
540
|
}
|
|
517
541
|
}
|
|
@@ -523,21 +547,19 @@ async function buildCreatedAgentRecord(args) {
|
|
|
523
547
|
const resolvedAgentInput = resolveCliAgentKeyInput(args.parsed.agentInput);
|
|
524
548
|
const agentKey = resolvedAgentInput.startsWith("agent-") ? resolvedAgentInput : createAgentKey.private(userId || "local", resolvedAgentInput);
|
|
525
549
|
if (args.parsed.presetId) {
|
|
526
|
-
const { resolveProviderPresetFields } = await import("./providerPresetApply-
|
|
550
|
+
const { resolveProviderPresetFields } = await import("./providerPresetApply-HAQWVAQX.js");
|
|
527
551
|
const fields = resolveProviderPresetFields(args.parsed.presetId);
|
|
528
552
|
if (fields.kind === "manual") {
|
|
529
553
|
throw new Error(
|
|
530
554
|
`unknown --preset "${args.parsed.presetId}". Run \`nolo agent providers\` to list preset ids.`
|
|
531
555
|
);
|
|
532
556
|
}
|
|
533
|
-
if (fields.kind === "oauth" || fields.requiresDesktopOAuth) {
|
|
534
|
-
throw new Error(
|
|
535
|
-
`--preset "${args.parsed.presetId}" is an OAuth subscription; create it in Nolo Desktop (OAuth login required).`
|
|
536
|
-
);
|
|
537
|
-
}
|
|
538
557
|
const u = args.parsed.updates;
|
|
539
558
|
u.apiSource = "custom";
|
|
540
559
|
u.provider = u.provider ?? fields.provider;
|
|
560
|
+
if (fields.apiKeyRef && !u.apiKeyRef) {
|
|
561
|
+
u.apiKeyRef = fields.apiKeyRef;
|
|
562
|
+
}
|
|
541
563
|
if (fields.customProviderUrl && !u.customProviderUrl) {
|
|
542
564
|
u.customProviderUrl = fields.customProviderUrl;
|
|
543
565
|
}
|
|
@@ -670,6 +692,8 @@ export {
|
|
|
670
692
|
queryUserRecords,
|
|
671
693
|
deleteDbRecord,
|
|
672
694
|
writeAgentRecord,
|
|
695
|
+
invalidateAgentRecordCache,
|
|
696
|
+
refreshAgentRecordCache,
|
|
673
697
|
resolveAgentRecordFromHybridStore,
|
|
674
698
|
agentRecordHasConfiguredCredential,
|
|
675
699
|
sanitizeAgentRecordForCliOutput,
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
trimTrailingSlash
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BIPGGSJS.js";
|
|
4
4
|
import {
|
|
5
5
|
toErrorMessage
|
|
6
6
|
} from "./chunk-HNMXYYJR.js";
|
|
7
|
-
import {
|
|
8
|
-
asOptionalFiniteNumber
|
|
9
|
-
} from "./chunk-WWC7I6TA.js";
|
|
10
7
|
import {
|
|
11
8
|
asTrimmedLowercaseString
|
|
12
9
|
} from "./chunk-QSJ3HFEF.js";
|
|
10
|
+
import {
|
|
11
|
+
asOptionalFiniteNumber
|
|
12
|
+
} from "./chunk-WWC7I6TA.js";
|
|
13
13
|
import {
|
|
14
14
|
asOptionalTrimmedString
|
|
15
15
|
} from "./chunk-G3SUCT4W.js";
|
|
@@ -41,7 +41,7 @@ var ANTIGRAVITY_CLOUD_CODE_BASE_URL = "https://daily-cloudcode-pa.googleapis.com
|
|
|
41
41
|
var ANTIGRAVITY_CLOUD_CODE_HOST = "cloudcode-pa.googleapis.com";
|
|
42
42
|
var ANTIGRAVITY_LEGACY_GENERIC_BASE_RE = /^https?:\/\/cloudcode-pa\.googleapis\.com$/i;
|
|
43
43
|
function getAntigravityUserAgent() {
|
|
44
|
-
const version = process.env.NOLO_ANTIGRAVITY_VERSION || "2.1
|
|
44
|
+
const version = process.env.NOLO_ANTIGRAVITY_VERSION || "2.23.1";
|
|
45
45
|
const os = process.platform === "win32" ? "windows" : process.platform;
|
|
46
46
|
const arch = process.arch === "x64" ? "amd64" : process.arch === "ia32" ? "386" : process.arch;
|
|
47
47
|
return `antigravity/hub/${version} ${os}/${arch}`;
|
|
@@ -129,7 +129,9 @@ async function refreshAntigravityToken(credential, deps = {}) {
|
|
|
129
129
|
payload = {};
|
|
130
130
|
}
|
|
131
131
|
if (!response.ok) {
|
|
132
|
-
const
|
|
132
|
+
const errorCode = typeof payload.error === "string" && payload.error.trim() ? payload.error.trim() : void 0;
|
|
133
|
+
const errorDescription = typeof payload.error_description === "string" && payload.error_description.trim() ? payload.error_description.trim() : void 0;
|
|
134
|
+
const detail = (errorCode && errorDescription && errorDescription !== errorCode ? `${errorCode}: ${errorDescription}` : errorCode ?? errorDescription ?? rawBodyText.trim()) || `HTTP ${response.status}`;
|
|
133
135
|
throw new Error(`Antigravity token refresh failed: ${detail}`);
|
|
134
136
|
}
|
|
135
137
|
if (typeof payload.access_token !== "string" || !payload.access_token.trim()) {
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isImageUrlPart,
|
|
3
3
|
isOllamaEndpoint
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-UM7TA3K4.js";
|
|
5
5
|
import {
|
|
6
6
|
AGENT_SELECTION_PRIORITY_INSTRUCTIONS
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-SJKULPGX.js";
|
|
8
8
|
import {
|
|
9
9
|
getModelContextWindow
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-ECFHBYUW.js";
|
|
11
11
|
import {
|
|
12
12
|
estimateTokenCount
|
|
13
13
|
} from "./chunk-PSCNXBYA.js";
|
|
14
14
|
import {
|
|
15
15
|
canonicalizeToolNames
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-IHPDK6UD.js";
|
|
17
17
|
import {
|
|
18
18
|
PLATFORM_HOSTED_KIMI_K3_MODEL,
|
|
19
19
|
isFireworksKimiModel,
|
|
20
20
|
isNoloHostedProvider
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-SZC4REES.js";
|
|
22
22
|
import {
|
|
23
23
|
asTrimmedLowercaseString
|
|
24
24
|
} from "./chunk-QSJ3HFEF.js";
|
|
@@ -37,6 +37,12 @@ var buildIdentityBlock = (input) => {
|
|
|
37
37
|
return lines.join("\n");
|
|
38
38
|
};
|
|
39
39
|
|
|
40
|
+
// packages/agent-runtime/deleteSafety.ts
|
|
41
|
+
var DELETE_SAFETY_RED_LINE = [
|
|
42
|
+
"\u3010\u5220\u9664\u5B89\u5168\u7EA2\u7EBF \xB7 \u6700\u9AD8\u4F18\u5148\u7EA7\u3011",
|
|
43
|
+
"\u4EFB\u4F55\u5220\u9664\u64CD\u4F5C\uFF08\u6587\u4EF6\u3001\u6570\u636E\u3001\u5E73\u53F0/\u8FDC\u7AEF\u5185\u5BB9\u3001\u6D88\u606F\u7B49\uFF0C\u65E0\u8BBA\u5355\u6761\u6216\u6279\u91CF\uFF09\u6267\u884C\u524D\uFF0C\u5FC5\u987B\u5148\u5411\u7528\u6237\u5448\u73B0\u5B8C\u6574\u5F85\u5220\u6E05\u5355\uFF08\u540D\u79F0/\u8DEF\u5F84/\u6807\u9898\u7B49\u53EF\u8BC6\u522B\u4FE1\u606F\uFF0C\u4E0D\u5F97\u622A\u65AD\uFF09\uFF0C\u5E76\u83B7\u5F97\u7528\u6237\u660E\u786E\u786E\u8BA4\u540E\u624D\u53EF\u6267\u884C\uFF1B\u4E25\u7981\u7528\u6A21\u7CCA\u5B9A\u4F4D\uFF08\u5982\u201C\u5217\u8868\u6700\u4E0B\u65B9\u201D\uFF09\u6307\u4EE3\u5220\u9664\u76EE\u6807\uFF0C\u4E25\u7981\u5148\u5220\u540E\u62A5\u3002\uFF082026-09-26 \u6279\u91CF\u8BEF\u5220\u4E8B\u6545\u6559\u8BAD\uFF09"
|
|
44
|
+
].join("\n");
|
|
45
|
+
|
|
40
46
|
// packages/agent-runtime/contextLayerContract.ts
|
|
41
47
|
var buildContextLayerContractBlock = (options = {}) => {
|
|
42
48
|
const lines = [
|
|
@@ -258,7 +264,7 @@ ${AGENT_SELECTION_PRIORITY_INSTRUCTIONS}
|
|
|
258
264
|
var AGENT_COMMIT_REVIEW_GATE = `**commit \u524D\u786C\u95E8\uFF08\u9636\u6BB5\u5212\u5206\u4E0E\u72EC\u7ACB\u5BA1\u67E5\uFF09**\uFF1A
|
|
259
265
|
- **\u9636\u6BB5\u533A\u5206**\uFF1A\u4E25\u683C\u533A\u5206\u300C\u5B9E\u73B0/\u6784\u5EFA/\u5B89\u88C5/\u7528\u6237\u6D4B\u8BD5/\u6839\u636E\u53CD\u9988\u8FED\u4EE3\u300D\u4E0E\u300C\u51C6\u5907\u63D0\u4EA4/\u5408\u5E76\u300D\u9636\u6BB5\u3002UI/\u524D\u7AEF\u7B49\u9700\u7528\u6237\u9A8C\u6536\u7684\u529F\u80FD\u5728\u5B9E\u73B0\u9636\u6BB5**\u4E0D\u5F97\u89E6\u53D1\u6216\u7B49\u5F85\u6700\u7EC8\u72EC\u7ACB review**\uFF0C\u5148\u4EA4\u4ED8\u53EF\u6D4B\u8BD5\u4EA7\u7269\uFF0C\u7B49\u5F85\u7528\u6237\u6D4B\u8BD5\u4E0E\u53CD\u9988\uFF1B\u5B89\u5168\u5173\u952E\u53D8\u66F4\u7684\u5FC5\u8981\u5BA1\u67E5\u4E0D\u53D7\u5F71\u54CD\uFF1B\u72EC\u7ACB\u7684\u53EA\u8BFB\u5BA1\u8BA1\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u7684\u63D0\u524D review \u53EF\u63D0\u524D\u8FDB\u884C\uFF0C\u4F46\u4E0D\u5F97\u963B\u585E\u7528\u6237\u6D4B\u8BD5\u6216\u4F5C\u4E3A\u63D0\u524D\u7684\u63D0\u4EA4\u95E8\u3002
|
|
260
266
|
- **\u6700\u7EC8\u5BA1\u67E5\u65F6\u673A**\uFF1A\u53EA\u6709\u5F53\u7528\u6237\u660E\u786E\u786E\u8BA4\u51C6\u5907\u63D0\u4EA4/\u5408\u5E76\u65F6\uFF0C\u624D\u6D3E\u53D1\u6700\u7EC8 review\u3002\u9664 \u22642 \u6B65\u96F6\u903B\u8F91\u98CE\u9669\u7684\u673A\u68B0\u6539\u52A8\u5916\uFF0C\u6240\u6709\u4EE3\u7801\u53D8\u66F4 commit \u524D\u5FC5\u987B\u5148\u6D3E\u4E0E\u6267\u884C\u8005\u4E0D\u540C\u5B9E\u4F8B\uFF08\u4E0A\u4E0B\u6587\u9694\u79BB\u5373\u53EF\uFF09\u7684 reviewer \u5BA1\u5DE5\u4F5C\u533A diff\uFF0Creviewer \u4E0D\u53EF\u662F\u672C\u6B21\u6539\u52A8\u7684\u4F5C\u8005\uFF1B\u65E0 review \u4E0D commit\u3002\u63D0\u4EA4\u524D review \u5FAA\u73AF\uFF1A\u7528\u6237\u786E\u8BA4\u51C6\u5907\u63D0\u4EA4 \u2192 startAgentRun \u6D3E reviewer \u5BA1 diff \u2192 \u4FEE finding \u2192 \u590D\u5BA1\u76F4\u5230 APPROVE\uFF08\u65E0 CRITICAL/HIGH\uFF09\u624D\u63D0\u4EA4\uFF1BBLOCK \u5FC5\u4FEE\u3001WARNING \u62A5\u7528\u6237\u3002
|
|
261
|
-
- **review \u8BC1\u636E\u786C\u95E8**\uFF1A\u4EC5\u5F53 reviewer \u8FD4\u56DE\u53EF\u8BFB\u7684\u6700\u7EC8\u6587\u672C\u4E14\u660E\u786E\u542B APPROVE\u3001\u65E0 CRITICAL/HIGH \u624D\u7B97\u901A\u8FC7\uFF1Bdone\u3001exit 0\u3001\u7A7A dialog\u3001messagesCount=0\u3001agentReply=null\u3001\u8D85\u65F6\u5747\u89C6\u4E3A\u672A\u5BA1\u67E5\uFF0C\u4E25\u7981\u63D0\u4EA4\u3002review context contract\uFF1A\u6D3E reviewer \u524D\u6309\u6539\u52A8\u8303\u56F4\u52A0\u8F7D\u8BE5\u4ED3\u5E93\u7684\u9879\u76EE\u6307\u4EE4\uFF08AGENTS.md \u7C7B\uFF09\u3001\u5DE5\u4F5C\u6D41/\u8BA1\u5212\u6587\u6863\u3001\u547D\u4E2D\u7684 skill \u4E0E references\uFF0C\u4EE5\u53CA touched files \u7684\u5B8C\u6574 diff\uFF0Cbrief \u91CC\u5217\u51FA\u5B9E\u9645\u52A0\u8F7D\u7684 context\uFF1B\u5177\u4F53\u6E05\u5355\u4EE5\u8BE5\u4ED3\u5E93\u81EA\u5DF1\u7684 review \u89C4\u8303\u4E3A\u51C6\uFF08bun-nolo \u89C1 nolo-plan\u300C\u5408\u5E76\u95E8\u300D\u8282\uFF09\u3002\u5BA1\u67E5\u6E05\u5355\uFF1A\u53EF\u8BFB\u6027/\u53EF\u641C\u7D22\u6027\u3001\u53EF\u7EF4\u62A4\u6027/\u5220\u9664\u6210\u672C\u3001\u53EF\u7EC4\u5408\u6027/\u590D\u7528\u3001\u91CD\u590D\u5B9E\u73B0\u3001\u53EF\u5220\u9664\u4EE3\u7801\u3002\u82E5\u5904\u4E8E\u5355 Agent \u72EC\u5360\u73AF\u5883\u3001\u5176\u4ED6 agent \u4E0D\u53EF\u8FBE\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u76F4\u63A5\u63D0\u4EA4\uFF0C\
|
|
267
|
+
- **review \u8BC1\u636E\u786C\u95E8**\uFF1A\u4EC5\u5F53 reviewer \u8FD4\u56DE\u53EF\u8BFB\u7684\u6700\u7EC8\u6587\u672C\u4E14\u660E\u786E\u542B APPROVE\u3001\u65E0 CRITICAL/HIGH \u624D\u7B97\u901A\u8FC7\uFF1Bdone\u3001exit 0\u3001\u7A7A dialog\u3001messagesCount=0\u3001agentReply=null\u3001\u8D85\u65F6\u5747\u89C6\u4E3A\u672A\u5BA1\u67E5\uFF0C\u4E25\u7981\u63D0\u4EA4\u3002review context contract\uFF1A\u6D3E reviewer \u524D\u6309\u6539\u52A8\u8303\u56F4\u52A0\u8F7D\u8BE5\u4ED3\u5E93\u7684\u9879\u76EE\u6307\u4EE4\uFF08AGENTS.md \u7C7B\uFF09\u3001\u5DE5\u4F5C\u6D41/\u8BA1\u5212\u6587\u6863\u3001\u547D\u4E2D\u7684 skill \u4E0E references\uFF0C\u4EE5\u53CA touched files \u7684\u5B8C\u6574 diff\uFF0Cbrief \u91CC\u5217\u51FA\u5B9E\u9645\u52A0\u8F7D\u7684 context\uFF1B\u5177\u4F53\u6E05\u5355\u4EE5\u8BE5\u4ED3\u5E93\u81EA\u5DF1\u7684 review \u89C4\u8303\u4E3A\u51C6\uFF08bun-nolo \u89C1 nolo-plan\u300C\u5408\u5E76\u95E8\u300D\u8282\uFF09\u3002\u5BA1\u67E5\u6E05\u5355\uFF1A\u53EF\u8BFB\u6027/\u53EF\u641C\u7D22\u6027\u3001\u53EF\u7EF4\u62A4\u6027/\u5220\u9664\u6210\u672C\u3001\u53EF\u7EC4\u5408\u6027/\u590D\u7528\u3001\u91CD\u590D\u5B9E\u73B0\u3001\u53EF\u5220\u9664\u4EE3\u7801\u3002\u82E5\u5904\u4E8E\u5355 Agent \u72EC\u5360\u73AF\u5883\u3001\u5176\u4ED6 agent \u4E0D\u53EF\u8FBE\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u76F4\u63A5\u63D0\u4EA4\uFF0C**\u4E0D\u5F97\u51ED [no-review: \u2026] \u8DF3\u8FC7**\u2014\u2014\u8BE5\u5199\u6CD5\u4EFB\u4F55\u5224\u636E\u90FD\u89E3\u6790\u4E0D\u4E86\uFF08\u5199\u4E86\u7167\u6837\u88AB\u62E6\uFF09\u3002\u81EA\u6709\u95F8\u95E8\u8BA4 Reviewed-by: <\u975E\u7A7A\u7F72\u540D> \u52A0 Review: \u5E26\u7ED3\u8BBA\uFF08APPROVE / Approved / WARNING\uFF09\uFF1Bpre-push / pre-merge \u53E6\u8BA4\u4E00\u6761 owner-only \u8C41\u514D\uFF08\u6B63\u6587 No-Review: <\u539F\u56E0> \u52A0 author email \u547D\u4E2D NO_REVIEW_OWNER_EMAILS \u767D\u540D\u5355\uFF0C\u89C1 packages/nolo-ci/core/src/mapping.ts\uFF09\uFF0Cagent \u8EAB\u4EFD\u4E0D\u9002\u7528\u3002\u88AB\u5361\u4F4F\u5C31\u5982\u5B9E\u62A5\u544A\u5361\u70B9\uFF0C\u7531 owner \u51B3\u5B9A\u3002\u6D89\u53CA\u4ED3\u5E93\u6587\u4EF6\u5199\u5165\u5FC5\u987B\u7528\u72EC\u7ACB worktree\u3002\u4ED3\u5E93\u7EA7 plan / review / worktree \u7EAA\u5F8B\u4EE5 AGENTS.md \u4E3A\u51C6\u3002`;
|
|
262
268
|
var AGENT_CONFIRM_BOUNDARY = `--- \u786E\u8BA4\u8FB9\u754C ---
|
|
263
269
|
- \u6D89\u53CA\u4E0D\u53EF\u9006\u64CD\u4F5C\uFF08\u4FEE\u6539\u6587\u4EF6\u3001\u5220\u9664\u6570\u636E\u3001\u53D1\u9001\u6D88\u606F\u3001\u751F\u6210\u6B63\u5F0F\u6587\u4EF6\u3001\u6267\u884C\u4EA4\u6613\uFF09\u6216\u9AD8\u6210\u672C\u52A8\u4F5C\uFF08\u5927\u89C4\u6A21\u91CD\u6784/\u957F\u65F6\u8FD0\u884C/\u5927\u91CF token\uFF09\u65F6\uFF0C\u4F18\u5148\u9884\u89C8\u6216\u5411\u7528\u6237\u786E\u8BA4\uFF1B\u5DE5\u5177\u8FD4\u56DE"\u9884\u89C8/\u5F85\u786E\u8BA4"\u65F6\u6682\u505C\uFF0C\u7B49\u660E\u786E\u786E\u8BA4\u518D\u7EE7\u7EED\uFF0C\u672A\u786E\u8BA4\u524D\u4E0D\u8FDE\u7EED\u53D1\u591A\u6B21\u7834\u574F\u6027\u4FEE\u6539\u3002
|
|
264
270
|
- \u6536\u5230\u300C\u5B50\u5BF9\u8BDD\u7981\u6B62\u518D\u521B\u5EFA\u5B59\u5BF9\u8BDD\u300D\uFF1D\u4F60\u5DF2\u662F\u5B50\u5BF9\u8BDD\uFF0C\u7981\u6B62\u518D\u6D3E\u53D1\uFF0C\u628A\u7ED3\u679C\u8FD4\u56DE\u7236\u5BF9\u8BDD\u5373\u53EF\u3002`;
|
|
@@ -324,6 +330,9 @@ var PRIVILEGE_ESCALATION_INSTRUCTIONS = `--- \u6743\u9650\u63D0\u5347 ---
|
|
|
324
330
|
- \u786E\u5B9E\u7ED5\u4E0D\u5F00\uFF1A\u7ED9\u51FA\u4E00\u6761\u53EF\u76F4\u63A5\u7C98\u8D34\u7684\u547D\u4EE4\uFF08\u591A\u6B65\u5408\u5E76\u6210\u4E00\u6761\uFF09\uFF0C\u4E00\u6B21\u6027\u8BF4\u6E05\u526F\u4F5C\u7528\uFF0C\u7B49\u7528\u6237\u56DE\u62A5\u7ED3\u679C\u518D\u7EE7\u7EED\uFF1B\u4E0D\u8981\u8BA9\u7528\u6237\u6765\u56DE\u8DD1\u591A\u6B65\u3001\u4E0D\u8981\u91CD\u590D\u7D22\u8981\u3002
|
|
325
331
|
3. Windows \u7528 \`Start-Process -Verb RunAs\`\uFF08UAC \u5F39\u7A97\uFF09\u3001macOS \u7528 \`osascript ... with administrator privileges\`\uFF0C\u4EA4\u4E92\u539F\u5219\u76F8\u540C\uFF1A\u5F39\u7A97\u524D\u5148\u8BF4\u660E\u3001\u5931\u8D25\u540E\u4E0D\u91CD\u590D\u6253\u6270\u3002
|
|
326
332
|
4. \u7981\u6B62\u9759\u9ED8\u7ED5\u8FC7\uFF1A\u4E0D\u91CD\u8BD5\u540C\u4E00\u7279\u6743\u547D\u4EE4\u8D4C\u8FD0\u6C14\u3001\u4E0D\u7528\u7BA1\u9053/\u73AF\u5883\u53D8\u91CF\u5582\u5BC6\u7801\u7ED9 sudo\u3001\u4E0D\u4FEE\u6539 polkit/sudoers \u653E\u5BBD\u6388\u6743\u3002`;
|
|
333
|
+
var SHELL_TASK_LIFECYCLE_INSTRUCTIONS = `--- Shell \u4EFB\u52A1\u751F\u547D\u5468\u671F\u7EAA\u5F8B\uFF08execShell / launchProcess\uFF09 ---
|
|
334
|
+
1. **\u6CA1\u6709 taskId\uFF0C\u5C31\u4E0D\u5F97\u7ED3\u675F\u56DE\u5408\u5E76\u627F\u8BFA\u7A0D\u540E\u81EA\u52A8\u6C47\u62A5\u3002** execShell \u540C\u6B65\u8FD4\u56DE\uFF08\u7ED3\u679C\u91CC\u6709 exitCode\u3001\u6CA1\u6709 metadata.detached:true + taskId\uFF09\u8868\u793A\u547D\u4EE4\u5DF2\u7ECF\u7ED3\u675F\u2014\u2014\u6700\u7EC8\u7ED3\u679C\u5C31\u5728\u672C\u56DE\u5408\u91CC\uFF0C\u5FC5\u987B\u7ACB\u5373\u89E3\u6790\uFF1B\u4E0D\u5F97\u628A stdout \u91CC\u7684 \`LAUNCHED\`/\`STARTED\`/\`BACKGROUND\` \u7B49\u56DE\u6267\u5F53\u6210"\u5DF2\u653E\u540E\u53F0"\uFF08\u90A3\u53EA\u662F\u547D\u4EE4\u81EA\u5DF1\u6253\u5370\u7684\u666E\u901A\u8F93\u51FA\uFF0C\u6CA1\u6709\u4EFB\u4F55\u751F\u547D\u5468\u671F\u8BED\u4E49\uFF09\uFF0C\u4E0D\u5F97\u4EE5"\u5B8C\u6210\u540E\u6211\u4F1A\u81EA\u52A8\u56DE\u6765\u6C47\u62A5"\u7ED3\u675F\u56DE\u5408\u3002\u53EA\u6709 metadata.detached === true \u4E14\u5E26 taskId \u7684\u7ED3\u679C\u624D\u662F\u53D7\u8DDF\u8E2A\u7684\u540E\u53F0\u4EFB\u52A1\uFF0C\u624D\u53EF\u80FD\u7EC8\u6001\u81EA\u52A8\u5524\u9192\uFF1BlaunchProcess \u8FD4\u56DE\u7684 taskId \u4E5F\u53EA\u5728\u4E0B\u4E00\u6B21\u771F\u5B9E turn \u6CE8\u5165\u5B8C\u6210\u901A\u77E5\uFF0C\u4E0D\u4F1A\u81EA\u52A8\u5F00\u65B0\u56DE\u5408\u3002
|
|
335
|
+
2. **\u540C\u6B65\u8FD4\u56DE exitCode \u540E\u5FC5\u987B\u7ACB\u5373\u89E3\u6790\u7ED3\u679C\uFF1B\u82E5\u6838\u5FC3\u8F93\u51FA\u88AB\u91CD\u5B9A\u5411\u5230\u6587\u4EF6\uFF0C\u5FC5\u987B\u5728\u5F53\u524D\u56DE\u5408\u5185\u8BFB\u53D6\u8BE5\u6587\u4EF6\u3002** \u540C\u6B65\u547D\u4EE4\u6CA1\u6709\u4EFB\u4F55\u540E\u7EED\u4E8B\u4EF6\u4F1A\u63D0\u9192\u4F60\uFF0C"\u56DE\u5934\u518D\u8BFB\u6587\u4EF6"\u7B49\u4E8E\u6C38\u4E45\u4E22\u5931\u3002\u786E\u5B9E\u9700\u8981"\u7A0D\u540E\u53D6\u7ED3\u679C"\u7684\u6709\u9650\u540E\u53F0\u4F5C\u4E1A\uFF08\u6D4B\u8BD5\u3001\u6784\u5EFA\u3001\u6279\u5904\u7406\uFF09\uFF0C\u7528 execShell({ background: true })\u2014\u2014\u5B83\u7ACB\u5373\u8F6C\u4E3A\u53D7\u8DDF\u8E2A\u540E\u53F0\u4EFB\u52A1\uFF0C\u7EC8\u6001\u4F1A\u628A\u6709\u754C\u7ED3\u679C\u5E26\u56DE\u672C\u5BF9\u8BDD\u3002`;
|
|
327
336
|
var TOOL_GUIDED_SECTIONS = [
|
|
328
337
|
{
|
|
329
338
|
id: "toolRoundEconomy",
|
|
@@ -341,6 +350,11 @@ var TOOL_GUIDED_SECTIONS = [
|
|
|
341
350
|
triggerTools: ["execShell"],
|
|
342
351
|
build: () => PRIVILEGE_ESCALATION_INSTRUCTIONS
|
|
343
352
|
},
|
|
353
|
+
{
|
|
354
|
+
id: "shellTaskLifecycle",
|
|
355
|
+
triggerTools: ["execShell", "launchProcess"],
|
|
356
|
+
build: () => SHELL_TASK_LIFECYCLE_INSTRUCTIONS
|
|
357
|
+
},
|
|
344
358
|
{
|
|
345
359
|
id: "agentOrchestration",
|
|
346
360
|
triggerTools: [
|
|
@@ -379,6 +393,7 @@ var TOOL_GUIDED_SECTION_ORDER = [
|
|
|
379
393
|
"toolRoundEconomy",
|
|
380
394
|
"toolUseGuidance",
|
|
381
395
|
"privilegeEscalation",
|
|
396
|
+
"shellTaskLifecycle",
|
|
382
397
|
"agentOrchestration",
|
|
383
398
|
"agentCollaboration",
|
|
384
399
|
"webAccess",
|
|
@@ -401,11 +416,14 @@ function resolveToolGuidedSections(agentTools, opts) {
|
|
|
401
416
|
}
|
|
402
417
|
|
|
403
418
|
// packages/ai/agent/dispatchIntent.ts
|
|
404
|
-
var DISPATCH_INTENT_PATTERN = /(派发|派单|派个|派一|派两|派几|派人|子任务|子\s*[aA]gent|多\s*[aA]gent|多个\s*[aA]gent
|
|
419
|
+
var DISPATCH_INTENT_PATTERN = /(派发|派单|派个|派一|派两|派几|派人|子任务|子\s*[aA]gent|多\s*[aA]gent|多个\s*[aA]gent|并行处理|并行派发|并发派发|并行执行|并发执行|分头|会商|独立\s*review|派.{0,4}review|dispatch|delegat|sub[\s-]?agent|sub[\s-]?task|fan[\s-]?out|orchestrat|in parallel|paralleliz|background run)/i;
|
|
420
|
+
var MULTI_EXECUTOR_PATTERN = /(?:(?:两|二|三|四|五|六|七|八|九|十|几|多|数|若干|(?<![0-9])(?:[2-9]|[1-9][0-9]+))\s*(?:个|位|名)\s*(?:助手|agent|assistant|worker|reviewer|专家|子\s*agent)|(?:two|three|four|five|six|several|multiple|these|those|the following|(?<![0-9])(?:[2-9]|[1-9][0-9]+))\s+(?:agents?|assistants?|helpers?|reviewers?|workers?|tasks?|sub-?agents?|sub-?tasks?))/i;
|
|
421
|
+
var COLLAB_ACTION_PATTERN = /(?:分工|同时处理|同时做|同时推进|同时进行|并行|并发|分别|各自|协作|协同|代码审查|审查|review|concurrently|simultaneously|separately|respectively|in parallel)/i;
|
|
405
422
|
var DISPATCH_TOOL_NAMES = /* @__PURE__ */ new Set(["startAgentRun", "controlAgentRun"]);
|
|
406
423
|
function detectDispatchIntent(text) {
|
|
407
424
|
if (typeof text !== "string" || !text.trim()) return false;
|
|
408
|
-
|
|
425
|
+
if (DISPATCH_INTENT_PATTERN.test(text)) return true;
|
|
426
|
+
return MULTI_EXECUTOR_PATTERN.test(text) && COLLAB_ACTION_PATTERN.test(text);
|
|
409
427
|
}
|
|
410
428
|
function messageText(content) {
|
|
411
429
|
if (typeof content === "string") return content;
|
|
@@ -549,14 +567,44 @@ var isOllamaProviderOrEndpoint = (provider, endpoint) => {
|
|
|
549
567
|
if (p === "ollama" || p === "ollama-cloud") return true;
|
|
550
568
|
return isOllamaEndpoint(endpoint);
|
|
551
569
|
};
|
|
570
|
+
var applyFunctionToolReasoningCompatibility = (body, model) => {
|
|
571
|
+
const effectiveModel = model ?? body?.model;
|
|
572
|
+
const isLuna = typeof effectiveModel === "string" && /(?:^|\/)gpt-6-luna(?:$|[-._].*)/i.test(asTrimmedLowercaseString(effectiveModel));
|
|
573
|
+
if (isLuna && Array.isArray(body?.tools) && body.tools.some((tool) => tool?.type === "function")) {
|
|
574
|
+
return {
|
|
575
|
+
...body,
|
|
576
|
+
reasoning_effort: "none"
|
|
577
|
+
};
|
|
578
|
+
}
|
|
579
|
+
return body;
|
|
580
|
+
};
|
|
552
581
|
var normalizeChatCompletionsBodyForProvider = ({
|
|
553
582
|
body,
|
|
554
583
|
provider,
|
|
555
584
|
model,
|
|
556
585
|
endpoint
|
|
557
586
|
}) => {
|
|
558
|
-
|
|
587
|
+
let nextBody = { ...body, model };
|
|
559
588
|
const normalizedProvider = asTrimmedLowercaseString(provider);
|
|
589
|
+
nextBody = applyFunctionToolReasoningCompatibility(nextBody, model);
|
|
590
|
+
if (Array.isArray(nextBody.messages)) {
|
|
591
|
+
const isGemini = normalizedProvider === "google" || normalizedProvider === "google-antigravity" || normalizedProvider.startsWith("google-") || normalizedProvider.includes("gemini") || asTrimmedLowercaseString(model).includes("gemini") || typeof endpoint === "string" && endpoint.includes("googleapis.com");
|
|
592
|
+
if (!isGemini) {
|
|
593
|
+
nextBody.messages = nextBody.messages.map((msg) => {
|
|
594
|
+
if (msg?.role === "assistant" && Array.isArray(msg.tool_calls)) {
|
|
595
|
+
return {
|
|
596
|
+
...msg,
|
|
597
|
+
tool_calls: msg.tool_calls.map((tc) => {
|
|
598
|
+
if (!tc || typeof tc !== "object") return tc;
|
|
599
|
+
const { id, type = "function", function: fn } = tc;
|
|
600
|
+
return { id, type, function: fn };
|
|
601
|
+
})
|
|
602
|
+
};
|
|
603
|
+
}
|
|
604
|
+
return msg;
|
|
605
|
+
});
|
|
606
|
+
}
|
|
607
|
+
}
|
|
560
608
|
if (normalizedProvider === "fireworks" && isFireworksKimiModel(model)) {
|
|
561
609
|
delete nextBody.reasoning;
|
|
562
610
|
delete nextBody.reasoning_effort;
|
|
@@ -590,6 +638,7 @@ var normalizeChatCompletionsBodyForProvider = ({
|
|
|
590
638
|
|
|
591
639
|
export {
|
|
592
640
|
buildIdentityBlock,
|
|
641
|
+
DELETE_SAFETY_RED_LINE,
|
|
593
642
|
buildRuntimeGuidanceBlocks,
|
|
594
643
|
TOOL_GUIDED_SECTION_ORDER,
|
|
595
644
|
resolveToolGuidedSections,
|