ur-agent 1.84.0 → 1.84.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +46 -0
- package/README.md +32 -12
- package/dist/cli.js +393 -129
- package/docs/AGENT_TRENDS.md +2 -2
- package/docs/CONFIGURATION.md +34 -11
- package/docs/TROUBLESHOOTING.md +6 -0
- package/docs/USAGE.md +11 -4
- package/docs/VALIDATION.md +33 -7
- package/docs/providers.md +86 -17
- package/documentation/app.js +3 -3
- package/documentation/index.html +24 -4
- 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
|
@@ -60524,9 +60524,9 @@ function isRecord(value) {
|
|
|
60524
60524
|
function parseModelReasoningCapabilities(value) {
|
|
60525
60525
|
if (!isRecord(value))
|
|
60526
60526
|
return;
|
|
60527
|
-
const rawSupportedEfforts = value.supported_efforts !== undefined ? value.supported_efforts : value.supportedEfforts;
|
|
60527
|
+
const rawSupportedEfforts = value.supported_efforts !== undefined ? value.supported_efforts : value.supportedEfforts ?? value.allowed_options;
|
|
60528
60528
|
const supportedEfforts = rawSupportedEfforts === null ? null : Array.isArray(rawSupportedEfforts) ? Array.from(new Set(rawSupportedEfforts.filter((entry) => typeof entry === "string").map((entry) => entry.trim().toLowerCase()).filter(Boolean))) : undefined;
|
|
60529
|
-
const defaultEffort = asString(value.default_effort !== undefined ? value.default_effort : value.defaultEffort)?.toLowerCase();
|
|
60529
|
+
const defaultEffort = asString(value.default_effort !== undefined ? value.default_effort : value.defaultEffort ?? (rawSupportedEfforts !== undefined ? value.default : undefined))?.toLowerCase();
|
|
60530
60530
|
const rawAliases = isRecord(value.effort_aliases) ? value.effort_aliases : isRecord(value.effortAliases) ? value.effortAliases : undefined;
|
|
60531
60531
|
const effortAliases = rawAliases ? Object.fromEntries(Object.entries(rawAliases).flatMap(([selector, wireValue]) => {
|
|
60532
60532
|
const normalizedSelector = selector.trim().toLowerCase();
|
|
@@ -60621,7 +60621,7 @@ function toDiscoveredModel(entry, providerLabel) {
|
|
|
60621
60621
|
const humanName = asString(raw.display_name) ?? asString(raw.displayName) ?? asString(raw.name);
|
|
60622
60622
|
const supportedParameters = Array.isArray(raw.supported_parameters) ? raw.supported_parameters.filter((value) => typeof value === "string") : Array.isArray(raw.supportedGenerationMethods) ? raw.supportedGenerationMethods.filter((value) => typeof value === "string") : undefined;
|
|
60623
60623
|
const capabilities = isRecord(raw.capabilities) ? raw.capabilities : undefined;
|
|
60624
|
-
const parsedReasoning = parseModelReasoningCapabilities(raw.reasoning);
|
|
60624
|
+
const parsedReasoning = parseModelReasoningCapabilities(raw.reasoning) ?? parseModelReasoningCapabilities(capabilities && isRecord(capabilities.reasoning) ? capabilities.reasoning : undefined) ?? parseModelReasoningCapabilities(raw);
|
|
60625
60625
|
const advertisesReasoning = supportedParameters?.some((parameter) => /^(?:reasoning|reasoning_effort|thinking)$/iu.test(parameter.trim()));
|
|
60626
60626
|
const reasoning = parsedReasoning ?? (advertisesReasoning ? { supportsThinking: true } : undefined);
|
|
60627
60627
|
const expirationDate = asEpochSeconds(raw.expiration_date);
|
|
@@ -60952,6 +60952,8 @@ function getProviderRuntimeBackend(providerId) {
|
|
|
60952
60952
|
return "api:gemini";
|
|
60953
60953
|
case "openrouter":
|
|
60954
60954
|
return "api:openrouter";
|
|
60955
|
+
case "nvidia-nim":
|
|
60956
|
+
return "api:nvidia-nim";
|
|
60955
60957
|
default:
|
|
60956
60958
|
return `unknown:${providerId}`;
|
|
60957
60959
|
}
|
|
@@ -61297,9 +61299,6 @@ function openAiCompatibleModelUrls(baseUrl) {
|
|
|
61297
61299
|
url3.pathname = `${rootPath}/models`;
|
|
61298
61300
|
return [versioned, url3.toString().replace(/\/$/, "")];
|
|
61299
61301
|
}
|
|
61300
|
-
function isLocalBaseUrl(value) {
|
|
61301
|
-
return LOCALHOST_RE.test(value);
|
|
61302
|
-
}
|
|
61303
61302
|
async function checkEndpoint(definition, settings, adapters, result) {
|
|
61304
61303
|
if (!definition.endpointKind)
|
|
61305
61304
|
return;
|
|
@@ -61369,7 +61368,8 @@ async function checkEndpoint(definition, settings, adapters, result) {
|
|
|
61369
61368
|
status: "fail",
|
|
61370
61369
|
message: `${candidates[0]} returned HTTP ${lastStatus}.`
|
|
61371
61370
|
});
|
|
61372
|
-
|
|
61371
|
+
const authenticationFailure = (lastStatus === 401 || lastStatus === 403) && definition.envKey;
|
|
61372
|
+
addFailure(result, `endpoint returned HTTP ${lastStatus}`, authenticationFailure ? `Add or replace this endpoint's key with: ur connect ${definition.id} (or set ${definition.envKey}).` : `Start the provider server or update base_url: ur config set base_url ${definition.id} ${baseUrl}`);
|
|
61373
61373
|
} else {
|
|
61374
61374
|
result.checks.push({
|
|
61375
61375
|
name: "endpoint",
|
|
@@ -61502,7 +61502,7 @@ async function checkSubscriptionProvider(definition, settings, adapters, result)
|
|
|
61502
61502
|
async function checkApiProvider(definition, settings, adapters, result) {
|
|
61503
61503
|
const env4 = adapters.env ?? process.env;
|
|
61504
61504
|
const baseUrl = settings.baseUrl ?? definition.defaultBaseUrl;
|
|
61505
|
-
const requiresKey = definition.
|
|
61505
|
+
const requiresKey = definition.requiresApiKey === true || definition.credentialType === "api-key" && definition.endpointKind !== "openai-compatible";
|
|
61506
61506
|
let apiKey = definition.envKey ? env4[definition.envKey] : undefined;
|
|
61507
61507
|
let keySource = "env";
|
|
61508
61508
|
if (!apiKey && (!adapters.env || adapters.getApiKey)) {
|
|
@@ -62040,7 +62040,7 @@ function modelDefinitionsFromDiscovered(models, provider) {
|
|
|
62040
62040
|
function providerModelCacheKey(provider, settings = getInitialSettings()) {
|
|
62041
62041
|
const definition = getProviderDefinition(provider);
|
|
62042
62042
|
let endpoint = providerBaseUrl(provider, definition, settings);
|
|
62043
|
-
if (definition.accessType === "api" && definition.modelDiscoveryType === "live") {
|
|
62043
|
+
if (definition.accessType === "api" && definition.modelDiscoveryType === "live" && !definition.endpointKind) {
|
|
62044
62044
|
endpoint = apiModelsRequest(provider, "", settings).url;
|
|
62045
62045
|
}
|
|
62046
62046
|
if (!endpoint)
|
|
@@ -62110,12 +62110,58 @@ function providerPropsUrl(baseUrl, model) {
|
|
|
62110
62110
|
url3.hash = "";
|
|
62111
62111
|
url3.search = "";
|
|
62112
62112
|
let path8 = url3.pathname.replace(/\/+$/, "");
|
|
62113
|
+
path8 = path8.replace(/\/(?:v\d+(?:beta)?|api\/v\d+)\/(?:chat\/completions|models|responses|props)$/i, "");
|
|
62113
62114
|
path8 = path8.replace(/\/(?:v\d+(?:beta)?|api\/v\d+)$/i, "");
|
|
62114
62115
|
path8 = path8.replace(/\/(?:chat\/completions|models|props)$/i, "");
|
|
62115
62116
|
url3.pathname = `${path8}/props`;
|
|
62116
62117
|
url3.searchParams.set("model", model);
|
|
62117
62118
|
return url3.toString();
|
|
62118
62119
|
}
|
|
62120
|
+
function vllmServerInfoUrl(baseUrl) {
|
|
62121
|
+
const url3 = new URL(normalizeBaseUrl(baseUrl));
|
|
62122
|
+
url3.hash = "";
|
|
62123
|
+
url3.search = "";
|
|
62124
|
+
let path8 = url3.pathname.replace(/\/+$/, "");
|
|
62125
|
+
path8 = path8.replace(/\/(?:v\d+(?:beta)?|api\/v\d+)\/(?:chat\/completions|models|responses)$/i, "");
|
|
62126
|
+
path8 = path8.replace(/\/(?:v\d+(?:beta)?|api\/v\d+)$/i, "");
|
|
62127
|
+
path8 = path8.replace(/\/(?:chat\/completions|models|responses)$/i, "");
|
|
62128
|
+
url3.pathname = `${path8}/server_info`;
|
|
62129
|
+
url3.searchParams.set("config_format", "json");
|
|
62130
|
+
return url3.toString();
|
|
62131
|
+
}
|
|
62132
|
+
function vllmServerAdvertisesReasoning(value) {
|
|
62133
|
+
if (!value || typeof value !== "object")
|
|
62134
|
+
return false;
|
|
62135
|
+
const pending = [value];
|
|
62136
|
+
const seen = new Set;
|
|
62137
|
+
while (pending.length > 0) {
|
|
62138
|
+
const current = pending.pop();
|
|
62139
|
+
if (!current || typeof current !== "object" || seen.has(current))
|
|
62140
|
+
continue;
|
|
62141
|
+
seen.add(current);
|
|
62142
|
+
for (const [key, nested] of Object.entries(current)) {
|
|
62143
|
+
const normalizedKey = key.replace(/-/g, "_").toLowerCase();
|
|
62144
|
+
if (normalizedKey === "reasoning_parser" && typeof nested === "string" && nested.trim() && !/^(?:none|null|false)$/i.test(nested.trim())) {
|
|
62145
|
+
return true;
|
|
62146
|
+
}
|
|
62147
|
+
if (normalizedKey === "enable_reasoning" && nested === true) {
|
|
62148
|
+
return true;
|
|
62149
|
+
}
|
|
62150
|
+
if (nested && typeof nested === "object")
|
|
62151
|
+
pending.push(nested);
|
|
62152
|
+
}
|
|
62153
|
+
}
|
|
62154
|
+
return false;
|
|
62155
|
+
}
|
|
62156
|
+
function reasoningCapabilitiesFromVllmServerInfo(value) {
|
|
62157
|
+
if (!vllmServerAdvertisesReasoning(value))
|
|
62158
|
+
return;
|
|
62159
|
+
return {
|
|
62160
|
+
supportsThinking: true,
|
|
62161
|
+
supportedEfforts: ["none", "low", "medium", "high"],
|
|
62162
|
+
effortAliases: { minimal: "none" }
|
|
62163
|
+
};
|
|
62164
|
+
}
|
|
62119
62165
|
function ollamaShowUrl(baseUrl) {
|
|
62120
62166
|
const url3 = new URL(endpointUrl(baseUrl, "ollama"));
|
|
62121
62167
|
url3.pathname = url3.pathname.replace(/\/tags\/?$/i, "/show");
|
|
@@ -62164,10 +62210,11 @@ function reasoningCapabilitiesFromProps(value) {
|
|
|
62164
62210
|
return explicit;
|
|
62165
62211
|
const caps = root2.chat_template_caps && typeof root2.chat_template_caps === "object" ? root2.chat_template_caps : undefined;
|
|
62166
62212
|
if (caps?.supports_reasoning_effort === true) {
|
|
62167
|
-
return {
|
|
62213
|
+
return { supportsThinking: true };
|
|
62168
62214
|
}
|
|
62169
62215
|
if (caps?.supports_reasoning_effort === false) {
|
|
62170
|
-
|
|
62216
|
+
const supportsThinking = caps.supports_reasoning === true || caps.supports_thinking === true || caps.supports_preserve_reasoning === true;
|
|
62217
|
+
return supportsThinking ? { supportsThinking: true, supportedEfforts: [] } : { supportedEfforts: [] };
|
|
62171
62218
|
}
|
|
62172
62219
|
return;
|
|
62173
62220
|
}
|
|
@@ -62200,7 +62247,7 @@ async function ensureProviderReasoningCapabilitiesForModel(providerId, model, op
|
|
|
62200
62247
|
const cached2 = getProviderReasoningCapabilitiesForModel(model, provider, settings);
|
|
62201
62248
|
if (cached2 !== undefined)
|
|
62202
62249
|
return cached2;
|
|
62203
|
-
if (provider !== "llama.cpp" && provider !== "ollama") {
|
|
62250
|
+
if (provider !== "llama.cpp" && provider !== "ollama" && provider !== "vllm") {
|
|
62204
62251
|
await ensureProviderModelsFresh(provider, options);
|
|
62205
62252
|
return getProviderReasoningCapabilitiesForModel(model, provider, settings);
|
|
62206
62253
|
}
|
|
@@ -62214,7 +62261,8 @@ async function ensureProviderReasoningCapabilitiesForModel(providerId, model, op
|
|
|
62214
62261
|
if (!apiKey) {
|
|
62215
62262
|
apiKey = await storedProviderApiKey(provider, env4, options.adapters);
|
|
62216
62263
|
}
|
|
62217
|
-
const
|
|
62264
|
+
const capabilityUrl = provider === "ollama" ? ollamaShowUrl(baseUrl) : provider === "vllm" ? vllmServerInfoUrl(baseUrl) : providerPropsUrl(baseUrl, model);
|
|
62265
|
+
const response = await fetchImpl(capabilityUrl, {
|
|
62218
62266
|
method: provider === "ollama" ? "POST" : "GET",
|
|
62219
62267
|
signal: options.signal,
|
|
62220
62268
|
...provider === "ollama" ? {
|
|
@@ -62226,10 +62274,10 @@ async function ensureProviderReasoningCapabilitiesForModel(providerId, model, op
|
|
|
62226
62274
|
} : apiKey ? { headers: { Authorization: `Bearer ${apiKey}` } } : {}
|
|
62227
62275
|
});
|
|
62228
62276
|
if (!response.ok) {
|
|
62229
|
-
throw new Error(`${provider === "ollama" ? "Ollama /api/show" : "llama.cpp /props"} returned HTTP ${response.status}.`);
|
|
62277
|
+
throw new Error(`${provider === "ollama" ? "Ollama /api/show" : provider === "vllm" ? "vLLM /server_info" : "llama.cpp /props"} returned HTTP ${response.status}.`);
|
|
62230
62278
|
}
|
|
62231
62279
|
const body = await response.json().catch(() => null);
|
|
62232
|
-
const reasoning = provider === "ollama" ? reasoningCapabilitiesFromOllamaShow(model, body) : reasoningCapabilitiesFromProps(body);
|
|
62280
|
+
const reasoning = provider === "ollama" ? reasoningCapabilitiesFromOllamaShow(model, body) : provider === "vllm" ? reasoningCapabilitiesFromVllmServerInfo(body) : reasoningCapabilitiesFromProps(body);
|
|
62233
62281
|
if (reasoning) {
|
|
62234
62282
|
rememberProviderModelReasoning(provider, model, reasoning, settings);
|
|
62235
62283
|
}
|
|
@@ -62730,7 +62778,7 @@ function setProviderModel(providerId, modelId, options = {}) {
|
|
|
62730
62778
|
modelSource: options.modelSource ?? "static"
|
|
62731
62779
|
};
|
|
62732
62780
|
}
|
|
62733
|
-
var PROVIDER_IDS, DEFAULT_PROVIDER_ID = "ollama",
|
|
62781
|
+
var PROVIDER_IDS, DEFAULT_PROVIDER_ID = "ollama", UR_NATIVE_PROVIDER_BOUNDARY = "UR-native runtime: UR owns provider request shaping, native tool-call parsing, native streaming, and UR-run tool permission/sandbox/verifier flow.", SUBSCRIPTION_CLI_PROVIDER_BOUNDARY = "External vendor CLI boundary: UR passes prompt text to the official CLI and receives final text output. UR-native tool calling, UR Bash/File tool execution, UR-native streaming, local command permissions, sandbox guarantees, and verifier/done-gate checks apply to UR-run tools/final UR output, not to actions the external CLI performs internally.", UNCONFIGURED_SUBSCRIPTION_PROVIDER_BOUNDARY = "Unconfigured subscription placeholder: no runtime is attached. Choose a specific subscription CLI, API, local, or server provider.", UR_NATIVE_CAPABILITIES, SUBSCRIPTION_CLI_CAPABILITIES, SUBSCRIPTION_PLACEHOLDER_CAPABILITIES, PROVIDERS, PROVIDER_ALIAS_ENTRIES, PROVIDER_ALIASES, PROVIDER_FAMILIES, EFFORT_LOW_MEDIUM_HIGH, EFFORT_LOW_MEDIUM_HIGH_XHIGH, EFFORT_LOW_MEDIUM_HIGH_MAX, EFFORT_LOW_MEDIUM_HIGH_XHIGH_MAX, OPENAI_GPT_56_EFFORTS, GEMINI_MINIMAL_TO_HIGH, NVIDIA_NONE_LOW_HIGH, NVIDIA_NONE_HIGH_MAX, NVIDIA_FULL_EFFORT_RANGE, PROVIDER_MODELS, cachedModelsByProvider, cachedModelsWrittenAt, modelDiscoveryCoalescer, MODEL_DISCOVERY_TIMEOUT_MS = 15000, validateProviderModelCompatibility;
|
|
62734
62782
|
var init_providerRegistry = __esm(() => {
|
|
62735
62783
|
init_execFileNoThrow();
|
|
62736
62784
|
init_ollamaConfig();
|
|
@@ -62750,12 +62798,12 @@ var init_providerRegistry = __esm(() => {
|
|
|
62750
62798
|
"anthropic-api",
|
|
62751
62799
|
"gemini-api",
|
|
62752
62800
|
"openrouter",
|
|
62801
|
+
"nvidia-nim",
|
|
62753
62802
|
"codex-cli",
|
|
62754
62803
|
"claude-code-cli",
|
|
62755
62804
|
"gemini-cli",
|
|
62756
62805
|
"antigravity-cli"
|
|
62757
62806
|
];
|
|
62758
|
-
LOCALHOST_RE = /^(https?:\/\/)?(localhost|127\.0\.0\.1|\[::1\]|::1)(:\d+)?(\/|$)/i;
|
|
62759
62807
|
UR_NATIVE_CAPABILITIES = {
|
|
62760
62808
|
providerKind: "ur-native",
|
|
62761
62809
|
usesExternalCli: false,
|
|
@@ -62953,6 +63001,27 @@ var init_providerRegistry = __esm(() => {
|
|
|
62953
63001
|
envKey: "OPENROUTER_API_KEY",
|
|
62954
63002
|
defaultBaseUrl: "https://openrouter.ai/api/v1"
|
|
62955
63003
|
},
|
|
63004
|
+
"nvidia-nim": {
|
|
63005
|
+
id: "nvidia-nim",
|
|
63006
|
+
displayName: "NVIDIA NIM",
|
|
63007
|
+
statusBarName: "NVIDIA NIM",
|
|
63008
|
+
accessType: "api",
|
|
63009
|
+
accessTypeLabel: "hosted/server",
|
|
63010
|
+
credentialType: "api-key",
|
|
63011
|
+
modelDiscoveryType: "live",
|
|
63012
|
+
statusCheck: "endpoint",
|
|
63013
|
+
listModels: "openai-compatible-models",
|
|
63014
|
+
validateModel: "discovered-list",
|
|
63015
|
+
runtimeKind: "ur-native",
|
|
63016
|
+
...UR_NATIVE_CAPABILITIES,
|
|
63017
|
+
authMode: "api",
|
|
63018
|
+
legalPath: "NVIDIA API key from build.nvidia.com or an authenticated NVIDIA NIM endpoint",
|
|
63019
|
+
accessPathLabel: "NVIDIA NIM OpenAI-compatible endpoint",
|
|
63020
|
+
envKey: "NVIDIA_API_KEY",
|
|
63021
|
+
requiresApiKey: true,
|
|
63022
|
+
defaultBaseUrl: "https://integrate.api.nvidia.com/v1",
|
|
63023
|
+
endpointKind: "openai-compatible"
|
|
63024
|
+
},
|
|
62956
63025
|
"openai-compatible": {
|
|
62957
63026
|
id: "openai-compatible",
|
|
62958
63027
|
displayName: "OpenAI-compatible",
|
|
@@ -63110,6 +63179,10 @@ var init_providerRegistry = __esm(() => {
|
|
|
63110
63179
|
canonical: "openrouter",
|
|
63111
63180
|
aliases: ["openrouter api"]
|
|
63112
63181
|
},
|
|
63182
|
+
{
|
|
63183
|
+
canonical: "nvidia-nim",
|
|
63184
|
+
aliases: ["nvidia", "nvidia api", "nvidia build", "nvidia nim", "nim"]
|
|
63185
|
+
},
|
|
63113
63186
|
{
|
|
63114
63187
|
canonical: "openai-compatible",
|
|
63115
63188
|
aliases: ["compatible", "openai compatible", "openai compatible api"]
|
|
@@ -63150,6 +63223,7 @@ var init_providerRegistry = __esm(() => {
|
|
|
63150
63223
|
"gemini-cli": "google",
|
|
63151
63224
|
"antigravity-cli": "google",
|
|
63152
63225
|
openrouter: "openai-compatible",
|
|
63226
|
+
"nvidia-nim": "openai-compatible",
|
|
63153
63227
|
"openai-compatible": "openai-compatible",
|
|
63154
63228
|
lmstudio: "openai-compatible",
|
|
63155
63229
|
"llama.cpp": "openai-compatible",
|
|
@@ -63176,6 +63250,21 @@ var init_providerRegistry = __esm(() => {
|
|
|
63176
63250
|
GEMINI_MINIMAL_TO_HIGH = {
|
|
63177
63251
|
supportedEfforts: ["minimal", "low", "medium", "high"]
|
|
63178
63252
|
};
|
|
63253
|
+
NVIDIA_NONE_LOW_HIGH = {
|
|
63254
|
+
supportedEfforts: ["none", "low", "high"],
|
|
63255
|
+
effortAliases: { minimal: "none" },
|
|
63256
|
+
defaultEffort: "high"
|
|
63257
|
+
};
|
|
63258
|
+
NVIDIA_NONE_HIGH_MAX = {
|
|
63259
|
+
supportedEfforts: ["none", "high", "max"],
|
|
63260
|
+
effortAliases: { minimal: "none", ultra: "max" },
|
|
63261
|
+
defaultEffort: "high"
|
|
63262
|
+
};
|
|
63263
|
+
NVIDIA_FULL_EFFORT_RANGE = {
|
|
63264
|
+
supportedEfforts: ["none", "minimal", "low", "medium", "high", "max"],
|
|
63265
|
+
effortAliases: { ultra: "max" },
|
|
63266
|
+
defaultEffort: "high"
|
|
63267
|
+
};
|
|
63179
63268
|
PROVIDER_MODELS = {
|
|
63180
63269
|
subscription: [],
|
|
63181
63270
|
"codex-cli": [
|
|
@@ -63251,6 +63340,15 @@ var init_providerRegistry = __esm(() => {
|
|
|
63251
63340
|
{ id: "google/gemini-3.5-flash", displayName: "Gemini 3.5 Flash", description: "Google Gemini via OpenRouter" },
|
|
63252
63341
|
{ id: "google/gemini-2.5-pro", displayName: "Gemini 2.5 Pro", description: "Google Gemini via OpenRouter" }
|
|
63253
63342
|
],
|
|
63343
|
+
"nvidia-nim": [
|
|
63344
|
+
{ id: "openai/gpt-oss-20b", displayName: "openai/gpt-oss-20b", description: "NVIDIA-documented reasoning contract", isDynamic: true, reasoning: { supportedEfforts: ["low", "medium", "high"], defaultEffort: "medium" } },
|
|
63345
|
+
{ id: "openai/gpt-oss-120b", displayName: "openai/gpt-oss-120b", description: "NVIDIA-documented reasoning contract", isDynamic: true, reasoning: { supportedEfforts: ["low", "medium", "high"], defaultEffort: "medium" } },
|
|
63346
|
+
{ id: "nvidia/nemotron-3-super-120b-a12b", displayName: "nvidia/nemotron-3-super-120b-a12b", description: "NVIDIA-documented reasoning contract", isDynamic: true, reasoning: NVIDIA_NONE_LOW_HIGH },
|
|
63347
|
+
{ id: "nvidia/nemotron-3-ultra-550b-a55b", displayName: "nvidia/nemotron-3-ultra-550b-a55b", description: "NVIDIA-documented reasoning contract", isDynamic: true, reasoning: NVIDIA_NONE_LOW_HIGH },
|
|
63348
|
+
{ id: "deepseek-ai/deepseek-v4-flash", displayName: "deepseek-ai/deepseek-v4-flash", description: "NVIDIA-documented reasoning contract", isDynamic: true, reasoning: NVIDIA_NONE_HIGH_MAX },
|
|
63349
|
+
{ id: "deepseek-ai/deepseek-v4-flash-0731", displayName: "deepseek-ai/deepseek-v4-flash-0731", description: "NVIDIA-documented reasoning contract", isDynamic: true, reasoning: NVIDIA_NONE_HIGH_MAX },
|
|
63350
|
+
{ id: "meta/muse-glimmer-30b", displayName: "meta/muse-glimmer-30b", description: "NVIDIA-documented reasoning contract", isDynamic: true, reasoning: NVIDIA_FULL_EFFORT_RANGE }
|
|
63351
|
+
],
|
|
63254
63352
|
"openai-compatible": [
|
|
63255
63353
|
{ id: "custom", displayName: "Custom Model", description: "Model name from provider endpoint", isDynamic: true }
|
|
63256
63354
|
],
|
|
@@ -231035,7 +231133,7 @@ var init_metadata = __esm(() => {
|
|
|
231035
231133
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
231036
231134
|
WHITESPACE_REGEX2 = /\s+/;
|
|
231037
231135
|
getVersionBase = memoize_default(() => {
|
|
231038
|
-
const match = "1.84.
|
|
231136
|
+
const match = "1.84.2".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
231039
231137
|
return match ? match[0] : undefined;
|
|
231040
231138
|
});
|
|
231041
231139
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -231075,7 +231173,7 @@ var init_metadata = __esm(() => {
|
|
|
231075
231173
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
231076
231174
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
231077
231175
|
isURAiAuth: isURAISubscriber(),
|
|
231078
|
-
version: "1.84.
|
|
231176
|
+
version: "1.84.2",
|
|
231079
231177
|
versionBase: getVersionBase(),
|
|
231080
231178
|
buildTime: "",
|
|
231081
231179
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -238514,7 +238612,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
238514
238612
|
if (!isAttributionHeaderEnabled()) {
|
|
238515
238613
|
return "";
|
|
238516
238614
|
}
|
|
238517
|
-
const version2 = `${"1.84.
|
|
238615
|
+
const version2 = `${"1.84.2"}.${fingerprint}`;
|
|
238518
238616
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
238519
238617
|
const cch = "";
|
|
238520
238618
|
const workload = getWorkload();
|
|
@@ -261704,6 +261802,7 @@ __export(exports_openaiCompatible, {
|
|
|
261704
261802
|
normalizeImageBlockSource: () => normalizeImageBlockSource,
|
|
261705
261803
|
mapOpenAIToolChoice: () => mapOpenAIToolChoice,
|
|
261706
261804
|
mapOpenAIStopReason: () => mapOpenAIStopReason,
|
|
261805
|
+
imageBlocksFromContent: () => imageBlocksFromContent,
|
|
261707
261806
|
imageBlockToOpenAIContentPart: () => imageBlockToOpenAIContentPart,
|
|
261708
261807
|
estimateSerializedInputTokens: () => estimateSerializedInputTokens,
|
|
261709
261808
|
estimateProviderInputTokens: () => estimateProviderInputTokens,
|
|
@@ -261803,7 +261902,7 @@ async function createOpenAICompatibleClient(options2) {
|
|
|
261803
261902
|
source: "local-estimate"
|
|
261804
261903
|
};
|
|
261805
261904
|
};
|
|
261806
|
-
if (providerId !== "llama.cpp" && providerId !== "vllm") {
|
|
261905
|
+
if (providerId !== "llama.cpp" && providerId !== "vllm" && providerId !== "nvidia-nim") {
|
|
261807
261906
|
return estimate();
|
|
261808
261907
|
}
|
|
261809
261908
|
try {
|
|
@@ -261861,14 +261960,16 @@ function toOpenAICompatibleRequest(params, providerName = "openai-compatible") {
|
|
|
261861
261960
|
const reasoningEffort = toOpenAIReasoningEffort(params, providerName);
|
|
261862
261961
|
const openRouterWireEffort = providerName === "openrouter" && reasoningEffort ? toOpenRouterReasoningEffort(String(params.model ?? ""), reasoningEffort) : undefined;
|
|
261863
261962
|
const openRouterReasoning = providerName === "openrouter" ? toOpenRouterReasoning(params, openRouterWireEffort) : undefined;
|
|
261864
|
-
const compatibleReasoningEffort = reasoningEffort
|
|
261963
|
+
const compatibleReasoningEffort = reasoningEffort && providerName !== "openrouter" ? (() => {
|
|
261865
261964
|
const provider = resolveProviderId(providerName);
|
|
261866
|
-
|
|
261867
|
-
|
|
261965
|
+
const advertisedWireValue = provider ? getProviderEffortWireValue(String(params.model ?? ""), reasoningEffort, provider) : undefined;
|
|
261966
|
+
return advertisedWireValue ?? (reasoningEffort === "ultra" ? undefined : reasoningEffort);
|
|
261967
|
+
})() : undefined;
|
|
261868
261968
|
const openRouterServerSearch = providerName === "openrouter" && tools.some((tool) => tool?.type === "openrouter:web_search");
|
|
261869
261969
|
const toolChoice = openRouterServerSearch ? undefined : mapOpenAIToolChoice(params.tool_choice);
|
|
261870
261970
|
const openRouterProviderPreferences = providerName === "openrouter" ? openRouterRoutingPreferences(params) : undefined;
|
|
261871
261971
|
const openRouterSessionId = providerName === "openrouter" ? resolveOpenRouterSessionId(params) : undefined;
|
|
261972
|
+
const nvidiaCodingAgentTemplate = providerName === "nvidia-nim" && /^nvidia\/nemotron-3-(?:super|ultra)(?:-|$)/iu.test(String(params.model ?? "")) && tools.length > 0 ? { force_nonempty_content: true } : undefined;
|
|
261872
261973
|
return {
|
|
261873
261974
|
model: params.model,
|
|
261874
261975
|
messages: toOpenAIMessages(params, providerName),
|
|
@@ -261884,6 +261985,9 @@ function toOpenAICompatibleRequest(params, providerName = "openai-compatible") {
|
|
|
261884
261985
|
provider: openRouterProviderPreferences
|
|
261885
261986
|
},
|
|
261886
261987
|
...openRouterSessionId && { session_id: openRouterSessionId },
|
|
261988
|
+
...nvidiaCodingAgentTemplate && {
|
|
261989
|
+
chat_template_kwargs: nvidiaCodingAgentTemplate
|
|
261990
|
+
},
|
|
261887
261991
|
stream: Boolean(params.stream),
|
|
261888
261992
|
...params.stream && providerName !== "openrouter" ? { stream_options: { include_usage: true } } : {},
|
|
261889
261993
|
...tools.length > 0 ? { tools } : {},
|
|
@@ -262044,14 +262148,14 @@ function contentToText(content) {
|
|
|
262044
262148
|
return content;
|
|
262045
262149
|
if (!Array.isArray(content))
|
|
262046
262150
|
return "";
|
|
262047
|
-
return content.
|
|
262151
|
+
return content.flatMap((block2) => {
|
|
262048
262152
|
if (typeof block2 === "string")
|
|
262049
|
-
return block2;
|
|
262153
|
+
return [block2];
|
|
262050
262154
|
if (block2?.type === "text")
|
|
262051
|
-
return block2.text ?? "";
|
|
262155
|
+
return [block2.text ?? ""];
|
|
262052
262156
|
if (block2?.type === "tool_result")
|
|
262053
|
-
return contentToText(block2.content);
|
|
262054
|
-
return
|
|
262157
|
+
return [contentToText(block2.content)];
|
|
262158
|
+
return [];
|
|
262055
262159
|
}).join(`
|
|
262056
262160
|
`);
|
|
262057
262161
|
}
|
|
@@ -262071,6 +262175,18 @@ function containsImageBlock(content) {
|
|
|
262071
262175
|
return false;
|
|
262072
262176
|
});
|
|
262073
262177
|
}
|
|
262178
|
+
function imageBlocksFromContent(content) {
|
|
262179
|
+
if (!Array.isArray(content))
|
|
262180
|
+
return [];
|
|
262181
|
+
return content.flatMap((block2) => {
|
|
262182
|
+
if (block2?.type === "image")
|
|
262183
|
+
return [block2];
|
|
262184
|
+
if (block2?.type === "tool_result") {
|
|
262185
|
+
return imageBlocksFromContent(block2.content);
|
|
262186
|
+
}
|
|
262187
|
+
return [];
|
|
262188
|
+
});
|
|
262189
|
+
}
|
|
262074
262190
|
function normalizeImageBlockSource(block2, providerName, context) {
|
|
262075
262191
|
if (block2?.type !== "image") {
|
|
262076
262192
|
throw new ProviderCapabilityError(`${providerName} expected an image block in ${context}`, { providerName, capability: "multimodal_input", context, block: block2 });
|
|
@@ -262265,6 +262381,7 @@ function messageToOpenAIMessages(message, toolNamesById, providerName) {
|
|
|
262265
262381
|
let hasStructuredContent = false;
|
|
262266
262382
|
const toolCalls = [];
|
|
262267
262383
|
const toolResults = [];
|
|
262384
|
+
const toolResultImageParts = [];
|
|
262268
262385
|
const flushTextPart = () => {
|
|
262269
262386
|
if (pendingTextParts.length === 0)
|
|
262270
262387
|
return;
|
|
@@ -262318,9 +262435,10 @@ function messageToOpenAIMessages(message, toolNamesById, providerName) {
|
|
|
262318
262435
|
});
|
|
262319
262436
|
break;
|
|
262320
262437
|
case "tool_result":
|
|
262321
|
-
|
|
262438
|
+
const toolResultImages = imageBlocksFromContent(block2.content);
|
|
262322
262439
|
const toolResultCacheControl = providerName === "openrouter" ? toOpenRouterCacheControl(block2.cache_control) : undefined;
|
|
262323
262440
|
const toolResultText2 = contentToText(block2.content);
|
|
262441
|
+
const toolResultName = toolNamesById.get(block2.tool_use_id) ?? block2.tool_use_id ?? index2;
|
|
262324
262442
|
toolResults.push({
|
|
262325
262443
|
role: "tool",
|
|
262326
262444
|
tool_call_id: block2.tool_use_id,
|
|
@@ -262331,6 +262449,13 @@ function messageToOpenAIMessages(message, toolNamesById, providerName) {
|
|
|
262331
262449
|
}] : toolResultText2,
|
|
262332
262450
|
...toolNamesById.get(block2.tool_use_id) ? { name: toolNamesById.get(block2.tool_use_id) } : {}
|
|
262333
262451
|
});
|
|
262452
|
+
if (toolResultImages.length > 0) {
|
|
262453
|
+
toolResultImageParts.push({
|
|
262454
|
+
type: "text",
|
|
262455
|
+
text: `Image output from tool ${toolResultName}:`
|
|
262456
|
+
});
|
|
262457
|
+
toolResultImageParts.push(...toolResultImages.map((image, imageIndex) => imageBlockToOpenAIContentPart(image, providerName, `tool_result ${block2.tool_use_id ?? index2} image ${imageIndex}`)));
|
|
262458
|
+
}
|
|
262334
262459
|
break;
|
|
262335
262460
|
default:
|
|
262336
262461
|
break;
|
|
@@ -262350,13 +262475,16 @@ function messageToOpenAIMessages(message, toolNamesById, providerName) {
|
|
|
262350
262475
|
];
|
|
262351
262476
|
}
|
|
262352
262477
|
if (toolResults.length > 0) {
|
|
262353
|
-
const result = [];
|
|
262354
|
-
if (
|
|
262478
|
+
const result = [...toolResults];
|
|
262479
|
+
if (toolResultImageParts.length > 0) {
|
|
262480
|
+
const followupParts = hasStructuredContent ? [...multimodalParts] : text2 ? [{ type: "text", text: text2 }] : [];
|
|
262481
|
+
followupParts.push(...toolResultImageParts);
|
|
262482
|
+
result.push({ role: "user", content: followupParts });
|
|
262483
|
+
} else if (hasStructuredContent) {
|
|
262355
262484
|
result.push({ role: message.role, content: messageContent });
|
|
262356
262485
|
} else if (text2) {
|
|
262357
262486
|
result.push({ role: message.role, content: text2 });
|
|
262358
262487
|
}
|
|
262359
|
-
result.push(...toolResults);
|
|
262360
262488
|
return result;
|
|
262361
262489
|
}
|
|
262362
262490
|
return [{ role: message.role, content: messageContent }];
|
|
@@ -271819,6 +271947,7 @@ var init_types4 = __esm(() => {
|
|
|
271819
271947
|
"anthropic-api",
|
|
271820
271948
|
"gemini-api",
|
|
271821
271949
|
"openrouter",
|
|
271950
|
+
"nvidia-nim",
|
|
271822
271951
|
"openai-compatible",
|
|
271823
271952
|
"ollama",
|
|
271824
271953
|
"lmstudio",
|
|
@@ -304518,7 +304647,7 @@ function getTelemetryAttributes() {
|
|
|
304518
304647
|
attributes["session.id"] = sessionId;
|
|
304519
304648
|
}
|
|
304520
304649
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
304521
|
-
attributes["app.version"] = "1.84.
|
|
304650
|
+
attributes["app.version"] = "1.84.2";
|
|
304522
304651
|
}
|
|
304523
304652
|
const oauthAccount = getOauthAccountInfo();
|
|
304524
304653
|
if (oauthAccount) {
|
|
@@ -307549,7 +307678,7 @@ var require_src3 = __commonJS((exports) => {
|
|
|
307549
307678
|
function getInstruments() {
|
|
307550
307679
|
if (instruments)
|
|
307551
307680
|
return instruments;
|
|
307552
|
-
const meter = import_api2.metrics.getMeter("ur-agent.gen_ai", "1.84.
|
|
307681
|
+
const meter = import_api2.metrics.getMeter("ur-agent.gen_ai", "1.84.2");
|
|
307553
307682
|
instruments = {
|
|
307554
307683
|
operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
|
|
307555
307684
|
description: "GenAI operation duration.",
|
|
@@ -307647,7 +307776,7 @@ function genAiAgentAttributes() {
|
|
|
307647
307776
|
"gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
|
|
307648
307777
|
"gen_ai.provider.name": "ur",
|
|
307649
307778
|
"gen_ai.agent.name": "UR-Nexus",
|
|
307650
|
-
"gen_ai.agent.version": "1.84.
|
|
307779
|
+
"gen_ai.agent.version": "1.84.2"
|
|
307651
307780
|
};
|
|
307652
307781
|
}
|
|
307653
307782
|
function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
@@ -307668,7 +307797,7 @@ function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
|
307668
307797
|
function startGenAiWorkflowSpan(workflowName, workflowRunId) {
|
|
307669
307798
|
const attributes = genAiWorkflowAttributes(workflowName, workflowRunId);
|
|
307670
307799
|
const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
|
|
307671
|
-
return import_api2.trace.getTracer("ur-agent.gen_ai", "1.84.
|
|
307800
|
+
return import_api2.trace.getTracer("ur-agent.gen_ai", "1.84.2").startSpan(name, { kind: import_api2.SpanKind.INTERNAL, attributes });
|
|
307672
307801
|
}
|
|
307673
307802
|
function endGenAiWorkflowSpan(span, options2 = {}) {
|
|
307674
307803
|
try {
|
|
@@ -307706,7 +307835,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
|
|
|
307706
307835
|
if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
|
|
307707
307836
|
attributes["gen_ai.memory.record.count"] = options2.recordCount;
|
|
307708
307837
|
}
|
|
307709
|
-
return import_api2.trace.getTracer("ur-agent.gen_ai", "1.84.
|
|
307838
|
+
return import_api2.trace.getTracer("ur-agent.gen_ai", "1.84.2").startSpan(operation, { kind: import_api2.SpanKind.INTERNAL, attributes });
|
|
307710
307839
|
}
|
|
307711
307840
|
function endGenAiMemorySpan(span, options2 = {}) {
|
|
307712
307841
|
try {
|
|
@@ -322113,7 +322242,7 @@ async function createRuntime() {
|
|
|
322113
322242
|
bootstrapTelemetry();
|
|
322114
322243
|
const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
|
|
322115
322244
|
[import_semantic_conventions6.ATTR_SERVICE_NAME]: "ur-agent",
|
|
322116
|
-
[import_semantic_conventions6.ATTR_SERVICE_VERSION]: "1.84.
|
|
322245
|
+
[import_semantic_conventions6.ATTR_SERVICE_VERSION]: "1.84.2"
|
|
322117
322246
|
}));
|
|
322118
322247
|
const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
|
|
322119
322248
|
resource,
|
|
@@ -322146,11 +322275,11 @@ async function createRuntime() {
|
|
|
322146
322275
|
setMeterProvider(meterProvider);
|
|
322147
322276
|
setLoggerProvider(loggerProvider);
|
|
322148
322277
|
if (meterProvider) {
|
|
322149
|
-
const meter = meterProvider.getMeter("ur-agent", "1.84.
|
|
322278
|
+
const meter = meterProvider.getMeter("ur-agent", "1.84.2");
|
|
322150
322279
|
setMeter(meter, (name, options2) => meter.createCounter(name, options2));
|
|
322151
322280
|
}
|
|
322152
322281
|
if (loggerProvider) {
|
|
322153
|
-
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.84.
|
|
322282
|
+
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.84.2"));
|
|
322154
322283
|
}
|
|
322155
322284
|
if (!cleanupRegistered4) {
|
|
322156
322285
|
cleanupRegistered4 = true;
|
|
@@ -322699,7 +322828,7 @@ function isAnyTracingEnabled() {
|
|
|
322699
322828
|
return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
|
|
322700
322829
|
}
|
|
322701
322830
|
function getTracer() {
|
|
322702
|
-
return import_api32.trace.getTracer("ur-agent.gen_ai", "1.84.
|
|
322831
|
+
return import_api32.trace.getTracer("ur-agent.gen_ai", "1.84.2");
|
|
322703
322832
|
}
|
|
322704
322833
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
322705
322834
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -334650,7 +334779,7 @@ function computeFingerprint(messageText2, version2) {
|
|
|
334650
334779
|
}
|
|
334651
334780
|
function computeFingerprintFromMessages(messages) {
|
|
334652
334781
|
const firstMessageText = extractFirstMessageText(messages);
|
|
334653
|
-
return computeFingerprint(firstMessageText, "1.84.
|
|
334782
|
+
return computeFingerprint(firstMessageText, "1.84.2");
|
|
334654
334783
|
}
|
|
334655
334784
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
334656
334785
|
var init_fingerprint = () => {};
|
|
@@ -334692,7 +334821,7 @@ async function sideQuery(opts) {
|
|
|
334692
334821
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
334693
334822
|
}
|
|
334694
334823
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
334695
|
-
const fingerprint = computeFingerprint(messageText2, "1.84.
|
|
334824
|
+
const fingerprint = computeFingerprint(messageText2, "1.84.2");
|
|
334696
334825
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
334697
334826
|
const systemBlocks = [
|
|
334698
334827
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -336799,7 +336928,7 @@ var init_user = __esm(() => {
|
|
|
336799
336928
|
deviceId,
|
|
336800
336929
|
sessionId: getSessionId(),
|
|
336801
336930
|
email: getEmail(),
|
|
336802
|
-
appVersion: "1.84.
|
|
336931
|
+
appVersion: "1.84.2",
|
|
336803
336932
|
platform: getHostPlatformForAnalytics(),
|
|
336804
336933
|
organizationUuid,
|
|
336805
336934
|
accountUuid,
|
|
@@ -337559,7 +337688,7 @@ var init_growthbook_experiment_event = __esm(() => {
|
|
|
337559
337688
|
|
|
337560
337689
|
// src/utils/userAgent.ts
|
|
337561
337690
|
function getURCodeUserAgent() {
|
|
337562
|
-
return `ur/${"1.84.
|
|
337691
|
+
return `ur/${"1.84.2"}`;
|
|
337563
337692
|
}
|
|
337564
337693
|
|
|
337565
337694
|
// src/services/analytics/firstPartyEventLoggingExporter.ts
|
|
@@ -338215,7 +338344,7 @@ function initialize1PEventLogging() {
|
|
|
338215
338344
|
const platform4 = getPlatform();
|
|
338216
338345
|
const attributes = {
|
|
338217
338346
|
[import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur",
|
|
338218
|
-
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.84.
|
|
338347
|
+
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.84.2"
|
|
338219
338348
|
};
|
|
338220
338349
|
if (platform4 === "wsl") {
|
|
338221
338350
|
const wslVersion = getWslVersion();
|
|
@@ -338243,7 +338372,7 @@ function initialize1PEventLogging() {
|
|
|
338243
338372
|
})
|
|
338244
338373
|
]
|
|
338245
338374
|
});
|
|
338246
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.84.
|
|
338375
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.84.2");
|
|
338247
338376
|
}
|
|
338248
338377
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
338249
338378
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -339801,6 +339930,7 @@ var init_managedEnvConstants = __esm(() => {
|
|
|
339801
339930
|
"AWS_BEARER_TOKEN_BEDROCK",
|
|
339802
339931
|
"URHQ_FOUNDRY_API_KEY",
|
|
339803
339932
|
"OPENAI_COMPATIBLE_API_KEY",
|
|
339933
|
+
"NVIDIA_API_KEY",
|
|
339804
339934
|
"UR_CODE_SKIP_BEDROCK_AUTH",
|
|
339805
339935
|
"UR_CODE_SKIP_VERTEX_AUTH",
|
|
339806
339936
|
"UR_CODE_SKIP_FOUNDRY_AUTH",
|
|
@@ -341544,9 +341674,9 @@ async function assertMinVersion() {
|
|
|
341544
341674
|
if (false) {}
|
|
341545
341675
|
try {
|
|
341546
341676
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
341547
|
-
if (versionConfig.minVersion && lt("1.84.
|
|
341677
|
+
if (versionConfig.minVersion && lt("1.84.2", versionConfig.minVersion)) {
|
|
341548
341678
|
console.error(`
|
|
341549
|
-
It looks like your version of UR (${"1.84.
|
|
341679
|
+
It looks like your version of UR (${"1.84.2"}) needs an update.
|
|
341550
341680
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
341551
341681
|
|
|
341552
341682
|
To update, please run:
|
|
@@ -341762,7 +341892,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
341762
341892
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
341763
341893
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
341764
341894
|
pid: process.pid,
|
|
341765
|
-
currentVersion: "1.84.
|
|
341895
|
+
currentVersion: "1.84.2"
|
|
341766
341896
|
});
|
|
341767
341897
|
return "in_progress";
|
|
341768
341898
|
}
|
|
@@ -341771,7 +341901,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
341771
341901
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
341772
341902
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
341773
341903
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
341774
|
-
currentVersion: "1.84.
|
|
341904
|
+
currentVersion: "1.84.2"
|
|
341775
341905
|
});
|
|
341776
341906
|
console.error(`
|
|
341777
341907
|
Error: Windows NPM detected in WSL
|
|
@@ -342306,7 +342436,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
342306
342436
|
}
|
|
342307
342437
|
async function getDoctorDiagnostic() {
|
|
342308
342438
|
const installationType = await getCurrentInstallationType();
|
|
342309
|
-
const version2 = typeof MACRO !== "undefined" ? "1.84.
|
|
342439
|
+
const version2 = typeof MACRO !== "undefined" ? "1.84.2" : "unknown";
|
|
342310
342440
|
const installationPath = await getInstallationPath();
|
|
342311
342441
|
const invokedBinary = getInvokedBinary();
|
|
342312
342442
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -343373,7 +343503,7 @@ function getInstallationEnv() {
|
|
|
343373
343503
|
return;
|
|
343374
343504
|
}
|
|
343375
343505
|
function getURCodeVersion() {
|
|
343376
|
-
return "1.84.
|
|
343506
|
+
return "1.84.2";
|
|
343377
343507
|
}
|
|
343378
343508
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
343379
343509
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -344854,8 +344984,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
344854
344984
|
const maxVersion = await getMaxVersion();
|
|
344855
344985
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
344856
344986
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
344857
|
-
if (gte("1.84.
|
|
344858
|
-
logForDebugging(`Native installer: current version ${"1.84.
|
|
344987
|
+
if (gte("1.84.2", maxVersion)) {
|
|
344988
|
+
logForDebugging(`Native installer: current version ${"1.84.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
344859
344989
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
344860
344990
|
latency_ms: Date.now() - startTime,
|
|
344861
344991
|
max_version: maxVersion,
|
|
@@ -344866,7 +344996,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
344866
344996
|
version2 = maxVersion;
|
|
344867
344997
|
}
|
|
344868
344998
|
}
|
|
344869
|
-
if (!forceReinstall && version2 === "1.84.
|
|
344999
|
+
if (!forceReinstall && version2 === "1.84.2" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
344870
345000
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
344871
345001
|
logEvent("tengu_native_update_complete", {
|
|
344872
345002
|
latency_ms: Date.now() - startTime,
|
|
@@ -382585,6 +382715,108 @@ var init_tmuxSocket = __esm(() => {
|
|
|
382585
382715
|
init_platform();
|
|
382586
382716
|
});
|
|
382587
382717
|
|
|
382718
|
+
// src/utils/shell/portableTimeout.ts
|
|
382719
|
+
function getPortableTimeoutEnvironment(platform5 = getPlatform()) {
|
|
382720
|
+
return platform5 === "macos" ? { [PORTABLE_TIMEOUT_RUNNER_ENV]: PORTABLE_TIMEOUT_RUNNER_BASE64 } : {};
|
|
382721
|
+
}
|
|
382722
|
+
function getPortableTimeoutCompatibilityCommand(platform5 = getPlatform(), executable = process.execPath) {
|
|
382723
|
+
if (platform5 !== "macos")
|
|
382724
|
+
return null;
|
|
382725
|
+
const launcher = `import("data:text/javascript;base64,"+process.env.${PORTABLE_TIMEOUT_RUNNER_ENV})`;
|
|
382726
|
+
const runner2 = quote2([
|
|
382727
|
+
executable,
|
|
382728
|
+
"--input-type=module",
|
|
382729
|
+
"-e",
|
|
382730
|
+
launcher
|
|
382731
|
+
]);
|
|
382732
|
+
return `if ! command -v timeout >/dev/null 2>&1; then if command -v gtimeout >/dev/null 2>&1; then timeout() { command gtimeout "$@"; }; else timeout() { command ${runner2} "$@"; }; fi; fi`;
|
|
382733
|
+
}
|
|
382734
|
+
var PORTABLE_TIMEOUT_RUNNER, PORTABLE_TIMEOUT_RUNNER_ENV = "UR_CODE_PORTABLE_TIMEOUT_RUNNER", PORTABLE_TIMEOUT_RUNNER_BASE64;
|
|
382735
|
+
var init_portableTimeout = __esm(() => {
|
|
382736
|
+
init_platform();
|
|
382737
|
+
init_shellQuote();
|
|
382738
|
+
PORTABLE_TIMEOUT_RUNNER = String.raw`
|
|
382739
|
+
import { spawn } from 'node:child_process';
|
|
382740
|
+
import { constants } from 'node:os';
|
|
382741
|
+
let args = process.argv.slice(1);
|
|
382742
|
+
let preserve = false;
|
|
382743
|
+
let verbose = false;
|
|
382744
|
+
let signal = 'SIGTERM';
|
|
382745
|
+
let killAfter = null;
|
|
382746
|
+
const durationMs = value => {
|
|
382747
|
+
const match = /^(\d+(?:\.\d+)?)([smhd]?)$/.exec(value || '');
|
|
382748
|
+
if (!match) return null;
|
|
382749
|
+
const scale = { '': 1000, s: 1000, m: 60000, h: 3600000, d: 86400000 }[match[2]];
|
|
382750
|
+
const result = Number(match[1]) * scale;
|
|
382751
|
+
return Number.isFinite(result) ? Math.min(result, 2147483647) : null;
|
|
382752
|
+
};
|
|
382753
|
+
const takeValue = (arg, longName, shortName) => {
|
|
382754
|
+
if (arg === longName || arg === shortName) return args.shift();
|
|
382755
|
+
if (arg.startsWith(longName + '=')) return arg.slice(longName.length + 1);
|
|
382756
|
+
if (arg.startsWith(shortName) && arg.length > shortName.length) return arg.slice(shortName.length);
|
|
382757
|
+
return undefined;
|
|
382758
|
+
};
|
|
382759
|
+
while (args.length && args[0].startsWith('-') && args[0] !== '-') {
|
|
382760
|
+
const arg = args.shift();
|
|
382761
|
+
if (arg === '--') break;
|
|
382762
|
+
if (arg === '--foreground') continue;
|
|
382763
|
+
if (arg === '--preserve-status') { preserve = true; continue; }
|
|
382764
|
+
if (arg === '--verbose' || arg === '-v') { verbose = true; continue; }
|
|
382765
|
+
const killValue = takeValue(arg, '--kill-after', '-k');
|
|
382766
|
+
if (killValue !== undefined) {
|
|
382767
|
+
killAfter = durationMs(killValue);
|
|
382768
|
+
if (killAfter === null) { console.error('timeout: invalid --kill-after value'); process.exit(125); }
|
|
382769
|
+
continue;
|
|
382770
|
+
}
|
|
382771
|
+
const signalValue = takeValue(arg, '--signal', '-s');
|
|
382772
|
+
if (signalValue !== undefined) {
|
|
382773
|
+
const normalizedSignal = signalValue.toUpperCase();
|
|
382774
|
+
signal = /^\d+$/.test(signalValue) ? Number(signalValue) : normalizedSignal.startsWith('SIG') ? normalizedSignal : 'SIG' + normalizedSignal;
|
|
382775
|
+
continue;
|
|
382776
|
+
}
|
|
382777
|
+
console.error('timeout: unsupported option ' + arg);
|
|
382778
|
+
process.exit(125);
|
|
382779
|
+
}
|
|
382780
|
+
const limit = durationMs(args.shift());
|
|
382781
|
+
const command = args.shift();
|
|
382782
|
+
if (limit === null || !command) {
|
|
382783
|
+
console.error('timeout: expected a duration and command');
|
|
382784
|
+
process.exit(125);
|
|
382785
|
+
}
|
|
382786
|
+
const child = spawn(command, args, { stdio: 'inherit', detached: true });
|
|
382787
|
+
let expired = false;
|
|
382788
|
+
let killTimer;
|
|
382789
|
+
const send = requestedSignal => {
|
|
382790
|
+
if (!child.pid) return;
|
|
382791
|
+
try { process.kill(-child.pid, requestedSignal); }
|
|
382792
|
+
catch { try { child.kill(requestedSignal); } catch {} }
|
|
382793
|
+
};
|
|
382794
|
+
const timer = setTimeout(() => {
|
|
382795
|
+
expired = true;
|
|
382796
|
+
if (verbose) console.error('timeout: sending signal ' + signal + ' to command ' + command);
|
|
382797
|
+
send(signal);
|
|
382798
|
+
if (killAfter !== null) killTimer = setTimeout(() => send('SIGKILL'), killAfter);
|
|
382799
|
+
}, limit);
|
|
382800
|
+
for (const parentSignal of ['SIGINT', 'SIGHUP', 'SIGTERM']) {
|
|
382801
|
+
process.on(parentSignal, () => send(parentSignal));
|
|
382802
|
+
}
|
|
382803
|
+
child.on('error', error => {
|
|
382804
|
+
clearTimeout(timer);
|
|
382805
|
+
if (killTimer) clearTimeout(killTimer);
|
|
382806
|
+
console.error('timeout: ' + error.message);
|
|
382807
|
+
process.exitCode = error.code === 'ENOENT' ? 127 : 126;
|
|
382808
|
+
});
|
|
382809
|
+
child.on('exit', (code, childSignal) => {
|
|
382810
|
+
clearTimeout(timer);
|
|
382811
|
+
if (killTimer) clearTimeout(killTimer);
|
|
382812
|
+
if (expired && !preserve) { process.exitCode = 124; return; }
|
|
382813
|
+
if (code !== null) { process.exitCode = code; return; }
|
|
382814
|
+
process.exitCode = 128 + (constants.signals[childSignal] || 1);
|
|
382815
|
+
});
|
|
382816
|
+
`.trim();
|
|
382817
|
+
PORTABLE_TIMEOUT_RUNNER_BASE64 = Buffer.from(PORTABLE_TIMEOUT_RUNNER).toString("base64");
|
|
382818
|
+
});
|
|
382819
|
+
|
|
382588
382820
|
// src/utils/shell/bashProvider.ts
|
|
382589
382821
|
import { access as access5 } from "fs/promises";
|
|
382590
382822
|
import { tmpdir as osTmpdir } from "os";
|
|
@@ -382659,6 +382891,10 @@ async function createBashShellProvider(shellPath, options2) {
|
|
|
382659
382891
|
if (disableZshNomatchCmd) {
|
|
382660
382892
|
commandParts.push(disableZshNomatchCmd);
|
|
382661
382893
|
}
|
|
382894
|
+
const portableTimeoutCmd = getPortableTimeoutCompatibilityCommand();
|
|
382895
|
+
if (portableTimeoutCmd) {
|
|
382896
|
+
commandParts.push(portableTimeoutCmd);
|
|
382897
|
+
}
|
|
382662
382898
|
commandParts.push(`trap 'pwd -P >| ${quote2([shellCwdFilePath])} 2>/dev/null || true' EXIT`);
|
|
382663
382899
|
commandParts.push(`eval ${quotedCommand}`);
|
|
382664
382900
|
let commandString = commandParts.join(" && ");
|
|
@@ -382681,6 +382917,7 @@ async function createBashShellProvider(shellPath, options2) {
|
|
|
382681
382917
|
}
|
|
382682
382918
|
const urTmuxEnv = getURTmuxEnv();
|
|
382683
382919
|
const env4 = {};
|
|
382920
|
+
Object.assign(env4, getPortableTimeoutEnvironment());
|
|
382684
382921
|
if (urTmuxEnv) {
|
|
382685
382922
|
env4.TMUX = urTmuxEnv;
|
|
382686
382923
|
}
|
|
@@ -382712,6 +382949,7 @@ var init_bashProvider = __esm(() => {
|
|
|
382712
382949
|
init_sessionEnvVars();
|
|
382713
382950
|
init_tmuxSocket();
|
|
382714
382951
|
init_windowsPaths();
|
|
382952
|
+
init_portableTimeout();
|
|
382715
382953
|
});
|
|
382716
382954
|
|
|
382717
382955
|
// src/utils/shell/powershellDetection.ts
|
|
@@ -408322,6 +408560,7 @@ function getSimplePrompt() {
|
|
|
408322
408560
|
'Always quote file paths that contain spaces with double quotes in your command (e.g., cd "path with spaces/file.txt")',
|
|
408323
408561
|
"Try to maintain your current working directory throughout the session by using absolute paths and avoiding usage of `cd`. You may use `cd` if the User explicitly requests it.",
|
|
408324
408562
|
`You may specify an optional timeout in milliseconds (up to ${getMaxTimeoutMs2()}ms / ${getMaxTimeoutMs2() / 60000} minutes). By default, your command will timeout after ${getDefaultTimeoutMs2()}ms (${getDefaultTimeoutMs2() / 60000} minutes).`,
|
|
408563
|
+
"Prefer this tool\u2019s `timeout` parameter over wrapping a command with the GNU `timeout` executable. UR supplies a compatible wrapper on macOS when a command genuinely needs an inner deadline.",
|
|
408325
408564
|
...backgroundNote !== null ? [backgroundNote] : [],
|
|
408326
408565
|
"When issuing multiple commands:",
|
|
408327
408566
|
multipleCommandsSubitems,
|
|
@@ -438621,7 +438860,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
438621
438860
|
const client = new Client({
|
|
438622
438861
|
name: "ur",
|
|
438623
438862
|
title: "UR",
|
|
438624
|
-
version: "1.84.
|
|
438863
|
+
version: "1.84.2",
|
|
438625
438864
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
438626
438865
|
websiteUrl: PRODUCT_URL
|
|
438627
438866
|
}, {
|
|
@@ -438978,7 +439217,7 @@ var init_client2 = __esm(() => {
|
|
|
438978
439217
|
const client = new Client({
|
|
438979
439218
|
name: "ur",
|
|
438980
439219
|
title: "UR",
|
|
438981
|
-
version: "1.84.
|
|
439220
|
+
version: "1.84.2",
|
|
438982
439221
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
438983
439222
|
websiteUrl: PRODUCT_URL
|
|
438984
439223
|
}, {
|
|
@@ -449849,7 +450088,7 @@ function Feedback({
|
|
|
449849
450088
|
platform: env2.platform,
|
|
449850
450089
|
gitRepo: envInfo.isGit,
|
|
449851
450090
|
terminal: env2.terminal,
|
|
449852
|
-
version: "1.84.
|
|
450091
|
+
version: "1.84.2",
|
|
449853
450092
|
transcript: normalizeMessagesForAPI(messages),
|
|
449854
450093
|
errors: sanitizedErrors,
|
|
449855
450094
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -450039,7 +450278,7 @@ function Feedback({
|
|
|
450039
450278
|
", ",
|
|
450040
450279
|
env2.terminal,
|
|
450041
450280
|
", v",
|
|
450042
|
-
"1.84.
|
|
450281
|
+
"1.84.2"
|
|
450043
450282
|
]
|
|
450044
450283
|
}, undefined, true, undefined, this)
|
|
450045
450284
|
]
|
|
@@ -450145,7 +450384,7 @@ ${sanitizedDescription}
|
|
|
450145
450384
|
` + `**Environment Info**
|
|
450146
450385
|
` + `- Platform: ${env2.platform}
|
|
450147
450386
|
` + `- Terminal: ${env2.terminal}
|
|
450148
|
-
` + `- Version: ${"1.84.
|
|
450387
|
+
` + `- Version: ${"1.84.2"}
|
|
450149
450388
|
` + `- Feedback ID: ${feedbackId}
|
|
450150
450389
|
` + `
|
|
450151
450390
|
**Errors**
|
|
@@ -453255,7 +453494,7 @@ function buildPrimarySection() {
|
|
|
453255
453494
|
}, undefined, false, undefined, this);
|
|
453256
453495
|
return [{
|
|
453257
453496
|
label: "Version",
|
|
453258
|
-
value: "1.84.
|
|
453497
|
+
value: "1.84.2"
|
|
453259
453498
|
}, {
|
|
453260
453499
|
label: "Session name",
|
|
453261
453500
|
value: nameValue
|
|
@@ -454219,7 +454458,8 @@ function ModelPicker({
|
|
|
454219
454458
|
const focusedEffortLevels = focusedModel ? getSupportedEffortLevelsForModel(focusedModel, currentProvider) : [];
|
|
454220
454459
|
const focusedEffortLevelLabels = focusedModel ? getSupportedEffortLevelLabelsForModel(focusedModel, currentProvider) : [];
|
|
454221
454460
|
const focusedSupportsEffort = focusedModel ? modelSupportsEffort(focusedModel, currentProvider) : false;
|
|
454222
|
-
const
|
|
454461
|
+
const focusedAdvertisesThinking = focusedModel ? modelSupportsThinking(focusedModel, currentProvider) : false;
|
|
454462
|
+
const focusedSupportsThinking = focusedModel ? focusedAdvertisesThinking && providerSupportsThinkingToggle(currentProvider) : false;
|
|
454223
454463
|
const focusedDefaultEffort = getDefaultEffortLevelForOption(focusedValue, currentProvider);
|
|
454224
454464
|
const displayEffort = focusedModel ? resolveProviderEffortLevel(focusedModel, effort ?? focusedDefaultEffort, currentProvider) ?? focusedDefaultEffort : focusedDefaultEffort;
|
|
454225
454465
|
const handleFocus = (value) => {
|
|
@@ -454471,7 +454711,7 @@ function ModelPicker({
|
|
|
454471
454711
|
effort: undefined
|
|
454472
454712
|
}, undefined, false, undefined, this),
|
|
454473
454713
|
" ",
|
|
454474
|
-
focusedSupportsThinking ? "
|
|
454714
|
+
focusedSupportsThinking ? "Thinking supported \xB7 no model-specific graded ladder advertised \xB7 using provider-native on/off" : focusedAdvertisesThinking ? "Thinking supported \xB7 this runtime advertises no controllable graded ladder or on/off mapping" : "Effort not supported",
|
|
454475
454715
|
focusedModelName ? ` for ${focusedModelName}` : "",
|
|
454476
454716
|
effortCapabilityLoading ? " \xB7 checking provider\u2026" : ""
|
|
454477
454717
|
]
|
|
@@ -454556,7 +454796,7 @@ function getAdaptiveModelVisibleCount(optionCount, terminalRows) {
|
|
|
454556
454796
|
return Math.min(Math.floor(optionCount), availableRows);
|
|
454557
454797
|
}
|
|
454558
454798
|
function providerNeedsFocusedEffortProbe(provider, focusedModel) {
|
|
454559
|
-
return (provider === "llama.cpp" || provider === "ollama") && Boolean(focusedModel);
|
|
454799
|
+
return (provider === "llama.cpp" || provider === "ollama" || provider === "vllm") && Boolean(focusedModel);
|
|
454560
454800
|
}
|
|
454561
454801
|
function resolveOptionModel(value) {
|
|
454562
454802
|
if (!value)
|
|
@@ -456768,7 +457008,7 @@ function Config({
|
|
|
456768
457008
|
}
|
|
456769
457009
|
}, undefined, false, undefined, this)
|
|
456770
457010
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime176.jsxDEV(ChannelDowngradeDialog, {
|
|
456771
|
-
currentVersion: "1.84.
|
|
457011
|
+
currentVersion: "1.84.2",
|
|
456772
457012
|
onChoice: (choice) => {
|
|
456773
457013
|
setShowSubmenu(null);
|
|
456774
457014
|
setTabsHidden(false);
|
|
@@ -456780,7 +457020,7 @@ function Config({
|
|
|
456780
457020
|
autoUpdatesChannel: "stable"
|
|
456781
457021
|
};
|
|
456782
457022
|
if (choice === "stay") {
|
|
456783
|
-
newSettings.minimumVersion = "1.84.
|
|
457023
|
+
newSettings.minimumVersion = "1.84.2";
|
|
456784
457024
|
}
|
|
456785
457025
|
updateSettingsForSource("userSettings", newSettings);
|
|
456786
457026
|
setSettingsData((prev_27) => ({
|
|
@@ -465097,7 +465337,7 @@ function HelpV2(t0) {
|
|
|
465097
465337
|
let t6;
|
|
465098
465338
|
if ($2[31] !== tabs) {
|
|
465099
465339
|
t6 = /* @__PURE__ */ jsx_dev_runtime203.jsxDEV(Tabs, {
|
|
465100
|
-
title: `UR v${"1.84.
|
|
465340
|
+
title: `UR v${"1.84.2"}`,
|
|
465101
465341
|
color: "professionalBlue",
|
|
465102
465342
|
defaultTab: "general",
|
|
465103
465343
|
children: tabs
|
|
@@ -466031,7 +466271,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
466031
466271
|
async function handleInitialize(options2) {
|
|
466032
466272
|
return {
|
|
466033
466273
|
name: "UR",
|
|
466034
|
-
version: "1.84.
|
|
466274
|
+
version: "1.84.2",
|
|
466035
466275
|
protocolVersion: "0.1.0",
|
|
466036
466276
|
workspaceRoot: options2.cwd,
|
|
466037
466277
|
capabilities: {
|
|
@@ -483164,7 +483404,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
483164
483404
|
return [];
|
|
483165
483405
|
}
|
|
483166
483406
|
}
|
|
483167
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.84.
|
|
483407
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.84.2") {
|
|
483168
483408
|
if (process.env.USER_TYPE === "ant") {
|
|
483169
483409
|
const changelog = "";
|
|
483170
483410
|
if (changelog) {
|
|
@@ -483191,7 +483431,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.84.0")
|
|
|
483191
483431
|
releaseNotes
|
|
483192
483432
|
};
|
|
483193
483433
|
}
|
|
483194
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.84.
|
|
483434
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.84.2") {
|
|
483195
483435
|
if (process.env.USER_TYPE === "ant") {
|
|
483196
483436
|
const changelog = "";
|
|
483197
483437
|
if (changelog) {
|
|
@@ -486099,7 +486339,7 @@ function getRecentActivitySync() {
|
|
|
486099
486339
|
return cachedActivity;
|
|
486100
486340
|
}
|
|
486101
486341
|
function getLogoDisplayData() {
|
|
486102
|
-
const version2 = process.env.DEMO_VERSION ?? "1.84.
|
|
486342
|
+
const version2 = process.env.DEMO_VERSION ?? "1.84.2";
|
|
486103
486343
|
const serverUrl = getDirectConnectServerUrl();
|
|
486104
486344
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
486105
486345
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -486987,7 +487227,7 @@ function LogoV2() {
|
|
|
486987
487227
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
486988
487228
|
t2 = () => {
|
|
486989
487229
|
const currentConfig = getGlobalConfig();
|
|
486990
|
-
if (currentConfig.lastReleaseNotesSeen === "1.84.
|
|
487230
|
+
if (currentConfig.lastReleaseNotesSeen === "1.84.2") {
|
|
486991
487231
|
return;
|
|
486992
487232
|
}
|
|
486993
487233
|
saveGlobalConfig(_temp327);
|
|
@@ -487675,12 +487915,12 @@ function LogoV2() {
|
|
|
487675
487915
|
return t41;
|
|
487676
487916
|
}
|
|
487677
487917
|
function _temp327(current) {
|
|
487678
|
-
if (current.lastReleaseNotesSeen === "1.84.
|
|
487918
|
+
if (current.lastReleaseNotesSeen === "1.84.2") {
|
|
487679
487919
|
return current;
|
|
487680
487920
|
}
|
|
487681
487921
|
return {
|
|
487682
487922
|
...current,
|
|
487683
|
-
lastReleaseNotesSeen: "1.84.
|
|
487923
|
+
lastReleaseNotesSeen: "1.84.2"
|
|
487684
487924
|
};
|
|
487685
487925
|
}
|
|
487686
487926
|
function _temp240(s_0) {
|
|
@@ -503773,7 +504013,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
503773
504013
|
if (spec.name !== specName) {
|
|
503774
504014
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
503775
504015
|
}
|
|
503776
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.84.
|
|
504016
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.84.2" : "1.84.2");
|
|
503777
504017
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
503778
504018
|
throw new Error("invalid ur-agent package version");
|
|
503779
504019
|
}
|
|
@@ -504107,7 +504347,7 @@ var init_agenticCi = __esm(() => {
|
|
|
504107
504347
|
KEYWORD_RE = /^[A-Za-z0-9@/_+#:.-]{1,64}$/;
|
|
504108
504348
|
SECRET_NAME_RE = /(?:TOKEN|SECRET|PASSWORD|PASSWD|API_KEY|PRIVATE_KEY|CREDENTIAL|AUTH)/i;
|
|
504109
504349
|
CHILD_FORBIDDEN_ENV_RE = /^(?:GITHUB_TOKEN|GH_TOKEN|ACTIONS_ID_TOKEN_REQUEST_TOKEN|ACTIONS_ID_TOKEN_REQUEST_URL|ACTIONS_RUNTIME_TOKEN|ACTIONS_RUNTIME_URL|SSH_AUTH_SOCK)$/;
|
|
504110
|
-
HEADLESS_PROVIDER_SECRET_RE = /^(?:URHQ_API_KEY|UR_CODE_OAUTH_TOKEN|URHQ_AUTH_TOKEN|URHQ_FOUNDRY_API_KEY|OLLAMA_API_KEY|OPENAI_API_KEY|ANTHROPIC_API_KEY|GEMINI_API_KEY|OPENROUTER_API_KEY|OPENAI_COMPATIBLE_API_KEY|LMSTUDIO_API_KEY|LLAMA_CPP_API_KEY|VLLM_API_KEY|UNSLOTH_API_KEY|AWS_ACCESS_KEY_ID|AWS_SECRET_ACCESS_KEY|AWS_SESSION_TOKEN|AWS_BEARER_TOKEN_BEDROCK|AZURE_CLIENT_SECRET|AZURE_CLIENT_CERTIFICATE_PATH|GOOGLE_APPLICATION_CREDENTIALS)$/;
|
|
504350
|
+
HEADLESS_PROVIDER_SECRET_RE = /^(?:URHQ_API_KEY|UR_CODE_OAUTH_TOKEN|URHQ_AUTH_TOKEN|URHQ_FOUNDRY_API_KEY|OLLAMA_API_KEY|OPENAI_API_KEY|ANTHROPIC_API_KEY|GEMINI_API_KEY|OPENROUTER_API_KEY|OPENAI_COMPATIBLE_API_KEY|NVIDIA_API_KEY|LMSTUDIO_API_KEY|LLAMA_CPP_API_KEY|VLLM_API_KEY|UNSLOTH_API_KEY|AWS_ACCESS_KEY_ID|AWS_SECRET_ACCESS_KEY|AWS_SESSION_TOKEN|AWS_BEARER_TOKEN_BEDROCK|AZURE_CLIENT_SECRET|AZURE_CLIENT_CERTIFICATE_PATH|GOOGLE_APPLICATION_CREDENTIALS)$/;
|
|
504111
504351
|
});
|
|
504112
504352
|
|
|
504113
504353
|
// src/services/agents/featureScaffolds.ts
|
|
@@ -504769,7 +505009,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
504769
505009
|
path: ".github/workflows/ur.yml",
|
|
504770
505010
|
root: "project",
|
|
504771
505011
|
content: compileAgenticCiWorkflow("default", {
|
|
504772
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.84.
|
|
505012
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.84.2" : "1.84.2"
|
|
504773
505013
|
})
|
|
504774
505014
|
},
|
|
504775
505015
|
{
|
|
@@ -504832,7 +505072,7 @@ function value(tokens, flag) {
|
|
|
504832
505072
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
504833
505073
|
}
|
|
504834
505074
|
function cliVersion() {
|
|
504835
|
-
return typeof MACRO !== "undefined" ? "1.84.
|
|
505075
|
+
return typeof MACRO !== "undefined" ? "1.84.2" : "1.84.2";
|
|
504836
505076
|
}
|
|
504837
505077
|
function workflowPath(cwd2) {
|
|
504838
505078
|
return join156(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -505741,7 +505981,7 @@ function formatA2AV1AgentCard(options2 = {}, pretty = true) {
|
|
|
505741
505981
|
var urVersion, researchSnapshotDate = "2026-08-10", coverage2, priorityRoadmap;
|
|
505742
505982
|
var init_trends = __esm(() => {
|
|
505743
505983
|
init_a2aCardSignature();
|
|
505744
|
-
urVersion = typeof MACRO !== "undefined" ? "1.84.
|
|
505984
|
+
urVersion = typeof MACRO !== "undefined" ? "1.84.2" : "1.84.2";
|
|
505745
505985
|
coverage2 = [
|
|
505746
505986
|
{
|
|
505747
505987
|
id: "local-runtime",
|
|
@@ -511474,7 +511714,7 @@ function createAcpStdioApp(deps) {
|
|
|
511474
511714
|
}
|
|
511475
511715
|
},
|
|
511476
511716
|
authMethods: [],
|
|
511477
|
-
agentInfo: { name: "UR-Nexus", version: "1.84.
|
|
511717
|
+
agentInfo: { name: "UR-Nexus", version: "1.84.2" }
|
|
511478
511718
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
511479
511719
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
511480
511720
|
await runtime2.announce({
|
|
@@ -511571,7 +511811,7 @@ function createAcpStdioAgent(deps) {
|
|
|
511571
511811
|
}
|
|
511572
511812
|
},
|
|
511573
511813
|
authMethods: [],
|
|
511574
|
-
agentInfo: { name: "UR-Nexus", version: "1.84.
|
|
511814
|
+
agentInfo: { name: "UR-Nexus", version: "1.84.2" }
|
|
511575
511815
|
});
|
|
511576
511816
|
return;
|
|
511577
511817
|
case "authenticate":
|
|
@@ -725574,7 +725814,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
725574
725814
|
smapsRollup,
|
|
725575
725815
|
platform: process.platform,
|
|
725576
725816
|
nodeVersion: process.version,
|
|
725577
|
-
ccVersion: "1.84.
|
|
725817
|
+
ccVersion: "1.84.2"
|
|
725578
725818
|
};
|
|
725579
725819
|
}
|
|
725580
725820
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -726163,7 +726403,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
726163
726403
|
var call153 = async () => {
|
|
726164
726404
|
return {
|
|
726165
726405
|
type: "text",
|
|
726166
|
-
value: "1.84.
|
|
726406
|
+
value: "1.84.2"
|
|
726167
726407
|
};
|
|
726168
726408
|
}, version2, version_default;
|
|
726169
726409
|
var init_version = __esm(() => {
|
|
@@ -729269,7 +729509,7 @@ function ProviderFirstModelPicker({
|
|
|
729269
729509
|
}, [selectedProvider, modelReloadToken]);
|
|
729270
729510
|
import_react183.useEffect(() => {
|
|
729271
729511
|
const capabilityProvider = selectedProvider?.value;
|
|
729272
|
-
if (capabilityProvider !== "llama.cpp" && capabilityProvider !== "ollama" || !focusedModelValue) {
|
|
729512
|
+
if (capabilityProvider !== "llama.cpp" && capabilityProvider !== "ollama" && capabilityProvider !== "vllm" || !focusedModelValue) {
|
|
729273
729513
|
setEffortCapabilityLoading(false);
|
|
729274
729514
|
setEffortCapabilityWarning(null);
|
|
729275
729515
|
return;
|
|
@@ -729327,6 +729567,20 @@ function ProviderFirstModelPicker({
|
|
|
729327
729567
|
setStep("connect");
|
|
729328
729568
|
event.stopImmediatePropagation();
|
|
729329
729569
|
}, { isActive: step === "model" && !loadingModels });
|
|
729570
|
+
use_input_default((input2, _key, event) => {
|
|
729571
|
+
if (input2.toLowerCase() !== "k" || !selectedProvider)
|
|
729572
|
+
return;
|
|
729573
|
+
if (!providerSupportsApiKeyEditing(selectedProvider.provider))
|
|
729574
|
+
return;
|
|
729575
|
+
setConnectingProvider(selectedProvider);
|
|
729576
|
+
setApiKeyInput("");
|
|
729577
|
+
setApiKeyCursorOffset(0);
|
|
729578
|
+
setConnectionMode("api-key");
|
|
729579
|
+
setConnectReturnStep("model");
|
|
729580
|
+
setConnectError(null);
|
|
729581
|
+
setStep("connect");
|
|
729582
|
+
event.stopImmediatePropagation();
|
|
729583
|
+
}, { isActive: step === "model" && !loadingModels });
|
|
729330
729584
|
use_input_default((input2, key) => {
|
|
729331
729585
|
if (key.ctrl && (input2 === "r" || input2 === "R")) {
|
|
729332
729586
|
setModelReloadToken((token) => token + 1);
|
|
@@ -729350,7 +729604,8 @@ function ProviderFirstModelPicker({
|
|
|
729350
729604
|
const focusedEffortLevels = focusedResolvedModel && focusedProviderId ? getSupportedEffortLevelsForModel(focusedResolvedModel, focusedProviderId) : [];
|
|
729351
729605
|
const focusedEffortLevelLabels = focusedResolvedModel && focusedProviderId ? getSupportedEffortLevelLabelsForModel(focusedResolvedModel, focusedProviderId) : [];
|
|
729352
729606
|
const focusedSupportsEffort = focusedResolvedModel ? modelSupportsEffort(focusedResolvedModel, focusedProviderId) : false;
|
|
729353
|
-
const
|
|
729607
|
+
const focusedAdvertisesThinking = focusedResolvedModel && focusedProviderId ? modelSupportsThinking(focusedResolvedModel, focusedProviderId) : false;
|
|
729608
|
+
const focusedSupportsThinking = focusedResolvedModel && focusedProviderId ? focusedAdvertisesThinking && providerSupportsThinkingToggle(focusedProviderId) : false;
|
|
729354
729609
|
const focusedDefaultEffort = focusedResolvedModel ? convertEffortValueToLevel(getDefaultEffortForModel(focusedResolvedModel, focusedProviderId) ?? (focusedEffortLevels.includes("high") ? "high" : focusedEffortLevels.at(-1)) ?? "high") : "high";
|
|
729355
729610
|
const displayedEffort = focusedResolvedModel ? resolveProviderEffortLevel(focusedResolvedModel, effort ?? focusedDefaultEffort, focusedProviderId) ?? focusedDefaultEffort : focusedDefaultEffort;
|
|
729356
729611
|
function handleProviderFocus(value2) {
|
|
@@ -730010,7 +730265,8 @@ function ProviderFirstModelPicker({
|
|
|
730010
730265
|
color: "subtle",
|
|
730011
730266
|
children: [
|
|
730012
730267
|
"\u2191\u2193 browse \xB7 Enter select \xB7 \u2190\u2192 effort/thinking \xB7 Ctrl+R refresh \xB7 Esc providers",
|
|
730013
|
-
selectedProvider && providerSupportsEndpointEditing(selectedProvider.provider) ? " \xB7 E endpoint" : ""
|
|
730268
|
+
selectedProvider && providerSupportsEndpointEditing(selectedProvider.provider) ? " \xB7 E endpoint" : "",
|
|
730269
|
+
selectedProvider && providerSupportsApiKeyEditing(selectedProvider.provider) ? " \xB7 K API key" : ""
|
|
730014
730270
|
]
|
|
730015
730271
|
}, undefined, true, undefined, this)
|
|
730016
730272
|
]
|
|
@@ -730101,7 +730357,7 @@ function ProviderFirstModelPicker({
|
|
|
730101
730357
|
!focusedSupportsEffort && !effortCapabilityLoading && /* @__PURE__ */ jsx_dev_runtime333.jsxDEV(ThemedText, {
|
|
730102
730358
|
dimColor: true,
|
|
730103
730359
|
color: "subtle",
|
|
730104
|
-
children: focusedSupportsThinking ? "
|
|
730360
|
+
children: focusedSupportsThinking ? "Thinking supported; no model-specific graded ladder advertised. Using provider-native on/off control." : focusedAdvertisesThinking ? "Thinking supported; this runtime advertises no controllable graded ladder or on/off mapping." : "Graded effort not advertised for this model."
|
|
730105
730361
|
}, undefined, false, undefined, this),
|
|
730106
730362
|
focusedSupportsThinking && /* @__PURE__ */ jsx_dev_runtime333.jsxDEV(ThemedText, {
|
|
730107
730363
|
dimColor: true,
|
|
@@ -730151,7 +730407,8 @@ function ProviderFirstModelPicker({
|
|
|
730151
730407
|
color: "subtle",
|
|
730152
730408
|
children: [
|
|
730153
730409
|
"Press ctrl+r to retry",
|
|
730154
|
-
selectedProvider && providerSupportsEndpointEditing(selectedProvider.provider) ? ",
|
|
730410
|
+
selectedProvider && providerSupportsEndpointEditing(selectedProvider.provider) ? ", E to change the endpoint" : "",
|
|
730411
|
+
selectedProvider && providerSupportsApiKeyEditing(selectedProvider.provider) ? ", or K to add/change its API key" : "",
|
|
730155
730412
|
", or run `ur provider doctor ",
|
|
730156
730413
|
selectedProvider?.value,
|
|
730157
730414
|
"` to troubleshoot."
|
|
@@ -730193,6 +730450,9 @@ function noop8() {}
|
|
|
730193
730450
|
function providerSupportsEndpointEditing(provider) {
|
|
730194
730451
|
return provider.credentialType === "openai-compatible-endpoint" || provider.credentialType === "local-runtime" || provider.defaultBaseUrl !== undefined;
|
|
730195
730452
|
}
|
|
730453
|
+
function providerSupportsApiKeyEditing(provider) {
|
|
730454
|
+
return provider.accessType !== "subscription" && Boolean(provider.envKey);
|
|
730455
|
+
}
|
|
730196
730456
|
function providerPickerStatusWithoutNetwork(provider, settings = getInitialSettings(), apiKeySource = getProviderApiKeySource(provider.id)) {
|
|
730197
730457
|
const needsApiKey = provider.credentialType === "api-key" || provider.requiresApiKey === true;
|
|
730198
730458
|
if (needsApiKey && apiKeySource === "none") {
|
|
@@ -732264,7 +732524,7 @@ function setEffortValue(effortValue, model, provider = getRuntimeProvider()) {
|
|
|
732264
732524
|
effort: effortValue
|
|
732265
732525
|
});
|
|
732266
732526
|
return {
|
|
732267
|
-
message: `Requested ${effortValue} was not sent: ${model} on ${provider}
|
|
732527
|
+
message: `Requested ${effortValue} was not sent: ${model} on ${provider} advertises thinking but no model-specific graded ladder. UR used the provider-native on/off control and thinking is now ON. Use /thinking off to disable it or /thinking status to inspect it.`,
|
|
732268
732528
|
thinkingUpdate: {
|
|
732269
732529
|
value: true
|
|
732270
732530
|
}
|
|
@@ -732341,7 +732601,7 @@ function showCurrentEffort(appStateEffort, model, provider = getRuntimeProvider(
|
|
|
732341
732601
|
if (!modelSupportsEffort(model, provider)) {
|
|
732342
732602
|
if (modelSupportsThinking(model, provider) && providerSupportsThinkingToggle(provider)) {
|
|
732343
732603
|
return {
|
|
732344
|
-
message: `Effort: graded
|
|
732604
|
+
message: `Effort: no model-specific graded ladder advertised for ${model} on ${provider}. UR is using the provider-native on/off control; thinking is ${thinkingEnabled === false ? "OFF" : "ON"}. Use /thinking on|off to change it.`
|
|
732345
732605
|
};
|
|
732346
732606
|
}
|
|
732347
732607
|
if (modelSupportsThinking(model, provider)) {
|
|
@@ -732367,7 +732627,7 @@ function showCurrentEffort(appStateEffort, model, provider = getRuntimeProvider(
|
|
|
732367
732627
|
if (!modelSupportsEffort(model, provider)) {
|
|
732368
732628
|
if (modelSupportsThinking(model, provider) && providerSupportsThinkingToggle(provider)) {
|
|
732369
732629
|
return {
|
|
732370
|
-
message: `Requested effort: ${effectiveValue}; not sent \u2014 ${model} on ${provider}
|
|
732630
|
+
message: `Requested effort: ${effectiveValue}; not sent \u2014 ${model} on ${provider} advertises thinking but no model-specific graded ladder. UR is using the provider-native on/off control; thinking is ${thinkingEnabled === false ? "OFF" : "ON"}. Use /thinking on|off to change it.`
|
|
732371
732631
|
};
|
|
732372
732632
|
}
|
|
732373
732633
|
if (modelSupportsThinking(model, provider)) {
|
|
@@ -732557,7 +732817,7 @@ function capabilityMessage(enabled, model, provider) {
|
|
|
732557
732817
|
return `${model} advertises thinking, but the ${provider} runtime has no provider-native on/off mapping. ${modelSupportsEffort(model, provider) ? "Use /effort for its advertised graded control." : "UR will not invent a boolean wire field."}`;
|
|
732558
732818
|
}
|
|
732559
732819
|
if (!modelSupportsEffort(model, provider)) {
|
|
732560
|
-
return `${model} on ${provider}
|
|
732820
|
+
return `${model} on ${provider} advertises thinking but no model-specific graded ladder. UR uses the provider-native on/off control and sends no graded effort.`;
|
|
732561
732821
|
}
|
|
732562
732822
|
return enabled ? `${model} on ${provider} also advertises graded effort; use /effort status to inspect its independently selected level.` : `${model} on ${provider} also advertises graded effort, which remains independently controlled by /effort.`;
|
|
732563
732823
|
}
|
|
@@ -738037,7 +738297,7 @@ function generateHtmlReport(data, insights) {
|
|
|
738037
738297
|
</html>`;
|
|
738038
738298
|
}
|
|
738039
738299
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
738040
|
-
const version3 = typeof MACRO !== "undefined" ? "1.84.
|
|
738300
|
+
const version3 = typeof MACRO !== "undefined" ? "1.84.2" : "unknown";
|
|
738041
738301
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
738042
738302
|
const facets_summary = {
|
|
738043
738303
|
total: facets.size,
|
|
@@ -742352,7 +742612,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
742352
742612
|
init_settings2();
|
|
742353
742613
|
init_slowOperations();
|
|
742354
742614
|
init_uuid();
|
|
742355
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.84.
|
|
742615
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.84.2" : "unknown";
|
|
742356
742616
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
742357
742617
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
742358
742618
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -743567,7 +743827,7 @@ var init_filesystem = __esm(() => {
|
|
|
743567
743827
|
});
|
|
743568
743828
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
743569
743829
|
const nonce = randomBytes23(16).toString("hex");
|
|
743570
|
-
return join234(getURTempDir(), "bundled-skills", "1.84.
|
|
743830
|
+
return join234(getURTempDir(), "bundled-skills", "1.84.2", nonce);
|
|
743571
743831
|
});
|
|
743572
743832
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
743573
743833
|
});
|
|
@@ -764041,12 +764301,16 @@ function contentToGeminiParts(content, toolNamesById) {
|
|
|
764041
764301
|
break;
|
|
764042
764302
|
case "tool_result":
|
|
764043
764303
|
flushTextPart();
|
|
764044
|
-
|
|
764304
|
+
const toolResultName = toolNamesById.get(block2.tool_use_id) ?? block2.tool_use_id ?? index2;
|
|
764305
|
+
const toolResultImages = imageBlocksFromContent(block2.content);
|
|
764045
764306
|
parts.push({
|
|
764046
764307
|
functionResponse: {
|
|
764047
|
-
name:
|
|
764308
|
+
name: toolResultName,
|
|
764048
764309
|
response: { result: contentToText(block2.content) },
|
|
764049
|
-
...typeof block2.tool_use_id === "string" && block2.tool_use_id.length > 0 && { id: block2.tool_use_id }
|
|
764310
|
+
...typeof block2.tool_use_id === "string" && block2.tool_use_id.length > 0 && { id: block2.tool_use_id },
|
|
764311
|
+
...toolResultImages.length > 0 && {
|
|
764312
|
+
parts: toolResultImages.map((image, imageIndex) => imageBlockToGeminiPart(image, `tool_result ${block2.tool_use_id ?? index2} image ${imageIndex}`))
|
|
764313
|
+
}
|
|
764050
764314
|
}
|
|
764051
764315
|
});
|
|
764052
764316
|
break;
|
|
@@ -775358,7 +775622,7 @@ function getUserAgent() {
|
|
|
775358
775622
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
775359
775623
|
const workload = getWorkload();
|
|
775360
775624
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
775361
|
-
return `ur-cli/${"1.84.
|
|
775625
|
+
return `ur-cli/${"1.84.2"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
775362
775626
|
}
|
|
775363
775627
|
function getMCPUserAgent() {
|
|
775364
775628
|
const parts = [];
|
|
@@ -775372,7 +775636,7 @@ function getMCPUserAgent() {
|
|
|
775372
775636
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
775373
775637
|
}
|
|
775374
775638
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
775375
|
-
return `ur/${"1.84.
|
|
775639
|
+
return `ur/${"1.84.2"}${suffix}`;
|
|
775376
775640
|
}
|
|
775377
775641
|
function getWebFetchUserAgent() {
|
|
775378
775642
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -792535,7 +792799,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
792535
792799
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
792536
792800
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
792537
792801
|
betas: getSdkBetas(),
|
|
792538
|
-
ur_version: "1.84.
|
|
792802
|
+
ur_version: "1.84.2",
|
|
792539
792803
|
output_style: outputStyle,
|
|
792540
792804
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
792541
792805
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -796076,7 +796340,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
796076
796340
|
function getSemverPart(version3) {
|
|
796077
796341
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
796078
796342
|
}
|
|
796079
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.84.
|
|
796343
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.84.2") {
|
|
796080
796344
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
|
|
796081
796345
|
if (!updatedVersion) {
|
|
796082
796346
|
return null;
|
|
@@ -796125,7 +796389,7 @@ function AutoUpdater({
|
|
|
796125
796389
|
return;
|
|
796126
796390
|
}
|
|
796127
796391
|
if (false) {}
|
|
796128
|
-
const currentVersion = "1.84.
|
|
796392
|
+
const currentVersion = "1.84.2";
|
|
796129
796393
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
796130
796394
|
let latestVersion = await getLatestVersion(channel);
|
|
796131
796395
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -796354,12 +796618,12 @@ function NativeAutoUpdater({
|
|
|
796354
796618
|
logEvent("tengu_native_auto_updater_start", {});
|
|
796355
796619
|
try {
|
|
796356
796620
|
const maxVersion = await getMaxVersion();
|
|
796357
|
-
if (maxVersion && gt("1.84.
|
|
796621
|
+
if (maxVersion && gt("1.84.2", maxVersion)) {
|
|
796358
796622
|
const msg = await getMaxVersionMessage();
|
|
796359
796623
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
796360
796624
|
}
|
|
796361
796625
|
const result = await installLatest(channel);
|
|
796362
|
-
const currentVersion = "1.84.
|
|
796626
|
+
const currentVersion = "1.84.2";
|
|
796363
796627
|
const latencyMs = Date.now() - startTime;
|
|
796364
796628
|
if (result.lockFailed) {
|
|
796365
796629
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -796496,17 +796760,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
796496
796760
|
const maxVersion = await getMaxVersion();
|
|
796497
796761
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
796498
796762
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
796499
|
-
if (gte("1.84.
|
|
796500
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.84.
|
|
796763
|
+
if (gte("1.84.2", maxVersion)) {
|
|
796764
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.84.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
796501
796765
|
setUpdateAvailable(false);
|
|
796502
796766
|
return;
|
|
796503
796767
|
}
|
|
796504
796768
|
latest = maxVersion;
|
|
796505
796769
|
}
|
|
796506
|
-
const hasUpdate = latest && !gte("1.84.
|
|
796770
|
+
const hasUpdate = latest && !gte("1.84.2", latest) && !shouldSkipVersion(latest);
|
|
796507
796771
|
setUpdateAvailable(!!hasUpdate);
|
|
796508
796772
|
if (hasUpdate) {
|
|
796509
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.84.
|
|
796773
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.84.2"} -> ${latest}`);
|
|
796510
796774
|
}
|
|
796511
796775
|
};
|
|
796512
796776
|
$2[0] = t1;
|
|
@@ -796540,7 +796804,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
796540
796804
|
wrap: "truncate",
|
|
796541
796805
|
children: [
|
|
796542
796806
|
"currentVersion: ",
|
|
796543
|
-
"1.84.
|
|
796807
|
+
"1.84.2"
|
|
796544
796808
|
]
|
|
796545
796809
|
}, undefined, true, undefined, this);
|
|
796546
796810
|
$2[3] = verbose;
|
|
@@ -807389,7 +807653,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
807389
807653
|
project_dir: getOriginalCwd(),
|
|
807390
807654
|
added_dirs: addedDirs
|
|
807391
807655
|
},
|
|
807392
|
-
version: "1.84.
|
|
807656
|
+
version: "1.84.2",
|
|
807393
807657
|
output_style: {
|
|
807394
807658
|
name: outputStyleName
|
|
807395
807659
|
},
|
|
@@ -807524,7 +807788,7 @@ function StatusLineInner({
|
|
|
807524
807788
|
const attention = customStatusError ?? taskAttention;
|
|
807525
807789
|
const terminalSize = React138.useContext(TerminalSizeContext);
|
|
807526
807790
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
807527
|
-
version: "1.84.
|
|
807791
|
+
version: "1.84.2",
|
|
807528
807792
|
providerLabel: providerRuntime.providerLabel,
|
|
807529
807793
|
authMode: providerRuntime.authLabel,
|
|
807530
807794
|
model: renderModelName(mainLoopModel) || providerRuntime.model || "",
|
|
@@ -819915,7 +820179,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
819915
820179
|
} catch {}
|
|
819916
820180
|
const data = {
|
|
819917
820181
|
trigger: trigger2,
|
|
819918
|
-
version: "1.84.
|
|
820182
|
+
version: "1.84.2",
|
|
819919
820183
|
platform: process.platform,
|
|
819920
820184
|
transcript,
|
|
819921
820185
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -832297,7 +832561,7 @@ function WelcomeV2() {
|
|
|
832297
832561
|
dimColor: true,
|
|
832298
832562
|
children: [
|
|
832299
832563
|
"v",
|
|
832300
|
-
"1.84.
|
|
832564
|
+
"1.84.2"
|
|
832301
832565
|
]
|
|
832302
832566
|
}, undefined, true, undefined, this)
|
|
832303
832567
|
]
|
|
@@ -833543,7 +833807,7 @@ function completeOnboarding() {
|
|
|
833543
833807
|
saveGlobalConfig((current) => ({
|
|
833544
833808
|
...current,
|
|
833545
833809
|
hasCompletedOnboarding: true,
|
|
833546
|
-
lastOnboardingVersion: "1.84.
|
|
833810
|
+
lastOnboardingVersion: "1.84.2"
|
|
833547
833811
|
}));
|
|
833548
833812
|
}
|
|
833549
833813
|
function showDialog(root2, renderer) {
|
|
@@ -838540,7 +838804,7 @@ function appendToLog(path28, message) {
|
|
|
838540
838804
|
cwd: getFsImplementation().cwd(),
|
|
838541
838805
|
userType: process.env.USER_TYPE,
|
|
838542
838806
|
sessionId: getSessionId(),
|
|
838543
|
-
version: "1.84.
|
|
838807
|
+
version: "1.84.2"
|
|
838544
838808
|
};
|
|
838545
838809
|
getLogWriter(path28).write(messageWithTimestamp);
|
|
838546
838810
|
}
|
|
@@ -842703,8 +842967,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
842703
842967
|
}
|
|
842704
842968
|
async function checkEnvLessBridgeMinVersion() {
|
|
842705
842969
|
const cfg = await getEnvLessBridgeConfig();
|
|
842706
|
-
if (cfg.min_version && lt("1.84.
|
|
842707
|
-
return `Your version of UR (${"1.84.
|
|
842970
|
+
if (cfg.min_version && lt("1.84.2", cfg.min_version)) {
|
|
842971
|
+
return `Your version of UR (${"1.84.2"}) is too old for Remote Control.
|
|
842708
842972
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
842709
842973
|
}
|
|
842710
842974
|
return null;
|
|
@@ -843178,7 +843442,7 @@ async function initBridgeCore(params) {
|
|
|
843178
843442
|
const rawApi = createBridgeApiClient({
|
|
843179
843443
|
baseUrl,
|
|
843180
843444
|
getAccessToken,
|
|
843181
|
-
runnerVersion: "1.84.
|
|
843445
|
+
runnerVersion: "1.84.2",
|
|
843182
843446
|
onDebug: logForDebugging,
|
|
843183
843447
|
onAuth401,
|
|
843184
843448
|
getTrustedDeviceToken
|
|
@@ -856620,7 +856884,7 @@ function getAgUiCapabilities() {
|
|
|
856620
856884
|
name: "UR-Nexus",
|
|
856621
856885
|
type: "ur-nexus",
|
|
856622
856886
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
856623
|
-
version: "1.84.
|
|
856887
|
+
version: "1.84.2",
|
|
856624
856888
|
provider: "UR",
|
|
856625
856889
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
856626
856890
|
},
|
|
@@ -857440,7 +857704,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
857440
857704
|
};
|
|
857441
857705
|
const server2 = new Server({
|
|
857442
857706
|
name: "ur-nexus",
|
|
857443
|
-
version: "1.84.
|
|
857707
|
+
version: "1.84.2"
|
|
857444
857708
|
}, {
|
|
857445
857709
|
capabilities: {
|
|
857446
857710
|
tools: {}
|
|
@@ -858643,7 +858907,7 @@ function thrownResponse(error61) {
|
|
|
858643
858907
|
}
|
|
858644
858908
|
async function createUrMcp2026Runtime(options5) {
|
|
858645
858909
|
const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
|
|
858646
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.84.
|
|
858910
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.84.2" }, { capabilities: {} });
|
|
858647
858911
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
858648
858912
|
try {
|
|
858649
858913
|
await server2.connect(serverTransport);
|
|
@@ -858654,7 +858918,7 @@ async function createUrMcp2026Runtime(options5) {
|
|
|
858654
858918
|
}
|
|
858655
858919
|
const runtime2 = new Mcp2026Runtime({
|
|
858656
858920
|
cwd: options5.cwd,
|
|
858657
|
-
version: "1.84.
|
|
858921
|
+
version: "1.84.2",
|
|
858658
858922
|
backend: {
|
|
858659
858923
|
listTools: async () => {
|
|
858660
858924
|
const listed = await client2.listTools();
|
|
@@ -861490,7 +861754,7 @@ async function update() {
|
|
|
861490
861754
|
logEvent("tengu_update_check", {});
|
|
861491
861755
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
861492
861756
|
const result = await checkUpgradeStatus({
|
|
861493
|
-
currentVersion: "1.84.
|
|
861757
|
+
currentVersion: "1.84.2",
|
|
861494
861758
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
861495
861759
|
installationType: diagnostic2.installationType,
|
|
861496
861760
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -862818,7 +863082,7 @@ ${customInstructions}` : customInstructions;
|
|
|
862818
863082
|
}
|
|
862819
863083
|
}
|
|
862820
863084
|
logForDiagnosticsNoPII("info", "started", {
|
|
862821
|
-
version: "1.84.
|
|
863085
|
+
version: "1.84.2",
|
|
862822
863086
|
is_native_binary: isInBundledMode()
|
|
862823
863087
|
});
|
|
862824
863088
|
registerCleanup(async () => {
|
|
@@ -863605,7 +863869,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
863605
863869
|
pendingHookMessages
|
|
863606
863870
|
}, renderAndRun);
|
|
863607
863871
|
}
|
|
863608
|
-
}).version("1.84.
|
|
863872
|
+
}).version("1.84.2 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
863609
863873
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
863610
863874
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
863611
863875
|
if (canUserConfigureAdvisor()) {
|
|
@@ -864732,7 +864996,7 @@ if (false) {}
|
|
|
864732
864996
|
async function main2() {
|
|
864733
864997
|
const args = process.argv.slice(2);
|
|
864734
864998
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
864735
|
-
console.log(`${"1.84.
|
|
864999
|
+
console.log(`${"1.84.2"} (UR-Nexus)`);
|
|
864736
865000
|
return;
|
|
864737
865001
|
}
|
|
864738
865002
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|