ur-agent 1.81.6 → 1.81.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/README.md +7 -2
- package/dist/cli.js +517 -241
- package/docs/VALIDATION.md +8 -2
- package/docs/providers.md +21 -9
- package/documentation/index.html +1 -1
- package/extensions/jetbrains-ur/build.gradle.kts +1 -1
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -53776,6 +53776,7 @@ __export(exports_providerRegistry, {
|
|
|
53776
53776
|
formatProviderList: () => formatProviderList,
|
|
53777
53777
|
formatProviderDoctor: () => formatProviderDoctor,
|
|
53778
53778
|
formatInvalidProviderModelMessage: () => formatInvalidProviderModelMessage,
|
|
53779
|
+
ensureProviderReasoningCapabilitiesForModel: () => ensureProviderReasoningCapabilitiesForModel,
|
|
53779
53780
|
ensureProviderModelsFresh: () => ensureProviderModelsFresh,
|
|
53780
53781
|
doctorProvider: () => doctorProvider,
|
|
53781
53782
|
doctorActiveProvider: () => doctorActiveProvider,
|
|
@@ -54858,6 +54859,21 @@ function modelDefinitionsFromNames(provider, names, source) {
|
|
|
54858
54859
|
description: source === "cache" ? `Cached ${providerName} model` : `Discovered from ${providerName}`
|
|
54859
54860
|
}));
|
|
54860
54861
|
}
|
|
54862
|
+
function modelDefinitionsFromDiscovered(models) {
|
|
54863
|
+
return models.map((model) => ({
|
|
54864
|
+
id: model.id,
|
|
54865
|
+
displayName: model.displayName,
|
|
54866
|
+
description: model.description,
|
|
54867
|
+
pricing: model.pricing,
|
|
54868
|
+
...model.contextLength ? { contextLength: model.contextLength } : {},
|
|
54869
|
+
...model.outputTokenLimit ? { outputTokenLimit: model.outputTokenLimit } : {},
|
|
54870
|
+
...model.supportedParameters ? { supportedParameters: model.supportedParameters } : {},
|
|
54871
|
+
...model.capabilities ? { capabilities: model.capabilities } : {},
|
|
54872
|
+
...model.reasoning ? { reasoning: model.reasoning } : {},
|
|
54873
|
+
...model.expirationDate ? { expirationDate: model.expirationDate } : {},
|
|
54874
|
+
...model.deprecated ? { deprecated: true } : {}
|
|
54875
|
+
}));
|
|
54876
|
+
}
|
|
54861
54877
|
function providerModelCacheKey(provider, settings = getInitialSettings()) {
|
|
54862
54878
|
const definition = getProviderDefinition(provider);
|
|
54863
54879
|
let endpoint = providerBaseUrl(provider, definition, settings);
|
|
@@ -54911,6 +54927,97 @@ function getProviderReasoningCapabilitiesForModel(model, provider = getRuntimePr
|
|
|
54911
54927
|
const match = known.find((entry) => entry.id.toLowerCase() === wanted) ?? known.find((entry) => wanted.includes(entry.id.toLowerCase()));
|
|
54912
54928
|
return match?.reasoning;
|
|
54913
54929
|
}
|
|
54930
|
+
function providerPropsUrl(baseUrl, model) {
|
|
54931
|
+
const url3 = new URL(normalizeBaseUrl(baseUrl));
|
|
54932
|
+
url3.hash = "";
|
|
54933
|
+
url3.search = "";
|
|
54934
|
+
let path8 = url3.pathname.replace(/\/+$/, "");
|
|
54935
|
+
path8 = path8.replace(/\/(?:v\d+(?:beta)?|api\/v\d+)$/i, "");
|
|
54936
|
+
path8 = path8.replace(/\/(?:chat\/completions|models|props)$/i, "");
|
|
54937
|
+
url3.pathname = `${path8}/props`;
|
|
54938
|
+
url3.searchParams.set("model", model);
|
|
54939
|
+
return url3.toString();
|
|
54940
|
+
}
|
|
54941
|
+
function reasoningCapabilitiesFromProps(value) {
|
|
54942
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
54943
|
+
return;
|
|
54944
|
+
}
|
|
54945
|
+
const root2 = value;
|
|
54946
|
+
const explicit = parseModelReasoningCapabilities(root2.reasoning) ?? parseModelReasoningCapabilities(root2.meta && typeof root2.meta === "object" ? root2.meta.reasoning : undefined) ?? parseModelReasoningCapabilities({
|
|
54947
|
+
supported_efforts: root2.supported_efforts,
|
|
54948
|
+
default_effort: root2.default_effort
|
|
54949
|
+
});
|
|
54950
|
+
if (explicit)
|
|
54951
|
+
return explicit;
|
|
54952
|
+
const caps = root2.chat_template_caps && typeof root2.chat_template_caps === "object" ? root2.chat_template_caps : undefined;
|
|
54953
|
+
if (caps?.supports_reasoning_effort === true) {
|
|
54954
|
+
return { supportedEfforts: null };
|
|
54955
|
+
}
|
|
54956
|
+
if (caps?.supports_reasoning_effort === false) {
|
|
54957
|
+
return { supportedEfforts: [] };
|
|
54958
|
+
}
|
|
54959
|
+
return;
|
|
54960
|
+
}
|
|
54961
|
+
function rememberProviderModelReasoning(provider, model, reasoning, settings) {
|
|
54962
|
+
const key = providerModelCacheKey(provider, settings);
|
|
54963
|
+
const existing = cachedModelsByProvider.get(key) ?? [];
|
|
54964
|
+
const wanted = model.trim().toLowerCase();
|
|
54965
|
+
let found = false;
|
|
54966
|
+
const updated = existing.map((entry) => {
|
|
54967
|
+
if (entry.id.toLowerCase() !== wanted)
|
|
54968
|
+
return entry;
|
|
54969
|
+
found = true;
|
|
54970
|
+
return { ...entry, reasoning };
|
|
54971
|
+
});
|
|
54972
|
+
if (!found) {
|
|
54973
|
+
updated.push({
|
|
54974
|
+
id: model,
|
|
54975
|
+
displayName: model,
|
|
54976
|
+
description: `Discovered from ${getProviderDefinition(provider).displayName}`,
|
|
54977
|
+
reasoning
|
|
54978
|
+
});
|
|
54979
|
+
}
|
|
54980
|
+
rememberModels(key, updated);
|
|
54981
|
+
}
|
|
54982
|
+
async function ensureProviderReasoningCapabilitiesForModel(providerId, model, options = {}) {
|
|
54983
|
+
const provider = resolveProviderId(providerId);
|
|
54984
|
+
if (!provider)
|
|
54985
|
+
return;
|
|
54986
|
+
const settings = options.settings ?? getInitialSettings();
|
|
54987
|
+
const cached2 = getProviderReasoningCapabilitiesForModel(model, provider, settings);
|
|
54988
|
+
if (cached2 !== undefined)
|
|
54989
|
+
return cached2;
|
|
54990
|
+
if (provider !== "llama.cpp") {
|
|
54991
|
+
await ensureProviderModelsFresh(provider, options);
|
|
54992
|
+
return getProviderReasoningCapabilitiesForModel(model, provider, settings);
|
|
54993
|
+
}
|
|
54994
|
+
const definition = getProviderDefinition(provider);
|
|
54995
|
+
const baseUrl = providerBaseUrl(provider, definition, settings);
|
|
54996
|
+
if (!baseUrl)
|
|
54997
|
+
return;
|
|
54998
|
+
const env4 = options.adapters?.env ?? process.env;
|
|
54999
|
+
const fetchImpl = options.adapters?.fetch ?? fetch;
|
|
55000
|
+
let apiKey = definition.envKey ? env4[definition.envKey] : undefined;
|
|
55001
|
+
if (!apiKey) {
|
|
55002
|
+
try {
|
|
55003
|
+
const credentials = await Promise.resolve().then(() => (init_providerCredentials(), exports_providerCredentials));
|
|
55004
|
+
apiKey = credentials.getProviderApiKey(provider, { env: env4 });
|
|
55005
|
+
} catch {}
|
|
55006
|
+
}
|
|
55007
|
+
const response = await fetchImpl(providerPropsUrl(baseUrl, model), {
|
|
55008
|
+
method: "GET",
|
|
55009
|
+
signal: options.signal,
|
|
55010
|
+
...apiKey ? { headers: { Authorization: `Bearer ${apiKey}` } } : {}
|
|
55011
|
+
});
|
|
55012
|
+
if (!response.ok) {
|
|
55013
|
+
throw new Error(`llama.cpp /props returned HTTP ${response.status}.`);
|
|
55014
|
+
}
|
|
55015
|
+
const reasoning = reasoningCapabilitiesFromProps(await response.json().catch(() => null));
|
|
55016
|
+
if (reasoning) {
|
|
55017
|
+
rememberProviderModelReasoning(provider, model, reasoning, settings);
|
|
55018
|
+
}
|
|
55019
|
+
return reasoning;
|
|
55020
|
+
}
|
|
54914
55021
|
function cacheProviderModelsForProvider(providerId, models, settings = getInitialSettings()) {
|
|
54915
55022
|
const provider = resolveProviderId(providerId);
|
|
54916
55023
|
if (!provider) {
|
|
@@ -55015,9 +55122,9 @@ async function discoverLiveModelsForProvider(provider, options = {}) {
|
|
|
55015
55122
|
}
|
|
55016
55123
|
reachedOk = true;
|
|
55017
55124
|
const body = await response.json().catch(() => null);
|
|
55018
|
-
const
|
|
55019
|
-
if (
|
|
55020
|
-
return
|
|
55125
|
+
const discovered = parseDiscoveredModels(body, getProviderDefinition(provider).displayName);
|
|
55126
|
+
if (discovered.length > 0) {
|
|
55127
|
+
return modelDefinitionsFromDiscovered(discovered);
|
|
55021
55128
|
}
|
|
55022
55129
|
}
|
|
55023
55130
|
if (!reachedOk && lastError) {
|
|
@@ -55152,20 +55259,7 @@ async function discoverApiProviderModels(provider, definition, options) {
|
|
|
55152
55259
|
}
|
|
55153
55260
|
} while (next);
|
|
55154
55261
|
const providerLabel = getProviderDefinition(provider).displayName;
|
|
55155
|
-
|
|
55156
|
-
return discovered.map((model) => ({
|
|
55157
|
-
id: model.id,
|
|
55158
|
-
displayName: model.displayName,
|
|
55159
|
-
description: model.description,
|
|
55160
|
-
pricing: model.pricing,
|
|
55161
|
-
...model.contextLength ? { contextLength: model.contextLength } : {},
|
|
55162
|
-
...model.outputTokenLimit ? { outputTokenLimit: model.outputTokenLimit } : {},
|
|
55163
|
-
...model.supportedParameters ? { supportedParameters: model.supportedParameters } : {},
|
|
55164
|
-
...model.capabilities ? { capabilities: model.capabilities } : {},
|
|
55165
|
-
...model.reasoning ? { reasoning: model.reasoning } : {},
|
|
55166
|
-
...model.expirationDate ? { expirationDate: model.expirationDate } : {},
|
|
55167
|
-
...model.deprecated ? { deprecated: true } : {}
|
|
55168
|
-
}));
|
|
55262
|
+
return modelDefinitionsFromDiscovered(parseDiscoveredModels({ data: entries }, providerLabel));
|
|
55169
55263
|
}
|
|
55170
55264
|
async function listModelsForProviderWithSource(providerId, options = {}) {
|
|
55171
55265
|
const provider = resolveProviderId(providerId);
|
|
@@ -90880,55 +90974,57 @@ var init_thinking = __esm(() => {
|
|
|
90880
90974
|
});
|
|
90881
90975
|
|
|
90882
90976
|
// src/utils/effort.ts
|
|
90883
|
-
function
|
|
90977
|
+
function normalizeEffortLevels(values) {
|
|
90978
|
+
const advertised = new Set(values.map((value) => value.trim().toLowerCase()).filter(isEffortLevel));
|
|
90979
|
+
return EFFORT_LEVELS.filter((level) => advertised.has(level));
|
|
90980
|
+
}
|
|
90981
|
+
function getSupportedEffortLevelsForModel(model, provider = getRuntimeProvider()) {
|
|
90884
90982
|
if (isEnvTruthy(process.env.UR_CODE_ALWAYS_ENABLE_EFFORT)) {
|
|
90885
|
-
return
|
|
90983
|
+
return [...EFFORT_LEVELS];
|
|
90886
90984
|
}
|
|
90887
90985
|
const supported3P = get3PModelCapabilityOverride(model, "effort");
|
|
90888
|
-
if (supported3P
|
|
90889
|
-
return
|
|
90890
|
-
|
|
90986
|
+
if (supported3P === false)
|
|
90987
|
+
return [];
|
|
90988
|
+
const supportsExtendedEffort = get3PModelCapabilityOverride(model, "max_effort") !== false;
|
|
90989
|
+
const applyOverrides = (levels) => supportsExtendedEffort ? [...levels] : levels.filter((level) => level !== "xhigh" && level !== "max");
|
|
90891
90990
|
const discovered = getRuntimeModelReasoningCapabilities(model, provider);
|
|
90892
|
-
if (discovered?.supportedEfforts === null)
|
|
90893
|
-
return
|
|
90991
|
+
if (discovered?.supportedEfforts === null) {
|
|
90992
|
+
return applyOverrides(EFFORT_LEVELS);
|
|
90993
|
+
}
|
|
90894
90994
|
if (discovered?.supportedEfforts !== undefined) {
|
|
90895
|
-
return discovered.supportedEfforts
|
|
90995
|
+
return applyOverrides(normalizeEffortLevels(discovered.supportedEfforts));
|
|
90896
90996
|
}
|
|
90897
90997
|
if (discovered && provider === "openrouter") {
|
|
90898
|
-
return
|
|
90998
|
+
return applyOverrides(EFFORT_LEVELS);
|
|
90899
90999
|
}
|
|
90900
|
-
|
|
90901
|
-
|
|
90902
|
-
function modelSupportsMaxEffort(model, provider = getRuntimeProvider()) {
|
|
90903
|
-
const supported3P = get3PModelCapabilityOverride(model, "max_effort");
|
|
90904
|
-
if (supported3P !== undefined) {
|
|
90905
|
-
return supported3P;
|
|
90906
|
-
}
|
|
90907
|
-
const discovered = getRuntimeModelReasoningCapabilities(model, provider);
|
|
90908
|
-
if (discovered?.supportedEfforts === null)
|
|
90909
|
-
return true;
|
|
90910
|
-
if (discovered?.supportedEfforts !== undefined) {
|
|
90911
|
-
return provider === "openrouter" || discovered.supportedEfforts.some((effort) => effort === "max" || effort === "xhigh");
|
|
91000
|
+
if (provider === "ollama" && OLLAMA_GRADED_THINK_MODEL_RE.test(model)) {
|
|
91001
|
+
return ["low", "medium", "high"];
|
|
90912
91002
|
}
|
|
90913
|
-
if (
|
|
90914
|
-
return true;
|
|
91003
|
+
if (supported3P === true) {
|
|
91004
|
+
return get3PModelCapabilityOverride(model, "max_effort") === true ? [...EFFORT_LEVELS] : ["low", "medium", "high"];
|
|
90915
91005
|
}
|
|
90916
91006
|
if (process.env.USER_TYPE === "ant" && resolveAntModel(model)) {
|
|
90917
|
-
return
|
|
91007
|
+
return applyOverrides(EFFORT_LEVELS);
|
|
90918
91008
|
}
|
|
90919
|
-
return
|
|
91009
|
+
return [];
|
|
91010
|
+
}
|
|
91011
|
+
function resolveProviderEffortLevel(model, requested, provider = getRuntimeProvider()) {
|
|
91012
|
+
const supported = getSupportedEffortLevelsForModel(model, provider);
|
|
91013
|
+
if (supported.length === 0)
|
|
91014
|
+
return;
|
|
91015
|
+
if (requested === "max")
|
|
91016
|
+
return supported.at(-1);
|
|
91017
|
+
if (supported.includes(requested))
|
|
91018
|
+
return requested;
|
|
91019
|
+
const requestedIndex = EFFORT_LEVELS.indexOf(requested);
|
|
91020
|
+
const notHigher = supported.filter((level) => EFFORT_LEVELS.indexOf(level) <= requestedIndex);
|
|
91021
|
+
return notHigher.at(-1) ?? supported[0];
|
|
91022
|
+
}
|
|
91023
|
+
function modelSupportsEffort(model, provider = getRuntimeProvider()) {
|
|
91024
|
+
return getSupportedEffortLevelsForModel(model, provider).length > 0;
|
|
90920
91025
|
}
|
|
90921
91026
|
function toOpenRouterReasoningEffort(model, effort) {
|
|
90922
|
-
|
|
90923
|
-
if (effort !== "max")
|
|
90924
|
-
return effort;
|
|
90925
|
-
if (supported === null || supported === undefined)
|
|
90926
|
-
return "max";
|
|
90927
|
-
if (supported.includes("max"))
|
|
90928
|
-
return "max";
|
|
90929
|
-
if (supported.includes("xhigh"))
|
|
90930
|
-
return "xhigh";
|
|
90931
|
-
return "high";
|
|
91027
|
+
return resolveProviderEffortLevel(model, effort, "openrouter") ?? (effort === "max" ? "high" : effort);
|
|
90932
91028
|
}
|
|
90933
91029
|
function isEffortLevel(value) {
|
|
90934
91030
|
return EFFORT_LEVELS.includes(value);
|
|
@@ -90951,7 +91047,7 @@ function parseEffortValue(value) {
|
|
|
90951
91047
|
return;
|
|
90952
91048
|
}
|
|
90953
91049
|
function toPersistableEffort(value) {
|
|
90954
|
-
if (value === "low" || value === "medium" || value === "high") {
|
|
91050
|
+
if (value === "minimal" || value === "low" || value === "medium" || value === "high" || value === "xhigh") {
|
|
90955
91051
|
return value;
|
|
90956
91052
|
}
|
|
90957
91053
|
if (value === "max" && process.env.USER_TYPE === "ant") {
|
|
@@ -90975,11 +91071,10 @@ function resolveAppliedEffort(model, appStateEffortValue, provider = getRuntimeP
|
|
|
90975
91071
|
if (envOverride === null) {
|
|
90976
91072
|
return;
|
|
90977
91073
|
}
|
|
90978
|
-
const resolved = envOverride ?? appStateEffortValue ?? getDefaultEffortForModel(model);
|
|
90979
|
-
if (resolved ===
|
|
90980
|
-
return
|
|
90981
|
-
|
|
90982
|
-
return resolved;
|
|
91074
|
+
const resolved = envOverride ?? appStateEffortValue ?? getDefaultEffortForModel(model, provider);
|
|
91075
|
+
if (resolved === undefined || typeof resolved === "number")
|
|
91076
|
+
return resolved;
|
|
91077
|
+
return resolveProviderEffortLevel(model, resolved, provider);
|
|
90983
91078
|
}
|
|
90984
91079
|
function getDisplayedEffortLevel(model, appStateEffort, provider = getRuntimeProvider()) {
|
|
90985
91080
|
const resolved = resolveAppliedEffort(model, appStateEffort, provider) ?? "high";
|
|
@@ -91013,12 +91108,16 @@ function convertEffortValueToLevel(value) {
|
|
|
91013
91108
|
}
|
|
91014
91109
|
function getEffortLevelDescription(level) {
|
|
91015
91110
|
switch (level) {
|
|
91111
|
+
case "minimal":
|
|
91112
|
+
return "Minimal reasoning for the lowest latency and cost";
|
|
91016
91113
|
case "low":
|
|
91017
91114
|
return "Quick, straightforward implementation with minimal overhead";
|
|
91018
91115
|
case "medium":
|
|
91019
91116
|
return "Balanced approach with standard implementation and testing";
|
|
91020
91117
|
case "high":
|
|
91021
91118
|
return "Comprehensive implementation with extensive testing and documentation";
|
|
91119
|
+
case "xhigh":
|
|
91120
|
+
return "Extended reasoning above high where the provider supports it";
|
|
91022
91121
|
case "max":
|
|
91023
91122
|
return "Maximum capability with deepest reasoning";
|
|
91024
91123
|
}
|
|
@@ -91039,7 +91138,11 @@ function getmodelODefaultEffortConfig() {
|
|
|
91039
91138
|
...config2
|
|
91040
91139
|
};
|
|
91041
91140
|
}
|
|
91042
|
-
function getDefaultEffortForModel(model) {
|
|
91141
|
+
function getDefaultEffortForModel(model, provider = getRuntimeProvider()) {
|
|
91142
|
+
const providerDefault = getRuntimeModelReasoningCapabilities(model, provider)?.defaultEffort;
|
|
91143
|
+
if (providerDefault && isEffortLevel(providerDefault)) {
|
|
91144
|
+
return resolveProviderEffortLevel(model, providerDefault, provider);
|
|
91145
|
+
}
|
|
91043
91146
|
if (process.env.USER_TYPE === "ant") {
|
|
91044
91147
|
const config2 = getAntModelOverrideConfig();
|
|
91045
91148
|
const isDefaultModel = config2?.defaultModel !== undefined && model.toLowerCase() === config2.defaultModel.toLowerCase();
|
|
@@ -91057,7 +91160,7 @@ function getDefaultEffortForModel(model) {
|
|
|
91057
91160
|
}
|
|
91058
91161
|
return;
|
|
91059
91162
|
}
|
|
91060
|
-
if (modelSupportsEffort(model)) {
|
|
91163
|
+
if (modelSupportsEffort(model, provider)) {
|
|
91061
91164
|
if (isProSubscriber()) {
|
|
91062
91165
|
return "medium";
|
|
91063
91166
|
}
|
|
@@ -91065,12 +91168,12 @@ function getDefaultEffortForModel(model) {
|
|
|
91065
91168
|
return "medium";
|
|
91066
91169
|
}
|
|
91067
91170
|
}
|
|
91068
|
-
if (isUltrathinkEnabled() && modelSupportsEffort(model)) {
|
|
91171
|
+
if (isUltrathinkEnabled() && modelSupportsEffort(model, provider)) {
|
|
91069
91172
|
return "medium";
|
|
91070
91173
|
}
|
|
91071
91174
|
return;
|
|
91072
91175
|
}
|
|
91073
|
-
var EFFORT_LEVELS, MODELO_DEFAULT_EFFORT_CONFIG_DEFAULT;
|
|
91176
|
+
var EFFORT_LEVELS, OLLAMA_GRADED_THINK_MODEL_RE, MODELO_DEFAULT_EFFORT_CONFIG_DEFAULT;
|
|
91074
91177
|
var init_effort = __esm(() => {
|
|
91075
91178
|
init_thinking();
|
|
91076
91179
|
init_settings2();
|
|
@@ -91081,11 +91184,14 @@ var init_effort = __esm(() => {
|
|
|
91081
91184
|
init_envUtils();
|
|
91082
91185
|
init_antModels();
|
|
91083
91186
|
EFFORT_LEVELS = [
|
|
91187
|
+
"minimal",
|
|
91084
91188
|
"low",
|
|
91085
91189
|
"medium",
|
|
91086
91190
|
"high",
|
|
91191
|
+
"xhigh",
|
|
91087
91192
|
"max"
|
|
91088
91193
|
];
|
|
91194
|
+
OLLAMA_GRADED_THINK_MODEL_RE = /gpt-oss/i;
|
|
91089
91195
|
MODELO_DEFAULT_EFFORT_CONFIG_DEFAULT = {
|
|
91090
91196
|
enabled: true,
|
|
91091
91197
|
dialogTitle: "We recommend medium effort for modelO",
|
|
@@ -92658,6 +92764,7 @@ import { randomUUID as randomUUID5 } from "crypto";
|
|
|
92658
92764
|
async function createOpenAICompatibleClient(options) {
|
|
92659
92765
|
const endpoint = normalizeOpenAICompatibleBaseUrl(options.baseUrl);
|
|
92660
92766
|
const maxRetries = options.maxRetries;
|
|
92767
|
+
const providerId = options.providerId ?? "openai-compatible";
|
|
92661
92768
|
async function doRequest(params, requestOptions) {
|
|
92662
92769
|
const response = await fetchWithProviderReliability(endpoint, {
|
|
92663
92770
|
method: "POST",
|
|
@@ -92666,7 +92773,7 @@ async function createOpenAICompatibleClient(options) {
|
|
|
92666
92773
|
...options.apiKey ? { Authorization: `Bearer ${options.apiKey}` } : {},
|
|
92667
92774
|
...requestOptions?.headers ?? {}
|
|
92668
92775
|
},
|
|
92669
|
-
body: JSON.stringify(toOpenAICompatibleRequest(params))
|
|
92776
|
+
body: JSON.stringify(toOpenAICompatibleRequest(params, providerId))
|
|
92670
92777
|
}, {
|
|
92671
92778
|
maxRetries,
|
|
92672
92779
|
timeoutMs: requestOptions?.timeoutMs,
|
|
@@ -92689,7 +92796,7 @@ async function createOpenAICompatibleClient(options) {
|
|
|
92689
92796
|
...options.apiKey ? { Authorization: `Bearer ${options.apiKey}` } : {},
|
|
92690
92797
|
...requestOptions?.headers ?? {}
|
|
92691
92798
|
},
|
|
92692
|
-
body: JSON.stringify(toOpenAICompatibleRequest({ ...params, stream: true }))
|
|
92799
|
+
body: JSON.stringify(toOpenAICompatibleRequest({ ...params, stream: true }, providerId))
|
|
92693
92800
|
}, {
|
|
92694
92801
|
maxRetries,
|
|
92695
92802
|
timeoutMs: requestOptions?.timeoutMs,
|
|
@@ -92747,7 +92854,7 @@ function toOpenAICompatibleRequest(params, providerName = "openai-compatible") {
|
|
|
92747
92854
|
const openRouterReasoning = providerName === "openrouter" && reasoningEffort ? {
|
|
92748
92855
|
effort: toOpenRouterReasoningEffort(String(params.model ?? ""), reasoningEffort)
|
|
92749
92856
|
} : undefined;
|
|
92750
|
-
const compatibleReasoningEffort = reasoningEffort
|
|
92857
|
+
const compatibleReasoningEffort = reasoningEffort;
|
|
92751
92858
|
const openRouterServerSearch = providerName === "openrouter" && tools.some((tool) => tool?.type === "openrouter:web_search");
|
|
92752
92859
|
const toolChoice = openRouterServerSearch ? undefined : mapOpenAIToolChoice(params.tool_choice);
|
|
92753
92860
|
return {
|
|
@@ -92780,7 +92887,7 @@ function toOpenAIResponseFormat(format4) {
|
|
|
92780
92887
|
}
|
|
92781
92888
|
function toOpenAIReasoningEffort(params) {
|
|
92782
92889
|
const requested = params.output_config?.effort;
|
|
92783
|
-
if (requested === "low" || requested === "medium" || requested === "high" || requested === "max") {
|
|
92890
|
+
if (requested === "minimal" || requested === "low" || requested === "medium" || requested === "high" || requested === "xhigh" || requested === "max") {
|
|
92784
92891
|
return requested;
|
|
92785
92892
|
}
|
|
92786
92893
|
if (params.thinking?.type === "adaptive")
|
|
@@ -93736,11 +93843,9 @@ function structuredTextConfig(outputConfig) {
|
|
|
93736
93843
|
}
|
|
93737
93844
|
function reasoningConfig(params) {
|
|
93738
93845
|
const requested = params.output_config?.effort;
|
|
93739
|
-
if (requested === "low" || requested === "medium" || requested === "high") {
|
|
93846
|
+
if (requested === "minimal" || requested === "low" || requested === "medium" || requested === "high" || requested === "xhigh" || requested === "max") {
|
|
93740
93847
|
return { effort: requested };
|
|
93741
93848
|
}
|
|
93742
|
-
if (requested === "max")
|
|
93743
|
-
return { effort: "high" };
|
|
93744
93849
|
if (params.thinking?.type === "adaptive")
|
|
93745
93850
|
return { effort: "medium" };
|
|
93746
93851
|
if (params.thinking?.type !== "enabled")
|
|
@@ -95655,7 +95760,8 @@ async function createOpenAICompatibleProviderClient(providerId, options = {}) {
|
|
|
95655
95760
|
return await createOpenAICompatibleClient2({
|
|
95656
95761
|
baseUrl,
|
|
95657
95762
|
apiKey,
|
|
95658
|
-
maxRetries: options.maxRetries ?? 3
|
|
95763
|
+
maxRetries: options.maxRetries ?? 3,
|
|
95764
|
+
providerId
|
|
95659
95765
|
});
|
|
95660
95766
|
}
|
|
95661
95767
|
async function createSubscriptionClient(providerId, options = {}) {
|
|
@@ -108252,7 +108358,7 @@ var init_auth = __esm(() => {
|
|
|
108252
108358
|
|
|
108253
108359
|
// src/utils/userAgent.ts
|
|
108254
108360
|
function getURCodeUserAgent() {
|
|
108255
|
-
return `ur/${"1.81.
|
|
108361
|
+
return `ur/${"1.81.8"}`;
|
|
108256
108362
|
}
|
|
108257
108363
|
|
|
108258
108364
|
// src/utils/workloadContext.ts
|
|
@@ -108274,7 +108380,7 @@ function getUserAgent() {
|
|
|
108274
108380
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
108275
108381
|
const workload = getWorkload();
|
|
108276
108382
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
108277
|
-
return `ur-cli/${"1.81.
|
|
108383
|
+
return `ur-cli/${"1.81.8"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
108278
108384
|
}
|
|
108279
108385
|
function getMCPUserAgent() {
|
|
108280
108386
|
const parts = [];
|
|
@@ -108288,7 +108394,7 @@ function getMCPUserAgent() {
|
|
|
108288
108394
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
108289
108395
|
}
|
|
108290
108396
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
108291
|
-
return `ur/${"1.81.
|
|
108397
|
+
return `ur/${"1.81.8"}${suffix}`;
|
|
108292
108398
|
}
|
|
108293
108399
|
function getWebFetchUserAgent() {
|
|
108294
108400
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -108426,7 +108532,7 @@ var init_user = __esm(() => {
|
|
|
108426
108532
|
deviceId,
|
|
108427
108533
|
sessionId: getSessionId(),
|
|
108428
108534
|
email: getEmail(),
|
|
108429
|
-
appVersion: "1.81.
|
|
108535
|
+
appVersion: "1.81.8",
|
|
108430
108536
|
platform: getHostPlatformForAnalytics(),
|
|
108431
108537
|
organizationUuid,
|
|
108432
108538
|
accountUuid,
|
|
@@ -116313,7 +116419,7 @@ var init_metadata = __esm(() => {
|
|
|
116313
116419
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
116314
116420
|
WHITESPACE_REGEX = /\s+/;
|
|
116315
116421
|
getVersionBase = memoize_default(() => {
|
|
116316
|
-
const match = "1.81.
|
|
116422
|
+
const match = "1.81.8".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
116317
116423
|
return match ? match[0] : undefined;
|
|
116318
116424
|
});
|
|
116319
116425
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -116353,7 +116459,7 @@ var init_metadata = __esm(() => {
|
|
|
116353
116459
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
116354
116460
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
116355
116461
|
isURAiAuth: isURAISubscriber(),
|
|
116356
|
-
version: "1.81.
|
|
116462
|
+
version: "1.81.8",
|
|
116357
116463
|
versionBase: getVersionBase(),
|
|
116358
116464
|
buildTime: "",
|
|
116359
116465
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -117023,7 +117129,7 @@ function initialize1PEventLogging() {
|
|
|
117023
117129
|
const platform2 = getPlatform();
|
|
117024
117130
|
const attributes = {
|
|
117025
117131
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
117026
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.81.
|
|
117132
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.81.8"
|
|
117027
117133
|
};
|
|
117028
117134
|
if (platform2 === "wsl") {
|
|
117029
117135
|
const wslVersion = getWslVersion();
|
|
@@ -117051,7 +117157,7 @@ function initialize1PEventLogging() {
|
|
|
117051
117157
|
})
|
|
117052
117158
|
]
|
|
117053
117159
|
});
|
|
117054
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.81.
|
|
117160
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.81.8");
|
|
117055
117161
|
}
|
|
117056
117162
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
117057
117163
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -119632,7 +119738,7 @@ var init_types2 = __esm(() => {
|
|
|
119632
119738
|
syntaxHighlightingDisabled: exports_external.boolean().optional().describe("Whether to disable syntax highlighting in diffs"),
|
|
119633
119739
|
terminalTitleFromRename: exports_external.boolean().optional().describe("Whether /rename updates the terminal tab title (defaults to true). Set to false to keep auto-generated topic titles."),
|
|
119634
119740
|
alwaysThinkingEnabled: exports_external.boolean().optional().describe("When false, thinking is disabled. When absent or true, thinking is " + "enabled automatically for supported models."),
|
|
119635
|
-
effortLevel: exports_external.enum(process.env.USER_TYPE === "ant" ? ["low", "medium", "high", "max"] : ["low", "medium", "high"]).optional().catch(undefined).describe("Persisted effort level for supported models."),
|
|
119741
|
+
effortLevel: exports_external.enum(process.env.USER_TYPE === "ant" ? ["minimal", "low", "medium", "high", "xhigh", "max"] : ["minimal", "low", "medium", "high", "xhigh"]).optional().catch(undefined).describe("Persisted effort level for supported models."),
|
|
119636
119742
|
advisorModel: exports_external.string().optional().describe("Advisor model for the server-side advisor tool."),
|
|
119637
119743
|
fastMode: exports_external.boolean().optional().describe("When true, fast mode is enabled. When absent or false, fast mode is off."),
|
|
119638
119744
|
fastModePerSessionOptIn: exports_external.boolean().optional().describe("When true, fast mode does not persist across sessions. Each session starts with fast mode off."),
|
|
@@ -127017,7 +127123,7 @@ function formatA2AAgentCard(options = {}, pretty = true) {
|
|
|
127017
127123
|
function formatA2AV1AgentCard(options = {}, pretty = true) {
|
|
127018
127124
|
return JSON.stringify(buildA2AV1AgentCard(options), null, pretty ? 2 : 0);
|
|
127019
127125
|
}
|
|
127020
|
-
var urVersion = "1.81.
|
|
127126
|
+
var urVersion = "1.81.8", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
|
|
127021
127127
|
var init_trends = __esm(() => {
|
|
127022
127128
|
init_a2aCardSignature();
|
|
127023
127129
|
coverage = [
|
|
@@ -129907,7 +130013,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
129907
130013
|
if (!isAttributionHeaderEnabled()) {
|
|
129908
130014
|
return "";
|
|
129909
130015
|
}
|
|
129910
|
-
const version2 = `${"1.81.
|
|
130016
|
+
const version2 = `${"1.81.8"}.${fingerprint}`;
|
|
129911
130017
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
129912
130018
|
const cch = "";
|
|
129913
130019
|
const workload = getWorkload();
|
|
@@ -184828,7 +184934,7 @@ var init_projectSafety = __esm(() => {
|
|
|
184828
184934
|
function getInstruments() {
|
|
184829
184935
|
if (instruments)
|
|
184830
184936
|
return instruments;
|
|
184831
|
-
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.81.
|
|
184937
|
+
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.81.8");
|
|
184832
184938
|
instruments = {
|
|
184833
184939
|
operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
|
|
184834
184940
|
description: "GenAI operation duration.",
|
|
@@ -184926,7 +185032,7 @@ function genAiAgentAttributes() {
|
|
|
184926
185032
|
"gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
|
|
184927
185033
|
"gen_ai.provider.name": "ur",
|
|
184928
185034
|
"gen_ai.agent.name": "UR-Nexus",
|
|
184929
|
-
"gen_ai.agent.version": "1.81.
|
|
185035
|
+
"gen_ai.agent.version": "1.81.8"
|
|
184930
185036
|
};
|
|
184931
185037
|
}
|
|
184932
185038
|
function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
@@ -184947,7 +185053,7 @@ function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
|
184947
185053
|
function startGenAiWorkflowSpan(workflowName, workflowRunId) {
|
|
184948
185054
|
const attributes = genAiWorkflowAttributes(workflowName, workflowRunId);
|
|
184949
185055
|
const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
|
|
184950
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.
|
|
185056
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.8").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
184951
185057
|
}
|
|
184952
185058
|
function endGenAiWorkflowSpan(span, options2 = {}) {
|
|
184953
185059
|
try {
|
|
@@ -184985,7 +185091,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
|
|
|
184985
185091
|
if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
|
|
184986
185092
|
attributes["gen_ai.memory.record.count"] = options2.recordCount;
|
|
184987
185093
|
}
|
|
184988
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.
|
|
185094
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.8").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
184989
185095
|
}
|
|
184990
185096
|
function endGenAiMemorySpan(span, options2 = {}) {
|
|
184991
185097
|
try {
|
|
@@ -278700,7 +278806,7 @@ function getTelemetryAttributes() {
|
|
|
278700
278806
|
attributes["session.id"] = sessionId;
|
|
278701
278807
|
}
|
|
278702
278808
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
278703
|
-
attributes["app.version"] = "1.81.
|
|
278809
|
+
attributes["app.version"] = "1.81.8";
|
|
278704
278810
|
}
|
|
278705
278811
|
const oauthAccount = getOauthAccountInfo();
|
|
278706
278812
|
if (oauthAccount) {
|
|
@@ -320104,7 +320210,7 @@ function getInstallationEnv() {
|
|
|
320104
320210
|
return;
|
|
320105
320211
|
}
|
|
320106
320212
|
function getURCodeVersion() {
|
|
320107
|
-
return "1.81.
|
|
320213
|
+
return "1.81.8";
|
|
320108
320214
|
}
|
|
320109
320215
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
320110
320216
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -327474,7 +327580,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
327474
327580
|
const client2 = new Client({
|
|
327475
327581
|
name: "ur",
|
|
327476
327582
|
title: "UR",
|
|
327477
|
-
version: "1.81.
|
|
327583
|
+
version: "1.81.8",
|
|
327478
327584
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
327479
327585
|
websiteUrl: PRODUCT_URL
|
|
327480
327586
|
}, {
|
|
@@ -327835,7 +327941,7 @@ var init_client5 = __esm(() => {
|
|
|
327835
327941
|
const client2 = new Client({
|
|
327836
327942
|
name: "ur",
|
|
327837
327943
|
title: "UR",
|
|
327838
|
-
version: "1.81.
|
|
327944
|
+
version: "1.81.8",
|
|
327839
327945
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
327840
327946
|
websiteUrl: PRODUCT_URL
|
|
327841
327947
|
}, {
|
|
@@ -340608,7 +340714,7 @@ async function createRuntime() {
|
|
|
340608
340714
|
bootstrapTelemetry();
|
|
340609
340715
|
const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
|
|
340610
340716
|
[import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
|
|
340611
|
-
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.81.
|
|
340717
|
+
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.81.8"
|
|
340612
340718
|
}));
|
|
340613
340719
|
const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
|
|
340614
340720
|
resource,
|
|
@@ -340641,11 +340747,11 @@ async function createRuntime() {
|
|
|
340641
340747
|
setMeterProvider(meterProvider);
|
|
340642
340748
|
setLoggerProvider(loggerProvider);
|
|
340643
340749
|
if (meterProvider) {
|
|
340644
|
-
const meter = meterProvider.getMeter("ur-agent", "1.81.
|
|
340750
|
+
const meter = meterProvider.getMeter("ur-agent", "1.81.8");
|
|
340645
340751
|
setMeter(meter, (name, options2) => meter.createCounter(name, options2));
|
|
340646
340752
|
}
|
|
340647
340753
|
if (loggerProvider) {
|
|
340648
|
-
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.81.
|
|
340754
|
+
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.81.8"));
|
|
340649
340755
|
}
|
|
340650
340756
|
if (!cleanupRegistered3) {
|
|
340651
340757
|
cleanupRegistered3 = true;
|
|
@@ -341307,9 +341413,9 @@ async function assertMinVersion() {
|
|
|
341307
341413
|
if (false) {}
|
|
341308
341414
|
try {
|
|
341309
341415
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
341310
|
-
if (versionConfig.minVersion && lt("1.81.
|
|
341416
|
+
if (versionConfig.minVersion && lt("1.81.8", versionConfig.minVersion)) {
|
|
341311
341417
|
console.error(`
|
|
341312
|
-
It looks like your version of UR (${"1.81.
|
|
341418
|
+
It looks like your version of UR (${"1.81.8"}) needs an update.
|
|
341313
341419
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
341314
341420
|
|
|
341315
341421
|
To update, please run:
|
|
@@ -341525,7 +341631,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
341525
341631
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
341526
341632
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
341527
341633
|
pid: process.pid,
|
|
341528
|
-
currentVersion: "1.81.
|
|
341634
|
+
currentVersion: "1.81.8"
|
|
341529
341635
|
});
|
|
341530
341636
|
return "in_progress";
|
|
341531
341637
|
}
|
|
@@ -341534,7 +341640,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
341534
341640
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
341535
341641
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
341536
341642
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
341537
|
-
currentVersion: "1.81.
|
|
341643
|
+
currentVersion: "1.81.8"
|
|
341538
341644
|
});
|
|
341539
341645
|
console.error(`
|
|
341540
341646
|
Error: Windows NPM detected in WSL
|
|
@@ -342069,7 +342175,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
342069
342175
|
}
|
|
342070
342176
|
async function getDoctorDiagnostic() {
|
|
342071
342177
|
const installationType = await getCurrentInstallationType();
|
|
342072
|
-
const version2 = typeof MACRO !== "undefined" ? "1.81.
|
|
342178
|
+
const version2 = typeof MACRO !== "undefined" ? "1.81.8" : "unknown";
|
|
342073
342179
|
const installationPath = await getInstallationPath();
|
|
342074
342180
|
const invokedBinary = getInvokedBinary();
|
|
342075
342181
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -343004,8 +343110,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
343004
343110
|
const maxVersion = await getMaxVersion();
|
|
343005
343111
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
343006
343112
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
343007
|
-
if (gte("1.81.
|
|
343008
|
-
logForDebugging(`Native installer: current version ${"1.81.
|
|
343113
|
+
if (gte("1.81.8", maxVersion)) {
|
|
343114
|
+
logForDebugging(`Native installer: current version ${"1.81.8"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
343009
343115
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
343010
343116
|
latency_ms: Date.now() - startTime,
|
|
343011
343117
|
max_version: maxVersion,
|
|
@@ -343016,7 +343122,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
343016
343122
|
version2 = maxVersion;
|
|
343017
343123
|
}
|
|
343018
343124
|
}
|
|
343019
|
-
if (!forceReinstall && version2 === "1.81.
|
|
343125
|
+
if (!forceReinstall && version2 === "1.81.8" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
343020
343126
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
343021
343127
|
logEvent("tengu_native_update_complete", {
|
|
343022
343128
|
latency_ms: Date.now() - startTime,
|
|
@@ -346817,7 +346923,7 @@ var init_coreSchemas = __esm(() => {
|
|
|
346817
346923
|
displayName: exports_external.string().describe("Human-readable display name"),
|
|
346818
346924
|
description: exports_external.string().describe("Description of the model's capabilities"),
|
|
346819
346925
|
supportsEffort: exports_external.boolean().optional().describe("Whether this model supports effort levels"),
|
|
346820
|
-
supportedEffortLevels: exports_external.array(exports_external.enum(["low", "medium", "high", "max"])).optional().describe("Available effort levels for this model"),
|
|
346926
|
+
supportedEffortLevels: exports_external.array(exports_external.enum(["minimal", "low", "medium", "high", "xhigh", "max"])).optional().describe("Available effort levels for this model"),
|
|
346821
346927
|
supportsAdaptiveThinking: exports_external.boolean().optional().describe("Whether this model supports adaptive thinking (UR decides when and how much to think)"),
|
|
346822
346928
|
supportsFastMode: exports_external.boolean().optional().describe("Whether this model supports fast mode"),
|
|
346823
346929
|
supportsAutoMode: exports_external.boolean().optional().describe("Whether this model supports auto mode")
|
|
@@ -346847,7 +346953,10 @@ var init_coreSchemas = __esm(() => {
|
|
|
346847
346953
|
maxTurns: exports_external.number().int().positive().optional().describe("Maximum number of agentic turns (API round-trips) before stopping"),
|
|
346848
346954
|
background: exports_external.boolean().optional().describe("Run this agent as a background task (non-blocking, fire-and-forget) when invoked"),
|
|
346849
346955
|
memory: exports_external.enum(["user", "project", "local"]).optional().describe("Scope for auto-loading agent memory files. 'user' - ~/.ur/agent-memory/<agentType>/, 'project' - .ur/agent-memory/<agentType>/, 'local' - .ur/agent-memory-local/<agentType>/"),
|
|
346850
|
-
effort: exports_external.union([
|
|
346956
|
+
effort: exports_external.union([
|
|
346957
|
+
exports_external.enum(["minimal", "low", "medium", "high", "xhigh", "max"]),
|
|
346958
|
+
exports_external.number().int()
|
|
346959
|
+
]).optional().describe("Reasoning effort level for this agent. Either a named level or an integer"),
|
|
346851
346960
|
permissionMode: PermissionModeSchema().optional().describe("Permission mode controlling how tool executions are handled")
|
|
346852
346961
|
}).describe("Definition for a custom subagent that can be invoked via the Agent tool."));
|
|
346853
346962
|
SettingSourceSchema = lazySchema(() => exports_external.enum(["user", "project", "local"]).describe("Source for loading filesystem-based settings. " + "'user' - Global user settings (~/.ur/settings.json). " + "'project' - Project settings (.ur/settings.json). " + "'local' - Local settings (.ur/settings.local.json)."));
|
|
@@ -413703,7 +413812,7 @@ function isAnyTracingEnabled() {
|
|
|
413703
413812
|
return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
|
|
413704
413813
|
}
|
|
413705
413814
|
function getTracer() {
|
|
413706
|
-
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.81.
|
|
413815
|
+
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.81.8");
|
|
413707
413816
|
}
|
|
413708
413817
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
413709
413818
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -443842,7 +443951,7 @@ function Feedback({
|
|
|
443842
443951
|
platform: env2.platform,
|
|
443843
443952
|
gitRepo: envInfo.isGit,
|
|
443844
443953
|
terminal: env2.terminal,
|
|
443845
|
-
version: "1.81.
|
|
443954
|
+
version: "1.81.8",
|
|
443846
443955
|
transcript: normalizeMessagesForAPI(messages),
|
|
443847
443956
|
errors: sanitizedErrors,
|
|
443848
443957
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -444034,7 +444143,7 @@ function Feedback({
|
|
|
444034
444143
|
", ",
|
|
444035
444144
|
env2.terminal,
|
|
444036
444145
|
", v",
|
|
444037
|
-
"1.81.
|
|
444146
|
+
"1.81.8"
|
|
444038
444147
|
]
|
|
444039
444148
|
}, undefined, true, undefined, this)
|
|
444040
444149
|
]
|
|
@@ -444140,7 +444249,7 @@ ${sanitizedDescription}
|
|
|
444140
444249
|
` + `**Environment Info**
|
|
444141
444250
|
` + `- Platform: ${env2.platform}
|
|
444142
444251
|
` + `- Terminal: ${env2.terminal}
|
|
444143
|
-
` + `- Version: ${"1.81.
|
|
444252
|
+
` + `- Version: ${"1.81.8"}
|
|
444144
444253
|
` + `- Feedback ID: ${feedbackId}
|
|
444145
444254
|
` + `
|
|
444146
444255
|
**Errors**
|
|
@@ -447250,7 +447359,7 @@ function buildPrimarySection() {
|
|
|
447250
447359
|
}, undefined, false, undefined, this);
|
|
447251
447360
|
return [{
|
|
447252
447361
|
label: "Version",
|
|
447253
|
-
value: "1.81.
|
|
447362
|
+
value: "1.81.8"
|
|
447254
447363
|
}, {
|
|
447255
447364
|
label: "Session name",
|
|
447256
447365
|
value: nameValue
|
|
@@ -448025,12 +448134,14 @@ function getEffortNotificationText(effortValue, model, provider) {
|
|
|
448025
448134
|
}
|
|
448026
448135
|
function effortLevelToSymbol(level) {
|
|
448027
448136
|
switch (level) {
|
|
448137
|
+
case "minimal":
|
|
448028
448138
|
case "low":
|
|
448029
448139
|
return EFFORT_LOW;
|
|
448030
448140
|
case "medium":
|
|
448031
448141
|
return EFFORT_MEDIUM;
|
|
448032
448142
|
case "high":
|
|
448033
448143
|
return EFFORT_HIGH;
|
|
448144
|
+
case "xhigh":
|
|
448034
448145
|
case "max":
|
|
448035
448146
|
return EFFORT_MAX;
|
|
448036
448147
|
default:
|
|
@@ -448102,6 +448213,8 @@ function ModelPicker({
|
|
|
448102
448213
|
const [pickerError, setPickerError] = import_react102.useState(null);
|
|
448103
448214
|
const [loadingModels, setLoadingModels] = import_react102.useState(true);
|
|
448104
448215
|
const [modelReloadToken, setModelReloadToken] = import_react102.useState(0);
|
|
448216
|
+
const [effortCapabilityLoading, setEffortCapabilityLoading] = import_react102.useState(false);
|
|
448217
|
+
const [effortCapabilityWarning, setEffortCapabilityWarning] = import_react102.useState(null);
|
|
448105
448218
|
const effectiveSettings = getInitialSettings();
|
|
448106
448219
|
const currentProvider = getActiveProviderSettings(effectiveSettings).active ?? "ollama";
|
|
448107
448220
|
import_react102.useEffect(() => {
|
|
@@ -448120,6 +448233,7 @@ function ModelPicker({
|
|
|
448120
448233
|
value: model.id,
|
|
448121
448234
|
label: modelLabels.get(model.id) ?? model.displayName,
|
|
448122
448235
|
description: `${model.description} \xB7 ${result.source}`,
|
|
448236
|
+
reasoning: model.reasoning,
|
|
448123
448237
|
...model.supportedParameters !== undefined && !model.supportedParameters.includes("tools") ? { disabled: true } : {}
|
|
448124
448238
|
})));
|
|
448125
448239
|
setPickerError(result.warning ?? null);
|
|
@@ -448134,6 +448248,45 @@ function ModelPicker({
|
|
|
448134
448248
|
});
|
|
448135
448249
|
return () => controller.abort();
|
|
448136
448250
|
}, [currentProvider, modelReloadToken]);
|
|
448251
|
+
import_react102.useEffect(() => {
|
|
448252
|
+
if (currentProvider !== "llama.cpp" || !focusedValue) {
|
|
448253
|
+
setEffortCapabilityLoading(false);
|
|
448254
|
+
setEffortCapabilityWarning(null);
|
|
448255
|
+
return;
|
|
448256
|
+
}
|
|
448257
|
+
const focused = providerModelOptions.find((model) => model.value === focusedValue);
|
|
448258
|
+
if (!focused || focused.reasoning !== undefined) {
|
|
448259
|
+
setEffortCapabilityLoading(false);
|
|
448260
|
+
setEffortCapabilityWarning(null);
|
|
448261
|
+
return;
|
|
448262
|
+
}
|
|
448263
|
+
const controller = new AbortController;
|
|
448264
|
+
let cancelled = false;
|
|
448265
|
+
const timer = setTimeout(() => {
|
|
448266
|
+
setEffortCapabilityLoading(true);
|
|
448267
|
+
setEffortCapabilityWarning(null);
|
|
448268
|
+
ensureProviderReasoningCapabilitiesForModel(currentProvider, focusedValue, {
|
|
448269
|
+
settings: effectiveSettings,
|
|
448270
|
+
signal: controller.signal
|
|
448271
|
+
}).then((reasoning) => {
|
|
448272
|
+
if (cancelled)
|
|
448273
|
+
return;
|
|
448274
|
+
setProviderModelOptions((previous) => previous.map((model) => model.value === focusedValue ? { ...model, reasoning: reasoning ?? { supportedEfforts: [] } } : model));
|
|
448275
|
+
}).catch((error40) => {
|
|
448276
|
+
if (cancelled || controller.signal.aborted)
|
|
448277
|
+
return;
|
|
448278
|
+
setEffortCapabilityWarning(`Could not verify effort levels: ${error40 instanceof Error ? error40.message : String(error40)}`);
|
|
448279
|
+
}).finally(() => {
|
|
448280
|
+
if (!cancelled)
|
|
448281
|
+
setEffortCapabilityLoading(false);
|
|
448282
|
+
});
|
|
448283
|
+
}, 180);
|
|
448284
|
+
return () => {
|
|
448285
|
+
cancelled = true;
|
|
448286
|
+
clearTimeout(timer);
|
|
448287
|
+
controller.abort();
|
|
448288
|
+
};
|
|
448289
|
+
}, [currentProvider, focusedValue, providerModelOptions]);
|
|
448137
448290
|
use_input_default((input, key) => {
|
|
448138
448291
|
if (key.ctrl && (input === "r" || input === "R")) {
|
|
448139
448292
|
setModelReloadToken((token) => token + 1);
|
|
@@ -448160,22 +448313,22 @@ function ModelPicker({
|
|
|
448160
448313
|
const focusedModelName = selectOptions.find((opt) => opt.value === focusedValue)?.label;
|
|
448161
448314
|
const focusedModelOption = selectOptions.find((opt) => opt.value === focusedValue);
|
|
448162
448315
|
const focusedModel = resolveOptionModel(focusedValue);
|
|
448163
|
-
const
|
|
448164
|
-
const
|
|
448316
|
+
const focusedEffortLevels = focusedModel ? getSupportedEffortLevelsForModel(focusedModel, currentProvider) : [];
|
|
448317
|
+
const focusedSupportsEffort = focusedModel ? modelSupportsEffort(focusedModel, currentProvider) : false;
|
|
448165
448318
|
const focusedSupportsThinking = focusedModel ? modelSupportsThinking(focusedModel) : false;
|
|
448166
|
-
const focusedDefaultEffort = getDefaultEffortLevelForOption(focusedValue);
|
|
448167
|
-
const displayEffort = effort
|
|
448319
|
+
const focusedDefaultEffort = getDefaultEffortLevelForOption(focusedValue, currentProvider);
|
|
448320
|
+
const displayEffort = focusedModel ? resolveProviderEffortLevel(focusedModel, effort ?? focusedDefaultEffort, currentProvider) ?? focusedDefaultEffort : focusedDefaultEffort;
|
|
448168
448321
|
const handleFocus = (value) => {
|
|
448169
448322
|
setFocusedValue(value);
|
|
448170
448323
|
if (!hasToggledEffort && effortValue === undefined) {
|
|
448171
|
-
setEffort(getDefaultEffortLevelForOption(value));
|
|
448324
|
+
setEffort(getDefaultEffortLevelForOption(value, currentProvider));
|
|
448172
448325
|
}
|
|
448173
448326
|
};
|
|
448174
448327
|
const handleCycleEffort = (direction) => {
|
|
448175
448328
|
if (!focusedSupportsEffort) {
|
|
448176
448329
|
return;
|
|
448177
448330
|
}
|
|
448178
|
-
setEffort((prev) => cycleEffortLevel(prev ?? focusedDefaultEffort, direction,
|
|
448331
|
+
setEffort((prev) => cycleEffortLevel((focusedModel ? resolveProviderEffortLevel(focusedModel, prev ?? focusedDefaultEffort, currentProvider) : undefined) ?? focusedDefaultEffort, direction, focusedEffortLevels));
|
|
448179
448332
|
setHasToggledEffort(true);
|
|
448180
448333
|
};
|
|
448181
448334
|
const handleToggleThinking = () => {
|
|
@@ -448191,8 +448344,10 @@ function ModelPicker({
|
|
|
448191
448344
|
"modelPicker:toggleThinking": handleToggleThinking
|
|
448192
448345
|
}, { context: "ModelPicker" });
|
|
448193
448346
|
function handleSelect(value) {
|
|
448347
|
+
const selectedModel = resolveOptionModel(value);
|
|
448348
|
+
const selectedEffort = hasToggledEffort && selectedModel && effort ? resolveProviderEffortLevel(selectedModel, effort, currentProvider) : undefined;
|
|
448194
448349
|
logEvent("tengu_model_command_menu_effort", {
|
|
448195
|
-
effort
|
|
448350
|
+
effort: selectedEffort
|
|
448196
448351
|
});
|
|
448197
448352
|
if (value !== NO_PREFERENCE) {
|
|
448198
448353
|
const validation = validateProviderModelPair(currentProvider, value, {
|
|
@@ -448204,7 +448359,7 @@ function ModelPicker({
|
|
|
448204
448359
|
}
|
|
448205
448360
|
}
|
|
448206
448361
|
if (!skipSettingsWrite) {
|
|
448207
|
-
const effortLevel = resolvePickerEffortPersistence(effort, getDefaultEffortLevelForOption(value), getSettingsForSource("userSettings")?.effortLevel, hasToggledEffort);
|
|
448362
|
+
const effortLevel = resolvePickerEffortPersistence(hasToggledEffort ? selectedEffort : effort, getDefaultEffortLevelForOption(value, currentProvider), getSettingsForSource("userSettings")?.effortLevel, hasToggledEffort);
|
|
448208
448363
|
const persistable = toPersistableEffort(effortLevel);
|
|
448209
448364
|
if (persistable !== undefined) {
|
|
448210
448365
|
updateSettingsForSource("userSettings", {
|
|
@@ -448222,8 +448377,6 @@ function ModelPicker({
|
|
|
448222
448377
|
...hasToggledThinking ? { thinkingEnabled } : {}
|
|
448223
448378
|
}));
|
|
448224
448379
|
}
|
|
448225
|
-
const selectedModel = resolveOptionModel(value);
|
|
448226
|
-
const selectedEffort = hasToggledEffort && selectedModel && modelSupportsEffort(selectedModel) ? effort : undefined;
|
|
448227
448380
|
if (value === NO_PREFERENCE) {
|
|
448228
448381
|
onSelect(null, selectedEffort);
|
|
448229
448382
|
return;
|
|
@@ -448375,21 +448528,33 @@ function ModelPicker({
|
|
|
448375
448528
|
marginBottom: 1,
|
|
448376
448529
|
flexDirection: "column",
|
|
448377
448530
|
children: [
|
|
448378
|
-
focusedSupportsEffort ? /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(
|
|
448379
|
-
dimColor: true,
|
|
448531
|
+
focusedSupportsEffort ? /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(jsx_dev_runtime174.Fragment, {
|
|
448380
448532
|
children: [
|
|
448381
|
-
/* @__PURE__ */ jsx_dev_runtime174.jsxDEV(EffortLevelIndicator, {
|
|
448382
|
-
effort: displayEffort
|
|
448383
|
-
}, undefined, false, undefined, this),
|
|
448384
|
-
" ",
|
|
448385
|
-
capitalize_default(displayEffort),
|
|
448386
|
-
" effort",
|
|
448387
|
-
displayEffort === focusedDefaultEffort ? " (default)" : "",
|
|
448388
|
-
" ",
|
|
448389
448533
|
/* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedText, {
|
|
448534
|
+
dimColor: true,
|
|
448535
|
+
children: [
|
|
448536
|
+
/* @__PURE__ */ jsx_dev_runtime174.jsxDEV(EffortLevelIndicator, {
|
|
448537
|
+
effort: displayEffort
|
|
448538
|
+
}, undefined, false, undefined, this),
|
|
448539
|
+
" ",
|
|
448540
|
+
capitalize_default(displayEffort),
|
|
448541
|
+
" effort",
|
|
448542
|
+
displayEffort === focusedDefaultEffort ? " (default)" : "",
|
|
448543
|
+
" ",
|
|
448544
|
+
/* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedText, {
|
|
448545
|
+
color: "subtle",
|
|
448546
|
+
children: "\u2190 \u2192 to adjust"
|
|
448547
|
+
}, undefined, false, undefined, this)
|
|
448548
|
+
]
|
|
448549
|
+
}, undefined, true, undefined, this),
|
|
448550
|
+
/* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedText, {
|
|
448551
|
+
dimColor: true,
|
|
448390
448552
|
color: "subtle",
|
|
448391
|
-
children:
|
|
448392
|
-
|
|
448553
|
+
children: [
|
|
448554
|
+
"Provider levels: ",
|
|
448555
|
+
focusedEffortLevels.join(" \xB7 ")
|
|
448556
|
+
]
|
|
448557
|
+
}, undefined, true, undefined, this)
|
|
448393
448558
|
]
|
|
448394
448559
|
}, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedText, {
|
|
448395
448560
|
color: "subtle",
|
|
@@ -448398,9 +448563,14 @@ function ModelPicker({
|
|
|
448398
448563
|
effort: undefined
|
|
448399
448564
|
}, undefined, false, undefined, this),
|
|
448400
448565
|
" Effort not supported",
|
|
448401
|
-
focusedModelName ? ` for ${focusedModelName}` : ""
|
|
448566
|
+
focusedModelName ? ` for ${focusedModelName}` : "",
|
|
448567
|
+
effortCapabilityLoading ? " \xB7 checking provider\u2026" : ""
|
|
448402
448568
|
]
|
|
448403
448569
|
}, undefined, true, undefined, this),
|
|
448570
|
+
effortCapabilityWarning && /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedText, {
|
|
448571
|
+
color: "warning",
|
|
448572
|
+
children: effortCapabilityWarning
|
|
448573
|
+
}, undefined, false, undefined, this),
|
|
448404
448574
|
focusedSupportsThinking ? /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedText, {
|
|
448405
448575
|
dimColor: true,
|
|
448406
448576
|
children: [
|
|
@@ -448491,8 +448661,8 @@ function EffortLevelIndicator({
|
|
|
448491
448661
|
children: effortLevelToSymbol(effort ?? "low")
|
|
448492
448662
|
}, undefined, false, undefined, this);
|
|
448493
448663
|
}
|
|
448494
|
-
function cycleEffortLevel(current, direction,
|
|
448495
|
-
const levels =
|
|
448664
|
+
function cycleEffortLevel(current, direction, supportedLevels) {
|
|
448665
|
+
const levels = supportedLevels.length > 0 ? [...supportedLevels] : [current];
|
|
448496
448666
|
const idx = levels.indexOf(current);
|
|
448497
448667
|
const currentIndex = idx !== -1 ? idx : levels.indexOf("high");
|
|
448498
448668
|
if (direction === "right") {
|
|
@@ -448500,10 +448670,14 @@ function cycleEffortLevel(current, direction, includeMax) {
|
|
|
448500
448670
|
}
|
|
448501
448671
|
return levels[(currentIndex - 1 + levels.length) % levels.length];
|
|
448502
448672
|
}
|
|
448503
|
-
function getDefaultEffortLevelForOption(value) {
|
|
448673
|
+
function getDefaultEffortLevelForOption(value, provider = getActiveProviderSettings(getInitialSettings()).active ?? "ollama") {
|
|
448504
448674
|
const resolved = resolveOptionModel(value) ?? getDefaultMainLoopModel();
|
|
448505
|
-
const
|
|
448506
|
-
|
|
448675
|
+
const levels = getSupportedEffortLevelsForModel(resolved, provider);
|
|
448676
|
+
const defaultValue = getDefaultEffortForModel(resolved, provider);
|
|
448677
|
+
if (defaultValue !== undefined) {
|
|
448678
|
+
return resolveProviderEffortLevel(resolved, convertEffortValueToLevel(defaultValue), provider) ?? "high";
|
|
448679
|
+
}
|
|
448680
|
+
return levels.includes("high") ? "high" : levels.at(-1) ?? "high";
|
|
448507
448681
|
}
|
|
448508
448682
|
var import_react102, jsx_dev_runtime174, NO_PREFERENCE = "__NO_PREFERENCE__", selectEffortValue = (s) => s.effortValue, selectFastMode = (s) => isFastModeEnabled() ? s.fastMode : false, selectThinkingEnabled = (s) => s.thinkingEnabled;
|
|
448509
448683
|
var init_ModelPicker = __esm(() => {
|
|
@@ -450688,7 +450862,7 @@ function Config({
|
|
|
450688
450862
|
}
|
|
450689
450863
|
}, undefined, false, undefined, this)
|
|
450690
450864
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
|
|
450691
|
-
currentVersion: "1.81.
|
|
450865
|
+
currentVersion: "1.81.8",
|
|
450692
450866
|
onChoice: (choice) => {
|
|
450693
450867
|
setShowSubmenu(null);
|
|
450694
450868
|
setTabsHidden(false);
|
|
@@ -450700,7 +450874,7 @@ function Config({
|
|
|
450700
450874
|
autoUpdatesChannel: "stable"
|
|
450701
450875
|
};
|
|
450702
450876
|
if (choice === "stay") {
|
|
450703
|
-
newSettings.minimumVersion = "1.81.
|
|
450877
|
+
newSettings.minimumVersion = "1.81.8";
|
|
450704
450878
|
}
|
|
450705
450879
|
updateSettingsForSource("userSettings", newSettings);
|
|
450706
450880
|
setSettingsData((prev_27) => ({
|
|
@@ -459009,7 +459183,7 @@ function HelpV2(t0) {
|
|
|
459009
459183
|
let t6;
|
|
459010
459184
|
if ($2[31] !== tabs) {
|
|
459011
459185
|
t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
|
|
459012
|
-
title: `UR v${"1.81.
|
|
459186
|
+
title: `UR v${"1.81.8"}`,
|
|
459013
459187
|
color: "professionalBlue",
|
|
459014
459188
|
defaultTab: "general",
|
|
459015
459189
|
children: tabs
|
|
@@ -459942,7 +460116,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
459942
460116
|
async function handleInitialize(options2) {
|
|
459943
460117
|
return {
|
|
459944
460118
|
name: "UR",
|
|
459945
|
-
version: "1.81.
|
|
460119
|
+
version: "1.81.8",
|
|
459946
460120
|
protocolVersion: "0.1.0",
|
|
459947
460121
|
workspaceRoot: options2.cwd,
|
|
459948
460122
|
capabilities: {
|
|
@@ -477050,7 +477224,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
477050
477224
|
return [];
|
|
477051
477225
|
}
|
|
477052
477226
|
}
|
|
477053
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.
|
|
477227
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.8") {
|
|
477054
477228
|
if (process.env.USER_TYPE === "ant") {
|
|
477055
477229
|
const changelog = "";
|
|
477056
477230
|
if (changelog) {
|
|
@@ -477077,7 +477251,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.6")
|
|
|
477077
477251
|
releaseNotes
|
|
477078
477252
|
};
|
|
477079
477253
|
}
|
|
477080
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.81.
|
|
477254
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.81.8") {
|
|
477081
477255
|
if (process.env.USER_TYPE === "ant") {
|
|
477082
477256
|
const changelog = "";
|
|
477083
477257
|
if (changelog) {
|
|
@@ -479985,7 +480159,7 @@ function getRecentActivitySync() {
|
|
|
479985
480159
|
return cachedActivity;
|
|
479986
480160
|
}
|
|
479987
480161
|
function getLogoDisplayData() {
|
|
479988
|
-
const version2 = process.env.DEMO_VERSION ?? "1.81.
|
|
480162
|
+
const version2 = process.env.DEMO_VERSION ?? "1.81.8";
|
|
479989
480163
|
const serverUrl = getDirectConnectServerUrl();
|
|
479990
480164
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
479991
480165
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -480893,7 +481067,7 @@ function LogoV2() {
|
|
|
480893
481067
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
480894
481068
|
t2 = () => {
|
|
480895
481069
|
const currentConfig = getGlobalConfig();
|
|
480896
|
-
if (currentConfig.lastReleaseNotesSeen === "1.81.
|
|
481070
|
+
if (currentConfig.lastReleaseNotesSeen === "1.81.8") {
|
|
480897
481071
|
return;
|
|
480898
481072
|
}
|
|
480899
481073
|
saveGlobalConfig(_temp325);
|
|
@@ -481581,12 +481755,12 @@ function LogoV2() {
|
|
|
481581
481755
|
return t41;
|
|
481582
481756
|
}
|
|
481583
481757
|
function _temp325(current) {
|
|
481584
|
-
if (current.lastReleaseNotesSeen === "1.81.
|
|
481758
|
+
if (current.lastReleaseNotesSeen === "1.81.8") {
|
|
481585
481759
|
return current;
|
|
481586
481760
|
}
|
|
481587
481761
|
return {
|
|
481588
481762
|
...current,
|
|
481589
|
-
lastReleaseNotesSeen: "1.81.
|
|
481763
|
+
lastReleaseNotesSeen: "1.81.8"
|
|
481590
481764
|
};
|
|
481591
481765
|
}
|
|
481592
481766
|
function _temp241(s_0) {
|
|
@@ -497536,7 +497710,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
497536
497710
|
if (spec.name !== specName) {
|
|
497537
497711
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
497538
497712
|
}
|
|
497539
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.
|
|
497713
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.8" : "1.81.8");
|
|
497540
497714
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
497541
497715
|
throw new Error("invalid ur-agent package version");
|
|
497542
497716
|
}
|
|
@@ -498529,7 +498703,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
498529
498703
|
path: ".github/workflows/ur.yml",
|
|
498530
498704
|
root: "project",
|
|
498531
498705
|
content: compileAgenticCiWorkflow("default", {
|
|
498532
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.81.
|
|
498706
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.81.8" : "1.81.8"
|
|
498533
498707
|
})
|
|
498534
498708
|
},
|
|
498535
498709
|
{
|
|
@@ -498592,7 +498766,7 @@ function value(tokens, flag) {
|
|
|
498592
498766
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
498593
498767
|
}
|
|
498594
498768
|
function cliVersion() {
|
|
498595
|
-
return typeof MACRO !== "undefined" ? "1.81.
|
|
498769
|
+
return typeof MACRO !== "undefined" ? "1.81.8" : "1.81.8";
|
|
498596
498770
|
}
|
|
498597
498771
|
function workflowPath(cwd2) {
|
|
498598
498772
|
return join168(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -504448,7 +504622,7 @@ function createAcpStdioApp(deps) {
|
|
|
504448
504622
|
}
|
|
504449
504623
|
},
|
|
504450
504624
|
authMethods: [],
|
|
504451
|
-
agentInfo: { name: "UR-Nexus", version: "1.81.
|
|
504625
|
+
agentInfo: { name: "UR-Nexus", version: "1.81.8" }
|
|
504452
504626
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
504453
504627
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
504454
504628
|
await runtime2.announce({
|
|
@@ -504545,7 +504719,7 @@ function createAcpStdioAgent(deps) {
|
|
|
504545
504719
|
}
|
|
504546
504720
|
},
|
|
504547
504721
|
authMethods: [],
|
|
504548
|
-
agentInfo: { name: "UR-Nexus", version: "1.81.
|
|
504722
|
+
agentInfo: { name: "UR-Nexus", version: "1.81.8" }
|
|
504549
504723
|
});
|
|
504550
504724
|
return;
|
|
504551
504725
|
case "authenticate":
|
|
@@ -715797,7 +715971,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
715797
715971
|
smapsRollup,
|
|
715798
715972
|
platform: process.platform,
|
|
715799
715973
|
nodeVersion: process.version,
|
|
715800
|
-
ccVersion: "1.81.
|
|
715974
|
+
ccVersion: "1.81.8"
|
|
715801
715975
|
};
|
|
715802
715976
|
}
|
|
715803
715977
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -716386,7 +716560,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
716386
716560
|
var call154 = async () => {
|
|
716387
716561
|
return {
|
|
716388
716562
|
type: "text",
|
|
716389
|
-
value: "1.81.
|
|
716563
|
+
value: "1.81.8"
|
|
716390
716564
|
};
|
|
716391
716565
|
}, version2, version_default;
|
|
716392
716566
|
var init_version = __esm(() => {
|
|
@@ -719398,6 +719572,8 @@ function ProviderFirstModelPicker({
|
|
|
719398
719572
|
const [apiKeyCursorOffset, setApiKeyCursorOffset] = import_react186.useState(0);
|
|
719399
719573
|
const [connectError, setConnectError] = import_react186.useState(null);
|
|
719400
719574
|
const [credentialNotice, setCredentialNotice] = import_react186.useState(null);
|
|
719575
|
+
const [effortCapabilityLoading, setEffortCapabilityLoading] = import_react186.useState(false);
|
|
719576
|
+
const [effortCapabilityWarning, setEffortCapabilityWarning] = import_react186.useState(null);
|
|
719401
719577
|
const [modelReloadToken, setModelReloadToken] = import_react186.useState(0);
|
|
719402
719578
|
const terminalSize = import_react186.useContext(TerminalSizeContext);
|
|
719403
719579
|
const keyInputColumns = getProviderKeyInputColumns(terminalSize?.columns);
|
|
@@ -719411,10 +719587,10 @@ function ProviderFirstModelPicker({
|
|
|
719411
719587
|
async function loadProviderStatus() {
|
|
719412
719588
|
setLoadingProviders(true);
|
|
719413
719589
|
const providers = listProviders({ includeExternalAppBridges: true });
|
|
719414
|
-
const settings =
|
|
719590
|
+
const settings = getInitialSettings();
|
|
719415
719591
|
const options5 = await Promise.all(providers.map(async (provider) => {
|
|
719416
719592
|
const status2 = await getProviderStatus(provider.id, {
|
|
719417
|
-
settings
|
|
719593
|
+
settings
|
|
719418
719594
|
});
|
|
719419
719595
|
const accessType = getProviderAccessTypeLabel(provider);
|
|
719420
719596
|
return {
|
|
@@ -719445,7 +719621,7 @@ function ProviderFirstModelPicker({
|
|
|
719445
719621
|
const providerId = selectedProvider.value;
|
|
719446
719622
|
try {
|
|
719447
719623
|
const result = await listModelsForProviderWithSource(providerId, {
|
|
719448
|
-
settings:
|
|
719624
|
+
settings: getInitialSettings(),
|
|
719449
719625
|
signal: controller.signal,
|
|
719450
719626
|
freshOnly: providerId === "openrouter"
|
|
719451
719627
|
});
|
|
@@ -719481,6 +719657,45 @@ function ProviderFirstModelPicker({
|
|
|
719481
719657
|
controller.abort();
|
|
719482
719658
|
};
|
|
719483
719659
|
}, [selectedProvider, modelReloadToken]);
|
|
719660
|
+
import_react186.useEffect(() => {
|
|
719661
|
+
if (selectedProvider?.value !== "llama.cpp" || !focusedModelValue) {
|
|
719662
|
+
setEffortCapabilityLoading(false);
|
|
719663
|
+
setEffortCapabilityWarning(null);
|
|
719664
|
+
return;
|
|
719665
|
+
}
|
|
719666
|
+
const focused = modelOptions.find((model) => model.value === focusedModelValue);
|
|
719667
|
+
if (!focused || focused.reasoning !== undefined) {
|
|
719668
|
+
setEffortCapabilityLoading(false);
|
|
719669
|
+
setEffortCapabilityWarning(null);
|
|
719670
|
+
return;
|
|
719671
|
+
}
|
|
719672
|
+
const controller = new AbortController;
|
|
719673
|
+
let cancelled = false;
|
|
719674
|
+
const timer = setTimeout(() => {
|
|
719675
|
+
setEffortCapabilityLoading(true);
|
|
719676
|
+
setEffortCapabilityWarning(null);
|
|
719677
|
+
ensureProviderReasoningCapabilitiesForModel("llama.cpp", focusedModelValue, {
|
|
719678
|
+
settings: getInitialSettings(),
|
|
719679
|
+
signal: controller.signal
|
|
719680
|
+
}).then((reasoning) => {
|
|
719681
|
+
if (cancelled)
|
|
719682
|
+
return;
|
|
719683
|
+
setModelOptions((previous) => previous.map((model) => model.value === focusedModelValue ? { ...model, reasoning: reasoning ?? { supportedEfforts: [] } } : model));
|
|
719684
|
+
}).catch((error40) => {
|
|
719685
|
+
if (cancelled || controller.signal.aborted)
|
|
719686
|
+
return;
|
|
719687
|
+
setEffortCapabilityWarning(`Could not verify effort levels: ${error40 instanceof Error ? error40.message : String(error40)}`);
|
|
719688
|
+
}).finally(() => {
|
|
719689
|
+
if (!cancelled)
|
|
719690
|
+
setEffortCapabilityLoading(false);
|
|
719691
|
+
});
|
|
719692
|
+
}, 180);
|
|
719693
|
+
return () => {
|
|
719694
|
+
cancelled = true;
|
|
719695
|
+
clearTimeout(timer);
|
|
719696
|
+
controller.abort();
|
|
719697
|
+
};
|
|
719698
|
+
}, [selectedProvider?.value, focusedModelValue, modelOptions]);
|
|
719484
719699
|
use_input_default((_input, key) => {
|
|
719485
719700
|
if (key.escape) {
|
|
719486
719701
|
handleKeyCancel();
|
|
@@ -719505,10 +719720,11 @@ function ProviderFirstModelPicker({
|
|
|
719505
719720
|
const focusedProvider = providerOptions.find((p2) => p2.value === focusedProviderValue);
|
|
719506
719721
|
const focusedModel = modelOptions.find((m) => m.value === focusedModelValue);
|
|
719507
719722
|
const focusedResolvedModel = focusedModel ? parseUserSpecifiedModel(focusedModel.value) : undefined;
|
|
719508
|
-
const
|
|
719509
|
-
const
|
|
719510
|
-
const
|
|
719511
|
-
const
|
|
719723
|
+
const focusedProviderId = selectedProvider?.value;
|
|
719724
|
+
const focusedEffortLevels = focusedResolvedModel && focusedProviderId ? getSupportedEffortLevelsForModel(focusedResolvedModel, focusedProviderId) : [];
|
|
719725
|
+
const focusedSupportsEffort = focusedResolvedModel ? modelSupportsEffort(focusedResolvedModel, focusedProviderId) : false;
|
|
719726
|
+
const focusedDefaultEffort = focusedResolvedModel ? convertEffortValueToLevel(getDefaultEffortForModel(focusedResolvedModel, focusedProviderId) ?? (focusedEffortLevels.includes("high") ? "high" : focusedEffortLevels.at(-1)) ?? "high") : "high";
|
|
719727
|
+
const displayedEffort = focusedResolvedModel ? resolveProviderEffortLevel(focusedResolvedModel, effort ?? focusedDefaultEffort, focusedProviderId) ?? focusedDefaultEffort : focusedDefaultEffort;
|
|
719512
719728
|
function handleProviderFocus(value2) {
|
|
719513
719729
|
setFocusedProviderValue(value2);
|
|
719514
719730
|
setProviderWarning(null);
|
|
@@ -719519,7 +719735,7 @@ function ProviderFirstModelPicker({
|
|
|
719519
719735
|
function handleCycleEffort(direction) {
|
|
719520
719736
|
if (!focusedSupportsEffort)
|
|
719521
719737
|
return;
|
|
719522
|
-
setEffort((previous) => cycleProviderPickerEffort(previous ?? focusedDefaultEffort, direction,
|
|
719738
|
+
setEffort((previous) => cycleProviderPickerEffort(resolveProviderEffortLevel(focusedResolvedModel, previous ?? focusedDefaultEffort, focusedProviderId) ?? focusedDefaultEffort, direction, focusedEffortLevels));
|
|
719523
719739
|
setHasToggledEffort(true);
|
|
719524
719740
|
}
|
|
719525
719741
|
use_input_default((_input, key, event) => {
|
|
@@ -719568,8 +719784,11 @@ function ProviderFirstModelPicker({
|
|
|
719568
719784
|
}
|
|
719569
719785
|
}
|
|
719570
719786
|
function handleModelSelect(value2) {
|
|
719787
|
+
const selectedProviderId = selectedProvider?.value;
|
|
719788
|
+
const selectedResolvedModel = parseUserSpecifiedModel(value2);
|
|
719789
|
+
const selectedEffort = hasToggledEffort && selectedProviderId && effort ? resolveProviderEffortLevel(selectedResolvedModel, effort, selectedProviderId) : undefined;
|
|
719571
719790
|
logEvent("tengu_model_command_menu_effort", {
|
|
719572
|
-
effort,
|
|
719791
|
+
effort: selectedEffort,
|
|
719573
719792
|
provider: selectedProvider?.value,
|
|
719574
719793
|
model: value2,
|
|
719575
719794
|
source: modelSource
|
|
@@ -719612,7 +719831,7 @@ function ProviderFirstModelPicker({
|
|
|
719612
719831
|
}
|
|
719613
719832
|
}
|
|
719614
719833
|
if (hasToggledEffort) {
|
|
719615
|
-
const persistable =
|
|
719834
|
+
const persistable = selectedEffort ? toPersistableEffort(selectedEffort) : undefined;
|
|
719616
719835
|
if (persistable !== undefined) {
|
|
719617
719836
|
updateSettingsForSource("userSettings", {
|
|
719618
719837
|
effortLevel: persistable
|
|
@@ -719626,10 +719845,10 @@ function ProviderFirstModelPicker({
|
|
|
719626
719845
|
active: selectedProvider?.value,
|
|
719627
719846
|
model: value2
|
|
719628
719847
|
},
|
|
719629
|
-
...hasToggledEffort ? { effortValue:
|
|
719848
|
+
...hasToggledEffort ? { effortValue: selectedEffort } : {},
|
|
719630
719849
|
...hasToggledThinking ? { thinkingEnabled } : {}
|
|
719631
719850
|
}));
|
|
719632
|
-
onSelect(value2,
|
|
719851
|
+
onSelect(value2, selectedEffort, selectedProvider ? {
|
|
719633
719852
|
providerId: selectedProvider.value,
|
|
719634
719853
|
providerName: selectedProvider.label,
|
|
719635
719854
|
accessType: selectedProvider.accessType,
|
|
@@ -720090,26 +720309,54 @@ function ProviderFirstModelPicker({
|
|
|
720090
720309
|
dimColor: true,
|
|
720091
720310
|
children: focusedModel.description
|
|
720092
720311
|
}, undefined, false, undefined, this),
|
|
720093
|
-
focusedSupportsEffort && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(
|
|
720312
|
+
focusedSupportsEffort && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedBox_default, {
|
|
720313
|
+
flexDirection: "column",
|
|
720094
720314
|
children: [
|
|
720095
720315
|
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
720096
|
-
color: "ur",
|
|
720097
720316
|
children: [
|
|
720098
|
-
|
|
720099
|
-
|
|
720100
|
-
|
|
720317
|
+
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
720318
|
+
color: "ur",
|
|
720319
|
+
children: [
|
|
720320
|
+
effortLevelToSymbol(displayedEffort),
|
|
720321
|
+
" ",
|
|
720322
|
+
displayedEffort.toUpperCase()
|
|
720323
|
+
]
|
|
720324
|
+
}, undefined, true, undefined, this),
|
|
720325
|
+
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
720326
|
+
dimColor: true,
|
|
720327
|
+
color: "subtle",
|
|
720328
|
+
children: [
|
|
720329
|
+
" ",
|
|
720330
|
+
"provider effort \xB7 use \u2190 \u2192 to adjust"
|
|
720331
|
+
]
|
|
720332
|
+
}, undefined, true, undefined, this)
|
|
720101
720333
|
]
|
|
720102
720334
|
}, undefined, true, undefined, this),
|
|
720103
720335
|
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
720104
720336
|
dimColor: true,
|
|
720105
720337
|
color: "subtle",
|
|
720106
720338
|
children: [
|
|
720107
|
-
" ",
|
|
720108
|
-
"
|
|
720339
|
+
"Provider levels: ",
|
|
720340
|
+
focusedEffortLevels.join(" \xB7 ")
|
|
720109
720341
|
]
|
|
720110
720342
|
}, undefined, true, undefined, this)
|
|
720111
720343
|
]
|
|
720112
|
-
}, undefined, true, undefined, this)
|
|
720344
|
+
}, undefined, true, undefined, this),
|
|
720345
|
+
!focusedSupportsEffort && effortCapabilityLoading && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
720346
|
+
dimColor: true,
|
|
720347
|
+
color: "subtle",
|
|
720348
|
+
children: "Checking this model's provider effort levels\u2026"
|
|
720349
|
+
}, undefined, false, undefined, this),
|
|
720350
|
+
!focusedSupportsEffort && !effortCapabilityLoading && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
720351
|
+
dimColor: true,
|
|
720352
|
+
color: "subtle",
|
|
720353
|
+
children: "Graded effort not advertised for this model."
|
|
720354
|
+
}, undefined, false, undefined, this),
|
|
720355
|
+
effortCapabilityWarning && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
720356
|
+
dimColor: true,
|
|
720357
|
+
color: "error",
|
|
720358
|
+
children: effortCapabilityWarning
|
|
720359
|
+
}, undefined, false, undefined, this)
|
|
720113
720360
|
]
|
|
720114
720361
|
}, undefined, true, undefined, this),
|
|
720115
720362
|
modelWarning && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedBox_default, {
|
|
@@ -720176,8 +720423,8 @@ function getProviderKeyInputColumns(terminalColumns) {
|
|
|
720176
720423
|
const columns = Number.isFinite(terminalColumns) && terminalColumns > 0 ? Math.floor(terminalColumns) : 80;
|
|
720177
720424
|
return Math.max(8, columns - 20);
|
|
720178
720425
|
}
|
|
720179
|
-
function cycleProviderPickerEffort(current, direction,
|
|
720180
|
-
const levels =
|
|
720426
|
+
function cycleProviderPickerEffort(current, direction, supportedLevels) {
|
|
720427
|
+
const levels = supportedLevels.length > 0 ? [...supportedLevels] : [current];
|
|
720181
720428
|
const index2 = levels.indexOf(current);
|
|
720182
720429
|
const currentIndex = index2 >= 0 ? index2 : levels.indexOf("high");
|
|
720183
720430
|
const delta = direction === "right" ? 1 : -1;
|
|
@@ -722161,7 +722408,12 @@ __export(exports_effort, {
|
|
|
722161
722408
|
executeEffort: () => executeEffort,
|
|
722162
722409
|
call: () => call168
|
|
722163
722410
|
});
|
|
722164
|
-
function setEffortValue(effortValue, model) {
|
|
722411
|
+
function setEffortValue(effortValue, model, provider = getRuntimeProvider()) {
|
|
722412
|
+
if (model && !modelSupportsEffort(model, provider)) {
|
|
722413
|
+
return {
|
|
722414
|
+
message: `Not applied: ${model} on ${provider} does not advertise graded reasoning-effort levels.`
|
|
722415
|
+
};
|
|
722416
|
+
}
|
|
722165
722417
|
const persistable = toPersistableEffort(effortValue);
|
|
722166
722418
|
if (persistable !== undefined) {
|
|
722167
722419
|
const result = updateSettingsForSource("userSettings", {
|
|
@@ -722196,40 +722448,56 @@ function setEffortValue(effortValue, model) {
|
|
|
722196
722448
|
}
|
|
722197
722449
|
const description = getEffortValueDescription(effortValue);
|
|
722198
722450
|
const suffix = persistable !== undefined ? "" : " (this session only)";
|
|
722199
|
-
const appliedLevel = model ?
|
|
722451
|
+
const appliedLevel = model && typeof effortValue === "string" ? resolveProviderEffortLevel(model, effortValue, provider) : effortValue;
|
|
722200
722452
|
if (typeof effortValue === "string" && appliedLevel !== effortValue) {
|
|
722201
722453
|
return {
|
|
722202
|
-
message: `Requested
|
|
722454
|
+
message: `Requested ${effortValue}${suffix}; applied ${appliedLevel} for ${model} on ${provider}: ${getEffortValueDescription(appliedLevel)}`,
|
|
722203
722455
|
effortUpdate: {
|
|
722204
722456
|
value: effortValue
|
|
722205
722457
|
}
|
|
722206
722458
|
};
|
|
722207
722459
|
}
|
|
722208
722460
|
return {
|
|
722209
|
-
message: `Set effort level to ${effortValue}${suffix}: ${description}`,
|
|
722461
|
+
message: `Set effort level to ${effortValue}${suffix} for ${model ?? "the active model"} on ${provider}: ${description}`,
|
|
722210
722462
|
effortUpdate: {
|
|
722211
722463
|
value: effortValue
|
|
722212
722464
|
}
|
|
722213
722465
|
};
|
|
722214
722466
|
}
|
|
722215
|
-
function showCurrentEffort(appStateEffort, model) {
|
|
722467
|
+
function showCurrentEffort(appStateEffort, model, provider = getRuntimeProvider()) {
|
|
722216
722468
|
const envOverride = getEffortEnvOverride();
|
|
722217
722469
|
const effectiveValue = envOverride === null ? undefined : envOverride ?? appStateEffort;
|
|
722218
722470
|
if (effectiveValue === undefined) {
|
|
722219
|
-
|
|
722471
|
+
if (!modelSupportsEffort(model, provider)) {
|
|
722472
|
+
return {
|
|
722473
|
+
message: `Effort: unavailable \u2014 ${model} on ${provider} does not advertise graded reasoning-effort levels.`
|
|
722474
|
+
};
|
|
722475
|
+
}
|
|
722476
|
+
const applied = resolveAppliedEffort(model, appStateEffort, provider);
|
|
722477
|
+
if (applied === undefined) {
|
|
722478
|
+
return {
|
|
722479
|
+
message: `Effort: auto for ${model} on ${provider}; UR sends no explicit effort and the provider chooses its default. Provider levels: ${getSupportedEffortLevelsForModel(model, provider).join(", ")}`
|
|
722480
|
+
};
|
|
722481
|
+
}
|
|
722482
|
+
const level = getDisplayedEffortLevel(model, appStateEffort, provider);
|
|
722483
|
+
return {
|
|
722484
|
+
message: `Effort: auto; applied ${level} for ${model} on ${provider}. Provider levels: ${getSupportedEffortLevelsForModel(model, provider).join(", ")}`
|
|
722485
|
+
};
|
|
722486
|
+
}
|
|
722487
|
+
if (!modelSupportsEffort(model, provider)) {
|
|
722220
722488
|
return {
|
|
722221
|
-
message: `Effort
|
|
722489
|
+
message: `Effort: unavailable \u2014 ${model} on ${provider} does not advertise graded reasoning-effort levels.`
|
|
722222
722490
|
};
|
|
722223
722491
|
}
|
|
722224
|
-
const appliedLevel = getDisplayedEffortLevel(model, appStateEffort);
|
|
722492
|
+
const appliedLevel = getDisplayedEffortLevel(model, appStateEffort, provider);
|
|
722225
722493
|
if (typeof effectiveValue === "string" && appliedLevel !== effectiveValue) {
|
|
722226
722494
|
return {
|
|
722227
|
-
message: `Requested effort: ${effectiveValue}; applied effort for ${model}: ${appliedLevel} (${getEffortValueDescription(appliedLevel)})`
|
|
722495
|
+
message: `Requested effort: ${effectiveValue}; applied effort for ${model} on ${provider}: ${appliedLevel} (${getEffortValueDescription(appliedLevel)}). Provider levels: ${getSupportedEffortLevelsForModel(model, provider).join(", ")}`
|
|
722228
722496
|
};
|
|
722229
722497
|
}
|
|
722230
722498
|
const description = getEffortValueDescription(effectiveValue);
|
|
722231
722499
|
return {
|
|
722232
|
-
message: `Current effort
|
|
722500
|
+
message: `Current effort: ${effectiveValue}; applied ${appliedLevel} for ${model} on ${provider} (${description}). Provider levels: ${getSupportedEffortLevelsForModel(model, provider).join(", ")}`
|
|
722233
722501
|
};
|
|
722234
722502
|
}
|
|
722235
722503
|
function unsetEffortLevel() {
|
|
@@ -722261,17 +722529,17 @@ function unsetEffortLevel() {
|
|
|
722261
722529
|
}
|
|
722262
722530
|
};
|
|
722263
722531
|
}
|
|
722264
|
-
function executeEffort(args, model) {
|
|
722532
|
+
function executeEffort(args, model, provider = getRuntimeProvider()) {
|
|
722265
722533
|
const normalized = args.toLowerCase();
|
|
722266
722534
|
if (normalized === "auto" || normalized === "unset") {
|
|
722267
722535
|
return unsetEffortLevel();
|
|
722268
722536
|
}
|
|
722269
722537
|
if (!isEffortLevel(normalized)) {
|
|
722270
722538
|
return {
|
|
722271
|
-
message: `Invalid argument: ${args}. Valid options are: low, medium, high, max, auto`
|
|
722539
|
+
message: `Invalid argument: ${args}. Valid options are: minimal, low, medium, high, xhigh, max, auto`
|
|
722272
722540
|
};
|
|
722273
722541
|
}
|
|
722274
|
-
return setEffortValue(normalized, model);
|
|
722542
|
+
return setEffortValue(normalized, model, provider);
|
|
722275
722543
|
}
|
|
722276
722544
|
function ShowCurrentEffort(t0) {
|
|
722277
722545
|
const {
|
|
@@ -722279,9 +722547,10 @@ function ShowCurrentEffort(t0) {
|
|
|
722279
722547
|
} = t0;
|
|
722280
722548
|
const effortValue = useAppState(_temp156);
|
|
722281
722549
|
const model = useMainLoopModel();
|
|
722550
|
+
const provider = getRuntimeProvider();
|
|
722282
722551
|
const {
|
|
722283
722552
|
message
|
|
722284
|
-
} = showCurrentEffort(effortValue, model);
|
|
722553
|
+
} = showCurrentEffort(effortValue, model, provider);
|
|
722285
722554
|
onDone(message);
|
|
722286
722555
|
return null;
|
|
722287
722556
|
}
|
|
@@ -722328,29 +722597,33 @@ function ApplyEffortAndClose(t0) {
|
|
|
722328
722597
|
async function call168(onDone, _context, args) {
|
|
722329
722598
|
args = args?.trim() || "";
|
|
722330
722599
|
if (COMMON_HELP_ARGS2.includes(args)) {
|
|
722331
|
-
onDone(`Usage: /effort [low|medium|high|max|auto]
|
|
722600
|
+
onDone(`Usage: /effort [minimal|low|medium|high|xhigh|max|auto]
|
|
722601
|
+
|
|
722602
|
+
UR reads the selected model's exact provider-advertised levels. \`max\` means that model's real ceiling, so it resolves to max, xhigh, or high as appropriate.
|
|
722332
722603
|
|
|
722333
722604
|
Effort levels:
|
|
722605
|
+
- minimal: Lowest latency and cost
|
|
722334
722606
|
- low: Quick, straightforward implementation
|
|
722335
722607
|
- medium: Balanced approach with standard testing
|
|
722336
722608
|
- high: Comprehensive implementation with extensive testing
|
|
722337
|
-
-
|
|
722338
|
-
-
|
|
722609
|
+
- xhigh: Extended reasoning above high
|
|
722610
|
+
- max: The selected model's highest advertised level
|
|
722611
|
+
- auto: Use the model/provider default`);
|
|
722339
722612
|
return;
|
|
722340
722613
|
}
|
|
722341
|
-
if (!args || args === "current" || args === "status") {
|
|
722342
|
-
return /* @__PURE__ */ jsx_dev_runtime345.jsxDEV(ShowCurrentEffort, {
|
|
722343
|
-
onDone
|
|
722344
|
-
}, undefined, false, undefined, this);
|
|
722345
|
-
}
|
|
722346
722614
|
const model = getMainLoopModel();
|
|
722347
722615
|
const runtimeProvider = getRuntimeProvider();
|
|
722348
|
-
if (
|
|
722349
|
-
await
|
|
722616
|
+
if (!getSupportedEffortLevelsForModel(model, runtimeProvider).length) {
|
|
722617
|
+
await ensureProviderReasoningCapabilitiesForModel(runtimeProvider, model).catch(() => {
|
|
722350
722618
|
return;
|
|
722351
722619
|
});
|
|
722352
722620
|
}
|
|
722353
|
-
|
|
722621
|
+
if (!args || args === "current" || args === "status") {
|
|
722622
|
+
return /* @__PURE__ */ jsx_dev_runtime345.jsxDEV(ShowCurrentEffort, {
|
|
722623
|
+
onDone
|
|
722624
|
+
}, undefined, false, undefined, this);
|
|
722625
|
+
}
|
|
722626
|
+
const result = executeEffort(args, model, runtimeProvider);
|
|
722354
722627
|
return /* @__PURE__ */ jsx_dev_runtime345.jsxDEV(ApplyEffortAndClose, {
|
|
722355
722628
|
result,
|
|
722356
722629
|
onDone
|
|
@@ -722380,7 +722653,7 @@ var init_effort3 = __esm(() => {
|
|
|
722380
722653
|
type: "local-jsx",
|
|
722381
722654
|
name: "effort",
|
|
722382
722655
|
description: "Set effort level for model usage",
|
|
722383
|
-
argumentHint: "[low|medium|high|max|auto]",
|
|
722656
|
+
argumentHint: "[minimal|low|medium|high|xhigh|max|auto]",
|
|
722384
722657
|
get immediate() {
|
|
722385
722658
|
return shouldInferenceConfigCommandBeImmediate();
|
|
722386
722659
|
},
|
|
@@ -727755,7 +728028,7 @@ function generateHtmlReport(data, insights) {
|
|
|
727755
728028
|
</html>`;
|
|
727756
728029
|
}
|
|
727757
728030
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
727758
|
-
const version3 = typeof MACRO !== "undefined" ? "1.81.
|
|
728031
|
+
const version3 = typeof MACRO !== "undefined" ? "1.81.8" : "unknown";
|
|
727759
728032
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
727760
728033
|
const facets_summary = {
|
|
727761
728034
|
total: facets.size,
|
|
@@ -732068,7 +732341,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
732068
732341
|
init_settings2();
|
|
732069
732342
|
init_slowOperations();
|
|
732070
732343
|
init_uuid();
|
|
732071
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.81.
|
|
732344
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.81.8" : "unknown";
|
|
732072
732345
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
732073
732346
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
732074
732347
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -733283,7 +733556,7 @@ var init_filesystem = __esm(() => {
|
|
|
733283
733556
|
});
|
|
733284
733557
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
733285
733558
|
const nonce = randomBytes24(16).toString("hex");
|
|
733286
|
-
return join243(getURTempDir(), "bundled-skills", "1.81.
|
|
733559
|
+
return join243(getURTempDir(), "bundled-skills", "1.81.8", nonce);
|
|
733287
733560
|
});
|
|
733288
733561
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
733289
733562
|
});
|
|
@@ -739683,7 +739956,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
739683
739956
|
}
|
|
739684
739957
|
function computeFingerprintFromMessages(messages) {
|
|
739685
739958
|
const firstMessageText = extractFirstMessageText(messages);
|
|
739686
|
-
return computeFingerprint(firstMessageText, "1.81.
|
|
739959
|
+
return computeFingerprint(firstMessageText, "1.81.8");
|
|
739687
739960
|
}
|
|
739688
739961
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
739689
739962
|
var init_fingerprint = () => {};
|
|
@@ -739876,8 +740149,8 @@ function should1hCacheTTL(querySource) {
|
|
|
739876
740149
|
}
|
|
739877
740150
|
return querySource !== undefined && allowlist.some((pattern2) => pattern2.endsWith("*") ? querySource.startsWith(pattern2.slice(0, -1)) : querySource === pattern2);
|
|
739878
740151
|
}
|
|
739879
|
-
function configureEffortParams(effortValue, outputConfig, extraBodyParams, betas, model) {
|
|
739880
|
-
if (!modelSupportsEffort(model) || "effort" in outputConfig) {
|
|
740152
|
+
function configureEffortParams(effortValue, outputConfig, extraBodyParams, betas, model, provider = getRuntimeProvider()) {
|
|
740153
|
+
if (!modelSupportsEffort(model, provider) || "effort" in outputConfig) {
|
|
739881
740154
|
return;
|
|
739882
740155
|
}
|
|
739883
740156
|
if (effortValue === undefined) {
|
|
@@ -740429,7 +740702,7 @@ ${deferredToolList}
|
|
|
740429
740702
|
const outputConfig = {
|
|
740430
740703
|
...extraBodyParams.output_config ?? {}
|
|
740431
740704
|
};
|
|
740432
|
-
configureEffortParams(effort, outputConfig, extraBodyParams, betasParams, options5.model);
|
|
740705
|
+
configureEffortParams(effort, outputConfig, extraBodyParams, betasParams, options5.model, options5.providerSettings?.active);
|
|
740433
740706
|
configureTaskBudgetParams(options5.taskBudget, outputConfig, betasParams);
|
|
740434
740707
|
if (options5.outputFormat && !("format" in outputConfig)) {
|
|
740435
740708
|
outputConfig.format = options5.outputFormat;
|
|
@@ -741618,7 +741891,7 @@ async function sideQuery(opts) {
|
|
|
741618
741891
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
741619
741892
|
}
|
|
741620
741893
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
741621
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.81.
|
|
741894
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.81.8");
|
|
741622
741895
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
741623
741896
|
const systemBlocks = [
|
|
741624
741897
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -746452,7 +746725,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
746452
746725
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
746453
746726
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
746454
746727
|
betas: getSdkBetas(),
|
|
746455
|
-
ur_version: "1.81.
|
|
746728
|
+
ur_version: "1.81.8",
|
|
746456
746729
|
output_style: outputStyle,
|
|
746457
746730
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
746458
746731
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -760288,7 +760561,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
760288
760561
|
function getSemverPart(version3) {
|
|
760289
760562
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
760290
760563
|
}
|
|
760291
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.81.
|
|
760564
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.81.8") {
|
|
760292
760565
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
|
|
760293
760566
|
if (!updatedVersion) {
|
|
760294
760567
|
return null;
|
|
@@ -760337,7 +760610,7 @@ function AutoUpdater({
|
|
|
760337
760610
|
return;
|
|
760338
760611
|
}
|
|
760339
760612
|
if (false) {}
|
|
760340
|
-
const currentVersion = "1.81.
|
|
760613
|
+
const currentVersion = "1.81.8";
|
|
760341
760614
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
760342
760615
|
let latestVersion = await getLatestVersion(channel);
|
|
760343
760616
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -760566,12 +760839,12 @@ function NativeAutoUpdater({
|
|
|
760566
760839
|
logEvent("tengu_native_auto_updater_start", {});
|
|
760567
760840
|
try {
|
|
760568
760841
|
const maxVersion = await getMaxVersion();
|
|
760569
|
-
if (maxVersion && gt("1.81.
|
|
760842
|
+
if (maxVersion && gt("1.81.8", maxVersion)) {
|
|
760570
760843
|
const msg = await getMaxVersionMessage();
|
|
760571
760844
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
760572
760845
|
}
|
|
760573
760846
|
const result = await installLatest(channel);
|
|
760574
|
-
const currentVersion = "1.81.
|
|
760847
|
+
const currentVersion = "1.81.8";
|
|
760575
760848
|
const latencyMs = Date.now() - startTime;
|
|
760576
760849
|
if (result.lockFailed) {
|
|
760577
760850
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -760708,17 +760981,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
760708
760981
|
const maxVersion = await getMaxVersion();
|
|
760709
760982
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
760710
760983
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
760711
|
-
if (gte("1.81.
|
|
760712
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.
|
|
760984
|
+
if (gte("1.81.8", maxVersion)) {
|
|
760985
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.8"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
760713
760986
|
setUpdateAvailable(false);
|
|
760714
760987
|
return;
|
|
760715
760988
|
}
|
|
760716
760989
|
latest = maxVersion;
|
|
760717
760990
|
}
|
|
760718
|
-
const hasUpdate = latest && !gte("1.81.
|
|
760991
|
+
const hasUpdate = latest && !gte("1.81.8", latest) && !shouldSkipVersion(latest);
|
|
760719
760992
|
setUpdateAvailable(!!hasUpdate);
|
|
760720
760993
|
if (hasUpdate) {
|
|
760721
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.
|
|
760994
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.8"} -> ${latest}`);
|
|
760722
760995
|
}
|
|
760723
760996
|
};
|
|
760724
760997
|
$2[0] = t1;
|
|
@@ -760752,7 +761025,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
760752
761025
|
wrap: "truncate",
|
|
760753
761026
|
children: [
|
|
760754
761027
|
"currentVersion: ",
|
|
760755
|
-
"1.81.
|
|
761028
|
+
"1.81.8"
|
|
760756
761029
|
]
|
|
760757
761030
|
}, undefined, true, undefined, this);
|
|
760758
761031
|
$2[3] = verbose;
|
|
@@ -771605,7 +771878,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
771605
771878
|
project_dir: getOriginalCwd(),
|
|
771606
771879
|
added_dirs: addedDirs
|
|
771607
771880
|
},
|
|
771608
|
-
version: "1.81.
|
|
771881
|
+
version: "1.81.8",
|
|
771609
771882
|
output_style: {
|
|
771610
771883
|
name: outputStyleName
|
|
771611
771884
|
},
|
|
@@ -771740,7 +772013,7 @@ function StatusLineInner({
|
|
|
771740
772013
|
const attention = customStatusError ?? taskAttention;
|
|
771741
772014
|
const terminalSize = React133.useContext(TerminalSizeContext);
|
|
771742
772015
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
771743
|
-
version: "1.81.
|
|
772016
|
+
version: "1.81.8",
|
|
771744
772017
|
providerLabel: providerRuntime.providerLabel,
|
|
771745
772018
|
authMode: providerRuntime.authLabel,
|
|
771746
772019
|
model: renderModelName(mainLoopModel) || providerRuntime.model || "",
|
|
@@ -783996,7 +784269,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
783996
784269
|
} catch {}
|
|
783997
784270
|
const data = {
|
|
783998
784271
|
trigger: trigger2,
|
|
783999
|
-
version: "1.81.
|
|
784272
|
+
version: "1.81.8",
|
|
784000
784273
|
platform: process.platform,
|
|
784001
784274
|
transcript,
|
|
784002
784275
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -786770,7 +787043,7 @@ var init_controlSchemas = __esm(() => {
|
|
|
786770
787043
|
})).describe("Ordered low-to-high priority \u2014 later entries override earlier ones."),
|
|
786771
787044
|
applied: exports_external.object({
|
|
786772
787045
|
model: exports_external.string(),
|
|
786773
|
-
effort: exports_external.enum(["low", "medium", "high", "max"]).nullable()
|
|
787046
|
+
effort: exports_external.enum(["minimal", "low", "medium", "high", "xhigh", "max"]).nullable()
|
|
786774
787047
|
}).optional().describe("Runtime-resolved values after env overrides, session state, and model-specific defaults are applied. Unlike `effective` (disk merge), these reflect what will actually be sent to the API.")
|
|
786775
787048
|
}).describe("Effective merged settings plus raw per-source settings in merge order."));
|
|
786776
787049
|
SDKControlElicitationRequestSchema = lazySchema(() => exports_external.object({
|
|
@@ -796365,7 +796638,7 @@ function WelcomeV2() {
|
|
|
796365
796638
|
dimColor: true,
|
|
796366
796639
|
children: [
|
|
796367
796640
|
"v",
|
|
796368
|
-
"1.81.
|
|
796641
|
+
"1.81.8"
|
|
796369
796642
|
]
|
|
796370
796643
|
}, undefined, true, undefined, this)
|
|
796371
796644
|
]
|
|
@@ -797625,7 +797898,7 @@ function completeOnboarding() {
|
|
|
797625
797898
|
saveGlobalConfig((current) => ({
|
|
797626
797899
|
...current,
|
|
797627
797900
|
hasCompletedOnboarding: true,
|
|
797628
|
-
lastOnboardingVersion: "1.81.
|
|
797901
|
+
lastOnboardingVersion: "1.81.8"
|
|
797629
797902
|
}));
|
|
797630
797903
|
}
|
|
797631
797904
|
function showDialog(root2, renderer) {
|
|
@@ -802771,7 +803044,7 @@ function appendToLog(path28, message) {
|
|
|
802771
803044
|
cwd: getFsImplementation().cwd(),
|
|
802772
803045
|
userType: process.env.USER_TYPE,
|
|
802773
803046
|
sessionId: getSessionId(),
|
|
802774
|
-
version: "1.81.
|
|
803047
|
+
version: "1.81.8"
|
|
802775
803048
|
};
|
|
802776
803049
|
getLogWriter(path28).write(messageWithTimestamp);
|
|
802777
803050
|
}
|
|
@@ -806935,8 +807208,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
806935
807208
|
}
|
|
806936
807209
|
async function checkEnvLessBridgeMinVersion() {
|
|
806937
807210
|
const cfg = await getEnvLessBridgeConfig();
|
|
806938
|
-
if (cfg.min_version && lt("1.81.
|
|
806939
|
-
return `Your version of UR (${"1.81.
|
|
807211
|
+
if (cfg.min_version && lt("1.81.8", cfg.min_version)) {
|
|
807212
|
+
return `Your version of UR (${"1.81.8"}) is too old for Remote Control.
|
|
806940
807213
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
806941
807214
|
}
|
|
806942
807215
|
return null;
|
|
@@ -807410,7 +807683,7 @@ async function initBridgeCore(params) {
|
|
|
807410
807683
|
const rawApi = createBridgeApiClient({
|
|
807411
807684
|
baseUrl,
|
|
807412
807685
|
getAccessToken,
|
|
807413
|
-
runnerVersion: "1.81.
|
|
807686
|
+
runnerVersion: "1.81.8",
|
|
807414
807687
|
onDebug: logForDebugging,
|
|
807415
807688
|
onAuth401,
|
|
807416
807689
|
getTrustedDeviceToken
|
|
@@ -809692,10 +809965,12 @@ function runHeadlessStreaming(structuredIO, mcpClients, commands, tools, initial
|
|
|
809692
809965
|
});
|
|
809693
809966
|
}
|
|
809694
809967
|
const modelOptions = getModelOptions();
|
|
809968
|
+
const runtimeProvider = getRuntimeProvider();
|
|
809695
809969
|
const modelInfos = modelOptions.map((option29) => {
|
|
809696
809970
|
const modelId = option29.value === null ? "default" : option29.value;
|
|
809697
809971
|
const resolvedModel = modelId === "default" ? getDefaultMainLoopModel() : parseUserSpecifiedModel(modelId);
|
|
809698
|
-
const
|
|
809972
|
+
const supportedEffortLevels = getSupportedEffortLevelsForModel(resolvedModel, runtimeProvider);
|
|
809973
|
+
const hasEffort = supportedEffortLevels.length > 0;
|
|
809699
809974
|
const hasAdaptiveThinking = modelSupportsAdaptiveThinking(resolvedModel);
|
|
809700
809975
|
const hasFastMode = isFastModeSupportedByModel(option29.value);
|
|
809701
809976
|
const hasAutoMode = modelSupportsAutoMode(resolvedModel);
|
|
@@ -809705,7 +809980,7 @@ function runHeadlessStreaming(structuredIO, mcpClients, commands, tools, initial
|
|
|
809705
809980
|
description: option29.description,
|
|
809706
809981
|
...hasEffort && {
|
|
809707
809982
|
supportsEffort: true,
|
|
809708
|
-
supportedEffortLevels
|
|
809983
|
+
supportedEffortLevels
|
|
809709
809984
|
},
|
|
809710
809985
|
...hasAdaptiveThinking && { supportsAdaptiveThinking: true },
|
|
809711
809986
|
...hasFastMode && { supportsFastMode: true },
|
|
@@ -811073,7 +811348,8 @@ ${m.text}
|
|
|
811073
811348
|
} else if (message.request.subtype === "get_settings") {
|
|
811074
811349
|
const currentAppState = getAppState();
|
|
811075
811350
|
const model = getMainLoopModel();
|
|
811076
|
-
const
|
|
811351
|
+
const provider = getRuntimeProvider();
|
|
811352
|
+
const effort = modelSupportsEffort(model, provider) ? resolveAppliedEffort(model, currentAppState.effortValue, provider) : undefined;
|
|
811077
811353
|
sendControlResponseSuccess(message, {
|
|
811078
811354
|
...getSettingsWithSources(),
|
|
811079
811355
|
applied: {
|
|
@@ -816883,7 +817159,7 @@ function getAgUiCapabilities() {
|
|
|
816883
817159
|
name: "UR-Nexus",
|
|
816884
817160
|
type: "ur-nexus",
|
|
816885
817161
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
816886
|
-
version: "1.81.
|
|
817162
|
+
version: "1.81.8",
|
|
816887
817163
|
provider: "UR",
|
|
816888
817164
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
816889
817165
|
},
|
|
@@ -818110,7 +818386,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
818110
818386
|
};
|
|
818111
818387
|
const server2 = new Server({
|
|
818112
818388
|
name: "ur-nexus",
|
|
818113
|
-
version: "1.81.
|
|
818389
|
+
version: "1.81.8"
|
|
818114
818390
|
}, {
|
|
818115
818391
|
capabilities: {
|
|
818116
818392
|
tools: {}
|
|
@@ -819314,7 +819590,7 @@ function thrownResponse(error40) {
|
|
|
819314
819590
|
}
|
|
819315
819591
|
async function createUrMcp2026Runtime(options5) {
|
|
819316
819592
|
const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
|
|
819317
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.
|
|
819593
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.8" }, { capabilities: {} });
|
|
819318
819594
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
819319
819595
|
try {
|
|
819320
819596
|
await server2.connect(serverTransport);
|
|
@@ -819325,7 +819601,7 @@ async function createUrMcp2026Runtime(options5) {
|
|
|
819325
819601
|
}
|
|
819326
819602
|
const runtime2 = new Mcp2026Runtime({
|
|
819327
819603
|
cwd: options5.cwd,
|
|
819328
|
-
version: "1.81.
|
|
819604
|
+
version: "1.81.8",
|
|
819329
819605
|
backend: {
|
|
819330
819606
|
listTools: async () => {
|
|
819331
819607
|
const listed = await client2.listTools();
|
|
@@ -822060,7 +822336,7 @@ async function update() {
|
|
|
822060
822336
|
logEvent("tengu_update_check", {});
|
|
822061
822337
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
822062
822338
|
const result = await checkUpgradeStatus({
|
|
822063
|
-
currentVersion: "1.81.
|
|
822339
|
+
currentVersion: "1.81.8",
|
|
822064
822340
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
822065
822341
|
installationType: diagnostic2.installationType,
|
|
822066
822342
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -822457,9 +822733,9 @@ async function run3() {
|
|
|
822457
822733
|
}).hideHelp()).option("--replay-user-messages", "Re-emit user messages from stdin back on stdout for acknowledgment (only works with --input-format=stream-json and --output-format=stream-json)", () => true).addOption(new Option("--enable-auth-status", "Enable auth status messages in SDK mode").default(false).hideHelp()).option("--allowedTools, --allowed-tools <tools...>", 'Comma or space-separated list of tool names to allow (e.g. "Bash(git:*) Edit")').option("--tools <tools...>", 'Specify the list of available tools from the built-in set. Use "" to disable all tools, "default" to use all tools, or specify tool names (e.g. "Bash,Edit,Read").').option("--disallowedTools, --disallowed-tools <tools...>", 'Comma or space-separated list of tool names to deny (e.g. "Bash(git:*) Edit")').option("--mcp-config <configs...>", "Load MCP servers from JSON files or strings (space-separated)").addOption(new Option("--permission-prompt-tool <tool>", "MCP tool to use for permission prompts (only works with --print)").argParser(String).hideHelp()).addOption(new Option("--system-prompt <prompt>", "System prompt to use for the session").argParser(String)).addOption(new Option("--system-prompt-file <file>", "Read system prompt from a file").argParser(String).hideHelp()).addOption(new Option("--append-system-prompt <prompt>", "Append a system prompt to the default system prompt").argParser(String)).addOption(new Option("--append-system-prompt-file <file>", "Read system prompt from a file and append to the default system prompt").argParser(String).hideHelp()).addOption(new Option("--permission-mode <mode>", "Permission mode to use for the session").argParser(String).choices(PERMISSION_MODES)).option("-c, --continue", "Continue the most recent conversation in the current directory", () => true).option("-r, --resume [value]", "Resume a conversation by session ID, or open interactive picker with optional search term", (value2) => value2 || true).option("--fork-session", "When resuming, create a new session ID instead of reusing the original (use with --resume or --continue)", () => true).addOption(new Option("--prefill <text>", "Pre-fill the prompt input with text without submitting it").hideHelp()).addOption(new Option("--deep-link-origin", "Signal that this session was launched from a deep link").hideHelp()).addOption(new Option("--deep-link-repo <slug>", "Repo slug the deep link ?repo= parameter resolved to the current cwd").hideHelp()).addOption(new Option("--deep-link-last-fetch <ms>", "FETCH_HEAD mtime in epoch ms, precomputed by the deep link trampoline").argParser((v) => {
|
|
822458
822734
|
const n3 = Number(v);
|
|
822459
822735
|
return Number.isFinite(n3) ? n3 : undefined;
|
|
822460
|
-
}).hideHelp()).option("--from-pr [value]", "Resume a session linked to a PR by PR number/URL, or open interactive picker with optional search term", (value2) => value2 || true).option("--no-session-persistence", "Disable session persistence - sessions will not be saved to disk and cannot be resumed (only works with --print)").addOption(new Option("--resume-session-at <message id>", "When resuming, only messages up to and including the assistant message with <message.id> (use with --resume in print mode)").argParser(String).hideHelp()).addOption(new Option("--rewind-files <user-message-id>", "Restore files to state at the specified user message and exit (requires --resume)").hideHelp()).option("--model <model>", `Local Ollama app model for the current session (for example, 'qwen3-coder:480b-cloud' or 'qwen2.5-coder:latest').`).addOption(new Option("--effort <level>", `Effort level for the current session (low, medium, high, max)`).argParser((rawValue) => {
|
|
822736
|
+
}).hideHelp()).option("--from-pr [value]", "Resume a session linked to a PR by PR number/URL, or open interactive picker with optional search term", (value2) => value2 || true).option("--no-session-persistence", "Disable session persistence - sessions will not be saved to disk and cannot be resumed (only works with --print)").addOption(new Option("--resume-session-at <message id>", "When resuming, only messages up to and including the assistant message with <message.id> (use with --resume in print mode)").argParser(String).hideHelp()).addOption(new Option("--rewind-files <user-message-id>", "Restore files to state at the specified user message and exit (requires --resume)").hideHelp()).option("--model <model>", `Local Ollama app model for the current session (for example, 'qwen3-coder:480b-cloud' or 'qwen2.5-coder:latest').`).addOption(new Option("--effort <level>", `Effort level for the current session (minimal, low, medium, high, xhigh, max)`).argParser((rawValue) => {
|
|
822461
822737
|
const value2 = rawValue.toLowerCase();
|
|
822462
|
-
const allowed = ["low", "medium", "high", "max"];
|
|
822738
|
+
const allowed = ["minimal", "low", "medium", "high", "xhigh", "max"];
|
|
822463
822739
|
if (!allowed.includes(value2)) {
|
|
822464
822740
|
throw new InvalidArgumentError(`It must be one of: ${allowed.join(", ")}`);
|
|
822465
822741
|
}
|
|
@@ -823388,7 +823664,7 @@ ${customInstructions}` : customInstructions;
|
|
|
823388
823664
|
}
|
|
823389
823665
|
}
|
|
823390
823666
|
logForDiagnosticsNoPII("info", "started", {
|
|
823391
|
-
version: "1.81.
|
|
823667
|
+
version: "1.81.8",
|
|
823392
823668
|
is_native_binary: isInBundledMode()
|
|
823393
823669
|
});
|
|
823394
823670
|
registerCleanup(async () => {
|
|
@@ -824175,7 +824451,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
824175
824451
|
pendingHookMessages
|
|
824176
824452
|
}, renderAndRun);
|
|
824177
824453
|
}
|
|
824178
|
-
}).version("1.81.
|
|
824454
|
+
}).version("1.81.8 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
824179
824455
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
824180
824456
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
824181
824457
|
if (canUserConfigureAdvisor()) {
|
|
@@ -825302,7 +825578,7 @@ if (false) {}
|
|
|
825302
825578
|
async function main2() {
|
|
825303
825579
|
const args = process.argv.slice(2);
|
|
825304
825580
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
825305
|
-
console.log(`${"1.81.
|
|
825581
|
+
console.log(`${"1.81.8"} (UR-Nexus)`);
|
|
825306
825582
|
return;
|
|
825307
825583
|
}
|
|
825308
825584
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|