nolo-cli 0.91.1 → 0.92.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 (92) hide show
  1. package/{_executeModel-H35GQ2XO.js → _executeModel-SCZL7EYW.js} +23 -22
  2. package/{agentDeleteCommand-XOFMXMHW.js → agentDeleteCommand-CTZYXUBY.js} +16 -15
  3. package/{agentEmailCommands-H2SEP6ZQ.js → agentEmailCommands-M4RKRMV5.js} +31 -30
  4. package/{agentListCommands-RYGH6NUL.js → agentListCommands-QWBMMYNO.js} +18 -17
  5. package/{agentMachineCommands-XELOBZIP.js → agentMachineCommands-CFGNRGKC.js} +16 -15
  6. package/{agentProviderCommands-JCRK6ST2.js → agentProviderCommands-TWB6E5WD.js} +1 -1
  7. package/{agentRecordCommands-43HAXAZO.js → agentRecordCommands-ZTUVMJOZ.js} +30 -29
  8. package/{agentRunCommand-GIPN6DBO.js → agentRunCommand-NARA7GSD.js} +30 -29
  9. package/{agentRuntimeLocal-SDOSSCLU.js → agentRuntimeLocal-OKYH7XBH.js} +14 -13
  10. package/{agentSlice-B2DLZMAC.js → agentSlice-L6BEWT2Q.js} +1 -1
  11. package/{appDeleteCommands-7OR5MAOR.js → appDeleteCommands-2D2R56YU.js} +17 -16
  12. package/{appDeployCommands-5GNI723H.js → appDeployCommands-R5PAA5YI.js} +17 -16
  13. package/{appDeployStatusCommands-WL2NG3SG.js → appDeployStatusCommands-VHTBTS3W.js} +17 -16
  14. package/{appGetCommands-7BVKQS44.js → appGetCommands-G35QG2QG.js} +17 -16
  15. package/{appListCommands-5VXFJOBU.js → appListCommands-YQ2PKESX.js} +17 -16
  16. package/{authCommand-N4Q6463J.js → authCommand-W6I6GD3F.js} +8 -8
  17. package/{builtinSkillRegistry-JPY2DKRF.js → builtinSkillRegistry-XG6RUDWO.js} +4 -3
  18. package/{chatQueueReduxAdapter-3KDRKXTT.js → chatQueueReduxAdapter-OINFB5SN.js} +7 -7
  19. package/{chromeCommands-NKU3OWKH.js → chromeCommands-K27J4OVZ.js} +91 -20
  20. package/{chromeOpsCommands-OQDJGD4Y.js → chromeOpsCommands-IXRLN57H.js} +4 -3
  21. package/{chunk-OOSVFT6S.js → chunk-27ONFIEY.js} +22 -4
  22. package/{chunk-W2P25VGS.js → chunk-2QX2MTNK.js} +3 -3
  23. package/{chunk-D2W6WRHT.js → chunk-2SYTUTLI.js} +244 -29
  24. package/{chunk-ZI2MEZMT.js → chunk-3BXNTXYI.js} +7 -1
  25. package/{chunk-Z5W7UMQV.js → chunk-4DPP773Q.js} +2 -2
  26. package/chunk-5J3PYNUP.js +255 -0
  27. package/{chunk-KQOD3G2X.js → chunk-5RUECWE2.js} +2 -2
  28. package/{chunk-YMPTI7RZ.js → chunk-66MWFK6R.js} +4 -4
  29. package/{chunk-PAYUVQ6P.js → chunk-6PPDYAMH.js} +11 -11
  30. package/{chunk-ZGJLSHER.js → chunk-7KVZ5LDQ.js} +2 -2
  31. package/{chunk-7YMUSSHQ.js → chunk-AVKLJP6J.js} +4 -4
  32. package/{chunk-N3XA2O6O.js → chunk-AZRHIN5B.js} +1 -1
  33. package/{chunk-BAAKVSMZ.js → chunk-BDHW7EBD.js} +1 -1
  34. package/{chunk-BFCXG6AJ.js → chunk-BPCPBG2O.js} +1 -1
  35. package/{chunk-K7M4I3PF.js → chunk-CCOXTK3I.js} +3 -3
  36. package/{chunk-YRIFJ6XQ.js → chunk-CUBJUVQS.js} +3 -3
  37. package/{chunk-ACTMNVHM.js → chunk-CYSYR67N.js} +1 -1
  38. package/{chunk-WC6A2Q7S.js → chunk-EMBK4B7D.js} +4 -1
  39. package/{chunk-64TIEZHF.js → chunk-FIZ5TAVE.js} +1 -1
  40. package/{chunk-6PELJ3DS.js → chunk-GA77XY7N.js} +24 -226
  41. package/{chunk-RZ6CQZB2.js → chunk-IBQ6NJI4.js} +1 -1
  42. package/{chunk-VETFWL5K.js → chunk-LNUOUGIY.js} +1 -1
  43. package/{chunk-GJUKGFHG.js → chunk-MV26343G.js} +4 -5
  44. package/{chunk-WT2IAJAJ.js → chunk-O26PCYLS.js} +77 -10
  45. package/{chunk-B4PW6UAI.js → chunk-P4U2QMT5.js} +14 -13
  46. package/{chunk-X6YIXGPT.js → chunk-P6GMCCAT.js} +1 -1
  47. package/{chunk-EHO5EGU4.js → chunk-PEXU23PJ.js} +7 -7
  48. package/{chunk-7EMJBGCA.js → chunk-PHINMJJZ.js} +36 -27
  49. package/{chunk-46CRK7XP.js → chunk-Q3SKC2TQ.js} +3 -3
  50. package/{chunk-NILSKYOE.js → chunk-Q7JFHTQT.js} +2 -2
  51. package/{chunk-HBTA2SGQ.js → chunk-QL32RJFG.js} +3 -3
  52. package/{chunk-G4EMOUX3.js → chunk-QMQBSKUP.js} +14 -14
  53. package/{chunk-232453C2.js → chunk-QZYL5UNG.js} +16 -12
  54. package/{chunk-IS5VEM2G.js → chunk-RESDFLXS.js} +1 -1
  55. package/{chunk-ISHYYQJC.js → chunk-S5XGT6GB.js} +1 -1
  56. package/{chunk-LS2MI3B4.js → chunk-TC6TTNZW.js} +2 -2
  57. package/{chunk-T5V7HA3K.js → chunk-U7ZDIW37.js} +1 -1
  58. package/{chunk-55VQ4OPL.js → chunk-V2AB7ULS.js} +2 -2
  59. package/{chunk-VBSVA6CB.js → chunk-X5VY2LEV.js} +2 -2
  60. package/{chunk-O6OSWFZQ.js → chunk-XUWRURDF.js} +6 -0
  61. package/{chunk-Q67DOFOO.js → chunk-Y3PMXGLH.js} +2 -0
  62. package/{chunk-25GAGMRK.js → chunk-YFIUVDQY.js} +2 -2
  63. package/{chunk-OY5IJI2N.js → chunk-YUNJN43V.js} +23 -3
  64. package/{commandRegistry-BP5JLW24.js → commandRegistry-T4PY3XBY.js} +72 -61
  65. package/{contentThunks-2HYFUXUM.js → contentThunks-7SBK3Y7B.js} +8 -8
  66. package/{createAgentAutomationAction-DCKUSJH7.js → createAgentAutomationAction-NPD23L7Y.js} +8 -8
  67. package/{createDialogAction-NRIAEH2A.js → createDialogAction-2JVPW2WV.js} +11 -10
  68. package/{createPageAction-AUJHHXGG.js → createPageAction-UUIPRGHK.js} +8 -8
  69. package/{dialogCommands-UJRGCRN6.js → dialogCommands-7JXIBGPD.js} +17 -16
  70. package/{dialogSlice-AHU4XXIW.js → dialogSlice-Q2QUTMHK.js} +7 -7
  71. package/{docCreateCommands-ZOV3ZBLW.js → docCreateCommands-2JDSCRGB.js} +16 -15
  72. package/{docDeleteCommands-G4KAXJYQ.js → docDeleteCommands-Y4XRBWKE.js} +17 -16
  73. package/{docReadCommands-B2MM3JIT.js → docReadCommands-35FY3PYU.js} +16 -15
  74. package/{docStore-SITH63V3.js → docStore-FWQIXF33.js} +1 -1
  75. package/{docUpdateCommands-2QNF5CYN.js → docUpdateCommands-MT7YKSP7.js} +16 -15
  76. package/{getPricing-OX7B4R6B.js → getPricing-NMMFT3YI.js} +3 -3
  77. package/{handleSendMessageAction-7ZMJMWLC.js → handleSendMessageAction-W33QLNXQ.js} +20 -9
  78. package/index.js +19 -4
  79. package/{machineCommands-YCTD5KOL.js → machineCommands-HLEUUEKS.js} +29 -28
  80. package/{machineWsRunDispatch-JFMD4ZAW.js → machineWsRunDispatch-DWBXW7XY.js} +29 -28
  81. package/{models-T3SG6MJ5.js → models-ZPU5EDF4.js} +2 -2
  82. package/package.json +1 -1
  83. package/{providerPresetApply-2QTBYN36.js → providerPresetApply-XTEXOH7X.js} +6 -6
  84. package/{providerRegistry-SVXE4G4T.js → providerRegistry-ADYDSLKR.js} +6 -6
  85. package/{readlineWorkspace-M3PLTBLD.js → readlineWorkspace-32ILQXZJ.js} +34 -33
  86. package/{runAgentClientLoop-QMCXBOBH.js → runAgentClientLoop-MSCR5Y3E.js} +21 -20
  87. package/{spaceCommands-3U6OHM6O.js → spaceCommands-UYWX63IP.js} +16 -15
  88. package/{streamAgentChatTurn-JPMJQSEE.js → streamAgentChatTurn-73OAEDOJ.js} +24 -23
  89. package/{tools-XQ5GIH6P.js → tools-6IUC3EFI.js} +18 -17
  90. package/{tuiSummaryLlmCaller-L63PDJUD.js → tuiSummaryLlmCaller-RVWN63CP.js} +5 -5
  91. package/{updateCommands-ECWKIWLQ.js → updateCommands-4EHDLF5J.js} +1 -1
  92. package/{updateDialogTitleAction-EGAZMLUB.js → updateDialogTitleAction-KCAY2OZF.js} +8 -8
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  assembleAgentDiscoveryResult,
6
6
  resolveDiscoveryScope
7
- } from "./chunk-KQOD3G2X.js";
7
+ } from "./chunk-5RUECWE2.js";
8
8
  import {
9
9
  fetchWithTransientRetry
10
10
  } from "./chunk-5UTFL4QJ.js";
@@ -35,7 +35,7 @@ import {
35
35
  } from "./chunk-3VNWWVKB.js";
36
36
  import {
37
37
  createDialogAction
38
- } from "./chunk-YMPTI7RZ.js";
38
+ } from "./chunk-66MWFK6R.js";
39
39
  import {
40
40
  addMemberSpace,
41
41
  fetchAuthoritativeRemoteSpace,
@@ -59,7 +59,7 @@ import {
59
59
  } from "./chunk-VF4K2QE6.js";
60
60
  import {
61
61
  createDocState
62
- } from "./chunk-NILSKYOE.js";
62
+ } from "./chunk-Q7JFHTQT.js";
63
63
  import {
64
64
  setDialogExtraReferencesAction
65
65
  } from "./chunk-BTSYHR7J.js";
@@ -98,7 +98,7 @@ import {
98
98
  updateContentCategory,
99
99
  updateContentTitle,
100
100
  writeStoredCollapsedCategories
101
- } from "./chunk-BFCXG6AJ.js";
101
+ } from "./chunk-BPCPBG2O.js";
102
102
  import {
103
103
  getCurrentSpaceId,
104
104
  getCurrentSpaceIdRaw,
@@ -120,14 +120,14 @@ import {
120
120
  selectMsgById,
121
121
  uiAskChoiceFunc,
122
122
  uiAskChoiceFunctionSchema
123
- } from "./chunk-PAYUVQ6P.js";
123
+ } from "./chunk-6PPDYAMH.js";
124
124
  import {
125
125
  createAgent,
126
126
  deleteServerSyncedCredential,
127
127
  runLlm,
128
128
  streamAgentChatTurn,
129
129
  updateAgent
130
- } from "./chunk-46CRK7XP.js";
130
+ } from "./chunk-Q3SKC2TQ.js";
131
131
  import {
132
132
  getActiveDialogKey,
133
133
  selectCurrentDialogKey,
@@ -144,10 +144,10 @@ import {
144
144
  resolveBuiltinCapability,
145
145
  resolveBuiltinSkillByName,
146
146
  resolveBuiltinSkillEntry
147
- } from "./chunk-55VQ4OPL.js";
147
+ } from "./chunk-V2AB7ULS.js";
148
148
  import {
149
149
  CAPABILITY_PACKS
150
- } from "./chunk-WC6A2Q7S.js";
150
+ } from "./chunk-EMBK4B7D.js";
151
151
  import {
152
152
  buildSkillDocMarkdown,
153
153
  normalizeSkillModalities,
@@ -190,7 +190,7 @@ import {
190
190
  DEFAULT_MODEL,
191
191
  clampReasoningEffort,
192
192
  resolveModelReasoningCapabilityWithCache
193
- } from "./chunk-ZI2MEZMT.js";
193
+ } from "./chunk-3BXNTXYI.js";
194
194
  import {
195
195
  UNCATEGORIZED_ID,
196
196
  addContentAction,
@@ -203,7 +203,14 @@ import {
203
203
  import {
204
204
  canonicalizeToolName,
205
205
  canonicalizeToolNames
206
- } from "./chunk-O6OSWFZQ.js";
206
+ } from "./chunk-XUWRURDF.js";
207
+ import {
208
+ CHROME_CONNECTOR_ACCEPTED_TOOL_NAMES,
209
+ chromeConnectorToolSchemas,
210
+ chromeConnectorUnavailableFunc,
211
+ getChromeConnectorToolBehavior,
212
+ getChromeConnectorToolDefaultConsent
213
+ } from "./chunk-5J3PYNUP.js";
207
214
  import {
208
215
  AGENT_UPDATE_FIELD_NAMES,
209
216
  normalizeAgentUpdateFieldList,
@@ -1020,7 +1027,7 @@ var HOSTED_EXEC_RUNTIME_TOOL_POLICY = {
1020
1027
  workspace: { mode: "lease" }
1021
1028
  };
1022
1029
  var findModelConfig = async (modelName, provider) => {
1023
- const { ALL_MODELS } = await import("./models-T3SG6MJ5.js");
1030
+ const { ALL_MODELS } = await import("./models-ZPU5EDF4.js");
1024
1031
  const name = toTrimmedString(modelName);
1025
1032
  const prov = toTrimmedString(provider ?? "");
1026
1033
  if (!name) return null;
@@ -1265,7 +1272,7 @@ var buildPlatformFormDataFromArgs = async (args) => {
1265
1272
  const trimmedModel = toTrimmedString(model);
1266
1273
  const trimmedProvider = toTrimmedString(provider);
1267
1274
  const modelConfig = await findModelConfig(trimmedModel, trimmedProvider);
1268
- const { getModelPricing } = await import("./getPricing-OX7B4R6B.js");
1275
+ const { getModelPricing } = await import("./getPricing-NMMFT3YI.js");
1269
1276
  const normalizedTools = tools ?? [];
1270
1277
  const resolvedRuntimeToolPolicy = runtimeToolPolicy ?? (normalizedTools.includes("execShell") ? HOSTED_EXEC_RUNTIME_TOOL_POLICY : void 0);
1271
1278
  const formData = {
@@ -3974,7 +3981,7 @@ async function deleteDialogsFunc(args, thunkApi) {
3974
3981
  const deletedDialogIds = [];
3975
3982
  const deletedDialogKeys = [];
3976
3983
  const failures = [];
3977
- const { deleteDialog: deleteDialog2 } = await import("./dialogSlice-AHU4XXIW.js");
3984
+ const { deleteDialog: deleteDialog2 } = await import("./dialogSlice-Q2QUTMHK.js");
3978
3985
  for (const target of targets) {
3979
3986
  try {
3980
3987
  await thunkApi.dispatch(deleteDialog2(target.dbKey)).unwrap();
@@ -9374,214 +9381,6 @@ ${preview}`
9374
9381
  };
9375
9382
  }
9376
9383
 
9377
- // packages/ai/tools/chromeConnectorTools.ts
9378
- var CHROME_CONNECTOR_TOOL_NAMES = [
9379
- "chrome_list_tabs",
9380
- "chrome_open_tab",
9381
- "chrome_close_tab",
9382
- "chrome_read_page",
9383
- "chrome_click",
9384
- "chrome_type",
9385
- "chrome_press",
9386
- "chrome_scroll",
9387
- "chrome_screenshot",
9388
- "chrome_read_console",
9389
- "chrome_read_network"
9390
- ];
9391
- var CHROME_CONNECTOR_READ_TOOL_NAMES = [
9392
- "chrome_list_tabs",
9393
- "chrome_read_page",
9394
- "chrome_screenshot",
9395
- "chrome_read_console",
9396
- "chrome_read_network"
9397
- ];
9398
- var getChromeConnectorToolBehavior = (name) => CHROME_CONNECTOR_READ_TOOL_NAMES.includes(name) ? "data" : "action";
9399
- var getChromeConnectorToolDefaultConsent = (name) => CHROME_CONNECTOR_READ_TOOL_NAMES.includes(name) ? "auto" : "ask";
9400
- function baseSchema(name, description, properties, required = []) {
9401
- return {
9402
- name,
9403
- description,
9404
- parameters: {
9405
- type: "object",
9406
- properties,
9407
- required
9408
- }
9409
- };
9410
- }
9411
- var tabId = {
9412
- type: "string",
9413
- description: "Chrome tab id returned by chrome_list_tabs or chrome_open_tab."
9414
- };
9415
- var elementRef = {
9416
- type: "string",
9417
- description: "Revision-scoped ref like 1a2b3c4d-e2, copied verbatim from chrome_read_page; preferred over selector when available."
9418
- };
9419
- var selector = {
9420
- type: "string",
9421
- description: "CSS selector for the visible page element to operate on; fallback when no elementRef is available."
9422
- };
9423
- var chromeListTabsFunctionSchema = baseSchema(
9424
- "chrome_list_tabs",
9425
- "List controllable Chrome tabs from the user's Chrome profile through the Nolo desktop Chrome connector.",
9426
- {}
9427
- );
9428
- var chromeOpenTabFunctionSchema = baseSchema(
9429
- "chrome_open_tab",
9430
- "Open a URL in the user's Chrome browser through the Nolo desktop Chrome connector.",
9431
- {
9432
- url: {
9433
- type: "string",
9434
- description: "HTTP or HTTPS URL to open in Chrome."
9435
- },
9436
- active: {
9437
- type: "boolean",
9438
- description: "Whether to focus the new Chrome tab. Defaults to true."
9439
- }
9440
- },
9441
- ["url"]
9442
- );
9443
- var chromeCloseTabFunctionSchema = baseSchema(
9444
- "chrome_close_tab",
9445
- "Close a Chrome tab through the Nolo desktop Chrome connector. Prefer closing the tabs your own run opened with chrome_open_tab, and ask the user before closing a tab they are using. Pinned tabs are refused (TAB_PINNED); unknown tab ids fail (TAB_NOT_FOUND).",
9446
- {
9447
- tabId
9448
- },
9449
- ["tabId"]
9450
- );
9451
- var chromeReadPageFunctionSchema = baseSchema(
9452
- "chrome_read_page",
9453
- "Read a compact view of a Chrome tab: visible text (hard cap 6000 chars) plus short-lived elementRefs (hard cap 35) and a pageRevision. Reuse those refs for chrome_click and chrome_type instead of guessing selectors; use region to focus a big page. Does not read cookies or profile databases.",
9454
- {
9455
- tabId,
9456
- region: {
9457
- type: "string",
9458
- description: "Optional CSS selector limiting the read to part of the page."
9459
- },
9460
- maxChars: {
9461
- type: "number",
9462
- description: "Optional text character budget; the connector clamps it to a hard maximum."
9463
- },
9464
- detail: {
9465
- type: "string",
9466
- enum: ["compact", "full"],
9467
- description: "compact (default) returns budgeted text; full raises the budget and adds capped HTML."
9468
- }
9469
- },
9470
- ["tabId"]
9471
- );
9472
- var chromeClickFunctionSchema = baseSchema(
9473
- "chrome_click",
9474
- "Click a visible element in a Chrome tab by elementRef from chrome_read_page, or by CSS selector. Controls whose name indicates an irreversible external action (payment, send, delete, publish, permission change) are refused with SENSITIVE_ACTION_REQUIRES_CONFIRMATION: this desktop runtime has no approval channel, so name the control and ask the user to activate it themselves.",
9475
- {
9476
- tabId,
9477
- elementRef,
9478
- selector
9479
- },
9480
- ["tabId"]
9481
- );
9482
- var chromeTypeFunctionSchema = baseSchema(
9483
- "chrome_type",
9484
- "Type text into a Chrome page element identified by elementRef from chrome_read_page or by CSS selector. Typing into a control whose name indicates an irreversible external action is refused with SENSITIVE_ACTION_REQUIRES_CONFIRMATION, same as clicking it.",
9485
- {
9486
- tabId,
9487
- elementRef,
9488
- selector,
9489
- text: {
9490
- type: "string",
9491
- description: "Text to type into the selected element."
9492
- },
9493
- clearFirst: {
9494
- type: "boolean",
9495
- description: "Whether to clear the field before typing. Defaults to true."
9496
- }
9497
- },
9498
- ["tabId", "text"]
9499
- );
9500
- var chromePressFunctionSchema = baseSchema(
9501
- "chrome_press",
9502
- "Send a keyboard key or shortcut to a Chrome tab. Enter-like keys are refused with SENSITIVE_ACTION_REQUIRES_CONFIRMATION when the focused control is an irreversible action.",
9503
- {
9504
- tabId,
9505
- key: {
9506
- type: "string",
9507
- description: "Key or shortcut, for example Enter, Escape, ArrowDown, or Meta+L."
9508
- }
9509
- },
9510
- ["tabId", "key"]
9511
- );
9512
- var chromeScrollFunctionSchema = baseSchema(
9513
- "chrome_scroll",
9514
- "Scroll a Chrome tab by pixel deltas.",
9515
- {
9516
- tabId,
9517
- deltaX: {
9518
- type: "number",
9519
- description: "Horizontal scroll delta in pixels."
9520
- },
9521
- deltaY: {
9522
- type: "number",
9523
- description: "Vertical scroll delta in pixels."
9524
- }
9525
- },
9526
- ["tabId"]
9527
- );
9528
- var chromeScreenshotFunctionSchema = baseSchema(
9529
- "chrome_screenshot",
9530
- "Capture a screenshot from a Chrome tab through the Nolo desktop Chrome connector.",
9531
- {
9532
- tabId,
9533
- fullPage: {
9534
- type: "boolean",
9535
- description: "Whether to capture the full page. Defaults to false."
9536
- }
9537
- },
9538
- ["tabId"]
9539
- );
9540
- var chromeReadConsoleFunctionSchema = baseSchema(
9541
- "chrome_read_console",
9542
- "Read recent console messages from a Chrome tab using debugger-backed connector state.",
9543
- {
9544
- tabId,
9545
- limit: {
9546
- type: "number",
9547
- description: "Maximum number of recent console messages to return."
9548
- }
9549
- },
9550
- ["tabId"]
9551
- );
9552
- var chromeReadNetworkFunctionSchema = baseSchema(
9553
- "chrome_read_network",
9554
- "Read a deduplicated recent network summary from a Chrome tab using debugger-backed connector state. Static assets are filtered unless includeAssets is set.",
9555
- {
9556
- tabId,
9557
- limit: {
9558
- type: "number",
9559
- description: "Maximum number of recent network entries to return."
9560
- },
9561
- includeAssets: {
9562
- type: "boolean",
9563
- description: "Include images, CSS, fonts and other static assets. Defaults to false."
9564
- }
9565
- },
9566
- ["tabId"]
9567
- );
9568
- var chromeConnectorToolSchemas = [
9569
- chromeListTabsFunctionSchema,
9570
- chromeOpenTabFunctionSchema,
9571
- chromeCloseTabFunctionSchema,
9572
- chromeReadPageFunctionSchema,
9573
- chromeClickFunctionSchema,
9574
- chromeTypeFunctionSchema,
9575
- chromePressFunctionSchema,
9576
- chromeScrollFunctionSchema,
9577
- chromeScreenshotFunctionSchema,
9578
- chromeReadConsoleFunctionSchema,
9579
- chromeReadNetworkFunctionSchema
9580
- ];
9581
- async function chromeConnectorUnavailableFunc() {
9582
- throw new Error("Chrome connector tools are only executable in the Nolo desktop local runtime.");
9583
- }
9584
-
9585
9384
  // packages/ai/tools/exaSearchTool.ts
9586
9385
  var exaSearchSchema = {
9587
9386
  name: "exa_search",
@@ -15085,7 +14884,7 @@ var executeToolRun = createAsyncThunk(
15085
14884
  if (!executionInput) {
15086
14885
  throw new Error(`ToolRun ${id} has no input to execute with.`);
15087
14886
  }
15088
- const { findToolExecutor: findToolExecutor2 } = await import("./tools-XQ5GIH6P.js");
14887
+ const { findToolExecutor: findToolExecutor2 } = await import("./tools-6IUC3EFI.js");
15089
14888
  const { executor } = findToolExecutor2(run.toolName);
15090
14889
  toolRunStarted({
15091
14890
  id: run.id,
@@ -17592,7 +17391,7 @@ async function updateDocFunc(args, thunkApi) {
17592
17391
  updated_at: (/* @__PURE__ */ new Date()).toISOString()
17593
17392
  };
17594
17393
  await dispatch(write({ data: updatedPageData, customKey: id })).unwrap();
17595
- const { getDocState, applyExternalDocUpdate } = await import("./docStore-SITH63V3.js");
17394
+ const { getDocState, applyExternalDocUpdate } = await import("./docStore-FWQIXF33.js");
17596
17395
  if (getDocState().pageKey === id) {
17597
17396
  applyExternalDocUpdate({
17598
17397
  slateData: finalSlateData,
@@ -19415,7 +19214,7 @@ var baseToolDefinitions = [
19415
19214
  },
19416
19215
  behavior: getChromeConnectorToolBehavior(name),
19417
19216
  capability: "browser_automation",
19418
- riskLevel: name === "chrome_click" || name === "chrome_type" ? "medium" : "low",
19217
+ riskLevel: name === "browser_click_element" || name === "browser_type" ? "medium" : "low",
19419
19218
  costLevel: "low",
19420
19219
  defaultConsent: getChromeConnectorToolDefaultConsent(name),
19421
19220
  cancelable: true
@@ -19849,7 +19648,7 @@ var toolDefinitions = [
19849
19648
  ];
19850
19649
  var ALL_TOOL_FUNCTION_NAMES = toolDefinitions.map((tool) => tool.schema?.name).filter((name) => Boolean(name));
19851
19650
  var AGENT_AVAILABLE_TOOL_NAMES = ALL_TOOL_FUNCTION_NAMES.filter(
19852
- (name) => name !== "toolquery" && !name.startsWith("browser_") && name !== "exa_search"
19651
+ (name) => name !== "toolquery" && (!name.startsWith("browser_") || CHROME_CONNECTOR_ACCEPTED_TOOL_NAMES.includes(name)) && name !== "exa_search"
19853
19652
  );
19854
19653
  var patchAgentToolSchemas = () => {
19855
19654
  try {
@@ -19918,7 +19717,6 @@ export {
19918
19717
  readXPostFunc,
19919
19718
  readXhsProfileFunctionSchema,
19920
19719
  readXhsProfileFunc,
19921
- CHROME_CONNECTOR_TOOL_NAMES,
19922
19720
  rememberMemoryFunctionSchema,
19923
19721
  deleteMemoryFunctionSchema,
19924
19722
  queryMemoryFunctionSchema,
@@ -523,7 +523,7 @@ async function buildCreatedAgentRecord(args) {
523
523
  const resolvedAgentInput = resolveCliAgentKeyInput(args.parsed.agentInput);
524
524
  const agentKey = resolvedAgentInput.startsWith("agent-") ? resolvedAgentInput : createAgentKey.private(userId || "local", resolvedAgentInput);
525
525
  if (args.parsed.presetId) {
526
- const { resolveProviderPresetFields } = await import("./providerPresetApply-2QTBYN36.js");
526
+ const { resolveProviderPresetFields } = await import("./providerPresetApply-XTEXOH7X.js");
527
527
  const fields = resolveProviderPresetFields(args.parsed.presetId);
528
528
  if (fields.kind === "manual") {
529
529
  throw new Error(
@@ -2,7 +2,7 @@ import {
2
2
  deleteDbRecord,
3
3
  queryUserRecords,
4
4
  readDbRecord
5
- } from "./chunk-RZ6CQZB2.js";
5
+ } from "./chunk-IBQ6NJI4.js";
6
6
  import {
7
7
  mergeAndDedupUserData
8
8
  } from "./chunk-KQHGZWSV.js";
@@ -1,16 +1,15 @@
1
1
  import {
2
2
  listUserRecordsFromServers,
3
3
  readLiveDbRecordAfterTombstoneMerge
4
- } from "./chunk-VETFWL5K.js";
4
+ } from "./chunk-LNUOUGIY.js";
5
5
  import {
6
6
  agentRecordHasConfiguredCredential
7
- } from "./chunk-RZ6CQZB2.js";
7
+ } from "./chunk-IBQ6NJI4.js";
8
8
  import {
9
9
  deriveCredentialGroup
10
- } from "./chunk-KQOD3G2X.js";
10
+ } from "./chunk-5RUECWE2.js";
11
11
  import {
12
12
  PUBLIC_AGENT_KEY_PREFIX,
13
- isOwnedAgentKey,
14
13
  ownedAgentKey,
15
14
  ownedAgentKeyPrefix,
16
15
  parseOwnedAgentId,
@@ -104,7 +103,7 @@ async function listLocalCachedAgents(args) {
104
103
  for (const prefix of [ownedPrefix, PUBLIC_AGENT_KEY_PREFIX]) {
105
104
  for await (const [key, value] of args.db.iterator({ gte: prefix, lte: `${prefix}\uFFFF` })) {
106
105
  if (typeof key !== "string" || !value || typeof value !== "object") continue;
107
- if (isOwnedAgentKey(key, args.userId)) {
106
+ if (key.startsWith(ownedPrefix)) {
108
107
  privateRecords.set(key, { ...value, dbKey: key });
109
108
  continue;
110
109
  }
@@ -11,7 +11,7 @@ import {
11
11
  getAntigravityUserAgent,
12
12
  normalizeAntigravityTokenPayload,
13
13
  refreshAntigravityToken
14
- } from "./chunk-ISHYYQJC.js";
14
+ } from "./chunk-S5XGT6GB.js";
15
15
  import {
16
16
  toErrorMessage
17
17
  } from "./chunk-HNMXYYJR.js";
@@ -367,6 +367,77 @@ async function refreshAntigravityOAuthToken(credential, deps = {}) {
367
367
  // packages/cli/oauth/flows/openai-codex.ts
368
368
  import { createHash as createHash2 } from "node:crypto";
369
369
 
370
+ // packages/agent-runtime/oauthRefreshError.ts
371
+ var PERMANENT_REFRESH_CODES = /* @__PURE__ */ new Set([
372
+ "invalid_grant",
373
+ // OpenAI 令牌端点对失效/不存在的 refresh token 返回 401
374
+ // {"error":{"code":"invalid_refresh_token",...}}(2026-10-01 用必然无效的
375
+ // token 实测)。线上 chatgpt 凭据正是因为没认出它,被当成临时的
376
+ // "unauthorized"、每 15 分钟重试一次且永远不提示重新授权。
377
+ "invalid_refresh_token",
378
+ "refresh_token_reused",
379
+ "invalid_client"
380
+ ]);
381
+ var SAFE_MESSAGES = {
382
+ invalid_grant: "refresh token \u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u6388\u6743",
383
+ invalid_refresh_token: "refresh token \u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u6388\u6743",
384
+ refresh_token_reused: "refresh token \u5DF2\u88AB\u5176\u4ED6\u526F\u672C\u4F7F\u7528\uFF0C\u8BF7\u91CD\u65B0\u6388\u6743",
385
+ invalid_client: "OAuth \u5BA2\u6237\u7AEF\u88AB\u62D2\u7EDD\uFF0C\u8BF7\u91CD\u65B0\u6388\u6743",
386
+ unauthorized: "\u4E0A\u6E38\u62D2\u7EDD\u4E86\u5237\u65B0\u8BF7\u6C42\uFF08401/403\uFF09",
387
+ rate_limited: "\u4E0A\u6E38\u9650\u6D41\uFF0C\u7A0D\u540E\u91CD\u8BD5",
388
+ http_5xx: "\u4E0A\u6E38\u670D\u52A1\u6682\u65F6\u4E0D\u53EF\u7528",
389
+ network: "\u65E0\u6CD5\u8FDE\u63A5\u4E0A\u6E38",
390
+ bad_response: "\u4E0A\u6E38\u8FD4\u56DE\u4E86\u65E0\u6CD5\u8BC6\u522B\u7684\u54CD\u5E94",
391
+ unknown: "\u5237\u65B0\u5931\u8D25"
392
+ };
393
+ var OAuthRefreshError = class extends Error {
394
+ code;
395
+ status;
396
+ retryAfterMs;
397
+ constructor(code, opts = {}) {
398
+ super(SAFE_MESSAGES[code]);
399
+ this.name = "OAuthRefreshError";
400
+ this.code = code;
401
+ if (opts.status !== void 0) this.status = opts.status;
402
+ if (opts.retryAfterMs !== void 0) this.retryAfterMs = opts.retryAfterMs;
403
+ }
404
+ get permanent() {
405
+ return PERMANENT_REFRESH_CODES.has(this.code);
406
+ }
407
+ };
408
+ function readErrorCode(payload) {
409
+ if (!payload || typeof payload !== "object") return void 0;
410
+ const err = payload.error;
411
+ if (typeof err === "string") return err;
412
+ if (err && typeof err === "object") {
413
+ const code = err.code;
414
+ if (typeof code === "string") return code;
415
+ }
416
+ return void 0;
417
+ }
418
+ function classifyOAuthRefreshHttpFailure(status, payload, headers) {
419
+ const raw = readErrorCode(payload)?.toLowerCase();
420
+ if (raw === "invalid_grant") return new OAuthRefreshError("invalid_grant", { status });
421
+ if (raw === "invalid_refresh_token") {
422
+ return new OAuthRefreshError("invalid_refresh_token", { status });
423
+ }
424
+ if (raw === "refresh_token_reused") {
425
+ return new OAuthRefreshError("refresh_token_reused", { status });
426
+ }
427
+ if (raw === "invalid_client") return new OAuthRefreshError("invalid_client", { status });
428
+ if (status === 429) {
429
+ const seconds = Number(headers?.get("retry-after"));
430
+ return new OAuthRefreshError("rate_limited", {
431
+ status,
432
+ ...Number.isFinite(seconds) && seconds > 0 ? { retryAfterMs: seconds * 1e3 } : {}
433
+ });
434
+ }
435
+ if (status === 401 || status === 403) return new OAuthRefreshError("unauthorized", { status });
436
+ if (status >= 500) return new OAuthRefreshError("http_5xx", { status });
437
+ return new OAuthRefreshError("unknown", { status });
438
+ }
439
+ var TRANSIENT_MAX_MS = 15 * 6e4;
440
+
370
441
  // packages/agent-runtime/openaiCodexOAuth.ts
371
442
  var OPENAI_CODEX_CLIENT_ID = "app_EMoamEEZ73f0CkXaXp7hrann";
372
443
  var OPENAI_CODEX_SCOPES = [
@@ -463,17 +534,14 @@ async function refreshOpenAiCodexToken(credential, deps = {}) {
463
534
  signal: AbortSignal.timeout(OPENAI_CODEX_TOKEN_REQUEST_TIMEOUT_MS)
464
535
  });
465
536
  } catch (error) {
466
- throw new Error(
467
- `OpenAI Codex token refresh failed: ${toErrorMessage(error)}`
468
- );
537
+ throw new OAuthRefreshError("network");
469
538
  }
470
539
  const payload = await response.json().catch(() => ({}));
471
540
  if (!response.ok) {
472
- const detail = typeof payload.error_description === "string" && payload.error_description ? payload.error_description : typeof payload.error === "string" && payload.error ? payload.error : `HTTP ${response.status}`;
473
- throw new Error(`OpenAI Codex token refresh failed: ${detail}`);
541
+ throw classifyOAuthRefreshHttpFailure(response.status, payload, response.headers);
474
542
  }
475
543
  if (typeof payload.access_token !== "string" || !payload.access_token.trim()) {
476
- throw new Error("OpenAI Codex token refresh response missing access_token");
544
+ throw new OAuthRefreshError("bad_response");
477
545
  }
478
546
  const now = deps.now?.() ?? Date.now();
479
547
  return normalizeOpenAiCodexTokenPayload({
@@ -1047,11 +1115,10 @@ async function refreshAnthropicToken(credential, deps = {}) {
1047
1115
  });
1048
1116
  const payload = await response.json().catch(() => ({}));
1049
1117
  if (!response.ok) {
1050
- const detail = typeof payload.error_description === "string" ? payload.error_description : typeof payload.error === "string" ? payload.error : `HTTP ${response.status}`;
1051
- throw new Error(`Claude token refresh failed: ${detail}`);
1118
+ throw classifyOAuthRefreshHttpFailure(response.status, payload, response.headers);
1052
1119
  }
1053
1120
  if (typeof payload.access_token !== "string" || !payload.access_token.trim()) {
1054
- throw new Error("Claude token refresh response missing access_token");
1121
+ throw new OAuthRefreshError("bad_response");
1055
1122
  }
1056
1123
  const now = deps.now?.() ?? Date.now();
1057
1124
  return normalizeAnthropicTokenPayload({
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  clipMultilineText,
9
9
  fetchAndSerializeTable
10
- } from "./chunk-6PELJ3DS.js";
10
+ } from "./chunk-GA77XY7N.js";
11
11
  import {
12
12
  isGatewayHttpStatus
13
13
  } from "./chunk-NF64D32W.js";
@@ -29,19 +29,19 @@ import {
29
29
  } from "./chunk-MEYIRKDN.js";
30
30
  import {
31
31
  fetchAndCacheMessages
32
- } from "./chunk-PAYUVQ6P.js";
32
+ } from "./chunk-6PPDYAMH.js";
33
33
  import {
34
34
  shouldUseServerProxy
35
35
  } from "./chunk-YYLHWIW6.js";
36
36
  import {
37
37
  fetchServerSyncedCredential
38
- } from "./chunk-46CRK7XP.js";
38
+ } from "./chunk-Q3SKC2TQ.js";
39
39
  import {
40
40
  buildSkillGuidancePromptBlock,
41
41
  extractRuntimePageCapabilities,
42
42
  resolveBuiltinSkillPage,
43
43
  resolveSkillGraphFromRoots
44
- } from "./chunk-55VQ4OPL.js";
44
+ } from "./chunk-V2AB7ULS.js";
45
45
  import {
46
46
  DELETE_SAFETY_RED_LINE,
47
47
  buildIdentityBlock,
@@ -50,7 +50,7 @@ import {
50
50
  detectDispatchIntentFromMessages,
51
51
  normalizeChatCompletionsBodyForProvider,
52
52
  resolveToolGuidedSections
53
- } from "./chunk-HBTA2SGQ.js";
53
+ } from "./chunk-QL32RJFG.js";
54
54
  import {
55
55
  convertMessagesToResponsesInput,
56
56
  getUsageRequestOptions,
@@ -60,10 +60,10 @@ import {
60
60
  import {
61
61
  ANTIGRAVITY_CLOUD_CODE_BASE_URL,
62
62
  isAntigravityOAuthAgent
63
- } from "./chunk-ISHYYQJC.js";
63
+ } from "./chunk-S5XGT6GB.js";
64
64
  import {
65
65
  buildProviderAuthHeaders
66
- } from "./chunk-OOSVFT6S.js";
66
+ } from "./chunk-27ONFIEY.js";
67
67
  import {
68
68
  estimateTokenCount
69
69
  } from "./chunk-PSCNXBYA.js";
@@ -74,7 +74,7 @@ import {
74
74
  isOpenAiResponsesModel,
75
75
  resolvePlatformChatCompletionsEndpoint,
76
76
  resolvePlatformResponsesEndpoint
77
- } from "./chunk-ZGJLSHER.js";
77
+ } from "./chunk-7KVZ5LDQ.js";
78
78
  import {
79
79
  toErrorMessage
80
80
  } from "./chunk-HNMXYYJR.js";
@@ -82,7 +82,7 @@ import {
82
82
  clampReasoningEffort,
83
83
  getModelConfig,
84
84
  isModelSupportReasoningEffort
85
- } from "./chunk-ZI2MEZMT.js";
85
+ } from "./chunk-3BXNTXYI.js";
86
86
  import {
87
87
  createSpaceKey
88
88
  } from "./chunk-UAD2WT54.js";
@@ -93,13 +93,13 @@ import {
93
93
  } from "./chunk-2GRGFCF6.js";
94
94
  import {
95
95
  canonicalizeToolNames
96
- } from "./chunk-O6OSWFZQ.js";
96
+ } from "./chunk-XUWRURDF.js";
97
97
  import {
98
98
  isDeepInfraKimiModel,
99
99
  isFireworksKimiModel,
100
100
  isPlatformMimoProviderModel,
101
101
  resolveFireworksKimiModel
102
- } from "./chunk-Q67DOFOO.js";
102
+ } from "./chunk-Y3PMXGLH.js";
103
103
  import {
104
104
  read
105
105
  } from "./chunk-QALRKMHF.js";
@@ -1224,7 +1224,7 @@ var buildProxyPayload = (bodyData, api, agentConfig, dialogId) => {
1224
1224
  };
1225
1225
  };
1226
1226
  var fetchDirectly = async (params) => {
1227
- const { api, agentConfig, bodyData, signal, currentServer, token } = params;
1227
+ const { api, agentConfig, bodyData, signal, currentServer, token, dialogId } = params;
1228
1228
  try {
1229
1229
  const apiKey = await resolveDirectRequestApiKey(agentConfig, {
1230
1230
  syncFetcher: currentServer && token ? (ref) => fetchServerSyncedCredential({ currentServer, authToken: token }, ref) : void 0,
@@ -1244,7 +1244,8 @@ var fetchDirectly = async (params) => {
1244
1244
  const authHeaders = buildProviderAuthHeaders({
1245
1245
  endpoint: api,
1246
1246
  apiKey: apiKey ?? "",
1247
- apiKeyHeader: agentConfig.apiKeyHeader
1247
+ apiKeyHeader: agentConfig.apiKeyHeader,
1248
+ sessionId: dialogId || agentConfig.dbKey || agentConfig.key
1248
1249
  });
1249
1250
  return await fetch(api, {
1250
1251
  method: "POST",
@@ -5,7 +5,7 @@ import {
5
5
  getAntigravityUserAgent,
6
6
  readAntigravityProjectId,
7
7
  resolveAntigravityCloudCodeBaseUrl
8
- } from "./chunk-ISHYYQJC.js";
8
+ } from "./chunk-S5XGT6GB.js";
9
9
  import {
10
10
  asOptionalTrimmedString
11
11
  } from "./chunk-G3SUCT4W.js";