ur-agent 1.57.1 → 1.57.3

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.57.3
4
+
5
+ - Stopped a false diagnosis on failed tool calls. When a tool call failed
6
+ schema validation, UR appended "this tool's schema was not sent to the API"
7
+ and told the model to load it via `ToolSearch`. Both claims were wrong on
8
+ every UR runtime: tool search requires `tool_reference` expansion, which no
9
+ UR runtime supports, so it is disabled and all schemas are sent. The model
10
+ acted on the false hint and wasted a turn. The hint now gates on the same
11
+ condition the request path uses, so a mis-shaped call surfaces only the Zod
12
+ error, which already names the offending field.
13
+ - Fixed tool search being enabled on LM Studio, vLLM and llama.cpp, where it
14
+ had only ever been disabled for Ollama. Those runtimes cannot expand
15
+ `tool_reference` either, so every deferred tool was unreachable: `ToolSearch`
16
+ answered with reference blocks that resolve to nothing. Support is now
17
+ derived from the runtime rather than the provider name.
18
+
19
+ ## 1.57.2
20
+
21
+ - Fixed the Ollama adapter discarding images returned by tools. A tool result
22
+ containing an image was flattened with `contentBlockToText`, which renders an
23
+ image block as the literal string `[Image output omitted]` — so a `Computer`
24
+ screenshot reached the model as that text and nothing else. Image blocks are
25
+ now extracted from the tool result and sent as `images` on the following user
26
+ message, which is where Ollama renders them reliably.
27
+ - On a model with no vision capability the placeholder now names the model and
28
+ points at `/model`, so the agent states the real reason it cannot see instead
29
+ of inventing one.
30
+ - `Computer(screenshot)` now reports the bytes actually sent rather than the
31
+ on-disk size, which was misleading after downsampling.
32
+
3
33
  ## 1.57.1
4
34
 
5
35
  - Fixed the `Computer` tool returning a byte count instead of the screenshot.
package/dist/cli.js CHANGED
@@ -57310,6 +57310,7 @@ var init_kimiToolCalls = __esm(() => {
57310
57310
  // src/services/api/ollama.ts
57311
57311
  var exports_ollama = {};
57312
57312
  __export(exports_ollama, {
57313
+ toOllamaChatRequest: () => toOllamaChatRequest,
57313
57314
  mergeToolCalls: () => mergeToolCalls,
57314
57315
  isOllamaCloudModel: () => isOllamaCloudModel2,
57315
57316
  getOllamaRequestTimeoutMs: () => getOllamaRequestTimeoutMs,
@@ -57497,7 +57498,7 @@ function toOllamaChatRequest(params, stream4, capabilities) {
57497
57498
  model: params.model,
57498
57499
  messages: [
57499
57500
  systemMessage,
57500
- ...messagesToOllama(params.messages, modelCapabilityEnabled(capabilities, "vision"))
57501
+ ...messagesToOllama(params.messages, modelCapabilityEnabled(capabilities, "vision"), params.model)
57501
57502
  ].filter((message) => message.role === "tool" || message.content.trim() !== "" || (message.images?.length ?? 0) > 0 || (message.tool_calls?.length ?? 0) > 0),
57502
57503
  stream: stream4,
57503
57504
  ...tools.length > 0 ? { tools } : {},
@@ -57543,7 +57544,7 @@ function systemToText(system) {
57543
57544
 
57544
57545
  `);
57545
57546
  }
57546
- function messagesToOllama(messages, supportsVision) {
57547
+ function messagesToOllama(messages, supportsVision, model = "") {
57547
57548
  const result = [];
57548
57549
  const toolNamesById = new Map;
57549
57550
  for (const message of messages) {
@@ -57592,11 +57593,19 @@ function messagesToOllama(messages, supportsVision) {
57592
57593
  break;
57593
57594
  case "tool_result": {
57594
57595
  const toolName = toolNamesById.get(block.tool_use_id) ?? block.tool_use_id;
57596
+ const split = splitToolResultContent(block.content);
57597
+ const note = describeToolResultImages(split.images.length, toolName, supportsVision, model);
57595
57598
  toolMessages.push({
57596
57599
  role: "tool",
57597
- content: contentBlockToText(block.content),
57600
+ content: [split.text, note].filter(Boolean).join(`
57601
+ `),
57598
57602
  tool_name: toolName
57599
57603
  });
57604
+ if (supportsVision) {
57605
+ for (const image of split.images) {
57606
+ images.push(image);
57607
+ }
57608
+ }
57600
57609
  break;
57601
57610
  }
57602
57611
  case "image":
@@ -58255,6 +58264,37 @@ function emptyUsage() {
58255
58264
  }
58256
58265
  };
58257
58266
  }
58267
+ function splitToolResultContent(content) {
58268
+ if (!Array.isArray(content)) {
58269
+ return { text: contentBlockToText(content), images: [] };
58270
+ }
58271
+ const textParts = [];
58272
+ const images = [];
58273
+ for (const block of content) {
58274
+ if (block && typeof block === "object" && "type" in block && block.type === "image") {
58275
+ const source = block.source;
58276
+ if (source?.type === "base64" && typeof source.data === "string") {
58277
+ images.push(source.data);
58278
+ } else {
58279
+ textParts.push("[Image omitted: unsupported image source]");
58280
+ }
58281
+ continue;
58282
+ }
58283
+ textParts.push(contentBlockToText([block]));
58284
+ }
58285
+ return { text: textParts.filter(Boolean).join(`
58286
+ `), images };
58287
+ }
58288
+ function describeToolResultImages(count3, toolName, supportsVision, model) {
58289
+ if (count3 === 0)
58290
+ return "";
58291
+ const plural = count3 === 1 ? "image" : `${count3} images`;
58292
+ if (supportsVision) {
58293
+ return `[${plural} from ${toolName} attached to the following message]`;
58294
+ }
58295
+ const named = model ? `"${model}"` : "the selected Ollama model";
58296
+ return `[${plural} from ${toolName} could not be sent: ${named} does not advertise ` + `vision support, so it cannot see images. Tell the user this directly and ` + `suggest switching to a vision model with /model.]`;
58297
+ }
58258
58298
  function contentBlockToText(content) {
58259
58299
  if (typeof content === "string") {
58260
58300
  return content;
@@ -75097,7 +75137,7 @@ var init_auth = __esm(() => {
75097
75137
 
75098
75138
  // src/utils/userAgent.ts
75099
75139
  function getURCodeUserAgent() {
75100
- return `ur/${"1.57.1"}`;
75140
+ return `ur/${"1.57.3"}`;
75101
75141
  }
75102
75142
 
75103
75143
  // src/utils/workloadContext.ts
@@ -75119,7 +75159,7 @@ function getUserAgent() {
75119
75159
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
75120
75160
  const workload = getWorkload();
75121
75161
  const workloadSuffix = workload ? `, workload/${workload}` : "";
75122
- return `ur-cli/${"1.57.1"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
75162
+ return `ur-cli/${"1.57.3"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
75123
75163
  }
75124
75164
  function getMCPUserAgent() {
75125
75165
  const parts = [];
@@ -75133,7 +75173,7 @@ function getMCPUserAgent() {
75133
75173
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
75134
75174
  }
75135
75175
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
75136
- return `ur/${"1.57.1"}${suffix}`;
75176
+ return `ur/${"1.57.3"}${suffix}`;
75137
75177
  }
75138
75178
  function getWebFetchUserAgent() {
75139
75179
  return `UR-User (${getURCodeUserAgent()})`;
@@ -75271,7 +75311,7 @@ var init_user = __esm(() => {
75271
75311
  deviceId,
75272
75312
  sessionId: getSessionId(),
75273
75313
  email: getEmail(),
75274
- appVersion: "1.57.1",
75314
+ appVersion: "1.57.3",
75275
75315
  platform: getHostPlatformForAnalytics(),
75276
75316
  organizationUuid,
75277
75317
  accountUuid,
@@ -83471,7 +83511,7 @@ var init_metadata = __esm(() => {
83471
83511
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
83472
83512
  WHITESPACE_REGEX = /\s+/;
83473
83513
  getVersionBase = memoize_default(() => {
83474
- const match = "1.57.1".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
83514
+ const match = "1.57.3".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
83475
83515
  return match ? match[0] : undefined;
83476
83516
  });
83477
83517
  buildEnvContext = memoize_default(async () => {
@@ -83511,7 +83551,7 @@ var init_metadata = __esm(() => {
83511
83551
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
83512
83552
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
83513
83553
  isURAiAuth: isURAISubscriber(),
83514
- version: "1.57.1",
83554
+ version: "1.57.3",
83515
83555
  versionBase: getVersionBase(),
83516
83556
  buildTime: "",
83517
83557
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -84181,7 +84221,7 @@ function initialize1PEventLogging() {
84181
84221
  const platform2 = getPlatform();
84182
84222
  const attributes = {
84183
84223
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
84184
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.57.1"
84224
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.57.3"
84185
84225
  };
84186
84226
  if (platform2 === "wsl") {
84187
84227
  const wslVersion = getWslVersion();
@@ -84209,7 +84249,7 @@ function initialize1PEventLogging() {
84209
84249
  })
84210
84250
  ]
84211
84251
  });
84212
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.57.1");
84252
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.57.3");
84213
84253
  }
84214
84254
  async function reinitialize1PEventLoggingIfConfigChanged() {
84215
84255
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -94048,7 +94088,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
94048
94088
  function formatA2AAgentCard(options = {}, pretty = true) {
94049
94089
  return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
94050
94090
  }
94051
- var urVersion = "1.57.1", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
94091
+ var urVersion = "1.57.3", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
94052
94092
  var init_trends = __esm(() => {
94053
94093
  init_a2aCardSignature();
94054
94094
  coverage = [
@@ -96849,7 +96889,7 @@ function getAttributionHeader(fingerprint) {
96849
96889
  if (!isAttributionHeaderEnabled()) {
96850
96890
  return "";
96851
96891
  }
96852
- const version2 = `${"1.57.1"}.${fingerprint}`;
96892
+ const version2 = `${"1.57.3"}.${fingerprint}`;
96853
96893
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
96854
96894
  const cch = "";
96855
96895
  const workload = getWorkload();
@@ -154438,7 +154478,7 @@ var init_projectSafety = __esm(() => {
154438
154478
  function getInstruments() {
154439
154479
  if (instruments)
154440
154480
  return instruments;
154441
- const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.57.1");
154481
+ const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.57.3");
154442
154482
  instruments = {
154443
154483
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
154444
154484
  description: "GenAI operation duration.",
@@ -154536,7 +154576,7 @@ function genAiAgentAttributes() {
154536
154576
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
154537
154577
  "gen_ai.provider.name": "ur",
154538
154578
  "gen_ai.agent.name": "UR-Nexus",
154539
- "gen_ai.agent.version": "1.57.1"
154579
+ "gen_ai.agent.version": "1.57.3"
154540
154580
  };
154541
154581
  }
154542
154582
  function genAiWorkflowAttributes(workflowName) {
@@ -154552,7 +154592,7 @@ function genAiWorkflowAttributes(workflowName) {
154552
154592
  function startGenAiWorkflowSpan(workflowName) {
154553
154593
  const attributes = genAiWorkflowAttributes(workflowName);
154554
154594
  const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
154555
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.57.1").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
154595
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.57.3").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
154556
154596
  }
154557
154597
  function endGenAiWorkflowSpan(span, options2 = {}) {
154558
154598
  try {
@@ -154590,7 +154630,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
154590
154630
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
154591
154631
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
154592
154632
  }
154593
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.57.1").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
154633
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.57.3").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
154594
154634
  }
154595
154635
  function endGenAiMemorySpan(span, options2 = {}) {
154596
154636
  try {
@@ -206109,7 +206149,7 @@ function getTelemetryAttributes() {
206109
206149
  attributes["session.id"] = sessionId;
206110
206150
  }
206111
206151
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
206112
- attributes["app.version"] = "1.57.1";
206152
+ attributes["app.version"] = "1.57.3";
206113
206153
  }
206114
206154
  const oauthAccount = getOauthAccountInfo();
206115
206155
  if (oauthAccount) {
@@ -241676,7 +241716,7 @@ function getInstallationEnv() {
241676
241716
  return;
241677
241717
  }
241678
241718
  function getURCodeVersion() {
241679
- return "1.57.1";
241719
+ return "1.57.3";
241680
241720
  }
241681
241721
  async function getInstalledVSCodeExtensionVersion(command) {
241682
241722
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -249007,7 +249047,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
249007
249047
  const client2 = new Client({
249008
249048
  name: "ur",
249009
249049
  title: "UR",
249010
- version: "1.57.1",
249050
+ version: "1.57.3",
249011
249051
  description: "UR-Nexus autonomous engineering workflow engine",
249012
249052
  websiteUrl: PRODUCT_URL
249013
249053
  }, {
@@ -249367,7 +249407,7 @@ var init_client5 = __esm(() => {
249367
249407
  const client2 = new Client({
249368
249408
  name: "ur",
249369
249409
  title: "UR",
249370
- version: "1.57.1",
249410
+ version: "1.57.3",
249371
249411
  description: "UR-Nexus autonomous engineering workflow engine",
249372
249412
  websiteUrl: PRODUCT_URL
249373
249413
  }, {
@@ -261968,7 +262008,7 @@ async function createRuntime() {
261968
262008
  bootstrapTelemetry();
261969
262009
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
261970
262010
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
261971
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.57.1"
262011
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.57.3"
261972
262012
  }));
261973
262013
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
261974
262014
  resource,
@@ -262001,11 +262041,11 @@ async function createRuntime() {
262001
262041
  setMeterProvider(meterProvider);
262002
262042
  setLoggerProvider(loggerProvider);
262003
262043
  if (meterProvider) {
262004
- const meter = meterProvider.getMeter("ur-agent", "1.57.1");
262044
+ const meter = meterProvider.getMeter("ur-agent", "1.57.3");
262005
262045
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
262006
262046
  }
262007
262047
  if (loggerProvider) {
262008
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.57.1"));
262048
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.57.3"));
262009
262049
  }
262010
262050
  if (!cleanupRegistered2) {
262011
262051
  cleanupRegistered2 = true;
@@ -262667,9 +262707,9 @@ async function assertMinVersion() {
262667
262707
  if (false) {}
262668
262708
  try {
262669
262709
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
262670
- if (versionConfig.minVersion && lt("1.57.1", versionConfig.minVersion)) {
262710
+ if (versionConfig.minVersion && lt("1.57.3", versionConfig.minVersion)) {
262671
262711
  console.error(`
262672
- It looks like your version of UR (${"1.57.1"}) needs an update.
262712
+ It looks like your version of UR (${"1.57.3"}) needs an update.
262673
262713
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
262674
262714
 
262675
262715
  To update, please run:
@@ -262885,7 +262925,7 @@ async function installGlobalPackage(specificVersion) {
262885
262925
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
262886
262926
  logEvent("tengu_auto_updater_lock_contention", {
262887
262927
  pid: process.pid,
262888
- currentVersion: "1.57.1"
262928
+ currentVersion: "1.57.3"
262889
262929
  });
262890
262930
  return "in_progress";
262891
262931
  }
@@ -262894,7 +262934,7 @@ async function installGlobalPackage(specificVersion) {
262894
262934
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
262895
262935
  logError2(new Error("Windows NPM detected in WSL environment"));
262896
262936
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
262897
- currentVersion: "1.57.1"
262937
+ currentVersion: "1.57.3"
262898
262938
  });
262899
262939
  console.error(`
262900
262940
  Error: Windows NPM detected in WSL
@@ -263429,7 +263469,7 @@ function detectLinuxGlobPatternWarnings() {
263429
263469
  }
263430
263470
  async function getDoctorDiagnostic() {
263431
263471
  const installationType = await getCurrentInstallationType();
263432
- const version2 = typeof MACRO !== "undefined" ? "1.57.1" : "unknown";
263472
+ const version2 = typeof MACRO !== "undefined" ? "1.57.3" : "unknown";
263433
263473
  const installationPath = await getInstallationPath();
263434
263474
  const invokedBinary = getInvokedBinary();
263435
263475
  const multipleInstallations = await detectMultipleInstallations();
@@ -264364,8 +264404,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
264364
264404
  const maxVersion = await getMaxVersion();
264365
264405
  if (maxVersion && gt(version2, maxVersion)) {
264366
264406
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
264367
- if (gte("1.57.1", maxVersion)) {
264368
- logForDebugging(`Native installer: current version ${"1.57.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
264407
+ if (gte("1.57.3", maxVersion)) {
264408
+ logForDebugging(`Native installer: current version ${"1.57.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
264369
264409
  logEvent("tengu_native_update_skipped_max_version", {
264370
264410
  latency_ms: Date.now() - startTime,
264371
264411
  max_version: maxVersion,
@@ -264376,7 +264416,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
264376
264416
  version2 = maxVersion;
264377
264417
  }
264378
264418
  }
264379
- if (!forceReinstall && version2 === "1.57.1" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
264419
+ if (!forceReinstall && version2 === "1.57.3" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
264380
264420
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
264381
264421
  logEvent("tengu_native_update_complete", {
264382
264422
  latency_ms: Date.now() - startTime,
@@ -314301,7 +314341,7 @@ var init_ComputerTool = __esm(() => {
314301
314341
  data: {
314302
314342
  action: "screenshot",
314303
314343
  ok: true,
314304
- detail: `Captured ${bytes} bytes`,
314344
+ detail: `Captured the screen (${resized.buffer.length} bytes sent)`,
314305
314345
  screenshotPath: path13,
314306
314346
  imageBase64: resized.buffer.toString("base64"),
314307
314347
  imageMediaType: `image/${resized.mediaType}`
@@ -334658,7 +334698,7 @@ function isAnyTracingEnabled() {
334658
334698
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
334659
334699
  }
334660
334700
  function getTracer() {
334661
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.57.1");
334701
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.57.3");
334662
334702
  }
334663
334703
  function createSpanAttributes(spanType, customAttributes = {}) {
334664
334704
  const baseAttributes = getTelemetryAttributes();
@@ -336308,6 +336348,8 @@ function streamedCheckPermissionsAndCallTool(tool, toolUseID, input, toolUseCont
336308
336348
  return stream4;
336309
336349
  }
336310
336350
  function buildSchemaNotSentHint(tool, messages, tools) {
336351
+ if (!supportsToolReferenceExpansion())
336352
+ return null;
336311
336353
  if (!isToolSearchEnabledOptimistic())
336312
336354
  return null;
336313
336355
  if (!isToolSearchToolAvailable(tools))
@@ -343345,6 +343387,7 @@ var init_zodToJsonSchema2 = __esm(() => {
343345
343387
  // src/utils/toolSearch.ts
343346
343388
  var exports_toolSearch = {};
343347
343389
  __export(exports_toolSearch, {
343390
+ supportsToolReferenceExpansion: () => supportsToolReferenceExpansion,
343348
343391
  modelSupportsToolReference: () => modelSupportsToolReference,
343349
343392
  isToolSearchToolAvailable: () => isToolSearchToolAvailable,
343350
343393
  isToolSearchEnabledOptimistic: () => isToolSearchEnabledOptimistic,
@@ -343420,7 +343463,13 @@ function getUnsupportedToolReferencePatterns() {
343420
343463
  } catch {}
343421
343464
  return DEFAULT_UNSUPPORTED_MODEL_PATTERNS;
343422
343465
  }
343466
+ function supportsToolReferenceExpansion() {
343467
+ return isFirstPartyRuntime();
343468
+ }
343423
343469
  function modelSupportsToolReference(model) {
343470
+ if (!supportsToolReferenceExpansion()) {
343471
+ return false;
343472
+ }
343424
343473
  if (getAPIProvider() === "ollama") {
343425
343474
  return false;
343426
343475
  }
@@ -364138,7 +364187,7 @@ function Feedback({
364138
364187
  platform: env2.platform,
364139
364188
  gitRepo: envInfo.isGit,
364140
364189
  terminal: env2.terminal,
364141
- version: "1.57.1",
364190
+ version: "1.57.3",
364142
364191
  transcript: normalizeMessagesForAPI(messages),
364143
364192
  errors: sanitizedErrors,
364144
364193
  lastApiRequest: getLastAPIRequest(),
@@ -364330,7 +364379,7 @@ function Feedback({
364330
364379
  ", ",
364331
364380
  env2.terminal,
364332
364381
  ", v",
364333
- "1.57.1"
364382
+ "1.57.3"
364334
364383
  ]
364335
364384
  }, undefined, true, undefined, this)
364336
364385
  ]
@@ -364436,7 +364485,7 @@ ${sanitizedDescription}
364436
364485
  ` + `**Environment Info**
364437
364486
  ` + `- Platform: ${env2.platform}
364438
364487
  ` + `- Terminal: ${env2.terminal}
364439
- ` + `- Version: ${"1.57.1"}
364488
+ ` + `- Version: ${"1.57.3"}
364440
364489
  ` + `- Feedback ID: ${feedbackId}
364441
364490
  ` + `
364442
364491
  **Errors**
@@ -367546,7 +367595,7 @@ function buildPrimarySection() {
367546
367595
  }, undefined, false, undefined, this);
367547
367596
  return [{
367548
367597
  label: "Version",
367549
- value: "1.57.1"
367598
+ value: "1.57.3"
367550
367599
  }, {
367551
367600
  label: "Session name",
367552
367601
  value: nameValue
@@ -370876,7 +370925,7 @@ function Config({
370876
370925
  }
370877
370926
  }, undefined, false, undefined, this)
370878
370927
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
370879
- currentVersion: "1.57.1",
370928
+ currentVersion: "1.57.3",
370880
370929
  onChoice: (choice) => {
370881
370930
  setShowSubmenu(null);
370882
370931
  setTabsHidden(false);
@@ -370888,7 +370937,7 @@ function Config({
370888
370937
  autoUpdatesChannel: "stable"
370889
370938
  };
370890
370939
  if (choice === "stay") {
370891
- newSettings.minimumVersion = "1.57.1";
370940
+ newSettings.minimumVersion = "1.57.3";
370892
370941
  }
370893
370942
  updateSettingsForSource("userSettings", newSettings);
370894
370943
  setSettingsData((prev_27) => ({
@@ -378952,7 +379001,7 @@ function HelpV2(t0) {
378952
379001
  let t6;
378953
379002
  if ($2[31] !== tabs) {
378954
379003
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
378955
- title: `UR v${"1.57.1"}`,
379004
+ title: `UR v${"1.57.3"}`,
378956
379005
  color: "professionalBlue",
378957
379006
  defaultTab: "general",
378958
379007
  children: tabs
@@ -379869,7 +379918,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
379869
379918
  async function handleInitialize(options2) {
379870
379919
  return {
379871
379920
  name: "UR",
379872
- version: "1.57.1",
379921
+ version: "1.57.3",
379873
379922
  protocolVersion: "0.1.0",
379874
379923
  workspaceRoot: options2.cwd,
379875
379924
  capabilities: {
@@ -396977,7 +397026,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
396977
397026
  return [];
396978
397027
  }
396979
397028
  }
396980
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.57.1") {
397029
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.57.3") {
396981
397030
  if (process.env.USER_TYPE === "ant") {
396982
397031
  const changelog = "";
396983
397032
  if (changelog) {
@@ -397004,7 +397053,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.57.1")
397004
397053
  releaseNotes
397005
397054
  };
397006
397055
  }
397007
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.57.1") {
397056
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.57.3") {
397008
397057
  if (process.env.USER_TYPE === "ant") {
397009
397058
  const changelog = "";
397010
397059
  if (changelog) {
@@ -399861,7 +399910,7 @@ function getRecentActivitySync() {
399861
399910
  return cachedActivity;
399862
399911
  }
399863
399912
  function getLogoDisplayData() {
399864
- const version2 = process.env.DEMO_VERSION ?? "1.57.1";
399913
+ const version2 = process.env.DEMO_VERSION ?? "1.57.3";
399865
399914
  const serverUrl = getDirectConnectServerUrl();
399866
399915
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
399867
399916
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -400745,7 +400794,7 @@ function LogoV2() {
400745
400794
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
400746
400795
  t2 = () => {
400747
400796
  const currentConfig2 = getGlobalConfig();
400748
- if (currentConfig2.lastReleaseNotesSeen === "1.57.1") {
400797
+ if (currentConfig2.lastReleaseNotesSeen === "1.57.3") {
400749
400798
  return;
400750
400799
  }
400751
400800
  saveGlobalConfig(_temp327);
@@ -401430,12 +401479,12 @@ function LogoV2() {
401430
401479
  return t41;
401431
401480
  }
401432
401481
  function _temp327(current) {
401433
- if (current.lastReleaseNotesSeen === "1.57.1") {
401482
+ if (current.lastReleaseNotesSeen === "1.57.3") {
401434
401483
  return current;
401435
401484
  }
401436
401485
  return {
401437
401486
  ...current,
401438
- lastReleaseNotesSeen: "1.57.1"
401487
+ lastReleaseNotesSeen: "1.57.3"
401439
401488
  };
401440
401489
  }
401441
401490
  function _temp241(s_0) {
@@ -418233,7 +418282,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
418233
418282
  if (spec.name !== specName) {
418234
418283
  throw new Error("Agentic CI workflow spec name does not match");
418235
418284
  }
418236
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.57.1" : "1.57.1");
418285
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.57.3" : "1.57.3");
418237
418286
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
418238
418287
  throw new Error("invalid ur-agent package version");
418239
418288
  }
@@ -419226,7 +419275,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
419226
419275
  path: ".github/workflows/ur.yml",
419227
419276
  root: "project",
419228
419277
  content: compileAgenticCiWorkflow("default", {
419229
- packageVersion: typeof MACRO !== "undefined" ? "1.57.1" : "1.57.1"
419278
+ packageVersion: typeof MACRO !== "undefined" ? "1.57.3" : "1.57.3"
419230
419279
  })
419231
419280
  },
419232
419281
  {
@@ -419289,7 +419338,7 @@ function value(tokens, flag) {
419289
419338
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
419290
419339
  }
419291
419340
  function cliVersion() {
419292
- return typeof MACRO !== "undefined" ? "1.57.1" : "1.57.1";
419341
+ return typeof MACRO !== "undefined" ? "1.57.3" : "1.57.3";
419293
419342
  }
419294
419343
  function workflowPath(cwd2) {
419295
419344
  return join159(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -425145,7 +425194,7 @@ function createAcpStdioApp(deps) {
425145
425194
  }
425146
425195
  },
425147
425196
  authMethods: [],
425148
- agentInfo: { name: "UR-Nexus", version: "1.57.1" }
425197
+ agentInfo: { name: "UR-Nexus", version: "1.57.3" }
425149
425198
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
425150
425199
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
425151
425200
  await runtime2.announce({
@@ -425242,7 +425291,7 @@ function createAcpStdioAgent(deps) {
425242
425291
  }
425243
425292
  },
425244
425293
  authMethods: [],
425245
- agentInfo: { name: "UR-Nexus", version: "1.57.1" }
425294
+ agentInfo: { name: "UR-Nexus", version: "1.57.3" }
425246
425295
  });
425247
425296
  return;
425248
425297
  case "authenticate":
@@ -632609,7 +632658,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
632609
632658
  smapsRollup,
632610
632659
  platform: process.platform,
632611
632660
  nodeVersion: process.version,
632612
- ccVersion: "1.57.1"
632661
+ ccVersion: "1.57.3"
632613
632662
  };
632614
632663
  }
632615
632664
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -633189,7 +633238,7 @@ var init_bridge_kick = __esm(() => {
633189
633238
  var call149 = async () => {
633190
633239
  return {
633191
633240
  type: "text",
633192
- value: "1.57.1"
633241
+ value: "1.57.3"
633193
633242
  };
633194
633243
  }, version2, version_default;
633195
633244
  var init_version = __esm(() => {
@@ -644260,7 +644309,7 @@ function generateHtmlReport(data, insights) {
644260
644309
  </html>`;
644261
644310
  }
644262
644311
  function buildExportData(data, insights, facets, remoteStats) {
644263
- const version3 = typeof MACRO !== "undefined" ? "1.57.1" : "unknown";
644312
+ const version3 = typeof MACRO !== "undefined" ? "1.57.3" : "unknown";
644264
644313
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
644265
644314
  const facets_summary = {
644266
644315
  total: facets.size,
@@ -648563,7 +648612,7 @@ var init_sessionStorage = __esm(() => {
648563
648612
  init_settings2();
648564
648613
  init_slowOperations();
648565
648614
  init_uuid();
648566
- VERSION7 = typeof MACRO !== "undefined" ? "1.57.1" : "unknown";
648615
+ VERSION7 = typeof MACRO !== "undefined" ? "1.57.3" : "unknown";
648567
648616
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
648568
648617
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
648569
648618
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -649778,7 +649827,7 @@ var init_filesystem = __esm(() => {
649778
649827
  });
649779
649828
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
649780
649829
  const nonce = randomBytes20(16).toString("hex");
649781
- return join227(getURTempDir(), "bundled-skills", "1.57.1", nonce);
649830
+ return join227(getURTempDir(), "bundled-skills", "1.57.3", nonce);
649782
649831
  });
649783
649832
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
649784
649833
  });
@@ -656073,7 +656122,7 @@ function computeFingerprint(messageText2, version3) {
656073
656122
  }
656074
656123
  function computeFingerprintFromMessages(messages) {
656075
656124
  const firstMessageText = extractFirstMessageText(messages);
656076
- return computeFingerprint(firstMessageText, "1.57.1");
656125
+ return computeFingerprint(firstMessageText, "1.57.3");
656077
656126
  }
656078
656127
  var FINGERPRINT_SALT = "59cf53e54c78";
656079
656128
  var init_fingerprint = () => {};
@@ -657969,7 +658018,7 @@ async function sideQuery(opts) {
657969
658018
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
657970
658019
  }
657971
658020
  const messageText2 = extractFirstUserMessageText(messages);
657972
- const fingerprint2 = computeFingerprint(messageText2, "1.57.1");
658021
+ const fingerprint2 = computeFingerprint(messageText2, "1.57.3");
657973
658022
  const attributionHeader = getAttributionHeader(fingerprint2);
657974
658023
  const systemBlocks = [
657975
658024
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -662740,7 +662789,7 @@ function buildSystemInitMessage(inputs) {
662740
662789
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
662741
662790
  apiKeySource: getURHQApiKeyWithSource().source,
662742
662791
  betas: getSdkBetas(),
662743
- ur_version: "1.57.1",
662792
+ ur_version: "1.57.3",
662744
662793
  output_style: outputStyle2,
662745
662794
  agents: inputs.agents.map((agent2) => agent2.agentType),
662746
662795
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -676600,7 +676649,7 @@ var init_useVoiceEnabled = __esm(() => {
676600
676649
  function getSemverPart(version3) {
676601
676650
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
676602
676651
  }
676603
- function useUpdateNotification(updatedVersion, initialVersion = "1.57.1") {
676652
+ function useUpdateNotification(updatedVersion, initialVersion = "1.57.3") {
676604
676653
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react222.useState(() => getSemverPart(initialVersion));
676605
676654
  if (!updatedVersion) {
676606
676655
  return null;
@@ -676649,7 +676698,7 @@ function AutoUpdater({
676649
676698
  return;
676650
676699
  }
676651
676700
  if (false) {}
676652
- const currentVersion = "1.57.1";
676701
+ const currentVersion = "1.57.3";
676653
676702
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
676654
676703
  let latestVersion = await getLatestVersion(channel);
676655
676704
  const isDisabled = isAutoUpdaterDisabled();
@@ -676878,12 +676927,12 @@ function NativeAutoUpdater({
676878
676927
  logEvent("tengu_native_auto_updater_start", {});
676879
676928
  try {
676880
676929
  const maxVersion = await getMaxVersion();
676881
- if (maxVersion && gt("1.57.1", maxVersion)) {
676930
+ if (maxVersion && gt("1.57.3", maxVersion)) {
676882
676931
  const msg = await getMaxVersionMessage();
676883
676932
  setMaxVersionIssue(msg ?? "affects your version");
676884
676933
  }
676885
676934
  const result = await installLatest(channel);
676886
- const currentVersion = "1.57.1";
676935
+ const currentVersion = "1.57.3";
676887
676936
  const latencyMs = Date.now() - startTime;
676888
676937
  if (result.lockFailed) {
676889
676938
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -677020,17 +677069,17 @@ function PackageManagerAutoUpdater(t0) {
677020
677069
  const maxVersion = await getMaxVersion();
677021
677070
  if (maxVersion && latest && gt(latest, maxVersion)) {
677022
677071
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
677023
- if (gte("1.57.1", maxVersion)) {
677024
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.57.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
677072
+ if (gte("1.57.3", maxVersion)) {
677073
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.57.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
677025
677074
  setUpdateAvailable(false);
677026
677075
  return;
677027
677076
  }
677028
677077
  latest = maxVersion;
677029
677078
  }
677030
- const hasUpdate = latest && !gte("1.57.1", latest) && !shouldSkipVersion(latest);
677079
+ const hasUpdate = latest && !gte("1.57.3", latest) && !shouldSkipVersion(latest);
677031
677080
  setUpdateAvailable(!!hasUpdate);
677032
677081
  if (hasUpdate) {
677033
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.57.1"} -> ${latest}`);
677082
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.57.3"} -> ${latest}`);
677034
677083
  }
677035
677084
  };
677036
677085
  $2[0] = t1;
@@ -677064,7 +677113,7 @@ function PackageManagerAutoUpdater(t0) {
677064
677113
  wrap: "truncate",
677065
677114
  children: [
677066
677115
  "currentVersion: ",
677067
- "1.57.1"
677116
+ "1.57.3"
677068
677117
  ]
677069
677118
  }, undefined, true, undefined, this);
677070
677119
  $2[3] = verbose;
@@ -687761,7 +687810,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
687761
687810
  project_dir: getOriginalCwd(),
687762
687811
  added_dirs: addedDirs
687763
687812
  },
687764
- version: "1.57.1",
687813
+ version: "1.57.3",
687765
687814
  output_style: {
687766
687815
  name: outputStyleName
687767
687816
  },
@@ -687844,7 +687893,7 @@ function StatusLineInner({
687844
687893
  const taskValues = Object.values(tasks2);
687845
687894
  const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
687846
687895
  const defaultStatusLineText = buildDefaultStatusBar({
687847
- version: "1.57.1",
687896
+ version: "1.57.3",
687848
687897
  providerLabel: providerRuntime.providerLabel,
687849
687898
  authMode: providerRuntime.authLabel,
687850
687899
  model: providerRuntime.model ?? renderModelName(mainLoopModel),
@@ -699987,7 +700036,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
699987
700036
  } catch {}
699988
700037
  const data = {
699989
700038
  trigger: trigger2,
699990
- version: "1.57.1",
700039
+ version: "1.57.3",
699991
700040
  platform: process.platform,
699992
700041
  transcript,
699993
700042
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -712267,7 +712316,7 @@ function WelcomeV2() {
712267
712316
  dimColor: true,
712268
712317
  children: [
712269
712318
  "v",
712270
- "1.57.1"
712319
+ "1.57.3"
712271
712320
  ]
712272
712321
  }, undefined, true, undefined, this)
712273
712322
  ]
@@ -713527,7 +713576,7 @@ function completeOnboarding() {
713527
713576
  saveGlobalConfig((current) => ({
713528
713577
  ...current,
713529
713578
  hasCompletedOnboarding: true,
713530
- lastOnboardingVersion: "1.57.1"
713579
+ lastOnboardingVersion: "1.57.3"
713531
713580
  }));
713532
713581
  }
713533
713582
  function showDialog(root2, renderer) {
@@ -718571,7 +718620,7 @@ function appendToLog(path24, message) {
718571
718620
  cwd: getFsImplementation().cwd(),
718572
718621
  userType: process.env.USER_TYPE,
718573
718622
  sessionId: getSessionId(),
718574
- version: "1.57.1"
718623
+ version: "1.57.3"
718575
718624
  };
718576
718625
  getLogWriter(path24).write(messageWithTimestamp);
718577
718626
  }
@@ -722730,8 +722779,8 @@ async function getEnvLessBridgeConfig() {
722730
722779
  }
722731
722780
  async function checkEnvLessBridgeMinVersion() {
722732
722781
  const cfg = await getEnvLessBridgeConfig();
722733
- if (cfg.min_version && lt("1.57.1", cfg.min_version)) {
722734
- return `Your version of UR (${"1.57.1"}) is too old for Remote Control.
722782
+ if (cfg.min_version && lt("1.57.3", cfg.min_version)) {
722783
+ return `Your version of UR (${"1.57.3"}) is too old for Remote Control.
722735
722784
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
722736
722785
  }
722737
722786
  return null;
@@ -723205,7 +723254,7 @@ async function initBridgeCore(params) {
723205
723254
  const rawApi = createBridgeApiClient({
723206
723255
  baseUrl,
723207
723256
  getAccessToken,
723208
- runnerVersion: "1.57.1",
723257
+ runnerVersion: "1.57.3",
723209
723258
  onDebug: logForDebugging,
723210
723259
  onAuth401,
723211
723260
  getTrustedDeviceToken
@@ -732677,7 +732726,7 @@ function getAgUiCapabilities() {
732677
732726
  name: "UR-Nexus",
732678
732727
  type: "ur-nexus",
732679
732728
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
732680
- version: "1.57.1",
732729
+ version: "1.57.3",
732681
732730
  provider: "UR",
732682
732731
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
732683
732732
  },
@@ -733817,7 +733866,7 @@ function createMCPServer(cwd4, debug2, verbose) {
733817
733866
  };
733818
733867
  const server2 = new Server({
733819
733868
  name: "ur-nexus",
733820
- version: "1.57.1"
733869
+ version: "1.57.3"
733821
733870
  }, {
733822
733871
  capabilities: {
733823
733872
  tools: {}
@@ -734975,7 +735024,7 @@ function thrownResponse(error40) {
734975
735024
  }
734976
735025
  async function createUrMcp2026Runtime(options4) {
734977
735026
  const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
734978
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.57.1" }, { capabilities: {} });
735027
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.57.3" }, { capabilities: {} });
734979
735028
  const [clientTransport, serverTransport] = createLinkedTransportPair();
734980
735029
  try {
734981
735030
  await server2.connect(serverTransport);
@@ -734986,7 +735035,7 @@ async function createUrMcp2026Runtime(options4) {
734986
735035
  }
734987
735036
  const runtime2 = new Mcp2026Runtime({
734988
735037
  cwd: options4.cwd,
734989
- version: "1.57.1",
735038
+ version: "1.57.3",
734990
735039
  backend: {
734991
735040
  listTools: async () => {
734992
735041
  const listed = await client2.listTools();
@@ -737119,7 +737168,7 @@ async function update() {
737119
737168
  logEvent("tengu_update_check", {});
737120
737169
  const diagnostic2 = await getDoctorDiagnostic();
737121
737170
  const result = await checkUpgradeStatus({
737122
- currentVersion: "1.57.1",
737171
+ currentVersion: "1.57.3",
737123
737172
  packageName: UR_AGENT_PACKAGE_NAME,
737124
737173
  installationType: diagnostic2.installationType,
737125
737174
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -738435,7 +738484,7 @@ ${customInstructions}` : customInstructions;
738435
738484
  }
738436
738485
  }
738437
738486
  logForDiagnosticsNoPII("info", "started", {
738438
- version: "1.57.1",
738487
+ version: "1.57.3",
738439
738488
  is_native_binary: isInBundledMode()
738440
738489
  });
738441
738490
  registerCleanup(async () => {
@@ -739221,7 +739270,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
739221
739270
  pendingHookMessages
739222
739271
  }, renderAndRun);
739223
739272
  }
739224
- }).version("1.57.1 (UR-Nexus)", "-v, --version", "Output the version number");
739273
+ }).version("1.57.3 (UR-Nexus)", "-v, --version", "Output the version number");
739225
739274
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
739226
739275
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
739227
739276
  if (canUserConfigureAdvisor()) {
@@ -740256,7 +740305,7 @@ if (false) {}
740256
740305
  async function main2() {
740257
740306
  const args = process.argv.slice(2);
740258
740307
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
740259
- console.log(`${"1.57.1"} (UR-Nexus)`);
740308
+ console.log(`${"1.57.3"} (UR-Nexus)`);
740260
740309
  return;
740261
740310
  }
740262
740311
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
package/docs/providers.md CHANGED
@@ -47,12 +47,26 @@ multimodal input, external CLI boundary, and sandbox scope:
47
47
  | Antigravity | subscription | subscription-cli | yes | no | no | no† | UR-run tools/output only† | `subscription-cli:antigravity` | official Antigravity CLI login, where supported |
48
48
 
49
49
  \* Ollama forwards images only to models that advertise vision support;
50
- unsupported models get a text placeholder instead of the image.
50
+ unsupported models get a text placeholder instead of the image. This applies to
51
+ images returned by tools as well as images you paste: a `Computer` screenshot or
52
+ any other image-bearing tool result is extracted from the tool message and sent
53
+ as `images` on the following user message, because Ollama renders `images`
54
+ reliably there but only template-dependently on a `tool` message. On a text-only
55
+ model the placeholder names the model and points at `/model`, so the agent tells
56
+ you why it cannot see rather than guessing. Check a model with `ur model-doctor`
57
+ or `ollama show <model>`.
51
58
 
52
59
  † External vendor CLI boundary (see below): UR passes prompt text only to the
53
60
  official CLI, so image blocks are not forwarded, and UR-native tool/streaming/
54
61
  sandbox guarantees stop at UR-run tools and final UR output.
55
62
 
63
+ Tool search (deferred tool loading) is disabled on every provider above. It
64
+ depends on `tool_reference` content blocks being expanded into tool definitions
65
+ by the API, which is a URHQ-native beta feature with no equivalent on a local
66
+ runtime or a vendor CLI. UR therefore sends every tool schema on every request,
67
+ and `ToolSearch` is not offered to the model. Enabling it against a runtime that
68
+ cannot expand references would leave deferred tools permanently unreachable.
69
+
56
70
  Native tools and native streaming mean UR's own request/response loop parses
57
71
  tool calls and streams tokens for that provider. Multimodal input means UR
58
72
  preserves image content blocks (resized/normalized with `sharp`) into that
@@ -45,7 +45,7 @@
45
45
  <main id="content" class="content">
46
46
  <header class="topbar">
47
47
  <div>
48
- <p class="eyebrow">Version 1.57.1</p>
48
+ <p class="eyebrow">Version 1.57.3</p>
49
49
  <h1>UR-Nexus Documentation</h1>
50
50
  <p class="lead">A practical, tutorial-style reference for installing, configuring, automating, extending, and operating UR-Nexus.</p>
51
51
  </div>
@@ -7,7 +7,7 @@ plugins {
7
7
  }
8
8
 
9
9
  group = "dev.urnexus"
10
- version = "1.57.1"
10
+ version = "1.57.3"
11
11
 
12
12
  repositories {
13
13
  mavenCentral()
@@ -2,7 +2,7 @@
2
2
  "name": "ur-inline-diffs",
3
3
  "displayName": "UR Inline Diffs",
4
4
  "description": "Review, apply, and reject UR inline diff bundles from .ur/ide/diffs inside VS Code.",
5
- "version": "1.57.1",
5
+ "version": "1.57.3",
6
6
  "publisher": "ur-nexus",
7
7
  "engines": {
8
8
  "vscode": "^1.92.0"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ur-agent",
3
- "version": "1.57.1",
3
+ "version": "1.57.3",
4
4
  "description": "UR-Nexus — autonomous engineering workflow engine (plan, execute, test, verify, document, benchmark, reproduce)",
5
5
  "type": "module",
6
6
  "packageManager": "bun@1.3.14",