ur-agent 1.43.4 → 1.43.6

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.6
4
+
5
+ - Render output from reasoning models on OpenAI-compatible providers (LM Studio,
6
+ vLLM). The streaming and non-streaming parsers now read `reasoning_content`
7
+ (and `reasoning`) deltas and surface them as thinking blocks. Models that emit
8
+ their output in the reasoning field (e.g. NVIDIA Nemotron, DeepSeek-R1
9
+ distills, QwQ) previously produced an empty response with no error.
10
+
11
+ ## 1.43.5
12
+
13
+ - Fix model discovery for OpenAI-compatible providers (LM Studio, llama.cpp,
14
+ vLLM) when base_url omits the API version segment. Discovery and `ur provider
15
+ doctor` now also try `/v1/models` when base_url is just `host:port`, so
16
+ `/model` lists the server's models instead of "returned no models". The
17
+ doctor reports the path that actually returns models and warns when an
18
+ endpoint is reachable but empty, instead of a misleading bare-`/models` pass.
19
+
3
20
  ## 1.43.4
4
21
 
5
22
  - Tolerate hallucinated extra parameters on tool calls: when input validation
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) {
@@ -56492,6 +56561,13 @@ async function* streamOpenAIEvents(body, options) {
56492
56561
  let finishReason;
56493
56562
  let usage = EMPTY_USAGE;
56494
56563
  const toolStates = new Map;
56564
+ let activeThinkingIndex = null;
56565
+ const stopThinking = function* () {
56566
+ if (activeThinkingIndex !== null) {
56567
+ yield { type: "content_block_stop", index: activeThinkingIndex };
56568
+ activeThinkingIndex = null;
56569
+ }
56570
+ };
56495
56571
  const stopText = function* () {
56496
56572
  if (activeTextIndex !== null) {
56497
56573
  yield { type: "content_block_stop", index: activeTextIndex };
@@ -56500,6 +56576,8 @@ async function* streamOpenAIEvents(body, options) {
56500
56576
  };
56501
56577
  const ensureText = function* () {
56502
56578
  if (activeTextIndex === null) {
56579
+ for (const event of stopThinking())
56580
+ yield event;
56503
56581
  activeTextIndex = blockIndex++;
56504
56582
  sawBlock = true;
56505
56583
  yield {
@@ -56509,6 +56587,19 @@ async function* streamOpenAIEvents(body, options) {
56509
56587
  };
56510
56588
  }
56511
56589
  };
56590
+ const ensureThinking = function* () {
56591
+ if (activeThinkingIndex === null) {
56592
+ for (const event of stopText())
56593
+ yield event;
56594
+ activeThinkingIndex = blockIndex++;
56595
+ sawBlock = true;
56596
+ yield {
56597
+ type: "content_block_start",
56598
+ index: activeThinkingIndex,
56599
+ content_block: { type: "thinking", thinking: "" }
56600
+ };
56601
+ }
56602
+ };
56512
56603
  const ensureTool = function* (state) {
56513
56604
  if (state.blockIndex !== undefined)
56514
56605
  return;
@@ -56548,6 +56639,16 @@ async function* streamOpenAIEvents(body, options) {
56548
56639
  }
56549
56640
  for (const choice of chunk?.choices ?? []) {
56550
56641
  const delta = choice?.delta ?? {};
56642
+ const reasoning = typeof delta.reasoning_content === "string" ? delta.reasoning_content : typeof delta.reasoning === "string" ? delta.reasoning : "";
56643
+ if (reasoning.length > 0) {
56644
+ for (const event of ensureThinking())
56645
+ yield event;
56646
+ yield {
56647
+ type: "content_block_delta",
56648
+ index: activeThinkingIndex,
56649
+ delta: { type: "thinking_delta", thinking: reasoning }
56650
+ };
56651
+ }
56551
56652
  if (typeof delta.content === "string" && delta.content.length > 0) {
56552
56653
  for (const event of ensureText())
56553
56654
  yield event;
@@ -56591,6 +56692,8 @@ async function* streamOpenAIEvents(body, options) {
56591
56692
  }
56592
56693
  for (const event of stopText())
56593
56694
  yield event;
56695
+ for (const event of stopThinking())
56696
+ yield event;
56594
56697
  for (const [index2, state] of toolStates.entries()) {
56595
56698
  if (state.blockIndex === undefined) {
56596
56699
  throw new ProviderResponseParseError(`${providerName} streamed tool_calls[${index2}] without a function name`, { state });
@@ -57395,6 +57498,10 @@ function messageToOpenAIMessages(message, toolNamesById, providerName) {
57395
57498
  }
57396
57499
  function parseOpenAIMessageContent(message, legacyText, providerName) {
57397
57500
  const content = [];
57501
+ const reasoning = typeof message?.reasoning_content === "string" ? message.reasoning_content : typeof message?.reasoning === "string" ? message.reasoning : "";
57502
+ if (reasoning.length > 0) {
57503
+ content.push({ type: "thinking", thinking: reasoning });
57504
+ }
57398
57505
  const text = openAIMessageText(message?.content, legacyText);
57399
57506
  if (text.length > 0) {
57400
57507
  content.push({ type: "text", text });
@@ -71146,7 +71253,7 @@ var init_auth = __esm(() => {
71146
71253
 
71147
71254
  // src/utils/userAgent.ts
71148
71255
  function getURCodeUserAgent() {
71149
- return `ur/${"1.43.4"}`;
71256
+ return `ur/${"1.43.6"}`;
71150
71257
  }
71151
71258
 
71152
71259
  // src/utils/workloadContext.ts
@@ -71168,7 +71275,7 @@ function getUserAgent() {
71168
71275
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
71169
71276
  const workload = getWorkload();
71170
71277
  const workloadSuffix = workload ? `, workload/${workload}` : "";
71171
- return `ur-cli/${"1.43.4"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
71278
+ return `ur-cli/${"1.43.6"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
71172
71279
  }
71173
71280
  function getMCPUserAgent() {
71174
71281
  const parts = [];
@@ -71182,7 +71289,7 @@ function getMCPUserAgent() {
71182
71289
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
71183
71290
  }
71184
71291
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
71185
- return `ur/${"1.43.4"}${suffix}`;
71292
+ return `ur/${"1.43.6"}${suffix}`;
71186
71293
  }
71187
71294
  function getWebFetchUserAgent() {
71188
71295
  return `UR-User (${getURCodeUserAgent()})`;
@@ -71320,7 +71427,7 @@ var init_user = __esm(() => {
71320
71427
  deviceId,
71321
71428
  sessionId: getSessionId(),
71322
71429
  email: getEmail(),
71323
- appVersion: "1.43.4",
71430
+ appVersion: "1.43.6",
71324
71431
  platform: getHostPlatformForAnalytics(),
71325
71432
  organizationUuid,
71326
71433
  accountUuid,
@@ -77837,7 +77944,7 @@ var init_metadata = __esm(() => {
77837
77944
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
77838
77945
  WHITESPACE_REGEX = /\s+/;
77839
77946
  getVersionBase = memoize_default(() => {
77840
- const match = "1.43.4".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
77947
+ const match = "1.43.6".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
77841
77948
  return match ? match[0] : undefined;
77842
77949
  });
77843
77950
  buildEnvContext = memoize_default(async () => {
@@ -77877,7 +77984,7 @@ var init_metadata = __esm(() => {
77877
77984
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
77878
77985
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
77879
77986
  isURAiAuth: isURAISubscriber(),
77880
- version: "1.43.4",
77987
+ version: "1.43.6",
77881
77988
  versionBase: getVersionBase(),
77882
77989
  buildTime: "",
77883
77990
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -78547,7 +78654,7 @@ function initialize1PEventLogging() {
78547
78654
  const platform2 = getPlatform();
78548
78655
  const attributes = {
78549
78656
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
78550
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.43.4"
78657
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.43.6"
78551
78658
  };
78552
78659
  if (platform2 === "wsl") {
78553
78660
  const wslVersion = getWslVersion();
@@ -78574,7 +78681,7 @@ function initialize1PEventLogging() {
78574
78681
  })
78575
78682
  ]
78576
78683
  });
78577
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.43.4");
78684
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.43.6");
78578
78685
  }
78579
78686
  async function reinitialize1PEventLoggingIfConfigChanged() {
78580
78687
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -83873,7 +83980,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
83873
83980
  function formatA2AAgentCard(options = {}, pretty = true) {
83874
83981
  return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
83875
83982
  }
83876
- var urVersion = "1.43.4", coverage, priorityRoadmap;
83983
+ var urVersion = "1.43.6", coverage, priorityRoadmap;
83877
83984
  var init_trends = __esm(() => {
83878
83985
  coverage = [
83879
83986
  {
@@ -85868,7 +85975,7 @@ function getAttributionHeader(fingerprint) {
85868
85975
  if (!isAttributionHeaderEnabled()) {
85869
85976
  return "";
85870
85977
  }
85871
- const version2 = `${"1.43.4"}.${fingerprint}`;
85978
+ const version2 = `${"1.43.6"}.${fingerprint}`;
85872
85979
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
85873
85980
  const cch = "";
85874
85981
  const workload = getWorkload();
@@ -193810,7 +193917,7 @@ function getTelemetryAttributes() {
193810
193917
  attributes["session.id"] = sessionId;
193811
193918
  }
193812
193919
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
193813
- attributes["app.version"] = "1.43.4";
193920
+ attributes["app.version"] = "1.43.6";
193814
193921
  }
193815
193922
  const oauthAccount = getOauthAccountInfo();
193816
193923
  if (oauthAccount) {
@@ -229198,7 +229305,7 @@ function getInstallationEnv() {
229198
229305
  return;
229199
229306
  }
229200
229307
  function getURCodeVersion() {
229201
- return "1.43.4";
229308
+ return "1.43.6";
229202
229309
  }
229203
229310
  async function getInstalledVSCodeExtensionVersion(command) {
229204
229311
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -232037,7 +232144,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
232037
232144
  const client2 = new Client({
232038
232145
  name: "ur",
232039
232146
  title: "UR",
232040
- version: "1.43.4",
232147
+ version: "1.43.6",
232041
232148
  description: "UR-Nexus autonomous engineering workflow engine",
232042
232149
  websiteUrl: PRODUCT_URL
232043
232150
  }, {
@@ -232391,7 +232498,7 @@ var init_client5 = __esm(() => {
232391
232498
  const client2 = new Client({
232392
232499
  name: "ur",
232393
232500
  title: "UR",
232394
- version: "1.43.4",
232501
+ version: "1.43.6",
232395
232502
  description: "UR-Nexus autonomous engineering workflow engine",
232396
232503
  websiteUrl: PRODUCT_URL
232397
232504
  }, {
@@ -242205,9 +242312,9 @@ async function assertMinVersion() {
242205
242312
  if (false) {}
242206
242313
  try {
242207
242314
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
242208
- if (versionConfig.minVersion && lt("1.43.4", versionConfig.minVersion)) {
242315
+ if (versionConfig.minVersion && lt("1.43.6", versionConfig.minVersion)) {
242209
242316
  console.error(`
242210
- It looks like your version of UR (${"1.43.4"}) needs an update.
242317
+ It looks like your version of UR (${"1.43.6"}) needs an update.
242211
242318
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
242212
242319
 
242213
242320
  To update, please run:
@@ -242423,7 +242530,7 @@ async function installGlobalPackage(specificVersion) {
242423
242530
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
242424
242531
  logEvent("tengu_auto_updater_lock_contention", {
242425
242532
  pid: process.pid,
242426
- currentVersion: "1.43.4"
242533
+ currentVersion: "1.43.6"
242427
242534
  });
242428
242535
  return "in_progress";
242429
242536
  }
@@ -242432,7 +242539,7 @@ async function installGlobalPackage(specificVersion) {
242432
242539
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
242433
242540
  logError2(new Error("Windows NPM detected in WSL environment"));
242434
242541
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
242435
- currentVersion: "1.43.4"
242542
+ currentVersion: "1.43.6"
242436
242543
  });
242437
242544
  console.error(`
242438
242545
  Error: Windows NPM detected in WSL
@@ -242967,7 +243074,7 @@ function detectLinuxGlobPatternWarnings() {
242967
243074
  }
242968
243075
  async function getDoctorDiagnostic() {
242969
243076
  const installationType = await getCurrentInstallationType();
242970
- const version2 = typeof MACRO !== "undefined" ? "1.43.4" : "unknown";
243077
+ const version2 = typeof MACRO !== "undefined" ? "1.43.6" : "unknown";
242971
243078
  const installationPath = await getInstallationPath();
242972
243079
  const invokedBinary = getInvokedBinary();
242973
243080
  const multipleInstallations = await detectMultipleInstallations();
@@ -243902,8 +244009,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
243902
244009
  const maxVersion = await getMaxVersion();
243903
244010
  if (maxVersion && gt(version2, maxVersion)) {
243904
244011
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
243905
- if (gte("1.43.4", maxVersion)) {
243906
- logForDebugging(`Native installer: current version ${"1.43.4"} is already at or above maxVersion ${maxVersion}, skipping update`);
244012
+ if (gte("1.43.6", maxVersion)) {
244013
+ logForDebugging(`Native installer: current version ${"1.43.6"} is already at or above maxVersion ${maxVersion}, skipping update`);
243907
244014
  logEvent("tengu_native_update_skipped_max_version", {
243908
244015
  latency_ms: Date.now() - startTime,
243909
244016
  max_version: maxVersion,
@@ -243914,7 +244021,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
243914
244021
  version2 = maxVersion;
243915
244022
  }
243916
244023
  }
243917
- if (!forceReinstall && version2 === "1.43.4" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
244024
+ if (!forceReinstall && version2 === "1.43.6" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
243918
244025
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
243919
244026
  logEvent("tengu_native_update_complete", {
243920
244027
  latency_ms: Date.now() - startTime,
@@ -340905,7 +341012,7 @@ function Feedback({
340905
341012
  platform: env2.platform,
340906
341013
  gitRepo: envInfo.isGit,
340907
341014
  terminal: env2.terminal,
340908
- version: "1.43.4",
341015
+ version: "1.43.6",
340909
341016
  transcript: normalizeMessagesForAPI(messages),
340910
341017
  errors: sanitizedErrors,
340911
341018
  lastApiRequest: getLastAPIRequest(),
@@ -341097,7 +341204,7 @@ function Feedback({
341097
341204
  ", ",
341098
341205
  env2.terminal,
341099
341206
  ", v",
341100
- "1.43.4"
341207
+ "1.43.6"
341101
341208
  ]
341102
341209
  }, undefined, true, undefined, this)
341103
341210
  ]
@@ -341203,7 +341310,7 @@ ${sanitizedDescription}
341203
341310
  ` + `**Environment Info**
341204
341311
  ` + `- Platform: ${env2.platform}
341205
341312
  ` + `- Terminal: ${env2.terminal}
341206
- ` + `- Version: ${"1.43.4"}
341313
+ ` + `- Version: ${"1.43.6"}
341207
341314
  ` + `- Feedback ID: ${feedbackId}
341208
341315
  ` + `
341209
341316
  **Errors**
@@ -344314,7 +344421,7 @@ function buildPrimarySection() {
344314
344421
  }, undefined, false, undefined, this);
344315
344422
  return [{
344316
344423
  label: "Version",
344317
- value: "1.43.4"
344424
+ value: "1.43.6"
344318
344425
  }, {
344319
344426
  label: "Session name",
344320
344427
  value: nameValue
@@ -347615,7 +347722,7 @@ function Config({
347615
347722
  }
347616
347723
  }, undefined, false, undefined, this)
347617
347724
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime177.jsxDEV(ChannelDowngradeDialog, {
347618
- currentVersion: "1.43.4",
347725
+ currentVersion: "1.43.6",
347619
347726
  onChoice: (choice) => {
347620
347727
  setShowSubmenu(null);
347621
347728
  setTabsHidden(false);
@@ -347627,7 +347734,7 @@ function Config({
347627
347734
  autoUpdatesChannel: "stable"
347628
347735
  };
347629
347736
  if (choice === "stay") {
347630
- newSettings.minimumVersion = "1.43.4";
347737
+ newSettings.minimumVersion = "1.43.6";
347631
347738
  }
347632
347739
  updateSettingsForSource("userSettings", newSettings);
347633
347740
  setSettingsData((prev_27) => ({
@@ -355697,7 +355804,7 @@ function HelpV2(t0) {
355697
355804
  let t6;
355698
355805
  if ($3[31] !== tabs) {
355699
355806
  t6 = /* @__PURE__ */ jsx_dev_runtime204.jsxDEV(Tabs, {
355700
- title: `UR v${"1.43.4"}`,
355807
+ title: `UR v${"1.43.6"}`,
355701
355808
  color: "professionalBlue",
355702
355809
  defaultTab: "general",
355703
355810
  children: tabs
@@ -356443,7 +356550,7 @@ function buildToolUseContext(tools, readFileStateCache) {
356443
356550
  async function handleInitialize(options2) {
356444
356551
  return {
356445
356552
  name: "UR",
356446
- version: "1.43.4",
356553
+ version: "1.43.6",
356447
356554
  protocolVersion: "0.1.0",
356448
356555
  workspaceRoot: options2.cwd,
356449
356556
  capabilities: {
@@ -376585,7 +376692,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
376585
376692
  return [];
376586
376693
  }
376587
376694
  }
376588
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.43.4") {
376695
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.43.6") {
376589
376696
  if (process.env.USER_TYPE === "ant") {
376590
376697
  const changelog = "";
376591
376698
  if (changelog) {
@@ -376612,7 +376719,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.43.4")
376612
376719
  releaseNotes
376613
376720
  };
376614
376721
  }
376615
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.43.4") {
376722
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.43.6") {
376616
376723
  if (process.env.USER_TYPE === "ant") {
376617
376724
  const changelog = "";
376618
376725
  if (changelog) {
@@ -377791,7 +377898,7 @@ function getRecentActivitySync() {
377791
377898
  return cachedActivity;
377792
377899
  }
377793
377900
  function getLogoDisplayData() {
377794
- const version2 = process.env.DEMO_VERSION ?? "1.43.4";
377901
+ const version2 = process.env.DEMO_VERSION ?? "1.43.6";
377795
377902
  const serverUrl = getDirectConnectServerUrl();
377796
377903
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
377797
377904
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -378580,7 +378687,7 @@ function LogoV2() {
378580
378687
  if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
378581
378688
  t2 = () => {
378582
378689
  const currentConfig2 = getGlobalConfig();
378583
- if (currentConfig2.lastReleaseNotesSeen === "1.43.4") {
378690
+ if (currentConfig2.lastReleaseNotesSeen === "1.43.6") {
378584
378691
  return;
378585
378692
  }
378586
378693
  saveGlobalConfig(_temp326);
@@ -379265,12 +379372,12 @@ function LogoV2() {
379265
379372
  return t41;
379266
379373
  }
379267
379374
  function _temp326(current) {
379268
- if (current.lastReleaseNotesSeen === "1.43.4") {
379375
+ if (current.lastReleaseNotesSeen === "1.43.6") {
379269
379376
  return current;
379270
379377
  }
379271
379378
  return {
379272
379379
  ...current,
379273
- lastReleaseNotesSeen: "1.43.4"
379380
+ lastReleaseNotesSeen: "1.43.6"
379274
379381
  };
379275
379382
  }
379276
379383
  function _temp243(s_0) {
@@ -596685,7 +596792,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
596685
596792
  smapsRollup,
596686
596793
  platform: process.platform,
596687
596794
  nodeVersion: process.version,
596688
- ccVersion: "1.43.4"
596795
+ ccVersion: "1.43.6"
596689
596796
  };
596690
596797
  }
596691
596798
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -597271,7 +597378,7 @@ var init_bridge_kick = __esm(() => {
597271
597378
  var call137 = async () => {
597272
597379
  return {
597273
597380
  type: "text",
597274
- value: "1.43.4"
597381
+ value: "1.43.6"
597275
597382
  };
597276
597383
  }, version2, version_default;
597277
597384
  var init_version = __esm(() => {
@@ -607364,7 +607471,7 @@ function generateHtmlReport(data, insights) {
607364
607471
  </html>`;
607365
607472
  }
607366
607473
  function buildExportData(data, insights, facets, remoteStats) {
607367
- const version3 = typeof MACRO !== "undefined" ? "1.43.4" : "unknown";
607474
+ const version3 = typeof MACRO !== "undefined" ? "1.43.6" : "unknown";
607368
607475
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
607369
607476
  const facets_summary = {
607370
607477
  total: facets.size,
@@ -611644,7 +611751,7 @@ var init_sessionStorage = __esm(() => {
611644
611751
  init_settings2();
611645
611752
  init_slowOperations();
611646
611753
  init_uuid();
611647
- VERSION5 = typeof MACRO !== "undefined" ? "1.43.4" : "unknown";
611754
+ VERSION5 = typeof MACRO !== "undefined" ? "1.43.6" : "unknown";
611648
611755
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
611649
611756
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
611650
611757
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -612849,7 +612956,7 @@ var init_filesystem = __esm(() => {
612849
612956
  });
612850
612957
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
612851
612958
  const nonce = randomBytes18(16).toString("hex");
612852
- return join202(getURTempDir(), "bundled-skills", "1.43.4", nonce);
612959
+ return join202(getURTempDir(), "bundled-skills", "1.43.6", nonce);
612853
612960
  });
612854
612961
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
612855
612962
  });
@@ -619138,7 +619245,7 @@ function computeFingerprint(messageText2, version3) {
619138
619245
  }
619139
619246
  function computeFingerprintFromMessages(messages) {
619140
619247
  const firstMessageText = extractFirstMessageText(messages);
619141
- return computeFingerprint(firstMessageText, "1.43.4");
619248
+ return computeFingerprint(firstMessageText, "1.43.6");
619142
619249
  }
619143
619250
  var FINGERPRINT_SALT = "59cf53e54c78";
619144
619251
  var init_fingerprint = () => {};
@@ -621012,7 +621119,7 @@ async function sideQuery(opts) {
621012
621119
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
621013
621120
  }
621014
621121
  const messageText2 = extractFirstUserMessageText(messages);
621015
- const fingerprint2 = computeFingerprint(messageText2, "1.43.4");
621122
+ const fingerprint2 = computeFingerprint(messageText2, "1.43.6");
621016
621123
  const attributionHeader = getAttributionHeader(fingerprint2);
621017
621124
  const systemBlocks = [
621018
621125
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -625749,7 +625856,7 @@ function buildSystemInitMessage(inputs) {
625749
625856
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
625750
625857
  apiKeySource: getURHQApiKeyWithSource().source,
625751
625858
  betas: getSdkBetas(),
625752
- ur_version: "1.43.4",
625859
+ ur_version: "1.43.6",
625753
625860
  output_style: outputStyle2,
625754
625861
  agents: inputs.agents.map((agent) => agent.agentType),
625755
625862
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -640377,7 +640484,7 @@ var init_useVoiceEnabled = __esm(() => {
640377
640484
  function getSemverPart(version3) {
640378
640485
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
640379
640486
  }
640380
- function useUpdateNotification(updatedVersion, initialVersion = "1.43.4") {
640487
+ function useUpdateNotification(updatedVersion, initialVersion = "1.43.6") {
640381
640488
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react226.useState(() => getSemverPart(initialVersion));
640382
640489
  if (!updatedVersion) {
640383
640490
  return null;
@@ -640426,7 +640533,7 @@ function AutoUpdater({
640426
640533
  return;
640427
640534
  }
640428
640535
  if (false) {}
640429
- const currentVersion = "1.43.4";
640536
+ const currentVersion = "1.43.6";
640430
640537
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
640431
640538
  let latestVersion = await getLatestVersion(channel);
640432
640539
  const isDisabled = isAutoUpdaterDisabled();
@@ -640655,12 +640762,12 @@ function NativeAutoUpdater({
640655
640762
  logEvent("tengu_native_auto_updater_start", {});
640656
640763
  try {
640657
640764
  const maxVersion = await getMaxVersion();
640658
- if (maxVersion && gt("1.43.4", maxVersion)) {
640765
+ if (maxVersion && gt("1.43.6", maxVersion)) {
640659
640766
  const msg = await getMaxVersionMessage();
640660
640767
  setMaxVersionIssue(msg ?? "affects your version");
640661
640768
  }
640662
640769
  const result = await installLatest(channel);
640663
- const currentVersion = "1.43.4";
640770
+ const currentVersion = "1.43.6";
640664
640771
  const latencyMs = Date.now() - startTime;
640665
640772
  if (result.lockFailed) {
640666
640773
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -640797,17 +640904,17 @@ function PackageManagerAutoUpdater(t0) {
640797
640904
  const maxVersion = await getMaxVersion();
640798
640905
  if (maxVersion && latest && gt(latest, maxVersion)) {
640799
640906
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
640800
- if (gte("1.43.4", maxVersion)) {
640801
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.43.4"} is already at or above maxVersion ${maxVersion}, skipping update`);
640907
+ if (gte("1.43.6", maxVersion)) {
640908
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.43.6"} is already at or above maxVersion ${maxVersion}, skipping update`);
640802
640909
  setUpdateAvailable(false);
640803
640910
  return;
640804
640911
  }
640805
640912
  latest = maxVersion;
640806
640913
  }
640807
- const hasUpdate = latest && !gte("1.43.4", latest) && !shouldSkipVersion(latest);
640914
+ const hasUpdate = latest && !gte("1.43.6", latest) && !shouldSkipVersion(latest);
640808
640915
  setUpdateAvailable(!!hasUpdate);
640809
640916
  if (hasUpdate) {
640810
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.43.4"} -> ${latest}`);
640917
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.43.6"} -> ${latest}`);
640811
640918
  }
640812
640919
  };
640813
640920
  $3[0] = t1;
@@ -640841,7 +640948,7 @@ function PackageManagerAutoUpdater(t0) {
640841
640948
  wrap: "truncate",
640842
640949
  children: [
640843
640950
  "currentVersion: ",
640844
- "1.43.4"
640951
+ "1.43.6"
640845
640952
  ]
640846
640953
  }, undefined, true, undefined, this);
640847
640954
  $3[3] = verbose;
@@ -653293,7 +653400,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
653293
653400
  project_dir: getOriginalCwd(),
653294
653401
  added_dirs: addedDirs
653295
653402
  },
653296
- version: "1.43.4",
653403
+ version: "1.43.6",
653297
653404
  output_style: {
653298
653405
  name: outputStyleName
653299
653406
  },
@@ -653376,7 +653483,7 @@ function StatusLineInner({
653376
653483
  const taskValues = Object.values(tasks2);
653377
653484
  const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
653378
653485
  const defaultStatusLineText = buildDefaultStatusBar({
653379
- version: "1.43.4",
653486
+ version: "1.43.6",
653380
653487
  providerLabel: providerRuntime.providerLabel,
653381
653488
  authMode: providerRuntime.authLabel,
653382
653489
  model: providerRuntime.model ?? renderModelName(mainLoopModel),
@@ -664864,7 +664971,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
664864
664971
  } catch {}
664865
664972
  const data = {
664866
664973
  trigger: trigger2,
664867
- version: "1.43.4",
664974
+ version: "1.43.6",
664868
664975
  platform: process.platform,
664869
664976
  transcript,
664870
664977
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -676749,7 +676856,7 @@ function WelcomeV2() {
676749
676856
  dimColor: true,
676750
676857
  children: [
676751
676858
  "v",
676752
- "1.43.4"
676859
+ "1.43.6"
676753
676860
  ]
676754
676861
  }, undefined, true, undefined, this)
676755
676862
  ]
@@ -678009,7 +678116,7 @@ function completeOnboarding() {
678009
678116
  saveGlobalConfig((current) => ({
678010
678117
  ...current,
678011
678118
  hasCompletedOnboarding: true,
678012
- lastOnboardingVersion: "1.43.4"
678119
+ lastOnboardingVersion: "1.43.6"
678013
678120
  }));
678014
678121
  }
678015
678122
  function showDialog(root2, renderer) {
@@ -683046,7 +683153,7 @@ function appendToLog(path24, message) {
683046
683153
  cwd: getFsImplementation().cwd(),
683047
683154
  userType: process.env.USER_TYPE,
683048
683155
  sessionId: getSessionId(),
683049
- version: "1.43.4"
683156
+ version: "1.43.6"
683050
683157
  };
683051
683158
  getLogWriter(path24).write(messageWithTimestamp);
683052
683159
  }
@@ -687140,8 +687247,8 @@ async function getEnvLessBridgeConfig() {
687140
687247
  }
687141
687248
  async function checkEnvLessBridgeMinVersion() {
687142
687249
  const cfg = await getEnvLessBridgeConfig();
687143
- if (cfg.min_version && lt("1.43.4", cfg.min_version)) {
687144
- return `Your version of UR (${"1.43.4"}) is too old for Remote Control.
687250
+ if (cfg.min_version && lt("1.43.6", cfg.min_version)) {
687251
+ return `Your version of UR (${"1.43.6"}) is too old for Remote Control.
687145
687252
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
687146
687253
  }
687147
687254
  return null;
@@ -687615,7 +687722,7 @@ async function initBridgeCore(params) {
687615
687722
  const rawApi = createBridgeApiClient({
687616
687723
  baseUrl,
687617
687724
  getAccessToken,
687618
- runnerVersion: "1.43.4",
687725
+ runnerVersion: "1.43.6",
687619
687726
  onDebug: logForDebugging,
687620
687727
  onAuth401,
687621
687728
  getTrustedDeviceToken
@@ -693297,7 +693404,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
693297
693404
  setCwd(cwd3);
693298
693405
  const server2 = new Server({
693299
693406
  name: "ur/tengu",
693300
- version: "1.43.4"
693407
+ version: "1.43.6"
693301
693408
  }, {
693302
693409
  capabilities: {
693303
693410
  tools: {}
@@ -695339,7 +695446,7 @@ async function update() {
695339
695446
  logEvent("tengu_update_check", {});
695340
695447
  const diagnostic = await getDoctorDiagnostic();
695341
695448
  const result = await checkUpgradeStatus({
695342
- currentVersion: "1.43.4",
695449
+ currentVersion: "1.43.6",
695343
695450
  packageName: UR_AGENT_PACKAGE_NAME,
695344
695451
  installationType: diagnostic.installationType,
695345
695452
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -696585,7 +696692,7 @@ ${customInstructions}` : customInstructions;
696585
696692
  }
696586
696693
  }
696587
696694
  logForDiagnosticsNoPII("info", "started", {
696588
- version: "1.43.4",
696695
+ version: "1.43.6",
696589
696696
  is_native_binary: isInBundledMode()
696590
696697
  });
696591
696698
  registerCleanup(async () => {
@@ -697371,7 +697478,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
697371
697478
  pendingHookMessages
697372
697479
  }, renderAndRun);
697373
697480
  }
697374
- }).version("1.43.4 (UR-Nexus)", "-v, --version", "Output the version number");
697481
+ }).version("1.43.6 (UR-Nexus)", "-v, --version", "Output the version number");
697375
697482
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
697376
697483
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
697377
697484
  if (canUserConfigureAdvisor()) {
@@ -698286,7 +698393,7 @@ if (false) {}
698286
698393
  async function main2() {
698287
698394
  const args = process.argv.slice(2);
698288
698395
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
698289
- console.log(`${"1.43.4"} (UR-Nexus)`);
698396
+ console.log(`${"1.43.6"} (UR-Nexus)`);
698290
698397
  return;
698291
698398
  }
698292
698399
  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.4</p>
47
+ <p class="eyebrow">Version 1.43.6</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.4",
5
+ "version": "1.43.6",
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.4",
3
+ "version": "1.43.6",
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",