ur-agent 1.81.6 → 1.81.9
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 +39 -0
- package/README.md +7 -2
- package/dist/cli.js +519 -263
- 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.9"}`;
|
|
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.9"} (${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.9"}${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.9",
|
|
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.9".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.9",
|
|
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.9"
|
|
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.9");
|
|
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.9", 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.9"}.${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.9");
|
|
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.9"
|
|
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.9").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.9").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.9";
|
|
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.9";
|
|
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.9",
|
|
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.9",
|
|
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.9"
|
|
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.9");
|
|
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.9"));
|
|
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.9", 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.9"}) 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.9"
|
|
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.9"
|
|
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.9" : "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.9", maxVersion)) {
|
|
343114
|
+
logForDebugging(`Native installer: current version ${"1.81.9"} 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.9" && 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.9");
|
|
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.9",
|
|
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.9"
|
|
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.9"}
|
|
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.9"
|
|
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.9",
|
|
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.9";
|
|
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.9"}`,
|
|
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.9",
|
|
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.9") {
|
|
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.9") {
|
|
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.9";
|
|
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;
|
|
@@ -480060,8 +480234,6 @@ var init_logoV2Utils = __esm(() => {
|
|
|
480060
480234
|
|
|
480061
480235
|
// src/components/LogoV2/URBanner.tsx
|
|
480062
480236
|
function getResponsiveURWordmarkVariant(availableWidth = Number.POSITIVE_INFINITY, availableHeight = Number.POSITIVE_INFINITY) {
|
|
480063
|
-
if (availableWidth >= 41 && availableHeight >= 22)
|
|
480064
|
-
return "full";
|
|
480065
480237
|
if (availableWidth >= 20 && availableHeight >= 8)
|
|
480066
480238
|
return "compact";
|
|
480067
480239
|
return "minimal";
|
|
@@ -480076,7 +480248,7 @@ function URBanner({
|
|
|
480076
480248
|
}, undefined, false, undefined, this);
|
|
480077
480249
|
}
|
|
480078
480250
|
const variant = getResponsiveURWordmarkVariant(availableWidth, availableHeight);
|
|
480079
|
-
const rows = variant === "
|
|
480251
|
+
const rows = variant === "compact" ? UR_WORDMARK_ROWS : ["UR"];
|
|
480080
480252
|
const showTagline = variant !== "minimal";
|
|
480081
480253
|
const decorateTagline = (availableWidth ?? Number.POSITIVE_INFINITY) >= 24;
|
|
480082
480254
|
return /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedBox_default, {
|
|
@@ -480094,30 +480266,12 @@ function URBanner({
|
|
|
480094
480266
|
]
|
|
480095
480267
|
}, undefined, true, undefined, this);
|
|
480096
480268
|
}
|
|
480097
|
-
var jsx_dev_runtime233, UR_WORDMARK_ROWS,
|
|
480269
|
+
var jsx_dev_runtime233, UR_WORDMARK_ROWS, UR_WORDMARK_TAGLINE = "THE AUTONOMOUS AGENT";
|
|
480098
480270
|
var init_URBanner = __esm(() => {
|
|
480099
480271
|
init_ink2();
|
|
480100
480272
|
init_screenReader();
|
|
480101
480273
|
jsx_dev_runtime233 = __toESM(require_jsx_dev_runtime(), 1);
|
|
480102
480274
|
UR_WORDMARK_ROWS = [
|
|
480103
|
-
"UUUUUUUU UUUUUUUURRRRRRRRRRRRRRRRR ",
|
|
480104
|
-
"U::::::U U::::::UR::::::::::::::::R ",
|
|
480105
|
-
"U::::::U U::::::UR::::::RRRRRR:::::R ",
|
|
480106
|
-
"UU:::::U U:::::UURR:::::R R:::::R",
|
|
480107
|
-
" U:::::U U:::::U R::::R R:::::R",
|
|
480108
|
-
" U:::::D D:::::U R::::R R:::::R",
|
|
480109
|
-
" U:::::D D:::::U R::::RRRRRR:::::R ",
|
|
480110
|
-
" U:::::D D:::::U R:::::::::::::RR ",
|
|
480111
|
-
" U:::::D D:::::U R::::RRRRRR:::::R ",
|
|
480112
|
-
" U:::::D D:::::U R::::R R:::::R",
|
|
480113
|
-
" U:::::D D:::::U R::::R R:::::R",
|
|
480114
|
-
" U::::::U U::::::U R::::R R:::::R",
|
|
480115
|
-
" U:::::::UUU:::::::U RR:::::R R:::::R",
|
|
480116
|
-
" UU:::::::::::::UU R::::::R R:::::R",
|
|
480117
|
-
" UU:::::::::UU R::::::R R:::::R",
|
|
480118
|
-
" UUUUUUUUU RRRRRRRR RRRRRRR"
|
|
480119
|
-
];
|
|
480120
|
-
COMPACT_UR_WORDMARK_ROWS = [
|
|
480121
480275
|
"\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 ",
|
|
480122
480276
|
"\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557",
|
|
480123
480277
|
"\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D",
|
|
@@ -480893,7 +481047,7 @@ function LogoV2() {
|
|
|
480893
481047
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
480894
481048
|
t2 = () => {
|
|
480895
481049
|
const currentConfig = getGlobalConfig();
|
|
480896
|
-
if (currentConfig.lastReleaseNotesSeen === "1.81.
|
|
481050
|
+
if (currentConfig.lastReleaseNotesSeen === "1.81.9") {
|
|
480897
481051
|
return;
|
|
480898
481052
|
}
|
|
480899
481053
|
saveGlobalConfig(_temp325);
|
|
@@ -481581,12 +481735,12 @@ function LogoV2() {
|
|
|
481581
481735
|
return t41;
|
|
481582
481736
|
}
|
|
481583
481737
|
function _temp325(current) {
|
|
481584
|
-
if (current.lastReleaseNotesSeen === "1.81.
|
|
481738
|
+
if (current.lastReleaseNotesSeen === "1.81.9") {
|
|
481585
481739
|
return current;
|
|
481586
481740
|
}
|
|
481587
481741
|
return {
|
|
481588
481742
|
...current,
|
|
481589
|
-
lastReleaseNotesSeen: "1.81.
|
|
481743
|
+
lastReleaseNotesSeen: "1.81.9"
|
|
481590
481744
|
};
|
|
481591
481745
|
}
|
|
481592
481746
|
function _temp241(s_0) {
|
|
@@ -497536,7 +497690,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
497536
497690
|
if (spec.name !== specName) {
|
|
497537
497691
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
497538
497692
|
}
|
|
497539
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.
|
|
497693
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.9" : "1.81.9");
|
|
497540
497694
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
497541
497695
|
throw new Error("invalid ur-agent package version");
|
|
497542
497696
|
}
|
|
@@ -498529,7 +498683,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
498529
498683
|
path: ".github/workflows/ur.yml",
|
|
498530
498684
|
root: "project",
|
|
498531
498685
|
content: compileAgenticCiWorkflow("default", {
|
|
498532
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.81.
|
|
498686
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.81.9" : "1.81.9"
|
|
498533
498687
|
})
|
|
498534
498688
|
},
|
|
498535
498689
|
{
|
|
@@ -498592,7 +498746,7 @@ function value(tokens, flag) {
|
|
|
498592
498746
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
498593
498747
|
}
|
|
498594
498748
|
function cliVersion() {
|
|
498595
|
-
return typeof MACRO !== "undefined" ? "1.81.
|
|
498749
|
+
return typeof MACRO !== "undefined" ? "1.81.9" : "1.81.9";
|
|
498596
498750
|
}
|
|
498597
498751
|
function workflowPath(cwd2) {
|
|
498598
498752
|
return join168(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -504448,7 +504602,7 @@ function createAcpStdioApp(deps) {
|
|
|
504448
504602
|
}
|
|
504449
504603
|
},
|
|
504450
504604
|
authMethods: [],
|
|
504451
|
-
agentInfo: { name: "UR-Nexus", version: "1.81.
|
|
504605
|
+
agentInfo: { name: "UR-Nexus", version: "1.81.9" }
|
|
504452
504606
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
504453
504607
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
504454
504608
|
await runtime2.announce({
|
|
@@ -504545,7 +504699,7 @@ function createAcpStdioAgent(deps) {
|
|
|
504545
504699
|
}
|
|
504546
504700
|
},
|
|
504547
504701
|
authMethods: [],
|
|
504548
|
-
agentInfo: { name: "UR-Nexus", version: "1.81.
|
|
504702
|
+
agentInfo: { name: "UR-Nexus", version: "1.81.9" }
|
|
504549
504703
|
});
|
|
504550
504704
|
return;
|
|
504551
504705
|
case "authenticate":
|
|
@@ -715797,7 +715951,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
715797
715951
|
smapsRollup,
|
|
715798
715952
|
platform: process.platform,
|
|
715799
715953
|
nodeVersion: process.version,
|
|
715800
|
-
ccVersion: "1.81.
|
|
715954
|
+
ccVersion: "1.81.9"
|
|
715801
715955
|
};
|
|
715802
715956
|
}
|
|
715803
715957
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -716386,7 +716540,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
716386
716540
|
var call154 = async () => {
|
|
716387
716541
|
return {
|
|
716388
716542
|
type: "text",
|
|
716389
|
-
value: "1.81.
|
|
716543
|
+
value: "1.81.9"
|
|
716390
716544
|
};
|
|
716391
716545
|
}, version2, version_default;
|
|
716392
716546
|
var init_version = __esm(() => {
|
|
@@ -719398,6 +719552,8 @@ function ProviderFirstModelPicker({
|
|
|
719398
719552
|
const [apiKeyCursorOffset, setApiKeyCursorOffset] = import_react186.useState(0);
|
|
719399
719553
|
const [connectError, setConnectError] = import_react186.useState(null);
|
|
719400
719554
|
const [credentialNotice, setCredentialNotice] = import_react186.useState(null);
|
|
719555
|
+
const [effortCapabilityLoading, setEffortCapabilityLoading] = import_react186.useState(false);
|
|
719556
|
+
const [effortCapabilityWarning, setEffortCapabilityWarning] = import_react186.useState(null);
|
|
719401
719557
|
const [modelReloadToken, setModelReloadToken] = import_react186.useState(0);
|
|
719402
719558
|
const terminalSize = import_react186.useContext(TerminalSizeContext);
|
|
719403
719559
|
const keyInputColumns = getProviderKeyInputColumns(terminalSize?.columns);
|
|
@@ -719411,10 +719567,10 @@ function ProviderFirstModelPicker({
|
|
|
719411
719567
|
async function loadProviderStatus() {
|
|
719412
719568
|
setLoadingProviders(true);
|
|
719413
719569
|
const providers = listProviders({ includeExternalAppBridges: true });
|
|
719414
|
-
const settings =
|
|
719570
|
+
const settings = getInitialSettings();
|
|
719415
719571
|
const options5 = await Promise.all(providers.map(async (provider) => {
|
|
719416
719572
|
const status2 = await getProviderStatus(provider.id, {
|
|
719417
|
-
settings
|
|
719573
|
+
settings
|
|
719418
719574
|
});
|
|
719419
719575
|
const accessType = getProviderAccessTypeLabel(provider);
|
|
719420
719576
|
return {
|
|
@@ -719445,7 +719601,7 @@ function ProviderFirstModelPicker({
|
|
|
719445
719601
|
const providerId = selectedProvider.value;
|
|
719446
719602
|
try {
|
|
719447
719603
|
const result = await listModelsForProviderWithSource(providerId, {
|
|
719448
|
-
settings:
|
|
719604
|
+
settings: getInitialSettings(),
|
|
719449
719605
|
signal: controller.signal,
|
|
719450
719606
|
freshOnly: providerId === "openrouter"
|
|
719451
719607
|
});
|
|
@@ -719481,6 +719637,45 @@ function ProviderFirstModelPicker({
|
|
|
719481
719637
|
controller.abort();
|
|
719482
719638
|
};
|
|
719483
719639
|
}, [selectedProvider, modelReloadToken]);
|
|
719640
|
+
import_react186.useEffect(() => {
|
|
719641
|
+
if (selectedProvider?.value !== "llama.cpp" || !focusedModelValue) {
|
|
719642
|
+
setEffortCapabilityLoading(false);
|
|
719643
|
+
setEffortCapabilityWarning(null);
|
|
719644
|
+
return;
|
|
719645
|
+
}
|
|
719646
|
+
const focused = modelOptions.find((model) => model.value === focusedModelValue);
|
|
719647
|
+
if (!focused || focused.reasoning !== undefined) {
|
|
719648
|
+
setEffortCapabilityLoading(false);
|
|
719649
|
+
setEffortCapabilityWarning(null);
|
|
719650
|
+
return;
|
|
719651
|
+
}
|
|
719652
|
+
const controller = new AbortController;
|
|
719653
|
+
let cancelled = false;
|
|
719654
|
+
const timer = setTimeout(() => {
|
|
719655
|
+
setEffortCapabilityLoading(true);
|
|
719656
|
+
setEffortCapabilityWarning(null);
|
|
719657
|
+
ensureProviderReasoningCapabilitiesForModel("llama.cpp", focusedModelValue, {
|
|
719658
|
+
settings: getInitialSettings(),
|
|
719659
|
+
signal: controller.signal
|
|
719660
|
+
}).then((reasoning) => {
|
|
719661
|
+
if (cancelled)
|
|
719662
|
+
return;
|
|
719663
|
+
setModelOptions((previous) => previous.map((model) => model.value === focusedModelValue ? { ...model, reasoning: reasoning ?? { supportedEfforts: [] } } : model));
|
|
719664
|
+
}).catch((error40) => {
|
|
719665
|
+
if (cancelled || controller.signal.aborted)
|
|
719666
|
+
return;
|
|
719667
|
+
setEffortCapabilityWarning(`Could not verify effort levels: ${error40 instanceof Error ? error40.message : String(error40)}`);
|
|
719668
|
+
}).finally(() => {
|
|
719669
|
+
if (!cancelled)
|
|
719670
|
+
setEffortCapabilityLoading(false);
|
|
719671
|
+
});
|
|
719672
|
+
}, 180);
|
|
719673
|
+
return () => {
|
|
719674
|
+
cancelled = true;
|
|
719675
|
+
clearTimeout(timer);
|
|
719676
|
+
controller.abort();
|
|
719677
|
+
};
|
|
719678
|
+
}, [selectedProvider?.value, focusedModelValue, modelOptions]);
|
|
719484
719679
|
use_input_default((_input, key) => {
|
|
719485
719680
|
if (key.escape) {
|
|
719486
719681
|
handleKeyCancel();
|
|
@@ -719505,10 +719700,11 @@ function ProviderFirstModelPicker({
|
|
|
719505
719700
|
const focusedProvider = providerOptions.find((p2) => p2.value === focusedProviderValue);
|
|
719506
719701
|
const focusedModel = modelOptions.find((m) => m.value === focusedModelValue);
|
|
719507
719702
|
const focusedResolvedModel = focusedModel ? parseUserSpecifiedModel(focusedModel.value) : undefined;
|
|
719508
|
-
const
|
|
719509
|
-
const
|
|
719510
|
-
const
|
|
719511
|
-
const
|
|
719703
|
+
const focusedProviderId = selectedProvider?.value;
|
|
719704
|
+
const focusedEffortLevels = focusedResolvedModel && focusedProviderId ? getSupportedEffortLevelsForModel(focusedResolvedModel, focusedProviderId) : [];
|
|
719705
|
+
const focusedSupportsEffort = focusedResolvedModel ? modelSupportsEffort(focusedResolvedModel, focusedProviderId) : false;
|
|
719706
|
+
const focusedDefaultEffort = focusedResolvedModel ? convertEffortValueToLevel(getDefaultEffortForModel(focusedResolvedModel, focusedProviderId) ?? (focusedEffortLevels.includes("high") ? "high" : focusedEffortLevels.at(-1)) ?? "high") : "high";
|
|
719707
|
+
const displayedEffort = focusedResolvedModel ? resolveProviderEffortLevel(focusedResolvedModel, effort ?? focusedDefaultEffort, focusedProviderId) ?? focusedDefaultEffort : focusedDefaultEffort;
|
|
719512
719708
|
function handleProviderFocus(value2) {
|
|
719513
719709
|
setFocusedProviderValue(value2);
|
|
719514
719710
|
setProviderWarning(null);
|
|
@@ -719519,7 +719715,7 @@ function ProviderFirstModelPicker({
|
|
|
719519
719715
|
function handleCycleEffort(direction) {
|
|
719520
719716
|
if (!focusedSupportsEffort)
|
|
719521
719717
|
return;
|
|
719522
|
-
setEffort((previous) => cycleProviderPickerEffort(previous ?? focusedDefaultEffort, direction,
|
|
719718
|
+
setEffort((previous) => cycleProviderPickerEffort(resolveProviderEffortLevel(focusedResolvedModel, previous ?? focusedDefaultEffort, focusedProviderId) ?? focusedDefaultEffort, direction, focusedEffortLevels));
|
|
719523
719719
|
setHasToggledEffort(true);
|
|
719524
719720
|
}
|
|
719525
719721
|
use_input_default((_input, key, event) => {
|
|
@@ -719568,8 +719764,11 @@ function ProviderFirstModelPicker({
|
|
|
719568
719764
|
}
|
|
719569
719765
|
}
|
|
719570
719766
|
function handleModelSelect(value2) {
|
|
719767
|
+
const selectedProviderId = selectedProvider?.value;
|
|
719768
|
+
const selectedResolvedModel = parseUserSpecifiedModel(value2);
|
|
719769
|
+
const selectedEffort = hasToggledEffort && selectedProviderId && effort ? resolveProviderEffortLevel(selectedResolvedModel, effort, selectedProviderId) : undefined;
|
|
719571
719770
|
logEvent("tengu_model_command_menu_effort", {
|
|
719572
|
-
effort,
|
|
719771
|
+
effort: selectedEffort,
|
|
719573
719772
|
provider: selectedProvider?.value,
|
|
719574
719773
|
model: value2,
|
|
719575
719774
|
source: modelSource
|
|
@@ -719612,7 +719811,7 @@ function ProviderFirstModelPicker({
|
|
|
719612
719811
|
}
|
|
719613
719812
|
}
|
|
719614
719813
|
if (hasToggledEffort) {
|
|
719615
|
-
const persistable =
|
|
719814
|
+
const persistable = selectedEffort ? toPersistableEffort(selectedEffort) : undefined;
|
|
719616
719815
|
if (persistable !== undefined) {
|
|
719617
719816
|
updateSettingsForSource("userSettings", {
|
|
719618
719817
|
effortLevel: persistable
|
|
@@ -719626,10 +719825,10 @@ function ProviderFirstModelPicker({
|
|
|
719626
719825
|
active: selectedProvider?.value,
|
|
719627
719826
|
model: value2
|
|
719628
719827
|
},
|
|
719629
|
-
...hasToggledEffort ? { effortValue:
|
|
719828
|
+
...hasToggledEffort ? { effortValue: selectedEffort } : {},
|
|
719630
719829
|
...hasToggledThinking ? { thinkingEnabled } : {}
|
|
719631
719830
|
}));
|
|
719632
|
-
onSelect(value2,
|
|
719831
|
+
onSelect(value2, selectedEffort, selectedProvider ? {
|
|
719633
719832
|
providerId: selectedProvider.value,
|
|
719634
719833
|
providerName: selectedProvider.label,
|
|
719635
719834
|
accessType: selectedProvider.accessType,
|
|
@@ -720090,26 +720289,54 @@ function ProviderFirstModelPicker({
|
|
|
720090
720289
|
dimColor: true,
|
|
720091
720290
|
children: focusedModel.description
|
|
720092
720291
|
}, undefined, false, undefined, this),
|
|
720093
|
-
focusedSupportsEffort && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(
|
|
720292
|
+
focusedSupportsEffort && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedBox_default, {
|
|
720293
|
+
flexDirection: "column",
|
|
720094
720294
|
children: [
|
|
720095
720295
|
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
720096
|
-
color: "ur",
|
|
720097
720296
|
children: [
|
|
720098
|
-
|
|
720099
|
-
|
|
720100
|
-
|
|
720297
|
+
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
720298
|
+
color: "ur",
|
|
720299
|
+
children: [
|
|
720300
|
+
effortLevelToSymbol(displayedEffort),
|
|
720301
|
+
" ",
|
|
720302
|
+
displayedEffort.toUpperCase()
|
|
720303
|
+
]
|
|
720304
|
+
}, undefined, true, undefined, this),
|
|
720305
|
+
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
720306
|
+
dimColor: true,
|
|
720307
|
+
color: "subtle",
|
|
720308
|
+
children: [
|
|
720309
|
+
" ",
|
|
720310
|
+
"provider effort \xB7 use \u2190 \u2192 to adjust"
|
|
720311
|
+
]
|
|
720312
|
+
}, undefined, true, undefined, this)
|
|
720101
720313
|
]
|
|
720102
720314
|
}, undefined, true, undefined, this),
|
|
720103
720315
|
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
720104
720316
|
dimColor: true,
|
|
720105
720317
|
color: "subtle",
|
|
720106
720318
|
children: [
|
|
720107
|
-
" ",
|
|
720108
|
-
"
|
|
720319
|
+
"Provider levels: ",
|
|
720320
|
+
focusedEffortLevels.join(" \xB7 ")
|
|
720109
720321
|
]
|
|
720110
720322
|
}, undefined, true, undefined, this)
|
|
720111
720323
|
]
|
|
720112
|
-
}, undefined, true, undefined, this)
|
|
720324
|
+
}, undefined, true, undefined, this),
|
|
720325
|
+
!focusedSupportsEffort && effortCapabilityLoading && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
720326
|
+
dimColor: true,
|
|
720327
|
+
color: "subtle",
|
|
720328
|
+
children: "Checking this model's provider effort levels\u2026"
|
|
720329
|
+
}, undefined, false, undefined, this),
|
|
720330
|
+
!focusedSupportsEffort && !effortCapabilityLoading && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
720331
|
+
dimColor: true,
|
|
720332
|
+
color: "subtle",
|
|
720333
|
+
children: "Graded effort not advertised for this model."
|
|
720334
|
+
}, undefined, false, undefined, this),
|
|
720335
|
+
effortCapabilityWarning && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
720336
|
+
dimColor: true,
|
|
720337
|
+
color: "error",
|
|
720338
|
+
children: effortCapabilityWarning
|
|
720339
|
+
}, undefined, false, undefined, this)
|
|
720113
720340
|
]
|
|
720114
720341
|
}, undefined, true, undefined, this),
|
|
720115
720342
|
modelWarning && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedBox_default, {
|
|
@@ -720176,8 +720403,8 @@ function getProviderKeyInputColumns(terminalColumns) {
|
|
|
720176
720403
|
const columns = Number.isFinite(terminalColumns) && terminalColumns > 0 ? Math.floor(terminalColumns) : 80;
|
|
720177
720404
|
return Math.max(8, columns - 20);
|
|
720178
720405
|
}
|
|
720179
|
-
function cycleProviderPickerEffort(current, direction,
|
|
720180
|
-
const levels =
|
|
720406
|
+
function cycleProviderPickerEffort(current, direction, supportedLevels) {
|
|
720407
|
+
const levels = supportedLevels.length > 0 ? [...supportedLevels] : [current];
|
|
720181
720408
|
const index2 = levels.indexOf(current);
|
|
720182
720409
|
const currentIndex = index2 >= 0 ? index2 : levels.indexOf("high");
|
|
720183
720410
|
const delta = direction === "right" ? 1 : -1;
|
|
@@ -722161,7 +722388,12 @@ __export(exports_effort, {
|
|
|
722161
722388
|
executeEffort: () => executeEffort,
|
|
722162
722389
|
call: () => call168
|
|
722163
722390
|
});
|
|
722164
|
-
function setEffortValue(effortValue, model) {
|
|
722391
|
+
function setEffortValue(effortValue, model, provider = getRuntimeProvider()) {
|
|
722392
|
+
if (model && !modelSupportsEffort(model, provider)) {
|
|
722393
|
+
return {
|
|
722394
|
+
message: `Not applied: ${model} on ${provider} does not advertise graded reasoning-effort levels.`
|
|
722395
|
+
};
|
|
722396
|
+
}
|
|
722165
722397
|
const persistable = toPersistableEffort(effortValue);
|
|
722166
722398
|
if (persistable !== undefined) {
|
|
722167
722399
|
const result = updateSettingsForSource("userSettings", {
|
|
@@ -722196,40 +722428,56 @@ function setEffortValue(effortValue, model) {
|
|
|
722196
722428
|
}
|
|
722197
722429
|
const description = getEffortValueDescription(effortValue);
|
|
722198
722430
|
const suffix = persistable !== undefined ? "" : " (this session only)";
|
|
722199
|
-
const appliedLevel = model ?
|
|
722431
|
+
const appliedLevel = model && typeof effortValue === "string" ? resolveProviderEffortLevel(model, effortValue, provider) : effortValue;
|
|
722200
722432
|
if (typeof effortValue === "string" && appliedLevel !== effortValue) {
|
|
722201
722433
|
return {
|
|
722202
|
-
message: `Requested
|
|
722434
|
+
message: `Requested ${effortValue}${suffix}; applied ${appliedLevel} for ${model} on ${provider}: ${getEffortValueDescription(appliedLevel)}`,
|
|
722203
722435
|
effortUpdate: {
|
|
722204
722436
|
value: effortValue
|
|
722205
722437
|
}
|
|
722206
722438
|
};
|
|
722207
722439
|
}
|
|
722208
722440
|
return {
|
|
722209
|
-
message: `Set effort level to ${effortValue}${suffix}: ${description}`,
|
|
722441
|
+
message: `Set effort level to ${effortValue}${suffix} for ${model ?? "the active model"} on ${provider}: ${description}`,
|
|
722210
722442
|
effortUpdate: {
|
|
722211
722443
|
value: effortValue
|
|
722212
722444
|
}
|
|
722213
722445
|
};
|
|
722214
722446
|
}
|
|
722215
|
-
function showCurrentEffort(appStateEffort, model) {
|
|
722447
|
+
function showCurrentEffort(appStateEffort, model, provider = getRuntimeProvider()) {
|
|
722216
722448
|
const envOverride = getEffortEnvOverride();
|
|
722217
722449
|
const effectiveValue = envOverride === null ? undefined : envOverride ?? appStateEffort;
|
|
722218
722450
|
if (effectiveValue === undefined) {
|
|
722219
|
-
|
|
722451
|
+
if (!modelSupportsEffort(model, provider)) {
|
|
722452
|
+
return {
|
|
722453
|
+
message: `Effort: unavailable \u2014 ${model} on ${provider} does not advertise graded reasoning-effort levels.`
|
|
722454
|
+
};
|
|
722455
|
+
}
|
|
722456
|
+
const applied = resolveAppliedEffort(model, appStateEffort, provider);
|
|
722457
|
+
if (applied === undefined) {
|
|
722458
|
+
return {
|
|
722459
|
+
message: `Effort: auto for ${model} on ${provider}; UR sends no explicit effort and the provider chooses its default. Provider levels: ${getSupportedEffortLevelsForModel(model, provider).join(", ")}`
|
|
722460
|
+
};
|
|
722461
|
+
}
|
|
722462
|
+
const level = getDisplayedEffortLevel(model, appStateEffort, provider);
|
|
722463
|
+
return {
|
|
722464
|
+
message: `Effort: auto; applied ${level} for ${model} on ${provider}. Provider levels: ${getSupportedEffortLevelsForModel(model, provider).join(", ")}`
|
|
722465
|
+
};
|
|
722466
|
+
}
|
|
722467
|
+
if (!modelSupportsEffort(model, provider)) {
|
|
722220
722468
|
return {
|
|
722221
|
-
message: `Effort
|
|
722469
|
+
message: `Effort: unavailable \u2014 ${model} on ${provider} does not advertise graded reasoning-effort levels.`
|
|
722222
722470
|
};
|
|
722223
722471
|
}
|
|
722224
|
-
const appliedLevel = getDisplayedEffortLevel(model, appStateEffort);
|
|
722472
|
+
const appliedLevel = getDisplayedEffortLevel(model, appStateEffort, provider);
|
|
722225
722473
|
if (typeof effectiveValue === "string" && appliedLevel !== effectiveValue) {
|
|
722226
722474
|
return {
|
|
722227
|
-
message: `Requested effort: ${effectiveValue}; applied effort for ${model}: ${appliedLevel} (${getEffortValueDescription(appliedLevel)})`
|
|
722475
|
+
message: `Requested effort: ${effectiveValue}; applied effort for ${model} on ${provider}: ${appliedLevel} (${getEffortValueDescription(appliedLevel)}). Provider levels: ${getSupportedEffortLevelsForModel(model, provider).join(", ")}`
|
|
722228
722476
|
};
|
|
722229
722477
|
}
|
|
722230
722478
|
const description = getEffortValueDescription(effectiveValue);
|
|
722231
722479
|
return {
|
|
722232
|
-
message: `Current effort
|
|
722480
|
+
message: `Current effort: ${effectiveValue}; applied ${appliedLevel} for ${model} on ${provider} (${description}). Provider levels: ${getSupportedEffortLevelsForModel(model, provider).join(", ")}`
|
|
722233
722481
|
};
|
|
722234
722482
|
}
|
|
722235
722483
|
function unsetEffortLevel() {
|
|
@@ -722261,17 +722509,17 @@ function unsetEffortLevel() {
|
|
|
722261
722509
|
}
|
|
722262
722510
|
};
|
|
722263
722511
|
}
|
|
722264
|
-
function executeEffort(args, model) {
|
|
722512
|
+
function executeEffort(args, model, provider = getRuntimeProvider()) {
|
|
722265
722513
|
const normalized = args.toLowerCase();
|
|
722266
722514
|
if (normalized === "auto" || normalized === "unset") {
|
|
722267
722515
|
return unsetEffortLevel();
|
|
722268
722516
|
}
|
|
722269
722517
|
if (!isEffortLevel(normalized)) {
|
|
722270
722518
|
return {
|
|
722271
|
-
message: `Invalid argument: ${args}. Valid options are: low, medium, high, max, auto`
|
|
722519
|
+
message: `Invalid argument: ${args}. Valid options are: minimal, low, medium, high, xhigh, max, auto`
|
|
722272
722520
|
};
|
|
722273
722521
|
}
|
|
722274
|
-
return setEffortValue(normalized, model);
|
|
722522
|
+
return setEffortValue(normalized, model, provider);
|
|
722275
722523
|
}
|
|
722276
722524
|
function ShowCurrentEffort(t0) {
|
|
722277
722525
|
const {
|
|
@@ -722279,9 +722527,10 @@ function ShowCurrentEffort(t0) {
|
|
|
722279
722527
|
} = t0;
|
|
722280
722528
|
const effortValue = useAppState(_temp156);
|
|
722281
722529
|
const model = useMainLoopModel();
|
|
722530
|
+
const provider = getRuntimeProvider();
|
|
722282
722531
|
const {
|
|
722283
722532
|
message
|
|
722284
|
-
} = showCurrentEffort(effortValue, model);
|
|
722533
|
+
} = showCurrentEffort(effortValue, model, provider);
|
|
722285
722534
|
onDone(message);
|
|
722286
722535
|
return null;
|
|
722287
722536
|
}
|
|
@@ -722328,29 +722577,33 @@ function ApplyEffortAndClose(t0) {
|
|
|
722328
722577
|
async function call168(onDone, _context, args) {
|
|
722329
722578
|
args = args?.trim() || "";
|
|
722330
722579
|
if (COMMON_HELP_ARGS2.includes(args)) {
|
|
722331
|
-
onDone(`Usage: /effort [low|medium|high|max|auto]
|
|
722580
|
+
onDone(`Usage: /effort [minimal|low|medium|high|xhigh|max|auto]
|
|
722581
|
+
|
|
722582
|
+
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
722583
|
|
|
722333
722584
|
Effort levels:
|
|
722585
|
+
- minimal: Lowest latency and cost
|
|
722334
722586
|
- low: Quick, straightforward implementation
|
|
722335
722587
|
- medium: Balanced approach with standard testing
|
|
722336
722588
|
- high: Comprehensive implementation with extensive testing
|
|
722337
|
-
-
|
|
722338
|
-
-
|
|
722589
|
+
- xhigh: Extended reasoning above high
|
|
722590
|
+
- max: The selected model's highest advertised level
|
|
722591
|
+
- auto: Use the model/provider default`);
|
|
722339
722592
|
return;
|
|
722340
722593
|
}
|
|
722341
|
-
if (!args || args === "current" || args === "status") {
|
|
722342
|
-
return /* @__PURE__ */ jsx_dev_runtime345.jsxDEV(ShowCurrentEffort, {
|
|
722343
|
-
onDone
|
|
722344
|
-
}, undefined, false, undefined, this);
|
|
722345
|
-
}
|
|
722346
722594
|
const model = getMainLoopModel();
|
|
722347
722595
|
const runtimeProvider = getRuntimeProvider();
|
|
722348
|
-
if (
|
|
722349
|
-
await
|
|
722596
|
+
if (!getSupportedEffortLevelsForModel(model, runtimeProvider).length) {
|
|
722597
|
+
await ensureProviderReasoningCapabilitiesForModel(runtimeProvider, model).catch(() => {
|
|
722350
722598
|
return;
|
|
722351
722599
|
});
|
|
722352
722600
|
}
|
|
722353
|
-
|
|
722601
|
+
if (!args || args === "current" || args === "status") {
|
|
722602
|
+
return /* @__PURE__ */ jsx_dev_runtime345.jsxDEV(ShowCurrentEffort, {
|
|
722603
|
+
onDone
|
|
722604
|
+
}, undefined, false, undefined, this);
|
|
722605
|
+
}
|
|
722606
|
+
const result = executeEffort(args, model, runtimeProvider);
|
|
722354
722607
|
return /* @__PURE__ */ jsx_dev_runtime345.jsxDEV(ApplyEffortAndClose, {
|
|
722355
722608
|
result,
|
|
722356
722609
|
onDone
|
|
@@ -722380,7 +722633,7 @@ var init_effort3 = __esm(() => {
|
|
|
722380
722633
|
type: "local-jsx",
|
|
722381
722634
|
name: "effort",
|
|
722382
722635
|
description: "Set effort level for model usage",
|
|
722383
|
-
argumentHint: "[low|medium|high|max|auto]",
|
|
722636
|
+
argumentHint: "[minimal|low|medium|high|xhigh|max|auto]",
|
|
722384
722637
|
get immediate() {
|
|
722385
722638
|
return shouldInferenceConfigCommandBeImmediate();
|
|
722386
722639
|
},
|
|
@@ -727755,7 +728008,7 @@ function generateHtmlReport(data, insights) {
|
|
|
727755
728008
|
</html>`;
|
|
727756
728009
|
}
|
|
727757
728010
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
727758
|
-
const version3 = typeof MACRO !== "undefined" ? "1.81.
|
|
728011
|
+
const version3 = typeof MACRO !== "undefined" ? "1.81.9" : "unknown";
|
|
727759
728012
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
727760
728013
|
const facets_summary = {
|
|
727761
728014
|
total: facets.size,
|
|
@@ -732068,7 +732321,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
732068
732321
|
init_settings2();
|
|
732069
732322
|
init_slowOperations();
|
|
732070
732323
|
init_uuid();
|
|
732071
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.81.
|
|
732324
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.81.9" : "unknown";
|
|
732072
732325
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
732073
732326
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
732074
732327
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -733283,7 +733536,7 @@ var init_filesystem = __esm(() => {
|
|
|
733283
733536
|
});
|
|
733284
733537
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
733285
733538
|
const nonce = randomBytes24(16).toString("hex");
|
|
733286
|
-
return join243(getURTempDir(), "bundled-skills", "1.81.
|
|
733539
|
+
return join243(getURTempDir(), "bundled-skills", "1.81.9", nonce);
|
|
733287
733540
|
});
|
|
733288
733541
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
733289
733542
|
});
|
|
@@ -739683,7 +739936,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
739683
739936
|
}
|
|
739684
739937
|
function computeFingerprintFromMessages(messages) {
|
|
739685
739938
|
const firstMessageText = extractFirstMessageText(messages);
|
|
739686
|
-
return computeFingerprint(firstMessageText, "1.81.
|
|
739939
|
+
return computeFingerprint(firstMessageText, "1.81.9");
|
|
739687
739940
|
}
|
|
739688
739941
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
739689
739942
|
var init_fingerprint = () => {};
|
|
@@ -739876,8 +740129,8 @@ function should1hCacheTTL(querySource) {
|
|
|
739876
740129
|
}
|
|
739877
740130
|
return querySource !== undefined && allowlist.some((pattern2) => pattern2.endsWith("*") ? querySource.startsWith(pattern2.slice(0, -1)) : querySource === pattern2);
|
|
739878
740131
|
}
|
|
739879
|
-
function configureEffortParams(effortValue, outputConfig, extraBodyParams, betas, model) {
|
|
739880
|
-
if (!modelSupportsEffort(model) || "effort" in outputConfig) {
|
|
740132
|
+
function configureEffortParams(effortValue, outputConfig, extraBodyParams, betas, model, provider = getRuntimeProvider()) {
|
|
740133
|
+
if (!modelSupportsEffort(model, provider) || "effort" in outputConfig) {
|
|
739881
740134
|
return;
|
|
739882
740135
|
}
|
|
739883
740136
|
if (effortValue === undefined) {
|
|
@@ -740429,7 +740682,7 @@ ${deferredToolList}
|
|
|
740429
740682
|
const outputConfig = {
|
|
740430
740683
|
...extraBodyParams.output_config ?? {}
|
|
740431
740684
|
};
|
|
740432
|
-
configureEffortParams(effort, outputConfig, extraBodyParams, betasParams, options5.model);
|
|
740685
|
+
configureEffortParams(effort, outputConfig, extraBodyParams, betasParams, options5.model, options5.providerSettings?.active);
|
|
740433
740686
|
configureTaskBudgetParams(options5.taskBudget, outputConfig, betasParams);
|
|
740434
740687
|
if (options5.outputFormat && !("format" in outputConfig)) {
|
|
740435
740688
|
outputConfig.format = options5.outputFormat;
|
|
@@ -741618,7 +741871,7 @@ async function sideQuery(opts) {
|
|
|
741618
741871
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
741619
741872
|
}
|
|
741620
741873
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
741621
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.81.
|
|
741874
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.81.9");
|
|
741622
741875
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
741623
741876
|
const systemBlocks = [
|
|
741624
741877
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -746452,7 +746705,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
746452
746705
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
746453
746706
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
746454
746707
|
betas: getSdkBetas(),
|
|
746455
|
-
ur_version: "1.81.
|
|
746708
|
+
ur_version: "1.81.9",
|
|
746456
746709
|
output_style: outputStyle,
|
|
746457
746710
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
746458
746711
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -760288,7 +760541,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
760288
760541
|
function getSemverPart(version3) {
|
|
760289
760542
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
760290
760543
|
}
|
|
760291
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.81.
|
|
760544
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.81.9") {
|
|
760292
760545
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
|
|
760293
760546
|
if (!updatedVersion) {
|
|
760294
760547
|
return null;
|
|
@@ -760337,7 +760590,7 @@ function AutoUpdater({
|
|
|
760337
760590
|
return;
|
|
760338
760591
|
}
|
|
760339
760592
|
if (false) {}
|
|
760340
|
-
const currentVersion = "1.81.
|
|
760593
|
+
const currentVersion = "1.81.9";
|
|
760341
760594
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
760342
760595
|
let latestVersion = await getLatestVersion(channel);
|
|
760343
760596
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -760566,12 +760819,12 @@ function NativeAutoUpdater({
|
|
|
760566
760819
|
logEvent("tengu_native_auto_updater_start", {});
|
|
760567
760820
|
try {
|
|
760568
760821
|
const maxVersion = await getMaxVersion();
|
|
760569
|
-
if (maxVersion && gt("1.81.
|
|
760822
|
+
if (maxVersion && gt("1.81.9", maxVersion)) {
|
|
760570
760823
|
const msg = await getMaxVersionMessage();
|
|
760571
760824
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
760572
760825
|
}
|
|
760573
760826
|
const result = await installLatest(channel);
|
|
760574
|
-
const currentVersion = "1.81.
|
|
760827
|
+
const currentVersion = "1.81.9";
|
|
760575
760828
|
const latencyMs = Date.now() - startTime;
|
|
760576
760829
|
if (result.lockFailed) {
|
|
760577
760830
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -760708,17 +760961,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
760708
760961
|
const maxVersion = await getMaxVersion();
|
|
760709
760962
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
760710
760963
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
760711
|
-
if (gte("1.81.
|
|
760712
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.
|
|
760964
|
+
if (gte("1.81.9", maxVersion)) {
|
|
760965
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.9"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
760713
760966
|
setUpdateAvailable(false);
|
|
760714
760967
|
return;
|
|
760715
760968
|
}
|
|
760716
760969
|
latest = maxVersion;
|
|
760717
760970
|
}
|
|
760718
|
-
const hasUpdate = latest && !gte("1.81.
|
|
760971
|
+
const hasUpdate = latest && !gte("1.81.9", latest) && !shouldSkipVersion(latest);
|
|
760719
760972
|
setUpdateAvailable(!!hasUpdate);
|
|
760720
760973
|
if (hasUpdate) {
|
|
760721
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.
|
|
760974
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.9"} -> ${latest}`);
|
|
760722
760975
|
}
|
|
760723
760976
|
};
|
|
760724
760977
|
$2[0] = t1;
|
|
@@ -760752,7 +761005,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
760752
761005
|
wrap: "truncate",
|
|
760753
761006
|
children: [
|
|
760754
761007
|
"currentVersion: ",
|
|
760755
|
-
"1.81.
|
|
761008
|
+
"1.81.9"
|
|
760756
761009
|
]
|
|
760757
761010
|
}, undefined, true, undefined, this);
|
|
760758
761011
|
$2[3] = verbose;
|
|
@@ -771605,7 +771858,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
771605
771858
|
project_dir: getOriginalCwd(),
|
|
771606
771859
|
added_dirs: addedDirs
|
|
771607
771860
|
},
|
|
771608
|
-
version: "1.81.
|
|
771861
|
+
version: "1.81.9",
|
|
771609
771862
|
output_style: {
|
|
771610
771863
|
name: outputStyleName
|
|
771611
771864
|
},
|
|
@@ -771740,7 +771993,7 @@ function StatusLineInner({
|
|
|
771740
771993
|
const attention = customStatusError ?? taskAttention;
|
|
771741
771994
|
const terminalSize = React133.useContext(TerminalSizeContext);
|
|
771742
771995
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
771743
|
-
version: "1.81.
|
|
771996
|
+
version: "1.81.9",
|
|
771744
771997
|
providerLabel: providerRuntime.providerLabel,
|
|
771745
771998
|
authMode: providerRuntime.authLabel,
|
|
771746
771999
|
model: renderModelName(mainLoopModel) || providerRuntime.model || "",
|
|
@@ -783996,7 +784249,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
783996
784249
|
} catch {}
|
|
783997
784250
|
const data = {
|
|
783998
784251
|
trigger: trigger2,
|
|
783999
|
-
version: "1.81.
|
|
784252
|
+
version: "1.81.9",
|
|
784000
784253
|
platform: process.platform,
|
|
784001
784254
|
transcript,
|
|
784002
784255
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -786770,7 +787023,7 @@ var init_controlSchemas = __esm(() => {
|
|
|
786770
787023
|
})).describe("Ordered low-to-high priority \u2014 later entries override earlier ones."),
|
|
786771
787024
|
applied: exports_external.object({
|
|
786772
787025
|
model: exports_external.string(),
|
|
786773
|
-
effort: exports_external.enum(["low", "medium", "high", "max"]).nullable()
|
|
787026
|
+
effort: exports_external.enum(["minimal", "low", "medium", "high", "xhigh", "max"]).nullable()
|
|
786774
787027
|
}).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
787028
|
}).describe("Effective merged settings plus raw per-source settings in merge order."));
|
|
786776
787029
|
SDKControlElicitationRequestSchema = lazySchema(() => exports_external.object({
|
|
@@ -796365,7 +796618,7 @@ function WelcomeV2() {
|
|
|
796365
796618
|
dimColor: true,
|
|
796366
796619
|
children: [
|
|
796367
796620
|
"v",
|
|
796368
|
-
"1.81.
|
|
796621
|
+
"1.81.9"
|
|
796369
796622
|
]
|
|
796370
796623
|
}, undefined, true, undefined, this)
|
|
796371
796624
|
]
|
|
@@ -797625,7 +797878,7 @@ function completeOnboarding() {
|
|
|
797625
797878
|
saveGlobalConfig((current) => ({
|
|
797626
797879
|
...current,
|
|
797627
797880
|
hasCompletedOnboarding: true,
|
|
797628
|
-
lastOnboardingVersion: "1.81.
|
|
797881
|
+
lastOnboardingVersion: "1.81.9"
|
|
797629
797882
|
}));
|
|
797630
797883
|
}
|
|
797631
797884
|
function showDialog(root2, renderer) {
|
|
@@ -802771,7 +803024,7 @@ function appendToLog(path28, message) {
|
|
|
802771
803024
|
cwd: getFsImplementation().cwd(),
|
|
802772
803025
|
userType: process.env.USER_TYPE,
|
|
802773
803026
|
sessionId: getSessionId(),
|
|
802774
|
-
version: "1.81.
|
|
803027
|
+
version: "1.81.9"
|
|
802775
803028
|
};
|
|
802776
803029
|
getLogWriter(path28).write(messageWithTimestamp);
|
|
802777
803030
|
}
|
|
@@ -806935,8 +807188,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
806935
807188
|
}
|
|
806936
807189
|
async function checkEnvLessBridgeMinVersion() {
|
|
806937
807190
|
const cfg = await getEnvLessBridgeConfig();
|
|
806938
|
-
if (cfg.min_version && lt("1.81.
|
|
806939
|
-
return `Your version of UR (${"1.81.
|
|
807191
|
+
if (cfg.min_version && lt("1.81.9", cfg.min_version)) {
|
|
807192
|
+
return `Your version of UR (${"1.81.9"}) is too old for Remote Control.
|
|
806940
807193
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
806941
807194
|
}
|
|
806942
807195
|
return null;
|
|
@@ -807410,7 +807663,7 @@ async function initBridgeCore(params) {
|
|
|
807410
807663
|
const rawApi = createBridgeApiClient({
|
|
807411
807664
|
baseUrl,
|
|
807412
807665
|
getAccessToken,
|
|
807413
|
-
runnerVersion: "1.81.
|
|
807666
|
+
runnerVersion: "1.81.9",
|
|
807414
807667
|
onDebug: logForDebugging,
|
|
807415
807668
|
onAuth401,
|
|
807416
807669
|
getTrustedDeviceToken
|
|
@@ -809692,10 +809945,12 @@ function runHeadlessStreaming(structuredIO, mcpClients, commands, tools, initial
|
|
|
809692
809945
|
});
|
|
809693
809946
|
}
|
|
809694
809947
|
const modelOptions = getModelOptions();
|
|
809948
|
+
const runtimeProvider = getRuntimeProvider();
|
|
809695
809949
|
const modelInfos = modelOptions.map((option29) => {
|
|
809696
809950
|
const modelId = option29.value === null ? "default" : option29.value;
|
|
809697
809951
|
const resolvedModel = modelId === "default" ? getDefaultMainLoopModel() : parseUserSpecifiedModel(modelId);
|
|
809698
|
-
const
|
|
809952
|
+
const supportedEffortLevels = getSupportedEffortLevelsForModel(resolvedModel, runtimeProvider);
|
|
809953
|
+
const hasEffort = supportedEffortLevels.length > 0;
|
|
809699
809954
|
const hasAdaptiveThinking = modelSupportsAdaptiveThinking(resolvedModel);
|
|
809700
809955
|
const hasFastMode = isFastModeSupportedByModel(option29.value);
|
|
809701
809956
|
const hasAutoMode = modelSupportsAutoMode(resolvedModel);
|
|
@@ -809705,7 +809960,7 @@ function runHeadlessStreaming(structuredIO, mcpClients, commands, tools, initial
|
|
|
809705
809960
|
description: option29.description,
|
|
809706
809961
|
...hasEffort && {
|
|
809707
809962
|
supportsEffort: true,
|
|
809708
|
-
supportedEffortLevels
|
|
809963
|
+
supportedEffortLevels
|
|
809709
809964
|
},
|
|
809710
809965
|
...hasAdaptiveThinking && { supportsAdaptiveThinking: true },
|
|
809711
809966
|
...hasFastMode && { supportsFastMode: true },
|
|
@@ -811073,7 +811328,8 @@ ${m.text}
|
|
|
811073
811328
|
} else if (message.request.subtype === "get_settings") {
|
|
811074
811329
|
const currentAppState = getAppState();
|
|
811075
811330
|
const model = getMainLoopModel();
|
|
811076
|
-
const
|
|
811331
|
+
const provider = getRuntimeProvider();
|
|
811332
|
+
const effort = modelSupportsEffort(model, provider) ? resolveAppliedEffort(model, currentAppState.effortValue, provider) : undefined;
|
|
811077
811333
|
sendControlResponseSuccess(message, {
|
|
811078
811334
|
...getSettingsWithSources(),
|
|
811079
811335
|
applied: {
|
|
@@ -816883,7 +817139,7 @@ function getAgUiCapabilities() {
|
|
|
816883
817139
|
name: "UR-Nexus",
|
|
816884
817140
|
type: "ur-nexus",
|
|
816885
817141
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
816886
|
-
version: "1.81.
|
|
817142
|
+
version: "1.81.9",
|
|
816887
817143
|
provider: "UR",
|
|
816888
817144
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
816889
817145
|
},
|
|
@@ -818110,7 +818366,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
818110
818366
|
};
|
|
818111
818367
|
const server2 = new Server({
|
|
818112
818368
|
name: "ur-nexus",
|
|
818113
|
-
version: "1.81.
|
|
818369
|
+
version: "1.81.9"
|
|
818114
818370
|
}, {
|
|
818115
818371
|
capabilities: {
|
|
818116
818372
|
tools: {}
|
|
@@ -819314,7 +819570,7 @@ function thrownResponse(error40) {
|
|
|
819314
819570
|
}
|
|
819315
819571
|
async function createUrMcp2026Runtime(options5) {
|
|
819316
819572
|
const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
|
|
819317
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.
|
|
819573
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.9" }, { capabilities: {} });
|
|
819318
819574
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
819319
819575
|
try {
|
|
819320
819576
|
await server2.connect(serverTransport);
|
|
@@ -819325,7 +819581,7 @@ async function createUrMcp2026Runtime(options5) {
|
|
|
819325
819581
|
}
|
|
819326
819582
|
const runtime2 = new Mcp2026Runtime({
|
|
819327
819583
|
cwd: options5.cwd,
|
|
819328
|
-
version: "1.81.
|
|
819584
|
+
version: "1.81.9",
|
|
819329
819585
|
backend: {
|
|
819330
819586
|
listTools: async () => {
|
|
819331
819587
|
const listed = await client2.listTools();
|
|
@@ -822060,7 +822316,7 @@ async function update() {
|
|
|
822060
822316
|
logEvent("tengu_update_check", {});
|
|
822061
822317
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
822062
822318
|
const result = await checkUpgradeStatus({
|
|
822063
|
-
currentVersion: "1.81.
|
|
822319
|
+
currentVersion: "1.81.9",
|
|
822064
822320
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
822065
822321
|
installationType: diagnostic2.installationType,
|
|
822066
822322
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -822457,9 +822713,9 @@ async function run3() {
|
|
|
822457
822713
|
}).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
822714
|
const n3 = Number(v);
|
|
822459
822715
|
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) => {
|
|
822716
|
+
}).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
822717
|
const value2 = rawValue.toLowerCase();
|
|
822462
|
-
const allowed = ["low", "medium", "high", "max"];
|
|
822718
|
+
const allowed = ["minimal", "low", "medium", "high", "xhigh", "max"];
|
|
822463
822719
|
if (!allowed.includes(value2)) {
|
|
822464
822720
|
throw new InvalidArgumentError(`It must be one of: ${allowed.join(", ")}`);
|
|
822465
822721
|
}
|
|
@@ -823388,7 +823644,7 @@ ${customInstructions}` : customInstructions;
|
|
|
823388
823644
|
}
|
|
823389
823645
|
}
|
|
823390
823646
|
logForDiagnosticsNoPII("info", "started", {
|
|
823391
|
-
version: "1.81.
|
|
823647
|
+
version: "1.81.9",
|
|
823392
823648
|
is_native_binary: isInBundledMode()
|
|
823393
823649
|
});
|
|
823394
823650
|
registerCleanup(async () => {
|
|
@@ -824175,7 +824431,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
824175
824431
|
pendingHookMessages
|
|
824176
824432
|
}, renderAndRun);
|
|
824177
824433
|
}
|
|
824178
|
-
}).version("1.81.
|
|
824434
|
+
}).version("1.81.9 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
824179
824435
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
824180
824436
|
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
824437
|
if (canUserConfigureAdvisor()) {
|
|
@@ -825302,7 +825558,7 @@ if (false) {}
|
|
|
825302
825558
|
async function main2() {
|
|
825303
825559
|
const args = process.argv.slice(2);
|
|
825304
825560
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
825305
|
-
console.log(`${"1.81.
|
|
825561
|
+
console.log(`${"1.81.9"} (UR-Nexus)`);
|
|
825306
825562
|
return;
|
|
825307
825563
|
}
|
|
825308
825564
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|