nolo-cli 0.201.0-alpha.2 → 0.202.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/{_executeModel-BNYZLAN6.js → _executeModel-IPRTPSW7.js} +34 -33
- package/{agentDeleteCommand-4V4YSAXS.js → agentDeleteCommand-6HFA37FH.js} +49 -47
- package/{agentEmailCommands-EYIQEH6Z.js → agentEmailCommands-TDBNVIAT.js} +51 -49
- package/{agentListCommands-2KGUT7UB.js → agentListCommands-YSQSDQM3.js} +81 -45
- package/{agentMachineCommands-WUN47ILO.js → agentMachineCommands-5W23BLFR.js} +28 -26
- package/{agentProviderCommands-T6E3JCR6.js → agentProviderCommands-5ALOQLE5.js} +2 -2
- package/{agentRecordCommands-XL2CON36.js → agentRecordCommands-SRIMZZFK.js} +47 -45
- package/{agentRunCommand-R237ZGMQ.js → agentRunCommand-BLYHIN6S.js} +49 -47
- package/{agentRunControl-6HHESKDB.js → agentRunControl-ABDUPJLX.js} +10 -5
- package/{agentRuntimeLocal-XLLWFAVI.js → agentRuntimeLocal-FE66EBRC.js} +24 -22
- package/{agentSlice-Z5NKGMB7.js → agentSlice-BFDKYW6H.js} +4 -3
- package/{appDeleteCommands-IPF2VI3W.js → appDeleteCommands-BEVZGCAG.js} +29 -27
- package/{appDeployCommands-IBQ7GUXO.js → appDeployCommands-E7TFCHSP.js} +29 -27
- package/{appDeployStatusCommands-6ESVU6XE.js → appDeployStatusCommands-MYY5Z5G3.js} +29 -27
- package/{appGetCommands-VTSYTM4V.js → appGetCommands-HNED5JUU.js} +29 -27
- package/{appListCommands-VCP5TUX7.js → appListCommands-MSBFWPIY.js} +29 -27
- package/{authCommand-RV5MQDWN.js → authCommand-W34UWJGR.js} +14 -13
- package/{builtinSkillRegistry-7RAJP7FD.js → builtinSkillRegistry-NJVHQIKY.js} +1 -1
- package/{chromeOpsCommands-BA6CS4DI.js → chromeOpsCommands-USKE4B4K.js} +15 -4
- package/{chunk-RE3B2OCC.js → chunk-266E37EL.js} +69 -14
- package/chunk-2BMURXSB.js +1863 -0
- package/{chunk-NABJEYPJ.js → chunk-2Q3LOAFE.js} +38 -3
- package/{chunk-EOLPKHSB.js → chunk-326HCB6L.js} +28 -24
- package/{chunk-4CEAZRZ4.js → chunk-33W4IFUU.js} +1 -1
- package/{chunk-V3MGT3RF.js → chunk-3CWF2EUZ.js} +8 -8
- package/{chunk-G6OOUQWJ.js → chunk-4KB6WQUL.js} +2 -0
- package/{chunk-DYQXB46J.js → chunk-4KPB3KWX.js} +2 -2
- package/{chunk-WAZ6BTSC.js → chunk-5E4FSR4J.js} +1 -1
- package/{chunk-PVD7CRYV.js → chunk-6I7ZP7KJ.js} +3 -3
- package/chunk-6UBGXX2W.js +12 -0
- package/{chunk-ZBCBFOWC.js → chunk-A2ZMIRLN.js} +2 -2
- package/{chunk-Z646E5YH.js → chunk-ASG7VWPK.js} +3 -3
- package/{chunk-QWVGFBOQ.js → chunk-BLFZULEQ.js} +3 -3
- package/{chunk-RRHJJUA3.js → chunk-BRZTSZBG.js} +174 -100
- package/{chunk-JIFYXQRD.js → chunk-BTYQAODF.js} +26 -8
- package/{chunk-KORCRPLO.js → chunk-C7PKPHK6.js} +334 -12
- package/{chunk-6WZQGT5X.js → chunk-CJ37ZMCQ.js} +6 -2
- package/{chunk-VHGD6FHV.js → chunk-CKAHAVMK.js} +40 -10
- package/{chunk-UNOILAZP.js → chunk-CLTGWJVT.js} +76 -4
- package/{chunk-Q6RMLYSA.js → chunk-CMLBKYEI.js} +4 -2
- package/{chunk-NVOYW6H4.js → chunk-CQHMBWZH.js} +12 -8
- package/{chunk-7KWPNGVJ.js → chunk-CTZ4O3XD.js} +1 -1
- package/{chunk-OHRDHS4N.js → chunk-CVCRAO6Q.js} +9 -4
- package/{chunk-26CRLZFD.js → chunk-D57YYGMD.js} +2 -2
- package/{chunk-TEC5UHQK.js → chunk-DHJXDGC3.js} +2 -2
- package/{chunk-QYOB7RVA.js → chunk-DKZJJ2NQ.js} +3 -2
- package/{chunk-4YX7VQOC.js → chunk-E2FC5RMU.js} +17 -14
- package/{chunk-EH4MNUMF.js → chunk-ETTDZBK5.js} +4 -4
- package/{chunk-ZWQUWF6W.js → chunk-G7Y4GXTY.js} +8 -14
- package/{chunk-5KTQVMCX.js → chunk-GOO6G4PY.js} +85 -0
- package/{chunk-FMOZ57LN.js → chunk-H7HWWNJB.js} +1 -1
- package/{chunk-SW5AAI5D.js → chunk-HKMPGHFZ.js} +5 -5
- package/{chunk-H44LQSZ2.js → chunk-HKWGI3TM.js} +178 -311
- package/{chunk-BBGYSMUE.js → chunk-JH7KMNGT.js} +143 -19
- package/{chunk-YXMZHGNA.js → chunk-KDUYNEJ5.js} +33 -16
- package/{chunk-FEKMTBKJ.js → chunk-LAYFVGS4.js} +192 -55
- package/{chunk-O5V7QQAF.js → chunk-LEX6DEH4.js} +114 -2
- package/{chunk-BTBT2566.js → chunk-MNUOMXJH.js} +412 -9
- package/{chunk-N7E3LQ4A.js → chunk-MZXWSY4E.js} +1 -1
- package/{chunk-ZQ3EAOY3.js → chunk-NTLJGRAT.js} +1 -1
- package/{chunk-BUXH3H5M.js → chunk-OIB4GARE.js} +3743 -4848
- package/{chunk-WFUIXNKC.js → chunk-P4YLK2OD.js} +3 -3
- package/chunk-PRJ473FK.js +63 -0
- package/{chunk-2SHLT6JB.js → chunk-Q7GNBUT4.js} +2 -2
- package/{chunk-C2UXCAMB.js → chunk-RIKSN62L.js} +3 -3
- package/{chunk-GTP6VNWH.js → chunk-RQ22OZD7.js} +3 -3
- package/{chunk-H7NIQGTU.js → chunk-RS66RJLA.js} +2 -2
- package/{chunk-GC64WGMD.js → chunk-SM3NSZJV.js} +16 -5
- package/{chunk-QKDMI22S.js → chunk-SSK4WNJA.js} +1 -1
- package/{chunk-6MAFLMAO.js → chunk-SUBNV2JH.js} +3 -3
- package/{chunk-HLAL63BZ.js → chunk-T43B7LB2.js} +1 -1
- package/{chunk-HTLIKE5U.js → chunk-TWVVTUNG.js} +2 -2
- package/{chunk-X3RWBJDQ.js → chunk-U7HTU2S7.js} +1 -1
- package/{chunk-76YUTLOT.js → chunk-UIOEHFF6.js} +1 -1
- package/{chunk-IIX6VWLW.js → chunk-VCFU3BO5.js} +224 -38
- package/{chunk-QU3TLYBR.js → chunk-VEUSD6OF.js} +35 -11
- package/{chunk-4YMD7B4Y.js → chunk-WPOKOKZA.js} +2 -2
- package/{chunk-A5VR65AE.js → chunk-WPQGLJHU.js} +4 -4
- package/{chunk-K6TZSON4.js → chunk-WTKYP6QO.js} +19 -5
- package/{chunk-ZSO5B6SW.js → chunk-Y2WUYX4I.js} +9 -0
- package/{chunk-A3SXTJDE.js → chunk-YAGFPXOX.js} +14 -14
- package/{chunk-TVGX5QIN.js → chunk-YUA6OAH5.js} +2 -2
- package/{chunk-NYE2INIO.js → chunk-YV2RSLM4.js} +13 -13
- package/{chunk-MJWUBTK7.js → chunk-YZGNKHUM.js} +2 -2
- package/{commandRegistry-YFXWA5SF.js → commandRegistry-ZU3RX7A2.js} +87 -67
- package/{contentThunks-2BV7CFUP.js → contentThunks-I4IHSDTM.js} +14 -13
- package/{cooldownCommands-KRILPXOZ.js → cooldownCommands-5SJ74DNP.js} +1 -1
- package/{createAgentAutomationAction-T6CGXCSO.js → createAgentAutomationAction-WQCH5HR2.js} +14 -13
- package/{createDialogAction-X27IA3G2.js → createDialogAction-CKMZK5JQ.js} +15 -14
- package/{createPageAction-EHDHNW5P.js → createPageAction-QAZHQGY7.js} +14 -13
- package/{dialogCommands-XZXH3HSQ.js → dialogCommands-NEQ6NW5H.js} +30 -28
- package/{dialogSlice-AZNPVOCU.js → dialogSlice-GEGACCH2.js} +13 -12
- package/{docCreateCommands-Z64V5BFZ.js → docCreateCommands-EXV267FP.js} +28 -26
- package/{docDeleteCommands-7UFHIM4C.js → docDeleteCommands-TSBILA2Z.js} +29 -27
- package/{docReadCommands-NLU7Y67R.js → docReadCommands-AKVYHITD.js} +28 -26
- package/{docStore-M37Q6JFO.js → docStore-B4EFT53J.js} +1 -1
- package/{docUpdateCommands-S2KGBEG3.js → docUpdateCommands-G6GULDGZ.js} +28 -26
- package/{fetchMessages-HWBVATSE.js → fetchMessages-YY4SATNR.js} +1 -1
- package/{getPricing-E2PLNWCR.js → getPricing-3PQY3TGI.js} +3 -3
- package/{handleSendMessageAction-KUJQZ6B6.js → handleSendMessageAction-4BACQWOG.js} +70 -29
- package/index.js +7 -7
- package/{lib-4YTWAGY7.js → lib-5KKIBFIT.js} +439 -272
- package/{localDialogRead-CT5HGDMC.js → localDialogRead-FUXGZ57B.js} +1 -1
- package/{localRuntimeAdapter-5BNHO6JZ.js → localRuntimeAdapter-MTDULOUZ.js} +45 -43
- package/{machineCommands-2KDROAVV.js → machineCommands-OGHHBRV3.js} +48 -46
- package/{machineWsRunDispatch-4NP5M574.js → machineWsRunDispatch-R6DNC3H7.js} +46 -44
- package/{models-UUNO6DOL.js → models-PJBE6JDV.js} +2 -2
- package/{oauthTokenStore-PADKLNOC.js → oauthTokenStore-OEERZFUC.js} +2 -1
- package/package.json +1 -1
- package/{providerPresetApply-JGNMO2KX.js → providerPresetApply-HBBUUVJD.js} +6 -6
- package/{providerRegistry-33J3ZYFJ.js → providerRegistry-5LK2NXYE.js} +6 -6
- package/{readlineWorkspace-MKUSR6HA.js → readlineWorkspace-NC2O4DQP.js} +290 -121
- package/{runAgentClientLoop-J32KRVN7.js → runAgentClientLoop-QKV66PX5.js} +31 -30
- package/{runtimeDoctorCommands-NYBOTA6D.js → runtimeDoctorCommands-3VFVTGPI.js} +8 -7
- package/{secretCommands-N6CMCJDZ.js → secretCommands-MKU25CDP.js} +311 -3
- package/{settingThunks-YRYNPWJM.js → settingThunks-4WU7YE62.js} +2 -2
- package/{skillDiscovery-F3TMVQOJ.js → skillDiscovery-BKLWW2EZ.js} +2 -2
- package/{spaceCommands-VV4K7TGI.js → spaceCommands-J7BRTTM3.js} +27 -25
- package/{streamAgentChatTurn-S2Q7STXS.js → streamAgentChatTurn-GM3UNSLS.js} +46 -43
- package/{tools-KOIPW4ZA.js → tools-UJLEQBKI.js} +25 -24
- package/{tuiSummaryLlmCaller-FSOADMXK.js → tuiSummaryLlmCaller-73QO3HAD.js} +12 -12
- package/{updateCommands-KE6LP3QX.js → updateCommands-RVDAFHBT.js} +3 -3
- package/{updateDialogTitleAction-ILS5OIXF.js → updateDialogTitleAction-24QO27NT.js} +14 -13
- package/{windowsSelfUpdate-26TSFXEZ.js → windowsSelfUpdate-N2VH2OBW.js} +2 -2
|
@@ -4,8 +4,9 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
buildAgentDiscoveryResult,
|
|
6
6
|
resolveDiscoveryScope,
|
|
7
|
+
resolvePaginationArgs,
|
|
7
8
|
toDiscoverySafeAgentSummary
|
|
8
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-JH7KMNGT.js";
|
|
9
10
|
import {
|
|
10
11
|
getUserDataItemTimestamp,
|
|
11
12
|
mergeAndDedupUserData
|
|
@@ -13,9 +14,6 @@ import {
|
|
|
13
14
|
import {
|
|
14
15
|
markdownToSlate
|
|
15
16
|
} from "./chunk-KSTEXKL6.js";
|
|
16
|
-
import {
|
|
17
|
-
isSkillSummaryMarker
|
|
18
|
-
} from "./chunk-VF4K2QE6.js";
|
|
19
17
|
import {
|
|
20
18
|
addMemberSpace,
|
|
21
19
|
applyFetchSpaceFulfilled,
|
|
@@ -33,12 +31,14 @@ import {
|
|
|
33
31
|
clipMultilineText,
|
|
34
32
|
createSSEParser,
|
|
35
33
|
fetchAndSerializeTable,
|
|
34
|
+
loadSkillFunc,
|
|
35
|
+
loadSkillFunctionSchema,
|
|
36
36
|
parseUiCard,
|
|
37
37
|
selectAutoApproveSelfUpdateFields,
|
|
38
38
|
toolRunUpdated,
|
|
39
39
|
uiCardFallback,
|
|
40
40
|
waitForAbortableDelay
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-C7PKPHK6.js";
|
|
42
42
|
import {
|
|
43
43
|
isGatewayHttpStatus
|
|
44
44
|
} from "./chunk-NF64D32W.js";
|
|
@@ -51,12 +51,11 @@ import {
|
|
|
51
51
|
} from "./chunk-3L2WKC3W.js";
|
|
52
52
|
import {
|
|
53
53
|
AGENT_UPDATE_FIELD_NAMES,
|
|
54
|
-
isAgentSkillDisabled,
|
|
55
54
|
normalizeAgentUpdateFieldList
|
|
56
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-DKZJJ2NQ.js";
|
|
57
56
|
import {
|
|
58
57
|
createDocState
|
|
59
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-D57YYGMD.js";
|
|
60
59
|
import {
|
|
61
60
|
ToolApiError,
|
|
62
61
|
buildToolRequestHeaders,
|
|
@@ -65,9 +64,6 @@ import {
|
|
|
65
64
|
getToolBaseUrl,
|
|
66
65
|
getToolRequestContext
|
|
67
66
|
} from "./chunk-MYOH447Z.js";
|
|
68
|
-
import {
|
|
69
|
-
setDialogExtraReferencesAction
|
|
70
|
-
} from "./chunk-RXUKDHS5.js";
|
|
71
67
|
import {
|
|
72
68
|
readDocFunc,
|
|
73
69
|
readDocFunctionSchema,
|
|
@@ -83,7 +79,7 @@ import {
|
|
|
83
79
|
} from "./chunk-63W5N6P3.js";
|
|
84
80
|
import {
|
|
85
81
|
createDialogAction
|
|
86
|
-
} from "./chunk-
|
|
82
|
+
} from "./chunk-ASG7VWPK.js";
|
|
87
83
|
import {
|
|
88
84
|
DEFAULT_COLLAPSED_CATEGORIES,
|
|
89
85
|
addContentToSpace,
|
|
@@ -100,7 +96,7 @@ import {
|
|
|
100
96
|
updateContentCategory,
|
|
101
97
|
updateContentTitle,
|
|
102
98
|
writeStoredCollapsedCategories
|
|
103
|
-
} from "./chunk-
|
|
99
|
+
} from "./chunk-SSK4WNJA.js";
|
|
104
100
|
import {
|
|
105
101
|
getCurrentSpaceId,
|
|
106
102
|
getCurrentSpaceIdRaw,
|
|
@@ -123,14 +119,14 @@ import {
|
|
|
123
119
|
selectMsgById,
|
|
124
120
|
uiAskChoiceFunc,
|
|
125
121
|
uiAskChoiceFunctionSchema
|
|
126
|
-
} from "./chunk-
|
|
122
|
+
} from "./chunk-326HCB6L.js";
|
|
127
123
|
import {
|
|
128
124
|
createAgent,
|
|
129
125
|
deleteServerSyncedCredential,
|
|
130
126
|
runLlm,
|
|
131
127
|
streamAgentChatTurn,
|
|
132
128
|
updateAgent
|
|
133
|
-
} from "./chunk-
|
|
129
|
+
} from "./chunk-ETTDZBK5.js";
|
|
134
130
|
import {
|
|
135
131
|
buildMediaToolConfirmation,
|
|
136
132
|
normalizeMediaConfirmExecutionRevision
|
|
@@ -197,10 +193,6 @@ import {
|
|
|
197
193
|
buildTombstoneRecord,
|
|
198
194
|
isTombstoneRecord
|
|
199
195
|
} from "./chunk-D2MDMY2M.js";
|
|
200
|
-
import {
|
|
201
|
-
listBuiltinSkills,
|
|
202
|
-
resolveBuiltinSkillByName
|
|
203
|
-
} from "./chunk-O5V7QQAF.js";
|
|
204
196
|
import {
|
|
205
197
|
CAPABILITY_PACKS
|
|
206
198
|
} from "./chunk-6OEPWZV7.js";
|
|
@@ -230,7 +222,7 @@ import {
|
|
|
230
222
|
resolveNoloDialogInput,
|
|
231
223
|
resolveReadOnlyToolConstraints,
|
|
232
224
|
verifyNoloDialogSubjectRefQuery
|
|
233
|
-
} from "./chunk-
|
|
225
|
+
} from "./chunk-2Q3LOAFE.js";
|
|
234
226
|
import {
|
|
235
227
|
mergeAvailabilityDeadline,
|
|
236
228
|
resolveCredentialKeyWithFallback
|
|
@@ -240,7 +232,7 @@ import {
|
|
|
240
232
|
} from "./chunk-5MMAK75Q.js";
|
|
241
233
|
import {
|
|
242
234
|
createFileCredentialBroker
|
|
243
|
-
} from "./chunk-
|
|
235
|
+
} from "./chunk-UIOEHFF6.js";
|
|
244
236
|
import {
|
|
245
237
|
asRecordOrEmpty
|
|
246
238
|
} from "./chunk-KX6YBIHG.js";
|
|
@@ -264,9 +256,6 @@ import {
|
|
|
264
256
|
import {
|
|
265
257
|
extractCustomId
|
|
266
258
|
} from "./chunk-M2EJHDJP.js";
|
|
267
|
-
import {
|
|
268
|
-
toErrorMessage
|
|
269
|
-
} from "./chunk-HNMXYYJR.js";
|
|
270
259
|
import {
|
|
271
260
|
RUN_TITLE_MAX,
|
|
272
261
|
TASK_PREVIEW_MAX,
|
|
@@ -285,7 +274,10 @@ import {
|
|
|
285
274
|
DEFAULT_MODEL,
|
|
286
275
|
clampReasoningEffort,
|
|
287
276
|
resolveModelReasoningCapabilityWithCache
|
|
288
|
-
} from "./chunk-
|
|
277
|
+
} from "./chunk-SM3NSZJV.js";
|
|
278
|
+
import {
|
|
279
|
+
toErrorMessage
|
|
280
|
+
} from "./chunk-HNMXYYJR.js";
|
|
289
281
|
import {
|
|
290
282
|
isRecord
|
|
291
283
|
} from "./chunk-KUG52IAP.js";
|
|
@@ -1027,7 +1019,7 @@ var HOSTED_EXEC_RUNTIME_TOOL_POLICY = {
|
|
|
1027
1019
|
workspace: { mode: "lease" }
|
|
1028
1020
|
};
|
|
1029
1021
|
var findModelConfig = async (modelName, provider) => {
|
|
1030
|
-
const { ALL_MODELS } = await import("./models-
|
|
1022
|
+
const { ALL_MODELS } = await import("./models-PJBE6JDV.js");
|
|
1031
1023
|
const name = toTrimmedString(modelName);
|
|
1032
1024
|
const prov = toTrimmedString(provider ?? "");
|
|
1033
1025
|
if (!name) return null;
|
|
@@ -1272,7 +1264,7 @@ var buildPlatformFormDataFromArgs = async (args) => {
|
|
|
1272
1264
|
const trimmedModel = toTrimmedString(model);
|
|
1273
1265
|
const trimmedProvider = toTrimmedString(provider);
|
|
1274
1266
|
const modelConfig = await findModelConfig(trimmedModel, trimmedProvider);
|
|
1275
|
-
const { getModelPricing } = await import("./getPricing-
|
|
1267
|
+
const { getModelPricing } = await import("./getPricing-3PQY3TGI.js");
|
|
1276
1268
|
const normalizedTools = tools ?? [];
|
|
1277
1269
|
const resolvedRuntimeToolPolicy = runtimeToolPolicy ?? (normalizedTools.includes("execShell") ? HOSTED_EXEC_RUNTIME_TOOL_POLICY : void 0);
|
|
1278
1270
|
const formData = {
|
|
@@ -2221,236 +2213,6 @@ Imported from: ${url}` : ""
|
|
|
2221
2213
|
});
|
|
2222
2214
|
}
|
|
2223
2215
|
|
|
2224
|
-
// packages/ai/tools/loadSkillTool.ts
|
|
2225
|
-
var loadSkillFunctionSchema = {
|
|
2226
|
-
name: "loadSkill",
|
|
2227
|
-
description: [
|
|
2228
|
-
"\u6309\u540D\u79F0\u52A0\u8F7D\u4E00\u4E2A\u5DF2\u4FDD\u5B58\u7684 skill \u6587\u6863\uFF0C\u8FD4\u56DE\u5176\u5B8C\u6574\u6307\u4EE4\u6B63\u6587\u3002",
|
|
2229
|
-
"name \u4F7F\u7528 skill \u4FDD\u5B58\u65F6\u5199\u5165 skill-config \u7684 name\uFF08\u4E5F\u63A5\u53D7 skillId\uFF09\u3002",
|
|
2230
|
-
"\u627E\u4E0D\u5230\u5BF9\u5E94 skill \u65F6\u8FD4\u56DE\u5F53\u524D\u53EF\u7528\u7684 skill \u540D\u79F0\u5217\u8868\uFF08\u4E0D\u62A5\u9519\uFF09\u3002",
|
|
2231
|
-
'\u7CFB\u7EDF\u5185\u7F6E\u5199\u4EE3\u7801\u6280\u80FD\uFF1A\u5BF9\u8BDD\u8F6C\u5411\u5199\u4EE3\u7801\u65F6\u7528 loadSkill("coding") \u8F7D\u5165\u5199\u4EE3\u7801\u80FD\u529B\u4E0E\u4EE3\u7801\u5BA1\u67E5\u7EAA\u5F8B\uFF08\u542B review \u89D2\u8272\u5207\u5272\uFF09\u3002',
|
|
2232
|
-
"\u7CFB\u7EDF\u5185\u7F6E\u4E13\u804C\u6280\u80FD\uFF1Afeedback\uFF08\u53CD\u9988\u6536\u96C6\uFF09/ agent-creator\uFF08\u521B\u5EFA Agent\uFF09/ app-builder\uFF08\u5E94\u7528\u6784\u5EFA\uFF09\uFF0C\u540C\u6837\u53EF\u76F4\u63A5 loadSkill \u8F7D\u5165\u3002"
|
|
2233
|
-
].join("\n"),
|
|
2234
|
-
parameters: {
|
|
2235
|
-
type: "object",
|
|
2236
|
-
properties: {
|
|
2237
|
-
name: {
|
|
2238
|
-
type: "string",
|
|
2239
|
-
description: "\u8981\u52A0\u8F7D\u7684 skill \u540D\u79F0\u3002"
|
|
2240
|
-
}
|
|
2241
|
-
},
|
|
2242
|
-
required: ["name"]
|
|
2243
|
-
}
|
|
2244
|
-
};
|
|
2245
|
-
var getRuntime = (thunkApi) => {
|
|
2246
|
-
const state2 = thunkApi?.getState?.();
|
|
2247
|
-
return state2 ? selectRuntimeSnapshot(state2) : null;
|
|
2248
|
-
};
|
|
2249
|
-
var authHeaders = (token) => token ? { Authorization: `Bearer ${token}` } : {};
|
|
2250
|
-
async function readRemoteRecord(args) {
|
|
2251
|
-
const serverBase = normalizeServerOrigin(args.serverBase);
|
|
2252
|
-
if (!serverBase || !args.token) return null;
|
|
2253
|
-
const response = await fetch(
|
|
2254
|
-
`${serverBase}/api/v1/db/read/${encodeURIComponent(args.dbKey)}?includeDeleted=true`,
|
|
2255
|
-
{ headers: authHeaders(args.token) }
|
|
2256
|
-
);
|
|
2257
|
-
if (!response.ok) return null;
|
|
2258
|
-
const payload = await response.json().catch(() => null);
|
|
2259
|
-
return payload?.data ?? payload;
|
|
2260
|
-
}
|
|
2261
|
-
function resolveWebSkill(candidates, requestedName) {
|
|
2262
|
-
const candidate = matchSkillCandidate(candidates, requestedName);
|
|
2263
|
-
if (candidate) return { kind: "space", candidate };
|
|
2264
|
-
const entry = resolveBuiltinSkillByName(requestedName);
|
|
2265
|
-
return entry ? { kind: "builtin", entry } : null;
|
|
2266
|
-
}
|
|
2267
|
-
function listWebSkillNames(candidates) {
|
|
2268
|
-
return Array.from(
|
|
2269
|
-
/* @__PURE__ */ new Set([
|
|
2270
|
-
...candidates.map((candidate) => candidate.name),
|
|
2271
|
-
...listBuiltinSkills().flatMap((skill) => [skill.slug, skill.title])
|
|
2272
|
-
])
|
|
2273
|
-
);
|
|
2274
|
-
}
|
|
2275
|
-
function matchSkillCandidate(candidates, requestedName) {
|
|
2276
|
-
return candidates.find(
|
|
2277
|
-
(candidate) => candidate.name === requestedName || candidate.skillId === requestedName
|
|
2278
|
-
);
|
|
2279
|
-
}
|
|
2280
|
-
function collectSkillCandidatesFromSpace(space) {
|
|
2281
|
-
if (!space?.contents || typeof space.contents !== "object") return [];
|
|
2282
|
-
const candidates = [];
|
|
2283
|
-
for (const [entryKey, value] of Object.entries(space.contents)) {
|
|
2284
|
-
if (!isRecord(value)) continue;
|
|
2285
|
-
const skillSummary = value.skillSummary;
|
|
2286
|
-
if (!isSkillSummaryMarker(skillSummary)) continue;
|
|
2287
|
-
const name = asTrimmedString(skillSummary.name);
|
|
2288
|
-
if (!name) continue;
|
|
2289
|
-
candidates.push({
|
|
2290
|
-
dbKey: entryKey,
|
|
2291
|
-
name,
|
|
2292
|
-
skillId: asOptionalTrimmedString(skillSummary.skillId) ?? void 0
|
|
2293
|
-
});
|
|
2294
|
-
}
|
|
2295
|
-
return candidates;
|
|
2296
|
-
}
|
|
2297
|
-
function extractSkillBody(page) {
|
|
2298
|
-
return parseSkillDocProtocol(page?.content ?? "").content;
|
|
2299
|
-
}
|
|
2300
|
-
async function listSkillCandidates(thunkApi) {
|
|
2301
|
-
const runtime = getRuntime(thunkApi);
|
|
2302
|
-
const serverBase = runtime?.currentServer;
|
|
2303
|
-
const token = runtime?.currentToken;
|
|
2304
|
-
const userId = runtime?.currentUserId;
|
|
2305
|
-
if (!serverBase || !token || !userId) return [];
|
|
2306
|
-
const membershipsResponse = await fetch(
|
|
2307
|
-
`${normalizeServerOrigin(serverBase)}/rpc/getUserSpaceMemberships`,
|
|
2308
|
-
{
|
|
2309
|
-
method: "POST",
|
|
2310
|
-
headers: {
|
|
2311
|
-
"Content-Type": "application/json",
|
|
2312
|
-
...authHeaders(token)
|
|
2313
|
-
},
|
|
2314
|
-
body: JSON.stringify({ userId })
|
|
2315
|
-
}
|
|
2316
|
-
).catch(() => null);
|
|
2317
|
-
if (!membershipsResponse?.ok) return [];
|
|
2318
|
-
const memberships = await membershipsResponse.json().catch(() => []);
|
|
2319
|
-
if (!Array.isArray(memberships)) return [];
|
|
2320
|
-
const candidates = [];
|
|
2321
|
-
for (const membership of memberships) {
|
|
2322
|
-
const spaceId = asTrimmedString(membership?.spaceId);
|
|
2323
|
-
if (!spaceId) continue;
|
|
2324
|
-
const space = await readRemoteRecord({
|
|
2325
|
-
serverBase,
|
|
2326
|
-
token,
|
|
2327
|
-
dbKey: createSpaceKey.space(spaceId)
|
|
2328
|
-
});
|
|
2329
|
-
if (!space) continue;
|
|
2330
|
-
candidates.push(...collectSkillCandidatesFromSpace(space));
|
|
2331
|
-
}
|
|
2332
|
-
return candidates;
|
|
2333
|
-
}
|
|
2334
|
-
var resolveCurrentAgentKeyForSkillGate = (thunkApi) => {
|
|
2335
|
-
try {
|
|
2336
|
-
const state2 = thunkApi?.getState?.();
|
|
2337
|
-
if (!state2) return null;
|
|
2338
|
-
const currentDialogKey = getActiveDialogKey();
|
|
2339
|
-
if (!currentDialogKey) return null;
|
|
2340
|
-
const dialogConfig = selectById(
|
|
2341
|
-
state2,
|
|
2342
|
-
currentDialogKey
|
|
2343
|
-
);
|
|
2344
|
-
return asTrimmedNonEmptyStringArray(dialogConfig?.cybots)[0] ?? null;
|
|
2345
|
-
} catch {
|
|
2346
|
-
return null;
|
|
2347
|
-
}
|
|
2348
|
-
};
|
|
2349
|
-
var readCurrentAgentSkillSource = async (thunkApi) => {
|
|
2350
|
-
const agentKey = resolveCurrentAgentKeyForSkillGate(thunkApi);
|
|
2351
|
-
if (!agentKey) return null;
|
|
2352
|
-
const db = thunkApi?.extra?.db;
|
|
2353
|
-
if (!db) return null;
|
|
2354
|
-
try {
|
|
2355
|
-
const agent = await db.get(agentKey);
|
|
2356
|
-
if (!agent || typeof agent !== "object") return null;
|
|
2357
|
-
return agent;
|
|
2358
|
-
} catch {
|
|
2359
|
-
return null;
|
|
2360
|
-
}
|
|
2361
|
-
};
|
|
2362
|
-
async function loadSkillFunc(args, thunkApi) {
|
|
2363
|
-
const requestedName = asTrimmedString(args?.name);
|
|
2364
|
-
if (!requestedName) throw new Error("loadSkill \u9700\u8981\u63D0\u4F9B name\u3002");
|
|
2365
|
-
const candidates = await listSkillCandidates(thunkApi);
|
|
2366
|
-
const resolution = resolveWebSkill(candidates, requestedName);
|
|
2367
|
-
const matched = resolution?.kind === "space" ? resolution.candidate : void 0;
|
|
2368
|
-
const builtinEntry = resolution?.kind === "builtin" ? resolution.entry : null;
|
|
2369
|
-
const resolvedSlug = builtinEntry?.slug ?? matched?.skillId ?? null;
|
|
2370
|
-
if (resolvedSlug) {
|
|
2371
|
-
const agentSkillSource = await readCurrentAgentSkillSource(thunkApi);
|
|
2372
|
-
if (agentSkillSource && isAgentSkillDisabled(agentSkillSource, resolvedSlug)) {
|
|
2373
|
-
return {
|
|
2374
|
-
rawData: {
|
|
2375
|
-
success: false,
|
|
2376
|
-
name: requestedName,
|
|
2377
|
-
slug: resolvedSlug,
|
|
2378
|
-
disabled: true
|
|
2379
|
-
},
|
|
2380
|
-
displayData: `Skill "${requestedName}" \u5DF2\u88AB\u7981\u7528\uFF1A\u8BE5\u80FD\u529B\u5728\u6B64 agent \u4E0A\u4E0D\u53EF\u7528\uFF0C\u65E0\u6CD5\u52A0\u8F7D\u3002`
|
|
2381
|
-
};
|
|
2382
|
-
}
|
|
2383
|
-
}
|
|
2384
|
-
if (builtinEntry) {
|
|
2385
|
-
const body2 = builtinEntry.content;
|
|
2386
|
-
const dbKey = builtinEntry.slug;
|
|
2387
|
-
await persistLoadedSkillReference(thunkApi, dbKey, requestedName);
|
|
2388
|
-
return {
|
|
2389
|
-
rawData: {
|
|
2390
|
-
success: true,
|
|
2391
|
-
name: requestedName,
|
|
2392
|
-
dbKey,
|
|
2393
|
-
body: body2
|
|
2394
|
-
},
|
|
2395
|
-
displayData: `Skill "${requestedName}" loaded inline. Follow its instructions.
|
|
2396
|
-
|
|
2397
|
-
${body2}`
|
|
2398
|
-
};
|
|
2399
|
-
}
|
|
2400
|
-
if (!matched) {
|
|
2401
|
-
const availableNames = listWebSkillNames(candidates);
|
|
2402
|
-
const availableText = availableNames.length ? availableNames.join(", ") : "(none)";
|
|
2403
|
-
return {
|
|
2404
|
-
rawData: {
|
|
2405
|
-
success: false,
|
|
2406
|
-
name: requestedName,
|
|
2407
|
-
availableSkills: availableNames
|
|
2408
|
-
},
|
|
2409
|
-
displayData: `Skill "${requestedName}" not found. Available skills: ${availableText}`
|
|
2410
|
-
};
|
|
2411
|
-
}
|
|
2412
|
-
const runtime = getRuntime(thunkApi);
|
|
2413
|
-
const page = await readRemoteRecord({
|
|
2414
|
-
serverBase: runtime?.currentServer,
|
|
2415
|
-
token: runtime?.currentToken,
|
|
2416
|
-
dbKey: matched.dbKey
|
|
2417
|
-
});
|
|
2418
|
-
const body = extractSkillBody(page);
|
|
2419
|
-
await persistLoadedSkillReference(thunkApi, matched.dbKey, requestedName);
|
|
2420
|
-
return {
|
|
2421
|
-
rawData: {
|
|
2422
|
-
success: true,
|
|
2423
|
-
name: requestedName,
|
|
2424
|
-
dbKey: matched.dbKey,
|
|
2425
|
-
body
|
|
2426
|
-
},
|
|
2427
|
-
displayData: `Skill "${requestedName}" loaded inline. Follow its instructions.
|
|
2428
|
-
|
|
2429
|
-
${body}`
|
|
2430
|
-
};
|
|
2431
|
-
}
|
|
2432
|
-
async function persistLoadedSkillReference(thunkApi, dbKey, name) {
|
|
2433
|
-
try {
|
|
2434
|
-
const state2 = thunkApi?.getState?.();
|
|
2435
|
-
const currentDialogKey = getActiveDialogKey();
|
|
2436
|
-
if (!state2 || !currentDialogKey) return;
|
|
2437
|
-
const dialogConfig = selectById(
|
|
2438
|
-
state2,
|
|
2439
|
-
currentDialogKey
|
|
2440
|
-
);
|
|
2441
|
-
const existing = dialogConfig?.extraReferences ?? [];
|
|
2442
|
-
const alreadyMounted = existing.some((ref) => ref.dbKey === dbKey);
|
|
2443
|
-
if (alreadyMounted) return;
|
|
2444
|
-
const newRef = {
|
|
2445
|
-
dbKey,
|
|
2446
|
-
title: name,
|
|
2447
|
-
type: "instruction"
|
|
2448
|
-
};
|
|
2449
|
-
await setDialogExtraReferencesAction([...existing, newRef], thunkApi);
|
|
2450
|
-
} catch {
|
|
2451
|
-
}
|
|
2452
|
-
}
|
|
2453
|
-
|
|
2454
2216
|
// packages/create/space/category/categoryActions.ts
|
|
2455
2217
|
import { ulid as ulid2 } from "ulid";
|
|
2456
2218
|
var syncCurrentSpace = (spaceId, updatedSpaceData) => {
|
|
@@ -3428,19 +3190,67 @@ async function listUserSpacesFunc(args, thunkApi, context2) {
|
|
|
3428
3190
|
// packages/ai/agent/publicAgentDiscovery.ts
|
|
3429
3191
|
async function fetchPublicAgentsForDiscovery(args) {
|
|
3430
3192
|
const fetchImpl = args.fetchImpl ?? fetch;
|
|
3431
|
-
const
|
|
3432
|
-
|
|
3433
|
-
|
|
3434
|
-
|
|
3435
|
-
|
|
3436
|
-
|
|
3437
|
-
|
|
3438
|
-
|
|
3439
|
-
|
|
3440
|
-
const
|
|
3441
|
-
const
|
|
3442
|
-
|
|
3443
|
-
|
|
3193
|
+
const MAX_CEILING = 2e3;
|
|
3194
|
+
const targetLimit = typeof args.limit === "number" ? Math.min(Math.max(1, args.limit), MAX_CEILING) : args.query ? MAX_CEILING : 500;
|
|
3195
|
+
let currentOffset = Math.max(0, args.offset ?? 0);
|
|
3196
|
+
let accumulated = [];
|
|
3197
|
+
let upstreamTotal = 0;
|
|
3198
|
+
let upstreamHasMore = false;
|
|
3199
|
+
let isTruncated = false;
|
|
3200
|
+
const batchLimit = 100;
|
|
3201
|
+
let iteration = 0;
|
|
3202
|
+
const seenIds = /* @__PURE__ */ new Set();
|
|
3203
|
+
const searchName = args.query && typeof args.query === "string" && args.query.trim() ? args.query.trim() : void 0;
|
|
3204
|
+
while (accumulated.length < targetLimit && iteration < 20) {
|
|
3205
|
+
iteration++;
|
|
3206
|
+
const toFetch = Math.min(batchLimit, targetLimit - accumulated.length);
|
|
3207
|
+
try {
|
|
3208
|
+
const response = await fetchImpl(`${args.serverBase.replace(/\/$/, "")}/rpc/getPublicAgents`, {
|
|
3209
|
+
method: "POST",
|
|
3210
|
+
headers: {
|
|
3211
|
+
"Content-Type": "application/json",
|
|
3212
|
+
...args.token ? { Authorization: `Bearer ${args.token}` } : {}
|
|
3213
|
+
},
|
|
3214
|
+
body: JSON.stringify({
|
|
3215
|
+
limit: toFetch,
|
|
3216
|
+
offset: currentOffset,
|
|
3217
|
+
summary: true,
|
|
3218
|
+
...searchName ? { searchName } : {}
|
|
3219
|
+
})
|
|
3220
|
+
});
|
|
3221
|
+
if (!response.ok) {
|
|
3222
|
+
throw new Error(`Public agent catalog request failed (${response.status})`);
|
|
3223
|
+
}
|
|
3224
|
+
const payload = await response.json();
|
|
3225
|
+
const resultObj = payload?.data && typeof payload.data === "object" && !Array.isArray(payload.data) ? payload.data : payload;
|
|
3226
|
+
const batch = Array.isArray(resultObj?.data) ? resultObj.data : Array.isArray(payload?.data) ? payload.data : Array.isArray(payload) ? payload : null;
|
|
3227
|
+
if (!batch) {
|
|
3228
|
+
isTruncated = true;
|
|
3229
|
+
break;
|
|
3230
|
+
}
|
|
3231
|
+
let newBatchCount = 0;
|
|
3232
|
+
for (const item of batch) {
|
|
3233
|
+
const id = item?.id ?? item?.dbKey;
|
|
3234
|
+
if (!id || !seenIds.has(id)) {
|
|
3235
|
+
if (id) seenIds.add(id);
|
|
3236
|
+
accumulated.push(item);
|
|
3237
|
+
newBatchCount++;
|
|
3238
|
+
}
|
|
3239
|
+
}
|
|
3240
|
+
upstreamTotal = typeof resultObj?.total === "number" ? resultObj.total : accumulated.length;
|
|
3241
|
+
upstreamHasMore = Boolean(resultObj?.hasMore ?? currentOffset + batch.length < upstreamTotal);
|
|
3242
|
+
if (!upstreamHasMore || batch.length === 0 || newBatchCount === 0) break;
|
|
3243
|
+
currentOffset += batch.length;
|
|
3244
|
+
} catch (error) {
|
|
3245
|
+
throw error instanceof Error ? error : new Error(`Public agent catalog request failed: ${String(error)}`);
|
|
3246
|
+
}
|
|
3247
|
+
}
|
|
3248
|
+
return {
|
|
3249
|
+
agents: accumulated,
|
|
3250
|
+
total: upstreamTotal,
|
|
3251
|
+
hasMore: upstreamHasMore,
|
|
3252
|
+
truncated: isTruncated || upstreamHasMore && accumulated.length < upstreamTotal
|
|
3253
|
+
};
|
|
3444
3254
|
}
|
|
3445
3255
|
|
|
3446
3256
|
// packages/ai/tools/deleteDialogsToolModel.ts
|
|
@@ -3527,7 +3337,7 @@ var jsonPreview = (value, maxLength = 1800) => {
|
|
|
3527
3337
|
return text.length <= maxLength ? text : `${text.slice(0, maxLength)}
|
|
3528
3338
|
...(truncated)`;
|
|
3529
3339
|
};
|
|
3530
|
-
var
|
|
3340
|
+
var getRuntime = (thunkApi) => {
|
|
3531
3341
|
const state2 = thunkApi?.getState?.();
|
|
3532
3342
|
if (!state2) return null;
|
|
3533
3343
|
const snapshot = selectRuntimeSnapshot(state2);
|
|
@@ -3538,7 +3348,7 @@ var getRuntime2 = (thunkApi) => {
|
|
|
3538
3348
|
currentServer: snapshot?.currentServer ?? state2.currentServer ?? state2.settings?.currentServer
|
|
3539
3349
|
};
|
|
3540
3350
|
};
|
|
3541
|
-
var
|
|
3351
|
+
var authHeaders = (token) => token ? { Authorization: `Bearer ${token}` } : {};
|
|
3542
3352
|
var DrainExhaustedError = class extends Error {
|
|
3543
3353
|
constructor() {
|
|
3544
3354
|
super(DRAIN_EXHAUSTED_USER_MESSAGE);
|
|
@@ -3553,14 +3363,14 @@ async function throwIfDrainExhausted(response) {
|
|
|
3553
3363
|
throw new DrainExhaustedError();
|
|
3554
3364
|
}
|
|
3555
3365
|
}
|
|
3556
|
-
async function
|
|
3366
|
+
async function readRemoteRecord(args) {
|
|
3557
3367
|
const serverBase = normalizeServerOrigin(args.serverBase);
|
|
3558
3368
|
if (!serverBase || !args.token) return null;
|
|
3559
3369
|
const query = args.includeDeleted ? "?includeDeleted=true" : "";
|
|
3560
3370
|
const response = await fetchWithTransientRetry(
|
|
3561
3371
|
fetch,
|
|
3562
3372
|
`${serverBase}/api/v1/db/read/${encodeURIComponent(args.dbKey)}${query}`,
|
|
3563
|
-
{ headers:
|
|
3373
|
+
{ headers: authHeaders(args.token) }
|
|
3564
3374
|
);
|
|
3565
3375
|
if (!response.ok) {
|
|
3566
3376
|
await throwIfDrainExhausted(response);
|
|
@@ -3579,7 +3389,7 @@ async function queryRemoteUserRecords(args) {
|
|
|
3579
3389
|
method: "POST",
|
|
3580
3390
|
headers: {
|
|
3581
3391
|
"Content-Type": "application/json",
|
|
3582
|
-
...
|
|
3392
|
+
...authHeaders(args.token)
|
|
3583
3393
|
},
|
|
3584
3394
|
body: JSON.stringify({
|
|
3585
3395
|
type: args.type,
|
|
@@ -3595,7 +3405,7 @@ async function queryRemoteUserRecords(args) {
|
|
|
3595
3405
|
return Array.isArray(payload?.data?.data) ? payload.data.data : Array.isArray(payload?.data) ? payload.data : [];
|
|
3596
3406
|
}
|
|
3597
3407
|
async function queryBestRecords(thunkApi, type, limit) {
|
|
3598
|
-
const runtime =
|
|
3408
|
+
const runtime = getRuntime(thunkApi);
|
|
3599
3409
|
const remoteRecords = await queryRemoteUserRecords({
|
|
3600
3410
|
serverBase: runtime?.currentServer,
|
|
3601
3411
|
token: runtime?.currentToken,
|
|
@@ -3609,8 +3419,8 @@ async function queryBestRecords(thunkApi, type, limit) {
|
|
|
3609
3419
|
return remoteRecords;
|
|
3610
3420
|
}
|
|
3611
3421
|
async function readBestRecord(thunkApi, dbKey, includeDeleted = false) {
|
|
3612
|
-
const runtime =
|
|
3613
|
-
return
|
|
3422
|
+
const runtime = getRuntime(thunkApi);
|
|
3423
|
+
return readRemoteRecord({
|
|
3614
3424
|
serverBase: runtime?.currentServer,
|
|
3615
3425
|
token: runtime?.currentToken,
|
|
3616
3426
|
dbKey,
|
|
@@ -3722,7 +3532,7 @@ var deleteDialogsFunctionSchema = {
|
|
|
3722
3532
|
}
|
|
3723
3533
|
};
|
|
3724
3534
|
async function queryDialogsBySubjectRefFunc(args, thunkApi) {
|
|
3725
|
-
const runtime =
|
|
3535
|
+
const runtime = getRuntime(thunkApi);
|
|
3726
3536
|
const target = buildNoloSubjectRefQueryTarget(args ?? {});
|
|
3727
3537
|
if (!target) throw new Error("queryDialogsBySubjectRef requires rowDbKey or subjectKind plus subjectId.");
|
|
3728
3538
|
const queryLimit = clampNoloPositiveInteger(args?.queryLimit, 500, 500);
|
|
@@ -3768,7 +3578,7 @@ async function queryDialogsBySubjectRefFunc(args, thunkApi) {
|
|
|
3768
3578
|
};
|
|
3769
3579
|
}
|
|
3770
3580
|
async function readDialogFunc(args, thunkApi) {
|
|
3771
|
-
const runtime =
|
|
3581
|
+
const runtime = getRuntime(thunkApi);
|
|
3772
3582
|
const userId = runtime?.currentUserId;
|
|
3773
3583
|
if (!userId) throw new Error("readDialog requires a signed-in user.");
|
|
3774
3584
|
const rawDialog = asTrimmedString(args?.dialog) || asTrimmedString(args?.dialogId) || asTrimmedString(args?.id);
|
|
@@ -3784,7 +3594,7 @@ async function readDialogFunc(args, thunkApi) {
|
|
|
3784
3594
|
method: "POST",
|
|
3785
3595
|
headers: {
|
|
3786
3596
|
"Content-Type": "application/json",
|
|
3787
|
-
...
|
|
3597
|
+
...authHeaders(runtime.currentToken)
|
|
3788
3598
|
},
|
|
3789
3599
|
// Agent-safe bounded 模式:数据源侧完成预算 projection,本进程不再
|
|
3790
3600
|
// 对全量消息做 materialize + 整体 stringify。
|
|
@@ -3850,7 +3660,7 @@ var formatDeleteDialogsPreview = (preview) => {
|
|
|
3850
3660
|
return lines.join("\n");
|
|
3851
3661
|
};
|
|
3852
3662
|
var loadDeleteDialogsPreview = async (args, thunkApi) => {
|
|
3853
|
-
const runtime =
|
|
3663
|
+
const runtime = getRuntime(thunkApi);
|
|
3854
3664
|
const userId = runtime?.currentUserId;
|
|
3855
3665
|
if (!userId) throw new Error("deleteDialogs requires a signed-in user.");
|
|
3856
3666
|
const query = asTrimmedString(args?.query);
|
|
@@ -3896,7 +3706,7 @@ async function deleteDialogsFunc(args, thunkApi) {
|
|
|
3896
3706
|
const deletedDialogIds = [];
|
|
3897
3707
|
const deletedDialogKeys = [];
|
|
3898
3708
|
const failures = [];
|
|
3899
|
-
const { deleteDialog: deleteDialog2 } = await import("./dialogSlice-
|
|
3709
|
+
const { deleteDialog: deleteDialog2 } = await import("./dialogSlice-GEGACCH2.js");
|
|
3900
3710
|
for (const target of targets) {
|
|
3901
3711
|
try {
|
|
3902
3712
|
await thunkApi.dispatch(deleteDialog2(target.dbKey)).unwrap();
|
|
@@ -3922,7 +3732,7 @@ async function deleteDialogsFunc(args, thunkApi) {
|
|
|
3922
3732
|
};
|
|
3923
3733
|
}
|
|
3924
3734
|
async function fetchUserFavoriteAgentMap(thunkApi) {
|
|
3925
|
-
const runtime =
|
|
3735
|
+
const runtime = getRuntime(thunkApi);
|
|
3926
3736
|
if (!runtime?.currentServer || !runtime?.currentToken) return {};
|
|
3927
3737
|
try {
|
|
3928
3738
|
const serverBase = normalizeServerOrigin(runtime.currentServer);
|
|
@@ -3931,7 +3741,7 @@ async function fetchUserFavoriteAgentMap(thunkApi) {
|
|
|
3931
3741
|
method: "POST",
|
|
3932
3742
|
headers: {
|
|
3933
3743
|
"Content-Type": "application/json",
|
|
3934
|
-
...
|
|
3744
|
+
...authHeaders(runtime.currentToken)
|
|
3935
3745
|
},
|
|
3936
3746
|
body: JSON.stringify({ targetType: "agent" })
|
|
3937
3747
|
}).catch(() => null);
|
|
@@ -3978,21 +3788,37 @@ var listAgentsFunctionSchema = {
|
|
|
3978
3788
|
type: "string",
|
|
3979
3789
|
description: "Optional case-insensitive search substring matching agent name, model, provider, handle, or agentKey. Use to locate specific candidates like 'opus', 'devin', or 'claude'."
|
|
3980
3790
|
},
|
|
3981
|
-
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." }
|
|
3791
|
+
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." },
|
|
3792
|
+
compact: { type: "boolean", description: "Explicit compact projection mode. Retains essential agent-selection and admission evidence (agentKey, name, model, tier, billingSource, availabilityStatus, credentialGroup, tools, apiSource, credentialed, quota, economics) while omitting non-admission verbose text like introduction and modelAbility." },
|
|
3793
|
+
offset: { type: "integer", description: "Optional pagination offset for agent candidates. Default 0." }
|
|
3982
3794
|
}
|
|
3983
3795
|
}
|
|
3984
3796
|
};
|
|
3985
3797
|
async function listAgentsFunc(args, thunkApi) {
|
|
3986
|
-
const
|
|
3987
|
-
const
|
|
3798
|
+
const pagination = resolvePaginationArgs({ limit: args?.limit, offset: args?.offset });
|
|
3799
|
+
const hasQuery = Boolean(args?.query && typeof args?.query === "string" && args?.query.trim());
|
|
3800
|
+
const upstreamFetchLimit = hasQuery ? Number.POSITIVE_INFINITY : Math.max(500, (pagination.offset ?? 0) + (pagination.limit ?? 100));
|
|
3801
|
+
const userRecords = await queryBestRecords(
|
|
3802
|
+
thunkApi,
|
|
3803
|
+
"agent" /* AGENT */,
|
|
3804
|
+
Number.isFinite(upstreamFetchLimit) ? upstreamFetchLimit : 500
|
|
3805
|
+
);
|
|
3988
3806
|
const favoritesMap = await fetchUserFavoriteAgentMap(thunkApi);
|
|
3989
|
-
const runtime =
|
|
3807
|
+
const runtime = getRuntime(thunkApi);
|
|
3990
3808
|
const scope = resolveDiscoveryScope({ scope: args?.scope, publicOnly: args?.publicOnly });
|
|
3991
|
-
|
|
3992
|
-
|
|
3993
|
-
|
|
3994
|
-
|
|
3995
|
-
|
|
3809
|
+
let publicRecords = [];
|
|
3810
|
+
let upstreamTruncated = false;
|
|
3811
|
+
let upstreamTotal;
|
|
3812
|
+
if (scope !== "preferred") {
|
|
3813
|
+
const discoveryRes = await fetchPublicAgentsForDiscovery({
|
|
3814
|
+
serverBase: runtime?.currentServer ?? "",
|
|
3815
|
+
token: runtime?.currentToken,
|
|
3816
|
+
limit: upstreamFetchLimit
|
|
3817
|
+
});
|
|
3818
|
+
publicRecords = discoveryRes.agents;
|
|
3819
|
+
upstreamTruncated = discoveryRes.truncated;
|
|
3820
|
+
upstreamTotal = discoveryRes.total;
|
|
3821
|
+
}
|
|
3996
3822
|
const recordsMap = /* @__PURE__ */ new Map();
|
|
3997
3823
|
for (const record of userRecords) {
|
|
3998
3824
|
const key2 = record?.dbKey || record?.id || record?.publicKey;
|
|
@@ -4079,16 +3905,25 @@ async function listAgentsFunc(args, thunkApi) {
|
|
|
4079
3905
|
publicOnly: args?.publicOnly,
|
|
4080
3906
|
showUnavailable: args?.showUnavailable,
|
|
4081
3907
|
verbose: args?.verbose,
|
|
3908
|
+
compact: args?.compact,
|
|
3909
|
+
limit: args?.limit,
|
|
3910
|
+
offset: args?.offset,
|
|
3911
|
+
upstreamTruncated,
|
|
3912
|
+
upstreamTotal,
|
|
4082
3913
|
now
|
|
4083
3914
|
});
|
|
4084
3915
|
return {
|
|
4085
3916
|
rawData: {
|
|
4086
3917
|
success: true,
|
|
4087
3918
|
total: discovery.total,
|
|
3919
|
+
...typeof discovery.offset === "number" ? { offset: discovery.offset } : {},
|
|
3920
|
+
...typeof discovery.limit === "number" ? { limit: discovery.limit } : {},
|
|
3921
|
+
...discovery.truncated ? { truncated: true } : {},
|
|
4088
3922
|
unavailableCount: discovery.unavailableCount,
|
|
4089
|
-
|
|
3923
|
+
// 顺序即序列化顺序:agents 在前(派发必需),大块说明字段在后。
|
|
3924
|
+
agents: discovery.agents,
|
|
4090
3925
|
credentialGroups: discovery.credentialGroups,
|
|
4091
|
-
|
|
3926
|
+
unavailableAgents: discovery.unavailableAgents
|
|
4092
3927
|
},
|
|
4093
3928
|
displayData: formatAgentListCard(discovery.agents)
|
|
4094
3929
|
};
|
|
@@ -4132,7 +3967,7 @@ function formatReadAgentCard(agentKey, record) {
|
|
|
4132
3967
|
return lines.join("\n");
|
|
4133
3968
|
}
|
|
4134
3969
|
async function readAgentFunc(args, thunkApi) {
|
|
4135
|
-
const runtime =
|
|
3970
|
+
const runtime = getRuntime(thunkApi);
|
|
4136
3971
|
const userId = runtime?.currentUserId;
|
|
4137
3972
|
if (!userId) throw new Error("readAgent requires a signed-in user.");
|
|
4138
3973
|
const rawAgent = asTrimmedString(args?.agent) || asTrimmedString(args?.agentKey) || asTrimmedString(args?.id);
|
|
@@ -4164,14 +3999,14 @@ var listSpacesFunctionSchema = {
|
|
|
4164
3999
|
}
|
|
4165
4000
|
};
|
|
4166
4001
|
async function listSpacesFunc(_args, thunkApi) {
|
|
4167
|
-
const runtime =
|
|
4002
|
+
const runtime = getRuntime(thunkApi);
|
|
4168
4003
|
const serverBase = normalizeServerOrigin(runtime?.currentServer);
|
|
4169
4004
|
if (serverBase && runtime?.currentToken && runtime?.currentUserId) {
|
|
4170
4005
|
const response = await fetchWithTransientRetry(fetch, `${serverBase}/rpc/getUserSpaceMemberships`, {
|
|
4171
4006
|
method: "POST",
|
|
4172
4007
|
headers: {
|
|
4173
4008
|
"Content-Type": "application/json",
|
|
4174
|
-
...
|
|
4009
|
+
...authHeaders(runtime.currentToken)
|
|
4175
4010
|
},
|
|
4176
4011
|
body: JSON.stringify({ userId: runtime.currentUserId })
|
|
4177
4012
|
}).catch(() => null);
|
|
@@ -4276,7 +4111,7 @@ var cliWhoamiFunctionSchema = {
|
|
|
4276
4111
|
parameters: { type: "object", properties: {} }
|
|
4277
4112
|
};
|
|
4278
4113
|
async function cliWhoamiFunc(_args, thunkApi) {
|
|
4279
|
-
const runtime =
|
|
4114
|
+
const runtime = getRuntime(thunkApi);
|
|
4280
4115
|
const result = {
|
|
4281
4116
|
success: true,
|
|
4282
4117
|
runtime: "browser",
|
|
@@ -4292,7 +4127,7 @@ var cliDoctorFunctionSchema = {
|
|
|
4292
4127
|
parameters: { type: "object", properties: {} }
|
|
4293
4128
|
};
|
|
4294
4129
|
async function cliDoctorFunc(_args, thunkApi) {
|
|
4295
|
-
const runtime =
|
|
4130
|
+
const runtime = getRuntime(thunkApi);
|
|
4296
4131
|
const result = {
|
|
4297
4132
|
success: true,
|
|
4298
4133
|
runtime: "browser",
|
|
@@ -13848,7 +13683,7 @@ function resolveCliLocalRuntimeKeyCapability(runtimeKey) {
|
|
|
13848
13683
|
// 带 id 的形态走服务端长形式 `runtime-v1:<scope>:<owner>:instabox:<id>`,
|
|
13849
13684
|
// 那种形态由下面的 runtime-v1 分支放行。
|
|
13850
13685
|
acceptedByCliArgs: isBareInstabox,
|
|
13851
|
-
note: isBareInstabox ? "Instabox \u4E91\u6C99\u76D2\uFF1A\u53EF\u7531\u672C\u673A CLI \u672C\u5730\u901A\u9053\u76F4\u63A5\u5151\u73B0\uFF08\u9700 INSTABOX_API_KEY \u51ED\u636E\uFF09\uFF0C\u6267\u884C execShell \u8FDC\u7A0B\u547D\u4EE4\u3002" : "instabox \u6682\u65E0\u7EC6\u5206\u5B50\u8FD0\u884C\u65F6\uFF1B\u8BF7\u4F7F\u7528\u88F8 `instabox`\u3002"
|
|
13686
|
+
note: isBareInstabox ? "Instabox \u4E91\u6C99\u76D2\uFF1A\u53EF\u7531\u672C\u673A CLI \u672C\u5730\u901A\u9053\u76F4\u63A5\u5151\u73B0\uFF08\u9700 INSTABOX_API_KEY \u51ED\u636E\uFF09\uFF0C\u9ED8\u8BA4 empty \u5DE5\u4F5C\u533A\uFF0Csnapshot \u9700 manifest\uFF1B\u6C99\u76D2\u4E0D\u5151\u73B0\u5BBF\u4E3B cwd\uFF0Ccwd + instabox \u5FC5\u987B\u62D2\u7EDD\u3002\u6267\u884C execShell \u8FDC\u7A0B\u547D\u4EE4\u3002" : "instabox \u6682\u65E0\u7EC6\u5206\u5B50\u8FD0\u884C\u65F6\uFF1B\u8BF7\u4F7F\u7528\u88F8 `instabox`\u3002"
|
|
13852
13687
|
};
|
|
13853
13688
|
}
|
|
13854
13689
|
if (key2 === "gcp" || key2.startsWith("gcp:")) {
|
|
@@ -13966,7 +13801,7 @@ function assertRuntimeKeyDispatchableByHost(input) {
|
|
|
13966
13801
|
`startAgentRun \u7684 runtimeKey="${requested}" \u65E0\u6CD5\u7531 CLI \u672C\u5730\u6D3E\u53D1\u901A\u9053\u5151\u73B0\uFF1A\u8BE5\u901A\u9053\u53EA\u80FD\u628A run \u843D\u5230\u672C\u673A\uFF08local\uFF09\u3001\u672C\u673A sbx \u4E91\u6C99\u76D2\uFF08docker / docker:<id>\uFF09\u6216 Instabox \u6C99\u76D2\uFF08instabox\uFF09\uFF0C\u672C\u673A\u6CA1\u6709 ${requested} \u5BF9\u5E94\u7684\u6267\u884C\u540E\u7AEF\u3002\u5DF2\u62D2\u7EDD\u6D3E\u53D1\uFF0C\u672A\u542F\u52A8\u4EFB\u4F55 run\u3002\u8981\u771F\u6B63\u5728 ${requested} \u6267\u884C\uFF1A\u7528 CLI \u901A\u9053 \`nolo agent run --runtime-key ${requested} ...\`\uFF0C\u6216\u4ECE\u80FD\u6D3E\u53D1\u5230\u8BE5\u4F4D\u7F6E\u7684\u5BBF\u4E3B\uFF08\u670D\u52A1\u7AEF\uFF09\u53D1\u8D77\u3002`
|
|
13967
13802
|
);
|
|
13968
13803
|
}
|
|
13969
|
-
var HOST_WRITES_CONFIRMATION_REQUIRED_MESSAGE = "runtimeKey 'local' \u610F\u5473\u7740\u5B50 run \u76F4\u63A5\u5728\u5BBF\u4E3B\u6587\u4EF6\u7CFB\u7EDF\u4E0A\u8BFB\u5199\u4EE3\u7801\uFF08\u65E0\u9694\u79BB\uFF09\uFF1A\u5FC5\u987B\u7531\u8C03\u7528\u65B9\u663E\u5F0F\u58F0\u660E allowHostWrites: true \u624D\u80FD\u6D3E\u53D1\u3002\u672A\u58F0\u660E\u65F6\u5DF2\u62D2\u7EDD\u6D3E\u53D1\uFF08\u672A\u542F\u52A8\u4EFB\u4F55 run\uFF09\uFF1B\u8981\u6C99\u76D2\u6267\u884C\u8BF7\u7701\u7565 runtimeKey\uFF08\u9ED8\u8BA4\u672C\u673A docker \u6C99\u76D2\uFF09\u6216\u663E\u5F0F\u70B9\u540D docker / docker:<id>\u3002";
|
|
13804
|
+
var HOST_WRITES_CONFIRMATION_REQUIRED_MESSAGE = "runtimeKey 'local' \u610F\u5473\u7740\u5B50 run \u76F4\u63A5\u5728\u5BBF\u4E3B\u6587\u4EF6\u7CFB\u7EDF\u4E0A\u8BFB\u5199\u4EE3\u7801\uFF08\u65E0\u9694\u79BB\uFF09\uFF1A\u5FC5\u987B\u7531\u8C03\u7528\u65B9\u663E\u5F0F\u58F0\u660E allowHostWrites: true \u624D\u80FD\u6D3E\u53D1\u3002\u672A\u58F0\u660E\u65F6\u5DF2\u62D2\u7EDD\u6D3E\u53D1\uFF08\u672A\u542F\u52A8\u4EFB\u4F55 run\uFF09\uFF1B\u8981\u6C99\u76D2\u6267\u884C\u8BF7\u7701\u7565 runtimeKey\uFF08\u9ED8\u8BA4\u672C\u673A docker \u6C99\u76D2\uFF09\u6216\u663E\u5F0F\u70B9\u540D docker / docker:<id>\u3002\u53EA\u8BFB\u6D3E\u53D1\uFF08readOnly: true\uFF09\u4E0D\u9700\u8981 runtimeKey\uFF1A\u7701\u7565\u5B83\u5373\u5728\u5BBF\u4E3B\u6267\u884C\uFF0C\u65E0\u9700 allowHostWrites\u3002\u6CE8\u610F readOnly \u4E0D\u63D0\u4F9B\u6587\u4EF6\u7CFB\u7EDF\u53EA\u8BFB\u9694\u79BB\uFF08shell \u4ECD\u53EF\u5199\uFF09\uFF0C\u9700\u8981\u9694\u79BB\u8BF7\u663E\u5F0F\u6307\u5B9A docker\u3002";
|
|
13970
13805
|
var HOST_EXECUTOR_UNAVAILABLE_MESSAGE = "runtimeKey 'local'\uFF08\u5728\u5BBF\u4E3B\u6587\u4EF6\u7CFB\u7EDF\u4E0A\u6267\u884C\uFF09\u5728\u5F53\u524D\u5BBF\u4E3B\u6CA1\u6709\u53EF\u7528\u7684\u5BBF\u4E3B\u6267\u884C\u5668\uFF1A\u670D\u52A1\u7AEF / \u6D4F\u89C8\u5668 run \u5151\u73B0\u4E0D\u4E86\u5B83\uFF08\u670D\u52A1\u7AEF\u4ECE\u4E0D\u5151\u73B0 local\uFF0C\u89C1 local_target_unsupported\uFF09\u3002\u8BF7\u5728\u5BBF\u4E3B\u8FDB\u7A0B\u5185\u6D3E\u53D1\uFF08CLI \u901A\u9053\u652F\u6301 runtimeKey=local + allowHostWrites: true\uFF09\uFF0C\u6216\u6539\u7528\u5DF2\u8FDE\u63A5\u7684\u673A\u5668\uFF08runtimeKey: machine:<machineId>\uFF09\uFF0C\u6216\u7701\u7565 runtimeKey \u843D\u672C\u673A docker \u6C99\u76D2\u3002";
|
|
13971
13806
|
function resolveCliLocalSpawnDispatch(input) {
|
|
13972
13807
|
const requested = assertRuntimeKeyDispatchableByHost({
|
|
@@ -14176,7 +14011,7 @@ function buildStartAgentRunFunctionSchema(opts) {
|
|
|
14176
14011
|
// 与 server 透传保持不动,探活/烟测仍走 CLI 侧。
|
|
14177
14012
|
continueDialogId: {
|
|
14178
14013
|
type: "string",
|
|
14179
|
-
description: "\u53EF\u9009\u3002\u7EED\u8DD1\u5F53\u524D\u7528\u6237\u5DF2\u6709\u7684 dialog\uFF08\u4E0D\u5B58\u5728\u6216\u4E0D\u5C5E\u4E8E\u5F53\u524D\u7528\u6237\u65F6\u663E\u5F0F\u62A5\u9519\uFF0C\u4E0D\u65B0\u5EFA\uFF09\u3002\u9002\u7528\u4E8E\u540C\u4E00\u5B50\u4EFB\u52A1\u7684\u5B9A\u5411\u95ED\u5408\uFF0C\u6838\u9A8C\u4E0A\u4E00\u8F6E finding \u662F\u5426\u4FEE\u597D\uFF1B\u7981\u7528\u4E8E\u8BC4\u5BA1\u7C7B\u4EFB\u52A1\u7684\u72EC\u7ACB\u5224\u65AD\uFF0C\u7EED\u8DD1\u4F1A\u5E26\u5165\u4E4B\u524D\u7684\u7ED3\u8BBA\u3001\u7834\u574F\u72EC\u7ACB\u6027\u30022026-10-19 review \u673A\u5236\u7EA6\u5B9A\uFF1Afull \u5BA1\u67E5\u7528\u65B0 dialog\uFF08\u4E0D\u4F20\u672C\u53C2\u6570\uFF09\uFF0Cclosure \u7528\u7EED\u8DD1\u3002"
|
|
14014
|
+
description: "\u53EF\u9009\u3002\u7EED\u8DD1\u5F53\u524D\u7528\u6237\u5DF2\u6709\u7684 dialog\uFF08\u4E0D\u5B58\u5728\u6216\u4E0D\u5C5E\u4E8E\u5F53\u524D\u7528\u6237\u65F6\u663E\u5F0F\u62A5\u9519\uFF0C\u4E0D\u65B0\u5EFA\uFF09\u3002\u9002\u7528\u4E8E\u540C\u4E00\u5B50\u4EFB\u52A1\u7684\u5B9A\u5411\u95ED\u5408\uFF0C\u6838\u9A8C\u4E0A\u4E00\u8F6E finding \u662F\u5426\u4FEE\u597D\uFF1B\u7981\u7528\u4E8E\u8BC4\u5BA1\u7C7B\u4EFB\u52A1\u7684\u72EC\u7ACB\u5224\u65AD\uFF0C\u7EED\u8DD1\u4F1A\u5E26\u5165\u4E4B\u524D\u7684\u7ED3\u8BBA\u3001\u7834\u574F\u72EC\u7ACB\u6027\u30022026-10-19 review \u673A\u5236\u7EA6\u5B9A\uFF1Afull \u5BA1\u67E5\u7528\u65B0 dialog\uFF08\u4E0D\u4F20\u672C\u53C2\u6570\uFF09\uFF0Cclosure \u7528\u7EED\u8DD1\u3002\u7EED\u8DD1\u65F6\u5FC5\u987B\u663E\u5F0F\u4F20\u8BE5\u5BF9\u8BDD\u539F\u672C\u7684 agentKey\uFF08\u5BF9\u8BDD\u7684 primaryAgentKey\uFF09\uFF1A\u7701\u7565 agentKey \u4E0D\u4F1A\u6CBF\u7528\u539F agent\uFF0C\u800C\u662F\u56DE\u843D\u5230\u5F53\u524D\u7F16\u6392\u8005\u81EA\u5DF1\uFF0C\u7B49\u4E8E\u6362\u6A21\u578B\u5E76\u628A\u8FD9\u4EFD\u5BF9\u8BDD\u7684 prompt \u7F13\u5B58\u5168\u90E8\u4F5C\u5E9F\uFF1B\u786E\u9700\u6362\u6A21\u578B\uFF08\u539F agent \u4E0D\u53EF\u7528/\u914D\u989D\u8017\u5C3D\uFF09\u624D\u4F20\u65B0 key\uFF0C\u5E76\u5728 task \u91CC\u8BF4\u660E\u7406\u7531\u3002"
|
|
14180
14015
|
},
|
|
14181
14016
|
batchId: {
|
|
14182
14017
|
type: "string",
|
|
@@ -14234,9 +14069,18 @@ function buildStartAgentRunFunctionSchema(opts) {
|
|
|
14234
14069
|
type: "string",
|
|
14235
14070
|
description: "\u53EF\u9009\u3002\u8FD9\u6B21 run \u7684\u6267\u884C\u4F4D\u7F6E\uFF1AlistRuntimes \u8FD4\u56DE\u7684\u7A33\u5B9A key\uFF08local | server | machine:<machineId> | docker:<runtimeId> | instabox | gcp\uFF09\u3002\u4E91\u540E\u7AEF\u6309 run \u8BA1\u8D39\uFF08instabox \u514D\u8D39\u989D\u5EA6\u3001gcp \u6309\u79D2\uFF09\uFF0C\u70B9\u540D\u5373\u8868\u793A\u540C\u610F\u5728\u8BE5\u540E\u7AEF\u6267\u884C\u3002\u586B\u4E86\u5C31\u53EA\u5728\u90A3\u4E2A\u4F4D\u7F6E\u6267\u884C\uFF1Bkey \u975E\u6CD5 / \u8FD0\u884C\u65F6\u672A\u914D\u7F6E / \u673A\u5668\u79BB\u7EBF\u6216\u975E\u672C\u4EBA\u6240\u6709\u65F6\u4F1A\u663E\u5F0F\u62A5\u9519\uFF0C\u4E0D\u4F1A\u6084\u6084\u6539\u5728\u672C\u673A\u6216\u670D\u52A1\u7AEF\u6267\u884C\u3002\u4E0D\u586B = \u6CBF\u7528\u5F53\u524D\u5BBF\u4E3B\u9ED8\u8BA4\u4F4D\u7F6E\u3002"
|
|
14236
14071
|
},
|
|
14072
|
+
instaboxWorkspace: {
|
|
14073
|
+
type: "string",
|
|
14074
|
+
enum: ["empty", "snapshot"],
|
|
14075
|
+
description: "\u4EC5 runtimeKey=instabox\u3002\u4EC5\u672C\u673A CLI \u6267\u884C\u5668\u652F\u6301\u8FD9\u4E9B\u53C2\u6570\uFF1B\u5176\u4ED6\u901A\u9053\u663E\u5F0F\u62D2\u7EDD\u3002\u9ED8\u8BA4 empty\uFF08\u65E0\u5BBF\u4E3B cwd \u7684\u6C99\u76D2\u4EFB\u52A1\uFF09\uFF1Bsnapshot \u5FC5\u987B\u63D0\u4F9B instaboxManifest\u3002\u6C99\u76D2\u4E0D\u5151\u73B0\u5BBF\u4E3B cwd\uFF0Ccwd + instabox \u4E00\u5F8B\u62D2\u7EDD\u3002"
|
|
14076
|
+
},
|
|
14077
|
+
instaboxManifest: { type: "string", description: "snapshot \u5DE5\u4F5C\u533A\u7684 manifest \u6587\u4EF6\u8DEF\u5F84\uFF1Bempty \u4E0D\u5F97\u63D0\u4F9B\u3002" },
|
|
14078
|
+
instaboxArtifactDir: { type: "string", description: "\u5BBF\u4E3B\u4EA7\u7269\u63A5\u6536\u7EDD\u5BF9\u8DEF\u5F84\uFF1B\u9ED8\u8BA4\u5728\u672C\u673A runs \u76EE\u5F55\u4E0B\u4E3A\u6BCF\u6B21\u6D3E\u53D1\u521B\u5EFA\u72EC\u7ACB instabox-artifacts \u76EE\u5F55\u3002\u4E0D\u662F\u6C99\u76D2 cwd\u3002" },
|
|
14079
|
+
instaboxAllowRemoteRelease: { type: "boolean", description: "\u663E\u5F0F\u5141\u8BB8\u8FDC\u7AEF\u91CA\u653E\uFF1B\u9ED8\u8BA4 false\uFF0C\u4E0D\u81EA\u52A8\u6388\u6743\u3002" },
|
|
14080
|
+
instaboxAllowPaid: { type: "boolean", description: "\u663E\u5F0F\u5141\u8BB8\u4ED8\u8D39\u5EFA\u673A\uFF1B\u9ED8\u8BA4 false\uFF0C\u4FDD\u7559\u514D\u8D39\u989D\u5EA6\u95E8\u7981\u3002" },
|
|
14237
14081
|
allowHostWrites: {
|
|
14238
14082
|
type: "boolean",
|
|
14239
|
-
description: "\u53EF\u9009\u3002\u4EC5\u5F53 runtimeKey='local' \u65F6\u9700\u8981\u663E\u5F0F\u58F0\u660E\uFF1A\u8868\u793A\u8C03\u7528\u65B9\u540C\u610F\u5B50 run \u76F4\u63A5\u5728**\u5BBF\u4E3B\u6587\u4EF6\u7CFB\u7EDF**\u4E0A\u8BFB\u5199\u4EE3\u7801\uFF08\u65E0\u9694\u79BB\uFF09\u3002runtimeKey='local' \u4F46\u672A\u58F0\u660E\u65F6\u4F1A\u88AB\u663E\u5F0F\u62D2\u7EDD\uFF08\u4E0D\u56DE\u843D\u5BBF\u4E3B\u3001\u4E5F\u4E0D\u6084\u6084\u6539\u6210 docker\uFF09\u3002\u7701\u7565 runtimeKey \u65F6\u65E0\u6548\u3002\u6CE8\u610F**\u7701\u7565 key \u65F6\u7684\u9ED8\u8BA4\u4F4D\u7F6E\u6709\u4F8B\u5916**\uFF1A\u5199\u578B\u6D3E\u53D1\u9ED8\u8BA4\u8FDB\u672C\u673A docker \u6C99\u76D2\uFF1B\u53EA\u8BFB\u6D3E\u53D1\uFF08readOnly=true\uFF09\u4ECD\u5728\u5BBF\u4E3B\u6267\u884C\uFF08\u5B83\
|
|
14083
|
+
description: "\u53EF\u9009\u3002\u4EC5\u5F53 runtimeKey='local' \u65F6\u9700\u8981\u663E\u5F0F\u58F0\u660E\uFF1A\u8868\u793A\u8C03\u7528\u65B9\u540C\u610F\u5B50 run \u76F4\u63A5\u5728**\u5BBF\u4E3B\u6587\u4EF6\u7CFB\u7EDF**\u4E0A\u8BFB\u5199\u4EE3\u7801\uFF08\u65E0\u9694\u79BB\uFF09\u3002runtimeKey='local' \u4F46\u672A\u58F0\u660E\u65F6\u4F1A\u88AB\u663E\u5F0F\u62D2\u7EDD\uFF08\u4E0D\u56DE\u843D\u5BBF\u4E3B\u3001\u4E5F\u4E0D\u6084\u6084\u6539\u6210 docker\uFF09\u3002\u7701\u7565 runtimeKey \u65F6\u65E0\u6548\u3002\u6CE8\u610F**\u7701\u7565 key \u65F6\u7684\u9ED8\u8BA4\u4F4D\u7F6E\u6709\u4F8B\u5916**\uFF1A\u5199\u578B\u6D3E\u53D1\u9ED8\u8BA4\u8FDB\u672C\u673A docker \u6C99\u76D2\uFF1B\u53EA\u8BFB\u6D3E\u53D1\uFF08readOnly=true\uFF09\u4ECD\u5728\u5BBF\u4E3B\u6267\u884C\uFF08\u5B83\u79FB\u9664\u4E86\u4E13\u7528\u5199\u5DE5\u5177\uFF0C\u8D77\u6C99\u76D2\u662F\u6D6A\u8D39\uFF1B\u4F46 shell \u4ECD\u53EF\u5199\u6587\u4EF6\uFF0C\u8FD9\u4E0D\u662F\u6587\u4EF6\u7CFB\u7EDF\u53EA\u8BFB\u9694\u79BB\uFF09\u3002"
|
|
14240
14084
|
}
|
|
14241
14085
|
},
|
|
14242
14086
|
required: ["task", "title"]
|
|
@@ -14268,6 +14112,15 @@ async function startAgentRunFunc(args, thunkApi, _context) {
|
|
|
14268
14112
|
"startAgentRun \u7684 runtimeKey \u5FC5\u987B\u662F\u975E\u7A7A\u7684 listRuntimes key\uFF08local | server | machine:<machineId> | docker:<runtimeId> | instabox | gcp\uFF09\uFF1B\u8981\u6CBF\u7528\u9ED8\u8BA4\u4F4D\u7F6E\u8BF7\u7701\u7565\u8BE5\u53C2\u6570"
|
|
14269
14113
|
);
|
|
14270
14114
|
}
|
|
14115
|
+
if (runtimeKey === "instabox" || [
|
|
14116
|
+
args.instaboxWorkspace,
|
|
14117
|
+
args.instaboxManifest,
|
|
14118
|
+
args.instaboxArtifactDir,
|
|
14119
|
+
args.instaboxAllowRemoteRelease,
|
|
14120
|
+
args.instaboxAllowPaid
|
|
14121
|
+
].some((value) => value !== void 0)) {
|
|
14122
|
+
throw new Error("startAgentRun: instabox workspace \u5408\u540C\u76EE\u524D\u4EC5\u7531\u672C\u673A CLI \u6267\u884C\u5668\u5151\u73B0\uFF1B\u672C\u670D\u52A1\u7AEF\u6D3E\u53D1\u901A\u9053\u4E0D\u652F\u6301\uFF0C\u5DF2\u62D2\u7EDD\uFF08\u4E0D\u4F1A\u56DE\u843D\u5BBF\u4E3B\uFF09\u3002\u8BF7\u4F7F\u7528 nolo CLI \u672C\u673A\u6D3E\u53D1\u3002");
|
|
14123
|
+
}
|
|
14271
14124
|
const resultMode = args.resultMode ?? "full";
|
|
14272
14125
|
const { dispatch } = thunkApi;
|
|
14273
14126
|
const explicitBatchId = typeof batchId === "string" && batchId.trim() ? batchId.trim() : void 0;
|
|
@@ -14475,6 +14328,10 @@ function buildControlAgentRunFunctionSchema(opts) {
|
|
|
14475
14328
|
default: 1e5
|
|
14476
14329
|
}
|
|
14477
14330
|
} : {},
|
|
14331
|
+
includeCheckpoint: {
|
|
14332
|
+
type: "boolean",
|
|
14333
|
+
description: "\u53EF\u9009\u3002\u4EC5 action=status \u4E14\u663E\u5F0F true \u65F6\u8FD4\u56DE\u8131\u654F\u3001\u6709\u754C\u7684\u9636\u6BB5 checkpoint\uFF1B\u9ED8\u8BA4\u4E0D\u8FD4\u56DE\u3002checkpoint \u4E0D\u662F\u6700\u7EC8\u7ED3\u8BBA\uFF0C\u4E0D\u6539\u53D8 run \u7EC8\u6001\u3002"
|
|
14334
|
+
},
|
|
14478
14335
|
tailLines: {
|
|
14479
14336
|
type: "number",
|
|
14480
14337
|
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\u6458\u8981\u91CC\u7684 resultFile \u662F\u7EC8\u6001 run \u7684\u5B8C\u6574\u7ED3\u8BBA\u6B63\u6587\uFF08readFile \u8BFB\u5B83\uFF09\uFF0ClastAssistantText \u53EA\u662F 2000 \u5B57\u6458\u8981\u2014\u2014\u957F\u7ED3\u679C\u4E0D\u8981\u53BB\u5543\u5E26 ANSI \u7684\u65E5\u5FD7\u3002resultFile \u7F3A\u5931\u4E5F\u53EF\u80FD\u662F run \u88AB\u7528\u6237\u4E2D\u65AD\uFF08\u6B63\u6587\u53EA\u7559\u5728 dialog/.log\uFF09\uFF0C\u4E0D\u8981\u636E\u6B64\u5224\u5B9A\u5DE5\u5177\u6545\u969C\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"),
|
|
@@ -14525,7 +14382,7 @@ async function controlAgentRunFunc(args, thunkApi, _context) {
|
|
|
14525
14382
|
if (!runId) {
|
|
14526
14383
|
throw new Error("controlAgentRun(status): runId is required");
|
|
14527
14384
|
}
|
|
14528
|
-
return handleStatus(thunkApi, { runId, tailLines: tailLines ?? 0 });
|
|
14385
|
+
return handleStatus(thunkApi, { runId, tailLines: tailLines ?? 0, includeCheckpoint: args.includeCheckpoint === true });
|
|
14529
14386
|
}
|
|
14530
14387
|
if (action === "stop") {
|
|
14531
14388
|
if (!runId) {
|
|
@@ -14605,7 +14462,12 @@ async function handleStatus(thunkApi, opts) {
|
|
|
14605
14462
|
const data = await callToolApi(
|
|
14606
14463
|
thunkApi,
|
|
14607
14464
|
"/api/agent/runs/control",
|
|
14608
|
-
{
|
|
14465
|
+
{
|
|
14466
|
+
action: "status",
|
|
14467
|
+
runId: opts.runId,
|
|
14468
|
+
tailLines: opts.tailLines,
|
|
14469
|
+
...opts.includeCheckpoint === true ? { includeCheckpoint: true } : {}
|
|
14470
|
+
},
|
|
14609
14471
|
{ withAuth: true }
|
|
14610
14472
|
);
|
|
14611
14473
|
const resData = data?.data ?? data;
|
|
@@ -14619,7 +14481,12 @@ async function handleStatus(thunkApi, opts) {
|
|
|
14619
14481
|
const logLines = resData.logLines;
|
|
14620
14482
|
const name = resolveRunLabel(run);
|
|
14621
14483
|
return {
|
|
14622
|
-
rawData: {
|
|
14484
|
+
rawData: {
|
|
14485
|
+
found: true,
|
|
14486
|
+
...run,
|
|
14487
|
+
...opts.includeCheckpoint === true && resData.checkpoint ? { checkpoint: resData.checkpoint } : {},
|
|
14488
|
+
...logLines ? { logLines } : {}
|
|
14489
|
+
},
|
|
14623
14490
|
displayData: formatStatusRunCard(name, run.status, {
|
|
14624
14491
|
runId: opts.runId,
|
|
14625
14492
|
title: normalizeRunTitle(run.title),
|
|
@@ -18650,7 +18517,7 @@ async function updateDocFunc(args, thunkApi) {
|
|
|
18650
18517
|
updated_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
18651
18518
|
};
|
|
18652
18519
|
await dispatch(write({ data: updatedPageData, customKey: id })).unwrap();
|
|
18653
|
-
const { getDocState, applyExternalDocUpdate } = await import("./docStore-
|
|
18520
|
+
const { getDocState, applyExternalDocUpdate } = await import("./docStore-B4EFT53J.js");
|
|
18654
18521
|
if (getDocState().pageKey === id) {
|
|
18655
18522
|
applyExternalDocUpdate({
|
|
18656
18523
|
slateData: finalSlateData,
|
|
@@ -18675,7 +18542,7 @@ async function updateDocFunc(args, thunkApi) {
|
|
|
18675
18542
|
// packages/ai/tools/updateUserPreferenceProfileTool.ts
|
|
18676
18543
|
async function dispatchSetSettings(thunkApi, changes) {
|
|
18677
18544
|
const injectedSetSettings = thunkApi?.extra?.setSettings;
|
|
18678
|
-
const setSettings = typeof injectedSetSettings === "function" ? injectedSetSettings : (await import("./settingThunks-
|
|
18545
|
+
const setSettings = typeof injectedSetSettings === "function" ? injectedSetSettings : (await import("./settingThunks-4WU7YE62.js")).setSettings;
|
|
18679
18546
|
await thunkApi.dispatch(setSettings(changes)).unwrap();
|
|
18680
18547
|
}
|
|
18681
18548
|
var updateUserPreferenceProfileFunctionSchema = {
|
|
@@ -19044,7 +18911,7 @@ async function runZiweiChart(input) {
|
|
|
19044
18911
|
const gender = normalizeGender(input.gender);
|
|
19045
18912
|
const fixLeap = input.fixLeap !== false;
|
|
19046
18913
|
const isLeapMonth = input.isLeapMonth === true;
|
|
19047
|
-
const { astro } = await import("./lib-
|
|
18914
|
+
const { astro } = await import("./lib-5KKIBFIT.js");
|
|
19048
18915
|
const rawChart = calendarType === "lunar" ? astro.byLunar(dateStr, timeIndex, gender, isLeapMonth, fixLeap, language) : astro.bySolar(dateStr, timeIndex, gender, fixLeap, language);
|
|
19049
18916
|
const palaces = rawChart.palaces.map((palace) => ({
|
|
19050
18917
|
index: palace.index,
|