ur-agent 1.83.1 → 1.83.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 +15 -0
- package/README.md +11 -9
- package/dist/cli.js +83 -83
- package/docs/AGENT_FEATURES.md +1 -1
- package/docs/CONFIGURATION.md +9 -2
- package/docs/TROUBLESHOOTING.md +2 -2
- package/docs/USAGE.md +5 -4
- package/docs/VALIDATION.md +5 -5
- package/docs/providers.md +20 -16
- package/documentation/app.js +7 -7
- package/documentation/index.html +19 -4
- package/examples/provider_selection.md +5 -1
- package/extensions/jetbrains-ur/build.gradle.kts +1 -1
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.83.2
|
|
4
|
+
|
|
5
|
+
- Synchronized the public guides, static documentation site, examples, and
|
|
6
|
+
source-derived technical specifications with the shipped capability-backed
|
|
7
|
+
effort contract. The docs now cover the complete selector ladder, `/effort`
|
|
8
|
+
and `--effort`, Left/Right model-picker control, provider-neutral `max`, and
|
|
9
|
+
exact Ultra mappings such as `ultra→max`, while clearly excluding models that
|
|
10
|
+
top out at `high`, Boolean-thinking models, and unknown capabilities.
|
|
11
|
+
- Corrected adjacent provider documentation: provider-scoped `base_url`
|
|
12
|
+
persistence, Unsloth's provider-only inference boundary, LM Studio's enabled
|
|
13
|
+
status, and OpenRouter's five-minute endpoint cache and latency-oriented
|
|
14
|
+
request routing. Added regression coverage to keep public and technical
|
|
15
|
+
effort documentation synchronized. This release changes documentation and
|
|
16
|
+
source comments only; runtime behavior remains the 1.83.1 contract.
|
|
17
|
+
|
|
3
18
|
## 1.83.1
|
|
4
19
|
|
|
5
20
|
- Made Ultra a capability-driven, visible ceiling selector without inventing a
|
package/README.md
CHANGED
|
@@ -263,7 +263,8 @@ not fall back to Ollama unless `ollama` is the selected provider.
|
|
|
263
263
|
### Legal Provider Auth
|
|
264
264
|
|
|
265
265
|
UR-Nexus stores only safe provider preferences: provider name, model name,
|
|
266
|
-
base URL, fallback preference, and non-secret settings. API keys
|
|
266
|
+
base URL, fallback preference, and non-secret settings. API keys stay out of
|
|
267
|
+
plaintext settings and are read from the OS keychain after `ur connect` or from
|
|
267
268
|
environment variables. API, local, and OpenAI-compatible server providers are
|
|
268
269
|
UR-native runtimes and behave like Ollama: UR owns the conversation loop, tool
|
|
269
270
|
loop, errors, and output.
|
|
@@ -290,7 +291,7 @@ ur config set provider openrouter
|
|
|
290
291
|
ur config set provider unsloth
|
|
291
292
|
ur config set model qwen2.5-coder:7b
|
|
292
293
|
ur provider select-model ollama qwen2.5-coder:7b --json
|
|
293
|
-
ur config set base_url http://localhost:11434
|
|
294
|
+
ur config set base_url ollama http://localhost:11434
|
|
294
295
|
ur config set base_url llama.cpp http://localhost:9931/v1
|
|
295
296
|
ur config set provider.fallback ollama
|
|
296
297
|
```
|
|
@@ -305,7 +306,8 @@ provider before the URL to configure it without switching first, for example
|
|
|
305
306
|
provider's address independently, so switching among Ollama, LM Studio,
|
|
306
307
|
llama.cpp, vLLM, Unsloth, or another compatible endpoint restores that
|
|
307
308
|
provider's last URL automatically. Existing single-URL settings are migrated
|
|
308
|
-
to the previously active provider on the first switch
|
|
309
|
+
to the previously active provider on the first provider switch or scoped
|
|
310
|
+
base-URL write.
|
|
309
311
|
|
|
310
312
|
OpenAI API traffic uses Chat Completions by default. The Responses transport is
|
|
311
313
|
an explicit, provider-scoped opt-in with privacy-conscious defaults:
|
|
@@ -375,14 +377,14 @@ In the interactive app, `/model` is a two-step, provider-first picker:
|
|
|
375
377
|
generic `subscription` entry is an internal placeholder hidden from listings.
|
|
376
378
|
|
|
377
379
|
In the model catalog, use **Up/Down** to browse. The effort row updates to
|
|
378
|
-
the focused model's
|
|
379
|
-
|
|
380
|
+
the focused model's capability-backed selectors; use **Left/Right** to cycle
|
|
381
|
+
only values UR can map to provider-native levels before pressing Enter. `ultra` is UR's visible
|
|
380
382
|
beyond-high ceiling selector. It appears only when the provider/model
|
|
381
383
|
advertises `ultra`, `max`, `xhigh`, or an explicit equivalent, and the row
|
|
382
|
-
shows the exact mapping (for example, `ultra→max`).
|
|
383
|
-
boolean-thinking models do not get Ultra. A generic
|
|
384
|
-
|
|
385
|
-
and
|
|
384
|
+
shows the exact mapping (for example, `ultra→max`). Models whose graded
|
|
385
|
+
ladder tops out at `high`, plus boolean-thinking models, do not get Ultra. A generic
|
|
386
|
+
`max` request resolves visibly to that model's highest supported non-Ultra tier
|
|
387
|
+
(commonly `max`, `xhigh`, or `high`), and that resolved value is sent to the provider. llama.cpp models
|
|
386
388
|
are checked lazily through their model-scoped `/props` capability while the
|
|
387
389
|
cursor moves. Ollama models are checked through `/api/show`; Kimi K3 exposes
|
|
388
390
|
`low`, `high`, and `max`, and the chosen level is sent through Ollama's
|
package/dist/cli.js
CHANGED
|
@@ -115449,7 +115449,7 @@ var init_auth = __esm(() => {
|
|
|
115449
115449
|
|
|
115450
115450
|
// src/utils/userAgent.ts
|
|
115451
115451
|
function getURCodeUserAgent() {
|
|
115452
|
-
return `ur/${"1.83.
|
|
115452
|
+
return `ur/${"1.83.2"}`;
|
|
115453
115453
|
}
|
|
115454
115454
|
|
|
115455
115455
|
// src/utils/workloadContext.ts
|
|
@@ -115471,7 +115471,7 @@ function getUserAgent() {
|
|
|
115471
115471
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
115472
115472
|
const workload = getWorkload();
|
|
115473
115473
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
115474
|
-
return `ur-cli/${"1.83.
|
|
115474
|
+
return `ur-cli/${"1.83.2"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
115475
115475
|
}
|
|
115476
115476
|
function getMCPUserAgent() {
|
|
115477
115477
|
const parts = [];
|
|
@@ -115485,7 +115485,7 @@ function getMCPUserAgent() {
|
|
|
115485
115485
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
115486
115486
|
}
|
|
115487
115487
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
115488
|
-
return `ur/${"1.83.
|
|
115488
|
+
return `ur/${"1.83.2"}${suffix}`;
|
|
115489
115489
|
}
|
|
115490
115490
|
function getWebFetchUserAgent() {
|
|
115491
115491
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -115623,7 +115623,7 @@ var init_user = __esm(() => {
|
|
|
115623
115623
|
deviceId,
|
|
115624
115624
|
sessionId: getSessionId(),
|
|
115625
115625
|
email: getEmail(),
|
|
115626
|
-
appVersion: "1.83.
|
|
115626
|
+
appVersion: "1.83.2",
|
|
115627
115627
|
platform: getHostPlatformForAnalytics(),
|
|
115628
115628
|
organizationUuid,
|
|
115629
115629
|
accountUuid,
|
|
@@ -123510,7 +123510,7 @@ var init_metadata = __esm(() => {
|
|
|
123510
123510
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
123511
123511
|
WHITESPACE_REGEX = /\s+/;
|
|
123512
123512
|
getVersionBase = memoize_default(() => {
|
|
123513
|
-
const match = "1.83.
|
|
123513
|
+
const match = "1.83.2".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
123514
123514
|
return match ? match[0] : undefined;
|
|
123515
123515
|
});
|
|
123516
123516
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -123550,7 +123550,7 @@ var init_metadata = __esm(() => {
|
|
|
123550
123550
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
123551
123551
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
123552
123552
|
isURAiAuth: isURAISubscriber(),
|
|
123553
|
-
version: "1.83.
|
|
123553
|
+
version: "1.83.2",
|
|
123554
123554
|
versionBase: getVersionBase(),
|
|
123555
123555
|
buildTime: "",
|
|
123556
123556
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -124220,7 +124220,7 @@ function initialize1PEventLogging() {
|
|
|
124220
124220
|
const platform2 = getPlatform();
|
|
124221
124221
|
const attributes = {
|
|
124222
124222
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
124223
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.83.
|
|
124223
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.83.2"
|
|
124224
124224
|
};
|
|
124225
124225
|
if (platform2 === "wsl") {
|
|
124226
124226
|
const wslVersion = getWslVersion();
|
|
@@ -124248,7 +124248,7 @@ function initialize1PEventLogging() {
|
|
|
124248
124248
|
})
|
|
124249
124249
|
]
|
|
124250
124250
|
});
|
|
124251
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.83.
|
|
124251
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.83.2");
|
|
124252
124252
|
}
|
|
124253
124253
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
124254
124254
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -140456,7 +140456,7 @@ function formatA2AV1AgentCard(options = {}, pretty = true) {
|
|
|
140456
140456
|
var urVersion, researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
|
|
140457
140457
|
var init_trends = __esm(() => {
|
|
140458
140458
|
init_a2aCardSignature();
|
|
140459
|
-
urVersion = typeof MACRO !== "undefined" ? "1.83.
|
|
140459
|
+
urVersion = typeof MACRO !== "undefined" ? "1.83.2" : "1.83.2";
|
|
140460
140460
|
coverage = [
|
|
140461
140461
|
{
|
|
140462
140462
|
id: "local-runtime",
|
|
@@ -156221,7 +156221,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
156221
156221
|
if (!isAttributionHeaderEnabled()) {
|
|
156222
156222
|
return "";
|
|
156223
156223
|
}
|
|
156224
|
-
const version2 = `${"1.83.
|
|
156224
|
+
const version2 = `${"1.83.2"}.${fingerprint}`;
|
|
156225
156225
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
156226
156226
|
const cch = "";
|
|
156227
156227
|
const workload = getWorkload();
|
|
@@ -206603,7 +206603,7 @@ function getTelemetryAttributes() {
|
|
|
206603
206603
|
attributes["session.id"] = sessionId;
|
|
206604
206604
|
}
|
|
206605
206605
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
206606
|
-
attributes["app.version"] = "1.83.
|
|
206606
|
+
attributes["app.version"] = "1.83.2";
|
|
206607
206607
|
}
|
|
206608
206608
|
const oauthAccount = getOauthAccountInfo();
|
|
206609
206609
|
if (oauthAccount) {
|
|
@@ -206951,7 +206951,7 @@ var init_betaSessionTracing = __esm(() => {
|
|
|
206951
206951
|
function getInstruments() {
|
|
206952
206952
|
if (instruments)
|
|
206953
206953
|
return instruments;
|
|
206954
|
-
const meter = import_api9.metrics.getMeter("ur-agent.gen_ai", "1.83.
|
|
206954
|
+
const meter = import_api9.metrics.getMeter("ur-agent.gen_ai", "1.83.2");
|
|
206955
206955
|
instruments = {
|
|
206956
206956
|
operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
|
|
206957
206957
|
description: "GenAI operation duration.",
|
|
@@ -207049,7 +207049,7 @@ function genAiAgentAttributes() {
|
|
|
207049
207049
|
"gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
|
|
207050
207050
|
"gen_ai.provider.name": "ur",
|
|
207051
207051
|
"gen_ai.agent.name": "UR-Nexus",
|
|
207052
|
-
"gen_ai.agent.version": "1.83.
|
|
207052
|
+
"gen_ai.agent.version": "1.83.2"
|
|
207053
207053
|
};
|
|
207054
207054
|
}
|
|
207055
207055
|
function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
@@ -207070,7 +207070,7 @@ function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
|
207070
207070
|
function startGenAiWorkflowSpan(workflowName, workflowRunId) {
|
|
207071
207071
|
const attributes = genAiWorkflowAttributes(workflowName, workflowRunId);
|
|
207072
207072
|
const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
|
|
207073
|
-
return import_api9.trace.getTracer("ur-agent.gen_ai", "1.83.
|
|
207073
|
+
return import_api9.trace.getTracer("ur-agent.gen_ai", "1.83.2").startSpan(name, { kind: import_api9.SpanKind.INTERNAL, attributes });
|
|
207074
207074
|
}
|
|
207075
207075
|
function endGenAiWorkflowSpan(span, options2 = {}) {
|
|
207076
207076
|
try {
|
|
@@ -207108,7 +207108,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
|
|
|
207108
207108
|
if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
|
|
207109
207109
|
attributes["gen_ai.memory.record.count"] = options2.recordCount;
|
|
207110
207110
|
}
|
|
207111
|
-
return import_api9.trace.getTracer("ur-agent.gen_ai", "1.83.
|
|
207111
|
+
return import_api9.trace.getTracer("ur-agent.gen_ai", "1.83.2").startSpan(operation, { kind: import_api9.SpanKind.INTERNAL, attributes });
|
|
207112
207112
|
}
|
|
207113
207113
|
function endGenAiMemorySpan(span, options2 = {}) {
|
|
207114
207114
|
try {
|
|
@@ -213376,7 +213376,7 @@ async function createRuntime() {
|
|
|
213376
213376
|
bootstrapTelemetry();
|
|
213377
213377
|
const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
|
|
213378
213378
|
[import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
|
|
213379
|
-
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.83.
|
|
213379
|
+
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.83.2"
|
|
213380
213380
|
}));
|
|
213381
213381
|
const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
|
|
213382
213382
|
resource,
|
|
@@ -213409,11 +213409,11 @@ async function createRuntime() {
|
|
|
213409
213409
|
setMeterProvider(meterProvider);
|
|
213410
213410
|
setLoggerProvider(loggerProvider);
|
|
213411
213411
|
if (meterProvider) {
|
|
213412
|
-
const meter = meterProvider.getMeter("ur-agent", "1.83.
|
|
213412
|
+
const meter = meterProvider.getMeter("ur-agent", "1.83.2");
|
|
213413
213413
|
setMeter(meter, (name, options2) => meter.createCounter(name, options2));
|
|
213414
213414
|
}
|
|
213415
213415
|
if (loggerProvider) {
|
|
213416
|
-
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.83.
|
|
213416
|
+
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.83.2"));
|
|
213417
213417
|
}
|
|
213418
213418
|
if (!cleanupRegistered2) {
|
|
213419
213419
|
cleanupRegistered2 = true;
|
|
@@ -213962,7 +213962,7 @@ function isAnyTracingEnabled() {
|
|
|
213962
213962
|
return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
|
|
213963
213963
|
}
|
|
213964
213964
|
function getTracer() {
|
|
213965
|
-
return import_api31.trace.getTracer("ur-agent.gen_ai", "1.83.
|
|
213965
|
+
return import_api31.trace.getTracer("ur-agent.gen_ai", "1.83.2");
|
|
213966
213966
|
}
|
|
213967
213967
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
213968
213968
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -356488,7 +356488,7 @@ function getInstallationEnv() {
|
|
|
356488
356488
|
return;
|
|
356489
356489
|
}
|
|
356490
356490
|
function getURCodeVersion() {
|
|
356491
|
-
return "1.83.
|
|
356491
|
+
return "1.83.2";
|
|
356492
356492
|
}
|
|
356493
356493
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
356494
356494
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -367559,7 +367559,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
367559
367559
|
const client2 = new Client({
|
|
367560
367560
|
name: "ur",
|
|
367561
367561
|
title: "UR",
|
|
367562
|
-
version: "1.83.
|
|
367562
|
+
version: "1.83.2",
|
|
367563
367563
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
367564
367564
|
websiteUrl: PRODUCT_URL
|
|
367565
367565
|
}, {
|
|
@@ -367916,7 +367916,7 @@ var init_client3 = __esm(() => {
|
|
|
367916
367916
|
const client2 = new Client({
|
|
367917
367917
|
name: "ur",
|
|
367918
367918
|
title: "UR",
|
|
367919
|
-
version: "1.83.
|
|
367919
|
+
version: "1.83.2",
|
|
367920
367920
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
367921
367921
|
websiteUrl: PRODUCT_URL
|
|
367922
367922
|
}, {
|
|
@@ -428711,9 +428711,9 @@ async function assertMinVersion() {
|
|
|
428711
428711
|
if (false) {}
|
|
428712
428712
|
try {
|
|
428713
428713
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
428714
|
-
if (versionConfig.minVersion && lt("1.83.
|
|
428714
|
+
if (versionConfig.minVersion && lt("1.83.2", versionConfig.minVersion)) {
|
|
428715
428715
|
console.error(`
|
|
428716
|
-
It looks like your version of UR (${"1.83.
|
|
428716
|
+
It looks like your version of UR (${"1.83.2"}) needs an update.
|
|
428717
428717
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
428718
428718
|
|
|
428719
428719
|
To update, please run:
|
|
@@ -428929,7 +428929,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
428929
428929
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
428930
428930
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
428931
428931
|
pid: process.pid,
|
|
428932
|
-
currentVersion: "1.83.
|
|
428932
|
+
currentVersion: "1.83.2"
|
|
428933
428933
|
});
|
|
428934
428934
|
return "in_progress";
|
|
428935
428935
|
}
|
|
@@ -428938,7 +428938,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
428938
428938
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
428939
428939
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
428940
428940
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
428941
|
-
currentVersion: "1.83.
|
|
428941
|
+
currentVersion: "1.83.2"
|
|
428942
428942
|
});
|
|
428943
428943
|
console.error(`
|
|
428944
428944
|
Error: Windows NPM detected in WSL
|
|
@@ -429473,7 +429473,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
429473
429473
|
}
|
|
429474
429474
|
async function getDoctorDiagnostic() {
|
|
429475
429475
|
const installationType = await getCurrentInstallationType();
|
|
429476
|
-
const version2 = typeof MACRO !== "undefined" ? "1.83.
|
|
429476
|
+
const version2 = typeof MACRO !== "undefined" ? "1.83.2" : "unknown";
|
|
429477
429477
|
const installationPath = await getInstallationPath();
|
|
429478
429478
|
const invokedBinary = getInvokedBinary();
|
|
429479
429479
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -430408,8 +430408,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
430408
430408
|
const maxVersion = await getMaxVersion();
|
|
430409
430409
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
430410
430410
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
430411
|
-
if (gte("1.83.
|
|
430412
|
-
logForDebugging(`Native installer: current version ${"1.83.
|
|
430411
|
+
if (gte("1.83.2", maxVersion)) {
|
|
430412
|
+
logForDebugging(`Native installer: current version ${"1.83.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
430413
430413
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
430414
430414
|
latency_ms: Date.now() - startTime,
|
|
430415
430415
|
max_version: maxVersion,
|
|
@@ -430420,7 +430420,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
430420
430420
|
version2 = maxVersion;
|
|
430421
430421
|
}
|
|
430422
430422
|
}
|
|
430423
|
-
if (!forceReinstall && version2 === "1.83.
|
|
430423
|
+
if (!forceReinstall && version2 === "1.83.2" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
430424
430424
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
430425
430425
|
logEvent("tengu_native_update_complete", {
|
|
430426
430426
|
latency_ms: Date.now() - startTime,
|
|
@@ -480844,7 +480844,7 @@ var init_filesystem = __esm(() => {
|
|
|
480844
480844
|
});
|
|
480845
480845
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
480846
480846
|
const nonce = randomBytes22(16).toString("hex");
|
|
480847
|
-
return join143(getURTempDir(), "bundled-skills", "1.83.
|
|
480847
|
+
return join143(getURTempDir(), "bundled-skills", "1.83.2", nonce);
|
|
480848
480848
|
});
|
|
480849
480849
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
480850
480850
|
});
|
|
@@ -482866,7 +482866,7 @@ function Feedback({
|
|
|
482866
482866
|
platform: env2.platform,
|
|
482867
482867
|
gitRepo: envInfo.isGit,
|
|
482868
482868
|
terminal: env2.terminal,
|
|
482869
|
-
version: "1.83.
|
|
482869
|
+
version: "1.83.2",
|
|
482870
482870
|
transcript: normalizeMessagesForAPI(messages),
|
|
482871
482871
|
errors: sanitizedErrors,
|
|
482872
482872
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -483058,7 +483058,7 @@ function Feedback({
|
|
|
483058
483058
|
", ",
|
|
483059
483059
|
env2.terminal,
|
|
483060
483060
|
", v",
|
|
483061
|
-
"1.83.
|
|
483061
|
+
"1.83.2"
|
|
483062
483062
|
]
|
|
483063
483063
|
}, undefined, true, undefined, this)
|
|
483064
483064
|
]
|
|
@@ -483164,7 +483164,7 @@ ${sanitizedDescription}
|
|
|
483164
483164
|
` + `**Environment Info**
|
|
483165
483165
|
` + `- Platform: ${env2.platform}
|
|
483166
483166
|
` + `- Terminal: ${env2.terminal}
|
|
483167
|
-
` + `- Version: ${"1.83.
|
|
483167
|
+
` + `- Version: ${"1.83.2"}
|
|
483168
483168
|
` + `- Feedback ID: ${feedbackId}
|
|
483169
483169
|
` + `
|
|
483170
483170
|
**Errors**
|
|
@@ -486274,7 +486274,7 @@ function buildPrimarySection() {
|
|
|
486274
486274
|
}, undefined, false, undefined, this);
|
|
486275
486275
|
return [{
|
|
486276
486276
|
label: "Version",
|
|
486277
|
-
value: "1.83.
|
|
486277
|
+
value: "1.83.2"
|
|
486278
486278
|
}, {
|
|
486279
486279
|
label: "Session name",
|
|
486280
486280
|
value: nameValue
|
|
@@ -489790,7 +489790,7 @@ function Config({
|
|
|
489790
489790
|
}
|
|
489791
489791
|
}, undefined, false, undefined, this)
|
|
489792
489792
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime178.jsxDEV(ChannelDowngradeDialog, {
|
|
489793
|
-
currentVersion: "1.83.
|
|
489793
|
+
currentVersion: "1.83.2",
|
|
489794
489794
|
onChoice: (choice) => {
|
|
489795
489795
|
setShowSubmenu(null);
|
|
489796
489796
|
setTabsHidden(false);
|
|
@@ -489802,7 +489802,7 @@ function Config({
|
|
|
489802
489802
|
autoUpdatesChannel: "stable"
|
|
489803
489803
|
};
|
|
489804
489804
|
if (choice === "stay") {
|
|
489805
|
-
newSettings.minimumVersion = "1.83.
|
|
489805
|
+
newSettings.minimumVersion = "1.83.2";
|
|
489806
489806
|
}
|
|
489807
489807
|
updateSettingsForSource("userSettings", newSettings);
|
|
489808
489808
|
setSettingsData((prev_27) => ({
|
|
@@ -498118,7 +498118,7 @@ function HelpV2(t0) {
|
|
|
498118
498118
|
let t6;
|
|
498119
498119
|
if ($2[31] !== tabs) {
|
|
498120
498120
|
t6 = /* @__PURE__ */ jsx_dev_runtime205.jsxDEV(Tabs, {
|
|
498121
|
-
title: `UR v${"1.83.
|
|
498121
|
+
title: `UR v${"1.83.2"}`,
|
|
498122
498122
|
color: "professionalBlue",
|
|
498123
498123
|
defaultTab: "general",
|
|
498124
498124
|
children: tabs
|
|
@@ -499051,7 +499051,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
499051
499051
|
async function handleInitialize(options2) {
|
|
499052
499052
|
return {
|
|
499053
499053
|
name: "UR",
|
|
499054
|
-
version: "1.83.
|
|
499054
|
+
version: "1.83.2",
|
|
499055
499055
|
protocolVersion: "0.1.0",
|
|
499056
499056
|
workspaceRoot: options2.cwd,
|
|
499057
499057
|
capabilities: {
|
|
@@ -516152,7 +516152,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
516152
516152
|
return [];
|
|
516153
516153
|
}
|
|
516154
516154
|
}
|
|
516155
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.83.
|
|
516155
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.83.2") {
|
|
516156
516156
|
if (process.env.USER_TYPE === "ant") {
|
|
516157
516157
|
const changelog = "";
|
|
516158
516158
|
if (changelog) {
|
|
@@ -516179,7 +516179,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.83.1")
|
|
|
516179
516179
|
releaseNotes
|
|
516180
516180
|
};
|
|
516181
516181
|
}
|
|
516182
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.83.
|
|
516182
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.83.2") {
|
|
516183
516183
|
if (process.env.USER_TYPE === "ant") {
|
|
516184
516184
|
const changelog = "";
|
|
516185
516185
|
if (changelog) {
|
|
@@ -519087,7 +519087,7 @@ function getRecentActivitySync() {
|
|
|
519087
519087
|
return cachedActivity;
|
|
519088
519088
|
}
|
|
519089
519089
|
function getLogoDisplayData() {
|
|
519090
|
-
const version2 = process.env.DEMO_VERSION ?? "1.83.
|
|
519090
|
+
const version2 = process.env.DEMO_VERSION ?? "1.83.2";
|
|
519091
519091
|
const serverUrl = getDirectConnectServerUrl();
|
|
519092
519092
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd2());
|
|
519093
519093
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -519975,7 +519975,7 @@ function LogoV2() {
|
|
|
519975
519975
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
519976
519976
|
t2 = () => {
|
|
519977
519977
|
const currentConfig = getGlobalConfig();
|
|
519978
|
-
if (currentConfig.lastReleaseNotesSeen === "1.83.
|
|
519978
|
+
if (currentConfig.lastReleaseNotesSeen === "1.83.2") {
|
|
519979
519979
|
return;
|
|
519980
519980
|
}
|
|
519981
519981
|
saveGlobalConfig(_temp325);
|
|
@@ -520663,12 +520663,12 @@ function LogoV2() {
|
|
|
520663
520663
|
return t41;
|
|
520664
520664
|
}
|
|
520665
520665
|
function _temp325(current) {
|
|
520666
|
-
if (current.lastReleaseNotesSeen === "1.83.
|
|
520666
|
+
if (current.lastReleaseNotesSeen === "1.83.2") {
|
|
520667
520667
|
return current;
|
|
520668
520668
|
}
|
|
520669
520669
|
return {
|
|
520670
520670
|
...current,
|
|
520671
|
-
lastReleaseNotesSeen: "1.83.
|
|
520671
|
+
lastReleaseNotesSeen: "1.83.2"
|
|
520672
520672
|
};
|
|
520673
520673
|
}
|
|
520674
520674
|
function _temp241(s_0) {
|
|
@@ -536618,7 +536618,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
536618
536618
|
if (spec.name !== specName) {
|
|
536619
536619
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
536620
536620
|
}
|
|
536621
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.83.
|
|
536621
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.83.2" : "1.83.2");
|
|
536622
536622
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
536623
536623
|
throw new Error("invalid ur-agent package version");
|
|
536624
536624
|
}
|
|
@@ -537614,7 +537614,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
537614
537614
|
path: ".github/workflows/ur.yml",
|
|
537615
537615
|
root: "project",
|
|
537616
537616
|
content: compileAgenticCiWorkflow("default", {
|
|
537617
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.83.
|
|
537617
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.83.2" : "1.83.2"
|
|
537618
537618
|
})
|
|
537619
537619
|
},
|
|
537620
537620
|
{
|
|
@@ -537677,7 +537677,7 @@ function value(tokens, flag) {
|
|
|
537677
537677
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
537678
537678
|
}
|
|
537679
537679
|
function cliVersion() {
|
|
537680
|
-
return typeof MACRO !== "undefined" ? "1.83.
|
|
537680
|
+
return typeof MACRO !== "undefined" ? "1.83.2" : "1.83.2";
|
|
537681
537681
|
}
|
|
537682
537682
|
function workflowPath(cwd2) {
|
|
537683
537683
|
return join172(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -543533,7 +543533,7 @@ function createAcpStdioApp(deps) {
|
|
|
543533
543533
|
}
|
|
543534
543534
|
},
|
|
543535
543535
|
authMethods: [],
|
|
543536
|
-
agentInfo: { name: "UR-Nexus", version: "1.83.
|
|
543536
|
+
agentInfo: { name: "UR-Nexus", version: "1.83.2" }
|
|
543537
543537
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
543538
543538
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
543539
543539
|
await runtime2.announce({
|
|
@@ -543630,7 +543630,7 @@ function createAcpStdioAgent(deps) {
|
|
|
543630
543630
|
}
|
|
543631
543631
|
},
|
|
543632
543632
|
authMethods: [],
|
|
543633
|
-
agentInfo: { name: "UR-Nexus", version: "1.83.
|
|
543633
|
+
agentInfo: { name: "UR-Nexus", version: "1.83.2" }
|
|
543634
543634
|
});
|
|
543635
543635
|
return;
|
|
543636
543636
|
case "authenticate":
|
|
@@ -756169,7 +756169,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
756169
756169
|
smapsRollup,
|
|
756170
756170
|
platform: process.platform,
|
|
756171
756171
|
nodeVersion: process.version,
|
|
756172
|
-
ccVersion: "1.83.
|
|
756172
|
+
ccVersion: "1.83.2"
|
|
756173
756173
|
};
|
|
756174
756174
|
}
|
|
756175
756175
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -756758,7 +756758,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
756758
756758
|
var call154 = async () => {
|
|
756759
756759
|
return {
|
|
756760
756760
|
type: "text",
|
|
756761
|
-
value: "1.83.
|
|
756761
|
+
value: "1.83.2"
|
|
756762
756762
|
};
|
|
756763
756763
|
}, version2, version_default;
|
|
756764
756764
|
var init_version = __esm(() => {
|
|
@@ -768428,7 +768428,7 @@ function generateHtmlReport(data, insights) {
|
|
|
768428
768428
|
</html>`;
|
|
768429
768429
|
}
|
|
768430
768430
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
768431
|
-
const version3 = typeof MACRO !== "undefined" ? "1.83.
|
|
768431
|
+
const version3 = typeof MACRO !== "undefined" ? "1.83.2" : "unknown";
|
|
768432
768432
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
768433
768433
|
const facets_summary = {
|
|
768434
768434
|
total: facets.size,
|
|
@@ -772741,7 +772741,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
772741
772741
|
init_settings2();
|
|
772742
772742
|
init_slowOperations();
|
|
772743
772743
|
init_uuid();
|
|
772744
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.83.
|
|
772744
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.83.2" : "unknown";
|
|
772745
772745
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
772746
772746
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
772747
772747
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -774220,7 +774220,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
774220
774220
|
}
|
|
774221
774221
|
function computeFingerprintFromMessages(messages) {
|
|
774222
774222
|
const firstMessageText = extractFirstMessageText(messages);
|
|
774223
|
-
return computeFingerprint(firstMessageText, "1.83.
|
|
774223
|
+
return computeFingerprint(firstMessageText, "1.83.2");
|
|
774224
774224
|
}
|
|
774225
774225
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
774226
774226
|
var init_fingerprint = () => {};
|
|
@@ -776210,7 +776210,7 @@ async function sideQuery(opts) {
|
|
|
776210
776210
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
776211
776211
|
}
|
|
776212
776212
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
776213
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.83.
|
|
776213
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.83.2");
|
|
776214
776214
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
776215
776215
|
const systemBlocks = [
|
|
776216
776216
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -781044,7 +781044,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
781044
781044
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
781045
781045
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
781046
781046
|
betas: getSdkBetas(),
|
|
781047
|
-
ur_version: "1.83.
|
|
781047
|
+
ur_version: "1.83.2",
|
|
781048
781048
|
output_style: outputStyle,
|
|
781049
781049
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
781050
781050
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -794872,7 +794872,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
794872
794872
|
function getSemverPart(version3) {
|
|
794873
794873
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
794874
794874
|
}
|
|
794875
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.83.
|
|
794875
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.83.2") {
|
|
794876
794876
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
|
|
794877
794877
|
if (!updatedVersion) {
|
|
794878
794878
|
return null;
|
|
@@ -794921,7 +794921,7 @@ function AutoUpdater({
|
|
|
794921
794921
|
return;
|
|
794922
794922
|
}
|
|
794923
794923
|
if (false) {}
|
|
794924
|
-
const currentVersion = "1.83.
|
|
794924
|
+
const currentVersion = "1.83.2";
|
|
794925
794925
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
794926
794926
|
let latestVersion = await getLatestVersion(channel);
|
|
794927
794927
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -795150,12 +795150,12 @@ function NativeAutoUpdater({
|
|
|
795150
795150
|
logEvent("tengu_native_auto_updater_start", {});
|
|
795151
795151
|
try {
|
|
795152
795152
|
const maxVersion = await getMaxVersion();
|
|
795153
|
-
if (maxVersion && gt("1.83.
|
|
795153
|
+
if (maxVersion && gt("1.83.2", maxVersion)) {
|
|
795154
795154
|
const msg = await getMaxVersionMessage();
|
|
795155
795155
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
795156
795156
|
}
|
|
795157
795157
|
const result = await installLatest(channel);
|
|
795158
|
-
const currentVersion = "1.83.
|
|
795158
|
+
const currentVersion = "1.83.2";
|
|
795159
795159
|
const latencyMs = Date.now() - startTime;
|
|
795160
795160
|
if (result.lockFailed) {
|
|
795161
795161
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -795292,17 +795292,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
795292
795292
|
const maxVersion = await getMaxVersion();
|
|
795293
795293
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
795294
795294
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
795295
|
-
if (gte("1.83.
|
|
795296
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.83.
|
|
795295
|
+
if (gte("1.83.2", maxVersion)) {
|
|
795296
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.83.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
795297
795297
|
setUpdateAvailable(false);
|
|
795298
795298
|
return;
|
|
795299
795299
|
}
|
|
795300
795300
|
latest = maxVersion;
|
|
795301
795301
|
}
|
|
795302
|
-
const hasUpdate = latest && !gte("1.83.
|
|
795302
|
+
const hasUpdate = latest && !gte("1.83.2", latest) && !shouldSkipVersion(latest);
|
|
795303
795303
|
setUpdateAvailable(!!hasUpdate);
|
|
795304
795304
|
if (hasUpdate) {
|
|
795305
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.83.
|
|
795305
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.83.2"} -> ${latest}`);
|
|
795306
795306
|
}
|
|
795307
795307
|
};
|
|
795308
795308
|
$2[0] = t1;
|
|
@@ -795336,7 +795336,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
795336
795336
|
wrap: "truncate",
|
|
795337
795337
|
children: [
|
|
795338
795338
|
"currentVersion: ",
|
|
795339
|
-
"1.83.
|
|
795339
|
+
"1.83.2"
|
|
795340
795340
|
]
|
|
795341
795341
|
}, undefined, true, undefined, this);
|
|
795342
795342
|
$2[3] = verbose;
|
|
@@ -806189,7 +806189,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
806189
806189
|
project_dir: getOriginalCwd(),
|
|
806190
806190
|
added_dirs: addedDirs
|
|
806191
806191
|
},
|
|
806192
|
-
version: "1.83.
|
|
806192
|
+
version: "1.83.2",
|
|
806193
806193
|
output_style: {
|
|
806194
806194
|
name: outputStyleName
|
|
806195
806195
|
},
|
|
@@ -806324,7 +806324,7 @@ function StatusLineInner({
|
|
|
806324
806324
|
const attention = customStatusError ?? taskAttention;
|
|
806325
806325
|
const terminalSize = React135.useContext(TerminalSizeContext);
|
|
806326
806326
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
806327
|
-
version: "1.83.
|
|
806327
|
+
version: "1.83.2",
|
|
806328
806328
|
providerLabel: providerRuntime.providerLabel,
|
|
806329
806329
|
authMode: providerRuntime.authLabel,
|
|
806330
806330
|
model: renderModelName(mainLoopModel) || providerRuntime.model || "",
|
|
@@ -818563,7 +818563,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
818563
818563
|
} catch {}
|
|
818564
818564
|
const data = {
|
|
818565
818565
|
trigger: trigger2,
|
|
818566
|
-
version: "1.83.
|
|
818566
|
+
version: "1.83.2",
|
|
818567
818567
|
platform: process.platform,
|
|
818568
818568
|
transcript,
|
|
818569
818569
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -830933,7 +830933,7 @@ function WelcomeV2() {
|
|
|
830933
830933
|
dimColor: true,
|
|
830934
830934
|
children: [
|
|
830935
830935
|
"v",
|
|
830936
|
-
"1.83.
|
|
830936
|
+
"1.83.2"
|
|
830937
830937
|
]
|
|
830938
830938
|
}, undefined, true, undefined, this)
|
|
830939
830939
|
]
|
|
@@ -832179,7 +832179,7 @@ function completeOnboarding() {
|
|
|
832179
832179
|
saveGlobalConfig((current) => ({
|
|
832180
832180
|
...current,
|
|
832181
832181
|
hasCompletedOnboarding: true,
|
|
832182
|
-
lastOnboardingVersion: "1.83.
|
|
832182
|
+
lastOnboardingVersion: "1.83.2"
|
|
832183
832183
|
}));
|
|
832184
832184
|
}
|
|
832185
832185
|
function showDialog(root2, renderer) {
|
|
@@ -837325,7 +837325,7 @@ function appendToLog(path28, message) {
|
|
|
837325
837325
|
cwd: getFsImplementation().cwd(),
|
|
837326
837326
|
userType: process.env.USER_TYPE,
|
|
837327
837327
|
sessionId: getSessionId(),
|
|
837328
|
-
version: "1.83.
|
|
837328
|
+
version: "1.83.2"
|
|
837329
837329
|
};
|
|
837330
837330
|
getLogWriter(path28).write(messageWithTimestamp);
|
|
837331
837331
|
}
|
|
@@ -841489,8 +841489,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
841489
841489
|
}
|
|
841490
841490
|
async function checkEnvLessBridgeMinVersion() {
|
|
841491
841491
|
const cfg = await getEnvLessBridgeConfig();
|
|
841492
|
-
if (cfg.min_version && lt("1.83.
|
|
841493
|
-
return `Your version of UR (${"1.83.
|
|
841492
|
+
if (cfg.min_version && lt("1.83.2", cfg.min_version)) {
|
|
841493
|
+
return `Your version of UR (${"1.83.2"}) is too old for Remote Control.
|
|
841494
841494
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
841495
841495
|
}
|
|
841496
841496
|
return null;
|
|
@@ -841964,7 +841964,7 @@ async function initBridgeCore(params) {
|
|
|
841964
841964
|
const rawApi = createBridgeApiClient({
|
|
841965
841965
|
baseUrl,
|
|
841966
841966
|
getAccessToken,
|
|
841967
|
-
runnerVersion: "1.83.
|
|
841967
|
+
runnerVersion: "1.83.2",
|
|
841968
841968
|
onDebug: logForDebugging,
|
|
841969
841969
|
onAuth401,
|
|
841970
841970
|
getTrustedDeviceToken
|
|
@@ -855406,7 +855406,7 @@ function getAgUiCapabilities() {
|
|
|
855406
855406
|
name: "UR-Nexus",
|
|
855407
855407
|
type: "ur-nexus",
|
|
855408
855408
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
855409
|
-
version: "1.83.
|
|
855409
|
+
version: "1.83.2",
|
|
855410
855410
|
provider: "UR",
|
|
855411
855411
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
855412
855412
|
},
|
|
@@ -856227,7 +856227,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
856227
856227
|
};
|
|
856228
856228
|
const server2 = new Server({
|
|
856229
856229
|
name: "ur-nexus",
|
|
856230
|
-
version: "1.83.
|
|
856230
|
+
version: "1.83.2"
|
|
856231
856231
|
}, {
|
|
856232
856232
|
capabilities: {
|
|
856233
856233
|
tools: {}
|
|
@@ -857430,7 +857430,7 @@ function thrownResponse(error61) {
|
|
|
857430
857430
|
}
|
|
857431
857431
|
async function createUrMcp2026Runtime(options5) {
|
|
857432
857432
|
const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
|
|
857433
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.83.
|
|
857433
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.83.2" }, { capabilities: {} });
|
|
857434
857434
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
857435
857435
|
try {
|
|
857436
857436
|
await server2.connect(serverTransport);
|
|
@@ -857441,7 +857441,7 @@ async function createUrMcp2026Runtime(options5) {
|
|
|
857441
857441
|
}
|
|
857442
857442
|
const runtime2 = new Mcp2026Runtime({
|
|
857443
857443
|
cwd: options5.cwd,
|
|
857444
|
-
version: "1.83.
|
|
857444
|
+
version: "1.83.2",
|
|
857445
857445
|
backend: {
|
|
857446
857446
|
listTools: async () => {
|
|
857447
857447
|
const listed = await client2.listTools();
|
|
@@ -860277,7 +860277,7 @@ async function update() {
|
|
|
860277
860277
|
logEvent("tengu_update_check", {});
|
|
860278
860278
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
860279
860279
|
const result = await checkUpgradeStatus({
|
|
860280
|
-
currentVersion: "1.83.
|
|
860280
|
+
currentVersion: "1.83.2",
|
|
860281
860281
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
860282
860282
|
installationType: diagnostic2.installationType,
|
|
860283
860283
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -861605,7 +861605,7 @@ ${customInstructions}` : customInstructions;
|
|
|
861605
861605
|
}
|
|
861606
861606
|
}
|
|
861607
861607
|
logForDiagnosticsNoPII("info", "started", {
|
|
861608
|
-
version: "1.83.
|
|
861608
|
+
version: "1.83.2",
|
|
861609
861609
|
is_native_binary: isInBundledMode()
|
|
861610
861610
|
});
|
|
861611
861611
|
registerCleanup(async () => {
|
|
@@ -862392,7 +862392,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
862392
862392
|
pendingHookMessages
|
|
862393
862393
|
}, renderAndRun);
|
|
862394
862394
|
}
|
|
862395
|
-
}).version("1.83.
|
|
862395
|
+
}).version("1.83.2 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
862396
862396
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
862397
862397
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
862398
862398
|
if (canUserConfigureAdvisor()) {
|
|
@@ -863519,7 +863519,7 @@ if (false) {}
|
|
|
863519
863519
|
async function main2() {
|
|
863520
863520
|
const args = process.argv.slice(2);
|
|
863521
863521
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
863522
|
-
console.log(`${"1.83.
|
|
863522
|
+
console.log(`${"1.83.2"} (UR-Nexus)`);
|
|
863523
863523
|
return;
|
|
863524
863524
|
}
|
|
863525
863525
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|
package/docs/AGENT_FEATURES.md
CHANGED
|
@@ -314,7 +314,7 @@ ur auth antigravity
|
|
|
314
314
|
ur config set provider ollama
|
|
315
315
|
ur config set provider openai-compatible
|
|
316
316
|
ur config set model qwen2.5-coder:7b
|
|
317
|
-
ur config set base_url http://localhost:11434/v1
|
|
317
|
+
ur config set base_url openai-compatible http://localhost:11434/v1
|
|
318
318
|
ur config set provider.fallback ollama
|
|
319
319
|
ur upgrade
|
|
320
320
|
```
|
package/docs/CONFIGURATION.md
CHANGED
|
@@ -164,7 +164,8 @@ request; Ollama is only used when `ollama` is the selected provider.
|
|
|
164
164
|
The configured `base_url` is provider-scoped. Setting an address while vLLM is
|
|
165
165
|
active does not replace the saved Ollama, llama.cpp, or Unsloth address;
|
|
166
166
|
returning to any provider restores its own URL. Legacy `provider.baseUrl`
|
|
167
|
-
settings are migrated to the old active provider
|
|
167
|
+
settings are migrated to the old active provider on the first provider switch
|
|
168
|
+
or scoped base-URL write.
|
|
168
169
|
To configure a provider that is not active, use
|
|
169
170
|
`ur config set base_url <provider> <url>`; the success message names the target
|
|
170
171
|
provider. This applies to direct API providers and gateways (OpenAI, Anthropic,
|
|
@@ -185,6 +186,12 @@ Ollama and llama.cpp capabilities are loaded lazily for the focused model from
|
|
|
185
186
|
`/api/show` and `/props`, respectively, so the arrow selector reflects the
|
|
186
187
|
actual model rather than a provider-wide guess.
|
|
187
188
|
|
|
189
|
+
The effort row contains only capability-backed selectors UR can map to native
|
|
190
|
+
provider values. Ultra appears only when metadata advertises `ultra`, `max`,
|
|
191
|
+
`xhigh`, or an explicit alias; mappings such as `ultra→max` are shown and sent
|
|
192
|
+
exactly. Models that top out at `high`, boolean-thinking models, and unknown
|
|
193
|
+
capabilities omit Ultra. See [Reasoning effort](providers.md#reasoning-effort).
|
|
194
|
+
|
|
188
195
|
The same provider-first picker is mandatory on the first interactive run in a
|
|
189
196
|
workspace with no model in `.ur/settings.json` or `.ur/settings.local.json`.
|
|
190
197
|
The result is validated and written to the gitignored local settings file.
|
|
@@ -223,7 +230,7 @@ UNSLOTH_API_KEY=...
|
|
|
223
230
|
Unsloth is an inference-provider integration only. Start Unsloth Studio and
|
|
224
231
|
load the model outside UR, connect its generated key with `ur connect unsloth`,
|
|
225
232
|
then select a model discovered from `http://localhost:8888/v1` (or your
|
|
226
|
-
configured `base_url`). UR
|
|
233
|
+
configured `base_url`). UR sends `enable_tools: false` on every inference request; standard model
|
|
227
234
|
function calls continue through UR's normal native tool flow, while Unsloth's
|
|
228
235
|
server-side tools remain disabled so the integration stays provider-only.
|
|
229
236
|
|
package/docs/TROUBLESHOOTING.md
CHANGED
|
@@ -228,8 +228,8 @@ tool loop.
|
|
|
228
228
|
- Fix: point UR at the right endpoint.
|
|
229
229
|
|
|
230
230
|
```sh
|
|
231
|
-
ur config set base_url http://localhost:11434
|
|
232
|
-
ur provider doctor
|
|
231
|
+
ur config set base_url ollama http://localhost:11434
|
|
232
|
+
ur provider doctor ollama
|
|
233
233
|
```
|
|
234
234
|
|
|
235
235
|
Addresses are saved per provider. If the doctor probes an unexpected URL,
|
package/docs/USAGE.md
CHANGED
|
@@ -214,7 +214,7 @@ and `antigravity-cli` (`agy`) are subscription CLI providers.
|
|
|
214
214
|
|
|
215
215
|
API modes are explicit. Keys are read from a key stored via
|
|
216
216
|
`ur connect <provider>` (OS keychain) or from the environment variables
|
|
217
|
-
`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GEMINI_API_KEY`,
|
|
217
|
+
`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GEMINI_API_KEY`,
|
|
218
218
|
`OPENROUTER_API_KEY`, and `UNSLOTH_API_KEY`. Subscription CLIs are optional, never required
|
|
219
219
|
dependencies, and never used as a silent fallback. UR-Nexus never scrapes
|
|
220
220
|
browser sessions, extracts OAuth tokens, or bypasses provider restrictions.
|
|
@@ -224,9 +224,10 @@ and is inference-only: UR does not manage Unsloth and disables its server-side
|
|
|
224
224
|
tools while retaining standard function calls inside UR's guarded tool loop.
|
|
225
225
|
|
|
226
226
|
UR stores `base_url` per provider. You can set different addresses for
|
|
227
|
-
Ollama, llama.cpp, vLLM, and Unsloth once, then switch providers without
|
|
228
|
-
re-entering any of them. `ur config get base_url`
|
|
229
|
-
|
|
227
|
+
Ollama, LM Studio, llama.cpp, vLLM, and Unsloth once, then switch providers without
|
|
228
|
+
re-entering any of them. `ur config get base_url` reports the active provider's
|
|
229
|
+
saved scoped override when one exists; use `ur provider status` or
|
|
230
|
+
`ur provider doctor <provider>` to inspect the effective endpoint.
|
|
230
231
|
Use `ur config set base_url <provider> <url>` to change one provider's address
|
|
231
232
|
without making it active first. The `/model` picker offers the same endpoint
|
|
232
233
|
entry flow for a disconnected local/server provider.
|
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.83.
|
|
22
|
+
# expected for this release: "1.83.2 (UR-Nexus)"
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
### 0.0 Redteam mode and Reverse Skills (1.81.0)
|
|
@@ -72,14 +72,14 @@ changes must remain blocked. The deterministic regressions are:
|
|
|
72
72
|
bun test test/taskListGate.test.ts test/toolExecutionFinalInput.test.ts
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
### 0.0.0 OpenRouter research routing and provider UI (1.81.3)
|
|
75
|
+
### 0.0.0 OpenRouter research routing and provider UI (1.81.3; Ultra mapping updated 1.83.1)
|
|
76
76
|
|
|
77
77
|
Connect OpenRouter, run `/model`, select OpenRouter, and verify that its model
|
|
78
78
|
step shows catalog freshness plus pricing/context/tool/reasoning details. Focus
|
|
79
79
|
a reasoning model and press Left/Right; the displayed effort must change and
|
|
80
|
-
the row must list only that model's
|
|
81
|
-
between high
|
|
82
|
-
selected ceiling must update immediately.
|
|
80
|
+
the row must list only capability-backed selectors that map to that model's native levels. Move Up/Down
|
|
81
|
+
between models that top out at high, xhigh, max, and native-ultra models; the level list and
|
|
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
85
|
llama.cpp, verify focus requests
|
package/docs/providers.md
CHANGED
|
@@ -21,8 +21,9 @@ UR-Nexus never:
|
|
|
21
21
|
- claims provider support unless the official CLI/API path works
|
|
22
22
|
|
|
23
23
|
UR-Nexus stores only safe config: provider name, model name, base URL, fallback
|
|
24
|
-
preference, and non-secret preferences. API keys
|
|
25
|
-
|
|
24
|
+
preference, and non-secret preferences. API keys stay out of plaintext settings
|
|
25
|
+
and are read from the OS keychain after `ur connect` or from environment
|
|
26
|
+
variables when the user explicitly selects API mode.
|
|
26
27
|
|
|
27
28
|
## Provider matrix
|
|
28
29
|
|
|
@@ -144,7 +145,8 @@ form `ur config set base_url <provider> <url>` configures a named provider
|
|
|
144
145
|
without switching first, and the confirmation names that provider. Each
|
|
145
146
|
provider retains its own address across `/provider`, `/model`, and CLI
|
|
146
147
|
switches. The legacy single `provider.baseUrl` field remains readable and is
|
|
147
|
-
migrated to the previously active provider on the first switch
|
|
148
|
+
migrated to the previously active provider on the first provider switch or
|
|
149
|
+
scoped base-URL write.
|
|
148
150
|
|
|
149
151
|
The override is not limited to local runtimes. OpenAI API, Anthropic API,
|
|
150
152
|
Gemini API, and OpenRouter can each target a separate compatible gateway using
|
|
@@ -171,10 +173,11 @@ the previous provider.
|
|
|
171
173
|
|
|
172
174
|
### Reasoning effort
|
|
173
175
|
|
|
174
|
-
Use `/effort minimal|low|medium|high|xhigh|max|ultra|auto` inside UR. UR
|
|
175
|
-
the
|
|
176
|
-
is provider-neutral and means the selected model's
|
|
177
|
-
|
|
176
|
+
Use `/effort minimal|low|medium|high|xhigh|max|ultra|auto` inside UR. UR builds a
|
|
177
|
+
capability-backed selector set from the native graded levels advertised for the active
|
|
178
|
+
provider/model pair. `max` is provider-neutral and means the selected model's
|
|
179
|
+
highest supported non-Ultra tier: it displays and sends the matching native
|
|
180
|
+
value (commonly `max`, `xhigh`, or `high`) according to that model's contract.
|
|
178
181
|
For OpenRouter, UR preserves the live `/models` reasoning metadata and sends
|
|
179
182
|
the unified `reasoning.effort` request. OpenAI-compatible servers receive the
|
|
180
183
|
resolved value as `reasoning_effort`. The command confirmation, status
|
|
@@ -184,8 +187,8 @@ UR does not invent a graded effort selector.
|
|
|
184
187
|
`ultra` is UR's visible beyond-high ceiling selector. It is selectable only
|
|
185
188
|
when the provider/model advertises `ultra`, `max`, `xhigh`, or an explicit
|
|
186
189
|
provider-authored equivalent. UR shows the native mapping (for example,
|
|
187
|
-
`ultra→max`) and sends that exact wire value; it never enables Ultra for a
|
|
188
|
-
high
|
|
190
|
+
`ultra→max`) and sends that exact wire value; it never enables Ultra for a model
|
|
191
|
+
whose graded ladder tops out at `high`, boolean thinking, or unknown capability metadata. Arbitrary
|
|
189
192
|
labels such as `deep` still require an explicit provider alias because UR
|
|
190
193
|
cannot infer their rank.
|
|
191
194
|
|
|
@@ -202,7 +205,7 @@ See [Ollama thinking](https://docs.ollama.com/capabilities/thinking),
|
|
|
202
205
|
and [Gemini thinking](https://ai.google.dev/gemini-api/docs/thinking).
|
|
203
206
|
|
|
204
207
|
The provider-first `/model` picker supports the same control directly: use
|
|
205
|
-
Left/Right to move through the
|
|
208
|
+
Left/Right to move through the capability-backed selectors UR can map to the focused model's native levels,
|
|
206
209
|
then Enter to apply the model and effort together. OpenRouter's live catalog
|
|
207
210
|
shows pricing tier, context size, tool capability, reasoning capability, and
|
|
208
211
|
the full, untruncated model ID immediately below the focused entry. Opening the
|
|
@@ -283,12 +286,12 @@ After selecting a provider:
|
|
|
283
286
|
- Each model shows its concise capabilities; OpenRouter includes pricing,
|
|
284
287
|
context size, tool support, and reasoning support. Its list uses compact
|
|
285
288
|
model names; focus an entry to see the exact provider/model ID
|
|
286
|
-
- Model source is displayed: `live` (dynamic discovery), `cache` (
|
|
287
|
-
- OpenRouter
|
|
288
|
-
a
|
|
289
|
+
- Model source is displayed: `live` (dynamic discovery), `cache` (recent endpoint result), or `static` (predefined)
|
|
290
|
+
- OpenRouter reuses an endpoint-scoped `/models` result for five minutes; Ctrl+R
|
|
291
|
+
forces a live refresh, and a failed forced refresh never substitutes stale data
|
|
289
292
|
- Up/Down changes the focused model and immediately switches to that model's
|
|
290
|
-
|
|
291
|
-
Enter confirms both
|
|
293
|
+
capability-backed effort selectors; Left/Right cycles only values UR can map
|
|
294
|
+
to provider-native levels, and Enter confirms both
|
|
292
295
|
- Press Esc to go back and change provider
|
|
293
296
|
|
|
294
297
|
**Confirmation**
|
|
@@ -591,7 +594,7 @@ ur provider models unsloth --json
|
|
|
591
594
|
|
|
592
595
|
The default endpoint is `http://localhost:8888/v1`; override it with
|
|
593
596
|
`ur config set base_url unsloth <url>`. Authentication is mandatory. Every Unsloth
|
|
594
|
-
request sets `enable_tools: false`, including streaming requests. The model may
|
|
597
|
+
inference request sets `enable_tools: false`, including streaming requests. The model may
|
|
595
598
|
still return standard OpenAI function calls; UR handles those through the same
|
|
596
599
|
native tool flow used by its other providers. This keeps Unsloth provider-only
|
|
597
600
|
and avoids running a second tool loop inside Studio. See the official
|
|
@@ -621,6 +624,7 @@ Required variables:
|
|
|
621
624
|
| Provider | Required env vars | Optional env vars |
|
|
622
625
|
| --- | --- | --- |
|
|
623
626
|
| OpenAI-compatible | `OPENAI_COMPATIBLE_BASE_URL`, `OPENAI_COMPATIBLE_MODEL` | `OPENAI_COMPATIBLE_API_KEY` |
|
|
627
|
+
| Unsloth | `UNSLOTH_API_KEY`, `UNSLOTH_MODEL` | `UNSLOTH_BASE_URL` (defaults to `http://localhost:8888/v1`) |
|
|
624
628
|
| OpenAI | `OPENAI_API_KEY`, `OPENAI_MODEL` | `OPENAI_BASE_URL` |
|
|
625
629
|
| OpenRouter | `OPENROUTER_API_KEY`, `OPENROUTER_MODEL` | `OPENROUTER_BASE_URL` |
|
|
626
630
|
| Anthropic | `ANTHROPIC_API_KEY`, `ANTHROPIC_MODEL` | `ANTHROPIC_BASE_URL` |
|
package/documentation/app.js
CHANGED
|
@@ -67,9 +67,9 @@ const featureGroups = [
|
|
|
67
67
|
},
|
|
68
68
|
{
|
|
69
69
|
title: 'Providers and auth',
|
|
70
|
-
tags: ['subscription', 'API', 'local', 'status bar'],
|
|
71
|
-
text: 'UR-native API/local/OpenAI-compatible runtimes, first-class subscription CLI providers dispatched through the official vendor CLIs, provider doctor checks, secure API-key connect, non-secret config, fallback hints, and provider-aware status-bar output.',
|
|
72
|
-
commands: ['ur provider list', 'ur provider status', 'ur provider doctor agy', 'ur connect status', 'ur config set provider openai-api', 'ur config set provider ollama'],
|
|
70
|
+
tags: ['subscription', 'API', 'local', 'effort', 'status bar'],
|
|
71
|
+
text: 'UR-native API/local/OpenAI-compatible runtimes, provider-scoped endpoints, provider-only Unsloth inference, capability-driven reasoning effort, responsive OpenRouter routing, first-class subscription CLI providers dispatched through the official vendor CLIs, provider doctor checks, secure API-key connect, non-secret config, fallback hints, and provider-aware status-bar output.',
|
|
72
|
+
commands: ['ur provider list', 'ur provider status', 'ur provider doctor agy', 'ur connect status', 'ur config set provider openai-api', 'ur config set provider ollama', 'ur config set base_url llama.cpp http://localhost:9931/v1', '/effort ultra'],
|
|
73
73
|
},
|
|
74
74
|
{
|
|
75
75
|
title: 'Security and operations',
|
|
@@ -85,7 +85,7 @@ const commands = [
|
|
|
85
85
|
category: 'Core',
|
|
86
86
|
aliases: [],
|
|
87
87
|
summary: 'Start an interactive session; a fresh workspace must choose and locally persist a validated provider/model pair first.',
|
|
88
|
-
examples: ['ur', 'ur --model
|
|
88
|
+
examples: ['ur', 'ur --model kimi-k3:cloud --effort ultra', 'ur --continue', 'ur --resume'],
|
|
89
89
|
},
|
|
90
90
|
{
|
|
91
91
|
name: 'ur -p',
|
|
@@ -225,7 +225,7 @@ const commands = [
|
|
|
225
225
|
category: 'Ops',
|
|
226
226
|
aliases: ['settings'],
|
|
227
227
|
summary: 'Open the config panel or persist safe non-secret provider settings.',
|
|
228
|
-
examples: ['ur config', 'ur config set provider ollama', 'ur config set provider openai-api', 'ur config set provider anthropic-api', 'ur config set model qwen3-coder:480b-cloud', 'ur config set base_url http://localhost:11434/v1', 'ur config set provider.fallback ollama'],
|
|
228
|
+
examples: ['ur config', 'ur config set provider ollama', 'ur config set provider openai-api', 'ur config set provider anthropic-api', 'ur config set model qwen3-coder:480b-cloud', 'ur config set base_url ollama http://localhost:11434', 'ur config set base_url llama.cpp http://localhost:9931/v1', 'ur config set provider.fallback ollama'],
|
|
229
229
|
},
|
|
230
230
|
{
|
|
231
231
|
name: 'test-first',
|
|
@@ -547,8 +547,8 @@ const slashGroups = [
|
|
|
547
547
|
},
|
|
548
548
|
{
|
|
549
549
|
title: 'Models, tools, and interop',
|
|
550
|
-
items: ['/model', '/model-doctor', '/model-route', '/escalate', '/mcp', '/plugin', '/skills', '/skill', '/sdk', '/a2a-card'],
|
|
551
|
-
text: 'Pick models, inspect capabilities, manage MCP/plugin extensions, browse prompt skills with /skills, run executable workflows with /skill, and expose interop surfaces.',
|
|
550
|
+
items: ['/model', '/provider', '/effort', '/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 that map to provider-native values, 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.83.
|
|
48
|
+
<p class="eyebrow">Version 1.83.2</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>
|
|
@@ -165,16 +165,31 @@ ur provider doctor agy</code></pre>
|
|
|
165
165
|
<h3>API and local providers</h3>
|
|
166
166
|
<pre><code>ur config set provider openai-compatible
|
|
167
167
|
ur config set provider openai-api
|
|
168
|
-
ur config set base_url http://localhost:11434
|
|
168
|
+
ur config set base_url ollama http://localhost:11434
|
|
169
|
+
ur config set base_url llama.cpp http://localhost:9931/v1
|
|
170
|
+
ur config set provider unsloth
|
|
169
171
|
ur config set model qwen3-coder:480b-cloud
|
|
170
172
|
ur config set provider.fallback ollama
|
|
171
173
|
ur config set openai_transport responses
|
|
172
174
|
ur config set responses.store false</code></pre>
|
|
173
|
-
<p>API providers require explicit selection and read keys from a key stored via <code>ur connect</code> (OS keychain) or from environment variables. OpenAI Responses is opt-in and privacy-first; Chat Completions remains the default.
|
|
175
|
+
<p>API providers require explicit selection and read keys from a key stored via <code>ur connect</code> (OS keychain) or from environment variables. Each configurable provider keeps its own <code>base_url</code>, so switching among Ollama, LM Studio, llama.cpp, vLLM, Unsloth, and API gateways restores the matching address. OpenAI Responses is opt-in and privacy-first; Chat Completions remains the default. Unsloth is an authenticated inference provider only.</p>
|
|
176
|
+
</article>
|
|
177
|
+
<article>
|
|
178
|
+
<h3>Capability-driven reasoning effort</h3>
|
|
179
|
+
<pre><code>/effort ultra
|
|
180
|
+
ur --model kimi-k3:cloud --effort high
|
|
181
|
+
/model # Up/Down model · Left/Right effort · Enter apply</code></pre>
|
|
182
|
+
<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>, boolean-thinking models, and unknown capabilities do not get Ultra.</p>
|
|
183
|
+
</article>
|
|
184
|
+
<article>
|
|
185
|
+
<h3>OpenRouter responsive routing</h3>
|
|
186
|
+
<pre><code>ur config set provider openrouter
|
|
187
|
+
/model # cached catalog; Ctrl+R forces live refresh</code></pre>
|
|
188
|
+
<p>The endpoint-scoped model catalog is reused for five minutes, while forced refresh never substitutes stale data. Interactive requests prefer OpenRouter latency routing, a stable session ID, and provider-authored prompt-cache markers; explicit routing preferences and model variants still win.</p>
|
|
174
189
|
</article>
|
|
175
190
|
<article>
|
|
176
191
|
<h3>Status bar and updates</h3>
|
|
177
|
-
<pre><code>Ollama | llama3 | ask | main | update 1.
|
|
192
|
+
<pre><code>Ollama | llama3 | ask | main | update 1.83.2 available</code></pre>
|
|
178
193
|
<p>The interactive status bar shows only important runtime state: provider, model, mode, branch, active tasks, checks status when known, and update availability. It is hidden in CI, dumb terminals, and print mode.</p>
|
|
179
194
|
</article>
|
|
180
195
|
<article>
|
|
@@ -38,7 +38,11 @@ ur config set provider codex-cli
|
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
Inside a session, `/model` gives the same flow interactively: provider first,
|
|
41
|
-
then only that provider's models.
|
|
41
|
+
then only that provider's models. Use Up/Down to focus a model and Left/Right to
|
|
42
|
+
cycle its capability-backed effort selectors before pressing Enter. Ultra is
|
|
43
|
+
shown only when UR can map it to an advertised native `ultra`, `max`, `xhigh`,
|
|
44
|
+
or explicit alias; the picker displays the exact mapping, such as
|
|
45
|
+
`ultra→max`. Verify the active pair any time:
|
|
42
46
|
|
|
43
47
|
```sh
|
|
44
48
|
ur provider status
|
|
@@ -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.83.
|
|
5
|
+
"version": "1.83.2",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED