ur-agent 1.84.0 → 1.84.1
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 +16 -0
- package/README.md +14 -6
- package/dist/cli.js +157 -106
- package/docs/CONFIGURATION.md +9 -5
- package/docs/VALIDATION.md +10 -7
- package/docs/providers.md +28 -11
- package/documentation/app.js +1 -1
- package/documentation/index.html +3 -3
- 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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.84.1
|
|
4
|
+
|
|
5
|
+
- Made dynamic reasoning discovery capability-truthful across local and
|
|
6
|
+
OpenAI-compatible providers. vLLM now uses its non-generating server-info
|
|
7
|
+
contract to expose `minimal→none|low|medium|high` only when a reasoning
|
|
8
|
+
parser is configured, and the adapter serializes all provider-authored effort
|
|
9
|
+
aliases rather than translating Ultra alone. llama.cpp records its template
|
|
10
|
+
support flag without fabricating a finite level set that the endpoint does
|
|
11
|
+
not publish.
|
|
12
|
+
- Refined Ollama's thinking presentation: a generic `thinking` capability now
|
|
13
|
+
reports thinking support and UR's verified native on/off control without
|
|
14
|
+
claiming the model supports only booleans. Exact graded levels and Ultra
|
|
15
|
+
remain model-scoped and provider-advertised. Added provider-matrix, discovery,
|
|
16
|
+
picker, command-message, and request-wire regression coverage and synchronized
|
|
17
|
+
the public site, user guides, validation guide, and technical specification.
|
|
18
|
+
|
|
3
19
|
## 1.84.0
|
|
4
20
|
|
|
5
21
|
- Added production npm marketplace sources with scoped-package and version
|
package/README.md
CHANGED
|
@@ -379,7 +379,8 @@ In the interactive app, `/model` is a two-step, provider-first picker:
|
|
|
379
379
|
In the model catalog, use **Up/Down** to browse. For graded models, the effort row updates to
|
|
380
380
|
the focused model's capability-backed selectors; use **Left/Right** to cycle
|
|
381
381
|
only values UR can map to provider-native levels before pressing Enter. For
|
|
382
|
-
|
|
382
|
+
models with thinking but no advertised graded ladder on runtimes with a native
|
|
383
|
+
two-state mapping (currently
|
|
383
384
|
Ollama and direct Anthropic), Left selects off, Right selects on, and `t`
|
|
384
385
|
toggles. The same state is available directly through `/thinking on|off`.
|
|
385
386
|
Generic OpenAI-compatible runtimes never receive an invented boolean field.
|
|
@@ -387,14 +388,21 @@ In the interactive app, `/model` is a two-step, provider-first picker:
|
|
|
387
388
|
beyond-high ceiling selector. It appears only when the provider/model
|
|
388
389
|
advertises `ultra`, `max`, `xhigh`, or an explicit equivalent, and the row
|
|
389
390
|
shows the exact mapping (for example, `ultra→max`). Models whose graded
|
|
390
|
-
ladder tops out at `high`, plus
|
|
391
|
+
ladder tops out at `high`, plus models without an advertised beyond-high
|
|
392
|
+
value, do not get Ultra. A generic
|
|
391
393
|
`max` request resolves visibly to that model's highest supported non-Ultra tier
|
|
392
394
|
(commonly `max`, `xhigh`, or `high`), and that resolved value is sent to the provider. llama.cpp models
|
|
393
395
|
are checked lazily through their model-scoped `/props` capability while the
|
|
394
|
-
cursor moves.
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
396
|
+
cursor moves. Because current llama.cpp reports support but not the accepted
|
|
397
|
+
level names, that flag alone does not create a graded selector. vLLM is
|
|
398
|
+
checked lazily through `/server_info?config_format=json`; a configured
|
|
399
|
+
reasoning parser enables its documented `none|low|medium|high` Chat
|
|
400
|
+
Completions contract (`minimal→none`) without inventing Ultra. Ollama models
|
|
401
|
+
are checked through `/api/show`; a generic `thinking` capability establishes
|
|
402
|
+
thinking support but not a model-specific ladder, so UR uses Ollama's native
|
|
403
|
+
on/off control unless the endpoint supplies exact levels.
|
|
404
|
+
If `/effort max` or another graded request is used for such a model, UR
|
|
405
|
+
enables thinking but reports that no graded level was sent.
|
|
398
406
|
GPT-OSS uses its documented `low|medium|high` values, while any other graded
|
|
399
407
|
values or Ultra aliases must be explicitly present in provider metadata.
|
|
400
408
|
The resolved value is sent through Ollama's native `think` field. OpenRouter additionally
|
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);
|
|
@@ -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
|
}
|
|
@@ -231035,7 +231083,7 @@ var init_metadata = __esm(() => {
|
|
|
231035
231083
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
231036
231084
|
WHITESPACE_REGEX2 = /\s+/;
|
|
231037
231085
|
getVersionBase = memoize_default(() => {
|
|
231038
|
-
const match = "1.84.
|
|
231086
|
+
const match = "1.84.1".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
231039
231087
|
return match ? match[0] : undefined;
|
|
231040
231088
|
});
|
|
231041
231089
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -231075,7 +231123,7 @@ var init_metadata = __esm(() => {
|
|
|
231075
231123
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
231076
231124
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
231077
231125
|
isURAiAuth: isURAISubscriber(),
|
|
231078
|
-
version: "1.84.
|
|
231126
|
+
version: "1.84.1",
|
|
231079
231127
|
versionBase: getVersionBase(),
|
|
231080
231128
|
buildTime: "",
|
|
231081
231129
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -238514,7 +238562,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
238514
238562
|
if (!isAttributionHeaderEnabled()) {
|
|
238515
238563
|
return "";
|
|
238516
238564
|
}
|
|
238517
|
-
const version2 = `${"1.84.
|
|
238565
|
+
const version2 = `${"1.84.1"}.${fingerprint}`;
|
|
238518
238566
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
238519
238567
|
const cch = "";
|
|
238520
238568
|
const workload = getWorkload();
|
|
@@ -261861,10 +261909,11 @@ function toOpenAICompatibleRequest(params, providerName = "openai-compatible") {
|
|
|
261861
261909
|
const reasoningEffort = toOpenAIReasoningEffort(params, providerName);
|
|
261862
261910
|
const openRouterWireEffort = providerName === "openrouter" && reasoningEffort ? toOpenRouterReasoningEffort(String(params.model ?? ""), reasoningEffort) : undefined;
|
|
261863
261911
|
const openRouterReasoning = providerName === "openrouter" ? toOpenRouterReasoning(params, openRouterWireEffort) : undefined;
|
|
261864
|
-
const compatibleReasoningEffort = reasoningEffort
|
|
261912
|
+
const compatibleReasoningEffort = reasoningEffort && providerName !== "openrouter" ? (() => {
|
|
261865
261913
|
const provider = resolveProviderId(providerName);
|
|
261866
|
-
|
|
261867
|
-
|
|
261914
|
+
const advertisedWireValue = provider ? getProviderEffortWireValue(String(params.model ?? ""), reasoningEffort, provider) : undefined;
|
|
261915
|
+
return advertisedWireValue ?? (reasoningEffort === "ultra" ? undefined : reasoningEffort);
|
|
261916
|
+
})() : undefined;
|
|
261868
261917
|
const openRouterServerSearch = providerName === "openrouter" && tools.some((tool) => tool?.type === "openrouter:web_search");
|
|
261869
261918
|
const toolChoice = openRouterServerSearch ? undefined : mapOpenAIToolChoice(params.tool_choice);
|
|
261870
261919
|
const openRouterProviderPreferences = providerName === "openrouter" ? openRouterRoutingPreferences(params) : undefined;
|
|
@@ -304518,7 +304567,7 @@ function getTelemetryAttributes() {
|
|
|
304518
304567
|
attributes["session.id"] = sessionId;
|
|
304519
304568
|
}
|
|
304520
304569
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
304521
|
-
attributes["app.version"] = "1.84.
|
|
304570
|
+
attributes["app.version"] = "1.84.1";
|
|
304522
304571
|
}
|
|
304523
304572
|
const oauthAccount = getOauthAccountInfo();
|
|
304524
304573
|
if (oauthAccount) {
|
|
@@ -307549,7 +307598,7 @@ var require_src3 = __commonJS((exports) => {
|
|
|
307549
307598
|
function getInstruments() {
|
|
307550
307599
|
if (instruments)
|
|
307551
307600
|
return instruments;
|
|
307552
|
-
const meter = import_api2.metrics.getMeter("ur-agent.gen_ai", "1.84.
|
|
307601
|
+
const meter = import_api2.metrics.getMeter("ur-agent.gen_ai", "1.84.1");
|
|
307553
307602
|
instruments = {
|
|
307554
307603
|
operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
|
|
307555
307604
|
description: "GenAI operation duration.",
|
|
@@ -307647,7 +307696,7 @@ function genAiAgentAttributes() {
|
|
|
307647
307696
|
"gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
|
|
307648
307697
|
"gen_ai.provider.name": "ur",
|
|
307649
307698
|
"gen_ai.agent.name": "UR-Nexus",
|
|
307650
|
-
"gen_ai.agent.version": "1.84.
|
|
307699
|
+
"gen_ai.agent.version": "1.84.1"
|
|
307651
307700
|
};
|
|
307652
307701
|
}
|
|
307653
307702
|
function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
@@ -307668,7 +307717,7 @@ function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
|
307668
307717
|
function startGenAiWorkflowSpan(workflowName, workflowRunId) {
|
|
307669
307718
|
const attributes = genAiWorkflowAttributes(workflowName, workflowRunId);
|
|
307670
307719
|
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.
|
|
307720
|
+
return import_api2.trace.getTracer("ur-agent.gen_ai", "1.84.1").startSpan(name, { kind: import_api2.SpanKind.INTERNAL, attributes });
|
|
307672
307721
|
}
|
|
307673
307722
|
function endGenAiWorkflowSpan(span, options2 = {}) {
|
|
307674
307723
|
try {
|
|
@@ -307706,7 +307755,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
|
|
|
307706
307755
|
if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
|
|
307707
307756
|
attributes["gen_ai.memory.record.count"] = options2.recordCount;
|
|
307708
307757
|
}
|
|
307709
|
-
return import_api2.trace.getTracer("ur-agent.gen_ai", "1.84.
|
|
307758
|
+
return import_api2.trace.getTracer("ur-agent.gen_ai", "1.84.1").startSpan(operation, { kind: import_api2.SpanKind.INTERNAL, attributes });
|
|
307710
307759
|
}
|
|
307711
307760
|
function endGenAiMemorySpan(span, options2 = {}) {
|
|
307712
307761
|
try {
|
|
@@ -322113,7 +322162,7 @@ async function createRuntime() {
|
|
|
322113
322162
|
bootstrapTelemetry();
|
|
322114
322163
|
const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
|
|
322115
322164
|
[import_semantic_conventions6.ATTR_SERVICE_NAME]: "ur-agent",
|
|
322116
|
-
[import_semantic_conventions6.ATTR_SERVICE_VERSION]: "1.84.
|
|
322165
|
+
[import_semantic_conventions6.ATTR_SERVICE_VERSION]: "1.84.1"
|
|
322117
322166
|
}));
|
|
322118
322167
|
const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
|
|
322119
322168
|
resource,
|
|
@@ -322146,11 +322195,11 @@ async function createRuntime() {
|
|
|
322146
322195
|
setMeterProvider(meterProvider);
|
|
322147
322196
|
setLoggerProvider(loggerProvider);
|
|
322148
322197
|
if (meterProvider) {
|
|
322149
|
-
const meter = meterProvider.getMeter("ur-agent", "1.84.
|
|
322198
|
+
const meter = meterProvider.getMeter("ur-agent", "1.84.1");
|
|
322150
322199
|
setMeter(meter, (name, options2) => meter.createCounter(name, options2));
|
|
322151
322200
|
}
|
|
322152
322201
|
if (loggerProvider) {
|
|
322153
|
-
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.84.
|
|
322202
|
+
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.84.1"));
|
|
322154
322203
|
}
|
|
322155
322204
|
if (!cleanupRegistered4) {
|
|
322156
322205
|
cleanupRegistered4 = true;
|
|
@@ -322699,7 +322748,7 @@ function isAnyTracingEnabled() {
|
|
|
322699
322748
|
return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
|
|
322700
322749
|
}
|
|
322701
322750
|
function getTracer() {
|
|
322702
|
-
return import_api32.trace.getTracer("ur-agent.gen_ai", "1.84.
|
|
322751
|
+
return import_api32.trace.getTracer("ur-agent.gen_ai", "1.84.1");
|
|
322703
322752
|
}
|
|
322704
322753
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
322705
322754
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -334650,7 +334699,7 @@ function computeFingerprint(messageText2, version2) {
|
|
|
334650
334699
|
}
|
|
334651
334700
|
function computeFingerprintFromMessages(messages) {
|
|
334652
334701
|
const firstMessageText = extractFirstMessageText(messages);
|
|
334653
|
-
return computeFingerprint(firstMessageText, "1.84.
|
|
334702
|
+
return computeFingerprint(firstMessageText, "1.84.1");
|
|
334654
334703
|
}
|
|
334655
334704
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
334656
334705
|
var init_fingerprint = () => {};
|
|
@@ -334692,7 +334741,7 @@ async function sideQuery(opts) {
|
|
|
334692
334741
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
334693
334742
|
}
|
|
334694
334743
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
334695
|
-
const fingerprint = computeFingerprint(messageText2, "1.84.
|
|
334744
|
+
const fingerprint = computeFingerprint(messageText2, "1.84.1");
|
|
334696
334745
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
334697
334746
|
const systemBlocks = [
|
|
334698
334747
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -336799,7 +336848,7 @@ var init_user = __esm(() => {
|
|
|
336799
336848
|
deviceId,
|
|
336800
336849
|
sessionId: getSessionId(),
|
|
336801
336850
|
email: getEmail(),
|
|
336802
|
-
appVersion: "1.84.
|
|
336851
|
+
appVersion: "1.84.1",
|
|
336803
336852
|
platform: getHostPlatformForAnalytics(),
|
|
336804
336853
|
organizationUuid,
|
|
336805
336854
|
accountUuid,
|
|
@@ -337559,7 +337608,7 @@ var init_growthbook_experiment_event = __esm(() => {
|
|
|
337559
337608
|
|
|
337560
337609
|
// src/utils/userAgent.ts
|
|
337561
337610
|
function getURCodeUserAgent() {
|
|
337562
|
-
return `ur/${"1.84.
|
|
337611
|
+
return `ur/${"1.84.1"}`;
|
|
337563
337612
|
}
|
|
337564
337613
|
|
|
337565
337614
|
// src/services/analytics/firstPartyEventLoggingExporter.ts
|
|
@@ -338215,7 +338264,7 @@ function initialize1PEventLogging() {
|
|
|
338215
338264
|
const platform4 = getPlatform();
|
|
338216
338265
|
const attributes = {
|
|
338217
338266
|
[import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur",
|
|
338218
|
-
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.84.
|
|
338267
|
+
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.84.1"
|
|
338219
338268
|
};
|
|
338220
338269
|
if (platform4 === "wsl") {
|
|
338221
338270
|
const wslVersion = getWslVersion();
|
|
@@ -338243,7 +338292,7 @@ function initialize1PEventLogging() {
|
|
|
338243
338292
|
})
|
|
338244
338293
|
]
|
|
338245
338294
|
});
|
|
338246
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.84.
|
|
338295
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.84.1");
|
|
338247
338296
|
}
|
|
338248
338297
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
338249
338298
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -341544,9 +341593,9 @@ async function assertMinVersion() {
|
|
|
341544
341593
|
if (false) {}
|
|
341545
341594
|
try {
|
|
341546
341595
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
341547
|
-
if (versionConfig.minVersion && lt("1.84.
|
|
341596
|
+
if (versionConfig.minVersion && lt("1.84.1", versionConfig.minVersion)) {
|
|
341548
341597
|
console.error(`
|
|
341549
|
-
It looks like your version of UR (${"1.84.
|
|
341598
|
+
It looks like your version of UR (${"1.84.1"}) needs an update.
|
|
341550
341599
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
341551
341600
|
|
|
341552
341601
|
To update, please run:
|
|
@@ -341762,7 +341811,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
341762
341811
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
341763
341812
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
341764
341813
|
pid: process.pid,
|
|
341765
|
-
currentVersion: "1.84.
|
|
341814
|
+
currentVersion: "1.84.1"
|
|
341766
341815
|
});
|
|
341767
341816
|
return "in_progress";
|
|
341768
341817
|
}
|
|
@@ -341771,7 +341820,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
341771
341820
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
341772
341821
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
341773
341822
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
341774
|
-
currentVersion: "1.84.
|
|
341823
|
+
currentVersion: "1.84.1"
|
|
341775
341824
|
});
|
|
341776
341825
|
console.error(`
|
|
341777
341826
|
Error: Windows NPM detected in WSL
|
|
@@ -342306,7 +342355,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
342306
342355
|
}
|
|
342307
342356
|
async function getDoctorDiagnostic() {
|
|
342308
342357
|
const installationType = await getCurrentInstallationType();
|
|
342309
|
-
const version2 = typeof MACRO !== "undefined" ? "1.84.
|
|
342358
|
+
const version2 = typeof MACRO !== "undefined" ? "1.84.1" : "unknown";
|
|
342310
342359
|
const installationPath = await getInstallationPath();
|
|
342311
342360
|
const invokedBinary = getInvokedBinary();
|
|
342312
342361
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -343373,7 +343422,7 @@ function getInstallationEnv() {
|
|
|
343373
343422
|
return;
|
|
343374
343423
|
}
|
|
343375
343424
|
function getURCodeVersion() {
|
|
343376
|
-
return "1.84.
|
|
343425
|
+
return "1.84.1";
|
|
343377
343426
|
}
|
|
343378
343427
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
343379
343428
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -344854,8 +344903,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
344854
344903
|
const maxVersion = await getMaxVersion();
|
|
344855
344904
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
344856
344905
|
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.
|
|
344906
|
+
if (gte("1.84.1", maxVersion)) {
|
|
344907
|
+
logForDebugging(`Native installer: current version ${"1.84.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
344859
344908
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
344860
344909
|
latency_ms: Date.now() - startTime,
|
|
344861
344910
|
max_version: maxVersion,
|
|
@@ -344866,7 +344915,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
344866
344915
|
version2 = maxVersion;
|
|
344867
344916
|
}
|
|
344868
344917
|
}
|
|
344869
|
-
if (!forceReinstall && version2 === "1.84.
|
|
344918
|
+
if (!forceReinstall && version2 === "1.84.1" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
344870
344919
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
344871
344920
|
logEvent("tengu_native_update_complete", {
|
|
344872
344921
|
latency_ms: Date.now() - startTime,
|
|
@@ -438621,7 +438670,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
438621
438670
|
const client = new Client({
|
|
438622
438671
|
name: "ur",
|
|
438623
438672
|
title: "UR",
|
|
438624
|
-
version: "1.84.
|
|
438673
|
+
version: "1.84.1",
|
|
438625
438674
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
438626
438675
|
websiteUrl: PRODUCT_URL
|
|
438627
438676
|
}, {
|
|
@@ -438978,7 +439027,7 @@ var init_client2 = __esm(() => {
|
|
|
438978
439027
|
const client = new Client({
|
|
438979
439028
|
name: "ur",
|
|
438980
439029
|
title: "UR",
|
|
438981
|
-
version: "1.84.
|
|
439030
|
+
version: "1.84.1",
|
|
438982
439031
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
438983
439032
|
websiteUrl: PRODUCT_URL
|
|
438984
439033
|
}, {
|
|
@@ -449849,7 +449898,7 @@ function Feedback({
|
|
|
449849
449898
|
platform: env2.platform,
|
|
449850
449899
|
gitRepo: envInfo.isGit,
|
|
449851
449900
|
terminal: env2.terminal,
|
|
449852
|
-
version: "1.84.
|
|
449901
|
+
version: "1.84.1",
|
|
449853
449902
|
transcript: normalizeMessagesForAPI(messages),
|
|
449854
449903
|
errors: sanitizedErrors,
|
|
449855
449904
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -450039,7 +450088,7 @@ function Feedback({
|
|
|
450039
450088
|
", ",
|
|
450040
450089
|
env2.terminal,
|
|
450041
450090
|
", v",
|
|
450042
|
-
"1.84.
|
|
450091
|
+
"1.84.1"
|
|
450043
450092
|
]
|
|
450044
450093
|
}, undefined, true, undefined, this)
|
|
450045
450094
|
]
|
|
@@ -450145,7 +450194,7 @@ ${sanitizedDescription}
|
|
|
450145
450194
|
` + `**Environment Info**
|
|
450146
450195
|
` + `- Platform: ${env2.platform}
|
|
450147
450196
|
` + `- Terminal: ${env2.terminal}
|
|
450148
|
-
` + `- Version: ${"1.84.
|
|
450197
|
+
` + `- Version: ${"1.84.1"}
|
|
450149
450198
|
` + `- Feedback ID: ${feedbackId}
|
|
450150
450199
|
` + `
|
|
450151
450200
|
**Errors**
|
|
@@ -453255,7 +453304,7 @@ function buildPrimarySection() {
|
|
|
453255
453304
|
}, undefined, false, undefined, this);
|
|
453256
453305
|
return [{
|
|
453257
453306
|
label: "Version",
|
|
453258
|
-
value: "1.84.
|
|
453307
|
+
value: "1.84.1"
|
|
453259
453308
|
}, {
|
|
453260
453309
|
label: "Session name",
|
|
453261
453310
|
value: nameValue
|
|
@@ -454219,7 +454268,8 @@ function ModelPicker({
|
|
|
454219
454268
|
const focusedEffortLevels = focusedModel ? getSupportedEffortLevelsForModel(focusedModel, currentProvider) : [];
|
|
454220
454269
|
const focusedEffortLevelLabels = focusedModel ? getSupportedEffortLevelLabelsForModel(focusedModel, currentProvider) : [];
|
|
454221
454270
|
const focusedSupportsEffort = focusedModel ? modelSupportsEffort(focusedModel, currentProvider) : false;
|
|
454222
|
-
const
|
|
454271
|
+
const focusedAdvertisesThinking = focusedModel ? modelSupportsThinking(focusedModel, currentProvider) : false;
|
|
454272
|
+
const focusedSupportsThinking = focusedModel ? focusedAdvertisesThinking && providerSupportsThinkingToggle(currentProvider) : false;
|
|
454223
454273
|
const focusedDefaultEffort = getDefaultEffortLevelForOption(focusedValue, currentProvider);
|
|
454224
454274
|
const displayEffort = focusedModel ? resolveProviderEffortLevel(focusedModel, effort ?? focusedDefaultEffort, currentProvider) ?? focusedDefaultEffort : focusedDefaultEffort;
|
|
454225
454275
|
const handleFocus = (value) => {
|
|
@@ -454471,7 +454521,7 @@ function ModelPicker({
|
|
|
454471
454521
|
effort: undefined
|
|
454472
454522
|
}, undefined, false, undefined, this),
|
|
454473
454523
|
" ",
|
|
454474
|
-
focusedSupportsThinking ? "
|
|
454524
|
+
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
454525
|
focusedModelName ? ` for ${focusedModelName}` : "",
|
|
454476
454526
|
effortCapabilityLoading ? " \xB7 checking provider\u2026" : ""
|
|
454477
454527
|
]
|
|
@@ -454556,7 +454606,7 @@ function getAdaptiveModelVisibleCount(optionCount, terminalRows) {
|
|
|
454556
454606
|
return Math.min(Math.floor(optionCount), availableRows);
|
|
454557
454607
|
}
|
|
454558
454608
|
function providerNeedsFocusedEffortProbe(provider, focusedModel) {
|
|
454559
|
-
return (provider === "llama.cpp" || provider === "ollama") && Boolean(focusedModel);
|
|
454609
|
+
return (provider === "llama.cpp" || provider === "ollama" || provider === "vllm") && Boolean(focusedModel);
|
|
454560
454610
|
}
|
|
454561
454611
|
function resolveOptionModel(value) {
|
|
454562
454612
|
if (!value)
|
|
@@ -456768,7 +456818,7 @@ function Config({
|
|
|
456768
456818
|
}
|
|
456769
456819
|
}, undefined, false, undefined, this)
|
|
456770
456820
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime176.jsxDEV(ChannelDowngradeDialog, {
|
|
456771
|
-
currentVersion: "1.84.
|
|
456821
|
+
currentVersion: "1.84.1",
|
|
456772
456822
|
onChoice: (choice) => {
|
|
456773
456823
|
setShowSubmenu(null);
|
|
456774
456824
|
setTabsHidden(false);
|
|
@@ -456780,7 +456830,7 @@ function Config({
|
|
|
456780
456830
|
autoUpdatesChannel: "stable"
|
|
456781
456831
|
};
|
|
456782
456832
|
if (choice === "stay") {
|
|
456783
|
-
newSettings.minimumVersion = "1.84.
|
|
456833
|
+
newSettings.minimumVersion = "1.84.1";
|
|
456784
456834
|
}
|
|
456785
456835
|
updateSettingsForSource("userSettings", newSettings);
|
|
456786
456836
|
setSettingsData((prev_27) => ({
|
|
@@ -465097,7 +465147,7 @@ function HelpV2(t0) {
|
|
|
465097
465147
|
let t6;
|
|
465098
465148
|
if ($2[31] !== tabs) {
|
|
465099
465149
|
t6 = /* @__PURE__ */ jsx_dev_runtime203.jsxDEV(Tabs, {
|
|
465100
|
-
title: `UR v${"1.84.
|
|
465150
|
+
title: `UR v${"1.84.1"}`,
|
|
465101
465151
|
color: "professionalBlue",
|
|
465102
465152
|
defaultTab: "general",
|
|
465103
465153
|
children: tabs
|
|
@@ -466031,7 +466081,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
466031
466081
|
async function handleInitialize(options2) {
|
|
466032
466082
|
return {
|
|
466033
466083
|
name: "UR",
|
|
466034
|
-
version: "1.84.
|
|
466084
|
+
version: "1.84.1",
|
|
466035
466085
|
protocolVersion: "0.1.0",
|
|
466036
466086
|
workspaceRoot: options2.cwd,
|
|
466037
466087
|
capabilities: {
|
|
@@ -483164,7 +483214,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
483164
483214
|
return [];
|
|
483165
483215
|
}
|
|
483166
483216
|
}
|
|
483167
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.84.
|
|
483217
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.84.1") {
|
|
483168
483218
|
if (process.env.USER_TYPE === "ant") {
|
|
483169
483219
|
const changelog = "";
|
|
483170
483220
|
if (changelog) {
|
|
@@ -483191,7 +483241,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.84.0")
|
|
|
483191
483241
|
releaseNotes
|
|
483192
483242
|
};
|
|
483193
483243
|
}
|
|
483194
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.84.
|
|
483244
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.84.1") {
|
|
483195
483245
|
if (process.env.USER_TYPE === "ant") {
|
|
483196
483246
|
const changelog = "";
|
|
483197
483247
|
if (changelog) {
|
|
@@ -486099,7 +486149,7 @@ function getRecentActivitySync() {
|
|
|
486099
486149
|
return cachedActivity;
|
|
486100
486150
|
}
|
|
486101
486151
|
function getLogoDisplayData() {
|
|
486102
|
-
const version2 = process.env.DEMO_VERSION ?? "1.84.
|
|
486152
|
+
const version2 = process.env.DEMO_VERSION ?? "1.84.1";
|
|
486103
486153
|
const serverUrl = getDirectConnectServerUrl();
|
|
486104
486154
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
486105
486155
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -486987,7 +487037,7 @@ function LogoV2() {
|
|
|
486987
487037
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
486988
487038
|
t2 = () => {
|
|
486989
487039
|
const currentConfig = getGlobalConfig();
|
|
486990
|
-
if (currentConfig.lastReleaseNotesSeen === "1.84.
|
|
487040
|
+
if (currentConfig.lastReleaseNotesSeen === "1.84.1") {
|
|
486991
487041
|
return;
|
|
486992
487042
|
}
|
|
486993
487043
|
saveGlobalConfig(_temp327);
|
|
@@ -487675,12 +487725,12 @@ function LogoV2() {
|
|
|
487675
487725
|
return t41;
|
|
487676
487726
|
}
|
|
487677
487727
|
function _temp327(current) {
|
|
487678
|
-
if (current.lastReleaseNotesSeen === "1.84.
|
|
487728
|
+
if (current.lastReleaseNotesSeen === "1.84.1") {
|
|
487679
487729
|
return current;
|
|
487680
487730
|
}
|
|
487681
487731
|
return {
|
|
487682
487732
|
...current,
|
|
487683
|
-
lastReleaseNotesSeen: "1.84.
|
|
487733
|
+
lastReleaseNotesSeen: "1.84.1"
|
|
487684
487734
|
};
|
|
487685
487735
|
}
|
|
487686
487736
|
function _temp240(s_0) {
|
|
@@ -503773,7 +503823,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
503773
503823
|
if (spec.name !== specName) {
|
|
503774
503824
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
503775
503825
|
}
|
|
503776
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.84.
|
|
503826
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.84.1" : "1.84.1");
|
|
503777
503827
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
503778
503828
|
throw new Error("invalid ur-agent package version");
|
|
503779
503829
|
}
|
|
@@ -504769,7 +504819,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
504769
504819
|
path: ".github/workflows/ur.yml",
|
|
504770
504820
|
root: "project",
|
|
504771
504821
|
content: compileAgenticCiWorkflow("default", {
|
|
504772
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.84.
|
|
504822
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.84.1" : "1.84.1"
|
|
504773
504823
|
})
|
|
504774
504824
|
},
|
|
504775
504825
|
{
|
|
@@ -504832,7 +504882,7 @@ function value(tokens, flag) {
|
|
|
504832
504882
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
504833
504883
|
}
|
|
504834
504884
|
function cliVersion() {
|
|
504835
|
-
return typeof MACRO !== "undefined" ? "1.84.
|
|
504885
|
+
return typeof MACRO !== "undefined" ? "1.84.1" : "1.84.1";
|
|
504836
504886
|
}
|
|
504837
504887
|
function workflowPath(cwd2) {
|
|
504838
504888
|
return join156(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -505741,7 +505791,7 @@ function formatA2AV1AgentCard(options2 = {}, pretty = true) {
|
|
|
505741
505791
|
var urVersion, researchSnapshotDate = "2026-08-10", coverage2, priorityRoadmap;
|
|
505742
505792
|
var init_trends = __esm(() => {
|
|
505743
505793
|
init_a2aCardSignature();
|
|
505744
|
-
urVersion = typeof MACRO !== "undefined" ? "1.84.
|
|
505794
|
+
urVersion = typeof MACRO !== "undefined" ? "1.84.1" : "1.84.1";
|
|
505745
505795
|
coverage2 = [
|
|
505746
505796
|
{
|
|
505747
505797
|
id: "local-runtime",
|
|
@@ -511474,7 +511524,7 @@ function createAcpStdioApp(deps) {
|
|
|
511474
511524
|
}
|
|
511475
511525
|
},
|
|
511476
511526
|
authMethods: [],
|
|
511477
|
-
agentInfo: { name: "UR-Nexus", version: "1.84.
|
|
511527
|
+
agentInfo: { name: "UR-Nexus", version: "1.84.1" }
|
|
511478
511528
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
511479
511529
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
511480
511530
|
await runtime2.announce({
|
|
@@ -511571,7 +511621,7 @@ function createAcpStdioAgent(deps) {
|
|
|
511571
511621
|
}
|
|
511572
511622
|
},
|
|
511573
511623
|
authMethods: [],
|
|
511574
|
-
agentInfo: { name: "UR-Nexus", version: "1.84.
|
|
511624
|
+
agentInfo: { name: "UR-Nexus", version: "1.84.1" }
|
|
511575
511625
|
});
|
|
511576
511626
|
return;
|
|
511577
511627
|
case "authenticate":
|
|
@@ -725574,7 +725624,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
725574
725624
|
smapsRollup,
|
|
725575
725625
|
platform: process.platform,
|
|
725576
725626
|
nodeVersion: process.version,
|
|
725577
|
-
ccVersion: "1.84.
|
|
725627
|
+
ccVersion: "1.84.1"
|
|
725578
725628
|
};
|
|
725579
725629
|
}
|
|
725580
725630
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -726163,7 +726213,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
726163
726213
|
var call153 = async () => {
|
|
726164
726214
|
return {
|
|
726165
726215
|
type: "text",
|
|
726166
|
-
value: "1.84.
|
|
726216
|
+
value: "1.84.1"
|
|
726167
726217
|
};
|
|
726168
726218
|
}, version2, version_default;
|
|
726169
726219
|
var init_version = __esm(() => {
|
|
@@ -729269,7 +729319,7 @@ function ProviderFirstModelPicker({
|
|
|
729269
729319
|
}, [selectedProvider, modelReloadToken]);
|
|
729270
729320
|
import_react183.useEffect(() => {
|
|
729271
729321
|
const capabilityProvider = selectedProvider?.value;
|
|
729272
|
-
if (capabilityProvider !== "llama.cpp" && capabilityProvider !== "ollama" || !focusedModelValue) {
|
|
729322
|
+
if (capabilityProvider !== "llama.cpp" && capabilityProvider !== "ollama" && capabilityProvider !== "vllm" || !focusedModelValue) {
|
|
729273
729323
|
setEffortCapabilityLoading(false);
|
|
729274
729324
|
setEffortCapabilityWarning(null);
|
|
729275
729325
|
return;
|
|
@@ -729350,7 +729400,8 @@ function ProviderFirstModelPicker({
|
|
|
729350
729400
|
const focusedEffortLevels = focusedResolvedModel && focusedProviderId ? getSupportedEffortLevelsForModel(focusedResolvedModel, focusedProviderId) : [];
|
|
729351
729401
|
const focusedEffortLevelLabels = focusedResolvedModel && focusedProviderId ? getSupportedEffortLevelLabelsForModel(focusedResolvedModel, focusedProviderId) : [];
|
|
729352
729402
|
const focusedSupportsEffort = focusedResolvedModel ? modelSupportsEffort(focusedResolvedModel, focusedProviderId) : false;
|
|
729353
|
-
const
|
|
729403
|
+
const focusedAdvertisesThinking = focusedResolvedModel && focusedProviderId ? modelSupportsThinking(focusedResolvedModel, focusedProviderId) : false;
|
|
729404
|
+
const focusedSupportsThinking = focusedResolvedModel && focusedProviderId ? focusedAdvertisesThinking && providerSupportsThinkingToggle(focusedProviderId) : false;
|
|
729354
729405
|
const focusedDefaultEffort = focusedResolvedModel ? convertEffortValueToLevel(getDefaultEffortForModel(focusedResolvedModel, focusedProviderId) ?? (focusedEffortLevels.includes("high") ? "high" : focusedEffortLevels.at(-1)) ?? "high") : "high";
|
|
729355
729406
|
const displayedEffort = focusedResolvedModel ? resolveProviderEffortLevel(focusedResolvedModel, effort ?? focusedDefaultEffort, focusedProviderId) ?? focusedDefaultEffort : focusedDefaultEffort;
|
|
729356
729407
|
function handleProviderFocus(value2) {
|
|
@@ -730101,7 +730152,7 @@ function ProviderFirstModelPicker({
|
|
|
730101
730152
|
!focusedSupportsEffort && !effortCapabilityLoading && /* @__PURE__ */ jsx_dev_runtime333.jsxDEV(ThemedText, {
|
|
730102
730153
|
dimColor: true,
|
|
730103
730154
|
color: "subtle",
|
|
730104
|
-
children: focusedSupportsThinking ? "
|
|
730155
|
+
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
730156
|
}, undefined, false, undefined, this),
|
|
730106
730157
|
focusedSupportsThinking && /* @__PURE__ */ jsx_dev_runtime333.jsxDEV(ThemedText, {
|
|
730107
730158
|
dimColor: true,
|
|
@@ -732264,7 +732315,7 @@ function setEffortValue(effortValue, model, provider = getRuntimeProvider()) {
|
|
|
732264
732315
|
effort: effortValue
|
|
732265
732316
|
});
|
|
732266
732317
|
return {
|
|
732267
|
-
message: `Requested ${effortValue} was not sent: ${model} on ${provider}
|
|
732318
|
+
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
732319
|
thinkingUpdate: {
|
|
732269
732320
|
value: true
|
|
732270
732321
|
}
|
|
@@ -732341,7 +732392,7 @@ function showCurrentEffort(appStateEffort, model, provider = getRuntimeProvider(
|
|
|
732341
732392
|
if (!modelSupportsEffort(model, provider)) {
|
|
732342
732393
|
if (modelSupportsThinking(model, provider) && providerSupportsThinkingToggle(provider)) {
|
|
732343
732394
|
return {
|
|
732344
|
-
message: `Effort: graded
|
|
732395
|
+
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
732396
|
};
|
|
732346
732397
|
}
|
|
732347
732398
|
if (modelSupportsThinking(model, provider)) {
|
|
@@ -732367,7 +732418,7 @@ function showCurrentEffort(appStateEffort, model, provider = getRuntimeProvider(
|
|
|
732367
732418
|
if (!modelSupportsEffort(model, provider)) {
|
|
732368
732419
|
if (modelSupportsThinking(model, provider) && providerSupportsThinkingToggle(provider)) {
|
|
732369
732420
|
return {
|
|
732370
|
-
message: `Requested effort: ${effectiveValue}; not sent \u2014 ${model} on ${provider}
|
|
732421
|
+
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
732422
|
};
|
|
732372
732423
|
}
|
|
732373
732424
|
if (modelSupportsThinking(model, provider)) {
|
|
@@ -732557,7 +732608,7 @@ function capabilityMessage(enabled, model, provider) {
|
|
|
732557
732608
|
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
732609
|
}
|
|
732559
732610
|
if (!modelSupportsEffort(model, provider)) {
|
|
732560
|
-
return `${model} on ${provider}
|
|
732611
|
+
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
732612
|
}
|
|
732562
732613
|
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
732614
|
}
|
|
@@ -738037,7 +738088,7 @@ function generateHtmlReport(data, insights) {
|
|
|
738037
738088
|
</html>`;
|
|
738038
738089
|
}
|
|
738039
738090
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
738040
|
-
const version3 = typeof MACRO !== "undefined" ? "1.84.
|
|
738091
|
+
const version3 = typeof MACRO !== "undefined" ? "1.84.1" : "unknown";
|
|
738041
738092
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
738042
738093
|
const facets_summary = {
|
|
738043
738094
|
total: facets.size,
|
|
@@ -742352,7 +742403,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
742352
742403
|
init_settings2();
|
|
742353
742404
|
init_slowOperations();
|
|
742354
742405
|
init_uuid();
|
|
742355
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.84.
|
|
742406
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.84.1" : "unknown";
|
|
742356
742407
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
742357
742408
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
742358
742409
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -743567,7 +743618,7 @@ var init_filesystem = __esm(() => {
|
|
|
743567
743618
|
});
|
|
743568
743619
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
743569
743620
|
const nonce = randomBytes23(16).toString("hex");
|
|
743570
|
-
return join234(getURTempDir(), "bundled-skills", "1.84.
|
|
743621
|
+
return join234(getURTempDir(), "bundled-skills", "1.84.1", nonce);
|
|
743571
743622
|
});
|
|
743572
743623
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
743573
743624
|
});
|
|
@@ -775358,7 +775409,7 @@ function getUserAgent() {
|
|
|
775358
775409
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
775359
775410
|
const workload = getWorkload();
|
|
775360
775411
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
775361
|
-
return `ur-cli/${"1.84.
|
|
775412
|
+
return `ur-cli/${"1.84.1"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
775362
775413
|
}
|
|
775363
775414
|
function getMCPUserAgent() {
|
|
775364
775415
|
const parts = [];
|
|
@@ -775372,7 +775423,7 @@ function getMCPUserAgent() {
|
|
|
775372
775423
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
775373
775424
|
}
|
|
775374
775425
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
775375
|
-
return `ur/${"1.84.
|
|
775426
|
+
return `ur/${"1.84.1"}${suffix}`;
|
|
775376
775427
|
}
|
|
775377
775428
|
function getWebFetchUserAgent() {
|
|
775378
775429
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -792535,7 +792586,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
792535
792586
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
792536
792587
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
792537
792588
|
betas: getSdkBetas(),
|
|
792538
|
-
ur_version: "1.84.
|
|
792589
|
+
ur_version: "1.84.1",
|
|
792539
792590
|
output_style: outputStyle,
|
|
792540
792591
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
792541
792592
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -796076,7 +796127,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
796076
796127
|
function getSemverPart(version3) {
|
|
796077
796128
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
796078
796129
|
}
|
|
796079
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.84.
|
|
796130
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.84.1") {
|
|
796080
796131
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
|
|
796081
796132
|
if (!updatedVersion) {
|
|
796082
796133
|
return null;
|
|
@@ -796125,7 +796176,7 @@ function AutoUpdater({
|
|
|
796125
796176
|
return;
|
|
796126
796177
|
}
|
|
796127
796178
|
if (false) {}
|
|
796128
|
-
const currentVersion = "1.84.
|
|
796179
|
+
const currentVersion = "1.84.1";
|
|
796129
796180
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
796130
796181
|
let latestVersion = await getLatestVersion(channel);
|
|
796131
796182
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -796354,12 +796405,12 @@ function NativeAutoUpdater({
|
|
|
796354
796405
|
logEvent("tengu_native_auto_updater_start", {});
|
|
796355
796406
|
try {
|
|
796356
796407
|
const maxVersion = await getMaxVersion();
|
|
796357
|
-
if (maxVersion && gt("1.84.
|
|
796408
|
+
if (maxVersion && gt("1.84.1", maxVersion)) {
|
|
796358
796409
|
const msg = await getMaxVersionMessage();
|
|
796359
796410
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
796360
796411
|
}
|
|
796361
796412
|
const result = await installLatest(channel);
|
|
796362
|
-
const currentVersion = "1.84.
|
|
796413
|
+
const currentVersion = "1.84.1";
|
|
796363
796414
|
const latencyMs = Date.now() - startTime;
|
|
796364
796415
|
if (result.lockFailed) {
|
|
796365
796416
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -796496,17 +796547,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
796496
796547
|
const maxVersion = await getMaxVersion();
|
|
796497
796548
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
796498
796549
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
796499
|
-
if (gte("1.84.
|
|
796500
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.84.
|
|
796550
|
+
if (gte("1.84.1", maxVersion)) {
|
|
796551
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.84.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
796501
796552
|
setUpdateAvailable(false);
|
|
796502
796553
|
return;
|
|
796503
796554
|
}
|
|
796504
796555
|
latest = maxVersion;
|
|
796505
796556
|
}
|
|
796506
|
-
const hasUpdate = latest && !gte("1.84.
|
|
796557
|
+
const hasUpdate = latest && !gte("1.84.1", latest) && !shouldSkipVersion(latest);
|
|
796507
796558
|
setUpdateAvailable(!!hasUpdate);
|
|
796508
796559
|
if (hasUpdate) {
|
|
796509
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.84.
|
|
796560
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.84.1"} -> ${latest}`);
|
|
796510
796561
|
}
|
|
796511
796562
|
};
|
|
796512
796563
|
$2[0] = t1;
|
|
@@ -796540,7 +796591,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
796540
796591
|
wrap: "truncate",
|
|
796541
796592
|
children: [
|
|
796542
796593
|
"currentVersion: ",
|
|
796543
|
-
"1.84.
|
|
796594
|
+
"1.84.1"
|
|
796544
796595
|
]
|
|
796545
796596
|
}, undefined, true, undefined, this);
|
|
796546
796597
|
$2[3] = verbose;
|
|
@@ -807389,7 +807440,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
807389
807440
|
project_dir: getOriginalCwd(),
|
|
807390
807441
|
added_dirs: addedDirs
|
|
807391
807442
|
},
|
|
807392
|
-
version: "1.84.
|
|
807443
|
+
version: "1.84.1",
|
|
807393
807444
|
output_style: {
|
|
807394
807445
|
name: outputStyleName
|
|
807395
807446
|
},
|
|
@@ -807524,7 +807575,7 @@ function StatusLineInner({
|
|
|
807524
807575
|
const attention = customStatusError ?? taskAttention;
|
|
807525
807576
|
const terminalSize = React138.useContext(TerminalSizeContext);
|
|
807526
807577
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
807527
|
-
version: "1.84.
|
|
807578
|
+
version: "1.84.1",
|
|
807528
807579
|
providerLabel: providerRuntime.providerLabel,
|
|
807529
807580
|
authMode: providerRuntime.authLabel,
|
|
807530
807581
|
model: renderModelName(mainLoopModel) || providerRuntime.model || "",
|
|
@@ -819915,7 +819966,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
819915
819966
|
} catch {}
|
|
819916
819967
|
const data = {
|
|
819917
819968
|
trigger: trigger2,
|
|
819918
|
-
version: "1.84.
|
|
819969
|
+
version: "1.84.1",
|
|
819919
819970
|
platform: process.platform,
|
|
819920
819971
|
transcript,
|
|
819921
819972
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -832297,7 +832348,7 @@ function WelcomeV2() {
|
|
|
832297
832348
|
dimColor: true,
|
|
832298
832349
|
children: [
|
|
832299
832350
|
"v",
|
|
832300
|
-
"1.84.
|
|
832351
|
+
"1.84.1"
|
|
832301
832352
|
]
|
|
832302
832353
|
}, undefined, true, undefined, this)
|
|
832303
832354
|
]
|
|
@@ -833543,7 +833594,7 @@ function completeOnboarding() {
|
|
|
833543
833594
|
saveGlobalConfig((current) => ({
|
|
833544
833595
|
...current,
|
|
833545
833596
|
hasCompletedOnboarding: true,
|
|
833546
|
-
lastOnboardingVersion: "1.84.
|
|
833597
|
+
lastOnboardingVersion: "1.84.1"
|
|
833547
833598
|
}));
|
|
833548
833599
|
}
|
|
833549
833600
|
function showDialog(root2, renderer) {
|
|
@@ -838540,7 +838591,7 @@ function appendToLog(path28, message) {
|
|
|
838540
838591
|
cwd: getFsImplementation().cwd(),
|
|
838541
838592
|
userType: process.env.USER_TYPE,
|
|
838542
838593
|
sessionId: getSessionId(),
|
|
838543
|
-
version: "1.84.
|
|
838594
|
+
version: "1.84.1"
|
|
838544
838595
|
};
|
|
838545
838596
|
getLogWriter(path28).write(messageWithTimestamp);
|
|
838546
838597
|
}
|
|
@@ -842703,8 +842754,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
842703
842754
|
}
|
|
842704
842755
|
async function checkEnvLessBridgeMinVersion() {
|
|
842705
842756
|
const cfg = await getEnvLessBridgeConfig();
|
|
842706
|
-
if (cfg.min_version && lt("1.84.
|
|
842707
|
-
return `Your version of UR (${"1.84.
|
|
842757
|
+
if (cfg.min_version && lt("1.84.1", cfg.min_version)) {
|
|
842758
|
+
return `Your version of UR (${"1.84.1"}) is too old for Remote Control.
|
|
842708
842759
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
842709
842760
|
}
|
|
842710
842761
|
return null;
|
|
@@ -843178,7 +843229,7 @@ async function initBridgeCore(params) {
|
|
|
843178
843229
|
const rawApi = createBridgeApiClient({
|
|
843179
843230
|
baseUrl,
|
|
843180
843231
|
getAccessToken,
|
|
843181
|
-
runnerVersion: "1.84.
|
|
843232
|
+
runnerVersion: "1.84.1",
|
|
843182
843233
|
onDebug: logForDebugging,
|
|
843183
843234
|
onAuth401,
|
|
843184
843235
|
getTrustedDeviceToken
|
|
@@ -856620,7 +856671,7 @@ function getAgUiCapabilities() {
|
|
|
856620
856671
|
name: "UR-Nexus",
|
|
856621
856672
|
type: "ur-nexus",
|
|
856622
856673
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
856623
|
-
version: "1.84.
|
|
856674
|
+
version: "1.84.1",
|
|
856624
856675
|
provider: "UR",
|
|
856625
856676
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
856626
856677
|
},
|
|
@@ -857440,7 +857491,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
857440
857491
|
};
|
|
857441
857492
|
const server2 = new Server({
|
|
857442
857493
|
name: "ur-nexus",
|
|
857443
|
-
version: "1.84.
|
|
857494
|
+
version: "1.84.1"
|
|
857444
857495
|
}, {
|
|
857445
857496
|
capabilities: {
|
|
857446
857497
|
tools: {}
|
|
@@ -858643,7 +858694,7 @@ function thrownResponse(error61) {
|
|
|
858643
858694
|
}
|
|
858644
858695
|
async function createUrMcp2026Runtime(options5) {
|
|
858645
858696
|
const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
|
|
858646
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.84.
|
|
858697
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.84.1" }, { capabilities: {} });
|
|
858647
858698
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
858648
858699
|
try {
|
|
858649
858700
|
await server2.connect(serverTransport);
|
|
@@ -858654,7 +858705,7 @@ async function createUrMcp2026Runtime(options5) {
|
|
|
858654
858705
|
}
|
|
858655
858706
|
const runtime2 = new Mcp2026Runtime({
|
|
858656
858707
|
cwd: options5.cwd,
|
|
858657
|
-
version: "1.84.
|
|
858708
|
+
version: "1.84.1",
|
|
858658
858709
|
backend: {
|
|
858659
858710
|
listTools: async () => {
|
|
858660
858711
|
const listed = await client2.listTools();
|
|
@@ -861490,7 +861541,7 @@ async function update() {
|
|
|
861490
861541
|
logEvent("tengu_update_check", {});
|
|
861491
861542
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
861492
861543
|
const result = await checkUpgradeStatus({
|
|
861493
|
-
currentVersion: "1.84.
|
|
861544
|
+
currentVersion: "1.84.1",
|
|
861494
861545
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
861495
861546
|
installationType: diagnostic2.installationType,
|
|
861496
861547
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -862818,7 +862869,7 @@ ${customInstructions}` : customInstructions;
|
|
|
862818
862869
|
}
|
|
862819
862870
|
}
|
|
862820
862871
|
logForDiagnosticsNoPII("info", "started", {
|
|
862821
|
-
version: "1.84.
|
|
862872
|
+
version: "1.84.1",
|
|
862822
862873
|
is_native_binary: isInBundledMode()
|
|
862823
862874
|
});
|
|
862824
862875
|
registerCleanup(async () => {
|
|
@@ -863605,7 +863656,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
863605
863656
|
pendingHookMessages
|
|
863606
863657
|
}, renderAndRun);
|
|
863607
863658
|
}
|
|
863608
|
-
}).version("1.84.
|
|
863659
|
+
}).version("1.84.1 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
863609
863660
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
863610
863661
|
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
863662
|
if (canUserConfigureAdvisor()) {
|
|
@@ -864732,7 +864783,7 @@ if (false) {}
|
|
|
864732
864783
|
async function main2() {
|
|
864733
864784
|
const args = process.argv.slice(2);
|
|
864734
864785
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
864735
|
-
console.log(`${"1.84.
|
|
864786
|
+
console.log(`${"1.84.1"} (UR-Nexus)`);
|
|
864736
864787
|
return;
|
|
864737
864788
|
}
|
|
864738
864789
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|
package/docs/CONFIGURATION.md
CHANGED
|
@@ -182,15 +182,19 @@ entry. Its endpoint-scoped catalog is reused for five minutes, while Ctrl+R
|
|
|
182
182
|
forces an immediate live refresh; a failed forced refresh never silently
|
|
183
183
|
displays cached entries. API-provider secret
|
|
184
184
|
entry stays on one masked row and stores the value through the keychain flow.
|
|
185
|
-
Ollama
|
|
186
|
-
`/api/show
|
|
187
|
-
|
|
185
|
+
Ollama, llama.cpp, and vLLM capabilities are loaded lazily for the focused
|
|
186
|
+
model from `/api/show`, `/props`, and `/server_info?config_format=json`,
|
|
187
|
+
respectively, so the arrow selector reflects live runtime evidence rather than
|
|
188
|
+
a provider-wide guess. llama.cpp's current boolean support flag does not name
|
|
189
|
+
accepted levels, while a configured vLLM reasoning parser exposes its
|
|
190
|
+
documented `minimal→none|low|medium|high` mapping.
|
|
188
191
|
|
|
189
192
|
The effort row contains only capability-backed selectors UR can map to native
|
|
190
193
|
provider values. Ultra appears only when metadata advertises `ultra`, `max`,
|
|
191
194
|
`xhigh`, or an explicit alias; mappings such as `ultra→max` are shown and sent
|
|
192
|
-
exactly. Models that top out at `high`,
|
|
193
|
-
capabilities omit Ultra. See
|
|
195
|
+
exactly. Models that top out at `high`, models without an advertised
|
|
196
|
+
beyond-high value, and unknown capabilities omit Ultra. See
|
|
197
|
+
[Reasoning effort](providers.md#reasoning-effort).
|
|
194
198
|
|
|
195
199
|
Boolean-thinking models on runtimes with a native toggle expose a two-state
|
|
196
200
|
control instead: Left selects off, Right selects on, and `t` toggles in
|
package/docs/VALIDATION.md
CHANGED
|
@@ -19,7 +19,7 @@ You need:
|
|
|
19
19
|
|
|
20
20
|
```sh
|
|
21
21
|
ur --version
|
|
22
|
-
# expected for this release: "1.84.
|
|
22
|
+
# expected for this release: "1.84.1 (UR-Nexus)"
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
### 0.0 Redteam mode and Reverse Skills (1.81.0)
|
|
@@ -82,15 +82,18 @@ between models that top out at high, xhigh, max, and native-ultra models; the le
|
|
|
82
82
|
selected ceiling must update immediately. Models that top out at high must omit Ultra, while
|
|
83
83
|
xhigh/max entries must show `ultra→xhigh` or `ultra→max`, and the
|
|
84
84
|
confirmation must match `/effort status` and the request wire value. For
|
|
85
|
-
an Ollama model that advertises
|
|
85
|
+
an Ollama model that advertises thinking without a model-specific ladder, verify that
|
|
86
86
|
Left selects off, Right selects on, `t` toggles, and `/effort max` reports that
|
|
87
87
|
max was not sent while enabling `think: true`; `/thinking off` must produce
|
|
88
88
|
`think: false`. For
|
|
89
|
-
llama.cpp, verify focus requests
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
89
|
+
llama.cpp, verify focus requests `/props?model=<focused-id>` and that both an
|
|
90
|
+
unsupported template and a bare `supports_reasoning_effort: true` flag have no
|
|
91
|
+
graded selector unless exact levels are also returned. For vLLM, verify one
|
|
92
|
+
focus request to `/server_info?config_format=json`; a non-empty reasoning parser
|
|
93
|
+
must expose `minimal→none`, `low`, `medium`, and `high`, serialize
|
|
94
|
+
`minimal` as `reasoning_effort: "none"`, and omit Ultra. Open the OpenAI API or
|
|
95
|
+
Claude API connection flow and verify the masked `API key` label and entry
|
|
96
|
+
remain on one horizontal row.
|
|
94
97
|
|
|
95
98
|
Then ask UR to research a current topic with WebSearch and WebFetch. Expected:
|
|
96
99
|
the auxiliary request stays on the active OpenRouter model, no `modelH` error
|
package/docs/providers.md
CHANGED
|
@@ -182,8 +182,9 @@ For OpenRouter, UR preserves the live `/models` reasoning metadata and sends
|
|
|
182
182
|
the unified `reasoning.effort` request. OpenAI-compatible servers receive the
|
|
183
183
|
resolved value as `reasoning_effort`. The command confirmation, status
|
|
184
184
|
indicator, active-work spinner, SDK settings response, and provider request all
|
|
185
|
-
use the same resolved value. If a provider advertises
|
|
186
|
-
its runtime has a real native on/off mapping,
|
|
185
|
+
use the same resolved value. If a provider advertises thinking without a
|
|
186
|
+
model-specific graded ladder and its runtime has a real native on/off mapping,
|
|
187
|
+
UR does not invent a graded effort
|
|
187
188
|
selector. Use `/thinking on|off` directly;
|
|
188
189
|
in `/model`, Left selects off, Right selects on, and `t` toggles. A graded
|
|
189
190
|
`/effort` request on that model enables boolean thinking while clearly reporting
|
|
@@ -194,7 +195,8 @@ so metadata alone does not make this toggle appear and UR sends no invented para
|
|
|
194
195
|
when the provider/model advertises `ultra`, `max`, `xhigh`, or an explicit
|
|
195
196
|
provider-authored equivalent. UR shows the native mapping (for example,
|
|
196
197
|
`ultra→max`) and sends that exact wire value; it never enables Ultra for a model
|
|
197
|
-
whose graded ladder tops out at `high`,
|
|
198
|
+
whose graded ladder tops out at `high`, lacks an advertised beyond-high value,
|
|
199
|
+
or has unknown capability metadata. Arbitrary
|
|
198
200
|
labels such as `deep` still require an explicit provider alias because UR
|
|
199
201
|
cannot infer their rank.
|
|
200
202
|
|
|
@@ -209,16 +211,30 @@ the model advertises `supports_max_tokens`.
|
|
|
209
211
|
|
|
210
212
|
For Ollama, UR lazily reads the focused model's `/api/show` capabilities and
|
|
211
213
|
sends the resolved control through native `think`. A generic `thinking`
|
|
212
|
-
capability
|
|
214
|
+
capability proves thinking support but does not identify a model-specific
|
|
215
|
+
graded ladder; UR therefore exposes the verified native on/off control without
|
|
216
|
+
claiming that the model cannot also support levels. GPT-OSS uses Ollama's documented
|
|
213
217
|
`low|medium|high` ladder and does not expose Ultra. Other graded ladders and
|
|
214
218
|
Ultra aliases are used only when the endpoint explicitly returns them in model
|
|
215
|
-
reasoning metadata.
|
|
219
|
+
reasoning metadata.
|
|
220
|
+
|
|
221
|
+
For vLLM, UR lazily reads the non-generating
|
|
222
|
+
`/server_info?config_format=json` endpoint for the focused model. A configured
|
|
223
|
+
reasoning parser establishes vLLM's documented Chat Completions contract:
|
|
224
|
+
`none|low|medium|high`, displayed as `minimal→none|low|medium|high` and sent
|
|
225
|
+
through `reasoning_effort`. This discovery never launches a completion and
|
|
226
|
+
does not add Ultra. A richer provider-authored model record can add exact
|
|
227
|
+
levels or aliases. For llama.cpp, `/props` can establish that the active chat
|
|
228
|
+
template consumes reasoning effort, but the current capability flag does not
|
|
229
|
+
publish its finite accepted values; UR does not fabricate a ladder from that
|
|
230
|
+
boolean. Direct OpenAI,
|
|
216
231
|
Anthropic, and Gemini models use curated model-specific ladders from their
|
|
217
232
|
official documentation; live discovery rows are merged with those contracts.
|
|
218
233
|
See [Ollama thinking](https://docs.ollama.com/capabilities/thinking),
|
|
219
234
|
[OpenAI model guidance](https://developers.openai.com/api/docs/guides/latest-model),
|
|
220
235
|
[Claude effort](https://platform.claude.com/docs/en/build-with-claude/effort),
|
|
221
|
-
|
|
236
|
+
[Gemini thinking](https://ai.google.dev/gemini-api/docs/thinking), and
|
|
237
|
+
[vLLM reasoning outputs](https://docs.vllm.ai/en/latest/features/reasoning_outputs/).
|
|
222
238
|
|
|
223
239
|
The provider-first `/model` picker supports the same control directly: use
|
|
224
240
|
Left/Right to move through the capability-backed selectors UR can map to a
|
|
@@ -249,12 +265,13 @@ file and MCP size checks retain the local estimate rather than disabling their
|
|
|
249
265
|
limits.
|
|
250
266
|
|
|
251
267
|
For llama.cpp, `/v1/models` metadata is preserved when the server supplies it.
|
|
252
|
-
Because stock llama.cpp exposes chat-template effort support per loaded model,
|
|
253
268
|
UR also resolves the model currently under the Up/Down cursor through
|
|
254
|
-
`/props?model=<id>`.
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
269
|
+
`/props?model=<id>`. `supports_reasoning_effort` establishes template support,
|
|
270
|
+
but current llama.cpp does not expose the accepted value set through that flag,
|
|
271
|
+
so it does not by itself enable Left/Right. Exact effort metadata from the
|
|
272
|
+
model endpoint still enables the corresponding selectors and is sent unchanged
|
|
273
|
+
as `reasoning_effort`. This works with llama.cpp router/cluster mode and does
|
|
274
|
+
not assume that port 8080 limits UR to one worker.
|
|
258
275
|
|
|
259
276
|
### Provider-aware research calls
|
|
260
277
|
|
package/documentation/app.js
CHANGED
|
@@ -548,7 +548,7 @@ const slashGroups = [
|
|
|
548
548
|
{
|
|
549
549
|
title: 'Models, tools, and interop',
|
|
550
550
|
items: ['/model', '/provider', '/effort', '/thinking', '/fast', '/model-doctor', '/model-route', '/escalate', '/mcp', '/plugin', '/skills', '/skill', '/sdk', '/a2a-card'],
|
|
551
|
-
text: 'Pick providers and models, cycle only capability-backed effort selectors or provider-native
|
|
551
|
+
text: 'Pick providers and models, cycle only capability-backed effort selectors or a verified provider-native thinking toggle, inspect capabilities, manage MCP/plugin extensions, browse prompt skills with /skills, run executable workflows with /skill, and expose interop surfaces.',
|
|
552
552
|
},
|
|
553
553
|
{
|
|
554
554
|
title: 'Security operations',
|
package/documentation/index.html
CHANGED
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
<main id="content" class="content">
|
|
46
46
|
<header class="topbar">
|
|
47
47
|
<div>
|
|
48
|
-
<p class="eyebrow">Version 1.84.
|
|
48
|
+
<p class="eyebrow">Version 1.84.1</p>
|
|
49
49
|
<h1>UR-Nexus Documentation</h1>
|
|
50
50
|
<p class="lead">A practical, tutorial-style reference for installing, configuring, automating, extending, and operating UR-Nexus.</p>
|
|
51
51
|
</div>
|
|
@@ -179,8 +179,8 @@ ur config set responses.store false</code></pre>
|
|
|
179
179
|
<pre><code>/effort ultra
|
|
180
180
|
/thinking on
|
|
181
181
|
ur --model kimi-k3:cloud --effort high
|
|
182
|
-
/model # Up/Down model · Left/Right effort or
|
|
183
|
-
<p>The normalized vocabulary is <code>minimal</code>, <code>low</code>, <code>medium</code>, <code>high</code>, <code>xhigh</code>, <code>max</code>, and <code>ultra</code>; <code>/effort auto</code> clears an explicit choice. UR lists only capability-backed selectors it can map to the focused model's provider-native levels. <code>max</code> resolves to the highest supported non-Ultra tier. Ultra appears only for native <code>ultra</code>, advertised <code>max</code>/<code>xhigh</code>, or an explicit provider alias; the picker shows translations such as <code>ultra→max</code> and sends that exact provider value. Models that top out at <code>high</code>,
|
|
182
|
+
/model # Up/Down model · Left/Right effort or thinking on/off · Enter apply</code></pre>
|
|
183
|
+
<p>The normalized vocabulary is <code>minimal</code>, <code>low</code>, <code>medium</code>, <code>high</code>, <code>xhigh</code>, <code>max</code>, and <code>ultra</code>; <code>/effort auto</code> clears an explicit choice. UR lists only capability-backed selectors it can map to the focused model's provider-native levels. <code>max</code> resolves to the highest supported non-Ultra tier. Ultra appears only for native <code>ultra</code>, advertised <code>max</code>/<code>xhigh</code>, or an explicit provider alias; the picker shows translations such as <code>ultra→max</code> and sends that exact provider value. Models that top out at <code>high</code>, lack an advertised beyond-high value, or have unknown capabilities do not get Ultra. For models with thinking but no advertised graded ladder on runtimes with a native toggle, Left selects off, Right selects on, and <code>t</code> toggles; <code>/thinking on|off</code> is the direct control. A graded <code>/effort</code> request on such a model enables thinking while reporting that no graded value was sent. Focused vLLM models use non-generating <code>/server_info</code> discovery for the documented <code>minimal→none|low|medium|high</code> mapping; llama.cpp's bare support flag creates no invented ladder. Generic OpenAI-compatible runtimes receive no invented boolean field.</p>
|
|
184
184
|
</article>
|
|
185
185
|
<article>
|
|
186
186
|
<h3>OpenRouter responsive routing</h3>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "ur-inline-diffs",
|
|
3
3
|
"displayName": "UR Inline Diffs",
|
|
4
4
|
"description": "Review, apply, and reject UR inline diff bundles from .ur/ide/diffs inside VS Code.",
|
|
5
|
-
"version": "1.84.
|
|
5
|
+
"version": "1.84.1",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED