nolo-cli 0.54.0 → 0.61.0-alpha.2
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 +3 -3
- package/{_executeModel-OPTKYHJA.js → _executeModel-CKT6RGTL.js} +48 -45
- package/{action-ORXWW2ZG.js → action-76JX3JX3.js} +7 -6
- package/{addContentAction-53BZ34AE.js → addContentAction-V3NAZRTJ.js} +6 -5
- package/{addDialogAgentAction-JRYUS54Y.js → addDialogAgentAction-RZOAF46K.js} +5 -4
- package/{agentDeleteCommand-FJIWU2BS.js → agentDeleteCommand-VN7NPXQ4.js} +30 -27
- package/{agentEmailCommands-CE32L43B.js → agentEmailCommands-F2TNAV4A.js} +59 -56
- package/{agentGrantCommands-2LEZDADN.js → agentGrantCommands-R3VQEZJR.js} +1 -1
- package/{agentListCommands-VJNKULIK.js → agentListCommands-OSM2ANI3.js} +61 -31
- package/{agentMachineCommands-HCJ3WQXL.js → agentMachineCommands-MTPWYVRV.js} +31 -28
- package/{agentPullCommand-M552CYSI.js → agentPullCommand-N7L2CT7L.js} +2 -2
- package/{agentRecordCommands-QFWERED4.js → agentRecordCommands-VWAWTVVC.js} +57 -54
- package/{agentRunCommand-G3GQMUNN.js → agentRunCommand-PLZOBNVK.js} +61 -58
- package/{agentRunControl-INKFDXDA.js → agentRunControl-WECMOO6O.js} +11 -6
- package/{agentRuntimeLocal-K327ELSL.js → agentRuntimeLocal-XCJLRWQE.js} +26 -23
- package/{agentSlice-ODKF4J6M.js → agentSlice-F6DOP4IW.js} +8 -7
- package/{appDeleteCommands-XUXMFDI4.js → appDeleteCommands-3BCFTRFJ.js} +30 -27
- package/{appDeployCommands-37F4GPCU.js → appDeployCommands-B4GMHCYA.js} +30 -27
- package/{appDeployStatusCommands-WSPU7TUK.js → appDeployStatusCommands-4MN36WIG.js} +30 -27
- package/{appGetCommands-YLOBA3EM.js → appGetCommands-4GJIEUAX.js} +30 -27
- package/{appListCommands-UD62R5ME.js → appListCommands-CHU53GSX.js} +30 -27
- package/{authCommand-OK6HLHGS.js → authCommand-WOTWLJNF.js} +35 -29
- package/{authCommands-2DUIUEMT.js → authCommands-ILTBI6JV.js} +7 -5
- package/{chatQueueReduxAdapter-TV2TUOQS.js → chatQueueReduxAdapter-HNSQXNIR.js} +20 -18
- package/{chunk-HPW5MNDQ.js → chunk-22BTGNSP.js} +113 -57
- package/{chunk-TR4DXUYX.js → chunk-2HPRMEEZ.js} +1180 -736
- package/{chunk-UNZDCI3O.js → chunk-2KDR4CWE.js} +35 -4
- package/{chunk-3ZTR7ZO4.js → chunk-2PGGC63K.js} +1 -1
- package/{chunk-JXIP6ZWH.js → chunk-37QVS7BU.js} +18 -5
- package/{chunk-EA5OYZVD.js → chunk-37XDGCY7.js} +1 -1
- package/chunk-3BLB7QKO.js +433 -0
- package/{chunk-CS6TCJ7E.js → chunk-3JQ2NRYU.js} +30 -7
- package/{chunk-RHMDMTDK.js → chunk-3JWKQDA4.js} +2 -2
- package/{chunk-3LKZRP7E.js → chunk-3QGUVVX5.js} +2 -2
- package/{chunk-SSXTSPSG.js → chunk-45YO6H7P.js} +71 -30
- package/{chunk-EJE33XNR.js → chunk-4C4ST2YE.js} +1521 -565
- package/{chunk-YLCUU3WM.js → chunk-4NJEIGBQ.js} +5 -5
- package/{chunk-K4NISKOR.js → chunk-5ZYA4JJ3.js} +47 -17
- package/{chunk-3Y2K5O2R.js → chunk-7A3RRUCQ.js} +125 -40
- package/{chunk-5FCIPEKT.js → chunk-7O7KH4X5.js} +1051 -926
- package/{chunk-6HDYSFLO.js → chunk-7UF7CQ6B.js} +3 -3
- package/{chunk-SUEIAK5N.js → chunk-AQMVUA7N.js} +1 -0
- package/{chunk-WQHGJHAL.js → chunk-AVE2YR4F.js} +732 -726
- package/{chunk-6COJEAYH.js → chunk-B7DXRX7F.js} +44 -37
- package/chunk-BFU6C242.js +66 -0
- package/{chunk-IA3A5373.js → chunk-C3FZR5EC.js} +1 -1
- package/{chunk-IWUMSAQF.js → chunk-CJCJF5XB.js} +26 -3
- package/{chunk-UGBHDMHI.js → chunk-CP7VIDZ7.js} +1 -1
- package/{chunk-JON2PHYT.js → chunk-CTCW7U7N.js} +1 -1
- package/{chunk-YBFJQC2M.js → chunk-D5XKNNUV.js} +65 -42
- package/{chunk-7NYDJAQ7.js → chunk-DNNSCSA2.js} +5 -5
- package/{chunk-NI2BS6UD.js → chunk-DWUCB2A3.js} +1 -1
- package/{chunk-AA564GBL.js → chunk-DZZL7UBV.js} +1 -1
- package/{chunk-75MSWWUE.js → chunk-E6RGHPDR.js} +5 -3
- package/chunk-EDKF7RX4.js +30 -0
- package/{chunk-FJHMLRDQ.js → chunk-ES6CVKVD.js} +21 -27
- package/{chunk-SYYUU7EV.js → chunk-FHAGENAS.js} +2 -3
- package/{chunk-NJUQBYFJ.js → chunk-FKFMIBTT.js} +3 -1
- package/{chunk-INZZJSQF.js → chunk-FZGV4FGK.js} +24 -12
- package/{chunk-YQBXOHE6.js → chunk-GAL47RNP.js} +1 -1
- package/{chunk-UOWXD4VN.js → chunk-HBPV76EK.js} +335 -243
- package/{chunk-MLEZPE3U.js → chunk-HLU5Q2GV.js} +4 -4
- package/{chunk-TC6P4NDR.js → chunk-HQP7HJDL.js} +6 -6
- package/{chunk-7FAS3NEF.js → chunk-IYCUMIYS.js} +19 -15
- package/{chunk-AUVFJGPC.js → chunk-JX5PJCWS.js} +7 -5
- package/{chunk-LYGNQHUW.js → chunk-JYYZCK2Z.js} +2 -4
- package/{chunk-XOJRZUPF.js → chunk-KWSQR2KK.js} +14 -29
- package/{chunk-2WBFJHQA.js → chunk-L7B47JXR.js} +34 -39
- package/{chunk-EICIFHVS.js → chunk-LAFC3B2I.js} +1 -1
- package/{chunk-N4JKMCY3.js → chunk-LJKICKVC.js} +2 -2
- package/chunk-M3JEW6N6.js +193 -0
- package/{chunk-LRGKOI5Y.js → chunk-MBOEV4L2.js} +7 -3
- package/{chunk-SVDMVX4G.js → chunk-MMZ6ZTVO.js} +112 -73
- package/{chunk-JDSUTNYY.js → chunk-MP64VFGD.js} +2 -2
- package/{chunk-NFLA6GSU.js → chunk-MXUDQZXQ.js} +44 -5
- package/chunk-N4G4PKQ6.js +23 -0
- package/{chunk-KXKQO4Q6.js → chunk-NTW5GWDM.js} +58 -1
- package/chunk-ONXOABJR.js +215 -0
- package/{chunk-TY3ADTX5.js → chunk-OZX2IPKM.js} +7 -2
- package/{chunk-Q4XZVZPN.js → chunk-P7OOB7QP.js} +1 -1
- package/{chunk-XIJZOCSP.js → chunk-PEZJEQAO.js} +1 -1
- package/{chunk-SWJGJMTW.js → chunk-PQDIDWGX.js} +1 -1
- package/chunk-PSCNXBYA.js +11 -0
- package/{chunk-BY2FF2C4.js → chunk-QEFJJS2I.js} +55 -73
- package/{chunk-BG7J6Y5X.js → chunk-QEW2MFDQ.js} +1 -1
- package/{chunk-KLIBF3BY.js → chunk-RDBARW6T.js} +8 -3
- package/{chunk-ZVOHVJI3.js → chunk-RJ2SAFB5.js} +82 -35
- package/{chunk-MYMBBB6Q.js → chunk-RVWRKFUB.js} +5 -3
- package/{chunk-43CXXVJD.js → chunk-RXX4GDIH.js} +1 -1
- package/chunk-SEJ5OS6F.js +49 -0
- package/{chunk-SAJSBPI2.js → chunk-SOJM57FX.js} +5 -2
- package/{chunk-EKLRRZIN.js → chunk-SPAQ4PVV.js} +0 -5
- package/{chunk-L7NG2M6H.js → chunk-TRV2MIDW.js} +89 -74
- package/{chunk-5UAYZEXO.js → chunk-UZPQSVM6.js} +1 -1
- package/{chunk-SVC3GGUA.js → chunk-VMWYBIXG.js} +7 -5
- package/{chunk-ZHXJ6M7T.js → chunk-W7XHHYWM.js} +4 -0
- package/{chunk-UR66XPVF.js → chunk-XAVSS3KE.js} +21 -3
- package/{chunk-A65UV3M5.js → chunk-XOKOSO35.js} +10 -19
- package/{chunk-VZMUOPYG.js → chunk-XTJTN3RW.js} +46 -3
- package/{chunk-T5HJEUQN.js → chunk-YCDWJX45.js} +1 -1
- package/{chunk-BBTN4NQD.js → chunk-Z4QSJILV.js} +85 -13
- package/{chunk-O5FLGN2L.js → chunk-ZRSJ3JEH.js} +6 -2
- package/{cliExecutor-BBUVQU4L.js → cliExecutor-HG3S345O.js} +1 -1
- package/{codingSkills-BCQXRZOI.js → codingSkills-VDXQYWX4.js} +2 -2
- package/{contentThunks-KNI6VXLT.js → contentThunks-7YG2ZYQC.js} +21 -19
- package/{cooldownCommands-GI5NNWGL.js → cooldownCommands-BSCH2W7P.js} +2 -2
- package/{createAgentAutomationAction-OK4L33KF.js → createAgentAutomationAction-PJQSCAIO.js} +23 -21
- package/{createDialogAction-JDSMY4AY.js → createDialogAction-SFEJX6SP.js} +23 -21
- package/{createPageAction-T7RA3HCG.js → createPageAction-B7WRHOQO.js} +24 -22
- package/{dbSlice-TVX6SN2T.js → dbSlice-IBVOBVMS.js} +5 -4
- package/{deleteFile-JYKRT7C3.js → deleteFile-FWP2PSBG.js} +3 -2
- package/{dialogCommands-UQZYWOOV.js → dialogCommands-VL2X22QC.js} +30 -27
- package/{dialogSlice-TYW2G7IL.js → dialogSlice-ANMACABO.js} +20 -18
- package/{docCreateCommands-OA6HZBWO.js → docCreateCommands-ITLGZ5YI.js} +29 -26
- package/{docDeleteCommands-KBB3YQI2.js → docDeleteCommands-LH3YNL4C.js} +30 -27
- package/{docReadCommands-ZLMFVC67.js → docReadCommands-YAJ77F36.js} +29 -26
- package/{docStore-2URPBVCS.js → docStore-D4HGHPWI.js} +6 -5
- package/{docUpdateCommands-HMH5KUON.js → docUpdateCommands-DQBOMH2G.js} +29 -26
- package/{getPricing-RFOPUWHY.js → getPricing-NM3NUTAS.js} +4 -4
- package/handleSendMessageAction-DF2OABGW.js +675 -0
- package/index.js +79 -88
- package/{lib-2ZTNRXR4.js → lib-FRRS27KN.js} +63 -28
- package/{localRuntimeAuthority-KQDAE64E.js → localRuntimeAuthority-R5UBODT3.js} +6 -4
- package/{localRuntimeDb-PF7CFKDL.js → localRuntimeDb-P37ZTX55.js} +1 -1
- package/{machineCommands-RK6L7ZWL.js → machineCommands-JXDYQ5LB.js} +296 -79
- package/{machineWsRunDispatch-3X64DW2Z.js → machineWsRunDispatch-3QHI7JX5.js} +55 -52
- package/{memberThunks-THZYZFSN.js → memberThunks-VZI6G7YZ.js} +10 -8
- package/{models-JVKUEER5.js → models-FAMINFZ7.js} +2 -2
- package/package.json +3 -2
- package/{read-K4JU4MQC.js → read-2BYWW7AA.js} +3 -2
- package/{readDocTool-LQGR6FUN.js → readDocTool-LC3A7QTB.js} +1 -1
- package/{readlineWorkspace-XUFJV3RS.js → readlineWorkspace-KVZTEAHB.js} +4365 -2795
- package/{removeDialogAgentAction-ECHCFB7N.js → removeDialogAgentAction-SFYZXHNK.js} +8 -7
- package/{runAgentClientLoop-24GQ2AW6.js → runAgentClientLoop-KGTEL7ZP.js} +49 -45
- package/{runtimeDoctorCommands-JKTTN723.js → runtimeDoctorCommands-CROTMULY.js} +7 -5
- package/{setDialogExtraReferencesAction-KCVJNGMB.js → setDialogExtraReferencesAction-Q32RGFTA.js} +6 -5
- package/{setPrimaryDialogAgentAction-VDOBOMKC.js → setPrimaryDialogAgentAction-BFYJHUJS.js} +8 -7
- package/{settingSlice-VR2IJSXC.js → settingSlice-IRUU4VFB.js} +6 -5
- package/{skillDiscovery-2QTZINON.js → skillDiscovery-NTRLM6KP.js} +1 -1
- package/{spaceCommands-S5YJJXL7.js → spaceCommands-KNAYWMCZ.js} +33 -215
- package/{streamAgentChatTurn-QHKP3ABO.js → streamAgentChatTurn-FLYPTXKZ.js} +105 -73
- package/{switchDialogAgentAction-5L4UP7VI.js → switchDialogAgentAction-L2KOKCGG.js} +5 -4
- package/{tableCommands-R6WFRDYF.js → tableCommands-SUNTHAYX.js} +1 -1
- package/{toolApiClient-53U4UDFF.js → toolApiClient-VGYUB4P5.js} +2 -1
- package/{tools-SSXSTC3O.js → tools-CVLUXK6P.js} +37 -34
- package/{tuiSummaryLlmCaller-URFJHFC5.js → tuiSummaryLlmCaller-F3DPFFZM.js} +15 -13
- package/{updateCommands-IYKLF3JX.js → updateCommands-AJYSD73Y.js} +2 -2
- package/{updateDialogTitleAction-YFYAEW3T.js → updateDialogTitleAction-HWJIZEIV.js} +23 -21
- package/agentSuperviseCommands-5AR3DKNN.js +0 -640
- package/chunk-6IGD47IC.js +0 -19
- package/chunk-FD36SCCD.js +0 -105
- package/chunk-GRFK2XP4.js +0 -230
- package/chunk-HJTAGT3W.js +0 -370
- package/handleSendMessageAction-GO53TY7U.js +0 -409
|
@@ -11,13 +11,24 @@ import {
|
|
|
11
11
|
normalizeNonNegativeMs,
|
|
12
12
|
parseRetryAfterHeaderMs
|
|
13
13
|
} from "./chunk-3L2WKC3W.js";
|
|
14
|
+
import {
|
|
15
|
+
TASK_PREVIEW_MAX,
|
|
16
|
+
buildDelegatedTaskContent,
|
|
17
|
+
calculateDelegatedPayloadMetrics,
|
|
18
|
+
formatListRunsCard,
|
|
19
|
+
formatNotFoundRunCard,
|
|
20
|
+
formatStartRunCard,
|
|
21
|
+
formatStatusRunCard,
|
|
22
|
+
formatStopRunCard,
|
|
23
|
+
resolveRunLabel
|
|
24
|
+
} from "./chunk-NTW5GWDM.js";
|
|
14
25
|
import {
|
|
15
26
|
omitNullishAgentSummaryFields,
|
|
16
27
|
sortSafeAgentSummaries,
|
|
17
28
|
toCompactAgentSummary,
|
|
18
29
|
toSafeAgentSummary,
|
|
19
30
|
toUnavailableAgentSummary
|
|
20
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-3BLB7QKO.js";
|
|
21
32
|
import {
|
|
22
33
|
getUserDataItemTimestamp,
|
|
23
34
|
mergeAndDedupUserData
|
|
@@ -28,17 +39,7 @@ import {
|
|
|
28
39
|
readPageFunc,
|
|
29
40
|
readPageFunctionSchema,
|
|
30
41
|
slateToSimplifiedMarkdown
|
|
31
|
-
} from "./chunk-
|
|
32
|
-
import {
|
|
33
|
-
TASK_PREVIEW_MAX,
|
|
34
|
-
buildDelegatedTaskContent,
|
|
35
|
-
formatListRunsCard,
|
|
36
|
-
formatNotFoundRunCard,
|
|
37
|
-
formatStartRunCard,
|
|
38
|
-
formatStatusRunCard,
|
|
39
|
-
formatStopRunCard,
|
|
40
|
-
resolveRunLabel
|
|
41
|
-
} from "./chunk-KXKQO4Q6.js";
|
|
42
|
+
} from "./chunk-2PGGC63K.js";
|
|
42
43
|
import {
|
|
43
44
|
addMemberSpace,
|
|
44
45
|
fetchAuthoritativeRemoteSpace,
|
|
@@ -50,7 +51,7 @@ import {
|
|
|
50
51
|
setMembershipRejected,
|
|
51
52
|
setSpaceInitialized,
|
|
52
53
|
updateMemberSpaceName
|
|
53
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-MBOEV4L2.js";
|
|
54
55
|
import {
|
|
55
56
|
ToolApiError,
|
|
56
57
|
buildToolRequestHeaders,
|
|
@@ -58,13 +59,16 @@ import {
|
|
|
58
59
|
getRequestConfig,
|
|
59
60
|
getToolBaseUrl,
|
|
60
61
|
getToolRequestContext
|
|
61
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-OZX2IPKM.js";
|
|
62
63
|
import {
|
|
63
64
|
setDialogExtraReferencesAction
|
|
64
|
-
} from "./chunk-
|
|
65
|
+
} from "./chunk-CP7VIDZ7.js";
|
|
66
|
+
import {
|
|
67
|
+
waitForAbortableDelay
|
|
68
|
+
} from "./chunk-N4G4PKQ6.js";
|
|
65
69
|
import {
|
|
66
70
|
markdownToSlate
|
|
67
|
-
} from "./chunk-
|
|
71
|
+
} from "./chunk-FZGV4FGK.js";
|
|
68
72
|
import {
|
|
69
73
|
extractMentionsFromSlate
|
|
70
74
|
} from "./chunk-MEYIRKDN.js";
|
|
@@ -76,14 +80,14 @@ import {
|
|
|
76
80
|
} from "./chunk-VF4K2QE6.js";
|
|
77
81
|
import {
|
|
78
82
|
createDocState
|
|
79
|
-
} from "./chunk-
|
|
83
|
+
} from "./chunk-7UF7CQ6B.js";
|
|
80
84
|
import {
|
|
81
85
|
BUILTIN_OBJECT_SKILL_IDS,
|
|
82
86
|
buildBuiltinObjectSkillConfig,
|
|
83
87
|
buildBuiltinObjectSkillDbKey,
|
|
84
88
|
buildBuiltinObjectSkillPageContent,
|
|
85
89
|
createDialogAction
|
|
86
|
-
} from "./chunk-
|
|
90
|
+
} from "./chunk-ES6CVKVD.js";
|
|
87
91
|
import {
|
|
88
92
|
DEFAULT_COLLAPSED_CATEGORIES,
|
|
89
93
|
addContentToSpace,
|
|
@@ -104,7 +108,7 @@ import {
|
|
|
104
108
|
updateContentCategory,
|
|
105
109
|
updateContentTitle,
|
|
106
110
|
writeStoredCollapsedCategories
|
|
107
|
-
} from "./chunk-
|
|
111
|
+
} from "./chunk-AVE2YR4F.js";
|
|
108
112
|
import {
|
|
109
113
|
getCurrentSpaceId,
|
|
110
114
|
getCurrentSpaceIdRaw,
|
|
@@ -125,14 +129,14 @@ import {
|
|
|
125
129
|
selectMsgById,
|
|
126
130
|
uiAskChoiceFunc,
|
|
127
131
|
uiAskChoiceFunctionSchema
|
|
128
|
-
} from "./chunk-
|
|
132
|
+
} from "./chunk-D5XKNNUV.js";
|
|
129
133
|
import {
|
|
130
134
|
createAgent,
|
|
131
135
|
deleteServerSyncedCredential,
|
|
132
136
|
runLlm,
|
|
133
137
|
streamAgentChatTurn,
|
|
134
138
|
updateAgent
|
|
135
|
-
} from "./chunk-
|
|
139
|
+
} from "./chunk-HQP7HJDL.js";
|
|
136
140
|
import {
|
|
137
141
|
getActiveDialogKey,
|
|
138
142
|
selectCurrentDialogKey,
|
|
@@ -147,10 +151,10 @@ import {
|
|
|
147
151
|
buildCodingSkillContentBySlug,
|
|
148
152
|
buildCodingSkillId,
|
|
149
153
|
buildCodingSkillPageKey
|
|
150
|
-
} from "./chunk-
|
|
154
|
+
} from "./chunk-DZZL7UBV.js";
|
|
151
155
|
import {
|
|
152
156
|
CAPABILITY_PACKS
|
|
153
|
-
} from "./chunk-
|
|
157
|
+
} from "./chunk-ZRSJ3JEH.js";
|
|
154
158
|
import {
|
|
155
159
|
buildSkillDocMarkdown,
|
|
156
160
|
normalizeSkillModalities,
|
|
@@ -173,22 +177,22 @@ import {
|
|
|
173
177
|
redactAgentRecordForWorkspaceTool,
|
|
174
178
|
resolveNoloDialogInput,
|
|
175
179
|
verifyNoloDialogSubjectRefQuery
|
|
176
|
-
} from "./chunk-
|
|
180
|
+
} from "./chunk-RJ2SAFB5.js";
|
|
177
181
|
import {
|
|
178
182
|
isAgentUnavailableNow
|
|
179
|
-
} from "./chunk-
|
|
183
|
+
} from "./chunk-CJCJF5XB.js";
|
|
180
184
|
import {
|
|
181
185
|
buildDatabaseFileContentUrl
|
|
182
|
-
} from "./chunk-
|
|
186
|
+
} from "./chunk-Z4QSJILV.js";
|
|
183
187
|
import {
|
|
184
188
|
DEFAULT_MODEL
|
|
185
|
-
} from "./chunk-
|
|
189
|
+
} from "./chunk-MMZ6ZTVO.js";
|
|
186
190
|
import {
|
|
187
191
|
compactWhitespace
|
|
188
192
|
} from "./chunk-DWLEOOGR.js";
|
|
189
193
|
import {
|
|
190
194
|
createFileCredentialBroker
|
|
191
|
-
} from "./chunk-
|
|
195
|
+
} from "./chunk-3JQ2NRYU.js";
|
|
192
196
|
import {
|
|
193
197
|
toErrorMessage
|
|
194
198
|
} from "./chunk-HNMXYYJR.js";
|
|
@@ -198,7 +202,7 @@ import {
|
|
|
198
202
|
} from "./chunk-O6OSWFZQ.js";
|
|
199
203
|
import {
|
|
200
204
|
shareResourceAction
|
|
201
|
-
} from "./chunk-
|
|
205
|
+
} from "./chunk-JX5PJCWS.js";
|
|
202
206
|
import {
|
|
203
207
|
AGENT_UPDATE_FIELD_NAMES,
|
|
204
208
|
nolotusId,
|
|
@@ -206,7 +210,7 @@ import {
|
|
|
206
210
|
selectAutoApproveSelfUpdateFields,
|
|
207
211
|
selectCurrentServer,
|
|
208
212
|
selectSyncServers
|
|
209
|
-
} from "./chunk-
|
|
213
|
+
} from "./chunk-VMWYBIXG.js";
|
|
210
214
|
import {
|
|
211
215
|
asRecordOrEmpty
|
|
212
216
|
} from "./chunk-KX6YBIHG.js";
|
|
@@ -214,7 +218,7 @@ import {
|
|
|
214
218
|
UNCATEGORIZED_ID,
|
|
215
219
|
addContentAction,
|
|
216
220
|
checkSpaceMembership
|
|
217
|
-
} from "./chunk-
|
|
221
|
+
} from "./chunk-RVWRKFUB.js";
|
|
218
222
|
import {
|
|
219
223
|
createSpaceKey,
|
|
220
224
|
normalizeSpaceId
|
|
@@ -229,7 +233,7 @@ import {
|
|
|
229
233
|
selectEntities,
|
|
230
234
|
toTimestampMs,
|
|
231
235
|
write
|
|
232
|
-
} from "./chunk-
|
|
236
|
+
} from "./chunk-DNNSCSA2.js";
|
|
233
237
|
import {
|
|
234
238
|
SEPARATOR,
|
|
235
239
|
TYPE_STORAGE_PREFIXES,
|
|
@@ -260,9 +264,8 @@ import {
|
|
|
260
264
|
asTrimmedLowercaseString
|
|
261
265
|
} from "./chunk-QSJ3HFEF.js";
|
|
262
266
|
import {
|
|
263
|
-
DEFAULT_CODE_PLANNER_EXECUTOR_CANDIDATE_KEYS,
|
|
264
267
|
readAction
|
|
265
|
-
} from "./chunk-
|
|
268
|
+
} from "./chunk-L7B47JXR.js";
|
|
266
269
|
import {
|
|
267
270
|
extractCustomId
|
|
268
271
|
} from "./chunk-BJIRLHJR.js";
|
|
@@ -276,14 +279,16 @@ import {
|
|
|
276
279
|
noloWriteRequest,
|
|
277
280
|
resolveEffectiveSpaceActorId,
|
|
278
281
|
resolveRecordOwnerUserId,
|
|
279
|
-
selectIdentityToken,
|
|
280
|
-
selectIdentityUserBalance,
|
|
281
|
-
selectIdentityUserId,
|
|
282
282
|
selectRuntimeSnapshot
|
|
283
|
-
} from "./chunk-
|
|
283
|
+
} from "./chunk-KWSQR2KK.js";
|
|
284
284
|
import {
|
|
285
285
|
isAbortError
|
|
286
286
|
} from "./chunk-QOKAKDPE.js";
|
|
287
|
+
import {
|
|
288
|
+
selectIdentityToken,
|
|
289
|
+
selectIdentityUserBalance,
|
|
290
|
+
selectIdentityUserId
|
|
291
|
+
} from "./chunk-SEJ5OS6F.js";
|
|
287
292
|
import {
|
|
288
293
|
buildTombstoneRecord,
|
|
289
294
|
isTombstoneRecord
|
|
@@ -343,7 +348,7 @@ var queryModelUsageFunctionSchema = {
|
|
|
343
348
|
},
|
|
344
349
|
model: {
|
|
345
350
|
type: "string",
|
|
346
|
-
description: "\u53EF\u9009\u6A21\u578B\u8FC7\u6EE4\uFF0C\u4F8B\u5982 gemini-3.
|
|
351
|
+
description: "\u53EF\u9009\u6A21\u578B\u8FC7\u6EE4\uFF0C\u4F8B\u5982 gemini-3.8-flash\u3002"
|
|
347
352
|
},
|
|
348
353
|
serviceTier: {
|
|
349
354
|
type: "string",
|
|
@@ -620,7 +625,7 @@ var ai_locale_default = {
|
|
|
620
625
|
chat: "Start Chat",
|
|
621
626
|
public: "Public",
|
|
622
627
|
byConversation: "Create AI by Conversation",
|
|
623
|
-
manualConfiguration: "
|
|
628
|
+
manualConfiguration: "Create AI",
|
|
624
629
|
quickCreate: {
|
|
625
630
|
reasoningEffort: "Reasoning Effort",
|
|
626
631
|
reasoningEffortOptions: {
|
|
@@ -858,7 +863,7 @@ var ai_locale_default = {
|
|
|
858
863
|
description: "Create a new Agent (intelligent assistant/app) based on the given configuration and return the complete Agent information.",
|
|
859
864
|
params: {
|
|
860
865
|
name: "The name of the Agent, e.g., 'Meeting Minutes Assistant'.",
|
|
861
|
-
model: "The model name to use. Logic: Default 'nolo/
|
|
866
|
+
model: "The model name to use. Logic: Default 'nolo/deepseek-flash'. Complex tasks: 'openai/gpt-5.6-sol'. Cost-saving: 'openai/gpt-5.5'. Aesthetic/Creative: 'gemini-3.8-flash'. Reliable low-cost summary/reasoning: 'nolo/deepseek-flash'. Image Generation: 'gemini-3-pro-image-preview' (Best/Expensive), 'gemini-3.1-flash-image-preview' (Ordinary), or 'gemini-3.1-flash-lite-image' (Fastest/Cheapest).",
|
|
862
867
|
provider: "The model provider identifier, must match the selected model, e.g., 'openrouter', 'nolo', 'fireworks', 'mistral', etc.",
|
|
863
868
|
prompt: "System prompt/instruction describing the Agent's role, tone, and usage.",
|
|
864
869
|
introduction: "Introduction displayed in the app market or list, explanatory text for end users.",
|
|
@@ -1010,7 +1015,7 @@ var ai_locale_default = {
|
|
|
1010
1015
|
chat: "\u5F00\u59CB\u804A\u5929",
|
|
1011
1016
|
public: "\u516C\u5F00",
|
|
1012
1017
|
byConversation: "\u7528\u5BF9\u8BDD\u521B\u5EFA AI",
|
|
1013
|
-
manualConfiguration: "\
|
|
1018
|
+
manualConfiguration: "\u521B\u5EFAAI",
|
|
1014
1019
|
quickCreate: {
|
|
1015
1020
|
reasoningEffort: "\u63A8\u7406\u5F3A\u5EA6",
|
|
1016
1021
|
reasoningEffortOptions: {
|
|
@@ -1249,7 +1254,7 @@ var ai_locale_default = {
|
|
|
1249
1254
|
description: "\u6839\u636E\u7ED9\u5B9A\u914D\u7F6E\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684 Agent\uFF08\u667A\u80FD\u4F53 / \u5E94\u7528\uFF09\uFF0C\u5E76\u8FD4\u56DE\u5B8C\u6574\u7684 Agent \u4FE1\u606F\u3002",
|
|
1250
1255
|
params: {
|
|
1251
1256
|
name: "Agent \u7684\u540D\u79F0\uFF0C\u4F8B\u5982\uFF1A'\u4F1A\u8BAE\u7EAA\u8981\u52A9\u624B'\u3002",
|
|
1252
|
-
model: "\u9ED8\u8BA4\u4F7F\u7528 'nolo/
|
|
1257
|
+
model: "\u9ED8\u8BA4\u4F7F\u7528 'nolo/deepseek-flash'\u3002\u590D\u6742\u4EFB\u52A1: 'openai/gpt-5.6-sol'\u3002\u7701\u6210\u672C\u4F46\u590D\u6742: 'openai/gpt-5.5'\u3002\u8FFD\u6C42\u7F8E\u89C2/\u521B\u610F: 'gemini-3.8-flash'\u3002\u4F4E\u6210\u672C\u6458\u8981/\u63A8\u7406: 'nolo/deepseek-flash'\u3002\u751F\u6210\u56FE\u7247: \u8D35/\u9AD8\u8D28\u91CF\u9009 'gemini-3-pro-image-preview'\uFF0C\u666E\u901A\u9009 'gemini-3.1-flash-image-preview'\uFF0C\u6700\u5FEB\u6700\u4FBF\u5B9C\u9009 'gemini-3.1-flash-lite-image'\u3002",
|
|
1253
1258
|
provider: "\u6A21\u578B\u63D0\u4F9B\u65B9\u6807\u8BC6\uFF0C\u5FC5\u987B\u4E0E\u6240\u9009\u6A21\u578B\u76F8\u5339\u914D\uFF0C\u4F8B\u5982 'openrouter'\u3001'nolo'\u3001'fireworks'\u3001'mistral' \u7B49\u3002",
|
|
1254
1259
|
prompt: "\u7CFB\u7EDF\u63D0\u793A\u8BCD / \u6307\u4EE4\uFF0C\u63CF\u8FF0\u8FD9\u4E2A Agent \u7684\u89D2\u8272\u3001\u8BED\u6C14\u548C\u4F7F\u7528\u65B9\u5F0F\u3002",
|
|
1255
1260
|
introduction: "\u5728\u5E94\u7528\u5E02\u573A\u6216\u5217\u8868\u4E2D\u5C55\u793A\u7684\u7B80\u4ECB\uFF0C\u9762\u5411\u7EC8\u7AEF\u7528\u6237\u7684\u8BF4\u660E\u6587\u6848\u3002",
|
|
@@ -1401,7 +1406,7 @@ var ai_locale_default = {
|
|
|
1401
1406
|
chat: "\u958B\u59CB\u804A\u5929",
|
|
1402
1407
|
public: "\u516C\u958B",
|
|
1403
1408
|
byConversation: "\u7528\u5C0D\u8A71\u5EFA\u7ACB AI",
|
|
1404
|
-
manualConfiguration: "\
|
|
1409
|
+
manualConfiguration: "\u5EFA\u7ACBAI",
|
|
1405
1410
|
quickCreate: {
|
|
1406
1411
|
reasoningEffort: "\u63A8\u7406\u5F37\u5EA6",
|
|
1407
1412
|
reasoningEffortOptions: {
|
|
@@ -1714,7 +1719,7 @@ var ai_locale_default = {
|
|
|
1714
1719
|
chat: "\u30C1\u30E3\u30C3\u30C8\u3092\u958B\u59CB",
|
|
1715
1720
|
public: "\u516C\u958B",
|
|
1716
1721
|
byConversation: "\u4F1A\u8A71\u3067 AI \u3092\u4F5C\u6210",
|
|
1717
|
-
manualConfiguration: "
|
|
1722
|
+
manualConfiguration: "AI\u3092\u4F5C\u6210",
|
|
1718
1723
|
quickCreate: {
|
|
1719
1724
|
reasoningEffort: "\u63A8\u8AD6\u5F37\u5EA6",
|
|
1720
1725
|
reasoningEffortOptions: {
|
|
@@ -1975,6 +1980,14 @@ var chat_locale_default = {
|
|
|
1975
1980
|
copyDiagnostics: "Copy diagnostics",
|
|
1976
1981
|
finishReasonLengthNotice: "Response was cut off at the model's output limit",
|
|
1977
1982
|
retryProgress: "Auto-retrying {{attempt}}/{{maxAttempts}} \xB7 {{seconds}}s",
|
|
1983
|
+
sendErrorCard: {
|
|
1984
|
+
title: "Send Failed",
|
|
1985
|
+
retry: "Retry",
|
|
1986
|
+
viewDetails: "Technical details",
|
|
1987
|
+
hideDetails: "Hide details",
|
|
1988
|
+
suggestion: "Suggestion",
|
|
1989
|
+
verifyAccount: "Verify account"
|
|
1990
|
+
},
|
|
1978
1991
|
copyFailed: "Copy failed",
|
|
1979
1992
|
copySuccess: "Copied successfully",
|
|
1980
1993
|
createDialog: "Create Dialog",
|
|
@@ -2056,6 +2069,7 @@ var chat_locale_default = {
|
|
|
2056
2069
|
chooseAnotherModelDialogTitle: "Choose another model",
|
|
2057
2070
|
useThisModelContinue: "Continue with this model",
|
|
2058
2071
|
switchModelContinueSuccess: "Switched model and continued this conversation",
|
|
2072
|
+
contextReprocessingNotice: "The system may need to reread part of this conversation after switching models or editing an earlier message.",
|
|
2059
2073
|
switchModelContinueFailed: "Failed to switch model. Please try again.",
|
|
2060
2074
|
noAlternativeModels: "No other available models",
|
|
2061
2075
|
noAvailableAgentMessage: "No available Agent message",
|
|
@@ -2080,7 +2094,7 @@ var chat_locale_default = {
|
|
|
2080
2094
|
editMessage: "Edit message",
|
|
2081
2095
|
editSeeded: "Editing message",
|
|
2082
2096
|
editEmptyContent: "No editable text in this message",
|
|
2083
|
-
editingMessageNotice: "Editing a previous message. Sending will discard all later messages.",
|
|
2097
|
+
editingMessageNotice: "Editing a previous message. Sending will discard all later messages. The system may need to reread part of this conversation.",
|
|
2084
2098
|
cancelEditingMessage: "Cancel editing message",
|
|
2085
2099
|
branchMessage: "Branch",
|
|
2086
2100
|
branchCreated: "Branch chat created",
|
|
@@ -2088,6 +2102,7 @@ var chat_locale_default = {
|
|
|
2088
2102
|
stopBeforeDelete: "Stop generation before deleting",
|
|
2089
2103
|
messageQueued: "Message queued; will be sent after the current turn",
|
|
2090
2104
|
cannotSendFileDuringLoop: "Agent is running. Please wait before sending attachments.",
|
|
2105
|
+
assistantReplyStarting: "Working\u2026",
|
|
2091
2106
|
queueBadgeLabel: "Queued messages",
|
|
2092
2107
|
queueBadgeQueued: "queued",
|
|
2093
2108
|
queueBadgeTitle: "Queued messages",
|
|
@@ -2194,6 +2209,36 @@ var chat_locale_default = {
|
|
|
2194
2209
|
loadSkill: "Load skill",
|
|
2195
2210
|
startAgentRun: "Start agent run"
|
|
2196
2211
|
},
|
|
2212
|
+
toolVerbs: {
|
|
2213
|
+
readFile: "Read",
|
|
2214
|
+
readWorkspaceFile: "Read",
|
|
2215
|
+
writeFile: "Write",
|
|
2216
|
+
writeWorkspaceFile: "Write",
|
|
2217
|
+
editFile: "Edit",
|
|
2218
|
+
replaceWorkspaceText: "Edit",
|
|
2219
|
+
applyDiff: "Edit",
|
|
2220
|
+
globFiles: "Find files",
|
|
2221
|
+
searchWorkspace: "Find files",
|
|
2222
|
+
codeSearch: "Search",
|
|
2223
|
+
exa_search: "Web search",
|
|
2224
|
+
firecrawl_search: "Web search",
|
|
2225
|
+
fetchWebpage: "Fetch page",
|
|
2226
|
+
firecrawl_scrape: "Fetch page",
|
|
2227
|
+
execShell: "Run",
|
|
2228
|
+
loadSkill: "Load skill",
|
|
2229
|
+
listAgents: "List agents",
|
|
2230
|
+
readAgent: "Read agent",
|
|
2231
|
+
startAgentRun: "Start subtask",
|
|
2232
|
+
startPreview: "Start preview",
|
|
2233
|
+
getPreviewStatus: "Preview status",
|
|
2234
|
+
stopPreview: "Stop preview",
|
|
2235
|
+
releasePreview: "Release preview",
|
|
2236
|
+
captureVisualState: "Screenshot",
|
|
2237
|
+
appDeploy: "Deploy app",
|
|
2238
|
+
setTodoList: "Update plan",
|
|
2239
|
+
ask_user: "Ask",
|
|
2240
|
+
runStreamingAgent: "Handoff"
|
|
2241
|
+
},
|
|
2197
2242
|
gemini: {
|
|
2198
2243
|
title: "Image Generation",
|
|
2199
2244
|
count: "{{count}} images generated"
|
|
@@ -2349,6 +2394,14 @@ var chat_locale_default = {
|
|
|
2349
2394
|
copyDiagnostics: "\u590D\u5236\u8BCA\u65AD\u4FE1\u606F",
|
|
2350
2395
|
finishReasonLengthNotice: "\u56DE\u7B54\u56E0\u8FBE\u5230\u6A21\u578B\u8F93\u51FA\u4E0A\u9650\u88AB\u622A\u65AD",
|
|
2351
2396
|
retryProgress: "\u81EA\u52A8\u91CD\u8BD5 {{attempt}}/{{maxAttempts}} \xB7 {{seconds}}s",
|
|
2397
|
+
sendErrorCard: {
|
|
2398
|
+
title: "\u53D1\u9001\u5931\u8D25",
|
|
2399
|
+
retry: "\u91CD\u8BD5",
|
|
2400
|
+
viewDetails: "\u67E5\u770B\u8BE6\u60C5",
|
|
2401
|
+
hideDetails: "\u6536\u8D77\u8BE6\u60C5",
|
|
2402
|
+
suggestion: "\u5EFA\u8BAE",
|
|
2403
|
+
verifyAccount: "\u9A8C\u8BC1\u8D26\u53F7"
|
|
2404
|
+
},
|
|
2352
2405
|
copyFailed: "\u590D\u5236\u5931\u8D25",
|
|
2353
2406
|
copySuccess: "\u590D\u5236\u6210\u529F",
|
|
2354
2407
|
createDialog: "\u521B\u5EFA\u5BF9\u8BDD",
|
|
@@ -2430,6 +2483,7 @@ var chat_locale_default = {
|
|
|
2430
2483
|
chooseAnotherModelDialogTitle: "\u9009\u62E9\u5176\u4ED6\u6A21\u578B",
|
|
2431
2484
|
useThisModelContinue: "\u7528\u8FD9\u4E2A\u6A21\u578B\u7EE7\u7EED",
|
|
2432
2485
|
switchModelContinueSuccess: "\u5DF2\u5207\u6362\u6A21\u578B\uFF0C\u5E76\u7EE7\u7EED\u5F53\u524D\u5BF9\u8BDD",
|
|
2486
|
+
contextReprocessingNotice: "\u5207\u6362\u6A21\u578B\u6216\u7F16\u8F91\u5386\u53F2\u6D88\u606F\u540E\uFF0C\u7CFB\u7EDF\u53EF\u80FD\u9700\u8981\u91CD\u65B0\u8BFB\u53D6\u90E8\u5206\u5BF9\u8BDD\u5185\u5BB9\u3002",
|
|
2433
2487
|
switchModelContinueFailed: "\u5207\u6362\u6A21\u578B\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5",
|
|
2434
2488
|
noAlternativeModels: "\u6CA1\u6709\u5176\u4ED6\u53EF\u7528\u6A21\u578B",
|
|
2435
2489
|
noAvailableAgentMessage: "\u6CA1\u6709\u53EF\u7528\u7684\u667A\u80FD\u4F53\u6D88\u606F",
|
|
@@ -2454,7 +2508,7 @@ var chat_locale_default = {
|
|
|
2454
2508
|
editMessage: "\u7F16\u8F91\u6D88\u606F",
|
|
2455
2509
|
editSeeded: "\u5DF2\u8FDB\u5165\u7F16\u8F91\u6A21\u5F0F",
|
|
2456
2510
|
editEmptyContent: "\u6D88\u606F\u6CA1\u6709\u53EF\u7F16\u8F91\u7684\u6587\u672C",
|
|
2457
|
-
editingMessageNotice: "\u6B63\u5728\u7F16\u8F91\u5386\u53F2\u6D88\u606F\uFF0C\u53D1\u9001\u540E\u5C06\u4E22\u5F03\u5176\u540E\u7684\u6D88\u606F",
|
|
2511
|
+
editingMessageNotice: "\u6B63\u5728\u7F16\u8F91\u5386\u53F2\u6D88\u606F\uFF0C\u53D1\u9001\u540E\u5C06\u4E22\u5F03\u5176\u540E\u7684\u6D88\u606F\u3002\u7CFB\u7EDF\u53EF\u80FD\u9700\u8981\u91CD\u65B0\u8BFB\u53D6\u90E8\u5206\u5BF9\u8BDD\u5185\u5BB9\u3002",
|
|
2458
2512
|
cancelEditingMessage: "\u53D6\u6D88\u7F16\u8F91\u6D88\u606F",
|
|
2459
2513
|
branchMessage: "\u5206\u652F",
|
|
2460
2514
|
branchCreated: "\u5DF2\u521B\u5EFA\u5206\u652F\u5BF9\u8BDD",
|
|
@@ -2462,6 +2516,7 @@ var chat_locale_default = {
|
|
|
2462
2516
|
stopBeforeDelete: "\u8BF7\u7B49\u5F85\u751F\u6210\u505C\u6B62\u540E\u518D\u5220\u9664",
|
|
2463
2517
|
messageQueued: "\u6D88\u606F\u5DF2\u6392\u961F\uFF0C\u5C06\u5728\u5F53\u524D\u8F6E\u6B21\u7ED3\u675F\u540E\u53D1\u9001",
|
|
2464
2518
|
cannotSendFileDuringLoop: "Agent \u8FD0\u884C\u4E2D\uFF0C\u542B\u9644\u4EF6\u6D88\u606F\u8BF7\u7B49\u5F85\u5B8C\u6210\u540E\u518D\u53D1\u9001",
|
|
2519
|
+
assistantReplyStarting: "\u6B63\u5728\u5904\u7406\u2026",
|
|
2465
2520
|
queueBadgeLabel: "\u6392\u961F\u6D88\u606F",
|
|
2466
2521
|
queueBadgeQueued: "\u6392\u961F\u4E2D",
|
|
2467
2522
|
queueBadgeTitle: "\u6392\u961F\u6D88\u606F",
|
|
@@ -2563,6 +2618,36 @@ var chat_locale_default = {
|
|
|
2563
2618
|
loadSkill: "\u52A0\u8F7D\u6280\u80FD",
|
|
2564
2619
|
startAgentRun: "\u542F\u52A8\u5B50\u4EFB\u52A1"
|
|
2565
2620
|
},
|
|
2621
|
+
toolVerbs: {
|
|
2622
|
+
readFile: "\u8BFB\u53D6",
|
|
2623
|
+
readWorkspaceFile: "\u8BFB\u53D6",
|
|
2624
|
+
writeFile: "\u5199\u5165",
|
|
2625
|
+
writeWorkspaceFile: "\u5199\u5165",
|
|
2626
|
+
editFile: "\u4FEE\u6539",
|
|
2627
|
+
replaceWorkspaceText: "\u4FEE\u6539",
|
|
2628
|
+
applyDiff: "\u4FEE\u6539",
|
|
2629
|
+
globFiles: "\u67E5\u627E\u6587\u4EF6",
|
|
2630
|
+
searchWorkspace: "\u67E5\u627E\u6587\u4EF6",
|
|
2631
|
+
codeSearch: "\u641C\u7D22",
|
|
2632
|
+
exa_search: "\u7F51\u9875\u641C\u7D22",
|
|
2633
|
+
firecrawl_search: "\u7F51\u9875\u641C\u7D22",
|
|
2634
|
+
fetchWebpage: "\u7F51\u9875\u6293\u53D6",
|
|
2635
|
+
firecrawl_scrape: "\u7F51\u9875\u6293\u53D6",
|
|
2636
|
+
execShell: "\u547D\u4EE4",
|
|
2637
|
+
loadSkill: "\u52A0\u8F7D\u6280\u80FD",
|
|
2638
|
+
listAgents: "\u5217\u51FA\u52A9\u624B",
|
|
2639
|
+
readAgent: "\u8BFB\u53D6\u52A9\u624B",
|
|
2640
|
+
startAgentRun: "\u542F\u52A8\u5B50\u4EFB\u52A1",
|
|
2641
|
+
startPreview: "\u542F\u52A8\u9884\u89C8",
|
|
2642
|
+
getPreviewStatus: "\u9884\u89C8\u72B6\u6001",
|
|
2643
|
+
stopPreview: "\u505C\u6B62\u9884\u89C8",
|
|
2644
|
+
releasePreview: "\u91CA\u653E\u9884\u89C8",
|
|
2645
|
+
captureVisualState: "\u622A\u56FE\u68C0\u67E5",
|
|
2646
|
+
appDeploy: "\u90E8\u7F72\u5E94\u7528",
|
|
2647
|
+
setTodoList: "\u66F4\u65B0\u8BA1\u5212",
|
|
2648
|
+
ask_user: "\u63D0\u95EE",
|
|
2649
|
+
runStreamingAgent: "\u8F6C\u4EA4"
|
|
2650
|
+
},
|
|
2566
2651
|
gemini: {
|
|
2567
2652
|
title: "\u56FE\u50CF\u751F\u6210",
|
|
2568
2653
|
count: "\u751F\u6210\u4E86 {{count}} \u5F20\u56FE\u7247"
|
|
@@ -2718,6 +2803,14 @@ var chat_locale_default = {
|
|
|
2718
2803
|
copyDiagnostics: "\u8907\u88FD\u8A3A\u65B7\u8CC7\u8A0A",
|
|
2719
2804
|
finishReasonLengthNotice: "\u56DE\u7B54\u56E0\u9054\u5230\u6A21\u578B\u8F38\u51FA\u4E0A\u9650\u88AB\u622A\u65B7",
|
|
2720
2805
|
retryProgress: "\u81EA\u52D5\u91CD\u8A66 {{attempt}}/{{maxAttempts}} \xB7 {{seconds}}s",
|
|
2806
|
+
sendErrorCard: {
|
|
2807
|
+
title: "\u767C\u9001\u5931\u6557",
|
|
2808
|
+
retry: "\u91CD\u8A66",
|
|
2809
|
+
viewDetails: "\u67E5\u770B\u8A73\u60C5",
|
|
2810
|
+
hideDetails: "\u6536\u8D77\u8A73\u60C5",
|
|
2811
|
+
suggestion: "\u5EFA\u8B70",
|
|
2812
|
+
verifyAccount: "\u9A57\u8B49\u5E33\u865F"
|
|
2813
|
+
},
|
|
2721
2814
|
copyFailed: "\u8907\u88FD\u5931\u6557",
|
|
2722
2815
|
copySuccess: "\u8907\u88FD\u6210\u529F",
|
|
2723
2816
|
createDialog: "\u5275\u5EFA\u5C0D\u8A71",
|
|
@@ -2799,6 +2892,8 @@ var chat_locale_default = {
|
|
|
2799
2892
|
chooseAnotherModelDialogTitle: "\u9078\u64C7\u5176\u4ED6\u6A21\u578B",
|
|
2800
2893
|
useThisModelContinue: "\u7528\u9019\u500B\u6A21\u578B\u7E7C\u7E8C",
|
|
2801
2894
|
switchModelContinueSuccess: "\u5DF2\u5207\u63DB\u6A21\u578B\uFF0C\u4E26\u7E7C\u7E8C\u7576\u524D\u5C0D\u8A71",
|
|
2895
|
+
contextReprocessingNotice: "\u5207\u63DB\u6A21\u578B\u6216\u7DE8\u8F2F\u6B77\u53F2\u8A0A\u606F\u5F8C\uFF0C\u7CFB\u7D71\u53EF\u80FD\u9700\u8981\u91CD\u65B0\u8B80\u53D6\u90E8\u5206\u5C0D\u8A71\u5167\u5BB9\u3002",
|
|
2896
|
+
editingMessageNotice: "\u6B63\u5728\u7DE8\u8F2F\u6B77\u53F2\u8A0A\u606F\uFF0C\u767C\u9001\u5F8C\u5C07\u4E1F\u68C4\u5176\u5F8C\u7684\u8A0A\u606F\u3002\u7CFB\u7D71\u53EF\u80FD\u9700\u8981\u91CD\u65B0\u8B80\u53D6\u90E8\u5206\u5C0D\u8A71\u5167\u5BB9\u3002",
|
|
2802
2897
|
switchModelContinueFailed: "\u5207\u63DB\u6A21\u578B\u5931\u6557\uFF0C\u8ACB\u91CD\u8A66",
|
|
2803
2898
|
noAlternativeModels: "\u6C92\u6709\u5176\u4ED6\u53EF\u7528\u6A21\u578B",
|
|
2804
2899
|
noAvailableAgentMessage: "\u6C92\u6709\u53EF\u7528\u7684\u667A\u80FD\u9AD4\u6D88\u606F",
|
|
@@ -2823,6 +2918,7 @@ var chat_locale_default = {
|
|
|
2823
2918
|
stopBeforeDelete: "\u8ACB\u7B49\u5F85\u751F\u6210\u505C\u6B62\u5F8C\u518D\u522A\u9664",
|
|
2824
2919
|
messageQueued: "\u8A0A\u606F\u5DF2\u6392\u968A\uFF0C\u5C07\u5728\u7576\u524D\u8F2A\u6B21\u7D50\u675F\u5F8C\u767C\u9001",
|
|
2825
2920
|
cannotSendFileDuringLoop: "Agent \u904B\u884C\u4E2D\uFF0C\u542B\u9644\u4EF6\u8A0A\u606F\u8ACB\u7B49\u5F85\u5B8C\u6210\u5F8C\u518D\u767C\u9001",
|
|
2921
|
+
assistantReplyStarting: "\u6B63\u5728\u8655\u7406\u2026",
|
|
2826
2922
|
queueBadgeLabel: "\u6392\u968A\u8A0A\u606F",
|
|
2827
2923
|
queueBadgeQueued: "\u6392\u968A\u4E2D",
|
|
2828
2924
|
queueBadgeTitle: "\u6392\u968A\u8A0A\u606F",
|
|
@@ -2922,6 +3018,36 @@ var chat_locale_default = {
|
|
|
2922
3018
|
loadSkill: "\u8F09\u5165\u6280\u80FD",
|
|
2923
3019
|
startAgentRun: "\u555F\u52D5\u5B50\u4EFB\u52D9"
|
|
2924
3020
|
},
|
|
3021
|
+
toolVerbs: {
|
|
3022
|
+
readFile: "\u8B80\u53D6",
|
|
3023
|
+
readWorkspaceFile: "\u8B80\u53D6",
|
|
3024
|
+
writeFile: "\u5BEB\u5165",
|
|
3025
|
+
writeWorkspaceFile: "\u5BEB\u5165",
|
|
3026
|
+
editFile: "\u4FEE\u6539",
|
|
3027
|
+
replaceWorkspaceText: "\u4FEE\u6539",
|
|
3028
|
+
applyDiff: "\u4FEE\u6539",
|
|
3029
|
+
globFiles: "\u67E5\u627E\u6A94\u6848",
|
|
3030
|
+
searchWorkspace: "\u67E5\u627E\u6A94\u6848",
|
|
3031
|
+
codeSearch: "\u641C\u5C0B",
|
|
3032
|
+
exa_search: "\u7DB2\u9801\u641C\u5C0B",
|
|
3033
|
+
firecrawl_search: "\u7DB2\u9801\u641C\u5C0B",
|
|
3034
|
+
fetchWebpage: "\u7DB2\u9801\u64F7\u53D6",
|
|
3035
|
+
firecrawl_scrape: "\u7DB2\u9801\u64F7\u53D6",
|
|
3036
|
+
execShell: "\u547D\u4EE4",
|
|
3037
|
+
loadSkill: "\u8F09\u5165\u6280\u80FD",
|
|
3038
|
+
listAgents: "\u5217\u51FA\u52A9\u624B",
|
|
3039
|
+
readAgent: "\u8B80\u53D6\u52A9\u624B",
|
|
3040
|
+
startAgentRun: "\u555F\u52D5\u5B50\u4EFB\u52D9",
|
|
3041
|
+
startPreview: "\u555F\u52D5\u9810\u89BD",
|
|
3042
|
+
getPreviewStatus: "\u9810\u89BD\u72C0\u614B",
|
|
3043
|
+
stopPreview: "\u505C\u6B62\u9810\u89BD",
|
|
3044
|
+
releasePreview: "\u91CB\u653E\u9810\u89BD",
|
|
3045
|
+
captureVisualState: "\u622A\u5716\u6AA2\u67E5",
|
|
3046
|
+
appDeploy: "\u90E8\u7F72\u61C9\u7528",
|
|
3047
|
+
setTodoList: "\u66F4\u65B0\u8A08\u756B",
|
|
3048
|
+
ask_user: "\u63D0\u554F",
|
|
3049
|
+
runStreamingAgent: "\u8F49\u4EA4"
|
|
3050
|
+
},
|
|
2925
3051
|
gemini: {
|
|
2926
3052
|
title: "\u5716\u50CF\u751F\u6210",
|
|
2927
3053
|
count: "\u751F\u6210\u4E86 {{count}} \u5F35\u5716\u7247"
|
|
@@ -3015,6 +3141,14 @@ var chat_locale_default = {
|
|
|
3015
3141
|
copyDiagnostics: "\u8A3A\u65AD\u60C5\u5831\u3092\u30B3\u30D4\u30FC",
|
|
3016
3142
|
finishReasonLengthNotice: "\u30E2\u30C7\u30EB\u306E\u51FA\u529B\u4E0A\u9650\u306B\u9054\u3057\u305F\u305F\u3081\u3001\u56DE\u7B54\u304C\u9014\u4E2D\u3067\u7D42\u4E86\u3057\u307E\u3057\u305F",
|
|
3017
3143
|
retryProgress: "\u81EA\u52D5\u30EA\u30C8\u30E9\u30A4 {{attempt}}/{{maxAttempts}} \xB7 {{seconds}}s",
|
|
3144
|
+
sendErrorCard: {
|
|
3145
|
+
title: "\u9001\u4FE1\u5931\u6557",
|
|
3146
|
+
retry: "\u518D\u8A66\u884C",
|
|
3147
|
+
viewDetails: "\u8A73\u7D30\u3092\u8868\u793A",
|
|
3148
|
+
hideDetails: "\u8A73\u7D30\u3092\u6298\u308A\u305F\u305F\u3080",
|
|
3149
|
+
suggestion: "\u63D0\u6848",
|
|
3150
|
+
verifyAccount: "\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u78BA\u8A8D"
|
|
3151
|
+
},
|
|
3018
3152
|
copyFailed: "\u30B3\u30D4\u30FC\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
3019
3153
|
copySuccess: "\u30B3\u30D4\u30FC\u306B\u6210\u529F\u3057\u307E\u3057\u305F",
|
|
3020
3154
|
createDialog: "\u5BFE\u8A71\u3092\u4F5C\u6210",
|
|
@@ -3096,6 +3230,8 @@ var chat_locale_default = {
|
|
|
3096
3230
|
chooseAnotherModelDialogTitle: "\u5225\u306E\u30E2\u30C7\u30EB\u3092\u9078\u629E",
|
|
3097
3231
|
useThisModelContinue: "\u3053\u306E\u30E2\u30C7\u30EB\u3067\u7D9A\u3051\u308B",
|
|
3098
3232
|
switchModelContinueSuccess: "\u30E2\u30C7\u30EB\u3092\u5207\u308A\u66FF\u3048\u3066\u73FE\u5728\u306E\u4F1A\u8A71\u3092\u7D9A\u3051\u307E\u3057\u305F",
|
|
3233
|
+
contextReprocessingNotice: "\u30E2\u30C7\u30EB\u306E\u5207\u308A\u66FF\u3048\u3084\u904E\u53BB\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u7DE8\u96C6\u5F8C\u306F\u3001\u4F1A\u8A71\u306E\u4E00\u90E8\u3092\u518D\u8AAD\u307F\u8FBC\u307F\u3059\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002",
|
|
3234
|
+
editingMessageNotice: "\u904E\u53BB\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u7DE8\u96C6\u4E2D\u3067\u3059\u3002\u9001\u4FE1\u3059\u308B\u3068\u3001\u305D\u308C\u4EE5\u964D\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u7834\u68C4\u3055\u308C\u307E\u3059\u3002\u4F1A\u8A71\u306E\u4E00\u90E8\u3092\u518D\u8AAD\u307F\u8FBC\u307F\u3059\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002",
|
|
3099
3235
|
switchModelContinueFailed: "\u30E2\u30C7\u30EB\u306E\u5207\u308A\u66FF\u3048\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u518D\u8A66\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
3100
3236
|
noAlternativeModels: "\u5229\u7528\u53EF\u80FD\u306A\u4ED6\u306E\u30E2\u30C7\u30EB\u304C\u3042\u308A\u307E\u305B\u3093",
|
|
3101
3237
|
noAvailableAgentMessage: "\u5229\u7528\u53EF\u80FD\u306A\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u3042\u308A\u307E\u305B\u3093",
|
|
@@ -3120,6 +3256,7 @@ var chat_locale_default = {
|
|
|
3120
3256
|
stopBeforeDelete: "\u751F\u6210\u304C\u505C\u6B62\u3059\u308B\u307E\u3067\u304A\u5F85\u3061\u304F\u3060\u3055\u3044",
|
|
3121
3257
|
messageQueued: "\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u30AD\u30E5\u30FC\u306B\u5165\u308C\u307E\u3057\u305F\u3002\u73FE\u5728\u306E\u30BF\u30FC\u30F3\u5F8C\u306B\u9001\u4FE1\u3055\u308C\u307E\u3059",
|
|
3122
3258
|
cannotSendFileDuringLoop: "Agent \u5B9F\u884C\u4E2D\u3067\u3059\u3002\u6DFB\u4ED8\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u5B8C\u4E86\u5F8C\u306B\u304A\u9001\u308A\u304F\u3060\u3055\u3044",
|
|
3259
|
+
assistantReplyStarting: "\u51E6\u7406\u4E2D\u2026",
|
|
3123
3260
|
queueBadgeLabel: "\u30AD\u30E5\u30FC\u4E2D\u30E1\u30C3\u30BB\u30FC\u30B8",
|
|
3124
3261
|
queueBadgeQueued: "\u30AD\u30E5\u30FC\u4E2D",
|
|
3125
3262
|
queueBadgeTitle: "\u30AD\u30E5\u30FC\u4E2D\u30E1\u30C3\u30BB\u30FC\u30B8",
|
|
@@ -3225,6 +3362,36 @@ var chat_locale_default = {
|
|
|
3225
3362
|
loadSkill: "\u30B9\u30AD\u30EB\u3092\u8AAD\u307F\u8FBC\u307F",
|
|
3226
3363
|
startAgentRun: "\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u5B9F\u884C"
|
|
3227
3364
|
},
|
|
3365
|
+
toolVerbs: {
|
|
3366
|
+
readFile: "\u8AAD\u307F\u53D6\u308A",
|
|
3367
|
+
readWorkspaceFile: "\u8AAD\u307F\u53D6\u308A",
|
|
3368
|
+
writeFile: "\u66F8\u304D\u8FBC\u307F",
|
|
3369
|
+
writeWorkspaceFile: "\u66F8\u304D\u8FBC\u307F",
|
|
3370
|
+
editFile: "\u7DE8\u96C6",
|
|
3371
|
+
replaceWorkspaceText: "\u7DE8\u96C6",
|
|
3372
|
+
applyDiff: "\u7DE8\u96C6",
|
|
3373
|
+
globFiles: "\u30D5\u30A1\u30A4\u30EB\u691C\u7D22",
|
|
3374
|
+
searchWorkspace: "\u30D5\u30A1\u30A4\u30EB\u691C\u7D22",
|
|
3375
|
+
codeSearch: "\u691C\u7D22",
|
|
3376
|
+
exa_search: "Web\u691C\u7D22",
|
|
3377
|
+
firecrawl_search: "Web\u691C\u7D22",
|
|
3378
|
+
fetchWebpage: "\u30DA\u30FC\u30B8\u53D6\u5F97",
|
|
3379
|
+
firecrawl_scrape: "\u30DA\u30FC\u30B8\u53D6\u5F97",
|
|
3380
|
+
execShell: "\u5B9F\u884C",
|
|
3381
|
+
loadSkill: "\u30B9\u30AD\u30EB\u8AAD\u307F\u8FBC\u307F",
|
|
3382
|
+
listAgents: "\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u4E00\u89A7",
|
|
3383
|
+
readAgent: "\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u8AAD\u307F\u53D6\u308A",
|
|
3384
|
+
startAgentRun: "\u5B50\u30BF\u30B9\u30AF\u8D77\u52D5",
|
|
3385
|
+
startPreview: "\u30D7\u30EC\u30D3\u30E5\u30FC\u8D77\u52D5",
|
|
3386
|
+
getPreviewStatus: "\u30D7\u30EC\u30D3\u30E5\u30FC\u72B6\u614B",
|
|
3387
|
+
stopPreview: "\u30D7\u30EC\u30D3\u30E5\u30FC\u505C\u6B62",
|
|
3388
|
+
releasePreview: "\u30D7\u30EC\u30D3\u30E5\u30FC\u89E3\u653E",
|
|
3389
|
+
captureVisualState: "\u30B9\u30AF\u30EA\u30FC\u30F3\u30B7\u30E7\u30C3\u30C8",
|
|
3390
|
+
appDeploy: "\u30A2\u30D7\u30EA\u30C7\u30D7\u30ED\u30A4",
|
|
3391
|
+
setTodoList: "\u8A08\u753B\u3092\u66F4\u65B0",
|
|
3392
|
+
ask_user: "\u8CEA\u554F",
|
|
3393
|
+
runStreamingAgent: "\u5F15\u304D\u7D99\u304E"
|
|
3394
|
+
},
|
|
3228
3395
|
gemini: {
|
|
3229
3396
|
title: "\u753B\u50CF\u751F\u6210",
|
|
3230
3397
|
count: "{{count}} \u679A\u306E\u753B\u50CF\u3092\u751F\u6210\u3057\u307E\u3057\u305F"
|
|
@@ -9881,7 +10048,6 @@ var appBuilder_locale_default = {
|
|
|
9881
10048
|
appEditor_chatMode_heading: "Continue editing with natural language",
|
|
9882
10049
|
appEditor_chatMode_description: "Tell AI what to change. Best for copy, typography, color, layout, and iterative feature updates.",
|
|
9883
10050
|
appEditor_chatMode_hint: "If you only want to tweak copy, spacing, colors, or a specific feature, start here.",
|
|
9884
|
-
appEditor_chatMode_openAssistant: "Open Assistant",
|
|
9885
10051
|
appEditor_switchToCode: "Switch to Code Editing",
|
|
9886
10052
|
appEditor_backToChat: "Back to Chat Editing",
|
|
9887
10053
|
appEditor_codeMode_title: "Code Editing",
|
|
@@ -9987,7 +10153,6 @@ var appBuilder_locale_default = {
|
|
|
9987
10153
|
appEditor_chatMode_heading: "\u7528\u81EA\u7136\u8BED\u8A00\u7EE7\u7EED\u4FEE\u6539\u5E94\u7528",
|
|
9988
10154
|
appEditor_chatMode_description: "\u76F4\u63A5\u544A\u8BC9 AI \u4F60\u60F3\u6539\u4EC0\u4E48\u3002\u9002\u5408\u6539\u6587\u6848\u3001\u5B57\u4F53\u3001\u989C\u8272\u3001\u5E03\u5C40\u548C\u529F\u80FD\u8FED\u4EE3\u3002",
|
|
9989
10155
|
appEditor_chatMode_hint: "\u5982\u679C\u4F60\u53EA\u662F\u60F3\u6539\u5B57\u4F53\u3001\u989C\u8272\u3001\u95F4\u8DDD\u3001\u6587\u6848\u6216\u67D0\u4E2A\u529F\u80FD\uFF0C\u4F18\u5148\u7528\u8FD9\u4E2A\u6A21\u5F0F\u3002",
|
|
9990
|
-
appEditor_chatMode_openAssistant: "\u6253\u5F00\u53F3\u4FA7\u52A9\u624B",
|
|
9991
10156
|
appEditor_switchToCode: "\u5207\u6362\u5230\u4EE3\u7801\u7F16\u8F91",
|
|
9992
10157
|
appEditor_backToChat: "\u8FD4\u56DE\u5BF9\u8BDD\u7F16\u8F91",
|
|
9993
10158
|
appEditor_codeMode_title: "\u4EE3\u7801\u7F16\u8F91",
|
|
@@ -10093,7 +10258,6 @@ var appBuilder_locale_default = {
|
|
|
10093
10258
|
appEditor_chatMode_heading: "\u7528\u81EA\u7136\u8A9E\u8A00\u7E7C\u7E8C\u4FEE\u6539\u61C9\u7528",
|
|
10094
10259
|
appEditor_chatMode_description: "\u76F4\u63A5\u544A\u8A34 AI \u4F60\u60F3\u6539\u4EC0\u9EBC\u3002\u9069\u5408\u4FEE\u6539\u6587\u6848\u3001\u5B57\u9AD4\u3001\u984F\u8272\u3001\u7248\u9762\u548C\u529F\u80FD\u8FED\u4EE3\u3002",
|
|
10095
10260
|
appEditor_chatMode_hint: "\u5982\u679C\u4F60\u53EA\u662F\u60F3\u8ABF\u6574\u5B57\u9AD4\u3001\u984F\u8272\u3001\u9593\u8DDD\u3001\u6587\u6848\u6216\u67D0\u500B\u529F\u80FD\uFF0C\u512A\u5148\u7528\u9019\u500B\u6A21\u5F0F\u3002",
|
|
10096
|
-
appEditor_chatMode_openAssistant: "\u6253\u958B\u53F3\u5074\u52A9\u624B",
|
|
10097
10261
|
appEditor_switchToCode: "\u5207\u63DB\u5230\u7A0B\u5F0F\u78BC\u7DE8\u8F2F",
|
|
10098
10262
|
appEditor_backToChat: "\u8FD4\u56DE\u5C0D\u8A71\u7DE8\u8F2F",
|
|
10099
10263
|
appEditor_codeMode_title: "\u7A0B\u5F0F\u78BC\u7DE8\u8F2F",
|
|
@@ -10199,7 +10363,6 @@ var appBuilder_locale_default = {
|
|
|
10199
10363
|
appEditor_chatMode_heading: "\u81EA\u7136\u8A00\u8A9E\u3067\u7DE8\u96C6\u3092\u7D9A\u3051\u308B",
|
|
10200
10364
|
appEditor_chatMode_description: "AI \u306B\u4F55\u3092\u5909\u3048\u305F\u3044\u304B\u4F1D\u3048\u3066\u304F\u3060\u3055\u3044\u3002\u6587\u6848\u3001\u6587\u5B57\u30B5\u30A4\u30BA\u3001\u8272\u3001\u30EC\u30A4\u30A2\u30A6\u30C8\u3001\u6A5F\u80FD\u6539\u5584\u306B\u5411\u3044\u3066\u3044\u307E\u3059\u3002",
|
|
10201
10365
|
appEditor_chatMode_hint: "\u6587\u6848\u3001\u4F59\u767D\u3001\u8272\u3001\u7279\u5B9A\u306E\u6A5F\u80FD\u3060\u3051\u3092\u5909\u3048\u305F\u3044\u306A\u3089\u3001\u307E\u305A\u3053\u3061\u3089\u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
10202
|
-
appEditor_chatMode_openAssistant: "\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u3092\u958B\u304F",
|
|
10203
10366
|
appEditor_switchToCode: "\u30B3\u30FC\u30C9\u7DE8\u96C6\u306B\u5207\u308A\u66FF\u3048\u308B",
|
|
10204
10367
|
appEditor_backToChat: "\u4F1A\u8A71\u7DE8\u96C6\u306B\u623B\u308B",
|
|
10205
10368
|
appEditor_codeMode_title: "\u30B3\u30FC\u30C9\u7DE8\u96C6",
|
|
@@ -10376,7 +10539,7 @@ Pro unlocks at ${ADVANCED_FEATURE_MIN_BALANCE} points. No subscription lock-in.`
|
|
|
10376
10539
|
},
|
|
10377
10540
|
{
|
|
10378
10541
|
q: "Is it more cost-effective than subscriptions?",
|
|
10379
|
-
a: "Usually yes. Nolo
|
|
10542
|
+
a: "Usually yes. Nolo uses transparent pay-as-you-go pricing based on actual token usage, with no subscription lock-in."
|
|
10380
10543
|
}
|
|
10381
10544
|
]
|
|
10382
10545
|
}
|
|
@@ -10471,7 +10634,7 @@ Pro unlocks at ${ADVANCED_FEATURE_MIN_BALANCE} points. No subscription lock-in.`
|
|
|
10471
10634
|
},
|
|
10472
10635
|
{
|
|
10473
10636
|
q: "\u6BD4\u5305\u6708\u8BA2\u9605\u66F4\u5212\u7B97\u5417\uFF1F",
|
|
10474
|
-
a: "\u901A\u5E38\u66F4\u5212\u7B97\u3002Nolo \u6309\u5B9E\u9645
|
|
10637
|
+
a: "\u901A\u5E38\u66F4\u5212\u7B97\u3002Nolo \u6309\u5B9E\u9645 Token \u6D88\u8017\u900F\u660E\u8BA1\u8D39\uFF0C\u65E0\u8BA2\u9605\u7ED1\u5B9A\uFF0C\u53EA\u4E3A\u5B9E\u9645\u7528\u91CF\u4ED8\u8D39\u3002"
|
|
10475
10638
|
}
|
|
10476
10639
|
]
|
|
10477
10640
|
}
|
|
@@ -10682,15 +10845,16 @@ var recharge_locale_default = {
|
|
|
10682
10845
|
custom: "Custom",
|
|
10683
10846
|
recommended: "Popular",
|
|
10684
10847
|
customPlaceholder: "Enter a whole number between {{min}} and {{max}} points",
|
|
10685
|
-
rateHint: "{{min}}-{{max}}
|
|
10848
|
+
rateHint: "{{min}}-{{max}} whole-number credits per order. Each credit has CNY 1 principal; card processing fees are shown separately. Tax and bank FX may be added at checkout.",
|
|
10686
10849
|
neverExpire: "Points never expire.",
|
|
10687
10850
|
unlockPro: "{{n}} more points unlocks Pro \u2014 real-time web search and batch file analysis.",
|
|
10688
10851
|
bestValue: "Best value",
|
|
10689
|
-
customAmountHint: "
|
|
10852
|
+
customAmountHint: "Principal CNY {{principalCny}}; payment fee about USD {{feeUsd}}; total USD {{totalUsd}}. FX is the configured checkout rate: CNY {{cnyPerUsd}} per USD. Tax and bank FX may be added at checkout.",
|
|
10690
10853
|
waffoTrust: "Payments are processed by Waffo Pancake under PCI-DSS. Points are credited automatically once the payment is confirmed.",
|
|
10691
10854
|
methodLabel: "Payment method",
|
|
10692
10855
|
methods: {
|
|
10693
10856
|
waffo: { name: "Global payment", desc: "Visa / MasterCard / Apple Pay" },
|
|
10857
|
+
cnyWechat: { name: "WeChat Pay (CNY)", desc: "Pay in RMB via WeChat; 1 credit = CNY 1 principal + 3.9% processing fee" },
|
|
10694
10858
|
wechat: { name: "WeChat Pay", desc: "QR transfer" },
|
|
10695
10859
|
alipay: { name: "Alipay", desc: "QR transfer" },
|
|
10696
10860
|
cryptoDesc: "{{network}} network"
|
|
@@ -10749,15 +10913,16 @@ var recharge_locale_default = {
|
|
|
10749
10913
|
custom: "\u81EA\u5B9A\u4E49",
|
|
10750
10914
|
recommended: "\u63A8\u8350",
|
|
10751
10915
|
customPlaceholder: "\u8BF7\u8F93\u5165 {{min}}-{{max}} \u4E4B\u95F4\u7684\u6574\u6570\u79EF\u5206",
|
|
10752
|
-
rateHint: "\u5355\u7B14 {{min}}-{{max}} \u79EF\u5206\uFF08\u6574\u6570\uFF09\u3002\
|
|
10916
|
+
rateHint: "\u5355\u7B14 {{min}}-{{max}} \u79EF\u5206\uFF08\u6574\u6570\uFF09\u3002\u6BCF\u79EF\u5206\u672C\u91D1\u4E3A\u4EBA\u6C11\u5E01 1 \u5143\uFF1B\u652F\u4ED8\u624B\u7EED\u8D39\u5355\u72EC\u663E\u793A\uFF0C\u7A0E\u8D39\u548C\u94F6\u884C\u6C47\u7387\u53EF\u80FD\u5728\u7ED3\u8D26\u65F6\u53E6\u8BA1\u3002",
|
|
10753
10917
|
neverExpire: "\u79EF\u5206\u6C38\u4E45\u6709\u6548\uFF0C\u4E0D\u8BBE\u6709\u6548\u671F\u3002",
|
|
10754
10918
|
unlockPro: "\u518D\u5145 {{n}} \u79EF\u5206\u5373\u53EF\u89E3\u9501\u4E13\u4E1A\u7248\uFF1A\u5B9E\u65F6\u8054\u7F51\u641C\u7D22\u3001\u6279\u91CF\u6587\u4EF6\u5206\u6790\u3002",
|
|
10755
10919
|
bestValue: "\u6700\u5212\u7B97",
|
|
10756
|
-
customAmountHint: "\u672C\
|
|
10920
|
+
customAmountHint: "\u672C\u91D1\u4EBA\u6C11\u5E01 {{principalCny}}\uFF1B\u652F\u4ED8\u624B\u7EED\u8D39\u7EA6 USD {{feeUsd}}\uFF1B\u5408\u8BA1 USD {{totalUsd}}\u3002\u6C47\u7387\u4E3A\u7ED3\u8D26\u914D\u7F6E\u6C47\u7387\uFF1A1 USD = {{cnyPerUsd}} \u5143\u3002\u7A0E\u8D39\u548C\u94F6\u884C\u6C47\u7387\u53EF\u80FD\u5728\u7ED3\u8D26\u65F6\u53E6\u8BA1\u3002",
|
|
10757
10921
|
waffoTrust: "\u652F\u4ED8\u7531 Waffo Pancake \u5904\u7406\u5E76\u7B26\u5408 PCI-DSS \u56FD\u9645\u5B89\u5168\u6807\u51C6\uFF0C\u56DE\u8C03\u786E\u8BA4\u540E\u79EF\u5206\u81EA\u52A8\u5230\u8D26\u3002",
|
|
10758
10922
|
methodLabel: "\u652F\u4ED8\u65B9\u5F0F",
|
|
10759
10923
|
methods: {
|
|
10760
10924
|
waffo: { name: "\u5168\u7403\u652F\u4ED8", desc: "Visa / MasterCard / Apple Pay" },
|
|
10925
|
+
cnyWechat: { name: "\u5FAE\u4FE1\u652F\u4ED8\uFF08\u4EBA\u6C11\u5E01\uFF09", desc: "\u4EBA\u6C11\u5E01\u76F4\u4ED8\u5FAE\u4FE1\uFF0C1 \u79EF\u5206 = 1 \u5143\u672C\u91D1 + 3.9% \u652F\u4ED8\u624B\u7EED\u8D39" },
|
|
10761
10926
|
wechat: { name: "\u5FAE\u4FE1\u652F\u4ED8", desc: "\u626B\u7801\u8F6C\u8D26" },
|
|
10762
10927
|
alipay: { name: "\u652F\u4ED8\u5B9D", desc: "\u626B\u7801\u8F6C\u8D26" },
|
|
10763
10928
|
cryptoDesc: "{{network}} \u7F51\u7EDC"
|
|
@@ -10816,15 +10981,16 @@ var recharge_locale_default = {
|
|
|
10816
10981
|
custom: "\u81EA\u8A02",
|
|
10817
10982
|
recommended: "\u63A8\u85A6",
|
|
10818
10983
|
customPlaceholder: "\u8ACB\u8F38\u5165 {{min}}-{{max}} \u4E4B\u9593\u7684\u6574\u6578\u7A4D\u5206",
|
|
10819
|
-
rateHint: "\u55AE\u7B46 {{min}}-{{max}} \u7A4D\u5206\uFF08\u6574\u6578\uFF09\u3002\
|
|
10984
|
+
rateHint: "\u55AE\u7B46 {{min}}-{{max}} \u7A4D\u5206\uFF08\u6574\u6578\uFF09\u3002\u6BCF\u7A4D\u5206\u672C\u91D1\u70BA\u4EBA\u6C11\u5E63 1 \u5143\uFF1B\u652F\u4ED8\u624B\u7E8C\u8CBB\u55AE\u7368\u986F\u793A\uFF0C\u7A05\u8CBB\u548C\u9280\u884C\u532F\u7387\u53EF\u80FD\u5728\u7D50\u5E33\u6642\u53E6\u8A08\u3002",
|
|
10820
10985
|
neverExpire: "\u7A4D\u5206\u6C38\u4E45\u6709\u6548\uFF0C\u4E0D\u8A2D\u6709\u6548\u671F\u9650\u3002",
|
|
10821
10986
|
unlockPro: "\u518D\u5132\u503C {{n}} \u7A4D\u5206\u5373\u53EF\u89E3\u9396\u5C08\u696D\u7248\uFF1A\u5373\u6642\u806F\u7DB2\u641C\u5C0B\u3001\u6279\u6B21\u6A94\u6848\u5206\u6790\u3002",
|
|
10822
10987
|
bestValue: "\u6700\u5212\u7B97",
|
|
10823
|
-
customAmountHint: "\u672C\
|
|
10988
|
+
customAmountHint: "\u672C\u91D1\u4EBA\u6C11\u5E63 {{principalCny}}\uFF1B\u652F\u4ED8\u624B\u7E8C\u8CBB\u7D04 USD {{feeUsd}}\uFF1B\u5408\u8A08 USD {{totalUsd}}\u3002\u532F\u7387\u70BA\u7D50\u5E33\u914D\u7F6E\u532F\u7387\uFF1A1 USD = {{cnyPerUsd}} \u5143\u3002\u7A05\u8CBB\u548C\u9280\u884C\u532F\u7387\u53EF\u80FD\u5728\u7D50\u5E33\u6642\u53E6\u8A08\u3002",
|
|
10824
10989
|
waffoTrust: "\u652F\u4ED8\u7531 Waffo Pancake \u8655\u7406\u4E26\u7B26\u5408 PCI-DSS \u570B\u969B\u5B89\u5168\u6A19\u6E96\uFF0C\u56DE\u547C\u78BA\u8A8D\u5F8C\u7A4D\u5206\u81EA\u52D5\u5165\u5E33\u3002",
|
|
10825
10990
|
methodLabel: "\u652F\u4ED8\u65B9\u5F0F",
|
|
10826
10991
|
methods: {
|
|
10827
10992
|
waffo: { name: "\u5168\u7403\u652F\u4ED8", desc: "Visa / MasterCard / Apple Pay" },
|
|
10993
|
+
cnyWechat: { name: "\u5FAE\u4FE1\u652F\u4ED8\uFF08\u4EBA\u6C11\u5E63\uFF09", desc: "\u4EBA\u6C11\u5E63\u76F4\u4ED8\u5FAE\u4FE1\uFF0C1 \u7A4D\u5206 = 1 \u5143\u672C\u91D1 + 3.9% \u652F\u4ED8\u624B\u7E8C\u8CBB" },
|
|
10828
10994
|
wechat: { name: "\u5FAE\u4FE1\u652F\u4ED8", desc: "\u6383\u78BC\u8F49\u5E33" },
|
|
10829
10995
|
alipay: { name: "\u652F\u4ED8\u5BF6", desc: "\u6383\u78BC\u8F49\u5E33" },
|
|
10830
10996
|
cryptoDesc: "{{network}} \u7DB2\u8DEF"
|
|
@@ -10883,15 +11049,16 @@ var recharge_locale_default = {
|
|
|
10883
11049
|
custom: "\u30AB\u30B9\u30BF\u30E0",
|
|
10884
11050
|
recommended: "\u304A\u3059\u3059\u3081",
|
|
10885
11051
|
customPlaceholder: "{{min}}\u301C{{max}} \u306E\u6574\u6570\u30DD\u30A4\u30F3\u30C8\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
10886
|
-
rateHint: "1\u56DE
|
|
11052
|
+
rateHint: "1\u56DE {{min}}\u301C{{max}}\u30DD\u30A4\u30F3\u30C8\uFF08\u6574\u6570\uFF09\u3002\u5404\u30DD\u30A4\u30F3\u30C8\u306E\u5143\u672C\u306F\u4EBA\u6C11\u51431\u5143\u3067\u3001\u6C7A\u6E08\u624B\u6570\u6599\u306F\u5225\u8868\u793A\u3067\u3059\u3002\u7A0E\u30FB\u9280\u884C\u306E\u70BA\u66FF\u5DEE\u306F\u6C7A\u6E08\u6642\u306B\u52A0\u308F\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002",
|
|
10887
11053
|
neverExpire: "\u30DD\u30A4\u30F3\u30C8\u306B\u6709\u52B9\u671F\u9650\u306F\u3042\u308A\u307E\u305B\u3093\u3002",
|
|
10888
11054
|
unlockPro: "\u3042\u3068 {{n}} \u30DD\u30A4\u30F3\u30C8\u3067\u30D7\u30ED\u7248\uFF08\u30EA\u30A2\u30EB\u30BF\u30A4\u30E0\u691C\u7D22\u30FB\u4E00\u62EC\u30D5\u30A1\u30A4\u30EB\u5206\u6790\uFF09\u304C\u89E3\u653E\u3055\u308C\u307E\u3059\u3002",
|
|
10889
11055
|
bestValue: "\u6700\u3082\u304A\u5F97",
|
|
10890
|
-
customAmountHint: "\
|
|
11056
|
+
customAmountHint: "\u5143\u672C\u306F\u4EBA\u6C11\u5143 {{principalCny}}\u3001\u6C7A\u6E08\u624B\u6570\u6599\u306F\u7D04 USD {{feeUsd}}\u3001\u5408\u8A08\u306F USD {{totalUsd}} \u3067\u3059\u3002\u70BA\u66FF\u306F\u8A2D\u5B9A\u6E08\u307F\u306E\u6C7A\u6E08\u63DB\u7B97\u30EC\u30FC\u30C8\uFF081 USD = {{cnyPerUsd}} \u5143\uFF09\u3067\u3059\u3002\u7A0E\u30FB\u9280\u884C\u306E\u70BA\u66FF\u5DEE\u306F\u6C7A\u6E08\u6642\u306B\u52A0\u308F\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002",
|
|
10891
11057
|
waffoTrust: "\u6C7A\u6E08\u306F Waffo Pancake \u304C PCI-DSS \u6E96\u62E0\u3067\u51E6\u7406\u3057\u307E\u3059\u3002\u78BA\u8A8D\u5F8C\u3001\u30DD\u30A4\u30F3\u30C8\u306F\u81EA\u52D5\u7684\u306B\u53CD\u6620\u3055\u308C\u307E\u3059\u3002",
|
|
10892
11058
|
methodLabel: "\u6C7A\u6E08\u65B9\u6CD5",
|
|
10893
11059
|
methods: {
|
|
10894
11060
|
waffo: { name: "\u30B0\u30ED\u30FC\u30D0\u30EB\u6C7A\u6E08", desc: "Visa / MasterCard / Apple Pay" },
|
|
11061
|
+
cnyWechat: { name: "WeChat Pay\uFF08\u4EBA\u6C11\u5143\uFF09", desc: "\u4EBA\u6C11\u5143\u3067\u305D\u306E\u307E\u307E\u652F\u6255\u3044\u30011\u30DD\u30A4\u30F3\u30C8 = 1\u5143\u306E\u5143\u672C + 3.9% \u306E\u6C7A\u6E08\u624B\u6570\u6599" },
|
|
10895
11062
|
wechat: { name: "WeChat Pay", desc: "QR\u9001\u91D1" },
|
|
10896
11063
|
alipay: { name: "Alipay", desc: "QR\u9001\u91D1" },
|
|
10897
11064
|
cryptoDesc: "{{network}} \u30CD\u30C3\u30C8\u30EF\u30FC\u30AF"
|
|
@@ -11486,22 +11653,24 @@ var localFirst_locale_default = {
|
|
|
11486
11653
|
localFirst: {
|
|
11487
11654
|
onboarding: {
|
|
11488
11655
|
title: "How do you want to start?",
|
|
11489
|
-
description: "
|
|
11656
|
+
description: "Start with Nolo, or connect AI you already use.",
|
|
11490
11657
|
group: {
|
|
11491
|
-
nolo: "Use Nolo \xB7 fastest
|
|
11492
|
-
byo: "
|
|
11658
|
+
nolo: "Use Nolo \xB7 fastest start",
|
|
11659
|
+
byo: "Connect AI I already use \xB7 run locally"
|
|
11493
11660
|
},
|
|
11494
11661
|
path: {
|
|
11495
|
-
signup: "Sign up
|
|
11496
|
-
signupHint: "
|
|
11497
|
-
login: "
|
|
11498
|
-
loginHint: "Sync your
|
|
11499
|
-
membership: "I
|
|
11500
|
-
membershipHint: "Claude, ChatGPT, Grok,
|
|
11501
|
-
|
|
11502
|
-
|
|
11662
|
+
signup: "Sign up",
|
|
11663
|
+
signupHint: "Includes starter credits; no model setup needed",
|
|
11664
|
+
login: "Already have an account? Log in",
|
|
11665
|
+
loginHint: "Sync your assistants and credits",
|
|
11666
|
+
membership: "I have an AI membership or subscription",
|
|
11667
|
+
membershipHint: "Claude, ChatGPT, Grok, and more",
|
|
11668
|
+
cli: "My local CLI is signed in",
|
|
11669
|
+
cliHint: "Claude Code, Codex, Grok CLI",
|
|
11670
|
+
byo: "I have an API Key or local model",
|
|
11671
|
+
byoHint: "OpenAI, Ollama, LM Studio, compatible endpoints"
|
|
11503
11672
|
},
|
|
11504
|
-
skipCta: "
|
|
11673
|
+
skipCta: "Not now",
|
|
11505
11674
|
rnTitle: "Create your local Agent first",
|
|
11506
11675
|
rnDescription: "Create and run Agents on this device without signing in to Nolo first. Sign-in is only for account content, sync, and cloud features.",
|
|
11507
11676
|
createCta: "Create local Agent",
|
|
@@ -11561,22 +11730,24 @@ var localFirst_locale_default = {
|
|
|
11561
11730
|
localFirst: {
|
|
11562
11731
|
onboarding: {
|
|
11563
11732
|
title: "\u600E\u4E48\u5F00\u59CB\uFF1F",
|
|
11564
|
-
description: "\u7528 Nolo \
|
|
11733
|
+
description: "\u7528 Nolo \u76F4\u63A5\u5F00\u59CB\uFF0C\u6216\u8FDE\u63A5\u4F60\u5DF2\u7ECF\u5728\u7528\u7684 AI\u3002",
|
|
11565
11734
|
group: {
|
|
11566
|
-
nolo: "\u7528 Nolo \xB7 \
|
|
11567
|
-
byo: "\
|
|
11735
|
+
nolo: "\u7528 Nolo \xB7 \u6700\u5FEB\u5F00\u59CB",
|
|
11736
|
+
byo: "\u8FDE\u63A5\u6211\u5DF2\u6709\u7684 AI \xB7 \u672C\u5730\u4F7F\u7528"
|
|
11568
11737
|
},
|
|
11569
11738
|
path: {
|
|
11570
|
-
signup: "\u6CE8\u518C\u5373\u7528
|
|
11571
|
-
signupHint: "\
|
|
11572
|
-
login: "\u5DF2\u6709
|
|
11573
|
-
loginHint: "\u540C\u6B65\
|
|
11574
|
-
membership: "\u6211\
|
|
11575
|
-
membershipHint: "Claude\u3001ChatGPT\u3001Grok
|
|
11576
|
-
|
|
11577
|
-
|
|
11739
|
+
signup: "\u6CE8\u518C\u5373\u7528",
|
|
11740
|
+
signupHint: "\u65B0\u8D26\u53F7\u6709\u514D\u8D39\u989D\u5EA6\uFF0C\u65E0\u9700\u914D\u7F6E\u6A21\u578B",
|
|
11741
|
+
login: "\u5DF2\u6709\u8D26\u53F7\uFF0C\u767B\u5F55 Nolo",
|
|
11742
|
+
loginHint: "\u540C\u6B65\u5DF2\u6709\u52A9\u624B\u548C\u989D\u5EA6",
|
|
11743
|
+
membership: "\u6211\u6709 AI \u4F1A\u5458\u6216\u8BA2\u9605",
|
|
11744
|
+
membershipHint: "Claude\u3001ChatGPT\u3001Grok \u7B49",
|
|
11745
|
+
cli: "\u672C\u673A CLI \u5DF2\u767B\u5F55",
|
|
11746
|
+
cliHint: "Claude Code\u3001Codex\u3001Grok CLI",
|
|
11747
|
+
byo: "\u6211\u6709 API Key \u6216\u672C\u5730\u6A21\u578B",
|
|
11748
|
+
byoHint: "OpenAI\u3001Ollama\u3001LM Studio\u3001\u517C\u5BB9\u7AEF\u70B9"
|
|
11578
11749
|
},
|
|
11579
|
-
skipCta: "\
|
|
11750
|
+
skipCta: "\u6682\u65F6\u8DF3\u8FC7",
|
|
11580
11751
|
rnTitle: "\u5148\u521B\u5EFA\u4F60\u7684\u672C\u5730 Agent",
|
|
11581
11752
|
rnDescription: "\u5728\u8FD9\u53F0\u8BBE\u5907\u4E0A\u76F4\u63A5\u521B\u5EFA\u5E76\u8FD0\u884C Agent\uFF0C\u65E0\u9700\u5148\u767B\u5F55 Nolo\u3002\u767B\u5F55\u4EC5\u7528\u4E8E\u8D26\u53F7\u5185\u5BB9\u3001\u540C\u6B65\u4E0E\u4E91\u7AEF\u80FD\u529B\u3002",
|
|
11582
11753
|
createCta: "\u521B\u5EFA\u672C\u5730 Agent",
|
|
@@ -11636,22 +11807,24 @@ var localFirst_locale_default = {
|
|
|
11636
11807
|
localFirst: {
|
|
11637
11808
|
onboarding: {
|
|
11638
11809
|
title: "\u600E\u9EBC\u958B\u59CB\uFF1F",
|
|
11639
|
-
description: "\u7528 Nolo \
|
|
11810
|
+
description: "\u7528 Nolo \u76F4\u63A5\u958B\u59CB\uFF0C\u6216\u9023\u63A5\u4F60\u5DF2\u7D93\u5728\u7528\u7684 AI\u3002",
|
|
11640
11811
|
group: {
|
|
11641
|
-
nolo: "\u7528 Nolo \xB7 \
|
|
11642
|
-
byo: "\
|
|
11812
|
+
nolo: "\u7528 Nolo \xB7 \u6700\u5FEB\u958B\u59CB",
|
|
11813
|
+
byo: "\u9023\u63A5\u6211\u5DF2\u6709\u7684 AI \xB7 \u672C\u6A5F\u4F7F\u7528"
|
|
11643
11814
|
},
|
|
11644
11815
|
path: {
|
|
11645
|
-
signup: "\u8A3B\u518A\u5373\u7528
|
|
11646
|
-
signupHint: "\
|
|
11647
|
-
login: "\u5DF2\u6709
|
|
11648
|
-
loginHint: "\u540C\u6B65\
|
|
11649
|
-
membership: "\u6211\
|
|
11650
|
-
membershipHint: "Claude\u3001ChatGPT\u3001Grok
|
|
11651
|
-
|
|
11652
|
-
|
|
11816
|
+
signup: "\u8A3B\u518A\u5373\u7528",
|
|
11817
|
+
signupHint: "\u65B0\u5E33\u865F\u6709\u514D\u8CBB\u984D\u5EA6\uFF0C\u7121\u9700\u8A2D\u5B9A\u6A21\u578B",
|
|
11818
|
+
login: "\u5DF2\u6709\u5E33\u865F\uFF0C\u767B\u5165 Nolo",
|
|
11819
|
+
loginHint: "\u540C\u6B65\u5DF2\u6709\u52A9\u624B\u548C\u984D\u5EA6",
|
|
11820
|
+
membership: "\u6211\u6709 AI \u6703\u54E1\u6216\u8A02\u95B1",
|
|
11821
|
+
membershipHint: "Claude\u3001ChatGPT\u3001Grok \u7B49",
|
|
11822
|
+
cli: "\u672C\u6A5F CLI \u5DF2\u767B\u5165",
|
|
11823
|
+
cliHint: "Claude Code\u3001Codex\u3001Grok CLI",
|
|
11824
|
+
byo: "\u6211\u6709 API Key \u6216\u672C\u6A5F\u6A21\u578B",
|
|
11825
|
+
byoHint: "OpenAI\u3001Ollama\u3001LM Studio\u3001\u76F8\u5BB9\u7AEF\u9EDE"
|
|
11653
11826
|
},
|
|
11654
|
-
skipCta: "\
|
|
11827
|
+
skipCta: "\u66AB\u6642\u8DF3\u904E",
|
|
11655
11828
|
rnTitle: "\u5148\u5EFA\u7ACB\u4F60\u7684\u672C\u6A5F Agent",
|
|
11656
11829
|
rnDescription: "\u5728\u9019\u53F0\u88DD\u7F6E\u4E0A\u76F4\u63A5\u5EFA\u7ACB\u4E26\u57F7\u884C Agent\uFF0C\u7121\u9700\u5148\u767B\u5165 Nolo\u3002\u767B\u5165\u50C5\u7528\u65BC\u5E33\u865F\u5167\u5BB9\u3001\u540C\u6B65\u8207\u96F2\u7AEF\u80FD\u529B\u3002",
|
|
11657
11830
|
createCta: "\u5EFA\u7ACB\u672C\u6A5F Agent",
|
|
@@ -11711,22 +11884,24 @@ var localFirst_locale_default = {
|
|
|
11711
11884
|
localFirst: {
|
|
11712
11885
|
onboarding: {
|
|
11713
11886
|
title: "\u3069\u3046\u59CB\u3081\u307E\u3059\u304B\uFF1F",
|
|
11714
|
-
description: "Nolo \u3067\
|
|
11887
|
+
description: "Nolo \u3067\u59CB\u3081\u308B\u304B\u3001\u3059\u3067\u306B\u4F7F\u3063\u3066\u3044\u308B AI \u3092\u63A5\u7D9A\u3057\u307E\u3059\u3002",
|
|
11715
11888
|
group: {
|
|
11716
|
-
nolo: "Nolo \u3092\u4F7F\u3046 \xB7 \
|
|
11717
|
-
byo: "\
|
|
11889
|
+
nolo: "Nolo \u3092\u4F7F\u3046 \xB7 \u6700\u77ED\u3067\u958B\u59CB",
|
|
11890
|
+
byo: "\u65E2\u5B58\u306E AI \u3092\u63A5\u7D9A \xB7 \u30ED\u30FC\u30AB\u30EB\u3067\u4F7F\u7528"
|
|
11718
11891
|
},
|
|
11719
11892
|
path: {
|
|
11720
|
-
signup: "\u767B\u9332\u3057\u3066\
|
|
11721
|
-
signupHint: "\
|
|
11722
|
-
login: "
|
|
11893
|
+
signup: "\u767B\u9332\u3057\u3066\u59CB\u3081\u308B",
|
|
11894
|
+
signupHint: "\u7121\u6599\u30AF\u30EC\u30B8\u30C3\u30C8\u4ED8\u304D\u3002\u30E2\u30C7\u30EB\u8A2D\u5B9A\u306F\u4E0D\u8981",
|
|
11895
|
+
login: "\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u304A\u6301\u3061\u306E\u65B9 \xB7 \u30ED\u30B0\u30A4\u30F3",
|
|
11723
11896
|
loginHint: "\u65E2\u5B58\u306E\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u3068\u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u540C\u671F",
|
|
11724
|
-
membership: "AI \u4F1A\u54E1
|
|
11725
|
-
membershipHint: "Claude\u3001ChatGPT\u3001Grok
|
|
11726
|
-
|
|
11727
|
-
|
|
11897
|
+
membership: "AI \u4F1A\u54E1\u30FB\u30B5\u30D6\u30B9\u30AF\u3092\u4F7F\u3046",
|
|
11898
|
+
membershipHint: "Claude\u3001ChatGPT\u3001Grok \u306A\u3069",
|
|
11899
|
+
cli: "\u30ED\u30FC\u30AB\u30EB CLI \u3067\u30ED\u30B0\u30A4\u30F3\u6E08\u307F",
|
|
11900
|
+
cliHint: "Claude Code\u3001Codex\u3001Grok CLI",
|
|
11901
|
+
byo: "API \u30AD\u30FC\u30FB\u30ED\u30FC\u30AB\u30EB\u30E2\u30C7\u30EB\u3092\u4F7F\u3046",
|
|
11902
|
+
byoHint: "OpenAI\u3001Ollama\u3001LM Studio\u3001\u4E92\u63DB\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8"
|
|
11728
11903
|
},
|
|
11729
|
-
skipCta: "\
|
|
11904
|
+
skipCta: "\u4ECA\u306F\u30B9\u30AD\u30C3\u30D7",
|
|
11730
11905
|
rnTitle: "\u307E\u305A\u30ED\u30FC\u30AB\u30EB Agent \u3092\u4F5C\u6210",
|
|
11731
11906
|
rnDescription: "\u3053\u306E\u7AEF\u672B\u4E0A\u3067 Agent \u3092\u4F5C\u6210\u30FB\u5B9F\u884C\u3067\u304D\u307E\u3059\u3002Nolo \u3078\u306E\u30ED\u30B0\u30A4\u30F3\u306F\u4E0D\u8981\u3067\u3059\u3002\u30ED\u30B0\u30A4\u30F3\u306F\u30A2\u30AB\u30A6\u30F3\u30C8\u5185\u5BB9\u30FB\u540C\u671F\u30FB\u30AF\u30E9\u30A6\u30C9\u6A5F\u80FD\u7528\u3067\u3059\u3002",
|
|
11732
11907
|
createCta: "\u30ED\u30FC\u30AB\u30EB Agent \u3092\u4F5C\u6210",
|
|
@@ -11882,147 +12057,518 @@ var i18nConfig = {
|
|
|
11882
12057
|
};
|
|
11883
12058
|
|
|
11884
12059
|
// packages/app/i18n/index.ts
|
|
11885
|
-
instance.use(initReactI18next)
|
|
11886
|
-
|
|
11887
|
-
|
|
11888
|
-
|
|
11889
|
-
|
|
11890
|
-
|
|
11891
|
-
|
|
11892
|
-
|
|
11893
|
-
});
|
|
12060
|
+
instance.use(initReactI18next);
|
|
12061
|
+
if (!instance.isInitialized) {
|
|
12062
|
+
instance.init({
|
|
12063
|
+
...i18nConfig,
|
|
12064
|
+
lng: "zh-CN" /* ZH_CN */,
|
|
12065
|
+
fallbackLng: "zh-CN" /* ZH_CN */,
|
|
12066
|
+
compatibilityJSON: "v3"
|
|
12067
|
+
// Fixes "Intl not found" error on Android/RN
|
|
12068
|
+
});
|
|
12069
|
+
}
|
|
11894
12070
|
var i18n_default = instance;
|
|
11895
12071
|
|
|
11896
|
-
// packages/ai/tools/
|
|
11897
|
-
var
|
|
11898
|
-
|
|
11899
|
-
|
|
11900
|
-
|
|
11901
|
-
|
|
11902
|
-
|
|
11903
|
-
|
|
11904
|
-
|
|
11905
|
-
|
|
11906
|
-
|
|
11907
|
-
|
|
11908
|
-
|
|
11909
|
-
(m) => m.name === name && m.provider === prov
|
|
11910
|
-
);
|
|
11911
|
-
if (exact) return exact;
|
|
11912
|
-
}
|
|
11913
|
-
const matches = ALL_MODELS.filter((m) => m.name === name);
|
|
11914
|
-
if (matches.length === 1) return matches[0];
|
|
11915
|
-
if (matches.length > 1 && !prov) {
|
|
11916
|
-
console.warn(
|
|
11917
|
-
"[createAgentTool] findModelConfig: duplicate model names without provider",
|
|
11918
|
-
{
|
|
11919
|
-
modelName: name,
|
|
11920
|
-
providers: matches.map((m) => m.provider)
|
|
11921
|
-
}
|
|
11922
|
-
);
|
|
12072
|
+
// packages/ai/tools/toolResultError.ts
|
|
12073
|
+
var ToolResultError = class extends Error {
|
|
12074
|
+
code;
|
|
12075
|
+
rawData;
|
|
12076
|
+
displayData;
|
|
12077
|
+
retryable;
|
|
12078
|
+
constructor(message, options) {
|
|
12079
|
+
super(message);
|
|
12080
|
+
this.name = "ToolResultError";
|
|
12081
|
+
this.code = options?.code;
|
|
12082
|
+
this.rawData = options?.rawData;
|
|
12083
|
+
this.displayData = options?.displayData;
|
|
12084
|
+
this.retryable = options?.retryable;
|
|
11923
12085
|
}
|
|
11924
|
-
return null;
|
|
11925
12086
|
};
|
|
11926
|
-
var
|
|
11927
|
-
|
|
11928
|
-
|
|
11929
|
-
|
|
11930
|
-
|
|
11931
|
-
|
|
11932
|
-
|
|
11933
|
-
|
|
11934
|
-
|
|
11935
|
-
|
|
11936
|
-
|
|
11937
|
-
|
|
11938
|
-
|
|
11939
|
-
|
|
11940
|
-
|
|
11941
|
-
|
|
11942
|
-
|
|
11943
|
-
|
|
11944
|
-
|
|
11945
|
-
|
|
11946
|
-
|
|
11947
|
-
|
|
11948
|
-
|
|
11949
|
-
|
|
11950
|
-
|
|
11951
|
-
|
|
11952
|
-
|
|
11953
|
-
|
|
11954
|
-
|
|
11955
|
-
{
|
|
11956
|
-
type: "
|
|
11957
|
-
description:
|
|
11958
|
-
|
|
11959
|
-
|
|
11960
|
-
|
|
11961
|
-
|
|
11962
|
-
|
|
11963
|
-
|
|
11964
|
-
"tools.createAgent.params.greeting.objectDesc"
|
|
11965
|
-
),
|
|
11966
|
-
properties: {
|
|
11967
|
-
text: {
|
|
11968
|
-
type: "string",
|
|
11969
|
-
description: i18n_default.t(
|
|
11970
|
-
"tools.createAgent.params.greeting.texts.text"
|
|
11971
|
-
)
|
|
12087
|
+
var getToolResultErrorData = (error) => {
|
|
12088
|
+
if (!error || typeof error !== "object") return null;
|
|
12089
|
+
const candidate = error;
|
|
12090
|
+
return {
|
|
12091
|
+
rawData: candidate.rawData,
|
|
12092
|
+
displayData: candidate.displayData,
|
|
12093
|
+
code: candidate.code,
|
|
12094
|
+
retryable: candidate.retryable,
|
|
12095
|
+
message: candidate.message
|
|
12096
|
+
};
|
|
12097
|
+
};
|
|
12098
|
+
|
|
12099
|
+
// packages/ai/tools/agent/agentUpdateShared.ts
|
|
12100
|
+
var agentUpdateFieldSchemaProperties = {
|
|
12101
|
+
name: { type: "string", description: "Agent \u7684\u65B0\u540D\u79F0\u3002" },
|
|
12102
|
+
handle: { type: "string", description: "\u7A33\u5B9A\u7684\u673A\u5668\u8C03\u7528\u540D\uFF0C\u4F8B\u5982 pm\u3001fullstack\u3001reviewer\u3002" },
|
|
12103
|
+
model: { type: "string", description: "\u6A21\u578B\u540D\u79F0\uFF0C\u4F8B\u5982 'gpt-4o-mini'\u3002" },
|
|
12104
|
+
provider: { type: "string", description: "\u6A21\u578B\u63D0\u4F9B\u65B9\uFF0C\u4F8B\u5982 'openai'\u3002\u82E5\u4E0D\u786E\u5B9A\u53EF\u7559\u7A7A\u3002" },
|
|
12105
|
+
prompt: { type: "string", description: "\u7CFB\u7EDF\u63D0\u793A\u8BCD\uFF0C\u63CF\u8FF0 Agent \u7684\u89D2\u8272\u548C\u884C\u4E3A\u3002" },
|
|
12106
|
+
introduction: { type: "string", description: "\u9762\u5411\u7EC8\u7AEF\u7528\u6237\u7684\u7B80\u4ECB\u6587\u6848\u3002" },
|
|
12107
|
+
greeting: {
|
|
12108
|
+
description: "\u6B22\u8FCE\u914D\u7F6E\uFF1A\u7EAF\u6587\u672C\u5B57\u7B26\u4E32\uFF0C\u6216\u5305\u542B\u6B22\u8FCE\u8BED + \u83DC\u5355\u7684\u5BF9\u8C61\u3002",
|
|
12109
|
+
anyOf: [
|
|
12110
|
+
{ type: "string", description: "\u7EAF\u6587\u672C\u6B22\u8FCE\u8BED\u3002" },
|
|
12111
|
+
{
|
|
12112
|
+
type: "object",
|
|
12113
|
+
description: "\u7ED3\u6784\u5316\u6B22\u8FCE\u914D\u7F6E\u3002",
|
|
12114
|
+
properties: {
|
|
12115
|
+
text: { type: "string", description: "\u6B22\u8FCE\u8BED\u6587\u672C\u3002" },
|
|
12116
|
+
menu: {
|
|
12117
|
+
type: "array",
|
|
12118
|
+
description: "\u5FEB\u6377\u83DC\u5355\u9879\u3002",
|
|
12119
|
+
items: {
|
|
12120
|
+
type: "object",
|
|
12121
|
+
properties: {
|
|
12122
|
+
id: { type: "string", description: "\u83DC\u5355\u9879\u552F\u4E00\u6807\u8BC6\u3002" },
|
|
12123
|
+
label: { type: "string", description: "\u6309\u94AE\u663E\u793A\u6587\u6848\u3002" },
|
|
12124
|
+
userMessage: { type: "string", description: "\u70B9\u51FB\u540E\u53D1\u9001\u7ED9 Agent \u7684\u6D88\u606F\u3002" }
|
|
11972
12125
|
},
|
|
11973
|
-
|
|
11974
|
-
type: "array",
|
|
11975
|
-
description: i18n_default.t(
|
|
11976
|
-
"tools.createAgent.params.greeting.menu.desc"
|
|
11977
|
-
),
|
|
11978
|
-
items: {
|
|
11979
|
-
type: "object",
|
|
11980
|
-
properties: {
|
|
11981
|
-
id: {
|
|
11982
|
-
type: "string",
|
|
11983
|
-
description: i18n_default.t(
|
|
11984
|
-
"tools.createAgent.params.greeting.menu.id"
|
|
11985
|
-
)
|
|
11986
|
-
},
|
|
11987
|
-
label: {
|
|
11988
|
-
type: "string",
|
|
11989
|
-
description: i18n_default.t(
|
|
11990
|
-
"tools.createAgent.params.greeting.menu.label"
|
|
11991
|
-
)
|
|
11992
|
-
},
|
|
11993
|
-
userMessage: {
|
|
11994
|
-
type: "string",
|
|
11995
|
-
description: i18n_default.t(
|
|
11996
|
-
"tools.createAgent.params.greeting.menu.userMessage"
|
|
11997
|
-
)
|
|
11998
|
-
}
|
|
11999
|
-
},
|
|
12000
|
-
required: ["id", "label"]
|
|
12001
|
-
}
|
|
12002
|
-
}
|
|
12126
|
+
required: ["id", "label"]
|
|
12003
12127
|
}
|
|
12004
12128
|
}
|
|
12005
|
-
|
|
12006
|
-
}
|
|
12007
|
-
|
|
12008
|
-
|
|
12009
|
-
|
|
12010
|
-
|
|
12011
|
-
|
|
12012
|
-
|
|
12013
|
-
|
|
12014
|
-
|
|
12015
|
-
|
|
12016
|
-
|
|
12017
|
-
|
|
12018
|
-
|
|
12019
|
-
|
|
12020
|
-
|
|
12021
|
-
|
|
12022
|
-
|
|
12023
|
-
|
|
12024
|
-
|
|
12025
|
-
|
|
12129
|
+
}
|
|
12130
|
+
}
|
|
12131
|
+
]
|
|
12132
|
+
},
|
|
12133
|
+
isPublic: { type: "boolean", description: "\u662F\u5426\u516C\u5F00\u5230\u5E94\u7528\u5E02\u573A\u3002" },
|
|
12134
|
+
allowFork: { type: "boolean", description: "\u662F\u5426\u5141\u8BB8\u5176\u4ED6\u7528\u6237\u628A\u8FD9\u4E2A AI \u590D\u5236\u4E00\u4EFD\u5230\u81EA\u5DF1\u7684\u7A7A\u95F4\u3002" },
|
|
12135
|
+
tags: {
|
|
12136
|
+
type: "array",
|
|
12137
|
+
items: { type: "string" },
|
|
12138
|
+
description: "\u6807\u7B7E\u5217\u8868\uFF1B\u4F20\u7A7A\u6570\u7EC4 [] \u8868\u793A\u6E05\u7A7A\u3002"
|
|
12139
|
+
},
|
|
12140
|
+
tools: {
|
|
12141
|
+
type: "array",
|
|
12142
|
+
items: { type: "string" },
|
|
12143
|
+
description: "\u5141\u8BB8\u8C03\u7528\u7684\u5DE5\u5177\u540D\u79F0\u6570\u7EC4\u3002"
|
|
12144
|
+
},
|
|
12145
|
+
disabledTools: {
|
|
12146
|
+
type: "array",
|
|
12147
|
+
items: { type: "string" },
|
|
12148
|
+
description: "\u660E\u786E\u7981\u7528\u7684\u9ED8\u8BA4\u5DE5\u5177\u540D\u79F0\u6570\u7EC4\uFF08\u5982 exa_search\u3001fetchWebpage\uFF09\u3002\u8FD9\u4E9B\u5DE5\u5177\u5373\u4F7F\u88AB\u5E73\u53F0\u9ED8\u8BA4\u6CE8\u5165\u4E5F\u4E0D\u4F1A\u53D1\u7ED9\u6A21\u578B\uFF0C\u4ECE\u6839\u4E0A\u8282\u7701 token\u3002"
|
|
12149
|
+
},
|
|
12150
|
+
enabledPacks: {
|
|
12151
|
+
type: "array",
|
|
12152
|
+
items: { type: "string", enum: CAPABILITY_PACKS.map((p) => p.id) },
|
|
12153
|
+
description: '\u542F\u7528\u7684\u80FD\u529B\u5305 ID \u6570\u7EC4\u3002\u80FD\u529B\u5305\u662F\u9762\u5411\u7528\u6237\u7684\u5DE5\u5177\u5206\u7EC4\uFF0C\u4E00\u4E2A\u5305\u5305\u542B\u4E00\u7EC4\u534F\u540C\u5DE5\u5177\u3002\u5982 ["web-search"] \u5F00\u542F\u8054\u7F51\u641C\u7D22\u3002'
|
|
12154
|
+
},
|
|
12155
|
+
references: {
|
|
12156
|
+
type: "array",
|
|
12157
|
+
description: "\u5F15\u7528\u96C6\u5408\uFF1B\u4F20\u7A7A\u6570\u7EC4 [] \u8868\u793A\u6E05\u7A7A\u3002",
|
|
12158
|
+
items: {
|
|
12159
|
+
type: "object",
|
|
12160
|
+
properties: {
|
|
12161
|
+
dbKey: { type: "string", description: "\u5F15\u7528\u6761\u76EE\u7684\u6570\u636E\u5E93\u952E\u3002" },
|
|
12162
|
+
title: { type: "string", description: "\u5F15\u7528\u5728 UI \u4E2D\u5C55\u793A\u7684\u6807\u9898\u3002" },
|
|
12163
|
+
type: {
|
|
12164
|
+
type: "string",
|
|
12165
|
+
enum: ["knowledge", "instruction", "page"],
|
|
12166
|
+
description: "\u5F15\u7528\u7C7B\u578B\u3002"
|
|
12167
|
+
}
|
|
12168
|
+
},
|
|
12169
|
+
required: ["dbKey"]
|
|
12170
|
+
}
|
|
12171
|
+
},
|
|
12172
|
+
temperature: { type: "number", description: "\u91C7\u6837\u6E29\u5EA6\uFF0C0~2\u3002" },
|
|
12173
|
+
top_p: { type: "number", description: "nucleus sampling\uFF0C0~1\u3002" },
|
|
12174
|
+
frequency_penalty: { type: "number", description: "\u91CD\u590D\u60E9\u7F5A\uFF0C-2~2\u3002" },
|
|
12175
|
+
presence_penalty: { type: "number", description: "\u65B0\u8BDD\u9898\u6FC0\u52B1\uFF0C-2~2\u3002" },
|
|
12176
|
+
max_tokens: { type: "number", description: "\u5355\u6B21\u56DE\u7B54\u6700\u5927 token \u6570\u3002" },
|
|
12177
|
+
reasoning_effort: {
|
|
12178
|
+
type: "string",
|
|
12179
|
+
enum: ["low", "medium", "high"],
|
|
12180
|
+
description: "\u63A8\u7406\u5F3A\u5EA6\u3002"
|
|
12181
|
+
}
|
|
12182
|
+
};
|
|
12183
|
+
var validateUpdateArgs = (userId, options) => {
|
|
12184
|
+
if (!userId) throw new Error("\u66F4\u65B0 Agent \u5931\u8D25\uFF1A\u5F53\u524D\u672A\u767B\u5F55\u6216\u7F3A\u5C11 userId\u3002");
|
|
12185
|
+
if (options?.requireAgentId && !options?.agentId?.trim()) {
|
|
12186
|
+
throw new Error("\u66F4\u65B0 Agent \u5931\u8D25\uFF1A\u5FC5\u987B\u63D0\u4F9B\u975E\u7A7A\u7684 agentId\u3002");
|
|
12187
|
+
}
|
|
12188
|
+
};
|
|
12189
|
+
var fetchAgentByDbKey = async (dbKey, db) => {
|
|
12190
|
+
if (!db) return void 0;
|
|
12191
|
+
return db.get(dbKey).catch(() => void 0);
|
|
12192
|
+
};
|
|
12193
|
+
var extractAgentId = (dbKey) => {
|
|
12194
|
+
const parts = dbKey.trim().split("-");
|
|
12195
|
+
return parts.length >= 3 ? parts.slice(2).join("-") : dbKey.trim();
|
|
12196
|
+
};
|
|
12197
|
+
var buildPatch = (args) => {
|
|
12198
|
+
const patch2 = {};
|
|
12199
|
+
const {
|
|
12200
|
+
name,
|
|
12201
|
+
handle,
|
|
12202
|
+
model,
|
|
12203
|
+
provider,
|
|
12204
|
+
prompt,
|
|
12205
|
+
introduction,
|
|
12206
|
+
greeting,
|
|
12207
|
+
isPublic,
|
|
12208
|
+
allowFork,
|
|
12209
|
+
tags,
|
|
12210
|
+
tools,
|
|
12211
|
+
disabledTools,
|
|
12212
|
+
enabledPacks,
|
|
12213
|
+
references,
|
|
12214
|
+
temperature,
|
|
12215
|
+
top_p,
|
|
12216
|
+
frequency_penalty,
|
|
12217
|
+
presence_penalty,
|
|
12218
|
+
max_tokens,
|
|
12219
|
+
reasoning_effort
|
|
12220
|
+
} = args;
|
|
12221
|
+
if (name !== void 0) patch2.name = String(name).trim();
|
|
12222
|
+
if (handle !== void 0) patch2.handle = String(handle).trim();
|
|
12223
|
+
if (model !== void 0) patch2.model = String(model).trim();
|
|
12224
|
+
if (provider !== void 0) patch2.provider = String(provider).trim();
|
|
12225
|
+
if (prompt !== void 0) patch2.prompt = prompt;
|
|
12226
|
+
if (introduction !== void 0) patch2.introduction = introduction;
|
|
12227
|
+
if (greeting !== void 0) patch2.greeting = greeting;
|
|
12228
|
+
if (isPublic !== void 0) patch2.isPublic = isPublic;
|
|
12229
|
+
if (allowFork !== void 0) patch2.allowFork = allowFork;
|
|
12230
|
+
if (tags !== void 0) patch2.tags = tags;
|
|
12231
|
+
if (tools !== void 0) patch2.tools = tools ?? [];
|
|
12232
|
+
if (disabledTools !== void 0) patch2.disabledTools = disabledTools ?? [];
|
|
12233
|
+
if (enabledPacks !== void 0) patch2.enabledPacks = enabledPacks ?? [];
|
|
12234
|
+
if (references !== void 0) patch2.references = references;
|
|
12235
|
+
if (temperature !== void 0) patch2.temperature = temperature;
|
|
12236
|
+
if (top_p !== void 0) patch2.top_p = top_p;
|
|
12237
|
+
if (frequency_penalty !== void 0) patch2.frequency_penalty = frequency_penalty;
|
|
12238
|
+
if (presence_penalty !== void 0) patch2.presence_penalty = presence_penalty;
|
|
12239
|
+
if (max_tokens !== void 0) patch2.max_tokens = max_tokens;
|
|
12240
|
+
if (reasoning_effort !== void 0) patch2.reasoning_effort = reasoning_effort;
|
|
12241
|
+
return patch2;
|
|
12242
|
+
};
|
|
12243
|
+
var AGENT_UPDATE_FIELD_NAME_SET = new Set(AGENT_UPDATE_FIELD_NAMES);
|
|
12244
|
+
var listRequestedFields = (args) => Object.keys(args).filter(
|
|
12245
|
+
(key) => key !== "agentId" && key !== "__confirmedSelfEvolution" && AGENT_UPDATE_FIELD_NAME_SET.has(key) && args[key] !== void 0
|
|
12246
|
+
);
|
|
12247
|
+
var assertAgentUpdateConfirmation = ({
|
|
12248
|
+
scope,
|
|
12249
|
+
requestedFields,
|
|
12250
|
+
confirmed,
|
|
12251
|
+
autoApprovedFields = []
|
|
12252
|
+
}) => {
|
|
12253
|
+
if (requestedFields.length === 0 || confirmed) return;
|
|
12254
|
+
const allowedFields = scope === "self" ? requestedFields.filter((field) => autoApprovedFields.includes(field)) : [];
|
|
12255
|
+
const blockedFields = scope === "self" ? requestedFields.filter((field) => !autoApprovedFields.includes(field)) : requestedFields;
|
|
12256
|
+
if (blockedFields.length === 0) return;
|
|
12257
|
+
const displayPrefix = scope === "self" ? "updateSelf" : "updateAgent";
|
|
12258
|
+
throw new ToolResultError(
|
|
12259
|
+
scope === "self" ? `\u5F53\u524D\u81EA\u6211\u66F4\u65B0\u5B57\u6BB5\u9700\u8981\u5148\u786E\u8BA4\uFF1A${blockedFields.join(", ")}` : `\u5F53\u524D\u901A\u7528 Agent \u66F4\u65B0\u9700\u8981\u5148\u786E\u8BA4\uFF1A${blockedFields.join(", ")}`,
|
|
12260
|
+
{
|
|
12261
|
+
code: "agent_update_requires_confirmation",
|
|
12262
|
+
retryable: false,
|
|
12263
|
+
displayData: `${displayPrefix} \u9700\u8981\u5148\u786E\u8BA4\uFF1A${blockedFields.join(", ")}`,
|
|
12264
|
+
rawData: {
|
|
12265
|
+
error: "agent_update_requires_confirmation",
|
|
12266
|
+
message: scope === "self" ? "\u5F53\u524D\u81EA\u6211\u66F4\u65B0\u5305\u542B\u9700\u8981\u7528\u6237\u786E\u8BA4\u7684\u5B57\u6BB5\u3002" : "\u5F53\u524D\u901A\u7528 Agent \u66F4\u65B0\u9ED8\u8BA4\u8981\u6C42\u7528\u6237\u786E\u8BA4\u3002",
|
|
12267
|
+
policy: {
|
|
12268
|
+
capability: scope === "self" ? "self_update" : "agent_update",
|
|
12269
|
+
scope,
|
|
12270
|
+
decision: "ask",
|
|
12271
|
+
requestedFields,
|
|
12272
|
+
allowedFields,
|
|
12273
|
+
blockedFields,
|
|
12274
|
+
autoApprovedFields
|
|
12275
|
+
}
|
|
12276
|
+
}
|
|
12277
|
+
}
|
|
12278
|
+
);
|
|
12279
|
+
};
|
|
12280
|
+
var buildRawDataWithUpdateInfo = (agent, previousAgent, requestedFields) => {
|
|
12281
|
+
const changes = {};
|
|
12282
|
+
for (const key of requestedFields) {
|
|
12283
|
+
const newVal = agent[key];
|
|
12284
|
+
const oldVal = previousAgent[key];
|
|
12285
|
+
if (JSON.stringify(newVal) !== JSON.stringify(oldVal)) {
|
|
12286
|
+
changes[key] = { o: oldVal, n: newVal };
|
|
12287
|
+
}
|
|
12288
|
+
}
|
|
12289
|
+
return {
|
|
12290
|
+
...agent,
|
|
12291
|
+
_isUpdate: true,
|
|
12292
|
+
_changes: Object.keys(changes).length > 0 ? changes : void 0
|
|
12293
|
+
};
|
|
12294
|
+
};
|
|
12295
|
+
var formatUpdatedAgentOutput = (agent) => [
|
|
12296
|
+
`\u2705 \u5DF2\u66F4\u65B0 Agent\uFF1A${agent.name ?? "(\u540D\u79F0\u672A\u53D8)"}`,
|
|
12297
|
+
`- ID: ${agent.id}`,
|
|
12298
|
+
`- \u662F\u5426\u516C\u5F00: ${agent.isPublic ? "\u662F" : "\u5426"}`,
|
|
12299
|
+
`- \u5141\u8BB8\u4ED6\u4EBA\u590D\u5236: ${agent.allowFork ? "\u662F" : "\u5426"}`,
|
|
12300
|
+
agent.model && `- \u6A21\u578B: ${agent.model}`,
|
|
12301
|
+
agent.provider && `- Provider: ${agent.provider}`,
|
|
12302
|
+
agent.tags?.length && `- \u6807\u7B7E: ${agent.tags.join(", ")}`,
|
|
12303
|
+
typeof agent.temperature === "number" && `- temperature: ${agent.temperature}`
|
|
12304
|
+
].filter(Boolean).join("\n");
|
|
12305
|
+
var buildUpdateThunkPreviousAgent = (previousAgent, userId) => {
|
|
12306
|
+
const ownerUserId = String(previousAgent.userId ?? "").trim();
|
|
12307
|
+
if (previousAgent.isPublic && ownerUserId !== userId) {
|
|
12308
|
+
return {
|
|
12309
|
+
...previousAgent,
|
|
12310
|
+
isPublic: false
|
|
12311
|
+
};
|
|
12312
|
+
}
|
|
12313
|
+
return previousAgent;
|
|
12314
|
+
};
|
|
12315
|
+
|
|
12316
|
+
// packages/ai/agent/forkAgent.ts
|
|
12317
|
+
var COPY_KEYS = [
|
|
12318
|
+
"prompt",
|
|
12319
|
+
"introduction",
|
|
12320
|
+
"greeting",
|
|
12321
|
+
"tools",
|
|
12322
|
+
"hasVision",
|
|
12323
|
+
"hasImageOutput",
|
|
12324
|
+
"imageModel",
|
|
12325
|
+
"imageConfig",
|
|
12326
|
+
"imageWorkflow",
|
|
12327
|
+
"defaultInteractionMode"
|
|
12328
|
+
];
|
|
12329
|
+
var PROVIDER_CONFIG_KEYS = [
|
|
12330
|
+
"provider",
|
|
12331
|
+
"apiSource",
|
|
12332
|
+
"customProviderUrl",
|
|
12333
|
+
"useServerProxy",
|
|
12334
|
+
"apiKeyHeader",
|
|
12335
|
+
"cliProvider"
|
|
12336
|
+
];
|
|
12337
|
+
var REASONING_CONFIG_KEYS = [
|
|
12338
|
+
"enableThinking",
|
|
12339
|
+
"thinkingBudget",
|
|
12340
|
+
"reasoning_effort"
|
|
12341
|
+
];
|
|
12342
|
+
var OPTIONAL_GENERATION_KEYS = [
|
|
12343
|
+
"temperature",
|
|
12344
|
+
"top_p",
|
|
12345
|
+
"max_tokens",
|
|
12346
|
+
"frequency_penalty",
|
|
12347
|
+
"presence_penalty"
|
|
12348
|
+
];
|
|
12349
|
+
var FORCED_SAFE_DEFAULTS = {
|
|
12350
|
+
isPublic: false,
|
|
12351
|
+
allowFork: false,
|
|
12352
|
+
whitelist: [],
|
|
12353
|
+
references: [],
|
|
12354
|
+
inputPrice: 0,
|
|
12355
|
+
outputPrice: 0,
|
|
12356
|
+
// Never clone a plaintext secret or another Agent's local credential-broker reference.
|
|
12357
|
+
apiKey: "",
|
|
12358
|
+
credentialRef: "",
|
|
12359
|
+
apiKeyFromAgentKey: "",
|
|
12360
|
+
credentialSynced: false,
|
|
12361
|
+
// Machine bindings are owner/runtime specific even when the account is the same.
|
|
12362
|
+
machineId: ""
|
|
12363
|
+
};
|
|
12364
|
+
var NAME_MAX_LENGTH = 50;
|
|
12365
|
+
var API_SOURCES = /* @__PURE__ */ new Set(["platform", "custom", "cli"]);
|
|
12366
|
+
var trimmed = (value) => typeof value === "string" ? value.trim() : "";
|
|
12367
|
+
function getForkedAgentProviderExpectation(formData) {
|
|
12368
|
+
const apiKeyRef = trimmed(formData.apiKeyRef);
|
|
12369
|
+
const apiSource = formData.apiSource;
|
|
12370
|
+
return {
|
|
12371
|
+
model: formData.model,
|
|
12372
|
+
apiSource,
|
|
12373
|
+
provider: formData.provider,
|
|
12374
|
+
credentialConfigured: apiKeyRef.length > 0,
|
|
12375
|
+
apiKeyRef
|
|
12376
|
+
};
|
|
12377
|
+
}
|
|
12378
|
+
function assertForkedAgentProviderConfig(created, expected) {
|
|
12379
|
+
const actualApiKeyRef = trimmed(created.apiKeyRef);
|
|
12380
|
+
const actualCredentialConfigured = typeof created.credentialConfigured === "boolean" ? created.credentialConfigured : actualApiKeyRef.length > 0;
|
|
12381
|
+
const mismatches = [];
|
|
12382
|
+
if (created.model !== expected.model) mismatches.push("model");
|
|
12383
|
+
if (created.apiSource !== expected.apiSource) mismatches.push("apiSource");
|
|
12384
|
+
if (created.provider !== expected.provider) mismatches.push("provider");
|
|
12385
|
+
if (actualCredentialConfigured !== expected.credentialConfigured) {
|
|
12386
|
+
mismatches.push("credentialConfigured");
|
|
12387
|
+
}
|
|
12388
|
+
if (actualApiKeyRef !== expected.apiKeyRef) mismatches.push("apiKeyRef");
|
|
12389
|
+
if (mismatches.length) {
|
|
12390
|
+
throw new Error(`Agent \u521B\u5EFA\u540E\u914D\u7F6E\u6821\u9A8C\u5931\u8D25\uFF1A${mismatches.join(", ")}`);
|
|
12391
|
+
}
|
|
12392
|
+
}
|
|
12393
|
+
function buildForkAgentFormData(source, options) {
|
|
12394
|
+
if (!source || source.allowFork !== true) return null;
|
|
12395
|
+
const result = {};
|
|
12396
|
+
for (const key of [
|
|
12397
|
+
...COPY_KEYS,
|
|
12398
|
+
...PROVIDER_CONFIG_KEYS,
|
|
12399
|
+
...REASONING_CONFIG_KEYS,
|
|
12400
|
+
...OPTIONAL_GENERATION_KEYS
|
|
12401
|
+
]) {
|
|
12402
|
+
if (source[key] !== void 0) result[key] = source[key];
|
|
12403
|
+
}
|
|
12404
|
+
if (source.model !== void 0) result.model = source.model;
|
|
12405
|
+
const modelOverride = trimmed(options?.overrides?.model);
|
|
12406
|
+
if (modelOverride) result.model = modelOverride;
|
|
12407
|
+
const explicitApiSource = options?.overrides?.apiSource;
|
|
12408
|
+
if (explicitApiSource) {
|
|
12409
|
+
result.apiSource = explicitApiSource;
|
|
12410
|
+
} else if (!API_SOURCES.has(source.apiSource)) {
|
|
12411
|
+
delete result.apiSource;
|
|
12412
|
+
}
|
|
12413
|
+
const sourceOwner = trimmed(source.userId);
|
|
12414
|
+
const targetOwner = trimmed(options?.targetUserId);
|
|
12415
|
+
result.apiKeyRef = sourceOwner && targetOwner && sourceOwner === targetOwner ? trimmed(source.apiKeyRef) : "";
|
|
12416
|
+
if (result.apiSource === "platform") {
|
|
12417
|
+
result.customProviderUrl = "";
|
|
12418
|
+
result.cliProvider = "";
|
|
12419
|
+
result.apiKeyRef = "";
|
|
12420
|
+
result.apiKeyHeader = "";
|
|
12421
|
+
result.useServerProxy = true;
|
|
12422
|
+
}
|
|
12423
|
+
const explicitName = options?.overrides && "name" in options.overrides ? trimmed(options.overrides.name) : "";
|
|
12424
|
+
const sourceName = trimmed(source.name);
|
|
12425
|
+
const suffix = options?.nameSuffix ?? " \u526F\u672C";
|
|
12426
|
+
result.name = (explicitName || (sourceName ? `${sourceName}${suffix}`.trim() : "\u65B0 AI")).slice(0, NAME_MAX_LENGTH);
|
|
12427
|
+
const rawTags = source.tags;
|
|
12428
|
+
if (Array.isArray(rawTags)) {
|
|
12429
|
+
result.tags = rawTags.map((tag) => String(tag ?? "").trim()).filter(Boolean).join(",");
|
|
12430
|
+
} else {
|
|
12431
|
+
result.tags = typeof rawTags === "string" ? rawTags.trim() : "";
|
|
12432
|
+
}
|
|
12433
|
+
Object.assign(result, FORCED_SAFE_DEFAULTS);
|
|
12434
|
+
return result;
|
|
12435
|
+
}
|
|
12436
|
+
|
|
12437
|
+
// packages/ai/tools/agent/createAgentTool.ts
|
|
12438
|
+
var HOSTED_EXEC_RUNTIME_TOOL_POLICY = {
|
|
12439
|
+
version: 1,
|
|
12440
|
+
runtimeTools: ["execShell"],
|
|
12441
|
+
workspace: { mode: "lease" }
|
|
12442
|
+
};
|
|
12443
|
+
var findModelConfig = async (modelName, provider) => {
|
|
12444
|
+
const { ALL_MODELS } = await import("./models-FAMINFZ7.js");
|
|
12445
|
+
const name = toTrimmedString(modelName);
|
|
12446
|
+
const prov = toTrimmedString(provider ?? "");
|
|
12447
|
+
if (!name) return null;
|
|
12448
|
+
if (prov) {
|
|
12449
|
+
const exact = ALL_MODELS.find(
|
|
12450
|
+
(m) => m.name === name && m.provider === prov
|
|
12451
|
+
);
|
|
12452
|
+
if (exact) return exact;
|
|
12453
|
+
}
|
|
12454
|
+
const matches = ALL_MODELS.filter((m) => m.name === name);
|
|
12455
|
+
if (matches.length === 1) return matches[0];
|
|
12456
|
+
if (matches.length > 1 && !prov) {
|
|
12457
|
+
console.warn(
|
|
12458
|
+
"[createAgentTool] findModelConfig: duplicate model names without provider",
|
|
12459
|
+
{
|
|
12460
|
+
modelName: name,
|
|
12461
|
+
providers: matches.map((m) => m.provider)
|
|
12462
|
+
}
|
|
12463
|
+
);
|
|
12464
|
+
}
|
|
12465
|
+
return null;
|
|
12466
|
+
};
|
|
12467
|
+
var createAgentToolFunctionSchema = {
|
|
12468
|
+
name: "createAgent",
|
|
12469
|
+
description: i18n_default.t("tools.createAgent.description"),
|
|
12470
|
+
parameters: {
|
|
12471
|
+
type: "object",
|
|
12472
|
+
properties: {
|
|
12473
|
+
name: {
|
|
12474
|
+
type: "string",
|
|
12475
|
+
description: i18n_default.t("tools.createAgent.params.name")
|
|
12476
|
+
},
|
|
12477
|
+
model: {
|
|
12478
|
+
type: "string",
|
|
12479
|
+
description: i18n_default.t("tools.createAgent.params.model")
|
|
12480
|
+
},
|
|
12481
|
+
provider: {
|
|
12482
|
+
type: "string",
|
|
12483
|
+
description: i18n_default.t("tools.createAgent.params.provider")
|
|
12484
|
+
},
|
|
12485
|
+
apiSource: {
|
|
12486
|
+
type: "string",
|
|
12487
|
+
enum: ["platform"],
|
|
12488
|
+
description: "\u663E\u5F0F\u9009\u62E9\u5E73\u53F0\u8BA1\u8D39\uFF1B\u4E0D\u4F20\u5219\u7EE7\u627F\u5F53\u524D Agent \u7684 API \u6765\u6E90\u3002"
|
|
12489
|
+
},
|
|
12490
|
+
prompt: {
|
|
12491
|
+
type: "string",
|
|
12492
|
+
description: i18n_default.t("tools.createAgent.params.prompt")
|
|
12493
|
+
},
|
|
12494
|
+
introduction: {
|
|
12495
|
+
type: "string",
|
|
12496
|
+
description: i18n_default.t("tools.createAgent.params.introduction")
|
|
12497
|
+
},
|
|
12498
|
+
greeting: {
|
|
12499
|
+
description: i18n_default.t("tools.createAgent.params.greeting.desc"),
|
|
12500
|
+
anyOf: [
|
|
12501
|
+
{
|
|
12502
|
+
type: "string",
|
|
12503
|
+
description: i18n_default.t(
|
|
12504
|
+
"tools.createAgent.params.greeting.stringDesc"
|
|
12505
|
+
)
|
|
12506
|
+
},
|
|
12507
|
+
{
|
|
12508
|
+
type: "object",
|
|
12509
|
+
description: i18n_default.t(
|
|
12510
|
+
"tools.createAgent.params.greeting.objectDesc"
|
|
12511
|
+
),
|
|
12512
|
+
properties: {
|
|
12513
|
+
text: {
|
|
12514
|
+
type: "string",
|
|
12515
|
+
description: i18n_default.t(
|
|
12516
|
+
"tools.createAgent.params.greeting.texts.text"
|
|
12517
|
+
)
|
|
12518
|
+
},
|
|
12519
|
+
menu: {
|
|
12520
|
+
type: "array",
|
|
12521
|
+
description: i18n_default.t(
|
|
12522
|
+
"tools.createAgent.params.greeting.menu.desc"
|
|
12523
|
+
),
|
|
12524
|
+
items: {
|
|
12525
|
+
type: "object",
|
|
12526
|
+
properties: {
|
|
12527
|
+
id: {
|
|
12528
|
+
type: "string",
|
|
12529
|
+
description: i18n_default.t(
|
|
12530
|
+
"tools.createAgent.params.greeting.menu.id"
|
|
12531
|
+
)
|
|
12532
|
+
},
|
|
12533
|
+
label: {
|
|
12534
|
+
type: "string",
|
|
12535
|
+
description: i18n_default.t(
|
|
12536
|
+
"tools.createAgent.params.greeting.menu.label"
|
|
12537
|
+
)
|
|
12538
|
+
},
|
|
12539
|
+
userMessage: {
|
|
12540
|
+
type: "string",
|
|
12541
|
+
description: i18n_default.t(
|
|
12542
|
+
"tools.createAgent.params.greeting.menu.userMessage"
|
|
12543
|
+
)
|
|
12544
|
+
}
|
|
12545
|
+
},
|
|
12546
|
+
required: ["id", "label"]
|
|
12547
|
+
}
|
|
12548
|
+
}
|
|
12549
|
+
}
|
|
12550
|
+
}
|
|
12551
|
+
]
|
|
12552
|
+
},
|
|
12553
|
+
isPublic: {
|
|
12554
|
+
type: "boolean",
|
|
12555
|
+
description: i18n_default.t("tools.createAgent.params.isPublic")
|
|
12556
|
+
},
|
|
12557
|
+
allowFork: {
|
|
12558
|
+
type: "boolean",
|
|
12559
|
+
description: i18n_default.t("tools.createAgent.params.allowFork")
|
|
12560
|
+
},
|
|
12561
|
+
tags: {
|
|
12562
|
+
type: "array",
|
|
12563
|
+
items: { type: "string" },
|
|
12564
|
+
description: i18n_default.t("tools.createAgent.params.tags")
|
|
12565
|
+
},
|
|
12566
|
+
tools: {
|
|
12567
|
+
type: "array",
|
|
12568
|
+
items: { type: "string" },
|
|
12569
|
+
description: i18n_default.t("tools.createAgent.params.tools")
|
|
12570
|
+
},
|
|
12571
|
+
disabledTools: {
|
|
12026
12572
|
type: "array",
|
|
12027
12573
|
items: { type: "string" },
|
|
12028
12574
|
description: "\u660E\u786E\u7981\u7528\u7684\u9ED8\u8BA4\u5DE5\u5177\u540D\u79F0\u6570\u7EC4\uFF08\u5982 exa_search\u3001fetchWebpage\uFF09\u3002\u8FD9\u4E9B\u5DE5\u5177\u5373\u4F7F\u88AB\u5E73\u53F0\u9ED8\u8BA4\u6CE8\u5165\u4E5F\u4E0D\u4F1A\u53D1\u7ED9\u6A21\u578B\u3002"
|
|
@@ -12102,8 +12648,7 @@ var createAgentToolFunctionSchema = {
|
|
|
12102
12648
|
)
|
|
12103
12649
|
}
|
|
12104
12650
|
},
|
|
12105
|
-
|
|
12106
|
-
required: ["name", "model", "provider"]
|
|
12651
|
+
required: ["name"]
|
|
12107
12652
|
}
|
|
12108
12653
|
};
|
|
12109
12654
|
var normalizeTags = (tags) => {
|
|
@@ -12113,7 +12658,7 @@ var normalizeTags = (tags) => {
|
|
|
12113
12658
|
}
|
|
12114
12659
|
return String(tags);
|
|
12115
12660
|
};
|
|
12116
|
-
var
|
|
12661
|
+
var buildPlatformFormDataFromArgs = async (args) => {
|
|
12117
12662
|
const {
|
|
12118
12663
|
name,
|
|
12119
12664
|
model,
|
|
@@ -12141,7 +12686,7 @@ var buildFormDataFromArgs = async (args) => {
|
|
|
12141
12686
|
const trimmedModel = toTrimmedString(model);
|
|
12142
12687
|
const trimmedProvider = toTrimmedString(provider);
|
|
12143
12688
|
const modelConfig = await findModelConfig(trimmedModel, trimmedProvider);
|
|
12144
|
-
const { getModelPricing } = await import("./getPricing-
|
|
12689
|
+
const { getModelPricing } = await import("./getPricing-NM3NUTAS.js");
|
|
12145
12690
|
const normalizedTools = tools ?? [];
|
|
12146
12691
|
const resolvedRuntimeToolPolicy = runtimeToolPolicy ?? (normalizedTools.includes("execShell") ? HOSTED_EXEC_RUNTIME_TOOL_POLICY : void 0);
|
|
12147
12692
|
const formData = {
|
|
@@ -12199,7 +12744,7 @@ var findSpaceConfig = (nameOrId, allSpaces) => {
|
|
|
12199
12744
|
if (byName) return { spaceId: byName.spaceId, name: byName.spaceName };
|
|
12200
12745
|
return null;
|
|
12201
12746
|
};
|
|
12202
|
-
async function createAgentToolFunc(args, thunkApi) {
|
|
12747
|
+
async function createAgentToolFunc(args, thunkApi, runtime) {
|
|
12203
12748
|
const state2 = thunkApi.getState();
|
|
12204
12749
|
const currentUserId = selectIdentityUserId(state2);
|
|
12205
12750
|
const currentBalance = selectIdentityUserBalance(state2);
|
|
@@ -12207,16 +12752,10 @@ async function createAgentToolFunc(args, thunkApi) {
|
|
|
12207
12752
|
if (!currentUserId) {
|
|
12208
12753
|
throw new Error("\u521B\u5EFA Agent \u5931\u8D25\uFF1A\u5F53\u524D\u672A\u767B\u5F55\u6216\u7F3A\u5C11 userId\u3002");
|
|
12209
12754
|
}
|
|
12210
|
-
const { name,
|
|
12755
|
+
const { name, linkedSpaces } = args || {};
|
|
12211
12756
|
if (!name || typeof name !== "string" || !name.trim()) {
|
|
12212
12757
|
throw new Error("\u521B\u5EFA Agent \u5931\u8D25\uFF1A\u5FC5\u987B\u63D0\u4F9B\u975E\u7A7A\u7684 name \u5B57\u6BB5\u3002");
|
|
12213
12758
|
}
|
|
12214
|
-
if (!model || typeof model !== "string" || !model.trim()) {
|
|
12215
|
-
throw new Error("\u521B\u5EFA Agent \u5931\u8D25\uFF1A\u5FC5\u987B\u63D0\u4F9B\u975E\u7A7A\u7684 model \u5B57\u6BB5\u3002");
|
|
12216
|
-
}
|
|
12217
|
-
if (!provider || typeof provider !== "string" || !provider.trim()) {
|
|
12218
|
-
throw new Error("\u521B\u5EFA Agent \u5931\u8D25\uFF1A\u5FC5\u987B\u63D0\u4F9B\u975E\u7A7A\u7684 provider \u5B57\u6BB5\u3002");
|
|
12219
|
-
}
|
|
12220
12759
|
const resolvedLinkedSpaces = [];
|
|
12221
12760
|
if (Array.isArray(linkedSpaces) && linkedSpaces.length > 0) {
|
|
12222
12761
|
const notFound = [];
|
|
@@ -12238,8 +12777,52 @@ ${availableList}`
|
|
|
12238
12777
|
);
|
|
12239
12778
|
}
|
|
12240
12779
|
}
|
|
12241
|
-
const
|
|
12242
|
-
|
|
12780
|
+
const db = thunkApi.extra?.db;
|
|
12781
|
+
const sourceAgent = runtime?.agentKey ? await fetchAgentByDbKey(runtime.agentKey, db) : null;
|
|
12782
|
+
let formData;
|
|
12783
|
+
if (sourceAgent) {
|
|
12784
|
+
const inherited = buildForkAgentFormData(
|
|
12785
|
+
// Internal creation is not a marketplace fork; policy still enforces all secret boundaries.
|
|
12786
|
+
{ ...sourceAgent, allowFork: true },
|
|
12787
|
+
{
|
|
12788
|
+
targetUserId: currentUserId,
|
|
12789
|
+
overrides: {
|
|
12790
|
+
name: toTrimmedString(name),
|
|
12791
|
+
...typeof args.model === "string" ? { model: toTrimmedString(args.model) } : {},
|
|
12792
|
+
...args.apiSource === "platform" ? { apiSource: "platform" } : {}
|
|
12793
|
+
}
|
|
12794
|
+
}
|
|
12795
|
+
);
|
|
12796
|
+
if (!inherited) throw new Error("\u521B\u5EFA Agent \u5931\u8D25\uFF1A\u65E0\u6CD5\u7EE7\u627F\u5F53\u524D Agent \u914D\u7F6E\u3002");
|
|
12797
|
+
Object.assign(inherited, {
|
|
12798
|
+
name: toTrimmedString(name),
|
|
12799
|
+
...args.prompt !== void 0 ? { prompt: args.prompt } : {},
|
|
12800
|
+
...args.introduction !== void 0 ? { introduction: args.introduction } : {},
|
|
12801
|
+
...args.greeting !== void 0 ? { greeting: args.greeting } : {},
|
|
12802
|
+
...args.tools !== void 0 ? { tools: args.tools } : {},
|
|
12803
|
+
...args.disabledTools !== void 0 ? { disabledTools: args.disabledTools } : {},
|
|
12804
|
+
...args.enabledPacks !== void 0 ? { enabledPacks: args.enabledPacks } : {},
|
|
12805
|
+
...args.temperature !== void 0 ? { temperature: args.temperature } : {},
|
|
12806
|
+
...args.top_p !== void 0 ? { top_p: args.top_p } : {},
|
|
12807
|
+
...args.frequency_penalty !== void 0 ? { frequency_penalty: args.frequency_penalty } : {},
|
|
12808
|
+
...args.presence_penalty !== void 0 ? { presence_penalty: args.presence_penalty } : {},
|
|
12809
|
+
...args.max_tokens !== void 0 ? { max_tokens: args.max_tokens } : {},
|
|
12810
|
+
...args.reasoning_effort !== void 0 ? { reasoning_effort: args.reasoning_effort } : {},
|
|
12811
|
+
isPublic: !!args.isPublic,
|
|
12812
|
+
allowFork: !!args.allowFork,
|
|
12813
|
+
tags: normalizeTags(args.tags),
|
|
12814
|
+
references: args.references ?? [],
|
|
12815
|
+
linkedSpaces: resolvedLinkedSpaces
|
|
12816
|
+
});
|
|
12817
|
+
formData = inherited;
|
|
12818
|
+
} else {
|
|
12819
|
+
if (!args.model?.trim() || !args.provider?.trim()) {
|
|
12820
|
+
throw new Error("\u521B\u5EFA Agent \u5931\u8D25\uFF1A\u65E0\u6CD5\u8BC6\u522B\u6E90 Agent \u65F6\u5FC5\u987B\u63D0\u4F9B model \u548C provider\u3002");
|
|
12821
|
+
}
|
|
12822
|
+
formData = await buildPlatformFormDataFromArgs(args);
|
|
12823
|
+
formData.linkedSpaces = resolvedLinkedSpaces;
|
|
12824
|
+
}
|
|
12825
|
+
const expectedProviderConfig = getForkedAgentProviderExpectation(formData);
|
|
12243
12826
|
try {
|
|
12244
12827
|
const agent = await thunkApi.dispatch(
|
|
12245
12828
|
createAgent({
|
|
@@ -12248,6 +12831,7 @@ ${availableList}`
|
|
|
12248
12831
|
spaceId: getCurrentSpaceId() || void 0
|
|
12249
12832
|
})
|
|
12250
12833
|
).unwrap();
|
|
12834
|
+
assertForkedAgentProviderConfig(agent, expectedProviderConfig);
|
|
12251
12835
|
const currentSpaceId = getCurrentSpaceId();
|
|
12252
12836
|
if (currentSpaceId) {
|
|
12253
12837
|
const agentDbKey = agent.isPublic ? createAgentKey.public(agent.id) : createAgentKey.private(currentUserId, agent.id);
|
|
@@ -12278,265 +12862,21 @@ ${availableList}`
|
|
|
12278
12862
|
lines.push(`- \u542F\u7528\u5DE5\u5177: ${agent.tools.join(", ")}`);
|
|
12279
12863
|
}
|
|
12280
12864
|
if (typeof agent.temperature === "number") {
|
|
12281
|
-
lines.push(`- temperature: ${agent.temperature}`);
|
|
12282
|
-
}
|
|
12283
|
-
if (typeof currentBalance === "number") {
|
|
12284
|
-
lines.push(`- \u5F53\u524D\u4F59\u989D: ${currentBalance}`);
|
|
12285
|
-
}
|
|
12286
|
-
return {
|
|
12287
|
-
rawData: agent,
|
|
12288
|
-
displayData: lines.join("\n")
|
|
12289
|
-
};
|
|
12290
|
-
} catch (error) {
|
|
12291
|
-
throw new Error(
|
|
12292
|
-
`\u521B\u5EFA Agent \u5931\u8D25\uFF1A${error?.message || "\u672A\u77E5\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"}`
|
|
12293
|
-
);
|
|
12294
|
-
}
|
|
12295
|
-
}
|
|
12296
|
-
|
|
12297
|
-
// packages/ai/tools/toolResultError.ts
|
|
12298
|
-
var ToolResultError = class extends Error {
|
|
12299
|
-
code;
|
|
12300
|
-
rawData;
|
|
12301
|
-
displayData;
|
|
12302
|
-
retryable;
|
|
12303
|
-
constructor(message, options) {
|
|
12304
|
-
super(message);
|
|
12305
|
-
this.name = "ToolResultError";
|
|
12306
|
-
this.code = options?.code;
|
|
12307
|
-
this.rawData = options?.rawData;
|
|
12308
|
-
this.displayData = options?.displayData;
|
|
12309
|
-
this.retryable = options?.retryable;
|
|
12310
|
-
}
|
|
12311
|
-
};
|
|
12312
|
-
var getToolResultErrorData = (error) => {
|
|
12313
|
-
if (!error || typeof error !== "object") return null;
|
|
12314
|
-
const candidate = error;
|
|
12315
|
-
return {
|
|
12316
|
-
rawData: candidate.rawData,
|
|
12317
|
-
displayData: candidate.displayData,
|
|
12318
|
-
code: candidate.code,
|
|
12319
|
-
retryable: candidate.retryable,
|
|
12320
|
-
message: candidate.message
|
|
12321
|
-
};
|
|
12322
|
-
};
|
|
12323
|
-
|
|
12324
|
-
// packages/ai/tools/agent/agentUpdateShared.ts
|
|
12325
|
-
var agentUpdateFieldSchemaProperties = {
|
|
12326
|
-
name: { type: "string", description: "Agent \u7684\u65B0\u540D\u79F0\u3002" },
|
|
12327
|
-
handle: { type: "string", description: "\u7A33\u5B9A\u7684\u673A\u5668\u8C03\u7528\u540D\uFF0C\u4F8B\u5982 pm\u3001fullstack\u3001reviewer\u3002" },
|
|
12328
|
-
model: { type: "string", description: "\u6A21\u578B\u540D\u79F0\uFF0C\u4F8B\u5982 'gpt-4o-mini'\u3002" },
|
|
12329
|
-
provider: { type: "string", description: "\u6A21\u578B\u63D0\u4F9B\u65B9\uFF0C\u4F8B\u5982 'openai'\u3002\u82E5\u4E0D\u786E\u5B9A\u53EF\u7559\u7A7A\u3002" },
|
|
12330
|
-
prompt: { type: "string", description: "\u7CFB\u7EDF\u63D0\u793A\u8BCD\uFF0C\u63CF\u8FF0 Agent \u7684\u89D2\u8272\u548C\u884C\u4E3A\u3002" },
|
|
12331
|
-
introduction: { type: "string", description: "\u9762\u5411\u7EC8\u7AEF\u7528\u6237\u7684\u7B80\u4ECB\u6587\u6848\u3002" },
|
|
12332
|
-
greeting: {
|
|
12333
|
-
description: "\u6B22\u8FCE\u914D\u7F6E\uFF1A\u7EAF\u6587\u672C\u5B57\u7B26\u4E32\uFF0C\u6216\u5305\u542B\u6B22\u8FCE\u8BED + \u83DC\u5355\u7684\u5BF9\u8C61\u3002",
|
|
12334
|
-
anyOf: [
|
|
12335
|
-
{ type: "string", description: "\u7EAF\u6587\u672C\u6B22\u8FCE\u8BED\u3002" },
|
|
12336
|
-
{
|
|
12337
|
-
type: "object",
|
|
12338
|
-
description: "\u7ED3\u6784\u5316\u6B22\u8FCE\u914D\u7F6E\u3002",
|
|
12339
|
-
properties: {
|
|
12340
|
-
text: { type: "string", description: "\u6B22\u8FCE\u8BED\u6587\u672C\u3002" },
|
|
12341
|
-
menu: {
|
|
12342
|
-
type: "array",
|
|
12343
|
-
description: "\u5FEB\u6377\u83DC\u5355\u9879\u3002",
|
|
12344
|
-
items: {
|
|
12345
|
-
type: "object",
|
|
12346
|
-
properties: {
|
|
12347
|
-
id: { type: "string", description: "\u83DC\u5355\u9879\u552F\u4E00\u6807\u8BC6\u3002" },
|
|
12348
|
-
label: { type: "string", description: "\u6309\u94AE\u663E\u793A\u6587\u6848\u3002" },
|
|
12349
|
-
userMessage: { type: "string", description: "\u70B9\u51FB\u540E\u53D1\u9001\u7ED9 Agent \u7684\u6D88\u606F\u3002" }
|
|
12350
|
-
},
|
|
12351
|
-
required: ["id", "label"]
|
|
12352
|
-
}
|
|
12353
|
-
}
|
|
12354
|
-
}
|
|
12355
|
-
}
|
|
12356
|
-
]
|
|
12357
|
-
},
|
|
12358
|
-
isPublic: { type: "boolean", description: "\u662F\u5426\u516C\u5F00\u5230\u5E94\u7528\u5E02\u573A\u3002" },
|
|
12359
|
-
allowFork: { type: "boolean", description: "\u662F\u5426\u5141\u8BB8\u5176\u4ED6\u7528\u6237\u628A\u8FD9\u4E2A AI \u590D\u5236\u4E00\u4EFD\u5230\u81EA\u5DF1\u7684\u7A7A\u95F4\u3002" },
|
|
12360
|
-
tags: {
|
|
12361
|
-
type: "array",
|
|
12362
|
-
items: { type: "string" },
|
|
12363
|
-
description: "\u6807\u7B7E\u5217\u8868\uFF1B\u4F20\u7A7A\u6570\u7EC4 [] \u8868\u793A\u6E05\u7A7A\u3002"
|
|
12364
|
-
},
|
|
12365
|
-
tools: {
|
|
12366
|
-
type: "array",
|
|
12367
|
-
items: { type: "string" },
|
|
12368
|
-
description: "\u5141\u8BB8\u8C03\u7528\u7684\u5DE5\u5177\u540D\u79F0\u6570\u7EC4\u3002"
|
|
12369
|
-
},
|
|
12370
|
-
disabledTools: {
|
|
12371
|
-
type: "array",
|
|
12372
|
-
items: { type: "string" },
|
|
12373
|
-
description: "\u660E\u786E\u7981\u7528\u7684\u9ED8\u8BA4\u5DE5\u5177\u540D\u79F0\u6570\u7EC4\uFF08\u5982 exa_search\u3001fetchWebpage\uFF09\u3002\u8FD9\u4E9B\u5DE5\u5177\u5373\u4F7F\u88AB\u5E73\u53F0\u9ED8\u8BA4\u6CE8\u5165\u4E5F\u4E0D\u4F1A\u53D1\u7ED9\u6A21\u578B\uFF0C\u4ECE\u6839\u4E0A\u8282\u7701 token\u3002"
|
|
12374
|
-
},
|
|
12375
|
-
enabledPacks: {
|
|
12376
|
-
type: "array",
|
|
12377
|
-
items: { type: "string", enum: CAPABILITY_PACKS.map((p) => p.id) },
|
|
12378
|
-
description: '\u542F\u7528\u7684\u80FD\u529B\u5305 ID \u6570\u7EC4\u3002\u80FD\u529B\u5305\u662F\u9762\u5411\u7528\u6237\u7684\u5DE5\u5177\u5206\u7EC4\uFF0C\u4E00\u4E2A\u5305\u5305\u542B\u4E00\u7EC4\u534F\u540C\u5DE5\u5177\u3002\u5982 ["web-search"] \u5F00\u542F\u8054\u7F51\u641C\u7D22\u3002'
|
|
12379
|
-
},
|
|
12380
|
-
references: {
|
|
12381
|
-
type: "array",
|
|
12382
|
-
description: "\u5F15\u7528\u96C6\u5408\uFF1B\u4F20\u7A7A\u6570\u7EC4 [] \u8868\u793A\u6E05\u7A7A\u3002",
|
|
12383
|
-
items: {
|
|
12384
|
-
type: "object",
|
|
12385
|
-
properties: {
|
|
12386
|
-
dbKey: { type: "string", description: "\u5F15\u7528\u6761\u76EE\u7684\u6570\u636E\u5E93\u952E\u3002" },
|
|
12387
|
-
title: { type: "string", description: "\u5F15\u7528\u5728 UI \u4E2D\u5C55\u793A\u7684\u6807\u9898\u3002" },
|
|
12388
|
-
type: {
|
|
12389
|
-
type: "string",
|
|
12390
|
-
enum: ["knowledge", "instruction", "page"],
|
|
12391
|
-
description: "\u5F15\u7528\u7C7B\u578B\u3002"
|
|
12392
|
-
}
|
|
12393
|
-
},
|
|
12394
|
-
required: ["dbKey"]
|
|
12395
|
-
}
|
|
12396
|
-
},
|
|
12397
|
-
temperature: { type: "number", description: "\u91C7\u6837\u6E29\u5EA6\uFF0C0~2\u3002" },
|
|
12398
|
-
top_p: { type: "number", description: "nucleus sampling\uFF0C0~1\u3002" },
|
|
12399
|
-
frequency_penalty: { type: "number", description: "\u91CD\u590D\u60E9\u7F5A\uFF0C-2~2\u3002" },
|
|
12400
|
-
presence_penalty: { type: "number", description: "\u65B0\u8BDD\u9898\u6FC0\u52B1\uFF0C-2~2\u3002" },
|
|
12401
|
-
max_tokens: { type: "number", description: "\u5355\u6B21\u56DE\u7B54\u6700\u5927 token \u6570\u3002" },
|
|
12402
|
-
reasoning_effort: {
|
|
12403
|
-
type: "string",
|
|
12404
|
-
enum: ["low", "medium", "high"],
|
|
12405
|
-
description: "\u63A8\u7406\u5F3A\u5EA6\u3002"
|
|
12406
|
-
}
|
|
12407
|
-
};
|
|
12408
|
-
var validateUpdateArgs = (userId, options) => {
|
|
12409
|
-
if (!userId) throw new Error("\u66F4\u65B0 Agent \u5931\u8D25\uFF1A\u5F53\u524D\u672A\u767B\u5F55\u6216\u7F3A\u5C11 userId\u3002");
|
|
12410
|
-
if (options?.requireAgentId && !options?.agentId?.trim()) {
|
|
12411
|
-
throw new Error("\u66F4\u65B0 Agent \u5931\u8D25\uFF1A\u5FC5\u987B\u63D0\u4F9B\u975E\u7A7A\u7684 agentId\u3002");
|
|
12412
|
-
}
|
|
12413
|
-
};
|
|
12414
|
-
var fetchAgentByDbKey = async (dbKey, db) => {
|
|
12415
|
-
if (!db) return void 0;
|
|
12416
|
-
return db.get(dbKey).catch(() => void 0);
|
|
12417
|
-
};
|
|
12418
|
-
var extractAgentId = (dbKey) => {
|
|
12419
|
-
const parts = dbKey.trim().split("-");
|
|
12420
|
-
return parts.length >= 3 ? parts.slice(2).join("-") : dbKey.trim();
|
|
12421
|
-
};
|
|
12422
|
-
var buildPatch = (args) => {
|
|
12423
|
-
const patch2 = {};
|
|
12424
|
-
const {
|
|
12425
|
-
name,
|
|
12426
|
-
handle,
|
|
12427
|
-
model,
|
|
12428
|
-
provider,
|
|
12429
|
-
prompt,
|
|
12430
|
-
introduction,
|
|
12431
|
-
greeting,
|
|
12432
|
-
isPublic,
|
|
12433
|
-
allowFork,
|
|
12434
|
-
tags,
|
|
12435
|
-
tools,
|
|
12436
|
-
disabledTools,
|
|
12437
|
-
enabledPacks,
|
|
12438
|
-
references,
|
|
12439
|
-
temperature,
|
|
12440
|
-
top_p,
|
|
12441
|
-
frequency_penalty,
|
|
12442
|
-
presence_penalty,
|
|
12443
|
-
max_tokens,
|
|
12444
|
-
reasoning_effort
|
|
12445
|
-
} = args;
|
|
12446
|
-
if (name !== void 0) patch2.name = String(name).trim();
|
|
12447
|
-
if (handle !== void 0) patch2.handle = String(handle).trim();
|
|
12448
|
-
if (model !== void 0) patch2.model = String(model).trim();
|
|
12449
|
-
if (provider !== void 0) patch2.provider = String(provider).trim();
|
|
12450
|
-
if (prompt !== void 0) patch2.prompt = prompt;
|
|
12451
|
-
if (introduction !== void 0) patch2.introduction = introduction;
|
|
12452
|
-
if (greeting !== void 0) patch2.greeting = greeting;
|
|
12453
|
-
if (isPublic !== void 0) patch2.isPublic = isPublic;
|
|
12454
|
-
if (allowFork !== void 0) patch2.allowFork = allowFork;
|
|
12455
|
-
if (tags !== void 0) patch2.tags = tags;
|
|
12456
|
-
if (tools !== void 0) patch2.tools = tools ?? [];
|
|
12457
|
-
if (disabledTools !== void 0) patch2.disabledTools = disabledTools ?? [];
|
|
12458
|
-
if (enabledPacks !== void 0) patch2.enabledPacks = enabledPacks ?? [];
|
|
12459
|
-
if (references !== void 0) patch2.references = references;
|
|
12460
|
-
if (temperature !== void 0) patch2.temperature = temperature;
|
|
12461
|
-
if (top_p !== void 0) patch2.top_p = top_p;
|
|
12462
|
-
if (frequency_penalty !== void 0) patch2.frequency_penalty = frequency_penalty;
|
|
12463
|
-
if (presence_penalty !== void 0) patch2.presence_penalty = presence_penalty;
|
|
12464
|
-
if (max_tokens !== void 0) patch2.max_tokens = max_tokens;
|
|
12465
|
-
if (reasoning_effort !== void 0) patch2.reasoning_effort = reasoning_effort;
|
|
12466
|
-
return patch2;
|
|
12467
|
-
};
|
|
12468
|
-
var AGENT_UPDATE_FIELD_NAME_SET = new Set(AGENT_UPDATE_FIELD_NAMES);
|
|
12469
|
-
var listRequestedFields = (args) => Object.keys(args).filter(
|
|
12470
|
-
(key) => key !== "agentId" && key !== "__confirmedSelfEvolution" && AGENT_UPDATE_FIELD_NAME_SET.has(key) && args[key] !== void 0
|
|
12471
|
-
);
|
|
12472
|
-
var assertAgentUpdateConfirmation = ({
|
|
12473
|
-
scope,
|
|
12474
|
-
requestedFields,
|
|
12475
|
-
confirmed,
|
|
12476
|
-
autoApprovedFields = []
|
|
12477
|
-
}) => {
|
|
12478
|
-
if (requestedFields.length === 0 || confirmed) return;
|
|
12479
|
-
const allowedFields = scope === "self" ? requestedFields.filter((field) => autoApprovedFields.includes(field)) : [];
|
|
12480
|
-
const blockedFields = scope === "self" ? requestedFields.filter((field) => !autoApprovedFields.includes(field)) : requestedFields;
|
|
12481
|
-
if (blockedFields.length === 0) return;
|
|
12482
|
-
const displayPrefix = scope === "self" ? "updateSelf" : "updateAgent";
|
|
12483
|
-
throw new ToolResultError(
|
|
12484
|
-
scope === "self" ? `\u5F53\u524D\u81EA\u6211\u66F4\u65B0\u5B57\u6BB5\u9700\u8981\u5148\u786E\u8BA4\uFF1A${blockedFields.join(", ")}` : `\u5F53\u524D\u901A\u7528 Agent \u66F4\u65B0\u9700\u8981\u5148\u786E\u8BA4\uFF1A${blockedFields.join(", ")}`,
|
|
12485
|
-
{
|
|
12486
|
-
code: "agent_update_requires_confirmation",
|
|
12487
|
-
retryable: false,
|
|
12488
|
-
displayData: `${displayPrefix} \u9700\u8981\u5148\u786E\u8BA4\uFF1A${blockedFields.join(", ")}`,
|
|
12489
|
-
rawData: {
|
|
12490
|
-
error: "agent_update_requires_confirmation",
|
|
12491
|
-
message: scope === "self" ? "\u5F53\u524D\u81EA\u6211\u66F4\u65B0\u5305\u542B\u9700\u8981\u7528\u6237\u786E\u8BA4\u7684\u5B57\u6BB5\u3002" : "\u5F53\u524D\u901A\u7528 Agent \u66F4\u65B0\u9ED8\u8BA4\u8981\u6C42\u7528\u6237\u786E\u8BA4\u3002",
|
|
12492
|
-
policy: {
|
|
12493
|
-
capability: scope === "self" ? "self_update" : "agent_update",
|
|
12494
|
-
scope,
|
|
12495
|
-
decision: "ask",
|
|
12496
|
-
requestedFields,
|
|
12497
|
-
allowedFields,
|
|
12498
|
-
blockedFields,
|
|
12499
|
-
autoApprovedFields
|
|
12500
|
-
}
|
|
12501
|
-
}
|
|
12502
|
-
}
|
|
12503
|
-
);
|
|
12504
|
-
};
|
|
12505
|
-
var buildRawDataWithUpdateInfo = (agent, previousAgent, requestedFields) => {
|
|
12506
|
-
const changes = {};
|
|
12507
|
-
for (const key of requestedFields) {
|
|
12508
|
-
const newVal = agent[key];
|
|
12509
|
-
const oldVal = previousAgent[key];
|
|
12510
|
-
if (JSON.stringify(newVal) !== JSON.stringify(oldVal)) {
|
|
12511
|
-
changes[key] = { o: oldVal, n: newVal };
|
|
12865
|
+
lines.push(`- temperature: ${agent.temperature}`);
|
|
12866
|
+
}
|
|
12867
|
+
if (typeof currentBalance === "number") {
|
|
12868
|
+
lines.push(`- \u5F53\u524D\u4F59\u989D: ${currentBalance}`);
|
|
12512
12869
|
}
|
|
12513
|
-
}
|
|
12514
|
-
return {
|
|
12515
|
-
...agent,
|
|
12516
|
-
_isUpdate: true,
|
|
12517
|
-
_changes: Object.keys(changes).length > 0 ? changes : void 0
|
|
12518
|
-
};
|
|
12519
|
-
};
|
|
12520
|
-
var formatUpdatedAgentOutput = (agent) => [
|
|
12521
|
-
`\u2705 \u5DF2\u66F4\u65B0 Agent\uFF1A${agent.name ?? "(\u540D\u79F0\u672A\u53D8)"}`,
|
|
12522
|
-
`- ID: ${agent.id}`,
|
|
12523
|
-
`- \u662F\u5426\u516C\u5F00: ${agent.isPublic ? "\u662F" : "\u5426"}`,
|
|
12524
|
-
`- \u5141\u8BB8\u4ED6\u4EBA\u590D\u5236: ${agent.allowFork ? "\u662F" : "\u5426"}`,
|
|
12525
|
-
agent.model && `- \u6A21\u578B: ${agent.model}`,
|
|
12526
|
-
agent.provider && `- Provider: ${agent.provider}`,
|
|
12527
|
-
agent.tags?.length && `- \u6807\u7B7E: ${agent.tags.join(", ")}`,
|
|
12528
|
-
typeof agent.temperature === "number" && `- temperature: ${agent.temperature}`
|
|
12529
|
-
].filter(Boolean).join("\n");
|
|
12530
|
-
var buildUpdateThunkPreviousAgent = (previousAgent, userId) => {
|
|
12531
|
-
const ownerUserId = String(previousAgent.userId ?? "").trim();
|
|
12532
|
-
if (previousAgent.isPublic && ownerUserId !== userId) {
|
|
12533
12870
|
return {
|
|
12534
|
-
|
|
12535
|
-
|
|
12871
|
+
rawData: agent,
|
|
12872
|
+
displayData: lines.join("\n")
|
|
12536
12873
|
};
|
|
12874
|
+
} catch (error) {
|
|
12875
|
+
throw new Error(
|
|
12876
|
+
`\u521B\u5EFA Agent \u5931\u8D25\uFF1A${error?.message || "\u672A\u77E5\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"}`
|
|
12877
|
+
);
|
|
12537
12878
|
}
|
|
12538
|
-
|
|
12539
|
-
};
|
|
12879
|
+
}
|
|
12540
12880
|
|
|
12541
12881
|
// packages/ai/tools/agent/updateAgentTool.ts
|
|
12542
12882
|
var updateAgentToolFunctionSchema = {
|
|
@@ -13176,15 +13516,15 @@ async function evalSkillFunc(args, thunkApi) {
|
|
|
13176
13516
|
|
|
13177
13517
|
// packages/ai/tools/importSkillTool.ts
|
|
13178
13518
|
var normalizeUrl = (rawUrl) => {
|
|
13179
|
-
const
|
|
13180
|
-
const githubBlobMatch =
|
|
13519
|
+
const trimmed2 = rawUrl.trim();
|
|
13520
|
+
const githubBlobMatch = trimmed2.match(
|
|
13181
13521
|
/^https:\/\/github\.com\/([^/]+)\/([^/]+)\/blob\/([^/]+)\/(.+)$/
|
|
13182
13522
|
);
|
|
13183
13523
|
if (githubBlobMatch) {
|
|
13184
13524
|
const [, owner, repo, ref, path] = githubBlobMatch;
|
|
13185
13525
|
return `https://raw.githubusercontent.com/${owner}/${repo}/${ref}/${path}`;
|
|
13186
13526
|
}
|
|
13187
|
-
return
|
|
13527
|
+
return trimmed2;
|
|
13188
13528
|
};
|
|
13189
13529
|
var slugify2 = (value) => value.trim().toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "") || "imported-skill";
|
|
13190
13530
|
var mapImportedTools = (toolNames) => canonicalizeToolNames(
|
|
@@ -13512,16 +13852,17 @@ function buildCodePlannerSkillPageKey(userId, slug) {
|
|
|
13512
13852
|
var CODE_PLANNER_ROOT_SKILL_ID = buildCodePlannerSkillId(
|
|
13513
13853
|
CODE_PLANNER_ROOT_SKILL_SLUG
|
|
13514
13854
|
);
|
|
13515
|
-
function buildDispatchExecutorsPromptPatch(
|
|
13516
|
-
const keys = candidateKeys.map((key) => key.trim()).filter(Boolean);
|
|
13517
|
-
if (keys.length === 0) {
|
|
13518
|
-
throw new Error("buildDispatchExecutorsPromptPatch requires at least one candidate key");
|
|
13519
|
-
}
|
|
13855
|
+
function buildDispatchExecutorsPromptPatch() {
|
|
13520
13856
|
return [
|
|
13521
13857
|
"\u6D3E\u53D1\u534F\u8BAE\uFF1A",
|
|
13522
13858
|
"- \u552F\u4E00\u771F\u5B9E\u5206\u6D3E\u901A\u9053\u662F startAgentRun\u3002\u7981\u6B62\u58F0\u79F0\u4F7F\u7528\u4E86\u672C\u673A CLI \u6216 nolo agent run\uFF08\u9664\u975E\u7528\u6237\u5F53\u524D\u4F1A\u8BDD\u672C\u8EAB\u5C31\u662F CLI\uFF09\u3002",
|
|
13523
|
-
"- \
|
|
13524
|
-
|
|
13859
|
+
"- \u5F53\u4EFB\u52A1\u9002\u5408\u59D4\u6D3E\u65F6\uFF0C\u5148\u8C03\u7528 listAgents \u83B7\u53D6\u5F53\u524D\u53EF\u7528\u5019\u9009\u3002",
|
|
13860
|
+
"- \u9ED8\u8BA4\u4F7F\u7528 preferred scope\uFF1B\u53EA\u6709\u6CA1\u6709\u5408\u9002\u5019\u9009\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u63A2\u7D22\u516C\u5F00 Agent \u65F6\u518D\u67E5\u8BE2 public\u3002",
|
|
13861
|
+
"- \u6839\u636E\u7528\u6237\u6307\u5B9A\u3001\u4EFB\u52A1\u80FD\u529B\u3001runtime\u3001billingSource\u3001availability\u3001cost \u548C\u53EF\u7528 quality evidence \u9009\u62E9\u3002",
|
|
13862
|
+
"- agentKey \u5FC5\u987B\u539F\u6837\u590D\u5236 listAgents \u8FD4\u56DE\u503C\u3002",
|
|
13863
|
+
"- \u7136\u540E\u8C03\u7528 startAgentRun\u3002",
|
|
13864
|
+
"- \u4E0D\u5047\u8BBE\u4EFB\u4F55\u56FA\u5B9A implementer/reviewer/coder \u89D2\u8272\u3002",
|
|
13865
|
+
"- \u4E0D\u7EF4\u62A4\u9759\u6001\u5E73\u53F0 executor pool\u3002",
|
|
13525
13866
|
"- started \u2260 completed\uFF1AstartAgentRun \u6210\u529F\u8FD4\u56DE\u771F\u5B9E runId\uFF08\u540C\u6B65 wait:true \u5219\u8FD4\u56DE\u7ED3\u679C\uFF09\u540E\u624D\u80FD\u8BF4\u300C\u5DF2\u542F\u52A8\u300D\uFF1B\u5F02\u6B65\u6D3E\u53D1\u6210\u529F\u53EA\u8868\u793A started\u3002",
|
|
13526
13867
|
"- \u591A\u6587\u4EF6\u5B9E\u73B0\u3001\u5927\u91CD\u6784\u3001\u65B0\u5EFA\u6A21\u5757\u5E94\u6D3E\u53D1\u6267\u884C\u8005\uFF1B\u5355\u70B9\u5C0F\u6539\u53EF\u76F4\u63A5\u7528\u5DE5\u4F5C\u533A\u5DE5\u5177\u5B8C\u6210\u3002",
|
|
13527
13868
|
"- \u4E0D\u8981\u5199\u6B7B owner \u79C1\u6709 agentKey\u3002"
|
|
@@ -13598,19 +13939,15 @@ var CODE_PLANNER_SKILL_SEEDS = [
|
|
|
13598
13939
|
{
|
|
13599
13940
|
slug: "dispatch-executors",
|
|
13600
13941
|
title: "dispatch-executors",
|
|
13601
|
-
description: "startAgentRun dispatch protocol for Code Planner
|
|
13942
|
+
description: "listAgents discovery and startAgentRun dispatch protocol for Code Planner.",
|
|
13602
13943
|
body: [
|
|
13603
13944
|
"# dispatch-executors",
|
|
13604
13945
|
"",
|
|
13605
|
-
"
|
|
13606
|
-
"hard allowlisting is enforced by runtimeContext.allowedChildAgentKeys when wired."
|
|
13946
|
+
"Discover candidates via listAgents and dispatch chosen exact agentKey via startAgentRun."
|
|
13607
13947
|
].join("\n"),
|
|
13608
13948
|
triggerMode: "required",
|
|
13609
|
-
toolNames: ["startAgentRun"],
|
|
13610
|
-
|
|
13611
|
-
promptPatch: buildDispatchExecutorsPromptPatch(
|
|
13612
|
-
DEFAULT_CODE_PLANNER_EXECUTOR_CANDIDATE_KEYS
|
|
13613
|
-
)
|
|
13949
|
+
toolNames: ["listAgents", "startAgentRun"],
|
|
13950
|
+
promptPatch: buildDispatchExecutorsPromptPatch()
|
|
13614
13951
|
},
|
|
13615
13952
|
{
|
|
13616
13953
|
slug: "code-planning",
|
|
@@ -15309,6 +15646,108 @@ async function listUserSpacesFunc(args, thunkApi, context) {
|
|
|
15309
15646
|
}
|
|
15310
15647
|
}
|
|
15311
15648
|
|
|
15649
|
+
// packages/ai/agent/agentDiscovery.ts
|
|
15650
|
+
function isPreferredAgent(agent) {
|
|
15651
|
+
return agent.isFavorite === true || agent.isOwned === true || agent.isOAuth === true || agent.billingSource === "user_subscription" || agent.billingSource === "user_api" || agent.billingSource === "local";
|
|
15652
|
+
}
|
|
15653
|
+
function isPublicDiscoveryAgent(agent) {
|
|
15654
|
+
return agent.isPublic === true && !isPreferredAgent(agent);
|
|
15655
|
+
}
|
|
15656
|
+
function resolveDiscoveryScope(args) {
|
|
15657
|
+
const rawScope = typeof args?.scope === "string" ? args.scope.trim().toLowerCase() : void 0;
|
|
15658
|
+
const hasScope = rawScope !== void 0 && rawScope !== "";
|
|
15659
|
+
const hasPublicOnly = typeof args?.publicOnly === "boolean";
|
|
15660
|
+
const publicOnly = args?.publicOnly === true;
|
|
15661
|
+
if (hasScope) {
|
|
15662
|
+
if (rawScope !== "preferred" && rawScope !== "public" && rawScope !== "all") {
|
|
15663
|
+
throw new Error(`Invalid scope '${args?.scope}': must be 'preferred', 'public', or 'all'.`);
|
|
15664
|
+
}
|
|
15665
|
+
const scope = rawScope;
|
|
15666
|
+
if (hasPublicOnly) {
|
|
15667
|
+
if (publicOnly && scope !== "public") {
|
|
15668
|
+
throw new Error(
|
|
15669
|
+
`Conflicting arguments: scope='${args?.scope}' conflicts with publicOnly=true.`
|
|
15670
|
+
);
|
|
15671
|
+
}
|
|
15672
|
+
if (!publicOnly && scope === "public") {
|
|
15673
|
+
throw new Error(
|
|
15674
|
+
`Conflicting arguments: scope='${args?.scope}' conflicts with publicOnly=false.`
|
|
15675
|
+
);
|
|
15676
|
+
}
|
|
15677
|
+
}
|
|
15678
|
+
return scope;
|
|
15679
|
+
}
|
|
15680
|
+
if (hasPublicOnly && publicOnly) {
|
|
15681
|
+
return "public";
|
|
15682
|
+
}
|
|
15683
|
+
return "preferred";
|
|
15684
|
+
}
|
|
15685
|
+
function agentIdentityKeys(agent) {
|
|
15686
|
+
return [agent.agentKey, agent.publicKey, agent.id].filter(
|
|
15687
|
+
(key) => typeof key === "string" && key.length > 0
|
|
15688
|
+
);
|
|
15689
|
+
}
|
|
15690
|
+
function deduplicateAgentSummaries(agents) {
|
|
15691
|
+
const byIdentity = /* @__PURE__ */ new Map();
|
|
15692
|
+
for (const agent of agents) {
|
|
15693
|
+
const keys = agentIdentityKeys(agent);
|
|
15694
|
+
const existing = keys.map((key) => byIdentity.get(key)).find(Boolean);
|
|
15695
|
+
if (!existing) {
|
|
15696
|
+
for (const key of keys) byIdentity.set(key, agent);
|
|
15697
|
+
continue;
|
|
15698
|
+
}
|
|
15699
|
+
const winner = isPreferredAgent(agent) && !isPreferredAgent(existing) ? agent : existing;
|
|
15700
|
+
for (const key of /* @__PURE__ */ new Set([...agentIdentityKeys(existing), ...keys])) byIdentity.set(key, winner);
|
|
15701
|
+
}
|
|
15702
|
+
return [...new Set(byIdentity.values())];
|
|
15703
|
+
}
|
|
15704
|
+
function filterAgentsByScope(agents, scope) {
|
|
15705
|
+
const unique = deduplicateAgentSummaries(agents);
|
|
15706
|
+
if (scope === "preferred") return unique.filter((agent) => isPreferredAgent(agent));
|
|
15707
|
+
if (scope === "public") return unique.filter((agent) => isPublicDiscoveryAgent(agent));
|
|
15708
|
+
return unique.filter((agent) => isPreferredAgent(agent) || agent.isPublic === true);
|
|
15709
|
+
}
|
|
15710
|
+
function buildAgentDiscoveryResult(options) {
|
|
15711
|
+
const scope = resolveDiscoveryScope({
|
|
15712
|
+
scope: options.scope,
|
|
15713
|
+
publicOnly: options.publicOnly
|
|
15714
|
+
});
|
|
15715
|
+
const now = options.now ?? Date.now();
|
|
15716
|
+
let scopedAgents = filterAgentsByScope(options.agents, scope);
|
|
15717
|
+
const unavailableList = scopedAgents.filter((a) => isAgentUnavailableNow(a, now));
|
|
15718
|
+
const unavailableCount = unavailableList.length;
|
|
15719
|
+
const unavailableAgents = sortSafeAgentSummaries(unavailableList).map(toUnavailableAgentSummary);
|
|
15720
|
+
if (options.showUnavailable !== true) {
|
|
15721
|
+
scopedAgents = scopedAgents.filter((a) => !isAgentUnavailableNow(a, now));
|
|
15722
|
+
}
|
|
15723
|
+
const sortedAgents = sortSafeAgentSummaries(scopedAgents);
|
|
15724
|
+
const projectedAgents = options.verbose === true ? sortedAgents.map(omitNullishAgentSummaryFields) : sortedAgents.map(toCompactAgentSummary);
|
|
15725
|
+
return {
|
|
15726
|
+
total: projectedAgents.length,
|
|
15727
|
+
unavailableCount,
|
|
15728
|
+
unavailableAgents,
|
|
15729
|
+
agents: projectedAgents
|
|
15730
|
+
};
|
|
15731
|
+
}
|
|
15732
|
+
|
|
15733
|
+
// packages/ai/agent/publicAgentDiscovery.ts
|
|
15734
|
+
async function fetchPublicAgentsForDiscovery(args) {
|
|
15735
|
+
const fetchImpl = args.fetchImpl ?? fetch;
|
|
15736
|
+
const response = await fetchImpl(`${args.serverBase.replace(/\/$/, "")}/rpc/getPublicAgents`, {
|
|
15737
|
+
method: "POST",
|
|
15738
|
+
headers: {
|
|
15739
|
+
"Content-Type": "application/json",
|
|
15740
|
+
...args.token ? { Authorization: `Bearer ${args.token}` } : {}
|
|
15741
|
+
},
|
|
15742
|
+
body: JSON.stringify({ limit: Math.min(args.limit ?? 500, 500), summary: true })
|
|
15743
|
+
});
|
|
15744
|
+
if (!response.ok) throw new Error(`Public agent catalog request failed (${response.status})`);
|
|
15745
|
+
const payload = await response.json();
|
|
15746
|
+
const data = Array.isArray(payload?.data?.data) ? payload.data.data : Array.isArray(payload?.data) ? payload.data : Array.isArray(payload) ? payload : null;
|
|
15747
|
+
if (!data) throw new Error("Public agent catalog returned an invalid response");
|
|
15748
|
+
return data;
|
|
15749
|
+
}
|
|
15750
|
+
|
|
15312
15751
|
// packages/ai/tools/deleteDialogsToolModel.ts
|
|
15313
15752
|
var normalizeText = (value) => asTrimmedString(value);
|
|
15314
15753
|
var resolveDialogId = (record) => {
|
|
@@ -15739,7 +16178,7 @@ async function deleteDialogsFunc(args, thunkApi) {
|
|
|
15739
16178
|
const deletedDialogIds = [];
|
|
15740
16179
|
const deletedDialogKeys = [];
|
|
15741
16180
|
const failures = [];
|
|
15742
|
-
const { deleteDialog: deleteDialog2 } = await import("./dialogSlice-
|
|
16181
|
+
const { deleteDialog: deleteDialog2 } = await import("./dialogSlice-ANMACABO.js");
|
|
15743
16182
|
for (const target of targets) {
|
|
15744
16183
|
try {
|
|
15745
16184
|
await thunkApi.dispatch(deleteDialog2(target.dbKey)).unwrap();
|
|
@@ -15823,12 +16262,17 @@ function formatAgentListCard(agents, maxDisplay = 8) {
|
|
|
15823
16262
|
}
|
|
15824
16263
|
var listAgentsFunctionSchema = {
|
|
15825
16264
|
name: "listAgents",
|
|
15826
|
-
description: "List the
|
|
16265
|
+
description: "List Nolo agents available for delegation as safe summaries. By default (scope='preferred'), returns the user's preferred agents (favorites, self-owned, OAuth subscriptions, custom API, and local agents). Note: favorited public agents stay in preferred and may still consume platform credits - check each agent's billingSource before dispatching. If no suitable preferred candidate is found or the user explicitly asks to explore public/shared agents, call with scope='public' (public agents may consume platform credits). scope='all' returns the deduplicated union for troubleshooting/management. listAgents does not automatically fallback to public agents. The `agents` array carries a compact agent-selection projection per agent: runnable `agentKey` (agent-<userId>-<id> owned, agent-pub-<id> public), name, model, provider, apiSource, billingSource ('user_subscription' | 'user_api' | 'platform_credits' | 'local'), tools, isFavorite, isOAuth, isOwned, isPublic. Copy `agentKey` verbatim into startAgentRun. Rate-limited agents (429, nextAvailableAt in the future) are hidden by default; unavailableCount and unavailableAgents carry their nextAvailableAt recovery timestamps; pass `showUnavailable: true` to include them. Set `verbose: true` for full safe summary details.",
|
|
15827
16266
|
parameters: {
|
|
15828
16267
|
type: "object",
|
|
15829
16268
|
properties: {
|
|
15830
16269
|
limit: { type: "integer", description: "Maximum agents to return. Default 100, max 500." },
|
|
15831
|
-
|
|
16270
|
+
scope: {
|
|
16271
|
+
type: "string",
|
|
16272
|
+
enum: ["preferred", "public", "all"],
|
|
16273
|
+
description: "Discovery scope. 'preferred' (default): user's favorites, owned, OAuth, custom API, and local agents. 'public': shared/marketplace agents not in preferred (may use platform credits). 'all': deduplicated union for inspection."
|
|
16274
|
+
},
|
|
16275
|
+
publicOnly: { type: "boolean", description: "Deprecated compatibility alias for scope='public'." },
|
|
15832
16276
|
showUnavailable: { type: "boolean", description: "Include agents currently rate-limited (429). Default false." },
|
|
15833
16277
|
verbose: { type: "boolean", description: "Return the full safe-summary field set (prices, introduction, modelAbility, timestamps) for troubleshooting. Default false returns the compact agent-selection projection." }
|
|
15834
16278
|
}
|
|
@@ -15838,6 +16282,13 @@ async function listAgentsFunc(args, thunkApi) {
|
|
|
15838
16282
|
const limit = clampNoloPositiveInteger(args?.limit, 100, 500);
|
|
15839
16283
|
const userRecords = await queryBestRecords(thunkApi, "agent" /* AGENT */, limit);
|
|
15840
16284
|
const favoritesMap = await fetchUserFavoriteAgentMap(thunkApi);
|
|
16285
|
+
const runtime = getRuntime2(thunkApi);
|
|
16286
|
+
const scope = resolveDiscoveryScope({ scope: args?.scope, publicOnly: args?.publicOnly });
|
|
16287
|
+
const publicRecords = scope === "preferred" ? [] : await fetchPublicAgentsForDiscovery({
|
|
16288
|
+
serverBase: runtime?.currentServer ?? "",
|
|
16289
|
+
token: runtime?.currentToken,
|
|
16290
|
+
limit
|
|
16291
|
+
});
|
|
15841
16292
|
const recordsMap = /* @__PURE__ */ new Map();
|
|
15842
16293
|
for (const record of userRecords) {
|
|
15843
16294
|
const key = record?.dbKey || record?.id || record?.publicKey;
|
|
@@ -15853,40 +16304,39 @@ async function listAgentsFunc(args, thunkApi) {
|
|
|
15853
16304
|
return null;
|
|
15854
16305
|
});
|
|
15855
16306
|
if (favRecord) {
|
|
16307
|
+
if (favKey.startsWith("agent-pub-")) {
|
|
16308
|
+
favRecord.publicRecordExists = true;
|
|
16309
|
+
favRecord.publicKey = favKey;
|
|
16310
|
+
}
|
|
15856
16311
|
const key = favRecord?.dbKey || favRecord?.id || favKey;
|
|
15857
16312
|
recordsMap.set(key, favRecord);
|
|
15858
16313
|
}
|
|
15859
16314
|
}
|
|
15860
16315
|
}
|
|
15861
|
-
const runtime = getRuntime2(thunkApi);
|
|
15862
16316
|
const userId = runtime?.currentUserId ?? void 0;
|
|
15863
|
-
|
|
16317
|
+
const agents = [...Array.from(recordsMap.values()), ...publicRecords].map(
|
|
15864
16318
|
(record) => toSafeAgentSummary(record, {
|
|
15865
16319
|
favoritesMap,
|
|
15866
|
-
userId
|
|
16320
|
+
userId,
|
|
16321
|
+
publicRecordExists: publicRecords.includes(record) ? true : void 0
|
|
15867
16322
|
})
|
|
15868
16323
|
);
|
|
15869
|
-
const
|
|
15870
|
-
|
|
15871
|
-
|
|
15872
|
-
|
|
15873
|
-
|
|
15874
|
-
|
|
15875
|
-
|
|
15876
|
-
if (args?.showUnavailable !== true) {
|
|
15877
|
-
agents = agents.filter((a) => !isAgentUnavailableNow(a, now));
|
|
15878
|
-
}
|
|
15879
|
-
agents = sortSafeAgentSummaries(agents);
|
|
15880
|
-
const projectedAgents = args?.verbose === true ? agents.map(omitNullishAgentSummaryFields) : agents.map(toCompactAgentSummary);
|
|
16324
|
+
const discovery = buildAgentDiscoveryResult({
|
|
16325
|
+
agents,
|
|
16326
|
+
scope: args?.scope,
|
|
16327
|
+
publicOnly: args?.publicOnly,
|
|
16328
|
+
showUnavailable: args?.showUnavailable,
|
|
16329
|
+
verbose: args?.verbose
|
|
16330
|
+
});
|
|
15881
16331
|
return {
|
|
15882
16332
|
rawData: {
|
|
15883
16333
|
success: true,
|
|
15884
|
-
total:
|
|
15885
|
-
unavailableCount,
|
|
15886
|
-
unavailableAgents,
|
|
15887
|
-
agents:
|
|
16334
|
+
total: discovery.total,
|
|
16335
|
+
unavailableCount: discovery.unavailableCount,
|
|
16336
|
+
unavailableAgents: discovery.unavailableAgents,
|
|
16337
|
+
agents: discovery.agents
|
|
15888
16338
|
},
|
|
15889
|
-
displayData: formatAgentListCard(agents)
|
|
16339
|
+
displayData: formatAgentListCard(discovery.agents)
|
|
15890
16340
|
};
|
|
15891
16341
|
}
|
|
15892
16342
|
var readAgentFunctionSchema = {
|
|
@@ -16034,7 +16484,7 @@ var readSkillDocFunctionSchema = {
|
|
|
16034
16484
|
}
|
|
16035
16485
|
};
|
|
16036
16486
|
async function readSkillDocFunc(args, thunkApi) {
|
|
16037
|
-
const { buildReadDocResult } = await import("./readDocTool-
|
|
16487
|
+
const { buildReadDocResult } = await import("./readDocTool-LC3A7QTB.js");
|
|
16038
16488
|
const id = args?.id ?? args?.doc ?? args?.docKey ?? args?.pageKey;
|
|
16039
16489
|
if (typeof id !== "string" || !id.trim()) {
|
|
16040
16490
|
throw new Error("readSkillDoc requires id or doc.");
|
|
@@ -16302,11 +16752,14 @@ var addSpaceAction = async (input, thunkAPI) => {
|
|
|
16302
16752
|
// packages/app/favorite/favoriteStore.ts
|
|
16303
16753
|
var import_react3 = __toESM(require_react());
|
|
16304
16754
|
|
|
16755
|
+
// packages/app/store.ts
|
|
16756
|
+
var import_react2 = __toESM(require_react());
|
|
16757
|
+
|
|
16305
16758
|
// packages/app/sessionSnapshot.ts
|
|
16306
16759
|
var import_react = __toESM(require_react());
|
|
16307
16760
|
|
|
16308
|
-
// packages/
|
|
16309
|
-
var
|
|
16761
|
+
// packages/identity/useIdentity.local.ts
|
|
16762
|
+
var LOCAL_USER_ID = (typeof process !== "undefined" ? process.env?.NOLO_LOCAL_USER_ID : void 0) || (typeof process !== "undefined" ? process.env?.NOLO_USER_ID : void 0) || "local";
|
|
16310
16763
|
|
|
16311
16764
|
// packages/app/favorite/favoriteStore.ts
|
|
16312
16765
|
var createInitialState = () => ({
|
|
@@ -16834,7 +17287,7 @@ var fetchSpaceAction = async (input, thunkAPI) => {
|
|
|
16834
17287
|
const spaceKey = createSpaceKey.space(spaceId);
|
|
16835
17288
|
const readSpace = async (dbKey) => {
|
|
16836
17289
|
try {
|
|
16837
|
-
const { read: read2, readAndWait: readAndWait2 } = await import("./dbSlice-
|
|
17290
|
+
const { read: read2, readAndWait: readAndWait2 } = await import("./dbSlice-IBVOBVMS.js");
|
|
16838
17291
|
if (fresh) {
|
|
16839
17292
|
return await dispatch(readAndWait2(dbKey)).unwrap();
|
|
16840
17293
|
}
|
|
@@ -17282,7 +17735,7 @@ var defaultDeps = {
|
|
|
17282
17735
|
},
|
|
17283
17736
|
deleteServerKey: async (thunkApi, server, dbKey) => {
|
|
17284
17737
|
const state2 = thunkApi.getState();
|
|
17285
|
-
const token = state2
|
|
17738
|
+
const token = selectIdentityToken(state2);
|
|
17286
17739
|
if (!server) {
|
|
17287
17740
|
return { ok: false, status: 0, detail: "missing server" };
|
|
17288
17741
|
}
|
|
@@ -17882,16 +18335,96 @@ async function emailArchiveFunc(args, thunkApi) {
|
|
|
17882
18335
|
};
|
|
17883
18336
|
}
|
|
17884
18337
|
|
|
18338
|
+
// packages/ai/tools/table/toolShared.ts
|
|
18339
|
+
var resolveTableIdentity = (args, _state) => {
|
|
18340
|
+
return { tenantId: args?.tenantId, tableId: args?.tableId };
|
|
18341
|
+
};
|
|
18342
|
+
async function loadTableMetaOrThrow(thunkApi, tenantId, tableId) {
|
|
18343
|
+
const key = metaKey(tenantId, tableId);
|
|
18344
|
+
const result = await thunkApi.dispatch(readAndWait(key));
|
|
18345
|
+
const isMatch = typeof readAndWait?.fulfilled?.match === "function" ? readAndWait.fulfilled.match(result) : result?.type === "fulfilled" || Boolean(result?.payload);
|
|
18346
|
+
if (!isMatch || !result?.payload) {
|
|
18347
|
+
const message = result?.payload?.message || result?.error?.message || `\u627E\u4E0D\u5230\u8868 ${tableId} \u7684\u5B9A\u4E49\u3002`;
|
|
18348
|
+
throw new Error(message);
|
|
18349
|
+
}
|
|
18350
|
+
return result.payload;
|
|
18351
|
+
}
|
|
18352
|
+
async function ensureRowsLoaded(thunkApi, tenantId, tableId) {
|
|
18353
|
+
const result = await thunkApi.dispatch(loadTableRows({ tenantId, tableId }));
|
|
18354
|
+
if (!loadTableRows.fulfilled.match(result)) {
|
|
18355
|
+
const message = result.payload || result.error?.message || "\u52A0\u8F7D\u8868\u884C\u5931\u8D25";
|
|
18356
|
+
throw new Error(message);
|
|
18357
|
+
}
|
|
18358
|
+
const loadedRows = Array.isArray(result?.payload) ? result.payload : [];
|
|
18359
|
+
return loadedRows.filter(
|
|
18360
|
+
(row) => row?.tenantId === tenantId && row?.tableId === tableId && !row?.deletedAt
|
|
18361
|
+
);
|
|
18362
|
+
}
|
|
18363
|
+
async function resolveRowOrThrow(thunkApi, args) {
|
|
18364
|
+
const { tenantId, tableId, rowId, dbKey } = args;
|
|
18365
|
+
if (!rowId && !dbKey) {
|
|
18366
|
+
throw new Error("\u9700\u8981\u63D0\u4F9B rowId \u6216 dbKey \u624D\u80FD\u5B9A\u4F4D\u8868\u884C\u3002");
|
|
18367
|
+
}
|
|
18368
|
+
const finalDbKey = dbKey || rowKey.single(tenantId, tableId, String(rowId));
|
|
18369
|
+
const readResult = await thunkApi.dispatch(readAndWait(finalDbKey));
|
|
18370
|
+
if (readAndWait.fulfilled.match(readResult) && readResult.payload && !readResult.payload.deletedAt) {
|
|
18371
|
+
return readResult.payload;
|
|
18372
|
+
}
|
|
18373
|
+
const rows = await ensureRowsLoaded(thunkApi, tenantId, tableId);
|
|
18374
|
+
const found = rows.find((row) => row?.dbKey === finalDbKey || row?.rowId === rowId);
|
|
18375
|
+
if (!found) {
|
|
18376
|
+
throw new Error(`\u627E\u4E0D\u5230\u8981\u64CD\u4F5C\u7684\u884C\uFF1A${rowId || finalDbKey}`);
|
|
18377
|
+
}
|
|
18378
|
+
return found;
|
|
18379
|
+
}
|
|
18380
|
+
async function writeRow(thunkApi, row) {
|
|
18381
|
+
const result = await thunkApi.dispatch(
|
|
18382
|
+
write({
|
|
18383
|
+
data: row,
|
|
18384
|
+
customKey: row.dbKey
|
|
18385
|
+
})
|
|
18386
|
+
);
|
|
18387
|
+
if (!write.fulfilled.match(result)) {
|
|
18388
|
+
const message = result.payload?.message || result.error?.message || "\u5199\u5165\u8868\u884C\u5931\u8D25";
|
|
18389
|
+
throw new Error(message);
|
|
18390
|
+
}
|
|
18391
|
+
return result.payload;
|
|
18392
|
+
}
|
|
18393
|
+
async function patchRecord(thunkApi, dbKey, changes) {
|
|
18394
|
+
const result = await thunkApi.dispatch(
|
|
18395
|
+
patch({
|
|
18396
|
+
dbKey,
|
|
18397
|
+
changes
|
|
18398
|
+
})
|
|
18399
|
+
);
|
|
18400
|
+
if (!patch.fulfilled.match(result)) {
|
|
18401
|
+
const message = result.payload?.message || result.error?.message || `\u66F4\u65B0\u8BB0\u5F55\u5931\u8D25\uFF1A${dbKey}`;
|
|
18402
|
+
throw new Error(message);
|
|
18403
|
+
}
|
|
18404
|
+
return result.payload;
|
|
18405
|
+
}
|
|
18406
|
+
function buildNewRow(tenantId, tableId, values) {
|
|
18407
|
+
const { dbKey, rowId } = rowKey.create(tenantId, tableId);
|
|
18408
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
18409
|
+
return {
|
|
18410
|
+
dbKey,
|
|
18411
|
+
tenantId,
|
|
18412
|
+
tableId,
|
|
18413
|
+
rowId,
|
|
18414
|
+
createdAt: now,
|
|
18415
|
+
updatedAt: now,
|
|
18416
|
+
type: "table_row" /* TABLE_ROW */,
|
|
18417
|
+
...values
|
|
18418
|
+
};
|
|
18419
|
+
}
|
|
18420
|
+
|
|
17885
18421
|
// packages/ai/tools/table/addTableRowTool.ts
|
|
17886
18422
|
var addTableRowFunctionSchema = {
|
|
17887
18423
|
name: "addTableRow",
|
|
17888
18424
|
description: [
|
|
17889
18425
|
"\u5728\u6307\u5B9A\u8868\u4E2D\u65B0\u589E\u4E00\u884C\u6570\u636E\u3002",
|
|
17890
|
-
"\
|
|
17891
|
-
"\
|
|
17892
|
-
"\u5982\u679C\u4F60\u521A\u521A\u8C03\u7528\u4E86 createTable\uFF0C\u8BF7\u52A1\u5FC5\u5C06\u5176\u8FD4\u56DE\u7684 tenantId \u548C tableId \u4F20\u5165\u6B64\u51FD\u6570\u3002",
|
|
17893
|
-
"\u53EA\u6709\u5728\u8868\u683C\u9875\u9762\u6253\u5F00\u300C\u9875\u9762\u52A9\u624B\u300D\u65F6\uFF0CtenantId \u548C tableId \u624D\u53EF\u4EE5\u7701\u7565\uFF08\u4F1A\u81EA\u52A8\u63A8\u65AD\uFF09\u3002",
|
|
17894
|
-
"\u3010\u91CD\u8981\u3011\u8868\u683C\u5B57\u6BB5\u5FC5\u987B\u653E\u5728 values \u5BF9\u8C61\u91CC\uFF0C\u4E0D\u8981\u628A content\u3001status \u8FD9\u7C7B\u5217\u540D\u76F4\u63A5\u653E\u5728\u9876\u5C42\u3002",
|
|
18426
|
+
"\u5FC5\u987B\u663E\u5F0F\u4F20\u5165 tenantId \u548C tableId\u3002\u8FD9\u4E24\u4E2A\u503C\u53EF\u4ECE\u521B\u5EFA\u8868\u6216\u67E5\u8BE2\u8868\u7684\u8FD4\u56DE\u7ED3\u679C\u4E2D\u83B7\u53D6\u3002",
|
|
18427
|
+
"\u8868\u683C\u5B57\u6BB5\u5FC5\u987B\u653E\u5728 values \u5BF9\u8C61\u91CC\uFF0C\u4E0D\u8981\u628A content\u3001status \u8FD9\u7C7B\u5217\u540D\u76F4\u63A5\u653E\u5728\u9876\u5C42\u3002",
|
|
17895
18428
|
'\u5B8C\u6574\u793A\u4F8B\uFF1A{"tenantId":"u1","tableId":"t1","values":{"content":"\u5E0C\u671B\u652F\u6301\u652F\u4ED8\u5B9D\u652F\u4ED8","status":"\u5F85\u5904\u7406"}}\u3002'
|
|
17896
18429
|
].join("\n"),
|
|
17897
18430
|
parameters: {
|
|
@@ -17910,14 +18443,14 @@ var addTableRowFunctionSchema = {
|
|
|
17910
18443
|
},
|
|
17911
18444
|
tenantId: {
|
|
17912
18445
|
type: "string",
|
|
17913
|
-
description: "\u79DF\u6237 ID\u3002\
|
|
18446
|
+
description: "\u76EE\u6807\u8868\u7684\u79DF\u6237 ID\u3002\u5FC5\u987B\u663E\u5F0F\u4F20\u5165\u3002"
|
|
17914
18447
|
},
|
|
17915
18448
|
tableId: {
|
|
17916
18449
|
type: "string",
|
|
17917
|
-
description: "\u8868 ID\u3002\
|
|
18450
|
+
description: "\u76EE\u6807\u8868\u7684\u8868 ID\u3002\u5FC5\u987B\u663E\u5F0F\u4F20\u5165\u3002"
|
|
17918
18451
|
}
|
|
17919
18452
|
},
|
|
17920
|
-
required: ["values"]
|
|
18453
|
+
required: ["tenantId", "tableId", "values"]
|
|
17921
18454
|
}
|
|
17922
18455
|
};
|
|
17923
18456
|
var toPreviewJson = (value, maxLength = 400) => {
|
|
@@ -17939,25 +18472,22 @@ var extractLegacyValues = (args) => {
|
|
|
17939
18472
|
);
|
|
17940
18473
|
};
|
|
17941
18474
|
async function addTableRowFunc(args, thunkApi) {
|
|
17942
|
-
const
|
|
17943
|
-
const tableState = state2.table;
|
|
17944
|
-
const currentTable = tableState.currentTable;
|
|
17945
|
-
const tenantId = args?.tenantId ?? currentTable?.tenantId;
|
|
17946
|
-
const tableId = args?.tableId ?? currentTable?.tableId;
|
|
17947
|
-
const normalizedValues = args?.values !== void 0 ? args.values : extractLegacyValues(args);
|
|
17948
|
-
const values = normalizedValues ?? {};
|
|
18475
|
+
const { tenantId, tableId } = resolveTableIdentity(args);
|
|
17949
18476
|
if (!tenantId || !tableId) {
|
|
17950
18477
|
throw new Error(
|
|
17951
|
-
"addTableRow \
|
|
18478
|
+
"addTableRow \u5FC5\u987B\u663E\u5F0F\u63D0\u4F9B tenantId \u548C tableId\u3002"
|
|
17952
18479
|
);
|
|
17953
18480
|
}
|
|
18481
|
+
const normalizedValues = args?.values !== void 0 ? args.values : extractLegacyValues(args);
|
|
18482
|
+
const values = normalizedValues ?? {};
|
|
17954
18483
|
if (!isRecord(values)) {
|
|
17955
18484
|
throw new Error(
|
|
17956
18485
|
'addTableRow.values \u5FC5\u987B\u662F\u4E00\u4E2A\u5BF9\u8C61\uFF08\u5217\u540D\u5230\u503C\u7684\u6620\u5C04\uFF0C\u4F8B\u5982 { "name": "\u5F20\u4E09", "desc": "\u6D4B\u8BD5\u4EFB\u52A1" }\uFF09\u3002'
|
|
17957
18486
|
);
|
|
17958
18487
|
}
|
|
18488
|
+
const tableMeta = await loadTableMetaOrThrow(thunkApi, tenantId, tableId);
|
|
17959
18489
|
if (Object.keys(values).length === 0) {
|
|
17960
|
-
const knownCols =
|
|
18490
|
+
const knownCols = tableMeta && Array.isArray(tableMeta.columns) ? tableMeta.columns.map((c) => c.name).join(", ") || "(\u65E0\u5217\u5B9A\u4E49)" : "(\u76EE\u6807\u8868\u5B57\u6BB5\u672A\u77E5)";
|
|
17961
18491
|
throw new Error(
|
|
17962
18492
|
`addTableRow.values \u4E0D\u80FD\u4E3A\u7A7A\uFF1A\u4F60\u9700\u8981\u81F3\u5C11\u4E3A\u4E00\u4E2A\u5B57\u6BB5\u63D0\u4F9B\u503C\u3002
|
|
17963
18493
|
\u8BF7\u6839\u636E\u7528\u6237\u7684\u8F93\u5165\uFF0C\u4ECE\u4EE5\u4E0B\u5B57\u6BB5\u4E2D\u9009\u62E9\u5E76\u586B\u5145\u503C\uFF1A${knownCols}`
|
|
@@ -17965,8 +18495,8 @@ async function addTableRowFunc(args, thunkApi) {
|
|
|
17965
18495
|
}
|
|
17966
18496
|
let sanitizedValues = values;
|
|
17967
18497
|
let ignoredColumns = [];
|
|
17968
|
-
if (
|
|
17969
|
-
const allowedColumns = new Set(
|
|
18498
|
+
if (tableMeta && Array.isArray(tableMeta.columns) && tableMeta.columns.length > 0) {
|
|
18499
|
+
const allowedColumns = new Set(tableMeta.columns.map((c) => c.name));
|
|
17970
18500
|
sanitizedValues = {};
|
|
17971
18501
|
ignoredColumns = [];
|
|
17972
18502
|
for (const [key, val] of Object.entries(values)) {
|
|
@@ -17977,9 +18507,9 @@ async function addTableRowFunc(args, thunkApi) {
|
|
|
17977
18507
|
}
|
|
17978
18508
|
}
|
|
17979
18509
|
if (Object.keys(sanitizedValues).length === 0 && Object.keys(values).length > 0) {
|
|
17980
|
-
const knownCols =
|
|
18510
|
+
const knownCols = tableMeta.columns.map((c) => c.name).join(", ") || "(\u65E0\u5217\u5B9A\u4E49)";
|
|
17981
18511
|
throw new Error(
|
|
17982
|
-
`addTableRow \u5931\u8D25\uFF1A\u63D0\u4F9B\u7684\u5B57\u6BB5\u540D\u90FD\u4E0D\u5728\
|
|
18512
|
+
`addTableRow \u5931\u8D25\uFF1A\u63D0\u4F9B\u7684\u5B57\u6BB5\u540D\u90FD\u4E0D\u5728\u76EE\u6807\u8868\u4E2D\u3002
|
|
17983
18513
|
\u5DF2\u77E5\u5B57\u6BB5: ${knownCols}
|
|
17984
18514
|
\u8BF7\u4EC5\u4F7F\u7528\u8FD9\u4E9B\u5B57\u6BB5\u540D\u4F5C\u4E3A key\u3002`
|
|
17985
18515
|
);
|
|
@@ -17994,10 +18524,10 @@ async function addTableRowFunc(args, thunkApi) {
|
|
|
17994
18524
|
throw new Error(msg);
|
|
17995
18525
|
}
|
|
17996
18526
|
const createdRow = actionResult.payload;
|
|
17997
|
-
const tableLabel =
|
|
18527
|
+
const tableLabel = tableMeta?.displayName || tableMeta?.tableId || tableId;
|
|
17998
18528
|
const ignoredInfo = ignoredColumns.length > 0 ? `
|
|
17999
18529
|
|
|
18000
|
-
\u6CE8\u610F\uFF1A\u4EE5\u4E0B\u5B57\u6BB5\u5728\
|
|
18530
|
+
\u6CE8\u610F\uFF1A\u4EE5\u4E0B\u5B57\u6BB5\u5728\u76EE\u6807\u8868\u4E2D\u4E0D\u5B58\u5728\uFF0C\u5DF2\u88AB\u5FFD\u7565\uFF1A${ignoredColumns.join(
|
|
18001
18531
|
", "
|
|
18002
18532
|
)}` : "";
|
|
18003
18533
|
return {
|
|
@@ -18451,10 +18981,10 @@ var normalizeDate = (value) => {
|
|
|
18451
18981
|
return value.toISOString().slice(0, 10);
|
|
18452
18982
|
}
|
|
18453
18983
|
if (typeof value !== "string") return void 0;
|
|
18454
|
-
const
|
|
18455
|
-
if (!
|
|
18456
|
-
if (/^\d{4}-\d{2}-\d{2}$/.test(
|
|
18457
|
-
const parsed = new Date(
|
|
18984
|
+
const trimmed2 = value.trim();
|
|
18985
|
+
if (!trimmed2) return void 0;
|
|
18986
|
+
if (/^\d{4}-\d{2}-\d{2}$/.test(trimmed2)) return trimmed2;
|
|
18987
|
+
const parsed = new Date(trimmed2);
|
|
18458
18988
|
if (Number.isNaN(parsed.getTime())) return void 0;
|
|
18459
18989
|
return parsed.toISOString().slice(0, 10);
|
|
18460
18990
|
};
|
|
@@ -18463,9 +18993,9 @@ var normalizeDateTime = (value) => {
|
|
|
18463
18993
|
return value.toISOString();
|
|
18464
18994
|
}
|
|
18465
18995
|
if (typeof value !== "string") return void 0;
|
|
18466
|
-
const
|
|
18467
|
-
if (!
|
|
18468
|
-
const parsed = new Date(
|
|
18996
|
+
const trimmed2 = value.trim();
|
|
18997
|
+
if (!trimmed2) return void 0;
|
|
18998
|
+
const parsed = new Date(trimmed2);
|
|
18469
18999
|
if (Number.isNaN(parsed.getTime())) return void 0;
|
|
18470
19000
|
return parsed.toISOString();
|
|
18471
19001
|
};
|
|
@@ -18477,9 +19007,9 @@ var normalizeMultiSelectInput = (value) => {
|
|
|
18477
19007
|
return list;
|
|
18478
19008
|
}
|
|
18479
19009
|
if (typeof value === "string") {
|
|
18480
|
-
const
|
|
18481
|
-
if (!
|
|
18482
|
-
return
|
|
19010
|
+
const trimmed2 = value.trim();
|
|
19011
|
+
if (!trimmed2) return [];
|
|
19012
|
+
return trimmed2.split(",").map((item) => item.trim()).filter(Boolean);
|
|
18483
19013
|
}
|
|
18484
19014
|
return void 0;
|
|
18485
19015
|
};
|
|
@@ -18660,90 +19190,6 @@ var pickRowColumns = (row, columns, options = {}) => {
|
|
|
18660
19190
|
};
|
|
18661
19191
|
var formatKnownColumns = (tableMeta) => tableMeta.columns.map((column) => column.name).join(", ") || "(\u65E0\u5217\u5B9A\u4E49)";
|
|
18662
19192
|
|
|
18663
|
-
// packages/ai/tools/table/toolShared.ts
|
|
18664
|
-
var resolveTableIdentity = (args, state2) => {
|
|
18665
|
-
const currentTable = state2.table.currentTable;
|
|
18666
|
-
const tenantId = args.tenantId ?? currentTable?.tenantId;
|
|
18667
|
-
const tableId = args.tableId ?? currentTable?.tableId;
|
|
18668
|
-
return { tenantId, tableId, currentTable };
|
|
18669
|
-
};
|
|
18670
|
-
async function loadTableMetaOrThrow(thunkApi, tenantId, tableId) {
|
|
18671
|
-
const result = await thunkApi.dispatch(readAndWait(metaKey(tenantId, tableId)));
|
|
18672
|
-
if (!readAndWait.fulfilled.match(result) || !result.payload) {
|
|
18673
|
-
const message = result.payload?.message || result.error?.message || `\u627E\u4E0D\u5230\u8868 ${tableId} \u7684\u5B9A\u4E49\u3002`;
|
|
18674
|
-
throw new Error(message);
|
|
18675
|
-
}
|
|
18676
|
-
return result.payload;
|
|
18677
|
-
}
|
|
18678
|
-
async function ensureRowsLoaded(thunkApi, tenantId, tableId) {
|
|
18679
|
-
const result = await thunkApi.dispatch(loadTableRows({ tenantId, tableId }));
|
|
18680
|
-
if (!loadTableRows.fulfilled.match(result)) {
|
|
18681
|
-
const message = result.payload || result.error?.message || "\u52A0\u8F7D\u8868\u884C\u5931\u8D25";
|
|
18682
|
-
throw new Error(message);
|
|
18683
|
-
}
|
|
18684
|
-
const state2 = thunkApi.getState();
|
|
18685
|
-
return state2.table.rows.filter(
|
|
18686
|
-
(row) => row?.tenantId === tenantId && row?.tableId === tableId && !row?.deletedAt
|
|
18687
|
-
);
|
|
18688
|
-
}
|
|
18689
|
-
async function resolveRowOrThrow(thunkApi, args) {
|
|
18690
|
-
const { tenantId, tableId, rowId, dbKey } = args;
|
|
18691
|
-
if (!rowId && !dbKey) {
|
|
18692
|
-
throw new Error("\u9700\u8981\u63D0\u4F9B rowId \u6216 dbKey \u624D\u80FD\u5B9A\u4F4D\u8868\u884C\u3002");
|
|
18693
|
-
}
|
|
18694
|
-
const finalDbKey = dbKey || rowKey.single(tenantId, tableId, String(rowId));
|
|
18695
|
-
const readResult = await thunkApi.dispatch(readAndWait(finalDbKey));
|
|
18696
|
-
if (readAndWait.fulfilled.match(readResult) && readResult.payload && !readResult.payload.deletedAt) {
|
|
18697
|
-
return readResult.payload;
|
|
18698
|
-
}
|
|
18699
|
-
const rows = await ensureRowsLoaded(thunkApi, tenantId, tableId);
|
|
18700
|
-
const found = rows.find((row) => row?.dbKey === finalDbKey || row?.rowId === rowId);
|
|
18701
|
-
if (!found) {
|
|
18702
|
-
throw new Error(`\u627E\u4E0D\u5230\u8981\u64CD\u4F5C\u7684\u884C\uFF1A${rowId || finalDbKey}`);
|
|
18703
|
-
}
|
|
18704
|
-
return found;
|
|
18705
|
-
}
|
|
18706
|
-
async function writeRow(thunkApi, row) {
|
|
18707
|
-
const result = await thunkApi.dispatch(
|
|
18708
|
-
write({
|
|
18709
|
-
data: row,
|
|
18710
|
-
customKey: row.dbKey
|
|
18711
|
-
})
|
|
18712
|
-
);
|
|
18713
|
-
if (!write.fulfilled.match(result)) {
|
|
18714
|
-
const message = result.payload?.message || result.error?.message || "\u5199\u5165\u8868\u884C\u5931\u8D25";
|
|
18715
|
-
throw new Error(message);
|
|
18716
|
-
}
|
|
18717
|
-
return result.payload;
|
|
18718
|
-
}
|
|
18719
|
-
async function patchRecord(thunkApi, dbKey, changes) {
|
|
18720
|
-
const result = await thunkApi.dispatch(
|
|
18721
|
-
patch({
|
|
18722
|
-
dbKey,
|
|
18723
|
-
changes
|
|
18724
|
-
})
|
|
18725
|
-
);
|
|
18726
|
-
if (!patch.fulfilled.match(result)) {
|
|
18727
|
-
const message = result.payload?.message || result.error?.message || `\u66F4\u65B0\u8BB0\u5F55\u5931\u8D25\uFF1A${dbKey}`;
|
|
18728
|
-
throw new Error(message);
|
|
18729
|
-
}
|
|
18730
|
-
return result.payload;
|
|
18731
|
-
}
|
|
18732
|
-
function buildNewRow(tenantId, tableId, values) {
|
|
18733
|
-
const { dbKey, rowId } = rowKey.create(tenantId, tableId);
|
|
18734
|
-
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
18735
|
-
return {
|
|
18736
|
-
dbKey,
|
|
18737
|
-
tenantId,
|
|
18738
|
-
tableId,
|
|
18739
|
-
rowId,
|
|
18740
|
-
createdAt: now,
|
|
18741
|
-
updatedAt: now,
|
|
18742
|
-
type: "table_row" /* TABLE_ROW */,
|
|
18743
|
-
...values
|
|
18744
|
-
};
|
|
18745
|
-
}
|
|
18746
|
-
|
|
18747
19193
|
// packages/ai/tools/table/rowTools.ts
|
|
18748
19194
|
var toPreviewJson3 = (value, maxLength = 600) => {
|
|
18749
19195
|
try {
|
|
@@ -18755,7 +19201,10 @@ var toPreviewJson3 = (value, maxLength = 600) => {
|
|
|
18755
19201
|
return "[\u65E0\u6CD5\u5E8F\u5217\u5316\u4E3A JSON]";
|
|
18756
19202
|
}
|
|
18757
19203
|
};
|
|
18758
|
-
var selectCurrentUserId = (state2) =>
|
|
19204
|
+
var selectCurrentUserId = (state2) => {
|
|
19205
|
+
const userId = selectIdentityUserId(state2);
|
|
19206
|
+
return typeof userId === "string" ? userId : void 0;
|
|
19207
|
+
};
|
|
18759
19208
|
var normalizeTableQueryArgs = (args, thunkApi) => {
|
|
18760
19209
|
const state2 = thunkApi.getState();
|
|
18761
19210
|
return buildNoloTableQueryRequest(args ?? {}, selectCurrentUserId(state2)) ?? args;
|
|
@@ -18764,7 +19213,7 @@ var requireTableIdentity = (args, thunkApi) => {
|
|
|
18764
19213
|
const state2 = thunkApi.getState();
|
|
18765
19214
|
const { tenantId, tableId } = resolveTableIdentity(args, state2);
|
|
18766
19215
|
if (!tenantId || !tableId) {
|
|
18767
|
-
throw new Error("\u9700\u8981\u663E\u5F0F\u63D0\u4F9B tenantId \u548C tableId\
|
|
19216
|
+
throw new Error("\u9700\u8981\u663E\u5F0F\u63D0\u4F9B tenantId \u548C tableId\u3002");
|
|
18768
19217
|
}
|
|
18769
19218
|
return { tenantId, tableId };
|
|
18770
19219
|
};
|
|
@@ -19093,7 +19542,7 @@ var requireTableIdentity2 = (args, thunkApi) => {
|
|
|
19093
19542
|
const state2 = thunkApi.getState();
|
|
19094
19543
|
const { tenantId, tableId } = resolveTableIdentity(args, state2);
|
|
19095
19544
|
if (!tenantId || !tableId) {
|
|
19096
|
-
throw new Error("\u9700\u8981\u663E\u5F0F\u63D0\u4F9B tenantId \u548C tableId\
|
|
19545
|
+
throw new Error("\u9700\u8981\u663E\u5F0F\u63D0\u4F9B tenantId \u548C tableId\u3002");
|
|
19097
19546
|
}
|
|
19098
19547
|
return { tenantId, tableId };
|
|
19099
19548
|
};
|
|
@@ -19520,14 +19969,14 @@ async function assertFetchableDocsUrl(rawUrl, fetchImpl = fetch, originalUrl) {
|
|
|
19520
19969
|
}
|
|
19521
19970
|
}
|
|
19522
19971
|
function detectExtractionIssue(markdown, sourceUrl) {
|
|
19523
|
-
const
|
|
19524
|
-
if (!
|
|
19972
|
+
const trimmed2 = markdown.trim();
|
|
19973
|
+
if (!trimmed2) {
|
|
19525
19974
|
return {
|
|
19526
19975
|
code: "EMPTY_EXTRACTION",
|
|
19527
19976
|
message: `\u8BBF\u95EE\u7F51\u9875\u5931\u8D25\uFF1A${sourceUrl} \u672A\u63D0\u53D6\u5230\u6B63\u6587\u5185\u5BB9\u3002`
|
|
19528
19977
|
};
|
|
19529
19978
|
}
|
|
19530
|
-
const lower =
|
|
19979
|
+
const lower = trimmed2.toLowerCase();
|
|
19531
19980
|
if (lower.startsWith("<!doctype html") || lower.startsWith("<html") || lower.includes("__next_error__")) {
|
|
19532
19981
|
return {
|
|
19533
19982
|
code: "HTML_SHELL",
|
|
@@ -21202,11 +21651,11 @@ var firecrawlSearchSchema = {
|
|
|
21202
21651
|
}
|
|
21203
21652
|
};
|
|
21204
21653
|
function normalizeHttpUrl(rawUrl) {
|
|
21205
|
-
const
|
|
21206
|
-
if (!
|
|
21654
|
+
const trimmed2 = rawUrl.trim();
|
|
21655
|
+
if (!trimmed2.startsWith("http://") && !trimmed2.startsWith("https://")) {
|
|
21207
21656
|
throw new Error("firecrawl_scrape \u9700\u8981\u6709\u6548\u7684 http/https URL\u3002");
|
|
21208
21657
|
}
|
|
21209
|
-
return
|
|
21658
|
+
return trimmed2;
|
|
21210
21659
|
}
|
|
21211
21660
|
function normalizeScrapeTimeout(timeout) {
|
|
21212
21661
|
if (timeout === void 0 || timeout === null) return void 0;
|
|
@@ -21587,9 +22036,9 @@ async function googleSearchScraperFunc(args, thunkApi) {
|
|
|
21587
22036
|
}
|
|
21588
22037
|
if (Array.isArray(args.queries)) {
|
|
21589
22038
|
for (const q of args.queries) {
|
|
21590
|
-
const
|
|
21591
|
-
if (
|
|
21592
|
-
collected.push(
|
|
22039
|
+
const trimmed2 = asOptionalTrimmedString(q);
|
|
22040
|
+
if (trimmed2) {
|
|
22041
|
+
collected.push(trimmed2);
|
|
21593
22042
|
}
|
|
21594
22043
|
}
|
|
21595
22044
|
} else {
|
|
@@ -21786,7 +22235,7 @@ var cloudflareCrawlStatusFunctionSchema = {
|
|
|
21786
22235
|
async function cloudflareCrawlStatusFunc(args, thunkApi) {
|
|
21787
22236
|
const { jobId, limit, status, cursor } = args;
|
|
21788
22237
|
if (!jobId) throw new Error("\u5FC5\u987B\u63D0\u4F9B jobId");
|
|
21789
|
-
const { getToolRequestContext: getToolRequestContext2 } = await import("./toolApiClient-
|
|
22238
|
+
const { getToolRequestContext: getToolRequestContext2 } = await import("./toolApiClient-VGYUB4P5.js");
|
|
21790
22239
|
const { baseUrl, token } = getToolRequestContext2(thunkApi);
|
|
21791
22240
|
const params = new URLSearchParams();
|
|
21792
22241
|
if (limit !== void 0) params.set("limit", String(limit));
|
|
@@ -22557,11 +23006,14 @@ function stringifyIfPresent(value) {
|
|
|
22557
23006
|
// packages/ai/tools/geminiImagePreviewTool.ts
|
|
22558
23007
|
var selectCurrentDialogKeyFromState = (_state) => getActiveDialogKey();
|
|
22559
23008
|
var selectCurrentSpaceIdFromState = (_state) => getCurrentSpaceId();
|
|
22560
|
-
var selectUserIdFromState = (state2) =>
|
|
23009
|
+
var selectUserIdFromState = (state2) => {
|
|
23010
|
+
const userId = selectIdentityUserId(state2);
|
|
23011
|
+
return typeof userId === "string" ? userId : null;
|
|
23012
|
+
};
|
|
22561
23013
|
var selectCurrentServerFromState = (state2) => typeof state2?.settings?.currentServer === "string" ? state2.settings.currentServer : null;
|
|
22562
23014
|
async function addImageContentToSpace(input) {
|
|
22563
23015
|
const injectedAddContentAction = input.thunkApi?.extra?.addContentAction;
|
|
22564
|
-
const addContentAction2 = typeof injectedAddContentAction === "function" ? injectedAddContentAction : (await import("./addContentAction-
|
|
23016
|
+
const addContentAction2 = typeof injectedAddContentAction === "function" ? injectedAddContentAction : (await import("./addContentAction-V3NAZRTJ.js")).addContentAction;
|
|
22565
23017
|
await addContentAction2(
|
|
22566
23018
|
{
|
|
22567
23019
|
spaceId: input.spaceId,
|
|
@@ -24389,26 +24841,6 @@ var resolveRetryAfterMs = (headers, fallbackMs, bodyRetryAfterMs) => {
|
|
|
24389
24841
|
return normalizeNonNegativeMs(bodyRetryAfterMs, fallbackMs);
|
|
24390
24842
|
};
|
|
24391
24843
|
|
|
24392
|
-
// packages/core/abortableDelay.ts
|
|
24393
|
-
function waitForAbortableDelay(ms, signal) {
|
|
24394
|
-
const delayMs = Number.isFinite(ms) && ms >= 0 ? Math.round(ms) : 0;
|
|
24395
|
-
if (signal?.aborted) {
|
|
24396
|
-
return Promise.reject(new DOMException("Aborted", "AbortError"));
|
|
24397
|
-
}
|
|
24398
|
-
return new Promise((resolve, reject) => {
|
|
24399
|
-
const onAbort = () => {
|
|
24400
|
-
clearTimeout(timeoutId);
|
|
24401
|
-
signal?.removeEventListener("abort", onAbort);
|
|
24402
|
-
reject(new DOMException("Aborted", "AbortError"));
|
|
24403
|
-
};
|
|
24404
|
-
const timeoutId = setTimeout(() => {
|
|
24405
|
-
signal?.removeEventListener("abort", onAbort);
|
|
24406
|
-
resolve();
|
|
24407
|
-
}, delayMs);
|
|
24408
|
-
signal?.addEventListener("abort", onAbort, { once: true });
|
|
24409
|
-
});
|
|
24410
|
-
}
|
|
24411
|
-
|
|
24412
24844
|
// packages/core/deployWindowRetrySignal.ts
|
|
24413
24845
|
function isDeployWindowRetrySignal(e) {
|
|
24414
24846
|
if (e.reason === CORE_DRAIN_REASON) return true;
|
|
@@ -24711,9 +25143,10 @@ var runAgentBackground = createAsyncThunk("agent/runBackground", async (args, {
|
|
|
24711
25143
|
// packages/ai/tools/agent/startAgentRunTool.ts
|
|
24712
25144
|
function buildStartAgentRunFunctionSchema(opts) {
|
|
24713
25145
|
const supportsWait = opts?.supportsWait !== false;
|
|
25146
|
+
const wakeEnabled = opts?.wakeEnabled === true;
|
|
24714
25147
|
return {
|
|
24715
25148
|
name: "startAgentRun",
|
|
24716
|
-
description: "\u542F\u52A8\u4E00\u4E2A Agent \u6267\u884C\u5B50\u4EFB\u52A1\u3002\u9ED8\u8BA4\u5F02\u6B65\uFF08fork+exec\uFF09\uFF1A\u7ACB\u5373\u8FD4\u56DE runId \u4E0D\u963B\u585E\u5BF9\u8BDD\uFF0C\
|
|
25149
|
+
description: "\u542F\u52A8\u4E00\u4E2A Agent \u6267\u884C\u5B50\u4EFB\u52A1\u3002\u9ED8\u8BA4\u5F02\u6B65\uFF08fork+exec\uFF09\uFF1A\u7ACB\u5373\u8FD4\u56DE runId \u4E0D\u963B\u585E\u5BF9\u8BDD\uFF0C\u6D3E\u53D1\u540E\u76F4\u63A5\u6536\u5C3E\u7B49\u7EC8\u6001\u901A\u77E5\uFF0C\u7981\u6B62\u8F6E\u8BE2\uFF1BcontrolAgentRun \u7528\u4E8E\u63A7\u5236\uFF08\u53EB\u505C/\u8FFD\u52A0\u6307\u4EE4\uFF09\u4E0E\u5F02\u5E38\u8BCA\u65AD\u3002" + (supportsWait ? "\u8981\u540C\u6B65\u7ED3\u679C\u4F20 wait:true\uFF08\u4F1A\u51BB\u7ED3\u5BF9\u8BDD\uFF0C\u4EC5\u9650 \u2460 \u9884\u8BA1 <100s \u4E14\u9A6C\u4E0A\u8981\u7528\u7ED3\u679C \u2461 \u7528\u6237\u660E\u786E\u8981\u6C42\u540C\u6B65\u7B49\u5F85\u6216\u6B63\u5728\u4E0E\u8BE5\u5B50\u4EFB\u52A1\u5BF9\u8BDD \u2462 \u73AF\u5883\u4E0D\u652F\u6301\u7EC8\u6001\u5524\u9192\u4E14\u65E0\u5E76\u884C\u5DE5\u4F5C\uFF1B\u8BE6\u89C1 wait \u53C2\u6570\uFF09\u3002wait:true \u65F6\u53EF\u7528 resultMode \u63A7\u5236\u8FD4\u56DE\u5185\u5BB9\uFF1Afull=\u5B8C\u6574\u8F93\u51FA\uFF1Bsummary=\u53EA\u56DE\u5934\u5C3E\u603B\u7ED3\uFF08\u9632\u957F\u8F93\u51FA\u6491\u7206\u4E0A\u4E0B\u6587\uFF09\u3002" : wakeEnabled ? "\u53EA\u652F\u6301\u5F02\u6B65\u6D3E\u53D1\uFF1Brun \u5230\u7EC8\u6001\u4F1A\u81EA\u52A8\u901A\u8FC7 terminal wake \u628A\u7236\u5BF9\u8BDD\u63A5\u56DE\u6765\uFF1B\u6D3E\u53D1\u540E\u76F4\u63A5\u6536\u5C3E\uFF0C\u4E0D\u8981\u8F6E\u8BE2" : "\u53EA\u652F\u6301\u5F02\u6B65\u6D3E\u53D1\uFF0CstartAgentRun \u4E0D\u63D0\u4F9B\u540C\u6B65\u7B49\u5F85\uFF1B\u9700\u8981\u7B49\u7EC8\u6001\u65F6\u53EF\u7528 controlAgentRun(wait)\uFF08\u82E5\u8BE5 action \u53EF\u7528\uFF09\uFF1B\u4E0D\u8981\u5047\u8BBE\u4F1A\u81EA\u52A8 terminal wake"),
|
|
24717
25150
|
parameters: {
|
|
24718
25151
|
type: "object",
|
|
24719
25152
|
properties: {
|
|
@@ -24723,10 +25156,10 @@ function buildStartAgentRunFunctionSchema(opts) {
|
|
|
24723
25156
|
},
|
|
24724
25157
|
task: {
|
|
24725
25158
|
type: "string",
|
|
24726
|
-
description: "\u59D4\u6258\u7ED9\u8BE5 Agent \u7684\u5B50\u4EFB\u52A1\
|
|
25159
|
+
description: "\u59D4\u6258\u7ED9\u8BE5 Agent \u7684\u7CBE\u7B80\u5B50\u4EFB\u52A1\u6307\u4EE4/brief\u3002\u63A8\u8350\u901A\u8FC7\u5171\u4EAB\u5F15\u7528\uFF08\u5982 commit hash\u3001\u6587\u4EF6\u8DEF\u5F84\u4E0E\u884C\u53F7\u533A\u95F4 path:1-50\u3001dialogId\u3001artifact id \u7B49\uFF09\u6307\u5F15\u5B50\u4EFB\u52A1\u81EA\u884C\u8BFB\u53D6\uFF0C\u4E25\u7981\u5C06\u5B8C\u6574\u6587\u4EF6\u5185\u5BB9\u3001\u5168\u91CF git diff\u3001\u957F\u65E5\u5FD7\u6216\u4ED3\u5E93\u603B\u8BF4\u660E\u590D\u5236\u8FDB task\u3002"
|
|
24727
25160
|
},
|
|
24728
25161
|
input: {
|
|
24729
|
-
description: "\u53EF\u9009\
|
|
25162
|
+
description: "\u53EF\u9009\u3002\u4EC5\u7528\u4E8E\u4F20\u9012\u5B50\u4EFB\u52A1\u65E0\u6CD5\u901A\u8FC7\u672C\u5730\u6587\u4EF6\u7CFB\u7EDF\u6216\u5171\u4EAB\u5F15\u7528\u76F4\u63A5\u8BFB\u53D6\u7684\u771F\u5B9E\u5916\u90E8\u8F93\u5165\uFF08\u5982\u5916\u90E8 API \u54CD\u5E94\u3001\u77AC\u65F6\u6570\u636E\uFF09\u3002\u5DF2\u6709\u5171\u4EAB\u5F15\u7528\u6216\u65E0\u9700\u9644\u52A0\u6570\u636E\u65F6\u8BF7\u7701\u7565\uFF0C\u5207\u52FF\u91CD\u590D\u590D\u5236 task \u63CF\u8FF0\u3002"
|
|
24730
25163
|
},
|
|
24731
25164
|
agentName: {
|
|
24732
25165
|
type: "string",
|
|
@@ -24747,7 +25180,7 @@ function buildStartAgentRunFunctionSchema(opts) {
|
|
|
24747
25180
|
...supportsWait ? {
|
|
24748
25181
|
wait: {
|
|
24749
25182
|
type: "boolean",
|
|
24750
|
-
description: "\u53EF\u9009\u3002\u4E3A true \u65F6\u540C\u6B65\u7B49\u5F85\u5B50\u4EFB\u52A1\u5B8C\u6210\u5E76\u76F4\u63A5\u8FD4\u56DE\u7ED3\u679C\uFF08\u8BA2\u9605 SSE \u7B49 done/failed\uFF09\uFF0C\u4E0D\u8FD4\u56DE runId\u3002\u963B\u585E\u7B49\u5F85\u4F1A\u51BB\u7ED3\u5F53\u524D\u5BF9\u8BDD\uFF0C\u4EC5\u9650\u4E09\u79CD\u60C5\u51B5\uFF08\u89C1\u9876\u5C42\u63CF\u8FF0\uFF09\uFF1B\u9ED8\u8BA4 false\uFF08\u5F02\u6B65\uFF0C\u8FD4\u56DE runId \u540E\
|
|
25183
|
+
description: "\u53EF\u9009\u3002\u4E3A true \u65F6\u540C\u6B65\u7B49\u5F85\u5B50\u4EFB\u52A1\u5B8C\u6210\u5E76\u76F4\u63A5\u8FD4\u56DE\u7ED3\u679C\uFF08\u8BA2\u9605 SSE \u7B49 done/failed\uFF09\uFF0C\u4E0D\u8FD4\u56DE runId\u3002\u963B\u585E\u7B49\u5F85\u4F1A\u51BB\u7ED3\u5F53\u524D\u5BF9\u8BDD\uFF0C\u4EC5\u9650\u4E09\u79CD\u60C5\u51B5\uFF08\u89C1\u9876\u5C42\u63CF\u8FF0\uFF09\uFF1B\u9ED8\u8BA4 false\uFF08\u5F02\u6B65\uFF0C\u8FD4\u56DE runId \u540E\u76F4\u63A5\u6536\u5C3E\u7B49\u7EC8\u6001\u901A\u77E5\uFF09\u3002",
|
|
24751
25184
|
default: false
|
|
24752
25185
|
},
|
|
24753
25186
|
resultMode: {
|
|
@@ -24779,6 +25212,7 @@ async function startAgentRunFunc(args, thunkApi, _context) {
|
|
|
24779
25212
|
throw new Error("startAgentRun: \u7F3A\u5C11\u6709\u6548\u7684 task \u6587\u672C\u63CF\u8FF0\u3002");
|
|
24780
25213
|
}
|
|
24781
25214
|
const content = buildDelegatedTaskContent(task, input);
|
|
25215
|
+
const payloadMetrics = calculateDelegatedPayloadMetrics(task, input, content);
|
|
24782
25216
|
const activeDialogKey = getActiveDialogKey();
|
|
24783
25217
|
const explicitParentDialogId = typeof args.parentDialogId === "string" && args.parentDialogId.trim() ? args.parentDialogId.includes("-") ? extractCustomId(args.parentDialogId) : args.parentDialogId.trim() : void 0;
|
|
24784
25218
|
const parentDialogId = explicitParentDialogId ?? (activeDialogKey ? extractCustomId(activeDialogKey) : void 0);
|
|
@@ -24800,7 +25234,10 @@ async function startAgentRunFunc(args, thunkApi, _context) {
|
|
|
24800
25234
|
const fullContent = bgResult.content ?? "";
|
|
24801
25235
|
return {
|
|
24802
25236
|
rawData: resultMode === "summary" ? summarizeChildContent(fullContent) : fullContent,
|
|
24803
|
-
displayData: `\u2705 startAgentRun \u540C\u6B65\u5B8C\u6210\uFF0CdialogId: ${bgResult.dialogId}${resultMode === "summary" ? "\uFF08summary\uFF09" : ""}
|
|
25237
|
+
displayData: `\u2705 startAgentRun \u540C\u6B65\u5B8C\u6210\uFF0CdialogId: ${bgResult.dialogId}${resultMode === "summary" ? "\uFF08summary\uFF09" : ""}`,
|
|
25238
|
+
metadata: {
|
|
25239
|
+
payloadMetrics
|
|
25240
|
+
}
|
|
24804
25241
|
};
|
|
24805
25242
|
}
|
|
24806
25243
|
const runId = bgResult.dialogId;
|
|
@@ -24819,12 +25256,16 @@ async function startAgentRunFunc(args, thunkApi, _context) {
|
|
|
24819
25256
|
// CLI local path it is also persisted on the run record.
|
|
24820
25257
|
batchId: effectiveBatchId,
|
|
24821
25258
|
...resolvedName ? { agentName: resolvedName } : {},
|
|
24822
|
-
...taskPreview ? { taskPreview } : {}
|
|
25259
|
+
...taskPreview ? { taskPreview } : {},
|
|
25260
|
+
payloadMetrics
|
|
24823
25261
|
},
|
|
24824
25262
|
displayData: formatStartRunCard(resolveRunLabel(identity), status, {
|
|
24825
25263
|
task: taskPreview,
|
|
24826
25264
|
runId
|
|
24827
|
-
})
|
|
25265
|
+
}),
|
|
25266
|
+
metadata: {
|
|
25267
|
+
payloadMetrics
|
|
25268
|
+
}
|
|
24828
25269
|
};
|
|
24829
25270
|
} catch (e) {
|
|
24830
25271
|
throw new Error(`startAgentRun \u542F\u52A8 Agent [${agentKey}] \u5931\u8D25: ${toErrorMessage(e)}`);
|
|
@@ -24859,20 +25300,24 @@ var ACTION_DESCRIPTIONS = {
|
|
|
24859
25300
|
wait: "wait=\u7EC8\u6001\u963B\u585E\u7B49\u5F85\uFF1A\u8BA2\u9605\u8BE5 dialog \u7684 SSE \u4E8B\u4EF6\u6D41\u7B49 done/failed\uFF0C\u5DF2\u7EC8\u6001\u7ACB\u5373\u8FD4\u56DE\uFF0C\u4E0D\u662F\u8F6E\u8BE2",
|
|
24860
25301
|
todo: "todo=\u5217\u51FA runtime todo\uFF08\u7531 startAgentRun \u7684 batchId/trackTodo \u4EA7\u751F\uFF09"
|
|
24861
25302
|
};
|
|
25303
|
+
var WAKE_STATUS_ACTION_DESCRIPTION = "status=\u6309\u9700\u8BCA\u65AD\u5355\u6761 run\uFF1A\u4EC5\u5728\u6000\u7591\u5361\u6B7B\u3001\u5931\u8D25\u540E\u770B\u8BE6\u60C5/\u65E5\u5FD7\uFF08tailLines>0\uFF09\u3001\u6216\u7528\u6237\u660E\u786E\u8BE2\u95EE\u6267\u884C\u7EC6\u8282\u65F6\u8C03\u7528\uFF1B\u6B63\u5E38\u8FD0\u884C\u7684\u8FDB\u5EA6\u7531\u5BBF\u4E3B\u89C2\u5BDF\uFF0C\u7981\u6B62\u8FDE\u7EED status \u67E5\u8BE2\u7B49\u5F85\u5B8C\u6210";
|
|
24862
25304
|
function buildControlAgentRunFunctionSchema(opts) {
|
|
24863
25305
|
const actions = opts?.actions ?? CONTROL_AGENT_RUN_ACTIONS;
|
|
24864
25306
|
const hasWait = actions.includes("wait");
|
|
25307
|
+
const wake = opts?.wakeEnabled === true;
|
|
24865
25308
|
const actionList = actions.filter((a) => a !== "todo").join("/");
|
|
24866
25309
|
return {
|
|
24867
25310
|
name: "controlAgentRun",
|
|
24868
|
-
description: `\u89C2\u5BDF\u548C\u63A7\u5236\u540E\u53F0 agent run\uFF08action\uFF1A${actionList}\uFF0C\u53E6\u6709 todo \u67E5\u8BE2\uFF09\u3002` + (hasWait ? "\u7528 startAgentRun \u62FF\u5230 runId \u540E\u8DDF\u8FDB\u5EA6\u3001\u7B49\u7ED3\u679C\u3001\u8FFD\u52A0\u6307\u4EE4\u6216\u53EB\u505C\u3002" : "\u7528 startAgentRun \u62FF\u5230 runId \u540E\u8DDF\u8FDB\u5EA6\u3001\u8FFD\u52A0\u6307\u4EE4\u6216\u53EB\u505C\u3002") + "\u76EF\u68A2/\u8F6E\u8BE2\u7EAA\u5F8B\u89C1 system prompt\u300C\u591A Agent \u7F16\u6392\u300D\u6BB5\uFF1A\u5F02\u6B65\u6D3E\u53D1\u540E\u7B49\u7EC8\u6001\u901A\u77E5\u3001\u4E0D\u8981\u8F6E\u8BE2\uFF1B" + (hasWait ? "\u963B\u585E\u7B49\u5F85\uFF08wait action\uFF09\u4F1A\u51BB\u7ED3\u5BF9\u8BDD\uFF0C\u4EC5\u9650 \u2460 \u9884\u8BA1 <100s \u4E14\u9A6C\u4E0A\u8981\u7528\u7ED3\u679C \u2461 \u7528\u6237\u660E\u786E\u8981\u6C42\u540C\u6B65\u7B49\u5F85\u6216\u6B63\u5728\u4E0E\u8BE5\u5B50\u4EFB\u52A1\u5BF9\u8BDD \u2462 \u65E0\u5E76\u884C\u5DE5\u4F5C\u53EF\u505A\u3002" : "\u672C\
|
|
25311
|
+
description: `\u89C2\u5BDF\u548C\u63A7\u5236\u540E\u53F0 agent run\uFF08action\uFF1A${actionList}\uFF0C\u53E6\u6709 todo \u67E5\u8BE2\uFF09\u3002` + (wake ? "\u672C\u73AF\u5883\u6709\u7EC8\u6001\u5524\u9192\uFF08terminal wake\uFF09\uFF1A\u6B63\u5E38\u540E\u53F0 run \u6D3E\u53D1\u540E\u76F4\u63A5\u6536\u5C3E\uFF0C\u5BBF\u4E3B\u4F1A\u6301\u7EED\u89C2\u5BDF\u751F\u547D\u5468\u671F\u5E76\u5728 run \u5230\u7EC8\u6001\u65F6\u81EA\u52A8\u628A\u7236\u5BF9\u8BDD\u63A5\u56DE\u6765\u3002" : hasWait ? "\u7528 startAgentRun \u62FF\u5230 runId \u540E\u8DDF\u8FDB\u5EA6\u3001\u7B49\u7ED3\u679C\u3001\u8FFD\u52A0\u6307\u4EE4\u6216\u53EB\u505C\u3002" : "\u7528 startAgentRun \u62FF\u5230 runId \u540E\u8DDF\u8FDB\u5EA6\u3001\u8FFD\u52A0\u6307\u4EE4\u6216\u53EB\u505C\u3002") + "\u76EF\u68A2/\u8F6E\u8BE2\u7EAA\u5F8B\u89C1 system prompt\u300C\u591A Agent \u7F16\u6392\u300D\u6BB5\uFF1A\u5F02\u6B65\u6D3E\u53D1\u540E\u7B49\u7EC8\u6001\u901A\u77E5\u3001\u4E0D\u8981\u8F6E\u8BE2\uFF1B" + (hasWait ? "\u963B\u585E\u7B49\u5F85\uFF08wait action\uFF09\u4F1A\u51BB\u7ED3\u5BF9\u8BDD\uFF0C\u4EC5\u9650 \u2460 \u9884\u8BA1 <100s \u4E14\u9A6C\u4E0A\u8981\u7528\u7ED3\u679C \u2461 \u7528\u6237\u660E\u786E\u8981\u6C42\u540C\u6B65\u7B49\u5F85\u6216\u6B63\u5728\u4E0E\u8BE5\u5B50\u4EFB\u52A1\u5BF9\u8BDD \u2462 \u65E0\u5E76\u884C\u5DE5\u4F5C\u53EF\u505A\u3002" : wake ? "\u672C\u5DE5\u5177\u6CA1\u6709\u963B\u585E\u7B49\u5F85\u52A8\u4F5C\uFF0C\u53EA\u7528\u4E8E\u63A7\u5236\u3001\u5F02\u5E38\u8BCA\u65AD\u548C\u5FC5\u8981\u7684\u4E00\u6B21\u6027\u72B6\u6001\u68C0\u67E5\uFF0C\u4E0D\u7528\u4E8E\u7B49\u5F85\u5B8C\u6210\u6216\u6301\u7EED\u8DDF\u8E2A\u8FDB\u5EA6\uFF0C\u4E0D\u8981\u7528\u8FDE\u7EED\u67E5\u72B6\u6001\u4EE3\u66FF\u7B49\u5F85\u3002" : "") + "\u672C\u5DE5\u5177\u4F9B\u4F60\u81EA\u5DF1\u505A\u51B3\u7B56\u7528\uFF1A\u7528\u6237\u754C\u9762\u5DF2\u5B9E\u65F6\u663E\u793A\u6BCF\u6761 run \u7684\u72B6\u6001\uFF0C\u4E0D\u5FC5\u4E3A\u300C\u8BA9\u7528\u6237\u770B\u5230\u72B6\u6001\u300D\u800C\u8C03\u7528\uFF0C\u8FD4\u56DE\u503C\u4E5F\u4E0D\u8981\u590D\u8FF0\u7ED9\u7528\u6237\u3002",
|
|
24869
25312
|
parameters: {
|
|
24870
25313
|
type: "object",
|
|
24871
25314
|
properties: {
|
|
24872
25315
|
action: {
|
|
24873
25316
|
type: "string",
|
|
24874
25317
|
enum: [...actions],
|
|
24875
|
-
description: actions.map(
|
|
25318
|
+
description: actions.map(
|
|
25319
|
+
(a) => a === "status" && wake ? WAKE_STATUS_ACTION_DESCRIPTION : ACTION_DESCRIPTIONS[a]
|
|
25320
|
+
).join("\uFF1B")
|
|
24876
25321
|
},
|
|
24877
25322
|
runId: {
|
|
24878
25323
|
type: "string",
|
|
@@ -24900,7 +25345,7 @@ function buildControlAgentRunFunctionSchema(opts) {
|
|
|
24900
25345
|
} : {},
|
|
24901
25346
|
tailLines: {
|
|
24902
25347
|
type: "number",
|
|
24903
|
-
description: "\u53EF\u9009\u3002action=status \u65F6\uFF1A0=\u53EA\u8FD4\u56DE\u72B6\u6001\u6458\u8981\uFF0C>0=\u540C\u65F6\u8FD4\u56DE\u6700\u8FD1 N \u884C\u65E5\u5FD7\uFF08\u9ED8\u8BA4 0\uFF09\u3002\u72B6\u6001\u6458\u8981\u5DF2\u542B progress\uFF08\u5DE5\u5177\u8C03\u7528/LLM \u8C03\u7528/inFlight=\u6B64\u523B\u5728\u6267\u884C\u4EC0\u4E48\u3001idleMs\uFF09\uFF0C\u5148\u770B\u5B83\u5224\u65AD\u300C\u5728\u5E72\u6D3B\u300D\u8FD8\u662F\u300C\u5361\u4F4F\u300D\uFF0C\u786E\u5B9E\u53EF\u7591\u6216\u5DF2\u5931\u8D25\u624D\u62C9\u65E5\u5FD7\u3002",
|
|
25348
|
+
description: "\u53EF\u9009\u3002action=status \u65F6\uFF1A0=\u53EA\u8FD4\u56DE\u72B6\u6001\u6458\u8981\uFF0C>0=\u540C\u65F6\u8FD4\u56DE\u6700\u8FD1 N \u884C\u65E5\u5FD7\uFF08\u9ED8\u8BA4 0\uFF09\u3002" + (wake ? "\u72B6\u6001\u6458\u8981\u542B progress\uFF08inFlight=\u6B64\u523B\u5728\u6267\u884C\u4EC0\u4E48\u3001idleMs\uFF09\uFF0C\u7528\u4E8E\u4E00\u6B21\u6027\u5224\u65AD\u300C\u5B83\u662F\u4E0D\u662F\u5361\u4F4F\u4E86\u300D\uFF1B\u6B63\u5E38\u8FD0\u884C\u7684\u8FDB\u5EA6\u7531\u5BBF\u4E3B\u89C2\u5BDF\uFF0C\u4E0D\u8981\u53CD\u590D\u8C03\u7528 status \u76EF progress\u3002" : "\u72B6\u6001\u6458\u8981\u5DF2\u542B progress\uFF08\u5DE5\u5177\u8C03\u7528/LLM \u8C03\u7528/inFlight=\u6B64\u523B\u5728\u6267\u884C\u4EC0\u4E48\u3001idleMs\uFF09\uFF0C\u5148\u770B\u5B83\u5224\u65AD\u300C\u5728\u5E72\u6D3B\u300D\u8FD8\u662F\u300C\u5361\u4F4F\u300D\uFF0C\u786E\u5B9E\u53EF\u7591\u6216\u5DF2\u5931\u8D25\u624D\u62C9\u65E5\u5FD7\u3002"),
|
|
24904
25349
|
default: 0
|
|
24905
25350
|
},
|
|
24906
25351
|
batchId: {
|
|
@@ -25071,7 +25516,7 @@ async function handleStop(thunkApi, opts) {
|
|
|
25071
25516
|
async function handleAppend(thunkApi, opts) {
|
|
25072
25517
|
try {
|
|
25073
25518
|
const state2 = thunkApi.getState?.() ?? {};
|
|
25074
|
-
const userId = state2
|
|
25519
|
+
const userId = selectIdentityUserId(state2);
|
|
25075
25520
|
const resolvedKey = opts.dialogKey || (opts.runId?.startsWith("dialog-") ? opts.runId : opts.runId && userId ? `dialog-${userId}-${opts.runId}` : opts.runId);
|
|
25076
25521
|
if (!resolvedKey) {
|
|
25077
25522
|
throw new Error("dialogKey or runId is required to append an instruction");
|
|
@@ -25614,7 +26059,7 @@ var codeSearchFunctionSchema = {
|
|
|
25614
26059
|
"\u4F7F\u7528 ripgrep (rg) \u5728\u9879\u76EE\u4EE3\u7801\u4E2D\u641C\u7D22\u6587\u672C\uFF0C\u6216\u6309 glob \u5217\u51FA\u6587\u4EF6\u3002",
|
|
25615
26060
|
"",
|
|
25616
26061
|
"\u63A8\u8350\u573A\u666F\uFF1A",
|
|
25617
|
-
"- mode=content\uFF1A\u6309\u5173\u952E\u8BCD\u641C\u7D22\u4EE3\u7801\u5185\u5BB9\
|
|
26062
|
+
"- mode=content\uFF1A\u6309\u5173\u952E\u8BCD\u641C\u7D22\u4EE3\u7801\u5185\u5BB9\u3002",
|
|
25618
26063
|
"- mode=files\uFF1A\u6309\u8DEF\u5F84\u8303\u56F4\u548C glob \u5217\u51FA\u6587\u4EF6\u3002",
|
|
25619
26064
|
"",
|
|
25620
26065
|
"\u53C2\u6570\u8BF4\u660E\uFF1A",
|
|
@@ -26489,7 +26934,7 @@ var executeToolRun = createAsyncThunk(
|
|
|
26489
26934
|
if (!executionInput) {
|
|
26490
26935
|
throw new Error(`ToolRun ${id} has no input to execute with.`);
|
|
26491
26936
|
}
|
|
26492
|
-
const { findToolExecutor: findToolExecutor2 } = await import("./tools-
|
|
26937
|
+
const { findToolExecutor: findToolExecutor2 } = await import("./tools-CVLUXK6P.js");
|
|
26493
26938
|
const { executor } = findToolExecutor2(run.toolName);
|
|
26494
26939
|
toolRunStarted({
|
|
26495
26940
|
id: run.id,
|
|
@@ -26511,9 +26956,9 @@ var executeToolRun = createAsyncThunk(
|
|
|
26511
26956
|
});
|
|
26512
26957
|
if (run.toolName === "deleteSpaces") {
|
|
26513
26958
|
const latestState = thunkApi.getState();
|
|
26514
|
-
const userId = latestState
|
|
26959
|
+
const userId = selectIdentityUserId(latestState);
|
|
26515
26960
|
if (userId) {
|
|
26516
|
-
const { fetchUserSpaceMemberships } = await import("./memberThunks-
|
|
26961
|
+
const { fetchUserSpaceMemberships } = await import("./memberThunks-VZI6G7YZ.js");
|
|
26517
26962
|
await thunkApi.dispatch(fetchUserSpaceMemberships(userId));
|
|
26518
26963
|
}
|
|
26519
26964
|
}
|
|
@@ -26975,9 +27420,9 @@ var TOOL_STEP_STATUS_RANK = {
|
|
|
26975
27420
|
function parseSseChunk(chunk) {
|
|
26976
27421
|
const results = [];
|
|
26977
27422
|
for (const line of chunk.split("\n")) {
|
|
26978
|
-
const
|
|
26979
|
-
if (!
|
|
26980
|
-
const json =
|
|
27423
|
+
const trimmed2 = line.trim();
|
|
27424
|
+
if (!trimmed2.startsWith("data:")) continue;
|
|
27425
|
+
const json = trimmed2.slice(5).trim();
|
|
26981
27426
|
if (!json) continue;
|
|
26982
27427
|
try {
|
|
26983
27428
|
results.push(JSON.parse(json));
|
|
@@ -28622,7 +29067,7 @@ var buildScopedDisplayData = (query, results, scopeLabel) => {
|
|
|
28622
29067
|
${summary}`;
|
|
28623
29068
|
};
|
|
28624
29069
|
var loadLocalMyContentResults = async (thunkApi, state2) => {
|
|
28625
|
-
const userId = state2
|
|
29070
|
+
const userId = selectIdentityUserId(state2)?.trim();
|
|
28626
29071
|
if (!userId) {
|
|
28627
29072
|
throw new Error("\u65E0\u6CD5\u641C\u7D22\u5168\u90E8\u5185\u5BB9\uFF0C\u56E0\u4E3A\u5F53\u524D\u7528\u6237\u672A\u767B\u5F55\u3002");
|
|
28628
29073
|
}
|
|
@@ -28679,10 +29124,10 @@ async function searchAllSpacesFunc(args, thunkApi) {
|
|
|
28679
29124
|
|
|
28680
29125
|
// packages/core/clipMultilineText.ts
|
|
28681
29126
|
function clipMultilineText(value, max) {
|
|
28682
|
-
const
|
|
28683
|
-
if (
|
|
28684
|
-
return `${
|
|
28685
|
-
...[truncated ${
|
|
29127
|
+
const trimmed2 = value.trim();
|
|
29128
|
+
if (trimmed2.length <= max) return trimmed2;
|
|
29129
|
+
return `${trimmed2.slice(0, max)}
|
|
29130
|
+
...[truncated ${trimmed2.length - max} chars]`;
|
|
28686
29131
|
}
|
|
28687
29132
|
|
|
28688
29133
|
// packages/ai/tools/dialogMessageSearch.ts
|
|
@@ -28996,7 +29441,7 @@ async function updateDocFunc(args, thunkApi) {
|
|
|
28996
29441
|
updated_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
28997
29442
|
};
|
|
28998
29443
|
await dispatch(write({ data: updatedPageData, customKey: id })).unwrap();
|
|
28999
|
-
const { getDocState, applyExternalDocUpdate } = await import("./docStore-
|
|
29444
|
+
const { getDocState, applyExternalDocUpdate } = await import("./docStore-D4HGHPWI.js");
|
|
29000
29445
|
if (getDocState().pageKey === id) {
|
|
29001
29446
|
applyExternalDocUpdate({
|
|
29002
29447
|
slateData: finalSlateData,
|
|
@@ -29021,7 +29466,7 @@ async function updateDocFunc(args, thunkApi) {
|
|
|
29021
29466
|
// packages/ai/tools/updateUserPreferenceProfileTool.ts
|
|
29022
29467
|
async function dispatchSetSettings(thunkApi, changes) {
|
|
29023
29468
|
const injectedSetSettings = thunkApi?.extra?.setSettings;
|
|
29024
|
-
const setSettings = typeof injectedSetSettings === "function" ? injectedSetSettings : (await import("./settingSlice-
|
|
29469
|
+
const setSettings = typeof injectedSetSettings === "function" ? injectedSetSettings : (await import("./settingSlice-IRUU4VFB.js")).setSettings;
|
|
29025
29470
|
await thunkApi.dispatch(setSettings(changes)).unwrap();
|
|
29026
29471
|
}
|
|
29027
29472
|
var updateUserPreferenceProfileFunctionSchema = {
|
|
@@ -29390,7 +29835,7 @@ async function runZiweiChart(input) {
|
|
|
29390
29835
|
const gender = normalizeGender(input.gender);
|
|
29391
29836
|
const fixLeap = input.fixLeap !== false;
|
|
29392
29837
|
const isLeapMonth = input.isLeapMonth === true;
|
|
29393
|
-
const { astro } = await import("./lib-
|
|
29838
|
+
const { astro } = await import("./lib-FRRS27KN.js");
|
|
29394
29839
|
const rawChart = calendarType === "lunar" ? astro.byLunar(dateStr, timeIndex, gender, isLeapMonth, fixLeap, language) : astro.bySolar(dateStr, timeIndex, gender, fixLeap, language);
|
|
29395
29840
|
const palaces = rawChart.palaces.map((palace) => ({
|
|
29396
29841
|
index: palace.index,
|
|
@@ -31283,7 +31728,6 @@ export {
|
|
|
31283
31728
|
toolRunSucceeded,
|
|
31284
31729
|
toolRunFailed,
|
|
31285
31730
|
getAllToolRuns,
|
|
31286
|
-
waitForAbortableDelay,
|
|
31287
31731
|
createSSEParser,
|
|
31288
31732
|
formatAgentListCard,
|
|
31289
31733
|
readXPostFunctionSchema,
|