ur-agent 1.81.8 → 1.81.10

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,34 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.81.10
4
+
5
+ - Reduced provider latency and memory pressure without removing the complete
6
+ system prompt or tool set from real agent work. Self-hosted Ollama, vLLM,
7
+ LM Studio, llama.cpp, and OpenAI-compatible requests now reserve a realistic
8
+ 4K output turn, resume automatically if it is exhausted, and keep a stable
9
+ prompt prefix so local/server prefix caches can be reused across sessions.
10
+ - Added a safe lightweight path for exact greetings on every runnable provider.
11
+ These turns send no irrelevant repository tools, use a 1K output budget, and
12
+ use an 8K Ollama context; coding, media, structured-output, custom-prompt,
13
+ and ongoing agent turns retain their full quality-bearing context.
14
+ - Prevented Ollama helper calls from automatically loading a second installed
15
+ model and evicting the warm session model. A separate helper model remains
16
+ available through the explicit `OLLAMA_SMALL_FAST_MODEL` override.
17
+ - Added adaptive recovery for vLLM's OpenAI-compatible context-overflow errors,
18
+ including wrapped/multiline and comma-formatted token counts, and fixed the
19
+ retry calculation so thinking budgets can never produce another oversized
20
+ request.
21
+ - Applied provider-discovered completion limits to request sizing, including
22
+ OpenRouter's live `max_output_tokens`, so defaults and explicit overrides are
23
+ validated against the selected model's real limit.
24
+
25
+ ## 1.81.9
26
+
27
+ - Restored the previous compact six-row UR wordmark as the primary welcome
28
+ logo while retaining the minimal `UR` fallback for narrow terminals. The
29
+ original house artwork, theme-aware brand color, screen-reader text, and
30
+ responsive layout remain intact.
31
+
3
32
  ## 1.81.8
4
33
 
5
34
  - Made reasoning effort provider- and model-accurate across the model picker,
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)
@@ -57299,9 +57315,19 @@ function getOllamaKeepAlive(env4 = process.env) {
57299
57315
  const asNumber = Number(trimmed);
57300
57316
  return Number.isFinite(asNumber) ? asNumber : trimmed;
57301
57317
  }
57302
- var MIN_AGENT_NUM_CTX = 32768, DEFAULT_OLLAMA_KEEP_ALIVE = "30m", NUM_CTX_BUCKETS, OUTPUT_HEADROOM_TOKENS = 4096;
57318
+ var MIN_AGENT_NUM_CTX = 32768, MIN_CHAT_NUM_CTX = 8192, 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
+ 8192,
57322
+ 16384,
57323
+ 32768,
57324
+ 49152,
57325
+ 65536,
57326
+ 98304,
57327
+ 131072,
57328
+ 196608,
57329
+ 262144
57330
+ ];
57305
57331
  });
57306
57332
 
57307
57333
  // node_modules/react/cjs/react.development.js
@@ -89922,15 +89948,20 @@ function toOllamaChatRequest(params, stream4, capabilities, baseUrl = getEffecti
89922
89948
  if (typeof params.max_tokens === "number") {
89923
89949
  options.num_predict = params.max_tokens;
89924
89950
  }
89951
+ const estimatedPromptTokens = estimateInputTokens(params);
89952
+ const maxTokens = typeof params.max_tokens === "number" ? params.max_tokens : undefined;
89953
+ const isLightweightChat = tools.length === 0 && (maxTokens ?? Number.POSITIVE_INFINITY) <= 1024 && estimatedPromptTokens <= 4096;
89925
89954
  const numCtx = computeOllamaNumCtx({
89926
89955
  modelContextLength: getOllamaContextLengthForModel(params.model, baseUrl),
89927
- estimatedPromptTokens: estimateInputTokens(params),
89928
- maxTokens: typeof params.max_tokens === "number" ? params.max_tokens : undefined,
89929
- override: getOllamaNumCtxOverride()
89956
+ estimatedPromptTokens,
89957
+ maxTokens,
89958
+ override: getOllamaNumCtxOverride(),
89959
+ ...isLightweightChat ? { minCtx: MIN_CHAT_NUM_CTX } : {}
89930
89960
  });
89931
89961
  if (numCtx !== undefined) {
89932
89962
  options.num_ctx = numCtx;
89933
89963
  }
89964
+ logForDebugging(`Ollama request sizing: ~${estimatedPromptTokens} input tokens, ${maxTokens ?? "default"} output tokens, ${tools.length} tools, num_ctx=${numCtx ?? "server-default"}`);
89934
89965
  if (Object.keys(options).length > 0) {
89935
89966
  request.options = options;
89936
89967
  }
@@ -96080,7 +96111,7 @@ function calculateContextPercentages(currentUsage, contextWindowSize) {
96080
96111
  remaining: 100 - clampedUsed
96081
96112
  };
96082
96113
  }
96083
- function getModelMaxOutputTokens(model) {
96114
+ function getModelMaxOutputTokens(model, provider, settings) {
96084
96115
  let defaultTokens = MAX_OUTPUT_TOKENS_DEFAULT;
96085
96116
  let upperLimit = MAX_OUTPUT_TOKENS_UPPER_LIMIT;
96086
96117
  if (process.env.USER_TYPE === "ant") {
@@ -96096,6 +96127,11 @@ function getModelMaxOutputTokens(model) {
96096
96127
  upperLimit = cap.max_tokens;
96097
96128
  defaultTokens = Math.min(defaultTokens, upperLimit);
96098
96129
  }
96130
+ const providerOutputLimit = getProviderOutputTokenLimitForModel(model, provider, settings);
96131
+ if (providerOutputLimit !== undefined) {
96132
+ upperLimit = Math.min(upperLimit, providerOutputLimit);
96133
+ defaultTokens = Math.min(defaultTokens, upperLimit);
96134
+ }
96099
96135
  return { default: defaultTokens, upperLimit };
96100
96136
  }
96101
96137
  function getMaxThinkingTokensForModel(model) {
@@ -96808,7 +96844,6 @@ __export(exports_model, {
96808
96844
  });
96809
96845
  function __resetOllamaRouteMemoForTests() {
96810
96846
  memoizedRoutedDefaultModel = undefined;
96811
- memoizedRoutedFastModel = undefined;
96812
96847
  }
96813
96848
  function getDefaultOllamaModel() {
96814
96849
  const explicitModel = process.env.OLLAMA_MODEL || process.env.UR_MODEL;
@@ -96837,15 +96872,6 @@ function getSmallFastModel(providerSettings) {
96837
96872
  if (process.env.OLLAMA_SMALL_FAST_MODEL) {
96838
96873
  return process.env.OLLAMA_SMALL_FAST_MODEL;
96839
96874
  }
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
96875
  const sessionModel = getMainLoopModel();
96850
96876
  if (sessionModel)
96851
96877
  return sessionModel;
@@ -97166,7 +97192,7 @@ function getMarketingNameForModel(modelId) {
97166
97192
  function normalizeModelStringForAPI(model) {
97167
97193
  return model.replace(/\[(1|2)m\]/gi, "");
97168
97194
  }
97169
- var DEFAULT_OLLAMA_MODEL2 = "qwen2.5-coder:7b", memoizedRoutedDefaultModel, memoizedRoutedFastModel, LEGACY_MODELO_FIRSTPARTY;
97195
+ var DEFAULT_OLLAMA_MODEL2 = "qwen2.5-coder:7b", memoizedRoutedDefaultModel, LEGACY_MODELO_FIRSTPARTY;
97170
97196
  var init_model = __esm(() => {
97171
97197
  init_state();
97172
97198
  init_auth();
@@ -108358,7 +108384,7 @@ var init_auth = __esm(() => {
108358
108384
 
108359
108385
  // src/utils/userAgent.ts
108360
108386
  function getURCodeUserAgent() {
108361
- return `ur/${"1.81.8"}`;
108387
+ return `ur/${"1.81.10"}`;
108362
108388
  }
108363
108389
 
108364
108390
  // src/utils/workloadContext.ts
@@ -108380,7 +108406,7 @@ function getUserAgent() {
108380
108406
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
108381
108407
  const workload = getWorkload();
108382
108408
  const workloadSuffix = workload ? `, workload/${workload}` : "";
108383
- return `ur-cli/${"1.81.8"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
108409
+ return `ur-cli/${"1.81.10"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
108384
108410
  }
108385
108411
  function getMCPUserAgent() {
108386
108412
  const parts = [];
@@ -108394,7 +108420,7 @@ function getMCPUserAgent() {
108394
108420
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
108395
108421
  }
108396
108422
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
108397
- return `ur/${"1.81.8"}${suffix}`;
108423
+ return `ur/${"1.81.10"}${suffix}`;
108398
108424
  }
108399
108425
  function getWebFetchUserAgent() {
108400
108426
  return `UR-User (${getURCodeUserAgent()})`;
@@ -108532,7 +108558,7 @@ var init_user = __esm(() => {
108532
108558
  deviceId,
108533
108559
  sessionId: getSessionId(),
108534
108560
  email: getEmail(),
108535
- appVersion: "1.81.8",
108561
+ appVersion: "1.81.10",
108536
108562
  platform: getHostPlatformForAnalytics(),
108537
108563
  organizationUuid,
108538
108564
  accountUuid,
@@ -116419,7 +116445,7 @@ var init_metadata = __esm(() => {
116419
116445
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
116420
116446
  WHITESPACE_REGEX = /\s+/;
116421
116447
  getVersionBase = memoize_default(() => {
116422
- const match = "1.81.8".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
116448
+ const match = "1.81.10".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
116423
116449
  return match ? match[0] : undefined;
116424
116450
  });
116425
116451
  buildEnvContext = memoize_default(async () => {
@@ -116459,7 +116485,7 @@ var init_metadata = __esm(() => {
116459
116485
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
116460
116486
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
116461
116487
  isURAiAuth: isURAISubscriber(),
116462
- version: "1.81.8",
116488
+ version: "1.81.10",
116463
116489
  versionBase: getVersionBase(),
116464
116490
  buildTime: "",
116465
116491
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -117129,7 +117155,7 @@ function initialize1PEventLogging() {
117129
117155
  const platform2 = getPlatform();
117130
117156
  const attributes = {
117131
117157
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
117132
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.81.8"
117158
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.81.10"
117133
117159
  };
117134
117160
  if (platform2 === "wsl") {
117135
117161
  const wslVersion = getWslVersion();
@@ -117157,7 +117183,7 @@ function initialize1PEventLogging() {
117157
117183
  })
117158
117184
  ]
117159
117185
  });
117160
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.81.8");
117186
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.81.10");
117161
117187
  }
117162
117188
  async function reinitialize1PEventLoggingIfConfigChanged() {
117163
117189
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -127123,7 +127149,7 @@ function formatA2AAgentCard(options = {}, pretty = true) {
127123
127149
  function formatA2AV1AgentCard(options = {}, pretty = true) {
127124
127150
  return JSON.stringify(buildA2AV1AgentCard(options), null, pretty ? 2 : 0);
127125
127151
  }
127126
- var urVersion = "1.81.8", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
127152
+ var urVersion = "1.81.10", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
127127
127153
  var init_trends = __esm(() => {
127128
127154
  init_a2aCardSignature();
127129
127155
  coverage = [
@@ -130013,7 +130039,7 @@ function getAttributionHeader(fingerprint) {
130013
130039
  if (!isAttributionHeaderEnabled()) {
130014
130040
  return "";
130015
130041
  }
130016
- const version2 = `${"1.81.8"}.${fingerprint}`;
130042
+ const version2 = `${"1.81.10"}.${fingerprint}`;
130017
130043
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
130018
130044
  const cch = "";
130019
130045
  const workload = getWorkload();
@@ -182998,7 +183024,11 @@ async function* withRetry(getClient, operation, options2) {
182998
183024
  throw error40;
182999
183025
  }
183000
183026
  const minRequired = (retryContext.thinkingConfig.type === "enabled" ? retryContext.thinkingConfig.budgetTokens : 0) + 1;
183001
- const adjustedMaxTokens = Math.max(FLOOR_OUTPUT_TOKENS, availableContext, minRequired);
183027
+ if (minRequired > availableContext) {
183028
+ logError2(new Error(`thinking budget requires ${minRequired} tokens but only ${availableContext} output tokens fit in the context window`));
183029
+ throw error40;
183030
+ }
183031
+ const adjustedMaxTokens = availableContext;
183002
183032
  retryContext.maxTokensOverride = adjustedMaxTokens;
183003
183033
  logEvent("tengu_max_tokens_context_overflow_adjustment", {
183004
183034
  inputTokens,
@@ -183079,21 +183109,18 @@ function parseMaxTokensContextOverflowError(error40) {
183079
183109
  if (error40.status !== 400 || !error40.message) {
183080
183110
  return;
183081
183111
  }
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) {
183112
+ const arithmeticMatch = error40.message.match(/input length and `max_tokens` exceed context limit:\s*([\d,]+)\s*\+\s*([\d,]+)\s*>\s*([\d,]+)/i);
183113
+ 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);
183114
+ const rawInputTokens = arithmeticMatch?.[1] ?? vllmMatch?.[3];
183115
+ const rawMaxTokens = arithmeticMatch?.[2] ?? vllmMatch?.[2];
183116
+ const rawContextLimit = arithmeticMatch?.[3] ?? vllmMatch?.[1];
183117
+ if (!rawInputTokens || !rawMaxTokens || !rawContextLimit) {
183088
183118
  return;
183089
183119
  }
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"));
183092
- return;
183093
- }
183094
- const inputTokens = parseInt(match[1], 10);
183095
- const maxTokens = parseInt(match[2], 10);
183096
- const contextLimit = parseInt(match[3], 10);
183120
+ const parseTokenCount = (value) => Number.parseInt(value.replaceAll(",", ""), 10);
183121
+ const inputTokens = parseTokenCount(rawInputTokens);
183122
+ const maxTokens = parseTokenCount(rawMaxTokens);
183123
+ const contextLimit = parseTokenCount(rawContextLimit);
183097
183124
  if (isNaN(inputTokens) || isNaN(maxTokens) || isNaN(contextLimit)) {
183098
183125
  return;
183099
183126
  }
@@ -184934,7 +184961,7 @@ var init_projectSafety = __esm(() => {
184934
184961
  function getInstruments() {
184935
184962
  if (instruments)
184936
184963
  return instruments;
184937
- const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.81.8");
184964
+ const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.81.10");
184938
184965
  instruments = {
184939
184966
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
184940
184967
  description: "GenAI operation duration.",
@@ -185032,7 +185059,7 @@ function genAiAgentAttributes() {
185032
185059
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
185033
185060
  "gen_ai.provider.name": "ur",
185034
185061
  "gen_ai.agent.name": "UR-Nexus",
185035
- "gen_ai.agent.version": "1.81.8"
185062
+ "gen_ai.agent.version": "1.81.10"
185036
185063
  };
185037
185064
  }
185038
185065
  function genAiWorkflowAttributes(workflowName, workflowRunId) {
@@ -185053,7 +185080,7 @@ function genAiWorkflowAttributes(workflowName, workflowRunId) {
185053
185080
  function startGenAiWorkflowSpan(workflowName, workflowRunId) {
185054
185081
  const attributes = genAiWorkflowAttributes(workflowName, workflowRunId);
185055
185082
  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.8").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
185083
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.10").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
185057
185084
  }
185058
185085
  function endGenAiWorkflowSpan(span, options2 = {}) {
185059
185086
  try {
@@ -185091,7 +185118,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
185091
185118
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
185092
185119
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
185093
185120
  }
185094
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.8").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
185121
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.10").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
185095
185122
  }
185096
185123
  function endGenAiMemorySpan(span, options2 = {}) {
185097
185124
  try {
@@ -278806,7 +278833,7 @@ function getTelemetryAttributes() {
278806
278833
  attributes["session.id"] = sessionId;
278807
278834
  }
278808
278835
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
278809
- attributes["app.version"] = "1.81.8";
278836
+ attributes["app.version"] = "1.81.10";
278810
278837
  }
278811
278838
  const oauthAccount = getOauthAccountInfo();
278812
278839
  if (oauthAccount) {
@@ -320210,7 +320237,7 @@ function getInstallationEnv() {
320210
320237
  return;
320211
320238
  }
320212
320239
  function getURCodeVersion() {
320213
- return "1.81.8";
320240
+ return "1.81.10";
320214
320241
  }
320215
320242
  async function getInstalledVSCodeExtensionVersion(command) {
320216
320243
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -327580,7 +327607,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
327580
327607
  const client2 = new Client({
327581
327608
  name: "ur",
327582
327609
  title: "UR",
327583
- version: "1.81.8",
327610
+ version: "1.81.10",
327584
327611
  description: "UR-Nexus autonomous engineering workflow engine",
327585
327612
  websiteUrl: PRODUCT_URL
327586
327613
  }, {
@@ -327941,7 +327968,7 @@ var init_client5 = __esm(() => {
327941
327968
  const client2 = new Client({
327942
327969
  name: "ur",
327943
327970
  title: "UR",
327944
- version: "1.81.8",
327971
+ version: "1.81.10",
327945
327972
  description: "UR-Nexus autonomous engineering workflow engine",
327946
327973
  websiteUrl: PRODUCT_URL
327947
327974
  }, {
@@ -340714,7 +340741,7 @@ async function createRuntime() {
340714
340741
  bootstrapTelemetry();
340715
340742
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
340716
340743
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
340717
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.81.8"
340744
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.81.10"
340718
340745
  }));
340719
340746
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
340720
340747
  resource,
@@ -340747,11 +340774,11 @@ async function createRuntime() {
340747
340774
  setMeterProvider(meterProvider);
340748
340775
  setLoggerProvider(loggerProvider);
340749
340776
  if (meterProvider) {
340750
- const meter = meterProvider.getMeter("ur-agent", "1.81.8");
340777
+ const meter = meterProvider.getMeter("ur-agent", "1.81.10");
340751
340778
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
340752
340779
  }
340753
340780
  if (loggerProvider) {
340754
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.81.8"));
340781
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.81.10"));
340755
340782
  }
340756
340783
  if (!cleanupRegistered3) {
340757
340784
  cleanupRegistered3 = true;
@@ -341413,9 +341440,9 @@ async function assertMinVersion() {
341413
341440
  if (false) {}
341414
341441
  try {
341415
341442
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
341416
- if (versionConfig.minVersion && lt("1.81.8", versionConfig.minVersion)) {
341443
+ if (versionConfig.minVersion && lt("1.81.10", versionConfig.minVersion)) {
341417
341444
  console.error(`
341418
- It looks like your version of UR (${"1.81.8"}) needs an update.
341445
+ It looks like your version of UR (${"1.81.10"}) needs an update.
341419
341446
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
341420
341447
 
341421
341448
  To update, please run:
@@ -341631,7 +341658,7 @@ async function installGlobalPackage(specificVersion) {
341631
341658
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
341632
341659
  logEvent("tengu_auto_updater_lock_contention", {
341633
341660
  pid: process.pid,
341634
- currentVersion: "1.81.8"
341661
+ currentVersion: "1.81.10"
341635
341662
  });
341636
341663
  return "in_progress";
341637
341664
  }
@@ -341640,7 +341667,7 @@ async function installGlobalPackage(specificVersion) {
341640
341667
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
341641
341668
  logError2(new Error("Windows NPM detected in WSL environment"));
341642
341669
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
341643
- currentVersion: "1.81.8"
341670
+ currentVersion: "1.81.10"
341644
341671
  });
341645
341672
  console.error(`
341646
341673
  Error: Windows NPM detected in WSL
@@ -342175,7 +342202,7 @@ function detectLinuxGlobPatternWarnings() {
342175
342202
  }
342176
342203
  async function getDoctorDiagnostic() {
342177
342204
  const installationType = await getCurrentInstallationType();
342178
- const version2 = typeof MACRO !== "undefined" ? "1.81.8" : "unknown";
342205
+ const version2 = typeof MACRO !== "undefined" ? "1.81.10" : "unknown";
342179
342206
  const installationPath = await getInstallationPath();
342180
342207
  const invokedBinary = getInvokedBinary();
342181
342208
  const multipleInstallations = await detectMultipleInstallations();
@@ -343110,8 +343137,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
343110
343137
  const maxVersion = await getMaxVersion();
343111
343138
  if (maxVersion && gt(version2, maxVersion)) {
343112
343139
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
343113
- if (gte("1.81.8", maxVersion)) {
343114
- logForDebugging(`Native installer: current version ${"1.81.8"} is already at or above maxVersion ${maxVersion}, skipping update`);
343140
+ if (gte("1.81.10", maxVersion)) {
343141
+ logForDebugging(`Native installer: current version ${"1.81.10"} is already at or above maxVersion ${maxVersion}, skipping update`);
343115
343142
  logEvent("tengu_native_update_skipped_max_version", {
343116
343143
  latency_ms: Date.now() - startTime,
343117
343144
  max_version: maxVersion,
@@ -343122,7 +343149,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
343122
343149
  version2 = maxVersion;
343123
343150
  }
343124
343151
  }
343125
- if (!forceReinstall && version2 === "1.81.8" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
343152
+ if (!forceReinstall && version2 === "1.81.10" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
343126
343153
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
343127
343154
  logEvent("tengu_native_update_complete", {
343128
343155
  latency_ms: Date.now() - startTime,
@@ -413812,7 +413839,7 @@ function isAnyTracingEnabled() {
413812
413839
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
413813
413840
  }
413814
413841
  function getTracer() {
413815
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.81.8");
413842
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.81.10");
413816
413843
  }
413817
413844
  function createSpanAttributes(spanType, customAttributes = {}) {
413818
413845
  const baseAttributes = getTelemetryAttributes();
@@ -443951,7 +443978,7 @@ function Feedback({
443951
443978
  platform: env2.platform,
443952
443979
  gitRepo: envInfo.isGit,
443953
443980
  terminal: env2.terminal,
443954
- version: "1.81.8",
443981
+ version: "1.81.10",
443955
443982
  transcript: normalizeMessagesForAPI(messages),
443956
443983
  errors: sanitizedErrors,
443957
443984
  lastApiRequest: getLastAPIRequest(),
@@ -444143,7 +444170,7 @@ function Feedback({
444143
444170
  ", ",
444144
444171
  env2.terminal,
444145
444172
  ", v",
444146
- "1.81.8"
444173
+ "1.81.10"
444147
444174
  ]
444148
444175
  }, undefined, true, undefined, this)
444149
444176
  ]
@@ -444249,7 +444276,7 @@ ${sanitizedDescription}
444249
444276
  ` + `**Environment Info**
444250
444277
  ` + `- Platform: ${env2.platform}
444251
444278
  ` + `- Terminal: ${env2.terminal}
444252
- ` + `- Version: ${"1.81.8"}
444279
+ ` + `- Version: ${"1.81.10"}
444253
444280
  ` + `- Feedback ID: ${feedbackId}
444254
444281
  ` + `
444255
444282
  **Errors**
@@ -447359,7 +447386,7 @@ function buildPrimarySection() {
447359
447386
  }, undefined, false, undefined, this);
447360
447387
  return [{
447361
447388
  label: "Version",
447362
- value: "1.81.8"
447389
+ value: "1.81.10"
447363
447390
  }, {
447364
447391
  label: "Session name",
447365
447392
  value: nameValue
@@ -450862,7 +450889,7 @@ function Config({
450862
450889
  }
450863
450890
  }, undefined, false, undefined, this)
450864
450891
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
450865
- currentVersion: "1.81.8",
450892
+ currentVersion: "1.81.10",
450866
450893
  onChoice: (choice) => {
450867
450894
  setShowSubmenu(null);
450868
450895
  setTabsHidden(false);
@@ -450874,7 +450901,7 @@ function Config({
450874
450901
  autoUpdatesChannel: "stable"
450875
450902
  };
450876
450903
  if (choice === "stay") {
450877
- newSettings.minimumVersion = "1.81.8";
450904
+ newSettings.minimumVersion = "1.81.10";
450878
450905
  }
450879
450906
  updateSettingsForSource("userSettings", newSettings);
450880
450907
  setSettingsData((prev_27) => ({
@@ -459183,7 +459210,7 @@ function HelpV2(t0) {
459183
459210
  let t6;
459184
459211
  if ($2[31] !== tabs) {
459185
459212
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
459186
- title: `UR v${"1.81.8"}`,
459213
+ title: `UR v${"1.81.10"}`,
459187
459214
  color: "professionalBlue",
459188
459215
  defaultTab: "general",
459189
459216
  children: tabs
@@ -460116,7 +460143,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
460116
460143
  async function handleInitialize(options2) {
460117
460144
  return {
460118
460145
  name: "UR",
460119
- version: "1.81.8",
460146
+ version: "1.81.10",
460120
460147
  protocolVersion: "0.1.0",
460121
460148
  workspaceRoot: options2.cwd,
460122
460149
  capabilities: {
@@ -477224,7 +477251,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
477224
477251
  return [];
477225
477252
  }
477226
477253
  }
477227
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.8") {
477254
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.10") {
477228
477255
  if (process.env.USER_TYPE === "ant") {
477229
477256
  const changelog = "";
477230
477257
  if (changelog) {
@@ -477251,7 +477278,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.8")
477251
477278
  releaseNotes
477252
477279
  };
477253
477280
  }
477254
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.81.8") {
477281
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.81.10") {
477255
477282
  if (process.env.USER_TYPE === "ant") {
477256
477283
  const changelog = "";
477257
477284
  if (changelog) {
@@ -480159,7 +480186,7 @@ function getRecentActivitySync() {
480159
480186
  return cachedActivity;
480160
480187
  }
480161
480188
  function getLogoDisplayData() {
480162
- const version2 = process.env.DEMO_VERSION ?? "1.81.8";
480189
+ const version2 = process.env.DEMO_VERSION ?? "1.81.10";
480163
480190
  const serverUrl = getDirectConnectServerUrl();
480164
480191
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
480165
480192
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -480234,8 +480261,6 @@ var init_logoV2Utils = __esm(() => {
480234
480261
 
480235
480262
  // src/components/LogoV2/URBanner.tsx
480236
480263
  function getResponsiveURWordmarkVariant(availableWidth = Number.POSITIVE_INFINITY, availableHeight = Number.POSITIVE_INFINITY) {
480237
- if (availableWidth >= 41 && availableHeight >= 22)
480238
- return "full";
480239
480264
  if (availableWidth >= 20 && availableHeight >= 8)
480240
480265
  return "compact";
480241
480266
  return "minimal";
@@ -480250,7 +480275,7 @@ function URBanner({
480250
480275
  }, undefined, false, undefined, this);
480251
480276
  }
480252
480277
  const variant = getResponsiveURWordmarkVariant(availableWidth, availableHeight);
480253
- const rows = variant === "full" ? UR_WORDMARK_ROWS : variant === "compact" ? COMPACT_UR_WORDMARK_ROWS : ["UR"];
480278
+ const rows = variant === "compact" ? UR_WORDMARK_ROWS : ["UR"];
480254
480279
  const showTagline = variant !== "minimal";
480255
480280
  const decorateTagline = (availableWidth ?? Number.POSITIVE_INFINITY) >= 24;
480256
480281
  return /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedBox_default, {
@@ -480268,30 +480293,12 @@ function URBanner({
480268
480293
  ]
480269
480294
  }, undefined, true, undefined, this);
480270
480295
  }
480271
- var jsx_dev_runtime233, UR_WORDMARK_ROWS, COMPACT_UR_WORDMARK_ROWS, UR_WORDMARK_TAGLINE = "THE AUTONOMOUS AGENT";
480296
+ var jsx_dev_runtime233, UR_WORDMARK_ROWS, UR_WORDMARK_TAGLINE = "THE AUTONOMOUS AGENT";
480272
480297
  var init_URBanner = __esm(() => {
480273
480298
  init_ink2();
480274
480299
  init_screenReader();
480275
480300
  jsx_dev_runtime233 = __toESM(require_jsx_dev_runtime(), 1);
480276
480301
  UR_WORDMARK_ROWS = [
480277
- "UUUUUUUU UUUUUUUURRRRRRRRRRRRRRRRR ",
480278
- "U::::::U U::::::UR::::::::::::::::R ",
480279
- "U::::::U U::::::UR::::::RRRRRR:::::R ",
480280
- "UU:::::U U:::::UURR:::::R R:::::R",
480281
- " U:::::U U:::::U R::::R R:::::R",
480282
- " U:::::D D:::::U R::::R R:::::R",
480283
- " U:::::D D:::::U R::::RRRRRR:::::R ",
480284
- " U:::::D D:::::U R:::::::::::::RR ",
480285
- " U:::::D D:::::U R::::RRRRRR:::::R ",
480286
- " U:::::D D:::::U R::::R R:::::R",
480287
- " U:::::D D:::::U R::::R R:::::R",
480288
- " U::::::U U::::::U R::::R R:::::R",
480289
- " U:::::::UUU:::::::U RR:::::R R:::::R",
480290
- " UU:::::::::::::UU R::::::R R:::::R",
480291
- " UU:::::::::UU R::::::R R:::::R",
480292
- " UUUUUUUUU RRRRRRRR RRRRRRR"
480293
- ];
480294
- COMPACT_UR_WORDMARK_ROWS = [
480295
480302
  "\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 ",
480296
480303
  "\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557",
480297
480304
  "\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D",
@@ -481067,7 +481074,7 @@ function LogoV2() {
481067
481074
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
481068
481075
  t2 = () => {
481069
481076
  const currentConfig = getGlobalConfig();
481070
- if (currentConfig.lastReleaseNotesSeen === "1.81.8") {
481077
+ if (currentConfig.lastReleaseNotesSeen === "1.81.10") {
481071
481078
  return;
481072
481079
  }
481073
481080
  saveGlobalConfig(_temp325);
@@ -481755,12 +481762,12 @@ function LogoV2() {
481755
481762
  return t41;
481756
481763
  }
481757
481764
  function _temp325(current) {
481758
- if (current.lastReleaseNotesSeen === "1.81.8") {
481765
+ if (current.lastReleaseNotesSeen === "1.81.10") {
481759
481766
  return current;
481760
481767
  }
481761
481768
  return {
481762
481769
  ...current,
481763
- lastReleaseNotesSeen: "1.81.8"
481770
+ lastReleaseNotesSeen: "1.81.10"
481764
481771
  };
481765
481772
  }
481766
481773
  function _temp241(s_0) {
@@ -497710,7 +497717,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
497710
497717
  if (spec.name !== specName) {
497711
497718
  throw new Error("Agentic CI workflow spec name does not match");
497712
497719
  }
497713
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.8" : "1.81.8");
497720
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.10" : "1.81.10");
497714
497721
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
497715
497722
  throw new Error("invalid ur-agent package version");
497716
497723
  }
@@ -498703,7 +498710,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
498703
498710
  path: ".github/workflows/ur.yml",
498704
498711
  root: "project",
498705
498712
  content: compileAgenticCiWorkflow("default", {
498706
- packageVersion: typeof MACRO !== "undefined" ? "1.81.8" : "1.81.8"
498713
+ packageVersion: typeof MACRO !== "undefined" ? "1.81.10" : "1.81.10"
498707
498714
  })
498708
498715
  },
498709
498716
  {
@@ -498766,7 +498773,7 @@ function value(tokens, flag) {
498766
498773
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
498767
498774
  }
498768
498775
  function cliVersion() {
498769
- return typeof MACRO !== "undefined" ? "1.81.8" : "1.81.8";
498776
+ return typeof MACRO !== "undefined" ? "1.81.10" : "1.81.10";
498770
498777
  }
498771
498778
  function workflowPath(cwd2) {
498772
498779
  return join168(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -504622,7 +504629,7 @@ function createAcpStdioApp(deps) {
504622
504629
  }
504623
504630
  },
504624
504631
  authMethods: [],
504625
- agentInfo: { name: "UR-Nexus", version: "1.81.8" }
504632
+ agentInfo: { name: "UR-Nexus", version: "1.81.10" }
504626
504633
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
504627
504634
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
504628
504635
  await runtime2.announce({
@@ -504719,7 +504726,7 @@ function createAcpStdioAgent(deps) {
504719
504726
  }
504720
504727
  },
504721
504728
  authMethods: [],
504722
- agentInfo: { name: "UR-Nexus", version: "1.81.8" }
504729
+ agentInfo: { name: "UR-Nexus", version: "1.81.10" }
504723
504730
  });
504724
504731
  return;
504725
504732
  case "authenticate":
@@ -715971,7 +715978,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
715971
715978
  smapsRollup,
715972
715979
  platform: process.platform,
715973
715980
  nodeVersion: process.version,
715974
- ccVersion: "1.81.8"
715981
+ ccVersion: "1.81.10"
715975
715982
  };
715976
715983
  }
715977
715984
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -716560,7 +716567,7 @@ var init_bridge_kick = __esm(() => {
716560
716567
  var call154 = async () => {
716561
716568
  return {
716562
716569
  type: "text",
716563
- value: "1.81.8"
716570
+ value: "1.81.10"
716564
716571
  };
716565
716572
  }, version2, version_default;
716566
716573
  var init_version = __esm(() => {
@@ -728028,7 +728035,7 @@ function generateHtmlReport(data, insights) {
728028
728035
  </html>`;
728029
728036
  }
728030
728037
  function buildExportData(data, insights, facets, remoteStats) {
728031
- const version3 = typeof MACRO !== "undefined" ? "1.81.8" : "unknown";
728038
+ const version3 = typeof MACRO !== "undefined" ? "1.81.10" : "unknown";
728032
728039
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
728033
728040
  const facets_summary = {
728034
728041
  total: facets.size,
@@ -732341,7 +732348,7 @@ var init_sessionStorage = __esm(() => {
732341
732348
  init_settings2();
732342
732349
  init_slowOperations();
732343
732350
  init_uuid();
732344
- VERSION7 = typeof MACRO !== "undefined" ? "1.81.8" : "unknown";
732351
+ VERSION7 = typeof MACRO !== "undefined" ? "1.81.10" : "unknown";
732345
732352
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
732346
732353
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
732347
732354
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -733556,7 +733563,7 @@ var init_filesystem = __esm(() => {
733556
733563
  });
733557
733564
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
733558
733565
  const nonce = randomBytes24(16).toString("hex");
733559
- return join243(getURTempDir(), "bundled-skills", "1.81.8", nonce);
733566
+ return join243(getURTempDir(), "bundled-skills", "1.81.10", nonce);
733560
733567
  });
733561
733568
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
733562
733569
  });
@@ -739956,11 +739963,81 @@ function computeFingerprint(messageText2, version3) {
739956
739963
  }
739957
739964
  function computeFingerprintFromMessages(messages) {
739958
739965
  const firstMessageText = extractFirstMessageText(messages);
739959
- return computeFingerprint(firstMessageText, "1.81.8");
739966
+ return computeFingerprint(firstMessageText, "1.81.10");
739960
739967
  }
739961
739968
  var FINGERPRINT_SALT = "59cf53e54c78";
739962
739969
  var init_fingerprint = () => {};
739963
739970
 
739971
+ // src/utils/model/providerRequestTuning.ts
739972
+ function usesConservativeOutputReservation(provider) {
739973
+ return CONSERVATIVE_OUTPUT_PROVIDERS.has(provider);
739974
+ }
739975
+ function getProviderRequestProfile(input) {
739976
+ if (!LIGHTWEIGHT_CHAT_PROVIDERS.has(input.provider) || !(input.querySource.startsWith("repl_main_thread") || input.querySource === "sdk")) {
739977
+ return { mode: "agent" };
739978
+ }
739979
+ if (input.messages.some((message) => message.type === "assistant")) {
739980
+ return { mode: "agent" };
739981
+ }
739982
+ const visibleUserMessages = input.messages.filter((message) => message.type === "user" && !message.isMeta && !message.isCompactSummary && !message.toolUseResult);
739983
+ if (visibleUserMessages.length !== 1) {
739984
+ return { mode: "agent" };
739985
+ }
739986
+ const prompt = textOnlyContent(visibleUserMessages[0]);
739987
+ if (prompt === undefined || !isTrivialGreeting(prompt)) {
739988
+ return { mode: "agent" };
739989
+ }
739990
+ return {
739991
+ mode: "lightweight-chat",
739992
+ maxOutputTokens: LIGHTWEIGHT_CHAT_MAX_OUTPUT_TOKENS,
739993
+ minContextTokens: LIGHTWEIGHT_CHAT_MIN_CONTEXT_TOKENS,
739994
+ systemPrompt: LIGHTWEIGHT_CHAT_SYSTEM_PROMPT
739995
+ };
739996
+ }
739997
+ function textOnlyContent(message) {
739998
+ const content = message?.message?.content;
739999
+ if (typeof content === "string")
740000
+ return content.trim();
740001
+ if (!Array.isArray(content) || content.length === 0)
740002
+ return;
740003
+ if (content.some((block2) => !block2 || typeof block2 !== "object" || block2.type !== "text" || typeof block2.text !== "string")) {
740004
+ return;
740005
+ }
740006
+ return content.map((block2) => block2.text).join(`
740007
+ `).trim();
740008
+ }
740009
+ function isTrivialGreeting(prompt) {
740010
+ const normalized = prompt.trim().toLowerCase();
740011
+ return /^(?:hi|hello|hey|hiya|greetings|good (?:morning|afternoon|evening)|thanks|thank you|ok|okay)[!.?,\s]*$/.test(normalized);
740012
+ }
740013
+ var CONSERVATIVE_OUTPUT_PROVIDERS, LIGHTWEIGHT_CHAT_PROVIDERS, LIGHTWEIGHT_CHAT_MAX_OUTPUT_TOKENS = 1024, LIGHTWEIGHT_CHAT_MIN_CONTEXT_TOKENS, SELF_HOSTED_DEFAULT_MAX_OUTPUT_TOKENS = 4096, LIGHTWEIGHT_CHAT_SYSTEM_PROMPT = "You are UR, a precise and professional AI assistant. Respond directly, clearly, and concisely. Do not claim to have inspected files or used tools in this lightweight chat turn.";
740014
+ var init_providerRequestTuning = __esm(() => {
740015
+ init_ollamaTuning();
740016
+ CONSERVATIVE_OUTPUT_PROVIDERS = new Set([
740017
+ "ollama",
740018
+ "lmstudio",
740019
+ "llama.cpp",
740020
+ "vllm",
740021
+ "openai-compatible"
740022
+ ]);
740023
+ LIGHTWEIGHT_CHAT_PROVIDERS = new Set([
740024
+ "ollama",
740025
+ "lmstudio",
740026
+ "llama.cpp",
740027
+ "vllm",
740028
+ "openai-compatible",
740029
+ "openai-api",
740030
+ "anthropic-api",
740031
+ "gemini-api",
740032
+ "openrouter",
740033
+ "codex-cli",
740034
+ "claude-code-cli",
740035
+ "gemini-cli",
740036
+ "antigravity-cli"
740037
+ ]);
740038
+ LIGHTWEIGHT_CHAT_MIN_CONTEXT_TOKENS = MIN_CHAT_NUM_CTX;
740039
+ });
740040
+
739964
740041
  // src/services/compact/apiMicrocompact.ts
739965
740042
  function getAPIContextManagement(options5) {
739966
740043
  const {
@@ -740492,6 +740569,15 @@ async function* queryModel(messages, systemPrompt, thinkingConfig, tools, signal
740492
740569
  }
740493
740570
  const previousRequestId = getPreviousRequestIdFromMessages(messages);
740494
740571
  const resolvedModel = isBedrockRuntime() && options5.model.includes("application-inference-profile") ? await getInferenceProfileBackingModel(options5.model) ?? options5.model : options5.model;
740572
+ const requestProvider = options5.providerSettings?.active ?? getRuntimeProvider();
740573
+ const candidateRequestProfile = getProviderRequestProfile({
740574
+ provider: requestProvider,
740575
+ querySource: options5.querySource,
740576
+ messages
740577
+ });
740578
+ const providerRequestProfile = candidateRequestProfile.mode === "lightweight-chat" && !options5.hasAppendSystemPrompt && !options5.outputFormat && !options5.toolChoice && (options5.extraToolSchemas?.length ?? 0) === 0 ? candidateRequestProfile : { mode: "agent" };
740579
+ const isLightweightChat = providerRequestProfile.mode === "lightweight-chat";
740580
+ logForDebugging(`Provider request profile: ${providerRequestProfile.mode} (${requestProvider}, source=${options5.querySource}, messages=${messages.length})`);
740495
740581
  queryCheckpoint("query_tool_schema_build_start");
740496
740582
  const isAgenticQuery = options5.querySource.startsWith("repl_main_thread") || options5.querySource.startsWith("agent:") || options5.querySource === "sdk" || options5.querySource === "hook_agent" || options5.querySource === "verification_agent";
740497
740583
  const betas = getMergedBetas(options5.model, { isAgenticQuery });
@@ -740499,7 +740585,7 @@ async function* queryModel(messages, systemPrompt, thinkingConfig, tools, signal
740499
740585
  betas.push(ADVISOR_BETA_HEADER);
740500
740586
  }
740501
740587
  let advisorModel;
740502
- if (isAgenticQuery && isAdvisorEnabled()) {
740588
+ if (isAgenticQuery && isAdvisorEnabled() && !isLightweightChat) {
740503
740589
  let advisorOption = options5.advisorModel;
740504
740590
  const advisorExperiment = getExperimentAdvisorModels();
740505
740591
  if (advisorExperiment !== undefined) {
@@ -740519,7 +740605,7 @@ async function* queryModel(messages, systemPrompt, thinkingConfig, tools, signal
740519
740605
  }
740520
740606
  }
740521
740607
  }
740522
- let useToolSearch = await isToolSearchEnabled(options5.model, tools, options5.getToolPermissionContext, options5.agents, "query");
740608
+ let useToolSearch = isLightweightChat ? false : await isToolSearchEnabled(options5.model, tools, options5.getToolPermissionContext, options5.agents, "query");
740523
740609
  const deferredToolNames = new Set;
740524
740610
  if (useToolSearch) {
740525
740611
  for (const t of tools) {
@@ -740532,7 +740618,9 @@ async function* queryModel(messages, systemPrompt, thinkingConfig, tools, signal
740532
740618
  useToolSearch = false;
740533
740619
  }
740534
740620
  let filteredTools;
740535
- if (useToolSearch) {
740621
+ if (isLightweightChat) {
740622
+ filteredTools = [];
740623
+ } else if (useToolSearch) {
740536
740624
  const discoveredToolNames = extractDiscoveredToolNames(messages);
740537
740625
  filteredTools = tools.filter((tool) => {
740538
740626
  if (!deferredToolNames.has(tool.name))
@@ -740576,7 +740664,8 @@ async function* queryModel(messages, systemPrompt, thinkingConfig, tools, signal
740576
740664
  preNormalizedMessageCount: messages.length
740577
740665
  });
740578
740666
  queryCheckpoint("query_message_normalization_start");
740579
- let messagesForAPI = normalizeMessagesForAPI(messages, filteredTools);
740667
+ const requestMessages = isLightweightChat ? messages.filter((message) => message.type === "user" && !message.isMeta && !message.isCompactSummary && !message.toolUseResult) : messages;
740668
+ let messagesForAPI = normalizeMessagesForAPI(requestMessages, filteredTools);
740580
740669
  queryCheckpoint("query_message_normalization_end");
740581
740670
  if (!useToolSearch) {
740582
740671
  messagesForAPI = messagesForAPI.map((msg) => {
@@ -740616,8 +740705,11 @@ ${deferredToolList}
740616
740705
  }
740617
740706
  const hasChromeTools = filteredTools.some((t) => isToolFromMcpServer(t.name, UR_IN_CHROME_MCP_SERVER_NAME));
740618
740707
  const injectChromeHere = useToolSearch && hasChromeTools && !isMcpInstructionsDeltaEnabled();
740708
+ if (providerRequestProfile.mode === "lightweight-chat") {
740709
+ systemPrompt = asSystemPrompt([providerRequestProfile.systemPrompt]);
740710
+ }
740619
740711
  systemPrompt = asSystemPrompt([
740620
- getAttributionHeader(fingerprint2),
740712
+ usesConservativeOutputReservation(requestProvider) ? "" : getAttributionHeader(fingerprint2),
740621
740713
  getCLISyspromptPrefix({
740622
740714
  isNonInteractive: options5.isNonInteractiveSession,
740623
740715
  hasAppendSystemPrompt: options5.hasAppendSystemPrompt
@@ -740633,7 +740725,7 @@ ${deferredToolList}
740633
740725
  querySource: options5.querySource
740634
740726
  });
740635
740727
  const useBetas = betas.length > 0;
740636
- const extraToolSchemas = [...options5.extraToolSchemas ?? []];
740728
+ const extraToolSchemas = isLightweightChat ? [] : [...options5.extraToolSchemas ?? []];
740637
740729
  if (advisorModel) {
740638
740730
  extraToolSchemas.push({
740639
740731
  type: "advisor_20260301",
@@ -740702,7 +740794,9 @@ ${deferredToolList}
740702
740794
  const outputConfig = {
740703
740795
  ...extraBodyParams.output_config ?? {}
740704
740796
  };
740705
- configureEffortParams(effort, outputConfig, extraBodyParams, betasParams, options5.model, options5.providerSettings?.active);
740797
+ if (!isLightweightChat) {
740798
+ configureEffortParams(effort, outputConfig, extraBodyParams, betasParams, options5.model, options5.providerSettings?.active);
740799
+ }
740706
740800
  configureTaskBudgetParams(options5.taskBudget, outputConfig, betasParams);
740707
740801
  if (options5.outputFormat && !("format" in outputConfig)) {
740708
740802
  outputConfig.format = options5.outputFormat;
@@ -740710,8 +740804,9 @@ ${deferredToolList}
740710
740804
  betasParams.push(STRUCTURED_OUTPUTS_BETA_HEADER);
740711
740805
  }
740712
740806
  }
740713
- const maxOutputTokens2 = retryContext?.maxTokensOverride || options5.maxOutputTokensOverride || getMaxOutputTokensForModel(options5.model);
740714
- const hasThinking = thinkingConfig.type !== "disabled" && !isEnvTruthy(process.env.UR_CODE_DISABLE_THINKING);
740807
+ const configuredMaxOutputTokens = retryContext?.maxTokensOverride || options5.maxOutputTokensOverride || getMaxOutputTokensForModel(options5.model, options5.providerSettings?.active ?? getRuntimeProvider());
740808
+ const maxOutputTokens2 = providerRequestProfile.mode === "lightweight-chat" ? Math.min(configuredMaxOutputTokens, providerRequestProfile.maxOutputTokens) : configuredMaxOutputTokens;
740809
+ const hasThinking = !isLightweightChat && thinkingConfig.type !== "disabled" && !isEnvTruthy(process.env.UR_CODE_DISABLE_THINKING);
740715
740810
  let thinking = undefined;
740716
740811
  if (hasThinking && modelSupportsThinking(options5.model)) {
740717
740812
  if (!isEnvTruthy(process.env.UR_CODE_DISABLE_ADAPTIVE_THINKING) && modelSupportsAdaptiveThinking(options5.model)) {
@@ -741782,9 +741877,9 @@ function adjustParamsForNonStreaming(params, maxTokensCap) {
741782
741877
  function isMaxTokensCapEnabled() {
741783
741878
  return getFeatureValue_CACHED_MAY_BE_STALE("tengu_otk_slot_v1", false);
741784
741879
  }
741785
- function getMaxOutputTokensForModel(model) {
741786
- const maxOutputTokens = getModelMaxOutputTokens(model);
741787
- const defaultTokens = isMaxTokensCapEnabled() ? Math.min(maxOutputTokens.default, CAPPED_DEFAULT_MAX_TOKENS) : maxOutputTokens.default;
741880
+ function getMaxOutputTokensForModel(model, provider = getRuntimeProvider()) {
741881
+ const maxOutputTokens = getModelMaxOutputTokens(model, provider);
741882
+ 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;
741788
741883
  const result = validateBoundedIntEnvVar("UR_CODE_MAX_OUTPUT_TOKENS", process.env.UR_CODE_MAX_OUTPUT_TOKENS, defaultTokens, maxOutputTokens.upperLimit);
741789
741884
  return result.effective;
741790
741885
  }
@@ -741805,6 +741900,7 @@ var init_ur2 = __esm(() => {
741805
741900
  init_log2();
741806
741901
  init_messages();
741807
741902
  init_model();
741903
+ init_providerRequestTuning();
741808
741904
  init_tokens();
741809
741905
  init_growthbook();
741810
741906
  init_urAiLimits();
@@ -741891,7 +741987,7 @@ async function sideQuery(opts) {
741891
741987
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
741892
741988
  }
741893
741989
  const messageText2 = extractFirstUserMessageText(messages);
741894
- const fingerprint2 = computeFingerprint(messageText2, "1.81.8");
741990
+ const fingerprint2 = computeFingerprint(messageText2, "1.81.10");
741895
741991
  const attributionHeader = getAttributionHeader(fingerprint2);
741896
741992
  const systemBlocks = [
741897
741993
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -746725,7 +746821,7 @@ function buildSystemInitMessage(inputs) {
746725
746821
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
746726
746822
  apiKeySource: getURHQApiKeyWithSource().source,
746727
746823
  betas: getSdkBetas(),
746728
- ur_version: "1.81.8",
746824
+ ur_version: "1.81.10",
746729
746825
  output_style: outputStyle,
746730
746826
  agents: inputs.agents.map((agent2) => agent2.agentType),
746731
746827
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -760561,7 +760657,7 @@ var init_useVoiceEnabled = __esm(() => {
760561
760657
  function getSemverPart(version3) {
760562
760658
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
760563
760659
  }
760564
- function useUpdateNotification(updatedVersion, initialVersion = "1.81.8") {
760660
+ function useUpdateNotification(updatedVersion, initialVersion = "1.81.10") {
760565
760661
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
760566
760662
  if (!updatedVersion) {
760567
760663
  return null;
@@ -760610,7 +760706,7 @@ function AutoUpdater({
760610
760706
  return;
760611
760707
  }
760612
760708
  if (false) {}
760613
- const currentVersion = "1.81.8";
760709
+ const currentVersion = "1.81.10";
760614
760710
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
760615
760711
  let latestVersion = await getLatestVersion(channel);
760616
760712
  const isDisabled = isAutoUpdaterDisabled();
@@ -760839,12 +760935,12 @@ function NativeAutoUpdater({
760839
760935
  logEvent("tengu_native_auto_updater_start", {});
760840
760936
  try {
760841
760937
  const maxVersion = await getMaxVersion();
760842
- if (maxVersion && gt("1.81.8", maxVersion)) {
760938
+ if (maxVersion && gt("1.81.10", maxVersion)) {
760843
760939
  const msg = await getMaxVersionMessage();
760844
760940
  setMaxVersionIssue(msg ?? "affects your version");
760845
760941
  }
760846
760942
  const result = await installLatest(channel);
760847
- const currentVersion = "1.81.8";
760943
+ const currentVersion = "1.81.10";
760848
760944
  const latencyMs = Date.now() - startTime;
760849
760945
  if (result.lockFailed) {
760850
760946
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -760981,17 +761077,17 @@ function PackageManagerAutoUpdater(t0) {
760981
761077
  const maxVersion = await getMaxVersion();
760982
761078
  if (maxVersion && latest && gt(latest, maxVersion)) {
760983
761079
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
760984
- if (gte("1.81.8", maxVersion)) {
760985
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.8"} is already at or above maxVersion ${maxVersion}, skipping update`);
761080
+ if (gte("1.81.10", maxVersion)) {
761081
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.10"} is already at or above maxVersion ${maxVersion}, skipping update`);
760986
761082
  setUpdateAvailable(false);
760987
761083
  return;
760988
761084
  }
760989
761085
  latest = maxVersion;
760990
761086
  }
760991
- const hasUpdate = latest && !gte("1.81.8", latest) && !shouldSkipVersion(latest);
761087
+ const hasUpdate = latest && !gte("1.81.10", latest) && !shouldSkipVersion(latest);
760992
761088
  setUpdateAvailable(!!hasUpdate);
760993
761089
  if (hasUpdate) {
760994
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.8"} -> ${latest}`);
761090
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.10"} -> ${latest}`);
760995
761091
  }
760996
761092
  };
760997
761093
  $2[0] = t1;
@@ -761025,7 +761121,7 @@ function PackageManagerAutoUpdater(t0) {
761025
761121
  wrap: "truncate",
761026
761122
  children: [
761027
761123
  "currentVersion: ",
761028
- "1.81.8"
761124
+ "1.81.10"
761029
761125
  ]
761030
761126
  }, undefined, true, undefined, this);
761031
761127
  $2[3] = verbose;
@@ -771878,7 +771974,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
771878
771974
  project_dir: getOriginalCwd(),
771879
771975
  added_dirs: addedDirs
771880
771976
  },
771881
- version: "1.81.8",
771977
+ version: "1.81.10",
771882
771978
  output_style: {
771883
771979
  name: outputStyleName
771884
771980
  },
@@ -772013,7 +772109,7 @@ function StatusLineInner({
772013
772109
  const attention = customStatusError ?? taskAttention;
772014
772110
  const terminalSize = React133.useContext(TerminalSizeContext);
772015
772111
  const defaultStatusLineText = buildDefaultStatusBar({
772016
- version: "1.81.8",
772112
+ version: "1.81.10",
772017
772113
  providerLabel: providerRuntime.providerLabel,
772018
772114
  authMode: providerRuntime.authLabel,
772019
772115
  model: renderModelName(mainLoopModel) || providerRuntime.model || "",
@@ -784269,7 +784365,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
784269
784365
  } catch {}
784270
784366
  const data = {
784271
784367
  trigger: trigger2,
784272
- version: "1.81.8",
784368
+ version: "1.81.10",
784273
784369
  platform: process.platform,
784274
784370
  transcript,
784275
784371
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -796638,7 +796734,7 @@ function WelcomeV2() {
796638
796734
  dimColor: true,
796639
796735
  children: [
796640
796736
  "v",
796641
- "1.81.8"
796737
+ "1.81.10"
796642
796738
  ]
796643
796739
  }, undefined, true, undefined, this)
796644
796740
  ]
@@ -797898,7 +797994,7 @@ function completeOnboarding() {
797898
797994
  saveGlobalConfig((current) => ({
797899
797995
  ...current,
797900
797996
  hasCompletedOnboarding: true,
797901
- lastOnboardingVersion: "1.81.8"
797997
+ lastOnboardingVersion: "1.81.10"
797902
797998
  }));
797903
797999
  }
797904
798000
  function showDialog(root2, renderer) {
@@ -803044,7 +803140,7 @@ function appendToLog(path28, message) {
803044
803140
  cwd: getFsImplementation().cwd(),
803045
803141
  userType: process.env.USER_TYPE,
803046
803142
  sessionId: getSessionId(),
803047
- version: "1.81.8"
803143
+ version: "1.81.10"
803048
803144
  };
803049
803145
  getLogWriter(path28).write(messageWithTimestamp);
803050
803146
  }
@@ -807208,8 +807304,8 @@ async function getEnvLessBridgeConfig() {
807208
807304
  }
807209
807305
  async function checkEnvLessBridgeMinVersion() {
807210
807306
  const cfg = await getEnvLessBridgeConfig();
807211
- if (cfg.min_version && lt("1.81.8", cfg.min_version)) {
807212
- return `Your version of UR (${"1.81.8"}) is too old for Remote Control.
807307
+ if (cfg.min_version && lt("1.81.10", cfg.min_version)) {
807308
+ return `Your version of UR (${"1.81.10"}) is too old for Remote Control.
807213
807309
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
807214
807310
  }
807215
807311
  return null;
@@ -807683,7 +807779,7 @@ async function initBridgeCore(params) {
807683
807779
  const rawApi = createBridgeApiClient({
807684
807780
  baseUrl,
807685
807781
  getAccessToken,
807686
- runnerVersion: "1.81.8",
807782
+ runnerVersion: "1.81.10",
807687
807783
  onDebug: logForDebugging,
807688
807784
  onAuth401,
807689
807785
  getTrustedDeviceToken
@@ -817159,7 +817255,7 @@ function getAgUiCapabilities() {
817159
817255
  name: "UR-Nexus",
817160
817256
  type: "ur-nexus",
817161
817257
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
817162
- version: "1.81.8",
817258
+ version: "1.81.10",
817163
817259
  provider: "UR",
817164
817260
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
817165
817261
  },
@@ -818386,7 +818482,7 @@ function createMCPServer(cwd4, debug2, verbose) {
818386
818482
  };
818387
818483
  const server2 = new Server({
818388
818484
  name: "ur-nexus",
818389
- version: "1.81.8"
818485
+ version: "1.81.10"
818390
818486
  }, {
818391
818487
  capabilities: {
818392
818488
  tools: {}
@@ -819590,7 +819686,7 @@ function thrownResponse(error40) {
819590
819686
  }
819591
819687
  async function createUrMcp2026Runtime(options5) {
819592
819688
  const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
819593
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.8" }, { capabilities: {} });
819689
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.10" }, { capabilities: {} });
819594
819690
  const [clientTransport, serverTransport] = createLinkedTransportPair();
819595
819691
  try {
819596
819692
  await server2.connect(serverTransport);
@@ -819601,7 +819697,7 @@ async function createUrMcp2026Runtime(options5) {
819601
819697
  }
819602
819698
  const runtime2 = new Mcp2026Runtime({
819603
819699
  cwd: options5.cwd,
819604
- version: "1.81.8",
819700
+ version: "1.81.10",
819605
819701
  backend: {
819606
819702
  listTools: async () => {
819607
819703
  const listed = await client2.listTools();
@@ -822336,7 +822432,7 @@ async function update() {
822336
822432
  logEvent("tengu_update_check", {});
822337
822433
  const diagnostic2 = await getDoctorDiagnostic();
822338
822434
  const result = await checkUpgradeStatus({
822339
- currentVersion: "1.81.8",
822435
+ currentVersion: "1.81.10",
822340
822436
  packageName: UR_AGENT_PACKAGE_NAME,
822341
822437
  installationType: diagnostic2.installationType,
822342
822438
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -823664,7 +823760,7 @@ ${customInstructions}` : customInstructions;
823664
823760
  }
823665
823761
  }
823666
823762
  logForDiagnosticsNoPII("info", "started", {
823667
- version: "1.81.8",
823763
+ version: "1.81.10",
823668
823764
  is_native_binary: isInBundledMode()
823669
823765
  });
823670
823766
  registerCleanup(async () => {
@@ -824451,7 +824547,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
824451
824547
  pendingHookMessages
824452
824548
  }, renderAndRun);
824453
824549
  }
824454
- }).version("1.81.8 (UR-Nexus)", "-v, --version", "Output the version number");
824550
+ }).version("1.81.10 (UR-Nexus)", "-v, --version", "Output the version number");
824455
824551
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
824456
824552
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
824457
824553
  if (canUserConfigureAdvisor()) {
@@ -825578,7 +825674,7 @@ if (false) {}
825578
825674
  async function main2() {
825579
825675
  const args = process.argv.slice(2);
825580
825676
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
825581
- console.log(`${"1.81.8"} (UR-Nexus)`);
825677
+ console.log(`${"1.81.10"} (UR-Nexus)`);
825582
825678
  return;
825583
825679
  }
825584
825680
  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.8 (UR-Nexus)"
22
+ # expected for this release: "1.81.10 (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.8</p>
48
+ <p class="eyebrow">Version 1.81.10</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.8"
10
+ version = "1.81.10"
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.8",
5
+ "version": "1.81.10",
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.8",
3
+ "version": "1.81.10",
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",