nolo-cli 0.13.0 → 0.14.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.
Files changed (89) hide show
  1. package/{_executeModel-4F7VZR5U.js → _executeModel-KMUDFYY2.js} +27 -28
  2. package/{action-OTOWUMPW.js → action-N3KXFO5V.js} +7 -7
  3. package/{addContentAction-JGBUVR7K.js → addContentAction-4Z762DMR.js} +6 -6
  4. package/{addDialogAgentAction-V6CL2UCF.js → addDialogAgentAction-FALLEKPR.js} +5 -5
  5. package/{agentDeleteCommand-MMRSG6AB.js → agentDeleteCommand-AZDVM4HQ.js} +18 -18
  6. package/{agentEmailCommands-VQENDYL5.js → agentEmailCommands-AP6MX4XN.js} +34 -35
  7. package/{agentListCommands-2PZHIQ3I.js → agentListCommands-OJLOXSKL.js} +19 -19
  8. package/{agentMachineCommands-Q3I3VDWS.js → agentMachineCommands-G4T4GU42.js} +18 -18
  9. package/{agentRecordCommands-RY7CSPPL.js → agentRecordCommands-RNENEXQI.js} +32 -33
  10. package/{agentRunCommand-U76NZ2G6.js → agentRunCommand-2VTOTQWA.js} +33 -35
  11. package/{agentRuntimeLocal-QDJCBXM2.js → agentRuntimeLocal-4CM3VHR3.js} +16 -16
  12. package/{agentSlice-6JAJOU3X.js → agentSlice-BLHSFM3Q.js} +7 -7
  13. package/{authCommand-DMW336GT.js → authCommand-O7SL3WW5.js} +4 -4
  14. package/{chunk-MZHSAPZP.js → chunk-2Q5FTOQA.js} +52 -37
  15. package/{chunk-MG6BVV3T.js → chunk-33K5FKRL.js} +170 -98
  16. package/{chunk-JFANOO7I.js → chunk-3B2LFO6R.js} +6 -3
  17. package/{chunk-WVTBAALN.js → chunk-3FCSMQAC.js} +2 -2
  18. package/{chunk-4LG74DRG.js → chunk-4IJYA27C.js} +1 -1
  19. package/{chunk-O4FOPRCP.js → chunk-4UUJFFMK.js} +1 -1
  20. package/{chunk-CGDQDXKZ.js → chunk-5R73BS7Y.js} +1 -1
  21. package/{chunk-VKG4HXYV.js → chunk-A5V7UEZJ.js} +9 -9
  22. package/{chunk-DPFWKRHG.js → chunk-BHK5ZAW7.js} +2 -2
  23. package/{chunk-UWNSWEEC.js → chunk-BMZRD37B.js} +137 -55
  24. package/{chunk-IVAOVLM7.js → chunk-BOJVWKNA.js} +1 -1
  25. package/{chunk-Y5P3ZRGC.js → chunk-CPGQAMHA.js} +6 -6
  26. package/{chunk-YUMYYXPI.js → chunk-DQUUZXUZ.js} +16 -16
  27. package/{chunk-BTYBYAMP.js → chunk-GGQW6DXG.js} +2 -2
  28. package/{chunk-5V524MHX.js → chunk-HJAMZQFI.js} +14 -13
  29. package/{chunk-WPHL6ALY.js → chunk-JTINRTBT.js} +1 -1
  30. package/{chunk-FSUZIGIG.js → chunk-LVJFD5HS.js} +76 -62
  31. package/{chunk-XHQWJUW4.js → chunk-NJVPXLRY.js} +1 -1
  32. package/{chunk-H5Y2H2N6.js → chunk-OIMX7MM4.js} +1 -1
  33. package/{chunk-QAJWQTLB.js → chunk-ONJIZ7UF.js} +42 -30
  34. package/{chunk-5S4SWV5G.js → chunk-PB2DHBEQ.js} +1 -1
  35. package/{chunk-C3BFP57W.js → chunk-RTHJF57Z.js} +1 -1
  36. package/{chunk-QUHUVG6Y.js → chunk-RZALKBP4.js} +2 -2
  37. package/{chunk-JU7J7EAV.js → chunk-S5UACFUP.js} +56 -4
  38. package/{chunk-ARSC56DC.js → chunk-S6V2Y72C.js} +1 -1
  39. package/{chunk-KGI44L4E.js → chunk-SE4YDESE.js} +7 -7
  40. package/{chunk-QJSTNKJY.js → chunk-T3X232L6.js} +1 -1
  41. package/{chunk-OPM2DE2J.js → chunk-TLNEQI2R.js} +4 -4
  42. package/{chunk-VBSWHE5W.js → chunk-TQCONXQ3.js} +1 -1
  43. package/{chunk-LUKQQJFL.js → chunk-UW3WOIWJ.js} +1 -1
  44. package/{chunk-RWO5DGXI.js → chunk-V6VXDXGY.js} +3 -3
  45. package/{chunk-2BVGERJ2.js → chunk-VFGBWVXO.js} +106 -11
  46. package/{chunk-TA7VKOHU.js → chunk-VQFY3VXW.js} +6 -3
  47. package/{chunk-TQYYGE6G.js → chunk-XBZL4SGS.js} +3 -3
  48. package/{chunk-3MI5LDDU.js → chunk-XIDYAII4.js} +2 -2
  49. package/{createAgentAutomationAction-4NY4JLOK.js → createAgentAutomationAction-RIOI4YZI.js} +13 -13
  50. package/{createDialogAction-I5WUWFJ6.js → createDialogAction-QBHFBWM4.js} +14 -15
  51. package/{createPageAction-HFTIQ7TW.js → createPageAction-GHVLL7YQ.js} +13 -13
  52. package/{dbSlice-J4PUZ6Y5.js → dbSlice-7Q23HSWH.js} +5 -5
  53. package/{deleteFile-M7UNIUOO.js → deleteFile-WPWVZE4B.js} +3 -3
  54. package/{dialogCommands-SVXRJFZS.js → dialogCommands-BQDGLVMO.js} +19 -19
  55. package/{dialogSlice-35LA3ZRG.js → dialogSlice-VNKDTTHR.js} +13 -13
  56. package/{docCreateCommands-Z7RIAYKQ.js → docCreateCommands-K2MPMXYF.js} +18 -18
  57. package/{docDeleteCommands-NEYHUVZF.js → docDeleteCommands-NBAARB77.js} +19 -19
  58. package/{docReadCommands-I4US2SDE.js → docReadCommands-S3MO5RPS.js} +18 -18
  59. package/{docStore-3CP2IO6M.js → docStore-W4KEEPCW.js} +14 -14
  60. package/{docUpdateCommands-UU5HQBRP.js → docUpdateCommands-EHEI7FCE.js} +18 -18
  61. package/fetchMessages-KTNM7QAR.js +1 -1
  62. package/getPricing-UGDJHI7M.js +1 -1
  63. package/{handleSendMessageAction-FWTLQGOZ.js → handleSendMessageAction-6BFLKGWQ.js} +13 -13
  64. package/index.js +42 -42
  65. package/{machineCommands-NGE4ZARV.js → machineCommands-R27VIC5L.js} +33 -34
  66. package/{machineWsRunDispatch-FISQUBI2.js → machineWsRunDispatch-5JH6QGHK.js} +31 -32
  67. package/package.json +1 -1
  68. package/{read-2MIMRBZ2.js → read-SIWMJRHC.js} +3 -3
  69. package/{readDocTool-QHVGQHUJ.js → readDocTool-TCYJY4PP.js} +1 -1
  70. package/{readlineWorkspace-JK6P56TT.js → readlineWorkspace-RJ3TDGEK.js} +169 -57
  71. package/{removeDialogAgentAction-XUZYQBV4.js → removeDialogAgentAction-WKHZT6VJ.js} +7 -7
  72. package/{runAgentClientLoop-FP2K33ZO.js → runAgentClientLoop-6D7FP7CK.js} +24 -25
  73. package/{setDialogExtraReferencesAction-PTAIFKGM.js → setDialogExtraReferencesAction-GCI5QU6E.js} +5 -5
  74. package/{setPrimaryDialogAgentAction-HRFTDB44.js → setPrimaryDialogAgentAction-NRO57AS6.js} +7 -7
  75. package/{settingSlice-VGRJUSE5.js → settingSlice-FTWZ5ZHT.js} +8 -6
  76. package/{spaceCommands-GN73BCOB.js → spaceCommands-4R63UST3.js} +18 -18
  77. package/{spaceSlice-WTFNKOVA.js → spaceSlice-6PZEMRZM.js} +13 -13
  78. package/{streamAgentChatTurn-HBAQQVNK.js → streamAgentChatTurn-VW7433O6.js} +51 -42
  79. package/{tools-TPQYTLQZ.js → tools-MWNK4RKM.js} +18 -19
  80. package/{tuiSummaryLlmCaller-XDC7WG4K.js → tuiSummaryLlmCaller-2D65LKWM.js} +3 -3
  81. package/{updateDialogTitleAction-AWXNPUQJ.js → updateDialogTitleAction-3SKUPJIN.js} +13 -13
  82. package/chunk-HNW7IJSK.js +0 -71
  83. package/chunk-XENYHRUE.js +0 -104
  84. package/understanding-3CUQQ6SV.js +0 -271
  85. package/{chunk-PDL2AV3E.js → chunk-5CS33IBL.js} +3 -3
  86. package/{chunk-TSUJOM6N.js → chunk-DVRHHFEA.js} +3 -3
  87. package/{chunk-TOILAPLH.js → chunk-EHLHSX7R.js} +3 -3
  88. package/{chunk-TYPHUVK5.js → chunk-KTFJUPDW.js} +3 -3
  89. package/{chunk-NCGFB7NN.js → chunk-OIQPORYI.js} +3 -3
@@ -19,7 +19,7 @@ import {
19
19
  readPageFunc,
20
20
  readPageFunctionSchema,
21
21
  slateToSimplifiedMarkdown
22
- } from "./chunk-IVAOVLM7.js";
22
+ } from "./chunk-BOJVWKNA.js";
23
23
  import {
24
24
  markdownToSlate
25
25
  } from "./chunk-3LY4F7SV.js";
@@ -34,10 +34,10 @@ import {
34
34
  } from "./chunk-VF4K2QE6.js";
35
35
  import {
36
36
  createDocState
37
- } from "./chunk-TQYYGE6G.js";
37
+ } from "./chunk-XBZL4SGS.js";
38
38
  import {
39
39
  createDialogAction
40
- } from "./chunk-2BVGERJ2.js";
40
+ } from "./chunk-VFGBWVXO.js";
41
41
  import {
42
42
  buildSkillDocMarkdown,
43
43
  normalizeSkillBudgetTier,
@@ -76,13 +76,13 @@ import {
76
76
  updateContentCategory,
77
77
  updateContentTitle,
78
78
  updateStep
79
- } from "./chunk-FSUZIGIG.js";
79
+ } from "./chunk-LVJFD5HS.js";
80
80
  import {
81
81
  createAgent,
82
82
  runLlm,
83
83
  streamAgentChatTurn,
84
84
  updateAgent
85
- } from "./chunk-Y5P3ZRGC.js";
85
+ } from "./chunk-CPGQAMHA.js";
86
86
  import {
87
87
  NOLO_WORKSPACE_TOOL_NAMES,
88
88
  buildNoloSubjectRefQueryTarget,
@@ -101,7 +101,7 @@ import {
101
101
  } from "./chunk-B4KT7RN2.js";
102
102
  import {
103
103
  buildDatabaseFileContentUrl
104
- } from "./chunk-JFANOO7I.js";
104
+ } from "./chunk-3B2LFO6R.js";
105
105
  import {
106
106
  DEFAULT_MODEL
107
107
  } from "./chunk-OGGHETUE.js";
@@ -122,22 +122,24 @@ import {
122
122
  selectCurrentDialogKey,
123
123
  selectPendingRawDataByPageKey
124
124
  } from "./chunk-3ASDTTEI.js";
125
- import {
126
- toErrorMessage
127
- } from "./chunk-HNMXYYJR.js";
128
125
  import {
129
126
  compactWhitespace
130
127
  } from "./chunk-DWLEOOGR.js";
128
+ import {
129
+ toErrorMessage
130
+ } from "./chunk-HNMXYYJR.js";
131
131
  import {
132
132
  shareResourceAction
133
- } from "./chunk-DPFWKRHG.js";
133
+ } from "./chunk-BHK5ZAW7.js";
134
134
  import {
135
135
  AGENT_UPDATE_FIELD_NAMES,
136
+ SYSTEM_AGENT_CAPABILITIES,
137
+ SYSTEM_AGENT_CAPABILITY_IDS,
136
138
  normalizeAgentUpdateFieldList,
137
139
  selectAutoApproveSelfUpdateFields,
138
140
  selectCurrentServer,
139
141
  selectSyncServers
140
- } from "./chunk-JU7J7EAV.js";
142
+ } from "./chunk-S5UACFUP.js";
141
143
  import {
142
144
  asRecordOrEmpty
143
145
  } from "./chunk-KX6YBIHG.js";
@@ -145,7 +147,7 @@ import {
145
147
  addContentAction,
146
148
  createSpaceKey,
147
149
  normalizeSpaceId
148
- } from "./chunk-WVTBAALN.js";
150
+ } from "./chunk-3FCSMQAC.js";
149
151
  import {
150
152
  patch,
151
153
  read,
@@ -153,7 +155,7 @@ import {
153
155
  readAndWaitAction,
154
156
  toTimestampMs,
155
157
  write
156
- } from "./chunk-VKG4HXYV.js";
158
+ } from "./chunk-A5V7UEZJ.js";
157
159
  import {
158
160
  SEPARATOR,
159
161
  createAgentKey,
@@ -178,7 +180,7 @@ import {
178
180
  } from "./chunk-QSJ3HFEF.js";
179
181
  import {
180
182
  readAction
181
- } from "./chunk-XHQWJUW4.js";
183
+ } from "./chunk-NJVPXLRY.js";
182
184
  import {
183
185
  createAsyncThunk,
184
186
  getRuntimeServerContext,
@@ -186,16 +188,16 @@ import {
186
188
  selectIdentityToken,
187
189
  selectIdentityUserId,
188
190
  selectRuntimeSnapshot
189
- } from "./chunk-TSUJOM6N.js";
191
+ } from "./chunk-DVRHHFEA.js";
190
192
  import {
191
193
  isAbortError
192
194
  } from "./chunk-OOSFSFMA.js";
193
- import {
194
- isRecord
195
- } from "./chunk-KUG52IAP.js";
196
195
  import {
197
196
  asTrimmedString
198
197
  } from "./chunk-3EUW3WEO.js";
198
+ import {
199
+ isRecord
200
+ } from "./chunk-KUG52IAP.js";
199
201
  import {
200
202
  API_ENDPOINTS
201
203
  } from "./chunk-LCBAMY2M.js";
@@ -11211,15 +11213,9 @@ var TOOL_PACKS = {
11211
11213
  "fetchWebpage"
11212
11214
  ]
11213
11215
  };
11216
+ var SYSTEM_AGENT_CAPABILITY_PACKS = SYSTEM_AGENT_CAPABILITIES.map((capability) => ({ ...capability }));
11214
11217
  var CAPABILITY_PACKS = [
11215
- {
11216
- id: "web-search",
11217
- label: "\u8054\u7F51\u641C\u7D22",
11218
- description: "\u8BA9 agent \u80FD\u641C\u7D22\u4E92\u8054\u7F51\u3001\u6293\u53D6\u7F51\u9875\u5185\u5BB9\uFF0C\u83B7\u53D6\u6700\u65B0\u4FE1\u606F\u3002",
11219
- tools: ["exa_search", "fetchWebpage"],
11220
- defaultEnabled: true,
11221
- icon: "\u{1F310}"
11222
- },
11218
+ ...SYSTEM_AGENT_CAPABILITY_PACKS,
11223
11219
  {
11224
11220
  id: "long-term-memory",
11225
11221
  label: "\u957F\u671F\u8BB0\u5FC6",
@@ -11367,6 +11363,20 @@ var PACK_MANAGED_TOOLS = new Set(
11367
11363
  var DEFAULT_ENABLED_PACKS = CAPABILITY_PACKS.filter(
11368
11364
  (pack) => pack.defaultEnabled
11369
11365
  ).map((pack) => pack.id);
11366
+ var SYSTEM_BUILTIN_SKILL_PACK_IDS = SYSTEM_AGENT_CAPABILITY_IDS;
11367
+ function applySystemBuiltinSkillFilter(toolNames, systemBuiltinSkills) {
11368
+ if (!systemBuiltinSkills) return toolNames;
11369
+ const disabledToolSet = /* @__PURE__ */ new Set();
11370
+ for (const packId of SYSTEM_BUILTIN_SKILL_PACK_IDS) {
11371
+ const enabled = systemBuiltinSkills[packId];
11372
+ if (enabled === false) {
11373
+ const pack = CAPABILITY_PACK_BY_ID[packId];
11374
+ if (pack) pack.tools.forEach((t) => disabledToolSet.add(t));
11375
+ }
11376
+ }
11377
+ if (disabledToolSet.size === 0) return toolNames;
11378
+ return toolNames.filter((t) => !disabledToolSet.has(t));
11379
+ }
11370
11380
  function expandEnabledPacks(enabledPacks, explicitTools = []) {
11371
11381
  const packTools = (enabledPacks ?? []).map((id) => CAPABILITY_PACK_BY_ID[id]?.tools ?? []).flat();
11372
11382
  return [.../* @__PURE__ */ new Set([...packTools, ...explicitTools ?? []])];
@@ -14104,7 +14114,7 @@ async function deleteDialogsFunc(args, thunkApi) {
14104
14114
  const deletedDialogIds = [];
14105
14115
  const deletedDialogKeys = [];
14106
14116
  const failures = [];
14107
- const { deleteDialog } = await import("./dialogSlice-35LA3ZRG.js");
14117
+ const { deleteDialog } = await import("./dialogSlice-VNKDTTHR.js");
14108
14118
  for (const target of targets) {
14109
14119
  try {
14110
14120
  await thunkApi.dispatch(deleteDialog(target.dbKey)).unwrap();
@@ -14368,7 +14378,7 @@ var readSkillDocFunctionSchema = {
14368
14378
  }
14369
14379
  };
14370
14380
  async function readSkillDocFunc(args, thunkApi) {
14371
- const { buildReadDocResult } = await import("./readDocTool-QHVGQHUJ.js");
14381
+ const { buildReadDocResult } = await import("./readDocTool-TCYJY4PP.js");
14372
14382
  const id = args?.id ?? args?.doc ?? args?.docKey ?? args?.pageKey;
14373
14383
  if (typeof id !== "string" || !id.trim()) {
14374
14384
  throw new Error("readSkillDoc requires id or doc.");
@@ -19756,7 +19766,7 @@ var selectUserIdFromState = (state) => typeof state?.auth?.currentUser?.userId =
19756
19766
  var selectCurrentServerFromState = (state) => typeof state?.settings?.currentServer === "string" ? state.settings.currentServer : null;
19757
19767
  async function addImageContentToSpace(input) {
19758
19768
  const injectedAddContentAction = input.thunkApi?.extra?.addContentAction;
19759
- const addContentAction2 = typeof injectedAddContentAction === "function" ? injectedAddContentAction : (await import("./addContentAction-JGBUVR7K.js")).addContentAction;
19769
+ const addContentAction2 = typeof injectedAddContentAction === "function" ? injectedAddContentAction : (await import("./addContentAction-4Z762DMR.js")).addContentAction;
19760
19770
  await addContentAction2(
19761
19771
  {
19762
19772
  spaceId: input.spaceId,
@@ -20498,19 +20508,20 @@ var remotionRenderVideoFunc = async (args, thunkApi) => {
20498
20508
  };
20499
20509
  };
20500
20510
 
20501
- // packages/ai/tools/rememberMemoryTool.ts
20511
+ // packages/ai/tools/rememberMemoryToolSchema.ts
20502
20512
  var rememberMemoryFunctionSchema = {
20503
20513
  name: "rememberMemory",
20504
20514
  description: [
20505
- "\u5F53\u4F60\u5224\u65AD\u67D0\u6761\u7528\u6237\u504F\u597D\u3001\u7EA0\u6B63\u3001\u51B3\u7B56\u4E60\u60EF\u6216\u5F53\u524D Space \u5171\u8BC6\u503C\u5F97\u88AB\u957F\u671F\u8BB0\u4F4F\u65F6\uFF0C\u8C03\u7528\u672C\u5DE5\u5177\u5199\u5165\u4E00\u6761 memory\u3002",
20506
- "\u9ED8\u8BA4\u5148\u8BB0\u539F\u59CB\u4E8B\u4EF6\uFF0C\u4E0D\u8981\u628A\u4E00\u6B21\u6027\u4E34\u65F6\u8981\u6C42\u3001\u5F53\u524D\u4EFB\u52A1\u8FDB\u5EA6\u6216\u660E\u663E\u77ED\u671F\u4FE1\u606F\u5199\u8FDB\u53BB\u3002",
20515
+ "\u628A\u503C\u5F97\u957F\u671F\u8BB0\u4F4F\u7684\u7528\u6237\u504F\u597D\u3001\u7EA0\u6B63\u3001\u51B3\u7B56\u4E60\u60EF\u6216\u5F53\u524D Space \u5171\u8BC6\u5199\u6210\u4E00\u6761 memory\u3002",
20516
+ "\u9ED8\u8BA4\u503E\u5411\u4E8E\u8BB0\uFF1A\u7528\u6237\u8BF4\u51FA\u300C\u8BB0\u4F4F/\u8BB0\u5F97/\u522B\u5FD8\u4E86/\u4EE5\u540E\u90FD/\u522B\u518D/\u6211\u559C\u6B22/\u6211\u4E0D\u559C\u6B22/\u4E0B\u6B21\u300D\u8FD9\u7C7B\u8BDD\u65F6\uFF0C\u9ED8\u8BA4\u5C31\u8C03\u7528\u672C\u5DE5\u5177\uFF0C\u4E0D\u8981\u53CD\u590D\u81EA\u95EE\u662F\u5426\u591F\u683C\u3002",
20517
+ "\u4ECD\u7136\u4E0D\u8981\u8BB0\uFF1A\u4E00\u6B21\u6027\u4EFB\u52A1\u7EC6\u8282\u3001\u5F53\u524D\u4EFB\u52A1\u8FDB\u5EA6\u3001\u5F88\u5FEB\u8FC7\u671F\u7684\u4E8B\u5B9E\u3002",
20507
20518
  "\u53EA\u6709\u91CD\u590D\u51FA\u73B0\u7684\u53EF\u6267\u884C\u6D41\u7A0B/\u6392\u969C\u6B65\u9AA4\u624D\u4F20 kind=procedural\uFF1B\u4E00\u822C\u504F\u597D\u548C\u4E8B\u5B9E\u4FDD\u6301\u9ED8\u8BA4 episodic\u3002",
20508
20519
  "scope \u6309\u5185\u5BB9\u6027\u8D28\u9009\uFF0C\u4E0D\u56FA\u5B9A\u4F18\u5148\u67D0\u4E00\u5C42\uFF1A",
20509
20520
  " - Space \u534F\u4F5C\u7EA6\u5B9A/\u56E2\u961F\u89C4\u5219 \u2192 scope=space\uFF08\u5F53\u524D dialog \u7ED1\u5B9A space \u65F6\uFF09",
20510
20521
  " - \u7528\u6237\u4E2A\u4EBA\u8EAB\u4EFD\u6216\u7EAF\u4E2A\u4EBA\u504F\u597D \u2192 scope=auto\uFF08\u9ED8\u8BA4\u8BB0\u5230\u7528\u6237\uFF09",
20511
20522
  " - \u4E0E\u5F53\u524D Agent \u6302\u94A9\u7684\u6709\u6548\u505A\u6CD5 \u2192 scope=auto\uFF08runtime \u81EA\u52A8\u628A subject \u6807\u8BB0\u4E3A\u5F53\u524D Agent\uFF09",
20512
20523
  " - \u5F53\u524D\u4EFB\u52A1\u7684\u4E34\u65F6\u8FDB\u5EA6 \u2192 \u4E0D\u8981\u8C03\u7528\uFF0C\u8D70\u5BF9\u8BDD\u4E0A\u4E0B\u6587",
20513
- "\u4F18\u5148\u5199\u6210\u4E00\u53E5\u7B80\u6D01\u3001\u672A\u6765\u4ECD\u53EF\u7406\u89E3\u7684\u8BDD\uFF1B\u5982\u65E0\u5FC5\u8981\uFF0C\u4E0D\u8981\u9891\u7E41\u8C03\u7528\u3002"
20524
+ "\u5199\u6210\u4E00\u53E5\u7B80\u6D01\u3001\u672A\u6765\u4ECD\u53EF\u7406\u89E3\u7684\u8BDD\u3002\u9ED8\u8BA4\u9759\u9ED8\u6267\u884C\uFF0C\u4E0D\u7528\u5411\u7528\u6237\u6C47\u62A5\u5DF2\u8BB0\u4F4F\u3002"
20514
20525
  ].join("\n"),
20515
20526
  parameters: {
20516
20527
  type: "object",
@@ -20533,6 +20544,8 @@ var rememberMemoryFunctionSchema = {
20533
20544
  required: ["content"]
20534
20545
  }
20535
20546
  };
20547
+
20548
+ // packages/ai/tools/rememberMemoryTool.ts
20536
20549
  async function rememberMemoryFunc(args, thunkApi) {
20537
20550
  const state = thunkApi.getState();
20538
20551
  const spaceId = selectCurrentSpaceId(state) || void 0;
@@ -23241,7 +23254,7 @@ var executeToolRun = createAsyncThunk(
23241
23254
  if (!executionInput) {
23242
23255
  throw new Error(`ToolRun ${id} has no input to execute with.`);
23243
23256
  }
23244
- const { findToolExecutor: findToolExecutor2 } = await import("./tools-TPQYTLQZ.js");
23257
+ const { findToolExecutor: findToolExecutor2 } = await import("./tools-MWNK4RKM.js");
23245
23258
  const { executor } = findToolExecutor2(run.toolName);
23246
23259
  toolRunStarted({
23247
23260
  id: run.id,
@@ -23265,7 +23278,7 @@ var executeToolRun = createAsyncThunk(
23265
23278
  const latestState = thunkApi.getState();
23266
23279
  const userId = latestState.auth?.currentUser?.userId;
23267
23280
  if (userId) {
23268
- const { fetchUserSpaceMemberships } = await import("./spaceSlice-WTFNKOVA.js");
23281
+ const { fetchUserSpaceMemberships } = await import("./spaceSlice-6PZEMRZM.js");
23269
23282
  await thunkApi.dispatch(fetchUserSpaceMemberships(userId));
23270
23283
  }
23271
23284
  }
@@ -25668,7 +25681,7 @@ async function updateDocFunc(args, thunkApi) {
25668
25681
  updated_at: (/* @__PURE__ */ new Date()).toISOString()
25669
25682
  };
25670
25683
  await dispatch(write({ data: updatedPageData, customKey: id })).unwrap();
25671
- const { getDocState, applyExternalDocUpdate } = await import("./docStore-3CP2IO6M.js");
25684
+ const { getDocState, applyExternalDocUpdate } = await import("./docStore-W4KEEPCW.js");
25672
25685
  if (getDocState().pageKey === id) {
25673
25686
  applyExternalDocUpdate({
25674
25687
  slateData: finalSlateData,
@@ -25693,7 +25706,7 @@ async function updateDocFunc(args, thunkApi) {
25693
25706
  // packages/ai/tools/updateUserPreferenceProfileTool.ts
25694
25707
  async function dispatchSetSettings(thunkApi, changes) {
25695
25708
  const injectedSetSettings = thunkApi?.extra?.setSettings;
25696
- const setSettings = typeof injectedSetSettings === "function" ? injectedSetSettings : (await import("./settingSlice-VGRJUSE5.js")).setSettings;
25709
+ const setSettings = typeof injectedSetSettings === "function" ? injectedSetSettings : (await import("./settingSlice-FTWZ5ZHT.js")).setSettings;
25697
25710
  await thunkApi.dispatch(setSettings(changes)).unwrap();
25698
25711
  }
25699
25712
  var updateUserPreferenceProfileFunctionSchema = {
@@ -27905,6 +27918,7 @@ export {
27905
27918
  formatNotFoundRunCard,
27906
27919
  isAgentRunTerminalStatus,
27907
27920
  TOOL_PACKS,
27921
+ applySystemBuiltinSkillFilter,
27908
27922
  expandEnabledPacks,
27909
27923
  expandEnabledPackPromptPatches,
27910
27924
  appendEnabledPackPromptPatches,
@@ -27926,6 +27940,7 @@ export {
27926
27940
  waitForAbortableDelay,
27927
27941
  createSSEParser,
27928
27942
  formatAgentListCard,
27943
+ rememberMemoryFunctionSchema,
27929
27944
  TOOL_GROUP_META,
27930
27945
  toolQueryFunctionSchema,
27931
27946
  toolQueryFunc,
@@ -4,10 +4,10 @@ import {
4
4
  providerHttpFailure,
5
5
  readSseFrames,
6
6
  throwIfChatCompletionStreamFailed
7
- } from "./chunk-5S4SWV5G.js";
7
+ } from "./chunk-PB2DHBEQ.js";
8
8
  import {
9
9
  parseToolArgumentsJson
10
- } from "./chunk-TA7VKOHU.js";
10
+ } from "./chunk-VQFY3VXW.js";
11
11
  import {
12
12
  createThinkParserState,
13
13
  createToolCallAccumulator,
@@ -17,12 +17,12 @@ import {
17
17
  import {
18
18
  requiresBareImageUrl,
19
19
  toBareImageUrlMessages
20
- } from "./chunk-LUKQQJFL.js";
20
+ } from "./chunk-UW3WOIWJ.js";
21
21
  import {
22
22
  buildProviderAuthHeaders,
23
23
  buildProviderExecutionPlan,
24
24
  toOpenAiCompatibleMessages
25
- } from "./chunk-TYPHUVK5.js";
25
+ } from "./chunk-KTFJUPDW.js";
26
26
  import {
27
27
  canonicalizeToolName,
28
28
  createGlob,
@@ -46,15 +46,15 @@ import {
46
46
  import {
47
47
  asTrimmedLowercaseString
48
48
  } from "./chunk-QSJ3HFEF.js";
49
- import {
50
- isRecord
51
- } from "./chunk-KUG52IAP.js";
52
49
  import {
53
50
  asTrimmedString
54
51
  } from "./chunk-3EUW3WEO.js";
55
52
  import {
56
53
  asOptionalPositiveFiniteNumber
57
54
  } from "./chunk-U6VC4MU4.js";
55
+ import {
56
+ isRecord
57
+ } from "./chunk-KUG52IAP.js";
58
58
  import {
59
59
  normalizeServerOrigin
60
60
  } from "./chunk-CF7PE763.js";
@@ -1225,30 +1225,18 @@ function buildReadWorkspaceDescription(variant) {
1225
1225
  return "Read a UTF-8 text file inside the workspace.";
1226
1226
  }
1227
1227
  if (variant === "workflow") {
1228
- return "Read a UTF-8 text file inside the workspace after listFiles, globFiles, or searchFiles has narrowed the target. Use line ranges from searchFiles matches and tailLines for logs or generated output. Read the whole file only when the task truly needs all content or exact edit context.";
1228
+ return 'Read a UTF-8 text file inside the workspace after listFiles, globFiles, or searchFiles has narrowed the target. Use lines with a range from searchFiles matches, or lines: "-50" for logs and generated output. Read the whole file only when the task truly needs all content or exact edit context.';
1229
1229
  }
1230
1230
  if (variant === "antiShell") {
1231
1231
  return "Read a UTF-8 text file inside the workspace. Do not use execShell with cat/sed/head/tail for normal text reads when readFile can return the needed file or line range. Use searchFiles first for content search, then readFile only the relevant lines when possible.";
1232
1232
  }
1233
- return "Read a UTF-8 text file inside the workspace. Read before editing when you need exact text for editFile. For discovery or classification tasks, avoid batch-reading every candidate; report candidate paths first, or read only one to three representative files with maxLines or focused line ranges. Use line ranges for large code, docs, data, configs, and logs after searchFiles returns line numbers. Read the whole file only when the task truly needs all content or exact edit context.";
1233
+ return "Read a UTF-8 text file inside the workspace. Read before editing when you need exact text for editFile. For discovery or classification tasks, avoid batch-reading every candidate; report candidate paths first, or read only one to three representative files with a small lines count. Use lines ranges for large code, docs, data, configs, and logs after searchFiles returns line numbers. Read the whole file only when the task truly needs all content or exact edit context.";
1234
1234
  }
1235
1235
  function buildReadWorkspaceParameters(variant) {
1236
1236
  const path = buildWorkspacePathProperty();
1237
- const startLine = {
1238
- type: "integer",
1239
- description: "1-based first line to return. Use with endLine or maxLines after searchFiles gives a line number."
1240
- };
1241
- const endLine = {
1242
- type: "integer",
1243
- description: "1-based last line to return, inclusive."
1244
- };
1245
- const maxLines = {
1246
- type: "integer",
1247
- description: "Maximum number of lines to return starting at startLine, or from the start of the file when startLine is omitted. Use for lightweight previews of candidate configs, docs, data, and logs instead of reading many whole files. When the user gives a read/preview budget, each readFile preview consumes one budget slot."
1248
- };
1249
- const tailLines = {
1250
- type: "integer",
1251
- description: "Return only the last N lines, useful for logs and generated text."
1237
+ const lines = {
1238
+ type: "string",
1239
+ description: 'Which lines to return: "40-120" for a range (1-based, inclusive), "120-" from a line to the end, "-50" for the last N lines (logs, generated output), "50" for the first N. Omit to read the whole file. Use a range after searchFiles gives a line number, and a small count to preview candidates instead of reading many whole files. When the user gives a read/preview budget, each readFile preview consumes one budget slot.'
1252
1240
  };
1253
1241
  if (variant === "minimal") {
1254
1242
  return {
@@ -1257,27 +1245,9 @@ function buildReadWorkspaceParameters(variant) {
1257
1245
  required: ["path"]
1258
1246
  };
1259
1247
  }
1260
- if (variant === "rich") {
1261
- return {
1262
- type: "object",
1263
- properties: {
1264
- path,
1265
- startLine,
1266
- endLine,
1267
- maxLines,
1268
- tailLines
1269
- },
1270
- required: ["path"]
1271
- };
1272
- }
1273
1248
  return {
1274
1249
  type: "object",
1275
- properties: {
1276
- path,
1277
- startLine,
1278
- endLine,
1279
- maxLines
1280
- },
1250
+ properties: { path, lines },
1281
1251
  required: ["path"]
1282
1252
  };
1283
1253
  }
@@ -2014,31 +1984,120 @@ function readExpectedReplacementCount(args) {
2014
1984
  }
2015
1985
  return value;
2016
1986
  }
2017
- function readPositiveIntegerArg(args) {
2018
- if (args.value === void 0) return void 0;
1987
+ var READ_FILE_SLICE_FALLBACK_LINES = 200;
1988
+ var LEGACY_SLICE_ARG_NAMES = ["startLine", "endLine", "maxLines", "tailLines"];
1989
+ function isAbsentArg(value) {
1990
+ return value === void 0 || value === null;
1991
+ }
1992
+ function describeRejectedArgValue(value) {
1993
+ if (typeof value === "string") return JSON.stringify(value);
1994
+ if (typeof value === "number" || typeof value === "boolean") {
1995
+ return String(value);
1996
+ }
1997
+ if (Array.isArray(value)) return "an array";
1998
+ return `a value of type ${typeof value}`;
1999
+ }
2000
+ function readIntegerArg(args) {
2001
+ if (isAbsentArg(args.value)) return {};
2002
+ const min = args.min ?? 1;
2019
2003
  const value = Number(args.value);
2020
- if (!Number.isInteger(value) || value < 1) {
2021
- throw new Error(`${args.name} must be a positive integer.`);
2004
+ if (!Number.isInteger(value) || value < min) {
2005
+ const expected = min === 0 ? "a non-negative integer" : "a positive integer";
2006
+ return {
2007
+ warning: `Ignored ${args.name}: expected ${expected}, received ${describeRejectedArgValue(args.value)}.`
2008
+ };
2022
2009
  }
2023
- return args.max ? Math.min(value, args.max) : value;
2010
+ return { value: args.max ? Math.min(value, args.max) : value };
2024
2011
  }
2025
- function readFileSliceArgs(args) {
2026
- const startLine = readPositiveIntegerArg({ value: args.startLine, name: "startLine" });
2027
- const endLine = readPositiveIntegerArg({ value: args.endLine, name: "endLine" });
2028
- const maxLines = readPositiveIntegerArg({ value: args.maxLines, name: "maxLines", max: 2e3 });
2029
- const tailLines = readPositiveIntegerArg({ value: args.tailLines, name: "tailLines", max: 2e3 });
2030
- if (tailLines !== void 0 && (startLine !== void 0 || endLine !== void 0)) {
2031
- throw new Error("tailLines cannot be combined with startLine or endLine.");
2012
+ function collectIntegerArg(args) {
2013
+ const { value, warning } = readIntegerArg(args);
2014
+ if (warning) {
2015
+ args.warnings.push(
2016
+ args.fallback === void 0 ? warning : `${warning} Using ${args.fallback} instead.`
2017
+ );
2032
2018
  }
2033
- if (endLine !== void 0 && startLine !== void 0 && endLine < startLine) {
2034
- throw new Error("endLine must be greater than or equal to startLine.");
2019
+ return value ?? args.fallback;
2020
+ }
2021
+ var LINES_ARG_SYNTAX = '"40-120", "120-", "-50", or "50"';
2022
+ var LINES_RANGE_FORMAT = /^(\d+)?\s*-\s*(\d+)?$/;
2023
+ function parseLinesArg(value) {
2024
+ const text = typeof value === "string" ? value.trim() : "";
2025
+ if (!text) {
2026
+ return {
2027
+ warning: `Ignored lines: expected ${LINES_ARG_SYNTAX}, received ${describeRejectedArgValue(value)}.`
2028
+ };
2035
2029
  }
2036
- return {
2037
- startLine,
2038
- endLine,
2039
- maxLines,
2040
- tailLines
2030
+ const reject = {
2031
+ warning: `Ignored lines: expected ${LINES_ARG_SYNTAX}, received ${JSON.stringify(text)}.`
2032
+ };
2033
+ if (/^\d+$/.test(text)) {
2034
+ const count = Number(text);
2035
+ return count > 0 ? { slice: { maxLines: Math.min(count, 2e3) } } : reject;
2036
+ }
2037
+ const range = LINES_RANGE_FORMAT.exec(text);
2038
+ if (!range) return reject;
2039
+ const [, rawStart, rawEnd] = range;
2040
+ if (rawStart === void 0 && rawEnd === void 0) return reject;
2041
+ if (rawStart === void 0) {
2042
+ const tail = Number(rawEnd);
2043
+ return tail > 0 ? { slice: { tailLines: Math.min(tail, 2e3) } } : reject;
2044
+ }
2045
+ const startLine = Number(rawStart);
2046
+ if (startLine < 1) return reject;
2047
+ if (rawEnd === void 0) return { slice: { startLine } };
2048
+ const endLine = Number(rawEnd);
2049
+ if (endLine < startLine) {
2050
+ return {
2051
+ warning: `Ignored lines ${JSON.stringify(text)}: the end line must be greater than or equal to the start line.`
2052
+ };
2053
+ }
2054
+ return { slice: { startLine, endLine } };
2055
+ }
2056
+ function readFileSliceArgs(args) {
2057
+ const warnings = [];
2058
+ const legacyUsed = LEGACY_SLICE_ARG_NAMES.filter((name) => !isAbsentArg(args[name]));
2059
+ const withFallback = (slice) => {
2060
+ warnings.push(
2061
+ `No usable line range remained; returned the first ${READ_FILE_SLICE_FALLBACK_LINES} lines instead of the whole file.`
2062
+ );
2063
+ return { ...slice, maxLines: READ_FILE_SLICE_FALLBACK_LINES, warnings };
2041
2064
  };
2065
+ if (!isAbsentArg(args.lines)) {
2066
+ if (legacyUsed.length > 0) {
2067
+ warnings.push(`Ignored ${legacyUsed.join(", ")}: superseded by lines.`);
2068
+ }
2069
+ const { slice, warning } = parseLinesArg(args.lines);
2070
+ if (warning) warnings.push(warning);
2071
+ return slice ? { ...slice, warnings } : withFallback({});
2072
+ }
2073
+ if (legacyUsed.length === 0) return { warnings };
2074
+ warnings.push(
2075
+ `${legacyUsed.join(", ")} ${legacyUsed.length > 1 ? "are" : "is"} deprecated; use lines instead (${LINES_ARG_SYNTAX}).`
2076
+ );
2077
+ const take = (name, max) => collectIntegerArg({ value: args[name], name, max, warnings });
2078
+ const resolved = {
2079
+ startLine: take("startLine"),
2080
+ endLine: take("endLine"),
2081
+ maxLines: take("maxLines", 2e3),
2082
+ tailLines: take("tailLines", 2e3)
2083
+ };
2084
+ if (resolved.endLine !== void 0 && resolved.startLine !== void 0 && resolved.endLine < resolved.startLine) {
2085
+ warnings.push(
2086
+ `Ignored endLine (${resolved.endLine}): endLine must be greater than or equal to startLine (${resolved.startLine}).`
2087
+ );
2088
+ resolved.endLine = void 0;
2089
+ }
2090
+ if (resolved.tailLines !== void 0 && (resolved.startLine !== void 0 || resolved.endLine !== void 0)) {
2091
+ warnings.push(
2092
+ `Ignored tailLines (${resolved.tailLines}): tailLines cannot be combined with startLine or endLine.`
2093
+ );
2094
+ resolved.tailLines = void 0;
2095
+ }
2096
+ const nothingUsable = LEGACY_SLICE_ARG_NAMES.every((name) => resolved[name] === void 0);
2097
+ return nothingUsable ? withFallback(resolved) : { ...resolved, warnings };
2098
+ }
2099
+ function buildReadFileSliceHint(totalLines) {
2100
+ return `File has ${totalLines} lines. Use lines: ${LINES_ARG_SYNTAX}, or omit it for the whole file.`;
2042
2101
  }
2043
2102
  function splitTextLines(content) {
2044
2103
  const lines = content.split(/\r?\n/);
@@ -2128,36 +2187,42 @@ function requireWorkspaceGlobPattern(args) {
2128
2187
  if (!pattern) throw new Error("globFiles requires a non-empty pattern.");
2129
2188
  return pattern;
2130
2189
  }
2131
- function readWorkspaceMaxResults(args, defaultValue) {
2132
- if (args.maxResults === void 0) return defaultValue;
2133
- const value = Number(args.maxResults);
2134
- if (!Number.isInteger(value) || value < 1) {
2135
- throw new Error("maxResults must be a positive integer.");
2136
- }
2137
- return Math.min(value, 500);
2138
- }
2139
- function readWorkspaceMaxDepth(args) {
2140
- if (args.maxDepth === void 0) return 1;
2141
- const value = Number(args.maxDepth);
2142
- if (!Number.isInteger(value) || value < 1) {
2143
- throw new Error("maxDepth must be a positive integer.");
2144
- }
2145
- return Math.min(value, 10);
2190
+ function readWorkspaceMaxResults(args, warnings, defaultValue) {
2191
+ return collectIntegerArg({
2192
+ value: args.maxResults,
2193
+ name: "maxResults",
2194
+ max: 500,
2195
+ fallback: defaultValue,
2196
+ warnings
2197
+ });
2146
2198
  }
2147
- function readWorkspaceEntryType(args) {
2148
- if (args.entryType === void 0) return "all";
2149
- if (args.entryType === "all" || args.entryType === "files" || args.entryType === "directories") {
2150
- return args.entryType;
2151
- }
2152
- throw new Error("entryType must be one of all, files, or directories.");
2199
+ function readWorkspaceMaxDepth(args, warnings) {
2200
+ return collectIntegerArg({
2201
+ value: args.maxDepth,
2202
+ name: "maxDepth",
2203
+ max: 10,
2204
+ fallback: 1,
2205
+ warnings
2206
+ });
2153
2207
  }
2154
- function readWorkspaceContextLines(args) {
2155
- if (args.contextLines === void 0) return void 0;
2156
- const value = Number(args.contextLines);
2157
- if (!Number.isInteger(value) || value < 0) {
2158
- throw new Error("contextLines must be a non-negative integer.");
2159
- }
2160
- return Math.min(value, 20);
2208
+ var WORKSPACE_ENTRY_TYPES = ["all", "files", "directories"];
2209
+ function readWorkspaceEntryType(args, warnings) {
2210
+ if (isAbsentArg(args.entryType)) return "all";
2211
+ const entryType = WORKSPACE_ENTRY_TYPES.find((value) => value === args.entryType);
2212
+ if (entryType) return entryType;
2213
+ warnings.push(
2214
+ `Ignored entryType: expected one of ${WORKSPACE_ENTRY_TYPES.join(", ")}, received ${describeRejectedArgValue(args.entryType)}. Using all instead.`
2215
+ );
2216
+ return "all";
2217
+ }
2218
+ function readWorkspaceContextLines(args, warnings) {
2219
+ return collectIntegerArg({
2220
+ value: args.contextLines,
2221
+ name: "contextLines",
2222
+ min: 0,
2223
+ max: 20,
2224
+ warnings
2225
+ });
2161
2226
  }
2162
2227
  function readWorkspaceExcludeGlobs(args) {
2163
2228
  if (args.exclude === void 0) return [];
@@ -2632,7 +2697,7 @@ async function resolveLocalWorkspaceToolPath(args) {
2632
2697
  async function readFileTool(args) {
2633
2698
  const parsed = parseWorkspaceToolArguments(args.call.arguments);
2634
2699
  const requestedPath = requireWorkspaceToolPath(parsed);
2635
- const sliceArgs = readFileSliceArgs(parsed);
2700
+ const { warnings, ...sliceArgs } = readFileSliceArgs(parsed);
2636
2701
  const absolutePath = await resolveLocalWorkspaceToolPath({
2637
2702
  workspaceRoot: args.workspaceRoot,
2638
2703
  requestedPath,
@@ -2659,6 +2724,7 @@ async function readFileTool(args) {
2659
2724
  truncated: sliced.truncated,
2660
2725
  ...sliceArgs.maxLines ? { maxLines: sliceArgs.maxLines } : {},
2661
2726
  ...sliceArgs.tailLines ? { tailLines: sliceArgs.tailLines } : {},
2727
+ ...warnings.length ? { warnings: [...warnings, buildReadFileSliceHint(sliced.totalLines)] } : {},
2662
2728
  ...activity ? { activity } : {}
2663
2729
  }
2664
2730
  };
@@ -2789,10 +2855,11 @@ async function listWorkspaceEntries(args) {
2789
2855
  }
2790
2856
  async function listFilesTool(args) {
2791
2857
  const parsed = parseWorkspaceToolArguments(args.call.arguments);
2858
+ const warnings = [];
2792
2859
  const requestedPath = readWorkspacePathAlias(parsed) ?? ".";
2793
- const maxDepth = readWorkspaceMaxDepth(parsed);
2794
- const maxResults = readWorkspaceMaxResults(parsed);
2795
- const entryType = readWorkspaceEntryType(parsed);
2860
+ const maxDepth = readWorkspaceMaxDepth(parsed, warnings);
2861
+ const maxResults = readWorkspaceMaxResults(parsed, warnings);
2862
+ const entryType = readWorkspaceEntryType(parsed, warnings);
2796
2863
  const dirPath = await resolveLocalWorkspaceToolPath({
2797
2864
  workspaceRoot: args.workspaceRoot,
2798
2865
  requestedPath,
@@ -2816,16 +2883,18 @@ async function listFilesTool(args) {
2816
2883
  limitedByMaxResults: listed.truncated,
2817
2884
  limitedByMaxDepth: listed.limitedByMaxDepth,
2818
2885
  visitedEntries: listed.visitedEntries,
2819
- ...maxResults ? { maxResults } : {}
2886
+ ...maxResults ? { maxResults } : {},
2887
+ ...warnings.length ? { warnings } : {}
2820
2888
  }
2821
2889
  };
2822
2890
  }
2823
2891
  async function searchFilesTool(args) {
2824
2892
  const parsed = parseWorkspaceToolArguments(args.call.arguments);
2893
+ const warnings = [];
2825
2894
  const query = requireWorkspaceSearchQuery(parsed);
2826
2895
  const exclude = readWorkspaceExcludeGlobs(parsed);
2827
- const maxResults = readWorkspaceMaxResults(parsed, DEFAULT_SEARCH_MAX_RESULTS);
2828
- const contextLines = readWorkspaceContextLines(parsed);
2896
+ const maxResults = readWorkspaceMaxResults(parsed, warnings, DEFAULT_SEARCH_MAX_RESULTS);
2897
+ const contextLines = readWorkspaceContextLines(parsed, warnings);
2829
2898
  const literal = parsed.literal === true;
2830
2899
  const caseSensitive = parsed.caseSensitive === false ? false : true;
2831
2900
  const requestedPath = readWorkspacePathAlias(parsed) ?? ".";
@@ -2983,6 +3052,7 @@ async function searchFilesTool(args) {
2983
3052
  ...maxResults ? { maxResults } : {},
2984
3053
  exitCode: result.exitCode,
2985
3054
  searchEngine,
3055
+ ...warnings.length ? { warnings } : {},
2986
3056
  ...extractActivity(parsed) ? { activity: extractActivity(parsed) } : {}
2987
3057
  }
2988
3058
  };
@@ -3099,9 +3169,10 @@ async function scanWorkspaceTextMatches(args) {
3099
3169
  }
3100
3170
  async function globFilesTool(args) {
3101
3171
  const parsed = parseWorkspaceToolArguments(args.call.arguments);
3172
+ const warnings = [];
3102
3173
  const pattern = requireWorkspaceGlobPattern(parsed);
3103
3174
  const exclude = readWorkspaceExcludeGlobs(parsed);
3104
- const maxResults = readWorkspaceMaxResults(parsed);
3175
+ const maxResults = readWorkspaceMaxResults(parsed, warnings);
3105
3176
  const requestedPath = readWorkspacePathAlias(parsed) ?? ".";
3106
3177
  const includeIgnored = parsed.includeIgnored === true;
3107
3178
  const searchPath = await resolveLocalWorkspaceToolPath({
@@ -3205,6 +3276,7 @@ async function globFilesTool(args) {
3205
3276
  ...maxResults ? { maxResults } : {},
3206
3277
  exitCode,
3207
3278
  searchEngine,
3279
+ ...warnings.length ? { warnings } : {},
3208
3280
  ...activity ? { activity } : {}
3209
3281
  }
3210
3282
  };