nolo-cli 0.204.0-alpha.3 → 0.205.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/{_executeModel-ZUESBV6T.js → _executeModel-U2XB3H4R.js} +17 -17
  2. package/{agentDeleteCommand-INOBZ3HP.js → agentDeleteCommand-PPB6JA5Y.js} +24 -24
  3. package/{agentEmailCommands-J6UTZBJC.js → agentEmailCommands-XHDV5OQ2.js} +26 -26
  4. package/{agentListCommands-6344UIVZ.js → agentListCommands-66ZCC36P.js} +16 -16
  5. package/{agentMachineCommands-TE6IRTIB.js → agentMachineCommands-XHM2USMU.js} +11 -11
  6. package/{agentProviderCommands-MEFUIECN.js → agentProviderCommands-SKW4L6NN.js} +2 -2
  7. package/{agentRecordCommands-34MHHVFX.js → agentRecordCommands-X5YU4AGX.js} +24 -24
  8. package/{agentRunCommand-7OMDQBRA.js → agentRunCommand-SINW3FLJ.js} +25 -25
  9. package/{agentRuntimeLocal-EO6WCTF2.js → agentRuntimeLocal-TLV4MITB.js} +9 -9
  10. package/{agentSlice-HUFGX25R.js → agentSlice-6XXGHTPP.js} +1 -1
  11. package/{appDeleteCommands-3DCLKVYC.js → appDeleteCommands-3WZVRCAN.js} +13 -13
  12. package/{appDeployCommands-X3MUBDOP.js → appDeployCommands-HQGQR2FV.js} +13 -13
  13. package/{appDeployStatusCommands-PXC3EHHS.js → appDeployStatusCommands-XWK7B6VD.js} +13 -13
  14. package/{appGetCommands-ETPPE6H7.js → appGetCommands-NR2SFXAG.js} +13 -13
  15. package/{appListCommands-OFIDLALN.js → appListCommands-UREKGWAC.js} +13 -13
  16. package/{authCommand-KPTIANH2.js → authCommand-NZC3H2EN.js} +62 -8
  17. package/{chromeOpsCommands-O4J346EQ.js → chromeOpsCommands-ECVS6CAO.js} +1 -1
  18. package/{chunk-YPYNRTWB.js → chunk-2GKUVGRT.js} +4 -4
  19. package/{chunk-77GDSGRM.js → chunk-3KUSLYEV.js} +31 -14
  20. package/{chunk-NGJWYWCF.js → chunk-4RERKW4Q.js} +5 -5
  21. package/{chunk-VXZ4YYNK.js → chunk-5EOHW7K3.js} +54 -39
  22. package/{chunk-33W4IFUU.js → chunk-5MXA4LWL.js} +1 -1
  23. package/{chunk-SXMTSDFS.js → chunk-5OJDQAJ2.js} +2 -2
  24. package/{chunk-E4KACSRR.js → chunk-5OV4MVQK.js} +2 -2
  25. package/{chunk-SZXJVQ7L.js → chunk-5XNUQGLF.js} +7 -7
  26. package/{chunk-IK6AAUGM.js → chunk-6AMR3AE6.js} +2 -2
  27. package/{chunk-QUJ3IHEK.js → chunk-767YOSGT.js} +2 -2
  28. package/{chunk-CJ37ZMCQ.js → chunk-7C45ONOU.js} +1 -1
  29. package/{chunk-RXX262QX.js → chunk-7LJEJV4F.js} +33 -6
  30. package/{chunk-CQHMBWZH.js → chunk-7NMNKOW5.js} +1 -1
  31. package/{chunk-EPJFGQYO.js → chunk-7T5TLIY4.js} +1 -1
  32. package/{chunk-266E37EL.js → chunk-CDGCIP2L.js} +3 -3
  33. package/{chunk-DQ7PCRZ6.js → chunk-DDERKP4L.js} +4 -4
  34. package/{chunk-UMIQZ7PX.js → chunk-DGCIYDMU.js} +4 -4
  35. package/{chunk-M43VXSMX.js → chunk-IAYMBPDZ.js} +2 -2
  36. package/{chunk-VCFU3BO5.js → chunk-JASKVAYJ.js} +2 -2
  37. package/{chunk-6I7ZP7KJ.js → chunk-JBWLZ3CB.js} +2 -2
  38. package/{chunk-SEEXRWNB.js → chunk-K7ZZPUNO.js} +27 -21
  39. package/{chunk-JH7KMNGT.js → chunk-L5FZUSB6.js} +2 -2
  40. package/{chunk-BC4UX4EZ.js → chunk-LDPZBAQK.js} +2 -2
  41. package/{chunk-G7RFM5QA.js → chunk-LKV5K7PW.js} +2 -2
  42. package/{chunk-4KPB3KWX.js → chunk-LTI5T3A6.js} +309 -82
  43. package/{chunk-MZXWSY4E.js → chunk-MNWKNN6V.js} +1 -1
  44. package/{chunk-3MXJWFLO.js → chunk-NUAQ3QHF.js} +1 -1
  45. package/{chunk-H7HWWNJB.js → chunk-PJILX6KS.js} +1 -1
  46. package/{chunk-E4LYPSYM.js → chunk-PPCUXO3E.js} +12 -0
  47. package/{chunk-KCYY5F2P.js → chunk-QSAUX2Q2.js} +2 -2
  48. package/{chunk-IZLXIV5L.js → chunk-SEOM7GLZ.js} +1 -1
  49. package/{chunk-6KWPMJ5C.js → chunk-TYKUYQDP.js} +6 -6
  50. package/{chunk-HAB2UDLT.js → chunk-W45PCJHS.js} +1 -1
  51. package/{chunk-P4YLK2OD.js → chunk-XNOILBHV.js} +1 -1
  52. package/{chunk-YR4MRACW.js → chunk-Y3ASVJWL.js} +3 -3
  53. package/{chunk-VEUSD6OF.js → chunk-YF4ZRVP3.js} +5 -1
  54. package/{chunk-JL3YTCPQ.js → chunk-YHT3ZONH.js} +2 -2
  55. package/{chunk-BER2RSTL.js → chunk-YJ6UWOO5.js} +2 -2
  56. package/{chunk-NTLJGRAT.js → chunk-YT65GYRP.js} +1 -1
  57. package/{chunk-HNO2SEYI.js → chunk-ZCKXJTCW.js} +8 -8
  58. package/{commandRegistry-XBZJWVTJ.js → commandRegistry-F5V2QBJ5.js} +59 -59
  59. package/{contentThunks-V5NBNTC5.js → contentThunks-IXBWQP4P.js} +3 -3
  60. package/{cooldownCommands-BLRMLW7Q.js → cooldownCommands-I4ETQ4AO.js} +3 -3
  61. package/{createAgentAutomationAction-4TXJ366P.js → createAgentAutomationAction-7O7PFPDO.js} +3 -3
  62. package/{createDialogAction-4SPT75DB.js → createDialogAction-DRHO4XCF.js} +4 -4
  63. package/{createPageAction-D4GMHUPC.js → createPageAction-TFGJRDZX.js} +3 -3
  64. package/{dialogCommands-6RRP5KUH.js → dialogCommands-X3GNU6DC.js} +13 -13
  65. package/{dialogSlice-IGPTWSPB.js → dialogSlice-CXIZ5UTI.js} +2 -2
  66. package/{docCreateCommands-7ODYDGRL.js → docCreateCommands-YDXECDNF.js} +12 -12
  67. package/{docDeleteCommands-OEIRM3CC.js → docDeleteCommands-DPMHSXK7.js} +13 -13
  68. package/{docReadCommands-W56GNAWP.js → docReadCommands-HH4TTBSR.js} +12 -12
  69. package/{docStore-HEAGW26W.js → docStore-5AHNSAEI.js} +1 -1
  70. package/{docUpdateCommands-33Q3SEG7.js → docUpdateCommands-74I6RA7U.js} +12 -12
  71. package/{handleSendMessageAction-R2E7VYHQ.js → handleSendMessageAction-SO3PD3YA.js} +10 -10
  72. package/index.js +7 -7
  73. package/{localRuntimeAdapter-J5GD66XZ.js → localRuntimeAdapter-5BG42C3L.js} +22 -22
  74. package/{machineCommands-AT7B4LFO.js → machineCommands-HOOU3DI7.js} +23 -23
  75. package/{machineWsRunDispatch-CRDELH46.js → machineWsRunDispatch-KUSLW2GE.js} +23 -23
  76. package/package.json +1 -1
  77. package/{providerPresetApply-HBBUUVJD.js → providerPresetApply-EQESXT6X.js} +1 -1
  78. package/{providerRegistry-5LK2NXYE.js → providerRegistry-PZ56P43E.js} +1 -1
  79. package/{readlineWorkspace-FPHZGNZP.js → readlineWorkspace-GBI2NFXY.js} +30 -30
  80. package/{runAgentClientLoop-6AAA5HNQ.js → runAgentClientLoop-ERVJ4LFY.js} +15 -15
  81. package/{secretCommands-S2DDPIQ4.js → secretCommands-RLIO3QK5.js} +1 -1
  82. package/{spaceCommands-LPKHBCPU.js → spaceCommands-SJJPZL7J.js} +11 -11
  83. package/{streamAgentChatTurn-WNNXYOLC.js → streamAgentChatTurn-2M4L7PF4.js} +19 -19
  84. package/{tools-QLURHFLS.js → tools-GINHFGST.js} +10 -10
  85. package/{tuiSummaryLlmCaller-73QO3HAD.js → tuiSummaryLlmCaller-CEIZAKUV.js} +4 -4
  86. package/{updateCommands-LEJRRVBB.js → updateCommands-N7K7TEU4.js} +3 -3
  87. package/{updateDialogTitleAction-5UVS3ADT.js → updateDialogTitleAction-4EIHKTKR.js} +3 -3
  88. package/{windowsSelfUpdate-LSSQLXVS.js → windowsSelfUpdate-SVJKL6VH.js} +2 -2
@@ -3,10 +3,10 @@ import {
3
3
  } from "./chunk-HS7MLR74.js";
4
4
  import {
5
5
  performServerProxyFetchWithRetry
6
- } from "./chunk-BER2RSTL.js";
6
+ } from "./chunk-YJ6UWOO5.js";
7
7
  import {
8
8
  fetchServerSyncedCredential
9
- } from "./chunk-YR4MRACW.js";
9
+ } from "./chunk-Y3ASVJWL.js";
10
10
  import {
11
11
  buildSkillGuidancePromptBlock
12
12
  } from "./chunk-Y6M7KJOA.js";
@@ -23,7 +23,7 @@ import {
23
23
  compileContextLayers,
24
24
  detectDispatchIntentFromMessages,
25
25
  resolveToolGuidedSections
26
- } from "./chunk-IK6AAUGM.js";
26
+ } from "./chunk-6AMR3AE6.js";
27
27
  import {
28
28
  convertMessagesToResponsesInput,
29
29
  getUsageRequestOptions,
@@ -36,7 +36,7 @@ import {
36
36
  import {
37
37
  resolveAgentCallPlan,
38
38
  resolveClientWire
39
- } from "./chunk-P4YLK2OD.js";
39
+ } from "./chunk-XNOILBHV.js";
40
40
  import {
41
41
  createFileCredentialBroker
42
42
  } from "./chunk-UIOEHFF6.js";
@@ -9,7 +9,7 @@ import {
9
9
  resolveRawAgentInput,
10
10
  resolveServerUrl,
11
11
  writeUsage
12
- } from "./chunk-3MXJWFLO.js";
12
+ } from "./chunk-NUAQ3QHF.js";
13
13
  import {
14
14
  parsePositiveFiniteNumberOrFallback
15
15
  } from "./chunk-Y5GCAMGP.js";
@@ -19,7 +19,7 @@ import {
19
19
  import {
20
20
  readDbRecord,
21
21
  resolveAgentRecordFromHybridStore
22
- } from "./chunk-CJ37ZMCQ.js";
22
+ } from "./chunk-7C45ONOU.js";
23
23
  import {
24
24
  INSTABOX_RUN_CONFIG_ENV,
25
25
  createCliLocalRuntimeAdapter,
@@ -38,12 +38,12 @@ import {
38
38
  resolveFileWriteGateEnabled,
39
39
  resolveLocalUserId,
40
40
  validateInstaboxWorkspaceSelection
41
- } from "./chunk-VXZ4YYNK.js";
41
+ } from "./chunk-5EOHW7K3.js";
42
42
  import {
43
43
  clearCredentialAvailability,
44
44
  readEffectiveCredentialEntry,
45
45
  recordCredentialProbe
46
- } from "./chunk-HAB2UDLT.js";
46
+ } from "./chunk-W45PCJHS.js";
47
47
  import {
48
48
  isLocalCliAgentKey
49
49
  } from "./chunk-NBTY7YJF.js";
@@ -72,14 +72,14 @@ import {
72
72
  } from "./chunk-BMQ2MJUK.js";
73
73
  import {
74
74
  resolveCliLocalRuntimeKeyCapability
75
- } from "./chunk-SEEXRWNB.js";
75
+ } from "./chunk-K7ZZPUNO.js";
76
76
  import {
77
77
  isTransientFetchError
78
78
  } from "./chunk-KFHREHUQ.js";
79
79
  import {
80
80
  parseUiCard,
81
81
  uiCardFallback
82
- } from "./chunk-KCYY5F2P.js";
82
+ } from "./chunk-QSAUX2Q2.js";
83
83
  import {
84
84
  isGatewayHttpStatus
85
85
  } from "./chunk-NF64D32W.js";
@@ -88,7 +88,7 @@ import {
88
88
  chooseMemoryOwners,
89
89
  loadMemoryCandidatesFromDb,
90
90
  resolveAgentMemoryPolicy
91
- } from "./chunk-G7RFM5QA.js";
91
+ } from "./chunk-LKV5K7PW.js";
92
92
  import {
93
93
  API_REPORTED_COST_MULTIPLIER,
94
94
  estimateMessagesTokens,
@@ -96,7 +96,7 @@ import {
96
96
  resolveAgentContextWindow,
97
97
  resolveOccupancy,
98
98
  resolveOccupancyWindow
99
- } from "./chunk-HNO2SEYI.js";
99
+ } from "./chunk-ZCKXJTCW.js";
100
100
  import {
101
101
  isCliAuthorityBrokerProtocolError,
102
102
  isCliAuthorityBrokerTimeoutError,
@@ -116,10 +116,10 @@ import {
116
116
  LOCAL_AGENT_CONFIG_MISSING_CODE,
117
117
  LOCAL_TURN_ABORTED_CODE,
118
118
  readActionGate
119
- } from "./chunk-6KWPMJ5C.js";
119
+ } from "./chunk-TYKUYQDP.js";
120
120
  import {
121
121
  resolveAgentRuntimeConfigFromRecord
122
- } from "./chunk-MZXWSY4E.js";
122
+ } from "./chunk-MNWKNN6V.js";
123
123
  import {
124
124
  createThinkParserState,
125
125
  flushThinkParser,
@@ -135,7 +135,7 @@ import {
135
135
  mergeAvailabilityDeadline,
136
136
  resolveCooldownGate,
137
137
  resolveCredentialKeyWithFallback
138
- } from "./chunk-RXX262QX.js";
138
+ } from "./chunk-7LJEJV4F.js";
139
139
  import {
140
140
  ATTACHMENT_PART_TYPE,
141
141
  ATTACHMENT_PART_VERSION,
@@ -178,7 +178,7 @@ import {
178
178
  } from "./chunk-M2EJHDJP.js";
179
179
  import {
180
180
  isAntigravityOAuthAgent
181
- } from "./chunk-VEUSD6OF.js";
181
+ } from "./chunk-YF4ZRVP3.js";
182
182
  import {
183
183
  createRunActivityTracker,
184
184
  createShellApprovalChild,
@@ -230,7 +230,7 @@ import {
230
230
  t,
231
231
  toolLabel,
232
232
  toolLabelVariants
233
- } from "./chunk-E4LYPSYM.js";
233
+ } from "./chunk-PPCUXO3E.js";
234
234
  import {
235
235
  createMemoryKey
236
236
  } from "./chunk-ECX3NKRD.js";
@@ -11412,7 +11412,7 @@ function isBalanceExhaustedError(error) {
11412
11412
 
11413
11413
  // packages/cli/client/agentRun.ts
11414
11414
  async function loadRunLocalAgentTurn() {
11415
- const { runLocalAgentTurn } = await import("./agentRuntimeLocal-EO6WCTF2.js");
11415
+ const { runLocalAgentTurn } = await import("./agentRuntimeLocal-TLV4MITB.js");
11416
11416
  return runLocalAgentTurn;
11417
11417
  }
11418
11418
  var stripDebugNoise = (s) => s.replace(/\s*raw="[\s\S]*"/g, "").replace(/\s*raw=\S+/g, "").replace(/\s*headers=\[[^\]]*\]/g, "").replace(/\s*headers=\S+/g, "").trim();
@@ -11774,6 +11774,23 @@ function buildAuthFailure(ctx) {
11774
11774
  \xB7 Start the connector on this machine: \`nolo connect --daemon\` (\`nolo machine status\` shows whether it is online and connected to the same server)
11775
11775
  \xB7 Force a fully local run with --local (needs a local credential for this agent), or run on the server: --server
11776
11776
  Detail: ${ctx.message} ${NO_FALLBACK} ${SERVER_FALLBACK_HINT}
11777
+ `;
11778
+ }
11779
+ if (ctx.status === 403 && ctx.message.includes("owner-required proxy failed") && /"code"\s*:\s*"owner_oauth_unavailable"/i.test(ctx.message)) {
11780
+ return `${RUN_UNAVAILABLE_PREFIX} (${ctx.where} returned HTTP ${ctx.status}, the agent owner's OAuth credential is unavailable on the server \u2014 \u5206\u4EAB\u8005\uFF08agent \u6240\u6709\u8005\uFF09\u7684 OAuth \u51ED\u636E\u5728\u670D\u52A1\u7AEF\u4E0D\u53EF\u7528; owner_oauth_unavailable).
11781
+ \xB7 Ask the agent owner to run \`nolo auth <provider> --sync-to-server\` (or re-authenticate) / \u8BF7 owner \u6267\u884C \`nolo auth <provider> --sync-to-server\`\uFF08\u6216\u91CD\u65B0\u6388\u6743\uFF09
11782
+ \xB7 Re-logging in on your local machine will not resolve this (the credential belongs to the agent owner, not this machine) / \u4F60\u672C\u673A\u91CD\u65B0\u767B\u5F55\u4E0D\u4F1A\u89E3\u51B3
11783
+ \xB7 Running with --server will not bypass this (server runs also require the owner's credential) / --server \u4E5F\u7ED5\u4E0D\u8FC7\uFF08\u670D\u52A1\u7AEF\u8DEF\u5F84\u540C\u6837\u8981\u7528 owner \u51ED\u636E\uFF09
11784
+ Detail: ${ctx.message} ${NO_FALLBACK} ${SERVER_FALLBACK_HINT}
11785
+ `;
11786
+ }
11787
+ if ((ctx.status === 403 || ctx.status === 401) && ctx.message.includes("owner-required proxy failed") && /"code"\s*:\s*"(?:owner_grant_denied|owner_grant_revoked)"/i.test(ctx.message)) {
11788
+ const codeMatch = /"code"\s*:\s*"(owner_grant_(?:denied|revoked))"/i.exec(ctx.message);
11789
+ const code = codeMatch ? codeMatch[1].toLowerCase() : "owner_grant_denied";
11790
+ return `${RUN_UNAVAILABLE_PREFIX} (${ctx.where} returned HTTP ${ctx.status}, no valid grant for this agent \u2014 \u4F60\u5BF9\u8FD9\u4E2A agent \u6CA1\u6709\u6709\u6548\u6388\u6743\uFF08\u5206\u4EAB\u672A\u751F\u6548\u6216\u5DF2\u88AB\u64A4\u9500\uFF09; ${code}).
11791
+ \xB7 Ask the agent owner to re-share or grant access to this agent / \u8BF7\u8054\u7CFB owner \u91CD\u65B0\u5206\u4EAB\u6216\u6388\u6743
11792
+ \xB7 Re-logging in on your local machine will not resolve this (the grant must come from the agent owner) / \u4F60\u672C\u673A\u91CD\u65B0\u767B\u5F55\u4E0D\u4F1A\u89E3\u51B3
11793
+ Detail: ${ctx.message} ${NO_FALLBACK} ${SERVER_FALLBACK_HINT}
11777
11794
  `;
11778
11795
  }
11779
11796
  return `${RUN_UNAVAILABLE_PREFIX} (${ctx.where} returned HTTP ${ctx.status}, auth rejected). Detail: ${ctx.message} ${NO_FALLBACK} ${fix}, ${SERVER_FALLBACK_HINT}
@@ -7,7 +7,7 @@ import {
7
7
  mergeReferences,
8
8
  resolveReferenceAssets,
9
9
  resolveToolsFromKeys
10
- } from "./chunk-BER2RSTL.js";
10
+ } from "./chunk-YJ6UWOO5.js";
11
11
  import {
12
12
  UI_CARD_ENVELOPE_MAX_BYTES,
13
13
  getAllToolRuns,
@@ -18,14 +18,14 @@ import {
18
18
  selectSpaceContextLevel,
19
19
  selectUserTonePreset,
20
20
  uiCardFallback
21
- } from "./chunk-KCYY5F2P.js";
21
+ } from "./chunk-QSAUX2Q2.js";
22
22
  import {
23
23
  resolveAgentRecommendedSkillNames,
24
24
  resolveAgentRequiredPackIds
25
25
  } from "./chunk-I5PBXF7O.js";
26
26
  import {
27
27
  getDocState
28
- } from "./chunk-M43VXSMX.js";
28
+ } from "./chunk-IAYMBPDZ.js";
29
29
  import {
30
30
  resolveToolBaseUrl
31
31
  } from "./chunk-MYOH447Z.js";
@@ -37,7 +37,7 @@ import {
37
37
  } from "./chunk-A2ZMIRLN.js";
38
38
  import {
39
39
  getTableState
40
- } from "./chunk-IZLXIV5L.js";
40
+ } from "./chunk-SEOM7GLZ.js";
41
41
  import {
42
42
  getCurrentSpaceIdRaw,
43
43
  getViewMode
@@ -46,7 +46,7 @@ import {
46
46
  PERSONALIZATION_DIALOG_CATEGORY,
47
47
  buildPersonalizationDialogPolicyContext,
48
48
  selectAllMsgs
49
- } from "./chunk-HNO2SEYI.js";
49
+ } from "./chunk-ZCKXJTCW.js";
50
50
  import {
51
51
  selectPendingFiles
52
52
  } from "./chunk-OWYYDMGJ.js";
@@ -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";
@@ -15,7 +18,7 @@ import {
15
18
  readCredentialEntry,
16
19
  readEffectiveCredentialEntry,
17
20
  recordCredentialProbe
18
- } from "./chunk-HAB2UDLT.js";
21
+ } from "./chunk-W45PCJHS.js";
19
22
  import {
20
23
  OAUTH_PROVIDER_REFS,
21
24
  buildLocalAgentLookupKeys
@@ -68,7 +71,7 @@ import {
68
71
  import {
69
72
  inlineImageUrlsForCustomProvider,
70
73
  prepareTools
71
- } from "./chunk-BC4UX4EZ.js";
74
+ } from "./chunk-LDPZBAQK.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-K7ZZPUNO.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-L5FZUSB6.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-ZCKXJTCW.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-Y3ASVJWL.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,
@@ -244,7 +247,7 @@ import {
244
247
  resolveAvailabilityAction,
245
248
  resolveCooldownGate,
246
249
  resolveCredentialKeyWithFallback
247
- } from "./chunk-RXX262QX.js";
250
+ } from "./chunk-7LJEJV4F.js";
248
251
  import {
249
252
  buildDialogFallbackTitleFromUserInput,
250
253
  normalizeDialogTitle
@@ -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,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";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  fetchReferenceContents,
3
3
  resolveReferenceAssets
4
- } from "./chunk-BER2RSTL.js";
4
+ } from "./chunk-YJ6UWOO5.js";
5
5
  import {
6
6
  updateTokensAction
7
- } from "./chunk-HNO2SEYI.js";
7
+ } from "./chunk-ZCKXJTCW.js";
8
8
  import {
9
9
  applyUpdateTokensFulfilled
10
10
  } from "./chunk-OWYYDMGJ.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";
@@ -5,7 +5,7 @@ import {
5
5
  inlineImageUrlsForCustomProvider,
6
6
  prepareTools,
7
7
  shouldInlineImageUrlsForAgent
8
- } from "./chunk-BC4UX4EZ.js";
8
+ } from "./chunk-LDPZBAQK.js";
9
9
  import {
10
10
  CONFIRMATION_INPUT_KEYS,
11
11
  INVALID_TOOL_ARGS_REPLACEMENT,
@@ -14,16 +14,16 @@ import {
14
14
  performFetchRequest,
15
15
  sanitizeOutboundMessages,
16
16
  stripModelToolArgs
17
- } from "./chunk-YPYNRTWB.js";
17
+ } from "./chunk-2GKUVGRT.js";
18
18
  import {
19
19
  findToolExecutor,
20
20
  toolDefinitionsByName
21
- } from "./chunk-SEEXRWNB.js";
21
+ } from "./chunk-K7ZZPUNO.js";
22
22
  import {
23
23
  classifyApiError,
24
24
  classifyGenerationError,
25
25
  extractErrorDiagnostics
26
- } from "./chunk-BER2RSTL.js";
26
+ } from "./chunk-YJ6UWOO5.js";
27
27
  import {
28
28
  createSSEParser,
29
29
  createToolRunId,
@@ -32,7 +32,7 @@ import {
32
32
  toolRunSetPending,
33
33
  toolRunStarted,
34
34
  toolRunSucceeded
35
- } from "./chunk-KCYY5F2P.js";
35
+ } from "./chunk-QSAUX2Q2.js";
36
36
  import {
37
37
  getPublicImageAgentMode
38
38
  } from "./chunk-VIDPVFP3.js";
@@ -46,10 +46,10 @@ import {
46
46
  toast,
47
47
  toolResultNeedsUserConfirmation,
48
48
  updateToolMessage
49
- } from "./chunk-HNO2SEYI.js";
49
+ } from "./chunk-ZCKXJTCW.js";
50
50
  import {
51
51
  streamAgentChatTurn
52
- } from "./chunk-YR4MRACW.js";
52
+ } from "./chunk-Y3ASVJWL.js";
53
53
  import {
54
54
  addActiveController,
55
55
  getActiveDialogKey,
@@ -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(
@@ -79,13 +79,38 @@ function clampCooldownDeadline(at, now) {
79
79
  const max = now + MAX_COOLDOWN_MS;
80
80
  return Math.min(Math.max(at, min), max);
81
81
  }
82
- function shouldClearCooldownFromQuota(entry, quota, now) {
82
+ function parseQuotaWindowScope(scope) {
83
+ const matched = /^(gemini|3p)-(.+)$/.exec(scope);
84
+ return matched ? { family: matched[1], period: matched[2] } : { period: scope };
85
+ }
86
+ function resolveQuotaWindowFamily(model) {
87
+ if (typeof model !== "string" || !model.trim()) return void 0;
88
+ return /gemini/i.test(model) ? "gemini" : "3p";
89
+ }
90
+ function isWindowRelevantToFamily(scope, family) {
91
+ if (typeof scope !== "string") return true;
92
+ const scopeFamily = parseQuotaWindowScope(scope).family;
93
+ return scopeFamily === void 0 || family === void 0 || scopeFamily === family;
94
+ }
95
+ var SUBSCRIPTION_PERIODS = /* @__PURE__ */ new Set(["5h", "7d", "daily", "weekly", "monthly"]);
96
+ function isSubscriptionPeriodWindow(window) {
97
+ const { period } = parseQuotaWindowScope(window.scope);
98
+ return SUBSCRIPTION_PERIODS.has(period.trim().toLowerCase());
99
+ }
100
+ function isExhaustedWindow(window) {
101
+ return window.remaining === 0 || typeof window.utilization === "number" && window.utilization >= 0.95;
102
+ }
103
+ function shouldClearCooldownFromQuota(entry, quota, now, options) {
83
104
  if (!(typeof entry.nextAvailableAt === "number" && entry.nextAvailableAt > now)) return false;
84
105
  if (typeof entry.markedAt !== "number" || !Number.isFinite(entry.markedAt)) return false;
85
106
  if (!quota || !(quota.observedAt > entry.markedAt)) return false;
86
- const subscriptionWindows = quota.windows.filter((window) => window.scope === "5h" || window.scope === "7d");
107
+ const family = resolveQuotaWindowFamily(options?.model);
108
+ const relevantWindows = quota.windows.filter(
109
+ (window) => isWindowRelevantToFamily(window.scope, family)
110
+ );
111
+ const subscriptionWindows = relevantWindows.filter(isSubscriptionPeriodWindow);
87
112
  if (subscriptionWindows.length === 0) return false;
88
- if (quota.windows.some((window) => window.scope !== "5h" && window.scope !== "7d" && (window.remaining === 0 || typeof window.utilization === "number" && window.utilization >= 0.95))) return false;
113
+ if (relevantWindows.some((window) => !isSubscriptionPeriodWindow(window) && isExhaustedWindow(window))) return false;
89
114
  return subscriptionWindows.every((window) => {
90
115
  const hasUtilization = typeof window.utilization === "number";
91
116
  const hasRemaining = typeof window.remaining === "number";
@@ -114,16 +139,18 @@ function resolveAgentAvailability(agent, now = Date.now()) {
114
139
  const quota = agent?.quota;
115
140
  const isAdmissible = isAdmissibleQuotaSnapshot(quota, now);
116
141
  const hasObservedAt = Boolean(quota) && typeof quota?.observedAt === "number" && Number.isFinite(quota.observedAt);
117
- const hasWindows = Boolean(
118
- quota && Array.isArray(quota.windows) && quota.windows.length > 0
142
+ const family = resolveQuotaWindowFamily(agent?.model);
143
+ const relevantWindows = (quota?.windows ?? []).filter(
144
+ (window) => isWindowRelevantToFamily(window?.scope, family)
119
145
  );
146
+ const hasWindows = relevantWindows.length > 0;
120
147
  const hasValidQuota = isAdmissible && hasWindows;
121
148
  if (hasValidQuota) {
122
149
  let hasActiveRemainingZero = false;
123
150
  let hasActiveUtilizationHigh = false;
124
151
  let hasWindowResetPending = false;
125
152
  let maxResetAt;
126
- for (const w of quota.windows) {
153
+ for (const w of relevantWindows) {
127
154
  const inspected = inspectQuotaWindowExhaustion(w, now);
128
155
  if (!inspected) continue;
129
156
  if (inspected.resetAt !== void 0 && inspected.resetAt > now) {