ur-agent 1.81.9 → 1.82.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,42 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.82.0
4
+
5
+ - Restored the complete UR agent prompt, conversation history, tools, and
6
+ reasoning configuration for every request, including greetings and small
7
+ code questions. No request is reclassified into a reduced standalone chat,
8
+ preserving identical quality and agent behavior across Ollama, vLLM,
9
+ OpenRouter, and all other providers.
10
+ - Retained only provider-compatibility safeguards: self-hosted runtimes use a
11
+ realistic completion reservation, vLLM context-overflow responses retry with
12
+ a budget that actually fits, and discovered provider output limits remain
13
+ enforced. Ollama keeps its full agent context and 30-minute warm lifetime.
14
+ - Aligned release benchmarks with the repository's 120-second test timeout so
15
+ slower AST checks report their real result instead of an incidental five-second
16
+ machine-load timeout.
17
+
18
+ ## 1.81.10
19
+
20
+ - Reduced provider latency and memory pressure without removing the complete
21
+ system prompt or tool set from real agent work. Self-hosted Ollama, vLLM,
22
+ LM Studio, llama.cpp, and OpenAI-compatible requests now reserve a realistic
23
+ 4K output turn, resume automatically if it is exhausted, and keep a stable
24
+ prompt prefix so local/server prefix caches can be reused across sessions.
25
+ - Added a safe lightweight path for exact greetings on every runnable provider.
26
+ These turns send no irrelevant repository tools, use a 1K output budget, and
27
+ use an 8K Ollama context; coding, media, structured-output, custom-prompt,
28
+ and ongoing agent turns retain their full quality-bearing context.
29
+ - Prevented Ollama helper calls from automatically loading a second installed
30
+ model and evicting the warm session model. A separate helper model remains
31
+ available through the explicit `OLLAMA_SMALL_FAST_MODEL` override.
32
+ - Added adaptive recovery for vLLM's OpenAI-compatible context-overflow errors,
33
+ including wrapped/multiline and comma-formatted token counts, and fixed the
34
+ retry calculation so thinking budgets can never produce another oversized
35
+ request.
36
+ - Applied provider-discovered completion limits to request sizing, including
37
+ OpenRouter's live `max_output_tokens`, so defaults and explicit overrides are
38
+ validated against the selected model's real limit.
39
+
3
40
  ## 1.81.9
4
41
 
5
42
  - Restored the previous compact six-row UR wordmark as the primary welcome
package/dist/cli.js CHANGED
@@ -53764,6 +53764,7 @@ __export(exports_providerRegistry, {
53764
53764
  getProviderRuntimeBlockReason: () => getProviderRuntimeBlockReason,
53765
53765
  getProviderRuntimeBackend: () => getProviderRuntimeBackend,
53766
53766
  getProviderReasoningCapabilitiesForModel: () => getProviderReasoningCapabilitiesForModel,
53767
+ getProviderOutputTokenLimitForModel: () => getProviderOutputTokenLimitForModel,
53767
53768
  getProviderFamily: () => getProviderFamily,
53768
53769
  getProviderDefinition: () => getProviderDefinition,
53769
53770
  getProviderContextLengthForModel: () => getProviderContextLengthForModel,
@@ -54913,6 +54914,21 @@ function getProviderContextLengthForModel(model, provider = getInitialSettings()
54913
54914
  const length = match?.contextLength;
54914
54915
  return typeof length === "number" && Number.isFinite(length) && length > 0 ? Math.floor(length) : undefined;
54915
54916
  }
54917
+ function getProviderOutputTokenLimitForModel(model, provider = getRuntimeProviderId(), settings = getInitialSettings()) {
54918
+ const providerId = resolveProviderId(provider);
54919
+ if (!providerId)
54920
+ return;
54921
+ const wanted = model.trim().toLowerCase();
54922
+ if (!wanted)
54923
+ return;
54924
+ const known = [
54925
+ ...getCachedProviderModels(providerId, settings),
54926
+ ...PROVIDER_MODELS[providerId] ?? []
54927
+ ];
54928
+ const match = known.find((entry) => entry.id.toLowerCase() === wanted) ?? known.find((entry) => wanted.includes(entry.id.toLowerCase()));
54929
+ const limit = match?.outputTokenLimit;
54930
+ return typeof limit === "number" && Number.isFinite(limit) && limit > 0 ? Math.floor(limit) : undefined;
54931
+ }
54916
54932
  function getProviderReasoningCapabilitiesForModel(model, provider = getRuntimeProviderId(), settings = getInitialSettings()) {
54917
54933
  const providerId = resolveProviderId(provider);
54918
54934
  if (!providerId)
@@ -57301,7 +57317,15 @@ function getOllamaKeepAlive(env4 = process.env) {
57301
57317
  }
57302
57318
  var MIN_AGENT_NUM_CTX = 32768, DEFAULT_OLLAMA_KEEP_ALIVE = "30m", NUM_CTX_BUCKETS, OUTPUT_HEADROOM_TOKENS = 4096;
57303
57319
  var init_ollamaTuning = __esm(() => {
57304
- NUM_CTX_BUCKETS = [32768, 49152, 65536, 98304, 131072, 196608, 262144];
57320
+ NUM_CTX_BUCKETS = [
57321
+ 32768,
57322
+ 49152,
57323
+ 65536,
57324
+ 98304,
57325
+ 131072,
57326
+ 196608,
57327
+ 262144
57328
+ ];
57305
57329
  });
57306
57330
 
57307
57331
  // node_modules/react/cjs/react.development.js
@@ -89922,15 +89946,18 @@ function toOllamaChatRequest(params, stream4, capabilities, baseUrl = getEffecti
89922
89946
  if (typeof params.max_tokens === "number") {
89923
89947
  options.num_predict = params.max_tokens;
89924
89948
  }
89949
+ const estimatedPromptTokens = estimateInputTokens(params);
89950
+ const maxTokens = typeof params.max_tokens === "number" ? params.max_tokens : undefined;
89925
89951
  const numCtx = computeOllamaNumCtx({
89926
89952
  modelContextLength: getOllamaContextLengthForModel(params.model, baseUrl),
89927
- estimatedPromptTokens: estimateInputTokens(params),
89928
- maxTokens: typeof params.max_tokens === "number" ? params.max_tokens : undefined,
89953
+ estimatedPromptTokens,
89954
+ maxTokens,
89929
89955
  override: getOllamaNumCtxOverride()
89930
89956
  });
89931
89957
  if (numCtx !== undefined) {
89932
89958
  options.num_ctx = numCtx;
89933
89959
  }
89960
+ logForDebugging(`Ollama request sizing: ~${estimatedPromptTokens} input tokens, ${maxTokens ?? "default"} output tokens, ${tools.length} tools, num_ctx=${numCtx ?? "server-default"}`);
89934
89961
  if (Object.keys(options).length > 0) {
89935
89962
  request.options = options;
89936
89963
  }
@@ -96080,7 +96107,7 @@ function calculateContextPercentages(currentUsage, contextWindowSize) {
96080
96107
  remaining: 100 - clampedUsed
96081
96108
  };
96082
96109
  }
96083
- function getModelMaxOutputTokens(model) {
96110
+ function getModelMaxOutputTokens(model, provider, settings) {
96084
96111
  let defaultTokens = MAX_OUTPUT_TOKENS_DEFAULT;
96085
96112
  let upperLimit = MAX_OUTPUT_TOKENS_UPPER_LIMIT;
96086
96113
  if (process.env.USER_TYPE === "ant") {
@@ -96096,6 +96123,11 @@ function getModelMaxOutputTokens(model) {
96096
96123
  upperLimit = cap.max_tokens;
96097
96124
  defaultTokens = Math.min(defaultTokens, upperLimit);
96098
96125
  }
96126
+ const providerOutputLimit = getProviderOutputTokenLimitForModel(model, provider, settings);
96127
+ if (providerOutputLimit !== undefined) {
96128
+ upperLimit = Math.min(upperLimit, providerOutputLimit);
96129
+ defaultTokens = Math.min(defaultTokens, upperLimit);
96130
+ }
96099
96131
  return { default: defaultTokens, upperLimit };
96100
96132
  }
96101
96133
  function getMaxThinkingTokensForModel(model) {
@@ -96808,7 +96840,6 @@ __export(exports_model, {
96808
96840
  });
96809
96841
  function __resetOllamaRouteMemoForTests() {
96810
96842
  memoizedRoutedDefaultModel = undefined;
96811
- memoizedRoutedFastModel = undefined;
96812
96843
  }
96813
96844
  function getDefaultOllamaModel() {
96814
96845
  const explicitModel = process.env.OLLAMA_MODEL || process.env.UR_MODEL;
@@ -96837,15 +96868,6 @@ function getSmallFastModel(providerSettings) {
96837
96868
  if (process.env.OLLAMA_SMALL_FAST_MODEL) {
96838
96869
  return process.env.OLLAMA_SMALL_FAST_MODEL;
96839
96870
  }
96840
- if (isOllamaAutoRouteEnabled()) {
96841
- if (memoizedRoutedFastModel)
96842
- return memoizedRoutedFastModel;
96843
- const routed = pickSmallFastModel(getCachedOllamaModelNames());
96844
- if (routed) {
96845
- memoizedRoutedFastModel = routed;
96846
- return routed;
96847
- }
96848
- }
96849
96871
  const sessionModel = getMainLoopModel();
96850
96872
  if (sessionModel)
96851
96873
  return sessionModel;
@@ -97166,7 +97188,7 @@ function getMarketingNameForModel(modelId) {
97166
97188
  function normalizeModelStringForAPI(model) {
97167
97189
  return model.replace(/\[(1|2)m\]/gi, "");
97168
97190
  }
97169
- var DEFAULT_OLLAMA_MODEL2 = "qwen2.5-coder:7b", memoizedRoutedDefaultModel, memoizedRoutedFastModel, LEGACY_MODELO_FIRSTPARTY;
97191
+ var DEFAULT_OLLAMA_MODEL2 = "qwen2.5-coder:7b", memoizedRoutedDefaultModel, LEGACY_MODELO_FIRSTPARTY;
97170
97192
  var init_model = __esm(() => {
97171
97193
  init_state();
97172
97194
  init_auth();
@@ -108358,7 +108380,7 @@ var init_auth = __esm(() => {
108358
108380
 
108359
108381
  // src/utils/userAgent.ts
108360
108382
  function getURCodeUserAgent() {
108361
- return `ur/${"1.81.9"}`;
108383
+ return `ur/${"1.82.0"}`;
108362
108384
  }
108363
108385
 
108364
108386
  // src/utils/workloadContext.ts
@@ -108380,7 +108402,7 @@ function getUserAgent() {
108380
108402
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
108381
108403
  const workload = getWorkload();
108382
108404
  const workloadSuffix = workload ? `, workload/${workload}` : "";
108383
- return `ur-cli/${"1.81.9"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
108405
+ return `ur-cli/${"1.82.0"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
108384
108406
  }
108385
108407
  function getMCPUserAgent() {
108386
108408
  const parts = [];
@@ -108394,7 +108416,7 @@ function getMCPUserAgent() {
108394
108416
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
108395
108417
  }
108396
108418
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
108397
- return `ur/${"1.81.9"}${suffix}`;
108419
+ return `ur/${"1.82.0"}${suffix}`;
108398
108420
  }
108399
108421
  function getWebFetchUserAgent() {
108400
108422
  return `UR-User (${getURCodeUserAgent()})`;
@@ -108532,7 +108554,7 @@ var init_user = __esm(() => {
108532
108554
  deviceId,
108533
108555
  sessionId: getSessionId(),
108534
108556
  email: getEmail(),
108535
- appVersion: "1.81.9",
108557
+ appVersion: "1.82.0",
108536
108558
  platform: getHostPlatformForAnalytics(),
108537
108559
  organizationUuid,
108538
108560
  accountUuid,
@@ -116419,7 +116441,7 @@ var init_metadata = __esm(() => {
116419
116441
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
116420
116442
  WHITESPACE_REGEX = /\s+/;
116421
116443
  getVersionBase = memoize_default(() => {
116422
- const match = "1.81.9".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
116444
+ const match = "1.82.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
116423
116445
  return match ? match[0] : undefined;
116424
116446
  });
116425
116447
  buildEnvContext = memoize_default(async () => {
@@ -116459,7 +116481,7 @@ var init_metadata = __esm(() => {
116459
116481
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
116460
116482
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
116461
116483
  isURAiAuth: isURAISubscriber(),
116462
- version: "1.81.9",
116484
+ version: "1.82.0",
116463
116485
  versionBase: getVersionBase(),
116464
116486
  buildTime: "",
116465
116487
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -117129,7 +117151,7 @@ function initialize1PEventLogging() {
117129
117151
  const platform2 = getPlatform();
117130
117152
  const attributes = {
117131
117153
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
117132
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.81.9"
117154
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.82.0"
117133
117155
  };
117134
117156
  if (platform2 === "wsl") {
117135
117157
  const wslVersion = getWslVersion();
@@ -117157,7 +117179,7 @@ function initialize1PEventLogging() {
117157
117179
  })
117158
117180
  ]
117159
117181
  });
117160
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.81.9");
117182
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.82.0");
117161
117183
  }
117162
117184
  async function reinitialize1PEventLoggingIfConfigChanged() {
117163
117185
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -127123,7 +127145,7 @@ function formatA2AAgentCard(options = {}, pretty = true) {
127123
127145
  function formatA2AV1AgentCard(options = {}, pretty = true) {
127124
127146
  return JSON.stringify(buildA2AV1AgentCard(options), null, pretty ? 2 : 0);
127125
127147
  }
127126
- var urVersion = "1.81.9", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
127148
+ var urVersion = "1.82.0", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
127127
127149
  var init_trends = __esm(() => {
127128
127150
  init_a2aCardSignature();
127129
127151
  coverage = [
@@ -130013,7 +130035,7 @@ function getAttributionHeader(fingerprint) {
130013
130035
  if (!isAttributionHeaderEnabled()) {
130014
130036
  return "";
130015
130037
  }
130016
- const version2 = `${"1.81.9"}.${fingerprint}`;
130038
+ const version2 = `${"1.82.0"}.${fingerprint}`;
130017
130039
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
130018
130040
  const cch = "";
130019
130041
  const workload = getWorkload();
@@ -182998,7 +183020,11 @@ async function* withRetry(getClient, operation, options2) {
182998
183020
  throw error40;
182999
183021
  }
183000
183022
  const minRequired = (retryContext.thinkingConfig.type === "enabled" ? retryContext.thinkingConfig.budgetTokens : 0) + 1;
183001
- const adjustedMaxTokens = Math.max(FLOOR_OUTPUT_TOKENS, availableContext, minRequired);
183023
+ if (minRequired > availableContext) {
183024
+ logError2(new Error(`thinking budget requires ${minRequired} tokens but only ${availableContext} output tokens fit in the context window`));
183025
+ throw error40;
183026
+ }
183027
+ const adjustedMaxTokens = availableContext;
183002
183028
  retryContext.maxTokensOverride = adjustedMaxTokens;
183003
183029
  logEvent("tengu_max_tokens_context_overflow_adjustment", {
183004
183030
  inputTokens,
@@ -183079,21 +183105,18 @@ function parseMaxTokensContextOverflowError(error40) {
183079
183105
  if (error40.status !== 400 || !error40.message) {
183080
183106
  return;
183081
183107
  }
183082
- if (!error40.message.includes("input length and `max_tokens` exceed context limit")) {
183083
- return;
183084
- }
183085
- const regex2 = /input length and `max_tokens` exceed context limit: (\d+) \+ (\d+) > (\d+)/;
183086
- const match = error40.message.match(regex2);
183087
- if (!match || match.length !== 4) {
183088
- return;
183089
- }
183090
- if (!match[1] || !match[2] || !match[3]) {
183091
- logError2(new Error("Unable to parse max_tokens from max_tokens exceed context limit error message"));
183108
+ const arithmeticMatch = error40.message.match(/input length and `max_tokens` exceed context limit:\s*([\d,]+)\s*\+\s*([\d,]+)\s*>\s*([\d,]+)/i);
183109
+ const vllmMatch = error40.message.match(/maximum context length is\s+([\d,]+)\s+tokens[\s\S]*?requested\s+([\d,]+)\s+output tokens[\s\S]*?prompt contains(?:\s+at least)?\s+([\d,]+)\s+input tokens/i);
183110
+ const rawInputTokens = arithmeticMatch?.[1] ?? vllmMatch?.[3];
183111
+ const rawMaxTokens = arithmeticMatch?.[2] ?? vllmMatch?.[2];
183112
+ const rawContextLimit = arithmeticMatch?.[3] ?? vllmMatch?.[1];
183113
+ if (!rawInputTokens || !rawMaxTokens || !rawContextLimit) {
183092
183114
  return;
183093
183115
  }
183094
- const inputTokens = parseInt(match[1], 10);
183095
- const maxTokens = parseInt(match[2], 10);
183096
- const contextLimit = parseInt(match[3], 10);
183116
+ const parseTokenCount = (value) => Number.parseInt(value.replaceAll(",", ""), 10);
183117
+ const inputTokens = parseTokenCount(rawInputTokens);
183118
+ const maxTokens = parseTokenCount(rawMaxTokens);
183119
+ const contextLimit = parseTokenCount(rawContextLimit);
183097
183120
  if (isNaN(inputTokens) || isNaN(maxTokens) || isNaN(contextLimit)) {
183098
183121
  return;
183099
183122
  }
@@ -184934,7 +184957,7 @@ var init_projectSafety = __esm(() => {
184934
184957
  function getInstruments() {
184935
184958
  if (instruments)
184936
184959
  return instruments;
184937
- const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.81.9");
184960
+ const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.82.0");
184938
184961
  instruments = {
184939
184962
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
184940
184963
  description: "GenAI operation duration.",
@@ -185032,7 +185055,7 @@ function genAiAgentAttributes() {
185032
185055
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
185033
185056
  "gen_ai.provider.name": "ur",
185034
185057
  "gen_ai.agent.name": "UR-Nexus",
185035
- "gen_ai.agent.version": "1.81.9"
185058
+ "gen_ai.agent.version": "1.82.0"
185036
185059
  };
185037
185060
  }
185038
185061
  function genAiWorkflowAttributes(workflowName, workflowRunId) {
@@ -185053,7 +185076,7 @@ function genAiWorkflowAttributes(workflowName, workflowRunId) {
185053
185076
  function startGenAiWorkflowSpan(workflowName, workflowRunId) {
185054
185077
  const attributes = genAiWorkflowAttributes(workflowName, workflowRunId);
185055
185078
  const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
185056
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.9").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
185079
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.82.0").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
185057
185080
  }
185058
185081
  function endGenAiWorkflowSpan(span, options2 = {}) {
185059
185082
  try {
@@ -185091,7 +185114,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
185091
185114
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
185092
185115
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
185093
185116
  }
185094
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.9").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
185117
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.82.0").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
185095
185118
  }
185096
185119
  function endGenAiMemorySpan(span, options2 = {}) {
185097
185120
  try {
@@ -278806,7 +278829,7 @@ function getTelemetryAttributes() {
278806
278829
  attributes["session.id"] = sessionId;
278807
278830
  }
278808
278831
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
278809
- attributes["app.version"] = "1.81.9";
278832
+ attributes["app.version"] = "1.82.0";
278810
278833
  }
278811
278834
  const oauthAccount = getOauthAccountInfo();
278812
278835
  if (oauthAccount) {
@@ -320210,7 +320233,7 @@ function getInstallationEnv() {
320210
320233
  return;
320211
320234
  }
320212
320235
  function getURCodeVersion() {
320213
- return "1.81.9";
320236
+ return "1.82.0";
320214
320237
  }
320215
320238
  async function getInstalledVSCodeExtensionVersion(command) {
320216
320239
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -327580,7 +327603,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
327580
327603
  const client2 = new Client({
327581
327604
  name: "ur",
327582
327605
  title: "UR",
327583
- version: "1.81.9",
327606
+ version: "1.82.0",
327584
327607
  description: "UR-Nexus autonomous engineering workflow engine",
327585
327608
  websiteUrl: PRODUCT_URL
327586
327609
  }, {
@@ -327941,7 +327964,7 @@ var init_client5 = __esm(() => {
327941
327964
  const client2 = new Client({
327942
327965
  name: "ur",
327943
327966
  title: "UR",
327944
- version: "1.81.9",
327967
+ version: "1.82.0",
327945
327968
  description: "UR-Nexus autonomous engineering workflow engine",
327946
327969
  websiteUrl: PRODUCT_URL
327947
327970
  }, {
@@ -340714,7 +340737,7 @@ async function createRuntime() {
340714
340737
  bootstrapTelemetry();
340715
340738
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
340716
340739
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
340717
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.81.9"
340740
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.82.0"
340718
340741
  }));
340719
340742
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
340720
340743
  resource,
@@ -340747,11 +340770,11 @@ async function createRuntime() {
340747
340770
  setMeterProvider(meterProvider);
340748
340771
  setLoggerProvider(loggerProvider);
340749
340772
  if (meterProvider) {
340750
- const meter = meterProvider.getMeter("ur-agent", "1.81.9");
340773
+ const meter = meterProvider.getMeter("ur-agent", "1.82.0");
340751
340774
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
340752
340775
  }
340753
340776
  if (loggerProvider) {
340754
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.81.9"));
340777
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.82.0"));
340755
340778
  }
340756
340779
  if (!cleanupRegistered3) {
340757
340780
  cleanupRegistered3 = true;
@@ -341413,9 +341436,9 @@ async function assertMinVersion() {
341413
341436
  if (false) {}
341414
341437
  try {
341415
341438
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
341416
- if (versionConfig.minVersion && lt("1.81.9", versionConfig.minVersion)) {
341439
+ if (versionConfig.minVersion && lt("1.82.0", versionConfig.minVersion)) {
341417
341440
  console.error(`
341418
- It looks like your version of UR (${"1.81.9"}) needs an update.
341441
+ It looks like your version of UR (${"1.82.0"}) needs an update.
341419
341442
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
341420
341443
 
341421
341444
  To update, please run:
@@ -341631,7 +341654,7 @@ async function installGlobalPackage(specificVersion) {
341631
341654
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
341632
341655
  logEvent("tengu_auto_updater_lock_contention", {
341633
341656
  pid: process.pid,
341634
- currentVersion: "1.81.9"
341657
+ currentVersion: "1.82.0"
341635
341658
  });
341636
341659
  return "in_progress";
341637
341660
  }
@@ -341640,7 +341663,7 @@ async function installGlobalPackage(specificVersion) {
341640
341663
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
341641
341664
  logError2(new Error("Windows NPM detected in WSL environment"));
341642
341665
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
341643
- currentVersion: "1.81.9"
341666
+ currentVersion: "1.82.0"
341644
341667
  });
341645
341668
  console.error(`
341646
341669
  Error: Windows NPM detected in WSL
@@ -342175,7 +342198,7 @@ function detectLinuxGlobPatternWarnings() {
342175
342198
  }
342176
342199
  async function getDoctorDiagnostic() {
342177
342200
  const installationType = await getCurrentInstallationType();
342178
- const version2 = typeof MACRO !== "undefined" ? "1.81.9" : "unknown";
342201
+ const version2 = typeof MACRO !== "undefined" ? "1.82.0" : "unknown";
342179
342202
  const installationPath = await getInstallationPath();
342180
342203
  const invokedBinary = getInvokedBinary();
342181
342204
  const multipleInstallations = await detectMultipleInstallations();
@@ -343110,8 +343133,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
343110
343133
  const maxVersion = await getMaxVersion();
343111
343134
  if (maxVersion && gt(version2, maxVersion)) {
343112
343135
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
343113
- if (gte("1.81.9", maxVersion)) {
343114
- logForDebugging(`Native installer: current version ${"1.81.9"} is already at or above maxVersion ${maxVersion}, skipping update`);
343136
+ if (gte("1.82.0", maxVersion)) {
343137
+ logForDebugging(`Native installer: current version ${"1.82.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
343115
343138
  logEvent("tengu_native_update_skipped_max_version", {
343116
343139
  latency_ms: Date.now() - startTime,
343117
343140
  max_version: maxVersion,
@@ -343122,7 +343145,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
343122
343145
  version2 = maxVersion;
343123
343146
  }
343124
343147
  }
343125
- if (!forceReinstall && version2 === "1.81.9" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
343148
+ if (!forceReinstall && version2 === "1.82.0" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
343126
343149
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
343127
343150
  logEvent("tengu_native_update_complete", {
343128
343151
  latency_ms: Date.now() - startTime,
@@ -413812,7 +413835,7 @@ function isAnyTracingEnabled() {
413812
413835
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
413813
413836
  }
413814
413837
  function getTracer() {
413815
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.81.9");
413838
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.82.0");
413816
413839
  }
413817
413840
  function createSpanAttributes(spanType, customAttributes = {}) {
413818
413841
  const baseAttributes = getTelemetryAttributes();
@@ -443951,7 +443974,7 @@ function Feedback({
443951
443974
  platform: env2.platform,
443952
443975
  gitRepo: envInfo.isGit,
443953
443976
  terminal: env2.terminal,
443954
- version: "1.81.9",
443977
+ version: "1.82.0",
443955
443978
  transcript: normalizeMessagesForAPI(messages),
443956
443979
  errors: sanitizedErrors,
443957
443980
  lastApiRequest: getLastAPIRequest(),
@@ -444143,7 +444166,7 @@ function Feedback({
444143
444166
  ", ",
444144
444167
  env2.terminal,
444145
444168
  ", v",
444146
- "1.81.9"
444169
+ "1.82.0"
444147
444170
  ]
444148
444171
  }, undefined, true, undefined, this)
444149
444172
  ]
@@ -444249,7 +444272,7 @@ ${sanitizedDescription}
444249
444272
  ` + `**Environment Info**
444250
444273
  ` + `- Platform: ${env2.platform}
444251
444274
  ` + `- Terminal: ${env2.terminal}
444252
- ` + `- Version: ${"1.81.9"}
444275
+ ` + `- Version: ${"1.82.0"}
444253
444276
  ` + `- Feedback ID: ${feedbackId}
444254
444277
  ` + `
444255
444278
  **Errors**
@@ -447359,7 +447382,7 @@ function buildPrimarySection() {
447359
447382
  }, undefined, false, undefined, this);
447360
447383
  return [{
447361
447384
  label: "Version",
447362
- value: "1.81.9"
447385
+ value: "1.82.0"
447363
447386
  }, {
447364
447387
  label: "Session name",
447365
447388
  value: nameValue
@@ -450862,7 +450885,7 @@ function Config({
450862
450885
  }
450863
450886
  }, undefined, false, undefined, this)
450864
450887
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
450865
- currentVersion: "1.81.9",
450888
+ currentVersion: "1.82.0",
450866
450889
  onChoice: (choice) => {
450867
450890
  setShowSubmenu(null);
450868
450891
  setTabsHidden(false);
@@ -450874,7 +450897,7 @@ function Config({
450874
450897
  autoUpdatesChannel: "stable"
450875
450898
  };
450876
450899
  if (choice === "stay") {
450877
- newSettings.minimumVersion = "1.81.9";
450900
+ newSettings.minimumVersion = "1.82.0";
450878
450901
  }
450879
450902
  updateSettingsForSource("userSettings", newSettings);
450880
450903
  setSettingsData((prev_27) => ({
@@ -459183,7 +459206,7 @@ function HelpV2(t0) {
459183
459206
  let t6;
459184
459207
  if ($2[31] !== tabs) {
459185
459208
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
459186
- title: `UR v${"1.81.9"}`,
459209
+ title: `UR v${"1.82.0"}`,
459187
459210
  color: "professionalBlue",
459188
459211
  defaultTab: "general",
459189
459212
  children: tabs
@@ -460116,7 +460139,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
460116
460139
  async function handleInitialize(options2) {
460117
460140
  return {
460118
460141
  name: "UR",
460119
- version: "1.81.9",
460142
+ version: "1.82.0",
460120
460143
  protocolVersion: "0.1.0",
460121
460144
  workspaceRoot: options2.cwd,
460122
460145
  capabilities: {
@@ -477224,7 +477247,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
477224
477247
  return [];
477225
477248
  }
477226
477249
  }
477227
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.9") {
477250
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.82.0") {
477228
477251
  if (process.env.USER_TYPE === "ant") {
477229
477252
  const changelog = "";
477230
477253
  if (changelog) {
@@ -477251,7 +477274,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.9")
477251
477274
  releaseNotes
477252
477275
  };
477253
477276
  }
477254
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.81.9") {
477277
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.82.0") {
477255
477278
  if (process.env.USER_TYPE === "ant") {
477256
477279
  const changelog = "";
477257
477280
  if (changelog) {
@@ -480159,7 +480182,7 @@ function getRecentActivitySync() {
480159
480182
  return cachedActivity;
480160
480183
  }
480161
480184
  function getLogoDisplayData() {
480162
- const version2 = process.env.DEMO_VERSION ?? "1.81.9";
480185
+ const version2 = process.env.DEMO_VERSION ?? "1.82.0";
480163
480186
  const serverUrl = getDirectConnectServerUrl();
480164
480187
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
480165
480188
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -481047,7 +481070,7 @@ function LogoV2() {
481047
481070
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
481048
481071
  t2 = () => {
481049
481072
  const currentConfig = getGlobalConfig();
481050
- if (currentConfig.lastReleaseNotesSeen === "1.81.9") {
481073
+ if (currentConfig.lastReleaseNotesSeen === "1.82.0") {
481051
481074
  return;
481052
481075
  }
481053
481076
  saveGlobalConfig(_temp325);
@@ -481735,12 +481758,12 @@ function LogoV2() {
481735
481758
  return t41;
481736
481759
  }
481737
481760
  function _temp325(current) {
481738
- if (current.lastReleaseNotesSeen === "1.81.9") {
481761
+ if (current.lastReleaseNotesSeen === "1.82.0") {
481739
481762
  return current;
481740
481763
  }
481741
481764
  return {
481742
481765
  ...current,
481743
- lastReleaseNotesSeen: "1.81.9"
481766
+ lastReleaseNotesSeen: "1.82.0"
481744
481767
  };
481745
481768
  }
481746
481769
  function _temp241(s_0) {
@@ -497690,7 +497713,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
497690
497713
  if (spec.name !== specName) {
497691
497714
  throw new Error("Agentic CI workflow spec name does not match");
497692
497715
  }
497693
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.9" : "1.81.9");
497716
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.82.0" : "1.82.0");
497694
497717
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
497695
497718
  throw new Error("invalid ur-agent package version");
497696
497719
  }
@@ -498683,7 +498706,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
498683
498706
  path: ".github/workflows/ur.yml",
498684
498707
  root: "project",
498685
498708
  content: compileAgenticCiWorkflow("default", {
498686
- packageVersion: typeof MACRO !== "undefined" ? "1.81.9" : "1.81.9"
498709
+ packageVersion: typeof MACRO !== "undefined" ? "1.82.0" : "1.82.0"
498687
498710
  })
498688
498711
  },
498689
498712
  {
@@ -498746,7 +498769,7 @@ function value(tokens, flag) {
498746
498769
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
498747
498770
  }
498748
498771
  function cliVersion() {
498749
- return typeof MACRO !== "undefined" ? "1.81.9" : "1.81.9";
498772
+ return typeof MACRO !== "undefined" ? "1.82.0" : "1.82.0";
498750
498773
  }
498751
498774
  function workflowPath(cwd2) {
498752
498775
  return join168(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -504602,7 +504625,7 @@ function createAcpStdioApp(deps) {
504602
504625
  }
504603
504626
  },
504604
504627
  authMethods: [],
504605
- agentInfo: { name: "UR-Nexus", version: "1.81.9" }
504628
+ agentInfo: { name: "UR-Nexus", version: "1.82.0" }
504606
504629
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
504607
504630
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
504608
504631
  await runtime2.announce({
@@ -504699,7 +504722,7 @@ function createAcpStdioAgent(deps) {
504699
504722
  }
504700
504723
  },
504701
504724
  authMethods: [],
504702
- agentInfo: { name: "UR-Nexus", version: "1.81.9" }
504725
+ agentInfo: { name: "UR-Nexus", version: "1.82.0" }
504703
504726
  });
504704
504727
  return;
504705
504728
  case "authenticate":
@@ -715951,7 +715974,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
715951
715974
  smapsRollup,
715952
715975
  platform: process.platform,
715953
715976
  nodeVersion: process.version,
715954
- ccVersion: "1.81.9"
715977
+ ccVersion: "1.82.0"
715955
715978
  };
715956
715979
  }
715957
715980
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -716540,7 +716563,7 @@ var init_bridge_kick = __esm(() => {
716540
716563
  var call154 = async () => {
716541
716564
  return {
716542
716565
  type: "text",
716543
- value: "1.81.9"
716566
+ value: "1.82.0"
716544
716567
  };
716545
716568
  }, version2, version_default;
716546
716569
  var init_version = __esm(() => {
@@ -728008,7 +728031,7 @@ function generateHtmlReport(data, insights) {
728008
728031
  </html>`;
728009
728032
  }
728010
728033
  function buildExportData(data, insights, facets, remoteStats) {
728011
- const version3 = typeof MACRO !== "undefined" ? "1.81.9" : "unknown";
728034
+ const version3 = typeof MACRO !== "undefined" ? "1.82.0" : "unknown";
728012
728035
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
728013
728036
  const facets_summary = {
728014
728037
  total: facets.size,
@@ -732321,7 +732344,7 @@ var init_sessionStorage = __esm(() => {
732321
732344
  init_settings2();
732322
732345
  init_slowOperations();
732323
732346
  init_uuid();
732324
- VERSION7 = typeof MACRO !== "undefined" ? "1.81.9" : "unknown";
732347
+ VERSION7 = typeof MACRO !== "undefined" ? "1.82.0" : "unknown";
732325
732348
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
732326
732349
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
732327
732350
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -733536,7 +733559,7 @@ var init_filesystem = __esm(() => {
733536
733559
  });
733537
733560
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
733538
733561
  const nonce = randomBytes24(16).toString("hex");
733539
- return join243(getURTempDir(), "bundled-skills", "1.81.9", nonce);
733562
+ return join243(getURTempDir(), "bundled-skills", "1.82.0", nonce);
733540
733563
  });
733541
733564
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
733542
733565
  });
@@ -739936,11 +739959,26 @@ function computeFingerprint(messageText2, version3) {
739936
739959
  }
739937
739960
  function computeFingerprintFromMessages(messages) {
739938
739961
  const firstMessageText = extractFirstMessageText(messages);
739939
- return computeFingerprint(firstMessageText, "1.81.9");
739962
+ return computeFingerprint(firstMessageText, "1.82.0");
739940
739963
  }
739941
739964
  var FINGERPRINT_SALT = "59cf53e54c78";
739942
739965
  var init_fingerprint = () => {};
739943
739966
 
739967
+ // src/utils/model/providerRequestTuning.ts
739968
+ function usesConservativeOutputReservation(provider) {
739969
+ return CONSERVATIVE_OUTPUT_PROVIDERS.has(provider);
739970
+ }
739971
+ var CONSERVATIVE_OUTPUT_PROVIDERS, SELF_HOSTED_DEFAULT_MAX_OUTPUT_TOKENS = 4096;
739972
+ var init_providerRequestTuning = __esm(() => {
739973
+ CONSERVATIVE_OUTPUT_PROVIDERS = new Set([
739974
+ "ollama",
739975
+ "lmstudio",
739976
+ "llama.cpp",
739977
+ "vllm",
739978
+ "openai-compatible"
739979
+ ]);
739980
+ });
739981
+
739944
739982
  // src/services/compact/apiMicrocompact.ts
739945
739983
  function getAPIContextManagement(options5) {
739946
739984
  const {
@@ -740690,7 +740728,7 @@ ${deferredToolList}
740690
740728
  betasParams.push(STRUCTURED_OUTPUTS_BETA_HEADER);
740691
740729
  }
740692
740730
  }
740693
- const maxOutputTokens2 = retryContext?.maxTokensOverride || options5.maxOutputTokensOverride || getMaxOutputTokensForModel(options5.model);
740731
+ const maxOutputTokens2 = retryContext?.maxTokensOverride || options5.maxOutputTokensOverride || getMaxOutputTokensForModel(options5.model, options5.providerSettings?.active ?? getRuntimeProvider());
740694
740732
  const hasThinking = thinkingConfig.type !== "disabled" && !isEnvTruthy(process.env.UR_CODE_DISABLE_THINKING);
740695
740733
  let thinking = undefined;
740696
740734
  if (hasThinking && modelSupportsThinking(options5.model)) {
@@ -741762,9 +741800,9 @@ function adjustParamsForNonStreaming(params, maxTokensCap) {
741762
741800
  function isMaxTokensCapEnabled() {
741763
741801
  return getFeatureValue_CACHED_MAY_BE_STALE("tengu_otk_slot_v1", false);
741764
741802
  }
741765
- function getMaxOutputTokensForModel(model) {
741766
- const maxOutputTokens = getModelMaxOutputTokens(model);
741767
- const defaultTokens = isMaxTokensCapEnabled() ? Math.min(maxOutputTokens.default, CAPPED_DEFAULT_MAX_TOKENS) : maxOutputTokens.default;
741803
+ function getMaxOutputTokensForModel(model, provider = getRuntimeProvider()) {
741804
+ const maxOutputTokens = getModelMaxOutputTokens(model, provider);
741805
+ const defaultTokens = usesConservativeOutputReservation(provider) ? Math.min(maxOutputTokens.default, SELF_HOSTED_DEFAULT_MAX_OUTPUT_TOKENS) : isMaxTokensCapEnabled() ? Math.min(maxOutputTokens.default, CAPPED_DEFAULT_MAX_TOKENS) : maxOutputTokens.default;
741768
741806
  const result = validateBoundedIntEnvVar("UR_CODE_MAX_OUTPUT_TOKENS", process.env.UR_CODE_MAX_OUTPUT_TOKENS, defaultTokens, maxOutputTokens.upperLimit);
741769
741807
  return result.effective;
741770
741808
  }
@@ -741785,6 +741823,7 @@ var init_ur2 = __esm(() => {
741785
741823
  init_log2();
741786
741824
  init_messages();
741787
741825
  init_model();
741826
+ init_providerRequestTuning();
741788
741827
  init_tokens();
741789
741828
  init_growthbook();
741790
741829
  init_urAiLimits();
@@ -741871,7 +741910,7 @@ async function sideQuery(opts) {
741871
741910
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
741872
741911
  }
741873
741912
  const messageText2 = extractFirstUserMessageText(messages);
741874
- const fingerprint2 = computeFingerprint(messageText2, "1.81.9");
741913
+ const fingerprint2 = computeFingerprint(messageText2, "1.82.0");
741875
741914
  const attributionHeader = getAttributionHeader(fingerprint2);
741876
741915
  const systemBlocks = [
741877
741916
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -746705,7 +746744,7 @@ function buildSystemInitMessage(inputs) {
746705
746744
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
746706
746745
  apiKeySource: getURHQApiKeyWithSource().source,
746707
746746
  betas: getSdkBetas(),
746708
- ur_version: "1.81.9",
746747
+ ur_version: "1.82.0",
746709
746748
  output_style: outputStyle,
746710
746749
  agents: inputs.agents.map((agent2) => agent2.agentType),
746711
746750
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -760541,7 +760580,7 @@ var init_useVoiceEnabled = __esm(() => {
760541
760580
  function getSemverPart(version3) {
760542
760581
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
760543
760582
  }
760544
- function useUpdateNotification(updatedVersion, initialVersion = "1.81.9") {
760583
+ function useUpdateNotification(updatedVersion, initialVersion = "1.82.0") {
760545
760584
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
760546
760585
  if (!updatedVersion) {
760547
760586
  return null;
@@ -760590,7 +760629,7 @@ function AutoUpdater({
760590
760629
  return;
760591
760630
  }
760592
760631
  if (false) {}
760593
- const currentVersion = "1.81.9";
760632
+ const currentVersion = "1.82.0";
760594
760633
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
760595
760634
  let latestVersion = await getLatestVersion(channel);
760596
760635
  const isDisabled = isAutoUpdaterDisabled();
@@ -760819,12 +760858,12 @@ function NativeAutoUpdater({
760819
760858
  logEvent("tengu_native_auto_updater_start", {});
760820
760859
  try {
760821
760860
  const maxVersion = await getMaxVersion();
760822
- if (maxVersion && gt("1.81.9", maxVersion)) {
760861
+ if (maxVersion && gt("1.82.0", maxVersion)) {
760823
760862
  const msg = await getMaxVersionMessage();
760824
760863
  setMaxVersionIssue(msg ?? "affects your version");
760825
760864
  }
760826
760865
  const result = await installLatest(channel);
760827
- const currentVersion = "1.81.9";
760866
+ const currentVersion = "1.82.0";
760828
760867
  const latencyMs = Date.now() - startTime;
760829
760868
  if (result.lockFailed) {
760830
760869
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -760961,17 +761000,17 @@ function PackageManagerAutoUpdater(t0) {
760961
761000
  const maxVersion = await getMaxVersion();
760962
761001
  if (maxVersion && latest && gt(latest, maxVersion)) {
760963
761002
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
760964
- if (gte("1.81.9", maxVersion)) {
760965
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.9"} is already at or above maxVersion ${maxVersion}, skipping update`);
761003
+ if (gte("1.82.0", maxVersion)) {
761004
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.82.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
760966
761005
  setUpdateAvailable(false);
760967
761006
  return;
760968
761007
  }
760969
761008
  latest = maxVersion;
760970
761009
  }
760971
- const hasUpdate = latest && !gte("1.81.9", latest) && !shouldSkipVersion(latest);
761010
+ const hasUpdate = latest && !gte("1.82.0", latest) && !shouldSkipVersion(latest);
760972
761011
  setUpdateAvailable(!!hasUpdate);
760973
761012
  if (hasUpdate) {
760974
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.9"} -> ${latest}`);
761013
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.82.0"} -> ${latest}`);
760975
761014
  }
760976
761015
  };
760977
761016
  $2[0] = t1;
@@ -761005,7 +761044,7 @@ function PackageManagerAutoUpdater(t0) {
761005
761044
  wrap: "truncate",
761006
761045
  children: [
761007
761046
  "currentVersion: ",
761008
- "1.81.9"
761047
+ "1.82.0"
761009
761048
  ]
761010
761049
  }, undefined, true, undefined, this);
761011
761050
  $2[3] = verbose;
@@ -771858,7 +771897,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
771858
771897
  project_dir: getOriginalCwd(),
771859
771898
  added_dirs: addedDirs
771860
771899
  },
771861
- version: "1.81.9",
771900
+ version: "1.82.0",
771862
771901
  output_style: {
771863
771902
  name: outputStyleName
771864
771903
  },
@@ -771993,7 +772032,7 @@ function StatusLineInner({
771993
772032
  const attention = customStatusError ?? taskAttention;
771994
772033
  const terminalSize = React133.useContext(TerminalSizeContext);
771995
772034
  const defaultStatusLineText = buildDefaultStatusBar({
771996
- version: "1.81.9",
772035
+ version: "1.82.0",
771997
772036
  providerLabel: providerRuntime.providerLabel,
771998
772037
  authMode: providerRuntime.authLabel,
771999
772038
  model: renderModelName(mainLoopModel) || providerRuntime.model || "",
@@ -784249,7 +784288,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
784249
784288
  } catch {}
784250
784289
  const data = {
784251
784290
  trigger: trigger2,
784252
- version: "1.81.9",
784291
+ version: "1.82.0",
784253
784292
  platform: process.platform,
784254
784293
  transcript,
784255
784294
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -796618,7 +796657,7 @@ function WelcomeV2() {
796618
796657
  dimColor: true,
796619
796658
  children: [
796620
796659
  "v",
796621
- "1.81.9"
796660
+ "1.82.0"
796622
796661
  ]
796623
796662
  }, undefined, true, undefined, this)
796624
796663
  ]
@@ -797878,7 +797917,7 @@ function completeOnboarding() {
797878
797917
  saveGlobalConfig((current) => ({
797879
797918
  ...current,
797880
797919
  hasCompletedOnboarding: true,
797881
- lastOnboardingVersion: "1.81.9"
797920
+ lastOnboardingVersion: "1.82.0"
797882
797921
  }));
797883
797922
  }
797884
797923
  function showDialog(root2, renderer) {
@@ -803024,7 +803063,7 @@ function appendToLog(path28, message) {
803024
803063
  cwd: getFsImplementation().cwd(),
803025
803064
  userType: process.env.USER_TYPE,
803026
803065
  sessionId: getSessionId(),
803027
- version: "1.81.9"
803066
+ version: "1.82.0"
803028
803067
  };
803029
803068
  getLogWriter(path28).write(messageWithTimestamp);
803030
803069
  }
@@ -807188,8 +807227,8 @@ async function getEnvLessBridgeConfig() {
807188
807227
  }
807189
807228
  async function checkEnvLessBridgeMinVersion() {
807190
807229
  const cfg = await getEnvLessBridgeConfig();
807191
- if (cfg.min_version && lt("1.81.9", cfg.min_version)) {
807192
- return `Your version of UR (${"1.81.9"}) is too old for Remote Control.
807230
+ if (cfg.min_version && lt("1.82.0", cfg.min_version)) {
807231
+ return `Your version of UR (${"1.82.0"}) is too old for Remote Control.
807193
807232
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
807194
807233
  }
807195
807234
  return null;
@@ -807663,7 +807702,7 @@ async function initBridgeCore(params) {
807663
807702
  const rawApi = createBridgeApiClient({
807664
807703
  baseUrl,
807665
807704
  getAccessToken,
807666
- runnerVersion: "1.81.9",
807705
+ runnerVersion: "1.82.0",
807667
807706
  onDebug: logForDebugging,
807668
807707
  onAuth401,
807669
807708
  getTrustedDeviceToken
@@ -817139,7 +817178,7 @@ function getAgUiCapabilities() {
817139
817178
  name: "UR-Nexus",
817140
817179
  type: "ur-nexus",
817141
817180
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
817142
- version: "1.81.9",
817181
+ version: "1.82.0",
817143
817182
  provider: "UR",
817144
817183
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
817145
817184
  },
@@ -818366,7 +818405,7 @@ function createMCPServer(cwd4, debug2, verbose) {
818366
818405
  };
818367
818406
  const server2 = new Server({
818368
818407
  name: "ur-nexus",
818369
- version: "1.81.9"
818408
+ version: "1.82.0"
818370
818409
  }, {
818371
818410
  capabilities: {
818372
818411
  tools: {}
@@ -819570,7 +819609,7 @@ function thrownResponse(error40) {
819570
819609
  }
819571
819610
  async function createUrMcp2026Runtime(options5) {
819572
819611
  const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
819573
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.9" }, { capabilities: {} });
819612
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.82.0" }, { capabilities: {} });
819574
819613
  const [clientTransport, serverTransport] = createLinkedTransportPair();
819575
819614
  try {
819576
819615
  await server2.connect(serverTransport);
@@ -819581,7 +819620,7 @@ async function createUrMcp2026Runtime(options5) {
819581
819620
  }
819582
819621
  const runtime2 = new Mcp2026Runtime({
819583
819622
  cwd: options5.cwd,
819584
- version: "1.81.9",
819623
+ version: "1.82.0",
819585
819624
  backend: {
819586
819625
  listTools: async () => {
819587
819626
  const listed = await client2.listTools();
@@ -822316,7 +822355,7 @@ async function update() {
822316
822355
  logEvent("tengu_update_check", {});
822317
822356
  const diagnostic2 = await getDoctorDiagnostic();
822318
822357
  const result = await checkUpgradeStatus({
822319
- currentVersion: "1.81.9",
822358
+ currentVersion: "1.82.0",
822320
822359
  packageName: UR_AGENT_PACKAGE_NAME,
822321
822360
  installationType: diagnostic2.installationType,
822322
822361
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -823644,7 +823683,7 @@ ${customInstructions}` : customInstructions;
823644
823683
  }
823645
823684
  }
823646
823685
  logForDiagnosticsNoPII("info", "started", {
823647
- version: "1.81.9",
823686
+ version: "1.82.0",
823648
823687
  is_native_binary: isInBundledMode()
823649
823688
  });
823650
823689
  registerCleanup(async () => {
@@ -824431,7 +824470,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
824431
824470
  pendingHookMessages
824432
824471
  }, renderAndRun);
824433
824472
  }
824434
- }).version("1.81.9 (UR-Nexus)", "-v, --version", "Output the version number");
824473
+ }).version("1.82.0 (UR-Nexus)", "-v, --version", "Output the version number");
824435
824474
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
824436
824475
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
824437
824476
  if (canUserConfigureAdvisor()) {
@@ -825558,7 +825597,7 @@ if (false) {}
825558
825597
  async function main2() {
825559
825598
  const args = process.argv.slice(2);
825560
825599
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
825561
- console.log(`${"1.81.9"} (UR-Nexus)`);
825600
+ console.log(`${"1.82.0"} (UR-Nexus)`);
825562
825601
  return;
825563
825602
  }
825564
825603
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
@@ -19,7 +19,7 @@ You need:
19
19
 
20
20
  ```sh
21
21
  ur --version
22
- # expected for this release: "1.81.9 (UR-Nexus)"
22
+ # expected for this release: "1.82.0 (UR-Nexus)"
23
23
  ```
24
24
 
25
25
  ### 0.0 Redteam mode and Reverse Skills (1.81.0)
@@ -45,7 +45,7 @@
45
45
  <main id="content" class="content">
46
46
  <header class="topbar">
47
47
  <div>
48
- <p class="eyebrow">Version 1.81.9</p>
48
+ <p class="eyebrow">Version 1.82.0</p>
49
49
  <h1>UR-Nexus Documentation</h1>
50
50
  <p class="lead">A practical, tutorial-style reference for installing, configuring, automating, extending, and operating UR-Nexus.</p>
51
51
  </div>
@@ -7,7 +7,7 @@ plugins {
7
7
  }
8
8
 
9
9
  group = "dev.urnexus"
10
- version = "1.81.9"
10
+ version = "1.82.0"
11
11
 
12
12
  repositories {
13
13
  mavenCentral()
@@ -2,7 +2,7 @@
2
2
  "name": "ur-inline-diffs",
3
3
  "displayName": "UR Inline Diffs",
4
4
  "description": "Review, apply, and reject UR inline diff bundles from .ur/ide/diffs inside VS Code.",
5
- "version": "1.81.9",
5
+ "version": "1.82.0",
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.81.9",
3
+ "version": "1.82.0",
4
4
  "description": "UR-Nexus — autonomous engineering workflow engine (plan, execute, test, verify, document, benchmark, reproduce)",
5
5
  "type": "module",
6
6
  "packageManager": "bun@1.3.14",