ur-agent 1.43.3 → 1.43.5

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,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.43.5
4
+
5
+ - Fix model discovery for OpenAI-compatible providers (LM Studio, llama.cpp,
6
+ vLLM) when base_url omits the API version segment. Discovery and `ur provider
7
+ doctor` now also try `/v1/models` when base_url is just `host:port`, so
8
+ `/model` lists the server's models instead of "returned no models". The
9
+ doctor reports the path that actually returns models and warns when an
10
+ endpoint is reachable but empty, instead of a misleading bare-`/models` pass.
11
+
12
+ ## 1.43.4
13
+
14
+ - Tolerate hallucinated extra parameters on tool calls: when input validation
15
+ fails only because of unrecognized keys (e.g. `title`/`description` on a
16
+ `Write` call), those keys are stripped and the call is re-validated instead
17
+ of failing with `An unexpected parameter X was provided`. Genuine errors
18
+ (missing required fields, type mismatches) still surface normally.
19
+
3
20
  ## 1.43.3
4
21
 
5
22
  - Bias the assistant toward the interactive arrow-key select menu: the
package/dist/cli.js CHANGED
@@ -51990,6 +51990,14 @@ function endpointUrl(baseUrl, kind) {
51990
51990
  }
51991
51991
  return `${trimmed}/models`;
51992
51992
  }
51993
+ function openAiCompatibleModelUrls(baseUrl) {
51994
+ const trimmed = baseUrl.replace(/\/+$/, "");
51995
+ const urls = [`${trimmed}/models`];
51996
+ if (!/\/(v\d+|api)(\/|$)/i.test(trimmed)) {
51997
+ urls.push(`${trimmed}/v1/models`);
51998
+ }
51999
+ return urls;
52000
+ }
51993
52001
  function isLocalBaseUrl(value) {
51994
52002
  return LOCALHOST_RE.test(value);
51995
52003
  }
@@ -52006,49 +52014,86 @@ async function checkEndpoint(definition, settings, adapters, result) {
52006
52014
  addFailure(result, "missing base_url", "Run: ur config set base_url <url>");
52007
52015
  return;
52008
52016
  }
52009
- const url3 = endpointUrl(baseUrl, definition.endpointKind);
52010
- try {
52011
- const response = await (adapters.fetch ?? fetch)(url3, {
52012
- method: "GET",
52013
- headers: definition.accessType === "api" && (adapters.env ?? process.env)[definition.envKey ?? ""] ? { Authorization: `Bearer ${(adapters.env ?? process.env)[definition.envKey ?? ""]}` } : undefined
52014
- });
52017
+ const candidates = definition.endpointKind === "ollama" ? [endpointUrl(baseUrl, "ollama")] : openAiCompatibleModelUrls(baseUrl);
52018
+ const headers = definition.accessType === "api" && (adapters.env ?? process.env)[definition.envKey ?? ""] ? { Authorization: `Bearer ${(adapters.env ?? process.env)[definition.envKey ?? ""]}` } : undefined;
52019
+ const fetchImpl = adapters.fetch ?? fetch;
52020
+ let reachableUrl;
52021
+ let modelsUrl;
52022
+ let modelsBody = "";
52023
+ let lastStatus;
52024
+ let lastError;
52025
+ for (const candidate of candidates) {
52026
+ let response;
52027
+ try {
52028
+ response = await fetchImpl(candidate, { method: "GET", headers });
52029
+ } catch (error40) {
52030
+ lastError = error40 instanceof Error ? error40 : new Error(String(error40));
52031
+ continue;
52032
+ }
52015
52033
  if (!response.ok) {
52034
+ lastStatus = response.status;
52035
+ continue;
52036
+ }
52037
+ reachableUrl ??= candidate;
52038
+ const body = await response.text().catch(() => "");
52039
+ let parsed = null;
52040
+ try {
52041
+ parsed = JSON.parse(body);
52042
+ } catch {
52043
+ parsed = null;
52044
+ }
52045
+ const names = definition.endpointKind === "ollama" ? parseOllamaModelNamesFromTags(parsed) : parseOpenAICompatibleModelNames(parsed);
52046
+ if (names.length > 0) {
52047
+ modelsUrl = candidate;
52048
+ modelsBody = body;
52049
+ break;
52050
+ }
52051
+ }
52052
+ if (!reachableUrl) {
52053
+ if (lastStatus !== undefined) {
52016
52054
  result.checks.push({
52017
52055
  name: "endpoint",
52018
52056
  status: "fail",
52019
- message: `${url3} returned HTTP ${response.status}.`
52057
+ message: `${candidates[0]} returned HTTP ${lastStatus}.`
52020
52058
  });
52021
- addFailure(result, `endpoint returned HTTP ${response.status}`, `Start the provider server or update base_url: ur config set base_url ${baseUrl}`);
52022
- return;
52059
+ addFailure(result, `endpoint returned HTTP ${lastStatus}`, `Start the provider server or update base_url: ur config set base_url ${baseUrl}`);
52060
+ } else {
52061
+ result.checks.push({
52062
+ name: "endpoint",
52063
+ status: "fail",
52064
+ message: `${candidates[0]} is not reachable.`
52065
+ });
52066
+ addFailure(result, lastError?.message ?? "endpoint unavailable", `Start the provider server or update base_url: ur config set base_url ${baseUrl}`);
52023
52067
  }
52068
+ return;
52069
+ }
52070
+ const chosenUrl = modelsUrl ?? reachableUrl;
52071
+ result.checks.push({
52072
+ name: "endpoint",
52073
+ status: "pass",
52074
+ message: `${chosenUrl} is reachable.`
52075
+ });
52076
+ if (!modelsUrl) {
52024
52077
  result.checks.push({
52025
- name: "endpoint",
52026
- status: "pass",
52027
- message: `${url3} is reachable.`
52078
+ name: "models",
52079
+ status: "warn",
52080
+ message: `${reachableUrl} is reachable but returned no models. Load a model in the server, or check that base_url includes the API path (e.g. /v1).`
52028
52081
  });
52029
- if (settings.model) {
52030
- const body = await response.text().catch(() => "");
52031
- if (body && !body.includes(settings.model)) {
52032
- result.checks.push({
52033
- name: "model",
52034
- status: "warn",
52035
- message: `Model "${settings.model}" was not found in the detectable model list.`
52036
- });
52037
- } else {
52038
- result.checks.push({
52039
- name: "model",
52040
- status: "pass",
52041
- message: `Model "${settings.model}" is detectable.`
52042
- });
52043
- }
52082
+ }
52083
+ if (settings.model) {
52084
+ if (modelsBody && !modelsBody.includes(settings.model)) {
52085
+ result.checks.push({
52086
+ name: "model",
52087
+ status: "warn",
52088
+ message: `Model "${settings.model}" was not found in the detectable model list.`
52089
+ });
52090
+ } else if (modelsBody) {
52091
+ result.checks.push({
52092
+ name: "model",
52093
+ status: "pass",
52094
+ message: `Model "${settings.model}" is detectable.`
52095
+ });
52044
52096
  }
52045
- } catch (error40) {
52046
- result.checks.push({
52047
- name: "endpoint",
52048
- status: "fail",
52049
- message: `${url3} is not reachable.`
52050
- });
52051
- addFailure(result, error40 instanceof Error ? error40.message : "endpoint unavailable", `Start the provider server or update base_url: ur config set base_url ${baseUrl}`);
52052
52097
  }
52053
52098
  }
52054
52099
  async function checkSubscriptionProvider(definition, settings, adapters, result) {
@@ -52612,19 +52657,43 @@ async function discoverLiveModelsForProvider(provider, options = {}) {
52612
52657
  if (!baseUrl) {
52613
52658
  throw new Error(`No base_url configured for provider "${provider}".`);
52614
52659
  }
52615
- const url3 = endpointUrl(baseUrl, definition.endpointKind);
52616
52660
  const env4 = options.adapters?.env ?? process.env;
52617
- const response = await (options.adapters?.fetch ?? fetch)(url3, {
52618
- method: "GET",
52619
- signal: options.signal,
52620
- headers: definition.accessType === "api" && definition.envKey && env4[definition.envKey] ? { Authorization: `Bearer ${env4[definition.envKey]}` } : undefined
52621
- });
52622
- if (!response.ok) {
52623
- throw new Error(`${url3} returned HTTP ${response.status}.`);
52661
+ const fetchImpl = options.adapters?.fetch ?? fetch;
52662
+ const headers = definition.accessType === "api" && definition.envKey && env4[definition.envKey] ? { Authorization: `Bearer ${env4[definition.envKey]}` } : undefined;
52663
+ if (definition.endpointKind === "ollama") {
52664
+ const url3 = endpointUrl(baseUrl, "ollama");
52665
+ const response = await fetchImpl(url3, { method: "GET", signal: options.signal, headers });
52666
+ if (!response.ok) {
52667
+ throw new Error(`${url3} returned HTTP ${response.status}.`);
52668
+ }
52669
+ const names = parseOllamaModelNamesFromTags(await response.json());
52670
+ return modelDefinitionsFromNames(provider, names, "live");
52624
52671
  }
52625
- const body = await response.json();
52626
- const names = definition.endpointKind === "ollama" ? parseOllamaModelNamesFromTags(body) : parseOpenAICompatibleModelNames(body);
52627
- return modelDefinitionsFromNames(provider, names, "live");
52672
+ let reachedOk = false;
52673
+ let lastError;
52674
+ for (const url3 of openAiCompatibleModelUrls(baseUrl)) {
52675
+ let response;
52676
+ try {
52677
+ response = await fetchImpl(url3, { method: "GET", signal: options.signal, headers });
52678
+ } catch (error40) {
52679
+ lastError = error40 instanceof Error ? error40 : new Error(String(error40));
52680
+ continue;
52681
+ }
52682
+ if (!response.ok) {
52683
+ lastError = new Error(`${url3} returned HTTP ${response.status}.`);
52684
+ continue;
52685
+ }
52686
+ reachedOk = true;
52687
+ const body = await response.json().catch(() => null);
52688
+ const names = parseOpenAICompatibleModelNames(body);
52689
+ if (names.length > 0) {
52690
+ return modelDefinitionsFromNames(provider, names, "live");
52691
+ }
52692
+ }
52693
+ if (!reachedOk && lastError) {
52694
+ throw lastError;
52695
+ }
52696
+ return [];
52628
52697
  }
52629
52698
  function apiModelsRequest(provider, apiKey) {
52630
52699
  switch (provider) {
@@ -71146,7 +71215,7 @@ var init_auth = __esm(() => {
71146
71215
 
71147
71216
  // src/utils/userAgent.ts
71148
71217
  function getURCodeUserAgent() {
71149
- return `ur/${"1.43.3"}`;
71218
+ return `ur/${"1.43.5"}`;
71150
71219
  }
71151
71220
 
71152
71221
  // src/utils/workloadContext.ts
@@ -71168,7 +71237,7 @@ function getUserAgent() {
71168
71237
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
71169
71238
  const workload = getWorkload();
71170
71239
  const workloadSuffix = workload ? `, workload/${workload}` : "";
71171
- return `ur-cli/${"1.43.3"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
71240
+ return `ur-cli/${"1.43.5"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
71172
71241
  }
71173
71242
  function getMCPUserAgent() {
71174
71243
  const parts = [];
@@ -71182,7 +71251,7 @@ function getMCPUserAgent() {
71182
71251
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
71183
71252
  }
71184
71253
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
71185
- return `ur/${"1.43.3"}${suffix}`;
71254
+ return `ur/${"1.43.5"}${suffix}`;
71186
71255
  }
71187
71256
  function getWebFetchUserAgent() {
71188
71257
  return `UR-User (${getURCodeUserAgent()})`;
@@ -71320,7 +71389,7 @@ var init_user = __esm(() => {
71320
71389
  deviceId,
71321
71390
  sessionId: getSessionId(),
71322
71391
  email: getEmail(),
71323
- appVersion: "1.43.3",
71392
+ appVersion: "1.43.5",
71324
71393
  platform: getHostPlatformForAnalytics(),
71325
71394
  organizationUuid,
71326
71395
  accountUuid,
@@ -77837,7 +77906,7 @@ var init_metadata = __esm(() => {
77837
77906
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
77838
77907
  WHITESPACE_REGEX = /\s+/;
77839
77908
  getVersionBase = memoize_default(() => {
77840
- const match = "1.43.3".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
77909
+ const match = "1.43.5".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
77841
77910
  return match ? match[0] : undefined;
77842
77911
  });
77843
77912
  buildEnvContext = memoize_default(async () => {
@@ -77877,7 +77946,7 @@ var init_metadata = __esm(() => {
77877
77946
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
77878
77947
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
77879
77948
  isURAiAuth: isURAISubscriber(),
77880
- version: "1.43.3",
77949
+ version: "1.43.5",
77881
77950
  versionBase: getVersionBase(),
77882
77951
  buildTime: "",
77883
77952
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -78547,7 +78616,7 @@ function initialize1PEventLogging() {
78547
78616
  const platform2 = getPlatform();
78548
78617
  const attributes = {
78549
78618
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
78550
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.43.3"
78619
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.43.5"
78551
78620
  };
78552
78621
  if (platform2 === "wsl") {
78553
78622
  const wslVersion = getWslVersion();
@@ -78574,7 +78643,7 @@ function initialize1PEventLogging() {
78574
78643
  })
78575
78644
  ]
78576
78645
  });
78577
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.43.3");
78646
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.43.5");
78578
78647
  }
78579
78648
  async function reinitialize1PEventLoggingIfConfigChanged() {
78580
78649
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -83873,7 +83942,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
83873
83942
  function formatA2AAgentCard(options = {}, pretty = true) {
83874
83943
  return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
83875
83944
  }
83876
- var urVersion = "1.43.3", coverage, priorityRoadmap;
83945
+ var urVersion = "1.43.5", coverage, priorityRoadmap;
83877
83946
  var init_trends = __esm(() => {
83878
83947
  coverage = [
83879
83948
  {
@@ -85868,7 +85937,7 @@ function getAttributionHeader(fingerprint) {
85868
85937
  if (!isAttributionHeaderEnabled()) {
85869
85938
  return "";
85870
85939
  }
85871
- const version2 = `${"1.43.3"}.${fingerprint}`;
85940
+ const version2 = `${"1.43.5"}.${fingerprint}`;
85872
85941
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
85873
85942
  const cch = "";
85874
85943
  const workload = getWorkload();
@@ -144545,6 +144614,45 @@ function createChildAbortController(parent, maxListeners) {
144545
144614
  var DEFAULT_MAX_LISTENERS = 50;
144546
144615
  var init_abortController = () => {};
144547
144616
 
144617
+ // src/utils/toolInputSanitize.ts
144618
+ function stripEmptyParameterNames(input) {
144619
+ if (typeof input !== "object" || input === null || Array.isArray(input)) {
144620
+ return { input, stripped: false };
144621
+ }
144622
+ if (!("" in input))
144623
+ return { input, stripped: false };
144624
+ const { "": _dropped, ...rest } = input;
144625
+ return { input: rest, stripped: true };
144626
+ }
144627
+ function stripUnrecognizedKeys(input, issues) {
144628
+ const unrecognized = issues.filter((issue2) => issue2.code === "unrecognized_keys");
144629
+ if (unrecognized.length === 0 || typeof input !== "object" || input === null) {
144630
+ return { input, stripped: [] };
144631
+ }
144632
+ const clone3 = structuredClone(input);
144633
+ const stripped = [];
144634
+ for (const issue2 of unrecognized) {
144635
+ let target = clone3;
144636
+ for (const segment of issue2.path) {
144637
+ if (target === null || typeof target !== "object") {
144638
+ target = null;
144639
+ break;
144640
+ }
144641
+ target = target[segment];
144642
+ }
144643
+ if (target !== null && typeof target === "object") {
144644
+ const record2 = target;
144645
+ for (const key of issue2.keys ?? []) {
144646
+ if (key in record2) {
144647
+ delete record2[key];
144648
+ stripped.push(key);
144649
+ }
144650
+ }
144651
+ }
144652
+ }
144653
+ return { input: clone3, stripped };
144654
+ }
144655
+
144548
144656
  // node_modules/highlight.js/lib/core.js
144549
144657
  var require_core = __commonJS((exports, module) => {
144550
144658
  function deepFreeze(obj) {
@@ -193771,7 +193879,7 @@ function getTelemetryAttributes() {
193771
193879
  attributes["session.id"] = sessionId;
193772
193880
  }
193773
193881
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
193774
- attributes["app.version"] = "1.43.3";
193882
+ attributes["app.version"] = "1.43.5";
193775
193883
  }
193776
193884
  const oauthAccount = getOauthAccountInfo();
193777
193885
  if (oauthAccount) {
@@ -229159,7 +229267,7 @@ function getInstallationEnv() {
229159
229267
  return;
229160
229268
  }
229161
229269
  function getURCodeVersion() {
229162
- return "1.43.3";
229270
+ return "1.43.5";
229163
229271
  }
229164
229272
  async function getInstalledVSCodeExtensionVersion(command) {
229165
229273
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -231998,7 +232106,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
231998
232106
  const client2 = new Client({
231999
232107
  name: "ur",
232000
232108
  title: "UR",
232001
- version: "1.43.3",
232109
+ version: "1.43.5",
232002
232110
  description: "UR-Nexus autonomous engineering workflow engine",
232003
232111
  websiteUrl: PRODUCT_URL
232004
232112
  }, {
@@ -232352,7 +232460,7 @@ var init_client5 = __esm(() => {
232352
232460
  const client2 = new Client({
232353
232461
  name: "ur",
232354
232462
  title: "UR",
232355
- version: "1.43.3",
232463
+ version: "1.43.5",
232356
232464
  description: "UR-Nexus autonomous engineering workflow engine",
232357
232465
  websiteUrl: PRODUCT_URL
232358
232466
  }, {
@@ -242166,9 +242274,9 @@ async function assertMinVersion() {
242166
242274
  if (false) {}
242167
242275
  try {
242168
242276
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
242169
- if (versionConfig.minVersion && lt("1.43.3", versionConfig.minVersion)) {
242277
+ if (versionConfig.minVersion && lt("1.43.5", versionConfig.minVersion)) {
242170
242278
  console.error(`
242171
- It looks like your version of UR (${"1.43.3"}) needs an update.
242279
+ It looks like your version of UR (${"1.43.5"}) needs an update.
242172
242280
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
242173
242281
 
242174
242282
  To update, please run:
@@ -242384,7 +242492,7 @@ async function installGlobalPackage(specificVersion) {
242384
242492
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
242385
242493
  logEvent("tengu_auto_updater_lock_contention", {
242386
242494
  pid: process.pid,
242387
- currentVersion: "1.43.3"
242495
+ currentVersion: "1.43.5"
242388
242496
  });
242389
242497
  return "in_progress";
242390
242498
  }
@@ -242393,7 +242501,7 @@ async function installGlobalPackage(specificVersion) {
242393
242501
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
242394
242502
  logError2(new Error("Windows NPM detected in WSL environment"));
242395
242503
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
242396
- currentVersion: "1.43.3"
242504
+ currentVersion: "1.43.5"
242397
242505
  });
242398
242506
  console.error(`
242399
242507
  Error: Windows NPM detected in WSL
@@ -242928,7 +243036,7 @@ function detectLinuxGlobPatternWarnings() {
242928
243036
  }
242929
243037
  async function getDoctorDiagnostic() {
242930
243038
  const installationType = await getCurrentInstallationType();
242931
- const version2 = typeof MACRO !== "undefined" ? "1.43.3" : "unknown";
243039
+ const version2 = typeof MACRO !== "undefined" ? "1.43.5" : "unknown";
242932
243040
  const installationPath = await getInstallationPath();
242933
243041
  const invokedBinary = getInvokedBinary();
242934
243042
  const multipleInstallations = await detectMultipleInstallations();
@@ -243863,8 +243971,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
243863
243971
  const maxVersion = await getMaxVersion();
243864
243972
  if (maxVersion && gt(version2, maxVersion)) {
243865
243973
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
243866
- if (gte("1.43.3", maxVersion)) {
243867
- logForDebugging(`Native installer: current version ${"1.43.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
243974
+ if (gte("1.43.5", maxVersion)) {
243975
+ logForDebugging(`Native installer: current version ${"1.43.5"} is already at or above maxVersion ${maxVersion}, skipping update`);
243868
243976
  logEvent("tengu_native_update_skipped_max_version", {
243869
243977
  latency_ms: Date.now() - startTime,
243870
243978
  max_version: maxVersion,
@@ -243875,7 +243983,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
243875
243983
  version2 = maxVersion;
243876
243984
  }
243877
243985
  }
243878
- if (!forceReinstall && version2 === "1.43.3" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
243986
+ if (!forceReinstall && version2 === "1.43.5" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
243879
243987
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
243880
243988
  logEvent("tengu_native_update_complete", {
243881
243989
  latency_ms: Date.now() - startTime,
@@ -313966,7 +314074,20 @@ function buildSchemaNotSentHint(tool, messages, tools) {
313966
314074
  This tool's schema was not sent to the API \u2014 it was not in the discovered-tool set derived from message history. ` + `Without the schema in your prompt, typed parameters (arrays, numbers, booleans) get emitted as strings and the client-side parser rejects them. ` + `Load the tool first: call ${TOOL_SEARCH_TOOL_NAME} with query "select:${tool.name}", then retry this call.`;
313967
314075
  }
313968
314076
  async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContext, canUseTool, assistantMessage, messageId, requestId, mcpServerType, mcpServerBaseUrl, onToolProgress) {
313969
- const parsedInput = tool.inputSchema.safeParse(input);
314077
+ let parsedInput = tool.inputSchema.safeParse(input);
314078
+ if (!parsedInput.success && parsedInput.error.issues.length > 0 && parsedInput.error.issues.every((issue2) => issue2.code === "unrecognized_keys")) {
314079
+ const { input: cleaned, stripped } = stripUnrecognizedKeys(input, parsedInput.error.issues);
314080
+ if (stripped.length > 0) {
314081
+ const retry = tool.inputSchema.safeParse(cleaned);
314082
+ if (retry.success) {
314083
+ logEvent("tengu_tool_input_unrecognized_keys_stripped", {
314084
+ toolName: sanitizeToolNameForAnalytics(tool.name)
314085
+ });
314086
+ input = cleaned;
314087
+ parsedInput = retry;
314088
+ }
314089
+ }
314090
+ }
313970
314091
  if (!parsedInput.success) {
313971
314092
  let errorContent = formatZodValidationError(tool.name, parsedInput.error);
313972
314093
  const schemaHint = buildSchemaNotSentHint(tool, toolUseContext.messages, toolUseContext.options.tools);
@@ -329890,17 +330011,6 @@ ${EXPLANATORY_FEATURE_PROMPT}`
329890
330011
  });
329891
330012
  });
329892
330013
 
329893
- // src/utils/toolInputSanitize.ts
329894
- function stripEmptyParameterNames(input) {
329895
- if (typeof input !== "object" || input === null || Array.isArray(input)) {
329896
- return { input, stripped: false };
329897
- }
329898
- if (!("" in input))
329899
- return { input, stripped: false };
329900
- const { "": _dropped, ...rest } = input;
329901
- return { input: rest, stripped: true };
329902
- }
329903
-
329904
330014
  // src/utils/messages.ts
329905
330015
  import { randomUUID as randomUUID32 } from "crypto";
329906
330016
  function getTeammateMailbox() {
@@ -340864,7 +340974,7 @@ function Feedback({
340864
340974
  platform: env2.platform,
340865
340975
  gitRepo: envInfo.isGit,
340866
340976
  terminal: env2.terminal,
340867
- version: "1.43.3",
340977
+ version: "1.43.5",
340868
340978
  transcript: normalizeMessagesForAPI(messages),
340869
340979
  errors: sanitizedErrors,
340870
340980
  lastApiRequest: getLastAPIRequest(),
@@ -341056,7 +341166,7 @@ function Feedback({
341056
341166
  ", ",
341057
341167
  env2.terminal,
341058
341168
  ", v",
341059
- "1.43.3"
341169
+ "1.43.5"
341060
341170
  ]
341061
341171
  }, undefined, true, undefined, this)
341062
341172
  ]
@@ -341162,7 +341272,7 @@ ${sanitizedDescription}
341162
341272
  ` + `**Environment Info**
341163
341273
  ` + `- Platform: ${env2.platform}
341164
341274
  ` + `- Terminal: ${env2.terminal}
341165
- ` + `- Version: ${"1.43.3"}
341275
+ ` + `- Version: ${"1.43.5"}
341166
341276
  ` + `- Feedback ID: ${feedbackId}
341167
341277
  ` + `
341168
341278
  **Errors**
@@ -344273,7 +344383,7 @@ function buildPrimarySection() {
344273
344383
  }, undefined, false, undefined, this);
344274
344384
  return [{
344275
344385
  label: "Version",
344276
- value: "1.43.3"
344386
+ value: "1.43.5"
344277
344387
  }, {
344278
344388
  label: "Session name",
344279
344389
  value: nameValue
@@ -347574,7 +347684,7 @@ function Config({
347574
347684
  }
347575
347685
  }, undefined, false, undefined, this)
347576
347686
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime177.jsxDEV(ChannelDowngradeDialog, {
347577
- currentVersion: "1.43.3",
347687
+ currentVersion: "1.43.5",
347578
347688
  onChoice: (choice) => {
347579
347689
  setShowSubmenu(null);
347580
347690
  setTabsHidden(false);
@@ -347586,7 +347696,7 @@ function Config({
347586
347696
  autoUpdatesChannel: "stable"
347587
347697
  };
347588
347698
  if (choice === "stay") {
347589
- newSettings.minimumVersion = "1.43.3";
347699
+ newSettings.minimumVersion = "1.43.5";
347590
347700
  }
347591
347701
  updateSettingsForSource("userSettings", newSettings);
347592
347702
  setSettingsData((prev_27) => ({
@@ -355656,7 +355766,7 @@ function HelpV2(t0) {
355656
355766
  let t6;
355657
355767
  if ($3[31] !== tabs) {
355658
355768
  t6 = /* @__PURE__ */ jsx_dev_runtime204.jsxDEV(Tabs, {
355659
- title: `UR v${"1.43.3"}`,
355769
+ title: `UR v${"1.43.5"}`,
355660
355770
  color: "professionalBlue",
355661
355771
  defaultTab: "general",
355662
355772
  children: tabs
@@ -356402,7 +356512,7 @@ function buildToolUseContext(tools, readFileStateCache) {
356402
356512
  async function handleInitialize(options2) {
356403
356513
  return {
356404
356514
  name: "UR",
356405
- version: "1.43.3",
356515
+ version: "1.43.5",
356406
356516
  protocolVersion: "0.1.0",
356407
356517
  workspaceRoot: options2.cwd,
356408
356518
  capabilities: {
@@ -376544,7 +376654,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
376544
376654
  return [];
376545
376655
  }
376546
376656
  }
376547
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.43.3") {
376657
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.43.5") {
376548
376658
  if (process.env.USER_TYPE === "ant") {
376549
376659
  const changelog = "";
376550
376660
  if (changelog) {
@@ -376571,7 +376681,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.43.3")
376571
376681
  releaseNotes
376572
376682
  };
376573
376683
  }
376574
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.43.3") {
376684
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.43.5") {
376575
376685
  if (process.env.USER_TYPE === "ant") {
376576
376686
  const changelog = "";
376577
376687
  if (changelog) {
@@ -377750,7 +377860,7 @@ function getRecentActivitySync() {
377750
377860
  return cachedActivity;
377751
377861
  }
377752
377862
  function getLogoDisplayData() {
377753
- const version2 = process.env.DEMO_VERSION ?? "1.43.3";
377863
+ const version2 = process.env.DEMO_VERSION ?? "1.43.5";
377754
377864
  const serverUrl = getDirectConnectServerUrl();
377755
377865
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
377756
377866
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -378539,7 +378649,7 @@ function LogoV2() {
378539
378649
  if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
378540
378650
  t2 = () => {
378541
378651
  const currentConfig2 = getGlobalConfig();
378542
- if (currentConfig2.lastReleaseNotesSeen === "1.43.3") {
378652
+ if (currentConfig2.lastReleaseNotesSeen === "1.43.5") {
378543
378653
  return;
378544
378654
  }
378545
378655
  saveGlobalConfig(_temp326);
@@ -379224,12 +379334,12 @@ function LogoV2() {
379224
379334
  return t41;
379225
379335
  }
379226
379336
  function _temp326(current) {
379227
- if (current.lastReleaseNotesSeen === "1.43.3") {
379337
+ if (current.lastReleaseNotesSeen === "1.43.5") {
379228
379338
  return current;
379229
379339
  }
379230
379340
  return {
379231
379341
  ...current,
379232
- lastReleaseNotesSeen: "1.43.3"
379342
+ lastReleaseNotesSeen: "1.43.5"
379233
379343
  };
379234
379344
  }
379235
379345
  function _temp243(s_0) {
@@ -411110,7 +411220,7 @@ var init_code_index2 = __esm(() => {
411110
411220
 
411111
411221
  // node_modules/typescript/lib/typescript.js
411112
411222
  var require_typescript2 = __commonJS((exports, module) => {
411113
- var __dirname = "/sessions/friendly-inspiring-goldberg/mnt/UR-1.43.0/node_modules/typescript/lib", __filename = "/sessions/friendly-inspiring-goldberg/mnt/UR-1.43.0/node_modules/typescript/lib/typescript.js";
411223
+ var __dirname = "/sessions/friendly-inspiring-goldberg/mnt/UR-1.43.3/node_modules/typescript/lib", __filename = "/sessions/friendly-inspiring-goldberg/mnt/UR-1.43.3/node_modules/typescript/lib/typescript.js";
411114
411224
  /*! *****************************************************************************
411115
411225
  Copyright (c) Microsoft Corporation. All rights reserved.
411116
411226
  Licensed under the Apache License, Version 2.0 (the "License"); you may not use
@@ -596644,7 +596754,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
596644
596754
  smapsRollup,
596645
596755
  platform: process.platform,
596646
596756
  nodeVersion: process.version,
596647
- ccVersion: "1.43.3"
596757
+ ccVersion: "1.43.5"
596648
596758
  };
596649
596759
  }
596650
596760
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -597230,7 +597340,7 @@ var init_bridge_kick = __esm(() => {
597230
597340
  var call137 = async () => {
597231
597341
  return {
597232
597342
  type: "text",
597233
- value: "1.43.3"
597343
+ value: "1.43.5"
597234
597344
  };
597235
597345
  }, version2, version_default;
597236
597346
  var init_version = __esm(() => {
@@ -607323,7 +607433,7 @@ function generateHtmlReport(data, insights) {
607323
607433
  </html>`;
607324
607434
  }
607325
607435
  function buildExportData(data, insights, facets, remoteStats) {
607326
- const version3 = typeof MACRO !== "undefined" ? "1.43.3" : "unknown";
607436
+ const version3 = typeof MACRO !== "undefined" ? "1.43.5" : "unknown";
607327
607437
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
607328
607438
  const facets_summary = {
607329
607439
  total: facets.size,
@@ -611603,7 +611713,7 @@ var init_sessionStorage = __esm(() => {
611603
611713
  init_settings2();
611604
611714
  init_slowOperations();
611605
611715
  init_uuid();
611606
- VERSION5 = typeof MACRO !== "undefined" ? "1.43.3" : "unknown";
611716
+ VERSION5 = typeof MACRO !== "undefined" ? "1.43.5" : "unknown";
611607
611717
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
611608
611718
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
611609
611719
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -612808,7 +612918,7 @@ var init_filesystem = __esm(() => {
612808
612918
  });
612809
612919
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
612810
612920
  const nonce = randomBytes18(16).toString("hex");
612811
- return join202(getURTempDir(), "bundled-skills", "1.43.3", nonce);
612921
+ return join202(getURTempDir(), "bundled-skills", "1.43.5", nonce);
612812
612922
  });
612813
612923
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
612814
612924
  });
@@ -619097,7 +619207,7 @@ function computeFingerprint(messageText2, version3) {
619097
619207
  }
619098
619208
  function computeFingerprintFromMessages(messages) {
619099
619209
  const firstMessageText = extractFirstMessageText(messages);
619100
- return computeFingerprint(firstMessageText, "1.43.3");
619210
+ return computeFingerprint(firstMessageText, "1.43.5");
619101
619211
  }
619102
619212
  var FINGERPRINT_SALT = "59cf53e54c78";
619103
619213
  var init_fingerprint = () => {};
@@ -620971,7 +621081,7 @@ async function sideQuery(opts) {
620971
621081
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
620972
621082
  }
620973
621083
  const messageText2 = extractFirstUserMessageText(messages);
620974
- const fingerprint2 = computeFingerprint(messageText2, "1.43.3");
621084
+ const fingerprint2 = computeFingerprint(messageText2, "1.43.5");
620975
621085
  const attributionHeader = getAttributionHeader(fingerprint2);
620976
621086
  const systemBlocks = [
620977
621087
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -625708,7 +625818,7 @@ function buildSystemInitMessage(inputs) {
625708
625818
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
625709
625819
  apiKeySource: getURHQApiKeyWithSource().source,
625710
625820
  betas: getSdkBetas(),
625711
- ur_version: "1.43.3",
625821
+ ur_version: "1.43.5",
625712
625822
  output_style: outputStyle2,
625713
625823
  agents: inputs.agents.map((agent) => agent.agentType),
625714
625824
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -640336,7 +640446,7 @@ var init_useVoiceEnabled = __esm(() => {
640336
640446
  function getSemverPart(version3) {
640337
640447
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
640338
640448
  }
640339
- function useUpdateNotification(updatedVersion, initialVersion = "1.43.3") {
640449
+ function useUpdateNotification(updatedVersion, initialVersion = "1.43.5") {
640340
640450
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react226.useState(() => getSemverPart(initialVersion));
640341
640451
  if (!updatedVersion) {
640342
640452
  return null;
@@ -640385,7 +640495,7 @@ function AutoUpdater({
640385
640495
  return;
640386
640496
  }
640387
640497
  if (false) {}
640388
- const currentVersion = "1.43.3";
640498
+ const currentVersion = "1.43.5";
640389
640499
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
640390
640500
  let latestVersion = await getLatestVersion(channel);
640391
640501
  const isDisabled = isAutoUpdaterDisabled();
@@ -640614,12 +640724,12 @@ function NativeAutoUpdater({
640614
640724
  logEvent("tengu_native_auto_updater_start", {});
640615
640725
  try {
640616
640726
  const maxVersion = await getMaxVersion();
640617
- if (maxVersion && gt("1.43.3", maxVersion)) {
640727
+ if (maxVersion && gt("1.43.5", maxVersion)) {
640618
640728
  const msg = await getMaxVersionMessage();
640619
640729
  setMaxVersionIssue(msg ?? "affects your version");
640620
640730
  }
640621
640731
  const result = await installLatest(channel);
640622
- const currentVersion = "1.43.3";
640732
+ const currentVersion = "1.43.5";
640623
640733
  const latencyMs = Date.now() - startTime;
640624
640734
  if (result.lockFailed) {
640625
640735
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -640756,17 +640866,17 @@ function PackageManagerAutoUpdater(t0) {
640756
640866
  const maxVersion = await getMaxVersion();
640757
640867
  if (maxVersion && latest && gt(latest, maxVersion)) {
640758
640868
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
640759
- if (gte("1.43.3", maxVersion)) {
640760
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.43.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
640869
+ if (gte("1.43.5", maxVersion)) {
640870
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.43.5"} is already at or above maxVersion ${maxVersion}, skipping update`);
640761
640871
  setUpdateAvailable(false);
640762
640872
  return;
640763
640873
  }
640764
640874
  latest = maxVersion;
640765
640875
  }
640766
- const hasUpdate = latest && !gte("1.43.3", latest) && !shouldSkipVersion(latest);
640876
+ const hasUpdate = latest && !gte("1.43.5", latest) && !shouldSkipVersion(latest);
640767
640877
  setUpdateAvailable(!!hasUpdate);
640768
640878
  if (hasUpdate) {
640769
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.43.3"} -> ${latest}`);
640879
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.43.5"} -> ${latest}`);
640770
640880
  }
640771
640881
  };
640772
640882
  $3[0] = t1;
@@ -640800,7 +640910,7 @@ function PackageManagerAutoUpdater(t0) {
640800
640910
  wrap: "truncate",
640801
640911
  children: [
640802
640912
  "currentVersion: ",
640803
- "1.43.3"
640913
+ "1.43.5"
640804
640914
  ]
640805
640915
  }, undefined, true, undefined, this);
640806
640916
  $3[3] = verbose;
@@ -653252,7 +653362,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
653252
653362
  project_dir: getOriginalCwd(),
653253
653363
  added_dirs: addedDirs
653254
653364
  },
653255
- version: "1.43.3",
653365
+ version: "1.43.5",
653256
653366
  output_style: {
653257
653367
  name: outputStyleName
653258
653368
  },
@@ -653335,7 +653445,7 @@ function StatusLineInner({
653335
653445
  const taskValues = Object.values(tasks2);
653336
653446
  const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
653337
653447
  const defaultStatusLineText = buildDefaultStatusBar({
653338
- version: "1.43.3",
653448
+ version: "1.43.5",
653339
653449
  providerLabel: providerRuntime.providerLabel,
653340
653450
  authMode: providerRuntime.authLabel,
653341
653451
  model: providerRuntime.model ?? renderModelName(mainLoopModel),
@@ -664823,7 +664933,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
664823
664933
  } catch {}
664824
664934
  const data = {
664825
664935
  trigger: trigger2,
664826
- version: "1.43.3",
664936
+ version: "1.43.5",
664827
664937
  platform: process.platform,
664828
664938
  transcript,
664829
664939
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -676708,7 +676818,7 @@ function WelcomeV2() {
676708
676818
  dimColor: true,
676709
676819
  children: [
676710
676820
  "v",
676711
- "1.43.3"
676821
+ "1.43.5"
676712
676822
  ]
676713
676823
  }, undefined, true, undefined, this)
676714
676824
  ]
@@ -677968,7 +678078,7 @@ function completeOnboarding() {
677968
678078
  saveGlobalConfig((current) => ({
677969
678079
  ...current,
677970
678080
  hasCompletedOnboarding: true,
677971
- lastOnboardingVersion: "1.43.3"
678081
+ lastOnboardingVersion: "1.43.5"
677972
678082
  }));
677973
678083
  }
677974
678084
  function showDialog(root2, renderer) {
@@ -683005,7 +683115,7 @@ function appendToLog(path24, message) {
683005
683115
  cwd: getFsImplementation().cwd(),
683006
683116
  userType: process.env.USER_TYPE,
683007
683117
  sessionId: getSessionId(),
683008
- version: "1.43.3"
683118
+ version: "1.43.5"
683009
683119
  };
683010
683120
  getLogWriter(path24).write(messageWithTimestamp);
683011
683121
  }
@@ -687099,8 +687209,8 @@ async function getEnvLessBridgeConfig() {
687099
687209
  }
687100
687210
  async function checkEnvLessBridgeMinVersion() {
687101
687211
  const cfg = await getEnvLessBridgeConfig();
687102
- if (cfg.min_version && lt("1.43.3", cfg.min_version)) {
687103
- return `Your version of UR (${"1.43.3"}) is too old for Remote Control.
687212
+ if (cfg.min_version && lt("1.43.5", cfg.min_version)) {
687213
+ return `Your version of UR (${"1.43.5"}) is too old for Remote Control.
687104
687214
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
687105
687215
  }
687106
687216
  return null;
@@ -687574,7 +687684,7 @@ async function initBridgeCore(params) {
687574
687684
  const rawApi = createBridgeApiClient({
687575
687685
  baseUrl,
687576
687686
  getAccessToken,
687577
- runnerVersion: "1.43.3",
687687
+ runnerVersion: "1.43.5",
687578
687688
  onDebug: logForDebugging,
687579
687689
  onAuth401,
687580
687690
  getTrustedDeviceToken
@@ -693256,7 +693366,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
693256
693366
  setCwd(cwd3);
693257
693367
  const server2 = new Server({
693258
693368
  name: "ur/tengu",
693259
- version: "1.43.3"
693369
+ version: "1.43.5"
693260
693370
  }, {
693261
693371
  capabilities: {
693262
693372
  tools: {}
@@ -695298,7 +695408,7 @@ async function update() {
695298
695408
  logEvent("tengu_update_check", {});
695299
695409
  const diagnostic = await getDoctorDiagnostic();
695300
695410
  const result = await checkUpgradeStatus({
695301
- currentVersion: "1.43.3",
695411
+ currentVersion: "1.43.5",
695302
695412
  packageName: UR_AGENT_PACKAGE_NAME,
695303
695413
  installationType: diagnostic.installationType,
695304
695414
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -696544,7 +696654,7 @@ ${customInstructions}` : customInstructions;
696544
696654
  }
696545
696655
  }
696546
696656
  logForDiagnosticsNoPII("info", "started", {
696547
- version: "1.43.3",
696657
+ version: "1.43.5",
696548
696658
  is_native_binary: isInBundledMode()
696549
696659
  });
696550
696660
  registerCleanup(async () => {
@@ -697330,7 +697440,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
697330
697440
  pendingHookMessages
697331
697441
  }, renderAndRun);
697332
697442
  }
697333
- }).version("1.43.3 (UR-Nexus)", "-v, --version", "Output the version number");
697443
+ }).version("1.43.5 (UR-Nexus)", "-v, --version", "Output the version number");
697334
697444
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
697335
697445
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
697336
697446
  if (canUserConfigureAdvisor()) {
@@ -698245,7 +698355,7 @@ if (false) {}
698245
698355
  async function main2() {
698246
698356
  const args = process.argv.slice(2);
698247
698357
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
698248
- console.log(`${"1.43.3"} (UR-Nexus)`);
698358
+ console.log(`${"1.43.5"} (UR-Nexus)`);
698249
698359
  return;
698250
698360
  }
698251
698361
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
@@ -44,7 +44,7 @@
44
44
  <main id="content" class="content">
45
45
  <header class="topbar">
46
46
  <div>
47
- <p class="eyebrow">Version 1.43.3</p>
47
+ <p class="eyebrow">Version 1.43.5</p>
48
48
  <h1>UR-Nexus Documentation</h1>
49
49
  <p class="lead">A practical, tutorial-style reference for installing, configuring, automating, extending, and operating UR-Nexus.</p>
50
50
  </div>
@@ -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.43.3",
5
+ "version": "1.43.5",
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.43.3",
3
+ "version": "1.43.5",
4
4
  "description": "UR-Nexus \u2014 autonomous engineering workflow engine (plan, execute, test, verify, document, benchmark, reproduce)",
5
5
  "type": "module",
6
6
  "packageManager": "bun@1.3.14",