nolo-cli 0.16.0-alpha.19 → 0.16.0-alpha.20

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 (63) hide show
  1. package/{_executeModel-YY6LVJXJ.js → _executeModel-GRCQXT5R.js} +13 -13
  2. package/{agentDeleteCommand-TJ2EAYDA.js → agentDeleteCommand-WNL3CNQX.js} +6 -6
  3. package/{agentEmailCommands-UKEGNW25.js → agentEmailCommands-MPEUMRAS.js} +16 -16
  4. package/{agentListCommands-WD5XYVGK.js → agentListCommands-YO4AOQMS.js} +8 -8
  5. package/{agentMachineCommands-OHZ3HKOV.js → agentMachineCommands-WYM6YRYJ.js} +6 -6
  6. package/{agentRecordCommands-N2JQMKS4.js → agentRecordCommands-BVWSHMIY.js} +16 -16
  7. package/{agentRunCommand-P2ECE6UJ.js → agentRunCommand-E3ZI6RSF.js} +16 -16
  8. package/{agentRunControl-P75VPTGS.js → agentRunControl-Y5AFH5PQ.js} +2 -2
  9. package/{agentRuntimeLocal-K2J7IS6O.js → agentRuntimeLocal-P4VGX6H6.js} +3 -3
  10. package/{agentSlice-OOLSXBHE.js → agentSlice-D33GU3JL.js} +1 -1
  11. package/{appDeleteCommands-X7YGULGZ.js → appDeleteCommands-VA4R2SWX.js} +7 -7
  12. package/{appDeployCommands-IMNPBUN7.js → appDeployCommands-JWMWQNG6.js} +7 -7
  13. package/{appDeployStatusCommands-2KFZUEET.js → appDeployStatusCommands-KYXGLZSQ.js} +7 -7
  14. package/{appGetCommands-AYG44S7G.js → appGetCommands-ELOO3JG6.js} +7 -7
  15. package/{appListCommands-Z7CLYPLH.js → appListCommands-SJUW4RLW.js} +7 -7
  16. package/{chunk-IOOMJJ4Z.js → chunk-34WPV75U.js} +21 -0
  17. package/{chunk-RYFZ55YC.js → chunk-5PGGCJGV.js} +3 -3
  18. package/{chunk-5ICZUVFN.js → chunk-AKVLLMOU.js} +3 -3
  19. package/{chunk-B26VDWID.js → chunk-BE2GNT5E.js} +1 -1
  20. package/{chunk-IRQJSVET.js → chunk-E5KQTMMJ.js} +39 -12
  21. package/{chunk-X3AHTP6B.js → chunk-ENP2ELIL.js} +2 -2
  22. package/{chunk-SQNQOXQ6.js → chunk-EXAEHRLI.js} +24 -33
  23. package/{chunk-FKXFCYVO.js → chunk-FQZZLA3C.js} +2 -0
  24. package/{chunk-JIDA7LBE.js → chunk-GMZZ5EKJ.js} +3 -3
  25. package/{chunk-BLQ3U7UK.js → chunk-HQNPCMWL.js} +1 -1
  26. package/{chunk-A7QNCVO5.js → chunk-IQZ6TGVW.js} +1 -1
  27. package/{chunk-2M54XJFV.js → chunk-J67FKTTY.js} +22 -20
  28. package/{chunk-CGSHUOC7.js → chunk-JFE7XW4D.js} +1 -1
  29. package/{chunk-XJITGCTM.js → chunk-JP7REMYP.js} +9 -0
  30. package/{chunk-KO4PXGVN.js → chunk-KKWJ5VPZ.js} +1 -1
  31. package/{chunk-OZPVJZBX.js → chunk-L2RRMXNJ.js} +11 -2
  32. package/{chunk-QSLNKTUG.js → chunk-MUIT5AAM.js} +84 -15
  33. package/{chunk-3PGT7DEK.js → chunk-N2HYIBLH.js} +2 -2
  34. package/{chunk-YEFSRF54.js → chunk-PUSK7HXJ.js} +25 -9
  35. package/{chunk-XYXJ4JRT.js → chunk-RIDWN7AP.js} +1 -1
  36. package/{chunk-JBWVSKBS.js → chunk-RUTSBLDM.js} +38 -9
  37. package/{chunk-BDSHV5HO.js → chunk-UIOYWBU7.js} +9 -13
  38. package/{chunk-TSIYZBTH.js → chunk-VNAEBGDK.js} +1 -1
  39. package/{chunk-XU6XCPWB.js → chunk-VST53WEL.js} +1 -1
  40. package/{chunk-QCJITMYO.js → chunk-VVKQFITN.js} +5 -2
  41. package/{chunk-OOKISU7J.js → chunk-XFYDGBXL.js} +1 -1
  42. package/{createAgentAutomationAction-EL5ORU35.js → createAgentAutomationAction-ONKZ46XE.js} +2 -2
  43. package/{createDialogAction-DKED4DHE.js → createDialogAction-7QWJEBKU.js} +3 -3
  44. package/{createPageAction-BYW4YP54.js → createPageAction-PB3KXZIA.js} +2 -2
  45. package/{dialogCommands-J7C6MB3Q.js → dialogCommands-YZFU4Q26.js} +7 -7
  46. package/{dialogSlice-RJCHTUIG.js → dialogSlice-53B5ISGQ.js} +2 -2
  47. package/{docCreateCommands-Y7OSXNB6.js → docCreateCommands-LOUC5PFB.js} +6 -6
  48. package/{docDeleteCommands-ALZGQRCE.js → docDeleteCommands-HHPGT4BR.js} +7 -7
  49. package/{docReadCommands-4BDDESGT.js → docReadCommands-YPSN4HEF.js} +6 -6
  50. package/{docStore-QWYVY7SV.js → docStore-LJXXRB5W.js} +3 -3
  51. package/{docUpdateCommands-LU2ZM2VE.js → docUpdateCommands-CJCZO54M.js} +6 -6
  52. package/{handleSendMessageAction-CUZL72WD.js → handleSendMessageAction-ICGX4QCM.js} +2 -2
  53. package/index.js +45 -45
  54. package/{machineCommands-QMODXRTA.js → machineCommands-YLDZXK4D.js} +15 -15
  55. package/{machineWsRunDispatch-UPWS4PZD.js → machineWsRunDispatch-LTQL3DRE.js} +15 -15
  56. package/package.json +1 -1
  57. package/{readlineWorkspace-ZDN3CREA.js → readlineWorkspace-OSPVWNAT.js} +493 -88
  58. package/{runAgentClientLoop-XKFPXIZC.js → runAgentClientLoop-76SUKKPX.js} +10 -10
  59. package/{spaceCommands-UG4QHSHD.js → spaceCommands-GIF7MKVD.js} +6 -6
  60. package/{spaceSlice-LR2XC33A.js → spaceSlice-M4PVN5PO.js} +2 -2
  61. package/{streamAgentChatTurn-5UOO7W6S.js → streamAgentChatTurn-GCKTFSHQ.js} +12 -12
  62. package/{tools-VHE5VME5.js → tools-RJVFXOLR.js} +7 -7
  63. package/{updateDialogTitleAction-OZZQ7SB2.js → updateDialogTitleAction-PSR67DLV.js} +2 -2
@@ -180,6 +180,26 @@ var buildRuntimeGuidanceBlocks = (tools = []) => {
180
180
  };
181
181
  };
182
182
 
183
+ // packages/agent-runtime/menuUsage.ts
184
+ var MENU_USAGE_INSTRUCTIONS = `--- \u4EA4\u4E92\u8BF4\u660E ---
185
+ \u6240\u6709\u7528\u6237\u8F93\u5165\u5747\u4E3A\u7EAF\u6587\u672C\u6D88\u606F\uFF0C\u76F4\u63A5\u7406\u89E3\u5373\u53EF\uFF0C\u4E0D\u8981\u5728\u56DE\u590D\u4E2D\u63D0\u53CA\u6309\u94AE\u3001\u83DC\u5355\u3001\u754C\u9762\u7B49 UI \u5143\u7D20\u3002
186
+
187
+ ## \u4F55\u65F6\u8C03\u7528 ask_user
188
+ \u9ED8\u8BA4\u503E\u5411"\u76F4\u63A5\u884C\u52A8"\uFF1A\u5F53\u4F60\u80FD\u57FA\u4E8E\u73B0\u6709\u4E0A\u4E0B\u6587\u7ED9\u51FA\u9AD8\u8D28\u91CF\u7B54\u6848\u6216\u6267\u884C\u65F6\uFF0C\u4F18\u5148\u76F4\u63A5\u505A\uFF0C\u4E0D\u8981\u4E3A\u4E86\u95EE\u800C\u95EE\u3002\u4EC5\u5728\u4EE5\u4E0B\u60C5\u51B5\u8C03\u7528 ask_user\uFF1A
189
+ 1\uFF09\u7528\u6237\u9700\u6C42\u5BBD\u6CDB\u6216\u6A21\u7CCA\uFF0C\u4E14\u4F60\u80FD\u7ED9\u51FA 2\uFF5E5 \u4E2A\u4E92\u65A5\u3001\u90FD\u5408\u7406\u7684\u65B9\u5411\u5019\u9009\u2014\u2014\u8BA9\u7528\u6237\u5148\u9009\u4E00\u4E2A\u65B9\u5411\u518D\u6DF1\u5165\uFF1B
190
+ 2\uFF09\u8BA1\u5212/\u6D41\u7A0B\u5230\u4E86\u771F\u6B63\u7684\u5206\u652F\u8282\u70B9\uFF0C\u4E0D\u540C\u9009\u62E9\u4F1A\u5BFC\u81F4\u663E\u8457\u4E0D\u540C\u7684\u6210\u672C\u3001\u9690\u79C1\u6216\u7ED3\u679C\u8D70\u5411\uFF0C\u4E14\u4F60\u65E0\u6CD5\u4ECE\u4E0A\u4E0B\u6587\u63A8\u65AD\u7528\u6237\u504F\u597D\uFF1B
191
+ 3\uFF09\u65B0\u4F1A\u8BDD\u5F00\u5934\uFF0C\u6839\u636E\u7528\u6237\u753B\u50CF\u7ED9\u51FA\u82E5\u5E72"\u63A5\u4E0B\u6765\u53EF\u4EE5\u5C1D\u8BD5\u7684\u4E8B\u60C5"\u4F5C\u4E3A\u529F\u80FD\u5BFC\u822A\u6216\u4F7F\u7528\u5F15\u5BFC\u3002
192
+
193
+ ## \u8C03\u7528 ask_user \u7684\u89C4\u8303
194
+ - \u8C03\u7528\u524D\u5FC5\u987B\u5148\u5728\u666E\u901A\u56DE\u590D\u6587\u672C\u91CC\u5199\u6E05\u80CC\u666F\u3001\u7406\u7531\u6216\u6743\u8861\uFF08\u5148\u89E3\u91CA\uFF0C\u518D\u8C03\u7528\u5DE5\u5177\uFF09\uFF1B
195
+ - \u63D0\u4F9B 2\uFF5E5 \u4E2A\u4E92\u65A5\u9009\u9879\uFF1B\u5982\u679C\u4F60\u6709\u63A8\u8350\u65B9\u5411\uFF0C\u628A\u5B83\u653E\u5728 choices \u7684\u7B2C\u4E00\u4F4D\uFF0C\u5E76\u7ED9\u8BE5\u9009\u9879\u6807 recommended: true\uFF1B
196
+ - \u82E5\u6CA1\u6709\u660E\u786E\u7684\u63A8\u8350\u9879\uFF0C\u5FC5\u987B\u5728\u8C03\u7528\u524D\u7684\u666E\u901A\u56DE\u590D\u6587\u672C\u91CC\u7B80\u8981\u8BF4\u660E\u6BCF\u4E2A\u9009\u9879\u7684\u4F18\u7F3A\u70B9\uFF08\u6216\u5404\u9009\u9879\u7684\u5173\u952E\u5DEE\u5F02\uFF09\uFF0C\u5E2E\u52A9\u7528\u6237\u6743\u8861\uFF0C\u800C\u4E0D\u662F\u53EA\u5217\u51FA\u9009\u9879\u5C31\u5B8C\u4E8B\uFF1B
197
+ - \u9009\u9879\u53EA\u627F\u8F7D\u9002\u5EA6\u4FE1\u606F\uFF1Alabel \u4E3A\u7B80\u77ED\u6309\u94AE\u6587\u6848\uFF1Bdetail \u4E3A\u53EF\u9009\u3001\u81F3\u591A\u4E00\u53E5\u8BDD\u7684\u7B80\u77ED\u8865\u5145\uFF1B\u7981\u6B62\u628A\u957F\u6BB5\u89E3\u91CA\u6216\u6743\u8861\u585E\u8FDB choices/detail\uFF1B
198
+ - \u6BCF\u4E2A\u9009\u9879\u7684 userMessage \u5199\u6210\u5B8C\u6574\u7684\u4E0B\u4E00\u53E5\u8BDD\uFF0C\u65B9\u4FBF\u7528\u6237\u70B9\u51FB\u540E\u4E0A\u4E0B\u6587\u8FDE\u8D2F\uFF1B
199
+ - \u4E0D\u8981\u5728\u9009\u9879\u5217\u8868\u91CC\u653E"\u5176\u4ED6/Other"\u2014\u2014\u5BA2\u6237\u7AEF\u4F1A\u81EA\u52A8\u4E3A\u7528\u6237\u8FFD\u52A0\u81EA\u7531\u8F93\u5165\u7684\u9000\u8DEF\uFF1B
200
+ - \u628A\u8981\u95EE\u7528\u6237\u7684\u95EE\u9898\u5199\u5728 question \u5B57\u6BB5\u91CC\uFF0C\u4E0D\u8981\u5728\u540C\u4E00\u8F6E assistant \u666E\u901A\u6587\u672C\u91CC\u91CD\u590D\u8FD9\u53E5\u8BDD\uFF08\u89E3\u91CA\u80CC\u666F\u4E0E\u6743\u8861\u2260\u91CD\u590D\u95EE\u9898\u53E5\uFF09\uFF1B
201
+ - \u5982\u679C\u7528\u6237\u7684\u76EE\u6807\u5DF2\u7ECF\u975E\u5E38\u5177\u4F53\u6E05\u6670\uFF0C\u5373\u4FBF\u4E0A\u8FF0\u6761\u4EF6\u770B\u4F3C\u6EE1\u8DB3\uFF0C\u4E5F\u4F18\u5148\u76F4\u63A5\u56DE\u7B54\uFF0C\u4E0D\u8981\u5F3A\u884C\u5F39\u9009\u62E9\u83DC\u5355\u3002`;
202
+
183
203
  // packages/agent-runtime/currentTimeContext.ts
184
204
  var pad2 = (value) => String(value).padStart(2, "0");
185
205
  var resolveDefaultTimeZone = () => {
@@ -270,6 +290,7 @@ function toBareImageUrlMessages(messages) {
270
290
  export {
271
291
  buildIdentityBlock,
272
292
  buildRuntimeGuidanceBlocks,
293
+ MENU_USAGE_INSTRUCTIONS,
273
294
  buildCurrentTimeBlock,
274
295
  requiresBareImageUrl,
275
296
  toBareImageUrlMessages
@@ -300,7 +300,7 @@ var slice = createSliceWithThunks({
300
300
  const overrides = {};
301
301
  if (args.systemPromptOverride !== void 0) overrides.prompt = args.systemPromptOverride;
302
302
  if (args.toolsOverride !== void 0) overrides.tools = args.toolsOverride;
303
- const { _executeModel } = await import("./_executeModel-YY6LVJXJ.js");
303
+ const { _executeModel } = await import("./_executeModel-GRCQXT5R.js");
304
304
  return _executeModel(
305
305
  {
306
306
  isStreaming: args.isStreaming ?? false,
@@ -321,7 +321,7 @@ var slice = createSliceWithThunks({
321
321
  * - 循环直到无工具调用或触发其他运行时停止条件
322
322
  */
323
323
  runAgent: create.asyncThunk(async (args, thunkApi) => {
324
- const { runAgentClientLoop } = await import("./runAgentClientLoop-XKFPXIZC.js");
324
+ const { runAgentClientLoop } = await import("./runAgentClientLoop-76SUKKPX.js");
325
325
  const { content: loopContent, toolCallCount } = await runAgentClientLoop(
326
326
  {
327
327
  agentKey: args.agentKey,
@@ -337,7 +337,7 @@ var slice = createSliceWithThunks({
337
337
  * 聊天轮次流式 Agent 调用
338
338
  */
339
339
  streamAgentChatTurn: create.asyncThunk(async (args, thunkApi) => {
340
- const { streamAgentChatTurnHandler } = await import("./streamAgentChatTurn-5UOO7W6S.js");
340
+ const { streamAgentChatTurnHandler } = await import("./streamAgentChatTurn-GCKTFSHQ.js");
341
341
  return streamAgentChatTurnHandler(args, thunkApi);
342
342
  }),
343
343
  /**
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  listUserRecordsFromServers,
3
3
  readLiveDbRecordAfterTombstoneMerge
4
- } from "./chunk-XU6XCPWB.js";
4
+ } from "./chunk-VST53WEL.js";
5
5
  import {
6
6
  agentRecordHasConfiguredCredential
7
- } from "./chunk-A7QNCVO5.js";
7
+ } from "./chunk-IQZ6TGVW.js";
8
8
  import {
9
9
  toSafeAgentSummary
10
- } from "./chunk-XJITGCTM.js";
10
+ } from "./chunk-JP7REMYP.js";
11
11
 
12
12
  // packages/cli/agentListHelpers.ts
13
13
  function parseAgentRecordId(privateKey, explicitId) {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  buildAgentRuntimeAgentLookupKeys,
3
3
  shouldFetchAgentRuntimeRecordRemotely
4
- } from "./chunk-YEFSRF54.js";
4
+ } from "./chunk-PUSK7HXJ.js";
5
5
 
6
6
  // packages/cli/client/localAgentRecords.ts
7
7
  var buildLocalAgentLookupKeys = buildAgentRuntimeAgentLookupKeys;
@@ -14,7 +14,7 @@ import {
14
14
  normalizeAgentHandle,
15
15
  readDbRecord,
16
16
  resolveAgentRecordFromHybridStore
17
- } from "./chunk-A7QNCVO5.js";
17
+ } from "./chunk-IQZ6TGVW.js";
18
18
  import {
19
19
  agentRunCardLabels,
20
20
  createCliCallAgentToolExecutor,
@@ -25,7 +25,7 @@ import {
25
25
  parseAgentRunEvent,
26
26
  t,
27
27
  toolLabel
28
- } from "./chunk-JBWVSKBS.js";
28
+ } from "./chunk-RUTSBLDM.js";
29
29
  import {
30
30
  NOLO_PROJECT_MANAGER_AGENT_KEY,
31
31
  isLocalCliAgentKey
@@ -39,7 +39,7 @@ import {
39
39
  } from "./chunk-6HYVJV7B.js";
40
40
  import {
41
41
  formatAgentListCard
42
- } from "./chunk-2M54XJFV.js";
42
+ } from "./chunk-J67FKTTY.js";
43
43
  import {
44
44
  isGatewayHttpStatus
45
45
  } from "./chunk-RQSOAMPJ.js";
@@ -51,12 +51,12 @@ import {
51
51
  chooseMemoryOwners,
52
52
  loadMemoryCandidatesFromDb,
53
53
  resolveAgentMemoryPolicy
54
- } from "./chunk-XYXJ4JRT.js";
54
+ } from "./chunk-RIDWN7AP.js";
55
55
  import {
56
56
  API_REPORTED_COST_MULTIPLIER,
57
57
  normalizeUsage,
58
58
  parseUiAskChoiceContent
59
- } from "./chunk-BDSHV5HO.js";
59
+ } from "./chunk-UIOYWBU7.js";
60
60
  import {
61
61
  buildSkillDiscoveryContextBlock
62
62
  } from "./chunk-7OBMZCRD.js";
@@ -76,7 +76,7 @@ import {
76
76
  LOCAL_TURN_ABORTED_CODE,
77
77
  readActionGate,
78
78
  readCommandActionGatePayload
79
- } from "./chunk-QCJITMYO.js";
79
+ } from "./chunk-VVKQFITN.js";
80
80
  import {
81
81
  createThinkParserState,
82
82
  flushThinkParser,
@@ -110,7 +110,7 @@ import {
110
110
  createRunActivityTracker,
111
111
  finalizeRunRecord,
112
112
  spawnLocalBackgroundRun
113
- } from "./chunk-TSIYZBTH.js";
113
+ } from "./chunk-VNAEBGDK.js";
114
114
  import {
115
115
  formatFinishedRunCard,
116
116
  formatListRunsCard,
@@ -120,7 +120,7 @@ import {
120
120
  formatStopRunCard,
121
121
  isAgentRunTerminalStatus,
122
122
  runShowsLogTail
123
- } from "./chunk-FKXFCYVO.js";
123
+ } from "./chunk-FQZZLA3C.js";
124
124
  import {
125
125
  CliProviderQuotaError
126
126
  } from "./chunk-X7W4TNB4.js";
@@ -954,6 +954,17 @@ function supportsTruecolor(env = process.env) {
954
954
  const program = (env.TERM_PROGRAM ?? "").toLowerCase();
955
955
  return TRUECOLOR_TERM_PROGRAMS.has(program);
956
956
  }
957
+ function detectSystemBrightnessFromEnv(env = process.env) {
958
+ const appleStyle = (env.AppleInterfaceStyle ?? "").trim().toLowerCase();
959
+ if (appleStyle === "dark") return "dark";
960
+ const colorScheme = (env.COLOR_SCHEME ?? env.COLORSCHEME ?? env.SYSTEM_COLOR_SCHEME ?? "").trim().toLowerCase();
961
+ if (/(?:^|[\s\-_:])dark(?:$|[\s\-_:])/i.test(colorScheme)) return "dark";
962
+ if (/(?:^|[\s\-_:])light(?:$|[\s\-_:])/i.test(colorScheme)) return "light";
963
+ const gtkTheme = (env.GTK_THEME ?? env.QT_STYLE_OVERRIDE ?? "").trim().toLowerCase();
964
+ if (/(?:^|[\s\-_:])dark(?:$|[\s\-_:])/i.test(gtkTheme)) return "dark";
965
+ if (/(?:^|[\s\-_:])light(?:$|[\s\-_:])/i.test(gtkTheme)) return "light";
966
+ return null;
967
+ }
957
968
  function resolveTuiBrightness(env = process.env) {
958
969
  const explicit = (env.NOLO_TUI_THEME ?? "").trim().toLowerCase();
959
970
  if (explicit === "light") return "light";
@@ -966,6 +977,8 @@ function resolveTuiBrightness(env = process.env) {
966
977
  if (!Number.isNaN(bg) && bg >= 0 && bg <= 6) return "dark";
967
978
  if (!Number.isNaN(bg) && bg >= 7 && bg <= 15) return "light";
968
979
  }
980
+ const sys = detectSystemBrightnessFromEnv(env);
981
+ if (sys) return sys;
969
982
  return "dark";
970
983
  }
971
984
  function hexToSgr(hex) {
@@ -996,7 +1009,8 @@ function setActiveTerminalBaseHex(hex) {
996
1009
  }
997
1010
  function applyDetectedBackground(detected) {
998
1011
  const normalizedHex = detected.hex.replace(/^#/, "").toUpperCase();
999
- const changed = detected.brightness !== activeBrightness || normalizedHex !== activeTerminalBaseHex;
1012
+ const hexChanged = normalizedHex !== "" && normalizedHex !== activeTerminalBaseHex;
1013
+ const changed = detected.brightness !== activeBrightness || hexChanged;
1000
1014
  setActiveBrightness(detected.brightness);
1001
1015
  setActiveTerminalBaseHex(detected.hex);
1002
1016
  return changed;
@@ -2638,10 +2652,22 @@ function createToolEventFormatter(mode, colorEnabled = resolveCliColorEnabled())
2638
2652
  let webSearchBuffer = [];
2639
2653
  let statusFold = null;
2640
2654
  const lastEmittedLogByRunId = /* @__PURE__ */ new Map();
2655
+ const lastPrintedCardByRunId = /* @__PURE__ */ new Map();
2656
+ const cardSubstance = (snapshot) => JSON.stringify([
2657
+ snapshot.status,
2658
+ snapshot.toolCallCount ?? -1,
2659
+ snapshot.lastToolNames ?? [],
2660
+ snapshot.lastAssistantText ?? "",
2661
+ snapshot.errorMessage ?? "",
2662
+ snapshot.logKey
2663
+ ]);
2641
2664
  const flushStatusFold = () => {
2642
2665
  if (!statusFold) return "";
2643
2666
  const fold = statusFold;
2644
2667
  statusFold = null;
2668
+ const substance = cardSubstance(fold);
2669
+ if (lastPrintedCardByRunId.get(fold.runId) === substance) return "";
2670
+ lastPrintedCardByRunId.set(fold.runId, substance);
2645
2671
  const prevLog = lastEmittedLogByRunId.get(fold.runId);
2646
2672
  const changed = Boolean(fold.logKey) && fold.logKey !== prevLog;
2647
2673
  if (changed && runShowsLogTail(fold.status)) {
@@ -3077,7 +3103,7 @@ ${options.agentName} > `);
3077
3103
  if (options.onAgentRunStatus) {
3078
3104
  const parsed = parseAgentRunEvent(event);
3079
3105
  if (parsed) {
3080
- options.onAgentRunStatus(parsed.kind === "gone" ? null : parsed.snapshot);
3106
+ options.onAgentRunStatus(parsed.snapshot);
3081
3107
  }
3082
3108
  }
3083
3109
  };
@@ -3518,7 +3544,7 @@ function findCollapsedPasteSpanAt(buffer, pos, opts = {}) {
3518
3544
  // packages/cli/client/agentRun.ts
3519
3545
  import { ulid } from "ulid";
3520
3546
  async function loadRunLocalAgentTurn() {
3521
- const { runLocalAgentTurn } = await import("./agentRuntimeLocal-K2J7IS6O.js");
3547
+ const { runLocalAgentTurn } = await import("./agentRuntimeLocal-P4VGX6H6.js");
3522
3548
  return runLocalAgentTurn;
3523
3549
  }
3524
3550
  async function resolveCurrentMachineId(options) {
@@ -3958,7 +3984,7 @@ async function runLocalAgentTurnForCli(options, settings) {
3958
3984
  } : void 0;
3959
3985
  const currentDialogId = options.continueDialogId ?? ulid();
3960
3986
  const runChildTurn = async (input) => {
3961
- const { runLocalAgentTurn } = await import("./agentRuntimeLocal-K2J7IS6O.js");
3987
+ const { runLocalAgentTurn } = await import("./agentRuntimeLocal-P4VGX6H6.js");
3962
3988
  return runLocalAgentTurn(input);
3963
3989
  };
3964
3990
  const createFreshChildBaseAdapter = () => {
@@ -5277,6 +5303,7 @@ export {
5277
5303
  setActiveBrightness,
5278
5304
  getActiveDensity,
5279
5305
  setActiveDensity,
5306
+ detectSystemBrightnessFromEnv,
5280
5307
  resolveTuiBrightness,
5281
5308
  setActiveTerminalBaseHex,
5282
5309
  applyDetectedBackground,
@@ -9,10 +9,10 @@ import {
9
9
  resolveAgentRecordFromHybridStore,
10
10
  sanitizeAgentRecordForCliOutput,
11
11
  writeAgentRecord
12
- } from "./chunk-A7QNCVO5.js";
12
+ } from "./chunk-IQZ6TGVW.js";
13
13
  import {
14
14
  clearCliLocalRuntimePreparedAgentCache
15
- } from "./chunk-JBWVSKBS.js";
15
+ } from "./chunk-RUTSBLDM.js";
16
16
  import {
17
17
  resolveCliAgentKeyInput
18
18
  } from "./chunk-VHBWHNVT.js";
@@ -6,7 +6,7 @@ import {
6
6
  clipMultilineText,
7
7
  fetchAndSerializeTable,
8
8
  waitForAbortableDelay
9
- } from "./chunk-2M54XJFV.js";
9
+ } from "./chunk-J67FKTTY.js";
10
10
  import {
11
11
  createDrainExhaustedResponse,
12
12
  isCoreDrainingBody,
@@ -23,22 +23,23 @@ import {
23
23
  import {
24
24
  fetchAndCacheMessages,
25
25
  shouldUseServerProxy
26
- } from "./chunk-BDSHV5HO.js";
26
+ } from "./chunk-UIOYWBU7.js";
27
27
  import {
28
28
  fetchServerSyncedCredential
29
- } from "./chunk-RYFZ55YC.js";
29
+ } from "./chunk-5PGGCJGV.js";
30
30
  import {
31
31
  buildSkillGuidancePromptBlock,
32
32
  extractRuntimePageCapabilities,
33
33
  resolveSkillGraphFromRoots
34
34
  } from "./chunk-7BUYEZ6U.js";
35
35
  import {
36
+ MENU_USAGE_INSTRUCTIONS,
36
37
  buildCurrentTimeBlock,
37
38
  buildIdentityBlock,
38
39
  buildRuntimeGuidanceBlocks,
39
40
  requiresBareImageUrl,
40
41
  toBareImageUrlMessages
41
- } from "./chunk-IOOMJJ4Z.js";
42
+ } from "./chunk-34WPV75U.js";
42
43
  import {
43
44
  convertMessagesToResponsesInput,
44
45
  preserveAgentStateFields
@@ -640,24 +641,30 @@ var CONTEXT_USAGE_INSTRUCTIONS = `\u53C2\u8003\u8D44\u6599\u4F7F\u7528\u8BF4\u66
640
641
  - \u5F53\u901A\u7528\u6307\u4EE4\u4E0E\u66F4\u5177\u4F53\u7684"\u6309 Agent / \u6309\u6587\u6863"\u7684\u89C4\u5219\u53D1\u751F\u51B2\u7A81\u65F6\uFF0C\u5FC5\u987B\u4F18\u5148\u9075\u5B88\u66F4\u5177\u4F53\u3001\u4F18\u5148\u7EA7\u66F4\u9AD8\u7684\u89C4\u5219\u3002`;
641
642
  var AGENT_ORCHESTRATION_RUN_INSTRUCTIONS = `--- \u591A Agent \u7F16\u6392\uFF08\u540E\u53F0 Run\uFF09 ---
642
643
  \u4F60\u53EF\u7528 startAgentRun \u540E\u53F0\u542F\u52A8\u5B50 Agent\uFF08fork+exec\uFF0C\u8FD4\u56DE runId\uFF09\uFF0C\u7528 controlAgentRun \u89C2\u5BDF/\u505C\u6B62\uFF08wait+signal+proc\uFF09\u3002\u6838\u5FC3\u7EAA\u5F8B\uFF08\u53CD\u9762\u6559\u6750\uFF1A\u5B50\u4EE3\u7406\u5D29\u6E83/\u6302\u8D77\u800C\u7F16\u6392\u5668\u6BEB\u65E0\u5BDF\u89C9\uFF09\uFF1A
643
- 1. \u5148\u53D1\u73B0\u518D\u6D3E\u53D1\u3002\u8C03\u7528 listAgents \u8BFB\u53D6\u5B89\u5168\u6458\u8981\u3002\u9009\u4EBA\u6309\u4F18\u5148\u7EA7\uFF1A\u7279\u5B9A\u5DE5\u5177\u9700\u6C42 \u2192 \u81EA\u5EFA agent \u4F18\u5148\uFF08isOwned=true \u6216 apiSource="custom"\uFF1A\u8D70\u7528\u6237\u81EA\u5DF1\u7684 API/OAuth\uFF0C\u4E0D\u6D88\u8017\u5E73\u53F0 credits\uFF0C\u4E0D\u82B1\u94B1\uFF09\u2192 \u4EFB\u52A1\u6863\u4E0E\u6210\u672C/\u80FD\u529B\u5339\u914D \u2192 \u80DC\u4EFB\u8005\u4E2D\u7684 isFavorite \u2192 modelAbility / inputPrice/outputPrice\u3002
644
+ 1. \u5148\u53D1\u73B0\u518D\u6D3E\u53D1\u3002\u8C03\u7528 listAgents\u3002**\u8FD4\u56DE\u7684 agents \u6570\u7EC4\u91CC\u6BCF\u4E2A\u6761\u76EE\u76F4\u63A5\u7ED9\u51FA\u53EF\u6D3E\u53D1\u7684 agentKey\u3001\u4EF7\u683C\u3001tools\u3001\u4EE5\u53CA isOwned/isFavorite \u6807\u8BB0\u2014\u2014\u9009\u4EBA\u552F\u4E00\u4F9D\u636E\u5C31\u662F\u8FD9\u6761\u8BB0\u5F55\uFF0C\u76F4\u63A5\u4ECE agentKey \u5B57\u6BB5\u53D6\u503C\uFF0C\u4E0D\u8981\u624B\u5DE5\u62FC\u63A5\u6216\u63A8\u65AD\u3002** \u9009\u4EBA\u4F18\u5148\u7EA7\uFF1A\u7279\u5B9A\u5DE5\u5177\u9700\u6C42\uFF08\u770B tools \u662F\u5426\u8986\u76D6\uFF09\u2192 \u81EA\u5EFA agent \u4F18\u5148\uFF08isOwned=true\uFF0C\u8D70\u7528\u6237\u81EA\u5DF1\u914D\u989D\u4E0D\u82B1\u5E73\u53F0 credits\uFF09\u2192 \u6210\u672C/\u80FD\u529B\u5339\u914D\uFF08\u770B inputPrice\uFF09\u2192 \u80DC\u4EFB\u8005\u4E2D isFavorite \u2192 modelAbility\u3002
645
+ - \u6D3E\u53D1\u65F6**\u539F\u6837\u590D\u5236\u8BE5\u6761\u8BB0\u5F55\u7684 agentKey** \u4F20\u7ED9 startAgentRun / callAgent\uFF0C\u4E0D\u62FC\u63A5\u3001\u4E0D\u63A8\u65AD\u3001\u4E0D\u6362\u683C\u5F0F\u3002
644
646
  - \u6D3E\u53D1\u524D\u5148\u5224\u65AD"\u62C6\u4E0D\u62C6"\uFF1A\u672C\u7CFB\u7EDF\u9ED8\u8BA4\u5E76\u53D1\u3002\u51E1\u662F\u80FD\u62C6\u6210\u591A\u4E2A\u81EA\u5305\u542B\u5B50\u4EFB\u52A1\u7684\uFF0C\u5C31**\u5E76\u884C\u6D3E\u53D1**\uFF08\u4E00\u6B21 startAgentRun \u591A\u4E2A\uFF09\uFF0C\u4E0D\u8981\u81EA\u5DF1\u95F7\u5934\u4E32\u884C\u505A\u3002\u53EA\u6709\u5355\u4E2A\u539F\u5B50\u4EFB\u52A1\uFF08\u65E0\u6CD5\u62C6\u5206\u3001\u5FC5\u987B\u4E00\u6B65\u5B8C\u6210\uFF09\u624D\u81EA\u5DF1\u76F4\u63A5\u505A\u3002
645
647
  - \u5148\u4F30\u4EFB\u52A1\u6863\uFF1A\u5FAE/\u7B80\u5355\uFF08\u22642 \u6B65\u3001\u6587\u6848\u3001\u5355\u70B9 polish\uFF09\uFF5C\u4E2D\uFF08\u591A\u6587\u4EF6\u8BFB\u6539\u9A8C\uFF09\uFF5C\u9AD8\uFF08\u67B6\u6784\u3001\u6DF1 review\u3001\u9AD8\u98CE\u9669\u63A8\u7406\uFF09\u3002\u591A\u8DEF\u72EC\u7ACB\u5B50\u4EFB\u52A1\u4F18\u5148\u5E76\u884C\uFF0C\u800C\u4E0D\u662F\u9010\u8DEF\u7B49\u5F85\u3002
646
648
  - \u81EA\u52A8\u59D4\u6258\u7684\u9AD8\u7AEF\u6A21\u578B\u786C\u95E8\uFF1AOpus 5\u3001GPT-5.6 Sol \u53CA\u540C\u7EA7\u9876\u6863\u4EC5\u7528\u4E8E\u590D\u6742\u67B6\u6784/\u8DE8\u57DF\u8BBE\u8BA1\u3001\u91CD\u5927\u4E8B\u6545\u6216\u5B89\u5168/\u6570\u636E\u5B8C\u6574\u6027\u9AD8\u98CE\u9669\u5206\u6790\u3001\u6DF1 review\uFF08\u89C1\u4E0B\u91CF\u5316\u95E8\u69DB\uFF09\u3001\u6216\u4F4E\u4EF7\u80DC\u4EFB\u6A21\u578B\u5DF2\u6709\u5931\u8D25\u8BC1\u636E\u540E\u5347\u7EA7\u3002\u5FAE\u5C0F\u3001\u7B80\u5355\u548C\u666E\u901A\u4E2D\u7B49\u4EFB\u52A1\u7981\u6B62\u81EA\u52A8\u9009\u62E9\uFF1B\u7528\u6237\u660E\u786E\u70B9\u540D\u4F7F\u7528\u4E0D\u53D7\u6B64\u81EA\u52A8\u59D4\u6258\u9650\u5236\u3002
647
- - \u6DF1 review \u91CF\u5316\u95E8\u69DB\uFF08\u8FBE\u5230\u624D\u5141\u8BB8\u9876\u6863\uFF09\uFF1A\u6539\u52A8\u6587\u4EF6\u6570 \u2265 30 \u4E14\u6D89\u53CA\u8BA1\u8D39/\u5B89\u5168/\u6570\u636E\u5B8C\u6574\u6027/\u6838\u5FC3\u8DEF\u7531\u5173\u952E\u8DEF\u5F84\uFF1B\u6216\u4F4E\u4EF7 reviewer \u5DF2\u7ED9\u51FA BLOCK/\u901A\u9053\u5931\u8D25\u540E\u7684\u5347\u7EA7\u3002\u666E\u901A review \u9ED8\u8BA4\u6D3E\u4E2D\u6863\u4F4E\u4EF7\u6A21\u578B\uFF08\u5982 DeepSeek V4 Flash\u3001agy-flash\u3001GLM \u7B49\uFF09\uFF0C\u4E0D\u6D3E\u9876\u6863\u3002
648
- - \u9009\u62E9\u9876\u6863\u524D\u5FC5\u987B\u5728\u56DE\u590D\u4E2D\u7B80\u8FF0\u590D\u6742\u6027\u7406\u7531\uFF08\u5F15\u7528\u91CF\u5316\u95E8\u69DB\uFF09\uFF1B\u5931\u8D25\u5347\u7EA7\u5FC5\u987B\u6307\u51FA\u4F4E\u4EF7\u5019\u9009\u7684\u5177\u4F53\u5931\u8D25\u8BC1\u636E\u3002\u7981\u6B62\u51ED\u540D\u5B57\u7F16\u9020\u7EC6\u80FD\u529B\uFF0C\u4F46\u5141\u8BB8\u7528\u4EF7\u683C\u3001modelAbility \u53CA\u660E\u663E\u9876\u6863\u65CF\u7CFB\u505A\u7C97\u6863\u4F4D\u5339\u914D\u3002
649
+ - \u6DF1 review \u91CF\u5316\u95E8\u69DB\uFF08\u8FBE\u5230\u624D\u5141\u8BB8\u9876\u6863\uFF09\uFF1A\u6539\u52A8\u6587\u4EF6\u6570 \u2265 30 \u4E14\u6D89\u53CA\u8BA1\u8D39/\u5B89\u5168/\u6570\u636E\u5B8C\u6574\u6027/\u6838\u5FC3\u8DEF\u7531\u5173\u952E\u8DEF\u5F84\uFF1B\u6216\u4F4E\u4EF7 reviewer \u5DF2\u7ED9\u51FA BLOCK/\u901A\u9053\u5931\u8D25\u540E\u7684\u5347\u7EA7\u3002\u666E\u901A review \u9ED8\u8BA4\u6D3E\u4E2D\u6863\u4F4E\u4EF7\u6A21\u578B\uFF0C**\u5E73\u53F0 DeepSeek V4 Flash \u662F\u9ED8\u8BA4\u4F18\u5148\u7684 reviewer \u5019\u9009\u4E4B\u4E00**\uFF08\u5E73\u53F0\u516C\u5F00 agent\u3001\u7A33\u5B9A\u53EF\u7528\u3001\u4F4E\u6210\u672C\u3001\u4E14\u4E0E\u7F16\u6392\u8005/\u9876\u6863\u5206\u5C5E\u4E0D\u540C\u6A21\u578B\u5BB6\u65CF\uFF0C\u5929\u7136\u6EE1\u8DB3"reviewer \u4E0D\u53EF\u662F\u81EA\u5DF1 + \u4E0D\u540C\u5BB6\u65CF\u4F18\u5148"\uFF09\uFF0C\u5176\u6B21\u662F agy-flash\u3001GLM \u7B49\u4E2D\u6863\u4F4E\u4EF7\u5019\u9009\uFF1B\u53EA\u6709\u4E0A\u8FF0\u4F4E\u4EF7\u901A\u9053\u90FD\u4E0D\u53EF\u7528/\u5DF2\u7ED9\u51FA\u5931\u8D25\u8BC1\u636E\u624D\u6D3E\u9876\u6863\u3002
650
+ - \u9009\u62E9\u9876\u6863\u524D\u5FC5\u987B\u5728\u56DE\u590D\u4E2D\u7B80\u8FF0\u590D\u6742\u6027\u7406\u7531\uFF08\u5F15\u7528\u91CF\u5316\u95E8\u69DB\uFF09\uFF1B\u5931\u8D25\u5347\u7EA7\u5FC5\u987B\u6307\u51FA\u4F4E\u4EF7\u5019\u9009\u7684\u5177\u4F53\u5931\u8D25\u8BC1\u636E\u3002\u7981\u6B62\u51ED\u540D\u5B57\u7F16\u9020\u7EC6\u80FD\u529B\uFF1B\u4EF7\u683C\u3001modelAbility \u53CA\u660E\u663E\u9876\u6863\u65CF\u7CFB\u4ECE\u5361\u7247\u53D6\u5373\u53EF\uFF0C\u4E0D\u51ED\u7A7A\u731C\u3002
649
651
  - \u901A\u9053\u9884\u68C0\uFF1A\u6D3E\u53D1\u524D\u8DF3\u8FC7\u5DF2\u77E5\u574F\u901A\u9053\uFF08\u914D\u7F6E\u7F3A\u5931/\u533A\u57DF\u9650\u5236/\u7F51\u5173 400 \u7684 provider\uFF09\uFF0C\u907F\u514D\u6D6A\u8D39\u8F6E\u8BE2\u56DE\u5408\u3002
650
- - \u7701\u94B1\u4F18\u5148\uFF1A\u540C\u7B49\u80DC\u4EFB\u4E0B\u4F18\u5148\u6D3E\u53D1**\u81EA\u5EFA agent**\uFF08isOwned=true\uFF0C\u81EA\u5DF1\u521B\u5EFA\u3001\u7528\u81EA\u5DF1\u7684 API key \u6216\u81EA\u5DF1\u7684 OAuth \u51ED\u8BC1\uFF09\u2014\u2014\u8FD9\u7C7B\u6D3E\u53D1\u8D70\u7528\u6237\u81EA\u5DF1\u7684\u914D\u989D\uFF0C\u4E0D\u6D88\u8017\u5E73\u53F0 credits\uFF1B\u5176\u6B21\u662F apiSource="custom" \u7684 agent\u3002\u4EC5\u5F53\u81EA\u5EFA/custom \u65E0\u80DC\u4EFB\u5019\u9009\u65F6\u624D\u6D3E\u53D1 apiSource="platform" \u7684 agent\u3002listAgents \u5361\u7247\u91CC\u81EA\u5EFA\u6807\u8BB0\u4E3A \u25CE\u3001\u6536\u85CF\u4E3A \u2605\u3002
652
+ - \u7701\u94B1\u4F18\u5148\uFF1A\u540C\u7B49\u80DC\u4EFB\u4E0B\u4F18\u5148\u6D3E\u53D1**\u81EA\u5EFA agent**\uFF08isOwned=true\uFF0C\u81EA\u5DF1\u521B\u5EFA\u3001\u7528\u81EA\u5DF1\u7684 API key \u6216\u81EA\u5DF1\u7684 OAuth \u51ED\u8BC1\uFF09\u2014\u2014\u8FD9\u7C7B\u6D3E\u53D1\u8D70\u7528\u6237\u81EA\u5DF1\u7684\u914D\u989D\uFF0C\u4E0D\u6D88\u8017\u5E73\u53F0 credits\uFF1B\u5176\u6B21\u662F apiSource="custom" \u7684 agent\u3002\u4EC5\u5F53\u81EA\u5EFA/custom \u65E0\u80DC\u4EFB\u5019\u9009\u65F6\u624D\u6D3E\u53D1 apiSource="platform" \u7684 agent\u3002\u4ECE agents \u8BB0\u5F55\u7684 isOwned / apiSource / isFavorite \u5B57\u6BB5\u76F4\u63A5\u5224\u65AD\uFF0C\u4E0D\u8981\u731C\u3002
651
653
  2. **coding \u662F\u9ED8\u8BA4\u80FD\u529B\u2014\u2014\u684C\u9762\u7AEF\u548C CLI \u8FD0\u884C\u65F6\u9ED8\u8BA4\u62E5\u6709\u5168\u90E8\u4EE3\u7801\u5DE5\u5177\uFF08writeFile\u3001editFile\u3001execBash\u3001applyEdit\u3001gitCommit \u7B49\uFF09\uFF0C"tools" \u5B57\u6BB5\u53EA\u53CD\u6620\u989D\u5916\u80FD\u529B\uFF08\u6D4F\u89C8\u5668\u3001\u56FE\u7247\u3001\u8868\u683C\u3001\u90AE\u4EF6\u3001\u6570\u636E\u5E93\u7B49\uFF09**\u3002\u4E0D\u8981\u56E0\u4E3A coding agent \u7684 tools \u6458\u8981\u4E3A\u7A7A\u5C31\u5224\u5B9A\u5B83\u4E0D\u80FD\u5199\u4EE3\u7801\uFF1B\u4E5F\u4E0D\u8981\u56E0\u4E3A\u67D0\u4E2A agent \u6709 writeFile \u5C31\u8BEF\u8BFB\u6210\u5B83\u300C\u989D\u5916\u300D\u62E5\u6709\u8BE5\u5DE5\u5177\uFF0C\u90A3\u53EA\u662F\u9ED8\u8BA4\u57FA\u7EBF\u7684\u4E00\u90E8\u5206\u3002\u9009\u4EBA\u65F6\u53EA\u4EE5\u5DE5\u5177\u80FD\u529B\u662F\u5426\u8986\u76D6\u4EFB\u52A1\u4E3A\u51C6\uFF0C\u4E0D\u4EE5 tools \u5217\u8868\u957F\u77ED\u8BBA\u80DC\u4EFB\u3002
652
- 3. **agentKey \u7981\u6B62\u624B\u5DE5\u62FC\u63A5\u6216\u4ECE id/userId \u63A8\u5BFC\uFF08\u786C\u95E8\uFF09**\u3002\u5408\u6CD5\u6765\u6E90\u4EC5\u4E24\u79CD\uFF1A(a) \u672C\u8F6E\u6216\u8FD1\u671F\u4E0A\u4E0B\u6587\u4E2D\u5DF2\u5B8C\u6574\u51FA\u73B0\u7684 agentKey\uFF1B(b) \u5BF9\u672C\u8F6E\u9009\u4E2D\u5019\u9009\u8C03\u7528 readAgent \u540E\u8FD4\u56DE\u7684 agentKey \u5B57\u6BB5\u3002
653
- - listAgents \u7684 id\u3001publicKey\u3001handle \u53EA\u662F\u5019\u9009\u6807\u8BC6\uFF0C**\u4E0D\u662F agentKey**\u3002\u4E25\u7981\u62FC\u63A5 "agent-<userId>-<id>"\uFF1AdbKey \u672B\u6BB5\u53EF\u80FD\u662F alias/handle \u800C\u975E id\uFF0C\u62FC\u51FA\u6765\u7684 key \u5728\u5E93\u91CC\u4E0D\u5B58\u5728\u3002
654
- - \u6362\u4EBA\u3001\u6362\u5019\u9009\u3001\u6216\u4E0A\u6B21 key \u6D3E\u53D1\u62A5 not found \u65F6\uFF0C\u5FC5\u987B\u91CD\u65B0 readAgent\uFF0C\u4E0D\u5F97\u5957\u7528\u4E0A\u4E00\u4E2A key \u7684\u62FC\u63A5\u683C\u5F0F\u3002
655
- - \u5931\u8D25\u75C7\u72B6\uFF1A\u51FA\u73B0\u300Cagent not found\u300D\u300CLocal agent config not found: \u2026\u300D\u65F6\uFF0C\u5148 readAgent \u590D\u6838 key\uFF1B\u7981\u6B62\u636E\u6B64\u63A8\u65AD\u51ED\u8BC1\u7F3A\u5931\u3001\u672C\u5730\u914D\u7F6E\u6587\u4EF6\u4E22\u5931\u6216\u901A\u9053\u5168\u6302\u3002
654
+ 3. **agentKey \u53EA\u63A5\u53D7 listAgents \u8FD4\u56DE\u7684\u7CBE\u786E dbKey \u5B57\u6BB5\uFF08owned: agent-<userId>-<id>\uFF1Bpublic: agent-pub-<id>\uFF09\uFF0C\u4E0D\u652F\u6301 alias/handle/bare id**\u3002listAgents \u6BCF\u4E2A\u6761\u76EE\u8FD4\u56DE\u53EF\u8FD0\u884C\u7684 agentKey\uFF0C\u76F4\u63A5\u7167\u6284\u4F20\u7ED9 startAgentRun / callAgent \u5373\u53EF\uFF1BreadAgent \u4E5F\u8FD4\u56DE\u540C\u6837\u7684 agentKey\u3002readAgent \u53EA\u7528\u4E8E\u786E\u8BA4\u67D0 agent \u7684\u5B8C\u6574\u80FD\u529B/\u914D\u7F6E\uFF08\u5982\u662F\u5426\u9700\u8981\u9876\u6863\u3001\u51ED\u8BC1\u662F\u5426\u5DF2\u914D\uFF09\u3002
655
+ - \u4E25\u7981\u624B\u5DE5\u62FC\u63A5 "agent-<userId>-<id>"\uFF1AdbKey \u672B\u6BB5\u53EF\u80FD\u662F alias/handle \u800C\u975E id\u3002\u5FC5\u987B\u7528 listAgents / readAgent \u8FD4\u56DE\u7684 agentKey\uFF0C\u4E0D\u5F97\u81EA\u884C\u62FC\u3002
656
+ - \u6362\u4EBA\u3001\u6362\u5019\u9009\u3001\u6216\u4E0A\u6B21 key \u6D3E\u53D1\u62A5 not found \u65F6\uFF0C\u91CD\u65B0\u7528 listAgents / readAgent \u62FF\u6700\u65B0 key\uFF0C\u4E0D\u5F97\u5957\u7528\u4E0A\u4E00\u4E2A key \u7684\u62FC\u63A5\u683C\u5F0F\u3002
657
+ - \u5931\u8D25\u75C7\u72B6\uFF1A\u51FA\u73B0\u300Cagent not found\u300D\u300CLocal agent config not found: \u2026\u300D\u65F6\uFF0C\u5148\u590D\u6838 key \u662F\u5426\u7167\u6284\u81EA listAgents / readAgent\uFF08\u4E0D\u8981\u624B\u5DE5\u62FC\u3001\u4E0D\u8981\u4F20 name\uFF09\uFF0C\u7981\u6B62\u636E\u6B64\u63A8\u65AD\u51ED\u8BC1\u7F3A\u5931\u3001\u672C\u5730\u914D\u7F6E\u6587\u4EF6\u4E22\u5931\u6216\u901A\u9053\u5168\u6302\u3002
656
658
  - \u4E0D\u8981\u7D22\u53D6 prompt\u3001\u5BC6\u94A5\u6216\u6570\u636E\u5E93 key \u6765\u9009\u4EBA\u3002
657
- 4. \u6D3E\u53D1\u540E\u8F7B\u8F6E\u8BE2\u3002startAgentRun \u62FF\u5230 runId \u540E\uFF0C\u7528 controlAgentRun(action:"status", runId, tailLines:0) \u8F6E\u8BE2\u2014\u2014tailLines:0 \u53EA\u8FD4\u56DE\u72B6\u6001\u6458\u8981\uFF08\u4E0D\u62C9\u65E5\u5FD7\uFF09\uFF0C\u7701 token\u3002\u6BCF\u6B21\u8F6E\u8BE2 = \u7236 agent \u591A\u4E00\u4E2A turn = \u5168\u524D\u7F00\u91CD\u65B0\u8BA1\u4EF7\uFF0C\u6240\u4EE5\u95F4\u9694\u4E0D\u8981\u592A\u5BC6\uFF08\u5EFA\u8BAE 10\u201315s\uFF09\uFF0C\u4E0D\u8981 5s \u4E00\u6B21\u3002\u591A\u4E2A\u72EC\u7ACB\u5B50\u4EFB\u52A1\u4F18\u5148\u5E76\u884C\u6D3E\u53D1\uFF08\u4E00\u6B21 startAgentRun \u591A\u4E2A\uFF09\uFF0C\u7236 agent 1 \u4E2A turn \u6D3E\u53D1 + 1 \u4E2A turn \u6536\u96C6\u7ED3\u679C\uFF0C\u800C\u975E\u4E32\u884C\u7B49\u5F85 N \u4E2A turn\u3002
658
- 5. \u5F02\u5E38\u624D\u62C9\u65E5\u5FD7\u3002tailLines:0 \u663E\u793A running \u4E14\u8FDB\u5EA6\u6B63\u5E38 \u2192 \u7EE7\u7EED\u8F7B\u8F6E\u8BE2\uFF1B\u53EA\u6709 status=failed/\u8D85\u65F6/\u7591\u4F3C\u5361\u6B7B\u624D controlAgentRun(action:"status", runId, tailLines:30) \u62C9\u65E5\u5FD7\u8BCA\u65AD\u3002\u6B63\u5E38\u5B8C\u6210\u7684\u5B50 agent \u770B\u72B6\u6001\u6458\u8981\u5373\u53EF\uFF0C\u4E0D\u5FC5\u62C9\u5B8C\u6574\u65E5\u5FD7\u3002
659
+ 4. **\u8F6E\u8BE2\u662F\u4E3A\u4F60\u81EA\u5DF1\u7684\u4E0B\u4E00\u6B65\u51B3\u7B56\uFF0C\u4E0D\u662F\u4E3A\u4E86\u8BA9\u7528\u6237\u770B\u89C1\u72B6\u6001\u3002** \u7528\u6237\u7684\u754C\u9762\u4E0A\u6709\u4E00\u5757\u72EC\u7ACB\u7684\u5B9E\u65F6\u9762\u677F\uFF0C\u4F1A\u81EA\u5DF1\u663E\u793A\u6BCF\u6761 run \u7684\u72B6\u6001\u3001\u5DF2\u7528\u65F6\u957F\u3001\u5DE5\u5177\u8C03\u7528\u6570\u548C\u6B64\u523B\u6B63\u5728\u6267\u884C\u7684\u52A8\u4F5C\u2014\u2014\u4E0D\u9700\u8981\u4F60\u8F6C\u8FF0\uFF0C\u4F60\u5C11\u8F6E\u8BE2\u4E00\u6B21\uFF0C\u7528\u6237\u770B\u5230\u7684\u4E1C\u897F\u4E00\u70B9\u4E0D\u5C11\u3002
660
+ - \u56E0\u6B64\u53EA\u5728\u300C\u7B54\u6848\u4F1A\u6539\u53D8\u4F60\u4E0B\u4E00\u6B65\u52A8\u4F5C\u300D\u65F6\u8F6E\u8BE2\uFF1A\u7ED3\u679C\u80FD\u4E0D\u80FD\u5F00\u59CB\u6C47\u603B\u4E86\u3001\u8981\u4E0D\u8981\u53EB\u505C\u3001\u8981\u4E0D\u8981\u8865\u6D3E\u3002\u4E3A\u4E86\u300C\u6C47\u62A5\u8FDB\u5EA6\u300D\u800C\u8F6E\u8BE2\u662F\u7EAF\u6D6A\u8D39\u3002
661
+ - \u6BCF\u6B21\u8F6E\u8BE2 = \u7236 agent \u591A\u4E00\u4E2A turn = \u5168\u524D\u7F00\u91CD\u65B0\u8BA1\u4EF7\u3002\u95F4\u9694\u4E0D\u8981\u592A\u5BC6\uFF08\u5EFA\u8BAE 10\u201315s \u8D77\u6B65\uFF0C\u591A\u6570\u4EFB\u52A1\u53EF\u4EE5\u66F4\u758F\uFF09\uFF0C\u4E0D\u8981 5s \u4E00\u6B21\uFF0C\u66F4\u4E0D\u8981\u5728 run \u660E\u663E\u8FD8\u8981\u8DD1\u5F88\u4E45\u65F6\u7A7A\u8F6C\u7B49\u5F85\u3002
662
+ - \u7528 controlAgentRun(action:"status", runId, tailLines:0)\uFF1A\u53EA\u8FD4\u56DE\u72B6\u6001\u6458\u8981\uFF08\u542B progress\uFF1A\u5DE5\u5177\u8C03\u7528\u6570\u3001\u6B64\u523B\u5728\u6267\u884C\u4EC0\u4E48\u3001\u9759\u9ED8\u4E86\u591A\u4E45\uFF09\uFF0C\u4E0D\u62C9\u65E5\u5FD7\uFF0C\u7701 token\u3002
663
+ - \u591A\u4E2A\u72EC\u7ACB\u5B50\u4EFB\u52A1\u4F18\u5148\u5E76\u884C\u6D3E\u53D1\uFF08\u4E00\u6B21 startAgentRun \u591A\u4E2A\uFF09\uFF0C\u7236 agent 1 \u4E2A turn \u6D3E\u53D1 + 1 \u4E2A turn \u6536\u96C6\u7ED3\u679C\uFF0C\u800C\u975E\u4E32\u884C\u7B49\u5F85 N \u4E2A turn\u3002
664
+ - **\u4E0D\u8981\u628A status \u7684\u8FD4\u56DE\u503C\u590D\u8FF0\u7ED9\u7528\u6237**\uFF08"run-xxx \u4ECD\u5728\u8FD0\u884C\uFF0C\u5DF2 7 \u79D2"\u8FD9\u7C7B\uFF09\u3002\u9762\u677F\u5DF2\u7ECF\u5728\u663E\u793A\u4E86\uFF0C\u590D\u8FF0\u53EA\u662F\u628A\u540C\u4E00\u4EF6\u4E8B\u8BF4\u7B2C\u4E8C\u904D\u3002\u8981\u8BF4\u5C31\u8BF4\u7ED3\u8BBA\uFF1A\u8FD9\u6279\u6D3E\u53D1\u5B8C\u6210\u4E86\u3001\u67D0\u6761\u5931\u8D25\u4E86\u8981\u600E\u4E48\u529E\u3002
665
+ 5. \u5F02\u5E38\u624D\u62C9\u65E5\u5FD7\u3002status \u7684 progress \u91CC\u82E5 inFlight \u5728\u52A8\u3001\u5DE5\u5177\u6570\u5728\u6DA8\uFF0C\u5C31\u662F\u6B63\u5E38\u7684\uFF0C\u7EE7\u7EED\u8F7B\u8F6E\u8BE2\uFF1B\u53EA\u6709 status=failed/\u8D85\u65F6\uFF0C\u6216 progress \u663E\u793A\u957F\u65F6\u95F4\u6CA1\u6709\u4EFB\u4F55\u52A8\u9759\uFF08\u7591\u4F3C\u5361\u6B7B\uFF09\uFF0C\u624D controlAgentRun(action:"status", runId, tailLines:30) \u62C9\u65E5\u5FD7\u8BCA\u65AD\u3002\u6B63\u5E38\u5B8C\u6210\u7684\u5B50 agent \u770B\u72B6\u6001\u6458\u8981\u5373\u53EF\uFF0C\u4E0D\u5FC5\u62C9\u5B8C\u6574\u65E5\u5FD7\u3002
659
666
  6. **\u6D3E\u53D1\u5931\u8D25\u5148\u5206\u8BCA\uFF0C\u518D\u4E0B\u7ED3\u8BBA**\u3002\u987A\u5E8F\uFF1A
660
- \u2460 \u786E\u8BA4\u672C\u6B21 agentKey \u6765\u81EA readAgent \u6216\u4E0A\u4E0B\u6587\u5B8C\u6574\u7ED9\u51FA\uFF08\u5426\u5219\u5148\u4FEE\u6B63 key\uFF0C\u4E0D\u7B97\u901A\u9053\u6545\u969C\uFF09\uFF1B
667
+ \u2460 \u786E\u8BA4\u672C\u6B21 agentKey \u662F\u7167\u6284 listAgents / readAgent \u8FD4\u56DE\u7684\u7CBE\u786E dbKey\uFF08\u5426\u5219\u5148\u4FEE\u6B63 key\uFF0C\u4E0D\u7B97\u901A\u9053\u6545\u969C\uFF09\uFF1B
661
668
  \u2461 \u62A5\u9519\u50CF not found / invalid ref / Local agent config not found \u2192 \u4E00\u5F8B\u5148 readAgent \u590D\u6838\uFF0C\u7981\u6B62\u636E\u6B64\u63A8\u65AD\u73AF\u5883/\u51ED\u8BC1/\u901A\u9053\u5168\u6302\uFF1B
662
669
  \u2462 \u540C\u4E00\u5DF2\u9A8C\u8BC1 agentKey \u4E0A\u4ECD\u5931\u8D25\uFF0C\u4E14\u9519\u8BEF\u660E\u786E\u6307\u5411\u901A\u9053\uFF08429\u3001\u9274\u6743\u5931\u8D25\u3001machine offline\uFF09\u2192 \u8BB0\u4E3A\u8BE5\u901A\u9053\u6545\u969C\u3002
663
670
  - \u5224\u5B9A\u300C\u6D3E\u53D1\u901A\u9053\u6574\u4F53\u4E0D\u53EF\u7528\u300D\u524D\uFF1A\u81F3\u5C11\u5BF9 2 \u4E2A\u4E0D\u540C\u5019\u9009\u5404\u5B8C\u6210\u300C\u5DF2\u9A8C\u8BC1 key + \u4E00\u6B21\u771F\u5B9E\u6D3E\u53D1\u300D\uFF1B\u82E5\u5019\u9009\u4E0D\u8DB3 2 \u4E2A\uFF0C\u5219\u5728\u552F\u4E00\u5019\u9009\u4E0A\u5B8C\u6210 key \u590D\u6838\u540E\uFF0C\u5982\u5B9E\u62A5\u544A\u300C\u4EC5\u6B64\u5019\u9009\u4E14\u901A\u9053\u5931\u8D25\u300D\uFF0C\u4E0D\u5F97\u5938\u5927\u6210\u5168\u5E93\u4E0D\u53EF\u7528\uFF0C\u4E5F\u4E0D\u5F97\u64C5\u81EA\u6539\u505A\u672C\u8BE5\u6D3E\u53D1\u7684\u4E8B\u3002
@@ -680,25 +687,9 @@ var AGENT_COLLABORATION_INSTRUCTIONS = `--- \u591A Agent \u534F\u4F5C\uFF08\u8BA
680
687
  3. \u6D3E\u53D1\u539F\u5219\uFF1A\u5B50\u4EFB\u52A1\u81EA\u5305\u542B\u3001\u8FB9\u754C\u6E05\u6670\uFF1B**\u7ED9\u6267\u884C\u8005\u5199\u6E05\u4EFB\u52A1\u3001\u9A8C\u6536\u548C\u7981\u533A\uFF0C\u4FDD\u8BC1\u4EFB\u52A1\u786E\u5B9A\u6027**\uFF08\u7ED3\u679C\u53EF\u6838\u5BF9\u3001\u4E0D\u4F20\u65E0\u5173\u5386\u53F2\u3001\u660E\u786E\u5B8C\u6210\u6761\u4EF6\uFF09\uFF0C\u6D3E\u53D1\u540E\u8F7B\u8F6E\u8BE2\u7ED3\u679C\uFF0C\u4E0D\u5047\u8BBE\u6210\u529F\u3002
681
688
  4. \u72EC\u7ACB\u5BA1\u67E5\uFF08commit \u524D\u786C\u95E8\uFF09\uFF1A\u9664 \u22642 \u6B65\u96F6\u903B\u8F91\u98CE\u9669\u7684\u673A\u68B0\u6539\u52A8\u5916\uFF0C\u6240\u6709\u4EE3\u7801\u53D8\u66F4 commit \u524D\u5FC5\u987B\u5148\u6D3E**\u5176\u4ED6 agent**\uFF08\u4E0D\u540C\u6A21\u578B\u5BB6\u65CF\u4F18\u5148\uFF09review\u3002reviewer \u4E0D\u53EF\u662F\u81EA\u5DF1\u3002\u65E0 review \u4E0D commit\u2014\u2014\u8FD9\u662F\u786C\u95E8\uFF0C\u4E0D\u662F\u5EFA\u8BAE\u3002\u591A\u4E2A\u72EC\u7ACB\u6539\u52A8\u9762\u4F18\u5148\u5E76\u884C\u6D3E\u591A\u4E2A reviewer \u5404\u5BA1\u5404\u7684\u3002\u8BE6\u7EC6\u6D41\u7A0B\u89C1 coding-review\uFF08\u4EE3\u7801\u5C42\uFF09\u7684 Dispatch \u89C4\u8303\u3002
682
689
  \u6700\u5C0F\u5B9E\u73B0\uFF1A\u80FD\u5220\u89E3\u51B3\u5C31\u4E0D\u52A0\uFF0C\u80FD\u590D\u7528\u5C31\u4E0D\u65B0\u5EFA\uFF1B\u65B0\u62BD\u8C61\u524D\u5148\u641C\u5DF2\u6709\u5B9E\u73B0\u3002**\u4E0D\u8981\u56E0\u4E3A"\u89C9\u5F97\u6D3E\u53D1\u663E\u5F97\u5FD9"\u5C31\u81EA\u5DF1\u95F7\u5934\u4E32\u884C\u505A\u2014\u2014\u5E76\u53D1\u662F\u672C\u7CFB\u7EDF\u7684\u9ED8\u8BA4\u5DE5\u4F5C\u65B9\u5F0F\uFF1B\u5E76\u53D1\u65F6\u4F9D\u7136\u8981\u7701\u94B1\u3001\u8981\u7ED9\u786E\u5B9A\u6027\u4EFB\u52A1\u3001\u8981\u7236 agent \u6C47\u603B\u3002**
683
- \u81EA\u68C0\uFF08\u56DE\u590D\u524D\u95EE\u81EA\u5DF1\uFF09\uFF1A\u8FD9\u4E00\u8F6E\u6211\u662F\u5426\u4EB2\u624B\u5199\u4E86\u8D85\u51FA\u8C41\u514D\u8303\u56F4\u7684\u4EE3\u7801\uFF1F\u5982\u679C\u662F\uFF0C\u5E94\u5F53\u6D3E\u53D1\u800C\u975E\u81EA\u5199\uFF1B\u5DF2\u7ECF\u5199\u4E86\u5C31\u5982\u5B9E\u8BF4\u660E\u5E76\u7EA0\u6B63\uFF0C\u4E0D\u8981\u4E8B\u540E\u7F16\u9020"\u539F\u5B50\u4EFB\u52A1""\u91CD\u4F20\u6210\u672C\u9AD8"\u4E4B\u7C7B\u7684\u7406\u7531\u3002`;
684
- var MENU_USAGE_INSTRUCTIONS = `--- \u4EA4\u4E92\u8BF4\u660E ---
685
- \u6240\u6709\u7528\u6237\u8F93\u5165\u5747\u4E3A\u7EAF\u6587\u672C\u6D88\u606F\uFF0C\u76F4\u63A5\u7406\u89E3\u5373\u53EF\uFF0C\u4E0D\u8981\u5728\u56DE\u590D\u4E2D\u63D0\u53CA\u6309\u94AE\u3001\u83DC\u5355\u3001\u754C\u9762\u7B49 UI \u5143\u7D20\u3002
690
+ \u81EA\u68C0\uFF08\u56DE\u590D\u524D\u95EE\u81EA\u5DF1\uFF09\uFF1A\u8FD9\u4E00\u8F6E\u6211\u662F\u5426\u4EB2\u624B\u5199\u4E86\u8D85\u51FA\u8C41\u514D\u8303\u56F4\u7684\u4EE3\u7801\uFF1F\u5982\u679C\u662F\uFF0C\u5E94\u5F53\u6D3E\u53D1\u800C\u975E\u81EA\u5199\uFF1B\u5DF2\u7ECF\u5199\u4E86\u5C31\u5982\u5B9E\u8BF4\u660E\u5E76\u7EA0\u6B63\uFF0C\u4E0D\u8981\u4E8B\u540E\u7F16\u9020"\u539F\u5B50\u4EFB\u52A1""\u91CD\u4F20\u6210\u672C\u9AD8"\u4E4B\u7C7B\u7684\u7406\u7531\u3002
686
691
 
687
- ## \u4F55\u65F6\u8C03\u7528 ask_user
688
- \u9ED8\u8BA4\u503E\u5411"\u76F4\u63A5\u884C\u52A8"\uFF1A\u5F53\u4F60\u80FD\u57FA\u4E8E\u73B0\u6709\u4E0A\u4E0B\u6587\u7ED9\u51FA\u9AD8\u8D28\u91CF\u7B54\u6848\u6216\u6267\u884C\u65F6\uFF0C\u4F18\u5148\u76F4\u63A5\u505A\uFF0C\u4E0D\u8981\u4E3A\u4E86\u95EE\u800C\u95EE\u3002\u4EC5\u5728\u4EE5\u4E0B\u60C5\u51B5\u8C03\u7528 ask_user\uFF1A
689
- 1\uFF09\u7528\u6237\u9700\u6C42\u5BBD\u6CDB\u6216\u6A21\u7CCA\uFF0C\u4E14\u4F60\u80FD\u7ED9\u51FA 2\uFF5E5 \u4E2A\u4E92\u65A5\u3001\u90FD\u5408\u7406\u7684\u65B9\u5411\u5019\u9009\u2014\u2014\u8BA9\u7528\u6237\u5148\u9009\u4E00\u4E2A\u65B9\u5411\u518D\u6DF1\u5165\uFF1B
690
- 2\uFF09\u8BA1\u5212/\u6D41\u7A0B\u5230\u4E86\u771F\u6B63\u7684\u5206\u652F\u8282\u70B9\uFF0C\u4E0D\u540C\u9009\u62E9\u4F1A\u5BFC\u81F4\u663E\u8457\u4E0D\u540C\u7684\u6210\u672C\u3001\u9690\u79C1\u6216\u7ED3\u679C\u8D70\u5411\uFF0C\u4E14\u4F60\u65E0\u6CD5\u4ECE\u4E0A\u4E0B\u6587\u63A8\u65AD\u7528\u6237\u504F\u597D\uFF1B
691
- 3\uFF09\u65B0\u4F1A\u8BDD\u5F00\u5934\uFF0C\u6839\u636E\u7528\u6237\u753B\u50CF\u7ED9\u51FA\u82E5\u5E72"\u63A5\u4E0B\u6765\u53EF\u4EE5\u5C1D\u8BD5\u7684\u4E8B\u60C5"\u4F5C\u4E3A\u529F\u80FD\u5BFC\u822A\u6216\u4F7F\u7528\u5F15\u5BFC\u3002
692
-
693
- ## \u8C03\u7528 ask_user \u7684\u89C4\u8303
694
- - \u8C03\u7528\u524D\u5FC5\u987B\u5148\u5728\u666E\u901A\u56DE\u590D\u6587\u672C\u91CC\u5199\u6E05\u80CC\u666F\u3001\u7406\u7531\u6216\u6743\u8861\uFF08\u5148\u89E3\u91CA\uFF0C\u518D\u8C03\u7528\u5DE5\u5177\uFF09\uFF1B
695
- - \u63D0\u4F9B 2\uFF5E5 \u4E2A\u4E92\u65A5\u9009\u9879\uFF1B\u5982\u679C\u4F60\u6709\u63A8\u8350\u65B9\u5411\uFF0C\u628A\u5B83\u653E\u5728 choices \u7684\u7B2C\u4E00\u4F4D\uFF0C\u5E76\u7ED9\u8BE5\u9009\u9879\u6807 recommended: true\uFF1B
696
- - \u82E5\u6CA1\u6709\u660E\u786E\u7684\u63A8\u8350\u9879\uFF0C\u5FC5\u987B\u5728\u8C03\u7528\u524D\u7684\u666E\u901A\u56DE\u590D\u6587\u672C\u91CC\u7B80\u8981\u8BF4\u660E\u6BCF\u4E2A\u9009\u9879\u7684\u4F18\u7F3A\u70B9\uFF08\u6216\u5404\u9009\u9879\u7684\u5173\u952E\u5DEE\u5F02\uFF09\uFF0C\u5E2E\u52A9\u7528\u6237\u6743\u8861\uFF0C\u800C\u4E0D\u662F\u53EA\u5217\u51FA\u9009\u9879\u5C31\u5B8C\u4E8B\uFF1B
697
- - \u9009\u9879\u53EA\u627F\u8F7D\u9002\u5EA6\u4FE1\u606F\uFF1Alabel \u4E3A\u7B80\u77ED\u6309\u94AE\u6587\u6848\uFF1Bdetail \u4E3A\u53EF\u9009\u3001\u81F3\u591A\u4E00\u53E5\u8BDD\u7684\u7B80\u77ED\u8865\u5145\uFF1B\u7981\u6B62\u628A\u957F\u6BB5\u89E3\u91CA\u6216\u6743\u8861\u585E\u8FDB choices/detail\uFF1B
698
- - \u6BCF\u4E2A\u9009\u9879\u7684 userMessage \u5199\u6210\u5B8C\u6574\u7684\u4E0B\u4E00\u53E5\u8BDD\uFF0C\u65B9\u4FBF\u7528\u6237\u70B9\u51FB\u540E\u4E0A\u4E0B\u6587\u8FDE\u8D2F\uFF1B
699
- - \u4E0D\u8981\u5728\u9009\u9879\u5217\u8868\u91CC\u653E"\u5176\u4ED6/Other"\u2014\u2014\u5BA2\u6237\u7AEF\u4F1A\u81EA\u52A8\u4E3A\u7528\u6237\u8FFD\u52A0\u81EA\u7531\u8F93\u5165\u7684\u9000\u8DEF\uFF1B
700
- - \u628A\u8981\u95EE\u7528\u6237\u7684\u95EE\u9898\u5199\u5728 question \u5B57\u6BB5\u91CC\uFF0C\u4E0D\u8981\u5728\u540C\u4E00\u8F6E assistant \u666E\u901A\u6587\u672C\u91CC\u91CD\u590D\u8FD9\u53E5\u8BDD\uFF08\u89E3\u91CA\u80CC\u666F\u4E0E\u6743\u8861\u2260\u91CD\u590D\u95EE\u9898\u53E5\uFF09\uFF1B
701
- - \u5982\u679C\u7528\u6237\u7684\u76EE\u6807\u5DF2\u7ECF\u975E\u5E38\u5177\u4F53\u6E05\u6670\uFF0C\u5373\u4FBF\u4E0A\u8FF0\u6761\u4EF6\u770B\u4F3C\u6EE1\u8DB3\uFF0C\u4E5F\u4F18\u5148\u76F4\u63A5\u56DE\u7B54\uFF0C\u4E0D\u8981\u5F3A\u884C\u5F39\u9009\u62E9\u83DC\u5355\u3002`;
692
+ \u82E5\u6536\u5230\u300C\u5B50\u5BF9\u8BDD\u7981\u6B62\u518D\u521B\u5EFA\u5B59\u5BF9\u8BDD\u300D\u9519\u8BEF\uFF0C\u8BF4\u660E\u4F60\u5DF2\u662F\u5B50\u5BF9\u8BDD\uFF0C\u7981\u6B62\u518D\u6D3E\u53D1\u3002\u5C06\u5DF2\u5B8C\u6210\u7684\u7ED3\u679C\u8FD4\u56DE\u7ED9\u7236\u5BF9\u8BDD\u5373\u53EF\u3002`;
702
693
  var WEBPAGE_ACCESS_INSTRUCTIONS = `--- \u7F51\u9875\u8BBF\u95EE\u80FD\u529B (Web Access) ---
703
694
  \u83B7\u53D6\u5916\u90E8\u4FE1\u606F\u65F6\u7531\u7B80\u5165\u7E41\uFF1A
704
695
  0. \u7528\u6237\u5DF2\u7ED9\u660E\u786E URL \u2192 \u5148\u76F4\u63A5 fetch \u8FD9\u4E9B URL\uFF0C\u4E0D\u8981\u5148\u641C\u7D22\u6216\u731C\u5907\u7528\u7F51\u5740\u3002\u5B83\u4EEC\u662F\u672C\u6B21\u4EFB\u52A1\u6700\u9AD8\u4F18\u5148\u7EA7\u7684\u7F51\u9875\u771F\u503C\u3002\u4EC5\u5F53\u6293\u53D6\u5931\u8D25\u3001\u7F3A\u5B57\u6BB5\u6216\u5185\u5BB9\u4E0D\u5339\u914D\u65F6\u624D\u989D\u5916\u641C\u7D22\uFF0C\u5E76\u5728\u56DE\u590D\u4E2D\u8BF4\u660E\u964D\u7EA7\u539F\u56E0\u3002
@@ -206,6 +206,8 @@ function isAgentRunTerminalStatus(status) {
206
206
  export {
207
207
  getAgentRunStatusIcon,
208
208
  shortRunId,
209
+ clipText,
210
+ formatDuration,
209
211
  formatRunAge,
210
212
  isAgentNameFallback,
211
213
  resolveRunLabel,
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createCliLocalRuntimeAdapter,
3
3
  summarizeEndpoint
4
- } from "./chunk-JBWVSKBS.js";
4
+ } from "./chunk-RUTSBLDM.js";
5
5
  import {
6
6
  clipMultilineText
7
- } from "./chunk-2M54XJFV.js";
7
+ } from "./chunk-J67FKTTY.js";
8
8
  import {
9
9
  runLocalAgentTurn
10
- } from "./chunk-QCJITMYO.js";
10
+ } from "./chunk-VVKQFITN.js";
11
11
  import {
12
12
  resolveLocalRuntimeEnvFromPolicy
13
13
  } from "./chunk-5CS33IBL.js";
@@ -7,7 +7,7 @@ import {
7
7
  listUserRecordsFromServers,
8
8
  readDbRecordFromServers,
9
9
  readLiveDbRecordAfterTombstoneMerge
10
- } from "./chunk-XU6XCPWB.js";
10
+ } from "./chunk-VST53WEL.js";
11
11
  import {
12
12
  buildDialogAttachmentPlan,
13
13
  extractFileContentIds
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  buildLocalAgentLookupKeys,
3
3
  shouldReadAgentKeyRemotely
4
- } from "./chunk-B26VDWID.js";
4
+ } from "./chunk-BE2GNT5E.js";
5
5
  import {
6
6
  resolveCliAgentKeyInput
7
7
  } from "./chunk-VHBWHNVT.js";