nolo-cli 0.204.0-alpha.3 → 0.206.0

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 (86) hide show
  1. package/{_executeModel-ZUESBV6T.js → _executeModel-Y4Y6NSF2.js} +16 -16
  2. package/{agentDeleteCommand-INOBZ3HP.js → agentDeleteCommand-QDQJ3HRU.js} +22 -22
  3. package/{agentEmailCommands-J6UTZBJC.js → agentEmailCommands-CMMDVTMB.js} +24 -24
  4. package/{agentListCommands-6344UIVZ.js → agentListCommands-YVUCTMRI.js} +13 -13
  5. package/{agentMachineCommands-TE6IRTIB.js → agentMachineCommands-AHMFIF7U.js} +10 -10
  6. package/{agentProviderCommands-MEFUIECN.js → agentProviderCommands-SKW4L6NN.js} +2 -2
  7. package/{agentRecordCommands-34MHHVFX.js → agentRecordCommands-G6RARTFX.js} +22 -22
  8. package/{agentRunCommand-7OMDQBRA.js → agentRunCommand-G7IJ23OW.js} +23 -23
  9. package/{agentRuntimeLocal-EO6WCTF2.js → agentRuntimeLocal-7Q72MXKN.js} +8 -8
  10. package/{agentSlice-HUFGX25R.js → agentSlice-ZRGNTU3K.js} +1 -1
  11. package/{appDeleteCommands-3DCLKVYC.js → appDeleteCommands-ZUKOQOIM.js} +12 -12
  12. package/{appDeployCommands-X3MUBDOP.js → appDeployCommands-G5YC3DKA.js} +12 -12
  13. package/{appDeployStatusCommands-PXC3EHHS.js → appDeployStatusCommands-EMOTU2NU.js} +12 -12
  14. package/{appGetCommands-ETPPE6H7.js → appGetCommands-N3D2EBDM.js} +12 -12
  15. package/{appListCommands-OFIDLALN.js → appListCommands-DGSGMKJL.js} +12 -12
  16. package/{authCommand-KPTIANH2.js → authCommand-NZC3H2EN.js} +62 -8
  17. package/{chromeOpsCommands-O4J346EQ.js → chromeOpsCommands-ECVS6CAO.js} +1 -1
  18. package/{chunk-VXZ4YYNK.js → chunk-2U2DMUGG.js} +52 -37
  19. package/{chunk-266E37EL.js → chunk-354R5A62.js} +3 -3
  20. package/{chunk-33W4IFUU.js → chunk-5MXA4LWL.js} +1 -1
  21. package/{chunk-E4KACSRR.js → chunk-5OV4MVQK.js} +2 -2
  22. package/{chunk-IK6AAUGM.js → chunk-6AMR3AE6.js} +2 -2
  23. package/{chunk-QUJ3IHEK.js → chunk-767YOSGT.js} +2 -2
  24. package/{chunk-CJ37ZMCQ.js → chunk-7C45ONOU.js} +1 -1
  25. package/{chunk-BC4UX4EZ.js → chunk-7COVU5SP.js} +2 -2
  26. package/{chunk-CQHMBWZH.js → chunk-7NMNKOW5.js} +1 -1
  27. package/{chunk-EPJFGQYO.js → chunk-7T5TLIY4.js} +1 -1
  28. package/{chunk-SEEXRWNB.js → chunk-ACMRWLRR.js} +26 -20
  29. package/{chunk-BER2RSTL.js → chunk-DTLSKEXN.js} +2 -2
  30. package/{chunk-G7RFM5QA.js → chunk-EDSRC2JN.js} +2 -2
  31. package/{chunk-YR4MRACW.js → chunk-F6MQO3YY.js} +3 -3
  32. package/{chunk-IZLXIV5L.js → chunk-HSZ2YEPR.js} +1 -1
  33. package/{chunk-VCFU3BO5.js → chunk-JASKVAYJ.js} +2 -2
  34. package/{chunk-6I7ZP7KJ.js → chunk-JBWLZ3CB.js} +2 -2
  35. package/{chunk-UMIQZ7PX.js → chunk-JTLREMIA.js} +3 -3
  36. package/{chunk-M43VXSMX.js → chunk-JX2QFYIA.js} +2 -2
  37. package/{chunk-HNO2SEYI.js → chunk-KJCSY4TW.js} +8 -8
  38. package/{chunk-4KPB3KWX.js → chunk-LTI5T3A6.js} +309 -82
  39. package/{chunk-3MXJWFLO.js → chunk-MFUGGMIS.js} +1 -1
  40. package/{chunk-MZXWSY4E.js → chunk-MNWKNN6V.js} +1 -1
  41. package/{chunk-H7HWWNJB.js → chunk-PJILX6KS.js} +1 -1
  42. package/{chunk-E4LYPSYM.js → chunk-PPCUXO3E.js} +12 -0
  43. package/{chunk-NGJWYWCF.js → chunk-QEHXPNCZ.js} +5 -5
  44. package/{chunk-SXMTSDFS.js → chunk-RMLFNM3J.js} +2 -2
  45. package/{chunk-JH7KMNGT.js → chunk-RQDGDKFL.js} +1 -1
  46. package/{chunk-YPYNRTWB.js → chunk-SH52SBSW.js} +4 -4
  47. package/{chunk-DQ7PCRZ6.js → chunk-T6CHEJ27.js} +4 -4
  48. package/{chunk-6KWPMJ5C.js → chunk-TYKUYQDP.js} +6 -6
  49. package/{chunk-77GDSGRM.js → chunk-UETRBTZ2.js} +29 -12
  50. package/{chunk-SZXJVQ7L.js → chunk-VT3MVIIU.js} +7 -7
  51. package/{chunk-P4YLK2OD.js → chunk-XNOILBHV.js} +1 -1
  52. package/{chunk-VEUSD6OF.js → chunk-YF4ZRVP3.js} +5 -1
  53. package/{chunk-JL3YTCPQ.js → chunk-YHT3ZONH.js} +2 -2
  54. package/{chunk-NTLJGRAT.js → chunk-YT65GYRP.js} +1 -1
  55. package/{chunk-KCYY5F2P.js → chunk-ZIEPLFWS.js} +2 -2
  56. package/{commandRegistry-XBZJWVTJ.js → commandRegistry-HTURFH3S.js} +59 -59
  57. package/{contentThunks-V5NBNTC5.js → contentThunks-DYUKG2UT.js} +3 -3
  58. package/{cooldownCommands-BLRMLW7Q.js → cooldownCommands-WGVSKMU4.js} +1 -1
  59. package/{createAgentAutomationAction-4TXJ366P.js → createAgentAutomationAction-Y4BMH7SM.js} +3 -3
  60. package/{createDialogAction-4SPT75DB.js → createDialogAction-RY47EJA7.js} +4 -4
  61. package/{createPageAction-D4GMHUPC.js → createPageAction-RLV5IWBB.js} +3 -3
  62. package/{dialogCommands-6RRP5KUH.js → dialogCommands-UR3JECOS.js} +12 -12
  63. package/{dialogSlice-IGPTWSPB.js → dialogSlice-X23NSXGM.js} +2 -2
  64. package/{docCreateCommands-7ODYDGRL.js → docCreateCommands-AM3RDP6K.js} +11 -11
  65. package/{docDeleteCommands-OEIRM3CC.js → docDeleteCommands-KCRF23RY.js} +12 -12
  66. package/{docReadCommands-W56GNAWP.js → docReadCommands-M4SZAVQR.js} +11 -11
  67. package/{docStore-HEAGW26W.js → docStore-OCOEV524.js} +1 -1
  68. package/{docUpdateCommands-33Q3SEG7.js → docUpdateCommands-XU6NSHXX.js} +11 -11
  69. package/{handleSendMessageAction-R2E7VYHQ.js → handleSendMessageAction-JYLG2PGY.js} +10 -10
  70. package/index.js +7 -7
  71. package/{localRuntimeAdapter-J5GD66XZ.js → localRuntimeAdapter-GQCC7EJL.js} +20 -20
  72. package/{machineCommands-AT7B4LFO.js → machineCommands-SYG2QENB.js} +21 -21
  73. package/{machineWsRunDispatch-CRDELH46.js → machineWsRunDispatch-HJWCU2XA.js} +21 -21
  74. package/package.json +1 -1
  75. package/{providerPresetApply-HBBUUVJD.js → providerPresetApply-EQESXT6X.js} +1 -1
  76. package/{providerRegistry-5LK2NXYE.js → providerRegistry-PZ56P43E.js} +1 -1
  77. package/{readlineWorkspace-FPHZGNZP.js → readlineWorkspace-457FDLML.js} +28 -28
  78. package/{runAgentClientLoop-6AAA5HNQ.js → runAgentClientLoop-O6XYZPOG.js} +14 -14
  79. package/{secretCommands-S2DDPIQ4.js → secretCommands-RLIO3QK5.js} +1 -1
  80. package/{spaceCommands-LPKHBCPU.js → spaceCommands-SVGAP4C2.js} +10 -10
  81. package/{streamAgentChatTurn-WNNXYOLC.js → streamAgentChatTurn-VWPG52FR.js} +18 -18
  82. package/{tools-QLURHFLS.js → tools-WFCFBL74.js} +9 -9
  83. package/{tuiSummaryLlmCaller-73QO3HAD.js → tuiSummaryLlmCaller-CEIZAKUV.js} +4 -4
  84. package/{updateCommands-LEJRRVBB.js → updateCommands-N7K7TEU4.js} +3 -3
  85. package/{updateDialogTitleAction-5UVS3ADT.js → updateDialogTitleAction-ZBQOKKO4.js} +3 -3
  86. package/{windowsSelfUpdate-LSSQLXVS.js → windowsSelfUpdate-SVJKL6VH.js} +2 -2
@@ -1,11 +1,14 @@
1
1
  import {
2
+ adoptRequiredClaudeCodeVersion,
2
3
  anthropicRefresh,
3
4
  cursorRefresh,
5
+ getClaudeCodeUserAgent,
4
6
  refreshAntigravityOAuthToken,
5
7
  refreshOpenAiCodexToken,
8
+ resolveClaudeCodeVersion,
6
9
  resolveServerSyncConfig,
7
10
  xaiRefresh
8
- } from "./chunk-4KPB3KWX.js";
11
+ } from "./chunk-LTI5T3A6.js";
9
12
  import {
10
13
  defaultLoopbackRequest
11
14
  } from "./chunk-VP3BINY7.js";
@@ -68,7 +71,7 @@ import {
68
71
  import {
69
72
  inlineImageUrlsForCustomProvider,
70
73
  prepareTools
71
- } from "./chunk-BC4UX4EZ.js";
74
+ } from "./chunk-7COVU5SP.js";
72
75
  import {
73
76
  getServerProviderSecret
74
77
  } from "./chunk-HS7MLR74.js";
@@ -90,7 +93,7 @@ import {
90
93
  resolveCliLocalRuntimeKeyCapability,
91
94
  resolveCliLocalSpawnDispatch,
92
95
  resolveStartAgentRunCwd
93
- } from "./chunk-SEEXRWNB.js";
96
+ } from "./chunk-ACMRWLRR.js";
94
97
  import {
95
98
  fetchWithTransientRetry,
96
99
  isTransientFetchError
@@ -98,7 +101,7 @@ import {
98
101
  import {
99
102
  deriveCredentialGroup,
100
103
  deriveCustomProviderCredentialGroup
101
- } from "./chunk-JH7KMNGT.js";
104
+ } from "./chunk-RQDGDKFL.js";
102
105
  import {
103
106
  resolveAgentRequiredPackIds,
104
107
  resolveUserEnabledSkills
@@ -111,14 +114,14 @@ import {
111
114
  resolveBuiltinPlatformAgentConfig,
112
115
  runKeyed,
113
116
  validateAskChoiceInput
114
- } from "./chunk-HNO2SEYI.js";
117
+ } from "./chunk-KJCSY4TW.js";
115
118
  import {
116
119
  BUILTIN_DIALOG_LLM_CHAT_FALLBACK_MODEL,
117
120
  BUILTIN_TITLE_LLM_CONFIG
118
121
  } from "./chunk-523DITKR.js";
119
122
  import {
120
123
  fetchServerSyncedCredential
121
- } from "./chunk-YR4MRACW.js";
124
+ } from "./chunk-F6MQO3YY.js";
122
125
  import {
123
126
  getDefaultCliLocalRuntimeDb
124
127
  } from "./chunk-P64WRQYV.js";
@@ -178,7 +181,7 @@ import {
178
181
  runExecShellGates,
179
182
  validateConfiguredRootExecutionLease,
180
183
  verifyOwnerRouteAck
181
- } from "./chunk-6KWPMJ5C.js";
184
+ } from "./chunk-TYKUYQDP.js";
182
185
  import {
183
186
  accumulateGeminiChunks,
184
187
  buildGeminiGenerateContentRequest,
@@ -190,7 +193,7 @@ import {
190
193
  resolveAntigravityFinishReason,
191
194
  resolveGeminiModelQuirks,
192
195
  shouldUseGeminiNativeToolRoute
193
- } from "./chunk-VCFU3BO5.js";
196
+ } from "./chunk-JASKVAYJ.js";
194
197
  import {
195
198
  PlatformStreamInterruptedError,
196
199
  buildPlatformChatCompletionRequest,
@@ -201,20 +204,20 @@ import {
201
204
  readPlatformChatSseCompletion,
202
205
  resolvePlatformChatProviderConfig,
203
206
  shouldUsePlatformChatProvider
204
- } from "./chunk-CQHMBWZH.js";
207
+ } from "./chunk-7NMNKOW5.js";
205
208
  import {
206
209
  readSseDataValues,
207
210
  readSseFrames
208
211
  } from "./chunk-HNUWUO75.js";
209
212
  import {
210
213
  resolveAgentRuntimeConfigFromRecord
211
- } from "./chunk-MZXWSY4E.js";
214
+ } from "./chunk-MNWKNN6V.js";
212
215
  import {
213
216
  resolveHistoricalToolContentCap
214
217
  } from "./chunk-2WZXXAQD.js";
215
218
  import {
216
219
  resolveToolImagePolicy
217
- } from "./chunk-6I7ZP7KJ.js";
220
+ } from "./chunk-JBWLZ3CB.js";
218
221
  import {
219
222
  collectStablePromptPrefix,
220
223
  convertMessagesToResponsesInput,
@@ -300,7 +303,7 @@ import {
300
303
  } from "./chunk-LOEO7LRC.js";
301
304
  import {
302
305
  isAntigravityOAuthAgent
303
- } from "./chunk-VEUSD6OF.js";
306
+ } from "./chunk-YF4ZRVP3.js";
304
307
  import {
305
308
  ackRunRecord,
306
309
  appendRunQueue,
@@ -384,7 +387,7 @@ import {
384
387
  import {
385
388
  agentRunCardLabels,
386
389
  t
387
- } from "./chunk-E4LYPSYM.js";
390
+ } from "./chunk-PPCUXO3E.js";
388
391
  import {
389
392
  createTokenDialogIndexKey,
390
393
  createTokenKey,
@@ -594,20 +597,12 @@ async function aggregateAnthropicMessageStream(body, onMeaningfulOutput, onTextD
594
597
  var ANTHROPIC_MESSAGES_URL = "https://api.anthropic.com/v1/messages";
595
598
  var ANTHROPIC_API_VERSION = "2023-06-01";
596
599
  var ANTHROPIC_OAUTH_BETA = "oauth-2025-04-20";
597
- function resolveClaudeCodeVersion(rawEnv) {
598
- const DEFAULT_VERSION = "2.1.294";
599
- if (!rawEnv) return DEFAULT_VERSION;
600
- const trimmed = rawEnv.trim();
601
- if (/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(trimmed)) {
602
- return trimmed;
603
- }
604
- return DEFAULT_VERSION;
605
- }
606
- var CLAUDE_CODE_VERSION = resolveClaudeCodeVersion(
607
- process.env.NOLO_CLAUDE_CODE_VERSION || process.env.CLAUDE_CODE_VERSION
608
- );
609
- var CLAUDE_CODE_USER_AGENT = `claude-cli/${CLAUDE_CODE_VERSION} (external, local-agent, agent-sdk/0.1.0)`;
600
+ var CLAUDE_CODE_VERSION = resolveClaudeCodeVersion();
601
+ var CLAUDE_CODE_USER_AGENT = getClaudeCodeUserAgent();
610
602
  var ANTHROPIC_OAUTH_BETA_HEADER = `claude-code-20250219,${ANTHROPIC_OAUTH_BETA}`;
603
+ function buildAnthropicBetaHeader({ agentRequest }) {
604
+ return (agentRequest ? ["claude-code-20250219", ANTHROPIC_OAUTH_BETA] : [ANTHROPIC_OAUTH_BETA]).join(",");
605
+ }
611
606
  var CLAUDE_CODE_SYSTEM_INSTRUCTION = "You are a Claude agent, built on Anthropic's Claude Agent SDK.";
612
607
  var CLAUDE_CODE_IDENTITY_PATTERNS = [
613
608
  CLAUDE_CODE_SYSTEM_INSTRUCTION,
@@ -1031,21 +1026,38 @@ async function fetchAnthropicMessagesCompletion(args) {
1031
1026
  const upstreamStream = args.upstreamStream ?? resolveAnthropicUpstreamStream(process.env.NOLO_ANTHROPIC_STREAM);
1032
1027
  const requestBody = buildAnthropicMessagesBody(args);
1033
1028
  if (upstreamStream) requestBody.stream = true;
1034
- const response = await (args.fetchImpl ?? fetch)(ANTHROPIC_MESSAGES_URL, {
1029
+ const isAgentRequest = Array.isArray(requestBody.tools) && requestBody.tools.length > 0;
1030
+ const buildHeaders = () => ({
1031
+ Authorization: `Bearer ${args.accessToken}`,
1032
+ "Content-Type": "application/json",
1033
+ Accept: upstreamStream ? "text/event-stream" : "application/json",
1034
+ "anthropic-version": ANTHROPIC_API_VERSION,
1035
+ "anthropic-beta": buildAnthropicBetaHeader({ agentRequest: isAgentRequest }),
1036
+ "User-Agent": getClaudeCodeUserAgent(),
1037
+ "x-app": "cli"
1038
+ });
1039
+ let response = await (args.fetchImpl ?? fetch)(ANTHROPIC_MESSAGES_URL, {
1035
1040
  method: "POST",
1036
- headers: {
1037
- Authorization: `Bearer ${args.accessToken}`,
1038
- "Content-Type": "application/json",
1039
- Accept: upstreamStream ? "text/event-stream" : "application/json",
1040
- "anthropic-version": ANTHROPIC_API_VERSION,
1041
- "anthropic-beta": ANTHROPIC_OAUTH_BETA_HEADER,
1042
- "User-Agent": CLAUDE_CODE_USER_AGENT,
1043
- "x-app": "cli"
1044
- },
1041
+ headers: buildHeaders(),
1045
1042
  body: JSON.stringify(requestBody),
1046
1043
  signal: args.signal
1047
1044
  });
1048
1045
  let payload;
1046
+ if (response.status === 400) {
1047
+ const errorBody = await response.json().catch(async () => ({
1048
+ error: { message: await response.text().catch(() => response.statusText) }
1049
+ }));
1050
+ if (adoptRequiredClaudeCodeVersion(errorBody)) {
1051
+ response = await (args.fetchImpl ?? fetch)(ANTHROPIC_MESSAGES_URL, {
1052
+ method: "POST",
1053
+ headers: buildHeaders(),
1054
+ body: JSON.stringify(requestBody),
1055
+ signal: args.signal
1056
+ });
1057
+ } else {
1058
+ return { status: response.status, body: errorBody, headers: response.headers };
1059
+ }
1060
+ }
1049
1061
  if (upstreamStream && response.ok) {
1050
1062
  if (!response.body) {
1051
1063
  return {
@@ -2971,11 +2983,14 @@ function buildOpenAiResponsesCustomNativeProvider(p) {
2971
2983
  model,
2972
2984
  complete: async (messages, options) => {
2973
2985
  const responsesTools = toResponsesTools(tools);
2986
+ const maxOutputTokens = typeof options?.max_tokens === "number" ? options.max_tokens : typeof agentConfig.max_tokens === "number" ? agentConfig.max_tokens : void 0;
2987
+ const reasoningEffort = options?.reasoning_effort ?? agentConfig.reasoning_effort;
2974
2988
  const body = {
2975
2989
  model,
2976
2990
  input: convertMessagesToResponsesInput(messages),
2977
2991
  stream: true,
2978
- ...typeof agentConfig.max_tokens === "number" ? { max_output_tokens: agentConfig.max_tokens } : {},
2992
+ ...maxOutputTokens !== void 0 ? { max_output_tokens: maxOutputTokens } : {},
2993
+ ...reasoningEffort ? { reasoning: { effort: reasoningEffort } } : {},
2979
2994
  ...responsesTools?.length ? { tools: responsesTools, tool_choice: "auto" } : {}
2980
2995
  };
2981
2996
  log("provider.request.start", {
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  listUserRecordsFromServers,
3
3
  readLiveDbRecordAfterTombstoneMerge
4
- } from "./chunk-H7HWWNJB.js";
4
+ } from "./chunk-PJILX6KS.js";
5
5
  import {
6
6
  agentRecordHasConfiguredCredential
7
- } from "./chunk-CJ37ZMCQ.js";
7
+ } from "./chunk-7C45ONOU.js";
8
8
  import {
9
9
  deriveCredentialGroup
10
- } from "./chunk-JH7KMNGT.js";
10
+ } from "./chunk-RQDGDKFL.js";
11
11
  import {
12
12
  isTombstoneRecord
13
13
  } from "./chunk-D2MDMY2M.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generatePkcePair,
3
3
  startCallbackServer
4
- } from "./chunk-4KPB3KWX.js";
4
+ } from "./chunk-LTI5T3A6.js";
5
5
  import {
6
6
  toErrorMessage
7
7
  } from "./chunk-HNMXYYJR.js";
@@ -15,10 +15,10 @@ import {
15
15
  } from "./chunk-Y6ROFCZO.js";
16
16
  import {
17
17
  scheduleWindowsSelfUpdate
18
- } from "./chunk-EPJFGQYO.js";
18
+ } from "./chunk-7T5TLIY4.js";
19
19
  import {
20
20
  t
21
- } from "./chunk-E4LYPSYM.js";
21
+ } from "./chunk-PPCUXO3E.js";
22
22
 
23
23
  // packages/cli/updateCommands.ts
24
24
  import { existsSync, readFileSync, accessSync, constants } from "node:fs";
@@ -412,13 +412,13 @@ var TOOL_USE_GUIDANCE = `--- \u5DE5\u5177\u4F7F\u7528\u7EAA\u5F8B ---
412
412
  - \u8F93\u51FA\u536B\u751F\uFF1A\u4E0D\u8981\u4E60\u60EF\u6027\u7528 2>&1 \u5408\u5E76\u9519\u8BEF\u6D41\uFF1B\u67E5\u8BE2\u7C7B\u547D\u4EE4\u4E3B\u52A8 2>/dev/null \u964D\u566A\uFF1B\u590D\u5408\u547D\u4EE4\u5BF9\u5173\u952E\u6B65\u9AA4\u5355\u72EC\u63A5\u9000\u51FA\u7801\uFF08echo rc=$?\uFF09\uFF1B\u6BCF\u6761\u547D\u4EE4\u5148\u626B\u8F93\u51FA\u4E2D\u7684\u9519\u8BEF\u5B57\u6837\uFF0C\u518D\u770B exitCode\uFF08exit 0 \u4E5F\u53EF\u80FD\u5E26\u9519\uFF09\u3002
413
413
  - \u4E00\u6B21\u6027\u63A2\u9488/\u76D1\u63A7\u811A\u672C\u6309\u201C\u73AF\u5883\u4F1A\u53D8\u201D\u6765\u5199\uFF1A\u8BBE\u5907/\u8FDB\u7A0B\u53EF\u80FD\u4E2D\u9014\u6D88\u5931\uFF0C\u8BFB\u53D6\u5FAA\u73AF\u8981\u6709\u5F02\u5E38\u515C\u5E95\uFF0C\u907F\u514D\u672A\u6355\u83B7\u5F02\u5E38\u76F4\u63A5\u5D29\u6E83\u3002
414
414
  - \u8C03\u7528\u5931\u8D25\u4E14\u539F\u56E0\u4E0D\u660E\u65F6\uFF0C\u5148\u68C0\u67E5\u526F\u4F5C\u7528\u4E0E\u72B6\u6001\u53D8\u5316\uFF0C\u518D\u51B3\u5B9A\u91CD\u8BD5\u6216\u56DE\u9000\u3002
415
- - **\u7B49\u5F85\u5916\u90E8\u7CFB\u7EDF\u5230\u8FBE\u7EC8\u6001**\uFF08\u90E8\u7F72\u3001CI\u3001\u670D\u52A1\u5C31\u7EEA\u3001HTTP \u6761\u4EF6\uFF09\u65F6\uFF0C\u4E0D\u8981\u300C\u67E5\u4E00\u6B21 \u2192 \u7ED3\u675F\u56DE\u5408 \u2192 \u7B49\u7528\u6237\u8FFD\u95EE\u300D\uFF1A\u90A3\u4F1A\u8BA9\u4E8B\u60C5\u7684\u63A8\u8FDB\u6743\u843D\u5728\u7528\u6237\u8EAB\u4E0A\u3002\u5224\u636E\u662F\u300C\u7B49\u5F85\u5BF9\u8C61\u6709\u6CA1\u6709\u300E\u5B8C\u6210\u300F\u8FD9\u4EF6\u4E8B\u300D\uFF1A\u6709\u5C31\u7528 **execShell(background: true)** \u5305\u6210**\u81EA\u5E26\u8D85\u65F6\u9000\u51FA\u7684\u6709\u9650\u8F6E\u8BE2\u4EFB\u52A1**\uFF08\u63A2\u6D4B\u5230\u6EE1\u8DB3/\u5931\u8D25/\u8D85\u65F6\u5373 exit\uFF09\uFF0C\u9000\u51FA\u65F6\u7531\u5BBF\u4E3B\u81EA\u52A8\u5524\u9192\u5BF9\u8BDD\uFF1B**\u4E25\u7981\u7528 & \u6216 nohup \u540E\u53F0\u5316\u2014\u2014\u5E73\u53F0\u4E0D\u8FFD\u8E2A\u3001\u4E0D\u4F1A\u5524\u9192\uFF0C\u7B49\u4E8E\u6CA1\u7B49**\u3002\u6CA1\u6709\u7EC8\u6001\u624D\u662F\u771F\u9700\u8981\u4EBA\u6765\u51B3\u5B9A\u3002\u6CE8\u610F\u533A\u5206\uFF1A\u7B49 **agent run** \u7528 terminal wake\uFF08\u89C1\u300C\u591A Agent \u7F16\u6392\u300D\u6BB5\uFF0C\u90A3\u7C7B\u7981\u6B62\u8F6E\u8BE2\uFF09\uFF0C\u7B49**\u5916\u90E8\u7CFB\u7EDF**\u624D\u7528\u8FD9\u91CC\u7684\u5E26\u9000\u51FA\u6761\u4EF6\u7684\u540E\u53F0\u8F6E\u8BE2\uFF0C\u4E24\u8005\u4E0D\u8981\u6DF7\u3002`;
415
+ - **\u7B49\u5F85\u5916\u90E8\u7CFB\u7EDF\u5230\u8FBE\u7EC8\u6001**\uFF08\u90E8\u7F72\u3001CI\u3001\u670D\u52A1\u5C31\u7EEA\u3001HTTP \u6761\u4EF6\uFF09\u65F6\uFF0C\u4E0D\u8981\u300C\u67E5\u4E00\u6B21 \u2192 \u7ED3\u675F\u56DE\u5408 \u2192 \u7B49\u7528\u6237\u8FFD\u95EE\u300D\uFF1A\u90A3\u4F1A\u8BA9\u4E8B\u60C5\u7684\u63A8\u8FDB\u6743\u843D\u5728\u7528\u6237\u8EAB\u4E0A\u3002\u5224\u636E\u662F\u300C\u7B49\u5F85\u5BF9\u8C61\u6709\u6CA1\u6709\u300E\u5B8C\u6210\u300F\u8FD9\u4EF6\u4E8B\u300D\uFF1A\u6709\u5C31\u7528 **execShell(background: true)** \u5305\u6210**\u81EA\u5E26\u8D85\u65F6\u9000\u51FA\u7684\u6709\u9650\u8F6E\u8BE2\u4EFB\u52A1**\uFF08\u63A2\u6D4B\u5230\u6EE1\u8DB3/\u5931\u8D25/\u8D85\u65F6\u5373 exit\uFF09\uFF0C\u9000\u51FA\u65F6\u7531\u5BBF\u4E3B\u81EA\u52A8\u5524\u9192\u5BF9\u8BDD\uFF1B**\u4E25\u7981\u7528 & \u6216 nohup \u540E\u53F0\u5316\u2014\u2014\u5E73\u53F0\u4E0D\u8FFD\u8E2A\u3001\u4E0D\u4F1A\u5524\u9192\uFF0C\u7B49\u4E8E\u6CA1\u7B49**\u3002**\u4E25\u7981\u4F7F\u7528\u5355\u7EAF\u7684 \`sleep N\` \u6216 \`sleep N; echo ...\` \u5047\u88C5\u7B49\u5F85\u4EFB\u52A1**\uFF1A\u5B64\u7ACB sleep \u4E0D\u505A\u4EFB\u4F55\u72B6\u6001\u63A2\u6D4B\uFF0C\u4E14\u8D85\u8FC7 5 \u79D2\u5C31\u4F1A\u88AB\u7ACB\u5373 detach\uFF0C\u9020\u6210\u65E0\u610F\u4E49\u7684\u5B8C\u6210\u5524\u9192\u566A\u97F3\uFF1B\u8F6E\u8BE2\u4EFB\u52A1\u5FC5\u987B\u5305\u542B\u771F\u5B9E\u63A2\u9488\uFF08\u5982 \`while ! probe; do sleep 5; done\` \u6216\u8C03\u7528\u73B0\u6709 wait \u811A\u672C\uFF09\u3002\u6CA1\u6709\u7EC8\u6001\u624D\u662F\u771F\u9700\u8981\u4EBA\u6765\u51B3\u5B9A\u3002\u6CE8\u610F\u533A\u5206\uFF1A\u7B49 **agent run** \u7528 terminal wake\uFF08\u89C1\u300C\u591A Agent \u7F16\u6392\u300D\u6BB5\uFF0C\u90A3\u7C7B\u7981\u6B62\u8F6E\u8BE2\uFF09\uFF0C\u7B49**\u5916\u90E8\u7CFB\u7EDF**\u624D\u7528\u8FD9\u91CC\u7684\u5E26\u9000\u51FA\u6761\u4EF6\u7684\u540E\u53F0\u8F6E\u8BE2\uFF0C\u4E24\u8005\u4E0D\u8981\u6DF7\u3002`;
416
416
 
417
417
  // packages/ai/agent/toolGuidedSections.ts
418
418
  var AGENT_ORCHESTRATION_RUN_INSTRUCTIONS = `--- \u591A Agent \u7F16\u6392\uFF08\u540E\u53F0 Run\uFF09 ---
419
419
  \u7528 startAgentRun \u542F\u52A8\u5B50 Agent\uFF08\u5F02\u6B65 fork+exec \u8FD4\u56DE runId\uFF09\uFF0C\u7528 controlAgentRun \u63A7\u5236/\u8BCA\u65AD\u3002\u4F55\u65F6\u6D3E\u53D1\u89C1\u300C\u591A Agent \u534F\u4F5C\u300D\u6BB5\uFF1B\u672C\u6BB5\u53EA\u8BB2\u6D3E\u53D1\u4E4B\u540E\u7684\u76EF\u68A2\u4E0E\u6392\u9519\u3002
420
420
 
421
- 1. \u76EF\u68A2\uFF1A**\u5F02\u6B65\u6D3E\u53D1\u540E\u5148\u63A8\u8FDB\u72EC\u7ACB\u5DF2\u6388\u6743\u5DE5\u4F5C\uFF0C\u53EA\u6709\u65E0\u53EF\u63A8\u8FDB\u5DE5\u4F5C\u624D\u7ED3\u675F\u7B49\u5F85\u7EC8\u6001\u3002** \u5BF9\u7528\u6237\u627F\u8BFA\u300C\u4F1A\u901A\u77E5\u4F60\u300D\u4E4B\u524D\uFF0C\u5FC5\u987B\u5148\u786E\u8BA4\u8FD9\u4E2A\u7B49\u5F85\u4EFB\u52A1\u5728**\u5931\u8D25**\u65F6\u4E5F\u4F1A\u4EE5\u7EC8\u6001\u5524\u9192\uFF08tracked background\u3001\u6709\u754C\u8D85\u65F6\u3001\u5931\u8D25\u5373\u9000\u51FA\uFF09\uFF0C\u4E0D\u80FD\u53EA\u5728\u6210\u529F\u8DEF\u5F84\u4E0A\u6709\u901A\u77E5\uFF1B\u53D1\u5E03\u7B49\u5F85\u53EA\u80FD\u4F7F\u7528 \`scripts/ci/pushAndAwaitLive.ts\`\uFF0C\u7981\u6B62\u624B\u5199\u300Cpush + \u8F6E\u8BE2\u300D\u7684\u547D\u4EE4\u94FE\u3002\u4E32\u884C\u4F9D\u8D56\u4E0D\u662F\u963B\u585E\u5BF9\u8BDD\u7684\u7406\u7531\u3002\u7B49\u5F85\u65B9\u5F0F\u6309\u73AF\u5883\u5206\u4E09\u79CD\uFF1A\u2460 controlAgentRun \u6709 wait action \u2192 \u7528\u5B83\u963B\u585E\u5230\u7EC8\u6001\uFF08\u4EC5\u9650\u9884\u8BA1 <100s \u4E14\u9A6C\u4E0A\u8981\u7528\u7ED3\u679C\u7684\u573A\u666F\uFF0C\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u540C\u6B65\u7B49\u5F85\uFF09\uFF1B\u2461 \u65E0 wait action \u4F46\u5BBF\u4E3B\u6709 terminal wake \u2192 \u65E0\u5176\u4ED6\u53EF\u63A8\u8FDB\u5DE5\u4F5C\u65F6\u7ED3\u675F\u672C\u8F6E\u56DE\u590D\uFF0Crun \u5230\u7EC8\u6001\u65F6\u5BBF\u4E3B\u81EA\u52A8\u628A\u7236\u5BF9\u8BDD\u63A5\u56DE\u6765\uFF0C\u4E0D\u9700\u8981\u4EFB\u4F55\u4E3B\u52A8\u7B49\u5F85\uFF1B\u2462 \u65E0 wait action \u4E14\u65E0 terminal wake \u2192 \u65E0\u5176\u4ED6\u53EF\u63A8\u8FDB\u5DE5\u4F5C\u65F6\u540C\u6837\u7ED3\u675F\u672C\u8F6E\u56DE\u590D\uFF0Crun \u7ED3\u675F\u65F6\u4E0D\u4F1A\u88AB\u81EA\u52A8\u63A5\u56DE\u6765\uFF0C\u8FD9\u662F\u5BBF\u4E3B\u9650\u5236\uFF0C\u5E94\u5728\u56DE\u590D\u4E2D\u5982\u5B9E\u544A\u77E5\u7528\u6237\u300Crun \u5DF2\u5728\u540E\u53F0\u8FD0\u884C\uFF0C\u7ED3\u679C\u9700\u624B\u52A8\u67E5\u8BE2\u300D\uFF0C\u800C\u4E0D\u662F\u7528 execShell sleep \u8F6E\u8BE2\u7ED5\u8FC7\u3002**execShell sleep \u6C38\u8FDC\u4E0D\u662F\u7B49\u5F85 agent run \u7684\u6B63\u786E\u65B9\u5F0F**\uFF1A\u4EE5 \`sleep N\` \u5F00\u5934\u4E14 N>5s \u7684\u547D\u4EE4\u4F1A\u88AB**\u7ACB\u5373 detach**\uFF08\`IMMEDIATE_DETACH_SLEEP_THRESHOLD_SECONDS\`\uFF0C\u4E0E execShell \u5DE5\u5177\u63CF\u8FF0\u540C\u6E90\u3001\u7531\u4E00\u81F4\u6027\u6D4B\u8BD5\u9501\u5B9A\uFF09\uFF1B\u5176\u4F59\u547D\u4EE4\u5219\u8D85\u8FC7 \`NOLO_EXEC_SHELL_DETACH_MS\`\uFF08\u9ED8\u8BA4 120s\uFF09\u624D detach\u3002\u4E24\u6761\u8DEF\u5F84\u90FD\u4F1A\u8BA9\u6BCF\u4E2A\u5B8C\u6210\u4EA7\u751F\u4E00\u6761\u901A\u77E5\uFF0C\u5F62\u6210\u566A\u97F3\u4E14\u5B8C\u5168\u65E0\u6548\u3002
421
+ 1. \u76EF\u68A2\uFF1A**\u5F02\u6B65\u6D3E\u53D1\u540E\u5148\u63A8\u8FDB\u72EC\u7ACB\u5DF2\u6388\u6743\u5DE5\u4F5C\uFF0C\u53EA\u6709\u65E0\u53EF\u63A8\u8FDB\u5DE5\u4F5C\u624D\u7ED3\u675F\u7B49\u5F85\u7EC8\u6001\u3002** \u5BF9\u7528\u6237\u627F\u8BFA\u300C\u4F1A\u901A\u77E5\u4F60\u300D\u4E4B\u524D\uFF0C\u5FC5\u987B\u5148\u786E\u8BA4\u8FD9\u4E2A\u7B49\u5F85\u4EFB\u52A1\u5728**\u5931\u8D25**\u65F6\u4E5F\u4F1A\u4EE5\u7EC8\u6001\u5524\u9192\uFF08tracked background\u3001\u6709\u754C\u8D85\u65F6\u3001\u5931\u8D25\u5373\u9000\u51FA\uFF09\uFF0C\u4E0D\u80FD\u53EA\u5728\u6210\u529F\u8DEF\u5F84\u4E0A\u6709\u901A\u77E5\uFF1B\u53D1\u5E03\u7B49\u5F85\u53EA\u80FD\u4F7F\u7528 \`scripts/ci/pushAndAwaitLive.ts\`\uFF0C\u7981\u6B62\u624B\u5199\u300Cpush + \u8F6E\u8BE2\u300D\u7684\u547D\u4EE4\u94FE\u3002\u4E32\u884C\u4F9D\u8D56\u4E0D\u662F\u963B\u585E\u5BF9\u8BDD\u7684\u7406\u7531\u3002\u7B49\u5F85\u65B9\u5F0F\u6309\u73AF\u5883\u5206\u4E09\u79CD\uFF1A\u2460 controlAgentRun \u6709 wait action \u2192 \u7528\u5B83\u963B\u585E\u5230\u7EC8\u6001\uFF08\u4EC5\u9650\u9884\u8BA1 <100s \u4E14\u9A6C\u4E0A\u8981\u7528\u7ED3\u679C\u7684\u573A\u666F\uFF0C\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u540C\u6B65\u7B49\u5F85\uFF09\uFF1B\u2461 \u65E0 wait action \u4F46\u5BBF\u4E3B\u6709 terminal wake \u2192 \u65E0\u5176\u4ED6\u53EF\u63A8\u8FDB\u5DE5\u4F5C\u65F6\u7ED3\u675F\u672C\u8F6E\u56DE\u590D\uFF0Crun \u5230\u7EC8\u6001\u65F6\u5BBF\u4E3B\u81EA\u52A8\u628A\u7236\u5BF9\u8BDD\u63A5\u56DE\u6765\uFF0C\u4E0D\u9700\u8981\u4EFB\u4F55\u4E3B\u52A8\u7B49\u5F85\uFF1B\u2462 \u65E0 wait action \u4E14\u65E0 terminal wake \u2192 \u65E0\u5176\u4ED6\u53EF\u63A8\u8FDB\u5DE5\u4F5C\u65F6\u540C\u6837\u7ED3\u675F\u672C\u8F6E\u56DE\u590D\uFF0Crun \u7ED3\u675F\u65F6\u4E0D\u4F1A\u88AB\u81EA\u52A8\u63A5\u56DE\u6765\uFF0C\u8FD9\u662F\u5BBF\u4E3B\u9650\u5236\uFF0C\u5E94\u5728\u56DE\u590D\u4E2D\u5982\u5B9E\u544A\u77E5\u7528\u6237\u300Crun \u5DF2\u5728\u540E\u53F0\u8FD0\u884C\uFF0C\u7ED3\u679C\u9700\u624B\u52A8\u67E5\u8BE2\u300D\uFF0C\u800C\u4E0D\u662F\u7528 execShell sleep \u8F6E\u8BE2\u7ED5\u8FC7\u3002**execShell sleep \u6C38\u8FDC\u4E0D\u662F\u7B49\u5F85\u4EFB\u4F55\u4E8B\u7269\uFF08\u65E0\u8BBA agent run\u3001\u540E\u53F0\u8FDB\u7A0B\u3001git hook \u8FD8\u662F\u5916\u90E8\u670D\u52A1\uFF09\u7684\u6B63\u786E\u65B9\u5F0F**\uFF1A\u4EE5 \`sleep N\` \u5F00\u5934\u4E14 N>5s \u7684\u547D\u4EE4\u4F1A\u88AB**\u7ACB\u5373 detach**\uFF08\`IMMEDIATE_DETACH_SLEEP_THRESHOLD_SECONDS\`\uFF0C\u4E0E execShell \u5DE5\u5177\u63CF\u8FF0\u540C\u6E90\u3001\u7531\u4E00\u81F4\u6027\u6D4B\u8BD5\u9501\u5B9A\uFF09\uFF1B\u5176\u4F59\u547D\u4EE4\u5219\u8D85\u8FC7 \`NOLO_EXEC_SHELL_DETACH_MS\`\uFF08\u9ED8\u8BA4 120s\uFF09\u624D detach\u3002\u4E24\u6761\u8DEF\u5F84\u90FD\u4F1A\u8BA9\u6BCF\u4E2A\u5B8C\u6210\u4EA7\u751F\u4E00\u6761\u901A\u77E5\uFF0C\u5F62\u6210\u566A\u97F3\u4E14\u5B8C\u5168\u65E0\u6548\u3002\u7B49\u5F85\u5916\u90E8\u7CFB\u7EDF\u8BF7\u4F7F\u7528\u6709\u5177\u4F53\u63A2\u6D4B\u9000\u51FA\u7684\u6709\u9650\u8F6E\u8BE2\u4EFB\u52A1\u6216\u4E13\u7528 wait \u811A\u672C\u3002
422
422
  2. \u7981\u6B62\u8F6E\u8BE2\u3001\u7981\u7A7A\u8F6C\u3001\u522B\u590D\u8FF0 status\uFF1B\u8BED\u4E49\u4EE5\u5DE5\u5177\u63CF\u8FF0\u4E3A\u51C6\u3002status \u4EC5\u7528\u4E8E\u5F02\u5E38\u8BCA\u65AD\u2014\u2014\u6000\u7591\u5361\u6B7B\u3001failed \u540E\u770B\u8BE6\u60C5/\u65E5\u5FD7\u3001\u7528\u6237\u660E\u786E\u8BE2\u95EE\u6267\u884C\u7EC6\u8282\uFF08tailLines:0 \u53EA\u770B\u6458\u8981\uFF09\uFF1B\u5B83\u4E0D\u662F stop \u524D\u7684 preflight\u3002\u5E76\u884C\u6D3E\u53D1\u7EAA\u5F8B\uFF08\u9ED8\u8BA4\u5E76\u884C / \u53EA\u6709\u771F\u5B9E\u4F9D\u8D56\u624D\u4E32\u884C / \u7981\u6B62\u7684\u4E32\u884C\u501F\u53E3\uFF09\u7531\u7CFB\u7EDF\u5C42\u56FA\u5B9A\u5757\u300C\u5E76\u884C\u662F\u9ED8\u8BA4 \xB7 \u6D3E\u53D1\u7EAA\u5F8B\u300D\uFF08agent-runtime/parallelDispatchDefault.ts\uFF0C\u56DB\u6761\u88C5\u914D\u7EBF\u65E0\u6761\u4EF6\u6CE8\u5165\uFF09\u627F\u8F7D\u2014\u2014\u672C\u6BB5\u4E0D\u91CD\u590D\uFF0C\u907F\u514D\u4E24\u5904\u771F\u503C\u3002
423
423
  3. \u6392\u9519\u5148\u5206\u8BCA\uFF1AagentKey \u6CA1\u7167\u6284 listAgents \u5C31\u5148\u4FEE key\uFF08\u4E0D\u7B97\u901A\u9053\u6545\u969C\uFF09\uFF1B\u62A5\u9519\u542B not found / invalid ref / Local agent config not found \u2192 \u5148 readAgent \u590D\u6838\uFF0C**\u7981\u6B62**\u636E\u6B64\u63A8\u65AD\u51ED\u8BC1\u7F3A\u5931\u6216\u901A\u9053\u5168\u6302\uFF1B\u540C\u4E00\u5DF2\u9A8C\u8BC1 key \u4ECD\u5931\u8D25\u4E14\u9519\u8BEF\u660E\u786E\u6307\u5411\u901A\u9053\uFF08429\u3001\u9274\u6743\u5931\u8D25\u3001machine offline\uFF09\u624D\u8BB0\u4E3A\u901A\u9053\u6545\u969C\u3002\u5224\u5B9A\u300C\u6D3E\u53D1\u901A\u9053\u6574\u4F53\u4E0D\u53EF\u7528\u300D\u9700 \u22652 \u4E2A\u4E0D\u540C\u5019\u9009\u5404\u81EA\u5B8C\u6210\u300C\u5DF2\u9A8C\u8BC1 key + \u4E00\u6B21\u771F\u5B9E\u6D3E\u53D1\u300D\u4E14\u5931\u8D25\uFF0C\u5019\u9009\u4E0D\u8DB3\u5C31\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\u3002**orphaned \u6216\u8FDB\u7A0B\u7ACB\u5373\u9000\u51FA\uFF080 tool calls\uFF09\u65F6\uFF0C\u7B2C\u4E00\u6B65\u5FC5\u987B\u770B logTail \u7684 stderr**\uFF0C\u5148\u6392\u9664\u8BED\u6CD5\u9519\u8BEF\u3001\u4F9D\u8D56\u7F3A\u5931\u4E0E\u6784\u5EFA\u5D29\u6E83\u2014\u2014CLI \u542F\u52A8\u5931\u8D25\u65F6\u8BF7\u6C42\u6839\u672C\u672A\u53D1\u51FA\uFF0C\u8868\u73B0\u6613\u88AB\u8BEF\u5224\u4E3A\u901A\u9053\u6545\u969C\uFF0C\u76F2\u76EE\u91CD\u6D3E\u65E0\u6CD5\u89E3\u51B3\u3002
424
424
  4. \u4EC5 status=failed\u3001\u8D85\u65F6\u6216 progress \u957F\u671F\u65E0\u52A8\u9759\uFF08\u7591\u4F3C\u5361\u6B7B\uFF09\u624D\u62C9 tailLines:30 \u770B\u65E5\u5FD7\u3002**\u7EC8\u6001 run \u7ED3\u8BBA\u5FC5\u8BFB status \u91CC\u7684 resultFile\uFF08readFile \u539F\u6587\uFF09\uFF0C\u7981\u6B62\u7528\u5E26 ANSI \u7684 .log \u6216 2000 \u5B57 lastAssistantText \u6458\u8981\u4EE3\u66FF**\uFF1B\u4E2D\u65AD run \u6B63\u6587\u53EF\u80FD\u7559 dialog/.log\uFF0C\u4F46 resultFile \u7F3A\u5931\u6309\u300C\u65E0\u7ED3\u8BBA\u300D\u5904\u7406\u4E14\u4E0D\u5C5E\u5DE5\u5177\u6545\u969C\uFF0C\u4E0D\u64C5\u65AD\u7528\u6237\u4E2D\u65AD\uFF0C\u4EA6\u4E0D\u8981\u56DE\u5934\u5543\u65E5\u5FD7\u3002append \u53EF\u76F4\u63A5\u8C03\u7528\u2014\u2014not found/\u5DF2\u7EC8\u6001/\u8FD0\u884C\u4E2D\u5165\u961F\u7531 executor \u81EA\u8BC1\uFF1Bstop \u53EF\u76F4\u63A5\u8C03\u7528\uFF0Cnot found/\u8FD0\u884C\u4E2D/\u5DF2\u7EC8\u6001\u7531\u63A7\u5236\u5E73\u9762\u5904\u7406\uFF08\u5DF2\u7EC8\u6001\u539F\u6837\u8FD4\u56DE\u3001\u4E0D\u8986\u76D6\uFF09\u3002
@@ -7,7 +7,7 @@ import {
7
7
  listUserRecordsFromServers,
8
8
  readDbRecordFromServers,
9
9
  readLiveDbRecordAfterTombstoneMerge
10
- } from "./chunk-H7HWWNJB.js";
10
+ } from "./chunk-PJILX6KS.js";
11
11
  import {
12
12
  parsePositiveFiniteNumberOrFallback
13
13
  } from "./chunk-Y5GCAMGP.js";
@@ -69,7 +69,7 @@ import {
69
69
  } from "./chunk-4SN6J65J.js";
70
70
  import {
71
71
  t
72
- } from "./chunk-E4LYPSYM.js";
72
+ } from "./chunk-PPCUXO3E.js";
73
73
  import {
74
74
  asNonEmptyStringArray,
75
75
  asTrimmedNonEmptyStringArray
@@ -558,7 +558,7 @@ async function buildCreatedAgentRecord(args) {
558
558
  const resolvedAgentInput = resolveCliAgentKeyInput(args.parsed.agentInput);
559
559
  const agentKey = resolvedAgentInput.startsWith("agent-") ? resolvedAgentInput : createAgentKey.private(userId || "local", resolvedAgentInput);
560
560
  if (args.parsed.presetId) {
561
- const { resolveProviderPresetFields } = await import("./providerPresetApply-HBBUUVJD.js");
561
+ const { resolveProviderPresetFields } = await import("./providerPresetApply-EQESXT6X.js");
562
562
  const fields = resolveProviderPresetFields(args.parsed.presetId);
563
563
  if (fields.kind === "manual") {
564
564
  throw new Error(
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  toolRegistry
3
- } from "./chunk-SEEXRWNB.js";
3
+ } from "./chunk-ACMRWLRR.js";
4
4
  import {
5
5
  runtime_default
6
- } from "./chunk-HNO2SEYI.js";
6
+ } from "./chunk-KJCSY4TW.js";
7
7
  import {
8
8
  canonicalizeToolNames
9
9
  } from "./chunk-AKE53VMW.js";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-HNUWUO75.js";
4
4
  import {
5
5
  resolveToolImagePolicy
6
- } from "./chunk-6I7ZP7KJ.js";
6
+ } from "./chunk-JBWLZ3CB.js";
7
7
  import {
8
8
  accumulateToolCallDelta,
9
9
  createThinkParserState,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  t
3
- } from "./chunk-E4LYPSYM.js";
3
+ } from "./chunk-PPCUXO3E.js";
4
4
 
5
5
  // packages/cli/windowsSelfUpdate.ts
6
6
  import { spawn } from "node:child_process";
@@ -6,7 +6,7 @@ import {
6
6
  resolveDiscoveryScope,
7
7
  resolvePaginationArgs,
8
8
  toDiscoverySafeAgentSummary
9
- } from "./chunk-JH7KMNGT.js";
9
+ } from "./chunk-RQDGDKFL.js";
10
10
  import {
11
11
  getUserDataItemTimestamp,
12
12
  mergeAndDedupUserData
@@ -38,7 +38,7 @@ import {
38
38
  toolRunUpdated,
39
39
  uiCardFallback,
40
40
  waitForAbortableDelay
41
- } from "./chunk-KCYY5F2P.js";
41
+ } from "./chunk-ZIEPLFWS.js";
42
42
  import {
43
43
  isGatewayHttpStatus
44
44
  } from "./chunk-NF64D32W.js";
@@ -55,7 +55,7 @@ import {
55
55
  } from "./chunk-I5PBXF7O.js";
56
56
  import {
57
57
  createDocState
58
- } from "./chunk-M43VXSMX.js";
58
+ } from "./chunk-JX2QFYIA.js";
59
59
  import {
60
60
  ToolApiError,
61
61
  buildToolRequestHeaders,
@@ -79,7 +79,7 @@ import {
79
79
  } from "./chunk-63W5N6P3.js";
80
80
  import {
81
81
  createDialogAction
82
- } from "./chunk-G7RFM5QA.js";
82
+ } from "./chunk-EDSRC2JN.js";
83
83
  import {
84
84
  DEFAULT_COLLAPSED_CATEGORIES,
85
85
  addContentToSpace,
@@ -96,7 +96,7 @@ import {
96
96
  updateContentCategory,
97
97
  updateContentTitle,
98
98
  writeStoredCollapsedCategories
99
- } from "./chunk-IZLXIV5L.js";
99
+ } from "./chunk-HSZ2YEPR.js";
100
100
  import {
101
101
  getCurrentSpaceId,
102
102
  getCurrentSpaceIdRaw,
@@ -119,14 +119,14 @@ import {
119
119
  selectMsgById,
120
120
  uiAskChoiceFunc,
121
121
  uiAskChoiceFunctionSchema
122
- } from "./chunk-HNO2SEYI.js";
122
+ } from "./chunk-KJCSY4TW.js";
123
123
  import {
124
124
  createAgent,
125
125
  deleteServerSyncedCredential,
126
126
  runLlm,
127
127
  streamAgentChatTurn,
128
128
  updateAgent
129
- } from "./chunk-YR4MRACW.js";
129
+ } from "./chunk-F6MQO3YY.js";
130
130
  import {
131
131
  buildMediaToolConfirmation,
132
132
  normalizeMediaConfirmExecutionRevision
@@ -3507,6 +3507,22 @@ function resolveConfirmedDialogDeletionTargets(preview, confirmedDialogIds) {
3507
3507
  return { targets, missingConfirmedDialogIds };
3508
3508
  }
3509
3509
 
3510
+ // packages/ai/tools/workspaceCooldownHelper.ts
3511
+ async function loadWorkspaceCredentialCooldowns(env = process.env, now = Date.now()) {
3512
+ let localCooldowns = {};
3513
+ let resolveCooldownFn;
3514
+ try {
3515
+ const credModulePath = "../../agent-runtime/credentialAvailability";
3516
+ const credMod = await import(credModulePath);
3517
+ if (credMod?.readCredentialAvailability && credMod?.resolveEffectiveCredentialCooldown) {
3518
+ localCooldowns = await credMod.readCredentialAvailability(env, now).catch(() => ({}));
3519
+ resolveCooldownFn = credMod.resolveEffectiveCredentialCooldown;
3520
+ }
3521
+ } catch {
3522
+ }
3523
+ return { localCooldowns, resolveCooldownFn };
3524
+ }
3525
+
3510
3526
  // packages/ai/tools/noloWorkspaceReadTools.ts
3511
3527
  var jsonPreview = (value, maxLength = 1800) => {
3512
3528
  const text = JSON.stringify(value, null, 2);
@@ -3882,7 +3898,7 @@ async function deleteDialogsFunc(args, thunkApi) {
3882
3898
  const deletedDialogIds = [];
3883
3899
  const deletedDialogKeys = [];
3884
3900
  const failures = [];
3885
- const { deleteDialog: deleteDialog2 } = await import("./dialogSlice-IGPTWSPB.js");
3901
+ const { deleteDialog: deleteDialog2 } = await import("./dialogSlice-X23NSXGM.js");
3886
3902
  for (const target of targets) {
3887
3903
  try {
3888
3904
  await thunkApi.dispatch(deleteDialog2(target.dbKey)).unwrap();
@@ -4024,17 +4040,7 @@ async function listAgentsFunc(args, thunkApi) {
4024
4040
  const userId = runtime?.currentUserId ?? void 0;
4025
4041
  const now = typeof args?.now === "number" ? args.now : Date.now();
4026
4042
  const env = args?.env ?? process.env;
4027
- let localCooldowns = {};
4028
- let resolveCooldownFn;
4029
- try {
4030
- const credModulePath = "../../agent-runtime/credentialAvailability";
4031
- const credMod = await import(credModulePath);
4032
- if (credMod?.readCredentialAvailability && credMod?.resolveEffectiveCredentialCooldown) {
4033
- localCooldowns = await credMod.readCredentialAvailability(env, now).catch(() => ({}));
4034
- resolveCooldownFn = credMod.resolveEffectiveCredentialCooldown;
4035
- }
4036
- } catch {
4037
- }
4043
+ const { localCooldowns, resolveCooldownFn } = await loadWorkspaceCredentialCooldowns(env, now);
4038
4044
  const allRecords = [...Array.from(recordsMap.values()), ...publicRecords];
4039
4045
  const agents = allRecords.map((record) => {
4040
4046
  const summary = toDiscoverySafeAgentSummary(record, {
@@ -18693,7 +18699,7 @@ async function updateDocFunc(args, thunkApi) {
18693
18699
  updated_at: (/* @__PURE__ */ new Date()).toISOString()
18694
18700
  };
18695
18701
  await dispatch(write({ data: updatedPageData, customKey: id })).unwrap();
18696
- const { getDocState, applyExternalDocUpdate } = await import("./docStore-HEAGW26W.js");
18702
+ const { getDocState, applyExternalDocUpdate } = await import("./docStore-OCOEV524.js");
18697
18703
  if (getDocState().pageKey === id) {
18698
18704
  applyExternalDocUpdate({
18699
18705
  slateData: finalSlateData,
@@ -2,7 +2,7 @@ import {
2
2
  clipMultilineText,
3
3
  fetchAndSerializeTable,
4
4
  waitForAbortableDelay
5
- } from "./chunk-KCYY5F2P.js";
5
+ } from "./chunk-ZIEPLFWS.js";
6
6
  import {
7
7
  isGatewayHttpStatus
8
8
  } from "./chunk-NF64D32W.js";
@@ -21,7 +21,7 @@ import {
21
21
  } from "./chunk-AGIM7IMJ.js";
22
22
  import {
23
23
  fetchAndCacheMessages
24
- } from "./chunk-HNO2SEYI.js";
24
+ } from "./chunk-KJCSY4TW.js";
25
25
  import {
26
26
  createSpaceKey
27
27
  } from "./chunk-UAD2WT54.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  addContentToSpace
3
- } from "./chunk-IZLXIV5L.js";
3
+ } from "./chunk-HSZ2YEPR.js";
4
4
  import {
5
5
  format,
6
6
  prepareAndPersistMessage,
7
7
  uiAskChoiceFunc,
8
8
  uiAskChoiceFunctionSchema
9
- } from "./chunk-HNO2SEYI.js";
9
+ } from "./chunk-KJCSY4TW.js";
10
10
  import {
11
11
  formatISO
12
12
  } from "./chunk-ZRAU6T47.js";
@@ -458,7 +458,7 @@ var slice = createSliceWithThunks({
458
458
  const overrides = {};
459
459
  if (args.systemPromptOverride !== void 0) overrides.prompt = args.systemPromptOverride;
460
460
  if (args.toolsOverride !== void 0) overrides.tools = args.toolsOverride;
461
- const { _executeModel } = await import("./_executeModel-ZUESBV6T.js");
461
+ const { _executeModel } = await import("./_executeModel-Y4Y6NSF2.js");
462
462
  return _executeModel(
463
463
  {
464
464
  isStreaming: args.isStreaming ?? false,
@@ -479,7 +479,7 @@ var slice = createSliceWithThunks({
479
479
  * - 循环直到无工具调用或触发其他运行时停止条件
480
480
  */
481
481
  runAgent: create.asyncThunk(async (args, thunkApi) => {
482
- const { runAgentClientLoop } = await import("./runAgentClientLoop-6AAA5HNQ.js");
482
+ const { runAgentClientLoop } = await import("./runAgentClientLoop-O6XYZPOG.js");
483
483
  const { content: loopContent, toolCallCount } = await runAgentClientLoop(
484
484
  {
485
485
  agentKey: args.agentKey,
@@ -495,7 +495,7 @@ var slice = createSliceWithThunks({
495
495
  * 聊天轮次流式 Agent 调用
496
496
  */
497
497
  streamAgentChatTurn: create.asyncThunk(async (args, thunkApi) => {
498
- const { streamAgentChatTurnHandler } = await import("./streamAgentChatTurn-WNNXYOLC.js");
498
+ const { streamAgentChatTurnHandler } = await import("./streamAgentChatTurn-VWPG52FR.js");
499
499
  return streamAgentChatTurnHandler(args, thunkApi);
500
500
  }),
501
501
  /**
@@ -7,7 +7,7 @@ import {
7
7
  deleteDialog,
8
8
  runtime_default,
9
9
  toast
10
- } from "./chunk-HNO2SEYI.js";
10
+ } from "./chunk-KJCSY4TW.js";
11
11
  import {
12
12
  UNCATEGORIZED_ID,
13
13
  addContentAction,
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-HNUWUO75.js";
4
4
  import {
5
5
  resolveToolImagePolicy
6
- } from "./chunk-6I7ZP7KJ.js";
6
+ } from "./chunk-JBWLZ3CB.js";
7
7
  import {
8
8
  projectOpenAiToolImages
9
9
  } from "./chunk-E2BESSAW.js";
@@ -11,7 +11,7 @@ import {
11
11
  getAntigravityUserAgent,
12
12
  readAntigravityProjectId,
13
13
  resolveAntigravityCloudCodeBaseUrl
14
- } from "./chunk-VEUSD6OF.js";
14
+ } from "./chunk-YF4ZRVP3.js";
15
15
  import {
16
16
  asOptionalTrimmedString
17
17
  } from "./chunk-G3SUCT4W.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  resolveAgentCallPlan
3
- } from "./chunk-P4YLK2OD.js";
3
+ } from "./chunk-XNOILBHV.js";
4
4
  import {
5
5
  SUBSCRIPTION_OAUTH_PROVIDERS
6
- } from "./chunk-VEUSD6OF.js";
6
+ } from "./chunk-YF4ZRVP3.js";
7
7
  import {
8
8
  findModelConfig,
9
9
  getProviderByModelName
@@ -13,10 +13,10 @@ import {
13
13
  resolveAgentRecordFromHybridStore,
14
14
  sanitizeAgentRecordForCliOutput,
15
15
  writeAgentRecord
16
- } from "./chunk-CJ37ZMCQ.js";
16
+ } from "./chunk-7C45ONOU.js";
17
17
  import {
18
18
  clearCliLocalRuntimePreparedAgentCache
19
- } from "./chunk-VXZ4YYNK.js";
19
+ } from "./chunk-2U2DMUGG.js";
20
20
  import {
21
21
  readCredentialAvailability
22
22
  } from "./chunk-HAB2UDLT.js";
@@ -244,7 +244,7 @@ async function runAgentCreateCommand(args, deps = {}) {
244
244
  let verifyResult;
245
245
  if (parsed.verify) {
246
246
  try {
247
- const { verifyCustomProvider } = await import("./agentProviderCommands-MEFUIECN.js");
247
+ const { verifyCustomProvider } = await import("./agentProviderCommands-SKW4L6NN.js");
248
248
  const rec = built.nextRecord;
249
249
  verifyResult = await verifyCustomProvider({
250
250
  providerUrl: rec.customProviderUrl,
@@ -333,7 +333,7 @@ async function saveDocState(arg, { dispatch, getState }) {
333
333
  ).unwrap();
334
334
  if (dbSpaceId) {
335
335
  try {
336
- const { updateContentTitle } = await import("./contentThunks-V5NBNTC5.js");
336
+ const { updateContentTitle } = await import("./contentThunks-DYUKG2UT.js");
337
337
  await dispatch(
338
338
  updateContentTitle({
339
339
  spaceId: dbSpaceId,
@@ -372,7 +372,7 @@ async function saveDocState(arg, { dispatch, getState }) {
372
372
  }
373
373
  }
374
374
  async function createDocState(args, thunkApi) {
375
- const { createPageAction } = await import("./createPageAction-D4GMHUPC.js");
375
+ const { createPageAction } = await import("./createPageAction-RLV5IWBB.js");
376
376
  return createPageAction(args, thunkApi);
377
377
  }
378
378
  function subscribe(listener) {