ur-agent 1.84.0 → 1.84.2

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/dist/cli.js CHANGED
@@ -60524,9 +60524,9 @@ function isRecord(value) {
60524
60524
  function parseModelReasoningCapabilities(value) {
60525
60525
  if (!isRecord(value))
60526
60526
  return;
60527
- const rawSupportedEfforts = value.supported_efforts !== undefined ? value.supported_efforts : value.supportedEfforts;
60527
+ const rawSupportedEfforts = value.supported_efforts !== undefined ? value.supported_efforts : value.supportedEfforts ?? value.allowed_options;
60528
60528
  const supportedEfforts = rawSupportedEfforts === null ? null : Array.isArray(rawSupportedEfforts) ? Array.from(new Set(rawSupportedEfforts.filter((entry) => typeof entry === "string").map((entry) => entry.trim().toLowerCase()).filter(Boolean))) : undefined;
60529
- const defaultEffort = asString(value.default_effort !== undefined ? value.default_effort : value.defaultEffort)?.toLowerCase();
60529
+ const defaultEffort = asString(value.default_effort !== undefined ? value.default_effort : value.defaultEffort ?? (rawSupportedEfforts !== undefined ? value.default : undefined))?.toLowerCase();
60530
60530
  const rawAliases = isRecord(value.effort_aliases) ? value.effort_aliases : isRecord(value.effortAliases) ? value.effortAliases : undefined;
60531
60531
  const effortAliases = rawAliases ? Object.fromEntries(Object.entries(rawAliases).flatMap(([selector, wireValue]) => {
60532
60532
  const normalizedSelector = selector.trim().toLowerCase();
@@ -60621,7 +60621,7 @@ function toDiscoveredModel(entry, providerLabel) {
60621
60621
  const humanName = asString(raw.display_name) ?? asString(raw.displayName) ?? asString(raw.name);
60622
60622
  const supportedParameters = Array.isArray(raw.supported_parameters) ? raw.supported_parameters.filter((value) => typeof value === "string") : Array.isArray(raw.supportedGenerationMethods) ? raw.supportedGenerationMethods.filter((value) => typeof value === "string") : undefined;
60623
60623
  const capabilities = isRecord(raw.capabilities) ? raw.capabilities : undefined;
60624
- const parsedReasoning = parseModelReasoningCapabilities(raw.reasoning);
60624
+ const parsedReasoning = parseModelReasoningCapabilities(raw.reasoning) ?? parseModelReasoningCapabilities(capabilities && isRecord(capabilities.reasoning) ? capabilities.reasoning : undefined) ?? parseModelReasoningCapabilities(raw);
60625
60625
  const advertisesReasoning = supportedParameters?.some((parameter) => /^(?:reasoning|reasoning_effort|thinking)$/iu.test(parameter.trim()));
60626
60626
  const reasoning = parsedReasoning ?? (advertisesReasoning ? { supportsThinking: true } : undefined);
60627
60627
  const expirationDate = asEpochSeconds(raw.expiration_date);
@@ -60952,6 +60952,8 @@ function getProviderRuntimeBackend(providerId) {
60952
60952
  return "api:gemini";
60953
60953
  case "openrouter":
60954
60954
  return "api:openrouter";
60955
+ case "nvidia-nim":
60956
+ return "api:nvidia-nim";
60955
60957
  default:
60956
60958
  return `unknown:${providerId}`;
60957
60959
  }
@@ -61297,9 +61299,6 @@ function openAiCompatibleModelUrls(baseUrl) {
61297
61299
  url3.pathname = `${rootPath}/models`;
61298
61300
  return [versioned, url3.toString().replace(/\/$/, "")];
61299
61301
  }
61300
- function isLocalBaseUrl(value) {
61301
- return LOCALHOST_RE.test(value);
61302
- }
61303
61302
  async function checkEndpoint(definition, settings, adapters, result) {
61304
61303
  if (!definition.endpointKind)
61305
61304
  return;
@@ -61369,7 +61368,8 @@ async function checkEndpoint(definition, settings, adapters, result) {
61369
61368
  status: "fail",
61370
61369
  message: `${candidates[0]} returned HTTP ${lastStatus}.`
61371
61370
  });
61372
- addFailure(result, `endpoint returned HTTP ${lastStatus}`, `Start the provider server or update base_url: ur config set base_url ${definition.id} ${baseUrl}`);
61371
+ const authenticationFailure = (lastStatus === 401 || lastStatus === 403) && definition.envKey;
61372
+ addFailure(result, `endpoint returned HTTP ${lastStatus}`, authenticationFailure ? `Add or replace this endpoint's key with: ur connect ${definition.id} (or set ${definition.envKey}).` : `Start the provider server or update base_url: ur config set base_url ${definition.id} ${baseUrl}`);
61373
61373
  } else {
61374
61374
  result.checks.push({
61375
61375
  name: "endpoint",
@@ -61502,7 +61502,7 @@ async function checkSubscriptionProvider(definition, settings, adapters, result)
61502
61502
  async function checkApiProvider(definition, settings, adapters, result) {
61503
61503
  const env4 = adapters.env ?? process.env;
61504
61504
  const baseUrl = settings.baseUrl ?? definition.defaultBaseUrl;
61505
- const requiresKey = definition.id !== "openai-compatible" || !baseUrl || !isLocalBaseUrl(baseUrl);
61505
+ const requiresKey = definition.requiresApiKey === true || definition.credentialType === "api-key" && definition.endpointKind !== "openai-compatible";
61506
61506
  let apiKey = definition.envKey ? env4[definition.envKey] : undefined;
61507
61507
  let keySource = "env";
61508
61508
  if (!apiKey && (!adapters.env || adapters.getApiKey)) {
@@ -62040,7 +62040,7 @@ function modelDefinitionsFromDiscovered(models, provider) {
62040
62040
  function providerModelCacheKey(provider, settings = getInitialSettings()) {
62041
62041
  const definition = getProviderDefinition(provider);
62042
62042
  let endpoint = providerBaseUrl(provider, definition, settings);
62043
- if (definition.accessType === "api" && definition.modelDiscoveryType === "live") {
62043
+ if (definition.accessType === "api" && definition.modelDiscoveryType === "live" && !definition.endpointKind) {
62044
62044
  endpoint = apiModelsRequest(provider, "", settings).url;
62045
62045
  }
62046
62046
  if (!endpoint)
@@ -62110,12 +62110,58 @@ function providerPropsUrl(baseUrl, model) {
62110
62110
  url3.hash = "";
62111
62111
  url3.search = "";
62112
62112
  let path8 = url3.pathname.replace(/\/+$/, "");
62113
+ path8 = path8.replace(/\/(?:v\d+(?:beta)?|api\/v\d+)\/(?:chat\/completions|models|responses|props)$/i, "");
62113
62114
  path8 = path8.replace(/\/(?:v\d+(?:beta)?|api\/v\d+)$/i, "");
62114
62115
  path8 = path8.replace(/\/(?:chat\/completions|models|props)$/i, "");
62115
62116
  url3.pathname = `${path8}/props`;
62116
62117
  url3.searchParams.set("model", model);
62117
62118
  return url3.toString();
62118
62119
  }
62120
+ function vllmServerInfoUrl(baseUrl) {
62121
+ const url3 = new URL(normalizeBaseUrl(baseUrl));
62122
+ url3.hash = "";
62123
+ url3.search = "";
62124
+ let path8 = url3.pathname.replace(/\/+$/, "");
62125
+ path8 = path8.replace(/\/(?:v\d+(?:beta)?|api\/v\d+)\/(?:chat\/completions|models|responses)$/i, "");
62126
+ path8 = path8.replace(/\/(?:v\d+(?:beta)?|api\/v\d+)$/i, "");
62127
+ path8 = path8.replace(/\/(?:chat\/completions|models|responses)$/i, "");
62128
+ url3.pathname = `${path8}/server_info`;
62129
+ url3.searchParams.set("config_format", "json");
62130
+ return url3.toString();
62131
+ }
62132
+ function vllmServerAdvertisesReasoning(value) {
62133
+ if (!value || typeof value !== "object")
62134
+ return false;
62135
+ const pending = [value];
62136
+ const seen = new Set;
62137
+ while (pending.length > 0) {
62138
+ const current = pending.pop();
62139
+ if (!current || typeof current !== "object" || seen.has(current))
62140
+ continue;
62141
+ seen.add(current);
62142
+ for (const [key, nested] of Object.entries(current)) {
62143
+ const normalizedKey = key.replace(/-/g, "_").toLowerCase();
62144
+ if (normalizedKey === "reasoning_parser" && typeof nested === "string" && nested.trim() && !/^(?:none|null|false)$/i.test(nested.trim())) {
62145
+ return true;
62146
+ }
62147
+ if (normalizedKey === "enable_reasoning" && nested === true) {
62148
+ return true;
62149
+ }
62150
+ if (nested && typeof nested === "object")
62151
+ pending.push(nested);
62152
+ }
62153
+ }
62154
+ return false;
62155
+ }
62156
+ function reasoningCapabilitiesFromVllmServerInfo(value) {
62157
+ if (!vllmServerAdvertisesReasoning(value))
62158
+ return;
62159
+ return {
62160
+ supportsThinking: true,
62161
+ supportedEfforts: ["none", "low", "medium", "high"],
62162
+ effortAliases: { minimal: "none" }
62163
+ };
62164
+ }
62119
62165
  function ollamaShowUrl(baseUrl) {
62120
62166
  const url3 = new URL(endpointUrl(baseUrl, "ollama"));
62121
62167
  url3.pathname = url3.pathname.replace(/\/tags\/?$/i, "/show");
@@ -62164,10 +62210,11 @@ function reasoningCapabilitiesFromProps(value) {
62164
62210
  return explicit;
62165
62211
  const caps = root2.chat_template_caps && typeof root2.chat_template_caps === "object" ? root2.chat_template_caps : undefined;
62166
62212
  if (caps?.supports_reasoning_effort === true) {
62167
- return { supportedEfforts: null };
62213
+ return { supportsThinking: true };
62168
62214
  }
62169
62215
  if (caps?.supports_reasoning_effort === false) {
62170
- return { supportedEfforts: [] };
62216
+ const supportsThinking = caps.supports_reasoning === true || caps.supports_thinking === true || caps.supports_preserve_reasoning === true;
62217
+ return supportsThinking ? { supportsThinking: true, supportedEfforts: [] } : { supportedEfforts: [] };
62171
62218
  }
62172
62219
  return;
62173
62220
  }
@@ -62200,7 +62247,7 @@ async function ensureProviderReasoningCapabilitiesForModel(providerId, model, op
62200
62247
  const cached2 = getProviderReasoningCapabilitiesForModel(model, provider, settings);
62201
62248
  if (cached2 !== undefined)
62202
62249
  return cached2;
62203
- if (provider !== "llama.cpp" && provider !== "ollama") {
62250
+ if (provider !== "llama.cpp" && provider !== "ollama" && provider !== "vllm") {
62204
62251
  await ensureProviderModelsFresh(provider, options);
62205
62252
  return getProviderReasoningCapabilitiesForModel(model, provider, settings);
62206
62253
  }
@@ -62214,7 +62261,8 @@ async function ensureProviderReasoningCapabilitiesForModel(providerId, model, op
62214
62261
  if (!apiKey) {
62215
62262
  apiKey = await storedProviderApiKey(provider, env4, options.adapters);
62216
62263
  }
62217
- const response = await fetchImpl(provider === "ollama" ? ollamaShowUrl(baseUrl) : providerPropsUrl(baseUrl, model), {
62264
+ const capabilityUrl = provider === "ollama" ? ollamaShowUrl(baseUrl) : provider === "vllm" ? vllmServerInfoUrl(baseUrl) : providerPropsUrl(baseUrl, model);
62265
+ const response = await fetchImpl(capabilityUrl, {
62218
62266
  method: provider === "ollama" ? "POST" : "GET",
62219
62267
  signal: options.signal,
62220
62268
  ...provider === "ollama" ? {
@@ -62226,10 +62274,10 @@ async function ensureProviderReasoningCapabilitiesForModel(providerId, model, op
62226
62274
  } : apiKey ? { headers: { Authorization: `Bearer ${apiKey}` } } : {}
62227
62275
  });
62228
62276
  if (!response.ok) {
62229
- throw new Error(`${provider === "ollama" ? "Ollama /api/show" : "llama.cpp /props"} returned HTTP ${response.status}.`);
62277
+ throw new Error(`${provider === "ollama" ? "Ollama /api/show" : provider === "vllm" ? "vLLM /server_info" : "llama.cpp /props"} returned HTTP ${response.status}.`);
62230
62278
  }
62231
62279
  const body = await response.json().catch(() => null);
62232
- const reasoning = provider === "ollama" ? reasoningCapabilitiesFromOllamaShow(model, body) : reasoningCapabilitiesFromProps(body);
62280
+ const reasoning = provider === "ollama" ? reasoningCapabilitiesFromOllamaShow(model, body) : provider === "vllm" ? reasoningCapabilitiesFromVllmServerInfo(body) : reasoningCapabilitiesFromProps(body);
62233
62281
  if (reasoning) {
62234
62282
  rememberProviderModelReasoning(provider, model, reasoning, settings);
62235
62283
  }
@@ -62730,7 +62778,7 @@ function setProviderModel(providerId, modelId, options = {}) {
62730
62778
  modelSource: options.modelSource ?? "static"
62731
62779
  };
62732
62780
  }
62733
- var PROVIDER_IDS, DEFAULT_PROVIDER_ID = "ollama", LOCALHOST_RE, UR_NATIVE_PROVIDER_BOUNDARY = "UR-native runtime: UR owns provider request shaping, native tool-call parsing, native streaming, and UR-run tool permission/sandbox/verifier flow.", SUBSCRIPTION_CLI_PROVIDER_BOUNDARY = "External vendor CLI boundary: UR passes prompt text to the official CLI and receives final text output. UR-native tool calling, UR Bash/File tool execution, UR-native streaming, local command permissions, sandbox guarantees, and verifier/done-gate checks apply to UR-run tools/final UR output, not to actions the external CLI performs internally.", UNCONFIGURED_SUBSCRIPTION_PROVIDER_BOUNDARY = "Unconfigured subscription placeholder: no runtime is attached. Choose a specific subscription CLI, API, local, or server provider.", UR_NATIVE_CAPABILITIES, SUBSCRIPTION_CLI_CAPABILITIES, SUBSCRIPTION_PLACEHOLDER_CAPABILITIES, PROVIDERS, PROVIDER_ALIAS_ENTRIES, PROVIDER_ALIASES, PROVIDER_FAMILIES, EFFORT_LOW_MEDIUM_HIGH, EFFORT_LOW_MEDIUM_HIGH_XHIGH, EFFORT_LOW_MEDIUM_HIGH_MAX, EFFORT_LOW_MEDIUM_HIGH_XHIGH_MAX, OPENAI_GPT_56_EFFORTS, GEMINI_MINIMAL_TO_HIGH, PROVIDER_MODELS, cachedModelsByProvider, cachedModelsWrittenAt, modelDiscoveryCoalescer, MODEL_DISCOVERY_TIMEOUT_MS = 15000, validateProviderModelCompatibility;
62781
+ var PROVIDER_IDS, DEFAULT_PROVIDER_ID = "ollama", UR_NATIVE_PROVIDER_BOUNDARY = "UR-native runtime: UR owns provider request shaping, native tool-call parsing, native streaming, and UR-run tool permission/sandbox/verifier flow.", SUBSCRIPTION_CLI_PROVIDER_BOUNDARY = "External vendor CLI boundary: UR passes prompt text to the official CLI and receives final text output. UR-native tool calling, UR Bash/File tool execution, UR-native streaming, local command permissions, sandbox guarantees, and verifier/done-gate checks apply to UR-run tools/final UR output, not to actions the external CLI performs internally.", UNCONFIGURED_SUBSCRIPTION_PROVIDER_BOUNDARY = "Unconfigured subscription placeholder: no runtime is attached. Choose a specific subscription CLI, API, local, or server provider.", UR_NATIVE_CAPABILITIES, SUBSCRIPTION_CLI_CAPABILITIES, SUBSCRIPTION_PLACEHOLDER_CAPABILITIES, PROVIDERS, PROVIDER_ALIAS_ENTRIES, PROVIDER_ALIASES, PROVIDER_FAMILIES, EFFORT_LOW_MEDIUM_HIGH, EFFORT_LOW_MEDIUM_HIGH_XHIGH, EFFORT_LOW_MEDIUM_HIGH_MAX, EFFORT_LOW_MEDIUM_HIGH_XHIGH_MAX, OPENAI_GPT_56_EFFORTS, GEMINI_MINIMAL_TO_HIGH, NVIDIA_NONE_LOW_HIGH, NVIDIA_NONE_HIGH_MAX, NVIDIA_FULL_EFFORT_RANGE, PROVIDER_MODELS, cachedModelsByProvider, cachedModelsWrittenAt, modelDiscoveryCoalescer, MODEL_DISCOVERY_TIMEOUT_MS = 15000, validateProviderModelCompatibility;
62734
62782
  var init_providerRegistry = __esm(() => {
62735
62783
  init_execFileNoThrow();
62736
62784
  init_ollamaConfig();
@@ -62750,12 +62798,12 @@ var init_providerRegistry = __esm(() => {
62750
62798
  "anthropic-api",
62751
62799
  "gemini-api",
62752
62800
  "openrouter",
62801
+ "nvidia-nim",
62753
62802
  "codex-cli",
62754
62803
  "claude-code-cli",
62755
62804
  "gemini-cli",
62756
62805
  "antigravity-cli"
62757
62806
  ];
62758
- LOCALHOST_RE = /^(https?:\/\/)?(localhost|127\.0\.0\.1|\[::1\]|::1)(:\d+)?(\/|$)/i;
62759
62807
  UR_NATIVE_CAPABILITIES = {
62760
62808
  providerKind: "ur-native",
62761
62809
  usesExternalCli: false,
@@ -62953,6 +63001,27 @@ var init_providerRegistry = __esm(() => {
62953
63001
  envKey: "OPENROUTER_API_KEY",
62954
63002
  defaultBaseUrl: "https://openrouter.ai/api/v1"
62955
63003
  },
63004
+ "nvidia-nim": {
63005
+ id: "nvidia-nim",
63006
+ displayName: "NVIDIA NIM",
63007
+ statusBarName: "NVIDIA NIM",
63008
+ accessType: "api",
63009
+ accessTypeLabel: "hosted/server",
63010
+ credentialType: "api-key",
63011
+ modelDiscoveryType: "live",
63012
+ statusCheck: "endpoint",
63013
+ listModels: "openai-compatible-models",
63014
+ validateModel: "discovered-list",
63015
+ runtimeKind: "ur-native",
63016
+ ...UR_NATIVE_CAPABILITIES,
63017
+ authMode: "api",
63018
+ legalPath: "NVIDIA API key from build.nvidia.com or an authenticated NVIDIA NIM endpoint",
63019
+ accessPathLabel: "NVIDIA NIM OpenAI-compatible endpoint",
63020
+ envKey: "NVIDIA_API_KEY",
63021
+ requiresApiKey: true,
63022
+ defaultBaseUrl: "https://integrate.api.nvidia.com/v1",
63023
+ endpointKind: "openai-compatible"
63024
+ },
62956
63025
  "openai-compatible": {
62957
63026
  id: "openai-compatible",
62958
63027
  displayName: "OpenAI-compatible",
@@ -63110,6 +63179,10 @@ var init_providerRegistry = __esm(() => {
63110
63179
  canonical: "openrouter",
63111
63180
  aliases: ["openrouter api"]
63112
63181
  },
63182
+ {
63183
+ canonical: "nvidia-nim",
63184
+ aliases: ["nvidia", "nvidia api", "nvidia build", "nvidia nim", "nim"]
63185
+ },
63113
63186
  {
63114
63187
  canonical: "openai-compatible",
63115
63188
  aliases: ["compatible", "openai compatible", "openai compatible api"]
@@ -63150,6 +63223,7 @@ var init_providerRegistry = __esm(() => {
63150
63223
  "gemini-cli": "google",
63151
63224
  "antigravity-cli": "google",
63152
63225
  openrouter: "openai-compatible",
63226
+ "nvidia-nim": "openai-compatible",
63153
63227
  "openai-compatible": "openai-compatible",
63154
63228
  lmstudio: "openai-compatible",
63155
63229
  "llama.cpp": "openai-compatible",
@@ -63176,6 +63250,21 @@ var init_providerRegistry = __esm(() => {
63176
63250
  GEMINI_MINIMAL_TO_HIGH = {
63177
63251
  supportedEfforts: ["minimal", "low", "medium", "high"]
63178
63252
  };
63253
+ NVIDIA_NONE_LOW_HIGH = {
63254
+ supportedEfforts: ["none", "low", "high"],
63255
+ effortAliases: { minimal: "none" },
63256
+ defaultEffort: "high"
63257
+ };
63258
+ NVIDIA_NONE_HIGH_MAX = {
63259
+ supportedEfforts: ["none", "high", "max"],
63260
+ effortAliases: { minimal: "none", ultra: "max" },
63261
+ defaultEffort: "high"
63262
+ };
63263
+ NVIDIA_FULL_EFFORT_RANGE = {
63264
+ supportedEfforts: ["none", "minimal", "low", "medium", "high", "max"],
63265
+ effortAliases: { ultra: "max" },
63266
+ defaultEffort: "high"
63267
+ };
63179
63268
  PROVIDER_MODELS = {
63180
63269
  subscription: [],
63181
63270
  "codex-cli": [
@@ -63251,6 +63340,15 @@ var init_providerRegistry = __esm(() => {
63251
63340
  { id: "google/gemini-3.5-flash", displayName: "Gemini 3.5 Flash", description: "Google Gemini via OpenRouter" },
63252
63341
  { id: "google/gemini-2.5-pro", displayName: "Gemini 2.5 Pro", description: "Google Gemini via OpenRouter" }
63253
63342
  ],
63343
+ "nvidia-nim": [
63344
+ { id: "openai/gpt-oss-20b", displayName: "openai/gpt-oss-20b", description: "NVIDIA-documented reasoning contract", isDynamic: true, reasoning: { supportedEfforts: ["low", "medium", "high"], defaultEffort: "medium" } },
63345
+ { id: "openai/gpt-oss-120b", displayName: "openai/gpt-oss-120b", description: "NVIDIA-documented reasoning contract", isDynamic: true, reasoning: { supportedEfforts: ["low", "medium", "high"], defaultEffort: "medium" } },
63346
+ { id: "nvidia/nemotron-3-super-120b-a12b", displayName: "nvidia/nemotron-3-super-120b-a12b", description: "NVIDIA-documented reasoning contract", isDynamic: true, reasoning: NVIDIA_NONE_LOW_HIGH },
63347
+ { id: "nvidia/nemotron-3-ultra-550b-a55b", displayName: "nvidia/nemotron-3-ultra-550b-a55b", description: "NVIDIA-documented reasoning contract", isDynamic: true, reasoning: NVIDIA_NONE_LOW_HIGH },
63348
+ { id: "deepseek-ai/deepseek-v4-flash", displayName: "deepseek-ai/deepseek-v4-flash", description: "NVIDIA-documented reasoning contract", isDynamic: true, reasoning: NVIDIA_NONE_HIGH_MAX },
63349
+ { id: "deepseek-ai/deepseek-v4-flash-0731", displayName: "deepseek-ai/deepseek-v4-flash-0731", description: "NVIDIA-documented reasoning contract", isDynamic: true, reasoning: NVIDIA_NONE_HIGH_MAX },
63350
+ { id: "meta/muse-glimmer-30b", displayName: "meta/muse-glimmer-30b", description: "NVIDIA-documented reasoning contract", isDynamic: true, reasoning: NVIDIA_FULL_EFFORT_RANGE }
63351
+ ],
63254
63352
  "openai-compatible": [
63255
63353
  { id: "custom", displayName: "Custom Model", description: "Model name from provider endpoint", isDynamic: true }
63256
63354
  ],
@@ -231035,7 +231133,7 @@ var init_metadata = __esm(() => {
231035
231133
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
231036
231134
  WHITESPACE_REGEX2 = /\s+/;
231037
231135
  getVersionBase = memoize_default(() => {
231038
- const match = "1.84.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
231136
+ const match = "1.84.2".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
231039
231137
  return match ? match[0] : undefined;
231040
231138
  });
231041
231139
  buildEnvContext = memoize_default(async () => {
@@ -231075,7 +231173,7 @@ var init_metadata = __esm(() => {
231075
231173
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
231076
231174
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
231077
231175
  isURAiAuth: isURAISubscriber(),
231078
- version: "1.84.0",
231176
+ version: "1.84.2",
231079
231177
  versionBase: getVersionBase(),
231080
231178
  buildTime: "",
231081
231179
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -238514,7 +238612,7 @@ function getAttributionHeader(fingerprint) {
238514
238612
  if (!isAttributionHeaderEnabled()) {
238515
238613
  return "";
238516
238614
  }
238517
- const version2 = `${"1.84.0"}.${fingerprint}`;
238615
+ const version2 = `${"1.84.2"}.${fingerprint}`;
238518
238616
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
238519
238617
  const cch = "";
238520
238618
  const workload = getWorkload();
@@ -261704,6 +261802,7 @@ __export(exports_openaiCompatible, {
261704
261802
  normalizeImageBlockSource: () => normalizeImageBlockSource,
261705
261803
  mapOpenAIToolChoice: () => mapOpenAIToolChoice,
261706
261804
  mapOpenAIStopReason: () => mapOpenAIStopReason,
261805
+ imageBlocksFromContent: () => imageBlocksFromContent,
261707
261806
  imageBlockToOpenAIContentPart: () => imageBlockToOpenAIContentPart,
261708
261807
  estimateSerializedInputTokens: () => estimateSerializedInputTokens,
261709
261808
  estimateProviderInputTokens: () => estimateProviderInputTokens,
@@ -261803,7 +261902,7 @@ async function createOpenAICompatibleClient(options2) {
261803
261902
  source: "local-estimate"
261804
261903
  };
261805
261904
  };
261806
- if (providerId !== "llama.cpp" && providerId !== "vllm") {
261905
+ if (providerId !== "llama.cpp" && providerId !== "vllm" && providerId !== "nvidia-nim") {
261807
261906
  return estimate();
261808
261907
  }
261809
261908
  try {
@@ -261861,14 +261960,16 @@ function toOpenAICompatibleRequest(params, providerName = "openai-compatible") {
261861
261960
  const reasoningEffort = toOpenAIReasoningEffort(params, providerName);
261862
261961
  const openRouterWireEffort = providerName === "openrouter" && reasoningEffort ? toOpenRouterReasoningEffort(String(params.model ?? ""), reasoningEffort) : undefined;
261863
261962
  const openRouterReasoning = providerName === "openrouter" ? toOpenRouterReasoning(params, openRouterWireEffort) : undefined;
261864
- const compatibleReasoningEffort = reasoningEffort === "ultra" ? (() => {
261963
+ const compatibleReasoningEffort = reasoningEffort && providerName !== "openrouter" ? (() => {
261865
261964
  const provider = resolveProviderId(providerName);
261866
- return provider ? getProviderEffortWireValue(String(params.model ?? ""), reasoningEffort, provider) : undefined;
261867
- })() : reasoningEffort;
261965
+ const advertisedWireValue = provider ? getProviderEffortWireValue(String(params.model ?? ""), reasoningEffort, provider) : undefined;
261966
+ return advertisedWireValue ?? (reasoningEffort === "ultra" ? undefined : reasoningEffort);
261967
+ })() : undefined;
261868
261968
  const openRouterServerSearch = providerName === "openrouter" && tools.some((tool) => tool?.type === "openrouter:web_search");
261869
261969
  const toolChoice = openRouterServerSearch ? undefined : mapOpenAIToolChoice(params.tool_choice);
261870
261970
  const openRouterProviderPreferences = providerName === "openrouter" ? openRouterRoutingPreferences(params) : undefined;
261871
261971
  const openRouterSessionId = providerName === "openrouter" ? resolveOpenRouterSessionId(params) : undefined;
261972
+ const nvidiaCodingAgentTemplate = providerName === "nvidia-nim" && /^nvidia\/nemotron-3-(?:super|ultra)(?:-|$)/iu.test(String(params.model ?? "")) && tools.length > 0 ? { force_nonempty_content: true } : undefined;
261872
261973
  return {
261873
261974
  model: params.model,
261874
261975
  messages: toOpenAIMessages(params, providerName),
@@ -261884,6 +261985,9 @@ function toOpenAICompatibleRequest(params, providerName = "openai-compatible") {
261884
261985
  provider: openRouterProviderPreferences
261885
261986
  },
261886
261987
  ...openRouterSessionId && { session_id: openRouterSessionId },
261988
+ ...nvidiaCodingAgentTemplate && {
261989
+ chat_template_kwargs: nvidiaCodingAgentTemplate
261990
+ },
261887
261991
  stream: Boolean(params.stream),
261888
261992
  ...params.stream && providerName !== "openrouter" ? { stream_options: { include_usage: true } } : {},
261889
261993
  ...tools.length > 0 ? { tools } : {},
@@ -262044,14 +262148,14 @@ function contentToText(content) {
262044
262148
  return content;
262045
262149
  if (!Array.isArray(content))
262046
262150
  return "";
262047
- return content.map((block2) => {
262151
+ return content.flatMap((block2) => {
262048
262152
  if (typeof block2 === "string")
262049
- return block2;
262153
+ return [block2];
262050
262154
  if (block2?.type === "text")
262051
- return block2.text ?? "";
262155
+ return [block2.text ?? ""];
262052
262156
  if (block2?.type === "tool_result")
262053
- return contentToText(block2.content);
262054
- return "";
262157
+ return [contentToText(block2.content)];
262158
+ return [];
262055
262159
  }).join(`
262056
262160
  `);
262057
262161
  }
@@ -262071,6 +262175,18 @@ function containsImageBlock(content) {
262071
262175
  return false;
262072
262176
  });
262073
262177
  }
262178
+ function imageBlocksFromContent(content) {
262179
+ if (!Array.isArray(content))
262180
+ return [];
262181
+ return content.flatMap((block2) => {
262182
+ if (block2?.type === "image")
262183
+ return [block2];
262184
+ if (block2?.type === "tool_result") {
262185
+ return imageBlocksFromContent(block2.content);
262186
+ }
262187
+ return [];
262188
+ });
262189
+ }
262074
262190
  function normalizeImageBlockSource(block2, providerName, context) {
262075
262191
  if (block2?.type !== "image") {
262076
262192
  throw new ProviderCapabilityError(`${providerName} expected an image block in ${context}`, { providerName, capability: "multimodal_input", context, block: block2 });
@@ -262265,6 +262381,7 @@ function messageToOpenAIMessages(message, toolNamesById, providerName) {
262265
262381
  let hasStructuredContent = false;
262266
262382
  const toolCalls = [];
262267
262383
  const toolResults = [];
262384
+ const toolResultImageParts = [];
262268
262385
  const flushTextPart = () => {
262269
262386
  if (pendingTextParts.length === 0)
262270
262387
  return;
@@ -262318,9 +262435,10 @@ function messageToOpenAIMessages(message, toolNamesById, providerName) {
262318
262435
  });
262319
262436
  break;
262320
262437
  case "tool_result":
262321
- assertNoImageBlocks(block2.content, providerName, `tool_result ${block2.tool_use_id ?? index2} content`);
262438
+ const toolResultImages = imageBlocksFromContent(block2.content);
262322
262439
  const toolResultCacheControl = providerName === "openrouter" ? toOpenRouterCacheControl(block2.cache_control) : undefined;
262323
262440
  const toolResultText2 = contentToText(block2.content);
262441
+ const toolResultName = toolNamesById.get(block2.tool_use_id) ?? block2.tool_use_id ?? index2;
262324
262442
  toolResults.push({
262325
262443
  role: "tool",
262326
262444
  tool_call_id: block2.tool_use_id,
@@ -262331,6 +262449,13 @@ function messageToOpenAIMessages(message, toolNamesById, providerName) {
262331
262449
  }] : toolResultText2,
262332
262450
  ...toolNamesById.get(block2.tool_use_id) ? { name: toolNamesById.get(block2.tool_use_id) } : {}
262333
262451
  });
262452
+ if (toolResultImages.length > 0) {
262453
+ toolResultImageParts.push({
262454
+ type: "text",
262455
+ text: `Image output from tool ${toolResultName}:`
262456
+ });
262457
+ toolResultImageParts.push(...toolResultImages.map((image, imageIndex) => imageBlockToOpenAIContentPart(image, providerName, `tool_result ${block2.tool_use_id ?? index2} image ${imageIndex}`)));
262458
+ }
262334
262459
  break;
262335
262460
  default:
262336
262461
  break;
@@ -262350,13 +262475,16 @@ function messageToOpenAIMessages(message, toolNamesById, providerName) {
262350
262475
  ];
262351
262476
  }
262352
262477
  if (toolResults.length > 0) {
262353
- const result = [];
262354
- if (hasStructuredContent) {
262478
+ const result = [...toolResults];
262479
+ if (toolResultImageParts.length > 0) {
262480
+ const followupParts = hasStructuredContent ? [...multimodalParts] : text2 ? [{ type: "text", text: text2 }] : [];
262481
+ followupParts.push(...toolResultImageParts);
262482
+ result.push({ role: "user", content: followupParts });
262483
+ } else if (hasStructuredContent) {
262355
262484
  result.push({ role: message.role, content: messageContent });
262356
262485
  } else if (text2) {
262357
262486
  result.push({ role: message.role, content: text2 });
262358
262487
  }
262359
- result.push(...toolResults);
262360
262488
  return result;
262361
262489
  }
262362
262490
  return [{ role: message.role, content: messageContent }];
@@ -271819,6 +271947,7 @@ var init_types4 = __esm(() => {
271819
271947
  "anthropic-api",
271820
271948
  "gemini-api",
271821
271949
  "openrouter",
271950
+ "nvidia-nim",
271822
271951
  "openai-compatible",
271823
271952
  "ollama",
271824
271953
  "lmstudio",
@@ -304518,7 +304647,7 @@ function getTelemetryAttributes() {
304518
304647
  attributes["session.id"] = sessionId;
304519
304648
  }
304520
304649
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
304521
- attributes["app.version"] = "1.84.0";
304650
+ attributes["app.version"] = "1.84.2";
304522
304651
  }
304523
304652
  const oauthAccount = getOauthAccountInfo();
304524
304653
  if (oauthAccount) {
@@ -307549,7 +307678,7 @@ var require_src3 = __commonJS((exports) => {
307549
307678
  function getInstruments() {
307550
307679
  if (instruments)
307551
307680
  return instruments;
307552
- const meter = import_api2.metrics.getMeter("ur-agent.gen_ai", "1.84.0");
307681
+ const meter = import_api2.metrics.getMeter("ur-agent.gen_ai", "1.84.2");
307553
307682
  instruments = {
307554
307683
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
307555
307684
  description: "GenAI operation duration.",
@@ -307647,7 +307776,7 @@ function genAiAgentAttributes() {
307647
307776
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
307648
307777
  "gen_ai.provider.name": "ur",
307649
307778
  "gen_ai.agent.name": "UR-Nexus",
307650
- "gen_ai.agent.version": "1.84.0"
307779
+ "gen_ai.agent.version": "1.84.2"
307651
307780
  };
307652
307781
  }
307653
307782
  function genAiWorkflowAttributes(workflowName, workflowRunId) {
@@ -307668,7 +307797,7 @@ function genAiWorkflowAttributes(workflowName, workflowRunId) {
307668
307797
  function startGenAiWorkflowSpan(workflowName, workflowRunId) {
307669
307798
  const attributes = genAiWorkflowAttributes(workflowName, workflowRunId);
307670
307799
  const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
307671
- return import_api2.trace.getTracer("ur-agent.gen_ai", "1.84.0").startSpan(name, { kind: import_api2.SpanKind.INTERNAL, attributes });
307800
+ return import_api2.trace.getTracer("ur-agent.gen_ai", "1.84.2").startSpan(name, { kind: import_api2.SpanKind.INTERNAL, attributes });
307672
307801
  }
307673
307802
  function endGenAiWorkflowSpan(span, options2 = {}) {
307674
307803
  try {
@@ -307706,7 +307835,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
307706
307835
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
307707
307836
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
307708
307837
  }
307709
- return import_api2.trace.getTracer("ur-agent.gen_ai", "1.84.0").startSpan(operation, { kind: import_api2.SpanKind.INTERNAL, attributes });
307838
+ return import_api2.trace.getTracer("ur-agent.gen_ai", "1.84.2").startSpan(operation, { kind: import_api2.SpanKind.INTERNAL, attributes });
307710
307839
  }
307711
307840
  function endGenAiMemorySpan(span, options2 = {}) {
307712
307841
  try {
@@ -322113,7 +322242,7 @@ async function createRuntime() {
322113
322242
  bootstrapTelemetry();
322114
322243
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
322115
322244
  [import_semantic_conventions6.ATTR_SERVICE_NAME]: "ur-agent",
322116
- [import_semantic_conventions6.ATTR_SERVICE_VERSION]: "1.84.0"
322245
+ [import_semantic_conventions6.ATTR_SERVICE_VERSION]: "1.84.2"
322117
322246
  }));
322118
322247
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
322119
322248
  resource,
@@ -322146,11 +322275,11 @@ async function createRuntime() {
322146
322275
  setMeterProvider(meterProvider);
322147
322276
  setLoggerProvider(loggerProvider);
322148
322277
  if (meterProvider) {
322149
- const meter = meterProvider.getMeter("ur-agent", "1.84.0");
322278
+ const meter = meterProvider.getMeter("ur-agent", "1.84.2");
322150
322279
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
322151
322280
  }
322152
322281
  if (loggerProvider) {
322153
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.84.0"));
322282
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.84.2"));
322154
322283
  }
322155
322284
  if (!cleanupRegistered4) {
322156
322285
  cleanupRegistered4 = true;
@@ -322699,7 +322828,7 @@ function isAnyTracingEnabled() {
322699
322828
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
322700
322829
  }
322701
322830
  function getTracer() {
322702
- return import_api32.trace.getTracer("ur-agent.gen_ai", "1.84.0");
322831
+ return import_api32.trace.getTracer("ur-agent.gen_ai", "1.84.2");
322703
322832
  }
322704
322833
  function createSpanAttributes(spanType, customAttributes = {}) {
322705
322834
  const baseAttributes = getTelemetryAttributes();
@@ -334650,7 +334779,7 @@ function computeFingerprint(messageText2, version2) {
334650
334779
  }
334651
334780
  function computeFingerprintFromMessages(messages) {
334652
334781
  const firstMessageText = extractFirstMessageText(messages);
334653
- return computeFingerprint(firstMessageText, "1.84.0");
334782
+ return computeFingerprint(firstMessageText, "1.84.2");
334654
334783
  }
334655
334784
  var FINGERPRINT_SALT = "59cf53e54c78";
334656
334785
  var init_fingerprint = () => {};
@@ -334692,7 +334821,7 @@ async function sideQuery(opts) {
334692
334821
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
334693
334822
  }
334694
334823
  const messageText2 = extractFirstUserMessageText(messages);
334695
- const fingerprint = computeFingerprint(messageText2, "1.84.0");
334824
+ const fingerprint = computeFingerprint(messageText2, "1.84.2");
334696
334825
  const attributionHeader = getAttributionHeader(fingerprint);
334697
334826
  const systemBlocks = [
334698
334827
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -336799,7 +336928,7 @@ var init_user = __esm(() => {
336799
336928
  deviceId,
336800
336929
  sessionId: getSessionId(),
336801
336930
  email: getEmail(),
336802
- appVersion: "1.84.0",
336931
+ appVersion: "1.84.2",
336803
336932
  platform: getHostPlatformForAnalytics(),
336804
336933
  organizationUuid,
336805
336934
  accountUuid,
@@ -337559,7 +337688,7 @@ var init_growthbook_experiment_event = __esm(() => {
337559
337688
 
337560
337689
  // src/utils/userAgent.ts
337561
337690
  function getURCodeUserAgent() {
337562
- return `ur/${"1.84.0"}`;
337691
+ return `ur/${"1.84.2"}`;
337563
337692
  }
337564
337693
 
337565
337694
  // src/services/analytics/firstPartyEventLoggingExporter.ts
@@ -338215,7 +338344,7 @@ function initialize1PEventLogging() {
338215
338344
  const platform4 = getPlatform();
338216
338345
  const attributes = {
338217
338346
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur",
338218
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.84.0"
338347
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.84.2"
338219
338348
  };
338220
338349
  if (platform4 === "wsl") {
338221
338350
  const wslVersion = getWslVersion();
@@ -338243,7 +338372,7 @@ function initialize1PEventLogging() {
338243
338372
  })
338244
338373
  ]
338245
338374
  });
338246
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.84.0");
338375
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.84.2");
338247
338376
  }
338248
338377
  async function reinitialize1PEventLoggingIfConfigChanged() {
338249
338378
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -339801,6 +339930,7 @@ var init_managedEnvConstants = __esm(() => {
339801
339930
  "AWS_BEARER_TOKEN_BEDROCK",
339802
339931
  "URHQ_FOUNDRY_API_KEY",
339803
339932
  "OPENAI_COMPATIBLE_API_KEY",
339933
+ "NVIDIA_API_KEY",
339804
339934
  "UR_CODE_SKIP_BEDROCK_AUTH",
339805
339935
  "UR_CODE_SKIP_VERTEX_AUTH",
339806
339936
  "UR_CODE_SKIP_FOUNDRY_AUTH",
@@ -341544,9 +341674,9 @@ async function assertMinVersion() {
341544
341674
  if (false) {}
341545
341675
  try {
341546
341676
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
341547
- if (versionConfig.minVersion && lt("1.84.0", versionConfig.minVersion)) {
341677
+ if (versionConfig.minVersion && lt("1.84.2", versionConfig.minVersion)) {
341548
341678
  console.error(`
341549
- It looks like your version of UR (${"1.84.0"}) needs an update.
341679
+ It looks like your version of UR (${"1.84.2"}) needs an update.
341550
341680
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
341551
341681
 
341552
341682
  To update, please run:
@@ -341762,7 +341892,7 @@ async function installGlobalPackage(specificVersion) {
341762
341892
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
341763
341893
  logEvent("tengu_auto_updater_lock_contention", {
341764
341894
  pid: process.pid,
341765
- currentVersion: "1.84.0"
341895
+ currentVersion: "1.84.2"
341766
341896
  });
341767
341897
  return "in_progress";
341768
341898
  }
@@ -341771,7 +341901,7 @@ async function installGlobalPackage(specificVersion) {
341771
341901
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
341772
341902
  logError2(new Error("Windows NPM detected in WSL environment"));
341773
341903
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
341774
- currentVersion: "1.84.0"
341904
+ currentVersion: "1.84.2"
341775
341905
  });
341776
341906
  console.error(`
341777
341907
  Error: Windows NPM detected in WSL
@@ -342306,7 +342436,7 @@ function detectLinuxGlobPatternWarnings() {
342306
342436
  }
342307
342437
  async function getDoctorDiagnostic() {
342308
342438
  const installationType = await getCurrentInstallationType();
342309
- const version2 = typeof MACRO !== "undefined" ? "1.84.0" : "unknown";
342439
+ const version2 = typeof MACRO !== "undefined" ? "1.84.2" : "unknown";
342310
342440
  const installationPath = await getInstallationPath();
342311
342441
  const invokedBinary = getInvokedBinary();
342312
342442
  const multipleInstallations = await detectMultipleInstallations();
@@ -343373,7 +343503,7 @@ function getInstallationEnv() {
343373
343503
  return;
343374
343504
  }
343375
343505
  function getURCodeVersion() {
343376
- return "1.84.0";
343506
+ return "1.84.2";
343377
343507
  }
343378
343508
  async function getInstalledVSCodeExtensionVersion(command) {
343379
343509
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -344854,8 +344984,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
344854
344984
  const maxVersion = await getMaxVersion();
344855
344985
  if (maxVersion && gt(version2, maxVersion)) {
344856
344986
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
344857
- if (gte("1.84.0", maxVersion)) {
344858
- logForDebugging(`Native installer: current version ${"1.84.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
344987
+ if (gte("1.84.2", maxVersion)) {
344988
+ logForDebugging(`Native installer: current version ${"1.84.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
344859
344989
  logEvent("tengu_native_update_skipped_max_version", {
344860
344990
  latency_ms: Date.now() - startTime,
344861
344991
  max_version: maxVersion,
@@ -344866,7 +344996,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
344866
344996
  version2 = maxVersion;
344867
344997
  }
344868
344998
  }
344869
- if (!forceReinstall && version2 === "1.84.0" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
344999
+ if (!forceReinstall && version2 === "1.84.2" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
344870
345000
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
344871
345001
  logEvent("tengu_native_update_complete", {
344872
345002
  latency_ms: Date.now() - startTime,
@@ -382585,6 +382715,108 @@ var init_tmuxSocket = __esm(() => {
382585
382715
  init_platform();
382586
382716
  });
382587
382717
 
382718
+ // src/utils/shell/portableTimeout.ts
382719
+ function getPortableTimeoutEnvironment(platform5 = getPlatform()) {
382720
+ return platform5 === "macos" ? { [PORTABLE_TIMEOUT_RUNNER_ENV]: PORTABLE_TIMEOUT_RUNNER_BASE64 } : {};
382721
+ }
382722
+ function getPortableTimeoutCompatibilityCommand(platform5 = getPlatform(), executable = process.execPath) {
382723
+ if (platform5 !== "macos")
382724
+ return null;
382725
+ const launcher = `import("data:text/javascript;base64,"+process.env.${PORTABLE_TIMEOUT_RUNNER_ENV})`;
382726
+ const runner2 = quote2([
382727
+ executable,
382728
+ "--input-type=module",
382729
+ "-e",
382730
+ launcher
382731
+ ]);
382732
+ return `if ! command -v timeout >/dev/null 2>&1; then if command -v gtimeout >/dev/null 2>&1; then timeout() { command gtimeout "$@"; }; else timeout() { command ${runner2} "$@"; }; fi; fi`;
382733
+ }
382734
+ var PORTABLE_TIMEOUT_RUNNER, PORTABLE_TIMEOUT_RUNNER_ENV = "UR_CODE_PORTABLE_TIMEOUT_RUNNER", PORTABLE_TIMEOUT_RUNNER_BASE64;
382735
+ var init_portableTimeout = __esm(() => {
382736
+ init_platform();
382737
+ init_shellQuote();
382738
+ PORTABLE_TIMEOUT_RUNNER = String.raw`
382739
+ import { spawn } from 'node:child_process';
382740
+ import { constants } from 'node:os';
382741
+ let args = process.argv.slice(1);
382742
+ let preserve = false;
382743
+ let verbose = false;
382744
+ let signal = 'SIGTERM';
382745
+ let killAfter = null;
382746
+ const durationMs = value => {
382747
+ const match = /^(\d+(?:\.\d+)?)([smhd]?)$/.exec(value || '');
382748
+ if (!match) return null;
382749
+ const scale = { '': 1000, s: 1000, m: 60000, h: 3600000, d: 86400000 }[match[2]];
382750
+ const result = Number(match[1]) * scale;
382751
+ return Number.isFinite(result) ? Math.min(result, 2147483647) : null;
382752
+ };
382753
+ const takeValue = (arg, longName, shortName) => {
382754
+ if (arg === longName || arg === shortName) return args.shift();
382755
+ if (arg.startsWith(longName + '=')) return arg.slice(longName.length + 1);
382756
+ if (arg.startsWith(shortName) && arg.length > shortName.length) return arg.slice(shortName.length);
382757
+ return undefined;
382758
+ };
382759
+ while (args.length && args[0].startsWith('-') && args[0] !== '-') {
382760
+ const arg = args.shift();
382761
+ if (arg === '--') break;
382762
+ if (arg === '--foreground') continue;
382763
+ if (arg === '--preserve-status') { preserve = true; continue; }
382764
+ if (arg === '--verbose' || arg === '-v') { verbose = true; continue; }
382765
+ const killValue = takeValue(arg, '--kill-after', '-k');
382766
+ if (killValue !== undefined) {
382767
+ killAfter = durationMs(killValue);
382768
+ if (killAfter === null) { console.error('timeout: invalid --kill-after value'); process.exit(125); }
382769
+ continue;
382770
+ }
382771
+ const signalValue = takeValue(arg, '--signal', '-s');
382772
+ if (signalValue !== undefined) {
382773
+ const normalizedSignal = signalValue.toUpperCase();
382774
+ signal = /^\d+$/.test(signalValue) ? Number(signalValue) : normalizedSignal.startsWith('SIG') ? normalizedSignal : 'SIG' + normalizedSignal;
382775
+ continue;
382776
+ }
382777
+ console.error('timeout: unsupported option ' + arg);
382778
+ process.exit(125);
382779
+ }
382780
+ const limit = durationMs(args.shift());
382781
+ const command = args.shift();
382782
+ if (limit === null || !command) {
382783
+ console.error('timeout: expected a duration and command');
382784
+ process.exit(125);
382785
+ }
382786
+ const child = spawn(command, args, { stdio: 'inherit', detached: true });
382787
+ let expired = false;
382788
+ let killTimer;
382789
+ const send = requestedSignal => {
382790
+ if (!child.pid) return;
382791
+ try { process.kill(-child.pid, requestedSignal); }
382792
+ catch { try { child.kill(requestedSignal); } catch {} }
382793
+ };
382794
+ const timer = setTimeout(() => {
382795
+ expired = true;
382796
+ if (verbose) console.error('timeout: sending signal ' + signal + ' to command ' + command);
382797
+ send(signal);
382798
+ if (killAfter !== null) killTimer = setTimeout(() => send('SIGKILL'), killAfter);
382799
+ }, limit);
382800
+ for (const parentSignal of ['SIGINT', 'SIGHUP', 'SIGTERM']) {
382801
+ process.on(parentSignal, () => send(parentSignal));
382802
+ }
382803
+ child.on('error', error => {
382804
+ clearTimeout(timer);
382805
+ if (killTimer) clearTimeout(killTimer);
382806
+ console.error('timeout: ' + error.message);
382807
+ process.exitCode = error.code === 'ENOENT' ? 127 : 126;
382808
+ });
382809
+ child.on('exit', (code, childSignal) => {
382810
+ clearTimeout(timer);
382811
+ if (killTimer) clearTimeout(killTimer);
382812
+ if (expired && !preserve) { process.exitCode = 124; return; }
382813
+ if (code !== null) { process.exitCode = code; return; }
382814
+ process.exitCode = 128 + (constants.signals[childSignal] || 1);
382815
+ });
382816
+ `.trim();
382817
+ PORTABLE_TIMEOUT_RUNNER_BASE64 = Buffer.from(PORTABLE_TIMEOUT_RUNNER).toString("base64");
382818
+ });
382819
+
382588
382820
  // src/utils/shell/bashProvider.ts
382589
382821
  import { access as access5 } from "fs/promises";
382590
382822
  import { tmpdir as osTmpdir } from "os";
@@ -382659,6 +382891,10 @@ async function createBashShellProvider(shellPath, options2) {
382659
382891
  if (disableZshNomatchCmd) {
382660
382892
  commandParts.push(disableZshNomatchCmd);
382661
382893
  }
382894
+ const portableTimeoutCmd = getPortableTimeoutCompatibilityCommand();
382895
+ if (portableTimeoutCmd) {
382896
+ commandParts.push(portableTimeoutCmd);
382897
+ }
382662
382898
  commandParts.push(`trap 'pwd -P >| ${quote2([shellCwdFilePath])} 2>/dev/null || true' EXIT`);
382663
382899
  commandParts.push(`eval ${quotedCommand}`);
382664
382900
  let commandString = commandParts.join(" && ");
@@ -382681,6 +382917,7 @@ async function createBashShellProvider(shellPath, options2) {
382681
382917
  }
382682
382918
  const urTmuxEnv = getURTmuxEnv();
382683
382919
  const env4 = {};
382920
+ Object.assign(env4, getPortableTimeoutEnvironment());
382684
382921
  if (urTmuxEnv) {
382685
382922
  env4.TMUX = urTmuxEnv;
382686
382923
  }
@@ -382712,6 +382949,7 @@ var init_bashProvider = __esm(() => {
382712
382949
  init_sessionEnvVars();
382713
382950
  init_tmuxSocket();
382714
382951
  init_windowsPaths();
382952
+ init_portableTimeout();
382715
382953
  });
382716
382954
 
382717
382955
  // src/utils/shell/powershellDetection.ts
@@ -408322,6 +408560,7 @@ function getSimplePrompt() {
408322
408560
  'Always quote file paths that contain spaces with double quotes in your command (e.g., cd "path with spaces/file.txt")',
408323
408561
  "Try to maintain your current working directory throughout the session by using absolute paths and avoiding usage of `cd`. You may use `cd` if the User explicitly requests it.",
408324
408562
  `You may specify an optional timeout in milliseconds (up to ${getMaxTimeoutMs2()}ms / ${getMaxTimeoutMs2() / 60000} minutes). By default, your command will timeout after ${getDefaultTimeoutMs2()}ms (${getDefaultTimeoutMs2() / 60000} minutes).`,
408563
+ "Prefer this tool\u2019s `timeout` parameter over wrapping a command with the GNU `timeout` executable. UR supplies a compatible wrapper on macOS when a command genuinely needs an inner deadline.",
408325
408564
  ...backgroundNote !== null ? [backgroundNote] : [],
408326
408565
  "When issuing multiple commands:",
408327
408566
  multipleCommandsSubitems,
@@ -438621,7 +438860,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
438621
438860
  const client = new Client({
438622
438861
  name: "ur",
438623
438862
  title: "UR",
438624
- version: "1.84.0",
438863
+ version: "1.84.2",
438625
438864
  description: "UR-Nexus autonomous engineering workflow engine",
438626
438865
  websiteUrl: PRODUCT_URL
438627
438866
  }, {
@@ -438978,7 +439217,7 @@ var init_client2 = __esm(() => {
438978
439217
  const client = new Client({
438979
439218
  name: "ur",
438980
439219
  title: "UR",
438981
- version: "1.84.0",
439220
+ version: "1.84.2",
438982
439221
  description: "UR-Nexus autonomous engineering workflow engine",
438983
439222
  websiteUrl: PRODUCT_URL
438984
439223
  }, {
@@ -449849,7 +450088,7 @@ function Feedback({
449849
450088
  platform: env2.platform,
449850
450089
  gitRepo: envInfo.isGit,
449851
450090
  terminal: env2.terminal,
449852
- version: "1.84.0",
450091
+ version: "1.84.2",
449853
450092
  transcript: normalizeMessagesForAPI(messages),
449854
450093
  errors: sanitizedErrors,
449855
450094
  lastApiRequest: getLastAPIRequest(),
@@ -450039,7 +450278,7 @@ function Feedback({
450039
450278
  ", ",
450040
450279
  env2.terminal,
450041
450280
  ", v",
450042
- "1.84.0"
450281
+ "1.84.2"
450043
450282
  ]
450044
450283
  }, undefined, true, undefined, this)
450045
450284
  ]
@@ -450145,7 +450384,7 @@ ${sanitizedDescription}
450145
450384
  ` + `**Environment Info**
450146
450385
  ` + `- Platform: ${env2.platform}
450147
450386
  ` + `- Terminal: ${env2.terminal}
450148
- ` + `- Version: ${"1.84.0"}
450387
+ ` + `- Version: ${"1.84.2"}
450149
450388
  ` + `- Feedback ID: ${feedbackId}
450150
450389
  ` + `
450151
450390
  **Errors**
@@ -453255,7 +453494,7 @@ function buildPrimarySection() {
453255
453494
  }, undefined, false, undefined, this);
453256
453495
  return [{
453257
453496
  label: "Version",
453258
- value: "1.84.0"
453497
+ value: "1.84.2"
453259
453498
  }, {
453260
453499
  label: "Session name",
453261
453500
  value: nameValue
@@ -454219,7 +454458,8 @@ function ModelPicker({
454219
454458
  const focusedEffortLevels = focusedModel ? getSupportedEffortLevelsForModel(focusedModel, currentProvider) : [];
454220
454459
  const focusedEffortLevelLabels = focusedModel ? getSupportedEffortLevelLabelsForModel(focusedModel, currentProvider) : [];
454221
454460
  const focusedSupportsEffort = focusedModel ? modelSupportsEffort(focusedModel, currentProvider) : false;
454222
- const focusedSupportsThinking = focusedModel ? modelSupportsThinking(focusedModel, currentProvider) && providerSupportsThinkingToggle(currentProvider) : false;
454461
+ const focusedAdvertisesThinking = focusedModel ? modelSupportsThinking(focusedModel, currentProvider) : false;
454462
+ const focusedSupportsThinking = focusedModel ? focusedAdvertisesThinking && providerSupportsThinkingToggle(currentProvider) : false;
454223
454463
  const focusedDefaultEffort = getDefaultEffortLevelForOption(focusedValue, currentProvider);
454224
454464
  const displayEffort = focusedModel ? resolveProviderEffortLevel(focusedModel, effort ?? focusedDefaultEffort, currentProvider) ?? focusedDefaultEffort : focusedDefaultEffort;
454225
454465
  const handleFocus = (value) => {
@@ -454471,7 +454711,7 @@ function ModelPicker({
454471
454711
  effort: undefined
454472
454712
  }, undefined, false, undefined, this),
454473
454713
  " ",
454474
- focusedSupportsThinking ? "No graded effort \xB7 provider offers on/off thinking" : "Effort not supported",
454714
+ focusedSupportsThinking ? "Thinking supported \xB7 no model-specific graded ladder advertised \xB7 using provider-native on/off" : focusedAdvertisesThinking ? "Thinking supported \xB7 this runtime advertises no controllable graded ladder or on/off mapping" : "Effort not supported",
454475
454715
  focusedModelName ? ` for ${focusedModelName}` : "",
454476
454716
  effortCapabilityLoading ? " \xB7 checking provider\u2026" : ""
454477
454717
  ]
@@ -454556,7 +454796,7 @@ function getAdaptiveModelVisibleCount(optionCount, terminalRows) {
454556
454796
  return Math.min(Math.floor(optionCount), availableRows);
454557
454797
  }
454558
454798
  function providerNeedsFocusedEffortProbe(provider, focusedModel) {
454559
- return (provider === "llama.cpp" || provider === "ollama") && Boolean(focusedModel);
454799
+ return (provider === "llama.cpp" || provider === "ollama" || provider === "vllm") && Boolean(focusedModel);
454560
454800
  }
454561
454801
  function resolveOptionModel(value) {
454562
454802
  if (!value)
@@ -456768,7 +457008,7 @@ function Config({
456768
457008
  }
456769
457009
  }, undefined, false, undefined, this)
456770
457010
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime176.jsxDEV(ChannelDowngradeDialog, {
456771
- currentVersion: "1.84.0",
457011
+ currentVersion: "1.84.2",
456772
457012
  onChoice: (choice) => {
456773
457013
  setShowSubmenu(null);
456774
457014
  setTabsHidden(false);
@@ -456780,7 +457020,7 @@ function Config({
456780
457020
  autoUpdatesChannel: "stable"
456781
457021
  };
456782
457022
  if (choice === "stay") {
456783
- newSettings.minimumVersion = "1.84.0";
457023
+ newSettings.minimumVersion = "1.84.2";
456784
457024
  }
456785
457025
  updateSettingsForSource("userSettings", newSettings);
456786
457026
  setSettingsData((prev_27) => ({
@@ -465097,7 +465337,7 @@ function HelpV2(t0) {
465097
465337
  let t6;
465098
465338
  if ($2[31] !== tabs) {
465099
465339
  t6 = /* @__PURE__ */ jsx_dev_runtime203.jsxDEV(Tabs, {
465100
- title: `UR v${"1.84.0"}`,
465340
+ title: `UR v${"1.84.2"}`,
465101
465341
  color: "professionalBlue",
465102
465342
  defaultTab: "general",
465103
465343
  children: tabs
@@ -466031,7 +466271,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
466031
466271
  async function handleInitialize(options2) {
466032
466272
  return {
466033
466273
  name: "UR",
466034
- version: "1.84.0",
466274
+ version: "1.84.2",
466035
466275
  protocolVersion: "0.1.0",
466036
466276
  workspaceRoot: options2.cwd,
466037
466277
  capabilities: {
@@ -483164,7 +483404,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
483164
483404
  return [];
483165
483405
  }
483166
483406
  }
483167
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.84.0") {
483407
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.84.2") {
483168
483408
  if (process.env.USER_TYPE === "ant") {
483169
483409
  const changelog = "";
483170
483410
  if (changelog) {
@@ -483191,7 +483431,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.84.0")
483191
483431
  releaseNotes
483192
483432
  };
483193
483433
  }
483194
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.84.0") {
483434
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.84.2") {
483195
483435
  if (process.env.USER_TYPE === "ant") {
483196
483436
  const changelog = "";
483197
483437
  if (changelog) {
@@ -486099,7 +486339,7 @@ function getRecentActivitySync() {
486099
486339
  return cachedActivity;
486100
486340
  }
486101
486341
  function getLogoDisplayData() {
486102
- const version2 = process.env.DEMO_VERSION ?? "1.84.0";
486342
+ const version2 = process.env.DEMO_VERSION ?? "1.84.2";
486103
486343
  const serverUrl = getDirectConnectServerUrl();
486104
486344
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
486105
486345
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -486987,7 +487227,7 @@ function LogoV2() {
486987
487227
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
486988
487228
  t2 = () => {
486989
487229
  const currentConfig = getGlobalConfig();
486990
- if (currentConfig.lastReleaseNotesSeen === "1.84.0") {
487230
+ if (currentConfig.lastReleaseNotesSeen === "1.84.2") {
486991
487231
  return;
486992
487232
  }
486993
487233
  saveGlobalConfig(_temp327);
@@ -487675,12 +487915,12 @@ function LogoV2() {
487675
487915
  return t41;
487676
487916
  }
487677
487917
  function _temp327(current) {
487678
- if (current.lastReleaseNotesSeen === "1.84.0") {
487918
+ if (current.lastReleaseNotesSeen === "1.84.2") {
487679
487919
  return current;
487680
487920
  }
487681
487921
  return {
487682
487922
  ...current,
487683
- lastReleaseNotesSeen: "1.84.0"
487923
+ lastReleaseNotesSeen: "1.84.2"
487684
487924
  };
487685
487925
  }
487686
487926
  function _temp240(s_0) {
@@ -503773,7 +504013,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
503773
504013
  if (spec.name !== specName) {
503774
504014
  throw new Error("Agentic CI workflow spec name does not match");
503775
504015
  }
503776
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.84.0" : "1.84.0");
504016
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.84.2" : "1.84.2");
503777
504017
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
503778
504018
  throw new Error("invalid ur-agent package version");
503779
504019
  }
@@ -504107,7 +504347,7 @@ var init_agenticCi = __esm(() => {
504107
504347
  KEYWORD_RE = /^[A-Za-z0-9@/_+#:.-]{1,64}$/;
504108
504348
  SECRET_NAME_RE = /(?:TOKEN|SECRET|PASSWORD|PASSWD|API_KEY|PRIVATE_KEY|CREDENTIAL|AUTH)/i;
504109
504349
  CHILD_FORBIDDEN_ENV_RE = /^(?:GITHUB_TOKEN|GH_TOKEN|ACTIONS_ID_TOKEN_REQUEST_TOKEN|ACTIONS_ID_TOKEN_REQUEST_URL|ACTIONS_RUNTIME_TOKEN|ACTIONS_RUNTIME_URL|SSH_AUTH_SOCK)$/;
504110
- HEADLESS_PROVIDER_SECRET_RE = /^(?:URHQ_API_KEY|UR_CODE_OAUTH_TOKEN|URHQ_AUTH_TOKEN|URHQ_FOUNDRY_API_KEY|OLLAMA_API_KEY|OPENAI_API_KEY|ANTHROPIC_API_KEY|GEMINI_API_KEY|OPENROUTER_API_KEY|OPENAI_COMPATIBLE_API_KEY|LMSTUDIO_API_KEY|LLAMA_CPP_API_KEY|VLLM_API_KEY|UNSLOTH_API_KEY|AWS_ACCESS_KEY_ID|AWS_SECRET_ACCESS_KEY|AWS_SESSION_TOKEN|AWS_BEARER_TOKEN_BEDROCK|AZURE_CLIENT_SECRET|AZURE_CLIENT_CERTIFICATE_PATH|GOOGLE_APPLICATION_CREDENTIALS)$/;
504350
+ HEADLESS_PROVIDER_SECRET_RE = /^(?:URHQ_API_KEY|UR_CODE_OAUTH_TOKEN|URHQ_AUTH_TOKEN|URHQ_FOUNDRY_API_KEY|OLLAMA_API_KEY|OPENAI_API_KEY|ANTHROPIC_API_KEY|GEMINI_API_KEY|OPENROUTER_API_KEY|OPENAI_COMPATIBLE_API_KEY|NVIDIA_API_KEY|LMSTUDIO_API_KEY|LLAMA_CPP_API_KEY|VLLM_API_KEY|UNSLOTH_API_KEY|AWS_ACCESS_KEY_ID|AWS_SECRET_ACCESS_KEY|AWS_SESSION_TOKEN|AWS_BEARER_TOKEN_BEDROCK|AZURE_CLIENT_SECRET|AZURE_CLIENT_CERTIFICATE_PATH|GOOGLE_APPLICATION_CREDENTIALS)$/;
504111
504351
  });
504112
504352
 
504113
504353
  // src/services/agents/featureScaffolds.ts
@@ -504769,7 +505009,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
504769
505009
  path: ".github/workflows/ur.yml",
504770
505010
  root: "project",
504771
505011
  content: compileAgenticCiWorkflow("default", {
504772
- packageVersion: typeof MACRO !== "undefined" ? "1.84.0" : "1.84.0"
505012
+ packageVersion: typeof MACRO !== "undefined" ? "1.84.2" : "1.84.2"
504773
505013
  })
504774
505014
  },
504775
505015
  {
@@ -504832,7 +505072,7 @@ function value(tokens, flag) {
504832
505072
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
504833
505073
  }
504834
505074
  function cliVersion() {
504835
- return typeof MACRO !== "undefined" ? "1.84.0" : "1.84.0";
505075
+ return typeof MACRO !== "undefined" ? "1.84.2" : "1.84.2";
504836
505076
  }
504837
505077
  function workflowPath(cwd2) {
504838
505078
  return join156(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -505741,7 +505981,7 @@ function formatA2AV1AgentCard(options2 = {}, pretty = true) {
505741
505981
  var urVersion, researchSnapshotDate = "2026-08-10", coverage2, priorityRoadmap;
505742
505982
  var init_trends = __esm(() => {
505743
505983
  init_a2aCardSignature();
505744
- urVersion = typeof MACRO !== "undefined" ? "1.84.0" : "1.84.0";
505984
+ urVersion = typeof MACRO !== "undefined" ? "1.84.2" : "1.84.2";
505745
505985
  coverage2 = [
505746
505986
  {
505747
505987
  id: "local-runtime",
@@ -511474,7 +511714,7 @@ function createAcpStdioApp(deps) {
511474
511714
  }
511475
511715
  },
511476
511716
  authMethods: [],
511477
- agentInfo: { name: "UR-Nexus", version: "1.84.0" }
511717
+ agentInfo: { name: "UR-Nexus", version: "1.84.2" }
511478
511718
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
511479
511719
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
511480
511720
  await runtime2.announce({
@@ -511571,7 +511811,7 @@ function createAcpStdioAgent(deps) {
511571
511811
  }
511572
511812
  },
511573
511813
  authMethods: [],
511574
- agentInfo: { name: "UR-Nexus", version: "1.84.0" }
511814
+ agentInfo: { name: "UR-Nexus", version: "1.84.2" }
511575
511815
  });
511576
511816
  return;
511577
511817
  case "authenticate":
@@ -725574,7 +725814,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
725574
725814
  smapsRollup,
725575
725815
  platform: process.platform,
725576
725816
  nodeVersion: process.version,
725577
- ccVersion: "1.84.0"
725817
+ ccVersion: "1.84.2"
725578
725818
  };
725579
725819
  }
725580
725820
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -726163,7 +726403,7 @@ var init_bridge_kick = __esm(() => {
726163
726403
  var call153 = async () => {
726164
726404
  return {
726165
726405
  type: "text",
726166
- value: "1.84.0"
726406
+ value: "1.84.2"
726167
726407
  };
726168
726408
  }, version2, version_default;
726169
726409
  var init_version = __esm(() => {
@@ -729269,7 +729509,7 @@ function ProviderFirstModelPicker({
729269
729509
  }, [selectedProvider, modelReloadToken]);
729270
729510
  import_react183.useEffect(() => {
729271
729511
  const capabilityProvider = selectedProvider?.value;
729272
- if (capabilityProvider !== "llama.cpp" && capabilityProvider !== "ollama" || !focusedModelValue) {
729512
+ if (capabilityProvider !== "llama.cpp" && capabilityProvider !== "ollama" && capabilityProvider !== "vllm" || !focusedModelValue) {
729273
729513
  setEffortCapabilityLoading(false);
729274
729514
  setEffortCapabilityWarning(null);
729275
729515
  return;
@@ -729327,6 +729567,20 @@ function ProviderFirstModelPicker({
729327
729567
  setStep("connect");
729328
729568
  event.stopImmediatePropagation();
729329
729569
  }, { isActive: step === "model" && !loadingModels });
729570
+ use_input_default((input2, _key, event) => {
729571
+ if (input2.toLowerCase() !== "k" || !selectedProvider)
729572
+ return;
729573
+ if (!providerSupportsApiKeyEditing(selectedProvider.provider))
729574
+ return;
729575
+ setConnectingProvider(selectedProvider);
729576
+ setApiKeyInput("");
729577
+ setApiKeyCursorOffset(0);
729578
+ setConnectionMode("api-key");
729579
+ setConnectReturnStep("model");
729580
+ setConnectError(null);
729581
+ setStep("connect");
729582
+ event.stopImmediatePropagation();
729583
+ }, { isActive: step === "model" && !loadingModels });
729330
729584
  use_input_default((input2, key) => {
729331
729585
  if (key.ctrl && (input2 === "r" || input2 === "R")) {
729332
729586
  setModelReloadToken((token) => token + 1);
@@ -729350,7 +729604,8 @@ function ProviderFirstModelPicker({
729350
729604
  const focusedEffortLevels = focusedResolvedModel && focusedProviderId ? getSupportedEffortLevelsForModel(focusedResolvedModel, focusedProviderId) : [];
729351
729605
  const focusedEffortLevelLabels = focusedResolvedModel && focusedProviderId ? getSupportedEffortLevelLabelsForModel(focusedResolvedModel, focusedProviderId) : [];
729352
729606
  const focusedSupportsEffort = focusedResolvedModel ? modelSupportsEffort(focusedResolvedModel, focusedProviderId) : false;
729353
- const focusedSupportsThinking = focusedResolvedModel && focusedProviderId ? modelSupportsThinking(focusedResolvedModel, focusedProviderId) && providerSupportsThinkingToggle(focusedProviderId) : false;
729607
+ const focusedAdvertisesThinking = focusedResolvedModel && focusedProviderId ? modelSupportsThinking(focusedResolvedModel, focusedProviderId) : false;
729608
+ const focusedSupportsThinking = focusedResolvedModel && focusedProviderId ? focusedAdvertisesThinking && providerSupportsThinkingToggle(focusedProviderId) : false;
729354
729609
  const focusedDefaultEffort = focusedResolvedModel ? convertEffortValueToLevel(getDefaultEffortForModel(focusedResolvedModel, focusedProviderId) ?? (focusedEffortLevels.includes("high") ? "high" : focusedEffortLevels.at(-1)) ?? "high") : "high";
729355
729610
  const displayedEffort = focusedResolvedModel ? resolveProviderEffortLevel(focusedResolvedModel, effort ?? focusedDefaultEffort, focusedProviderId) ?? focusedDefaultEffort : focusedDefaultEffort;
729356
729611
  function handleProviderFocus(value2) {
@@ -730010,7 +730265,8 @@ function ProviderFirstModelPicker({
730010
730265
  color: "subtle",
730011
730266
  children: [
730012
730267
  "\u2191\u2193 browse \xB7 Enter select \xB7 \u2190\u2192 effort/thinking \xB7 Ctrl+R refresh \xB7 Esc providers",
730013
- selectedProvider && providerSupportsEndpointEditing(selectedProvider.provider) ? " \xB7 E endpoint" : ""
730268
+ selectedProvider && providerSupportsEndpointEditing(selectedProvider.provider) ? " \xB7 E endpoint" : "",
730269
+ selectedProvider && providerSupportsApiKeyEditing(selectedProvider.provider) ? " \xB7 K API key" : ""
730014
730270
  ]
730015
730271
  }, undefined, true, undefined, this)
730016
730272
  ]
@@ -730101,7 +730357,7 @@ function ProviderFirstModelPicker({
730101
730357
  !focusedSupportsEffort && !effortCapabilityLoading && /* @__PURE__ */ jsx_dev_runtime333.jsxDEV(ThemedText, {
730102
730358
  dimColor: true,
730103
730359
  color: "subtle",
730104
- children: focusedSupportsThinking ? "No graded effort advertised; this model accepts on/off thinking." : "Graded effort not advertised for this model."
730360
+ children: focusedSupportsThinking ? "Thinking supported; no model-specific graded ladder advertised. Using provider-native on/off control." : focusedAdvertisesThinking ? "Thinking supported; this runtime advertises no controllable graded ladder or on/off mapping." : "Graded effort not advertised for this model."
730105
730361
  }, undefined, false, undefined, this),
730106
730362
  focusedSupportsThinking && /* @__PURE__ */ jsx_dev_runtime333.jsxDEV(ThemedText, {
730107
730363
  dimColor: true,
@@ -730151,7 +730407,8 @@ function ProviderFirstModelPicker({
730151
730407
  color: "subtle",
730152
730408
  children: [
730153
730409
  "Press ctrl+r to retry",
730154
- selectedProvider && providerSupportsEndpointEditing(selectedProvider.provider) ? ", press E to change the endpoint" : "",
730410
+ selectedProvider && providerSupportsEndpointEditing(selectedProvider.provider) ? ", E to change the endpoint" : "",
730411
+ selectedProvider && providerSupportsApiKeyEditing(selectedProvider.provider) ? ", or K to add/change its API key" : "",
730155
730412
  ", or run `ur provider doctor ",
730156
730413
  selectedProvider?.value,
730157
730414
  "` to troubleshoot."
@@ -730193,6 +730450,9 @@ function noop8() {}
730193
730450
  function providerSupportsEndpointEditing(provider) {
730194
730451
  return provider.credentialType === "openai-compatible-endpoint" || provider.credentialType === "local-runtime" || provider.defaultBaseUrl !== undefined;
730195
730452
  }
730453
+ function providerSupportsApiKeyEditing(provider) {
730454
+ return provider.accessType !== "subscription" && Boolean(provider.envKey);
730455
+ }
730196
730456
  function providerPickerStatusWithoutNetwork(provider, settings = getInitialSettings(), apiKeySource = getProviderApiKeySource(provider.id)) {
730197
730457
  const needsApiKey = provider.credentialType === "api-key" || provider.requiresApiKey === true;
730198
730458
  if (needsApiKey && apiKeySource === "none") {
@@ -732264,7 +732524,7 @@ function setEffortValue(effortValue, model, provider = getRuntimeProvider()) {
732264
732524
  effort: effortValue
732265
732525
  });
732266
732526
  return {
732267
- message: `Requested ${effortValue} was not sent: ${model} on ${provider} accepts thinking on/off, not graded effort. Thinking is now ON. Use /thinking off to disable it or /thinking status to inspect it.`,
732527
+ message: `Requested ${effortValue} was not sent: ${model} on ${provider} advertises thinking but no model-specific graded ladder. UR used the provider-native on/off control and thinking is now ON. Use /thinking off to disable it or /thinking status to inspect it.`,
732268
732528
  thinkingUpdate: {
732269
732529
  value: true
732270
732530
  }
@@ -732341,7 +732601,7 @@ function showCurrentEffort(appStateEffort, model, provider = getRuntimeProvider(
732341
732601
  if (!modelSupportsEffort(model, provider)) {
732342
732602
  if (modelSupportsThinking(model, provider) && providerSupportsThinkingToggle(provider)) {
732343
732603
  return {
732344
- message: `Effort: graded levels unavailable \u2014 ${model} on ${provider} accepts thinking on/off only. Thinking is ${thinkingEnabled === false ? "OFF" : "ON"}; use /thinking on|off to change it.`
732604
+ message: `Effort: no model-specific graded ladder advertised for ${model} on ${provider}. UR is using the provider-native on/off control; thinking is ${thinkingEnabled === false ? "OFF" : "ON"}. Use /thinking on|off to change it.`
732345
732605
  };
732346
732606
  }
732347
732607
  if (modelSupportsThinking(model, provider)) {
@@ -732367,7 +732627,7 @@ function showCurrentEffort(appStateEffort, model, provider = getRuntimeProvider(
732367
732627
  if (!modelSupportsEffort(model, provider)) {
732368
732628
  if (modelSupportsThinking(model, provider) && providerSupportsThinkingToggle(provider)) {
732369
732629
  return {
732370
- message: `Requested effort: ${effectiveValue}; not sent \u2014 ${model} on ${provider} accepts thinking on/off only. Thinking is ${thinkingEnabled === false ? "OFF" : "ON"}; use /thinking on|off to change it.`
732630
+ message: `Requested effort: ${effectiveValue}; not sent \u2014 ${model} on ${provider} advertises thinking but no model-specific graded ladder. UR is using the provider-native on/off control; thinking is ${thinkingEnabled === false ? "OFF" : "ON"}. Use /thinking on|off to change it.`
732371
732631
  };
732372
732632
  }
732373
732633
  if (modelSupportsThinking(model, provider)) {
@@ -732557,7 +732817,7 @@ function capabilityMessage(enabled, model, provider) {
732557
732817
  return `${model} advertises thinking, but the ${provider} runtime has no provider-native on/off mapping. ${modelSupportsEffort(model, provider) ? "Use /effort for its advertised graded control." : "UR will not invent a boolean wire field."}`;
732558
732818
  }
732559
732819
  if (!modelSupportsEffort(model, provider)) {
732560
- return `${model} on ${provider} accepts thinking on/off only; no graded effort is sent.`;
732820
+ return `${model} on ${provider} advertises thinking but no model-specific graded ladder. UR uses the provider-native on/off control and sends no graded effort.`;
732561
732821
  }
732562
732822
  return enabled ? `${model} on ${provider} also advertises graded effort; use /effort status to inspect its independently selected level.` : `${model} on ${provider} also advertises graded effort, which remains independently controlled by /effort.`;
732563
732823
  }
@@ -738037,7 +738297,7 @@ function generateHtmlReport(data, insights) {
738037
738297
  </html>`;
738038
738298
  }
738039
738299
  function buildExportData(data, insights, facets, remoteStats) {
738040
- const version3 = typeof MACRO !== "undefined" ? "1.84.0" : "unknown";
738300
+ const version3 = typeof MACRO !== "undefined" ? "1.84.2" : "unknown";
738041
738301
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
738042
738302
  const facets_summary = {
738043
738303
  total: facets.size,
@@ -742352,7 +742612,7 @@ var init_sessionStorage = __esm(() => {
742352
742612
  init_settings2();
742353
742613
  init_slowOperations();
742354
742614
  init_uuid();
742355
- VERSION7 = typeof MACRO !== "undefined" ? "1.84.0" : "unknown";
742615
+ VERSION7 = typeof MACRO !== "undefined" ? "1.84.2" : "unknown";
742356
742616
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
742357
742617
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
742358
742618
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -743567,7 +743827,7 @@ var init_filesystem = __esm(() => {
743567
743827
  });
743568
743828
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
743569
743829
  const nonce = randomBytes23(16).toString("hex");
743570
- return join234(getURTempDir(), "bundled-skills", "1.84.0", nonce);
743830
+ return join234(getURTempDir(), "bundled-skills", "1.84.2", nonce);
743571
743831
  });
743572
743832
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
743573
743833
  });
@@ -764041,12 +764301,16 @@ function contentToGeminiParts(content, toolNamesById) {
764041
764301
  break;
764042
764302
  case "tool_result":
764043
764303
  flushTextPart();
764044
- assertNoImageBlocks(block2.content, "gemini", `tool_result ${block2.tool_use_id ?? index2} content`);
764304
+ const toolResultName = toolNamesById.get(block2.tool_use_id) ?? block2.tool_use_id ?? index2;
764305
+ const toolResultImages = imageBlocksFromContent(block2.content);
764045
764306
  parts.push({
764046
764307
  functionResponse: {
764047
- name: toolNamesById.get(block2.tool_use_id) ?? block2.tool_use_id,
764308
+ name: toolResultName,
764048
764309
  response: { result: contentToText(block2.content) },
764049
- ...typeof block2.tool_use_id === "string" && block2.tool_use_id.length > 0 && { id: block2.tool_use_id }
764310
+ ...typeof block2.tool_use_id === "string" && block2.tool_use_id.length > 0 && { id: block2.tool_use_id },
764311
+ ...toolResultImages.length > 0 && {
764312
+ parts: toolResultImages.map((image, imageIndex) => imageBlockToGeminiPart(image, `tool_result ${block2.tool_use_id ?? index2} image ${imageIndex}`))
764313
+ }
764050
764314
  }
764051
764315
  });
764052
764316
  break;
@@ -775358,7 +775622,7 @@ function getUserAgent() {
775358
775622
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
775359
775623
  const workload = getWorkload();
775360
775624
  const workloadSuffix = workload ? `, workload/${workload}` : "";
775361
- return `ur-cli/${"1.84.0"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
775625
+ return `ur-cli/${"1.84.2"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
775362
775626
  }
775363
775627
  function getMCPUserAgent() {
775364
775628
  const parts = [];
@@ -775372,7 +775636,7 @@ function getMCPUserAgent() {
775372
775636
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
775373
775637
  }
775374
775638
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
775375
- return `ur/${"1.84.0"}${suffix}`;
775639
+ return `ur/${"1.84.2"}${suffix}`;
775376
775640
  }
775377
775641
  function getWebFetchUserAgent() {
775378
775642
  return `UR-User (${getURCodeUserAgent()})`;
@@ -792535,7 +792799,7 @@ function buildSystemInitMessage(inputs) {
792535
792799
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
792536
792800
  apiKeySource: getURHQApiKeyWithSource().source,
792537
792801
  betas: getSdkBetas(),
792538
- ur_version: "1.84.0",
792802
+ ur_version: "1.84.2",
792539
792803
  output_style: outputStyle,
792540
792804
  agents: inputs.agents.map((agent2) => agent2.agentType),
792541
792805
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -796076,7 +796340,7 @@ var init_useVoiceEnabled = __esm(() => {
796076
796340
  function getSemverPart(version3) {
796077
796341
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
796078
796342
  }
796079
- function useUpdateNotification(updatedVersion, initialVersion = "1.84.0") {
796343
+ function useUpdateNotification(updatedVersion, initialVersion = "1.84.2") {
796080
796344
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
796081
796345
  if (!updatedVersion) {
796082
796346
  return null;
@@ -796125,7 +796389,7 @@ function AutoUpdater({
796125
796389
  return;
796126
796390
  }
796127
796391
  if (false) {}
796128
- const currentVersion = "1.84.0";
796392
+ const currentVersion = "1.84.2";
796129
796393
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
796130
796394
  let latestVersion = await getLatestVersion(channel);
796131
796395
  const isDisabled = isAutoUpdaterDisabled();
@@ -796354,12 +796618,12 @@ function NativeAutoUpdater({
796354
796618
  logEvent("tengu_native_auto_updater_start", {});
796355
796619
  try {
796356
796620
  const maxVersion = await getMaxVersion();
796357
- if (maxVersion && gt("1.84.0", maxVersion)) {
796621
+ if (maxVersion && gt("1.84.2", maxVersion)) {
796358
796622
  const msg = await getMaxVersionMessage();
796359
796623
  setMaxVersionIssue(msg ?? "affects your version");
796360
796624
  }
796361
796625
  const result = await installLatest(channel);
796362
- const currentVersion = "1.84.0";
796626
+ const currentVersion = "1.84.2";
796363
796627
  const latencyMs = Date.now() - startTime;
796364
796628
  if (result.lockFailed) {
796365
796629
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -796496,17 +796760,17 @@ function PackageManagerAutoUpdater(t0) {
796496
796760
  const maxVersion = await getMaxVersion();
796497
796761
  if (maxVersion && latest && gt(latest, maxVersion)) {
796498
796762
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
796499
- if (gte("1.84.0", maxVersion)) {
796500
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.84.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
796763
+ if (gte("1.84.2", maxVersion)) {
796764
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.84.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
796501
796765
  setUpdateAvailable(false);
796502
796766
  return;
796503
796767
  }
796504
796768
  latest = maxVersion;
796505
796769
  }
796506
- const hasUpdate = latest && !gte("1.84.0", latest) && !shouldSkipVersion(latest);
796770
+ const hasUpdate = latest && !gte("1.84.2", latest) && !shouldSkipVersion(latest);
796507
796771
  setUpdateAvailable(!!hasUpdate);
796508
796772
  if (hasUpdate) {
796509
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.84.0"} -> ${latest}`);
796773
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.84.2"} -> ${latest}`);
796510
796774
  }
796511
796775
  };
796512
796776
  $2[0] = t1;
@@ -796540,7 +796804,7 @@ function PackageManagerAutoUpdater(t0) {
796540
796804
  wrap: "truncate",
796541
796805
  children: [
796542
796806
  "currentVersion: ",
796543
- "1.84.0"
796807
+ "1.84.2"
796544
796808
  ]
796545
796809
  }, undefined, true, undefined, this);
796546
796810
  $2[3] = verbose;
@@ -807389,7 +807653,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
807389
807653
  project_dir: getOriginalCwd(),
807390
807654
  added_dirs: addedDirs
807391
807655
  },
807392
- version: "1.84.0",
807656
+ version: "1.84.2",
807393
807657
  output_style: {
807394
807658
  name: outputStyleName
807395
807659
  },
@@ -807524,7 +807788,7 @@ function StatusLineInner({
807524
807788
  const attention = customStatusError ?? taskAttention;
807525
807789
  const terminalSize = React138.useContext(TerminalSizeContext);
807526
807790
  const defaultStatusLineText = buildDefaultStatusBar({
807527
- version: "1.84.0",
807791
+ version: "1.84.2",
807528
807792
  providerLabel: providerRuntime.providerLabel,
807529
807793
  authMode: providerRuntime.authLabel,
807530
807794
  model: renderModelName(mainLoopModel) || providerRuntime.model || "",
@@ -819915,7 +820179,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
819915
820179
  } catch {}
819916
820180
  const data = {
819917
820181
  trigger: trigger2,
819918
- version: "1.84.0",
820182
+ version: "1.84.2",
819919
820183
  platform: process.platform,
819920
820184
  transcript,
819921
820185
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -832297,7 +832561,7 @@ function WelcomeV2() {
832297
832561
  dimColor: true,
832298
832562
  children: [
832299
832563
  "v",
832300
- "1.84.0"
832564
+ "1.84.2"
832301
832565
  ]
832302
832566
  }, undefined, true, undefined, this)
832303
832567
  ]
@@ -833543,7 +833807,7 @@ function completeOnboarding() {
833543
833807
  saveGlobalConfig((current) => ({
833544
833808
  ...current,
833545
833809
  hasCompletedOnboarding: true,
833546
- lastOnboardingVersion: "1.84.0"
833810
+ lastOnboardingVersion: "1.84.2"
833547
833811
  }));
833548
833812
  }
833549
833813
  function showDialog(root2, renderer) {
@@ -838540,7 +838804,7 @@ function appendToLog(path28, message) {
838540
838804
  cwd: getFsImplementation().cwd(),
838541
838805
  userType: process.env.USER_TYPE,
838542
838806
  sessionId: getSessionId(),
838543
- version: "1.84.0"
838807
+ version: "1.84.2"
838544
838808
  };
838545
838809
  getLogWriter(path28).write(messageWithTimestamp);
838546
838810
  }
@@ -842703,8 +842967,8 @@ async function getEnvLessBridgeConfig() {
842703
842967
  }
842704
842968
  async function checkEnvLessBridgeMinVersion() {
842705
842969
  const cfg = await getEnvLessBridgeConfig();
842706
- if (cfg.min_version && lt("1.84.0", cfg.min_version)) {
842707
- return `Your version of UR (${"1.84.0"}) is too old for Remote Control.
842970
+ if (cfg.min_version && lt("1.84.2", cfg.min_version)) {
842971
+ return `Your version of UR (${"1.84.2"}) is too old for Remote Control.
842708
842972
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
842709
842973
  }
842710
842974
  return null;
@@ -843178,7 +843442,7 @@ async function initBridgeCore(params) {
843178
843442
  const rawApi = createBridgeApiClient({
843179
843443
  baseUrl,
843180
843444
  getAccessToken,
843181
- runnerVersion: "1.84.0",
843445
+ runnerVersion: "1.84.2",
843182
843446
  onDebug: logForDebugging,
843183
843447
  onAuth401,
843184
843448
  getTrustedDeviceToken
@@ -856620,7 +856884,7 @@ function getAgUiCapabilities() {
856620
856884
  name: "UR-Nexus",
856621
856885
  type: "ur-nexus",
856622
856886
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
856623
- version: "1.84.0",
856887
+ version: "1.84.2",
856624
856888
  provider: "UR",
856625
856889
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
856626
856890
  },
@@ -857440,7 +857704,7 @@ function createMCPServer(cwd4, debug2, verbose) {
857440
857704
  };
857441
857705
  const server2 = new Server({
857442
857706
  name: "ur-nexus",
857443
- version: "1.84.0"
857707
+ version: "1.84.2"
857444
857708
  }, {
857445
857709
  capabilities: {
857446
857710
  tools: {}
@@ -858643,7 +858907,7 @@ function thrownResponse(error61) {
858643
858907
  }
858644
858908
  async function createUrMcp2026Runtime(options5) {
858645
858909
  const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
858646
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.84.0" }, { capabilities: {} });
858910
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.84.2" }, { capabilities: {} });
858647
858911
  const [clientTransport, serverTransport] = createLinkedTransportPair();
858648
858912
  try {
858649
858913
  await server2.connect(serverTransport);
@@ -858654,7 +858918,7 @@ async function createUrMcp2026Runtime(options5) {
858654
858918
  }
858655
858919
  const runtime2 = new Mcp2026Runtime({
858656
858920
  cwd: options5.cwd,
858657
- version: "1.84.0",
858921
+ version: "1.84.2",
858658
858922
  backend: {
858659
858923
  listTools: async () => {
858660
858924
  const listed = await client2.listTools();
@@ -861490,7 +861754,7 @@ async function update() {
861490
861754
  logEvent("tengu_update_check", {});
861491
861755
  const diagnostic2 = await getDoctorDiagnostic();
861492
861756
  const result = await checkUpgradeStatus({
861493
- currentVersion: "1.84.0",
861757
+ currentVersion: "1.84.2",
861494
861758
  packageName: UR_AGENT_PACKAGE_NAME,
861495
861759
  installationType: diagnostic2.installationType,
861496
861760
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -862818,7 +863082,7 @@ ${customInstructions}` : customInstructions;
862818
863082
  }
862819
863083
  }
862820
863084
  logForDiagnosticsNoPII("info", "started", {
862821
- version: "1.84.0",
863085
+ version: "1.84.2",
862822
863086
  is_native_binary: isInBundledMode()
862823
863087
  });
862824
863088
  registerCleanup(async () => {
@@ -863605,7 +863869,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
863605
863869
  pendingHookMessages
863606
863870
  }, renderAndRun);
863607
863871
  }
863608
- }).version("1.84.0 (UR-Nexus)", "-v, --version", "Output the version number");
863872
+ }).version("1.84.2 (UR-Nexus)", "-v, --version", "Output the version number");
863609
863873
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
863610
863874
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
863611
863875
  if (canUserConfigureAdvisor()) {
@@ -864732,7 +864996,7 @@ if (false) {}
864732
864996
  async function main2() {
864733
864997
  const args = process.argv.slice(2);
864734
864998
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
864735
- console.log(`${"1.84.0"} (UR-Nexus)`);
864999
+ console.log(`${"1.84.2"} (UR-Nexus)`);
864736
865000
  return;
864737
865001
  }
864738
865002
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {