nolo-cli 0.83.0 → 0.84.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 (106) hide show
  1. package/{_executeModel-LUNEV235.js → _executeModel-BPUR2QYH.js} +29 -28
  2. package/{action-YVYQEAAV.js → action-P4TNFGAD.js} +3 -3
  3. package/{addContentAction-O7R66HEX.js → addContentAction-MB2HHMDZ.js} +2 -2
  4. package/{addDialogAgentAction-74OA7KYP.js → addDialogAgentAction-S2NRBCWW.js} +2 -2
  5. package/{agentDeleteCommand-2YAHAZFJ.js → agentDeleteCommand-MNAA6MIG.js} +15 -14
  6. package/{agentEmailCommands-G6A7IRPQ.js → agentEmailCommands-SK34WJKU.js} +37 -36
  7. package/{agentListCommands-KMS675GZ.js → agentListCommands-I26MKI4T.js} +31 -19
  8. package/{agentMachineCommands-W2SMNSQ3.js → agentMachineCommands-M6QDR6P3.js} +15 -14
  9. package/{agentProviderCommands-GNPTL5XR.js → agentProviderCommands-X3UNW77C.js} +1 -1
  10. package/{agentRecordCommands-D7BRMFNI.js → agentRecordCommands-HTHLO2MM.js} +36 -35
  11. package/{agentRunCommand-VL6MMEUB.js → agentRunCommand-IAIRCMTH.js} +38 -36
  12. package/{agentRuntimeLocal-VXZSDIGT.js → agentRuntimeLocal-3WTYYIT2.js} +16 -11
  13. package/{agentSlice-5YJHUO47.js → agentSlice-TVP3HINW.js} +2 -2
  14. package/{appDeleteCommands-32MHLR4L.js → appDeleteCommands-SB5TNLKY.js} +16 -15
  15. package/{appDeployCommands-WCQOUSOB.js → appDeployCommands-2IPKZINV.js} +16 -15
  16. package/{appDeployStatusCommands-6QKB7DYN.js → appDeployStatusCommands-K63TFUID.js} +16 -15
  17. package/{appGetCommands-SFAPP5PB.js → appGetCommands-VU2SLNEH.js} +16 -15
  18. package/{appListCommands-EKUBDRUO.js → appListCommands-S3T4DJ36.js} +16 -15
  19. package/{authCommand-F4EFRRX6.js → authCommand-HGP2XTKC.js} +100 -8
  20. package/{builtinSkillRegistry-FUAVTRVZ.js → builtinSkillRegistry-Q2VVY3SC.js} +2 -2
  21. package/{chatQueueReduxAdapter-PQMRR2PK.js → chatQueueReduxAdapter-TWIYKVIZ.js} +9 -9
  22. package/{chunk-Z77CRGTW.js → chunk-3AMA42ZI.js} +1 -1
  23. package/{chunk-5FBTLSFG.js → chunk-3BGIKIPF.js} +317 -153
  24. package/{chunk-ORYWEJO4.js → chunk-3IUWIAHP.js} +3 -3
  25. package/{chunk-Q2XN3EOZ.js → chunk-3VUWPRFW.js} +17 -7
  26. package/{chunk-GEPUP7OO.js → chunk-3YIAR5UI.js} +1 -1
  27. package/{chunk-5H7KJX7J.js → chunk-4MK3I7Y4.js} +1 -1
  28. package/{chunk-6VFARHZW.js → chunk-52Q2IW2X.js} +783 -999
  29. package/{chunk-6Q33GUCC.js → chunk-5MEYHVIB.js} +1 -1
  30. package/{chunk-6YTOJY35.js → chunk-6D2JFXLY.js} +35 -0
  31. package/{chunk-FZGV4FGK.js → chunk-6GFOD3TK.js} +260 -140
  32. package/{chunk-HJUYAD4A.js → chunk-6Z7MY3V7.js} +1 -1
  33. package/{chunk-V4MJDUSR.js → chunk-AHAHBQMU.js} +1 -1
  34. package/{chunk-TOP2VXOR.js → chunk-BFDFRLLQ.js} +2 -2
  35. package/chunk-BMQ2MJUK.js +153 -0
  36. package/{chunk-RG6JBBX5.js → chunk-CWQINZEA.js} +119 -3
  37. package/{chunk-BTI7PJDX.js → chunk-DD6XE56O.js} +12 -65
  38. package/{chunk-ETI2NYVF.js → chunk-FKNWP6SG.js} +1 -1
  39. package/{chunk-SSDAAEC2.js → chunk-FP76KI2Y.js} +280 -40
  40. package/chunk-FV3JEYR3.js +870 -0
  41. package/{chunk-DHDMC6FO.js → chunk-GIVFXPWK.js} +2 -0
  42. package/chunk-GMZLP5DV.js +82 -0
  43. package/{chunk-UZGQNTVW.js → chunk-GNCCNNZD.js} +3 -1
  44. package/{chunk-AFUORTY4.js → chunk-GP5LKBUZ.js} +1 -1
  45. package/{chunk-ZCYXJSTU.js → chunk-H4AHY5BU.js} +4 -81
  46. package/{chunk-OEVAY4J6.js → chunk-HAFJ3NDE.js} +2 -2
  47. package/{chunk-IIVGDG4I.js → chunk-HCT7U36O.js} +3 -0
  48. package/{chunk-4OEFYTWL.js → chunk-HKNXJGEC.js} +1 -1
  49. package/{chunk-VLTIYV3X.js → chunk-HYJFRTLW.js} +1 -1
  50. package/{chunk-NA35QHCF.js → chunk-K36IXSCQ.js} +1 -1
  51. package/{chunk-DRGSDQBL.js → chunk-KAUSRTO6.js} +2 -2
  52. package/{chunk-GPCZ7UXG.js → chunk-LJ5VW2UJ.js} +1 -1
  53. package/{chunk-YFE4A4O7.js → chunk-LMREEBWT.js} +120 -37
  54. package/{chunk-JRQFUXY7.js → chunk-LVIFM7VW.js} +1 -1
  55. package/{chunk-RFCKMYDK.js → chunk-MZYBSTMH.js} +4 -4
  56. package/chunk-OCZKATRC.js +129 -0
  57. package/{chunk-DNCEALKX.js → chunk-P5EVSOPA.js} +2 -2
  58. package/{chunk-BP4XNZRM.js → chunk-PBA4UJBK.js} +1 -1
  59. package/{chunk-G2O6V3HJ.js → chunk-PMAIQX7A.js} +3 -3
  60. package/{chunk-AEOE4Z6Q.js → chunk-QSHEEA5N.js} +2 -2
  61. package/{chunk-KQ4ONNQD.js → chunk-QU7KDSZX.js} +1 -1
  62. package/{chunk-45C5ER5U.js → chunk-RPJUFEGR.js} +4 -4
  63. package/{chunk-X6DN5HBD.js → chunk-U4OKDZFH.js} +3 -3
  64. package/{chunk-4S5QUMJP.js → chunk-UDVH2P4A.js} +4 -4
  65. package/{chunk-UKZDAFYT.js → chunk-UEVXFHQB.js} +2 -2
  66. package/{chunk-H62HCIUP.js → chunk-VRTTFDBM.js} +2 -1
  67. package/{chunk-6IG4XSS6.js → chunk-WP5UXDA5.js} +71 -4
  68. package/{chunk-3DII57IT.js → chunk-XD2MJFUG.js} +1 -1
  69. package/{chunk-QVKRR2SS.js → chunk-XP3VVAPG.js} +878 -175
  70. package/{chunk-L5UXH3B2.js → chunk-Z2PV6O2T.js} +18 -2
  71. package/{chunk-53HEEOTT.js → chunk-Z5625XML.js} +1 -1
  72. package/{contentThunks-GJV22WVZ.js → contentThunks-JYWI7G7I.js} +10 -10
  73. package/{createAgentAutomationAction-6V25TZEO.js → createAgentAutomationAction-Z4SUJ54Y.js} +10 -10
  74. package/{createDialogAction-SX36BGSX.js → createDialogAction-RCHFLVJ2.js} +12 -12
  75. package/{createPageAction-IR4BGJSI.js → createPageAction-YK2253XQ.js} +11 -11
  76. package/{dbSlice-XVWBAGYN.js → dbSlice-A6C6H32X.js} +1 -1
  77. package/{dialogCommands-5J56DFWN.js → dialogCommands-X4UOZQWX.js} +16 -15
  78. package/{dialogSlice-UNX2FAPZ.js → dialogSlice-IVTWLCE2.js} +15 -9
  79. package/{docCreateCommands-KYI2DC2U.js → docCreateCommands-VD6TGHG4.js} +15 -14
  80. package/{docDeleteCommands-67REUSRY.js → docDeleteCommands-OT3R2G4W.js} +16 -15
  81. package/{docReadCommands-HOSVSBDJ.js → docReadCommands-2G7BIXSH.js} +15 -14
  82. package/{docStore-JWVG5NDO.js → docStore-UENKCCDX.js} +2 -2
  83. package/{docUpdateCommands-EMGCSMXY.js → docUpdateCommands-45MVJKZA.js} +15 -14
  84. package/{handleSendMessageAction-B75UOJKF.js → handleSendMessageAction-LM2J4HC3.js} +50 -58
  85. package/index.js +51 -51
  86. package/{machineCommands-GFPTOY6L.js → machineCommands-6N6MQIE6.js} +38 -37
  87. package/{machineWsRunDispatch-46PSZ3DJ.js → machineWsRunDispatch-7MFKVQCR.js} +35 -34
  88. package/{memberThunks-QGFLFVCI.js → memberThunks-P2ECUJ56.js} +2 -2
  89. package/package.json +1 -1
  90. package/pdf-U6KSUEZZ.js +26435 -0
  91. package/{providerPresetApply-FG6NZ57W.js → providerPresetApply-XI3WUPTI.js} +2 -2
  92. package/{providerRegistry-757OWH3O.js → providerRegistry-KEPWWGXD.js} +2 -2
  93. package/{readlineWorkspace-UFSWHFKD.js → readlineWorkspace-JWBON5CX.js} +184 -63
  94. package/{removeDialogAgentAction-IX3MN2ZO.js → removeDialogAgentAction-W66BJ7CF.js} +4 -4
  95. package/{runAgentClientLoop-25LJ4XGV.js → runAgentClientLoop-TA4SSPHE.js} +26 -26
  96. package/{setDialogExtraReferencesAction-X4HCPNZL.js → setDialogExtraReferencesAction-2ALKG3WA.js} +3 -3
  97. package/{setPrimaryDialogAgentAction-4GMIQLOD.js → setPrimaryDialogAgentAction-TQZB55F6.js} +4 -4
  98. package/{settingSlice-ZQZVUPKK.js → settingSlice-P4ZW7K5X.js} +2 -2
  99. package/{spaceCommands-NKJVJCQQ.js → spaceCommands-6NSAXB7D.js} +15 -14
  100. package/{streamAgentChatTurn-A46QFV4O.js → streamAgentChatTurn-X5ENGUIS.js} +94 -34
  101. package/{switchDialogAgentAction-N52LRPA3.js → switchDialogAgentAction-3KI72HHS.js} +2 -2
  102. package/{toolApiClient-QVJ6HDNN.js → toolApiClient-G3M73RTB.js} +2 -2
  103. package/{tools-TTDGRNY6.js → tools-XRQR7ZZR.js} +23 -23
  104. package/{tuiSummaryLlmCaller-WFRWERGK.js → tuiSummaryLlmCaller-UFGFOIIW.js} +5 -4
  105. package/{updateDialogTitleAction-QJPZGF52.js → updateDialogTitleAction-ESUUD3GT.js} +10 -10
  106. package/chunk-Q5FJJ6XI.js +0 -103
@@ -61,6 +61,8 @@ var TOOL_PACKS = {
61
61
  "updateSelf",
62
62
  "ask_user",
63
63
  "createAgentAutomation",
64
+ "updateAgentAutomation",
65
+ "deleteAgentAutomation",
64
66
  "notifyUser"
65
67
  ],
66
68
  // L2 - 联网搜索:与 CAPABILITY_PACKS「web-search」对齐。
@@ -0,0 +1,82 @@
1
+ // packages/agent-runtime/sseFrames.ts
2
+ async function* readSseFrames(response) {
3
+ const reader = response.body?.getReader();
4
+ if (!reader) {
5
+ throw new Error("SSE response did not include a readable body.");
6
+ }
7
+ const decoder = new TextDecoder();
8
+ let buffer = "";
9
+ while (true) {
10
+ const { done, value } = await reader.read();
11
+ if (done) break;
12
+ buffer += decoder.decode(value, { stream: true });
13
+ let boundary = findSseFrameBoundary(buffer);
14
+ while (boundary) {
15
+ yield buffer.slice(0, boundary.index);
16
+ buffer = buffer.slice(boundary.index + boundary.separatorLength);
17
+ boundary = findSseFrameBoundary(buffer);
18
+ }
19
+ }
20
+ const remaining = decoder.decode();
21
+ if (remaining) {
22
+ buffer += remaining;
23
+ let boundary = findSseFrameBoundary(buffer);
24
+ while (boundary) {
25
+ yield buffer.slice(0, boundary.index);
26
+ buffer = buffer.slice(boundary.index + boundary.separatorLength);
27
+ boundary = findSseFrameBoundary(buffer);
28
+ }
29
+ }
30
+ if (buffer.trim()) yield buffer;
31
+ }
32
+ function findSseFrameBoundary(buffer) {
33
+ const lfLf = buffer.indexOf("\n\n");
34
+ const crLfCrLf = buffer.indexOf("\r\n\r\n");
35
+ if (lfLf === -1 && crLfCrLf === -1) return null;
36
+ const useLf = lfLf !== -1 && (crLfCrLf === -1 || lfLf < crLfCrLf);
37
+ return useLf ? { index: lfLf, separatorLength: 2 } : { index: crLfCrLf, separatorLength: 4 };
38
+ }
39
+ async function* streamSseDataValues(response, parse) {
40
+ const reader = response.body?.getReader();
41
+ if (!reader) return;
42
+ const decoder = new TextDecoder();
43
+ let buffer = "";
44
+ while (true) {
45
+ const { done, value } = await reader.read();
46
+ if (done) break;
47
+ buffer += decoder.decode(value, { stream: true });
48
+ const lines = buffer.split("\n");
49
+ buffer = lines.pop() ?? "";
50
+ for (const line of lines) {
51
+ const parsed = parse(line);
52
+ if (parsed) yield parsed;
53
+ }
54
+ }
55
+ const remaining = decoder.decode();
56
+ if (remaining) {
57
+ buffer += remaining;
58
+ const lines = buffer.split("\n");
59
+ buffer = lines.pop() ?? "";
60
+ for (const line of lines) {
61
+ const parsed = parse(line);
62
+ if (parsed) yield parsed;
63
+ }
64
+ }
65
+ if (buffer.trim()) {
66
+ const parsed = parse(buffer);
67
+ if (parsed) yield parsed;
68
+ }
69
+ }
70
+ async function readSseDataValues(response, parse) {
71
+ const values = [];
72
+ for await (const value of streamSseDataValues(response, parse)) {
73
+ values.push(value);
74
+ }
75
+ return values;
76
+ }
77
+
78
+ export {
79
+ readSseFrames,
80
+ streamSseDataValues,
81
+ readSseDataValues
82
+ };
@@ -129,7 +129,9 @@ async function refreshAntigravityToken(credential, deps = {}) {
129
129
  payload = {};
130
130
  }
131
131
  if (!response.ok) {
132
- const detail = typeof payload.error_description === "string" && payload.error_description.trim() ? payload.error_description.trim() : typeof payload.error === "string" && payload.error.trim() ? payload.error.trim() : rawBodyText.trim() || `HTTP ${response.status}`;
132
+ const errorCode = typeof payload.error === "string" && payload.error.trim() ? payload.error.trim() : void 0;
133
+ const errorDescription = typeof payload.error_description === "string" && payload.error_description.trim() ? payload.error_description.trim() : void 0;
134
+ const detail = (errorCode && errorDescription && errorDescription !== errorCode ? `${errorCode}: ${errorDescription}` : errorCode ?? errorDescription ?? rawBodyText.trim()) || `HTTP ${response.status}`;
133
135
  throw new Error(`Antigravity token refresh failed: ${detail}`);
134
136
  }
135
137
  if (typeof payload.access_token !== "string" || !payload.access_token.trim()) {
@@ -14,7 +14,7 @@ import {
14
14
  toTimestampMs,
15
15
  upsert,
16
16
  write
17
- } from "./chunk-H62HCIUP.js";
17
+ } from "./chunk-VRTTFDBM.js";
18
18
  import {
19
19
  createUserKey,
20
20
  createUserPreferenceKey,
@@ -1,3 +1,6 @@
1
+ import {
2
+ readSseFrames
3
+ } from "./chunk-GMZLP5DV.js";
1
4
  import {
2
5
  sanitizeForOutbound
3
6
  } from "./chunk-CQ3WA2NE.js";
@@ -40,7 +43,7 @@ import {
40
43
  clipCompactText,
41
44
  isMeaningfulChatCompletionOutput,
42
45
  isMeaningfulResponsesOutput
43
- } from "./chunk-DNCEALKX.js";
46
+ } from "./chunk-P5EVSOPA.js";
44
47
  import {
45
48
  NOLO_CLIENT_VERSION_HEADER,
46
49
  isPlatformMimoProviderModel
@@ -347,83 +350,6 @@ function flushChatCompletionStream(state) {
347
350
  }
348
351
  }
349
352
 
350
- // packages/agent-runtime/sseFrames.ts
351
- async function* readSseFrames(response) {
352
- const reader = response.body?.getReader();
353
- if (!reader) {
354
- throw new Error("SSE response did not include a readable body.");
355
- }
356
- const decoder = new TextDecoder();
357
- let buffer = "";
358
- while (true) {
359
- const { done, value } = await reader.read();
360
- if (done) break;
361
- buffer += decoder.decode(value, { stream: true });
362
- let boundary = findSseFrameBoundary(buffer);
363
- while (boundary) {
364
- yield buffer.slice(0, boundary.index);
365
- buffer = buffer.slice(boundary.index + boundary.separatorLength);
366
- boundary = findSseFrameBoundary(buffer);
367
- }
368
- }
369
- const remaining = decoder.decode();
370
- if (remaining) {
371
- buffer += remaining;
372
- let boundary = findSseFrameBoundary(buffer);
373
- while (boundary) {
374
- yield buffer.slice(0, boundary.index);
375
- buffer = buffer.slice(boundary.index + boundary.separatorLength);
376
- boundary = findSseFrameBoundary(buffer);
377
- }
378
- }
379
- if (buffer.trim()) yield buffer;
380
- }
381
- function findSseFrameBoundary(buffer) {
382
- const lfLf = buffer.indexOf("\n\n");
383
- const crLfCrLf = buffer.indexOf("\r\n\r\n");
384
- if (lfLf === -1 && crLfCrLf === -1) return null;
385
- const useLf = lfLf !== -1 && (crLfCrLf === -1 || lfLf < crLfCrLf);
386
- return useLf ? { index: lfLf, separatorLength: 2 } : { index: crLfCrLf, separatorLength: 4 };
387
- }
388
- async function* streamSseDataValues(response, parse) {
389
- const reader = response.body?.getReader();
390
- if (!reader) return;
391
- const decoder = new TextDecoder();
392
- let buffer = "";
393
- while (true) {
394
- const { done, value } = await reader.read();
395
- if (done) break;
396
- buffer += decoder.decode(value, { stream: true });
397
- const lines = buffer.split("\n");
398
- buffer = lines.pop() ?? "";
399
- for (const line of lines) {
400
- const parsed = parse(line);
401
- if (parsed) yield parsed;
402
- }
403
- }
404
- const remaining = decoder.decode();
405
- if (remaining) {
406
- buffer += remaining;
407
- const lines = buffer.split("\n");
408
- buffer = lines.pop() ?? "";
409
- for (const line of lines) {
410
- const parsed = parse(line);
411
- if (parsed) yield parsed;
412
- }
413
- }
414
- if (buffer.trim()) {
415
- const parsed = parse(buffer);
416
- if (parsed) yield parsed;
417
- }
418
- }
419
- async function readSseDataValues(response, parse) {
420
- const values = [];
421
- for await (const value of streamSseDataValues(response, parse)) {
422
- values.push(value);
423
- }
424
- return values;
425
- }
426
-
427
353
  // packages/agent-runtime/platformChatProvider.ts
428
354
  var PlatformStreamInterruptedError = class extends Error {
429
355
  code = "PLATFORM_STREAM_INTERRUPTED";
@@ -926,9 +852,6 @@ export {
926
852
  applyChatCompletionDelta,
927
853
  flushChatCompletionStream,
928
854
  providerHttpFailure,
929
- readSseFrames,
930
- streamSseDataValues,
931
- readSseDataValues,
932
855
  createResponsesToolAccumulator,
933
856
  applyResponsesToolEvent,
934
857
  finalizeResponsesToolCalls,
@@ -7,7 +7,7 @@ import {
7
7
  listUserRecordsFromServers,
8
8
  readDbRecordFromServers,
9
9
  readLiveDbRecordAfterTombstoneMerge
10
- } from "./chunk-GEPUP7OO.js";
10
+ } from "./chunk-3YIAR5UI.js";
11
11
  import {
12
12
  fetchWithTransientRetry
13
13
  } from "./chunk-5UTFL4QJ.js";
@@ -30,7 +30,7 @@ import {
30
30
  boundSummaryText,
31
31
  buildDialogReadEnvelope,
32
32
  projectDialogReadForAgent
33
- } from "./chunk-IIVGDG4I.js";
33
+ } from "./chunk-HCT7U36O.js";
34
34
  import {
35
35
  toErrorMessage
36
36
  } from "./chunk-HNMXYYJR.js";
@@ -854,6 +854,7 @@ function buildNoloWorkspaceOpenAiTools(args) {
854
854
  }
855
855
  }, ["query"]);
856
856
  add("listAgents", "List agents for delegation. Default scope='preferred' returns the user's favorites, owned, OAuth, custom API, and local agents only; scope='public' discovers shared/marketplace agents; scope='all' returns their deduplicated union. Public agents may consume platform credits. Copy the agentKey verbatim; use the runnable agentKey exactly and do not infer it from the display name. publicOnly is deprecated compatibility for scope='public'. Rate-limited agents are hidden unless showUnavailable is true.", {
857
+ query: stringToolParam("Optional case-insensitive search substring matching agent name, model, provider, handle, or agentKey."),
857
858
  scope: { type: "string", enum: ["preferred", "public", "all"], description: "Discovery scope; preferred is the default and does not load the public marketplace." },
858
859
  publicOnly: { type: "boolean", description: "Deprecated compatibility alias for scope='public'." },
859
860
  showUnavailable: { type: "boolean", description: "Include agents currently rate-limited (429). Default false." },
@@ -1183,6 +1184,8 @@ function buildNoloWorkspaceCommandArgs(call) {
1183
1184
  }
1184
1185
  case "listAgents": {
1185
1186
  const cliArgs = ["agent", "list"];
1187
+ const query = noloStringArg(args.query);
1188
+ if (query) cliArgs.push("--query", query);
1186
1189
  const space = noloStringArg(args.space);
1187
1190
  if (space) cliArgs.push("--space", space);
1188
1191
  const scope = noloStringArg(args.scope);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  normalizeTimingMs
3
- } from "./chunk-DNCEALKX.js";
3
+ } from "./chunk-P5EVSOPA.js";
4
4
  import {
5
5
  MODEL_LOOKUP_MAP
6
6
  } from "./chunk-OIVSQH2O.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getActiveDialogKey
3
- } from "./chunk-6YTOJY35.js";
3
+ } from "./chunk-6D2JFXLY.js";
4
4
  import {
5
5
  compactWhitespace
6
6
  } from "./chunk-DWLEOOGR.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  requireTokenUser
3
- } from "./chunk-ETI2NYVF.js";
3
+ } from "./chunk-FKNWP6SG.js";
4
4
  import {
5
5
  resolveServerUrl
6
6
  } from "./chunk-A7GB5UGH.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  toolRegistry
3
- } from "./chunk-5FBTLSFG.js";
3
+ } from "./chunk-3BGIKIPF.js";
4
4
  import {
5
5
  i18n_default
6
- } from "./chunk-QVKRR2SS.js";
6
+ } from "./chunk-XP3VVAPG.js";
7
7
  import {
8
8
  canonicalizeToolNames
9
9
  } from "./chunk-O6OSWFZQ.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generatePkcePair,
3
3
  startCallbackServer
4
- } from "./chunk-53HEEOTT.js";
4
+ } from "./chunk-Z5625XML.js";
5
5
  import {
6
6
  toErrorMessage
7
7
  } from "./chunk-HNMXYYJR.js";
@@ -4,7 +4,7 @@ import {
4
4
  refreshAntigravityOAuthToken,
5
5
  refreshOpenAiCodexToken,
6
6
  xaiRefresh
7
- } from "./chunk-53HEEOTT.js";
7
+ } from "./chunk-Z5625XML.js";
8
8
  import {
9
9
  defaultLoopbackRequest
10
10
  } from "./chunk-EADNWBAZ.js";
@@ -41,7 +41,7 @@ import {
41
41
  } from "./chunk-42V6BK2E.js";
42
42
  import {
43
43
  buildLocalAgentLookupKeys
44
- } from "./chunk-Z77CRGTW.js";
44
+ } from "./chunk-3AMA42ZI.js";
45
45
  import {
46
46
  LOCAL_CODEX_AGENT_ID,
47
47
  LOCAL_CODEX_AGENT_KEY,
@@ -54,14 +54,14 @@ import {
54
54
  } from "./chunk-MP64VFGD.js";
55
55
  import {
56
56
  inferCaptureIntent
57
- } from "./chunk-3DII57IT.js";
57
+ } from "./chunk-XD2MJFUG.js";
58
58
  import {
59
59
  buildCliPrompt
60
60
  } from "./chunk-ATNTHIZI.js";
61
61
  import {
62
62
  inlineImageUrlsForCustomProvider,
63
63
  prepareTools
64
- } from "./chunk-DRGSDQBL.js";
64
+ } from "./chunk-KAUSRTO6.js";
65
65
  import {
66
66
  getServerProviderSecret
67
67
  } from "./chunk-HS7MLR74.js";
@@ -80,7 +80,7 @@ import {
80
80
  rememberMemoryFunctionSchema,
81
81
  resolveAgentRequiredPackIds,
82
82
  setTodoListFunc
83
- } from "./chunk-5FBTLSFG.js";
83
+ } from "./chunk-3BGIKIPF.js";
84
84
  import {
85
85
  fetchWithTransientRetry,
86
86
  isTransientFetchError
@@ -99,7 +99,7 @@ import {
99
99
  } from "./chunk-3VNWWVKB.js";
100
100
  import {
101
101
  deriveCredentialGroup
102
- } from "./chunk-RG6JBBX5.js";
102
+ } from "./chunk-CWQINZEA.js";
103
103
  import {
104
104
  getModelPricing
105
105
  } from "./chunk-EYAQT56M.js";
@@ -109,14 +109,14 @@ import {
109
109
  prepareTokenUsageData,
110
110
  resolveBuiltinPlatformAgentConfig,
111
111
  runKeyed
112
- } from "./chunk-QVKRR2SS.js";
112
+ } from "./chunk-XP3VVAPG.js";
113
113
  import {
114
114
  BUILTIN_DIALOG_LLM_CHAT_FALLBACK_MODEL,
115
115
  BUILTIN_TITLE_LLM_CONFIG
116
116
  } from "./chunk-MC4XLIJ7.js";
117
117
  import {
118
118
  fetchServerSyncedCredential
119
- } from "./chunk-4S5QUMJP.js";
119
+ } from "./chunk-UDVH2P4A.js";
120
120
  import {
121
121
  require_date_fns
122
122
  } from "./chunk-M76ECQRD.js";
@@ -132,16 +132,14 @@ import {
132
132
  applySystemBuiltinSkillFilter,
133
133
  expandEnabledPacks,
134
134
  resolveEffectiveEnabledPacks
135
- } from "./chunk-DHDMC6FO.js";
135
+ } from "./chunk-GIVFXPWK.js";
136
136
  import {
137
137
  DEFAULT_HYBRID_READ_TIMEOUT_MS,
138
138
  Duration_exports,
139
139
  Effect_exports,
140
140
  Exit_exports,
141
141
  Option_exports,
142
- accumulateGeminiChunks,
143
142
  aggregateResponsesStream,
144
- buildGeminiGenerateContentRequest,
145
143
  buildLoadSkillExecutor,
146
144
  buildLocalDialogWritePlan,
147
145
  buildLocalWorkspaceOpenAiTools,
@@ -154,23 +152,17 @@ import {
154
152
  evaluateFileWritePolicy,
155
153
  executeLocalToolWithPolicy,
156
154
  executeOpenAiCompatibleChatCompletion,
157
- fetchAntigravityCloudCodeCompletion,
158
155
  filterRetainedLedgerRecords,
156
+ getAgentRuntimeToolParametersIndex,
159
157
  internalListWorkspaceEntries,
160
158
  internalSearchWorkspace,
161
- isGemini3Model,
162
159
  isLineRangeCovered,
163
160
  localDialogMessageRecordToRuntimeMessage,
164
- parseSseDataLineJson,
165
- parseSseDataLineObject,
166
161
  parseSyncServersEnv,
167
- parseUpstreamErrorBody,
168
162
  readDevinUpstreamFailure,
169
- resolveAntigravityFinishReason,
170
163
  resolveOpenAiCompatibleProviderConfig,
171
- shouldUseGeminiNativeToolRoute,
172
164
  summarizeToolArguments
173
- } from "./chunk-6VFARHZW.js";
165
+ } from "./chunk-52Q2IW2X.js";
174
166
  import {
175
167
  PlatformStreamInterruptedError,
176
168
  buildPlatformChatCompletionRequest,
@@ -179,14 +171,27 @@ import {
179
171
  parsePlatformChatCompletionData,
180
172
  parsePlatformChatCompletionResponse,
181
173
  readPlatformChatSseCompletion,
182
- readSseDataValues,
183
174
  resolvePlatformChatProviderConfig,
184
175
  shouldUsePlatformChatProvider
185
- } from "./chunk-ZCYXJSTU.js";
176
+ } from "./chunk-H4AHY5BU.js";
177
+ import {
178
+ accumulateGeminiChunks,
179
+ buildGeminiGenerateContentRequest,
180
+ fetchAntigravityCloudCodeCompletion,
181
+ isGemini3Model,
182
+ parseSseDataLineJson,
183
+ parseSseDataLineObject,
184
+ parseUpstreamErrorBody,
185
+ resolveAntigravityFinishReason,
186
+ shouldUseGeminiNativeToolRoute
187
+ } from "./chunk-FV3JEYR3.js";
188
+ import {
189
+ readSseDataValues
190
+ } from "./chunk-GMZLP5DV.js";
186
191
  import {
187
192
  resolveAgentRuntimeConfigFromRecord,
188
193
  resolveHistoricalToolContentCap
189
- } from "./chunk-5H7KJX7J.js";
194
+ } from "./chunk-4MK3I7Y4.js";
190
195
  import {
191
196
  isDevinOAuthAgent
192
197
  } from "./chunk-5ZUL4CUO.js";
@@ -200,7 +205,7 @@ import {
200
205
  buildNoloWorkspaceOpenAiTools,
201
206
  parseNoloWorkspaceToolArguments,
202
207
  resolveRuntimeToolSurfaceForAgent
203
- } from "./chunk-IIVGDG4I.js";
208
+ } from "./chunk-HCT7U36O.js";
204
209
  import {
205
210
  mergeAvailabilityDeadline,
206
211
  resolveAvailabilityAction,
@@ -208,7 +213,7 @@ import {
208
213
  } from "./chunk-FDTR4QJ6.js";
209
214
  import {
210
215
  isAntigravityOAuthAgent
211
- } from "./chunk-UZGQNTVW.js";
216
+ } from "./chunk-GNCCNNZD.js";
212
217
  import {
213
218
  resolvePlatformAuthToken
214
219
  } from "./chunk-6OZ36FXI.js";
@@ -218,14 +223,14 @@ import {
218
223
  } from "./chunk-2MBTWINN.js";
219
224
  import {
220
225
  normalizeUsage
221
- } from "./chunk-4OEFYTWL.js";
226
+ } from "./chunk-HKNXJGEC.js";
222
227
  import {
223
228
  clipCompactText,
224
229
  createProviderCallTimingTracker,
225
230
  finalizeProviderCallTiming,
226
231
  observeMeaningfulProviderResponseAt,
227
232
  withProviderCallTimingFields
228
- } from "./chunk-DNCEALKX.js";
233
+ } from "./chunk-P5EVSOPA.js";
229
234
  import {
230
235
  estimateTokenCount
231
236
  } from "./chunk-PSCNXBYA.js";
@@ -707,6 +712,35 @@ var STRINGS = {
707
712
  en: "Thinking: {0}",
708
713
  zh: "\u601D\u8003\u4E2D\uFF1A{0}"
709
714
  },
715
+ // --- Pre-delta turn phase labels (ctx-overflow-feedback batch 3) ----------
716
+ // Rendered on the spinner / activity line while the local runtime checks the
717
+ // context window, compacts history, or waits for the first model delta —
718
+ // the previously silent pre-delta window (batch 1/2a 修好 runtime 与 SSE,
719
+ // 这里补齐 CLI/TUI 的状态行投影)。compacting 行附带可取消提示:Esc /
720
+ // Ctrl+C 即 abort,语义与 localLoop 的 abortSignal 一致。
721
+ contextChecking: {
722
+ en: "Checking this model's context window\u2026",
723
+ zh: "\u6B63\u5728\u68C0\u67E5\u5F53\u524D\u6A21\u578B\u7684\u4E0A\u4E0B\u6587\u7A97\u53E3\u2026"
724
+ },
725
+ contextCompacting: {
726
+ en: "Compacting history\u2026 (Esc/Ctrl+C to cancel)",
727
+ zh: "\u6B63\u5728\u538B\u7F29\u5386\u53F2\u8BB0\u5F55\u2026\uFF08Esc/Ctrl+C \u53D6\u6D88\uFF09"
728
+ },
729
+ waitingForModel: {
730
+ en: "Waiting for the model\u2026",
731
+ zh: "\u6B63\u5728\u7B49\u5F85\u6A21\u578B\u54CD\u5E94\u2026"
732
+ },
733
+ // --- Local turn deadline failure (single actionable line) -----------------
734
+ // localLoop 主请求 idle deadline(DEFAULT_LLM_REQUEST_TIMEOUT_MS 兜底或调用方
735
+ // timeoutMs)到达后抛 code=LLM_REQUEST_TIMEOUT;generic 分支的「修本地
736
+ // 凭据」文案在这里是错误指引(请求已发出,问题在上游无响应)。
737
+ // 语义是 idle(静默窗):{0} 内没有任何新输出才放弃,不是说模型「完全没
738
+ // 响应」——文案必须与这个语义一致,否则会把正在生成的用户推向重复发送
739
+ // (2026-10 ctx-overflow-feedback review 修复 1)。
740
+ llmRequestTimedOut: {
741
+ en: "No new model output for {0}, so this turn was stopped. Your message was kept. Retry in this conversation, switch to another model, or run /compact first.",
742
+ zh: "\u6A21\u578B\u5DF2 {0} \u6CA1\u6709\u65B0\u8F93\u51FA\uFF0C\u672C\u8F6E\u5DF2\u505C\u6B62\u7B49\u5F85\uFF08\u53EF\u80FD\u4ECD\u5728\u751F\u6210\uFF09\u3002\u4F60\u7684\u6D88\u606F\u5DF2\u4FDD\u7559\u3002\u53EF\u5728\u672C\u5BF9\u8BDD\u91CD\u8BD5\u3001\u5207\u6362\u5230\u5176\u4ED6\u6A21\u578B\uFF0C\u6216\u5148 /compact \u538B\u7F29\u5BF9\u8BDD\u3002"
743
+ },
710
744
  thinkingTraceLine: {
711
745
  en: "\u273B Thought for {0}",
712
746
  zh: "\u273B \u601D\u8003 {0}"
@@ -1065,6 +1099,18 @@ var STRINGS = {
1065
1099
  en: "Unknown command: {0}\n\n",
1066
1100
  zh: "\u672A\u77E5\u547D\u4EE4\uFF1A{0}\n\n"
1067
1101
  },
1102
+ noConversationLinks: {
1103
+ en: "No links in this conversation yet.",
1104
+ zh: "\u672C\u4F1A\u8BDD\u8FD8\u6CA1\u6709\u51FA\u73B0\u94FE\u63A5\u3002"
1105
+ },
1106
+ conversationLinksCopyHint: {
1107
+ en: "Open one by copying its URL (Cmd/Ctrl + click, or select and copy).",
1108
+ zh: "\u590D\u5236\u5BF9\u5E94 URL \u5373\u53EF\u6253\u5F00\uFF08Cmd/Ctrl + \u70B9\u51FB\uFF0C\u6216\u9009\u4E2D\u590D\u5236\uFF09\u3002"
1109
+ },
1110
+ conversationLinksShowing: {
1111
+ en: "Links in this conversation (showing first {0} of {1}):",
1112
+ zh: "\u672C\u4F1A\u8BDD\u51FA\u73B0\u7684\u94FE\u63A5\uFF08\u663E\u793A\u524D {0} \u4E2A\uFF0C\u5171 {1} \u4E2A\uFF09\uFF1A"
1113
+ },
1068
1114
  runtimeUsage: { en: "Usage: /runtime <auto|local|server>", zh: "\u7528\u6CD5\uFF1A/runtime <auto|local|server>" },
1069
1115
  runtimeSet: { en: "Runtime: {0}", zh: "\u8FD0\u884C\u6A21\u5F0F\uFF1A{0}" },
1070
1116
  displayFixedHint: {
@@ -1371,6 +1417,11 @@ var TOOL_LABELS = {
1371
1417
  function toolLabel(name) {
1372
1418
  return TOOL_LABELS[name]?.[currentLocale] ?? name;
1373
1419
  }
1420
+ function toolLabelVariants(name) {
1421
+ const entry = TOOL_LABELS[name];
1422
+ if (!entry) return [name];
1423
+ return [...new Set(Object.values(entry))];
1424
+ }
1374
1425
  function agentRunCardLabels() {
1375
1426
  return {
1376
1427
  runStatus: t("runStatusLabel"),
@@ -2456,14 +2507,19 @@ var resolveAntigravityTransport = async (ctx) => {
2456
2507
  requestedToolNames,
2457
2508
  openAiToolNames: summarizeOpenAiToolNames(tools)
2458
2509
  });
2459
- const resolveLocalCredential = async ({ forceRefresh }) => resolveLocalAntigravityCredential({
2460
- credentialOwnerUserId,
2461
- apiKeyRefResolver,
2462
- apiKeyRef: agentConfig.apiKeyRef,
2463
- readCredential: () => readOAuthCredential("antigravity", void 0, legacyCredentialMigration),
2464
- migration: legacyCredentialMigration,
2465
- forceRefresh
2466
- });
2510
+ let lastUsedCredential = initialCredential;
2511
+ const resolveLocalCredential = async ({ forceRefresh }) => {
2512
+ const resolved = await resolveLocalAntigravityCredential({
2513
+ credentialOwnerUserId,
2514
+ apiKeyRefResolver,
2515
+ apiKeyRef: agentConfig.apiKeyRef,
2516
+ readCredential: () => readOAuthCredential("antigravity", void 0, legacyCredentialMigration),
2517
+ migration: legacyCredentialMigration,
2518
+ forceRefresh
2519
+ });
2520
+ lastUsedCredential = resolved;
2521
+ return resolved;
2522
+ };
2467
2523
  let result;
2468
2524
  try {
2469
2525
  result = await invokeAntigravity({
@@ -2517,10 +2573,27 @@ var resolveAntigravityTransport = async (ctx) => {
2517
2573
  };
2518
2574
  }
2519
2575
  if (result.status < 200 || result.status >= 300) {
2520
- const errMsg = result.body && typeof result.body === "object" && result.body.error && typeof result.body.error.message === "string" ? result.body.error.message : JSON.stringify(result.body);
2521
- throw new Error(
2576
+ const upstreamError = result.body && typeof result.body === "object" && result.body.error && typeof result.body.error === "object" ? result.body.error : void 0;
2577
+ const errMsg = (
2578
+ // Google Cloud Code Assist gates calls behind a one-time account
2579
+ // verification and answers HTTP 403 with the validation link in
2580
+ // `error.details[].metadata.validation_url` — NOT in
2581
+ // `error.message`. Extracting only `error.message` here drops the
2582
+ // link before agentRun's extractGoogleValidationLink can recover
2583
+ // it, so when details are present we append them after the clean
2584
+ // message; the extractor scans raw text for validation_url so a
2585
+ // `details=[...]` suffix is enough, and the Detail line keeps its
2586
+ // readable `HTTP 403 <message>` headline. Plain-message errors
2587
+ // keep the old shape so existing output stays unchanged.
2588
+ upstreamError && Array.isArray(upstreamError.details) ? `${typeof upstreamError.message === "string" ? upstreamError.message : ""} details=${JSON.stringify(upstreamError.details)}`.trim() : typeof upstreamError?.message === "string" ? upstreamError.message : JSON.stringify(result.body)
2589
+ );
2590
+ const failure = new Error(
2522
2591
  `local antigravity provider failed: HTTP ${result.status} ${errMsg}`
2523
2592
  );
2593
+ if (lastUsedCredential?.accountId) {
2594
+ failure.credentialAccountId = lastUsedCredential.accountId;
2595
+ }
2596
+ throw failure;
2524
2597
  }
2525
2598
  const choice = Array.isArray(result.body?.choices) ? result.body.choices[0] : void 0;
2526
2599
  const message = choice?.message ?? {};
@@ -9236,6 +9309,7 @@ function createCursorProvider(config) {
9236
9309
  ...config.executeTool ? { executeTool: config.executeTool } : {},
9237
9310
  ...config.searchWorkspace ? { searchWorkspace: config.searchWorkspace } : {},
9238
9311
  ...config.listWorkspaceEntries ? { listWorkspaceEntries: config.listWorkspaceEntries } : {},
9312
+ ...options?.signal ? { signal: options.signal } : {},
9239
9313
  ...options?.onTextDelta ? { onTextDelta: options.onTextDelta } : {},
9240
9314
  ...options?.onReasoningDelta ? { onReasoningDelta: options.onReasoningDelta } : {},
9241
9315
  ...options?.onToolEvent ? { onToolEvent: options.onToolEvent } : {},
@@ -9313,6 +9387,8 @@ var resolveCursorTransport = async (ctx) => {
9313
9387
  agentToolNames: activeAgentToolNames,
9314
9388
  call,
9315
9389
  executors: localToolExecutors,
9390
+ // 分发前参数闸门:与 host adapter 的 executeTool 同口径。
9391
+ toolParametersIndex: getAgentRuntimeToolParametersIndex(),
9316
9392
  detachMs: resolveExecShellDetachMs(deps.env),
9317
9393
  ...deps.confirmDestructiveAction ? { confirmDestructiveAction: deps.confirmDestructiveAction } : {}
9318
9394
  });
@@ -11548,7 +11624,8 @@ async function assertCredentialFanoutAllowed(deps, args) {
11548
11624
  const verdict = checkCredentialFanout({
11549
11625
  active,
11550
11626
  candidate: { agentKey: args.agentKey, credentialGroup: candidateGroup },
11551
- allowUnknownCredential: args.allowUnknownCredential === true
11627
+ allowUnknownCredential: args.allowUnknownCredential === true,
11628
+ allowCredentialConcurrency: args.allowCredentialConcurrency === true
11552
11629
  });
11553
11630
  if (!verdict.allowed) throw new Error(verdict.message);
11554
11631
  return candidateGroup;
@@ -13448,6 +13525,11 @@ function createCliLocalRuntimeAdapter(deps) {
13448
13525
  runToolNames: activeAgentToolNames,
13449
13526
  call: injectedCall,
13450
13527
  executors: localToolExecutors,
13528
+ // 分发前参数闸门:只覆盖 agent-runtime 工具族(workspace + nolo
13529
+ // workspace)。ai/tools registry 的工具不接——它们有各自的前置 policy
13530
+ // guard 与结构化结果契约(例:createTable 的 capture 确认守卫),
13531
+ // 闸门抢先拦截会覆盖这些语义(见 toolArgumentGate.ts 的范围说明)。
13532
+ toolParametersIndex: getAgentRuntimeToolParametersIndex(),
13451
13533
  abortSignal: opts?.abortSignal,
13452
13534
  detachMs: resolveExecShellDetachMs(deps.env),
13453
13535
  ...deps.confirmDestructiveAction ? { confirmDestructiveAction: deps.confirmDestructiveAction } : {}
@@ -13519,6 +13601,7 @@ export {
13519
13601
  dailyWelcomeTip,
13520
13602
  t,
13521
13603
  toolLabel,
13604
+ toolLabelVariants,
13522
13605
  agentRunCardLabels,
13523
13606
  createCliLocalRuntimeAdapter
13524
13607
  };
@@ -6,7 +6,7 @@ import {
6
6
  buildBuiltinObjectSkillDbKey,
7
7
  buildBuiltinObjectSkillPageContent,
8
8
  buildCodeWorkDiscipline
9
- } from "./chunk-DHDMC6FO.js";
9
+ } from "./chunk-GIVFXPWK.js";
10
10
  import {
11
11
  buildSkillDocMarkdown,
12
12
  resolvePageSkillMetadata