nolo-cli 0.83.0-alpha.1 → 0.83.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-TRYFRXDJ.js → _executeModel-LUNEV235.js} +48 -48
- package/{action-D22U6CTH.js → action-YVYQEAAV.js} +11 -11
- package/{addContentAction-XAPUTGL4.js → addContentAction-O7R66HEX.js} +9 -9
- package/{addDialogAgentAction-M7VLLBZM.js → addDialogAgentAction-74OA7KYP.js} +8 -8
- package/{agentDeleteCommand-EKSPHWHV.js → agentDeleteCommand-2YAHAZFJ.js} +31 -30
- package/{agentEmailCommands-QD2K4YG6.js → agentEmailCommands-G6A7IRPQ.js} +67 -64
- package/{agentGrantCommands-R3VQEZJR.js → agentGrantCommands-M3XFO6EN.js} +2 -2
- package/{agentListCommands-WFBYAQKO.js → agentListCommands-KMS675GZ.js} +40 -33
- package/{agentMachineCommands-F5DKXCQP.js → agentMachineCommands-W2SMNSQ3.js} +31 -30
- package/{agentProviderCommands-65ZC2WB4.js → agentProviderCommands-GNPTL5XR.js} +87 -0
- package/{agentPullCommand-N7L2CT7L.js → agentPullCommand-O5MPVJ5E.js} +3 -3
- package/agentRecordCommands-D7BRMFNI.js +128 -0
- package/{agentRunCommand-4VMDFEQF.js → agentRunCommand-VL6MMEUB.js} +65 -62
- package/{agentRunControl-T44MESII.js → agentRunControl-AVJR4JW4.js} +2 -2
- package/{agentRuntimeLocal-FMOEMRUU.js → agentRuntimeLocal-VXZSDIGT.js} +27 -26
- package/{agentSlice-Q5XOM2PN.js → agentSlice-5YJHUO47.js} +10 -10
- package/{appDeleteCommands-AXB7XZE7.js → appDeleteCommands-32MHLR4L.js} +31 -30
- package/{appDeployCommands-ZLWI4QUC.js → appDeployCommands-WCQOUSOB.js} +31 -30
- package/{appDeployStatusCommands-2RAEYJQF.js → appDeployStatusCommands-6QKB7DYN.js} +31 -30
- package/{appGetCommands-QYUXS4W4.js → appGetCommands-SFAPP5PB.js} +31 -30
- package/{appListCommands-GQLN4J5X.js → appListCommands-EKUBDRUO.js} +31 -30
- package/{authCommand-7N2G6MXP.js → authCommand-F4EFRRX6.js} +89 -24
- package/{authCommands-ILTBI6JV.js → authCommands-RGOGCPP6.js} +4 -5
- package/builtinSkillRegistry-FUAVTRVZ.js +33 -0
- package/{chatQueueReduxAdapter-WICMMQZT.js → chatQueueReduxAdapter-PQMRR2PK.js} +24 -24
- 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-HQUORJTM.js → chunk-3BMYXEUW.js} +1 -1
- package/{chunk-3QPYFHAH.js → chunk-3DII57IT.js} +1 -1
- package/{chunk-NTW5GWDM.js → chunk-3VNWWVKB.js} +2 -0
- package/{chunk-DWUCB2A3.js → chunk-42V6BK2E.js} +1 -1
- package/{chunk-XRMBP7IW.js → chunk-45C5ER5U.js} +10 -10
- package/{chunk-DSRXPQWA.js → chunk-4OEFYTWL.js} +43 -43
- package/{chunk-6RUOYAPM.js → chunk-4S5QUMJP.js} +7 -7
- package/{chunk-GBPZKFYK.js → chunk-53HEEOTT.js} +4 -4
- package/{chunk-5Q5LYRJH.js → chunk-5FBTLSFG.js} +155 -795
- package/{chunk-KIS76A2P.js → chunk-5H7KJX7J.js} +38 -4
- package/{chunk-5XTOKQLW.js → chunk-5UTFL4QJ.js} +6 -2
- package/chunk-5ZUL4CUO.js +10 -0
- package/{chunk-E6RGHPDR.js → chunk-6D6VBVEW.js} +4 -6
- package/{chunk-KVDUCO4Q.js → chunk-6IG4XSS6.js} +16 -12
- package/{chunk-CMH2SYHX.js → chunk-6OZ36FXI.js} +2 -2
- package/{chunk-5BVAAVIF.js → chunk-6Q33GUCC.js} +1 -1
- package/{chunk-EWRS6HJ3.js → chunk-6VFARHZW.js} +625 -303
- 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-NRALD3CC.js → chunk-AEOE4Z6Q.js} +54 -10
- package/{chunk-XWNRAIUL.js → chunk-AFUORTY4.js} +6 -16
- package/chunk-BNGW5ASC.js +344 -0
- package/{chunk-SZLVDREM.js → chunk-BP4XNZRM.js} +3 -3
- package/{chunk-JZYXSXMZ.js → chunk-BTI7PJDX.js} +15 -15
- package/{chunk-2KDR4CWE.js → chunk-BYMV6QZG.js} +24 -1
- package/{chunk-GCJ3IS5M.js → chunk-DHDMC6FO.js} +175 -6
- package/{chunk-E36HZARC.js → chunk-DNCEALKX.js} +93 -17
- package/{chunk-N5KGQ5AD.js → chunk-DRGSDQBL.js} +3 -3
- package/{chunk-D6XYLSOS.js → chunk-ETI2NYVF.js} +1 -1
- package/{chunk-EXMHJN7C.js → chunk-EYAQT56M.js} +4 -3
- package/{chunk-CJCJF5XB.js → chunk-FDTR4QJ6.js} +4 -2
- package/{chunk-JPVNC5B2.js → chunk-G2O6V3HJ.js} +3 -3
- package/{chunk-WL2RKIBF.js → chunk-GEPUP7OO.js} +1 -1
- package/{chunk-PYXL2CJL.js → chunk-GPCZ7UXG.js} +1 -1
- package/{chunk-K7AG465Q.js → chunk-GQBOR3G6.js} +4 -2
- package/{chunk-YFADVSZE.js → chunk-H62HCIUP.js} +6 -6
- package/{chunk-PZM3EENV.js → chunk-HJUYAD4A.js} +1 -1
- package/{chunk-3JQ2NRYU.js → chunk-HVURBGF3.js} +4 -4
- package/{chunk-HH65VA5U.js → chunk-I3TQJXQ7.js} +109 -6
- package/{chunk-ZVN6I33J.js → chunk-IIVGDG4I.js} +6 -5
- 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-JRQFUXY7.js +1625 -0
- package/chunk-KQ4ONNQD.js +677 -0
- package/{chunk-CPSZJBLK.js → chunk-L5UXH3B2.js} +105 -26
- package/{chunk-RXX4GDIH.js → chunk-LS2ZANRJ.js} +1 -1
- package/{chunk-BJIRLHJR.js → chunk-M2EJHDJP.js} +4 -0
- package/{chunk-EVBFYPDC.js → chunk-MC4XLIJ7.js} +6 -2
- package/{chunk-DUJWWUGV.js → chunk-NA35QHCF.js} +1 -1
- package/{chunk-FNGAF7C4.js → chunk-OEVAY4J6.js} +137 -12
- package/{chunk-UJ63UXGE.js → chunk-OIVSQH2O.js} +1006 -801
- package/{chunk-LZIMZZYT.js → chunk-ORYWEJO4.js} +13 -15
- package/{chunk-LKSDMMY2.js → chunk-Q2XN3EOZ.js} +40 -30
- package/{chunk-AETZ7AD6.js → chunk-Q554LLSI.js} +1 -1
- package/{chunk-FMODTASJ.js → chunk-Q5FJJ6XI.js} +1 -7
- package/{chunk-AJHEFRGJ.js → chunk-Q67DOFOO.js} +214 -5
- package/{chunk-UZ6XXCVR.js → chunk-QDSINZM3.js} +15 -2
- package/{chunk-BHXK3KPV.js → chunk-QVKRR2SS.js} +2314 -66
- package/{chunk-BNQK6UPC.js → chunk-RFCKMYDK.js} +11 -173
- package/{chunk-YWG6EMH3.js → chunk-RG6JBBX5.js} +10 -6
- package/{chunk-QCZX4FTW.js → chunk-SH43IESU.js} +173 -15
- package/{chunk-YIR5OYHU.js → chunk-SSDAAEC2.js} +1235 -59
- package/{chunk-SPAQ4PVV.js → chunk-SV5IJK6K.js} +1 -1
- package/{chunk-BJCWNHVU.js → chunk-TOP2VXOR.js} +2 -2
- package/{chunk-4EJ5QYB5.js → chunk-UKZDAFYT.js} +1 -1
- package/{chunk-PGSKWZCB.js → chunk-UZGQNTVW.js} +1 -1
- package/{chunk-ZZCJUXUI.js → chunk-V4MJDUSR.js} +2 -2
- package/{chunk-JYYZCK2Z.js → chunk-V7E4PXQD.js} +1 -1
- package/{chunk-OZX2IPKM.js → chunk-VLTIYV3X.js} +1 -1
- package/{chunk-NHRQCXIQ.js → chunk-VMFTFOWF.js} +13 -3
- package/{chunk-5J7W2VWW.js → chunk-WV42OMV7.js} +6 -265
- package/{chunk-PFDKB7IZ.js → chunk-X6DN5HBD.js} +6 -6
- package/{chunk-Q7TA25PG.js → chunk-YFE4A4O7.js} +731 -90
- package/{chunk-BOYUESO7.js → chunk-Z77CRGTW.js} +1 -1
- package/{chunk-QC5LGHYP.js → chunk-ZCYXJSTU.js} +10 -5
- package/{contentThunks-A2ZG3SW6.js → contentThunks-GJV22WVZ.js} +25 -25
- package/{cooldownCommands-BSCH2W7P.js → cooldownCommands-REAWYVTY.js} +2 -2
- package/{createAgentAutomationAction-QFQQPG35.js → createAgentAutomationAction-6V25TZEO.js} +25 -25
- package/{createDialogAction-WI73R5EQ.js → createDialogAction-SX36BGSX.js} +28 -28
- package/{createPageAction-XN237WPJ.js → createPageAction-IR4BGJSI.js} +26 -26
- package/{dbSlice-GKGGFNOB.js → dbSlice-XVWBAGYN.js} +8 -8
- package/{deleteFile-LWSR674W.js → deleteFile-YG6QMJLU.js} +3 -3
- package/{dialogCommands-SFRDEMB3.js → dialogCommands-5J56DFWN.js} +35 -32
- package/{dialogSlice-56G4Q4RU.js → dialogSlice-UNX2FAPZ.js} +24 -24
- package/{docCreateCommands-OMQLZ3OW.js → docCreateCommands-KYI2DC2U.js} +32 -31
- package/{docDeleteCommands-7RCC6P23.js → docDeleteCommands-67REUSRY.js} +33 -32
- package/{docReadCommands-5FABO4UV.js → docReadCommands-HOSVSBDJ.js} +32 -31
- package/{docStore-PZSZWXX3.js → docStore-JWVG5NDO.js} +9 -9
- package/{docUpdateCommands-P5AQI6HB.js → docUpdateCommands-EMGCSMXY.js} +32 -31
- package/{fetchMessages-DRABNDPZ.js → fetchMessages-EIU7UFFK.js} +3 -4
- package/{getPricing-HRMSOF3E.js → getPricing-LUSEABA6.js} +4 -4
- package/{handleSendMessageAction-MHKC4R3Q.js → handleSendMessageAction-B75UOJKF.js} +24 -24
- 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-VJABZGD2.js → machineCommands-GFPTOY6L.js} +64 -61
- package/{machineWsRunDispatch-5SPILS2O.js → machineWsRunDispatch-46PSZ3DJ.js} +62 -59
- package/{memberThunks-KATHH3F4.js → memberThunks-QGFLFVCI.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/providerPresetApply-FG6NZ57W.js +214 -0
- package/providerRegistry-757OWH3O.js +31 -0
- package/{read-LC6HVYBN.js → read-COE3ZYR6.js} +5 -4
- package/{readDocTool-N3ERJHHF.js → readDocTool-5USN4A6V.js} +1 -1
- package/{readlineWorkspace-GMYIPMRU.js → readlineWorkspace-UFSWHFKD.js} +144 -109
- package/{removeDialogAgentAction-F5GPTALR.js → removeDialogAgentAction-IX3MN2ZO.js} +11 -11
- package/{runAgentClientLoop-U3GEPCQI.js → runAgentClientLoop-25LJ4XGV.js} +47 -47
- package/{runtimeDoctorCommands-CROTMULY.js → runtimeDoctorCommands-X6WDBEQX.js} +2 -2
- package/{setDialogExtraReferencesAction-AY4ZCF3A.js → setDialogExtraReferencesAction-X4HCPNZL.js} +9 -9
- package/{setPrimaryDialogAgentAction-HPMG7V3R.js → setPrimaryDialogAgentAction-4GMIQLOD.js} +11 -11
- package/{settingSlice-OEJA4NQO.js → settingSlice-ZQZVUPKK.js} +10 -10
- package/{spaceCommands-FNXBNF5X.js → spaceCommands-NKJVJCQQ.js} +30 -29
- package/{streamAgentChatTurn-DAGDJH3L.js → streamAgentChatTurn-A46QFV4O.js} +59 -58
- package/{switchDialogAgentAction-HMDZTZ4I.js → switchDialogAgentAction-N52LRPA3.js} +8 -8
- package/{tableCommands-SUNTHAYX.js → tableCommands-O6NWHFKV.js} +1 -1
- package/{toolApiClient-VGYUB4P5.js → toolApiClient-QVJ6HDNN.js} +2 -2
- package/{tools-73VPBNX3.js → tools-TTDGRNY6.js} +43 -43
- package/tuiSummaryLlmCaller-WFRWERGK.js +127 -0
- package/{updateCommands-Y363MC3L.js → updateCommands-2M74UL7P.js} +2 -2
- package/{updateDialogTitleAction-RFQONESQ.js → updateDialogTitleAction-QJPZGF52.js} +45 -28
- package/agentRecordCommands-DAZ2FDZP.js +0 -125
- 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-3Z24VUWM.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-53HEEOTT.js";
|
|
8
|
+
import {
|
|
9
|
+
defaultLoopbackRequest
|
|
10
|
+
} from "./chunk-EADNWBAZ.js";
|
|
8
11
|
import {
|
|
9
12
|
createChromeConnectorClient,
|
|
10
13
|
createVerifiedChromeConnectorClient,
|
|
11
14
|
executeChromeConnectorTool
|
|
12
|
-
} from "./chunk-
|
|
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-Z77CRGTW.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-3DII57IT.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-DRGSDQBL.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-5FBTLSFG.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-RG6JBBX5.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-QVKRR2SS.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-4S5QUMJP.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,7 +132,7 @@ import {
|
|
|
123
132
|
applySystemBuiltinSkillFilter,
|
|
124
133
|
expandEnabledPacks,
|
|
125
134
|
resolveEffectiveEnabledPacks
|
|
126
|
-
} from "./chunk-
|
|
135
|
+
} from "./chunk-DHDMC6FO.js";
|
|
127
136
|
import {
|
|
128
137
|
DEFAULT_HYBRID_READ_TIMEOUT_MS,
|
|
129
138
|
Duration_exports,
|
|
@@ -156,11 +165,12 @@ import {
|
|
|
156
165
|
parseSseDataLineObject,
|
|
157
166
|
parseSyncServersEnv,
|
|
158
167
|
parseUpstreamErrorBody,
|
|
168
|
+
readDevinUpstreamFailure,
|
|
159
169
|
resolveAntigravityFinishReason,
|
|
160
170
|
resolveOpenAiCompatibleProviderConfig,
|
|
161
171
|
shouldUseGeminiNativeToolRoute,
|
|
162
172
|
summarizeToolArguments
|
|
163
|
-
} from "./chunk-
|
|
173
|
+
} from "./chunk-6VFARHZW.js";
|
|
164
174
|
import {
|
|
165
175
|
PlatformStreamInterruptedError,
|
|
166
176
|
buildPlatformChatCompletionRequest,
|
|
@@ -172,14 +182,14 @@ import {
|
|
|
172
182
|
readSseDataValues,
|
|
173
183
|
resolvePlatformChatProviderConfig,
|
|
174
184
|
shouldUsePlatformChatProvider
|
|
175
|
-
} from "./chunk-
|
|
176
|
-
import {
|
|
177
|
-
isDevinOAuthAgent
|
|
178
|
-
} from "./chunk-FMODTASJ.js";
|
|
185
|
+
} from "./chunk-ZCYXJSTU.js";
|
|
179
186
|
import {
|
|
180
187
|
resolveAgentRuntimeConfigFromRecord,
|
|
181
188
|
resolveHistoricalToolContentCap
|
|
182
|
-
} from "./chunk-
|
|
189
|
+
} from "./chunk-5H7KJX7J.js";
|
|
190
|
+
import {
|
|
191
|
+
isDevinOAuthAgent
|
|
192
|
+
} from "./chunk-5ZUL4CUO.js";
|
|
183
193
|
import {
|
|
184
194
|
collectStablePromptPrefix,
|
|
185
195
|
convertMessagesToResponsesInput,
|
|
@@ -190,38 +200,39 @@ import {
|
|
|
190
200
|
buildNoloWorkspaceOpenAiTools,
|
|
191
201
|
parseNoloWorkspaceToolArguments,
|
|
192
202
|
resolveRuntimeToolSurfaceForAgent
|
|
193
|
-
} from "./chunk-
|
|
203
|
+
} from "./chunk-IIVGDG4I.js";
|
|
194
204
|
import {
|
|
195
205
|
mergeAvailabilityDeadline,
|
|
196
206
|
resolveAvailabilityAction,
|
|
197
207
|
resolveCooldownGate
|
|
198
|
-
} from "./chunk-
|
|
208
|
+
} from "./chunk-FDTR4QJ6.js";
|
|
199
209
|
import {
|
|
200
210
|
isAntigravityOAuthAgent
|
|
201
|
-
} from "./chunk-
|
|
211
|
+
} from "./chunk-UZGQNTVW.js";
|
|
202
212
|
import {
|
|
203
213
|
resolvePlatformAuthToken
|
|
204
|
-
} from "./chunk-
|
|
214
|
+
} from "./chunk-6OZ36FXI.js";
|
|
205
215
|
import {
|
|
206
216
|
buildDialogFallbackTitleFromUserInput,
|
|
207
217
|
normalizeDialogTitle
|
|
208
218
|
} from "./chunk-2MBTWINN.js";
|
|
209
219
|
import {
|
|
210
220
|
normalizeUsage
|
|
211
|
-
} from "./chunk-
|
|
221
|
+
} from "./chunk-4OEFYTWL.js";
|
|
212
222
|
import {
|
|
213
223
|
clipCompactText,
|
|
214
224
|
createProviderCallTimingTracker,
|
|
215
225
|
finalizeProviderCallTiming,
|
|
216
226
|
observeMeaningfulProviderResponseAt,
|
|
217
227
|
withProviderCallTimingFields
|
|
218
|
-
} from "./chunk-
|
|
228
|
+
} from "./chunk-DNCEALKX.js";
|
|
219
229
|
import {
|
|
220
230
|
estimateTokenCount
|
|
221
231
|
} from "./chunk-PSCNXBYA.js";
|
|
222
232
|
import {
|
|
233
|
+
getModelConfig,
|
|
223
234
|
isAdaptiveThinkingModelId
|
|
224
|
-
} from "./chunk-
|
|
235
|
+
} from "./chunk-OIVSQH2O.js";
|
|
225
236
|
import {
|
|
226
237
|
compactWhitespace
|
|
227
238
|
} from "./chunk-DWLEOOGR.js";
|
|
@@ -230,7 +241,7 @@ import {
|
|
|
230
241
|
resolveCurrentRunRuntimeToolPolicy,
|
|
231
242
|
resolveLocalWorkspaceExecutorOptionsFromPolicy,
|
|
232
243
|
resolveRequestedRuntimeToolNames
|
|
233
|
-
} from "./chunk-
|
|
244
|
+
} from "./chunk-HVURBGF3.js";
|
|
234
245
|
import {
|
|
235
246
|
createOAuthTokenStore,
|
|
236
247
|
isTokenExpired,
|
|
@@ -250,24 +261,42 @@ import {
|
|
|
250
261
|
import {
|
|
251
262
|
DEFAULT_NOLO_SERVER_URL
|
|
252
263
|
} from "./chunk-OLZBQWZU.js";
|
|
264
|
+
import {
|
|
265
|
+
isNoloHostedProvider,
|
|
266
|
+
isPlatformHostedImageModel
|
|
267
|
+
} from "./chunk-Q67DOFOO.js";
|
|
253
268
|
import {
|
|
254
269
|
createTokenKey,
|
|
255
270
|
createTokenStatsKey,
|
|
256
271
|
createUserKey,
|
|
257
272
|
dialogMessageRange
|
|
258
|
-
} from "./chunk-
|
|
273
|
+
} from "./chunk-VMFTFOWF.js";
|
|
259
274
|
import {
|
|
260
275
|
asTrimmedLowercaseString
|
|
261
276
|
} from "./chunk-QSJ3HFEF.js";
|
|
262
277
|
import {
|
|
278
|
+
PUBLIC_DEEPSEEK_V4_FLASH_AGENT_ID,
|
|
279
|
+
PUBLIC_DEEPSEEK_V4_PRO_AGENT_ID,
|
|
280
|
+
PUBLIC_GLM_53_FLASH_AGENT_ID,
|
|
281
|
+
PUBLIC_GPT_IMAGE_2_CONTINUOUS_AGENT_ID,
|
|
282
|
+
PUBLIC_GPT_IMAGE_2_EDITOR_AGENT_ID,
|
|
283
|
+
PUBLIC_GPT_IMAGE_2_GENERATOR_AGENT_ID,
|
|
284
|
+
PUBLIC_NANO_BANANA_2_LITE_AGENT_ID,
|
|
285
|
+
builtinAgentCatalogEntryById,
|
|
286
|
+
isRetiredCatalogEntry,
|
|
263
287
|
isSystemBuiltinTrustedAgentKey
|
|
264
|
-
} from "./chunk-
|
|
288
|
+
} from "./chunk-BNGW5ASC.js";
|
|
265
289
|
import {
|
|
266
|
-
|
|
267
|
-
|
|
290
|
+
parsePublicAgentId,
|
|
291
|
+
parseSystemAgentId,
|
|
292
|
+
publicAgentKey
|
|
293
|
+
} from "./chunk-M2EJHDJP.js";
|
|
268
294
|
import {
|
|
269
295
|
isRecord
|
|
270
296
|
} from "./chunk-KUG52IAP.js";
|
|
297
|
+
import {
|
|
298
|
+
asTrimmedString
|
|
299
|
+
} from "./chunk-3EUW3WEO.js";
|
|
271
300
|
import {
|
|
272
301
|
NOLO_CLUSTER_SERVERS
|
|
273
302
|
} from "./chunk-LCBAMY2M.js";
|
|
@@ -578,6 +607,10 @@ var STRINGS = {
|
|
|
578
607
|
en: "\u2713 Copied the selection to the clipboard.",
|
|
579
608
|
zh: "\u2713 \u5DF2\u590D\u5236\u9009\u533A\u5230\u526A\u8D34\u677F\u3002"
|
|
580
609
|
},
|
|
610
|
+
copiedSelectionBusy: {
|
|
611
|
+
en: "\u2713 Copied the selection to the clipboard. Press Esc to stop generating.",
|
|
612
|
+
zh: "\u2713 \u5DF2\u590D\u5236\u9009\u533A\u5230\u526A\u8D34\u677F\u3002\u6309 Esc \u505C\u6B62\u751F\u6210\u3002"
|
|
613
|
+
},
|
|
581
614
|
copiedAllHistory: {
|
|
582
615
|
en: "\u2713 Copied the full conversation to the clipboard.",
|
|
583
616
|
zh: "\u2713 \u5DF2\u590D\u5236\u5B8C\u6574\u5BF9\u8BDD\u5230\u526A\u8D34\u677F\u3002"
|
|
@@ -1719,6 +1752,9 @@ function buildCliChromeConnectorOpenAiTools(args) {
|
|
|
1719
1752
|
function buildOpenAiTools(args) {
|
|
1720
1753
|
const toolset = buildLocalWorkspaceToolsetForEnv(args);
|
|
1721
1754
|
const workspaceToolNames = toolset.toolNames;
|
|
1755
|
+
const modelWorkspaceToolNames = (args.effectiveToolNames ?? workspaceToolNames).filter(
|
|
1756
|
+
(toolName) => toolName !== "taskWait" || !hasRunWakeChannel(args.env)
|
|
1757
|
+
);
|
|
1722
1758
|
const toolNameSet = new Set(args.toolNames ?? []);
|
|
1723
1759
|
const uiAskChoiceTools = toolNameSet.has("ask_user") ? prepareTools(["ask_user"]) : [];
|
|
1724
1760
|
const readPastedTextTools = toolNameSet.has("readPastedText") ? [
|
|
@@ -1760,7 +1796,7 @@ function buildOpenAiTools(args) {
|
|
|
1760
1796
|
...uiAskChoiceTools,
|
|
1761
1797
|
...readPastedTextTools,
|
|
1762
1798
|
...buildLocalWorkspaceOpenAiTools({
|
|
1763
|
-
toolNames:
|
|
1799
|
+
toolNames: modelWorkspaceToolNames,
|
|
1764
1800
|
exposeShellTools: toolset.exposeShellTools
|
|
1765
1801
|
}),
|
|
1766
1802
|
...buildCliChromeConnectorOpenAiTools({ toolNames: args.toolNames }),
|
|
@@ -8049,6 +8085,37 @@ function processCursorServerMessage(msg, state, onTextDelta, onReasoningDelta) {
|
|
|
8049
8085
|
state.outputTokens += tokens;
|
|
8050
8086
|
}
|
|
8051
8087
|
}
|
|
8088
|
+
function attachCursorUpstreamFailure(error, failure) {
|
|
8089
|
+
if (failure) {
|
|
8090
|
+
error.cursorUpstreamFailure = failure;
|
|
8091
|
+
}
|
|
8092
|
+
return error;
|
|
8093
|
+
}
|
|
8094
|
+
function readCursorUpstreamFailure(error) {
|
|
8095
|
+
if (!error || typeof error !== "object") return void 0;
|
|
8096
|
+
const failure = error.cursorUpstreamFailure;
|
|
8097
|
+
if (!failure || typeof failure !== "object") return void 0;
|
|
8098
|
+
if (typeof failure.status !== "number" || !Number.isFinite(failure.status)) {
|
|
8099
|
+
return void 0;
|
|
8100
|
+
}
|
|
8101
|
+
return failure;
|
|
8102
|
+
}
|
|
8103
|
+
function buildCursorGrpcTrailerError(trailers) {
|
|
8104
|
+
const status = trailers["grpc-status"];
|
|
8105
|
+
if (!status || String(status) === "0") return null;
|
|
8106
|
+
const rawMessage = String(trailers["grpc-message"] || "");
|
|
8107
|
+
let message;
|
|
8108
|
+
try {
|
|
8109
|
+
message = decodeURIComponent(rawMessage);
|
|
8110
|
+
} catch {
|
|
8111
|
+
message = rawMessage;
|
|
8112
|
+
}
|
|
8113
|
+
const statusText = String(status);
|
|
8114
|
+
return attachCursorUpstreamFailure(
|
|
8115
|
+
new Error(`Cursor gRPC error ${statusText}: ${message}`),
|
|
8116
|
+
statusText === "8" || statusText.toLowerCase() === "resource_exhausted" ? { status: 429, body: { code: "resource_exhausted", message } } : void 0
|
|
8117
|
+
);
|
|
8118
|
+
}
|
|
8052
8119
|
async function streamCursorChat(messages, options) {
|
|
8053
8120
|
const baseUrl = options.baseUrl || CURSOR_API_URL;
|
|
8054
8121
|
const clientVersion = options.clientVersion || CURSOR_CLIENT_VERSION;
|
|
@@ -8146,14 +8213,9 @@ async function streamCursorChat(messages, options) {
|
|
|
8146
8213
|
}
|
|
8147
8214
|
});
|
|
8148
8215
|
h2Request.on("trailers", (trailers) => {
|
|
8149
|
-
const
|
|
8150
|
-
|
|
8151
|
-
|
|
8152
|
-
h2Completion.reject(
|
|
8153
|
-
new Error(
|
|
8154
|
-
`Cursor gRPC error ${status}: ${decodeURIComponent(String(msg || ""))}`
|
|
8155
|
-
)
|
|
8156
|
-
);
|
|
8216
|
+
const error = buildCursorGrpcTrailerError(trailers);
|
|
8217
|
+
if (error) {
|
|
8218
|
+
h2Completion.reject(error);
|
|
8157
8219
|
}
|
|
8158
8220
|
});
|
|
8159
8221
|
h2Request.on("end", () => {
|
|
@@ -9224,7 +9286,7 @@ function assertWithinLocalToolBudget(args) {
|
|
|
9224
9286
|
|
|
9225
9287
|
// packages/cli/client/providerResolution/cursorTransport.ts
|
|
9226
9288
|
var resolveCursorTransport = async (ctx) => {
|
|
9227
|
-
const { agentConfig, deps, workspaceRoot, additionalToolNames, buildProviderOpenAiTools, apiKeyRefResolver, activeAgentToolNames, localToolExecutors } = ctx;
|
|
9289
|
+
const { agentConfig, deps, workspaceRoot, additionalToolNames, buildProviderOpenAiTools, apiKeyRefResolver, activeAgentToolNames, localToolExecutors, recordLocalAvailability } = ctx;
|
|
9228
9290
|
if (isCursorOAuthAgent(agentConfig)) {
|
|
9229
9291
|
const accessToken = await apiKeyRefResolver("cursor");
|
|
9230
9292
|
if (!accessToken) {
|
|
@@ -9300,15 +9362,24 @@ var resolveCursorTransport = async (ctx) => {
|
|
|
9300
9362
|
toolCount: tools.length,
|
|
9301
9363
|
requestedToolNames
|
|
9302
9364
|
});
|
|
9303
|
-
|
|
9304
|
-
|
|
9305
|
-
|
|
9306
|
-
|
|
9307
|
-
|
|
9308
|
-
|
|
9309
|
-
|
|
9310
|
-
|
|
9311
|
-
|
|
9365
|
+
try {
|
|
9366
|
+
const result = await cursorProvider.complete(messages, options);
|
|
9367
|
+
await recordLocalAvailability(200);
|
|
9368
|
+
logLocalRuntimeDiagnostic("provider.request.result", {
|
|
9369
|
+
agentKey: agentConfig.key,
|
|
9370
|
+
transport: "cursor-connect",
|
|
9371
|
+
ok: true,
|
|
9372
|
+
contentChars: (result.content ?? "").length,
|
|
9373
|
+
toolCallCount: result.tool_calls?.length ?? 0
|
|
9374
|
+
});
|
|
9375
|
+
return result;
|
|
9376
|
+
} catch (error) {
|
|
9377
|
+
const failure = readCursorUpstreamFailure(error);
|
|
9378
|
+
if (failure) {
|
|
9379
|
+
await recordLocalAvailability(failure.status, failure.body);
|
|
9380
|
+
}
|
|
9381
|
+
throw error;
|
|
9382
|
+
}
|
|
9312
9383
|
}
|
|
9313
9384
|
};
|
|
9314
9385
|
}
|
|
@@ -9317,7 +9388,14 @@ var resolveCursorTransport = async (ctx) => {
|
|
|
9317
9388
|
|
|
9318
9389
|
// packages/cli/client/providerResolution/devinTransport.ts
|
|
9319
9390
|
var resolveDevinTransport = async (ctx) => {
|
|
9320
|
-
const {
|
|
9391
|
+
const {
|
|
9392
|
+
agentConfig,
|
|
9393
|
+
apiKeyRefResolver,
|
|
9394
|
+
deps,
|
|
9395
|
+
buildProviderOpenAiTools,
|
|
9396
|
+
additionalToolNames,
|
|
9397
|
+
recordLocalAvailability
|
|
9398
|
+
} = ctx;
|
|
9321
9399
|
if (isDevinOAuthAgent(agentConfig)) {
|
|
9322
9400
|
const accessToken = await apiKeyRefResolver("devin");
|
|
9323
9401
|
if (!accessToken) {
|
|
@@ -9326,22 +9404,46 @@ var resolveDevinTransport = async (ctx) => {
|
|
|
9326
9404
|
);
|
|
9327
9405
|
}
|
|
9328
9406
|
const model = agentConfig.model || "swe-2-max";
|
|
9407
|
+
const { requestedToolNames, tools } = resolveProviderOpenAiToolBundle(
|
|
9408
|
+
agentConfig,
|
|
9409
|
+
deps.env,
|
|
9410
|
+
buildProviderOpenAiTools,
|
|
9411
|
+
additionalToolNames
|
|
9412
|
+
);
|
|
9413
|
+
const devinProvider = createDevinProvider({
|
|
9414
|
+
token: accessToken,
|
|
9415
|
+
model,
|
|
9416
|
+
fetchImpl: ctx.fetchImpl,
|
|
9417
|
+
tools,
|
|
9418
|
+
// agentConfig.temperature reaches every transport except the Devin one;
|
|
9419
|
+
// forward it so the agent form's sampling knob stops being a no-op here.
|
|
9420
|
+
// Left undefined it keeps the upstream client's value.
|
|
9421
|
+
temperature: typeof agentConfig.temperature === "number" ? agentConfig.temperature : void 0
|
|
9422
|
+
});
|
|
9329
9423
|
logLocalRuntimeDiagnostic("provider.selected", {
|
|
9330
9424
|
agentKey: agentConfig.key,
|
|
9331
9425
|
transport: "devin-connect",
|
|
9332
9426
|
provider: "devin",
|
|
9333
9427
|
model,
|
|
9334
|
-
hasApiKey: true
|
|
9335
|
-
|
|
9336
|
-
|
|
9337
|
-
|
|
9338
|
-
model,
|
|
9339
|
-
fetchImpl: ctx.fetchImpl
|
|
9428
|
+
hasApiKey: true,
|
|
9429
|
+
toolCount: tools.length,
|
|
9430
|
+
requestedToolNames,
|
|
9431
|
+
temperature: typeof agentConfig.temperature === "number" ? agentConfig.temperature : null
|
|
9340
9432
|
});
|
|
9341
9433
|
return {
|
|
9342
9434
|
model,
|
|
9343
9435
|
complete: async (messages, options) => {
|
|
9344
|
-
|
|
9436
|
+
try {
|
|
9437
|
+
const result = await devinProvider.complete(messages, options);
|
|
9438
|
+
await recordLocalAvailability(200);
|
|
9439
|
+
return result;
|
|
9440
|
+
} catch (error) {
|
|
9441
|
+
const failure = readDevinUpstreamFailure(error);
|
|
9442
|
+
if (failure) {
|
|
9443
|
+
await recordLocalAvailability(failure.status, failure.body);
|
|
9444
|
+
}
|
|
9445
|
+
throw error;
|
|
9446
|
+
}
|
|
9345
9447
|
}
|
|
9346
9448
|
};
|
|
9347
9449
|
}
|
|
@@ -9448,7 +9550,7 @@ var resolveDirectOpenAiCompatibleTransport = async (ctx) => {
|
|
|
9448
9550
|
|
|
9449
9551
|
// packages/cli/client/providerResolution/geminiNativeToolTransport.ts
|
|
9450
9552
|
var resolveGeminiNativeToolTransport = async (ctx) => {
|
|
9451
|
-
const { agentConfig, deps, fetchImpl, additionalToolNames, buildProviderOpenAiTools, apiKeyRefResolver, credentialBroker, syncFetcher } = ctx;
|
|
9553
|
+
const { agentConfig, deps, fetchImpl, additionalToolNames, buildProviderOpenAiTools, apiKeyRefResolver, credentialBroker, syncFetcher, recordLocalAvailability } = ctx;
|
|
9452
9554
|
if (shouldUsePlatformChatProvider(deps.env, agentConfig) && isGemini3Model(agentConfig.model ?? "") && agentConfig.provider === "google") {
|
|
9453
9555
|
const providerConfig = await resolvePlatformChatProviderConfig({
|
|
9454
9556
|
agentConfig,
|
|
@@ -9515,6 +9617,7 @@ var resolveGeminiNativeToolTransport = async (ctx) => {
|
|
|
9515
9617
|
status: res.status,
|
|
9516
9618
|
error: errText.slice(0, 200)
|
|
9517
9619
|
});
|
|
9620
|
+
await recordLocalAvailability(res.status, errText);
|
|
9518
9621
|
throw new Error(
|
|
9519
9622
|
`gemini native tool provider failed: HTTP ${res.status} ${errText.slice(0, 500)}`
|
|
9520
9623
|
);
|
|
@@ -9540,6 +9643,7 @@ var resolveGeminiNativeToolTransport = async (ctx) => {
|
|
|
9540
9643
|
contentChars: text.length,
|
|
9541
9644
|
toolCallCount: toolCalls.length
|
|
9542
9645
|
});
|
|
9646
|
+
await recordLocalAvailability(200);
|
|
9543
9647
|
return result;
|
|
9544
9648
|
}
|
|
9545
9649
|
};
|
|
@@ -10091,6 +10195,446 @@ async function syncLocalDialogEvidenceToRemote(args) {
|
|
|
10091
10195
|
return { attempted: true };
|
|
10092
10196
|
}
|
|
10093
10197
|
|
|
10198
|
+
// packages/core/publicAgentSeeds.ts
|
|
10199
|
+
var AGENT_SEED_DEFAULTS = {
|
|
10200
|
+
isPublic: true,
|
|
10201
|
+
allowFork: true,
|
|
10202
|
+
hasVision: false,
|
|
10203
|
+
tools: []
|
|
10204
|
+
};
|
|
10205
|
+
function deterministicId(prefix, seed) {
|
|
10206
|
+
let h = 2166136261;
|
|
10207
|
+
for (let i = 0; i < seed.length; i++) {
|
|
10208
|
+
h ^= seed.charCodeAt(i);
|
|
10209
|
+
h = h * 16777619 >>> 0;
|
|
10210
|
+
}
|
|
10211
|
+
const suffix = h.toString(36).toUpperCase().padStart(14, "0");
|
|
10212
|
+
return (prefix + suffix).slice(0, 26);
|
|
10213
|
+
}
|
|
10214
|
+
function defineAgentSeed(input) {
|
|
10215
|
+
const providerForLookup = isPlatformHostedImageModel(input.model) ? "nolo" : input.provider || "nolo";
|
|
10216
|
+
const tools = input.tools ? [...input.tools] : [...AGENT_SEED_DEFAULTS.tools];
|
|
10217
|
+
const isPublic = input.isPublic ?? AGENT_SEED_DEFAULTS.isPublic;
|
|
10218
|
+
const allowFork = input.allowFork ?? AGENT_SEED_DEFAULTS.allowFork;
|
|
10219
|
+
const tags = input.tags ? [...input.tags] : [];
|
|
10220
|
+
const isPlatformHosted = isNoloHostedProvider(input.provider);
|
|
10221
|
+
const isPlatformPriced = !isPlatformHostedImageModel(input.model) && (isPlatformHosted || input.apiSource === "platform" || input.isPublic === true && !input.apiSource);
|
|
10222
|
+
let inputPrice = isPlatformPriced ? void 0 : input.inputPrice;
|
|
10223
|
+
let outputPrice = isPlatformPriced ? void 0 : input.outputPrice;
|
|
10224
|
+
let hasVision = input.hasVision;
|
|
10225
|
+
const pricesProvided = input.inputPrice !== void 0 || input.outputPrice !== void 0;
|
|
10226
|
+
if (!isPlatformPriced && (inputPrice === void 0 || outputPrice === void 0)) {
|
|
10227
|
+
const pricing = getModelPricing(providerForLookup, input.model);
|
|
10228
|
+
if (!pricing) {
|
|
10229
|
+
throw new Error(`\u672A\u627E\u5230\u6A21\u578B\u4EF7\u683C\u5143\u6570\u636E: ${providerForLookup}/${input.model}`);
|
|
10230
|
+
}
|
|
10231
|
+
if (inputPrice === void 0) inputPrice = pricing.inputPrice;
|
|
10232
|
+
if (outputPrice === void 0) outputPrice = pricing.outputPrice;
|
|
10233
|
+
}
|
|
10234
|
+
if (hasVision === void 0) {
|
|
10235
|
+
if (pricesProvided) {
|
|
10236
|
+
hasVision = AGENT_SEED_DEFAULTS.hasVision;
|
|
10237
|
+
} else {
|
|
10238
|
+
const modelConfig = getModelConfig(providerForLookup, input.model);
|
|
10239
|
+
hasVision = !!modelConfig.hasVision;
|
|
10240
|
+
}
|
|
10241
|
+
}
|
|
10242
|
+
const userVisibleTexts = [
|
|
10243
|
+
["name", input.name],
|
|
10244
|
+
["introduction", input.introduction],
|
|
10245
|
+
[
|
|
10246
|
+
"greeting",
|
|
10247
|
+
typeof input.greeting === "string" ? input.greeting : input.greeting?.text
|
|
10248
|
+
],
|
|
10249
|
+
["prompt", input.prompt],
|
|
10250
|
+
...(input.tags ?? []).map((tag) => ["tags", tag])
|
|
10251
|
+
];
|
|
10252
|
+
for (const [fieldName, text] of userVisibleTexts) {
|
|
10253
|
+
if (!text) continue;
|
|
10254
|
+
const hit = text.match(/平台托管|runinfra|openrouter|ollama/i);
|
|
10255
|
+
if (hit) {
|
|
10256
|
+
throw new Error(
|
|
10257
|
+
`\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`
|
|
10258
|
+
);
|
|
10259
|
+
}
|
|
10260
|
+
}
|
|
10261
|
+
const { inputPrice: _strippedInputPrice, outputPrice: _strippedOutputPrice, ...inputRest } = input;
|
|
10262
|
+
const record = {
|
|
10263
|
+
...inputRest,
|
|
10264
|
+
tools,
|
|
10265
|
+
isPublic,
|
|
10266
|
+
allowFork,
|
|
10267
|
+
tags,
|
|
10268
|
+
hasVision
|
|
10269
|
+
};
|
|
10270
|
+
if (!isPlatformPriced) {
|
|
10271
|
+
record.inputPrice = inputPrice;
|
|
10272
|
+
record.outputPrice = outputPrice;
|
|
10273
|
+
}
|
|
10274
|
+
return record;
|
|
10275
|
+
}
|
|
10276
|
+
var GPT_6_LUNA_DEF = defineAgentSeed({
|
|
10277
|
+
// salt 冻结为历史值 "shared-space-openai-gpt-5-6-luna":deterministicId 由
|
|
10278
|
+
// prefix+salt 哈希得出,改 salt 会换 ID——2026-09-23 Luna 原地换代
|
|
10279
|
+
// (GPT-5.6 Luna → GPT-6 Luna)必须保留稳定 ID,用户收藏/别名/Space
|
|
10280
|
+
// 内容键才不失效。
|
|
10281
|
+
id: deterministicId("01GPT56LUNPB", "shared-space-openai-gpt-5-6-luna"),
|
|
10282
|
+
presetKey: "gpt-6-luna",
|
|
10283
|
+
name: "GPT-6 Luna",
|
|
10284
|
+
// provider 用平台托管命名空间 "nolo"(平台 agent 统一收敛方向):平台价只注册在
|
|
10285
|
+
// nolo 下,agent-run 的托管路由门也只认 nolo。写上游名 "openai" 会让计费落零价
|
|
10286
|
+
// 虚拟模型并绕过 hosted routing(2026-09-24 review CRITICAL)。
|
|
10287
|
+
provider: "nolo",
|
|
10288
|
+
model: "gpt-6-luna",
|
|
10289
|
+
isPublic: true,
|
|
10290
|
+
platformAudit: true,
|
|
10291
|
+
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",
|
|
10292
|
+
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",
|
|
10293
|
+
prompt: "\u4F18\u5148\u5FEB\u901F\u5B8C\u6210\u4EFB\u52A1\uFF1B\u4FDD\u6301\u56DE\u7B54\u76F4\u63A5\u3001\u7ED3\u8BBA\u660E\u786E\u3002",
|
|
10294
|
+
tools: [],
|
|
10295
|
+
tags: ["openai"]
|
|
10296
|
+
});
|
|
10297
|
+
var DEEPSEEK_V4_FLASH_DEF = defineAgentSeed({
|
|
10298
|
+
id: PUBLIC_DEEPSEEK_V4_FLASH_AGENT_ID,
|
|
10299
|
+
presetKey: "deepseek-v4-flash",
|
|
10300
|
+
name: "DeepSeek Flash",
|
|
10301
|
+
provider: "nolo",
|
|
10302
|
+
model: "deepseek-flash",
|
|
10303
|
+
isPublic: true,
|
|
10304
|
+
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",
|
|
10305
|
+
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",
|
|
10306
|
+
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",
|
|
10307
|
+
tools: [],
|
|
10308
|
+
tags: ["nolo", "deepseek"]
|
|
10309
|
+
});
|
|
10310
|
+
var DEEPSEEK_V4_PRO_DEF = defineAgentSeed({
|
|
10311
|
+
id: PUBLIC_DEEPSEEK_V4_PRO_AGENT_ID,
|
|
10312
|
+
presetKey: "deepseek-v4-pro",
|
|
10313
|
+
name: "DeepSeek V4 Pro",
|
|
10314
|
+
provider: "nolo",
|
|
10315
|
+
model: "deepseek-v4-pro",
|
|
10316
|
+
hasVision: false,
|
|
10317
|
+
isPublic: true,
|
|
10318
|
+
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",
|
|
10319
|
+
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",
|
|
10320
|
+
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",
|
|
10321
|
+
tools: [],
|
|
10322
|
+
tags: ["nolo", "deepseek"]
|
|
10323
|
+
});
|
|
10324
|
+
var GLM_5_3_DEF = defineAgentSeed({
|
|
10325
|
+
id: "01GLM52DIPB00000000I3E2MY",
|
|
10326
|
+
presetKey: "glm-5.3",
|
|
10327
|
+
name: "GLM 5.3",
|
|
10328
|
+
provider: "nolo",
|
|
10329
|
+
model: "glm-5.3",
|
|
10330
|
+
isPublic: true,
|
|
10331
|
+
hasVision: true,
|
|
10332
|
+
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",
|
|
10333
|
+
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",
|
|
10334
|
+
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",
|
|
10335
|
+
tools: [],
|
|
10336
|
+
tags: ["nolo", "glm"]
|
|
10337
|
+
});
|
|
10338
|
+
var GLM_5_3_FLASH_DEF = defineAgentSeed({
|
|
10339
|
+
id: PUBLIC_GLM_53_FLASH_AGENT_ID,
|
|
10340
|
+
presetKey: "glm-5-3-flash",
|
|
10341
|
+
name: "GLM 5.3 Flash",
|
|
10342
|
+
provider: "nolo",
|
|
10343
|
+
model: "glm-5-3-flash",
|
|
10344
|
+
isPublic: true,
|
|
10345
|
+
hasVision: true,
|
|
10346
|
+
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",
|
|
10347
|
+
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",
|
|
10348
|
+
prompt: "\u76F4\u63A5\u3001\u7B80\u6D01\u5730\u5B8C\u6210\u4EFB\u52A1\uFF1B\u56DE\u7B54\u4FDD\u6301\u7B80\u77ED\uFF0C\u5148\u7ED9\u7ED3\u8BBA\u3002",
|
|
10349
|
+
// 关掉思考:该模型默认档的 reasoning token 计入输出计费,而实测 low 档
|
|
10350
|
+
// reasoning 输出为 0(10/10 样本),单轮问答输出 token 降到约 1/5、多轮工具
|
|
10351
|
+
// 循环降约 4 成,可见回复长度、工具调用正确性与循环完成度均不变。
|
|
10352
|
+
// medium 档只省约 29% token 且延迟不改善,故直接用 low。
|
|
10353
|
+
reasoning_effort: "low",
|
|
10354
|
+
tools: [],
|
|
10355
|
+
tags: ["nolo", "glm", "flash"]
|
|
10356
|
+
});
|
|
10357
|
+
var CLAUDE_FABLE_5_1_DEF = defineAgentSeed({
|
|
10358
|
+
id: deterministicId("01CLDFBL51PB", "shared-space-anthropic-claude-fable-5-1"),
|
|
10359
|
+
presetKey: "claude-fable-5-1",
|
|
10360
|
+
name: "Claude Fable 5.1",
|
|
10361
|
+
provider: "nolo",
|
|
10362
|
+
model: "anthropic/claude-fable-5-1",
|
|
10363
|
+
isPublic: true,
|
|
10364
|
+
hasVision: true,
|
|
10365
|
+
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",
|
|
10366
|
+
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",
|
|
10367
|
+
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",
|
|
10368
|
+
tools: [],
|
|
10369
|
+
tags: ["anthropic", "claude", "fable"]
|
|
10370
|
+
});
|
|
10371
|
+
var CLAUDE_OPUS_5_5_DEF = defineAgentSeed({
|
|
10372
|
+
id: deterministicId("01CLDOPU55PB", "shared-space-anthropic-claude-opus-5-5"),
|
|
10373
|
+
presetKey: "claude-opus-5-5",
|
|
10374
|
+
name: "Claude Opus 5.5",
|
|
10375
|
+
provider: "nolo",
|
|
10376
|
+
model: "anthropic/claude-opus-5-5",
|
|
10377
|
+
isPublic: true,
|
|
10378
|
+
hasVision: true,
|
|
10379
|
+
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",
|
|
10380
|
+
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",
|
|
10381
|
+
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",
|
|
10382
|
+
tools: [],
|
|
10383
|
+
tags: ["anthropic", "claude", "opus"]
|
|
10384
|
+
});
|
|
10385
|
+
var GROK_4_6_DEF = defineAgentSeed({
|
|
10386
|
+
id: deterministicId("01GROK46PLAZ", "shared-space-xai-grok-4-6"),
|
|
10387
|
+
presetKey: "grok-4.6",
|
|
10388
|
+
name: "Grok 4.6",
|
|
10389
|
+
provider: "xai",
|
|
10390
|
+
model: "grok-4.6",
|
|
10391
|
+
isPublic: true,
|
|
10392
|
+
hasVision: true,
|
|
10393
|
+
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",
|
|
10394
|
+
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",
|
|
10395
|
+
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",
|
|
10396
|
+
tools: [],
|
|
10397
|
+
tags: ["xai", "grok"]
|
|
10398
|
+
});
|
|
10399
|
+
var GEMINI_3_8_FLASH_DEF = defineAgentSeed({
|
|
10400
|
+
// 种子串冻结以维持确定性 ID 稳定,勿随版本改名。
|
|
10401
|
+
id: deterministicId("01GEM37FLPB", "shared-space-google-gemini-3-7-flash"),
|
|
10402
|
+
presetKey: "gemini-3.8-flash",
|
|
10403
|
+
name: "Gemini 3.8 Flash",
|
|
10404
|
+
provider: "nolo",
|
|
10405
|
+
model: "gemini-3.8-flash",
|
|
10406
|
+
isPublic: true,
|
|
10407
|
+
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",
|
|
10408
|
+
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",
|
|
10409
|
+
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",
|
|
10410
|
+
tools: [],
|
|
10411
|
+
tags: ["google", "gemini"]
|
|
10412
|
+
});
|
|
10413
|
+
var GPT_IMAGE_2_GENERATOR_DEF = defineAgentSeed({
|
|
10414
|
+
id: PUBLIC_GPT_IMAGE_2_GENERATOR_AGENT_ID,
|
|
10415
|
+
presetKey: "gpt-image-2-generator",
|
|
10416
|
+
name: "GPT Image 2 \u56FE\u7247\u751F\u6210\u5668",
|
|
10417
|
+
provider: "nolo",
|
|
10418
|
+
model: "gpt-6-luna",
|
|
10419
|
+
imageModel: "gpt-image-2",
|
|
10420
|
+
isPublic: true,
|
|
10421
|
+
hasImageOutput: true,
|
|
10422
|
+
imageWorkflow: "generate",
|
|
10423
|
+
imageConfig: { enabled: true },
|
|
10424
|
+
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",
|
|
10425
|
+
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",
|
|
10426
|
+
prompt: [
|
|
10427
|
+
"\u5B9A\u4F4D\uFF1A",
|
|
10428
|
+
"- \u4F60\u7684\u4E3B\u4EFB\u52A1\u662F\u6587\u672C\u751F\u6210\u65B0\u56FE\u7247\u3002",
|
|
10429
|
+
"- \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",
|
|
10430
|
+
"- \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",
|
|
10431
|
+
"",
|
|
10432
|
+
"\u5DE5\u4F5C\u65B9\u5F0F\uFF1A",
|
|
10433
|
+
"- \u7528\u6237\u7ED9\u51FA\u6E05\u6670\u9700\u6C42\u540E\uFF0C\u76F4\u63A5\u751F\u6210\uFF0C\u4E0D\u5148\u5199\u957F\u7BC7\u89E3\u91CA\u3002",
|
|
10434
|
+
"- 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",
|
|
10435
|
+
"- \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",
|
|
10436
|
+
"- \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",
|
|
10437
|
+
"",
|
|
10438
|
+
"\u56DE\u590D\u65B9\u5F0F\uFF1A",
|
|
10439
|
+
"- \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"
|
|
10440
|
+
].join("\n"),
|
|
10441
|
+
tools: ["openAIGptImageGenerate"],
|
|
10442
|
+
tags: ["image", "openai", "gpt-image-2", "generate"]
|
|
10443
|
+
});
|
|
10444
|
+
var GPT_IMAGE_2_EDITOR_DEF = defineAgentSeed({
|
|
10445
|
+
id: PUBLIC_GPT_IMAGE_2_EDITOR_AGENT_ID,
|
|
10446
|
+
presetKey: "gpt-image-2-editor",
|
|
10447
|
+
name: "GPT Image 2 \u56FE\u7247\u7F16\u8F91\u5668",
|
|
10448
|
+
provider: "nolo",
|
|
10449
|
+
model: "gpt-6-luna",
|
|
10450
|
+
imageModel: "gpt-image-2",
|
|
10451
|
+
isPublic: true,
|
|
10452
|
+
hasImageOutput: true,
|
|
10453
|
+
imageWorkflow: "edit",
|
|
10454
|
+
imageConfig: { enabled: true },
|
|
10455
|
+
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",
|
|
10456
|
+
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",
|
|
10457
|
+
prompt: [
|
|
10458
|
+
"\u5B9A\u4F4D\uFF1A",
|
|
10459
|
+
"- \u4F60\u7684\u4E3B\u4EFB\u52A1\u662F\u5355\u6B21\u8BF7\u6C42\u6539\u56FE\uFF0C\u4E0D\u662F\u957F\u5BF9\u8BDD\u966A\u4F34\u5F0F\u521B\u4F5C\u3002",
|
|
10460
|
+
"- \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",
|
|
10461
|
+
"- \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",
|
|
10462
|
+
"",
|
|
10463
|
+
"\u5DE5\u4F5C\u65B9\u5F0F\uFF1A",
|
|
10464
|
+
"- \u6536\u5230\u56FE\u7247\u540E\uFF0C\u4F18\u5148\u6309\u5355\u6B21\u8BF7\u6C42\u6539\u56FE\u5B8C\u6210\u5F53\u524D\u76EE\u6807\u3002",
|
|
10465
|
+
"- \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",
|
|
10466
|
+
"- \u5982\u679C\u7528\u6237\u63D0\u4F9B\u4E86 mask\uFF0C\u5C31\u628A mask \u89C6\u4E3A\u5FC5\u987B\u9075\u5B88\u7684\u7F16\u8F91\u8303\u56F4\u3002",
|
|
10467
|
+
"- \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",
|
|
10468
|
+
"- \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",
|
|
10469
|
+
"- \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",
|
|
10470
|
+
"- \u5982\u679C outputFormat \u662F png\uFF08\u6216\u6CA1\u6709\u663E\u5F0F\u6539\u6210 jpeg/webp\uFF09\uFF0C\u4E0D\u8981\u4F20 outputCompression\u3002",
|
|
10471
|
+
"",
|
|
10472
|
+
"\u56DE\u590D\u65B9\u5F0F\uFF1A",
|
|
10473
|
+
"- \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"
|
|
10474
|
+
].join("\n"),
|
|
10475
|
+
tools: ["openAIGptImageEdit"],
|
|
10476
|
+
tags: ["image", "openai", "gpt-image-2", "edit"]
|
|
10477
|
+
});
|
|
10478
|
+
var GPT_IMAGE_2_CONTINUOUS_DEF = defineAgentSeed({
|
|
10479
|
+
id: PUBLIC_GPT_IMAGE_2_CONTINUOUS_AGENT_ID,
|
|
10480
|
+
presetKey: "gpt-image-2-continuous",
|
|
10481
|
+
name: "GPT Image 2 \u8FDE\u7EED\u521B\u4F5C\u52A9\u624B",
|
|
10482
|
+
provider: "nolo",
|
|
10483
|
+
model: "gpt-6-luna",
|
|
10484
|
+
imageModel: "gpt-image-2",
|
|
10485
|
+
isPublic: true,
|
|
10486
|
+
hasImageOutput: true,
|
|
10487
|
+
imageWorkflow: "continuous",
|
|
10488
|
+
imageConfig: { enabled: true },
|
|
10489
|
+
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",
|
|
10490
|
+
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",
|
|
10491
|
+
prompt: [
|
|
10492
|
+
"\u5B9A\u4F4D\uFF1A",
|
|
10493
|
+
"- \u4F60\u7684\u4E3B\u4EFB\u52A1\u662F\u591A\u8F6E\u8FDE\u7EED\u521B\u4F5C\u3002",
|
|
10494
|
+
"- \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",
|
|
10495
|
+
"- \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",
|
|
10496
|
+
"",
|
|
10497
|
+
"\u5DE5\u4F5C\u65B9\u5F0F\uFF1A",
|
|
10498
|
+
"- \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",
|
|
10499
|
+
"- \u5982\u679C\u5F53\u524D\u8F6E\u7528\u6237\u4E0A\u4F20\u4E86\u65B0\u56FE\uFF0C\u4F18\u5148\u57FA\u4E8E\u65B0\u56FE\u7EE7\u7EED\u521B\u4F5C\u3002",
|
|
10500
|
+
"- \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",
|
|
10501
|
+
"- \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",
|
|
10502
|
+
"- \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",
|
|
10503
|
+
"- \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",
|
|
10504
|
+
"- \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",
|
|
10505
|
+
"- \u5982\u679C outputFormat \u662F png\uFF08\u6216\u6CA1\u6709\u663E\u5F0F\u6539\u6210 jpeg/webp\uFF09\uFF0C\u4E0D\u8981\u4F20 outputCompression\u3002",
|
|
10506
|
+
"",
|
|
10507
|
+
"\u56DE\u590D\u65B9\u5F0F\uFF1A",
|
|
10508
|
+
"- \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"
|
|
10509
|
+
].join("\n"),
|
|
10510
|
+
tools: ["openAIGptImageGenerate", "openAIGptImageEdit"],
|
|
10511
|
+
tags: ["image", "openai", "gpt-image-2", "continuous"]
|
|
10512
|
+
});
|
|
10513
|
+
var NANO_BANANA_2_LITE_GENERATOR_DEF = defineAgentSeed({
|
|
10514
|
+
id: PUBLIC_NANO_BANANA_2_LITE_AGENT_ID,
|
|
10515
|
+
presetKey: "nano-banana-2-lite-generator",
|
|
10516
|
+
name: "Nano Banana 2 Lite \u6587\u751F\u56FE",
|
|
10517
|
+
provider: "nolo",
|
|
10518
|
+
model: "gemini-3.1-flash-lite-image",
|
|
10519
|
+
isPublic: true,
|
|
10520
|
+
hasImageOutput: true,
|
|
10521
|
+
imageWorkflow: "generate",
|
|
10522
|
+
imageConfig: { enabled: true },
|
|
10523
|
+
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",
|
|
10524
|
+
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",
|
|
10525
|
+
prompt: [
|
|
10526
|
+
"\u5B9A\u4F4D\uFF1A",
|
|
10527
|
+
"- \u4F60\u7684\u4E3B\u4EFB\u52A1\u662F\u5FEB\u901F\u751F\u6210\u65B0\u56FE\u7247\u3002",
|
|
10528
|
+
"- \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",
|
|
10529
|
+
"",
|
|
10530
|
+
"\u5DE5\u4F5C\u65B9\u5F0F\uFF1A",
|
|
10531
|
+
"- \u7528\u6237\u7ED9\u51FA\u6E05\u6670\u9700\u6C42\u540E\uFF0C\u76F4\u63A5\u7528\u5F53\u524D\u6A21\u578B\u751F\u6210\u56FE\u7247\u3002",
|
|
10532
|
+
"- \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",
|
|
10533
|
+
"- prompt \u8981\u660E\u786E\u4E3B\u4F53\u3001\u573A\u666F\u3001\u98CE\u683C\u3001\u5149\u7EBF\u3001\u6C1B\u56F4\u3002",
|
|
10534
|
+
"- \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",
|
|
10535
|
+
"- \u5982\u679C\u7528\u6237\u4E0A\u4F20\u4E86\u53C2\u8003\u56FE\uFF0C\u8BA9\u6A21\u578B\u53C2\u8003\u6784\u56FE\u6216\u98CE\u683C\u3002",
|
|
10536
|
+
"- \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",
|
|
10537
|
+
"",
|
|
10538
|
+
"\u56DE\u590D\u65B9\u5F0F\uFF1A",
|
|
10539
|
+
"- \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"
|
|
10540
|
+
].join("\n"),
|
|
10541
|
+
tools: [],
|
|
10542
|
+
tags: ["image", "google", "gemini", "nano-banana", "fast", "generate"]
|
|
10543
|
+
});
|
|
10544
|
+
var PUBLIC_AGENT_DEFS = [
|
|
10545
|
+
GPT_6_LUNA_DEF,
|
|
10546
|
+
DEEPSEEK_V4_FLASH_DEF,
|
|
10547
|
+
DEEPSEEK_V4_PRO_DEF,
|
|
10548
|
+
GLM_5_3_DEF,
|
|
10549
|
+
GLM_5_3_FLASH_DEF,
|
|
10550
|
+
CLAUDE_FABLE_5_1_DEF,
|
|
10551
|
+
CLAUDE_OPUS_5_5_DEF,
|
|
10552
|
+
GROK_4_6_DEF,
|
|
10553
|
+
GEMINI_3_8_FLASH_DEF,
|
|
10554
|
+
GPT_IMAGE_2_GENERATOR_DEF,
|
|
10555
|
+
GPT_IMAGE_2_EDITOR_DEF,
|
|
10556
|
+
GPT_IMAGE_2_CONTINUOUS_DEF,
|
|
10557
|
+
NANO_BANANA_2_LITE_GENERATOR_DEF
|
|
10558
|
+
];
|
|
10559
|
+
var PLATFORM_AUDITED_AGENT_SPECS = PUBLIC_AGENT_DEFS.filter((def) => def.platformAudit).map((def) => ({
|
|
10560
|
+
name: def.name,
|
|
10561
|
+
key: publicAgentKey(def.id)
|
|
10562
|
+
}));
|
|
10563
|
+
|
|
10564
|
+
// packages/agent-runtime/publicAgentCatalogOverride.ts
|
|
10565
|
+
var SEED_BY_ID = new Map(
|
|
10566
|
+
PUBLIC_AGENT_DEFS.map((seed) => [seed.id, seed])
|
|
10567
|
+
);
|
|
10568
|
+
function toPlatformOwnedCatalogId(value) {
|
|
10569
|
+
if (typeof value !== "string") return null;
|
|
10570
|
+
const trimmed = value.trim();
|
|
10571
|
+
if (!trimmed) return null;
|
|
10572
|
+
const parsed = parsePublicAgentId(trimmed);
|
|
10573
|
+
if (parsed) return parsed;
|
|
10574
|
+
const systemId = parseSystemAgentId(trimmed);
|
|
10575
|
+
if (systemId) return systemId;
|
|
10576
|
+
return null;
|
|
10577
|
+
}
|
|
10578
|
+
function readPlatformOwnedKey(record) {
|
|
10579
|
+
const fields = record;
|
|
10580
|
+
for (const value of [fields.dbKey, fields.id]) {
|
|
10581
|
+
if (typeof value !== "string") continue;
|
|
10582
|
+
if (toPlatformOwnedCatalogId(value) === null) continue;
|
|
10583
|
+
return value;
|
|
10584
|
+
}
|
|
10585
|
+
return null;
|
|
10586
|
+
}
|
|
10587
|
+
function resolvePublicAgentCatalogOverride(agentKey) {
|
|
10588
|
+
const id = toPlatformOwnedCatalogId(agentKey);
|
|
10589
|
+
if (!id) return null;
|
|
10590
|
+
const entry = builtinAgentCatalogEntryById(id);
|
|
10591
|
+
if (!entry) return null;
|
|
10592
|
+
if (entry.group !== "public" || isRetiredCatalogEntry(entry)) return null;
|
|
10593
|
+
const seed = SEED_BY_ID.get(entry.id);
|
|
10594
|
+
if (!seed) return null;
|
|
10595
|
+
return {
|
|
10596
|
+
name: entry.name,
|
|
10597
|
+
provider: entry.provider,
|
|
10598
|
+
model: entry.model,
|
|
10599
|
+
introduction: seed.introduction,
|
|
10600
|
+
greeting: seed.greeting,
|
|
10601
|
+
prompt: seed.prompt,
|
|
10602
|
+
tools: [...seed.tools],
|
|
10603
|
+
tags: [...seed.tags]
|
|
10604
|
+
};
|
|
10605
|
+
}
|
|
10606
|
+
function overlayGreeting(recordGreeting, seedGreeting) {
|
|
10607
|
+
const seedText = typeof seedGreeting === "string" ? seedGreeting : isRecord(seedGreeting) ? seedGreeting.text : void 0;
|
|
10608
|
+
if (typeof seedText !== "string" || !seedText) return recordGreeting;
|
|
10609
|
+
if (isRecord(recordGreeting)) {
|
|
10610
|
+
return { ...recordGreeting, text: seedText };
|
|
10611
|
+
}
|
|
10612
|
+
if (recordGreeting === void 0 || recordGreeting === null) {
|
|
10613
|
+
return seedGreeting;
|
|
10614
|
+
}
|
|
10615
|
+
if (typeof recordGreeting === "string") {
|
|
10616
|
+
return seedText;
|
|
10617
|
+
}
|
|
10618
|
+
return recordGreeting;
|
|
10619
|
+
}
|
|
10620
|
+
function applyPublicAgentCatalogOverride(record, agentKey) {
|
|
10621
|
+
const override = resolvePublicAgentCatalogOverride(agentKey) ?? resolvePublicAgentCatalogOverride(readPlatformOwnedKey(record));
|
|
10622
|
+
if (!override) return record;
|
|
10623
|
+
const current = record;
|
|
10624
|
+
const greeting = overlayGreeting(current.greeting, override.greeting);
|
|
10625
|
+
return {
|
|
10626
|
+
...record,
|
|
10627
|
+
name: override.name,
|
|
10628
|
+
provider: override.provider,
|
|
10629
|
+
model: override.model,
|
|
10630
|
+
introduction: override.introduction,
|
|
10631
|
+
prompt: override.prompt,
|
|
10632
|
+
tools: [...override.tools],
|
|
10633
|
+
tags: [...override.tags],
|
|
10634
|
+
...greeting !== void 0 ? { greeting } : {}
|
|
10635
|
+
};
|
|
10636
|
+
}
|
|
10637
|
+
|
|
10094
10638
|
// packages/cli/client/cliLocalAgentRecordReader.ts
|
|
10095
10639
|
function resolveBuiltinLocalCliAgentConfig(agentRef, userId) {
|
|
10096
10640
|
const normalized = agentRef.trim();
|
|
@@ -10123,7 +10667,10 @@ async function readAgentFromStore(args) {
|
|
|
10123
10667
|
if (!record || typeof record !== "object") continue;
|
|
10124
10668
|
return applyBuiltinAgentRuntimeOverride(
|
|
10125
10669
|
args.agentRef,
|
|
10126
|
-
resolveAgentRuntimeConfigFromRecord(
|
|
10670
|
+
resolveAgentRuntimeConfigFromRecord(
|
|
10671
|
+
key,
|
|
10672
|
+
applyPublicAgentCatalogOverride(record)
|
|
10673
|
+
)
|
|
10127
10674
|
);
|
|
10128
10675
|
}
|
|
10129
10676
|
return resolveBuiltinPlatformAgentConfig(args.agentRef);
|
|
@@ -10492,6 +11039,9 @@ function waitForRunTerminal(args) {
|
|
|
10492
11039
|
};
|
|
10493
11040
|
const loop = Effect_exports.gen(function* () {
|
|
10494
11041
|
token = args.claim?.acquire() ?? null;
|
|
11042
|
+
const deadline = Date.now() + args.timeoutMs;
|
|
11043
|
+
const maxIterations = Math.ceil(args.timeoutMs / Math.max(1, args.pollIntervalMs)) + 1;
|
|
11044
|
+
let iterations = 0;
|
|
10495
11045
|
while (true) {
|
|
10496
11046
|
const state = yield* readEffect(args.read);
|
|
10497
11047
|
lastState = state;
|
|
@@ -10502,6 +11052,10 @@ function waitForRunTerminal(args) {
|
|
|
10502
11052
|
}
|
|
10503
11053
|
return { kind: "terminal", state };
|
|
10504
11054
|
}
|
|
11055
|
+
iterations += 1;
|
|
11056
|
+
if (Date.now() >= deadline || iterations >= maxIterations) {
|
|
11057
|
+
return { kind: "timeout", waitedMs: args.timeoutMs, lastState };
|
|
11058
|
+
}
|
|
10505
11059
|
const slept = yield* sleep(args.pollIntervalMs);
|
|
10506
11060
|
if (slept === "aborted") return { kind: "aborted" };
|
|
10507
11061
|
}
|
|
@@ -10926,6 +11480,12 @@ function buildRunStatusPayload(reconciled, deps, opts = {}) {
|
|
|
10926
11480
|
endedAt: reconciled.endedAt ?? null,
|
|
10927
11481
|
exitCode: reconciled.exitCode ?? null,
|
|
10928
11482
|
...reconciled.failureReason ? { failureReason: reconciled.failureReason } : {},
|
|
11483
|
+
// 结构化失败分类 + 可重试性:编排者据此决策,不再肉读 logTail。
|
|
11484
|
+
...reconciled.failureClass ? { failureClass: reconciled.failureClass } : {},
|
|
11485
|
+
...typeof reconciled.retryable === "boolean" ? { retryable: reconciled.retryable } : {},
|
|
11486
|
+
// 日志落盘路径始终暴露:stalled/failed 且 dialogId 缺失(如 ephemeral)
|
|
11487
|
+
// 时 logTail 只能靠它读,不能只留在进程内存。
|
|
11488
|
+
...reconciled.logPath ? { logPath: reconciled.logPath } : {},
|
|
10929
11489
|
...typeof reconciled.toolCallCount === "number" ? { toolCallCount: reconciled.toolCallCount } : {},
|
|
10930
11490
|
...reconciled.lastAssistantText ? { lastAssistantText: reconciled.lastAssistantText } : {},
|
|
10931
11491
|
// Non-ephemeral runs expose dialogId so the caller can read the
|
|
@@ -10960,6 +11520,39 @@ function buildRunStatusPayload(reconciled, deps, opts = {}) {
|
|
|
10960
11520
|
}
|
|
10961
11521
|
};
|
|
10962
11522
|
}
|
|
11523
|
+
async function assertCredentialFanoutAllowed(deps, args) {
|
|
11524
|
+
let candidateGroup;
|
|
11525
|
+
if (deps.resolveAgentCredentialGroup) {
|
|
11526
|
+
try {
|
|
11527
|
+
candidateGroup = await deps.resolveAgentCredentialGroup(args.agentKey);
|
|
11528
|
+
} catch {
|
|
11529
|
+
candidateGroup = void 0;
|
|
11530
|
+
}
|
|
11531
|
+
}
|
|
11532
|
+
if (!candidateGroup && typeof args.credentialGroup === "string" && args.credentialGroup.trim()) {
|
|
11533
|
+
candidateGroup = args.credentialGroup.trim();
|
|
11534
|
+
}
|
|
11535
|
+
const { batchId, parentDialogId } = args;
|
|
11536
|
+
if (!batchId && !parentDialogId) return candidateGroup;
|
|
11537
|
+
const active = queryRunRecords({ limit: 500 }, deps).runs.filter((record) => {
|
|
11538
|
+
if (isRunTerminalStatus(record.status)) return false;
|
|
11539
|
+
if (batchId && record.batchId === batchId) return true;
|
|
11540
|
+
if (parentDialogId && record.parentDialogId === parentDialogId) return true;
|
|
11541
|
+
return false;
|
|
11542
|
+
}).map((record) => ({
|
|
11543
|
+
runId: record.runId,
|
|
11544
|
+
agentKey: record.agentKey,
|
|
11545
|
+
credentialGroup: record.credentialGroup
|
|
11546
|
+
}));
|
|
11547
|
+
if (active.length === 0) return candidateGroup;
|
|
11548
|
+
const verdict = checkCredentialFanout({
|
|
11549
|
+
active,
|
|
11550
|
+
candidate: { agentKey: args.agentKey, credentialGroup: candidateGroup },
|
|
11551
|
+
allowUnknownCredential: args.allowUnknownCredential === true
|
|
11552
|
+
});
|
|
11553
|
+
if (!verdict.allowed) throw new Error(verdict.message);
|
|
11554
|
+
return candidateGroup;
|
|
11555
|
+
}
|
|
10963
11556
|
function createCliStartAgentRunExecutor(deps = {}) {
|
|
10964
11557
|
return async (call) => {
|
|
10965
11558
|
const args = parseCallArgs(call);
|
|
@@ -10982,6 +11575,14 @@ function createCliStartAgentRunExecutor(deps = {}) {
|
|
|
10982
11575
|
];
|
|
10983
11576
|
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
11577
|
const batchId = typeof args.batchId === "string" && args.batchId.trim() ? args.batchId.trim() : void 0;
|
|
11578
|
+
const parentDialogId = typeof args.parentDialogId === "string" && args.parentDialogId.trim() ? args.parentDialogId.trim() : void 0;
|
|
11579
|
+
const credentialGroup = await assertCredentialFanoutAllowed(deps, {
|
|
11580
|
+
agentKey,
|
|
11581
|
+
...batchId ? { batchId } : {},
|
|
11582
|
+
...parentDialogId ? { parentDialogId } : {},
|
|
11583
|
+
...typeof args.credentialGroup === "string" && args.credentialGroup.trim() ? { credentialGroup: args.credentialGroup.trim() } : {},
|
|
11584
|
+
allowUnknownCredential: args.allowUnknownCredential === true
|
|
11585
|
+
});
|
|
10985
11586
|
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
11587
|
const { runId, batchId: resolvedBatchId } = await spawnLocalBackgroundRun(
|
|
10987
11588
|
{
|
|
@@ -10991,7 +11592,8 @@ function createCliStartAgentRunExecutor(deps = {}) {
|
|
|
10991
11592
|
agentKey,
|
|
10992
11593
|
...agentName ? { agentName } : {},
|
|
10993
11594
|
...batchId ? { batchId } : {},
|
|
10994
|
-
...
|
|
11595
|
+
...credentialGroup ? { credentialGroup } : {},
|
|
11596
|
+
...parentDialogId ? { parentDialogId } : {},
|
|
10995
11597
|
...dodCommands && dodCommands.length > 0 ? { dodCommands } : {},
|
|
10996
11598
|
cwd: deps.cwd ?? process.cwd(),
|
|
10997
11599
|
message,
|
|
@@ -11077,6 +11679,8 @@ async function spawnContinuationRun(reconciled, userInput, deps) {
|
|
|
11077
11679
|
...agentName ? { agentName } : {},
|
|
11078
11680
|
...reconciled.batchId ? { batchId: reconciled.batchId } : {},
|
|
11079
11681
|
...reconciled.parentDialogId ? { parentDialogId: reconciled.parentDialogId } : {},
|
|
11682
|
+
// 续跑继承原 run 的凭证组(同一 agent),供并发扇出守卫判定。
|
|
11683
|
+
...reconciled.credentialGroup ? { credentialGroup: reconciled.credentialGroup } : {},
|
|
11080
11684
|
cwd: reconciled.cwd ?? deps.cwd ?? process.cwd(),
|
|
11081
11685
|
message: userInput,
|
|
11082
11686
|
...reconciled.ephemeral ? { ephemeral: true } : {},
|
|
@@ -11675,7 +12279,8 @@ function buildLocalToolExecutors(args) {
|
|
|
11675
12279
|
startAgentRun: createCliStartAgentRunExecutor({
|
|
11676
12280
|
env: args.env,
|
|
11677
12281
|
cliEntrypoint: args.cliEntrypoint,
|
|
11678
|
-
cwd: args.workspaceRoot
|
|
12282
|
+
cwd: args.workspaceRoot,
|
|
12283
|
+
...args.resolveAgentCredentialGroup ? { resolveAgentCredentialGroup: args.resolveAgentCredentialGroup } : {}
|
|
11679
12284
|
}),
|
|
11680
12285
|
controlAgentRun: createCliControlAgentRunExecutor({
|
|
11681
12286
|
env: args.env
|
|
@@ -11809,13 +12414,18 @@ async function generateLocalDialogTitle(input) {
|
|
|
11809
12414
|
return { title: fallbackTitle, source: "fallback" };
|
|
11810
12415
|
}
|
|
11811
12416
|
if (input.resolveProviderConfig && input.buildRequest && input.parseResponse) {
|
|
11812
|
-
|
|
11813
|
-
|
|
11814
|
-
|
|
11815
|
-
|
|
11816
|
-
|
|
11817
|
-
|
|
11818
|
-
const
|
|
12417
|
+
const resolveProviderConfig = input.resolveProviderConfig;
|
|
12418
|
+
const buildRequest = input.buildRequest;
|
|
12419
|
+
const parseResponse = input.parseResponse;
|
|
12420
|
+
const attemptPlatformTitle = async (model) => {
|
|
12421
|
+
try {
|
|
12422
|
+
const agentConfig = model ? { ...BUILTIN_TITLE_LLM_CONFIG, model } : BUILTIN_TITLE_LLM_CONFIG;
|
|
12423
|
+
const providerConfig = await resolveProviderConfig({
|
|
12424
|
+
agentConfig: { ...agentConfig, key: agentConfig.id },
|
|
12425
|
+
env
|
|
12426
|
+
});
|
|
12427
|
+
if (!providerConfig?.authToken) return null;
|
|
12428
|
+
const request = buildRequest({
|
|
11819
12429
|
providerConfig,
|
|
11820
12430
|
messages: [
|
|
11821
12431
|
{
|
|
@@ -11847,21 +12457,26 @@ async function generateLocalDialogTitle(input) {
|
|
|
11847
12457
|
body: JSON.stringify(patchedBody),
|
|
11848
12458
|
signal: AbortSignal.timeout(timeoutMs)
|
|
11849
12459
|
});
|
|
11850
|
-
if (res.ok)
|
|
11851
|
-
|
|
11852
|
-
|
|
11853
|
-
|
|
11854
|
-
|
|
11855
|
-
|
|
11856
|
-
|
|
11857
|
-
|
|
11858
|
-
|
|
11859
|
-
|
|
11860
|
-
|
|
11861
|
-
}
|
|
11862
|
-
}
|
|
12460
|
+
if (!res.ok) return null;
|
|
12461
|
+
const raw = await res.text().catch(() => "");
|
|
12462
|
+
const data = safeParseJson(raw);
|
|
12463
|
+
if (!data) return null;
|
|
12464
|
+
const parsed = parseResponse({ providerConfig, data });
|
|
12465
|
+
const generated = normalizeDialogTitle(
|
|
12466
|
+
extractTitleFromLlmContent(parsed.content)
|
|
12467
|
+
);
|
|
12468
|
+
return generated || null;
|
|
12469
|
+
} catch {
|
|
12470
|
+
return null;
|
|
11863
12471
|
}
|
|
11864
|
-
}
|
|
12472
|
+
};
|
|
12473
|
+
const primaryTitle = await attemptPlatformTitle();
|
|
12474
|
+
if (primaryTitle) return { title: primaryTitle, source: "llm" };
|
|
12475
|
+
const fallbackModelTitle = await attemptPlatformTitle(
|
|
12476
|
+
BUILTIN_DIALOG_LLM_CHAT_FALLBACK_MODEL
|
|
12477
|
+
);
|
|
12478
|
+
if (fallbackModelTitle) {
|
|
12479
|
+
return { title: fallbackModelTitle, source: "llm" };
|
|
11865
12480
|
}
|
|
11866
12481
|
}
|
|
11867
12482
|
if (input.resolveDirectProviderConfig) {
|
|
@@ -12526,6 +13141,23 @@ function createCliLocalRuntimeAdapter(deps) {
|
|
|
12526
13141
|
const localToolUsage = /* @__PURE__ */ new Map();
|
|
12527
13142
|
const buildProviderOpenAiTools = deps.buildProviderOpenAiTools ?? buildOpenAiTools;
|
|
12528
13143
|
const additionalToolNames = deps.pastedTextStore ? ["readPastedText"] : [];
|
|
13144
|
+
const resolveAgentCredentialGroup = async (agentRef) => {
|
|
13145
|
+
try {
|
|
13146
|
+
const record = await readAgentFromStore({
|
|
13147
|
+
agentRef,
|
|
13148
|
+
store: await getOrCreateSharedStore(deps),
|
|
13149
|
+
userId
|
|
13150
|
+
});
|
|
13151
|
+
if (!record || typeof record !== "object") return void 0;
|
|
13152
|
+
const rec = record;
|
|
13153
|
+
const existing = typeof rec.credentialGroup === "string" && rec.credentialGroup.trim() ? rec.credentialGroup.trim() : void 0;
|
|
13154
|
+
if (existing) return existing;
|
|
13155
|
+
const ref = typeof rec.apiKeyRef === "string" && rec.apiKeyRef.trim() ? rec.apiKeyRef : typeof rec.credentialRef === "string" && rec.credentialRef.trim() ? rec.credentialRef : void 0;
|
|
13156
|
+
return deriveCredentialGroup(ref)?.credentialGroup;
|
|
13157
|
+
} catch {
|
|
13158
|
+
return void 0;
|
|
13159
|
+
}
|
|
13160
|
+
};
|
|
12529
13161
|
let activeAgentToolNames = [];
|
|
12530
13162
|
const workspaceRoot = deps.cwd ?? process.cwd();
|
|
12531
13163
|
let runtimeToolExecutionLimits = {};
|
|
@@ -12538,6 +13170,7 @@ function createCliLocalRuntimeAdapter(deps) {
|
|
|
12538
13170
|
readXPost: deps.readXPost,
|
|
12539
13171
|
readXhsProfile: deps.readXhsProfile,
|
|
12540
13172
|
cliEntrypoint: CLI_ENTRYPOINT,
|
|
13173
|
+
resolveAgentCredentialGroup,
|
|
12541
13174
|
...deps.confirmDestructiveAction ? { confirmDestructiveAction: deps.confirmDestructiveAction } : {},
|
|
12542
13175
|
...deps.requestUserChoice ? { requestUserChoice: deps.requestUserChoice } : {},
|
|
12543
13176
|
...deps.pastedTextStore ? { pastedTextStore: deps.pastedTextStore } : {},
|
|
@@ -12615,13 +13248,21 @@ function createCliLocalRuntimeAdapter(deps) {
|
|
|
12615
13248
|
readXPost: deps.readXPost,
|
|
12616
13249
|
readXhsProfile: deps.readXhsProfile,
|
|
12617
13250
|
cliEntrypoint: CLI_ENTRYPOINT,
|
|
13251
|
+
resolveAgentCredentialGroup,
|
|
12618
13252
|
...deps.confirmDestructiveAction ? { confirmDestructiveAction: deps.confirmDestructiveAction } : {},
|
|
12619
13253
|
...deps.requestUserChoice ? { requestUserChoice: deps.requestUserChoice } : {},
|
|
12620
13254
|
...deps.pastedTextStore ? { pastedTextStore: deps.pastedTextStore } : {},
|
|
12621
13255
|
agentKey: agentConfig?.key,
|
|
12622
13256
|
...runtimeToolExecutionLimits
|
|
12623
13257
|
});
|
|
12624
|
-
const exposedAgentConfig = agentConfig ? {
|
|
13258
|
+
const exposedAgentConfig = agentConfig ? {
|
|
13259
|
+
...agentConfig,
|
|
13260
|
+
exposedToolNames: activeAgentToolNames,
|
|
13261
|
+
toolSurface: {
|
|
13262
|
+
...agentConfig.toolSurface ?? {},
|
|
13263
|
+
finalToolNames: activeAgentToolNames
|
|
13264
|
+
}
|
|
13265
|
+
} : agentConfig;
|
|
12625
13266
|
if (exposedAgentConfig && !deps.pastedTextStore) {
|
|
12626
13267
|
preparedAgentRuntimeCache.set(cacheKey, {
|
|
12627
13268
|
agentConfig: exposedAgentConfig,
|