nolo-cli 0.16.0-alpha.12 → 0.16.0-alpha.14

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 (69) hide show
  1. package/{_executeModel-LGHYA5XS.js → _executeModel-UU2JO5OB.js} +16 -15
  2. package/{agentDeleteCommand-PBIUC4FT.js → agentDeleteCommand-L6JRXPYK.js} +10 -10
  3. package/{agentEmailCommands-KC2QCPQV.js → agentEmailCommands-FE3GY3T5.js} +19 -18
  4. package/{agentListCommands-N64PHBXM.js → agentListCommands-ZWSAIC4W.js} +11 -11
  5. package/{agentMachineCommands-P7S5WAVA.js → agentMachineCommands-VWQ2GZBY.js} +10 -10
  6. package/{agentRecordCommands-JKZR2TZJ.js → agentRecordCommands-PYVZMRZM.js} +19 -18
  7. package/{agentRunCommand-2ELKCBWR.js → agentRunCommand-3ADJ2J5U.js} +24 -20
  8. package/{agentRunControl-6ADXVYMR.js → agentRunControl-YVLQ4BW5.js} +24 -1
  9. package/{agentRuntimeLocal-T6YECTNF.js → agentRuntimeLocal-LXTR6SAU.js} +7 -7
  10. package/{agentSlice-NXLMDKR7.js → agentSlice-TI6ECUGN.js} +1 -1
  11. package/{appDeleteCommands-D6B6Z4ZQ.js → appDeleteCommands-QIS37SXE.js} +11 -11
  12. package/{appDeployCommands-YMO5FK4T.js → appDeployCommands-WBHB7T5B.js} +11 -11
  13. package/{appDeployStatusCommands-EO5DWWPQ.js → appDeployStatusCommands-A3OUV6GO.js} +11 -11
  14. package/{appGetCommands-6SMZ3URQ.js → appGetCommands-LCVYIH63.js} +11 -11
  15. package/{appListCommands-RZXSWR2G.js → appListCommands-PC7QOBUO.js} +11 -11
  16. package/{chunk-4LXOVZ4W.js → chunk-2OK7P5XF.js} +54 -13
  17. package/{chunk-MSA4JAOZ.js → chunk-2ZLEOGS5.js} +1 -1
  18. package/{chunk-KKY4B2Q2.js → chunk-4PWB7JRR.js} +4 -1
  19. package/{chunk-VHXXRWNL.js → chunk-5QJFYG2N.js} +15 -5
  20. package/{chunk-F3UOACU4.js → chunk-64IEIMN4.js} +1 -1
  21. package/{chunk-XEWUC53Z.js → chunk-6IGLIDDE.js} +21 -9
  22. package/{chunk-AS3ZQ3O2.js → chunk-7OBMZCRD.js} +1 -1
  23. package/{chunk-QLUFR47U.js → chunk-AL2V7U3E.js} +1 -1
  24. package/{chunk-22NGXGN3.js → chunk-BOBNE3XT.js} +2 -2
  25. package/{chunk-MYMMNKYL.js → chunk-E5CLOOG5.js} +153 -6
  26. package/{chunk-ZXQ52OY2.js → chunk-ECGTEOC2.js} +3 -3
  27. package/chunk-FKXFCYVO.js +221 -0
  28. package/{chunk-6KBBMW4D.js → chunk-FTNTMGXT.js} +1 -1
  29. package/{chunk-6CRACQXW.js → chunk-GFPESFS6.js} +2 -2
  30. package/{chunk-47QUPRHO.js → chunk-GM37ZF7R.js} +2 -2
  31. package/{chunk-A7O4KKLZ.js → chunk-HGDFFA6T.js} +2 -2
  32. package/{chunk-C4MMO7W4.js → chunk-NZBK3ZET.js} +1 -1
  33. package/{chunk-JTMNCCWF.js → chunk-OSIJVBXP.js} +2 -2
  34. package/{chunk-OVBVEXZ7.js → chunk-PFW2ZEON.js} +53 -1
  35. package/{chunk-BXXECNBU.js → chunk-Q6B6XJBG.js} +15 -6
  36. package/{chunk-GPELDE6I.js → chunk-SOW2GCA5.js} +1 -1
  37. package/{chunk-HSASSW4L.js → chunk-TUWPYUVR.js} +7 -7
  38. package/{chunk-EQTZPEID.js → chunk-U3DCTSPN.js} +31 -49
  39. package/{chunk-D4NCEGGR.js → chunk-URVWRKFU.js} +166 -242
  40. package/{chunk-WBA6SIBB.js → chunk-UUDRNDC7.js} +1 -1
  41. package/{chunk-2WXMU64E.js → chunk-W63ZTRQU.js} +3 -3
  42. package/{chunk-ZH62XNZE.js → chunk-W6OKITU6.js} +678 -39
  43. package/{chunk-PU4LXVAC.js → chunk-XG7CSGP3.js} +1 -1
  44. package/{chunk-XRSPI6CP.js → chunk-YZXEEGKV.js} +1 -1
  45. package/{chunk-RIF3XLXK.js → chunk-ZDDHKIWB.js} +8 -4
  46. package/{createAgentAutomationAction-RKWIMKHW.js → createAgentAutomationAction-N4ZB7VX2.js} +3 -3
  47. package/{createDialogAction-VN7MEBS3.js → createDialogAction-KF6HXCCZ.js} +4 -4
  48. package/{createPageAction-JBUWBHHC.js → createPageAction-FXWSJONZ.js} +3 -3
  49. package/{dialogCommands-DFY5HJ6M.js → dialogCommands-ULS6HV5V.js} +11 -11
  50. package/{dialogSlice-NNYBU35K.js → dialogSlice-K32QLYS7.js} +3 -3
  51. package/{docCreateCommands-5L76YTI2.js → docCreateCommands-RZTRTRU4.js} +10 -10
  52. package/{docDeleteCommands-3GASP3VR.js → docDeleteCommands-FU36A663.js} +11 -11
  53. package/{docReadCommands-ALA77AZM.js → docReadCommands-IX4JXD4X.js} +10 -10
  54. package/{docStore-DR22GGF3.js → docStore-L6HBNJ3R.js} +4 -4
  55. package/{docUpdateCommands-6AZGXE5M.js → docUpdateCommands-W4OCR55Z.js} +10 -10
  56. package/{handleSendMessageAction-FHITDM7H.js → handleSendMessageAction-MFKKZXV7.js} +3 -3
  57. package/index.js +45 -45
  58. package/{machineCommands-3B4IHHVK.js → machineCommands-4MFLZERH.js} +18 -17
  59. package/{machineWsRunDispatch-AXZ6OL3V.js → machineWsRunDispatch-AAHRNKIR.js} +18 -17
  60. package/package.json +1 -1
  61. package/{readlineWorkspace-DBZCXS7Y.js → readlineWorkspace-7OPITHTN.js} +38 -29
  62. package/{runAgentClientLoop-AB7PQ3TB.js → runAgentClientLoop-HRWV7KE2.js} +12 -11
  63. package/{setPrimaryDialogAgentAction-IIVDCY5C.js → setPrimaryDialogAgentAction-57GRIGX5.js} +16 -8
  64. package/{skillDiscovery-6M2BZUFN.js → skillDiscovery-KJWT7JBU.js} +3 -3
  65. package/{spaceCommands-AB2D7A2R.js → spaceCommands-GMMQTMHK.js} +10 -10
  66. package/{spaceSlice-TEJDCU6A.js → spaceSlice-V2P5TTQU.js} +3 -3
  67. package/{streamAgentChatTurn-NZ3HLAXS.js → streamAgentChatTurn-ZANOYOUR.js} +64 -43
  68. package/{tools-M4USUF3R.js → tools-YHZP6NXU.js} +8 -7
  69. package/{updateDialogTitleAction-SMPQVKWT.js → updateDialogTitleAction-IKTPGPPE.js} +3 -3
@@ -15,7 +15,7 @@ import {
15
15
  } from "./chunk-KQHGZWSV.js";
16
16
  import {
17
17
  createDocState
18
- } from "./chunk-6CRACQXW.js";
18
+ } from "./chunk-GFPESFS6.js";
19
19
  import {
20
20
  readDocFunc,
21
21
  readDocFunctionSchema,
@@ -37,7 +37,7 @@ import {
37
37
  } from "./chunk-VF4K2QE6.js";
38
38
  import {
39
39
  createDialogAction
40
- } from "./chunk-BXXECNBU.js";
40
+ } from "./chunk-Q6B6XJBG.js";
41
41
  import {
42
42
  buildSkillDocMarkdown,
43
43
  normalizeSkillBudgetTier,
@@ -63,6 +63,8 @@ import {
63
63
  instance,
64
64
  loadTableRows,
65
65
  normalizeAppRouteId,
66
+ resolveDialogMemorySubjectId,
67
+ resolveDialogRuntimeAgentKey,
66
68
  selectAllMemberSpaces,
67
69
  selectAllMsgs,
68
70
  selectCurrentDialogConfig,
@@ -76,13 +78,13 @@ import {
76
78
  updateContentCategory,
77
79
  updateContentTitle,
78
80
  updateStep
79
- } from "./chunk-4LXOVZ4W.js";
81
+ } from "./chunk-2OK7P5XF.js";
80
82
  import {
81
83
  createAgent,
82
84
  runLlm,
83
85
  streamAgentChatTurn,
84
86
  updateAgent
85
- } from "./chunk-ZXQ52OY2.js";
87
+ } from "./chunk-ECGTEOC2.js";
86
88
  import {
87
89
  NOLO_WORKSPACE_TOOL_NAMES,
88
90
  buildNoloSubjectRefQueryTarget,
@@ -98,10 +100,10 @@ import {
98
100
  redactAgentRecordForWorkspaceTool,
99
101
  resolveNoloDialogInput,
100
102
  verifyNoloDialogSubjectRefQuery
101
- } from "./chunk-JTMNCCWF.js";
103
+ } from "./chunk-OSIJVBXP.js";
102
104
  import {
103
105
  buildDatabaseFileContentUrl
104
- } from "./chunk-OVBVEXZ7.js";
106
+ } from "./chunk-PFW2ZEON.js";
105
107
  import {
106
108
  DEFAULT_MODEL
107
109
  } from "./chunk-HQPG2PIV.js";
@@ -125,6 +127,14 @@ import {
125
127
  import {
126
128
  compactWhitespace
127
129
  } from "./chunk-DWLEOOGR.js";
130
+ import {
131
+ TASK_PREVIEW_MAX,
132
+ formatListRunsCard,
133
+ formatStartRunCard,
134
+ formatStatusRunCard,
135
+ formatStopRunCard,
136
+ resolveRunLabel
137
+ } from "./chunk-FKXFCYVO.js";
128
138
  import {
129
139
  toErrorMessage
130
140
  } from "./chunk-HNMXYYJR.js";
@@ -153,6 +163,7 @@ import {
153
163
  read,
154
164
  readAndWait,
155
165
  readAndWaitAction,
166
+ selectById,
156
167
  toTimestampMs,
157
168
  write
158
169
  } from "./chunk-3S2VOMIF.js";
@@ -11230,8 +11241,8 @@ var CAPABILITY_PACKS = [
11230
11241
  {
11231
11242
  id: "long-term-memory",
11232
11243
  label: "\u957F\u671F\u8BB0\u5FC6",
11233
- description: "\u8BA9 agent \u80FD\u628A\u503C\u5F97\u957F\u671F\u4FDD\u7559\u7684\u7528\u6237\u504F\u597D\u3001\u534F\u4F5C\u7EA6\u5B9A\u5199\u6210 episodic memory\uFF0C\u8DE8\u5BF9\u8BDD\u590D\u7528\u3002",
11234
- tools: ["rememberMemory"],
11244
+ description: "\u5BF9\u8BDD\u524D\u81EA\u52A8\u8F7D\u5165\u9AD8\u76F8\u5173\u8BB0\u5FC6\uFF0C\u5E76\u5141\u8BB8 agent \u6309\u9700\u67E5\u8BE2\u6216\u5199\u5165\u957F\u671F\u8BB0\u5FC6\u3002",
11245
+ tools: ["queryMemory", "rememberMemory"],
11235
11246
  defaultEnabled: true,
11236
11247
  icon: "\u{1F9E0}"
11237
11248
  },
@@ -14158,7 +14169,7 @@ async function deleteDialogsFunc(args, thunkApi) {
14158
14169
  const deletedDialogIds = [];
14159
14170
  const deletedDialogKeys = [];
14160
14171
  const failures = [];
14161
- const { deleteDialog } = await import("./dialogSlice-NNYBU35K.js");
14172
+ const { deleteDialog } = await import("./dialogSlice-K32QLYS7.js");
14162
14173
  for (const target of targets) {
14163
14174
  try {
14164
14175
  await thunkApi.dispatch(deleteDialog(target.dbKey)).unwrap();
@@ -20628,10 +20639,20 @@ var rememberMemoryFunctionSchema = {
20628
20639
  "\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",
20629
20640
  "scope \u6309\u5185\u5BB9\u6027\u8D28\u9009\uFF0C\u4E0D\u56FA\u5B9A\u4F18\u5148\u67D0\u4E00\u5C42\uFF1A",
20630
20641
  " - Space \u534F\u4F5C\u7EA6\u5B9A/\u56E2\u961F\u89C4\u5219 \u2192 scope=space\uFF08\u5F53\u524D dialog \u7ED1\u5B9A space \u65F6\uFF09",
20631
- " - \u7528\u6237\u4E2A\u4EBA\u8EAB\u4EFD\u6216\u7EAF\u4E2A\u4EBA\u504F\u597D \u2192 scope=auto\uFF08\u9ED8\u8BA4\u8BB0\u5230\u7528\u6237\uFF09",
20632
- " - \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",
20642
+ " - \u7528\u6237\u4E2A\u4EBA\u8EAB\u4EFD\u6216\u7EAF\u4E2A\u4EBA\u504F\u597D \u2192 scope=user\uFF08\u4E25\u683C\u4FDD\u5B58\u4E3A\u7528\u6237\u4E3B\u4F53\uFF09",
20643
+ " - \u4E0E\u5F53\u524D\u52A9\u624B\u5173\u7CFB\u6302\u94A9\u7684\u504F\u597D\u6216\u6709\u6548\u505A\u6CD5 \u2192 scope=auto\uFF08runtime \u4F7F\u7528\u5F53\u524D auto/fixed \u52A9\u624B\u4E3B\u4F53\uFF09",
20633
20644
  " - \u5F53\u524D\u4EFB\u52A1\u7684\u4E34\u65F6\u8FDB\u5EA6 \u2192 \u4E0D\u8981\u8C03\u7528\uFF0C\u8D70\u5BF9\u8BDD\u4E0A\u4E0B\u6587",
20634
- "\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"
20645
+ "\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",
20646
+ "",
20647
+ "\u3010\u5173\u952E\u89C4\u5219\u3011\u8BB0\u5FC6\u4E0D\u53EF\u7269\u7406\u5220\u9664\uFF0C\u53EA\u80FD\u964D\u7EA7/\u5F52\u6863/\u6807\u6CE8\u3002",
20648
+ "\u7269\u7406\u5220\u9664\u4F1A\u5207\u65AD\u89E3\u91CA\u94FE\u2014\u2014\u7CFB\u7EDF\u65E0\u6CD5\u56DE\u7B54'\u4E3A\u4EC0\u4E48\u53D8\u4E86'\u3001'\u66FE\u7ECF\u4FE1\u4EC0\u4E48'\u3002",
20649
+ "\u9519\u8BEF\u7684\u8BB0\u5FC6\u5E94\u901A\u8FC7 rememberMemory \u4FEE\u6B63\u5E76\u964D\u6743\uFF08\u964D\u4F4E\u7F6E\u4FE1\u5EA6\uFF09\uFF0C\u800C\u4E0D\u662F\u5220\u9664\u3002",
20650
+ "",
20651
+ "\u3010\u7F6E\u4FE1\u5EA6\u6765\u6E90\u3011\u6BCF\u6761\u8BB0\u5FC6\u5FC5\u987B\u6807\u6CE8\u6765\u6E90\uFF08\u4F9B\u53EC\u56DE\u65F6\u5224\u65AD\u53EF\u4FE1\u5EA6\uFF09\uFF1A",
20652
+ " - verified\uFF1A\u5DE5\u5177/\u547D\u4EE4\u5B9E\u6D4B\u9A8C\u8BC1\u8FC7\uFF08\u9AD8\u7F6E\u4FE1\u5EA6\uFF09",
20653
+ " - stated\uFF1A\u7528\u6237\u660E\u786E\u9648\u8FF0\uFF08\u4E2D\u9AD8\u7F6E\u4FE1\u5EA6\uFF09",
20654
+ " - inferred\uFF1A\u6A21\u578B\u63A8\u65AD/\u51ED\u5370\u8C61\uFF0C\u672A\u9A8C\u8BC1\uFF08\u4F4E\u7F6E\u4FE1\u5EA6\u2014\u2014\u5BB9\u6613\u7F16\u9020\uFF0C\u4F18\u5148\u6807\u8BB0\u5B58\u7591\uFF09",
20655
+ "\u8C03\u7528\u65F6\u5C3D\u91CF\u660E\u786E\u6765\u6E90\uFF0C\u65E0\u6CD5\u5224\u65AD\u7684\u4FDD\u5B88\u6807 inferred\u3002"
20635
20656
  ].join("\n"),
20636
20657
  parameters: {
20637
20658
  type: "object",
@@ -20643,7 +20664,7 @@ var rememberMemoryFunctionSchema = {
20643
20664
  scope: {
20644
20665
  type: "string",
20645
20666
  enum: ["auto", "user", "space"],
20646
- description: "\u8BB0\u5FC6\u8303\u56F4\u3002\u6309\u5185\u5BB9\u6027\u8D28\u9009\uFF1ASpace \u534F\u4F5C\u5171\u8BC6\u4F20 space\uFF1B\u7528\u6237\u4E2A\u4EBA\u8EAB\u4EFD/\u504F\u597D\u6216\u4E0E\u5F53\u524D Agent \u6302\u94A9\u7684\u505A\u6CD5\u4F20 auto\uFF08\u9ED8\u8BA4\uFF09\u3002auto \u65F6 runtime \u81EA\u52A8\u5224\u65AD owner\uFF0C\u5E76\u5C06 subject \u6807\u8BB0\u4E3A\u5F53\u524D Agent\uFF08\u5982\u679C\u53EF\u8BC6\u522B\uFF09\u3002"
20667
+ description: "\u8BB0\u5FC6\u8303\u56F4\u3002Space \u534F\u4F5C\u5171\u8BC6\u4F20 space\uFF1B\u7528\u6237\u4E2A\u4EBA\u8EAB\u4EFD/\u504F\u597D\u4F20 user\uFF1B\u4E0E\u5F53\u524D\u52A9\u624B\u5173\u7CFB\u6302\u94A9\u7684\u504F\u597D\u4F20 auto\u3002auto \u65F6 runtime \u4F7F\u7528\u5F53\u524D auto/fixed \u52A9\u624B\u4E3B\u4F53\u3002"
20647
20668
  },
20648
20669
  kind: {
20649
20670
  type: "string",
@@ -20661,6 +20682,8 @@ async function rememberMemoryFunc(args, thunkApi) {
20661
20682
  const spaceId = selectCurrentSpaceId(state) || void 0;
20662
20683
  const content = String(args.content ?? "").trim();
20663
20684
  const scope = args.scope ?? "auto";
20685
+ const dialogKey = getActiveDialogKey();
20686
+ const dialog = dialogKey ? selectById(state, dialogKey) : null;
20664
20687
  const kind = args.kind ?? "episodic";
20665
20688
  if (!content) {
20666
20689
  throw new Error("rememberMemory \u9700\u8981\u975E\u7A7A content\u3002");
@@ -20672,7 +20695,8 @@ async function rememberMemoryFunc(args, thunkApi) {
20672
20695
  content,
20673
20696
  scope,
20674
20697
  kind,
20675
- spaceId
20698
+ spaceId,
20699
+ ...scope === "auto" ? { memorySubjectId: resolveDialogMemorySubjectId(dialog) } : {}
20676
20700
  },
20677
20701
  { withAuth: true }
20678
20702
  );
@@ -20683,6 +20707,53 @@ async function rememberMemoryFunc(args, thunkApi) {
20683
20707
  };
20684
20708
  }
20685
20709
 
20710
+ // packages/ai/tools/queryMemoryToolSchema.ts
20711
+ var queryMemoryFunctionSchema = {
20712
+ name: "queryMemory",
20713
+ description: [
20714
+ "\u6309\u9700\u67E5\u8BE2\u5F53\u524D\u7528\u6237\u3001Space \u548C\u5F53\u524D auto/fixed \u52A9\u624B\u4E3B\u4F53\u7684\u957F\u671F\u8BB0\u5FC6\u3002",
20715
+ "\u5BF9\u8BDD\u5F00\u59CB\u524D\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u8F7D\u5165\u5C11\u91CF\u9AD8\u76F8\u5173\u8BB0\u5FC6\uFF1B\u53EA\u6709\u9884\u8F7D\u4E0D\u8DB3\u3001\u7528\u6237\u63D0\u5230\u8FC7\u53BB\u7EA6\u5B9A/\u504F\u597D/\u7EA0\u6B63/\u672A\u5B8C\u6210\u4E8B\u9879\u65F6\u624D\u8C03\u7528\u3002",
20716
+ "\u4E0D\u8981\u4E3A\u4E86\u666E\u901A\u4E8B\u5B9E\u95EE\u9898\u67E5\u8BE2\uFF0C\u4E5F\u4E0D\u8981\u5728\u540C\u4E00\u8F6E\u7528\u8FD1\u4E49\u8BCD\u53CD\u590D\u67E5\u8BE2\u3002",
20717
+ "",
20718
+ "\u3010\u53EC\u56DE\u89C4\u5219\u3011\u53EC\u56DE\u7684\u8BB0\u5FC6\u5FC5\u987B\u5E26\u5B8C\u6574\u5386\u53F2\u4E0A\u4E0B\u6587\uFF08\u6765\u6E90\u3001\u7F6E\u4FE1\u5EA6\u3001\u53D8\u66F4\u8BB0\u5F55\uFF09\uFF0C\u7981\u6B62\u81EA\u884C\u63A8\u7406\u586B\u8865\u3002",
20719
+ "\u5982\u679C\u8BB0\u5FC6\u6765\u6E90\u662F inferred\uFF08\u63A8\u65AD\uFF09\uFF0C\u5FC5\u987B\u660E\u786E\u6807\u6CE8\u5B58\u7591\uFF0C\u4E0D\u80FD\u5F53\u6210\u9A8C\u8BC1\u8FC7\u7684\u4E8B\u5B9E\u4F7F\u7528\u3002",
20720
+ "\u9AD8\u7F6E\u4FE1\u5EA6\u8BB0\u5FC6\uFF08verified/stated\uFF09\u4F18\u5148\u4F7F\u7528\uFF1B\u4F4E\u7F6E\u4FE1\u5EA6\u8BB0\u5FC6\uFF08inferred\uFF09\u9700\u9A8C\u8BC1\u540E\u518D\u91C7\u7EB3\u3002"
20721
+ ].join("\n"),
20722
+ parameters: {
20723
+ type: "object",
20724
+ properties: {
20725
+ query: {
20726
+ type: "string",
20727
+ description: "\u8981\u4ECE\u957F\u671F\u8BB0\u5FC6\u4E2D\u68C0\u7D22\u7684\u81EA\u7136\u8BED\u8A00\u95EE\u9898\u6216\u5173\u952E\u8BCD\u3002"
20728
+ }
20729
+ },
20730
+ required: ["query"]
20731
+ }
20732
+ };
20733
+
20734
+ // packages/ai/tools/queryMemoryTool.ts
20735
+ async function queryMemoryFunc(args, thunkApi) {
20736
+ const query = String(args.query ?? "").trim();
20737
+ if (!query) throw new Error("queryMemory \u9700\u8981\u975E\u7A7A query\u3002");
20738
+ const state = thunkApi.getState();
20739
+ const dialogKey = getActiveDialogKey();
20740
+ const dialog = dialogKey ? selectById(state, dialogKey) : null;
20741
+ const result = await callToolApi(
20742
+ thunkApi,
20743
+ "/api/memory/query",
20744
+ {
20745
+ agentKey: resolveDialogRuntimeAgentKey(dialog),
20746
+ memorySubjectId: resolveDialogMemorySubjectId(dialog),
20747
+ userInput: query,
20748
+ ...selectCurrentSpaceId(state) ? { spaceId: selectCurrentSpaceId(state) } : {}
20749
+ },
20750
+ { withAuth: true }
20751
+ );
20752
+ const selectedItems = Array.isArray(result?.selectedItems) ? result.selectedItems : [];
20753
+ const displayData = selectedItems.length ? selectedItems.map((item) => String(item?.content ?? "").trim()).filter(Boolean).join("\n") : "\u6CA1\u6709\u627E\u5230\u76F8\u5173\u957F\u671F\u8BB0\u5FC6\u3002";
20754
+ return { rawData: result, displayData };
20755
+ }
20756
+
20686
20757
  // packages/ai/tools/execShellTool.ts
20687
20758
  var execShellFunctionSchema = {
20688
20759
  name: "execShell",
@@ -21919,205 +21990,6 @@ async function runLlmToolFunc(args, thunkApi, _context) {
21919
21990
  }
21920
21991
  }
21921
21992
 
21922
- // packages/ai/tools/agent/agentRunDisplayHelpers.ts
21923
- function getAgentRunStatusIcon(status) {
21924
- switch (status) {
21925
- case "running":
21926
- case "pending":
21927
- return "\u23F3";
21928
- case "done":
21929
- return "\u2713";
21930
- case "failed":
21931
- case "timeout":
21932
- return "\u2717";
21933
- case "killed":
21934
- case "cancelled":
21935
- case "cancelling":
21936
- return "\u{1F6D1}";
21937
- case "not_found":
21938
- default:
21939
- return "?";
21940
- }
21941
- }
21942
- var DEFAULT_LABELS = {
21943
- runStatus: "Run status",
21944
- runStarted: "Run started",
21945
- runStopped: "Run stopped",
21946
- runFinished: "Run finished",
21947
- logTail: "Log tail:",
21948
- runs: (count) => `Runs (${count})`
21949
- };
21950
- function resolveLabels(labels) {
21951
- return {
21952
- runStatus: labels?.runStatus ?? DEFAULT_LABELS.runStatus,
21953
- runStarted: labels?.runStarted ?? DEFAULT_LABELS.runStarted,
21954
- runStopped: labels?.runStopped ?? DEFAULT_LABELS.runStopped,
21955
- runFinished: labels?.runFinished ?? DEFAULT_LABELS.runFinished,
21956
- logTail: labels?.logTail ?? DEFAULT_LABELS.logTail,
21957
- runs: labels?.runs ?? DEFAULT_LABELS.runs
21958
- };
21959
- }
21960
- function shortRunId(runId) {
21961
- const trimmed = typeof runId === "string" ? runId.trim() : "";
21962
- if (!trimmed) return "";
21963
- const segments = trimmed.split("-").filter(Boolean);
21964
- let pick = segments[segments.length - 1] ?? trimmed;
21965
- if (pick.length < 4 && segments.length >= 2) pick = segments.slice(-2).join("-");
21966
- if (!pick) pick = trimmed;
21967
- return pick.length > 8 ? pick.slice(-8) : pick;
21968
- }
21969
- function clipText(text, max) {
21970
- const collapsed = text.replace(/\s+/g, " ").trim();
21971
- return collapsed.length > max ? `${collapsed.slice(0, max - 1)}\u2026` : collapsed;
21972
- }
21973
- function formatDuration(ms) {
21974
- const totalSec = Math.max(0, Math.floor(ms / 1e3));
21975
- if (totalSec < 60) return `${totalSec}s`;
21976
- const totalMin = Math.floor(totalSec / 60);
21977
- if (totalMin < 60) return `${totalMin}m${String(totalSec % 60).padStart(2, "0")}s`;
21978
- return `${Math.floor(totalMin / 60)}h${String(totalMin % 60).padStart(2, "0")}m`;
21979
- }
21980
- function formatRunAge(timing, now = Date.now()) {
21981
- const startedAt = timing?.startedAt;
21982
- if (typeof startedAt !== "number" || !Number.isFinite(startedAt) || startedAt <= 0) {
21983
- return "";
21984
- }
21985
- const end = typeof timing?.finishedAt === "number" && Number.isFinite(timing.finishedAt) && timing.finishedAt > 0 ? timing.finishedAt : now;
21986
- return formatDuration(end - startedAt);
21987
- }
21988
- function formatIdentityRow(agentName, runId) {
21989
- const parts = [];
21990
- if (!isAgentNameFallback(agentName)) parts.push(agentName);
21991
- const short = shortRunId(runId);
21992
- if (short) parts.push(`#${short}`);
21993
- return parts.join(" ");
21994
- }
21995
- function isAgentNameFallback(agentName) {
21996
- const trimmed = typeof agentName === "string" ? agentName.trim() : "";
21997
- return !trimmed || trimmed === "agent";
21998
- }
21999
- function resolveRunLabel(run) {
22000
- for (const candidate of [run.agentName, run.name, run.agentKey, run.runId]) {
22001
- if (typeof candidate === "string" && !isAgentNameFallback(candidate)) {
22002
- return candidate.trim();
22003
- }
22004
- }
22005
- return "agent";
22006
- }
22007
- function formatStartRunCard(agentName, status = "running", opts) {
22008
- const L = resolveLabels(opts?.labels);
22009
- const icon = getAgentRunStatusIcon(status);
22010
- const lines = [L.runStarted];
22011
- const identity = formatIdentityRow(agentName, opts?.runId);
22012
- if (identity) {
22013
- lines.push(` agent ${identity}`);
22014
- }
22015
- lines.push(` status ${icon} ${status}`);
22016
- const task = opts?.task?.trim();
22017
- if (task) {
22018
- lines.push(` task ${clipText(task, TASK_PREVIEW_MAX)}`);
22019
- }
22020
- return lines.join("\n");
22021
- }
22022
- var TASK_PREVIEW_MAX = 72;
22023
- var NOTE_PREVIEW_MAX = 72;
22024
- function formatProgressRow(toolCallCount, lastToolNames) {
22025
- const parts = [];
22026
- if (typeof toolCallCount === "number" && Number.isFinite(toolCallCount)) {
22027
- parts.push(`${toolCallCount} tools`);
22028
- }
22029
- if (lastToolNames && lastToolNames.length > 0) {
22030
- parts.push(lastToolNames.join(", "));
22031
- }
22032
- return parts.join(" \xB7 ");
22033
- }
22034
- function formatStatusRunCard(agentName, status = "running", opts) {
22035
- const L = resolveLabels(opts?.labels);
22036
- const icon = getAgentRunStatusIcon(status);
22037
- const age = formatRunAge(opts?.timing, opts?.now);
22038
- const lines = [L.runStatus, ` ${icon} ${status}${age ? ` ${age}` : ""}`];
22039
- const identity = formatIdentityRow(agentName, opts?.runId);
22040
- if (identity) {
22041
- lines.push(` agent ${identity}`);
22042
- }
22043
- const progress = formatProgressRow(opts?.toolCallCount, opts?.lastToolNames);
22044
- if (progress) {
22045
- lines.push(` tools ${progress}`);
22046
- }
22047
- const note = opts?.lastAssistantText?.trim();
22048
- if (note) {
22049
- lines.push(` note ${clipText(note, NOTE_PREVIEW_MAX)}`);
22050
- }
22051
- if (opts?.errorMessage?.trim()) {
22052
- lines.push(` error ${opts.errorMessage.trim()}`);
22053
- }
22054
- if (shouldShowLogTail(status, opts?.includeLogTail, opts?.logLines)) {
22055
- lines.push("", L.logTail, ...opts.logLines.map((l) => ` ${l}`));
22056
- }
22057
- return lines.join("\n");
22058
- }
22059
- function runShowsLogTail(status) {
22060
- return status === "failed" || status === "timeout";
22061
- }
22062
- function shouldShowLogTail(status, includeLogTail, logLines) {
22063
- if (includeLogTail === false) return false;
22064
- if (!logLines || logLines.length === 0) return false;
22065
- return runShowsLogTail(status);
22066
- }
22067
- function formatFinishedRunCard(agentName, status, opts) {
22068
- const L = resolveLabels(opts?.labels);
22069
- const icon = getAgentRunStatusIcon(status);
22070
- const age = formatRunAge(opts?.timing, opts?.now);
22071
- const summary = [status, age, formatProgressRow(opts?.toolCallCount, opts?.lastToolNames)].filter(Boolean).join(" \xB7 ");
22072
- const lines = [L.runFinished, ` ${icon} ${summary}`];
22073
- const identity = formatIdentityRow(agentName, opts?.runId);
22074
- if (identity) {
22075
- lines.push(` agent ${identity}`);
22076
- }
22077
- const note = opts?.lastAssistantText?.trim();
22078
- if (note) {
22079
- lines.push(` note ${clipText(note, NOTE_PREVIEW_MAX)}`);
22080
- }
22081
- if (opts?.errorMessage?.trim()) {
22082
- lines.push(` error ${opts.errorMessage.trim()}`);
22083
- }
22084
- if (shouldShowLogTail(status, opts?.includeLogTail, opts?.logLines)) {
22085
- lines.push("", L.logTail, ...opts.logLines.map((l) => ` ${l}`));
22086
- }
22087
- return lines.join("\n");
22088
- }
22089
- function formatStopRunCard(status = "killed", labels) {
22090
- const L = resolveLabels(labels);
22091
- const icon = getAgentRunStatusIcon(status);
22092
- return `${L.runStopped}
22093
- ${icon} ${status}`;
22094
- }
22095
- function formatListRunsCard(runs, labels) {
22096
- const L = resolveLabels(labels);
22097
- const lines = [L.runs(runs.length)];
22098
- for (const run of runs) {
22099
- const status = run.status ?? "\u2014";
22100
- const icon = getAgentRunStatusIcon(status);
22101
- lines.push(` ${icon} ${resolveRunLabel(run)}`);
22102
- }
22103
- return lines.join("\n");
22104
- }
22105
- function formatNotFoundRunCard(labels) {
22106
- const L = resolveLabels(labels);
22107
- return `${L.runStatus}
22108
- ? not_found`;
22109
- }
22110
- var AGENT_RUN_TERMINAL_STATUSES = /* @__PURE__ */ new Set([
22111
- "done",
22112
- "failed",
22113
- "timeout",
22114
- "killed",
22115
- "cancelled"
22116
- ]);
22117
- function isAgentRunTerminalStatus(status) {
22118
- return typeof status === "string" && AGENT_RUN_TERMINAL_STATUSES.has(status);
22119
- }
22120
-
22121
21993
  // packages/ai/tools/agent/startAgentRunTool.ts
22122
21994
  var startAgentRunFunctionSchema = {
22123
21995
  name: "startAgentRun",
@@ -22143,14 +22015,23 @@ var startAgentRunFunctionSchema = {
22143
22015
  ephemeral: {
22144
22016
  type: "boolean",
22145
22017
  description: "\u53EF\u9009\u3002\u4E3A true \u65F6\u672C\u6B21 run \u4E0D\u6301\u4E45\u5316 dialog\uFF08\u4E0D\u7559\u8BB0\u5F55\uFF09\u3002\u7528\u4E8E\u4E00\u6B21\u6027\u5BA1\u67E5\uFF08review\uFF09\u7B49\u4E0D\u9700\u7559\u75D5\u7684\u573A\u666F\u3002\u9ED8\u8BA4 false\u3002"
22018
+ },
22019
+ batchId: {
22020
+ type: "string",
22021
+ description: "\u53EF\u9009\u3002\u6279\u6B21 id\uFF0C\u7528\u4E8E\u628A\u591A\u4E2A\u5E76\u884C run \u5F52\u4E3A\u4E00\u7EC4\uFF0C\u4FBF\u4E8E\u540E\u7EED controlAgentRun(list, batchId=...) \u6309\u6279\u67E5\u8BE2\u3002\u672A\u4F20\u65F6\u81EA\u52A8\u751F\u6210\u4E00\u4E2A\u5E76\u5728\u8FD4\u56DE\u503C\u4E2D\u5E26\u56DE\uFF0C\u8C03\u7528\u65B9\u65E0\u9700\u5148\u521B\u5EFA\u3002"
22022
+ },
22023
+ trackTodo: {
22024
+ type: "boolean",
22025
+ description: '\u53EF\u9009\u3002\u4E3A true \u65F6\u672C\u6B21 run \u4F1A\u88AB\u8BB0\u5F55\u8FDB runtime todo\uFF08~/.nolo/todos.json\uFF09\u3002\u4F20\u4E86 batchId \u65F6\u9ED8\u8BA4\u5373\u8BB0\u5F55\uFF08\u6BCF\u6279\u5BF9\u5E94\u4E00\u9879 todo\uFF09\u3002todo \u72B6\u6001\u7531\u5173\u8054 run \u72B6\u6001 + review \u7ED3\u8BBA\u63A8\u5BFC\uFF0C\u7528 controlAgentRun(action:"todo") \u67E5\u8BE2\u3002'
22146
22026
  }
22147
22027
  },
22148
22028
  required: ["agentKey", "task"]
22149
22029
  }
22150
22030
  };
22151
22031
  async function startAgentRunFunc(args, thunkApi, _context) {
22152
- const { agentKey, task, input, agentName, ephemeral } = args;
22032
+ const { agentKey, task, input, agentName, ephemeral, batchId } = args;
22153
22033
  const { dispatch } = thunkApi;
22034
+ const effectiveBatchId = typeof batchId === "string" && batchId.trim() ? batchId.trim() : `batch-${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")}-${Math.random().toString(36).slice(2, 8)}`;
22154
22035
  if (!agentKey) {
22155
22036
  throw new Error("startAgentRun: \u7F3A\u5C11 agentKey \u53C2\u6570\u3002");
22156
22037
  }
@@ -22180,6 +22061,11 @@ async function startAgentRunFunc(args, thunkApi, _context) {
22180
22061
  runId,
22181
22062
  status,
22182
22063
  agentKey,
22064
+ // batchId is always returned — minted above when the caller didn't
22065
+ // supply one — so controlAgentRun(list, batchId=...) works on every
22066
+ // host. On the server path the id lives in the tool return; on the
22067
+ // CLI local path it is also persisted on the run record.
22068
+ batchId: effectiveBatchId,
22183
22069
  ...resolvedName ? { agentName: resolvedName } : {},
22184
22070
  ...taskPreview ? { taskPreview } : {}
22185
22071
  },
@@ -22196,14 +22082,14 @@ async function startAgentRunFunc(args, thunkApi, _context) {
22196
22082
  // packages/ai/tools/agent/controlAgentRunTool.ts
22197
22083
  var controlAgentRunFunctionSchema = {
22198
22084
  name: "controlAgentRun",
22199
- description: "\u89C2\u5BDF\u548C\u63A7\u5236\u540E\u53F0 agent run\u3002\u4E00\u4E2A\u5DE5\u5177\u4E09\u4E2A action\uFF1Alist\uFF08\u5217\u51FA\u6240\u6709 run\uFF09\u3001status\uFF08\u67E5\u5355\u6761 + \u53EF\u9009\u65E5\u5FD7\uFF09\u3001stop\uFF08\u53D6\u6D88 run\uFF09\u3002\u76F8\u5F53\u4E8E Unix \u7684 wait + signal + /proc\u3002\u7528 startAgentRun \u62FF\u5230 runId \u540E\uFF0C\u7528\u672C\u5DE5\u5177\u8DDF\u8FDB\u5EA6\u6216\u53EB\u505C\u3002",
22085
+ description: "\u89C2\u5BDF\u548C\u63A7\u5236\u540E\u53F0 agent run\u3002\u4E00\u4E2A\u5DE5\u5177\u4E09\u4E2A action\uFF1Alist\uFF08\u5217\u51FA run\uFF0C\u652F\u6301\u6309\u6279\u6B21/\u72B6\u6001\u8FC7\u6EE4\u4E0E\u5206\u9875\uFF09\u3001status\uFF08\u67E5\u5355\u6761 + \u53EF\u9009\u65E5\u5FD7\uFF09\u3001stop\uFF08\u53D6\u6D88 run\uFF09\u3002\u76F8\u5F53\u4E8E Unix \u7684 wait + signal + /proc\u3002\u7528 startAgentRun \u62FF\u5230 runId \u540E\uFF0C\u7528\u672C\u5DE5\u5177\u8DDF\u8FDB\u5EA6\u6216\u53EB\u505C\u3002list \u9ED8\u8BA4\u53EA\u8FD4\u56DE\u6700\u8FD1 20 \u6761\uFF0C\u907F\u514D\u5168\u91CF\u51B2\u7206\u4E0A\u4E0B\u6587\uFF1B\u7528 status/batchId/limit/offset \u53D6\u6240\u9700\u5206\u9875\u3002",
22200
22086
  parameters: {
22201
22087
  type: "object",
22202
22088
  properties: {
22203
22089
  action: {
22204
22090
  type: "string",
22205
- enum: ["list", "status", "stop"],
22206
- description: "\u8981\u6267\u884C\u7684\u64CD\u4F5C\uFF1Alist=\u5217\u51FA\u6240\u6709 run\uFF08\u7701\u7565 runId\uFF09\uFF1Bstatus=\u67E5\u5355\u6761 run \u72B6\u6001 + \u53EF\u9009\u65E5\u5FD7\uFF1Bstop=\u53D6\u6D88 run\u3002"
22091
+ enum: ["list", "status", "stop", "todo"],
22092
+ description: "\u8981\u6267\u884C\u7684\u64CD\u4F5C\uFF1Alist=\u5217\u51FA run\uFF08\u7701\u7565 runId\uFF09\uFF1Bstatus=\u67E5\u5355\u6761 run \u72B6\u6001 + \u53EF\u9009\u65E5\u5FD7\uFF1Bstop=\u53D6\u6D88 run\uFF1Btodo=\u5217\u51FA runtime todo\uFF08\u7531 startAgentRun \u7684 batchId/trackTodo \u4EA7\u751F\uFF0C\u72B6\u6001\u7531\u5173\u8054 run \u63A8\u5BFC\uFF09\u3002"
22207
22093
  },
22208
22094
  runId: {
22209
22095
  type: "string",
@@ -22214,23 +22100,38 @@ var controlAgentRunFunctionSchema = {
22214
22100
  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",
22215
22101
  default: 0
22216
22102
  },
22103
+ batchId: {
22104
+ type: "string",
22105
+ description: "\u53EF\u9009\u3002action=list \u65F6\u53EA\u8FD4\u56DE\u8BE5\u6279\u6B21\u7684 run\uFF08startAgentRun \u8FD4\u56DE\u503C\u6216\u5165\u53C2\u4E2D\u7684 batchId\uFF09\u3002"
22106
+ },
22107
+ status: {
22108
+ type: "string",
22109
+ description: "\u53EF\u9009\u3002action=list \u65F6\u6309\u72B6\u6001\u8FC7\u6EE4\uFF0C\u652F\u6301\u5355\u503C\u6216\u9017\u53F7\u5206\u9694\u591A\u503C\uFF08\u5982 'running,orphaned'\uFF09\u3002\u4E0E statusFilter \u540C\u4E49\uFF0Cstatus \u4F18\u5148\uFF1B\u53D6\u503C\u5305\u542B orphaned\uFF08pid \u5DF2\u6B7B\u4F46\u8BB0\u5F55\u4ECD running \u7684\u5B64\u513F run\uFF09\u3002\u9ED8\u8BA4 all\uFF08\u4E0D\u8FC7\u6EE4\uFF09\u3002"
22110
+ },
22217
22111
  statusFilter: {
22218
22112
  type: "string",
22219
- enum: ["running", "done", "failed", "cancelled", "all"],
22220
- description: "\u53EF\u9009\u3002action=list \u65F6\u6309\u72B6\u6001\u8FC7\u6EE4\uFF0C\u9ED8\u8BA4 all\u3002"
22113
+ enum: ["running", "done", "failed", "cancelled", "orphaned", "all"],
22114
+ description: "\u53EF\u9009\u3002action=list \u65F6\u6309\u72B6\u6001\u8FC7\u6EE4\uFF0C\u9ED8\u8BA4 all\u3002\u4E0E status \u540C\u4E49\uFF08status \u4F18\u5148\uFF0C\u4E14 status \u652F\u6301\u591A\u503C\uFF09\u3002"
22221
22115
  },
22222
22116
  limit: {
22223
22117
  type: "number",
22224
- description: "\u53EF\u9009\u3002action=list \u65F6\u9650\u5236\u8FD4\u56DE\u6570\u91CF\uFF0C\u9ED8\u8BA4 20\u3002"
22118
+ description: "\u53EF\u9009\u3002action=list \u65F6\u9650\u5236\u8FD4\u56DE\u6570\u91CF\uFF0C\u9ED8\u8BA4 20\uFF0C\u4E0A\u9650 200\u3002\u4E0D\u5E26\u4EFB\u4F55\u53C2\u6570\u4E0D\u4F1A\u8FD4\u56DE\u5168\u91CF\u3002"
22119
+ },
22120
+ offset: {
22121
+ type: "number",
22122
+ description: "\u53EF\u9009\u3002action=list \u65F6\u8DF3\u8FC7\u524D N \u6761\uFF0C\u914D\u5408 limit \u7FFB\u9875\u3002\u9ED8\u8BA4 0\u3002"
22225
22123
  }
22226
22124
  },
22227
22125
  required: ["action"]
22228
22126
  }
22229
22127
  };
22230
22128
  async function controlAgentRunFunc(args, thunkApi, _context) {
22231
- const { action, runId, tailLines, statusFilter, limit } = args;
22129
+ const { action, runId, tailLines, batchId, status, statusFilter, limit, offset } = args;
22232
22130
  if (action === "list") {
22233
- return handleList(thunkApi, { statusFilter, limit });
22131
+ return handleList(thunkApi, { batchId, status, statusFilter, limit, offset });
22132
+ }
22133
+ if (action === "todo") {
22134
+ return handleTodo(thunkApi, { status });
22234
22135
  }
22235
22136
  if (action === "status") {
22236
22137
  if (!runId) throw new Error('controlAgentRun(action:"status"): \u7F3A\u5C11 runId\u3002');
@@ -22245,8 +22146,11 @@ async function controlAgentRunFunc(args, thunkApi, _context) {
22245
22146
  async function handleList(thunkApi, opts) {
22246
22147
  try {
22247
22148
  const body = { action: "list" };
22248
- if (opts.statusFilter) body.statusFilter = opts.statusFilter;
22149
+ const statusVal = opts.status ?? opts.statusFilter;
22150
+ if (statusVal) body.statusFilter = statusVal;
22151
+ if (opts.batchId) body.batchId = opts.batchId;
22249
22152
  if (opts.limit !== void 0) body.limit = opts.limit;
22153
+ if (opts.offset !== void 0) body.offset = opts.offset;
22250
22154
  const data = await callToolApi(
22251
22155
  thunkApi,
22252
22156
  "/api/agent/runs/control",
@@ -22255,9 +22159,10 @@ async function handleList(thunkApi, opts) {
22255
22159
  );
22256
22160
  const resData = data?.data ?? data;
22257
22161
  const runs = resData?.runs ?? [];
22258
- const count = resData?.count ?? runs.length;
22162
+ const total = typeof resData?.total === "number" ? resData.total : runs.length;
22163
+ const hasMore = typeof resData?.hasMore === "boolean" ? resData.hasMore : false;
22259
22164
  return {
22260
- rawData: { runs, count },
22165
+ rawData: { runs, count: runs.length, total, hasMore },
22261
22166
  displayData: formatListRunsCard(runs)
22262
22167
  };
22263
22168
  } catch (e) {
@@ -22317,6 +22222,28 @@ async function handleStop(thunkApi, opts) {
22317
22222
  throw new Error(`controlAgentRun(stop) \u5931\u8D25: ${toErrorMessage(e)}`);
22318
22223
  }
22319
22224
  }
22225
+ async function handleTodo(thunkApi, opts) {
22226
+ try {
22227
+ const body = { action: "todo" };
22228
+ if (opts.status) body.status = opts.status;
22229
+ const data = await callToolApi(
22230
+ thunkApi,
22231
+ "/api/agent/runs/control",
22232
+ body,
22233
+ { withAuth: true }
22234
+ );
22235
+ const resData = data?.data ?? data;
22236
+ const todos = resData?.todos ?? [];
22237
+ return {
22238
+ rawData: { todos, count: todos.length },
22239
+ displayData: formatListRunsCard(
22240
+ todos.map((t) => ({ agentName: t?.title ?? t?.id, status: t?.status }))
22241
+ )
22242
+ };
22243
+ } catch (e) {
22244
+ throw new Error(`controlAgentRun(todo) \u5931\u8D25: ${toErrorMessage(e)}`);
22245
+ }
22246
+ }
22320
22247
 
22321
22248
  // packages/ai/tools/agent/agentTools.ts
22322
22249
  var agentToolDefinitions = [
@@ -23510,7 +23437,7 @@ var executeToolRun = createAsyncThunk(
23510
23437
  if (!executionInput) {
23511
23438
  throw new Error(`ToolRun ${id} has no input to execute with.`);
23512
23439
  }
23513
- const { findToolExecutor: findToolExecutor2 } = await import("./tools-M4USUF3R.js");
23440
+ const { findToolExecutor: findToolExecutor2 } = await import("./tools-YHZP6NXU.js");
23514
23441
  const { executor } = findToolExecutor2(run.toolName);
23515
23442
  toolRunStarted({
23516
23443
  id: run.id,
@@ -23534,7 +23461,7 @@ var executeToolRun = createAsyncThunk(
23534
23461
  const latestState = thunkApi.getState();
23535
23462
  const userId = latestState.auth?.currentUser?.userId;
23536
23463
  if (userId) {
23537
- const { fetchUserSpaceMemberships } = await import("./spaceSlice-TEJDCU6A.js");
23464
+ const { fetchUserSpaceMemberships } = await import("./spaceSlice-V2P5TTQU.js");
23538
23465
  await thunkApi.dispatch(fetchUserSpaceMemberships(userId));
23539
23466
  }
23540
23467
  }
@@ -26017,7 +25944,7 @@ async function updateDocFunc(args, thunkApi) {
26017
25944
  updated_at: (/* @__PURE__ */ new Date()).toISOString()
26018
25945
  };
26019
25946
  await dispatch(write({ data: updatedPageData, customKey: id })).unwrap();
26020
- const { getDocState, applyExternalDocUpdate } = await import("./docStore-DR22GGF3.js");
25947
+ const { getDocState, applyExternalDocUpdate } = await import("./docStore-L6HBNJ3R.js");
26021
25948
  if (getDocState().pageKey === id) {
26022
25949
  applyExternalDocUpdate({
26023
25950
  slateData: finalSlateData,
@@ -26645,6 +26572,17 @@ var baseToolDefinitions = [
26645
26572
  },
26646
26573
  behavior: "answer"
26647
26574
  },
26575
+ {
26576
+ id: "queryMemory",
26577
+ schema: queryMemoryFunctionSchema,
26578
+ executor: queryMemoryFunc,
26579
+ description: {
26580
+ name: "queryMemory",
26581
+ description: "\u6309\u9700\u67E5\u8BE2\u5F53\u524D\u7528\u6237\u3001Space \u548C\u52A9\u624B\u4E3B\u4F53\u7684\u957F\u671F\u8BB0\u5FC6\u3002",
26582
+ category: "\u8BB0\u5FC6 / \u957F\u671F\u4E0A\u4E0B\u6587"
26583
+ },
26584
+ behavior: "data"
26585
+ },
26648
26586
  {
26649
26587
  id: "rememberMemory",
26650
26588
  schema: rememberMemoryFunctionSchema,
@@ -28283,20 +28221,6 @@ export {
28283
28221
  readXPostFunc,
28284
28222
  readXhsProfileFunctionSchema,
28285
28223
  readXhsProfileFunc,
28286
- getAgentRunStatusIcon,
28287
- shortRunId,
28288
- formatRunAge,
28289
- isAgentNameFallback,
28290
- resolveRunLabel,
28291
- formatStartRunCard,
28292
- TASK_PREVIEW_MAX,
28293
- formatStatusRunCard,
28294
- runShowsLogTail,
28295
- formatFinishedRunCard,
28296
- formatStopRunCard,
28297
- formatListRunsCard,
28298
- formatNotFoundRunCard,
28299
- isAgentRunTerminalStatus,
28300
28224
  TOOL_PACKS,
28301
28225
  resolveEffectiveEnabledPacks,
28302
28226
  addDefaultSystemCapabilityTools,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  fetchReferenceContents,
3
3
  resolveReferenceAssets
4
- } from "./chunk-XEWUC53Z.js";
4
+ } from "./chunk-6IGLIDDE.js";
5
5
 
6
6
  // packages/ai/agent/fetchAgentContexts.ts
7
7
  async function fetchAgentContexts(references, dispatch) {
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createCliLocalRuntimeAdapter,
3
3
  summarizeEndpoint
4
- } from "./chunk-ZH62XNZE.js";
4
+ } from "./chunk-W6OKITU6.js";
5
5
  import {
6
6
  clipMultilineText
7
- } from "./chunk-D4NCEGGR.js";
7
+ } from "./chunk-URVWRKFU.js";
8
8
  import {
9
9
  runLocalAgentTurn
10
- } from "./chunk-RIF3XLXK.js";
10
+ } from "./chunk-ZDDHKIWB.js";
11
11
  import {
12
12
  resolveLocalRuntimeEnvFromPolicy
13
13
  } from "./chunk-5CS33IBL.js";