ur-agent 1.81.0 → 1.81.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -53073,6 +53073,25 @@ function asCount(value) {
53073
53073
  function isRecord(value) {
53074
53074
  return Boolean(value) && typeof value === "object" && !Array.isArray(value);
53075
53075
  }
53076
+ function parseModelReasoningCapabilities(value) {
53077
+ if (!isRecord(value))
53078
+ return;
53079
+ const supportedEfforts = value.supported_efforts === null ? null : Array.isArray(value.supported_efforts) ? Array.from(new Set(value.supported_efforts.filter((entry) => typeof entry === "string").map((entry) => entry.trim().toLowerCase()).filter(Boolean))) : undefined;
53080
+ const defaultEffort = asString(value.default_effort)?.toLowerCase();
53081
+ const defaultEnabled = typeof value.default_enabled === "boolean" ? value.default_enabled : undefined;
53082
+ const mandatory = typeof value.mandatory === "boolean" ? value.mandatory : undefined;
53083
+ const supportsMaxTokens = typeof value.supports_max_tokens === "boolean" ? value.supports_max_tokens : undefined;
53084
+ if (supportedEfforts === undefined && defaultEffort === undefined && defaultEnabled === undefined && mandatory === undefined && supportsMaxTokens === undefined) {
53085
+ return;
53086
+ }
53087
+ return {
53088
+ ...supportedEfforts !== undefined ? { supportedEfforts } : {},
53089
+ ...defaultEffort !== undefined ? { defaultEffort } : {},
53090
+ ...defaultEnabled !== undefined ? { defaultEnabled } : {},
53091
+ ...mandatory !== undefined ? { mandatory } : {},
53092
+ ...supportsMaxTokens !== undefined ? { supportsMaxTokens } : {}
53093
+ };
53094
+ }
53076
53095
  function asEpochSeconds(value) {
53077
53096
  if (typeof value === "number" && Number.isFinite(value) && value > 0) {
53078
53097
  return Math.floor(value);
@@ -53144,6 +53163,7 @@ function toDiscoveredModel(entry, providerLabel) {
53144
53163
  const humanName = asString(raw.display_name) ?? asString(raw.displayName) ?? asString(raw.name);
53145
53164
  const supportedParameters = Array.isArray(raw.supported_parameters) ? raw.supported_parameters.filter((value) => typeof value === "string") : Array.isArray(raw.supportedGenerationMethods) ? raw.supportedGenerationMethods.filter((value) => typeof value === "string") : undefined;
53146
53165
  const capabilities = isRecord(raw.capabilities) ? raw.capabilities : undefined;
53166
+ const reasoning = parseModelReasoningCapabilities(raw.reasoning);
53147
53167
  const expirationDate = asEpochSeconds(raw.expiration_date);
53148
53168
  const deprecated = raw.deprecated === true || expirationDate !== undefined && expirationDate <= Math.floor(Date.now() / 1000) || /deprecated/i.test(asString(raw.description) ?? "");
53149
53169
  const expires = expirationDate !== undefined && !deprecated ? `expires ${new Date(expirationDate * 1000).toISOString().slice(0, 10)}` : null;
@@ -53163,6 +53183,7 @@ function toDiscoveredModel(entry, providerLabel) {
53163
53183
  ...outputTokenLimit ? { outputTokenLimit } : {},
53164
53184
  ...supportedParameters ? { supportedParameters } : {},
53165
53185
  ...capabilities ? { capabilities } : {},
53186
+ ...reasoning ? { reasoning } : {},
53166
53187
  ...expirationDate ? { expirationDate } : {},
53167
53188
  ...deprecated ? { deprecated: true } : {}
53168
53189
  };
@@ -53742,6 +53763,7 @@ __export(exports_providerRegistry, {
53742
53763
  getProviderRuntimeInfo: () => getProviderRuntimeInfo,
53743
53764
  getProviderRuntimeBlockReason: () => getProviderRuntimeBlockReason,
53744
53765
  getProviderRuntimeBackend: () => getProviderRuntimeBackend,
53766
+ getProviderReasoningCapabilitiesForModel: () => getProviderReasoningCapabilitiesForModel,
53745
53767
  getProviderFamily: () => getProviderFamily,
53746
53768
  getProviderDefinition: () => getProviderDefinition,
53747
53769
  getProviderContextLengthForModel: () => getProviderContextLengthForModel,
@@ -54875,6 +54897,20 @@ function getProviderContextLengthForModel(model, provider = getInitialSettings()
54875
54897
  const length = match?.contextLength;
54876
54898
  return typeof length === "number" && Number.isFinite(length) && length > 0 ? Math.floor(length) : undefined;
54877
54899
  }
54900
+ function getProviderReasoningCapabilitiesForModel(model, provider = getRuntimeProviderId(), settings = getInitialSettings()) {
54901
+ const providerId = resolveProviderId(provider);
54902
+ if (!providerId)
54903
+ return;
54904
+ const wanted = model.trim().toLowerCase();
54905
+ if (!wanted)
54906
+ return;
54907
+ const known = [
54908
+ ...getCachedProviderModels(providerId, settings),
54909
+ ...PROVIDER_MODELS[providerId] ?? []
54910
+ ];
54911
+ const match = known.find((entry) => entry.id.toLowerCase() === wanted) ?? known.find((entry) => wanted.includes(entry.id.toLowerCase()));
54912
+ return match?.reasoning;
54913
+ }
54878
54914
  function cacheProviderModelsForProvider(providerId, models, settings = getInitialSettings()) {
54879
54915
  const provider = resolveProviderId(providerId);
54880
54916
  if (!provider) {
@@ -55126,6 +55162,7 @@ async function discoverApiProviderModels(provider, definition, options) {
55126
55162
  ...model.outputTokenLimit ? { outputTokenLimit: model.outputTokenLimit } : {},
55127
55163
  ...model.supportedParameters ? { supportedParameters: model.supportedParameters } : {},
55128
55164
  ...model.capabilities ? { capabilities: model.capabilities } : {},
55165
+ ...model.reasoning ? { reasoning: model.reasoning } : {},
55129
55166
  ...model.expirationDate ? { expirationDate: model.expirationDate } : {},
55130
55167
  ...model.deprecated ? { deprecated: true } : {}
55131
55168
  }));
@@ -55843,6 +55880,12 @@ var init_providerRegistry = __esm(() => {
55843
55880
  });
55844
55881
 
55845
55882
  // src/utils/model/providers.ts
55883
+ function getRuntimeProvider() {
55884
+ return getRuntimeProviderId();
55885
+ }
55886
+ function getRuntimeModelReasoningCapabilities(model, provider = getRuntimeProviderId()) {
55887
+ return getProviderReasoningCapabilitiesForModel(model, provider);
55888
+ }
55846
55889
  function getAPIProvider() {
55847
55890
  return getRuntimeProviderId() === "ollama" ? "ollama" : "foundry";
55848
55891
  }
@@ -90686,6 +90729,352 @@ var init_ollama = __esm(() => {
90686
90729
  LEVELED_THINK_MODEL_RE = /gpt-oss/i;
90687
90730
  });
90688
90731
 
90732
+ // src/utils/model/modelSupportOverrides.ts
90733
+ var TIERS, get3PModelCapabilityOverride;
90734
+ var init_modelSupportOverrides = __esm(() => {
90735
+ init_memoize();
90736
+ init_providers();
90737
+ TIERS = [
90738
+ {
90739
+ modelEnvVar: "URHQ_DEFAULT_MODELO_MODEL",
90740
+ capabilitiesEnvVar: "URHQ_DEFAULT_MODELO_MODEL_SUPPORTED_CAPABILITIES"
90741
+ },
90742
+ {
90743
+ modelEnvVar: "URHQ_DEFAULT_MODELS_MODEL",
90744
+ capabilitiesEnvVar: "URHQ_DEFAULT_MODELS_MODEL_SUPPORTED_CAPABILITIES"
90745
+ },
90746
+ {
90747
+ modelEnvVar: "URHQ_DEFAULT_MODELH_MODEL",
90748
+ capabilitiesEnvVar: "URHQ_DEFAULT_MODELH_MODEL_SUPPORTED_CAPABILITIES"
90749
+ }
90750
+ ];
90751
+ get3PModelCapabilityOverride = memoize_default((model, capability) => {
90752
+ if (isFirstPartyRuntime()) {
90753
+ return;
90754
+ }
90755
+ const m = model.toLowerCase();
90756
+ for (const tier of TIERS) {
90757
+ const pinned = process.env[tier.modelEnvVar];
90758
+ const capabilities = process.env[tier.capabilitiesEnvVar];
90759
+ if (!pinned || capabilities === undefined)
90760
+ continue;
90761
+ if (m !== pinned.toLowerCase())
90762
+ continue;
90763
+ return capabilities.toLowerCase().split(",").map((s) => s.trim()).includes(capability);
90764
+ }
90765
+ return;
90766
+ }, (model, capability) => `${model.toLowerCase()}:${capability}`);
90767
+ });
90768
+
90769
+ // src/utils/thinking.ts
90770
+ function isUltrathinkEnabled() {
90771
+ if (true) {
90772
+ return false;
90773
+ }
90774
+ return getFeatureValue_CACHED_MAY_BE_STALE("tengu_turtle_carbon", true);
90775
+ }
90776
+ function hasUltrathinkKeyword(text) {
90777
+ return /\bultrathink\b/i.test(text);
90778
+ }
90779
+ function findThinkingTriggerPositions(text) {
90780
+ const positions = [];
90781
+ const matches = text.matchAll(/\bultrathink\b/gi);
90782
+ for (const match of matches) {
90783
+ if (match.index !== undefined) {
90784
+ positions.push({
90785
+ word: match[0],
90786
+ start: match.index,
90787
+ end: match.index + match[0].length
90788
+ });
90789
+ }
90790
+ }
90791
+ return positions;
90792
+ }
90793
+ function getRainbowColor(charIndex, shimmer = false) {
90794
+ const colors = shimmer ? RAINBOW_SHIMMER_COLORS : RAINBOW_COLORS;
90795
+ return colors[charIndex % colors.length];
90796
+ }
90797
+ function modelSupportsThinking(model) {
90798
+ const provider = getAPIProvider();
90799
+ if (provider === "ollama") {
90800
+ return true;
90801
+ }
90802
+ const supported3P = get3PModelCapabilityOverride(model, "thinking");
90803
+ if (supported3P !== undefined) {
90804
+ return supported3P;
90805
+ }
90806
+ if (process.env.USER_TYPE === "ant") {
90807
+ if (resolveAntModel(model.toLowerCase())) {
90808
+ return true;
90809
+ }
90810
+ }
90811
+ if (provider === "foundry" || isFirstPartyRuntime()) {
90812
+ return true;
90813
+ }
90814
+ return false;
90815
+ }
90816
+ function modelSupportsAdaptiveThinking(model) {
90817
+ const supported3P = get3PModelCapabilityOverride(model, "adaptive_thinking");
90818
+ if (supported3P !== undefined) {
90819
+ return supported3P;
90820
+ }
90821
+ if (getAPIProvider() === "ollama") {
90822
+ return false;
90823
+ }
90824
+ const provider = getAPIProvider();
90825
+ return isFirstPartyRuntime() || provider === "foundry";
90826
+ }
90827
+ function shouldEnableThinkingByDefault() {
90828
+ if (process.env.MAX_THINKING_TOKENS) {
90829
+ return parseInt(process.env.MAX_THINKING_TOKENS, 10) > 0;
90830
+ }
90831
+ const { settings } = getSettingsWithErrors();
90832
+ if (settings.alwaysThinkingEnabled === false) {
90833
+ return false;
90834
+ }
90835
+ return true;
90836
+ }
90837
+ var RAINBOW_COLORS, RAINBOW_SHIMMER_COLORS;
90838
+ var init_thinking = __esm(() => {
90839
+ init_growthbook();
90840
+ init_antModels();
90841
+ init_modelSupportOverrides();
90842
+ init_providers();
90843
+ init_settings2();
90844
+ RAINBOW_COLORS = [
90845
+ "rainbow_red",
90846
+ "rainbow_orange",
90847
+ "rainbow_yellow",
90848
+ "rainbow_green",
90849
+ "rainbow_blue",
90850
+ "rainbow_indigo",
90851
+ "rainbow_violet"
90852
+ ];
90853
+ RAINBOW_SHIMMER_COLORS = [
90854
+ "rainbow_red_shimmer",
90855
+ "rainbow_orange_shimmer",
90856
+ "rainbow_yellow_shimmer",
90857
+ "rainbow_green_shimmer",
90858
+ "rainbow_blue_shimmer",
90859
+ "rainbow_indigo_shimmer",
90860
+ "rainbow_violet_shimmer"
90861
+ ];
90862
+ });
90863
+
90864
+ // src/utils/effort.ts
90865
+ function modelSupportsEffort(model, provider = getRuntimeProvider()) {
90866
+ if (isEnvTruthy(process.env.UR_CODE_ALWAYS_ENABLE_EFFORT)) {
90867
+ return true;
90868
+ }
90869
+ const supported3P = get3PModelCapabilityOverride(model, "effort");
90870
+ if (supported3P !== undefined) {
90871
+ return supported3P;
90872
+ }
90873
+ const discovered = getRuntimeModelReasoningCapabilities(model, provider);
90874
+ if (discovered?.supportedEfforts === null)
90875
+ return true;
90876
+ if (discovered?.supportedEfforts !== undefined) {
90877
+ return discovered.supportedEfforts.some((effort) => effort !== "none");
90878
+ }
90879
+ if (discovered && provider === "openrouter") {
90880
+ return true;
90881
+ }
90882
+ return getAPIProvider() === "ollama";
90883
+ }
90884
+ function modelSupportsMaxEffort(model, provider = getRuntimeProvider()) {
90885
+ const supported3P = get3PModelCapabilityOverride(model, "max_effort");
90886
+ if (supported3P !== undefined) {
90887
+ return supported3P;
90888
+ }
90889
+ const discovered = getRuntimeModelReasoningCapabilities(model, provider);
90890
+ if (discovered?.supportedEfforts === null)
90891
+ return true;
90892
+ if (discovered?.supportedEfforts !== undefined) {
90893
+ return provider === "openrouter" || discovered.supportedEfforts.some((effort) => effort === "max" || effort === "xhigh");
90894
+ }
90895
+ if (discovered && provider === "openrouter") {
90896
+ return true;
90897
+ }
90898
+ if (process.env.USER_TYPE === "ant" && resolveAntModel(model)) {
90899
+ return true;
90900
+ }
90901
+ return false;
90902
+ }
90903
+ function toOpenRouterReasoningEffort(model, effort) {
90904
+ const supported = getRuntimeModelReasoningCapabilities(model, "openrouter")?.supportedEfforts;
90905
+ if (effort !== "max")
90906
+ return effort;
90907
+ if (supported === null || supported === undefined)
90908
+ return "max";
90909
+ if (supported.includes("max"))
90910
+ return "max";
90911
+ if (supported.includes("xhigh"))
90912
+ return "xhigh";
90913
+ return "high";
90914
+ }
90915
+ function isEffortLevel(value) {
90916
+ return EFFORT_LEVELS.includes(value);
90917
+ }
90918
+ function parseEffortValue(value) {
90919
+ if (value === undefined || value === null || value === "") {
90920
+ return;
90921
+ }
90922
+ if (typeof value === "number" && isValidNumericEffort(value)) {
90923
+ return value;
90924
+ }
90925
+ const str = String(value).toLowerCase();
90926
+ if (isEffortLevel(str)) {
90927
+ return str;
90928
+ }
90929
+ const numericValue = parseInt(str, 10);
90930
+ if (!isNaN(numericValue) && isValidNumericEffort(numericValue)) {
90931
+ return numericValue;
90932
+ }
90933
+ return;
90934
+ }
90935
+ function toPersistableEffort(value) {
90936
+ if (value === "low" || value === "medium" || value === "high") {
90937
+ return value;
90938
+ }
90939
+ if (value === "max" && process.env.USER_TYPE === "ant") {
90940
+ return value;
90941
+ }
90942
+ return;
90943
+ }
90944
+ function getInitialEffortSetting() {
90945
+ return toPersistableEffort(getInitialSettings().effortLevel);
90946
+ }
90947
+ function resolvePickerEffortPersistence(picked, modelDefault, priorPersisted, toggledInPicker) {
90948
+ const hadExplicit = priorPersisted !== undefined || toggledInPicker;
90949
+ return hadExplicit || picked !== modelDefault ? picked : undefined;
90950
+ }
90951
+ function getEffortEnvOverride() {
90952
+ const envOverride = process.env.UR_CODE_EFFORT_LEVEL;
90953
+ return envOverride?.toLowerCase() === "unset" || envOverride?.toLowerCase() === "auto" ? null : parseEffortValue(envOverride);
90954
+ }
90955
+ function resolveAppliedEffort(model, appStateEffortValue, provider = getRuntimeProvider()) {
90956
+ const envOverride = getEffortEnvOverride();
90957
+ if (envOverride === null) {
90958
+ return;
90959
+ }
90960
+ const resolved = envOverride ?? appStateEffortValue ?? getDefaultEffortForModel(model);
90961
+ if (resolved === "max" && !modelSupportsMaxEffort(model, provider)) {
90962
+ return "high";
90963
+ }
90964
+ return resolved;
90965
+ }
90966
+ function getDisplayedEffortLevel(model, appStateEffort, provider = getRuntimeProvider()) {
90967
+ const resolved = resolveAppliedEffort(model, appStateEffort, provider) ?? "high";
90968
+ return convertEffortValueToLevel(resolved);
90969
+ }
90970
+ function getEffortSuffix(model, effortValue, provider = getRuntimeProvider()) {
90971
+ if (effortValue === undefined)
90972
+ return "";
90973
+ const resolved = resolveAppliedEffort(model, effortValue, provider);
90974
+ if (resolved === undefined)
90975
+ return "";
90976
+ return ` with ${convertEffortValueToLevel(resolved)} effort`;
90977
+ }
90978
+ function isValidNumericEffort(value) {
90979
+ return Number.isInteger(value);
90980
+ }
90981
+ function convertEffortValueToLevel(value) {
90982
+ if (typeof value === "string") {
90983
+ return isEffortLevel(value) ? value : "high";
90984
+ }
90985
+ if (process.env.USER_TYPE === "ant" && typeof value === "number") {
90986
+ if (value <= 50)
90987
+ return "low";
90988
+ if (value <= 85)
90989
+ return "medium";
90990
+ if (value <= 100)
90991
+ return "high";
90992
+ return "max";
90993
+ }
90994
+ return "high";
90995
+ }
90996
+ function getEffortLevelDescription(level) {
90997
+ switch (level) {
90998
+ case "low":
90999
+ return "Quick, straightforward implementation with minimal overhead";
91000
+ case "medium":
91001
+ return "Balanced approach with standard implementation and testing";
91002
+ case "high":
91003
+ return "Comprehensive implementation with extensive testing and documentation";
91004
+ case "max":
91005
+ return "Maximum capability with deepest reasoning";
91006
+ }
91007
+ }
91008
+ function getEffortValueDescription(value) {
91009
+ if (process.env.USER_TYPE === "ant" && typeof value === "number") {
91010
+ return `[ANT-ONLY] Numeric effort value of ${value}`;
91011
+ }
91012
+ if (typeof value === "string") {
91013
+ return getEffortLevelDescription(value);
91014
+ }
91015
+ return "Balanced approach with standard implementation and testing";
91016
+ }
91017
+ function getmodelODefaultEffortConfig() {
91018
+ const config2 = getFeatureValue_CACHED_MAY_BE_STALE("tengu_grey_step2", MODELO_DEFAULT_EFFORT_CONFIG_DEFAULT);
91019
+ return {
91020
+ ...MODELO_DEFAULT_EFFORT_CONFIG_DEFAULT,
91021
+ ...config2
91022
+ };
91023
+ }
91024
+ function getDefaultEffortForModel(model) {
91025
+ if (process.env.USER_TYPE === "ant") {
91026
+ const config2 = getAntModelOverrideConfig();
91027
+ const isDefaultModel = config2?.defaultModel !== undefined && model.toLowerCase() === config2.defaultModel.toLowerCase();
91028
+ if (isDefaultModel && config2?.defaultModelEffortLevel) {
91029
+ return config2.defaultModelEffortLevel;
91030
+ }
91031
+ const antModel = resolveAntModel(model);
91032
+ if (antModel) {
91033
+ if (antModel.defaultEffortLevel) {
91034
+ return antModel.defaultEffortLevel;
91035
+ }
91036
+ if (antModel.defaultEffortValue !== undefined) {
91037
+ return antModel.defaultEffortValue;
91038
+ }
91039
+ }
91040
+ return;
91041
+ }
91042
+ if (modelSupportsEffort(model)) {
91043
+ if (isProSubscriber()) {
91044
+ return "medium";
91045
+ }
91046
+ if (getmodelODefaultEffortConfig().enabled && (isMaxSubscriber() || isTeamSubscriber())) {
91047
+ return "medium";
91048
+ }
91049
+ }
91050
+ if (isUltrathinkEnabled() && modelSupportsEffort(model)) {
91051
+ return "medium";
91052
+ }
91053
+ return;
91054
+ }
91055
+ var EFFORT_LEVELS, MODELO_DEFAULT_EFFORT_CONFIG_DEFAULT;
91056
+ var init_effort = __esm(() => {
91057
+ init_thinking();
91058
+ init_settings2();
91059
+ init_auth();
91060
+ init_growthbook();
91061
+ init_providers();
91062
+ init_modelSupportOverrides();
91063
+ init_envUtils();
91064
+ init_antModels();
91065
+ EFFORT_LEVELS = [
91066
+ "low",
91067
+ "medium",
91068
+ "high",
91069
+ "max"
91070
+ ];
91071
+ MODELO_DEFAULT_EFFORT_CONFIG_DEFAULT = {
91072
+ enabled: true,
91073
+ dialogTitle: "We recommend medium effort for modelO",
91074
+ dialogDescription: "Effort determines how long UR thinks for when completing your task. We recommend medium effort for most tasks to balance speed and intelligence and maximize rate limits. Use ultrathink to trigger high effort when needed."
91075
+ };
91076
+ });
91077
+
90689
91078
  // src/services/api/usageNormalization.ts
90690
91079
  function count3(value) {
90691
91080
  if (typeof value !== "number" || !Number.isFinite(value) || value < 0) {
@@ -92278,6 +92667,10 @@ function toOpenAICompatibleRequest(params, providerName = "openai-compatible") {
92278
92667
  const tools = toOpenAITools(params.tools, providerName);
92279
92668
  const responseFormat = toOpenAIResponseFormat(params.output_config?.format);
92280
92669
  const reasoningEffort = toOpenAIReasoningEffort(params);
92670
+ const openRouterReasoning = providerName === "openrouter" && reasoningEffort ? {
92671
+ effort: toOpenRouterReasoningEffort(String(params.model ?? ""), reasoningEffort)
92672
+ } : undefined;
92673
+ const compatibleReasoningEffort = reasoningEffort === "max" ? "high" : reasoningEffort;
92281
92674
  return {
92282
92675
  model: params.model,
92283
92676
  messages: toOpenAIMessages(params, providerName),
@@ -92286,7 +92679,7 @@ function toOpenAICompatibleRequest(params, providerName = "openai-compatible") {
92286
92679
  ...params.top_p !== undefined && { top_p: params.top_p },
92287
92680
  ...params.stop_sequences?.length > 0 && { stop: params.stop_sequences },
92288
92681
  ...params.metadata !== undefined && { metadata: params.metadata },
92289
- ...reasoningEffort && { reasoning_effort: reasoningEffort },
92682
+ ...openRouterReasoning ? { reasoning: openRouterReasoning } : compatibleReasoningEffort ? { reasoning_effort: compatibleReasoningEffort } : {},
92290
92683
  ...responseFormat && { response_format: responseFormat },
92291
92684
  stream: Boolean(params.stream),
92292
92685
  ...params.stream && providerName !== "openrouter" ? { stream_options: { include_usage: true } } : {},
@@ -92308,10 +92701,9 @@ function toOpenAIResponseFormat(format4) {
92308
92701
  }
92309
92702
  function toOpenAIReasoningEffort(params) {
92310
92703
  const requested = params.output_config?.effort;
92311
- if (requested === "low" || requested === "medium" || requested === "high")
92704
+ if (requested === "low" || requested === "medium" || requested === "high" || requested === "max") {
92312
92705
  return requested;
92313
- if (requested === "max")
92314
- return "high";
92706
+ }
92315
92707
  if (params.thinking?.type === "adaptive")
92316
92708
  return "medium";
92317
92709
  if (params.thinking?.type !== "enabled")
@@ -92754,6 +93146,7 @@ function hasToolUse(content) {
92754
93146
  }
92755
93147
  var init_openaiCompatible = __esm(() => {
92756
93148
  init_kimiToolCalls();
93149
+ init_effort();
92757
93150
  init_toolSchema();
92758
93151
  init_providerClient();
92759
93152
  init_streamingAdapters();
@@ -95077,7 +95470,7 @@ async function assertFreshRuntimeModel(providerId, options) {
95077
95470
  const provider = getProviderDefinition(providerId);
95078
95471
  if (provider.modelDiscoveryType !== "live")
95079
95472
  return;
95080
- const settings = getInitialSettings();
95473
+ const settings = options.settings ?? getInitialSettings();
95081
95474
  const env4 = provider.envKey && options.apiKey ? { ...process.env, [provider.envKey]: options.apiKey } : process.env;
95082
95475
  const discovered = await ensureProviderModelsFresh(providerId, {
95083
95476
  settings,
@@ -95152,12 +95545,12 @@ async function createLocalProviderClient(providerId, options = {}) {
95152
95545
  throw new Error(`Provider "${providerId}" is not an Ollama runtime. Runtime backend is ${getProviderRuntimeBackend(providerId)}.`);
95153
95546
  }
95154
95547
  const { createOllamaURHQClient: createOllamaURHQClient2 } = await Promise.resolve().then(() => (init_ollama(), exports_ollama));
95155
- const settings = getInitialSettings();
95548
+ const settings = options.settings ?? getInitialSettings();
95156
95549
  const baseUrlOverride = resolveProviderBaseUrl(providerId, settings);
95157
95550
  return createOllamaURHQClient2({ baseUrlOverride });
95158
95551
  }
95159
95552
  async function createOpenAICompatibleProviderClient(providerId, options = {}) {
95160
- const settings = getInitialSettings();
95553
+ const settings = options.settings ?? getInitialSettings();
95161
95554
  const providerSettings = getActiveProviderSettings(settings);
95162
95555
  const provider = getProviderDefinition(providerId);
95163
95556
  const baseUrl = providerSettings.active === providerId ? providerSettings.baseUrl ?? provider.defaultBaseUrl : provider.defaultBaseUrl;
@@ -95178,7 +95571,7 @@ async function createSubscriptionClient(providerId, options = {}) {
95178
95571
  if (runtimeBlock) {
95179
95572
  throw new Error(runtimeBlock);
95180
95573
  }
95181
- const settings = getInitialSettings();
95574
+ const settings = options.settings ?? getInitialSettings();
95182
95575
  const providerSettings = getActiveProviderSettings(settings);
95183
95576
  const { which: which2 } = await Promise.resolve().then(() => (init_which(), exports_which));
95184
95577
  let commandPath = providerSettings.commandPath ?? null;
@@ -95201,7 +95594,7 @@ async function createSubscriptionClient(providerId, options = {}) {
95201
95594
  }
95202
95595
  async function createAPIClient(providerId, options = {}) {
95203
95596
  const provider = getProviderDefinition(providerId);
95204
- const settings = getInitialSettings();
95597
+ const settings = options.settings ?? getInitialSettings();
95205
95598
  const providerSettings = getActiveProviderSettings(settings);
95206
95599
  const apiKey = options.apiKey ?? getProviderApiKey(providerId);
95207
95600
  if (provider.envKey && !apiKey) {
@@ -95276,20 +95669,30 @@ async function getURHQClient({
95276
95669
  maxRetries,
95277
95670
  model,
95278
95671
  fetchOverride,
95279
- source
95672
+ source,
95673
+ providerSettings
95280
95674
  }) {
95281
- const runtime = resolveActiveProviderModel({ model, source });
95675
+ const settings = providerSettings ? {
95676
+ ...getInitialSettings(),
95677
+ provider: {
95678
+ ...providerSettings,
95679
+ ...providerSettings.responses ? { responses: { ...providerSettings.responses } } : {}
95680
+ }
95681
+ } : undefined;
95682
+ const runtime = resolveActiveProviderModel({ settings, model, source });
95282
95683
  return createProviderClient(runtime.providerId, {
95283
95684
  apiKey,
95284
95685
  maxRetries,
95285
95686
  model: runtime.model,
95286
95687
  fetchOverride,
95287
- source
95688
+ source,
95689
+ settings
95288
95690
  });
95289
95691
  }
95290
95692
  var CLIENT_REQUEST_ID_HEADER = "x-client-request-id";
95291
95693
  var init_client2 = __esm(() => {
95292
95694
  init_providerClient();
95695
+ init_settings2();
95293
95696
  });
95294
95697
 
95295
95698
  // src/utils/model/modelCapabilities.ts
@@ -96580,43 +96983,6 @@ var init_model = __esm(() => {
96580
96983
  LEGACY_MODELO_FIRSTPARTY = [];
96581
96984
  });
96582
96985
 
96583
- // src/utils/model/modelSupportOverrides.ts
96584
- var TIERS, get3PModelCapabilityOverride;
96585
- var init_modelSupportOverrides = __esm(() => {
96586
- init_memoize();
96587
- init_providers();
96588
- TIERS = [
96589
- {
96590
- modelEnvVar: "URHQ_DEFAULT_MODELO_MODEL",
96591
- capabilitiesEnvVar: "URHQ_DEFAULT_MODELO_MODEL_SUPPORTED_CAPABILITIES"
96592
- },
96593
- {
96594
- modelEnvVar: "URHQ_DEFAULT_MODELS_MODEL",
96595
- capabilitiesEnvVar: "URHQ_DEFAULT_MODELS_MODEL_SUPPORTED_CAPABILITIES"
96596
- },
96597
- {
96598
- modelEnvVar: "URHQ_DEFAULT_MODELH_MODEL",
96599
- capabilitiesEnvVar: "URHQ_DEFAULT_MODELH_MODEL_SUPPORTED_CAPABILITIES"
96600
- }
96601
- ];
96602
- get3PModelCapabilityOverride = memoize_default((model, capability) => {
96603
- if (isFirstPartyRuntime()) {
96604
- return;
96605
- }
96606
- const m = model.toLowerCase();
96607
- for (const tier of TIERS) {
96608
- const pinned = process.env[tier.modelEnvVar];
96609
- const capabilities = process.env[tier.capabilitiesEnvVar];
96610
- if (!pinned || capabilities === undefined)
96611
- continue;
96612
- if (m !== pinned.toLowerCase())
96613
- continue;
96614
- return capabilities.toLowerCase().split(",").map((s) => s.trim()).includes(capability);
96615
- }
96616
- return;
96617
- }, (model, capability) => `${model.toLowerCase()}:${capability}`);
96618
- });
96619
-
96620
96986
  // src/utils/betas.ts
96621
96987
  function partitionBetasByAllowlist(betas) {
96622
96988
  const allowed = [];
@@ -107788,7 +108154,7 @@ var init_auth = __esm(() => {
107788
108154
 
107789
108155
  // src/utils/userAgent.ts
107790
108156
  function getURCodeUserAgent() {
107791
- return `ur/${"1.81.0"}`;
108157
+ return `ur/${"1.81.2"}`;
107792
108158
  }
107793
108159
 
107794
108160
  // src/utils/workloadContext.ts
@@ -107810,7 +108176,7 @@ function getUserAgent() {
107810
108176
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
107811
108177
  const workload = getWorkload();
107812
108178
  const workloadSuffix = workload ? `, workload/${workload}` : "";
107813
- return `ur-cli/${"1.81.0"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
108179
+ return `ur-cli/${"1.81.2"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
107814
108180
  }
107815
108181
  function getMCPUserAgent() {
107816
108182
  const parts = [];
@@ -107824,7 +108190,7 @@ function getMCPUserAgent() {
107824
108190
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
107825
108191
  }
107826
108192
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
107827
- return `ur/${"1.81.0"}${suffix}`;
108193
+ return `ur/${"1.81.2"}${suffix}`;
107828
108194
  }
107829
108195
  function getWebFetchUserAgent() {
107830
108196
  return `UR-User (${getURCodeUserAgent()})`;
@@ -107962,7 +108328,7 @@ var init_user = __esm(() => {
107962
108328
  deviceId,
107963
108329
  sessionId: getSessionId(),
107964
108330
  email: getEmail(),
107965
- appVersion: "1.81.0",
108331
+ appVersion: "1.81.2",
107966
108332
  platform: getHostPlatformForAnalytics(),
107967
108333
  organizationUuid,
107968
108334
  accountUuid,
@@ -115849,7 +116215,7 @@ var init_metadata = __esm(() => {
115849
116215
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
115850
116216
  WHITESPACE_REGEX = /\s+/;
115851
116217
  getVersionBase = memoize_default(() => {
115852
- const match = "1.81.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
116218
+ const match = "1.81.2".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
115853
116219
  return match ? match[0] : undefined;
115854
116220
  });
115855
116221
  buildEnvContext = memoize_default(async () => {
@@ -115889,7 +116255,7 @@ var init_metadata = __esm(() => {
115889
116255
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
115890
116256
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
115891
116257
  isURAiAuth: isURAISubscriber(),
115892
- version: "1.81.0",
116258
+ version: "1.81.2",
115893
116259
  versionBase: getVersionBase(),
115894
116260
  buildTime: "",
115895
116261
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -116559,7 +116925,7 @@ function initialize1PEventLogging() {
116559
116925
  const platform2 = getPlatform();
116560
116926
  const attributes = {
116561
116927
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
116562
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.81.0"
116928
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.81.2"
116563
116929
  };
116564
116930
  if (platform2 === "wsl") {
116565
116931
  const wslVersion = getWslVersion();
@@ -116587,7 +116953,7 @@ function initialize1PEventLogging() {
116587
116953
  })
116588
116954
  ]
116589
116955
  });
116590
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.81.0");
116956
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.81.2");
116591
116957
  }
116592
116958
  async function reinitialize1PEventLoggingIfConfigChanged() {
116593
116959
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -126553,7 +126919,7 @@ function formatA2AAgentCard(options = {}, pretty = true) {
126553
126919
  function formatA2AV1AgentCard(options = {}, pretty = true) {
126554
126920
  return JSON.stringify(buildA2AV1AgentCard(options), null, pretty ? 2 : 0);
126555
126921
  }
126556
- var urVersion = "1.81.0", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
126922
+ var urVersion = "1.81.2", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
126557
126923
  var init_trends = __esm(() => {
126558
126924
  init_a2aCardSignature();
126559
126925
  coverage = [
@@ -129443,7 +129809,7 @@ function getAttributionHeader(fingerprint) {
129443
129809
  if (!isAttributionHeaderEnabled()) {
129444
129810
  return "";
129445
129811
  }
129446
- const version2 = `${"1.81.0"}.${fingerprint}`;
129812
+ const version2 = `${"1.81.2"}.${fingerprint}`;
129447
129813
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
129448
129814
  const cch = "";
129449
129815
  const workload = getWorkload();
@@ -170342,285 +170708,6 @@ var init_pluginDirectories = __esm(() => {
170342
170708
  init_pathValidation();
170343
170709
  });
170344
170710
 
170345
- // src/utils/thinking.ts
170346
- function isUltrathinkEnabled() {
170347
- if (true) {
170348
- return false;
170349
- }
170350
- return getFeatureValue_CACHED_MAY_BE_STALE("tengu_turtle_carbon", true);
170351
- }
170352
- function hasUltrathinkKeyword(text2) {
170353
- return /\bultrathink\b/i.test(text2);
170354
- }
170355
- function findThinkingTriggerPositions(text2) {
170356
- const positions = [];
170357
- const matches = text2.matchAll(/\bultrathink\b/gi);
170358
- for (const match of matches) {
170359
- if (match.index !== undefined) {
170360
- positions.push({
170361
- word: match[0],
170362
- start: match.index,
170363
- end: match.index + match[0].length
170364
- });
170365
- }
170366
- }
170367
- return positions;
170368
- }
170369
- function getRainbowColor(charIndex, shimmer = false) {
170370
- const colors = shimmer ? RAINBOW_SHIMMER_COLORS : RAINBOW_COLORS;
170371
- return colors[charIndex % colors.length];
170372
- }
170373
- function modelSupportsThinking(model) {
170374
- const provider = getAPIProvider();
170375
- if (provider === "ollama") {
170376
- return true;
170377
- }
170378
- const supported3P = get3PModelCapabilityOverride(model, "thinking");
170379
- if (supported3P !== undefined) {
170380
- return supported3P;
170381
- }
170382
- if (process.env.USER_TYPE === "ant") {
170383
- if (resolveAntModel(model.toLowerCase())) {
170384
- return true;
170385
- }
170386
- }
170387
- if (provider === "foundry" || isFirstPartyRuntime()) {
170388
- return true;
170389
- }
170390
- return false;
170391
- }
170392
- function modelSupportsAdaptiveThinking(model) {
170393
- const supported3P = get3PModelCapabilityOverride(model, "adaptive_thinking");
170394
- if (supported3P !== undefined) {
170395
- return supported3P;
170396
- }
170397
- if (getAPIProvider() === "ollama") {
170398
- return false;
170399
- }
170400
- const provider = getAPIProvider();
170401
- return isFirstPartyRuntime() || provider === "foundry";
170402
- }
170403
- function shouldEnableThinkingByDefault() {
170404
- if (process.env.MAX_THINKING_TOKENS) {
170405
- return parseInt(process.env.MAX_THINKING_TOKENS, 10) > 0;
170406
- }
170407
- const { settings } = getSettingsWithErrors();
170408
- if (settings.alwaysThinkingEnabled === false) {
170409
- return false;
170410
- }
170411
- return true;
170412
- }
170413
- var RAINBOW_COLORS, RAINBOW_SHIMMER_COLORS;
170414
- var init_thinking = __esm(() => {
170415
- init_growthbook();
170416
- init_antModels();
170417
- init_modelSupportOverrides();
170418
- init_providers();
170419
- init_settings2();
170420
- RAINBOW_COLORS = [
170421
- "rainbow_red",
170422
- "rainbow_orange",
170423
- "rainbow_yellow",
170424
- "rainbow_green",
170425
- "rainbow_blue",
170426
- "rainbow_indigo",
170427
- "rainbow_violet"
170428
- ];
170429
- RAINBOW_SHIMMER_COLORS = [
170430
- "rainbow_red_shimmer",
170431
- "rainbow_orange_shimmer",
170432
- "rainbow_yellow_shimmer",
170433
- "rainbow_green_shimmer",
170434
- "rainbow_blue_shimmer",
170435
- "rainbow_indigo_shimmer",
170436
- "rainbow_violet_shimmer"
170437
- ];
170438
- });
170439
-
170440
- // src/utils/effort.ts
170441
- function modelSupportsEffort(model) {
170442
- if (isEnvTruthy(process.env.UR_CODE_ALWAYS_ENABLE_EFFORT)) {
170443
- return true;
170444
- }
170445
- const supported3P = get3PModelCapabilityOverride(model, "effort");
170446
- if (supported3P !== undefined) {
170447
- return supported3P;
170448
- }
170449
- return getAPIProvider() === "ollama";
170450
- }
170451
- function modelSupportsMaxEffort(model) {
170452
- const supported3P = get3PModelCapabilityOverride(model, "max_effort");
170453
- if (supported3P !== undefined) {
170454
- return supported3P;
170455
- }
170456
- if (process.env.USER_TYPE === "ant" && resolveAntModel(model)) {
170457
- return true;
170458
- }
170459
- return false;
170460
- }
170461
- function isEffortLevel(value) {
170462
- return EFFORT_LEVELS.includes(value);
170463
- }
170464
- function parseEffortValue(value) {
170465
- if (value === undefined || value === null || value === "") {
170466
- return;
170467
- }
170468
- if (typeof value === "number" && isValidNumericEffort(value)) {
170469
- return value;
170470
- }
170471
- const str = String(value).toLowerCase();
170472
- if (isEffortLevel(str)) {
170473
- return str;
170474
- }
170475
- const numericValue = parseInt(str, 10);
170476
- if (!isNaN(numericValue) && isValidNumericEffort(numericValue)) {
170477
- return numericValue;
170478
- }
170479
- return;
170480
- }
170481
- function toPersistableEffort(value) {
170482
- if (value === "low" || value === "medium" || value === "high") {
170483
- return value;
170484
- }
170485
- if (value === "max" && process.env.USER_TYPE === "ant") {
170486
- return value;
170487
- }
170488
- return;
170489
- }
170490
- function getInitialEffortSetting() {
170491
- return toPersistableEffort(getInitialSettings().effortLevel);
170492
- }
170493
- function resolvePickerEffortPersistence(picked, modelDefault, priorPersisted, toggledInPicker) {
170494
- const hadExplicit = priorPersisted !== undefined || toggledInPicker;
170495
- return hadExplicit || picked !== modelDefault ? picked : undefined;
170496
- }
170497
- function getEffortEnvOverride() {
170498
- const envOverride = process.env.UR_CODE_EFFORT_LEVEL;
170499
- return envOverride?.toLowerCase() === "unset" || envOverride?.toLowerCase() === "auto" ? null : parseEffortValue(envOverride);
170500
- }
170501
- function resolveAppliedEffort(model, appStateEffortValue) {
170502
- const envOverride = getEffortEnvOverride();
170503
- if (envOverride === null) {
170504
- return;
170505
- }
170506
- const resolved = envOverride ?? appStateEffortValue ?? getDefaultEffortForModel(model);
170507
- if (resolved === "max" && !modelSupportsMaxEffort(model)) {
170508
- return "high";
170509
- }
170510
- return resolved;
170511
- }
170512
- function getDisplayedEffortLevel(model, appStateEffort) {
170513
- const resolved = resolveAppliedEffort(model, appStateEffort) ?? "high";
170514
- return convertEffortValueToLevel(resolved);
170515
- }
170516
- function getEffortSuffix(model, effortValue) {
170517
- if (effortValue === undefined)
170518
- return "";
170519
- const resolved = resolveAppliedEffort(model, effortValue);
170520
- if (resolved === undefined)
170521
- return "";
170522
- return ` with ${convertEffortValueToLevel(resolved)} effort`;
170523
- }
170524
- function isValidNumericEffort(value) {
170525
- return Number.isInteger(value);
170526
- }
170527
- function convertEffortValueToLevel(value) {
170528
- if (typeof value === "string") {
170529
- return isEffortLevel(value) ? value : "high";
170530
- }
170531
- if (process.env.USER_TYPE === "ant" && typeof value === "number") {
170532
- if (value <= 50)
170533
- return "low";
170534
- if (value <= 85)
170535
- return "medium";
170536
- if (value <= 100)
170537
- return "high";
170538
- return "max";
170539
- }
170540
- return "high";
170541
- }
170542
- function getEffortLevelDescription(level) {
170543
- switch (level) {
170544
- case "low":
170545
- return "Quick, straightforward implementation with minimal overhead";
170546
- case "medium":
170547
- return "Balanced approach with standard implementation and testing";
170548
- case "high":
170549
- return "Comprehensive implementation with extensive testing and documentation";
170550
- case "max":
170551
- return "Maximum capability with deepest reasoning";
170552
- }
170553
- }
170554
- function getEffortValueDescription(value) {
170555
- if (process.env.USER_TYPE === "ant" && typeof value === "number") {
170556
- return `[ANT-ONLY] Numeric effort value of ${value}`;
170557
- }
170558
- if (typeof value === "string") {
170559
- return getEffortLevelDescription(value);
170560
- }
170561
- return "Balanced approach with standard implementation and testing";
170562
- }
170563
- function getmodelODefaultEffortConfig() {
170564
- const config3 = getFeatureValue_CACHED_MAY_BE_STALE("tengu_grey_step2", MODELO_DEFAULT_EFFORT_CONFIG_DEFAULT);
170565
- return {
170566
- ...MODELO_DEFAULT_EFFORT_CONFIG_DEFAULT,
170567
- ...config3
170568
- };
170569
- }
170570
- function getDefaultEffortForModel(model) {
170571
- if (process.env.USER_TYPE === "ant") {
170572
- const config3 = getAntModelOverrideConfig();
170573
- const isDefaultModel = config3?.defaultModel !== undefined && model.toLowerCase() === config3.defaultModel.toLowerCase();
170574
- if (isDefaultModel && config3?.defaultModelEffortLevel) {
170575
- return config3.defaultModelEffortLevel;
170576
- }
170577
- const antModel = resolveAntModel(model);
170578
- if (antModel) {
170579
- if (antModel.defaultEffortLevel) {
170580
- return antModel.defaultEffortLevel;
170581
- }
170582
- if (antModel.defaultEffortValue !== undefined) {
170583
- return antModel.defaultEffortValue;
170584
- }
170585
- }
170586
- return;
170587
- }
170588
- if (modelSupportsEffort(model)) {
170589
- if (isProSubscriber()) {
170590
- return "medium";
170591
- }
170592
- if (getmodelODefaultEffortConfig().enabled && (isMaxSubscriber() || isTeamSubscriber())) {
170593
- return "medium";
170594
- }
170595
- }
170596
- if (isUltrathinkEnabled() && modelSupportsEffort(model)) {
170597
- return "medium";
170598
- }
170599
- return;
170600
- }
170601
- var EFFORT_LEVELS, MODELO_DEFAULT_EFFORT_CONFIG_DEFAULT;
170602
- var init_effort = __esm(() => {
170603
- init_thinking();
170604
- init_settings2();
170605
- init_auth();
170606
- init_growthbook();
170607
- init_providers();
170608
- init_modelSupportOverrides();
170609
- init_envUtils();
170610
- init_antModels();
170611
- EFFORT_LEVELS = [
170612
- "low",
170613
- "medium",
170614
- "high",
170615
- "max"
170616
- ];
170617
- MODELO_DEFAULT_EFFORT_CONFIG_DEFAULT = {
170618
- enabled: true,
170619
- dialogTitle: "We recommend medium effort for modelO",
170620
- dialogDescription: "Effort determines how long UR thinks for when completing your task. We recommend medium effort for most tasks to balance speed and intelligence and maximize rate limits. Use ultrathink to trigger high effort when needed."
170621
- };
170622
- });
170623
-
170624
170711
  // src/utils/dxt/mcpbCompat.ts
170625
170712
  var exports_mcpbCompat = {};
170626
170713
  __export(exports_mcpbCompat, {
@@ -184643,7 +184730,7 @@ var init_projectSafety = __esm(() => {
184643
184730
  function getInstruments() {
184644
184731
  if (instruments)
184645
184732
  return instruments;
184646
- const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.81.0");
184733
+ const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.81.2");
184647
184734
  instruments = {
184648
184735
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
184649
184736
  description: "GenAI operation duration.",
@@ -184741,7 +184828,7 @@ function genAiAgentAttributes() {
184741
184828
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
184742
184829
  "gen_ai.provider.name": "ur",
184743
184830
  "gen_ai.agent.name": "UR-Nexus",
184744
- "gen_ai.agent.version": "1.81.0"
184831
+ "gen_ai.agent.version": "1.81.2"
184745
184832
  };
184746
184833
  }
184747
184834
  function genAiWorkflowAttributes(workflowName, workflowRunId) {
@@ -184762,7 +184849,7 @@ function genAiWorkflowAttributes(workflowName, workflowRunId) {
184762
184849
  function startGenAiWorkflowSpan(workflowName, workflowRunId) {
184763
184850
  const attributes = genAiWorkflowAttributes(workflowName, workflowRunId);
184764
184851
  const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
184765
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.0").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
184852
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.2").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
184766
184853
  }
184767
184854
  function endGenAiWorkflowSpan(span, options2 = {}) {
184768
184855
  try {
@@ -184800,7 +184887,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
184800
184887
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
184801
184888
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
184802
184889
  }
184803
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.0").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
184890
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.2").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
184804
184891
  }
184805
184892
  function endGenAiMemorySpan(span, options2 = {}) {
184806
184893
  try {
@@ -187876,7 +187963,7 @@ class Verifier {
187876
187963
  this.maxRejections = options2.maxRejectionsPerTurn ?? DEFAULT_MAX_REJECTIONS_PER_TURN;
187877
187964
  this.loops = new LoopDetector(options2.repeatThreshold);
187878
187965
  this.configPromise = loadVerifyConfig(options2.cwd);
187879
- this.pluginValidatorsPromise = loadPluginValidators();
187966
+ this.pluginValidatorsPromise = options2.pluginValidators === undefined ? loadPluginValidators() : Promise.resolve(options2.pluginValidators);
187880
187967
  this.mode = resolveMode(options2.mode);
187881
187968
  this.askBeforeGatesOverride = options2.askBeforeGates;
187882
187969
  this.getActionableTasks = options2.getActionableTasks ?? (async () => {
@@ -278515,7 +278602,7 @@ function getTelemetryAttributes() {
278515
278602
  attributes["session.id"] = sessionId;
278516
278603
  }
278517
278604
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
278518
- attributes["app.version"] = "1.81.0";
278605
+ attributes["app.version"] = "1.81.2";
278519
278606
  }
278520
278607
  const oauthAccount = getOauthAccountInfo();
278521
278608
  if (oauthAccount) {
@@ -319919,7 +320006,7 @@ function getInstallationEnv() {
319919
320006
  return;
319920
320007
  }
319921
320008
  function getURCodeVersion() {
319922
- return "1.81.0";
320009
+ return "1.81.2";
319923
320010
  }
319924
320011
  async function getInstalledVSCodeExtensionVersion(command) {
319925
320012
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -327289,7 +327376,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
327289
327376
  const client2 = new Client({
327290
327377
  name: "ur",
327291
327378
  title: "UR",
327292
- version: "1.81.0",
327379
+ version: "1.81.2",
327293
327380
  description: "UR-Nexus autonomous engineering workflow engine",
327294
327381
  websiteUrl: PRODUCT_URL
327295
327382
  }, {
@@ -327650,7 +327737,7 @@ var init_client5 = __esm(() => {
327650
327737
  const client2 = new Client({
327651
327738
  name: "ur",
327652
327739
  title: "UR",
327653
- version: "1.81.0",
327740
+ version: "1.81.2",
327654
327741
  description: "UR-Nexus autonomous engineering workflow engine",
327655
327742
  websiteUrl: PRODUCT_URL
327656
327743
  }, {
@@ -340423,7 +340510,7 @@ async function createRuntime() {
340423
340510
  bootstrapTelemetry();
340424
340511
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
340425
340512
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
340426
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.81.0"
340513
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.81.2"
340427
340514
  }));
340428
340515
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
340429
340516
  resource,
@@ -340456,11 +340543,11 @@ async function createRuntime() {
340456
340543
  setMeterProvider(meterProvider);
340457
340544
  setLoggerProvider(loggerProvider);
340458
340545
  if (meterProvider) {
340459
- const meter = meterProvider.getMeter("ur-agent", "1.81.0");
340546
+ const meter = meterProvider.getMeter("ur-agent", "1.81.2");
340460
340547
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
340461
340548
  }
340462
340549
  if (loggerProvider) {
340463
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.81.0"));
340550
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.81.2"));
340464
340551
  }
340465
340552
  if (!cleanupRegistered3) {
340466
340553
  cleanupRegistered3 = true;
@@ -341122,9 +341209,9 @@ async function assertMinVersion() {
341122
341209
  if (false) {}
341123
341210
  try {
341124
341211
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
341125
- if (versionConfig.minVersion && lt("1.81.0", versionConfig.minVersion)) {
341212
+ if (versionConfig.minVersion && lt("1.81.2", versionConfig.minVersion)) {
341126
341213
  console.error(`
341127
- It looks like your version of UR (${"1.81.0"}) needs an update.
341214
+ It looks like your version of UR (${"1.81.2"}) needs an update.
341128
341215
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
341129
341216
 
341130
341217
  To update, please run:
@@ -341340,7 +341427,7 @@ async function installGlobalPackage(specificVersion) {
341340
341427
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
341341
341428
  logEvent("tengu_auto_updater_lock_contention", {
341342
341429
  pid: process.pid,
341343
- currentVersion: "1.81.0"
341430
+ currentVersion: "1.81.2"
341344
341431
  });
341345
341432
  return "in_progress";
341346
341433
  }
@@ -341349,7 +341436,7 @@ async function installGlobalPackage(specificVersion) {
341349
341436
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
341350
341437
  logError2(new Error("Windows NPM detected in WSL environment"));
341351
341438
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
341352
- currentVersion: "1.81.0"
341439
+ currentVersion: "1.81.2"
341353
341440
  });
341354
341441
  console.error(`
341355
341442
  Error: Windows NPM detected in WSL
@@ -341884,7 +341971,7 @@ function detectLinuxGlobPatternWarnings() {
341884
341971
  }
341885
341972
  async function getDoctorDiagnostic() {
341886
341973
  const installationType = await getCurrentInstallationType();
341887
- const version2 = typeof MACRO !== "undefined" ? "1.81.0" : "unknown";
341974
+ const version2 = typeof MACRO !== "undefined" ? "1.81.2" : "unknown";
341888
341975
  const installationPath = await getInstallationPath();
341889
341976
  const invokedBinary = getInvokedBinary();
341890
341977
  const multipleInstallations = await detectMultipleInstallations();
@@ -342819,8 +342906,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
342819
342906
  const maxVersion = await getMaxVersion();
342820
342907
  if (maxVersion && gt(version2, maxVersion)) {
342821
342908
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
342822
- if (gte("1.81.0", maxVersion)) {
342823
- logForDebugging(`Native installer: current version ${"1.81.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
342909
+ if (gte("1.81.2", maxVersion)) {
342910
+ logForDebugging(`Native installer: current version ${"1.81.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
342824
342911
  logEvent("tengu_native_update_skipped_max_version", {
342825
342912
  latency_ms: Date.now() - startTime,
342826
342913
  max_version: maxVersion,
@@ -342831,7 +342918,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
342831
342918
  version2 = maxVersion;
342832
342919
  }
342833
342920
  }
342834
- if (!forceReinstall && version2 === "1.81.0" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
342921
+ if (!forceReinstall && version2 === "1.81.2" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
342835
342922
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
342836
342923
  logEvent("tengu_native_update_complete", {
342837
342924
  latency_ms: Date.now() - startTime,
@@ -351636,7 +351723,8 @@ function SpinnerWithVerbInner({
351636
351723
  };
351637
351724
  }, [mode]);
351638
351725
  const effortValue = useAppState((s_4) => s_4.effortValue);
351639
- const effortSuffix = getEffortSuffix(getMainLoopModel(), effortValue);
351726
+ const effortProvider = useAppState((s_4) => s_4.provider.active);
351727
+ const effortSuffix = getEffortSuffix(getMainLoopModel(), effortValue, effortProvider);
351640
351728
  const runningTeammates = getAllInProcessTeammateTasks(tasks).filter((t) => t.status === "running");
351641
351729
  const hasRunningTeammates = runningTeammates.length > 0;
351642
351730
  const allIdle = hasRunningTeammates && runningTeammates.every((t_0) => t_0.isIdle);
@@ -392681,9 +392769,10 @@ function checkRepeatedFailure(signature, config3 = REPEATED_FAILURE_DEFAULTS) {
392681
392769
  };
392682
392770
  }
392683
392771
  if (failures >= config3.limit) {
392772
+ const recoveryHint = config3.recoveryHint ? ` ${config3.recoveryHint.trim()}` : "";
392684
392773
  return {
392685
392774
  action: "refuse",
392686
- reason: `This exact call has already failed ${failures} times with the same ` + `arguments, so it will fail again. Do not retry it unchanged. Either ` + `fix the arguments, use a different tool, or tell the user what is ` + `blocking you and stop.`
392775
+ reason: `This exact call has already failed ${failures} times with the same ` + `arguments, so it will fail again. Do not retry it unchanged. Either ` + `fix the arguments, use a different tool, or tell the user what is ` + `blocking you and stop.${recoveryHint}`
392687
392776
  };
392688
392777
  }
392689
392778
  return { action: "allow" };
@@ -396500,7 +396589,8 @@ var init_WebSearchTool = __esm(() => {
396500
396589
  agents: context5.options.agentDefinitions.activeAgents,
396501
396590
  mcpTools: [],
396502
396591
  agentId: context5.agentId,
396503
- effortValue: appState.effortValue
396592
+ effortValue: appState.effortValue,
396593
+ providerSettings: appState.provider
396504
396594
  }
396505
396595
  });
396506
396596
  const allContentBlocks = [];
@@ -413507,7 +413597,7 @@ function isAnyTracingEnabled() {
413507
413597
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
413508
413598
  }
413509
413599
  function getTracer() {
413510
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.81.0");
413600
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.81.2");
413511
413601
  }
413512
413602
  function createSpanAttributes(spanType, customAttributes = {}) {
413513
413603
  const baseAttributes = getTelemetryAttributes();
@@ -414906,6 +414996,9 @@ var init_toolHooks = __esm(() => {
414906
414996
  });
414907
414997
 
414908
414998
  // src/services/tools/toolExecution.ts
414999
+ function getToolRepeatedFailurePolicy(toolName) {
415000
+ return toolName === FILE_EDIT_TOOL_NAME || toolName === FILE_WRITE_TOOL_NAME || toolName === NOTEBOOK_EDIT_TOOL_NAME ? CODE_EDIT_REPEAT_POLICY : REPEATED_FAILURE_DEFAULTS;
415001
+ }
414909
415002
  function countToolCalls(messages, excludedMessageId) {
414910
415003
  if (!Array.isArray(messages))
414911
415004
  return 0;
@@ -415310,7 +415403,7 @@ async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContex
415310
415403
  }
415311
415404
  }
415312
415405
  let callSig = callSignature(tool.name, input, repeatedFailureScope(toolUseContext, messageId));
415313
- const repeat2 = checkRepeatedFailure(callSig);
415406
+ const repeat2 = checkRepeatedFailure(callSig, getToolRepeatedFailurePolicy(tool.name));
415314
415407
  if (repeat2.action !== "allow") {
415315
415408
  logEvent("tengu_repeated_failure_guard", {
415316
415409
  toolName: sanitizeToolNameForAnalytics(tool.name),
@@ -416214,7 +416307,7 @@ async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContex
416214
416307
  }
416215
416308
  }
416216
416309
  }
416217
- var UNKNOWN_TOOL_REPEAT_POLICY, HOOK_TIMING_DISPLAY_THRESHOLD_MS2 = 500, SLOW_PHASE_LOG_THRESHOLD_MS = 2000;
416310
+ var UNKNOWN_TOOL_REPEAT_POLICY, CODE_EDIT_REPEAT_POLICY, HOOK_TIMING_DISPLAY_THRESHOLD_MS2 = 500, SLOW_PHASE_LOG_THRESHOLD_MS = 2000;
416218
416311
  var init_toolExecution = __esm(() => {
416219
416312
  init_analytics();
416220
416313
  init_metadata();
@@ -416261,6 +416354,12 @@ var init_toolExecution = __esm(() => {
416261
416354
  limit: 1,
416262
416355
  abortAfter: 3
416263
416356
  };
416357
+ CODE_EDIT_REPEAT_POLICY = {
416358
+ enabled: true,
416359
+ limit: 2,
416360
+ abortAfter: 3,
416361
+ recoveryHint: "Read the current target again, then rebuild the edit from the exact current content and use a unique anchor (or replace_all only when every match is intended)."
416362
+ };
416264
416363
  });
416265
416364
 
416266
416365
  // src/services/tools/StreamingToolExecutor.ts
@@ -418501,6 +418600,7 @@ async function* queryLoop(params, consumedCommandUuids, ownedRepeatedFailureQuer
418501
418600
  hasPendingMcpServers: appState.mcp.clients.some((c4) => c4.type === "pending"),
418502
418601
  queryTracking,
418503
418602
  effortValue: appState.effortValue,
418603
+ providerSettings: appState.provider,
418504
418604
  advisorModel: appState.advisorModel,
418505
418605
  skipCacheWrite,
418506
418606
  agentId: toolUseContext.agentId,
@@ -420993,7 +421093,8 @@ async function streamCompactSummary({
420993
421093
  querySource: "compact",
420994
421094
  agents: context5.options.agentDefinitions.activeAgents,
420995
421095
  mcpTools: [],
420996
- effortValue: appState.effortValue
421096
+ effortValue: appState.effortValue,
421097
+ providerSettings: appState.provider
420997
421098
  }
420998
421099
  });
420999
421100
  const streamIter = streamingGen[Symbol.asyncIterator]();
@@ -443655,7 +443756,7 @@ function Feedback({
443655
443756
  platform: env2.platform,
443656
443757
  gitRepo: envInfo.isGit,
443657
443758
  terminal: env2.terminal,
443658
- version: "1.81.0",
443759
+ version: "1.81.2",
443659
443760
  transcript: normalizeMessagesForAPI(messages),
443660
443761
  errors: sanitizedErrors,
443661
443762
  lastApiRequest: getLastAPIRequest(),
@@ -443847,7 +443948,7 @@ function Feedback({
443847
443948
  ", ",
443848
443949
  env2.terminal,
443849
443950
  ", v",
443850
- "1.81.0"
443951
+ "1.81.2"
443851
443952
  ]
443852
443953
  }, undefined, true, undefined, this)
443853
443954
  ]
@@ -443953,7 +444054,7 @@ ${sanitizedDescription}
443953
444054
  ` + `**Environment Info**
443954
444055
  ` + `- Platform: ${env2.platform}
443955
444056
  ` + `- Terminal: ${env2.terminal}
443956
- ` + `- Version: ${"1.81.0"}
444057
+ ` + `- Version: ${"1.81.2"}
443957
444058
  ` + `- Feedback ID: ${feedbackId}
443958
444059
  ` + `
443959
444060
  **Errors**
@@ -447063,7 +447164,7 @@ function buildPrimarySection() {
447063
447164
  }, undefined, false, undefined, this);
447064
447165
  return [{
447065
447166
  label: "Version",
447066
- value: "1.81.0"
447167
+ value: "1.81.2"
447067
447168
  }, {
447068
447169
  label: "Session name",
447069
447170
  value: nameValue
@@ -447830,10 +447931,10 @@ var init_ThemePicker = __esm(() => {
447830
447931
  });
447831
447932
 
447832
447933
  // src/components/EffortIndicator.ts
447833
- function getEffortNotificationText(effortValue, model) {
447834
- if (!modelSupportsEffort(model))
447934
+ function getEffortNotificationText(effortValue, model, provider) {
447935
+ if (!modelSupportsEffort(model, provider))
447835
447936
  return;
447836
- const level = getDisplayedEffortLevel(model, effortValue);
447937
+ const level = getDisplayedEffortLevel(model, effortValue, provider);
447837
447938
  return `${effortLevelToSymbol(level)} ${level} \xB7 /effort`;
447838
447939
  }
447839
447940
  function effortLevelToSymbol(level) {
@@ -450445,7 +450546,7 @@ function Config({
450445
450546
  }
450446
450547
  }, undefined, false, undefined, this)
450447
450548
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
450448
- currentVersion: "1.81.0",
450549
+ currentVersion: "1.81.2",
450449
450550
  onChoice: (choice) => {
450450
450551
  setShowSubmenu(null);
450451
450552
  setTabsHidden(false);
@@ -450457,7 +450558,7 @@ function Config({
450457
450558
  autoUpdatesChannel: "stable"
450458
450559
  };
450459
450560
  if (choice === "stay") {
450460
- newSettings.minimumVersion = "1.81.0";
450561
+ newSettings.minimumVersion = "1.81.2";
450461
450562
  }
450462
450563
  updateSettingsForSource("userSettings", newSettings);
450463
450564
  setSettingsData((prev_27) => ({
@@ -458766,7 +458867,7 @@ function HelpV2(t0) {
458766
458867
  let t6;
458767
458868
  if ($2[31] !== tabs) {
458768
458869
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
458769
- title: `UR v${"1.81.0"}`,
458870
+ title: `UR v${"1.81.2"}`,
458770
458871
  color: "professionalBlue",
458771
458872
  defaultTab: "general",
458772
458873
  children: tabs
@@ -459699,7 +459800,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
459699
459800
  async function handleInitialize(options2) {
459700
459801
  return {
459701
459802
  name: "UR",
459702
- version: "1.81.0",
459803
+ version: "1.81.2",
459703
459804
  protocolVersion: "0.1.0",
459704
459805
  workspaceRoot: options2.cwd,
459705
459806
  capabilities: {
@@ -476807,7 +476908,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
476807
476908
  return [];
476808
476909
  }
476809
476910
  }
476810
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.0") {
476911
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.2") {
476811
476912
  if (process.env.USER_TYPE === "ant") {
476812
476913
  const changelog = "";
476813
476914
  if (changelog) {
@@ -476834,7 +476935,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.0")
476834
476935
  releaseNotes
476835
476936
  };
476836
476937
  }
476837
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.81.0") {
476938
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.81.2") {
476838
476939
  if (process.env.USER_TYPE === "ant") {
476839
476940
  const changelog = "";
476840
476941
  if (changelog) {
@@ -479739,7 +479840,7 @@ function getRecentActivitySync() {
479739
479840
  return cachedActivity;
479740
479841
  }
479741
479842
  function getLogoDisplayData() {
479742
- const version2 = process.env.DEMO_VERSION ?? "1.81.0";
479843
+ const version2 = process.env.DEMO_VERSION ?? "1.81.2";
479743
479844
  const serverUrl = getDirectConnectServerUrl();
479744
479845
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
479745
479846
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -479814,33 +479915,55 @@ var init_logoV2Utils = __esm(() => {
479814
479915
 
479815
479916
  // src/components/LogoV2/URBanner.tsx
479816
479917
  function URBanner() {
479918
+ if (isScreenReaderMode()) {
479919
+ return /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
479920
+ children: "UR \u2014 the autonomous agent"
479921
+ }, undefined, false, undefined, this);
479922
+ }
479817
479923
  return /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedBox_default, {
479818
479924
  flexDirection: "column",
479819
479925
  alignItems: "center",
479820
479926
  children: [
479821
- ROWS.map((row, i3) => /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
479927
+ UR_WORDMARK_ROWS.map((row, i3) => /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
479822
479928
  color: "ur",
479823
479929
  bold: true,
479824
479930
  children: row
479825
479931
  }, i3, false, undefined, this)),
479826
479932
  /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
479827
- color: "ur",
479828
- dimColor: true,
479829
- children: "the autonomous agent"
479830
- }, undefined, false, undefined, this)
479933
+ children: [
479934
+ /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
479935
+ color: "ur",
479936
+ children: "\u25C6"
479937
+ }, undefined, false, undefined, this),
479938
+ /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
479939
+ dimColor: true,
479940
+ children: [
479941
+ " ",
479942
+ UR_WORDMARK_TAGLINE,
479943
+ " "
479944
+ ]
479945
+ }, undefined, true, undefined, this),
479946
+ /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
479947
+ color: "ur",
479948
+ children: "\u25C6"
479949
+ }, undefined, false, undefined, this)
479950
+ ]
479951
+ }, undefined, true, undefined, this)
479831
479952
  ]
479832
479953
  }, undefined, true, undefined, this);
479833
479954
  }
479834
- var jsx_dev_runtime233, ROWS;
479955
+ var jsx_dev_runtime233, UR_WORDMARK_ROWS, UR_WORDMARK_TAGLINE = "THE AUTONOMOUS AGENT";
479835
479956
  var init_URBanner = __esm(() => {
479836
479957
  init_ink2();
479958
+ init_screenReader();
479837
479959
  jsx_dev_runtime233 = __toESM(require_jsx_dev_runtime(), 1);
479838
- ROWS = [
479839
- "\u2588 \u2588 \u2588\u2588\u2588\u2588 ",
479840
- "\u2588 \u2588 \u2588 \u2588",
479841
- "\u2588 \u2588 \u2588\u2588\u2588\u2588 ",
479842
- "\u2588 \u2588 \u2588 \u2588 ",
479843
- " \u2588\u2588\u2588 \u2588 \u2588"
479960
+ UR_WORDMARK_ROWS = [
479961
+ "\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 ",
479962
+ "\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557",
479963
+ "\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D",
479964
+ "\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557",
479965
+ "\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551 \u2588\u2588\u2551",
479966
+ " \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D"
479844
479967
  ];
479845
479968
  });
479846
479969
 
@@ -480158,6 +480281,7 @@ function CondensedLogo() {
480158
480281
  } = useTerminalSize();
480159
480282
  const agent = useAppState(_temp104);
480160
480283
  const effortValue = useAppState(_temp240);
480284
+ const effortProvider = useAppState((s) => s.provider.active);
480161
480285
  const model = useMainLoopModel();
480162
480286
  const modelDisplayName = renderModelSetting(model);
480163
480287
  const {
@@ -480210,7 +480334,7 @@ function CondensedLogo() {
480210
480334
  textWidth
480211
480335
  } = getCondensedLogoLayout(columns);
480212
480336
  const truncatedVersion = truncate3(version2, Math.max(textWidth - 4, 1));
480213
- const effortSuffix = getEffortSuffix(model, effortValue);
480337
+ const effortSuffix = getEffortSuffix(model, effortValue, effortProvider);
480214
480338
  const {
480215
480339
  shouldSplit,
480216
480340
  truncatedModel,
@@ -480586,6 +480710,7 @@ function LogoV2() {
480586
480710
  const showOverageCreditUpsell = useShowOverageCreditUpsell();
480587
480711
  const agent = useAppState(_temp107);
480588
480712
  const effortValue = useAppState(_temp241);
480713
+ const effortProvider = useAppState((s) => s.provider.active);
480589
480714
  const config4 = getGlobalConfig();
480590
480715
  let changelog;
480591
480716
  try {
@@ -480607,7 +480732,7 @@ function LogoV2() {
480607
480732
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
480608
480733
  t2 = () => {
480609
480734
  const currentConfig = getGlobalConfig();
480610
- if (currentConfig.lastReleaseNotesSeen === "1.81.0") {
480735
+ if (currentConfig.lastReleaseNotesSeen === "1.81.2") {
480611
480736
  return;
480612
480737
  }
480613
480738
  saveGlobalConfig(_temp325);
@@ -480680,7 +480805,7 @@ function LogoV2() {
480680
480805
  agentName: agentNameFromSettings
480681
480806
  } = getLogoDisplayData();
480682
480807
  const agentName = agent ?? agentNameFromSettings;
480683
- const effortSuffix = getEffortSuffix(model, effortValue);
480808
+ const effortSuffix = getEffortSuffix(model, effortValue, effortProvider);
480684
480809
  const t9 = fullModelDisplayName + effortSuffix;
480685
480810
  let t10;
480686
480811
  if ($2[13] !== t9) {
@@ -481292,12 +481417,12 @@ function LogoV2() {
481292
481417
  return t41;
481293
481418
  }
481294
481419
  function _temp325(current) {
481295
- if (current.lastReleaseNotesSeen === "1.81.0") {
481420
+ if (current.lastReleaseNotesSeen === "1.81.2") {
481296
481421
  return current;
481297
481422
  }
481298
481423
  return {
481299
481424
  ...current,
481300
- lastReleaseNotesSeen: "1.81.0"
481425
+ lastReleaseNotesSeen: "1.81.2"
481301
481426
  };
481302
481427
  }
481303
481428
  function _temp241(s_0) {
@@ -497247,7 +497372,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
497247
497372
  if (spec.name !== specName) {
497248
497373
  throw new Error("Agentic CI workflow spec name does not match");
497249
497374
  }
497250
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.0" : "1.81.0");
497375
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.2" : "1.81.2");
497251
497376
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
497252
497377
  throw new Error("invalid ur-agent package version");
497253
497378
  }
@@ -498240,7 +498365,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
498240
498365
  path: ".github/workflows/ur.yml",
498241
498366
  root: "project",
498242
498367
  content: compileAgenticCiWorkflow("default", {
498243
- packageVersion: typeof MACRO !== "undefined" ? "1.81.0" : "1.81.0"
498368
+ packageVersion: typeof MACRO !== "undefined" ? "1.81.2" : "1.81.2"
498244
498369
  })
498245
498370
  },
498246
498371
  {
@@ -498303,7 +498428,7 @@ function value(tokens, flag) {
498303
498428
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
498304
498429
  }
498305
498430
  function cliVersion() {
498306
- return typeof MACRO !== "undefined" ? "1.81.0" : "1.81.0";
498431
+ return typeof MACRO !== "undefined" ? "1.81.2" : "1.81.2";
498307
498432
  }
498308
498433
  function workflowPath(cwd2) {
498309
498434
  return join168(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -504159,7 +504284,7 @@ function createAcpStdioApp(deps) {
504159
504284
  }
504160
504285
  },
504161
504286
  authMethods: [],
504162
- agentInfo: { name: "UR-Nexus", version: "1.81.0" }
504287
+ agentInfo: { name: "UR-Nexus", version: "1.81.2" }
504163
504288
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
504164
504289
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
504165
504290
  await runtime2.announce({
@@ -504256,7 +504381,7 @@ function createAcpStdioAgent(deps) {
504256
504381
  }
504257
504382
  },
504258
504383
  authMethods: [],
504259
- agentInfo: { name: "UR-Nexus", version: "1.81.0" }
504384
+ agentInfo: { name: "UR-Nexus", version: "1.81.2" }
504260
504385
  });
504261
504386
  return;
504262
504387
  case "authenticate":
@@ -715508,7 +715633,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
715508
715633
  smapsRollup,
715509
715634
  platform: process.platform,
715510
715635
  nodeVersion: process.version,
715511
- ccVersion: "1.81.0"
715636
+ ccVersion: "1.81.2"
715512
715637
  };
715513
715638
  }
715514
715639
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -716097,7 +716222,7 @@ var init_bridge_kick = __esm(() => {
716097
716222
  var call154 = async () => {
716098
716223
  return {
716099
716224
  type: "text",
716100
- value: "1.81.0"
716225
+ value: "1.81.2"
716101
716226
  };
716102
716227
  }, version2, version_default;
716103
716228
  var init_version = __esm(() => {
@@ -719892,13 +720017,15 @@ function ModelPickerWrapper(t0) {
719892
720017
  setAppState((prev) => ({
719893
720018
  ...prev,
719894
720019
  mainLoopModel: model,
719895
- mainLoopModelForSession: null
720020
+ mainLoopModelForSession: null,
720021
+ ...model && metadata ? {
720022
+ provider: {
720023
+ ...prev.provider,
720024
+ active: metadata.providerId,
720025
+ model
720026
+ }
720027
+ } : {}
719896
720028
  }));
719897
- if (model && metadata) {
719898
- setProviderModel(metadata.providerId, model, {
719899
- modelSource: metadata.modelSource
719900
- });
719901
- }
719902
720029
  let message = metadata ? `Selected provider: ${source_default.bold(metadata.providerName)} (${metadata.accessType})
719903
720030
  Selected model: ${source_default.bold(renderModelLabel(model))}
719904
720031
  Model source: ${metadata.modelSource}
@@ -721771,7 +721898,7 @@ __export(exports_effort, {
721771
721898
  executeEffort: () => executeEffort,
721772
721899
  call: () => call168
721773
721900
  });
721774
- function setEffortValue(effortValue) {
721901
+ function setEffortValue(effortValue, model) {
721775
721902
  const persistable = toPersistableEffort(effortValue);
721776
721903
  if (persistable !== undefined) {
721777
721904
  const result = updateSettingsForSource("userSettings", {
@@ -721806,6 +721933,15 @@ function setEffortValue(effortValue) {
721806
721933
  }
721807
721934
  const description = getEffortValueDescription(effortValue);
721808
721935
  const suffix = persistable !== undefined ? "" : " (this session only)";
721936
+ const appliedLevel = model ? getDisplayedEffortLevel(model, effortValue) : effortValue;
721937
+ if (typeof effortValue === "string" && appliedLevel !== effortValue) {
721938
+ return {
721939
+ message: `Requested effort level ${effortValue}${suffix}, but ${model} advertises up to ${appliedLevel}; applied ${appliedLevel}: ${getEffortValueDescription(appliedLevel)}`,
721940
+ effortUpdate: {
721941
+ value: effortValue
721942
+ }
721943
+ };
721944
+ }
721809
721945
  return {
721810
721946
  message: `Set effort level to ${effortValue}${suffix}: ${description}`,
721811
721947
  effortUpdate: {
@@ -721822,6 +721958,12 @@ function showCurrentEffort(appStateEffort, model) {
721822
721958
  message: `Effort level: auto (currently ${level})`
721823
721959
  };
721824
721960
  }
721961
+ const appliedLevel = getDisplayedEffortLevel(model, appStateEffort);
721962
+ if (typeof effectiveValue === "string" && appliedLevel !== effectiveValue) {
721963
+ return {
721964
+ message: `Requested effort: ${effectiveValue}; applied effort for ${model}: ${appliedLevel} (${getEffortValueDescription(appliedLevel)})`
721965
+ };
721966
+ }
721825
721967
  const description = getEffortValueDescription(effectiveValue);
721826
721968
  return {
721827
721969
  message: `Current effort level: ${effectiveValue} (${description})`
@@ -721856,7 +721998,7 @@ function unsetEffortLevel() {
721856
721998
  }
721857
721999
  };
721858
722000
  }
721859
- function executeEffort(args) {
722001
+ function executeEffort(args, model) {
721860
722002
  const normalized = args.toLowerCase();
721861
722003
  if (normalized === "auto" || normalized === "unset") {
721862
722004
  return unsetEffortLevel();
@@ -721866,7 +722008,7 @@ function executeEffort(args) {
721866
722008
  message: `Invalid argument: ${args}. Valid options are: low, medium, high, max, auto`
721867
722009
  };
721868
722010
  }
721869
- return setEffortValue(normalized);
722011
+ return setEffortValue(normalized, model);
721870
722012
  }
721871
722013
  function ShowCurrentEffort(t0) {
721872
722014
  const {
@@ -721938,7 +722080,14 @@ Effort levels:
721938
722080
  onDone
721939
722081
  }, undefined, false, undefined, this);
721940
722082
  }
721941
- const result = executeEffort(args);
722083
+ const model = getMainLoopModel();
722084
+ const runtimeProvider = getRuntimeProvider();
722085
+ if (args.toLowerCase() === "max" && runtimeProvider === "openrouter" && !getProviderReasoningCapabilitiesForModel(model, runtimeProvider)) {
722086
+ await ensureProviderModelsFresh(runtimeProvider).catch(() => {
722087
+ return;
722088
+ });
722089
+ }
722090
+ const result = executeEffort(args, model);
721942
722091
  return /* @__PURE__ */ jsx_dev_runtime345.jsxDEV(ApplyEffortAndClose, {
721943
722092
  result,
721944
722093
  onDone
@@ -721950,6 +722099,9 @@ var init_effort2 = __esm(() => {
721950
722099
  init_analytics();
721951
722100
  init_AppState();
721952
722101
  init_effort();
722102
+ init_providerRegistry();
722103
+ init_model();
722104
+ init_providers();
721953
722105
  init_settings2();
721954
722106
  import_compiler_runtime251 = __toESM(require_compiler_runtime(), 1);
721955
722107
  React105 = __toESM(require_react(), 1);
@@ -727340,7 +727492,7 @@ function generateHtmlReport(data, insights) {
727340
727492
  </html>`;
727341
727493
  }
727342
727494
  function buildExportData(data, insights, facets, remoteStats) {
727343
- const version3 = typeof MACRO !== "undefined" ? "1.81.0" : "unknown";
727495
+ const version3 = typeof MACRO !== "undefined" ? "1.81.2" : "unknown";
727344
727496
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
727345
727497
  const facets_summary = {
727346
727498
  total: facets.size,
@@ -731653,7 +731805,7 @@ var init_sessionStorage = __esm(() => {
731653
731805
  init_settings2();
731654
731806
  init_slowOperations();
731655
731807
  init_uuid();
731656
- VERSION7 = typeof MACRO !== "undefined" ? "1.81.0" : "unknown";
731808
+ VERSION7 = typeof MACRO !== "undefined" ? "1.81.2" : "unknown";
731657
731809
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
731658
731810
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
731659
731811
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -732868,7 +733020,7 @@ var init_filesystem = __esm(() => {
732868
733020
  });
732869
733021
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
732870
733022
  const nonce = randomBytes24(16).toString("hex");
732871
- return join243(getURTempDir(), "bundled-skills", "1.81.0", nonce);
733023
+ return join243(getURTempDir(), "bundled-skills", "1.81.2", nonce);
732872
733024
  });
732873
733025
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
732874
733026
  });
@@ -739268,7 +739420,7 @@ function computeFingerprint(messageText2, version3) {
739268
739420
  }
739269
739421
  function computeFingerprintFromMessages(messages) {
739270
739422
  const firstMessageText = extractFirstMessageText(messages);
739271
- return computeFingerprint(firstMessageText, "1.81.0");
739423
+ return computeFingerprint(firstMessageText, "1.81.2");
739272
739424
  }
739273
739425
  var FINGERPRINT_SALT = "59cf53e54c78";
739274
739426
  var init_fingerprint = () => {};
@@ -739681,7 +739833,8 @@ async function* executeNonStreamingRequest(clientOptions, retryOptions, paramsFr
739681
739833
  maxRetries: 0,
739682
739834
  model: clientOptions.model,
739683
739835
  fetchOverride: clientOptions.fetchOverride,
739684
- source: clientOptions.source
739836
+ source: clientOptions.source,
739837
+ providerSettings: clientOptions.providerSettings
739685
739838
  }), async (urhq, attempt, context6) => {
739686
739839
  const start = Date.now();
739687
739840
  const retryParams = paramsFromContext(context6);
@@ -739971,7 +740124,7 @@ ${deferredToolList}
739971
740124
  setThinkingClearLatched(true);
739972
740125
  }
739973
740126
  }
739974
- const effort = resolveAppliedEffort(options5.model, options5.effortValue);
740127
+ const effort = resolveAppliedEffort(options5.model, options5.effortValue, options5.providerSettings?.active);
739975
740128
  if (false) {}
739976
740129
  const newContext = isBetaTracingEnabled() || shouldCaptureGenAiContent() ? {
739977
740130
  systemPrompt: systemPrompt.join(`
@@ -740161,7 +740314,8 @@ ${deferredToolList}
740161
740314
  maxRetries: 0,
740162
740315
  model: options5.model,
740163
740316
  fetchOverride: options5.fetchOverride,
740164
- source: options5.querySource
740317
+ source: options5.querySource,
740318
+ providerSettings: options5.providerSettings
740165
740319
  }), async (urhq, attempt, context6) => {
740166
740320
  attemptNumber = attempt;
740167
740321
  isFastModeRequest = context6.fastMode ?? false;
@@ -740592,7 +740746,11 @@ ${deferredToolList}
740592
740746
  model: options5.model,
740593
740747
  fallback_cause: streamIdleAborted ? "watchdog" : "other"
740594
740748
  });
740595
- const result = yield* executeNonStreamingRequest({ model: options5.model, source: options5.querySource }, {
740749
+ const result = yield* executeNonStreamingRequest({
740750
+ model: options5.model,
740751
+ source: options5.querySource,
740752
+ providerSettings: options5.providerSettings
740753
+ }, {
740596
740754
  model: options5.model,
740597
740755
  fallbackModel: options5.fallbackModel,
740598
740756
  thinkingConfig,
@@ -740649,7 +740807,11 @@ ${deferredToolList}
740649
740807
  fallback_cause: "404_stream_creation"
740650
740808
  });
740651
740809
  try {
740652
- const result = yield* executeNonStreamingRequest({ model: options5.model, source: options5.querySource }, {
740810
+ const result = yield* executeNonStreamingRequest({
740811
+ model: options5.model,
740812
+ source: options5.querySource,
740813
+ providerSettings: options5.providerSettings
740814
+ }, {
740653
740815
  model: options5.model,
740654
740816
  fallbackModel: options5.fallbackModel,
740655
740817
  thinkingConfig,
@@ -741193,7 +741355,7 @@ async function sideQuery(opts) {
741193
741355
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
741194
741356
  }
741195
741357
  const messageText2 = extractFirstUserMessageText(messages);
741196
- const fingerprint2 = computeFingerprint(messageText2, "1.81.0");
741358
+ const fingerprint2 = computeFingerprint(messageText2, "1.81.2");
741197
741359
  const attributionHeader = getAttributionHeader(fingerprint2);
741198
741360
  const systemBlocks = [
741199
741361
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -746027,7 +746189,7 @@ function buildSystemInitMessage(inputs) {
746027
746189
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
746028
746190
  apiKeySource: getURHQApiKeyWithSource().source,
746029
746191
  betas: getSdkBetas(),
746030
- ur_version: "1.81.0",
746192
+ ur_version: "1.81.2",
746031
746193
  output_style: outputStyle,
746032
746194
  agents: inputs.agents.map((agent2) => agent2.agentType),
746033
746195
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -759863,7 +760025,7 @@ var init_useVoiceEnabled = __esm(() => {
759863
760025
  function getSemverPart(version3) {
759864
760026
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
759865
760027
  }
759866
- function useUpdateNotification(updatedVersion, initialVersion = "1.81.0") {
760028
+ function useUpdateNotification(updatedVersion, initialVersion = "1.81.2") {
759867
760029
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
759868
760030
  if (!updatedVersion) {
759869
760031
  return null;
@@ -759912,7 +760074,7 @@ function AutoUpdater({
759912
760074
  return;
759913
760075
  }
759914
760076
  if (false) {}
759915
- const currentVersion = "1.81.0";
760077
+ const currentVersion = "1.81.2";
759916
760078
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
759917
760079
  let latestVersion = await getLatestVersion(channel);
759918
760080
  const isDisabled = isAutoUpdaterDisabled();
@@ -760141,12 +760303,12 @@ function NativeAutoUpdater({
760141
760303
  logEvent("tengu_native_auto_updater_start", {});
760142
760304
  try {
760143
760305
  const maxVersion = await getMaxVersion();
760144
- if (maxVersion && gt("1.81.0", maxVersion)) {
760306
+ if (maxVersion && gt("1.81.2", maxVersion)) {
760145
760307
  const msg = await getMaxVersionMessage();
760146
760308
  setMaxVersionIssue(msg ?? "affects your version");
760147
760309
  }
760148
760310
  const result = await installLatest(channel);
760149
- const currentVersion = "1.81.0";
760311
+ const currentVersion = "1.81.2";
760150
760312
  const latencyMs = Date.now() - startTime;
760151
760313
  if (result.lockFailed) {
760152
760314
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -760283,17 +760445,17 @@ function PackageManagerAutoUpdater(t0) {
760283
760445
  const maxVersion = await getMaxVersion();
760284
760446
  if (maxVersion && latest && gt(latest, maxVersion)) {
760285
760447
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
760286
- if (gte("1.81.0", maxVersion)) {
760287
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
760448
+ if (gte("1.81.2", maxVersion)) {
760449
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
760288
760450
  setUpdateAvailable(false);
760289
760451
  return;
760290
760452
  }
760291
760453
  latest = maxVersion;
760292
760454
  }
760293
- const hasUpdate = latest && !gte("1.81.0", latest) && !shouldSkipVersion(latest);
760455
+ const hasUpdate = latest && !gte("1.81.2", latest) && !shouldSkipVersion(latest);
760294
760456
  setUpdateAvailable(!!hasUpdate);
760295
760457
  if (hasUpdate) {
760296
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.0"} -> ${latest}`);
760458
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.2"} -> ${latest}`);
760297
760459
  }
760298
760460
  };
760299
760461
  $2[0] = t1;
@@ -760327,7 +760489,7 @@ function PackageManagerAutoUpdater(t0) {
760327
760489
  wrap: "truncate",
760328
760490
  children: [
760329
760491
  "currentVersion: ",
760330
- "1.81.0"
760492
+ "1.81.2"
760331
760493
  ]
760332
760494
  }, undefined, true, undefined, this);
760333
760495
  $2[3] = verbose;
@@ -771180,7 +771342,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
771180
771342
  project_dir: getOriginalCwd(),
771181
771343
  added_dirs: addedDirs
771182
771344
  },
771183
- version: "1.81.0",
771345
+ version: "1.81.2",
771184
771346
  output_style: {
771185
771347
  name: outputStyleName
771186
771348
  },
@@ -771315,7 +771477,7 @@ function StatusLineInner({
771315
771477
  const attention = customStatusError ?? taskAttention;
771316
771478
  const terminalSize = React133.useContext(TerminalSizeContext);
771317
771479
  const defaultStatusLineText = buildDefaultStatusBar({
771318
- version: "1.81.0",
771480
+ version: "1.81.2",
771319
771481
  providerLabel: providerRuntime.providerLabel,
771320
771482
  authMode: providerRuntime.authLabel,
771321
771483
  model: renderModelName(mainLoopModel) || providerRuntime.model || "",
@@ -773817,6 +773979,7 @@ function PromptInput({
773817
773979
  const thinkingEnabled = useAppState((s) => s.thinkingEnabled);
773818
773980
  const isFastMode = useAppState((s) => isFastModeEnabled() ? s.fastMode : false);
773819
773981
  const effortValue = useAppState((s) => s.effortValue);
773982
+ const effortProvider = useAppState((s) => s.provider.active);
773820
773983
  const viewedTeammate = getViewedTeammateTask(store2.getState());
773821
773984
  const viewingAgentName = viewedTeammate?.identity.agentName;
773822
773985
  const viewingAgentColor = viewedTeammate?.identity.color && AGENT_COLORS.includes(viewedTeammate.identity.color) ? viewedTeammate.identity.color : undefined;
@@ -774985,7 +775148,7 @@ function PromptInput({
774985
775148
  const fastModeCooldown = isFastModeEnabled() ? isFastModeCooldown() : false;
774986
775149
  const showFastIcon = isFastModeEnabled() ? isFastMode && (isFastModeAvailable() || fastModeCooldown) : false;
774987
775150
  const showFastIconHint = useShowFastIconHint(showFastIcon ?? false);
774988
- const effortNotificationText = briefOwnsGap ? undefined : getEffortNotificationText(effortValue, mainLoopModel);
775151
+ const effortNotificationText = briefOwnsGap ? undefined : getEffortNotificationText(effortValue, mainLoopModel, effortProvider);
774989
775152
  import_react258.useEffect(() => {
774990
775153
  if (!effortNotificationText) {
774991
775154
  removeNotification("effort-level");
@@ -783570,7 +783733,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
783570
783733
  } catch {}
783571
783734
  const data = {
783572
783735
  trigger: trigger2,
783573
- version: "1.81.0",
783736
+ version: "1.81.2",
783574
783737
  platform: process.platform,
783575
783738
  transcript,
783576
783739
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -795939,7 +796102,7 @@ function WelcomeV2() {
795939
796102
  dimColor: true,
795940
796103
  children: [
795941
796104
  "v",
795942
- "1.81.0"
796105
+ "1.81.2"
795943
796106
  ]
795944
796107
  }, undefined, true, undefined, this)
795945
796108
  ]
@@ -797199,7 +797362,7 @@ function completeOnboarding() {
797199
797362
  saveGlobalConfig((current) => ({
797200
797363
  ...current,
797201
797364
  hasCompletedOnboarding: true,
797202
- lastOnboardingVersion: "1.81.0"
797365
+ lastOnboardingVersion: "1.81.2"
797203
797366
  }));
797204
797367
  }
797205
797368
  function showDialog(root2, renderer) {
@@ -802345,7 +802508,7 @@ function appendToLog(path28, message) {
802345
802508
  cwd: getFsImplementation().cwd(),
802346
802509
  userType: process.env.USER_TYPE,
802347
802510
  sessionId: getSessionId(),
802348
- version: "1.81.0"
802511
+ version: "1.81.2"
802349
802512
  };
802350
802513
  getLogWriter(path28).write(messageWithTimestamp);
802351
802514
  }
@@ -806509,8 +806672,8 @@ async function getEnvLessBridgeConfig() {
806509
806672
  }
806510
806673
  async function checkEnvLessBridgeMinVersion() {
806511
806674
  const cfg = await getEnvLessBridgeConfig();
806512
- if (cfg.min_version && lt("1.81.0", cfg.min_version)) {
806513
- return `Your version of UR (${"1.81.0"}) is too old for Remote Control.
806675
+ if (cfg.min_version && lt("1.81.2", cfg.min_version)) {
806676
+ return `Your version of UR (${"1.81.2"}) is too old for Remote Control.
806514
806677
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
806515
806678
  }
806516
806679
  return null;
@@ -806984,7 +807147,7 @@ async function initBridgeCore(params) {
806984
807147
  const rawApi = createBridgeApiClient({
806985
807148
  baseUrl,
806986
807149
  getAccessToken,
806987
- runnerVersion: "1.81.0",
807150
+ runnerVersion: "1.81.2",
806988
807151
  onDebug: logForDebugging,
806989
807152
  onAuth401,
806990
807153
  getTrustedDeviceToken
@@ -816457,7 +816620,7 @@ function getAgUiCapabilities() {
816457
816620
  name: "UR-Nexus",
816458
816621
  type: "ur-nexus",
816459
816622
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
816460
- version: "1.81.0",
816623
+ version: "1.81.2",
816461
816624
  provider: "UR",
816462
816625
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
816463
816626
  },
@@ -817684,7 +817847,7 @@ function createMCPServer(cwd4, debug2, verbose) {
817684
817847
  };
817685
817848
  const server2 = new Server({
817686
817849
  name: "ur-nexus",
817687
- version: "1.81.0"
817850
+ version: "1.81.2"
817688
817851
  }, {
817689
817852
  capabilities: {
817690
817853
  tools: {}
@@ -818888,7 +819051,7 @@ function thrownResponse(error40) {
818888
819051
  }
818889
819052
  async function createUrMcp2026Runtime(options5) {
818890
819053
  const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
818891
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.0" }, { capabilities: {} });
819054
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.2" }, { capabilities: {} });
818892
819055
  const [clientTransport, serverTransport] = createLinkedTransportPair();
818893
819056
  try {
818894
819057
  await server2.connect(serverTransport);
@@ -818899,7 +819062,7 @@ async function createUrMcp2026Runtime(options5) {
818899
819062
  }
818900
819063
  const runtime2 = new Mcp2026Runtime({
818901
819064
  cwd: options5.cwd,
818902
- version: "1.81.0",
819065
+ version: "1.81.2",
818903
819066
  backend: {
818904
819067
  listTools: async () => {
818905
819068
  const listed = await client2.listTools();
@@ -821634,7 +821797,7 @@ async function update() {
821634
821797
  logEvent("tengu_update_check", {});
821635
821798
  const diagnostic2 = await getDoctorDiagnostic();
821636
821799
  const result = await checkUpgradeStatus({
821637
- currentVersion: "1.81.0",
821800
+ currentVersion: "1.81.2",
821638
821801
  packageName: UR_AGENT_PACKAGE_NAME,
821639
821802
  installationType: diagnostic2.installationType,
821640
821803
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -822962,7 +823125,7 @@ ${customInstructions}` : customInstructions;
822962
823125
  }
822963
823126
  }
822964
823127
  logForDiagnosticsNoPII("info", "started", {
822965
- version: "1.81.0",
823128
+ version: "1.81.2",
822966
823129
  is_native_binary: isInBundledMode()
822967
823130
  });
822968
823131
  registerCleanup(async () => {
@@ -823749,7 +823912,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
823749
823912
  pendingHookMessages
823750
823913
  }, renderAndRun);
823751
823914
  }
823752
- }).version("1.81.0 (UR-Nexus)", "-v, --version", "Output the version number");
823915
+ }).version("1.81.2 (UR-Nexus)", "-v, --version", "Output the version number");
823753
823916
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
823754
823917
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
823755
823918
  if (canUserConfigureAdvisor()) {
@@ -824876,7 +825039,7 @@ if (false) {}
824876
825039
  async function main2() {
824877
825040
  const args = process.argv.slice(2);
824878
825041
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
824879
- console.log(`${"1.81.0"} (UR-Nexus)`);
825042
+ console.log(`${"1.81.2"} (UR-Nexus)`);
824880
825043
  return;
824881
825044
  }
824882
825045
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {