ur-agent 1.81.5 → 1.81.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -53776,6 +53776,7 @@ __export(exports_providerRegistry, {
53776
53776
  formatProviderList: () => formatProviderList,
53777
53777
  formatProviderDoctor: () => formatProviderDoctor,
53778
53778
  formatInvalidProviderModelMessage: () => formatInvalidProviderModelMessage,
53779
+ ensureProviderReasoningCapabilitiesForModel: () => ensureProviderReasoningCapabilitiesForModel,
53779
53780
  ensureProviderModelsFresh: () => ensureProviderModelsFresh,
53780
53781
  doctorProvider: () => doctorProvider,
53781
53782
  doctorActiveProvider: () => doctorActiveProvider,
@@ -54858,6 +54859,21 @@ function modelDefinitionsFromNames(provider, names, source) {
54858
54859
  description: source === "cache" ? `Cached ${providerName} model` : `Discovered from ${providerName}`
54859
54860
  }));
54860
54861
  }
54862
+ function modelDefinitionsFromDiscovered(models) {
54863
+ return models.map((model) => ({
54864
+ id: model.id,
54865
+ displayName: model.displayName,
54866
+ description: model.description,
54867
+ pricing: model.pricing,
54868
+ ...model.contextLength ? { contextLength: model.contextLength } : {},
54869
+ ...model.outputTokenLimit ? { outputTokenLimit: model.outputTokenLimit } : {},
54870
+ ...model.supportedParameters ? { supportedParameters: model.supportedParameters } : {},
54871
+ ...model.capabilities ? { capabilities: model.capabilities } : {},
54872
+ ...model.reasoning ? { reasoning: model.reasoning } : {},
54873
+ ...model.expirationDate ? { expirationDate: model.expirationDate } : {},
54874
+ ...model.deprecated ? { deprecated: true } : {}
54875
+ }));
54876
+ }
54861
54877
  function providerModelCacheKey(provider, settings = getInitialSettings()) {
54862
54878
  const definition = getProviderDefinition(provider);
54863
54879
  let endpoint = providerBaseUrl(provider, definition, settings);
@@ -54911,6 +54927,97 @@ function getProviderReasoningCapabilitiesForModel(model, provider = getRuntimePr
54911
54927
  const match = known.find((entry) => entry.id.toLowerCase() === wanted) ?? known.find((entry) => wanted.includes(entry.id.toLowerCase()));
54912
54928
  return match?.reasoning;
54913
54929
  }
54930
+ function providerPropsUrl(baseUrl, model) {
54931
+ const url3 = new URL(normalizeBaseUrl(baseUrl));
54932
+ url3.hash = "";
54933
+ url3.search = "";
54934
+ let path8 = url3.pathname.replace(/\/+$/, "");
54935
+ path8 = path8.replace(/\/(?:v\d+(?:beta)?|api\/v\d+)$/i, "");
54936
+ path8 = path8.replace(/\/(?:chat\/completions|models|props)$/i, "");
54937
+ url3.pathname = `${path8}/props`;
54938
+ url3.searchParams.set("model", model);
54939
+ return url3.toString();
54940
+ }
54941
+ function reasoningCapabilitiesFromProps(value) {
54942
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
54943
+ return;
54944
+ }
54945
+ const root2 = value;
54946
+ const explicit = parseModelReasoningCapabilities(root2.reasoning) ?? parseModelReasoningCapabilities(root2.meta && typeof root2.meta === "object" ? root2.meta.reasoning : undefined) ?? parseModelReasoningCapabilities({
54947
+ supported_efforts: root2.supported_efforts,
54948
+ default_effort: root2.default_effort
54949
+ });
54950
+ if (explicit)
54951
+ return explicit;
54952
+ const caps = root2.chat_template_caps && typeof root2.chat_template_caps === "object" ? root2.chat_template_caps : undefined;
54953
+ if (caps?.supports_reasoning_effort === true) {
54954
+ return { supportedEfforts: null };
54955
+ }
54956
+ if (caps?.supports_reasoning_effort === false) {
54957
+ return { supportedEfforts: [] };
54958
+ }
54959
+ return;
54960
+ }
54961
+ function rememberProviderModelReasoning(provider, model, reasoning, settings) {
54962
+ const key = providerModelCacheKey(provider, settings);
54963
+ const existing = cachedModelsByProvider.get(key) ?? [];
54964
+ const wanted = model.trim().toLowerCase();
54965
+ let found = false;
54966
+ const updated = existing.map((entry) => {
54967
+ if (entry.id.toLowerCase() !== wanted)
54968
+ return entry;
54969
+ found = true;
54970
+ return { ...entry, reasoning };
54971
+ });
54972
+ if (!found) {
54973
+ updated.push({
54974
+ id: model,
54975
+ displayName: model,
54976
+ description: `Discovered from ${getProviderDefinition(provider).displayName}`,
54977
+ reasoning
54978
+ });
54979
+ }
54980
+ rememberModels(key, updated);
54981
+ }
54982
+ async function ensureProviderReasoningCapabilitiesForModel(providerId, model, options = {}) {
54983
+ const provider = resolveProviderId(providerId);
54984
+ if (!provider)
54985
+ return;
54986
+ const settings = options.settings ?? getInitialSettings();
54987
+ const cached2 = getProviderReasoningCapabilitiesForModel(model, provider, settings);
54988
+ if (cached2 !== undefined)
54989
+ return cached2;
54990
+ if (provider !== "llama.cpp") {
54991
+ await ensureProviderModelsFresh(provider, options);
54992
+ return getProviderReasoningCapabilitiesForModel(model, provider, settings);
54993
+ }
54994
+ const definition = getProviderDefinition(provider);
54995
+ const baseUrl = providerBaseUrl(provider, definition, settings);
54996
+ if (!baseUrl)
54997
+ return;
54998
+ const env4 = options.adapters?.env ?? process.env;
54999
+ const fetchImpl = options.adapters?.fetch ?? fetch;
55000
+ let apiKey = definition.envKey ? env4[definition.envKey] : undefined;
55001
+ if (!apiKey) {
55002
+ try {
55003
+ const credentials = await Promise.resolve().then(() => (init_providerCredentials(), exports_providerCredentials));
55004
+ apiKey = credentials.getProviderApiKey(provider, { env: env4 });
55005
+ } catch {}
55006
+ }
55007
+ const response = await fetchImpl(providerPropsUrl(baseUrl, model), {
55008
+ method: "GET",
55009
+ signal: options.signal,
55010
+ ...apiKey ? { headers: { Authorization: `Bearer ${apiKey}` } } : {}
55011
+ });
55012
+ if (!response.ok) {
55013
+ throw new Error(`llama.cpp /props returned HTTP ${response.status}.`);
55014
+ }
55015
+ const reasoning = reasoningCapabilitiesFromProps(await response.json().catch(() => null));
55016
+ if (reasoning) {
55017
+ rememberProviderModelReasoning(provider, model, reasoning, settings);
55018
+ }
55019
+ return reasoning;
55020
+ }
54914
55021
  function cacheProviderModelsForProvider(providerId, models, settings = getInitialSettings()) {
54915
55022
  const provider = resolveProviderId(providerId);
54916
55023
  if (!provider) {
@@ -55015,9 +55122,9 @@ async function discoverLiveModelsForProvider(provider, options = {}) {
55015
55122
  }
55016
55123
  reachedOk = true;
55017
55124
  const body = await response.json().catch(() => null);
55018
- const names = parseOpenAICompatibleModelNames(body);
55019
- if (names.length > 0) {
55020
- return modelDefinitionsFromNames(provider, names, "live");
55125
+ const discovered = parseDiscoveredModels(body, getProviderDefinition(provider).displayName);
55126
+ if (discovered.length > 0) {
55127
+ return modelDefinitionsFromDiscovered(discovered);
55021
55128
  }
55022
55129
  }
55023
55130
  if (!reachedOk && lastError) {
@@ -55152,20 +55259,7 @@ async function discoverApiProviderModels(provider, definition, options) {
55152
55259
  }
55153
55260
  } while (next);
55154
55261
  const providerLabel = getProviderDefinition(provider).displayName;
55155
- const discovered = parseDiscoveredModels({ data: entries }, providerLabel);
55156
- return discovered.map((model) => ({
55157
- id: model.id,
55158
- displayName: model.displayName,
55159
- description: model.description,
55160
- pricing: model.pricing,
55161
- ...model.contextLength ? { contextLength: model.contextLength } : {},
55162
- ...model.outputTokenLimit ? { outputTokenLimit: model.outputTokenLimit } : {},
55163
- ...model.supportedParameters ? { supportedParameters: model.supportedParameters } : {},
55164
- ...model.capabilities ? { capabilities: model.capabilities } : {},
55165
- ...model.reasoning ? { reasoning: model.reasoning } : {},
55166
- ...model.expirationDate ? { expirationDate: model.expirationDate } : {},
55167
- ...model.deprecated ? { deprecated: true } : {}
55168
- }));
55262
+ return modelDefinitionsFromDiscovered(parseDiscoveredModels({ data: entries }, providerLabel));
55169
55263
  }
55170
55264
  async function listModelsForProviderWithSource(providerId, options = {}) {
55171
55265
  const provider = resolveProviderId(providerId);
@@ -90880,55 +90974,57 @@ var init_thinking = __esm(() => {
90880
90974
  });
90881
90975
 
90882
90976
  // src/utils/effort.ts
90883
- function modelSupportsEffort(model, provider = getRuntimeProvider()) {
90977
+ function normalizeEffortLevels(values) {
90978
+ const advertised = new Set(values.map((value) => value.trim().toLowerCase()).filter(isEffortLevel));
90979
+ return EFFORT_LEVELS.filter((level) => advertised.has(level));
90980
+ }
90981
+ function getSupportedEffortLevelsForModel(model, provider = getRuntimeProvider()) {
90884
90982
  if (isEnvTruthy(process.env.UR_CODE_ALWAYS_ENABLE_EFFORT)) {
90885
- return true;
90983
+ return [...EFFORT_LEVELS];
90886
90984
  }
90887
90985
  const supported3P = get3PModelCapabilityOverride(model, "effort");
90888
- if (supported3P !== undefined) {
90889
- return supported3P;
90890
- }
90986
+ if (supported3P === false)
90987
+ return [];
90988
+ const supportsExtendedEffort = get3PModelCapabilityOverride(model, "max_effort") !== false;
90989
+ const applyOverrides = (levels) => supportsExtendedEffort ? [...levels] : levels.filter((level) => level !== "xhigh" && level !== "max");
90891
90990
  const discovered = getRuntimeModelReasoningCapabilities(model, provider);
90892
- if (discovered?.supportedEfforts === null)
90893
- return true;
90991
+ if (discovered?.supportedEfforts === null) {
90992
+ return applyOverrides(EFFORT_LEVELS);
90993
+ }
90894
90994
  if (discovered?.supportedEfforts !== undefined) {
90895
- return discovered.supportedEfforts.some((effort) => effort !== "none");
90995
+ return applyOverrides(normalizeEffortLevels(discovered.supportedEfforts));
90896
90996
  }
90897
90997
  if (discovered && provider === "openrouter") {
90898
- return true;
90998
+ return applyOverrides(EFFORT_LEVELS);
90899
90999
  }
90900
- return getAPIProvider() === "ollama";
90901
- }
90902
- function modelSupportsMaxEffort(model, provider = getRuntimeProvider()) {
90903
- const supported3P = get3PModelCapabilityOverride(model, "max_effort");
90904
- if (supported3P !== undefined) {
90905
- return supported3P;
90906
- }
90907
- const discovered = getRuntimeModelReasoningCapabilities(model, provider);
90908
- if (discovered?.supportedEfforts === null)
90909
- return true;
90910
- if (discovered?.supportedEfforts !== undefined) {
90911
- return provider === "openrouter" || discovered.supportedEfforts.some((effort) => effort === "max" || effort === "xhigh");
91000
+ if (provider === "ollama" && OLLAMA_GRADED_THINK_MODEL_RE.test(model)) {
91001
+ return ["low", "medium", "high"];
90912
91002
  }
90913
- if (discovered && provider === "openrouter") {
90914
- return true;
91003
+ if (supported3P === true) {
91004
+ return get3PModelCapabilityOverride(model, "max_effort") === true ? [...EFFORT_LEVELS] : ["low", "medium", "high"];
90915
91005
  }
90916
91006
  if (process.env.USER_TYPE === "ant" && resolveAntModel(model)) {
90917
- return true;
91007
+ return applyOverrides(EFFORT_LEVELS);
90918
91008
  }
90919
- return false;
91009
+ return [];
91010
+ }
91011
+ function resolveProviderEffortLevel(model, requested, provider = getRuntimeProvider()) {
91012
+ const supported = getSupportedEffortLevelsForModel(model, provider);
91013
+ if (supported.length === 0)
91014
+ return;
91015
+ if (requested === "max")
91016
+ return supported.at(-1);
91017
+ if (supported.includes(requested))
91018
+ return requested;
91019
+ const requestedIndex = EFFORT_LEVELS.indexOf(requested);
91020
+ const notHigher = supported.filter((level) => EFFORT_LEVELS.indexOf(level) <= requestedIndex);
91021
+ return notHigher.at(-1) ?? supported[0];
91022
+ }
91023
+ function modelSupportsEffort(model, provider = getRuntimeProvider()) {
91024
+ return getSupportedEffortLevelsForModel(model, provider).length > 0;
90920
91025
  }
90921
91026
  function toOpenRouterReasoningEffort(model, effort) {
90922
- const supported = getRuntimeModelReasoningCapabilities(model, "openrouter")?.supportedEfforts;
90923
- if (effort !== "max")
90924
- return effort;
90925
- if (supported === null || supported === undefined)
90926
- return "max";
90927
- if (supported.includes("max"))
90928
- return "max";
90929
- if (supported.includes("xhigh"))
90930
- return "xhigh";
90931
- return "high";
91027
+ return resolveProviderEffortLevel(model, effort, "openrouter") ?? (effort === "max" ? "high" : effort);
90932
91028
  }
90933
91029
  function isEffortLevel(value) {
90934
91030
  return EFFORT_LEVELS.includes(value);
@@ -90951,7 +91047,7 @@ function parseEffortValue(value) {
90951
91047
  return;
90952
91048
  }
90953
91049
  function toPersistableEffort(value) {
90954
- if (value === "low" || value === "medium" || value === "high") {
91050
+ if (value === "minimal" || value === "low" || value === "medium" || value === "high" || value === "xhigh") {
90955
91051
  return value;
90956
91052
  }
90957
91053
  if (value === "max" && process.env.USER_TYPE === "ant") {
@@ -90975,11 +91071,10 @@ function resolveAppliedEffort(model, appStateEffortValue, provider = getRuntimeP
90975
91071
  if (envOverride === null) {
90976
91072
  return;
90977
91073
  }
90978
- const resolved = envOverride ?? appStateEffortValue ?? getDefaultEffortForModel(model);
90979
- if (resolved === "max" && !modelSupportsMaxEffort(model, provider)) {
90980
- return "high";
90981
- }
90982
- return resolved;
91074
+ const resolved = envOverride ?? appStateEffortValue ?? getDefaultEffortForModel(model, provider);
91075
+ if (resolved === undefined || typeof resolved === "number")
91076
+ return resolved;
91077
+ return resolveProviderEffortLevel(model, resolved, provider);
90983
91078
  }
90984
91079
  function getDisplayedEffortLevel(model, appStateEffort, provider = getRuntimeProvider()) {
90985
91080
  const resolved = resolveAppliedEffort(model, appStateEffort, provider) ?? "high";
@@ -91013,12 +91108,16 @@ function convertEffortValueToLevel(value) {
91013
91108
  }
91014
91109
  function getEffortLevelDescription(level) {
91015
91110
  switch (level) {
91111
+ case "minimal":
91112
+ return "Minimal reasoning for the lowest latency and cost";
91016
91113
  case "low":
91017
91114
  return "Quick, straightforward implementation with minimal overhead";
91018
91115
  case "medium":
91019
91116
  return "Balanced approach with standard implementation and testing";
91020
91117
  case "high":
91021
91118
  return "Comprehensive implementation with extensive testing and documentation";
91119
+ case "xhigh":
91120
+ return "Extended reasoning above high where the provider supports it";
91022
91121
  case "max":
91023
91122
  return "Maximum capability with deepest reasoning";
91024
91123
  }
@@ -91039,7 +91138,11 @@ function getmodelODefaultEffortConfig() {
91039
91138
  ...config2
91040
91139
  };
91041
91140
  }
91042
- function getDefaultEffortForModel(model) {
91141
+ function getDefaultEffortForModel(model, provider = getRuntimeProvider()) {
91142
+ const providerDefault = getRuntimeModelReasoningCapabilities(model, provider)?.defaultEffort;
91143
+ if (providerDefault && isEffortLevel(providerDefault)) {
91144
+ return resolveProviderEffortLevel(model, providerDefault, provider);
91145
+ }
91043
91146
  if (process.env.USER_TYPE === "ant") {
91044
91147
  const config2 = getAntModelOverrideConfig();
91045
91148
  const isDefaultModel = config2?.defaultModel !== undefined && model.toLowerCase() === config2.defaultModel.toLowerCase();
@@ -91057,7 +91160,7 @@ function getDefaultEffortForModel(model) {
91057
91160
  }
91058
91161
  return;
91059
91162
  }
91060
- if (modelSupportsEffort(model)) {
91163
+ if (modelSupportsEffort(model, provider)) {
91061
91164
  if (isProSubscriber()) {
91062
91165
  return "medium";
91063
91166
  }
@@ -91065,12 +91168,12 @@ function getDefaultEffortForModel(model) {
91065
91168
  return "medium";
91066
91169
  }
91067
91170
  }
91068
- if (isUltrathinkEnabled() && modelSupportsEffort(model)) {
91171
+ if (isUltrathinkEnabled() && modelSupportsEffort(model, provider)) {
91069
91172
  return "medium";
91070
91173
  }
91071
91174
  return;
91072
91175
  }
91073
- var EFFORT_LEVELS, MODELO_DEFAULT_EFFORT_CONFIG_DEFAULT;
91176
+ var EFFORT_LEVELS, OLLAMA_GRADED_THINK_MODEL_RE, MODELO_DEFAULT_EFFORT_CONFIG_DEFAULT;
91074
91177
  var init_effort = __esm(() => {
91075
91178
  init_thinking();
91076
91179
  init_settings2();
@@ -91081,11 +91184,14 @@ var init_effort = __esm(() => {
91081
91184
  init_envUtils();
91082
91185
  init_antModels();
91083
91186
  EFFORT_LEVELS = [
91187
+ "minimal",
91084
91188
  "low",
91085
91189
  "medium",
91086
91190
  "high",
91191
+ "xhigh",
91087
91192
  "max"
91088
91193
  ];
91194
+ OLLAMA_GRADED_THINK_MODEL_RE = /gpt-oss/i;
91089
91195
  MODELO_DEFAULT_EFFORT_CONFIG_DEFAULT = {
91090
91196
  enabled: true,
91091
91197
  dialogTitle: "We recommend medium effort for modelO",
@@ -92658,6 +92764,7 @@ import { randomUUID as randomUUID5 } from "crypto";
92658
92764
  async function createOpenAICompatibleClient(options) {
92659
92765
  const endpoint = normalizeOpenAICompatibleBaseUrl(options.baseUrl);
92660
92766
  const maxRetries = options.maxRetries;
92767
+ const providerId = options.providerId ?? "openai-compatible";
92661
92768
  async function doRequest(params, requestOptions) {
92662
92769
  const response = await fetchWithProviderReliability(endpoint, {
92663
92770
  method: "POST",
@@ -92666,7 +92773,7 @@ async function createOpenAICompatibleClient(options) {
92666
92773
  ...options.apiKey ? { Authorization: `Bearer ${options.apiKey}` } : {},
92667
92774
  ...requestOptions?.headers ?? {}
92668
92775
  },
92669
- body: JSON.stringify(toOpenAICompatibleRequest(params))
92776
+ body: JSON.stringify(toOpenAICompatibleRequest(params, providerId))
92670
92777
  }, {
92671
92778
  maxRetries,
92672
92779
  timeoutMs: requestOptions?.timeoutMs,
@@ -92689,7 +92796,7 @@ async function createOpenAICompatibleClient(options) {
92689
92796
  ...options.apiKey ? { Authorization: `Bearer ${options.apiKey}` } : {},
92690
92797
  ...requestOptions?.headers ?? {}
92691
92798
  },
92692
- body: JSON.stringify(toOpenAICompatibleRequest({ ...params, stream: true }))
92799
+ body: JSON.stringify(toOpenAICompatibleRequest({ ...params, stream: true }, providerId))
92693
92800
  }, {
92694
92801
  maxRetries,
92695
92802
  timeoutMs: requestOptions?.timeoutMs,
@@ -92747,7 +92854,7 @@ function toOpenAICompatibleRequest(params, providerName = "openai-compatible") {
92747
92854
  const openRouterReasoning = providerName === "openrouter" && reasoningEffort ? {
92748
92855
  effort: toOpenRouterReasoningEffort(String(params.model ?? ""), reasoningEffort)
92749
92856
  } : undefined;
92750
- const compatibleReasoningEffort = reasoningEffort === "max" ? "high" : reasoningEffort;
92857
+ const compatibleReasoningEffort = reasoningEffort;
92751
92858
  const openRouterServerSearch = providerName === "openrouter" && tools.some((tool) => tool?.type === "openrouter:web_search");
92752
92859
  const toolChoice = openRouterServerSearch ? undefined : mapOpenAIToolChoice(params.tool_choice);
92753
92860
  return {
@@ -92780,7 +92887,7 @@ function toOpenAIResponseFormat(format4) {
92780
92887
  }
92781
92888
  function toOpenAIReasoningEffort(params) {
92782
92889
  const requested = params.output_config?.effort;
92783
- if (requested === "low" || requested === "medium" || requested === "high" || requested === "max") {
92890
+ if (requested === "minimal" || requested === "low" || requested === "medium" || requested === "high" || requested === "xhigh" || requested === "max") {
92784
92891
  return requested;
92785
92892
  }
92786
92893
  if (params.thinking?.type === "adaptive")
@@ -93736,11 +93843,9 @@ function structuredTextConfig(outputConfig) {
93736
93843
  }
93737
93844
  function reasoningConfig(params) {
93738
93845
  const requested = params.output_config?.effort;
93739
- if (requested === "low" || requested === "medium" || requested === "high") {
93846
+ if (requested === "minimal" || requested === "low" || requested === "medium" || requested === "high" || requested === "xhigh" || requested === "max") {
93740
93847
  return { effort: requested };
93741
93848
  }
93742
- if (requested === "max")
93743
- return { effort: "high" };
93744
93849
  if (params.thinking?.type === "adaptive")
93745
93850
  return { effort: "medium" };
93746
93851
  if (params.thinking?.type !== "enabled")
@@ -95655,7 +95760,8 @@ async function createOpenAICompatibleProviderClient(providerId, options = {}) {
95655
95760
  return await createOpenAICompatibleClient2({
95656
95761
  baseUrl,
95657
95762
  apiKey,
95658
- maxRetries: options.maxRetries ?? 3
95763
+ maxRetries: options.maxRetries ?? 3,
95764
+ providerId
95659
95765
  });
95660
95766
  }
95661
95767
  async function createSubscriptionClient(providerId, options = {}) {
@@ -108252,7 +108358,7 @@ var init_auth = __esm(() => {
108252
108358
 
108253
108359
  // src/utils/userAgent.ts
108254
108360
  function getURCodeUserAgent() {
108255
- return `ur/${"1.81.5"}`;
108361
+ return `ur/${"1.81.8"}`;
108256
108362
  }
108257
108363
 
108258
108364
  // src/utils/workloadContext.ts
@@ -108274,7 +108380,7 @@ function getUserAgent() {
108274
108380
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
108275
108381
  const workload = getWorkload();
108276
108382
  const workloadSuffix = workload ? `, workload/${workload}` : "";
108277
- return `ur-cli/${"1.81.5"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
108383
+ return `ur-cli/${"1.81.8"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
108278
108384
  }
108279
108385
  function getMCPUserAgent() {
108280
108386
  const parts = [];
@@ -108288,7 +108394,7 @@ function getMCPUserAgent() {
108288
108394
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
108289
108395
  }
108290
108396
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
108291
- return `ur/${"1.81.5"}${suffix}`;
108397
+ return `ur/${"1.81.8"}${suffix}`;
108292
108398
  }
108293
108399
  function getWebFetchUserAgent() {
108294
108400
  return `UR-User (${getURCodeUserAgent()})`;
@@ -108426,7 +108532,7 @@ var init_user = __esm(() => {
108426
108532
  deviceId,
108427
108533
  sessionId: getSessionId(),
108428
108534
  email: getEmail(),
108429
- appVersion: "1.81.5",
108535
+ appVersion: "1.81.8",
108430
108536
  platform: getHostPlatformForAnalytics(),
108431
108537
  organizationUuid,
108432
108538
  accountUuid,
@@ -116313,7 +116419,7 @@ var init_metadata = __esm(() => {
116313
116419
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
116314
116420
  WHITESPACE_REGEX = /\s+/;
116315
116421
  getVersionBase = memoize_default(() => {
116316
- const match = "1.81.5".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
116422
+ const match = "1.81.8".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
116317
116423
  return match ? match[0] : undefined;
116318
116424
  });
116319
116425
  buildEnvContext = memoize_default(async () => {
@@ -116353,7 +116459,7 @@ var init_metadata = __esm(() => {
116353
116459
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
116354
116460
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
116355
116461
  isURAiAuth: isURAISubscriber(),
116356
- version: "1.81.5",
116462
+ version: "1.81.8",
116357
116463
  versionBase: getVersionBase(),
116358
116464
  buildTime: "",
116359
116465
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -117023,7 +117129,7 @@ function initialize1PEventLogging() {
117023
117129
  const platform2 = getPlatform();
117024
117130
  const attributes = {
117025
117131
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
117026
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.81.5"
117132
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.81.8"
117027
117133
  };
117028
117134
  if (platform2 === "wsl") {
117029
117135
  const wslVersion = getWslVersion();
@@ -117051,7 +117157,7 @@ function initialize1PEventLogging() {
117051
117157
  })
117052
117158
  ]
117053
117159
  });
117054
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.81.5");
117160
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.81.8");
117055
117161
  }
117056
117162
  async function reinitialize1PEventLoggingIfConfigChanged() {
117057
117163
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -119632,7 +119738,7 @@ var init_types2 = __esm(() => {
119632
119738
  syntaxHighlightingDisabled: exports_external.boolean().optional().describe("Whether to disable syntax highlighting in diffs"),
119633
119739
  terminalTitleFromRename: exports_external.boolean().optional().describe("Whether /rename updates the terminal tab title (defaults to true). Set to false to keep auto-generated topic titles."),
119634
119740
  alwaysThinkingEnabled: exports_external.boolean().optional().describe("When false, thinking is disabled. When absent or true, thinking is " + "enabled automatically for supported models."),
119635
- effortLevel: exports_external.enum(process.env.USER_TYPE === "ant" ? ["low", "medium", "high", "max"] : ["low", "medium", "high"]).optional().catch(undefined).describe("Persisted effort level for supported models."),
119741
+ effortLevel: exports_external.enum(process.env.USER_TYPE === "ant" ? ["minimal", "low", "medium", "high", "xhigh", "max"] : ["minimal", "low", "medium", "high", "xhigh"]).optional().catch(undefined).describe("Persisted effort level for supported models."),
119636
119742
  advisorModel: exports_external.string().optional().describe("Advisor model for the server-side advisor tool."),
119637
119743
  fastMode: exports_external.boolean().optional().describe("When true, fast mode is enabled. When absent or false, fast mode is off."),
119638
119744
  fastModePerSessionOptIn: exports_external.boolean().optional().describe("When true, fast mode does not persist across sessions. Each session starts with fast mode off."),
@@ -127017,7 +127123,7 @@ function formatA2AAgentCard(options = {}, pretty = true) {
127017
127123
  function formatA2AV1AgentCard(options = {}, pretty = true) {
127018
127124
  return JSON.stringify(buildA2AV1AgentCard(options), null, pretty ? 2 : 0);
127019
127125
  }
127020
- var urVersion = "1.81.5", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
127126
+ var urVersion = "1.81.8", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
127021
127127
  var init_trends = __esm(() => {
127022
127128
  init_a2aCardSignature();
127023
127129
  coverage = [
@@ -129907,7 +130013,7 @@ function getAttributionHeader(fingerprint) {
129907
130013
  if (!isAttributionHeaderEnabled()) {
129908
130014
  return "";
129909
130015
  }
129910
- const version2 = `${"1.81.5"}.${fingerprint}`;
130016
+ const version2 = `${"1.81.8"}.${fingerprint}`;
129911
130017
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
129912
130018
  const cch = "";
129913
130019
  const workload = getWorkload();
@@ -184828,7 +184934,7 @@ var init_projectSafety = __esm(() => {
184828
184934
  function getInstruments() {
184829
184935
  if (instruments)
184830
184936
  return instruments;
184831
- const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.81.5");
184937
+ const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.81.8");
184832
184938
  instruments = {
184833
184939
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
184834
184940
  description: "GenAI operation duration.",
@@ -184926,7 +185032,7 @@ function genAiAgentAttributes() {
184926
185032
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
184927
185033
  "gen_ai.provider.name": "ur",
184928
185034
  "gen_ai.agent.name": "UR-Nexus",
184929
- "gen_ai.agent.version": "1.81.5"
185035
+ "gen_ai.agent.version": "1.81.8"
184930
185036
  };
184931
185037
  }
184932
185038
  function genAiWorkflowAttributes(workflowName, workflowRunId) {
@@ -184947,7 +185053,7 @@ function genAiWorkflowAttributes(workflowName, workflowRunId) {
184947
185053
  function startGenAiWorkflowSpan(workflowName, workflowRunId) {
184948
185054
  const attributes = genAiWorkflowAttributes(workflowName, workflowRunId);
184949
185055
  const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
184950
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.5").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
185056
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.8").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
184951
185057
  }
184952
185058
  function endGenAiWorkflowSpan(span, options2 = {}) {
184953
185059
  try {
@@ -184985,7 +185091,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
184985
185091
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
184986
185092
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
184987
185093
  }
184988
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.5").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
185094
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.8").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
184989
185095
  }
184990
185096
  function endGenAiMemorySpan(span, options2 = {}) {
184991
185097
  try {
@@ -278700,7 +278806,7 @@ function getTelemetryAttributes() {
278700
278806
  attributes["session.id"] = sessionId;
278701
278807
  }
278702
278808
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
278703
- attributes["app.version"] = "1.81.5";
278809
+ attributes["app.version"] = "1.81.8";
278704
278810
  }
278705
278811
  const oauthAccount = getOauthAccountInfo();
278706
278812
  if (oauthAccount) {
@@ -320104,7 +320210,7 @@ function getInstallationEnv() {
320104
320210
  return;
320105
320211
  }
320106
320212
  function getURCodeVersion() {
320107
- return "1.81.5";
320213
+ return "1.81.8";
320108
320214
  }
320109
320215
  async function getInstalledVSCodeExtensionVersion(command) {
320110
320216
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -327474,7 +327580,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
327474
327580
  const client2 = new Client({
327475
327581
  name: "ur",
327476
327582
  title: "UR",
327477
- version: "1.81.5",
327583
+ version: "1.81.8",
327478
327584
  description: "UR-Nexus autonomous engineering workflow engine",
327479
327585
  websiteUrl: PRODUCT_URL
327480
327586
  }, {
@@ -327835,7 +327941,7 @@ var init_client5 = __esm(() => {
327835
327941
  const client2 = new Client({
327836
327942
  name: "ur",
327837
327943
  title: "UR",
327838
- version: "1.81.5",
327944
+ version: "1.81.8",
327839
327945
  description: "UR-Nexus autonomous engineering workflow engine",
327840
327946
  websiteUrl: PRODUCT_URL
327841
327947
  }, {
@@ -340608,7 +340714,7 @@ async function createRuntime() {
340608
340714
  bootstrapTelemetry();
340609
340715
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
340610
340716
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
340611
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.81.5"
340717
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.81.8"
340612
340718
  }));
340613
340719
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
340614
340720
  resource,
@@ -340641,11 +340747,11 @@ async function createRuntime() {
340641
340747
  setMeterProvider(meterProvider);
340642
340748
  setLoggerProvider(loggerProvider);
340643
340749
  if (meterProvider) {
340644
- const meter = meterProvider.getMeter("ur-agent", "1.81.5");
340750
+ const meter = meterProvider.getMeter("ur-agent", "1.81.8");
340645
340751
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
340646
340752
  }
340647
340753
  if (loggerProvider) {
340648
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.81.5"));
340754
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.81.8"));
340649
340755
  }
340650
340756
  if (!cleanupRegistered3) {
340651
340757
  cleanupRegistered3 = true;
@@ -341307,9 +341413,9 @@ async function assertMinVersion() {
341307
341413
  if (false) {}
341308
341414
  try {
341309
341415
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
341310
- if (versionConfig.minVersion && lt("1.81.5", versionConfig.minVersion)) {
341416
+ if (versionConfig.minVersion && lt("1.81.8", versionConfig.minVersion)) {
341311
341417
  console.error(`
341312
- It looks like your version of UR (${"1.81.5"}) needs an update.
341418
+ It looks like your version of UR (${"1.81.8"}) needs an update.
341313
341419
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
341314
341420
 
341315
341421
  To update, please run:
@@ -341525,7 +341631,7 @@ async function installGlobalPackage(specificVersion) {
341525
341631
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
341526
341632
  logEvent("tengu_auto_updater_lock_contention", {
341527
341633
  pid: process.pid,
341528
- currentVersion: "1.81.5"
341634
+ currentVersion: "1.81.8"
341529
341635
  });
341530
341636
  return "in_progress";
341531
341637
  }
@@ -341534,7 +341640,7 @@ async function installGlobalPackage(specificVersion) {
341534
341640
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
341535
341641
  logError2(new Error("Windows NPM detected in WSL environment"));
341536
341642
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
341537
- currentVersion: "1.81.5"
341643
+ currentVersion: "1.81.8"
341538
341644
  });
341539
341645
  console.error(`
341540
341646
  Error: Windows NPM detected in WSL
@@ -342069,7 +342175,7 @@ function detectLinuxGlobPatternWarnings() {
342069
342175
  }
342070
342176
  async function getDoctorDiagnostic() {
342071
342177
  const installationType = await getCurrentInstallationType();
342072
- const version2 = typeof MACRO !== "undefined" ? "1.81.5" : "unknown";
342178
+ const version2 = typeof MACRO !== "undefined" ? "1.81.8" : "unknown";
342073
342179
  const installationPath = await getInstallationPath();
342074
342180
  const invokedBinary = getInvokedBinary();
342075
342181
  const multipleInstallations = await detectMultipleInstallations();
@@ -343004,8 +343110,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
343004
343110
  const maxVersion = await getMaxVersion();
343005
343111
  if (maxVersion && gt(version2, maxVersion)) {
343006
343112
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
343007
- if (gte("1.81.5", maxVersion)) {
343008
- logForDebugging(`Native installer: current version ${"1.81.5"} is already at or above maxVersion ${maxVersion}, skipping update`);
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`);
343009
343115
  logEvent("tengu_native_update_skipped_max_version", {
343010
343116
  latency_ms: Date.now() - startTime,
343011
343117
  max_version: maxVersion,
@@ -343016,7 +343122,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
343016
343122
  version2 = maxVersion;
343017
343123
  }
343018
343124
  }
343019
- if (!forceReinstall && version2 === "1.81.5" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
343125
+ if (!forceReinstall && version2 === "1.81.8" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
343020
343126
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
343021
343127
  logEvent("tengu_native_update_complete", {
343022
343128
  latency_ms: Date.now() - startTime,
@@ -346817,7 +346923,7 @@ var init_coreSchemas = __esm(() => {
346817
346923
  displayName: exports_external.string().describe("Human-readable display name"),
346818
346924
  description: exports_external.string().describe("Description of the model's capabilities"),
346819
346925
  supportsEffort: exports_external.boolean().optional().describe("Whether this model supports effort levels"),
346820
- supportedEffortLevels: exports_external.array(exports_external.enum(["low", "medium", "high", "max"])).optional().describe("Available effort levels for this model"),
346926
+ supportedEffortLevels: exports_external.array(exports_external.enum(["minimal", "low", "medium", "high", "xhigh", "max"])).optional().describe("Available effort levels for this model"),
346821
346927
  supportsAdaptiveThinking: exports_external.boolean().optional().describe("Whether this model supports adaptive thinking (UR decides when and how much to think)"),
346822
346928
  supportsFastMode: exports_external.boolean().optional().describe("Whether this model supports fast mode"),
346823
346929
  supportsAutoMode: exports_external.boolean().optional().describe("Whether this model supports auto mode")
@@ -346847,7 +346953,10 @@ var init_coreSchemas = __esm(() => {
346847
346953
  maxTurns: exports_external.number().int().positive().optional().describe("Maximum number of agentic turns (API round-trips) before stopping"),
346848
346954
  background: exports_external.boolean().optional().describe("Run this agent as a background task (non-blocking, fire-and-forget) when invoked"),
346849
346955
  memory: exports_external.enum(["user", "project", "local"]).optional().describe("Scope for auto-loading agent memory files. 'user' - ~/.ur/agent-memory/<agentType>/, 'project' - .ur/agent-memory/<agentType>/, 'local' - .ur/agent-memory-local/<agentType>/"),
346850
- effort: exports_external.union([exports_external.enum(["low", "medium", "high", "max"]), exports_external.number().int()]).optional().describe("Reasoning effort level for this agent. Either a named level or an integer"),
346956
+ effort: exports_external.union([
346957
+ exports_external.enum(["minimal", "low", "medium", "high", "xhigh", "max"]),
346958
+ exports_external.number().int()
346959
+ ]).optional().describe("Reasoning effort level for this agent. Either a named level or an integer"),
346851
346960
  permissionMode: PermissionModeSchema().optional().describe("Permission mode controlling how tool executions are handled")
346852
346961
  }).describe("Definition for a custom subagent that can be invoked via the Agent tool."));
346853
346962
  SettingSourceSchema = lazySchema(() => exports_external.enum(["user", "project", "local"]).describe("Source for loading filesystem-based settings. " + "'user' - Global user settings (~/.ur/settings.json). " + "'project' - Project settings (.ur/settings.json). " + "'local' - Local settings (.ur/settings.local.json)."));
@@ -413703,7 +413812,7 @@ function isAnyTracingEnabled() {
413703
413812
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
413704
413813
  }
413705
413814
  function getTracer() {
413706
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.81.5");
413815
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.81.8");
413707
413816
  }
413708
413817
  function createSpanAttributes(spanType, customAttributes = {}) {
413709
413818
  const baseAttributes = getTelemetryAttributes();
@@ -424159,13 +424268,6 @@ function describeUnreadRemainder(file2) {
424159
424268
 
424160
424269
  <system-reminder>This is lines ${firstLine}-${lastLine} of ${file2.totalLines}. ${file2.totalLines - lastLine} lines were not returned \u2014 read again with offset ${lastLine + 1} if you need them.</system-reminder>`;
424161
424270
  }
424162
- function shouldIncludeFileReadMitigation() {
424163
- const shortName = getCanonicalName(getMainLoopModel());
424164
- return !MITIGATION_EXEMPT_MODELS.has(shortName);
424165
- }
424166
- function getFileReadSecurityReminder() {
424167
- return isRedteamModeActive() ? REDTEAM_FILE_READ_REMINDER : CYBER_RISK_MITIGATION_REMINDER;
424168
- }
424169
424271
  function memoryFileFreshnessPrefix(data) {
424170
424272
  const mtimeMs = memoryFileMtimes.get(data);
424171
424273
  if (mtimeMs === undefined)
@@ -424443,17 +424545,7 @@ async function readImageWithTokenBudget(filePath, maxTokens = getDefaultFileRead
424443
424545
  }
424444
424546
  return result;
424445
424547
  }
424446
- var BLOCKED_DEVICE_PATHS, THIN_SPACE, fileReadListeners, MaxFileReadTokenExceededError, IMAGE_EXTENSIONS, inputSchema46, outputSchema39, FileReadTool, CYBER_RISK_MITIGATION_REMINDER = `
424447
-
424448
- <system-reminder>
424449
- Whenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.
424450
- </system-reminder>
424451
- `, REDTEAM_FILE_READ_REMINDER = `
424452
-
424453
- <system-reminder>
424454
- UR redteam mode is active. You may analyze, modify, build, and test security-research code, including malware and exploits. Keep operational actions within the approved target scope and continue to honor tool permissions, sandboxing, and action confirmations. The selected model/provider may apply separate policies.
424455
- </system-reminder>
424456
- `, MITIGATION_EXEMPT_MODELS, memoryFileMtimes;
424548
+ var BLOCKED_DEVICE_PATHS, THIN_SPACE, fileReadListeners, MaxFileReadTokenExceededError, IMAGE_EXTENSIONS, inputSchema46, outputSchema39, FileReadTool, memoryFileMtimes;
424457
424549
  var init_FileReadTool = __esm(() => {
424458
424550
  init_v4();
424459
424551
  init_apiLimits();
@@ -424465,7 +424557,6 @@ var init_FileReadTool = __esm(() => {
424465
424557
  init_loadSkillsDir();
424466
424558
  init_Tool();
424467
424559
  init_cwd2();
424468
- init_redteamMode();
424469
424560
  init_envUtils();
424470
424561
  init_errors();
424471
424562
  init_file();
@@ -424476,7 +424567,6 @@ var init_FileReadTool = __esm(() => {
424476
424567
  init_log2();
424477
424568
  init_memoryFileDetection();
424478
424569
  init_messages();
424479
- init_model();
424480
424570
  init_notebook();
424481
424571
  init_path();
424482
424572
  init_pdf();
@@ -424811,7 +424901,7 @@ var init_FileReadTool = __esm(() => {
424811
424901
  case "text": {
424812
424902
  let content;
424813
424903
  if (data.file.content) {
424814
- content = memoryFileFreshnessPrefix(data) + formatFileLines(data.file) + describeUnreadRemainder(data.file) + (shouldIncludeFileReadMitigation() ? getFileReadSecurityReminder() : "");
424904
+ content = memoryFileFreshnessPrefix(data) + formatFileLines(data.file) + describeUnreadRemainder(data.file);
424815
424905
  } else {
424816
424906
  content = data.file.totalLines === 0 ? "<system-reminder>Warning: the file exists but the contents are empty.</system-reminder>" : `<system-reminder>Warning: the file exists but is shorter than the provided offset (${data.file.startLine}). The file has ${data.file.totalLines} lines.</system-reminder>`;
424817
424907
  }
@@ -424824,7 +424914,6 @@ var init_FileReadTool = __esm(() => {
424824
424914
  }
424825
424915
  }
424826
424916
  });
424827
- MITIGATION_EXEMPT_MODELS = new Set;
424828
424917
  memoryFileMtimes = new WeakMap;
424829
424918
  });
424830
424919
 
@@ -443862,7 +443951,7 @@ function Feedback({
443862
443951
  platform: env2.platform,
443863
443952
  gitRepo: envInfo.isGit,
443864
443953
  terminal: env2.terminal,
443865
- version: "1.81.5",
443954
+ version: "1.81.8",
443866
443955
  transcript: normalizeMessagesForAPI(messages),
443867
443956
  errors: sanitizedErrors,
443868
443957
  lastApiRequest: getLastAPIRequest(),
@@ -444054,7 +444143,7 @@ function Feedback({
444054
444143
  ", ",
444055
444144
  env2.terminal,
444056
444145
  ", v",
444057
- "1.81.5"
444146
+ "1.81.8"
444058
444147
  ]
444059
444148
  }, undefined, true, undefined, this)
444060
444149
  ]
@@ -444160,7 +444249,7 @@ ${sanitizedDescription}
444160
444249
  ` + `**Environment Info**
444161
444250
  ` + `- Platform: ${env2.platform}
444162
444251
  ` + `- Terminal: ${env2.terminal}
444163
- ` + `- Version: ${"1.81.5"}
444252
+ ` + `- Version: ${"1.81.8"}
444164
444253
  ` + `- Feedback ID: ${feedbackId}
444165
444254
  ` + `
444166
444255
  **Errors**
@@ -447270,7 +447359,7 @@ function buildPrimarySection() {
447270
447359
  }, undefined, false, undefined, this);
447271
447360
  return [{
447272
447361
  label: "Version",
447273
- value: "1.81.5"
447362
+ value: "1.81.8"
447274
447363
  }, {
447275
447364
  label: "Session name",
447276
447365
  value: nameValue
@@ -448045,12 +448134,14 @@ function getEffortNotificationText(effortValue, model, provider) {
448045
448134
  }
448046
448135
  function effortLevelToSymbol(level) {
448047
448136
  switch (level) {
448137
+ case "minimal":
448048
448138
  case "low":
448049
448139
  return EFFORT_LOW;
448050
448140
  case "medium":
448051
448141
  return EFFORT_MEDIUM;
448052
448142
  case "high":
448053
448143
  return EFFORT_HIGH;
448144
+ case "xhigh":
448054
448145
  case "max":
448055
448146
  return EFFORT_MAX;
448056
448147
  default:
@@ -448071,6 +448162,9 @@ function compactModelDisplayName(modelId, maxLength = DEFAULT_COMPACT_MODEL_LENG
448071
448162
  return leaf2;
448072
448163
  return `${leaf2.slice(0, limit - 1)}\u2026`;
448073
448164
  }
448165
+ function fullProviderModelDisplayName(providerId, model) {
448166
+ return providerId === "openrouter" ? model.id : model.displayName;
448167
+ }
448074
448168
  function buildProviderModelLabels(providerId, models) {
448075
448169
  if (providerId !== "openrouter") {
448076
448170
  return new Map(models.map((model) => [model.id, model.displayName]));
@@ -448119,6 +448213,8 @@ function ModelPicker({
448119
448213
  const [pickerError, setPickerError] = import_react102.useState(null);
448120
448214
  const [loadingModels, setLoadingModels] = import_react102.useState(true);
448121
448215
  const [modelReloadToken, setModelReloadToken] = import_react102.useState(0);
448216
+ const [effortCapabilityLoading, setEffortCapabilityLoading] = import_react102.useState(false);
448217
+ const [effortCapabilityWarning, setEffortCapabilityWarning] = import_react102.useState(null);
448122
448218
  const effectiveSettings = getInitialSettings();
448123
448219
  const currentProvider = getActiveProviderSettings(effectiveSettings).active ?? "ollama";
448124
448220
  import_react102.useEffect(() => {
@@ -448137,6 +448233,7 @@ function ModelPicker({
448137
448233
  value: model.id,
448138
448234
  label: modelLabels.get(model.id) ?? model.displayName,
448139
448235
  description: `${model.description} \xB7 ${result.source}`,
448236
+ reasoning: model.reasoning,
448140
448237
  ...model.supportedParameters !== undefined && !model.supportedParameters.includes("tools") ? { disabled: true } : {}
448141
448238
  })));
448142
448239
  setPickerError(result.warning ?? null);
@@ -448151,6 +448248,45 @@ function ModelPicker({
448151
448248
  });
448152
448249
  return () => controller.abort();
448153
448250
  }, [currentProvider, modelReloadToken]);
448251
+ import_react102.useEffect(() => {
448252
+ if (currentProvider !== "llama.cpp" || !focusedValue) {
448253
+ setEffortCapabilityLoading(false);
448254
+ setEffortCapabilityWarning(null);
448255
+ return;
448256
+ }
448257
+ const focused = providerModelOptions.find((model) => model.value === focusedValue);
448258
+ if (!focused || focused.reasoning !== undefined) {
448259
+ setEffortCapabilityLoading(false);
448260
+ setEffortCapabilityWarning(null);
448261
+ return;
448262
+ }
448263
+ const controller = new AbortController;
448264
+ let cancelled = false;
448265
+ const timer = setTimeout(() => {
448266
+ setEffortCapabilityLoading(true);
448267
+ setEffortCapabilityWarning(null);
448268
+ ensureProviderReasoningCapabilitiesForModel(currentProvider, focusedValue, {
448269
+ settings: effectiveSettings,
448270
+ signal: controller.signal
448271
+ }).then((reasoning) => {
448272
+ if (cancelled)
448273
+ return;
448274
+ setProviderModelOptions((previous) => previous.map((model) => model.value === focusedValue ? { ...model, reasoning: reasoning ?? { supportedEfforts: [] } } : model));
448275
+ }).catch((error40) => {
448276
+ if (cancelled || controller.signal.aborted)
448277
+ return;
448278
+ setEffortCapabilityWarning(`Could not verify effort levels: ${error40 instanceof Error ? error40.message : String(error40)}`);
448279
+ }).finally(() => {
448280
+ if (!cancelled)
448281
+ setEffortCapabilityLoading(false);
448282
+ });
448283
+ }, 180);
448284
+ return () => {
448285
+ cancelled = true;
448286
+ clearTimeout(timer);
448287
+ controller.abort();
448288
+ };
448289
+ }, [currentProvider, focusedValue, providerModelOptions]);
448154
448290
  use_input_default((input, key) => {
448155
448291
  if (key.ctrl && (input === "r" || input === "R")) {
448156
448292
  setModelReloadToken((token) => token + 1);
@@ -448175,23 +448311,24 @@ function ModelPicker({
448175
448311
  const visibleCount = getAdaptiveModelVisibleCount(selectOptions.length, terminalSize?.rows);
448176
448312
  const hiddenCount = Math.max(0, selectOptions.length - visibleCount);
448177
448313
  const focusedModelName = selectOptions.find((opt) => opt.value === focusedValue)?.label;
448314
+ const focusedModelOption = selectOptions.find((opt) => opt.value === focusedValue);
448178
448315
  const focusedModel = resolveOptionModel(focusedValue);
448179
- const focusedSupportsEffort = focusedModel ? modelSupportsEffort(focusedModel) : false;
448180
- const focusedSupportsMax = focusedModel ? modelSupportsMaxEffort(focusedModel) : false;
448316
+ const focusedEffortLevels = focusedModel ? getSupportedEffortLevelsForModel(focusedModel, currentProvider) : [];
448317
+ const focusedSupportsEffort = focusedModel ? modelSupportsEffort(focusedModel, currentProvider) : false;
448181
448318
  const focusedSupportsThinking = focusedModel ? modelSupportsThinking(focusedModel) : false;
448182
- const focusedDefaultEffort = getDefaultEffortLevelForOption(focusedValue);
448183
- const displayEffort = effort === "max" && !focusedSupportsMax ? "high" : effort;
448319
+ const focusedDefaultEffort = getDefaultEffortLevelForOption(focusedValue, currentProvider);
448320
+ const displayEffort = focusedModel ? resolveProviderEffortLevel(focusedModel, effort ?? focusedDefaultEffort, currentProvider) ?? focusedDefaultEffort : focusedDefaultEffort;
448184
448321
  const handleFocus = (value) => {
448185
448322
  setFocusedValue(value);
448186
448323
  if (!hasToggledEffort && effortValue === undefined) {
448187
- setEffort(getDefaultEffortLevelForOption(value));
448324
+ setEffort(getDefaultEffortLevelForOption(value, currentProvider));
448188
448325
  }
448189
448326
  };
448190
448327
  const handleCycleEffort = (direction) => {
448191
448328
  if (!focusedSupportsEffort) {
448192
448329
  return;
448193
448330
  }
448194
- setEffort((prev) => cycleEffortLevel(prev ?? focusedDefaultEffort, direction, focusedSupportsMax));
448331
+ setEffort((prev) => cycleEffortLevel((focusedModel ? resolveProviderEffortLevel(focusedModel, prev ?? focusedDefaultEffort, currentProvider) : undefined) ?? focusedDefaultEffort, direction, focusedEffortLevels));
448195
448332
  setHasToggledEffort(true);
448196
448333
  };
448197
448334
  const handleToggleThinking = () => {
@@ -448207,8 +448344,10 @@ function ModelPicker({
448207
448344
  "modelPicker:toggleThinking": handleToggleThinking
448208
448345
  }, { context: "ModelPicker" });
448209
448346
  function handleSelect(value) {
448347
+ const selectedModel = resolveOptionModel(value);
448348
+ const selectedEffort = hasToggledEffort && selectedModel && effort ? resolveProviderEffortLevel(selectedModel, effort, currentProvider) : undefined;
448210
448349
  logEvent("tengu_model_command_menu_effort", {
448211
- effort
448350
+ effort: selectedEffort
448212
448351
  });
448213
448352
  if (value !== NO_PREFERENCE) {
448214
448353
  const validation = validateProviderModelPair(currentProvider, value, {
@@ -448220,7 +448359,7 @@ function ModelPicker({
448220
448359
  }
448221
448360
  }
448222
448361
  if (!skipSettingsWrite) {
448223
- const effortLevel = resolvePickerEffortPersistence(effort, getDefaultEffortLevelForOption(value), getSettingsForSource("userSettings")?.effortLevel, hasToggledEffort);
448362
+ const effortLevel = resolvePickerEffortPersistence(hasToggledEffort ? selectedEffort : effort, getDefaultEffortLevelForOption(value, currentProvider), getSettingsForSource("userSettings")?.effortLevel, hasToggledEffort);
448224
448363
  const persistable = toPersistableEffort(effortLevel);
448225
448364
  if (persistable !== undefined) {
448226
448365
  updateSettingsForSource("userSettings", {
@@ -448238,8 +448377,6 @@ function ModelPicker({
448238
448377
  ...hasToggledThinking ? { thinkingEnabled } : {}
448239
448378
  }));
448240
448379
  }
448241
- const selectedModel = resolveOptionModel(value);
448242
- const selectedEffort = hasToggledEffort && selectedModel && modelSupportsEffort(selectedModel) ? effort : undefined;
448243
448380
  if (value === NO_PREFERENCE) {
448244
448381
  onSelect(null, selectedEffort);
448245
448382
  return;
@@ -448364,28 +448501,60 @@ function ModelPicker({
448364
448501
  " more\u2026"
448365
448502
  ]
448366
448503
  }, undefined, true, undefined, this)
448367
- }, undefined, false, undefined, this)
448504
+ }, undefined, false, undefined, this),
448505
+ focusedModelOption && focusedValue !== NO_PREFERENCE && /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedBox_default, {
448506
+ paddingLeft: 3,
448507
+ marginTop: 1,
448508
+ flexDirection: "column",
448509
+ children: [
448510
+ /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedText, {
448511
+ dimColor: true,
448512
+ color: "subtle",
448513
+ children: "Focused model \xB7 full name"
448514
+ }, undefined, false, undefined, this),
448515
+ /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedText, {
448516
+ bold: true,
448517
+ color: "text",
448518
+ children: fullProviderModelDisplayName(currentProvider, {
448519
+ id: focusedModelOption.value,
448520
+ displayName: String(focusedModelOption.label)
448521
+ })
448522
+ }, undefined, false, undefined, this)
448523
+ ]
448524
+ }, undefined, true, undefined, this)
448368
448525
  ]
448369
448526
  }, undefined, true, undefined, this),
448370
448527
  /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedBox_default, {
448371
448528
  marginBottom: 1,
448372
448529
  flexDirection: "column",
448373
448530
  children: [
448374
- focusedSupportsEffort ? /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedText, {
448375
- dimColor: true,
448531
+ focusedSupportsEffort ? /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(jsx_dev_runtime174.Fragment, {
448376
448532
  children: [
448377
- /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(EffortLevelIndicator, {
448378
- effort: displayEffort
448379
- }, undefined, false, undefined, this),
448380
- " ",
448381
- capitalize_default(displayEffort),
448382
- " effort",
448383
- displayEffort === focusedDefaultEffort ? " (default)" : "",
448384
- " ",
448385
448533
  /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedText, {
448534
+ dimColor: true,
448535
+ children: [
448536
+ /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(EffortLevelIndicator, {
448537
+ effort: displayEffort
448538
+ }, undefined, false, undefined, this),
448539
+ " ",
448540
+ capitalize_default(displayEffort),
448541
+ " effort",
448542
+ displayEffort === focusedDefaultEffort ? " (default)" : "",
448543
+ " ",
448544
+ /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedText, {
448545
+ color: "subtle",
448546
+ children: "\u2190 \u2192 to adjust"
448547
+ }, undefined, false, undefined, this)
448548
+ ]
448549
+ }, undefined, true, undefined, this),
448550
+ /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedText, {
448551
+ dimColor: true,
448386
448552
  color: "subtle",
448387
- children: "\u2190 \u2192 to adjust"
448388
- }, undefined, false, undefined, this)
448553
+ children: [
448554
+ "Provider levels: ",
448555
+ focusedEffortLevels.join(" \xB7 ")
448556
+ ]
448557
+ }, undefined, true, undefined, this)
448389
448558
  ]
448390
448559
  }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedText, {
448391
448560
  color: "subtle",
@@ -448394,9 +448563,14 @@ function ModelPicker({
448394
448563
  effort: undefined
448395
448564
  }, undefined, false, undefined, this),
448396
448565
  " Effort not supported",
448397
- focusedModelName ? ` for ${focusedModelName}` : ""
448566
+ focusedModelName ? ` for ${focusedModelName}` : "",
448567
+ effortCapabilityLoading ? " \xB7 checking provider\u2026" : ""
448398
448568
  ]
448399
448569
  }, undefined, true, undefined, this),
448570
+ effortCapabilityWarning && /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedText, {
448571
+ color: "warning",
448572
+ children: effortCapabilityWarning
448573
+ }, undefined, false, undefined, this),
448400
448574
  focusedSupportsThinking ? /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedText, {
448401
448575
  dimColor: true,
448402
448576
  children: [
@@ -448487,8 +448661,8 @@ function EffortLevelIndicator({
448487
448661
  children: effortLevelToSymbol(effort ?? "low")
448488
448662
  }, undefined, false, undefined, this);
448489
448663
  }
448490
- function cycleEffortLevel(current, direction, includeMax) {
448491
- const levels = includeMax ? ["low", "medium", "high", "max"] : ["low", "medium", "high"];
448664
+ function cycleEffortLevel(current, direction, supportedLevels) {
448665
+ const levels = supportedLevels.length > 0 ? [...supportedLevels] : [current];
448492
448666
  const idx = levels.indexOf(current);
448493
448667
  const currentIndex = idx !== -1 ? idx : levels.indexOf("high");
448494
448668
  if (direction === "right") {
@@ -448496,10 +448670,14 @@ function cycleEffortLevel(current, direction, includeMax) {
448496
448670
  }
448497
448671
  return levels[(currentIndex - 1 + levels.length) % levels.length];
448498
448672
  }
448499
- function getDefaultEffortLevelForOption(value) {
448673
+ function getDefaultEffortLevelForOption(value, provider = getActiveProviderSettings(getInitialSettings()).active ?? "ollama") {
448500
448674
  const resolved = resolveOptionModel(value) ?? getDefaultMainLoopModel();
448501
- const defaultValue = getDefaultEffortForModel(resolved);
448502
- return defaultValue !== undefined ? convertEffortValueToLevel(defaultValue) : "high";
448675
+ const levels = getSupportedEffortLevelsForModel(resolved, provider);
448676
+ const defaultValue = getDefaultEffortForModel(resolved, provider);
448677
+ if (defaultValue !== undefined) {
448678
+ return resolveProviderEffortLevel(resolved, convertEffortValueToLevel(defaultValue), provider) ?? "high";
448679
+ }
448680
+ return levels.includes("high") ? "high" : levels.at(-1) ?? "high";
448503
448681
  }
448504
448682
  var import_react102, jsx_dev_runtime174, NO_PREFERENCE = "__NO_PREFERENCE__", selectEffortValue = (s) => s.effortValue, selectFastMode = (s) => isFastModeEnabled() ? s.fastMode : false, selectThinkingEnabled = (s) => s.thinkingEnabled;
448505
448683
  var init_ModelPicker = __esm(() => {
@@ -450684,7 +450862,7 @@ function Config({
450684
450862
  }
450685
450863
  }, undefined, false, undefined, this)
450686
450864
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
450687
- currentVersion: "1.81.5",
450865
+ currentVersion: "1.81.8",
450688
450866
  onChoice: (choice) => {
450689
450867
  setShowSubmenu(null);
450690
450868
  setTabsHidden(false);
@@ -450696,7 +450874,7 @@ function Config({
450696
450874
  autoUpdatesChannel: "stable"
450697
450875
  };
450698
450876
  if (choice === "stay") {
450699
- newSettings.minimumVersion = "1.81.5";
450877
+ newSettings.minimumVersion = "1.81.8";
450700
450878
  }
450701
450879
  updateSettingsForSource("userSettings", newSettings);
450702
450880
  setSettingsData((prev_27) => ({
@@ -459005,7 +459183,7 @@ function HelpV2(t0) {
459005
459183
  let t6;
459006
459184
  if ($2[31] !== tabs) {
459007
459185
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
459008
- title: `UR v${"1.81.5"}`,
459186
+ title: `UR v${"1.81.8"}`,
459009
459187
  color: "professionalBlue",
459010
459188
  defaultTab: "general",
459011
459189
  children: tabs
@@ -459938,7 +460116,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
459938
460116
  async function handleInitialize(options2) {
459939
460117
  return {
459940
460118
  name: "UR",
459941
- version: "1.81.5",
460119
+ version: "1.81.8",
459942
460120
  protocolVersion: "0.1.0",
459943
460121
  workspaceRoot: options2.cwd,
459944
460122
  capabilities: {
@@ -477046,7 +477224,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
477046
477224
  return [];
477047
477225
  }
477048
477226
  }
477049
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.5") {
477227
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.8") {
477050
477228
  if (process.env.USER_TYPE === "ant") {
477051
477229
  const changelog = "";
477052
477230
  if (changelog) {
@@ -477073,7 +477251,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.5")
477073
477251
  releaseNotes
477074
477252
  };
477075
477253
  }
477076
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.81.5") {
477254
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.81.8") {
477077
477255
  if (process.env.USER_TYPE === "ant") {
477078
477256
  const changelog = "";
477079
477257
  if (changelog) {
@@ -479861,6 +480039,9 @@ var init_transcriptSearch = __esm(() => {
479861
480039
  });
479862
480040
 
479863
480041
  // src/utils/logoV2Utils.ts
480042
+ function shouldUseCondensedLogo(hasReleaseNotes, showOnboarding, compactRequested, forceFull) {
480043
+ return compactRequested && !forceFull && !hasReleaseNotes && !showOnboarding;
480044
+ }
479864
480045
  function getCondensedLogoLayout(columns) {
479865
480046
  const safeColumns = Number.isFinite(columns) ? Math.max(1, Math.floor(columns)) : 1;
479866
480047
  const stacked = safeColumns < 35;
@@ -479978,7 +480159,7 @@ function getRecentActivitySync() {
479978
480159
  return cachedActivity;
479979
480160
  }
479980
480161
  function getLogoDisplayData() {
479981
- const version2 = process.env.DEMO_VERSION ?? "1.81.5";
480162
+ const version2 = process.env.DEMO_VERSION ?? "1.81.8";
479982
480163
  const serverUrl = getDirectConnectServerUrl();
479983
480164
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
479984
480165
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -480052,37 +480233,65 @@ var init_logoV2Utils = __esm(() => {
480052
480233
  });
480053
480234
 
480054
480235
  // src/components/LogoV2/URBanner.tsx
480055
- function URBanner() {
480236
+ function getResponsiveURWordmarkVariant(availableWidth = Number.POSITIVE_INFINITY, availableHeight = Number.POSITIVE_INFINITY) {
480237
+ if (availableWidth >= 41 && availableHeight >= 22)
480238
+ return "full";
480239
+ if (availableWidth >= 20 && availableHeight >= 8)
480240
+ return "compact";
480241
+ return "minimal";
480242
+ }
480243
+ function URBanner({
480244
+ availableWidth,
480245
+ availableHeight
480246
+ } = {}) {
480056
480247
  if (isScreenReaderMode()) {
480057
480248
  return /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
480058
480249
  children: "UR \u2014 the autonomous agent"
480059
480250
  }, undefined, false, undefined, this);
480060
480251
  }
480252
+ const variant = getResponsiveURWordmarkVariant(availableWidth, availableHeight);
480253
+ const rows = variant === "full" ? UR_WORDMARK_ROWS : variant === "compact" ? COMPACT_UR_WORDMARK_ROWS : ["UR"];
480254
+ const showTagline = variant !== "minimal";
480255
+ const decorateTagline = (availableWidth ?? Number.POSITIVE_INFINITY) >= 24;
480061
480256
  return /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedBox_default, {
480062
480257
  flexDirection: "column",
480063
480258
  alignItems: "center",
480064
480259
  children: [
480065
- UR_WORDMARK_ROWS.map((row, i3) => /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
480260
+ rows.map((row, i3) => /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
480066
480261
  color: "ur",
480067
480262
  children: row
480068
480263
  }, i3, false, undefined, this)),
480069
- /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
480264
+ showTagline && /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
480070
480265
  color: "ur",
480071
- children: [
480072
- "\u2726 ",
480073
- UR_WORDMARK_TAGLINE,
480074
- " \u2726"
480075
- ]
480076
- }, undefined, true, undefined, this)
480266
+ children: decorateTagline ? `\u2726 ${UR_WORDMARK_TAGLINE} \u2726` : UR_WORDMARK_TAGLINE
480267
+ }, undefined, false, undefined, this)
480077
480268
  ]
480078
480269
  }, undefined, true, undefined, this);
480079
480270
  }
480080
- var jsx_dev_runtime233, UR_WORDMARK_ROWS, UR_WORDMARK_TAGLINE = "THE AUTONOMOUS AGENT";
480271
+ var jsx_dev_runtime233, UR_WORDMARK_ROWS, COMPACT_UR_WORDMARK_ROWS, UR_WORDMARK_TAGLINE = "THE AUTONOMOUS AGENT";
480081
480272
  var init_URBanner = __esm(() => {
480082
480273
  init_ink2();
480083
480274
  init_screenReader();
480084
480275
  jsx_dev_runtime233 = __toESM(require_jsx_dev_runtime(), 1);
480085
480276
  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 = [
480086
480295
  "\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 ",
480087
480296
  "\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557",
480088
480297
  "\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D",
@@ -480094,38 +480303,21 @@ var init_URBanner = __esm(() => {
480094
480303
 
480095
480304
  // src/components/LogoV2/UrHouse.tsx
480096
480305
  function UrHouse({ size = "large" }) {
480097
- const rows = size === "small" ? SMALL : LARGE;
480306
+ const rows = size === "small" ? SMALL_HOUSE_ROWS : LARGE_HOUSE_ROWS;
480098
480307
  return /* @__PURE__ */ jsx_dev_runtime234.jsxDEV(ThemedBox_default, {
480099
480308
  flexDirection: "column",
480100
480309
  alignItems: "center",
480101
- children: [
480102
- rows.map((row, i3) => /* @__PURE__ */ jsx_dev_runtime234.jsxDEV(ThemedBox_default, {
480103
- flexDirection: "row",
480104
- children: [
480105
- /* @__PURE__ */ jsx_dev_runtime234.jsxDEV(ThemedText, {
480106
- color: "ur",
480107
- children: row
480108
- }, undefined, false, undefined, this),
480109
- size === "large" && /* @__PURE__ */ jsx_dev_runtime234.jsxDEV(ThemedText, {
480110
- color: "ur",
480111
- dimColor: true,
480112
- children: i3 >= LARGE_SHADOW_START_ROW ? "\u2591" : " "
480113
- }, undefined, false, undefined, this)
480114
- ]
480115
- }, i3, true, undefined, this)),
480116
- size === "large" && /* @__PURE__ */ jsx_dev_runtime234.jsxDEV(ThemedText, {
480117
- color: "ur",
480118
- dimColor: true,
480119
- children: LARGE_HOUSE_BOTTOM_SHADOW
480120
- }, undefined, false, undefined, this)
480121
- ]
480122
- }, undefined, true, undefined, this);
480310
+ children: rows.map((row, index2) => /* @__PURE__ */ jsx_dev_runtime234.jsxDEV(ThemedText, {
480311
+ color: "ur",
480312
+ children: row
480313
+ }, index2, false, undefined, this))
480314
+ }, undefined, false, undefined, this);
480123
480315
  }
480124
- var jsx_dev_runtime234, LARGE, SMALL, LARGE_SHADOW_START_ROW = 3, LARGE_HOUSE_BOTTOM_SHADOW = " \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 ";
480316
+ var jsx_dev_runtime234, LARGE_HOUSE_ROWS, SMALL_HOUSE_ROWS, AUTOMATIC_HOUSE_SIZE = "large";
480125
480317
  var init_UrHouse = __esm(() => {
480126
480318
  init_ink2();
480127
480319
  jsx_dev_runtime234 = __toESM(require_jsx_dev_runtime(), 1);
480128
- LARGE = [
480320
+ LARGE_HOUSE_ROWS = [
480129
480321
  " \u2571\u2572 ",
480130
480322
  " \u2571 \u2572 ",
480131
480323
  " \u2571 \u2572 ",
@@ -480135,7 +480327,7 @@ var init_UrHouse = __esm(() => {
480135
480327
  " \u2502 \u25A2\u25A2 \u2502 ",
480136
480328
  " \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2518 "
480137
480329
  ];
480138
- SMALL = [
480330
+ SMALL_HOUSE_ROWS = [
480139
480331
  " \u2571\u2572 ",
480140
480332
  "\u2571\u2500\u2500\u2572",
480141
480333
  "\u2502\u25A3\u25A3\u2502",
@@ -480830,7 +481022,8 @@ function LogoV2() {
480830
481022
  const activities = getRecentActivitySync();
480831
481023
  const username = getGlobalConfig().oauthAccount?.displayName ?? "";
480832
481024
  const {
480833
- columns
481025
+ columns,
481026
+ rows
480834
481027
  } = useTerminalSize();
480835
481028
  let t0;
480836
481029
  if ($2[0] === Symbol.for("react.memo_cache_sentinel")) {
@@ -480874,7 +481067,7 @@ function LogoV2() {
480874
481067
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
480875
481068
  t2 = () => {
480876
481069
  const currentConfig = getGlobalConfig();
480877
- if (currentConfig.lastReleaseNotesSeen === "1.81.5") {
481070
+ if (currentConfig.lastReleaseNotesSeen === "1.81.8") {
480878
481071
  return;
480879
481072
  }
480880
481073
  saveGlobalConfig(_temp325);
@@ -480897,7 +481090,7 @@ function LogoV2() {
480897
481090
  import_react144.useEffect(t2, t3);
480898
481091
  let t4;
480899
481092
  if ($2[5] === Symbol.for("react.memo_cache_sentinel")) {
480900
- t4 = !hasReleaseNotes && !showOnboarding && !isEnvTruthy(process.env.UR_CODE_FORCE_FULL_LOGO);
481093
+ t4 = shouldUseCondensedLogo(hasReleaseNotes, showOnboarding, isEnvTruthy(process.env.UR_CODE_COMPACT_LOGO), isEnvTruthy(process.env.UR_CODE_FORCE_FULL_LOGO));
480901
481094
  $2[5] = t4;
480902
481095
  } else {
480903
481096
  t4 = $2[5];
@@ -480958,7 +481151,7 @@ function LogoV2() {
480958
481151
  t10 = $2[14];
480959
481152
  }
480960
481153
  const modelDisplayName = t10;
480961
- if (!hasReleaseNotes && !showOnboarding && !isEnvTruthy(process.env.UR_CODE_FORCE_FULL_LOGO)) {
481154
+ if (isCondensedMode) {
480962
481155
  let t112;
480963
481156
  let t122;
480964
481157
  let t132;
@@ -481127,7 +481320,7 @@ function LogoV2() {
481127
481320
  t122 = /* @__PURE__ */ jsx_dev_runtime241.jsxDEV(ThemedBox_default, {
481128
481321
  marginY: 1,
481129
481322
  children: /* @__PURE__ */ jsx_dev_runtime241.jsxDEV(UrHouse, {
481130
- size: "small"
481323
+ size: AUTOMATIC_HOUSE_SIZE
481131
481324
  }, undefined, false, undefined, this)
481132
481325
  }, undefined, false, undefined, this);
481133
481326
  $2[34] = t122;
@@ -481276,7 +481469,7 @@ function LogoV2() {
481276
481469
  t19 = /* @__PURE__ */ jsx_dev_runtime241.jsxDEV(ThemedBox_default, {
481277
481470
  marginY: 1,
481278
481471
  children: /* @__PURE__ */ jsx_dev_runtime241.jsxDEV(UrHouse, {
481279
- size: "large"
481472
+ size: AUTOMATIC_HOUSE_SIZE
481280
481473
  }, undefined, false, undefined, this)
481281
481474
  }, undefined, false, undefined, this);
481282
481475
  $2[48] = t19;
@@ -481362,7 +481555,10 @@ function LogoV2() {
481362
481555
  width: rightWidth,
481363
481556
  alignItems: "center",
481364
481557
  justifyContent: "center",
481365
- children: /* @__PURE__ */ jsx_dev_runtime241.jsxDEV(URBanner, {}, undefined, false, undefined, this)
481558
+ children: /* @__PURE__ */ jsx_dev_runtime241.jsxDEV(URBanner, {
481559
+ availableWidth: rightWidth,
481560
+ availableHeight: Math.max(1, rows - 4)
481561
+ }, undefined, false, undefined, this)
481366
481562
  }, undefined, false, undefined, this);
481367
481563
  let t26;
481368
481564
  if ($2[62] !== T22 || $2[63] !== t15 || $2[64] !== t23 || $2[65] !== t24 || $2[66] !== t25) {
@@ -481559,12 +481755,12 @@ function LogoV2() {
481559
481755
  return t41;
481560
481756
  }
481561
481757
  function _temp325(current) {
481562
- if (current.lastReleaseNotesSeen === "1.81.5") {
481758
+ if (current.lastReleaseNotesSeen === "1.81.8") {
481563
481759
  return current;
481564
481760
  }
481565
481761
  return {
481566
481762
  ...current,
481567
- lastReleaseNotesSeen: "1.81.5"
481763
+ lastReleaseNotesSeen: "1.81.8"
481568
481764
  };
481569
481765
  }
481570
481766
  function _temp241(s_0) {
@@ -497514,7 +497710,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
497514
497710
  if (spec.name !== specName) {
497515
497711
  throw new Error("Agentic CI workflow spec name does not match");
497516
497712
  }
497517
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.5" : "1.81.5");
497713
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.8" : "1.81.8");
497518
497714
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
497519
497715
  throw new Error("invalid ur-agent package version");
497520
497716
  }
@@ -498507,7 +498703,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
498507
498703
  path: ".github/workflows/ur.yml",
498508
498704
  root: "project",
498509
498705
  content: compileAgenticCiWorkflow("default", {
498510
- packageVersion: typeof MACRO !== "undefined" ? "1.81.5" : "1.81.5"
498706
+ packageVersion: typeof MACRO !== "undefined" ? "1.81.8" : "1.81.8"
498511
498707
  })
498512
498708
  },
498513
498709
  {
@@ -498570,7 +498766,7 @@ function value(tokens, flag) {
498570
498766
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
498571
498767
  }
498572
498768
  function cliVersion() {
498573
- return typeof MACRO !== "undefined" ? "1.81.5" : "1.81.5";
498769
+ return typeof MACRO !== "undefined" ? "1.81.8" : "1.81.8";
498574
498770
  }
498575
498771
  function workflowPath(cwd2) {
498576
498772
  return join168(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -504426,7 +504622,7 @@ function createAcpStdioApp(deps) {
504426
504622
  }
504427
504623
  },
504428
504624
  authMethods: [],
504429
- agentInfo: { name: "UR-Nexus", version: "1.81.5" }
504625
+ agentInfo: { name: "UR-Nexus", version: "1.81.8" }
504430
504626
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
504431
504627
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
504432
504628
  await runtime2.announce({
@@ -504523,7 +504719,7 @@ function createAcpStdioAgent(deps) {
504523
504719
  }
504524
504720
  },
504525
504721
  authMethods: [],
504526
- agentInfo: { name: "UR-Nexus", version: "1.81.5" }
504722
+ agentInfo: { name: "UR-Nexus", version: "1.81.8" }
504527
504723
  });
504528
504724
  return;
504529
504725
  case "authenticate":
@@ -715775,7 +715971,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
715775
715971
  smapsRollup,
715776
715972
  platform: process.platform,
715777
715973
  nodeVersion: process.version,
715778
- ccVersion: "1.81.5"
715974
+ ccVersion: "1.81.8"
715779
715975
  };
715780
715976
  }
715781
715977
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -716364,7 +716560,7 @@ var init_bridge_kick = __esm(() => {
716364
716560
  var call154 = async () => {
716365
716561
  return {
716366
716562
  type: "text",
716367
- value: "1.81.5"
716563
+ value: "1.81.8"
716368
716564
  };
716369
716565
  }, version2, version_default;
716370
716566
  var init_version = __esm(() => {
@@ -719376,6 +719572,8 @@ function ProviderFirstModelPicker({
719376
719572
  const [apiKeyCursorOffset, setApiKeyCursorOffset] = import_react186.useState(0);
719377
719573
  const [connectError, setConnectError] = import_react186.useState(null);
719378
719574
  const [credentialNotice, setCredentialNotice] = import_react186.useState(null);
719575
+ const [effortCapabilityLoading, setEffortCapabilityLoading] = import_react186.useState(false);
719576
+ const [effortCapabilityWarning, setEffortCapabilityWarning] = import_react186.useState(null);
719379
719577
  const [modelReloadToken, setModelReloadToken] = import_react186.useState(0);
719380
719578
  const terminalSize = import_react186.useContext(TerminalSizeContext);
719381
719579
  const keyInputColumns = getProviderKeyInputColumns(terminalSize?.columns);
@@ -719389,10 +719587,10 @@ function ProviderFirstModelPicker({
719389
719587
  async function loadProviderStatus() {
719390
719588
  setLoadingProviders(true);
719391
719589
  const providers = listProviders({ includeExternalAppBridges: true });
719392
- const settings = getSettingsForSource("userSettings");
719590
+ const settings = getInitialSettings();
719393
719591
  const options5 = await Promise.all(providers.map(async (provider) => {
719394
719592
  const status2 = await getProviderStatus(provider.id, {
719395
- settings: settings ?? undefined
719593
+ settings
719396
719594
  });
719397
719595
  const accessType = getProviderAccessTypeLabel(provider);
719398
719596
  return {
@@ -719423,7 +719621,7 @@ function ProviderFirstModelPicker({
719423
719621
  const providerId = selectedProvider.value;
719424
719622
  try {
719425
719623
  const result = await listModelsForProviderWithSource(providerId, {
719426
- settings: getSettingsForSource("userSettings") ?? undefined,
719624
+ settings: getInitialSettings(),
719427
719625
  signal: controller.signal,
719428
719626
  freshOnly: providerId === "openrouter"
719429
719627
  });
@@ -719459,6 +719657,45 @@ function ProviderFirstModelPicker({
719459
719657
  controller.abort();
719460
719658
  };
719461
719659
  }, [selectedProvider, modelReloadToken]);
719660
+ import_react186.useEffect(() => {
719661
+ if (selectedProvider?.value !== "llama.cpp" || !focusedModelValue) {
719662
+ setEffortCapabilityLoading(false);
719663
+ setEffortCapabilityWarning(null);
719664
+ return;
719665
+ }
719666
+ const focused = modelOptions.find((model) => model.value === focusedModelValue);
719667
+ if (!focused || focused.reasoning !== undefined) {
719668
+ setEffortCapabilityLoading(false);
719669
+ setEffortCapabilityWarning(null);
719670
+ return;
719671
+ }
719672
+ const controller = new AbortController;
719673
+ let cancelled = false;
719674
+ const timer = setTimeout(() => {
719675
+ setEffortCapabilityLoading(true);
719676
+ setEffortCapabilityWarning(null);
719677
+ ensureProviderReasoningCapabilitiesForModel("llama.cpp", focusedModelValue, {
719678
+ settings: getInitialSettings(),
719679
+ signal: controller.signal
719680
+ }).then((reasoning) => {
719681
+ if (cancelled)
719682
+ return;
719683
+ setModelOptions((previous) => previous.map((model) => model.value === focusedModelValue ? { ...model, reasoning: reasoning ?? { supportedEfforts: [] } } : model));
719684
+ }).catch((error40) => {
719685
+ if (cancelled || controller.signal.aborted)
719686
+ return;
719687
+ setEffortCapabilityWarning(`Could not verify effort levels: ${error40 instanceof Error ? error40.message : String(error40)}`);
719688
+ }).finally(() => {
719689
+ if (!cancelled)
719690
+ setEffortCapabilityLoading(false);
719691
+ });
719692
+ }, 180);
719693
+ return () => {
719694
+ cancelled = true;
719695
+ clearTimeout(timer);
719696
+ controller.abort();
719697
+ };
719698
+ }, [selectedProvider?.value, focusedModelValue, modelOptions]);
719462
719699
  use_input_default((_input, key) => {
719463
719700
  if (key.escape) {
719464
719701
  handleKeyCancel();
@@ -719483,10 +719720,11 @@ function ProviderFirstModelPicker({
719483
719720
  const focusedProvider = providerOptions.find((p2) => p2.value === focusedProviderValue);
719484
719721
  const focusedModel = modelOptions.find((m) => m.value === focusedModelValue);
719485
719722
  const focusedResolvedModel = focusedModel ? parseUserSpecifiedModel(focusedModel.value) : undefined;
719486
- const focusedSupportsEffort = focusedResolvedModel ? modelSupportsEffort(focusedResolvedModel) : false;
719487
- const focusedSupportsMax = focusedResolvedModel ? modelSupportsMaxEffort(focusedResolvedModel) : false;
719488
- const focusedDefaultEffort = focusedResolvedModel ? convertEffortValueToLevel(getDefaultEffortForModel(focusedResolvedModel) ?? "high") : "high";
719489
- const displayedEffort = effort === "max" && !focusedSupportsMax ? "high" : effort ?? focusedDefaultEffort;
719723
+ const focusedProviderId = selectedProvider?.value;
719724
+ const focusedEffortLevels = focusedResolvedModel && focusedProviderId ? getSupportedEffortLevelsForModel(focusedResolvedModel, focusedProviderId) : [];
719725
+ const focusedSupportsEffort = focusedResolvedModel ? modelSupportsEffort(focusedResolvedModel, focusedProviderId) : false;
719726
+ const focusedDefaultEffort = focusedResolvedModel ? convertEffortValueToLevel(getDefaultEffortForModel(focusedResolvedModel, focusedProviderId) ?? (focusedEffortLevels.includes("high") ? "high" : focusedEffortLevels.at(-1)) ?? "high") : "high";
719727
+ const displayedEffort = focusedResolvedModel ? resolveProviderEffortLevel(focusedResolvedModel, effort ?? focusedDefaultEffort, focusedProviderId) ?? focusedDefaultEffort : focusedDefaultEffort;
719490
719728
  function handleProviderFocus(value2) {
719491
719729
  setFocusedProviderValue(value2);
719492
719730
  setProviderWarning(null);
@@ -719497,7 +719735,7 @@ function ProviderFirstModelPicker({
719497
719735
  function handleCycleEffort(direction) {
719498
719736
  if (!focusedSupportsEffort)
719499
719737
  return;
719500
- setEffort((previous) => cycleProviderPickerEffort(previous ?? focusedDefaultEffort, direction, focusedSupportsMax));
719738
+ setEffort((previous) => cycleProviderPickerEffort(resolveProviderEffortLevel(focusedResolvedModel, previous ?? focusedDefaultEffort, focusedProviderId) ?? focusedDefaultEffort, direction, focusedEffortLevels));
719501
719739
  setHasToggledEffort(true);
719502
719740
  }
719503
719741
  use_input_default((_input, key, event) => {
@@ -719546,8 +719784,11 @@ function ProviderFirstModelPicker({
719546
719784
  }
719547
719785
  }
719548
719786
  function handleModelSelect(value2) {
719787
+ const selectedProviderId = selectedProvider?.value;
719788
+ const selectedResolvedModel = parseUserSpecifiedModel(value2);
719789
+ const selectedEffort = hasToggledEffort && selectedProviderId && effort ? resolveProviderEffortLevel(selectedResolvedModel, effort, selectedProviderId) : undefined;
719549
719790
  logEvent("tengu_model_command_menu_effort", {
719550
- effort,
719791
+ effort: selectedEffort,
719551
719792
  provider: selectedProvider?.value,
719552
719793
  model: value2,
719553
719794
  source: modelSource
@@ -719590,7 +719831,7 @@ function ProviderFirstModelPicker({
719590
719831
  }
719591
719832
  }
719592
719833
  if (hasToggledEffort) {
719593
- const persistable = effort ? toPersistableEffort(effort) : undefined;
719834
+ const persistable = selectedEffort ? toPersistableEffort(selectedEffort) : undefined;
719594
719835
  if (persistable !== undefined) {
719595
719836
  updateSettingsForSource("userSettings", {
719596
719837
  effortLevel: persistable
@@ -719604,10 +719845,10 @@ function ProviderFirstModelPicker({
719604
719845
  active: selectedProvider?.value,
719605
719846
  model: value2
719606
719847
  },
719607
- ...hasToggledEffort ? { effortValue: effort } : {},
719848
+ ...hasToggledEffort ? { effortValue: selectedEffort } : {},
719608
719849
  ...hasToggledThinking ? { thinkingEnabled } : {}
719609
719850
  }));
719610
- onSelect(value2, hasToggledEffort ? effort : undefined, selectedProvider ? {
719851
+ onSelect(value2, selectedEffort, selectedProvider ? {
719611
719852
  providerId: selectedProvider.value,
719612
719853
  providerName: selectedProvider.label,
719613
719854
  accessType: selectedProvider.accessType,
@@ -720051,43 +720292,71 @@ function ProviderFirstModelPicker({
720051
720292
  marginBottom: 1,
720052
720293
  flexDirection: "column",
720053
720294
  children: [
720295
+ /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
720296
+ dimColor: true,
720297
+ color: "subtle",
720298
+ children: "Focused model \xB7 full name"
720299
+ }, undefined, false, undefined, this),
720054
720300
  /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
720055
720301
  bold: true,
720056
720302
  color: "text",
720057
- children: focusedModel.label
720303
+ children: fullProviderModelDisplayName(selectedProvider?.value ?? "", {
720304
+ id: focusedModel.value,
720305
+ displayName: focusedModel.label
720306
+ })
720058
720307
  }, undefined, false, undefined, this),
720059
- selectedProvider?.value === "openrouter" && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
720060
- dimColor: true,
720061
- color: "subtle",
720062
- children: [
720063
- "ID: ",
720064
- focusedModel.value
720065
- ]
720066
- }, undefined, true, undefined, this),
720067
720308
  /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
720068
720309
  dimColor: true,
720069
720310
  children: focusedModel.description
720070
720311
  }, undefined, false, undefined, this),
720071
- focusedSupportsEffort && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
720312
+ focusedSupportsEffort && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedBox_default, {
720313
+ flexDirection: "column",
720072
720314
  children: [
720073
720315
  /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
720074
- color: "ur",
720075
720316
  children: [
720076
- effortLevelToSymbol(displayedEffort),
720077
- " ",
720078
- displayedEffort.toUpperCase()
720317
+ /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
720318
+ color: "ur",
720319
+ children: [
720320
+ effortLevelToSymbol(displayedEffort),
720321
+ " ",
720322
+ displayedEffort.toUpperCase()
720323
+ ]
720324
+ }, undefined, true, undefined, this),
720325
+ /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
720326
+ dimColor: true,
720327
+ color: "subtle",
720328
+ children: [
720329
+ " ",
720330
+ "provider effort \xB7 use \u2190 \u2192 to adjust"
720331
+ ]
720332
+ }, undefined, true, undefined, this)
720079
720333
  ]
720080
720334
  }, undefined, true, undefined, this),
720081
720335
  /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
720082
720336
  dimColor: true,
720083
720337
  color: "subtle",
720084
720338
  children: [
720085
- " ",
720086
- "effort \xB7 use \u2190 \u2192 to adjust"
720339
+ "Provider levels: ",
720340
+ focusedEffortLevels.join(" \xB7 ")
720087
720341
  ]
720088
720342
  }, undefined, true, undefined, this)
720089
720343
  ]
720090
- }, undefined, true, undefined, this)
720344
+ }, undefined, true, undefined, this),
720345
+ !focusedSupportsEffort && effortCapabilityLoading && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
720346
+ dimColor: true,
720347
+ color: "subtle",
720348
+ children: "Checking this model's provider effort levels\u2026"
720349
+ }, undefined, false, undefined, this),
720350
+ !focusedSupportsEffort && !effortCapabilityLoading && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
720351
+ dimColor: true,
720352
+ color: "subtle",
720353
+ children: "Graded effort not advertised for this model."
720354
+ }, undefined, false, undefined, this),
720355
+ effortCapabilityWarning && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
720356
+ dimColor: true,
720357
+ color: "error",
720358
+ children: effortCapabilityWarning
720359
+ }, undefined, false, undefined, this)
720091
720360
  ]
720092
720361
  }, undefined, true, undefined, this),
720093
720362
  modelWarning && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedBox_default, {
@@ -720154,8 +720423,8 @@ function getProviderKeyInputColumns(terminalColumns) {
720154
720423
  const columns = Number.isFinite(terminalColumns) && terminalColumns > 0 ? Math.floor(terminalColumns) : 80;
720155
720424
  return Math.max(8, columns - 20);
720156
720425
  }
720157
- function cycleProviderPickerEffort(current, direction, includeMax) {
720158
- const levels = includeMax ? ["low", "medium", "high", "max"] : ["low", "medium", "high"];
720426
+ function cycleProviderPickerEffort(current, direction, supportedLevels) {
720427
+ const levels = supportedLevels.length > 0 ? [...supportedLevels] : [current];
720159
720428
  const index2 = levels.indexOf(current);
720160
720429
  const currentIndex = index2 >= 0 ? index2 : levels.indexOf("high");
720161
720430
  const delta = direction === "right" ? 1 : -1;
@@ -722139,7 +722408,12 @@ __export(exports_effort, {
722139
722408
  executeEffort: () => executeEffort,
722140
722409
  call: () => call168
722141
722410
  });
722142
- function setEffortValue(effortValue, model) {
722411
+ function setEffortValue(effortValue, model, provider = getRuntimeProvider()) {
722412
+ if (model && !modelSupportsEffort(model, provider)) {
722413
+ return {
722414
+ message: `Not applied: ${model} on ${provider} does not advertise graded reasoning-effort levels.`
722415
+ };
722416
+ }
722143
722417
  const persistable = toPersistableEffort(effortValue);
722144
722418
  if (persistable !== undefined) {
722145
722419
  const result = updateSettingsForSource("userSettings", {
@@ -722174,40 +722448,56 @@ function setEffortValue(effortValue, model) {
722174
722448
  }
722175
722449
  const description = getEffortValueDescription(effortValue);
722176
722450
  const suffix = persistable !== undefined ? "" : " (this session only)";
722177
- const appliedLevel = model ? getDisplayedEffortLevel(model, effortValue) : effortValue;
722451
+ const appliedLevel = model && typeof effortValue === "string" ? resolveProviderEffortLevel(model, effortValue, provider) : effortValue;
722178
722452
  if (typeof effortValue === "string" && appliedLevel !== effortValue) {
722179
722453
  return {
722180
- message: `Requested effort level ${effortValue}${suffix}, but ${model} advertises up to ${appliedLevel}; applied ${appliedLevel}: ${getEffortValueDescription(appliedLevel)}`,
722454
+ message: `Requested ${effortValue}${suffix}; applied ${appliedLevel} for ${model} on ${provider}: ${getEffortValueDescription(appliedLevel)}`,
722181
722455
  effortUpdate: {
722182
722456
  value: effortValue
722183
722457
  }
722184
722458
  };
722185
722459
  }
722186
722460
  return {
722187
- message: `Set effort level to ${effortValue}${suffix}: ${description}`,
722461
+ message: `Set effort level to ${effortValue}${suffix} for ${model ?? "the active model"} on ${provider}: ${description}`,
722188
722462
  effortUpdate: {
722189
722463
  value: effortValue
722190
722464
  }
722191
722465
  };
722192
722466
  }
722193
- function showCurrentEffort(appStateEffort, model) {
722467
+ function showCurrentEffort(appStateEffort, model, provider = getRuntimeProvider()) {
722194
722468
  const envOverride = getEffortEnvOverride();
722195
722469
  const effectiveValue = envOverride === null ? undefined : envOverride ?? appStateEffort;
722196
722470
  if (effectiveValue === undefined) {
722197
- const level = getDisplayedEffortLevel(model, appStateEffort);
722471
+ if (!modelSupportsEffort(model, provider)) {
722472
+ return {
722473
+ message: `Effort: unavailable \u2014 ${model} on ${provider} does not advertise graded reasoning-effort levels.`
722474
+ };
722475
+ }
722476
+ const applied = resolveAppliedEffort(model, appStateEffort, provider);
722477
+ if (applied === undefined) {
722478
+ return {
722479
+ message: `Effort: auto for ${model} on ${provider}; UR sends no explicit effort and the provider chooses its default. Provider levels: ${getSupportedEffortLevelsForModel(model, provider).join(", ")}`
722480
+ };
722481
+ }
722482
+ const level = getDisplayedEffortLevel(model, appStateEffort, provider);
722483
+ return {
722484
+ message: `Effort: auto; applied ${level} for ${model} on ${provider}. Provider levels: ${getSupportedEffortLevelsForModel(model, provider).join(", ")}`
722485
+ };
722486
+ }
722487
+ if (!modelSupportsEffort(model, provider)) {
722198
722488
  return {
722199
- message: `Effort level: auto (currently ${level})`
722489
+ message: `Effort: unavailable \u2014 ${model} on ${provider} does not advertise graded reasoning-effort levels.`
722200
722490
  };
722201
722491
  }
722202
- const appliedLevel = getDisplayedEffortLevel(model, appStateEffort);
722492
+ const appliedLevel = getDisplayedEffortLevel(model, appStateEffort, provider);
722203
722493
  if (typeof effectiveValue === "string" && appliedLevel !== effectiveValue) {
722204
722494
  return {
722205
- message: `Requested effort: ${effectiveValue}; applied effort for ${model}: ${appliedLevel} (${getEffortValueDescription(appliedLevel)})`
722495
+ message: `Requested effort: ${effectiveValue}; applied effort for ${model} on ${provider}: ${appliedLevel} (${getEffortValueDescription(appliedLevel)}). Provider levels: ${getSupportedEffortLevelsForModel(model, provider).join(", ")}`
722206
722496
  };
722207
722497
  }
722208
722498
  const description = getEffortValueDescription(effectiveValue);
722209
722499
  return {
722210
- message: `Current effort level: ${effectiveValue} (${description})`
722500
+ message: `Current effort: ${effectiveValue}; applied ${appliedLevel} for ${model} on ${provider} (${description}). Provider levels: ${getSupportedEffortLevelsForModel(model, provider).join(", ")}`
722211
722501
  };
722212
722502
  }
722213
722503
  function unsetEffortLevel() {
@@ -722239,17 +722529,17 @@ function unsetEffortLevel() {
722239
722529
  }
722240
722530
  };
722241
722531
  }
722242
- function executeEffort(args, model) {
722532
+ function executeEffort(args, model, provider = getRuntimeProvider()) {
722243
722533
  const normalized = args.toLowerCase();
722244
722534
  if (normalized === "auto" || normalized === "unset") {
722245
722535
  return unsetEffortLevel();
722246
722536
  }
722247
722537
  if (!isEffortLevel(normalized)) {
722248
722538
  return {
722249
- message: `Invalid argument: ${args}. Valid options are: low, medium, high, max, auto`
722539
+ message: `Invalid argument: ${args}. Valid options are: minimal, low, medium, high, xhigh, max, auto`
722250
722540
  };
722251
722541
  }
722252
- return setEffortValue(normalized, model);
722542
+ return setEffortValue(normalized, model, provider);
722253
722543
  }
722254
722544
  function ShowCurrentEffort(t0) {
722255
722545
  const {
@@ -722257,9 +722547,10 @@ function ShowCurrentEffort(t0) {
722257
722547
  } = t0;
722258
722548
  const effortValue = useAppState(_temp156);
722259
722549
  const model = useMainLoopModel();
722550
+ const provider = getRuntimeProvider();
722260
722551
  const {
722261
722552
  message
722262
- } = showCurrentEffort(effortValue, model);
722553
+ } = showCurrentEffort(effortValue, model, provider);
722263
722554
  onDone(message);
722264
722555
  return null;
722265
722556
  }
@@ -722306,29 +722597,33 @@ function ApplyEffortAndClose(t0) {
722306
722597
  async function call168(onDone, _context, args) {
722307
722598
  args = args?.trim() || "";
722308
722599
  if (COMMON_HELP_ARGS2.includes(args)) {
722309
- onDone(`Usage: /effort [low|medium|high|max|auto]
722600
+ onDone(`Usage: /effort [minimal|low|medium|high|xhigh|max|auto]
722601
+
722602
+ UR reads the selected model's exact provider-advertised levels. \`max\` means that model's real ceiling, so it resolves to max, xhigh, or high as appropriate.
722310
722603
 
722311
722604
  Effort levels:
722605
+ - minimal: Lowest latency and cost
722312
722606
  - low: Quick, straightforward implementation
722313
722607
  - medium: Balanced approach with standard testing
722314
722608
  - high: Comprehensive implementation with extensive testing
722315
- - max: Maximum capability with deepest reasoning
722316
- - auto: Use the default effort level for your model`);
722609
+ - xhigh: Extended reasoning above high
722610
+ - max: The selected model's highest advertised level
722611
+ - auto: Use the model/provider default`);
722317
722612
  return;
722318
722613
  }
722319
- if (!args || args === "current" || args === "status") {
722320
- return /* @__PURE__ */ jsx_dev_runtime345.jsxDEV(ShowCurrentEffort, {
722321
- onDone
722322
- }, undefined, false, undefined, this);
722323
- }
722324
722614
  const model = getMainLoopModel();
722325
722615
  const runtimeProvider = getRuntimeProvider();
722326
- if (args.toLowerCase() === "max" && runtimeProvider === "openrouter" && !getProviderReasoningCapabilitiesForModel(model, runtimeProvider)) {
722327
- await ensureProviderModelsFresh(runtimeProvider).catch(() => {
722616
+ if (!getSupportedEffortLevelsForModel(model, runtimeProvider).length) {
722617
+ await ensureProviderReasoningCapabilitiesForModel(runtimeProvider, model).catch(() => {
722328
722618
  return;
722329
722619
  });
722330
722620
  }
722331
- const result = executeEffort(args, model);
722621
+ if (!args || args === "current" || args === "status") {
722622
+ return /* @__PURE__ */ jsx_dev_runtime345.jsxDEV(ShowCurrentEffort, {
722623
+ onDone
722624
+ }, undefined, false, undefined, this);
722625
+ }
722626
+ const result = executeEffort(args, model, runtimeProvider);
722332
722627
  return /* @__PURE__ */ jsx_dev_runtime345.jsxDEV(ApplyEffortAndClose, {
722333
722628
  result,
722334
722629
  onDone
@@ -722358,7 +722653,7 @@ var init_effort3 = __esm(() => {
722358
722653
  type: "local-jsx",
722359
722654
  name: "effort",
722360
722655
  description: "Set effort level for model usage",
722361
- argumentHint: "[low|medium|high|max|auto]",
722656
+ argumentHint: "[minimal|low|medium|high|xhigh|max|auto]",
722362
722657
  get immediate() {
722363
722658
  return shouldInferenceConfigCommandBeImmediate();
722364
722659
  },
@@ -727733,7 +728028,7 @@ function generateHtmlReport(data, insights) {
727733
728028
  </html>`;
727734
728029
  }
727735
728030
  function buildExportData(data, insights, facets, remoteStats) {
727736
- const version3 = typeof MACRO !== "undefined" ? "1.81.5" : "unknown";
728031
+ const version3 = typeof MACRO !== "undefined" ? "1.81.8" : "unknown";
727737
728032
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
727738
728033
  const facets_summary = {
727739
728034
  total: facets.size,
@@ -732046,7 +732341,7 @@ var init_sessionStorage = __esm(() => {
732046
732341
  init_settings2();
732047
732342
  init_slowOperations();
732048
732343
  init_uuid();
732049
- VERSION7 = typeof MACRO !== "undefined" ? "1.81.5" : "unknown";
732344
+ VERSION7 = typeof MACRO !== "undefined" ? "1.81.8" : "unknown";
732050
732345
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
732051
732346
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
732052
732347
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -733261,7 +733556,7 @@ var init_filesystem = __esm(() => {
733261
733556
  });
733262
733557
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
733263
733558
  const nonce = randomBytes24(16).toString("hex");
733264
- return join243(getURTempDir(), "bundled-skills", "1.81.5", nonce);
733559
+ return join243(getURTempDir(), "bundled-skills", "1.81.8", nonce);
733265
733560
  });
733266
733561
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
733267
733562
  });
@@ -739661,7 +739956,7 @@ function computeFingerprint(messageText2, version3) {
739661
739956
  }
739662
739957
  function computeFingerprintFromMessages(messages) {
739663
739958
  const firstMessageText = extractFirstMessageText(messages);
739664
- return computeFingerprint(firstMessageText, "1.81.5");
739959
+ return computeFingerprint(firstMessageText, "1.81.8");
739665
739960
  }
739666
739961
  var FINGERPRINT_SALT = "59cf53e54c78";
739667
739962
  var init_fingerprint = () => {};
@@ -739854,8 +740149,8 @@ function should1hCacheTTL(querySource) {
739854
740149
  }
739855
740150
  return querySource !== undefined && allowlist.some((pattern2) => pattern2.endsWith("*") ? querySource.startsWith(pattern2.slice(0, -1)) : querySource === pattern2);
739856
740151
  }
739857
- function configureEffortParams(effortValue, outputConfig, extraBodyParams, betas, model) {
739858
- if (!modelSupportsEffort(model) || "effort" in outputConfig) {
740152
+ function configureEffortParams(effortValue, outputConfig, extraBodyParams, betas, model, provider = getRuntimeProvider()) {
740153
+ if (!modelSupportsEffort(model, provider) || "effort" in outputConfig) {
739859
740154
  return;
739860
740155
  }
739861
740156
  if (effortValue === undefined) {
@@ -740407,7 +740702,7 @@ ${deferredToolList}
740407
740702
  const outputConfig = {
740408
740703
  ...extraBodyParams.output_config ?? {}
740409
740704
  };
740410
- configureEffortParams(effort, outputConfig, extraBodyParams, betasParams, options5.model);
740705
+ configureEffortParams(effort, outputConfig, extraBodyParams, betasParams, options5.model, options5.providerSettings?.active);
740411
740706
  configureTaskBudgetParams(options5.taskBudget, outputConfig, betasParams);
740412
740707
  if (options5.outputFormat && !("format" in outputConfig)) {
740413
740708
  outputConfig.format = options5.outputFormat;
@@ -741596,7 +741891,7 @@ async function sideQuery(opts) {
741596
741891
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
741597
741892
  }
741598
741893
  const messageText2 = extractFirstUserMessageText(messages);
741599
- const fingerprint2 = computeFingerprint(messageText2, "1.81.5");
741894
+ const fingerprint2 = computeFingerprint(messageText2, "1.81.8");
741600
741895
  const attributionHeader = getAttributionHeader(fingerprint2);
741601
741896
  const systemBlocks = [
741602
741897
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -746430,7 +746725,7 @@ function buildSystemInitMessage(inputs) {
746430
746725
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
746431
746726
  apiKeySource: getURHQApiKeyWithSource().source,
746432
746727
  betas: getSdkBetas(),
746433
- ur_version: "1.81.5",
746728
+ ur_version: "1.81.8",
746434
746729
  output_style: outputStyle,
746435
746730
  agents: inputs.agents.map((agent2) => agent2.agentType),
746436
746731
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -760266,7 +760561,7 @@ var init_useVoiceEnabled = __esm(() => {
760266
760561
  function getSemverPart(version3) {
760267
760562
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
760268
760563
  }
760269
- function useUpdateNotification(updatedVersion, initialVersion = "1.81.5") {
760564
+ function useUpdateNotification(updatedVersion, initialVersion = "1.81.8") {
760270
760565
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
760271
760566
  if (!updatedVersion) {
760272
760567
  return null;
@@ -760315,7 +760610,7 @@ function AutoUpdater({
760315
760610
  return;
760316
760611
  }
760317
760612
  if (false) {}
760318
- const currentVersion = "1.81.5";
760613
+ const currentVersion = "1.81.8";
760319
760614
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
760320
760615
  let latestVersion = await getLatestVersion(channel);
760321
760616
  const isDisabled = isAutoUpdaterDisabled();
@@ -760544,12 +760839,12 @@ function NativeAutoUpdater({
760544
760839
  logEvent("tengu_native_auto_updater_start", {});
760545
760840
  try {
760546
760841
  const maxVersion = await getMaxVersion();
760547
- if (maxVersion && gt("1.81.5", maxVersion)) {
760842
+ if (maxVersion && gt("1.81.8", maxVersion)) {
760548
760843
  const msg = await getMaxVersionMessage();
760549
760844
  setMaxVersionIssue(msg ?? "affects your version");
760550
760845
  }
760551
760846
  const result = await installLatest(channel);
760552
- const currentVersion = "1.81.5";
760847
+ const currentVersion = "1.81.8";
760553
760848
  const latencyMs = Date.now() - startTime;
760554
760849
  if (result.lockFailed) {
760555
760850
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -760686,17 +760981,17 @@ function PackageManagerAutoUpdater(t0) {
760686
760981
  const maxVersion = await getMaxVersion();
760687
760982
  if (maxVersion && latest && gt(latest, maxVersion)) {
760688
760983
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
760689
- if (gte("1.81.5", maxVersion)) {
760690
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.5"} is already at or above maxVersion ${maxVersion}, skipping update`);
760984
+ if (gte("1.81.8", maxVersion)) {
760985
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.8"} is already at or above maxVersion ${maxVersion}, skipping update`);
760691
760986
  setUpdateAvailable(false);
760692
760987
  return;
760693
760988
  }
760694
760989
  latest = maxVersion;
760695
760990
  }
760696
- const hasUpdate = latest && !gte("1.81.5", latest) && !shouldSkipVersion(latest);
760991
+ const hasUpdate = latest && !gte("1.81.8", latest) && !shouldSkipVersion(latest);
760697
760992
  setUpdateAvailable(!!hasUpdate);
760698
760993
  if (hasUpdate) {
760699
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.5"} -> ${latest}`);
760994
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.8"} -> ${latest}`);
760700
760995
  }
760701
760996
  };
760702
760997
  $2[0] = t1;
@@ -760730,7 +761025,7 @@ function PackageManagerAutoUpdater(t0) {
760730
761025
  wrap: "truncate",
760731
761026
  children: [
760732
761027
  "currentVersion: ",
760733
- "1.81.5"
761028
+ "1.81.8"
760734
761029
  ]
760735
761030
  }, undefined, true, undefined, this);
760736
761031
  $2[3] = verbose;
@@ -771583,7 +771878,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
771583
771878
  project_dir: getOriginalCwd(),
771584
771879
  added_dirs: addedDirs
771585
771880
  },
771586
- version: "1.81.5",
771881
+ version: "1.81.8",
771587
771882
  output_style: {
771588
771883
  name: outputStyleName
771589
771884
  },
@@ -771718,7 +772013,7 @@ function StatusLineInner({
771718
772013
  const attention = customStatusError ?? taskAttention;
771719
772014
  const terminalSize = React133.useContext(TerminalSizeContext);
771720
772015
  const defaultStatusLineText = buildDefaultStatusBar({
771721
- version: "1.81.5",
772016
+ version: "1.81.8",
771722
772017
  providerLabel: providerRuntime.providerLabel,
771723
772018
  authMode: providerRuntime.authLabel,
771724
772019
  model: renderModelName(mainLoopModel) || providerRuntime.model || "",
@@ -783974,7 +784269,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
783974
784269
  } catch {}
783975
784270
  const data = {
783976
784271
  trigger: trigger2,
783977
- version: "1.81.5",
784272
+ version: "1.81.8",
783978
784273
  platform: process.platform,
783979
784274
  transcript,
783980
784275
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -786748,7 +787043,7 @@ var init_controlSchemas = __esm(() => {
786748
787043
  })).describe("Ordered low-to-high priority \u2014 later entries override earlier ones."),
786749
787044
  applied: exports_external.object({
786750
787045
  model: exports_external.string(),
786751
- effort: exports_external.enum(["low", "medium", "high", "max"]).nullable()
787046
+ effort: exports_external.enum(["minimal", "low", "medium", "high", "xhigh", "max"]).nullable()
786752
787047
  }).optional().describe("Runtime-resolved values after env overrides, session state, and model-specific defaults are applied. Unlike `effective` (disk merge), these reflect what will actually be sent to the API.")
786753
787048
  }).describe("Effective merged settings plus raw per-source settings in merge order."));
786754
787049
  SDKControlElicitationRequestSchema = lazySchema(() => exports_external.object({
@@ -796343,13 +796638,13 @@ function WelcomeV2() {
796343
796638
  dimColor: true,
796344
796639
  children: [
796345
796640
  "v",
796346
- "1.81.5"
796641
+ "1.81.8"
796347
796642
  ]
796348
796643
  }, undefined, true, undefined, this)
796349
796644
  ]
796350
796645
  }, undefined, true, undefined, this),
796351
796646
  /* @__PURE__ */ jsx_dev_runtime464.jsxDEV(UrHouse, {
796352
- size: "large"
796647
+ size: AUTOMATIC_HOUSE_SIZE
796353
796648
  }, undefined, false, undefined, this),
796354
796649
  /* @__PURE__ */ jsx_dev_runtime464.jsxDEV(ThemedText, {
796355
796650
  color: "ur",
@@ -797603,7 +797898,7 @@ function completeOnboarding() {
797603
797898
  saveGlobalConfig((current) => ({
797604
797899
  ...current,
797605
797900
  hasCompletedOnboarding: true,
797606
- lastOnboardingVersion: "1.81.5"
797901
+ lastOnboardingVersion: "1.81.8"
797607
797902
  }));
797608
797903
  }
797609
797904
  function showDialog(root2, renderer) {
@@ -802749,7 +803044,7 @@ function appendToLog(path28, message) {
802749
803044
  cwd: getFsImplementation().cwd(),
802750
803045
  userType: process.env.USER_TYPE,
802751
803046
  sessionId: getSessionId(),
802752
- version: "1.81.5"
803047
+ version: "1.81.8"
802753
803048
  };
802754
803049
  getLogWriter(path28).write(messageWithTimestamp);
802755
803050
  }
@@ -806913,8 +807208,8 @@ async function getEnvLessBridgeConfig() {
806913
807208
  }
806914
807209
  async function checkEnvLessBridgeMinVersion() {
806915
807210
  const cfg = await getEnvLessBridgeConfig();
806916
- if (cfg.min_version && lt("1.81.5", cfg.min_version)) {
806917
- return `Your version of UR (${"1.81.5"}) is too old for Remote Control.
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.
806918
807213
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
806919
807214
  }
806920
807215
  return null;
@@ -807388,7 +807683,7 @@ async function initBridgeCore(params) {
807388
807683
  const rawApi = createBridgeApiClient({
807389
807684
  baseUrl,
807390
807685
  getAccessToken,
807391
- runnerVersion: "1.81.5",
807686
+ runnerVersion: "1.81.8",
807392
807687
  onDebug: logForDebugging,
807393
807688
  onAuth401,
807394
807689
  getTrustedDeviceToken
@@ -809670,10 +809965,12 @@ function runHeadlessStreaming(structuredIO, mcpClients, commands, tools, initial
809670
809965
  });
809671
809966
  }
809672
809967
  const modelOptions = getModelOptions();
809968
+ const runtimeProvider = getRuntimeProvider();
809673
809969
  const modelInfos = modelOptions.map((option29) => {
809674
809970
  const modelId = option29.value === null ? "default" : option29.value;
809675
809971
  const resolvedModel = modelId === "default" ? getDefaultMainLoopModel() : parseUserSpecifiedModel(modelId);
809676
- const hasEffort = modelSupportsEffort(resolvedModel);
809972
+ const supportedEffortLevels = getSupportedEffortLevelsForModel(resolvedModel, runtimeProvider);
809973
+ const hasEffort = supportedEffortLevels.length > 0;
809677
809974
  const hasAdaptiveThinking = modelSupportsAdaptiveThinking(resolvedModel);
809678
809975
  const hasFastMode = isFastModeSupportedByModel(option29.value);
809679
809976
  const hasAutoMode = modelSupportsAutoMode(resolvedModel);
@@ -809683,7 +809980,7 @@ function runHeadlessStreaming(structuredIO, mcpClients, commands, tools, initial
809683
809980
  description: option29.description,
809684
809981
  ...hasEffort && {
809685
809982
  supportsEffort: true,
809686
- supportedEffortLevels: modelSupportsMaxEffort(resolvedModel) ? [...EFFORT_LEVELS] : EFFORT_LEVELS.filter((l) => l !== "max")
809983
+ supportedEffortLevels
809687
809984
  },
809688
809985
  ...hasAdaptiveThinking && { supportsAdaptiveThinking: true },
809689
809986
  ...hasFastMode && { supportsFastMode: true },
@@ -811051,7 +811348,8 @@ ${m.text}
811051
811348
  } else if (message.request.subtype === "get_settings") {
811052
811349
  const currentAppState = getAppState();
811053
811350
  const model = getMainLoopModel();
811054
- const effort = modelSupportsEffort(model) ? resolveAppliedEffort(model, currentAppState.effortValue) : undefined;
811351
+ const provider = getRuntimeProvider();
811352
+ const effort = modelSupportsEffort(model, provider) ? resolveAppliedEffort(model, currentAppState.effortValue, provider) : undefined;
811055
811353
  sendControlResponseSuccess(message, {
811056
811354
  ...getSettingsWithSources(),
811057
811355
  applied: {
@@ -816861,7 +817159,7 @@ function getAgUiCapabilities() {
816861
817159
  name: "UR-Nexus",
816862
817160
  type: "ur-nexus",
816863
817161
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
816864
- version: "1.81.5",
817162
+ version: "1.81.8",
816865
817163
  provider: "UR",
816866
817164
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
816867
817165
  },
@@ -818088,7 +818386,7 @@ function createMCPServer(cwd4, debug2, verbose) {
818088
818386
  };
818089
818387
  const server2 = new Server({
818090
818388
  name: "ur-nexus",
818091
- version: "1.81.5"
818389
+ version: "1.81.8"
818092
818390
  }, {
818093
818391
  capabilities: {
818094
818392
  tools: {}
@@ -819292,7 +819590,7 @@ function thrownResponse(error40) {
819292
819590
  }
819293
819591
  async function createUrMcp2026Runtime(options5) {
819294
819592
  const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
819295
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.5" }, { capabilities: {} });
819593
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.8" }, { capabilities: {} });
819296
819594
  const [clientTransport, serverTransport] = createLinkedTransportPair();
819297
819595
  try {
819298
819596
  await server2.connect(serverTransport);
@@ -819303,7 +819601,7 @@ async function createUrMcp2026Runtime(options5) {
819303
819601
  }
819304
819602
  const runtime2 = new Mcp2026Runtime({
819305
819603
  cwd: options5.cwd,
819306
- version: "1.81.5",
819604
+ version: "1.81.8",
819307
819605
  backend: {
819308
819606
  listTools: async () => {
819309
819607
  const listed = await client2.listTools();
@@ -822038,7 +822336,7 @@ async function update() {
822038
822336
  logEvent("tengu_update_check", {});
822039
822337
  const diagnostic2 = await getDoctorDiagnostic();
822040
822338
  const result = await checkUpgradeStatus({
822041
- currentVersion: "1.81.5",
822339
+ currentVersion: "1.81.8",
822042
822340
  packageName: UR_AGENT_PACKAGE_NAME,
822043
822341
  installationType: diagnostic2.installationType,
822044
822342
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -822435,9 +822733,9 @@ async function run3() {
822435
822733
  }).hideHelp()).option("--replay-user-messages", "Re-emit user messages from stdin back on stdout for acknowledgment (only works with --input-format=stream-json and --output-format=stream-json)", () => true).addOption(new Option("--enable-auth-status", "Enable auth status messages in SDK mode").default(false).hideHelp()).option("--allowedTools, --allowed-tools <tools...>", 'Comma or space-separated list of tool names to allow (e.g. "Bash(git:*) Edit")').option("--tools <tools...>", 'Specify the list of available tools from the built-in set. Use "" to disable all tools, "default" to use all tools, or specify tool names (e.g. "Bash,Edit,Read").').option("--disallowedTools, --disallowed-tools <tools...>", 'Comma or space-separated list of tool names to deny (e.g. "Bash(git:*) Edit")').option("--mcp-config <configs...>", "Load MCP servers from JSON files or strings (space-separated)").addOption(new Option("--permission-prompt-tool <tool>", "MCP tool to use for permission prompts (only works with --print)").argParser(String).hideHelp()).addOption(new Option("--system-prompt <prompt>", "System prompt to use for the session").argParser(String)).addOption(new Option("--system-prompt-file <file>", "Read system prompt from a file").argParser(String).hideHelp()).addOption(new Option("--append-system-prompt <prompt>", "Append a system prompt to the default system prompt").argParser(String)).addOption(new Option("--append-system-prompt-file <file>", "Read system prompt from a file and append to the default system prompt").argParser(String).hideHelp()).addOption(new Option("--permission-mode <mode>", "Permission mode to use for the session").argParser(String).choices(PERMISSION_MODES)).option("-c, --continue", "Continue the most recent conversation in the current directory", () => true).option("-r, --resume [value]", "Resume a conversation by session ID, or open interactive picker with optional search term", (value2) => value2 || true).option("--fork-session", "When resuming, create a new session ID instead of reusing the original (use with --resume or --continue)", () => true).addOption(new Option("--prefill <text>", "Pre-fill the prompt input with text without submitting it").hideHelp()).addOption(new Option("--deep-link-origin", "Signal that this session was launched from a deep link").hideHelp()).addOption(new Option("--deep-link-repo <slug>", "Repo slug the deep link ?repo= parameter resolved to the current cwd").hideHelp()).addOption(new Option("--deep-link-last-fetch <ms>", "FETCH_HEAD mtime in epoch ms, precomputed by the deep link trampoline").argParser((v) => {
822436
822734
  const n3 = Number(v);
822437
822735
  return Number.isFinite(n3) ? n3 : undefined;
822438
- }).hideHelp()).option("--from-pr [value]", "Resume a session linked to a PR by PR number/URL, or open interactive picker with optional search term", (value2) => value2 || true).option("--no-session-persistence", "Disable session persistence - sessions will not be saved to disk and cannot be resumed (only works with --print)").addOption(new Option("--resume-session-at <message id>", "When resuming, only messages up to and including the assistant message with <message.id> (use with --resume in print mode)").argParser(String).hideHelp()).addOption(new Option("--rewind-files <user-message-id>", "Restore files to state at the specified user message and exit (requires --resume)").hideHelp()).option("--model <model>", `Local Ollama app model for the current session (for example, 'qwen3-coder:480b-cloud' or 'qwen2.5-coder:latest').`).addOption(new Option("--effort <level>", `Effort level for the current session (low, medium, high, max)`).argParser((rawValue) => {
822736
+ }).hideHelp()).option("--from-pr [value]", "Resume a session linked to a PR by PR number/URL, or open interactive picker with optional search term", (value2) => value2 || true).option("--no-session-persistence", "Disable session persistence - sessions will not be saved to disk and cannot be resumed (only works with --print)").addOption(new Option("--resume-session-at <message id>", "When resuming, only messages up to and including the assistant message with <message.id> (use with --resume in print mode)").argParser(String).hideHelp()).addOption(new Option("--rewind-files <user-message-id>", "Restore files to state at the specified user message and exit (requires --resume)").hideHelp()).option("--model <model>", `Local Ollama app model for the current session (for example, 'qwen3-coder:480b-cloud' or 'qwen2.5-coder:latest').`).addOption(new Option("--effort <level>", `Effort level for the current session (minimal, low, medium, high, xhigh, max)`).argParser((rawValue) => {
822439
822737
  const value2 = rawValue.toLowerCase();
822440
- const allowed = ["low", "medium", "high", "max"];
822738
+ const allowed = ["minimal", "low", "medium", "high", "xhigh", "max"];
822441
822739
  if (!allowed.includes(value2)) {
822442
822740
  throw new InvalidArgumentError(`It must be one of: ${allowed.join(", ")}`);
822443
822741
  }
@@ -823366,7 +823664,7 @@ ${customInstructions}` : customInstructions;
823366
823664
  }
823367
823665
  }
823368
823666
  logForDiagnosticsNoPII("info", "started", {
823369
- version: "1.81.5",
823667
+ version: "1.81.8",
823370
823668
  is_native_binary: isInBundledMode()
823371
823669
  });
823372
823670
  registerCleanup(async () => {
@@ -824153,7 +824451,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
824153
824451
  pendingHookMessages
824154
824452
  }, renderAndRun);
824155
824453
  }
824156
- }).version("1.81.5 (UR-Nexus)", "-v, --version", "Output the version number");
824454
+ }).version("1.81.8 (UR-Nexus)", "-v, --version", "Output the version number");
824157
824455
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
824158
824456
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
824159
824457
  if (canUserConfigureAdvisor()) {
@@ -825280,7 +825578,7 @@ if (false) {}
825280
825578
  async function main2() {
825281
825579
  const args = process.argv.slice(2);
825282
825580
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
825283
- console.log(`${"1.81.5"} (UR-Nexus)`);
825581
+ console.log(`${"1.81.8"} (UR-Nexus)`);
825284
825582
  return;
825285
825583
  }
825286
825584
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {