nolo-cli 0.201.0-alpha.1 → 0.202.0-alpha.1

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.
Files changed (124) hide show
  1. package/{_executeModel-JGMNIGV2.js → _executeModel-IPRTPSW7.js} +34 -33
  2. package/{agentDeleteCommand-YUUEASG5.js → agentDeleteCommand-WHT2MMAP.js} +49 -47
  3. package/{agentEmailCommands-EO2WKZMM.js → agentEmailCommands-4LW2BFLY.js} +51 -49
  4. package/{agentListCommands-RQB27IJH.js → agentListCommands-2KF47HY6.js} +81 -45
  5. package/{agentMachineCommands-G3PU5ZEO.js → agentMachineCommands-QQCFQQ4T.js} +28 -26
  6. package/{agentProviderCommands-T6E3JCR6.js → agentProviderCommands-5ALOQLE5.js} +2 -2
  7. package/{agentRecordCommands-LY2HNY4R.js → agentRecordCommands-ARVXF2C2.js} +47 -45
  8. package/{agentRunCommand-6GS6JYDS.js → agentRunCommand-3IL5PW2S.js} +49 -47
  9. package/{agentRunControl-6HHESKDB.js → agentRunControl-ABDUPJLX.js} +10 -5
  10. package/{agentRuntimeLocal-75E4BYTF.js → agentRuntimeLocal-YXHJV65L.js} +24 -22
  11. package/{agentSlice-BCY3LBE4.js → agentSlice-BFDKYW6H.js} +4 -3
  12. package/{appDeleteCommands-PB6HW4NN.js → appDeleteCommands-OWJO3WFB.js} +29 -27
  13. package/{appDeployCommands-EF4OELAA.js → appDeployCommands-X7HLT27G.js} +29 -27
  14. package/{appDeployStatusCommands-CALVQWWC.js → appDeployStatusCommands-CHCZ7ZUD.js} +29 -27
  15. package/{appGetCommands-KFWCTFRM.js → appGetCommands-AZW2EE4R.js} +29 -27
  16. package/{appListCommands-Z5PW6DK7.js → appListCommands-YFN6DP6K.js} +29 -27
  17. package/{authCommand-RV5MQDWN.js → authCommand-W34UWJGR.js} +14 -13
  18. package/{builtinSkillRegistry-7RAJP7FD.js → builtinSkillRegistry-NJVHQIKY.js} +1 -1
  19. package/{chromeOpsCommands-BA6CS4DI.js → chromeOpsCommands-USKE4B4K.js} +15 -4
  20. package/{chunk-RE3B2OCC.js → chunk-266E37EL.js} +69 -14
  21. package/chunk-2BMURXSB.js +1863 -0
  22. package/{chunk-7MDGTSNI.js → chunk-2PI4QFAL.js} +174 -100
  23. package/{chunk-NABJEYPJ.js → chunk-2Q3LOAFE.js} +38 -3
  24. package/{chunk-OIVKFSFN.js → chunk-326HCB6L.js} +28 -24
  25. package/{chunk-4CEAZRZ4.js → chunk-33W4IFUU.js} +1 -1
  26. package/{chunk-V3MGT3RF.js → chunk-3CWF2EUZ.js} +8 -8
  27. package/{chunk-G6OOUQWJ.js → chunk-4KB6WQUL.js} +2 -0
  28. package/{chunk-DYQXB46J.js → chunk-4KPB3KWX.js} +2 -2
  29. package/{chunk-DGFSVNYE.js → chunk-4SH22ZG7.js} +5 -5
  30. package/{chunk-WAZ6BTSC.js → chunk-5E4FSR4J.js} +1 -1
  31. package/{chunk-PVD7CRYV.js → chunk-6I7ZP7KJ.js} +3 -3
  32. package/chunk-6UBGXX2W.js +12 -0
  33. package/{chunk-ZBCBFOWC.js → chunk-A2ZMIRLN.js} +2 -2
  34. package/{chunk-BQZNJCW3.js → chunk-ASG7VWPK.js} +3 -3
  35. package/{chunk-T2LB32MS.js → chunk-BLFZULEQ.js} +3 -3
  36. package/{chunk-JIFYXQRD.js → chunk-BTYQAODF.js} +26 -8
  37. package/{chunk-TDTTBXCO.js → chunk-C7PKPHK6.js} +334 -12
  38. package/{chunk-6WZQGT5X.js → chunk-CJ37ZMCQ.js} +6 -2
  39. package/{chunk-VHGD6FHV.js → chunk-CKAHAVMK.js} +40 -10
  40. package/{chunk-UNOILAZP.js → chunk-CLTGWJVT.js} +76 -4
  41. package/{chunk-Q6RMLYSA.js → chunk-CMLBKYEI.js} +4 -2
  42. package/{chunk-NVOYW6H4.js → chunk-CQHMBWZH.js} +12 -8
  43. package/{chunk-7KWPNGVJ.js → chunk-CTZ4O3XD.js} +1 -1
  44. package/{chunk-OHRDHS4N.js → chunk-CVCRAO6Q.js} +9 -4
  45. package/{chunk-7XSZNV4Q.js → chunk-D57YYGMD.js} +2 -2
  46. package/{chunk-TEC5UHQK.js → chunk-DHJXDGC3.js} +2 -2
  47. package/{chunk-QYOB7RVA.js → chunk-DKZJJ2NQ.js} +3 -2
  48. package/{chunk-A2LR6ORU.js → chunk-E2FC5RMU.js} +17 -14
  49. package/{chunk-R5HEP4LL.js → chunk-ETTDZBK5.js} +4 -4
  50. package/{chunk-LOVRT3E4.js → chunk-FWMOJTGR.js} +3722 -4851
  51. package/{chunk-ZWQUWF6W.js → chunk-G7Y4GXTY.js} +8 -14
  52. package/{chunk-5KTQVMCX.js → chunk-GOO6G4PY.js} +85 -0
  53. package/{chunk-FMOZ57LN.js → chunk-H7HWWNJB.js} +1 -1
  54. package/{chunk-QXM2ETU2.js → chunk-HJS5EIKS.js} +4 -4
  55. package/{chunk-EX7OZOYM.js → chunk-HKWGI3TM.js} +178 -311
  56. package/{chunk-BBGYSMUE.js → chunk-JH7KMNGT.js} +143 -19
  57. package/{chunk-BGYMAW6B.js → chunk-KDUYNEJ5.js} +43 -26
  58. package/{chunk-O5V7QQAF.js → chunk-LEX6DEH4.js} +114 -2
  59. package/{chunk-BTBT2566.js → chunk-MNUOMXJH.js} +412 -9
  60. package/{chunk-N7E3LQ4A.js → chunk-MZXWSY4E.js} +1 -1
  61. package/{chunk-ZQ3EAOY3.js → chunk-NTLJGRAT.js} +1 -1
  62. package/{chunk-WFUIXNKC.js → chunk-P4YLK2OD.js} +3 -3
  63. package/chunk-PRJ473FK.js +63 -0
  64. package/{chunk-2SHLT6JB.js → chunk-Q7GNBUT4.js} +2 -2
  65. package/{chunk-4AUOEYDB.js → chunk-RIKSN62L.js} +3 -3
  66. package/{chunk-GTP6VNWH.js → chunk-RQ22OZD7.js} +3 -3
  67. package/{chunk-XKX3NF6X.js → chunk-RS66RJLA.js} +2 -2
  68. package/{chunk-GC64WGMD.js → chunk-SM3NSZJV.js} +16 -5
  69. package/{chunk-DKLWAY3C.js → chunk-SSK4WNJA.js} +1 -1
  70. package/{chunk-LJODCHJO.js → chunk-SUBNV2JH.js} +3 -3
  71. package/{chunk-HLAL63BZ.js → chunk-T43B7LB2.js} +1 -1
  72. package/{chunk-HTLIKE5U.js → chunk-TWVVTUNG.js} +2 -2
  73. package/{chunk-X3RWBJDQ.js → chunk-U7HTU2S7.js} +1 -1
  74. package/{chunk-76YUTLOT.js → chunk-UIOEHFF6.js} +1 -1
  75. package/{chunk-IIX6VWLW.js → chunk-VCFU3BO5.js} +224 -38
  76. package/{chunk-QU3TLYBR.js → chunk-VEUSD6OF.js} +35 -11
  77. package/{chunk-4YMD7B4Y.js → chunk-WPOKOKZA.js} +2 -2
  78. package/{chunk-K6TZSON4.js → chunk-WTKYP6QO.js} +19 -5
  79. package/{chunk-2IVB6BQL.js → chunk-XW6B2RJW.js} +193 -56
  80. package/{chunk-ZSO5B6SW.js → chunk-Y2WUYX4I.js} +9 -0
  81. package/{chunk-7L7BVUKH.js → chunk-YAGFPXOX.js} +14 -14
  82. package/{chunk-TVGX5QIN.js → chunk-YUA6OAH5.js} +2 -2
  83. package/{chunk-IJBWBWP3.js → chunk-YV2RSLM4.js} +13 -13
  84. package/{chunk-MJWUBTK7.js → chunk-YZGNKHUM.js} +2 -2
  85. package/{commandRegistry-4DGK2ONJ.js → commandRegistry-HEBIO2A4.js} +87 -67
  86. package/{contentThunks-YYLEYO25.js → contentThunks-I4IHSDTM.js} +14 -13
  87. package/{cooldownCommands-KRILPXOZ.js → cooldownCommands-5SJ74DNP.js} +1 -1
  88. package/{createAgentAutomationAction-XKZ6TRRO.js → createAgentAutomationAction-WQCH5HR2.js} +14 -13
  89. package/{createDialogAction-6K5WSBCB.js → createDialogAction-CKMZK5JQ.js} +15 -14
  90. package/{createPageAction-FFFGCOUV.js → createPageAction-QAZHQGY7.js} +14 -13
  91. package/{dialogCommands-BFGCWWVT.js → dialogCommands-YMAHICPJ.js} +30 -28
  92. package/{dialogSlice-AA7672TX.js → dialogSlice-GEGACCH2.js} +13 -12
  93. package/{docCreateCommands-R3D5LUEG.js → docCreateCommands-SNMAKBXN.js} +28 -26
  94. package/{docDeleteCommands-7AGLMCJJ.js → docDeleteCommands-K52UESRC.js} +29 -27
  95. package/{docReadCommands-UVTD4FKH.js → docReadCommands-AG6LLHJ7.js} +28 -26
  96. package/{docStore-QDK5VGEH.js → docStore-B4EFT53J.js} +1 -1
  97. package/{docUpdateCommands-R2JHDAG4.js → docUpdateCommands-B5EZ7DYN.js} +28 -26
  98. package/{fetchMessages-HWBVATSE.js → fetchMessages-YY4SATNR.js} +1 -1
  99. package/{getPricing-E2PLNWCR.js → getPricing-3PQY3TGI.js} +3 -3
  100. package/{handleSendMessageAction-24WPHMZR.js → handleSendMessageAction-4BACQWOG.js} +70 -29
  101. package/index.js +7 -7
  102. package/{lib-4YTWAGY7.js → lib-5KKIBFIT.js} +439 -272
  103. package/{localDialogRead-CT5HGDMC.js → localDialogRead-FUXGZ57B.js} +1 -1
  104. package/{localRuntimeAdapter-4CC5KOMZ.js → localRuntimeAdapter-5CVSCXHI.js} +45 -43
  105. package/{machineCommands-FWTGWKAN.js → machineCommands-R7L4IBQL.js} +48 -46
  106. package/{machineWsRunDispatch-MJ5VOB7P.js → machineWsRunDispatch-KZHTW7DW.js} +46 -44
  107. package/{models-UUNO6DOL.js → models-PJBE6JDV.js} +2 -2
  108. package/{oauthTokenStore-PADKLNOC.js → oauthTokenStore-OEERZFUC.js} +2 -1
  109. package/package.json +1 -1
  110. package/{providerPresetApply-JGNMO2KX.js → providerPresetApply-HBBUUVJD.js} +6 -6
  111. package/{providerRegistry-33J3ZYFJ.js → providerRegistry-5LK2NXYE.js} +6 -6
  112. package/{readlineWorkspace-EQV6DNSG.js → readlineWorkspace-PDPEWRSG.js} +295 -137
  113. package/{runAgentClientLoop-W423XICK.js → runAgentClientLoop-QKV66PX5.js} +31 -30
  114. package/{runtimeDoctorCommands-NYBOTA6D.js → runtimeDoctorCommands-3VFVTGPI.js} +8 -7
  115. package/{secretCommands-N6CMCJDZ.js → secretCommands-MKU25CDP.js} +311 -3
  116. package/{settingThunks-YRYNPWJM.js → settingThunks-4WU7YE62.js} +2 -2
  117. package/{skillDiscovery-F3TMVQOJ.js → skillDiscovery-BKLWW2EZ.js} +2 -2
  118. package/{spaceCommands-J4OSJIYA.js → spaceCommands-VD3CZWXM.js} +27 -25
  119. package/{streamAgentChatTurn-BE3YIENW.js → streamAgentChatTurn-GM3UNSLS.js} +46 -43
  120. package/{tools-CXSCIKA4.js → tools-UJLEQBKI.js} +25 -24
  121. package/{tuiSummaryLlmCaller-FSOADMXK.js → tuiSummaryLlmCaller-73QO3HAD.js} +12 -12
  122. package/{updateCommands-KE6LP3QX.js → updateCommands-RVDAFHBT.js} +3 -3
  123. package/{updateDialogTitleAction-RCTYD5WV.js → updateDialogTitleAction-24QO27NT.js} +14 -13
  124. 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-BBGYSMUE.js";
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-TDTTBXCO.js";
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-QYOB7RVA.js";
55
+ } from "./chunk-DKZJJ2NQ.js";
57
56
  import {
58
57
  createDocState
59
- } from "./chunk-7XSZNV4Q.js";
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-BQZNJCW3.js";
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-DKLWAY3C.js";
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-OIVKFSFN.js";
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-R5HEP4LL.js";
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-NABJEYPJ.js";
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-76YUTLOT.js";
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-GC64WGMD.js";
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-UUNO6DOL.js");
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-E2PLNWCR.js");
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 response = await fetchImpl(`${args.serverBase.replace(/\/$/, "")}/rpc/getPublicAgents`, {
3432
- method: "POST",
3433
- headers: {
3434
- "Content-Type": "application/json",
3435
- ...args.token ? { Authorization: `Bearer ${args.token}` } : {}
3436
- },
3437
- body: JSON.stringify({ limit: Math.min(args.limit ?? 500, 500), summary: true })
3438
- });
3439
- if (!response.ok) throw new Error(`Public agent catalog request failed (${response.status})`);
3440
- const payload = await response.json();
3441
- const data = Array.isArray(payload?.data?.data) ? payload.data.data : Array.isArray(payload?.data) ? payload.data : Array.isArray(payload) ? payload : null;
3442
- if (!data) throw new Error("Public agent catalog returned an invalid response");
3443
- return data;
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 getRuntime2 = (thunkApi) => {
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 authHeaders2 = (token) => token ? { Authorization: `Bearer ${token}` } : {};
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 readRemoteRecord2(args) {
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: authHeaders2(args.token) }
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
- ...authHeaders2(args.token)
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 = getRuntime2(thunkApi);
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 = getRuntime2(thunkApi);
3613
- return readRemoteRecord2({
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 = getRuntime2(thunkApi);
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 = getRuntime2(thunkApi);
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
- ...authHeaders2(runtime.currentToken)
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 = getRuntime2(thunkApi);
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-AA7672TX.js");
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 = getRuntime2(thunkApi);
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
- ...authHeaders2(runtime.currentToken)
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 limit = clampNoloPositiveInteger(args?.limit, 100, 500);
3987
- const userRecords = await queryBestRecords(thunkApi, "agent" /* AGENT */, limit);
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 = getRuntime2(thunkApi);
3807
+ const runtime = getRuntime(thunkApi);
3990
3808
  const scope = resolveDiscoveryScope({ scope: args?.scope, publicOnly: args?.publicOnly });
3991
- const publicRecords = scope === "preferred" ? [] : await fetchPublicAgentsForDiscovery({
3992
- serverBase: runtime?.currentServer ?? "",
3993
- token: runtime?.currentToken,
3994
- limit
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
- unavailableAgents: discovery.unavailableAgents,
3923
+ // 顺序即序列化顺序:agents 在前(派发必需),大块说明字段在后。
3924
+ agents: discovery.agents,
4090
3925
  credentialGroups: discovery.credentialGroups,
4091
- agents: discovery.agents
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 = getRuntime2(thunkApi);
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 = getRuntime2(thunkApi);
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
- ...authHeaders2(runtime.currentToken)
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 = getRuntime2(thunkApi);
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 = getRuntime2(thunkApi);
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\u5199\u4E0D\u4E86\u6587\u4EF6\uFF0C\u8D77\u6C99\u76D2\u662F\u6D6A\u8D39\uFF09\u3002"
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
- { action: "status", runId: opts.runId, tailLines: opts.tailLines },
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: { found: true, ...run, ...logLines ? { logLines } : {} },
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-QDK5VGEH.js");
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-YRYNPWJM.js")).setSettings;
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-4YTWAGY7.js");
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,