nolo-cli 0.84.0-alpha.1 → 0.84.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 +2 -2
- package/{_executeModel-IULR47HG.js → _executeModel-BPUR2QYH.js} +51 -50
- package/{action-D22U6CTH.js → action-P4TNFGAD.js} +11 -11
- package/{addContentAction-XAPUTGL4.js → addContentAction-MB2HHMDZ.js} +9 -9
- package/{addDialogAgentAction-M7VLLBZM.js → addDialogAgentAction-S2NRBCWW.js} +9 -9
- package/{agentDeleteCommand-2S4WCDQC.js → agentDeleteCommand-MNAA6MIG.js} +32 -30
- package/{agentEmailCommands-V3ADGHX7.js → agentEmailCommands-SK34WJKU.js} +70 -66
- package/{agentGrantCommands-R3VQEZJR.js → agentGrantCommands-M3XFO6EN.js} +2 -2
- package/{agentListCommands-EPK3S274.js → agentListCommands-I26MKI4T.js} +55 -36
- package/{agentMachineCommands-XMZWK7P3.js → agentMachineCommands-M6QDR6P3.js} +32 -30
- package/{agentProviderCommands-65ZC2WB4.js → agentProviderCommands-X3UNW77C.js} +87 -0
- package/{agentPullCommand-N7L2CT7L.js → agentPullCommand-O5MPVJ5E.js} +3 -3
- package/agentRecordCommands-HTHLO2MM.js +129 -0
- package/{agentRunCommand-VUWNWC7C.js → agentRunCommand-IAIRCMTH.js} +70 -65
- package/{agentRunControl-T44MESII.js → agentRunControl-AVJR4JW4.js} +2 -2
- package/{agentRuntimeLocal-YRONTDLM.js → agentRuntimeLocal-3WTYYIT2.js} +32 -26
- package/{agentSlice-2P7OJFES.js → agentSlice-TVP3HINW.js} +10 -10
- package/{appDeleteCommands-YS7UGMP3.js → appDeleteCommands-SB5TNLKY.js} +32 -30
- package/{appDeployCommands-XIE5Z4BE.js → appDeployCommands-2IPKZINV.js} +32 -30
- package/{appDeployStatusCommands-54UDVYET.js → appDeployStatusCommands-K63TFUID.js} +32 -30
- package/{appGetCommands-6XYLBCRN.js → appGetCommands-VU2SLNEH.js} +32 -30
- package/{appListCommands-VEGH7SF5.js → appListCommands-S3T4DJ36.js} +32 -30
- package/{authCommand-JIEOFHXW.js → authCommand-HGP2XTKC.js} +185 -28
- package/{authCommands-ILTBI6JV.js → authCommands-RGOGCPP6.js} +4 -5
- package/builtinSkillRegistry-Q2VVY3SC.js +33 -0
- package/{chatQueueReduxAdapter-GPYCH5Z2.js → chatQueueReduxAdapter-TWIYKVIZ.js} +25 -25
- package/{chromeCommands-VOIRNJBL.js → chromeCommands-FZYAU75D.js} +1 -1
- package/{chromeOpsCommands-M7DPCX2T.js → chromeOpsCommands-62P2Q2YB.js} +31 -1
- package/{chunk-C3FZR5EC.js → chunk-2F7RJC6L.js} +1 -1
- package/{chunk-BOYUESO7.js → chunk-3AMA42ZI.js} +1 -1
- package/{chunk-RZOJRTKR.js → chunk-3BGIKIPF.js} +444 -920
- package/{chunk-HQUORJTM.js → chunk-3BMYXEUW.js} +1 -1
- package/{chunk-EBKMQULC.js → chunk-3IUWIAHP.js} +13 -15
- package/{chunk-NTW5GWDM.js → chunk-3VNWWVKB.js} +2 -0
- package/{chunk-4SZ37KLL.js → chunk-3VUWPRFW.js} +50 -30
- package/{chunk-WL2RKIBF.js → chunk-3YIAR5UI.js} +1 -1
- package/{chunk-DWUCB2A3.js → chunk-42V6BK2E.js} +1 -1
- package/{chunk-AX7RMXSH.js → chunk-4MK3I7Y4.js} +38 -4
- package/{chunk-PF6O3GR3.js → chunk-52Q2IW2X.js} +1340 -1273
- package/{chunk-Y3NZYLPG.js → chunk-5MEYHVIB.js} +1 -1
- package/{chunk-5XTOKQLW.js → chunk-5UTFL4QJ.js} +6 -2
- package/chunk-5ZUL4CUO.js +10 -0
- package/{chunk-6YTOJY35.js → chunk-6D2JFXLY.js} +35 -0
- package/{chunk-E6RGHPDR.js → chunk-6D6VBVEW.js} +4 -6
- package/{chunk-FZGV4FGK.js → chunk-6GFOD3TK.js} +260 -140
- package/{chunk-TMPLPCVX.js → chunk-6OZ36FXI.js} +2 -2
- package/{chunk-PZM3EENV.js → chunk-6Z7MY3V7.js} +1 -1
- package/{chunk-BYEJ7K2Z.js → chunk-7S4YWN7P.js} +1 -1
- package/{chunk-SREASRV5.js → chunk-ABQYVJBJ.js} +1 -1
- package/chunk-ACTMNVHM.js +93 -0
- package/{chunk-ZZCJUXUI.js → chunk-AHAHBQMU.js} +2 -2
- package/{chunk-BJCWNHVU.js → chunk-BFDFRLLQ.js} +2 -2
- package/chunk-BMQ2MJUK.js +153 -0
- package/chunk-BNGW5ASC.js +344 -0
- package/{chunk-2KDR4CWE.js → chunk-BYMV6QZG.js} +24 -1
- package/{chunk-73BR2IQT.js → chunk-CWQINZEA.js} +127 -7
- package/{chunk-HTMVBPOF.js → chunk-DD6XE56O.js} +19 -72
- package/{chunk-CADAR6QU.js → chunk-EYAQT56M.js} +4 -3
- package/{chunk-CJCJF5XB.js → chunk-FDTR4QJ6.js} +4 -2
- package/{chunk-D6XYLSOS.js → chunk-FKNWP6SG.js} +1 -1
- package/{chunk-3VPDELAP.js → chunk-FP76KI2Y.js} +1500 -84
- package/chunk-FV3JEYR3.js +870 -0
- package/{chunk-GCJ3IS5M.js → chunk-GIVFXPWK.js} +177 -6
- package/chunk-GMZLP5DV.js +82 -0
- package/{chunk-LHDV2QUI.js → chunk-GNCCNNZD.js} +4 -2
- package/{chunk-XWNRAIUL.js → chunk-GP5LKBUZ.js} +6 -16
- package/{chunk-PZCTYKGU.js → chunk-GQBOR3G6.js} +2 -2
- package/{chunk-NFT2AOK5.js → chunk-H4AHY5BU.js} +13 -85
- package/{chunk-FNGAF7C4.js → chunk-HAFJ3NDE.js} +137 -12
- package/{chunk-ZVN6I33J.js → chunk-HCT7U36O.js} +9 -5
- package/{chunk-7QVPPOEC.js → chunk-HKNXJGEC.js} +43 -43
- package/{chunk-3JQ2NRYU.js → chunk-HVURBGF3.js} +4 -4
- package/{chunk-OZX2IPKM.js → chunk-HYJFRTLW.js} +2 -2
- package/{chunk-HH65VA5U.js → chunk-I3TQJXQ7.js} +109 -6
- package/{chunk-UDQWGU7F.js → chunk-J4MOO56S.js} +1 -1
- package/{chunk-KC5FAHVS.js → chunk-JEDZAO7L.js} +1 -1
- package/{chunk-6XIE5ZGI.js → chunk-JPGCXHNM.js} +1 -1
- package/{chunk-DUJWWUGV.js → chunk-K36IXSCQ.js} +1 -1
- package/{chunk-KRMWO2NN.js → chunk-KAUSRTO6.js} +3 -3
- package/{chunk-7FWPLK4M.js → chunk-LJ5VW2UJ.js} +1 -1
- package/{chunk-GHEJJGJI.js → chunk-LMREEBWT.js} +833 -109
- package/{chunk-RXX4GDIH.js → chunk-LS2ZANRJ.js} +1 -1
- package/chunk-LVIFM7VW.js +1625 -0
- package/{chunk-BJIRLHJR.js → chunk-M2EJHDJP.js} +4 -0
- package/{chunk-EVBFYPDC.js → chunk-MC4XLIJ7.js} +6 -2
- package/{chunk-KEZNSFGD.js → chunk-MZYBSTMH.js} +11 -173
- package/chunk-OCZKATRC.js +129 -0
- package/{chunk-MXUSPS2N.js → chunk-OIVSQH2O.js} +1510 -1592
- package/{chunk-E36HZARC.js → chunk-P5EVSOPA.js} +93 -17
- package/{chunk-SZLVDREM.js → chunk-PBA4UJBK.js} +3 -3
- package/{chunk-URWDSZRW.js → chunk-PMAIQX7A.js} +3 -3
- package/{chunk-AETZ7AD6.js → chunk-Q554LLSI.js} +1 -1
- package/{chunk-AJHEFRGJ.js → chunk-Q67DOFOO.js} +214 -5
- package/{chunk-UZ6XXCVR.js → chunk-QDSINZM3.js} +15 -2
- package/{chunk-NRALD3CC.js → chunk-QSHEEA5N.js} +54 -10
- package/chunk-QU7KDSZX.js +677 -0
- package/{chunk-T25L377S.js → chunk-RPJUFEGR.js} +10 -10
- package/{chunk-QCZX4FTW.js → chunk-SH43IESU.js} +173 -15
- package/{chunk-SPAQ4PVV.js → chunk-SV5IJK6K.js} +1 -1
- package/{chunk-BKJO7LDP.js → chunk-U4OKDZFH.js} +6 -6
- package/{chunk-DM4FBSWG.js → chunk-UDVH2P4A.js} +7 -7
- package/{chunk-4EJ5QYB5.js → chunk-UEVXFHQB.js} +2 -2
- package/{chunk-JYYZCK2Z.js → chunk-V7E4PXQD.js} +1 -1
- package/{chunk-NHRQCXIQ.js → chunk-VMFTFOWF.js} +13 -3
- package/{chunk-YFADVSZE.js → chunk-VRTTFDBM.js} +7 -6
- package/{chunk-U7YP7ECK.js → chunk-WP5UXDA5.js} +84 -13
- package/{chunk-5J7W2VWW.js → chunk-WV42OMV7.js} +6 -265
- package/{chunk-3QPYFHAH.js → chunk-XD2MJFUG.js} +1 -1
- package/{chunk-IDGYOD2O.js → chunk-XP3VVAPG.js} +3174 -223
- package/{chunk-ETLZZQJE.js → chunk-Z2PV6O2T.js} +121 -26
- package/{chunk-BZNGCVAW.js → chunk-Z5625XML.js} +4 -4
- package/{contentThunks-THSCADSK.js → contentThunks-JYWI7G7I.js} +26 -26
- package/{cooldownCommands-BSCH2W7P.js → cooldownCommands-REAWYVTY.js} +2 -2
- package/{createAgentAutomationAction-WGN3UQ5A.js → createAgentAutomationAction-Z4SUJ54Y.js} +26 -26
- package/{createDialogAction-3EN2NLH7.js → createDialogAction-RCHFLVJ2.js} +29 -29
- package/{createPageAction-4VK473QV.js → createPageAction-YK2253XQ.js} +28 -28
- package/{dbSlice-GKGGFNOB.js → dbSlice-A6C6H32X.js} +8 -8
- package/{deleteFile-LWSR674W.js → deleteFile-YG6QMJLU.js} +3 -3
- package/{dialogCommands-PS4NWYY7.js → dialogCommands-X4UOZQWX.js} +36 -32
- package/{dialogSlice-CLV7SVOZ.js → dialogSlice-IVTWLCE2.js} +31 -25
- package/{docCreateCommands-4KANZJR6.js → docCreateCommands-VD6TGHG4.js} +33 -31
- package/{docDeleteCommands-F2S2TRUF.js → docDeleteCommands-OT3R2G4W.js} +34 -32
- package/{docReadCommands-B2WDPZQE.js → docReadCommands-2G7BIXSH.js} +33 -31
- package/{docStore-TDLCHWPF.js → docStore-UENKCCDX.js} +9 -9
- package/{docUpdateCommands-E7TKHRIO.js → docUpdateCommands-45MVJKZA.js} +33 -31
- package/{fetchMessages-DRABNDPZ.js → fetchMessages-EIU7UFFK.js} +3 -4
- package/{getPricing-QVTUQQTM.js → getPricing-LUSEABA6.js} +4 -4
- package/{handleSendMessageAction-AHL3ZHE4.js → handleSendMessageAction-LM2J4HC3.js} +66 -74
- package/index.js +99 -86
- package/{localDialogRead-PUQKFI73.js → localDialogRead-BTFJ4V2I.js} +2 -2
- package/{localRuntimeDb-P37ZTX55.js → localRuntimeDb-SYQGUF4U.js} +1 -1
- package/{machineCommands-OTABVXOA.js → machineCommands-6N6MQIE6.js} +69 -65
- package/{machineWsRunDispatch-V4EVQSMZ.js → machineWsRunDispatch-7MFKVQCR.js} +65 -61
- package/{memberThunks-KATHH3F4.js → memberThunks-P2ECUJ56.js} +9 -9
- package/{models-GS72DVJS.js → models-T3SG6MJ5.js} +2 -2
- package/{offlineMarxistsAgentCommand-GEH6SNNA.js → offlineMarxistsAgentCommand-HGXZV4XJ.js} +1 -1
- package/package.json +1 -1
- package/pdf-U6KSUEZZ.js +26435 -0
- package/providerPresetApply-XI3WUPTI.js +214 -0
- package/providerRegistry-KEPWWGXD.js +31 -0
- package/{read-LC6HVYBN.js → read-COE3ZYR6.js} +5 -4
- package/{readDocTool-N3ERJHHF.js → readDocTool-5USN4A6V.js} +1 -1
- package/{readlineWorkspace-IIT3FQ6I.js → readlineWorkspace-JWBON5CX.js} +291 -135
- package/{removeDialogAgentAction-F5GPTALR.js → removeDialogAgentAction-W66BJ7CF.js} +12 -12
- package/{runAgentClientLoop-7TQM7IAR.js → runAgentClientLoop-TA4SSPHE.js} +49 -49
- package/{runtimeDoctorCommands-CROTMULY.js → runtimeDoctorCommands-X6WDBEQX.js} +2 -2
- package/{setDialogExtraReferencesAction-AY4ZCF3A.js → setDialogExtraReferencesAction-2ALKG3WA.js} +10 -10
- package/{setPrimaryDialogAgentAction-HPMG7V3R.js → setPrimaryDialogAgentAction-TQZB55F6.js} +12 -12
- package/{settingSlice-OEJA4NQO.js → settingSlice-P4ZW7K5X.js} +10 -10
- package/{spaceCommands-FSYH7AL4.js → spaceCommands-6NSAXB7D.js} +31 -29
- package/{streamAgentChatTurn-6EF6TVFK.js → streamAgentChatTurn-X5ENGUIS.js} +126 -65
- package/{switchDialogAgentAction-HMDZTZ4I.js → switchDialogAgentAction-3KI72HHS.js} +9 -9
- package/{tableCommands-SUNTHAYX.js → tableCommands-O6NWHFKV.js} +1 -1
- package/{toolApiClient-VGYUB4P5.js → toolApiClient-G3M73RTB.js} +3 -3
- package/{tools-R3QNWWTD.js → tools-XRQR7ZZR.js} +45 -45
- package/tuiSummaryLlmCaller-UFGFOIIW.js +128 -0
- package/{updateCommands-Y363MC3L.js → updateCommands-2M74UL7P.js} +2 -2
- package/{updateDialogTitleAction-F3EUOWOB.js → updateDialogTitleAction-ESUUD3GT.js} +46 -29
- package/agentRecordCommands-WFPWLWOF.js +0 -125
- package/chunk-FMODTASJ.js +0 -109
- package/chunk-I42VC5KR.js +0 -15
- package/chunk-NB5SIWC4.js +0 -611
- package/chunk-NG4UT4K4.js +0 -79
- package/codingSkills-7S6523WH.js +0 -48
- package/tuiSummaryLlmCaller-PWOXTCBF.js +0 -116
- package/{chunk-3RAG2NAD.js → chunk-UKWGR5SS.js} +3 -3
- package/{db-VQSAOWAO.js → db-WK5MDZVN.js} +1 -1
- 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-
|
|
7
|
+
} from "./chunk-Z5625XML.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-
|
|
13
|
-
import {
|
|
14
|
-
defaultLoopbackRequest
|
|
15
|
-
} from "./chunk-EADNWBAZ.js";
|
|
15
|
+
} from "./chunk-SH43IESU.js";
|
|
16
16
|
import {
|
|
17
17
|
ackRunRecord,
|
|
18
18
|
appendRunQueue,
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
commitRunRecordClaim,
|
|
22
22
|
findRunRecord,
|
|
23
23
|
gcRunRecords,
|
|
24
|
+
isRunTerminalStatus,
|
|
24
25
|
popAllQueueEntries,
|
|
25
26
|
queryRunRecords,
|
|
26
27
|
releaseRunRecordAck,
|
|
@@ -29,7 +30,7 @@ import {
|
|
|
29
30
|
terminateRunProcess,
|
|
30
31
|
transitionRunToTerminal,
|
|
31
32
|
withQueueLock
|
|
32
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-I3TQJXQ7.js";
|
|
33
34
|
import {
|
|
34
35
|
clearCredentialAvailability,
|
|
35
36
|
markCredentialUnavailable,
|
|
@@ -37,30 +38,30 @@ import {
|
|
|
37
38
|
readCredentialEntry,
|
|
38
39
|
recordCredentialProbe,
|
|
39
40
|
resolveCredentialKeyWithFallback
|
|
40
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-42V6BK2E.js";
|
|
41
42
|
import {
|
|
42
43
|
buildLocalAgentLookupKeys
|
|
43
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-3AMA42ZI.js";
|
|
44
45
|
import {
|
|
45
46
|
LOCAL_CODEX_AGENT_ID,
|
|
46
47
|
LOCAL_CODEX_AGENT_KEY,
|
|
47
48
|
NOLO_DEFAULT_AGENT_ID,
|
|
48
49
|
NOLO_DEFAULT_AGENT_KEY
|
|
49
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-SV5IJK6K.js";
|
|
50
51
|
import {
|
|
51
52
|
CliProviderQuotaError,
|
|
52
53
|
executeCli
|
|
53
54
|
} from "./chunk-MP64VFGD.js";
|
|
54
55
|
import {
|
|
55
56
|
inferCaptureIntent
|
|
56
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-XD2MJFUG.js";
|
|
57
58
|
import {
|
|
58
59
|
buildCliPrompt
|
|
59
60
|
} from "./chunk-ATNTHIZI.js";
|
|
60
61
|
import {
|
|
61
62
|
inlineImageUrlsForCustomProvider,
|
|
62
63
|
prepareTools
|
|
63
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-KAUSRTO6.js";
|
|
64
65
|
import {
|
|
65
66
|
getServerProviderSecret
|
|
66
67
|
} from "./chunk-HS7MLR74.js";
|
|
@@ -69,6 +70,7 @@ import {
|
|
|
69
70
|
CONTROL_AGENT_RUN_ACTIONS,
|
|
70
71
|
buildControlAgentRunFunctionSchema,
|
|
71
72
|
buildStartAgentRunFunctionSchema,
|
|
73
|
+
checkCredentialFanout,
|
|
72
74
|
deleteMemoryFunctionSchema,
|
|
73
75
|
queryMemoryFunctionSchema,
|
|
74
76
|
readXPostFunc,
|
|
@@ -78,11 +80,11 @@ import {
|
|
|
78
80
|
rememberMemoryFunctionSchema,
|
|
79
81
|
resolveAgentRequiredPackIds,
|
|
80
82
|
setTodoListFunc
|
|
81
|
-
} from "./chunk-
|
|
83
|
+
} from "./chunk-3BGIKIPF.js";
|
|
82
84
|
import {
|
|
83
85
|
fetchWithTransientRetry,
|
|
84
86
|
isTransientFetchError
|
|
85
|
-
} from "./chunk-
|
|
87
|
+
} from "./chunk-5UTFL4QJ.js";
|
|
86
88
|
import {
|
|
87
89
|
TASK_PREVIEW_MAX,
|
|
88
90
|
formatListRunsCard,
|
|
@@ -94,26 +96,33 @@ import {
|
|
|
94
96
|
isAgentRunTerminalStatus,
|
|
95
97
|
resolveRunLabel,
|
|
96
98
|
shortRunId
|
|
97
|
-
} from "./chunk-
|
|
99
|
+
} from "./chunk-3VNWWVKB.js";
|
|
100
|
+
import {
|
|
101
|
+
deriveCredentialGroup
|
|
102
|
+
} from "./chunk-CWQINZEA.js";
|
|
103
|
+
import {
|
|
104
|
+
getModelPricing
|
|
105
|
+
} from "./chunk-EYAQT56M.js";
|
|
98
106
|
import {
|
|
99
107
|
applyBuiltinAgentRuntimeOverride,
|
|
100
108
|
applyTokenUsageToDayStats,
|
|
101
109
|
prepareTokenUsageData,
|
|
102
110
|
resolveBuiltinPlatformAgentConfig,
|
|
103
111
|
runKeyed
|
|
104
|
-
} from "./chunk-
|
|
112
|
+
} from "./chunk-XP3VVAPG.js";
|
|
105
113
|
import {
|
|
114
|
+
BUILTIN_DIALOG_LLM_CHAT_FALLBACK_MODEL,
|
|
106
115
|
BUILTIN_TITLE_LLM_CONFIG
|
|
107
|
-
} from "./chunk-
|
|
116
|
+
} from "./chunk-MC4XLIJ7.js";
|
|
108
117
|
import {
|
|
109
118
|
fetchServerSyncedCredential
|
|
110
|
-
} from "./chunk-
|
|
119
|
+
} from "./chunk-UDVH2P4A.js";
|
|
111
120
|
import {
|
|
112
121
|
require_date_fns
|
|
113
122
|
} from "./chunk-M76ECQRD.js";
|
|
114
123
|
import {
|
|
115
124
|
getDefaultCliLocalRuntimeDb
|
|
116
|
-
} from "./chunk-
|
|
125
|
+
} from "./chunk-2F7RJC6L.js";
|
|
117
126
|
import {
|
|
118
127
|
FORCED_TOOLS,
|
|
119
128
|
addDefaultLightWebToolsForConfiguredAgents,
|
|
@@ -123,16 +132,14 @@ import {
|
|
|
123
132
|
applySystemBuiltinSkillFilter,
|
|
124
133
|
expandEnabledPacks,
|
|
125
134
|
resolveEffectiveEnabledPacks
|
|
126
|
-
} from "./chunk-
|
|
135
|
+
} from "./chunk-GIVFXPWK.js";
|
|
127
136
|
import {
|
|
128
137
|
DEFAULT_HYBRID_READ_TIMEOUT_MS,
|
|
129
138
|
Duration_exports,
|
|
130
139
|
Effect_exports,
|
|
131
140
|
Exit_exports,
|
|
132
141
|
Option_exports,
|
|
133
|
-
accumulateGeminiChunks,
|
|
134
142
|
aggregateResponsesStream,
|
|
135
|
-
buildGeminiGenerateContentRequest,
|
|
136
143
|
buildLoadSkillExecutor,
|
|
137
144
|
buildLocalDialogWritePlan,
|
|
138
145
|
buildLocalWorkspaceOpenAiTools,
|
|
@@ -145,22 +152,17 @@ import {
|
|
|
145
152
|
evaluateFileWritePolicy,
|
|
146
153
|
executeLocalToolWithPolicy,
|
|
147
154
|
executeOpenAiCompatibleChatCompletion,
|
|
148
|
-
fetchAntigravityCloudCodeCompletion,
|
|
149
155
|
filterRetainedLedgerRecords,
|
|
156
|
+
getAgentRuntimeToolParametersIndex,
|
|
150
157
|
internalListWorkspaceEntries,
|
|
151
158
|
internalSearchWorkspace,
|
|
152
|
-
isGemini3Model,
|
|
153
159
|
isLineRangeCovered,
|
|
154
160
|
localDialogMessageRecordToRuntimeMessage,
|
|
155
|
-
parseSseDataLineJson,
|
|
156
|
-
parseSseDataLineObject,
|
|
157
161
|
parseSyncServersEnv,
|
|
158
|
-
|
|
159
|
-
resolveAntigravityFinishReason,
|
|
162
|
+
readDevinUpstreamFailure,
|
|
160
163
|
resolveOpenAiCompatibleProviderConfig,
|
|
161
|
-
shouldUseGeminiNativeToolRoute,
|
|
162
164
|
summarizeToolArguments
|
|
163
|
-
} from "./chunk-
|
|
165
|
+
} from "./chunk-52Q2IW2X.js";
|
|
164
166
|
import {
|
|
165
167
|
PlatformStreamInterruptedError,
|
|
166
168
|
buildPlatformChatCompletionRequest,
|
|
@@ -169,17 +171,30 @@ import {
|
|
|
169
171
|
parsePlatformChatCompletionData,
|
|
170
172
|
parsePlatformChatCompletionResponse,
|
|
171
173
|
readPlatformChatSseCompletion,
|
|
172
|
-
readSseDataValues,
|
|
173
174
|
resolvePlatformChatProviderConfig,
|
|
174
175
|
shouldUsePlatformChatProvider
|
|
175
|
-
} from "./chunk-
|
|
176
|
+
} from "./chunk-H4AHY5BU.js";
|
|
176
177
|
import {
|
|
177
|
-
|
|
178
|
-
|
|
178
|
+
accumulateGeminiChunks,
|
|
179
|
+
buildGeminiGenerateContentRequest,
|
|
180
|
+
fetchAntigravityCloudCodeCompletion,
|
|
181
|
+
isGemini3Model,
|
|
182
|
+
parseSseDataLineJson,
|
|
183
|
+
parseSseDataLineObject,
|
|
184
|
+
parseUpstreamErrorBody,
|
|
185
|
+
resolveAntigravityFinishReason,
|
|
186
|
+
shouldUseGeminiNativeToolRoute
|
|
187
|
+
} from "./chunk-FV3JEYR3.js";
|
|
188
|
+
import {
|
|
189
|
+
readSseDataValues
|
|
190
|
+
} from "./chunk-GMZLP5DV.js";
|
|
179
191
|
import {
|
|
180
192
|
resolveAgentRuntimeConfigFromRecord,
|
|
181
193
|
resolveHistoricalToolContentCap
|
|
182
|
-
} from "./chunk-
|
|
194
|
+
} from "./chunk-4MK3I7Y4.js";
|
|
195
|
+
import {
|
|
196
|
+
isDevinOAuthAgent
|
|
197
|
+
} from "./chunk-5ZUL4CUO.js";
|
|
183
198
|
import {
|
|
184
199
|
collectStablePromptPrefix,
|
|
185
200
|
convertMessagesToResponsesInput,
|
|
@@ -190,38 +205,39 @@ import {
|
|
|
190
205
|
buildNoloWorkspaceOpenAiTools,
|
|
191
206
|
parseNoloWorkspaceToolArguments,
|
|
192
207
|
resolveRuntimeToolSurfaceForAgent
|
|
193
|
-
} from "./chunk-
|
|
208
|
+
} from "./chunk-HCT7U36O.js";
|
|
194
209
|
import {
|
|
195
210
|
mergeAvailabilityDeadline,
|
|
196
211
|
resolveAvailabilityAction,
|
|
197
212
|
resolveCooldownGate
|
|
198
|
-
} from "./chunk-
|
|
213
|
+
} from "./chunk-FDTR4QJ6.js";
|
|
199
214
|
import {
|
|
200
215
|
isAntigravityOAuthAgent
|
|
201
|
-
} from "./chunk-
|
|
216
|
+
} from "./chunk-GNCCNNZD.js";
|
|
202
217
|
import {
|
|
203
218
|
resolvePlatformAuthToken
|
|
204
|
-
} from "./chunk-
|
|
219
|
+
} from "./chunk-6OZ36FXI.js";
|
|
205
220
|
import {
|
|
206
221
|
buildDialogFallbackTitleFromUserInput,
|
|
207
222
|
normalizeDialogTitle
|
|
208
223
|
} from "./chunk-2MBTWINN.js";
|
|
209
224
|
import {
|
|
210
225
|
normalizeUsage
|
|
211
|
-
} from "./chunk-
|
|
226
|
+
} from "./chunk-HKNXJGEC.js";
|
|
212
227
|
import {
|
|
213
228
|
clipCompactText,
|
|
214
229
|
createProviderCallTimingTracker,
|
|
215
230
|
finalizeProviderCallTiming,
|
|
216
231
|
observeMeaningfulProviderResponseAt,
|
|
217
232
|
withProviderCallTimingFields
|
|
218
|
-
} from "./chunk-
|
|
233
|
+
} from "./chunk-P5EVSOPA.js";
|
|
219
234
|
import {
|
|
220
235
|
estimateTokenCount
|
|
221
236
|
} from "./chunk-PSCNXBYA.js";
|
|
222
237
|
import {
|
|
238
|
+
getModelConfig,
|
|
223
239
|
isAdaptiveThinkingModelId
|
|
224
|
-
} from "./chunk-
|
|
240
|
+
} from "./chunk-OIVSQH2O.js";
|
|
225
241
|
import {
|
|
226
242
|
compactWhitespace
|
|
227
243
|
} from "./chunk-DWLEOOGR.js";
|
|
@@ -230,7 +246,7 @@ import {
|
|
|
230
246
|
resolveCurrentRunRuntimeToolPolicy,
|
|
231
247
|
resolveLocalWorkspaceExecutorOptionsFromPolicy,
|
|
232
248
|
resolveRequestedRuntimeToolNames
|
|
233
|
-
} from "./chunk-
|
|
249
|
+
} from "./chunk-HVURBGF3.js";
|
|
234
250
|
import {
|
|
235
251
|
createOAuthTokenStore,
|
|
236
252
|
isTokenExpired,
|
|
@@ -250,24 +266,42 @@ import {
|
|
|
250
266
|
import {
|
|
251
267
|
DEFAULT_NOLO_SERVER_URL
|
|
252
268
|
} from "./chunk-OLZBQWZU.js";
|
|
269
|
+
import {
|
|
270
|
+
isNoloHostedProvider,
|
|
271
|
+
isPlatformHostedImageModel
|
|
272
|
+
} from "./chunk-Q67DOFOO.js";
|
|
253
273
|
import {
|
|
254
274
|
createTokenKey,
|
|
255
275
|
createTokenStatsKey,
|
|
256
276
|
createUserKey,
|
|
257
277
|
dialogMessageRange
|
|
258
|
-
} from "./chunk-
|
|
278
|
+
} from "./chunk-VMFTFOWF.js";
|
|
259
279
|
import {
|
|
260
280
|
asTrimmedLowercaseString
|
|
261
281
|
} from "./chunk-QSJ3HFEF.js";
|
|
262
282
|
import {
|
|
283
|
+
PUBLIC_DEEPSEEK_V4_FLASH_AGENT_ID,
|
|
284
|
+
PUBLIC_DEEPSEEK_V4_PRO_AGENT_ID,
|
|
285
|
+
PUBLIC_GLM_53_FLASH_AGENT_ID,
|
|
286
|
+
PUBLIC_GPT_IMAGE_2_CONTINUOUS_AGENT_ID,
|
|
287
|
+
PUBLIC_GPT_IMAGE_2_EDITOR_AGENT_ID,
|
|
288
|
+
PUBLIC_GPT_IMAGE_2_GENERATOR_AGENT_ID,
|
|
289
|
+
PUBLIC_NANO_BANANA_2_LITE_AGENT_ID,
|
|
290
|
+
builtinAgentCatalogEntryById,
|
|
291
|
+
isRetiredCatalogEntry,
|
|
263
292
|
isSystemBuiltinTrustedAgentKey
|
|
264
|
-
} from "./chunk-
|
|
293
|
+
} from "./chunk-BNGW5ASC.js";
|
|
265
294
|
import {
|
|
266
|
-
|
|
267
|
-
|
|
295
|
+
parsePublicAgentId,
|
|
296
|
+
parseSystemAgentId,
|
|
297
|
+
publicAgentKey
|
|
298
|
+
} from "./chunk-M2EJHDJP.js";
|
|
268
299
|
import {
|
|
269
300
|
isRecord
|
|
270
301
|
} from "./chunk-KUG52IAP.js";
|
|
302
|
+
import {
|
|
303
|
+
asTrimmedString
|
|
304
|
+
} from "./chunk-3EUW3WEO.js";
|
|
271
305
|
import {
|
|
272
306
|
NOLO_CLUSTER_SERVERS
|
|
273
307
|
} from "./chunk-LCBAMY2M.js";
|
|
@@ -578,6 +612,10 @@ var STRINGS = {
|
|
|
578
612
|
en: "\u2713 Copied the selection to the clipboard.",
|
|
579
613
|
zh: "\u2713 \u5DF2\u590D\u5236\u9009\u533A\u5230\u526A\u8D34\u677F\u3002"
|
|
580
614
|
},
|
|
615
|
+
copiedSelectionBusy: {
|
|
616
|
+
en: "\u2713 Copied the selection to the clipboard. Press Esc to stop generating.",
|
|
617
|
+
zh: "\u2713 \u5DF2\u590D\u5236\u9009\u533A\u5230\u526A\u8D34\u677F\u3002\u6309 Esc \u505C\u6B62\u751F\u6210\u3002"
|
|
618
|
+
},
|
|
581
619
|
copiedAllHistory: {
|
|
582
620
|
en: "\u2713 Copied the full conversation to the clipboard.",
|
|
583
621
|
zh: "\u2713 \u5DF2\u590D\u5236\u5B8C\u6574\u5BF9\u8BDD\u5230\u526A\u8D34\u677F\u3002"
|
|
@@ -674,6 +712,35 @@ var STRINGS = {
|
|
|
674
712
|
en: "Thinking: {0}",
|
|
675
713
|
zh: "\u601D\u8003\u4E2D\uFF1A{0}"
|
|
676
714
|
},
|
|
715
|
+
// --- Pre-delta turn phase labels (ctx-overflow-feedback batch 3) ----------
|
|
716
|
+
// Rendered on the spinner / activity line while the local runtime checks the
|
|
717
|
+
// context window, compacts history, or waits for the first model delta —
|
|
718
|
+
// the previously silent pre-delta window (batch 1/2a 修好 runtime 与 SSE,
|
|
719
|
+
// 这里补齐 CLI/TUI 的状态行投影)。compacting 行附带可取消提示:Esc /
|
|
720
|
+
// Ctrl+C 即 abort,语义与 localLoop 的 abortSignal 一致。
|
|
721
|
+
contextChecking: {
|
|
722
|
+
en: "Checking this model's context window\u2026",
|
|
723
|
+
zh: "\u6B63\u5728\u68C0\u67E5\u5F53\u524D\u6A21\u578B\u7684\u4E0A\u4E0B\u6587\u7A97\u53E3\u2026"
|
|
724
|
+
},
|
|
725
|
+
contextCompacting: {
|
|
726
|
+
en: "Compacting history\u2026 (Esc/Ctrl+C to cancel)",
|
|
727
|
+
zh: "\u6B63\u5728\u538B\u7F29\u5386\u53F2\u8BB0\u5F55\u2026\uFF08Esc/Ctrl+C \u53D6\u6D88\uFF09"
|
|
728
|
+
},
|
|
729
|
+
waitingForModel: {
|
|
730
|
+
en: "Waiting for the model\u2026",
|
|
731
|
+
zh: "\u6B63\u5728\u7B49\u5F85\u6A21\u578B\u54CD\u5E94\u2026"
|
|
732
|
+
},
|
|
733
|
+
// --- Local turn deadline failure (single actionable line) -----------------
|
|
734
|
+
// localLoop 主请求 idle deadline(DEFAULT_LLM_REQUEST_TIMEOUT_MS 兜底或调用方
|
|
735
|
+
// timeoutMs)到达后抛 code=LLM_REQUEST_TIMEOUT;generic 分支的「修本地
|
|
736
|
+
// 凭据」文案在这里是错误指引(请求已发出,问题在上游无响应)。
|
|
737
|
+
// 语义是 idle(静默窗):{0} 内没有任何新输出才放弃,不是说模型「完全没
|
|
738
|
+
// 响应」——文案必须与这个语义一致,否则会把正在生成的用户推向重复发送
|
|
739
|
+
// (2026-10 ctx-overflow-feedback review 修复 1)。
|
|
740
|
+
llmRequestTimedOut: {
|
|
741
|
+
en: "No new model output for {0}, so this turn was stopped. Your message was kept. Retry in this conversation, switch to another model, or run /compact first.",
|
|
742
|
+
zh: "\u6A21\u578B\u5DF2 {0} \u6CA1\u6709\u65B0\u8F93\u51FA\uFF0C\u672C\u8F6E\u5DF2\u505C\u6B62\u7B49\u5F85\uFF08\u53EF\u80FD\u4ECD\u5728\u751F\u6210\uFF09\u3002\u4F60\u7684\u6D88\u606F\u5DF2\u4FDD\u7559\u3002\u53EF\u5728\u672C\u5BF9\u8BDD\u91CD\u8BD5\u3001\u5207\u6362\u5230\u5176\u4ED6\u6A21\u578B\uFF0C\u6216\u5148 /compact \u538B\u7F29\u5BF9\u8BDD\u3002"
|
|
743
|
+
},
|
|
677
744
|
thinkingTraceLine: {
|
|
678
745
|
en: "\u273B Thought for {0}",
|
|
679
746
|
zh: "\u273B \u601D\u8003 {0}"
|
|
@@ -1032,6 +1099,18 @@ var STRINGS = {
|
|
|
1032
1099
|
en: "Unknown command: {0}\n\n",
|
|
1033
1100
|
zh: "\u672A\u77E5\u547D\u4EE4\uFF1A{0}\n\n"
|
|
1034
1101
|
},
|
|
1102
|
+
noConversationLinks: {
|
|
1103
|
+
en: "No links in this conversation yet.",
|
|
1104
|
+
zh: "\u672C\u4F1A\u8BDD\u8FD8\u6CA1\u6709\u51FA\u73B0\u94FE\u63A5\u3002"
|
|
1105
|
+
},
|
|
1106
|
+
conversationLinksCopyHint: {
|
|
1107
|
+
en: "Open one by copying its URL (Cmd/Ctrl + click, or select and copy).",
|
|
1108
|
+
zh: "\u590D\u5236\u5BF9\u5E94 URL \u5373\u53EF\u6253\u5F00\uFF08Cmd/Ctrl + \u70B9\u51FB\uFF0C\u6216\u9009\u4E2D\u590D\u5236\uFF09\u3002"
|
|
1109
|
+
},
|
|
1110
|
+
conversationLinksShowing: {
|
|
1111
|
+
en: "Links in this conversation (showing first {0} of {1}):",
|
|
1112
|
+
zh: "\u672C\u4F1A\u8BDD\u51FA\u73B0\u7684\u94FE\u63A5\uFF08\u663E\u793A\u524D {0} \u4E2A\uFF0C\u5171 {1} \u4E2A\uFF09\uFF1A"
|
|
1113
|
+
},
|
|
1035
1114
|
runtimeUsage: { en: "Usage: /runtime <auto|local|server>", zh: "\u7528\u6CD5\uFF1A/runtime <auto|local|server>" },
|
|
1036
1115
|
runtimeSet: { en: "Runtime: {0}", zh: "\u8FD0\u884C\u6A21\u5F0F\uFF1A{0}" },
|
|
1037
1116
|
displayFixedHint: {
|
|
@@ -1338,6 +1417,11 @@ var TOOL_LABELS = {
|
|
|
1338
1417
|
function toolLabel(name) {
|
|
1339
1418
|
return TOOL_LABELS[name]?.[currentLocale] ?? name;
|
|
1340
1419
|
}
|
|
1420
|
+
function toolLabelVariants(name) {
|
|
1421
|
+
const entry = TOOL_LABELS[name];
|
|
1422
|
+
if (!entry) return [name];
|
|
1423
|
+
return [...new Set(Object.values(entry))];
|
|
1424
|
+
}
|
|
1341
1425
|
function agentRunCardLabels() {
|
|
1342
1426
|
return {
|
|
1343
1427
|
runStatus: t("runStatusLabel"),
|
|
@@ -1719,6 +1803,9 @@ function buildCliChromeConnectorOpenAiTools(args) {
|
|
|
1719
1803
|
function buildOpenAiTools(args) {
|
|
1720
1804
|
const toolset = buildLocalWorkspaceToolsetForEnv(args);
|
|
1721
1805
|
const workspaceToolNames = toolset.toolNames;
|
|
1806
|
+
const modelWorkspaceToolNames = (args.effectiveToolNames ?? workspaceToolNames).filter(
|
|
1807
|
+
(toolName) => toolName !== "taskWait" || !hasRunWakeChannel(args.env)
|
|
1808
|
+
);
|
|
1722
1809
|
const toolNameSet = new Set(args.toolNames ?? []);
|
|
1723
1810
|
const uiAskChoiceTools = toolNameSet.has("ask_user") ? prepareTools(["ask_user"]) : [];
|
|
1724
1811
|
const readPastedTextTools = toolNameSet.has("readPastedText") ? [
|
|
@@ -1760,7 +1847,7 @@ function buildOpenAiTools(args) {
|
|
|
1760
1847
|
...uiAskChoiceTools,
|
|
1761
1848
|
...readPastedTextTools,
|
|
1762
1849
|
...buildLocalWorkspaceOpenAiTools({
|
|
1763
|
-
toolNames:
|
|
1850
|
+
toolNames: modelWorkspaceToolNames,
|
|
1764
1851
|
exposeShellTools: toolset.exposeShellTools
|
|
1765
1852
|
}),
|
|
1766
1853
|
...buildCliChromeConnectorOpenAiTools({ toolNames: args.toolNames }),
|
|
@@ -2420,14 +2507,19 @@ var resolveAntigravityTransport = async (ctx) => {
|
|
|
2420
2507
|
requestedToolNames,
|
|
2421
2508
|
openAiToolNames: summarizeOpenAiToolNames(tools)
|
|
2422
2509
|
});
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2510
|
+
let lastUsedCredential = initialCredential;
|
|
2511
|
+
const resolveLocalCredential = async ({ forceRefresh }) => {
|
|
2512
|
+
const resolved = await resolveLocalAntigravityCredential({
|
|
2513
|
+
credentialOwnerUserId,
|
|
2514
|
+
apiKeyRefResolver,
|
|
2515
|
+
apiKeyRef: agentConfig.apiKeyRef,
|
|
2516
|
+
readCredential: () => readOAuthCredential("antigravity", void 0, legacyCredentialMigration),
|
|
2517
|
+
migration: legacyCredentialMigration,
|
|
2518
|
+
forceRefresh
|
|
2519
|
+
});
|
|
2520
|
+
lastUsedCredential = resolved;
|
|
2521
|
+
return resolved;
|
|
2522
|
+
};
|
|
2431
2523
|
let result;
|
|
2432
2524
|
try {
|
|
2433
2525
|
result = await invokeAntigravity({
|
|
@@ -2481,10 +2573,27 @@ var resolveAntigravityTransport = async (ctx) => {
|
|
|
2481
2573
|
};
|
|
2482
2574
|
}
|
|
2483
2575
|
if (result.status < 200 || result.status >= 300) {
|
|
2484
|
-
const
|
|
2485
|
-
|
|
2576
|
+
const upstreamError = result.body && typeof result.body === "object" && result.body.error && typeof result.body.error === "object" ? result.body.error : void 0;
|
|
2577
|
+
const errMsg = (
|
|
2578
|
+
// Google Cloud Code Assist gates calls behind a one-time account
|
|
2579
|
+
// verification and answers HTTP 403 with the validation link in
|
|
2580
|
+
// `error.details[].metadata.validation_url` — NOT in
|
|
2581
|
+
// `error.message`. Extracting only `error.message` here drops the
|
|
2582
|
+
// link before agentRun's extractGoogleValidationLink can recover
|
|
2583
|
+
// it, so when details are present we append them after the clean
|
|
2584
|
+
// message; the extractor scans raw text for validation_url so a
|
|
2585
|
+
// `details=[...]` suffix is enough, and the Detail line keeps its
|
|
2586
|
+
// readable `HTTP 403 <message>` headline. Plain-message errors
|
|
2587
|
+
// keep the old shape so existing output stays unchanged.
|
|
2588
|
+
upstreamError && Array.isArray(upstreamError.details) ? `${typeof upstreamError.message === "string" ? upstreamError.message : ""} details=${JSON.stringify(upstreamError.details)}`.trim() : typeof upstreamError?.message === "string" ? upstreamError.message : JSON.stringify(result.body)
|
|
2589
|
+
);
|
|
2590
|
+
const failure = new Error(
|
|
2486
2591
|
`local antigravity provider failed: HTTP ${result.status} ${errMsg}`
|
|
2487
2592
|
);
|
|
2593
|
+
if (lastUsedCredential?.accountId) {
|
|
2594
|
+
failure.credentialAccountId = lastUsedCredential.accountId;
|
|
2595
|
+
}
|
|
2596
|
+
throw failure;
|
|
2488
2597
|
}
|
|
2489
2598
|
const choice = Array.isArray(result.body?.choices) ? result.body.choices[0] : void 0;
|
|
2490
2599
|
const message = choice?.message ?? {};
|
|
@@ -8049,6 +8158,37 @@ function processCursorServerMessage(msg, state, onTextDelta, onReasoningDelta) {
|
|
|
8049
8158
|
state.outputTokens += tokens;
|
|
8050
8159
|
}
|
|
8051
8160
|
}
|
|
8161
|
+
function attachCursorUpstreamFailure(error, failure) {
|
|
8162
|
+
if (failure) {
|
|
8163
|
+
error.cursorUpstreamFailure = failure;
|
|
8164
|
+
}
|
|
8165
|
+
return error;
|
|
8166
|
+
}
|
|
8167
|
+
function readCursorUpstreamFailure(error) {
|
|
8168
|
+
if (!error || typeof error !== "object") return void 0;
|
|
8169
|
+
const failure = error.cursorUpstreamFailure;
|
|
8170
|
+
if (!failure || typeof failure !== "object") return void 0;
|
|
8171
|
+
if (typeof failure.status !== "number" || !Number.isFinite(failure.status)) {
|
|
8172
|
+
return void 0;
|
|
8173
|
+
}
|
|
8174
|
+
return failure;
|
|
8175
|
+
}
|
|
8176
|
+
function buildCursorGrpcTrailerError(trailers) {
|
|
8177
|
+
const status = trailers["grpc-status"];
|
|
8178
|
+
if (!status || String(status) === "0") return null;
|
|
8179
|
+
const rawMessage = String(trailers["grpc-message"] || "");
|
|
8180
|
+
let message;
|
|
8181
|
+
try {
|
|
8182
|
+
message = decodeURIComponent(rawMessage);
|
|
8183
|
+
} catch {
|
|
8184
|
+
message = rawMessage;
|
|
8185
|
+
}
|
|
8186
|
+
const statusText = String(status);
|
|
8187
|
+
return attachCursorUpstreamFailure(
|
|
8188
|
+
new Error(`Cursor gRPC error ${statusText}: ${message}`),
|
|
8189
|
+
statusText === "8" || statusText.toLowerCase() === "resource_exhausted" ? { status: 429, body: { code: "resource_exhausted", message } } : void 0
|
|
8190
|
+
);
|
|
8191
|
+
}
|
|
8052
8192
|
async function streamCursorChat(messages, options) {
|
|
8053
8193
|
const baseUrl = options.baseUrl || CURSOR_API_URL;
|
|
8054
8194
|
const clientVersion = options.clientVersion || CURSOR_CLIENT_VERSION;
|
|
@@ -8146,14 +8286,9 @@ async function streamCursorChat(messages, options) {
|
|
|
8146
8286
|
}
|
|
8147
8287
|
});
|
|
8148
8288
|
h2Request.on("trailers", (trailers) => {
|
|
8149
|
-
const
|
|
8150
|
-
|
|
8151
|
-
|
|
8152
|
-
h2Completion.reject(
|
|
8153
|
-
new Error(
|
|
8154
|
-
`Cursor gRPC error ${status}: ${decodeURIComponent(String(msg || ""))}`
|
|
8155
|
-
)
|
|
8156
|
-
);
|
|
8289
|
+
const error = buildCursorGrpcTrailerError(trailers);
|
|
8290
|
+
if (error) {
|
|
8291
|
+
h2Completion.reject(error);
|
|
8157
8292
|
}
|
|
8158
8293
|
});
|
|
8159
8294
|
h2Request.on("end", () => {
|
|
@@ -9174,6 +9309,7 @@ function createCursorProvider(config) {
|
|
|
9174
9309
|
...config.executeTool ? { executeTool: config.executeTool } : {},
|
|
9175
9310
|
...config.searchWorkspace ? { searchWorkspace: config.searchWorkspace } : {},
|
|
9176
9311
|
...config.listWorkspaceEntries ? { listWorkspaceEntries: config.listWorkspaceEntries } : {},
|
|
9312
|
+
...options?.signal ? { signal: options.signal } : {},
|
|
9177
9313
|
...options?.onTextDelta ? { onTextDelta: options.onTextDelta } : {},
|
|
9178
9314
|
...options?.onReasoningDelta ? { onReasoningDelta: options.onReasoningDelta } : {},
|
|
9179
9315
|
...options?.onToolEvent ? { onToolEvent: options.onToolEvent } : {},
|
|
@@ -9224,7 +9360,7 @@ function assertWithinLocalToolBudget(args) {
|
|
|
9224
9360
|
|
|
9225
9361
|
// packages/cli/client/providerResolution/cursorTransport.ts
|
|
9226
9362
|
var resolveCursorTransport = async (ctx) => {
|
|
9227
|
-
const { agentConfig, deps, workspaceRoot, additionalToolNames, buildProviderOpenAiTools, apiKeyRefResolver, activeAgentToolNames, localToolExecutors } = ctx;
|
|
9363
|
+
const { agentConfig, deps, workspaceRoot, additionalToolNames, buildProviderOpenAiTools, apiKeyRefResolver, activeAgentToolNames, localToolExecutors, recordLocalAvailability } = ctx;
|
|
9228
9364
|
if (isCursorOAuthAgent(agentConfig)) {
|
|
9229
9365
|
const accessToken = await apiKeyRefResolver("cursor");
|
|
9230
9366
|
if (!accessToken) {
|
|
@@ -9251,6 +9387,8 @@ var resolveCursorTransport = async (ctx) => {
|
|
|
9251
9387
|
agentToolNames: activeAgentToolNames,
|
|
9252
9388
|
call,
|
|
9253
9389
|
executors: localToolExecutors,
|
|
9390
|
+
// 分发前参数闸门:与 host adapter 的 executeTool 同口径。
|
|
9391
|
+
toolParametersIndex: getAgentRuntimeToolParametersIndex(),
|
|
9254
9392
|
detachMs: resolveExecShellDetachMs(deps.env),
|
|
9255
9393
|
...deps.confirmDestructiveAction ? { confirmDestructiveAction: deps.confirmDestructiveAction } : {}
|
|
9256
9394
|
});
|
|
@@ -9300,15 +9438,24 @@ var resolveCursorTransport = async (ctx) => {
|
|
|
9300
9438
|
toolCount: tools.length,
|
|
9301
9439
|
requestedToolNames
|
|
9302
9440
|
});
|
|
9303
|
-
|
|
9304
|
-
|
|
9305
|
-
|
|
9306
|
-
|
|
9307
|
-
|
|
9308
|
-
|
|
9309
|
-
|
|
9310
|
-
|
|
9311
|
-
|
|
9441
|
+
try {
|
|
9442
|
+
const result = await cursorProvider.complete(messages, options);
|
|
9443
|
+
await recordLocalAvailability(200);
|
|
9444
|
+
logLocalRuntimeDiagnostic("provider.request.result", {
|
|
9445
|
+
agentKey: agentConfig.key,
|
|
9446
|
+
transport: "cursor-connect",
|
|
9447
|
+
ok: true,
|
|
9448
|
+
contentChars: (result.content ?? "").length,
|
|
9449
|
+
toolCallCount: result.tool_calls?.length ?? 0
|
|
9450
|
+
});
|
|
9451
|
+
return result;
|
|
9452
|
+
} catch (error) {
|
|
9453
|
+
const failure = readCursorUpstreamFailure(error);
|
|
9454
|
+
if (failure) {
|
|
9455
|
+
await recordLocalAvailability(failure.status, failure.body);
|
|
9456
|
+
}
|
|
9457
|
+
throw error;
|
|
9458
|
+
}
|
|
9312
9459
|
}
|
|
9313
9460
|
};
|
|
9314
9461
|
}
|
|
@@ -9317,7 +9464,14 @@ var resolveCursorTransport = async (ctx) => {
|
|
|
9317
9464
|
|
|
9318
9465
|
// packages/cli/client/providerResolution/devinTransport.ts
|
|
9319
9466
|
var resolveDevinTransport = async (ctx) => {
|
|
9320
|
-
const {
|
|
9467
|
+
const {
|
|
9468
|
+
agentConfig,
|
|
9469
|
+
apiKeyRefResolver,
|
|
9470
|
+
deps,
|
|
9471
|
+
buildProviderOpenAiTools,
|
|
9472
|
+
additionalToolNames,
|
|
9473
|
+
recordLocalAvailability
|
|
9474
|
+
} = ctx;
|
|
9321
9475
|
if (isDevinOAuthAgent(agentConfig)) {
|
|
9322
9476
|
const accessToken = await apiKeyRefResolver("devin");
|
|
9323
9477
|
if (!accessToken) {
|
|
@@ -9326,22 +9480,46 @@ var resolveDevinTransport = async (ctx) => {
|
|
|
9326
9480
|
);
|
|
9327
9481
|
}
|
|
9328
9482
|
const model = agentConfig.model || "swe-2-max";
|
|
9483
|
+
const { requestedToolNames, tools } = resolveProviderOpenAiToolBundle(
|
|
9484
|
+
agentConfig,
|
|
9485
|
+
deps.env,
|
|
9486
|
+
buildProviderOpenAiTools,
|
|
9487
|
+
additionalToolNames
|
|
9488
|
+
);
|
|
9489
|
+
const devinProvider = createDevinProvider({
|
|
9490
|
+
token: accessToken,
|
|
9491
|
+
model,
|
|
9492
|
+
fetchImpl: ctx.fetchImpl,
|
|
9493
|
+
tools,
|
|
9494
|
+
// agentConfig.temperature reaches every transport except the Devin one;
|
|
9495
|
+
// forward it so the agent form's sampling knob stops being a no-op here.
|
|
9496
|
+
// Left undefined it keeps the upstream client's value.
|
|
9497
|
+
temperature: typeof agentConfig.temperature === "number" ? agentConfig.temperature : void 0
|
|
9498
|
+
});
|
|
9329
9499
|
logLocalRuntimeDiagnostic("provider.selected", {
|
|
9330
9500
|
agentKey: agentConfig.key,
|
|
9331
9501
|
transport: "devin-connect",
|
|
9332
9502
|
provider: "devin",
|
|
9333
9503
|
model,
|
|
9334
|
-
hasApiKey: true
|
|
9335
|
-
|
|
9336
|
-
|
|
9337
|
-
|
|
9338
|
-
model,
|
|
9339
|
-
fetchImpl: ctx.fetchImpl
|
|
9504
|
+
hasApiKey: true,
|
|
9505
|
+
toolCount: tools.length,
|
|
9506
|
+
requestedToolNames,
|
|
9507
|
+
temperature: typeof agentConfig.temperature === "number" ? agentConfig.temperature : null
|
|
9340
9508
|
});
|
|
9341
9509
|
return {
|
|
9342
9510
|
model,
|
|
9343
9511
|
complete: async (messages, options) => {
|
|
9344
|
-
|
|
9512
|
+
try {
|
|
9513
|
+
const result = await devinProvider.complete(messages, options);
|
|
9514
|
+
await recordLocalAvailability(200);
|
|
9515
|
+
return result;
|
|
9516
|
+
} catch (error) {
|
|
9517
|
+
const failure = readDevinUpstreamFailure(error);
|
|
9518
|
+
if (failure) {
|
|
9519
|
+
await recordLocalAvailability(failure.status, failure.body);
|
|
9520
|
+
}
|
|
9521
|
+
throw error;
|
|
9522
|
+
}
|
|
9345
9523
|
}
|
|
9346
9524
|
};
|
|
9347
9525
|
}
|
|
@@ -9448,7 +9626,7 @@ var resolveDirectOpenAiCompatibleTransport = async (ctx) => {
|
|
|
9448
9626
|
|
|
9449
9627
|
// packages/cli/client/providerResolution/geminiNativeToolTransport.ts
|
|
9450
9628
|
var resolveGeminiNativeToolTransport = async (ctx) => {
|
|
9451
|
-
const { agentConfig, deps, fetchImpl, additionalToolNames, buildProviderOpenAiTools, apiKeyRefResolver, credentialBroker, syncFetcher } = ctx;
|
|
9629
|
+
const { agentConfig, deps, fetchImpl, additionalToolNames, buildProviderOpenAiTools, apiKeyRefResolver, credentialBroker, syncFetcher, recordLocalAvailability } = ctx;
|
|
9452
9630
|
if (shouldUsePlatformChatProvider(deps.env, agentConfig) && isGemini3Model(agentConfig.model ?? "") && agentConfig.provider === "google") {
|
|
9453
9631
|
const providerConfig = await resolvePlatformChatProviderConfig({
|
|
9454
9632
|
agentConfig,
|
|
@@ -9515,6 +9693,7 @@ var resolveGeminiNativeToolTransport = async (ctx) => {
|
|
|
9515
9693
|
status: res.status,
|
|
9516
9694
|
error: errText.slice(0, 200)
|
|
9517
9695
|
});
|
|
9696
|
+
await recordLocalAvailability(res.status, errText);
|
|
9518
9697
|
throw new Error(
|
|
9519
9698
|
`gemini native tool provider failed: HTTP ${res.status} ${errText.slice(0, 500)}`
|
|
9520
9699
|
);
|
|
@@ -9540,6 +9719,7 @@ var resolveGeminiNativeToolTransport = async (ctx) => {
|
|
|
9540
9719
|
contentChars: text.length,
|
|
9541
9720
|
toolCallCount: toolCalls.length
|
|
9542
9721
|
});
|
|
9722
|
+
await recordLocalAvailability(200);
|
|
9543
9723
|
return result;
|
|
9544
9724
|
}
|
|
9545
9725
|
};
|
|
@@ -10091,6 +10271,446 @@ async function syncLocalDialogEvidenceToRemote(args) {
|
|
|
10091
10271
|
return { attempted: true };
|
|
10092
10272
|
}
|
|
10093
10273
|
|
|
10274
|
+
// packages/core/publicAgentSeeds.ts
|
|
10275
|
+
var AGENT_SEED_DEFAULTS = {
|
|
10276
|
+
isPublic: true,
|
|
10277
|
+
allowFork: true,
|
|
10278
|
+
hasVision: false,
|
|
10279
|
+
tools: []
|
|
10280
|
+
};
|
|
10281
|
+
function deterministicId(prefix, seed) {
|
|
10282
|
+
let h = 2166136261;
|
|
10283
|
+
for (let i = 0; i < seed.length; i++) {
|
|
10284
|
+
h ^= seed.charCodeAt(i);
|
|
10285
|
+
h = h * 16777619 >>> 0;
|
|
10286
|
+
}
|
|
10287
|
+
const suffix = h.toString(36).toUpperCase().padStart(14, "0");
|
|
10288
|
+
return (prefix + suffix).slice(0, 26);
|
|
10289
|
+
}
|
|
10290
|
+
function defineAgentSeed(input) {
|
|
10291
|
+
const providerForLookup = isPlatformHostedImageModel(input.model) ? "nolo" : input.provider || "nolo";
|
|
10292
|
+
const tools = input.tools ? [...input.tools] : [...AGENT_SEED_DEFAULTS.tools];
|
|
10293
|
+
const isPublic = input.isPublic ?? AGENT_SEED_DEFAULTS.isPublic;
|
|
10294
|
+
const allowFork = input.allowFork ?? AGENT_SEED_DEFAULTS.allowFork;
|
|
10295
|
+
const tags = input.tags ? [...input.tags] : [];
|
|
10296
|
+
const isPlatformHosted = isNoloHostedProvider(input.provider);
|
|
10297
|
+
const isPlatformPriced = !isPlatformHostedImageModel(input.model) && (isPlatformHosted || input.apiSource === "platform" || input.isPublic === true && !input.apiSource);
|
|
10298
|
+
let inputPrice = isPlatformPriced ? void 0 : input.inputPrice;
|
|
10299
|
+
let outputPrice = isPlatformPriced ? void 0 : input.outputPrice;
|
|
10300
|
+
let hasVision = input.hasVision;
|
|
10301
|
+
const pricesProvided = input.inputPrice !== void 0 || input.outputPrice !== void 0;
|
|
10302
|
+
if (!isPlatformPriced && (inputPrice === void 0 || outputPrice === void 0)) {
|
|
10303
|
+
const pricing = getModelPricing(providerForLookup, input.model);
|
|
10304
|
+
if (!pricing) {
|
|
10305
|
+
throw new Error(`\u672A\u627E\u5230\u6A21\u578B\u4EF7\u683C\u5143\u6570\u636E: ${providerForLookup}/${input.model}`);
|
|
10306
|
+
}
|
|
10307
|
+
if (inputPrice === void 0) inputPrice = pricing.inputPrice;
|
|
10308
|
+
if (outputPrice === void 0) outputPrice = pricing.outputPrice;
|
|
10309
|
+
}
|
|
10310
|
+
if (hasVision === void 0) {
|
|
10311
|
+
if (pricesProvided) {
|
|
10312
|
+
hasVision = AGENT_SEED_DEFAULTS.hasVision;
|
|
10313
|
+
} else {
|
|
10314
|
+
const modelConfig = getModelConfig(providerForLookup, input.model);
|
|
10315
|
+
hasVision = !!modelConfig.hasVision;
|
|
10316
|
+
}
|
|
10317
|
+
}
|
|
10318
|
+
const userVisibleTexts = [
|
|
10319
|
+
["name", input.name],
|
|
10320
|
+
["introduction", input.introduction],
|
|
10321
|
+
[
|
|
10322
|
+
"greeting",
|
|
10323
|
+
typeof input.greeting === "string" ? input.greeting : input.greeting?.text
|
|
10324
|
+
],
|
|
10325
|
+
["prompt", input.prompt],
|
|
10326
|
+
...(input.tags ?? []).map((tag) => ["tags", tag])
|
|
10327
|
+
];
|
|
10328
|
+
for (const [fieldName, text] of userVisibleTexts) {
|
|
10329
|
+
if (!text) continue;
|
|
10330
|
+
const hit = text.match(/平台托管|runinfra|openrouter|ollama/i);
|
|
10331
|
+
if (hit) {
|
|
10332
|
+
throw new Error(
|
|
10333
|
+
`\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`
|
|
10334
|
+
);
|
|
10335
|
+
}
|
|
10336
|
+
}
|
|
10337
|
+
const { inputPrice: _strippedInputPrice, outputPrice: _strippedOutputPrice, ...inputRest } = input;
|
|
10338
|
+
const record = {
|
|
10339
|
+
...inputRest,
|
|
10340
|
+
tools,
|
|
10341
|
+
isPublic,
|
|
10342
|
+
allowFork,
|
|
10343
|
+
tags,
|
|
10344
|
+
hasVision
|
|
10345
|
+
};
|
|
10346
|
+
if (!isPlatformPriced) {
|
|
10347
|
+
record.inputPrice = inputPrice;
|
|
10348
|
+
record.outputPrice = outputPrice;
|
|
10349
|
+
}
|
|
10350
|
+
return record;
|
|
10351
|
+
}
|
|
10352
|
+
var GPT_6_LUNA_DEF = defineAgentSeed({
|
|
10353
|
+
// salt 冻结为历史值 "shared-space-openai-gpt-5-6-luna":deterministicId 由
|
|
10354
|
+
// prefix+salt 哈希得出,改 salt 会换 ID——2026-09-23 Luna 原地换代
|
|
10355
|
+
// (GPT-5.6 Luna → GPT-6 Luna)必须保留稳定 ID,用户收藏/别名/Space
|
|
10356
|
+
// 内容键才不失效。
|
|
10357
|
+
id: deterministicId("01GPT56LUNPB", "shared-space-openai-gpt-5-6-luna"),
|
|
10358
|
+
presetKey: "gpt-6-luna",
|
|
10359
|
+
name: "GPT-6 Luna",
|
|
10360
|
+
// provider 用平台托管命名空间 "nolo"(平台 agent 统一收敛方向):平台价只注册在
|
|
10361
|
+
// nolo 下,agent-run 的托管路由门也只认 nolo。写上游名 "openai" 会让计费落零价
|
|
10362
|
+
// 虚拟模型并绕过 hosted routing(2026-09-24 review CRITICAL)。
|
|
10363
|
+
provider: "nolo",
|
|
10364
|
+
model: "gpt-6-luna",
|
|
10365
|
+
isPublic: true,
|
|
10366
|
+
platformAudit: true,
|
|
10367
|
+
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",
|
|
10368
|
+
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",
|
|
10369
|
+
prompt: "\u4F18\u5148\u5FEB\u901F\u5B8C\u6210\u4EFB\u52A1\uFF1B\u4FDD\u6301\u56DE\u7B54\u76F4\u63A5\u3001\u7ED3\u8BBA\u660E\u786E\u3002",
|
|
10370
|
+
tools: [],
|
|
10371
|
+
tags: ["openai"]
|
|
10372
|
+
});
|
|
10373
|
+
var DEEPSEEK_V4_FLASH_DEF = defineAgentSeed({
|
|
10374
|
+
id: PUBLIC_DEEPSEEK_V4_FLASH_AGENT_ID,
|
|
10375
|
+
presetKey: "deepseek-v4-flash",
|
|
10376
|
+
name: "DeepSeek Flash",
|
|
10377
|
+
provider: "nolo",
|
|
10378
|
+
model: "deepseek-flash",
|
|
10379
|
+
isPublic: true,
|
|
10380
|
+
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",
|
|
10381
|
+
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",
|
|
10382
|
+
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",
|
|
10383
|
+
tools: [],
|
|
10384
|
+
tags: ["nolo", "deepseek"]
|
|
10385
|
+
});
|
|
10386
|
+
var DEEPSEEK_V4_PRO_DEF = defineAgentSeed({
|
|
10387
|
+
id: PUBLIC_DEEPSEEK_V4_PRO_AGENT_ID,
|
|
10388
|
+
presetKey: "deepseek-v4-pro",
|
|
10389
|
+
name: "DeepSeek V4 Pro",
|
|
10390
|
+
provider: "nolo",
|
|
10391
|
+
model: "deepseek-v4-pro",
|
|
10392
|
+
hasVision: false,
|
|
10393
|
+
isPublic: true,
|
|
10394
|
+
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",
|
|
10395
|
+
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",
|
|
10396
|
+
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",
|
|
10397
|
+
tools: [],
|
|
10398
|
+
tags: ["nolo", "deepseek"]
|
|
10399
|
+
});
|
|
10400
|
+
var GLM_5_3_DEF = defineAgentSeed({
|
|
10401
|
+
id: "01GLM52DIPB00000000I3E2MY",
|
|
10402
|
+
presetKey: "glm-5.3",
|
|
10403
|
+
name: "GLM 5.3",
|
|
10404
|
+
provider: "nolo",
|
|
10405
|
+
model: "glm-5.3",
|
|
10406
|
+
isPublic: true,
|
|
10407
|
+
hasVision: true,
|
|
10408
|
+
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",
|
|
10409
|
+
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",
|
|
10410
|
+
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",
|
|
10411
|
+
tools: [],
|
|
10412
|
+
tags: ["nolo", "glm"]
|
|
10413
|
+
});
|
|
10414
|
+
var GLM_5_3_FLASH_DEF = defineAgentSeed({
|
|
10415
|
+
id: PUBLIC_GLM_53_FLASH_AGENT_ID,
|
|
10416
|
+
presetKey: "glm-5-3-flash",
|
|
10417
|
+
name: "GLM 5.3 Flash",
|
|
10418
|
+
provider: "nolo",
|
|
10419
|
+
model: "glm-5-3-flash",
|
|
10420
|
+
isPublic: true,
|
|
10421
|
+
hasVision: true,
|
|
10422
|
+
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",
|
|
10423
|
+
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",
|
|
10424
|
+
prompt: "\u76F4\u63A5\u3001\u7B80\u6D01\u5730\u5B8C\u6210\u4EFB\u52A1\uFF1B\u56DE\u7B54\u4FDD\u6301\u7B80\u77ED\uFF0C\u5148\u7ED9\u7ED3\u8BBA\u3002",
|
|
10425
|
+
// 关掉思考:该模型默认档的 reasoning token 计入输出计费,而实测 low 档
|
|
10426
|
+
// reasoning 输出为 0(10/10 样本),单轮问答输出 token 降到约 1/5、多轮工具
|
|
10427
|
+
// 循环降约 4 成,可见回复长度、工具调用正确性与循环完成度均不变。
|
|
10428
|
+
// medium 档只省约 29% token 且延迟不改善,故直接用 low。
|
|
10429
|
+
reasoning_effort: "low",
|
|
10430
|
+
tools: [],
|
|
10431
|
+
tags: ["nolo", "glm", "flash"]
|
|
10432
|
+
});
|
|
10433
|
+
var CLAUDE_FABLE_5_1_DEF = defineAgentSeed({
|
|
10434
|
+
id: deterministicId("01CLDFBL51PB", "shared-space-anthropic-claude-fable-5-1"),
|
|
10435
|
+
presetKey: "claude-fable-5-1",
|
|
10436
|
+
name: "Claude Fable 5.1",
|
|
10437
|
+
provider: "nolo",
|
|
10438
|
+
model: "anthropic/claude-fable-5-1",
|
|
10439
|
+
isPublic: true,
|
|
10440
|
+
hasVision: true,
|
|
10441
|
+
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",
|
|
10442
|
+
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",
|
|
10443
|
+
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",
|
|
10444
|
+
tools: [],
|
|
10445
|
+
tags: ["anthropic", "claude", "fable"]
|
|
10446
|
+
});
|
|
10447
|
+
var CLAUDE_OPUS_5_5_DEF = defineAgentSeed({
|
|
10448
|
+
id: deterministicId("01CLDOPU55PB", "shared-space-anthropic-claude-opus-5-5"),
|
|
10449
|
+
presetKey: "claude-opus-5-5",
|
|
10450
|
+
name: "Claude Opus 5.5",
|
|
10451
|
+
provider: "nolo",
|
|
10452
|
+
model: "anthropic/claude-opus-5-5",
|
|
10453
|
+
isPublic: true,
|
|
10454
|
+
hasVision: true,
|
|
10455
|
+
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",
|
|
10456
|
+
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",
|
|
10457
|
+
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",
|
|
10458
|
+
tools: [],
|
|
10459
|
+
tags: ["anthropic", "claude", "opus"]
|
|
10460
|
+
});
|
|
10461
|
+
var GROK_4_6_DEF = defineAgentSeed({
|
|
10462
|
+
id: deterministicId("01GROK46PLAZ", "shared-space-xai-grok-4-6"),
|
|
10463
|
+
presetKey: "grok-4.6",
|
|
10464
|
+
name: "Grok 4.6",
|
|
10465
|
+
provider: "xai",
|
|
10466
|
+
model: "grok-4.6",
|
|
10467
|
+
isPublic: true,
|
|
10468
|
+
hasVision: true,
|
|
10469
|
+
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",
|
|
10470
|
+
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",
|
|
10471
|
+
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",
|
|
10472
|
+
tools: [],
|
|
10473
|
+
tags: ["xai", "grok"]
|
|
10474
|
+
});
|
|
10475
|
+
var GEMINI_3_8_FLASH_DEF = defineAgentSeed({
|
|
10476
|
+
// 种子串冻结以维持确定性 ID 稳定,勿随版本改名。
|
|
10477
|
+
id: deterministicId("01GEM37FLPB", "shared-space-google-gemini-3-7-flash"),
|
|
10478
|
+
presetKey: "gemini-3.8-flash",
|
|
10479
|
+
name: "Gemini 3.8 Flash",
|
|
10480
|
+
provider: "nolo",
|
|
10481
|
+
model: "gemini-3.8-flash",
|
|
10482
|
+
isPublic: true,
|
|
10483
|
+
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",
|
|
10484
|
+
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",
|
|
10485
|
+
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",
|
|
10486
|
+
tools: [],
|
|
10487
|
+
tags: ["google", "gemini"]
|
|
10488
|
+
});
|
|
10489
|
+
var GPT_IMAGE_2_GENERATOR_DEF = defineAgentSeed({
|
|
10490
|
+
id: PUBLIC_GPT_IMAGE_2_GENERATOR_AGENT_ID,
|
|
10491
|
+
presetKey: "gpt-image-2-generator",
|
|
10492
|
+
name: "GPT Image 2 \u56FE\u7247\u751F\u6210\u5668",
|
|
10493
|
+
provider: "nolo",
|
|
10494
|
+
model: "gpt-6-luna",
|
|
10495
|
+
imageModel: "gpt-image-2",
|
|
10496
|
+
isPublic: true,
|
|
10497
|
+
hasImageOutput: true,
|
|
10498
|
+
imageWorkflow: "generate",
|
|
10499
|
+
imageConfig: { enabled: true },
|
|
10500
|
+
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",
|
|
10501
|
+
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",
|
|
10502
|
+
prompt: [
|
|
10503
|
+
"\u5B9A\u4F4D\uFF1A",
|
|
10504
|
+
"- \u4F60\u7684\u4E3B\u4EFB\u52A1\u662F\u6587\u672C\u751F\u6210\u65B0\u56FE\u7247\u3002",
|
|
10505
|
+
"- \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",
|
|
10506
|
+
"- \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",
|
|
10507
|
+
"",
|
|
10508
|
+
"\u5DE5\u4F5C\u65B9\u5F0F\uFF1A",
|
|
10509
|
+
"- \u7528\u6237\u7ED9\u51FA\u6E05\u6670\u9700\u6C42\u540E\uFF0C\u76F4\u63A5\u751F\u6210\uFF0C\u4E0D\u5148\u5199\u957F\u7BC7\u89E3\u91CA\u3002",
|
|
10510
|
+
"- 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",
|
|
10511
|
+
"- \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",
|
|
10512
|
+
"- \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",
|
|
10513
|
+
"",
|
|
10514
|
+
"\u56DE\u590D\u65B9\u5F0F\uFF1A",
|
|
10515
|
+
"- \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"
|
|
10516
|
+
].join("\n"),
|
|
10517
|
+
tools: ["openAIGptImageGenerate"],
|
|
10518
|
+
tags: ["image", "openai", "gpt-image-2", "generate"]
|
|
10519
|
+
});
|
|
10520
|
+
var GPT_IMAGE_2_EDITOR_DEF = defineAgentSeed({
|
|
10521
|
+
id: PUBLIC_GPT_IMAGE_2_EDITOR_AGENT_ID,
|
|
10522
|
+
presetKey: "gpt-image-2-editor",
|
|
10523
|
+
name: "GPT Image 2 \u56FE\u7247\u7F16\u8F91\u5668",
|
|
10524
|
+
provider: "nolo",
|
|
10525
|
+
model: "gpt-6-luna",
|
|
10526
|
+
imageModel: "gpt-image-2",
|
|
10527
|
+
isPublic: true,
|
|
10528
|
+
hasImageOutput: true,
|
|
10529
|
+
imageWorkflow: "edit",
|
|
10530
|
+
imageConfig: { enabled: true },
|
|
10531
|
+
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",
|
|
10532
|
+
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",
|
|
10533
|
+
prompt: [
|
|
10534
|
+
"\u5B9A\u4F4D\uFF1A",
|
|
10535
|
+
"- \u4F60\u7684\u4E3B\u4EFB\u52A1\u662F\u5355\u6B21\u8BF7\u6C42\u6539\u56FE\uFF0C\u4E0D\u662F\u957F\u5BF9\u8BDD\u966A\u4F34\u5F0F\u521B\u4F5C\u3002",
|
|
10536
|
+
"- \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",
|
|
10537
|
+
"- \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",
|
|
10538
|
+
"",
|
|
10539
|
+
"\u5DE5\u4F5C\u65B9\u5F0F\uFF1A",
|
|
10540
|
+
"- \u6536\u5230\u56FE\u7247\u540E\uFF0C\u4F18\u5148\u6309\u5355\u6B21\u8BF7\u6C42\u6539\u56FE\u5B8C\u6210\u5F53\u524D\u76EE\u6807\u3002",
|
|
10541
|
+
"- \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",
|
|
10542
|
+
"- \u5982\u679C\u7528\u6237\u63D0\u4F9B\u4E86 mask\uFF0C\u5C31\u628A mask \u89C6\u4E3A\u5FC5\u987B\u9075\u5B88\u7684\u7F16\u8F91\u8303\u56F4\u3002",
|
|
10543
|
+
"- \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",
|
|
10544
|
+
"- \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",
|
|
10545
|
+
"- \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",
|
|
10546
|
+
"- \u5982\u679C outputFormat \u662F png\uFF08\u6216\u6CA1\u6709\u663E\u5F0F\u6539\u6210 jpeg/webp\uFF09\uFF0C\u4E0D\u8981\u4F20 outputCompression\u3002",
|
|
10547
|
+
"",
|
|
10548
|
+
"\u56DE\u590D\u65B9\u5F0F\uFF1A",
|
|
10549
|
+
"- \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"
|
|
10550
|
+
].join("\n"),
|
|
10551
|
+
tools: ["openAIGptImageEdit"],
|
|
10552
|
+
tags: ["image", "openai", "gpt-image-2", "edit"]
|
|
10553
|
+
});
|
|
10554
|
+
var GPT_IMAGE_2_CONTINUOUS_DEF = defineAgentSeed({
|
|
10555
|
+
id: PUBLIC_GPT_IMAGE_2_CONTINUOUS_AGENT_ID,
|
|
10556
|
+
presetKey: "gpt-image-2-continuous",
|
|
10557
|
+
name: "GPT Image 2 \u8FDE\u7EED\u521B\u4F5C\u52A9\u624B",
|
|
10558
|
+
provider: "nolo",
|
|
10559
|
+
model: "gpt-6-luna",
|
|
10560
|
+
imageModel: "gpt-image-2",
|
|
10561
|
+
isPublic: true,
|
|
10562
|
+
hasImageOutput: true,
|
|
10563
|
+
imageWorkflow: "continuous",
|
|
10564
|
+
imageConfig: { enabled: true },
|
|
10565
|
+
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",
|
|
10566
|
+
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",
|
|
10567
|
+
prompt: [
|
|
10568
|
+
"\u5B9A\u4F4D\uFF1A",
|
|
10569
|
+
"- \u4F60\u7684\u4E3B\u4EFB\u52A1\u662F\u591A\u8F6E\u8FDE\u7EED\u521B\u4F5C\u3002",
|
|
10570
|
+
"- \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",
|
|
10571
|
+
"- \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",
|
|
10572
|
+
"",
|
|
10573
|
+
"\u5DE5\u4F5C\u65B9\u5F0F\uFF1A",
|
|
10574
|
+
"- \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",
|
|
10575
|
+
"- \u5982\u679C\u5F53\u524D\u8F6E\u7528\u6237\u4E0A\u4F20\u4E86\u65B0\u56FE\uFF0C\u4F18\u5148\u57FA\u4E8E\u65B0\u56FE\u7EE7\u7EED\u521B\u4F5C\u3002",
|
|
10576
|
+
"- \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",
|
|
10577
|
+
"- \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",
|
|
10578
|
+
"- \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",
|
|
10579
|
+
"- \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",
|
|
10580
|
+
"- \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",
|
|
10581
|
+
"- \u5982\u679C outputFormat \u662F png\uFF08\u6216\u6CA1\u6709\u663E\u5F0F\u6539\u6210 jpeg/webp\uFF09\uFF0C\u4E0D\u8981\u4F20 outputCompression\u3002",
|
|
10582
|
+
"",
|
|
10583
|
+
"\u56DE\u590D\u65B9\u5F0F\uFF1A",
|
|
10584
|
+
"- \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"
|
|
10585
|
+
].join("\n"),
|
|
10586
|
+
tools: ["openAIGptImageGenerate", "openAIGptImageEdit"],
|
|
10587
|
+
tags: ["image", "openai", "gpt-image-2", "continuous"]
|
|
10588
|
+
});
|
|
10589
|
+
var NANO_BANANA_2_LITE_GENERATOR_DEF = defineAgentSeed({
|
|
10590
|
+
id: PUBLIC_NANO_BANANA_2_LITE_AGENT_ID,
|
|
10591
|
+
presetKey: "nano-banana-2-lite-generator",
|
|
10592
|
+
name: "Nano Banana 2 Lite \u6587\u751F\u56FE",
|
|
10593
|
+
provider: "nolo",
|
|
10594
|
+
model: "gemini-3.1-flash-lite-image",
|
|
10595
|
+
isPublic: true,
|
|
10596
|
+
hasImageOutput: true,
|
|
10597
|
+
imageWorkflow: "generate",
|
|
10598
|
+
imageConfig: { enabled: true },
|
|
10599
|
+
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",
|
|
10600
|
+
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",
|
|
10601
|
+
prompt: [
|
|
10602
|
+
"\u5B9A\u4F4D\uFF1A",
|
|
10603
|
+
"- \u4F60\u7684\u4E3B\u4EFB\u52A1\u662F\u5FEB\u901F\u751F\u6210\u65B0\u56FE\u7247\u3002",
|
|
10604
|
+
"- \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",
|
|
10605
|
+
"",
|
|
10606
|
+
"\u5DE5\u4F5C\u65B9\u5F0F\uFF1A",
|
|
10607
|
+
"- \u7528\u6237\u7ED9\u51FA\u6E05\u6670\u9700\u6C42\u540E\uFF0C\u76F4\u63A5\u7528\u5F53\u524D\u6A21\u578B\u751F\u6210\u56FE\u7247\u3002",
|
|
10608
|
+
"- \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",
|
|
10609
|
+
"- prompt \u8981\u660E\u786E\u4E3B\u4F53\u3001\u573A\u666F\u3001\u98CE\u683C\u3001\u5149\u7EBF\u3001\u6C1B\u56F4\u3002",
|
|
10610
|
+
"- \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",
|
|
10611
|
+
"- \u5982\u679C\u7528\u6237\u4E0A\u4F20\u4E86\u53C2\u8003\u56FE\uFF0C\u8BA9\u6A21\u578B\u53C2\u8003\u6784\u56FE\u6216\u98CE\u683C\u3002",
|
|
10612
|
+
"- \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",
|
|
10613
|
+
"",
|
|
10614
|
+
"\u56DE\u590D\u65B9\u5F0F\uFF1A",
|
|
10615
|
+
"- \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"
|
|
10616
|
+
].join("\n"),
|
|
10617
|
+
tools: [],
|
|
10618
|
+
tags: ["image", "google", "gemini", "nano-banana", "fast", "generate"]
|
|
10619
|
+
});
|
|
10620
|
+
var PUBLIC_AGENT_DEFS = [
|
|
10621
|
+
GPT_6_LUNA_DEF,
|
|
10622
|
+
DEEPSEEK_V4_FLASH_DEF,
|
|
10623
|
+
DEEPSEEK_V4_PRO_DEF,
|
|
10624
|
+
GLM_5_3_DEF,
|
|
10625
|
+
GLM_5_3_FLASH_DEF,
|
|
10626
|
+
CLAUDE_FABLE_5_1_DEF,
|
|
10627
|
+
CLAUDE_OPUS_5_5_DEF,
|
|
10628
|
+
GROK_4_6_DEF,
|
|
10629
|
+
GEMINI_3_8_FLASH_DEF,
|
|
10630
|
+
GPT_IMAGE_2_GENERATOR_DEF,
|
|
10631
|
+
GPT_IMAGE_2_EDITOR_DEF,
|
|
10632
|
+
GPT_IMAGE_2_CONTINUOUS_DEF,
|
|
10633
|
+
NANO_BANANA_2_LITE_GENERATOR_DEF
|
|
10634
|
+
];
|
|
10635
|
+
var PLATFORM_AUDITED_AGENT_SPECS = PUBLIC_AGENT_DEFS.filter((def) => def.platformAudit).map((def) => ({
|
|
10636
|
+
name: def.name,
|
|
10637
|
+
key: publicAgentKey(def.id)
|
|
10638
|
+
}));
|
|
10639
|
+
|
|
10640
|
+
// packages/agent-runtime/publicAgentCatalogOverride.ts
|
|
10641
|
+
var SEED_BY_ID = new Map(
|
|
10642
|
+
PUBLIC_AGENT_DEFS.map((seed) => [seed.id, seed])
|
|
10643
|
+
);
|
|
10644
|
+
function toPlatformOwnedCatalogId(value) {
|
|
10645
|
+
if (typeof value !== "string") return null;
|
|
10646
|
+
const trimmed = value.trim();
|
|
10647
|
+
if (!trimmed) return null;
|
|
10648
|
+
const parsed = parsePublicAgentId(trimmed);
|
|
10649
|
+
if (parsed) return parsed;
|
|
10650
|
+
const systemId = parseSystemAgentId(trimmed);
|
|
10651
|
+
if (systemId) return systemId;
|
|
10652
|
+
return null;
|
|
10653
|
+
}
|
|
10654
|
+
function readPlatformOwnedKey(record) {
|
|
10655
|
+
const fields = record;
|
|
10656
|
+
for (const value of [fields.dbKey, fields.id]) {
|
|
10657
|
+
if (typeof value !== "string") continue;
|
|
10658
|
+
if (toPlatformOwnedCatalogId(value) === null) continue;
|
|
10659
|
+
return value;
|
|
10660
|
+
}
|
|
10661
|
+
return null;
|
|
10662
|
+
}
|
|
10663
|
+
function resolvePublicAgentCatalogOverride(agentKey) {
|
|
10664
|
+
const id = toPlatformOwnedCatalogId(agentKey);
|
|
10665
|
+
if (!id) return null;
|
|
10666
|
+
const entry = builtinAgentCatalogEntryById(id);
|
|
10667
|
+
if (!entry) return null;
|
|
10668
|
+
if (entry.group !== "public" || isRetiredCatalogEntry(entry)) return null;
|
|
10669
|
+
const seed = SEED_BY_ID.get(entry.id);
|
|
10670
|
+
if (!seed) return null;
|
|
10671
|
+
return {
|
|
10672
|
+
name: entry.name,
|
|
10673
|
+
provider: entry.provider,
|
|
10674
|
+
model: entry.model,
|
|
10675
|
+
introduction: seed.introduction,
|
|
10676
|
+
greeting: seed.greeting,
|
|
10677
|
+
prompt: seed.prompt,
|
|
10678
|
+
tools: [...seed.tools],
|
|
10679
|
+
tags: [...seed.tags]
|
|
10680
|
+
};
|
|
10681
|
+
}
|
|
10682
|
+
function overlayGreeting(recordGreeting, seedGreeting) {
|
|
10683
|
+
const seedText = typeof seedGreeting === "string" ? seedGreeting : isRecord(seedGreeting) ? seedGreeting.text : void 0;
|
|
10684
|
+
if (typeof seedText !== "string" || !seedText) return recordGreeting;
|
|
10685
|
+
if (isRecord(recordGreeting)) {
|
|
10686
|
+
return { ...recordGreeting, text: seedText };
|
|
10687
|
+
}
|
|
10688
|
+
if (recordGreeting === void 0 || recordGreeting === null) {
|
|
10689
|
+
return seedGreeting;
|
|
10690
|
+
}
|
|
10691
|
+
if (typeof recordGreeting === "string") {
|
|
10692
|
+
return seedText;
|
|
10693
|
+
}
|
|
10694
|
+
return recordGreeting;
|
|
10695
|
+
}
|
|
10696
|
+
function applyPublicAgentCatalogOverride(record, agentKey) {
|
|
10697
|
+
const override = resolvePublicAgentCatalogOverride(agentKey) ?? resolvePublicAgentCatalogOverride(readPlatformOwnedKey(record));
|
|
10698
|
+
if (!override) return record;
|
|
10699
|
+
const current = record;
|
|
10700
|
+
const greeting = overlayGreeting(current.greeting, override.greeting);
|
|
10701
|
+
return {
|
|
10702
|
+
...record,
|
|
10703
|
+
name: override.name,
|
|
10704
|
+
provider: override.provider,
|
|
10705
|
+
model: override.model,
|
|
10706
|
+
introduction: override.introduction,
|
|
10707
|
+
prompt: override.prompt,
|
|
10708
|
+
tools: [...override.tools],
|
|
10709
|
+
tags: [...override.tags],
|
|
10710
|
+
...greeting !== void 0 ? { greeting } : {}
|
|
10711
|
+
};
|
|
10712
|
+
}
|
|
10713
|
+
|
|
10094
10714
|
// packages/cli/client/cliLocalAgentRecordReader.ts
|
|
10095
10715
|
function resolveBuiltinLocalCliAgentConfig(agentRef, userId) {
|
|
10096
10716
|
const normalized = agentRef.trim();
|
|
@@ -10123,7 +10743,10 @@ async function readAgentFromStore(args) {
|
|
|
10123
10743
|
if (!record || typeof record !== "object") continue;
|
|
10124
10744
|
return applyBuiltinAgentRuntimeOverride(
|
|
10125
10745
|
args.agentRef,
|
|
10126
|
-
resolveAgentRuntimeConfigFromRecord(
|
|
10746
|
+
resolveAgentRuntimeConfigFromRecord(
|
|
10747
|
+
key,
|
|
10748
|
+
applyPublicAgentCatalogOverride(record)
|
|
10749
|
+
)
|
|
10127
10750
|
);
|
|
10128
10751
|
}
|
|
10129
10752
|
return resolveBuiltinPlatformAgentConfig(args.agentRef);
|
|
@@ -10492,6 +11115,9 @@ function waitForRunTerminal(args) {
|
|
|
10492
11115
|
};
|
|
10493
11116
|
const loop = Effect_exports.gen(function* () {
|
|
10494
11117
|
token = args.claim?.acquire() ?? null;
|
|
11118
|
+
const deadline = Date.now() + args.timeoutMs;
|
|
11119
|
+
const maxIterations = Math.ceil(args.timeoutMs / Math.max(1, args.pollIntervalMs)) + 1;
|
|
11120
|
+
let iterations = 0;
|
|
10495
11121
|
while (true) {
|
|
10496
11122
|
const state = yield* readEffect(args.read);
|
|
10497
11123
|
lastState = state;
|
|
@@ -10502,6 +11128,10 @@ function waitForRunTerminal(args) {
|
|
|
10502
11128
|
}
|
|
10503
11129
|
return { kind: "terminal", state };
|
|
10504
11130
|
}
|
|
11131
|
+
iterations += 1;
|
|
11132
|
+
if (Date.now() >= deadline || iterations >= maxIterations) {
|
|
11133
|
+
return { kind: "timeout", waitedMs: args.timeoutMs, lastState };
|
|
11134
|
+
}
|
|
10505
11135
|
const slept = yield* sleep(args.pollIntervalMs);
|
|
10506
11136
|
if (slept === "aborted") return { kind: "aborted" };
|
|
10507
11137
|
}
|
|
@@ -10926,6 +11556,12 @@ function buildRunStatusPayload(reconciled, deps, opts = {}) {
|
|
|
10926
11556
|
endedAt: reconciled.endedAt ?? null,
|
|
10927
11557
|
exitCode: reconciled.exitCode ?? null,
|
|
10928
11558
|
...reconciled.failureReason ? { failureReason: reconciled.failureReason } : {},
|
|
11559
|
+
// 结构化失败分类 + 可重试性:编排者据此决策,不再肉读 logTail。
|
|
11560
|
+
...reconciled.failureClass ? { failureClass: reconciled.failureClass } : {},
|
|
11561
|
+
...typeof reconciled.retryable === "boolean" ? { retryable: reconciled.retryable } : {},
|
|
11562
|
+
// 日志落盘路径始终暴露:stalled/failed 且 dialogId 缺失(如 ephemeral)
|
|
11563
|
+
// 时 logTail 只能靠它读,不能只留在进程内存。
|
|
11564
|
+
...reconciled.logPath ? { logPath: reconciled.logPath } : {},
|
|
10929
11565
|
...typeof reconciled.toolCallCount === "number" ? { toolCallCount: reconciled.toolCallCount } : {},
|
|
10930
11566
|
...reconciled.lastAssistantText ? { lastAssistantText: reconciled.lastAssistantText } : {},
|
|
10931
11567
|
// Non-ephemeral runs expose dialogId so the caller can read the
|
|
@@ -10960,6 +11596,40 @@ function buildRunStatusPayload(reconciled, deps, opts = {}) {
|
|
|
10960
11596
|
}
|
|
10961
11597
|
};
|
|
10962
11598
|
}
|
|
11599
|
+
async function assertCredentialFanoutAllowed(deps, args) {
|
|
11600
|
+
let candidateGroup;
|
|
11601
|
+
if (deps.resolveAgentCredentialGroup) {
|
|
11602
|
+
try {
|
|
11603
|
+
candidateGroup = await deps.resolveAgentCredentialGroup(args.agentKey);
|
|
11604
|
+
} catch {
|
|
11605
|
+
candidateGroup = void 0;
|
|
11606
|
+
}
|
|
11607
|
+
}
|
|
11608
|
+
if (!candidateGroup && typeof args.credentialGroup === "string" && args.credentialGroup.trim()) {
|
|
11609
|
+
candidateGroup = args.credentialGroup.trim();
|
|
11610
|
+
}
|
|
11611
|
+
const { batchId, parentDialogId } = args;
|
|
11612
|
+
if (!batchId && !parentDialogId) return candidateGroup;
|
|
11613
|
+
const active = queryRunRecords({ limit: 500 }, deps).runs.filter((record) => {
|
|
11614
|
+
if (isRunTerminalStatus(record.status)) return false;
|
|
11615
|
+
if (batchId && record.batchId === batchId) return true;
|
|
11616
|
+
if (parentDialogId && record.parentDialogId === parentDialogId) return true;
|
|
11617
|
+
return false;
|
|
11618
|
+
}).map((record) => ({
|
|
11619
|
+
runId: record.runId,
|
|
11620
|
+
agentKey: record.agentKey,
|
|
11621
|
+
credentialGroup: record.credentialGroup
|
|
11622
|
+
}));
|
|
11623
|
+
if (active.length === 0) return candidateGroup;
|
|
11624
|
+
const verdict = checkCredentialFanout({
|
|
11625
|
+
active,
|
|
11626
|
+
candidate: { agentKey: args.agentKey, credentialGroup: candidateGroup },
|
|
11627
|
+
allowUnknownCredential: args.allowUnknownCredential === true,
|
|
11628
|
+
allowCredentialConcurrency: args.allowCredentialConcurrency === true
|
|
11629
|
+
});
|
|
11630
|
+
if (!verdict.allowed) throw new Error(verdict.message);
|
|
11631
|
+
return candidateGroup;
|
|
11632
|
+
}
|
|
10963
11633
|
function createCliStartAgentRunExecutor(deps = {}) {
|
|
10964
11634
|
return async (call) => {
|
|
10965
11635
|
const args = parseCallArgs(call);
|
|
@@ -10982,6 +11652,14 @@ function createCliStartAgentRunExecutor(deps = {}) {
|
|
|
10982
11652
|
];
|
|
10983
11653
|
const agentName = typeof args.agentName === "string" && args.agentName.trim() ? args.agentName.trim() : typeof args.name === "string" && args.name.trim() ? args.name.trim() : void 0;
|
|
10984
11654
|
const batchId = typeof args.batchId === "string" && args.batchId.trim() ? args.batchId.trim() : void 0;
|
|
11655
|
+
const parentDialogId = typeof args.parentDialogId === "string" && args.parentDialogId.trim() ? args.parentDialogId.trim() : void 0;
|
|
11656
|
+
const credentialGroup = await assertCredentialFanoutAllowed(deps, {
|
|
11657
|
+
agentKey,
|
|
11658
|
+
...batchId ? { batchId } : {},
|
|
11659
|
+
...parentDialogId ? { parentDialogId } : {},
|
|
11660
|
+
...typeof args.credentialGroup === "string" && args.credentialGroup.trim() ? { credentialGroup: args.credentialGroup.trim() } : {},
|
|
11661
|
+
allowUnknownCredential: args.allowUnknownCredential === true
|
|
11662
|
+
});
|
|
10985
11663
|
const dodCommands = Array.isArray(args.dodCommands) ? args.dodCommands.filter((c) => typeof c === "string" && c.trim().length > 0).map((c) => c.trim()) : typeof args.dod === "string" && args.dod.trim().length > 0 ? [args.dod.trim()] : Array.isArray(args.dod) ? args.dod.filter((c) => typeof c === "string" && c.trim().length > 0).map((c) => c.trim()) : void 0;
|
|
10986
11664
|
const { runId, batchId: resolvedBatchId } = await spawnLocalBackgroundRun(
|
|
10987
11665
|
{
|
|
@@ -10991,7 +11669,8 @@ function createCliStartAgentRunExecutor(deps = {}) {
|
|
|
10991
11669
|
agentKey,
|
|
10992
11670
|
...agentName ? { agentName } : {},
|
|
10993
11671
|
...batchId ? { batchId } : {},
|
|
10994
|
-
...
|
|
11672
|
+
...credentialGroup ? { credentialGroup } : {},
|
|
11673
|
+
...parentDialogId ? { parentDialogId } : {},
|
|
10995
11674
|
...dodCommands && dodCommands.length > 0 ? { dodCommands } : {},
|
|
10996
11675
|
cwd: deps.cwd ?? process.cwd(),
|
|
10997
11676
|
message,
|
|
@@ -11077,6 +11756,8 @@ async function spawnContinuationRun(reconciled, userInput, deps) {
|
|
|
11077
11756
|
...agentName ? { agentName } : {},
|
|
11078
11757
|
...reconciled.batchId ? { batchId: reconciled.batchId } : {},
|
|
11079
11758
|
...reconciled.parentDialogId ? { parentDialogId: reconciled.parentDialogId } : {},
|
|
11759
|
+
// 续跑继承原 run 的凭证组(同一 agent),供并发扇出守卫判定。
|
|
11760
|
+
...reconciled.credentialGroup ? { credentialGroup: reconciled.credentialGroup } : {},
|
|
11080
11761
|
cwd: reconciled.cwd ?? deps.cwd ?? process.cwd(),
|
|
11081
11762
|
message: userInput,
|
|
11082
11763
|
...reconciled.ephemeral ? { ephemeral: true } : {},
|
|
@@ -11675,7 +12356,8 @@ function buildLocalToolExecutors(args) {
|
|
|
11675
12356
|
startAgentRun: createCliStartAgentRunExecutor({
|
|
11676
12357
|
env: args.env,
|
|
11677
12358
|
cliEntrypoint: args.cliEntrypoint,
|
|
11678
|
-
cwd: args.workspaceRoot
|
|
12359
|
+
cwd: args.workspaceRoot,
|
|
12360
|
+
...args.resolveAgentCredentialGroup ? { resolveAgentCredentialGroup: args.resolveAgentCredentialGroup } : {}
|
|
11679
12361
|
}),
|
|
11680
12362
|
controlAgentRun: createCliControlAgentRunExecutor({
|
|
11681
12363
|
env: args.env
|
|
@@ -11809,13 +12491,18 @@ async function generateLocalDialogTitle(input) {
|
|
|
11809
12491
|
return { title: fallbackTitle, source: "fallback" };
|
|
11810
12492
|
}
|
|
11811
12493
|
if (input.resolveProviderConfig && input.buildRequest && input.parseResponse) {
|
|
11812
|
-
|
|
11813
|
-
|
|
11814
|
-
|
|
11815
|
-
|
|
11816
|
-
|
|
11817
|
-
|
|
11818
|
-
const
|
|
12494
|
+
const resolveProviderConfig = input.resolveProviderConfig;
|
|
12495
|
+
const buildRequest = input.buildRequest;
|
|
12496
|
+
const parseResponse = input.parseResponse;
|
|
12497
|
+
const attemptPlatformTitle = async (model) => {
|
|
12498
|
+
try {
|
|
12499
|
+
const agentConfig = model ? { ...BUILTIN_TITLE_LLM_CONFIG, model } : BUILTIN_TITLE_LLM_CONFIG;
|
|
12500
|
+
const providerConfig = await resolveProviderConfig({
|
|
12501
|
+
agentConfig: { ...agentConfig, key: agentConfig.id },
|
|
12502
|
+
env
|
|
12503
|
+
});
|
|
12504
|
+
if (!providerConfig?.authToken) return null;
|
|
12505
|
+
const request = buildRequest({
|
|
11819
12506
|
providerConfig,
|
|
11820
12507
|
messages: [
|
|
11821
12508
|
{
|
|
@@ -11847,21 +12534,26 @@ async function generateLocalDialogTitle(input) {
|
|
|
11847
12534
|
body: JSON.stringify(patchedBody),
|
|
11848
12535
|
signal: AbortSignal.timeout(timeoutMs)
|
|
11849
12536
|
});
|
|
11850
|
-
if (res.ok)
|
|
11851
|
-
|
|
11852
|
-
|
|
11853
|
-
|
|
11854
|
-
|
|
11855
|
-
|
|
11856
|
-
|
|
11857
|
-
|
|
11858
|
-
|
|
11859
|
-
|
|
11860
|
-
|
|
11861
|
-
}
|
|
11862
|
-
}
|
|
12537
|
+
if (!res.ok) return null;
|
|
12538
|
+
const raw = await res.text().catch(() => "");
|
|
12539
|
+
const data = safeParseJson(raw);
|
|
12540
|
+
if (!data) return null;
|
|
12541
|
+
const parsed = parseResponse({ providerConfig, data });
|
|
12542
|
+
const generated = normalizeDialogTitle(
|
|
12543
|
+
extractTitleFromLlmContent(parsed.content)
|
|
12544
|
+
);
|
|
12545
|
+
return generated || null;
|
|
12546
|
+
} catch {
|
|
12547
|
+
return null;
|
|
11863
12548
|
}
|
|
11864
|
-
}
|
|
12549
|
+
};
|
|
12550
|
+
const primaryTitle = await attemptPlatformTitle();
|
|
12551
|
+
if (primaryTitle) return { title: primaryTitle, source: "llm" };
|
|
12552
|
+
const fallbackModelTitle = await attemptPlatformTitle(
|
|
12553
|
+
BUILTIN_DIALOG_LLM_CHAT_FALLBACK_MODEL
|
|
12554
|
+
);
|
|
12555
|
+
if (fallbackModelTitle) {
|
|
12556
|
+
return { title: fallbackModelTitle, source: "llm" };
|
|
11865
12557
|
}
|
|
11866
12558
|
}
|
|
11867
12559
|
if (input.resolveDirectProviderConfig) {
|
|
@@ -12526,6 +13218,23 @@ function createCliLocalRuntimeAdapter(deps) {
|
|
|
12526
13218
|
const localToolUsage = /* @__PURE__ */ new Map();
|
|
12527
13219
|
const buildProviderOpenAiTools = deps.buildProviderOpenAiTools ?? buildOpenAiTools;
|
|
12528
13220
|
const additionalToolNames = deps.pastedTextStore ? ["readPastedText"] : [];
|
|
13221
|
+
const resolveAgentCredentialGroup = async (agentRef) => {
|
|
13222
|
+
try {
|
|
13223
|
+
const record = await readAgentFromStore({
|
|
13224
|
+
agentRef,
|
|
13225
|
+
store: await getOrCreateSharedStore(deps),
|
|
13226
|
+
userId
|
|
13227
|
+
});
|
|
13228
|
+
if (!record || typeof record !== "object") return void 0;
|
|
13229
|
+
const rec = record;
|
|
13230
|
+
const existing = typeof rec.credentialGroup === "string" && rec.credentialGroup.trim() ? rec.credentialGroup.trim() : void 0;
|
|
13231
|
+
if (existing) return existing;
|
|
13232
|
+
const ref = typeof rec.apiKeyRef === "string" && rec.apiKeyRef.trim() ? rec.apiKeyRef : typeof rec.credentialRef === "string" && rec.credentialRef.trim() ? rec.credentialRef : void 0;
|
|
13233
|
+
return deriveCredentialGroup(ref)?.credentialGroup;
|
|
13234
|
+
} catch {
|
|
13235
|
+
return void 0;
|
|
13236
|
+
}
|
|
13237
|
+
};
|
|
12529
13238
|
let activeAgentToolNames = [];
|
|
12530
13239
|
const workspaceRoot = deps.cwd ?? process.cwd();
|
|
12531
13240
|
let runtimeToolExecutionLimits = {};
|
|
@@ -12538,6 +13247,7 @@ function createCliLocalRuntimeAdapter(deps) {
|
|
|
12538
13247
|
readXPost: deps.readXPost,
|
|
12539
13248
|
readXhsProfile: deps.readXhsProfile,
|
|
12540
13249
|
cliEntrypoint: CLI_ENTRYPOINT,
|
|
13250
|
+
resolveAgentCredentialGroup,
|
|
12541
13251
|
...deps.confirmDestructiveAction ? { confirmDestructiveAction: deps.confirmDestructiveAction } : {},
|
|
12542
13252
|
...deps.requestUserChoice ? { requestUserChoice: deps.requestUserChoice } : {},
|
|
12543
13253
|
...deps.pastedTextStore ? { pastedTextStore: deps.pastedTextStore } : {},
|
|
@@ -12615,13 +13325,21 @@ function createCliLocalRuntimeAdapter(deps) {
|
|
|
12615
13325
|
readXPost: deps.readXPost,
|
|
12616
13326
|
readXhsProfile: deps.readXhsProfile,
|
|
12617
13327
|
cliEntrypoint: CLI_ENTRYPOINT,
|
|
13328
|
+
resolveAgentCredentialGroup,
|
|
12618
13329
|
...deps.confirmDestructiveAction ? { confirmDestructiveAction: deps.confirmDestructiveAction } : {},
|
|
12619
13330
|
...deps.requestUserChoice ? { requestUserChoice: deps.requestUserChoice } : {},
|
|
12620
13331
|
...deps.pastedTextStore ? { pastedTextStore: deps.pastedTextStore } : {},
|
|
12621
13332
|
agentKey: agentConfig?.key,
|
|
12622
13333
|
...runtimeToolExecutionLimits
|
|
12623
13334
|
});
|
|
12624
|
-
const exposedAgentConfig = agentConfig ? {
|
|
13335
|
+
const exposedAgentConfig = agentConfig ? {
|
|
13336
|
+
...agentConfig,
|
|
13337
|
+
exposedToolNames: activeAgentToolNames,
|
|
13338
|
+
toolSurface: {
|
|
13339
|
+
...agentConfig.toolSurface ?? {},
|
|
13340
|
+
finalToolNames: activeAgentToolNames
|
|
13341
|
+
}
|
|
13342
|
+
} : agentConfig;
|
|
12625
13343
|
if (exposedAgentConfig && !deps.pastedTextStore) {
|
|
12626
13344
|
preparedAgentRuntimeCache.set(cacheKey, {
|
|
12627
13345
|
agentConfig: exposedAgentConfig,
|
|
@@ -12807,6 +13525,11 @@ function createCliLocalRuntimeAdapter(deps) {
|
|
|
12807
13525
|
runToolNames: activeAgentToolNames,
|
|
12808
13526
|
call: injectedCall,
|
|
12809
13527
|
executors: localToolExecutors,
|
|
13528
|
+
// 分发前参数闸门:只覆盖 agent-runtime 工具族(workspace + nolo
|
|
13529
|
+
// workspace)。ai/tools registry 的工具不接——它们有各自的前置 policy
|
|
13530
|
+
// guard 与结构化结果契约(例:createTable 的 capture 确认守卫),
|
|
13531
|
+
// 闸门抢先拦截会覆盖这些语义(见 toolArgumentGate.ts 的范围说明)。
|
|
13532
|
+
toolParametersIndex: getAgentRuntimeToolParametersIndex(),
|
|
12810
13533
|
abortSignal: opts?.abortSignal,
|
|
12811
13534
|
detachMs: resolveExecShellDetachMs(deps.env),
|
|
12812
13535
|
...deps.confirmDestructiveAction ? { confirmDestructiveAction: deps.confirmDestructiveAction } : {}
|
|
@@ -12878,6 +13601,7 @@ export {
|
|
|
12878
13601
|
dailyWelcomeTip,
|
|
12879
13602
|
t,
|
|
12880
13603
|
toolLabel,
|
|
13604
|
+
toolLabelVariants,
|
|
12881
13605
|
agentRunCardLabels,
|
|
12882
13606
|
createCliLocalRuntimeAdapter
|
|
12883
13607
|
};
|