ur-agent 1.81.4 → 1.81.5
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 +17 -0
- package/README.md +5 -3
- package/dist/cli.js +180 -114
- package/docs/CONFIGURATION.md +3 -1
- package/docs/VALIDATION.md +1 -1
- package/docs/providers.md +9 -3
- package/documentation/index.html +1 -1
- package/extensions/jetbrains-ur/build.gradle.kts +1 -1
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.81.5
|
|
4
|
+
|
|
5
|
+
- Matched the UR welcome wordmark to the house and frame's bright, theme-aware
|
|
6
|
+
accent by applying the brand color directly to each rendered row. Added a
|
|
7
|
+
restrained dim drop shadow around the large house without changing its
|
|
8
|
+
established geometry or screen-reader output.
|
|
9
|
+
- Made OpenRouter model discovery fresh-only whenever the model catalog opens.
|
|
10
|
+
UR now fetches the current catalog on every visit and reports refresh errors
|
|
11
|
+
instead of silently showing stale cached entries.
|
|
12
|
+
- Shortened OpenRouter model labels and startup model chrome to their useful
|
|
13
|
+
model names while preserving the complete provider/model ID for requests and
|
|
14
|
+
showing it on the focused catalog entry. Duplicate short names retain a clear
|
|
15
|
+
vendor suffix.
|
|
16
|
+
- Stabilized the production-shell recovery regression under concurrent test
|
|
17
|
+
execution while continuing to verify that reclaimed task-output directories
|
|
18
|
+
are recreated without restarting UR.
|
|
19
|
+
|
|
3
20
|
## 1.81.4
|
|
4
21
|
|
|
5
22
|
- Unified the welcome-screen UR wordmark, outlined depth, decorative marks,
|
package/README.md
CHANGED
|
@@ -355,9 +355,11 @@ In the interactive app, `/model` is a two-step, provider-first picker:
|
|
|
355
355
|
|
|
356
356
|
In the model catalog, use **Up/Down** to browse and **Left/Right** to change
|
|
357
357
|
the focused model's effort before pressing Enter. OpenRouter additionally
|
|
358
|
-
shows FREE/PAID tier, context size, tool/reasoning
|
|
359
|
-
|
|
360
|
-
|
|
358
|
+
shows compact model names, FREE/PAID tier, context size, tool/reasoning
|
|
359
|
+
support, and the exact ID for the focused entry. Its catalog is fetched
|
|
360
|
+
fresh every time it opens and never falls back to a stale cached list.
|
|
361
|
+
API-key entry is masked, aligned on one row, and stored through the OS
|
|
362
|
+
keychain flow.
|
|
361
363
|
|
|
362
364
|
Model lists never cross providers: OpenAI API, Claude API, Gemini API,
|
|
363
365
|
OpenRouter, Ollama, and OpenAI-compatible local/server endpoints are separate
|
package/dist/cli.js
CHANGED
|
@@ -55200,6 +55200,14 @@ async function listModelsForProviderWithSource(providerId, options = {}) {
|
|
|
55200
55200
|
source: "live"
|
|
55201
55201
|
};
|
|
55202
55202
|
}
|
|
55203
|
+
if (options.freshOnly) {
|
|
55204
|
+
return {
|
|
55205
|
+
provider,
|
|
55206
|
+
models: [],
|
|
55207
|
+
source: "live",
|
|
55208
|
+
warning: `Live model discovery for "${provider}" returned no models. No cached catalog was shown.`
|
|
55209
|
+
};
|
|
55210
|
+
}
|
|
55203
55211
|
const cachedModels = cachedModelsByProvider.get(cacheKey) ?? [];
|
|
55204
55212
|
if (cachedModels.length > 0) {
|
|
55205
55213
|
const age = describeCacheAge(cachedModelsAgeMs(cacheKey) ?? 0);
|
|
@@ -55218,6 +55226,14 @@ async function listModelsForProviderWithSource(providerId, options = {}) {
|
|
|
55218
55226
|
warning: `Live model discovery for "${provider}" returned no models.`
|
|
55219
55227
|
};
|
|
55220
55228
|
} catch (error40) {
|
|
55229
|
+
if (options.freshOnly) {
|
|
55230
|
+
return {
|
|
55231
|
+
provider,
|
|
55232
|
+
models: [],
|
|
55233
|
+
source: "live",
|
|
55234
|
+
warning: `Live model discovery for "${provider}" failed: ${error40 instanceof Error ? error40.message : String(error40)}. No cached catalog was shown.`
|
|
55235
|
+
};
|
|
55236
|
+
}
|
|
55221
55237
|
const cachedModels = cachedModelsByProvider.get(cacheKey) ?? [];
|
|
55222
55238
|
if (cachedModels.length > 0) {
|
|
55223
55239
|
const age = describeCacheAge(cachedModelsAgeMs(cacheKey) ?? 0);
|
|
@@ -108236,7 +108252,7 @@ var init_auth = __esm(() => {
|
|
|
108236
108252
|
|
|
108237
108253
|
// src/utils/userAgent.ts
|
|
108238
108254
|
function getURCodeUserAgent() {
|
|
108239
|
-
return `ur/${"1.81.
|
|
108255
|
+
return `ur/${"1.81.5"}`;
|
|
108240
108256
|
}
|
|
108241
108257
|
|
|
108242
108258
|
// src/utils/workloadContext.ts
|
|
@@ -108258,7 +108274,7 @@ function getUserAgent() {
|
|
|
108258
108274
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
108259
108275
|
const workload = getWorkload();
|
|
108260
108276
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
108261
|
-
return `ur-cli/${"1.81.
|
|
108277
|
+
return `ur-cli/${"1.81.5"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
108262
108278
|
}
|
|
108263
108279
|
function getMCPUserAgent() {
|
|
108264
108280
|
const parts = [];
|
|
@@ -108272,7 +108288,7 @@ function getMCPUserAgent() {
|
|
|
108272
108288
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
108273
108289
|
}
|
|
108274
108290
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
108275
|
-
return `ur/${"1.81.
|
|
108291
|
+
return `ur/${"1.81.5"}${suffix}`;
|
|
108276
108292
|
}
|
|
108277
108293
|
function getWebFetchUserAgent() {
|
|
108278
108294
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -108410,7 +108426,7 @@ var init_user = __esm(() => {
|
|
|
108410
108426
|
deviceId,
|
|
108411
108427
|
sessionId: getSessionId(),
|
|
108412
108428
|
email: getEmail(),
|
|
108413
|
-
appVersion: "1.81.
|
|
108429
|
+
appVersion: "1.81.5",
|
|
108414
108430
|
platform: getHostPlatformForAnalytics(),
|
|
108415
108431
|
organizationUuid,
|
|
108416
108432
|
accountUuid,
|
|
@@ -116297,7 +116313,7 @@ var init_metadata = __esm(() => {
|
|
|
116297
116313
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
116298
116314
|
WHITESPACE_REGEX = /\s+/;
|
|
116299
116315
|
getVersionBase = memoize_default(() => {
|
|
116300
|
-
const match = "1.81.
|
|
116316
|
+
const match = "1.81.5".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
116301
116317
|
return match ? match[0] : undefined;
|
|
116302
116318
|
});
|
|
116303
116319
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -116337,7 +116353,7 @@ var init_metadata = __esm(() => {
|
|
|
116337
116353
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
116338
116354
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
116339
116355
|
isURAiAuth: isURAISubscriber(),
|
|
116340
|
-
version: "1.81.
|
|
116356
|
+
version: "1.81.5",
|
|
116341
116357
|
versionBase: getVersionBase(),
|
|
116342
116358
|
buildTime: "",
|
|
116343
116359
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -117007,7 +117023,7 @@ function initialize1PEventLogging() {
|
|
|
117007
117023
|
const platform2 = getPlatform();
|
|
117008
117024
|
const attributes = {
|
|
117009
117025
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
117010
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.81.
|
|
117026
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.81.5"
|
|
117011
117027
|
};
|
|
117012
117028
|
if (platform2 === "wsl") {
|
|
117013
117029
|
const wslVersion = getWslVersion();
|
|
@@ -117035,7 +117051,7 @@ function initialize1PEventLogging() {
|
|
|
117035
117051
|
})
|
|
117036
117052
|
]
|
|
117037
117053
|
});
|
|
117038
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.81.
|
|
117054
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.81.5");
|
|
117039
117055
|
}
|
|
117040
117056
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
117041
117057
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -127001,7 +127017,7 @@ function formatA2AAgentCard(options = {}, pretty = true) {
|
|
|
127001
127017
|
function formatA2AV1AgentCard(options = {}, pretty = true) {
|
|
127002
127018
|
return JSON.stringify(buildA2AV1AgentCard(options), null, pretty ? 2 : 0);
|
|
127003
127019
|
}
|
|
127004
|
-
var urVersion = "1.81.
|
|
127020
|
+
var urVersion = "1.81.5", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
|
|
127005
127021
|
var init_trends = __esm(() => {
|
|
127006
127022
|
init_a2aCardSignature();
|
|
127007
127023
|
coverage = [
|
|
@@ -129891,7 +129907,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
129891
129907
|
if (!isAttributionHeaderEnabled()) {
|
|
129892
129908
|
return "";
|
|
129893
129909
|
}
|
|
129894
|
-
const version2 = `${"1.81.
|
|
129910
|
+
const version2 = `${"1.81.5"}.${fingerprint}`;
|
|
129895
129911
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
129896
129912
|
const cch = "";
|
|
129897
129913
|
const workload = getWorkload();
|
|
@@ -184812,7 +184828,7 @@ var init_projectSafety = __esm(() => {
|
|
|
184812
184828
|
function getInstruments() {
|
|
184813
184829
|
if (instruments)
|
|
184814
184830
|
return instruments;
|
|
184815
|
-
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.81.
|
|
184831
|
+
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.81.5");
|
|
184816
184832
|
instruments = {
|
|
184817
184833
|
operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
|
|
184818
184834
|
description: "GenAI operation duration.",
|
|
@@ -184910,7 +184926,7 @@ function genAiAgentAttributes() {
|
|
|
184910
184926
|
"gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
|
|
184911
184927
|
"gen_ai.provider.name": "ur",
|
|
184912
184928
|
"gen_ai.agent.name": "UR-Nexus",
|
|
184913
|
-
"gen_ai.agent.version": "1.81.
|
|
184929
|
+
"gen_ai.agent.version": "1.81.5"
|
|
184914
184930
|
};
|
|
184915
184931
|
}
|
|
184916
184932
|
function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
@@ -184931,7 +184947,7 @@ function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
|
184931
184947
|
function startGenAiWorkflowSpan(workflowName, workflowRunId) {
|
|
184932
184948
|
const attributes = genAiWorkflowAttributes(workflowName, workflowRunId);
|
|
184933
184949
|
const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
|
|
184934
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.
|
|
184950
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.5").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
184935
184951
|
}
|
|
184936
184952
|
function endGenAiWorkflowSpan(span, options2 = {}) {
|
|
184937
184953
|
try {
|
|
@@ -184969,7 +184985,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
|
|
|
184969
184985
|
if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
|
|
184970
184986
|
attributes["gen_ai.memory.record.count"] = options2.recordCount;
|
|
184971
184987
|
}
|
|
184972
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.
|
|
184988
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.5").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
184973
184989
|
}
|
|
184974
184990
|
function endGenAiMemorySpan(span, options2 = {}) {
|
|
184975
184991
|
try {
|
|
@@ -278684,7 +278700,7 @@ function getTelemetryAttributes() {
|
|
|
278684
278700
|
attributes["session.id"] = sessionId;
|
|
278685
278701
|
}
|
|
278686
278702
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
278687
|
-
attributes["app.version"] = "1.81.
|
|
278703
|
+
attributes["app.version"] = "1.81.5";
|
|
278688
278704
|
}
|
|
278689
278705
|
const oauthAccount = getOauthAccountInfo();
|
|
278690
278706
|
if (oauthAccount) {
|
|
@@ -320088,7 +320104,7 @@ function getInstallationEnv() {
|
|
|
320088
320104
|
return;
|
|
320089
320105
|
}
|
|
320090
320106
|
function getURCodeVersion() {
|
|
320091
|
-
return "1.81.
|
|
320107
|
+
return "1.81.5";
|
|
320092
320108
|
}
|
|
320093
320109
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
320094
320110
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -327458,7 +327474,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
327458
327474
|
const client2 = new Client({
|
|
327459
327475
|
name: "ur",
|
|
327460
327476
|
title: "UR",
|
|
327461
|
-
version: "1.81.
|
|
327477
|
+
version: "1.81.5",
|
|
327462
327478
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
327463
327479
|
websiteUrl: PRODUCT_URL
|
|
327464
327480
|
}, {
|
|
@@ -327819,7 +327835,7 @@ var init_client5 = __esm(() => {
|
|
|
327819
327835
|
const client2 = new Client({
|
|
327820
327836
|
name: "ur",
|
|
327821
327837
|
title: "UR",
|
|
327822
|
-
version: "1.81.
|
|
327838
|
+
version: "1.81.5",
|
|
327823
327839
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
327824
327840
|
websiteUrl: PRODUCT_URL
|
|
327825
327841
|
}, {
|
|
@@ -340592,7 +340608,7 @@ async function createRuntime() {
|
|
|
340592
340608
|
bootstrapTelemetry();
|
|
340593
340609
|
const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
|
|
340594
340610
|
[import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
|
|
340595
|
-
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.81.
|
|
340611
|
+
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.81.5"
|
|
340596
340612
|
}));
|
|
340597
340613
|
const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
|
|
340598
340614
|
resource,
|
|
@@ -340625,11 +340641,11 @@ async function createRuntime() {
|
|
|
340625
340641
|
setMeterProvider(meterProvider);
|
|
340626
340642
|
setLoggerProvider(loggerProvider);
|
|
340627
340643
|
if (meterProvider) {
|
|
340628
|
-
const meter = meterProvider.getMeter("ur-agent", "1.81.
|
|
340644
|
+
const meter = meterProvider.getMeter("ur-agent", "1.81.5");
|
|
340629
340645
|
setMeter(meter, (name, options2) => meter.createCounter(name, options2));
|
|
340630
340646
|
}
|
|
340631
340647
|
if (loggerProvider) {
|
|
340632
|
-
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.81.
|
|
340648
|
+
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.81.5"));
|
|
340633
340649
|
}
|
|
340634
340650
|
if (!cleanupRegistered3) {
|
|
340635
340651
|
cleanupRegistered3 = true;
|
|
@@ -341291,9 +341307,9 @@ async function assertMinVersion() {
|
|
|
341291
341307
|
if (false) {}
|
|
341292
341308
|
try {
|
|
341293
341309
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
341294
|
-
if (versionConfig.minVersion && lt("1.81.
|
|
341310
|
+
if (versionConfig.minVersion && lt("1.81.5", versionConfig.minVersion)) {
|
|
341295
341311
|
console.error(`
|
|
341296
|
-
It looks like your version of UR (${"1.81.
|
|
341312
|
+
It looks like your version of UR (${"1.81.5"}) needs an update.
|
|
341297
341313
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
341298
341314
|
|
|
341299
341315
|
To update, please run:
|
|
@@ -341509,7 +341525,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
341509
341525
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
341510
341526
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
341511
341527
|
pid: process.pid,
|
|
341512
|
-
currentVersion: "1.81.
|
|
341528
|
+
currentVersion: "1.81.5"
|
|
341513
341529
|
});
|
|
341514
341530
|
return "in_progress";
|
|
341515
341531
|
}
|
|
@@ -341518,7 +341534,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
341518
341534
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
341519
341535
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
341520
341536
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
341521
|
-
currentVersion: "1.81.
|
|
341537
|
+
currentVersion: "1.81.5"
|
|
341522
341538
|
});
|
|
341523
341539
|
console.error(`
|
|
341524
341540
|
Error: Windows NPM detected in WSL
|
|
@@ -342053,7 +342069,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
342053
342069
|
}
|
|
342054
342070
|
async function getDoctorDiagnostic() {
|
|
342055
342071
|
const installationType = await getCurrentInstallationType();
|
|
342056
|
-
const version2 = typeof MACRO !== "undefined" ? "1.81.
|
|
342072
|
+
const version2 = typeof MACRO !== "undefined" ? "1.81.5" : "unknown";
|
|
342057
342073
|
const installationPath = await getInstallationPath();
|
|
342058
342074
|
const invokedBinary = getInvokedBinary();
|
|
342059
342075
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -342988,8 +343004,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
342988
343004
|
const maxVersion = await getMaxVersion();
|
|
342989
343005
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
342990
343006
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
342991
|
-
if (gte("1.81.
|
|
342992
|
-
logForDebugging(`Native installer: current version ${"1.81.
|
|
343007
|
+
if (gte("1.81.5", maxVersion)) {
|
|
343008
|
+
logForDebugging(`Native installer: current version ${"1.81.5"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
342993
343009
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
342994
343010
|
latency_ms: Date.now() - startTime,
|
|
342995
343011
|
max_version: maxVersion,
|
|
@@ -343000,7 +343016,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
343000
343016
|
version2 = maxVersion;
|
|
343001
343017
|
}
|
|
343002
343018
|
}
|
|
343003
|
-
if (!forceReinstall && version2 === "1.81.
|
|
343019
|
+
if (!forceReinstall && version2 === "1.81.5" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
343004
343020
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
343005
343021
|
logEvent("tengu_native_update_complete", {
|
|
343006
343022
|
latency_ms: Date.now() - startTime,
|
|
@@ -413687,7 +413703,7 @@ function isAnyTracingEnabled() {
|
|
|
413687
413703
|
return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
|
|
413688
413704
|
}
|
|
413689
413705
|
function getTracer() {
|
|
413690
|
-
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.81.
|
|
413706
|
+
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.81.5");
|
|
413691
413707
|
}
|
|
413692
413708
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
413693
413709
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -443846,7 +443862,7 @@ function Feedback({
|
|
|
443846
443862
|
platform: env2.platform,
|
|
443847
443863
|
gitRepo: envInfo.isGit,
|
|
443848
443864
|
terminal: env2.terminal,
|
|
443849
|
-
version: "1.81.
|
|
443865
|
+
version: "1.81.5",
|
|
443850
443866
|
transcript: normalizeMessagesForAPI(messages),
|
|
443851
443867
|
errors: sanitizedErrors,
|
|
443852
443868
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -444038,7 +444054,7 @@ function Feedback({
|
|
|
444038
444054
|
", ",
|
|
444039
444055
|
env2.terminal,
|
|
444040
444056
|
", v",
|
|
444041
|
-
"1.81.
|
|
444057
|
+
"1.81.5"
|
|
444042
444058
|
]
|
|
444043
444059
|
}, undefined, true, undefined, this)
|
|
444044
444060
|
]
|
|
@@ -444144,7 +444160,7 @@ ${sanitizedDescription}
|
|
|
444144
444160
|
` + `**Environment Info**
|
|
444145
444161
|
` + `- Platform: ${env2.platform}
|
|
444146
444162
|
` + `- Terminal: ${env2.terminal}
|
|
444147
|
-
` + `- Version: ${"1.81.
|
|
444163
|
+
` + `- Version: ${"1.81.5"}
|
|
444148
444164
|
` + `- Feedback ID: ${feedbackId}
|
|
444149
444165
|
` + `
|
|
444150
444166
|
**Errors**
|
|
@@ -447254,7 +447270,7 @@ function buildPrimarySection() {
|
|
|
447254
447270
|
}, undefined, false, undefined, this);
|
|
447255
447271
|
return [{
|
|
447256
447272
|
label: "Version",
|
|
447257
|
-
value: "1.81.
|
|
447273
|
+
value: "1.81.5"
|
|
447258
447274
|
}, {
|
|
447259
447275
|
label: "Session name",
|
|
447260
447276
|
value: nameValue
|
|
@@ -448046,6 +448062,36 @@ var init_EffortIndicator = __esm(() => {
|
|
|
448046
448062
|
init_effort();
|
|
448047
448063
|
});
|
|
448048
448064
|
|
|
448065
|
+
// src/utils/model/modelPresentation.ts
|
|
448066
|
+
function compactModelDisplayName(modelId, maxLength = DEFAULT_COMPACT_MODEL_LENGTH) {
|
|
448067
|
+
const trimmed = modelId.trim();
|
|
448068
|
+
const leaf2 = trimmed.split("/").filter(Boolean).at(-1) ?? trimmed;
|
|
448069
|
+
const limit = Number.isFinite(maxLength) ? Math.max(2, Math.floor(maxLength)) : DEFAULT_COMPACT_MODEL_LENGTH;
|
|
448070
|
+
if (leaf2.length <= limit)
|
|
448071
|
+
return leaf2;
|
|
448072
|
+
return `${leaf2.slice(0, limit - 1)}\u2026`;
|
|
448073
|
+
}
|
|
448074
|
+
function buildProviderModelLabels(providerId, models) {
|
|
448075
|
+
if (providerId !== "openrouter") {
|
|
448076
|
+
return new Map(models.map((model) => [model.id, model.displayName]));
|
|
448077
|
+
}
|
|
448078
|
+
const baseLabels = models.map((model) => compactModelDisplayName(model.id));
|
|
448079
|
+
const counts = new Map;
|
|
448080
|
+
for (const label of baseLabels) {
|
|
448081
|
+
const key = label.toLowerCase();
|
|
448082
|
+
counts.set(key, (counts.get(key) ?? 0) + 1);
|
|
448083
|
+
}
|
|
448084
|
+
return new Map(models.map((model, index2) => {
|
|
448085
|
+
const label = baseLabels[index2];
|
|
448086
|
+
if ((counts.get(label.toLowerCase()) ?? 0) === 1) {
|
|
448087
|
+
return [model.id, label];
|
|
448088
|
+
}
|
|
448089
|
+
const vendor = model.id.includes("/") ? model.id.split("/")[0] : "model";
|
|
448090
|
+
return [model.id, `${label} \xB7 ${vendor}`];
|
|
448091
|
+
}));
|
|
448092
|
+
}
|
|
448093
|
+
var DEFAULT_COMPACT_MODEL_LENGTH = 30;
|
|
448094
|
+
|
|
448049
448095
|
// src/components/ModelPicker.tsx
|
|
448050
448096
|
function ModelPicker({
|
|
448051
448097
|
initial,
|
|
@@ -448081,13 +448127,15 @@ function ModelPicker({
|
|
|
448081
448127
|
setPickerError(null);
|
|
448082
448128
|
listModelsForProviderWithSource(currentProvider, {
|
|
448083
448129
|
settings: effectiveSettings,
|
|
448084
|
-
signal: controller.signal
|
|
448130
|
+
signal: controller.signal,
|
|
448131
|
+
freshOnly: currentProvider === "openrouter"
|
|
448085
448132
|
}).then((result) => {
|
|
448086
448133
|
if (controller.signal.aborted)
|
|
448087
448134
|
return;
|
|
448135
|
+
const modelLabels = buildProviderModelLabels(currentProvider, result.models);
|
|
448088
448136
|
setProviderModelOptions(result.models.map((model) => ({
|
|
448089
448137
|
value: model.id,
|
|
448090
|
-
label: model.displayName,
|
|
448138
|
+
label: modelLabels.get(model.id) ?? model.displayName,
|
|
448091
448139
|
description: `${model.description} \xB7 ${result.source}`,
|
|
448092
448140
|
...model.supportedParameters !== undefined && !model.supportedParameters.includes("tools") ? { disabled: true } : {}
|
|
448093
448141
|
})));
|
|
@@ -450636,7 +450684,7 @@ function Config({
|
|
|
450636
450684
|
}
|
|
450637
450685
|
}, undefined, false, undefined, this)
|
|
450638
450686
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
|
|
450639
|
-
currentVersion: "1.81.
|
|
450687
|
+
currentVersion: "1.81.5",
|
|
450640
450688
|
onChoice: (choice) => {
|
|
450641
450689
|
setShowSubmenu(null);
|
|
450642
450690
|
setTabsHidden(false);
|
|
@@ -450648,7 +450696,7 @@ function Config({
|
|
|
450648
450696
|
autoUpdatesChannel: "stable"
|
|
450649
450697
|
};
|
|
450650
450698
|
if (choice === "stay") {
|
|
450651
|
-
newSettings.minimumVersion = "1.81.
|
|
450699
|
+
newSettings.minimumVersion = "1.81.5";
|
|
450652
450700
|
}
|
|
450653
450701
|
updateSettingsForSource("userSettings", newSettings);
|
|
450654
450702
|
setSettingsData((prev_27) => ({
|
|
@@ -458957,7 +459005,7 @@ function HelpV2(t0) {
|
|
|
458957
459005
|
let t6;
|
|
458958
459006
|
if ($2[31] !== tabs) {
|
|
458959
459007
|
t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
|
|
458960
|
-
title: `UR v${"1.81.
|
|
459008
|
+
title: `UR v${"1.81.5"}`,
|
|
458961
459009
|
color: "professionalBlue",
|
|
458962
459010
|
defaultTab: "general",
|
|
458963
459011
|
children: tabs
|
|
@@ -459890,7 +459938,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
459890
459938
|
async function handleInitialize(options2) {
|
|
459891
459939
|
return {
|
|
459892
459940
|
name: "UR",
|
|
459893
|
-
version: "1.81.
|
|
459941
|
+
version: "1.81.5",
|
|
459894
459942
|
protocolVersion: "0.1.0",
|
|
459895
459943
|
workspaceRoot: options2.cwd,
|
|
459896
459944
|
capabilities: {
|
|
@@ -476998,7 +477046,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
476998
477046
|
return [];
|
|
476999
477047
|
}
|
|
477000
477048
|
}
|
|
477001
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.
|
|
477049
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.5") {
|
|
477002
477050
|
if (process.env.USER_TYPE === "ant") {
|
|
477003
477051
|
const changelog = "";
|
|
477004
477052
|
if (changelog) {
|
|
@@ -477025,7 +477073,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.4")
|
|
|
477025
477073
|
releaseNotes
|
|
477026
477074
|
};
|
|
477027
477075
|
}
|
|
477028
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.81.
|
|
477076
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.81.5") {
|
|
477029
477077
|
if (process.env.USER_TYPE === "ant") {
|
|
477030
477078
|
const changelog = "";
|
|
477031
477079
|
if (changelog) {
|
|
@@ -479930,7 +479978,7 @@ function getRecentActivitySync() {
|
|
|
479930
479978
|
return cachedActivity;
|
|
479931
479979
|
}
|
|
479932
479980
|
function getLogoDisplayData() {
|
|
479933
|
-
const version2 = process.env.DEMO_VERSION ?? "1.81.
|
|
479981
|
+
const version2 = process.env.DEMO_VERSION ?? "1.81.5";
|
|
479934
479982
|
const serverUrl = getDirectConnectServerUrl();
|
|
479935
479983
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
479936
479984
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -480004,9 +480052,6 @@ var init_logoV2Utils = __esm(() => {
|
|
|
480004
480052
|
});
|
|
480005
480053
|
|
|
480006
480054
|
// src/components/LogoV2/URBanner.tsx
|
|
480007
|
-
function getURWordmarkGlyphTone(glyph, _row, _column) {
|
|
480008
|
-
return glyph === " " ? undefined : "ur";
|
|
480009
|
-
}
|
|
480010
480055
|
function URBanner() {
|
|
480011
480056
|
if (isScreenReaderMode()) {
|
|
480012
480057
|
return /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
|
|
@@ -480018,23 +480063,17 @@ function URBanner() {
|
|
|
480018
480063
|
alignItems: "center",
|
|
480019
480064
|
children: [
|
|
480020
480065
|
UR_WORDMARK_ROWS.map((row, i3) => /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
|
|
480021
|
-
|
|
480022
|
-
children:
|
|
480023
|
-
color: getURWordmarkGlyphTone(glyph, i3, column),
|
|
480024
|
-
children: glyph
|
|
480025
|
-
}, `${i3}:${column}`, false, undefined, this))
|
|
480066
|
+
color: "ur",
|
|
480067
|
+
children: row
|
|
480026
480068
|
}, i3, false, undefined, this)),
|
|
480027
480069
|
/* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
|
|
480028
|
-
|
|
480029
|
-
children:
|
|
480030
|
-
|
|
480031
|
-
|
|
480032
|
-
|
|
480033
|
-
|
|
480034
|
-
|
|
480035
|
-
]
|
|
480036
|
-
}, undefined, true, undefined, this)
|
|
480037
|
-
}, undefined, false, undefined, this)
|
|
480070
|
+
color: "ur",
|
|
480071
|
+
children: [
|
|
480072
|
+
"\u2726 ",
|
|
480073
|
+
UR_WORDMARK_TAGLINE,
|
|
480074
|
+
" \u2726"
|
|
480075
|
+
]
|
|
480076
|
+
}, undefined, true, undefined, this)
|
|
480038
480077
|
]
|
|
480039
480078
|
}, undefined, true, undefined, this);
|
|
480040
480079
|
}
|
|
@@ -480059,13 +480098,30 @@ function UrHouse({ size = "large" }) {
|
|
|
480059
480098
|
return /* @__PURE__ */ jsx_dev_runtime234.jsxDEV(ThemedBox_default, {
|
|
480060
480099
|
flexDirection: "column",
|
|
480061
480100
|
alignItems: "center",
|
|
480062
|
-
children:
|
|
480063
|
-
|
|
480064
|
-
|
|
480065
|
-
|
|
480066
|
-
|
|
480101
|
+
children: [
|
|
480102
|
+
rows.map((row, i3) => /* @__PURE__ */ jsx_dev_runtime234.jsxDEV(ThemedBox_default, {
|
|
480103
|
+
flexDirection: "row",
|
|
480104
|
+
children: [
|
|
480105
|
+
/* @__PURE__ */ jsx_dev_runtime234.jsxDEV(ThemedText, {
|
|
480106
|
+
color: "ur",
|
|
480107
|
+
children: row
|
|
480108
|
+
}, undefined, false, undefined, this),
|
|
480109
|
+
size === "large" && /* @__PURE__ */ jsx_dev_runtime234.jsxDEV(ThemedText, {
|
|
480110
|
+
color: "ur",
|
|
480111
|
+
dimColor: true,
|
|
480112
|
+
children: i3 >= LARGE_SHADOW_START_ROW ? "\u2591" : " "
|
|
480113
|
+
}, undefined, false, undefined, this)
|
|
480114
|
+
]
|
|
480115
|
+
}, i3, true, undefined, this)),
|
|
480116
|
+
size === "large" && /* @__PURE__ */ jsx_dev_runtime234.jsxDEV(ThemedText, {
|
|
480117
|
+
color: "ur",
|
|
480118
|
+
dimColor: true,
|
|
480119
|
+
children: LARGE_HOUSE_BOTTOM_SHADOW
|
|
480120
|
+
}, undefined, false, undefined, this)
|
|
480121
|
+
]
|
|
480122
|
+
}, undefined, true, undefined, this);
|
|
480067
480123
|
}
|
|
480068
|
-
var jsx_dev_runtime234, LARGE, SMALL;
|
|
480124
|
+
var jsx_dev_runtime234, LARGE, SMALL, LARGE_SHADOW_START_ROW = 3, LARGE_HOUSE_BOTTOM_SHADOW = " \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 ";
|
|
480069
480125
|
var init_UrHouse = __esm(() => {
|
|
480070
480126
|
init_ink2();
|
|
480071
480127
|
jsx_dev_runtime234 = __toESM(require_jsx_dev_runtime(), 1);
|
|
@@ -480369,7 +480425,7 @@ function CondensedLogo() {
|
|
|
480369
480425
|
const effortValue = useAppState(_temp240);
|
|
480370
480426
|
const effortProvider = useAppState((s) => s.provider.active);
|
|
480371
480427
|
const model = useMainLoopModel();
|
|
480372
|
-
const modelDisplayName = renderModelSetting(model);
|
|
480428
|
+
const modelDisplayName = compactModelDisplayName(renderModelSetting(model));
|
|
480373
480429
|
const {
|
|
480374
480430
|
version: version2,
|
|
480375
480431
|
cwd: cwd2,
|
|
@@ -480818,7 +480874,7 @@ function LogoV2() {
|
|
|
480818
480874
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
480819
480875
|
t2 = () => {
|
|
480820
480876
|
const currentConfig = getGlobalConfig();
|
|
480821
|
-
if (currentConfig.lastReleaseNotesSeen === "1.81.
|
|
480877
|
+
if (currentConfig.lastReleaseNotesSeen === "1.81.5") {
|
|
480822
480878
|
return;
|
|
480823
480879
|
}
|
|
480824
480880
|
saveGlobalConfig(_temp325);
|
|
@@ -480883,7 +480939,7 @@ function LogoV2() {
|
|
|
480883
480939
|
}
|
|
480884
480940
|
import_react144.useEffect(t7, t8);
|
|
480885
480941
|
const model = useMainLoopModel();
|
|
480886
|
-
const fullModelDisplayName = renderModelSetting(model);
|
|
480942
|
+
const fullModelDisplayName = compactModelDisplayName(renderModelSetting(model));
|
|
480887
480943
|
const {
|
|
480888
480944
|
version: version2,
|
|
480889
480945
|
cwd: cwd2,
|
|
@@ -481503,12 +481559,12 @@ function LogoV2() {
|
|
|
481503
481559
|
return t41;
|
|
481504
481560
|
}
|
|
481505
481561
|
function _temp325(current) {
|
|
481506
|
-
if (current.lastReleaseNotesSeen === "1.81.
|
|
481562
|
+
if (current.lastReleaseNotesSeen === "1.81.5") {
|
|
481507
481563
|
return current;
|
|
481508
481564
|
}
|
|
481509
481565
|
return {
|
|
481510
481566
|
...current,
|
|
481511
|
-
lastReleaseNotesSeen: "1.81.
|
|
481567
|
+
lastReleaseNotesSeen: "1.81.5"
|
|
481512
481568
|
};
|
|
481513
481569
|
}
|
|
481514
481570
|
function _temp241(s_0) {
|
|
@@ -497458,7 +497514,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
497458
497514
|
if (spec.name !== specName) {
|
|
497459
497515
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
497460
497516
|
}
|
|
497461
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.
|
|
497517
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.5" : "1.81.5");
|
|
497462
497518
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
497463
497519
|
throw new Error("invalid ur-agent package version");
|
|
497464
497520
|
}
|
|
@@ -498451,7 +498507,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
498451
498507
|
path: ".github/workflows/ur.yml",
|
|
498452
498508
|
root: "project",
|
|
498453
498509
|
content: compileAgenticCiWorkflow("default", {
|
|
498454
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.81.
|
|
498510
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.81.5" : "1.81.5"
|
|
498455
498511
|
})
|
|
498456
498512
|
},
|
|
498457
498513
|
{
|
|
@@ -498514,7 +498570,7 @@ function value(tokens, flag) {
|
|
|
498514
498570
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
498515
498571
|
}
|
|
498516
498572
|
function cliVersion() {
|
|
498517
|
-
return typeof MACRO !== "undefined" ? "1.81.
|
|
498573
|
+
return typeof MACRO !== "undefined" ? "1.81.5" : "1.81.5";
|
|
498518
498574
|
}
|
|
498519
498575
|
function workflowPath(cwd2) {
|
|
498520
498576
|
return join168(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -504370,7 +504426,7 @@ function createAcpStdioApp(deps) {
|
|
|
504370
504426
|
}
|
|
504371
504427
|
},
|
|
504372
504428
|
authMethods: [],
|
|
504373
|
-
agentInfo: { name: "UR-Nexus", version: "1.81.
|
|
504429
|
+
agentInfo: { name: "UR-Nexus", version: "1.81.5" }
|
|
504374
504430
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
504375
504431
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
504376
504432
|
await runtime2.announce({
|
|
@@ -504467,7 +504523,7 @@ function createAcpStdioAgent(deps) {
|
|
|
504467
504523
|
}
|
|
504468
504524
|
},
|
|
504469
504525
|
authMethods: [],
|
|
504470
|
-
agentInfo: { name: "UR-Nexus", version: "1.81.
|
|
504526
|
+
agentInfo: { name: "UR-Nexus", version: "1.81.5" }
|
|
504471
504527
|
});
|
|
504472
504528
|
return;
|
|
504473
504529
|
case "authenticate":
|
|
@@ -715719,7 +715775,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
715719
715775
|
smapsRollup,
|
|
715720
715776
|
platform: process.platform,
|
|
715721
715777
|
nodeVersion: process.version,
|
|
715722
|
-
ccVersion: "1.81.
|
|
715778
|
+
ccVersion: "1.81.5"
|
|
715723
715779
|
};
|
|
715724
715780
|
}
|
|
715725
715781
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -716308,7 +716364,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
716308
716364
|
var call154 = async () => {
|
|
716309
716365
|
return {
|
|
716310
716366
|
type: "text",
|
|
716311
|
-
value: "1.81.
|
|
716367
|
+
value: "1.81.5"
|
|
716312
716368
|
};
|
|
716313
716369
|
}, version2, version_default;
|
|
716314
716370
|
var init_version = __esm(() => {
|
|
@@ -719368,13 +719424,15 @@ function ProviderFirstModelPicker({
|
|
|
719368
719424
|
try {
|
|
719369
719425
|
const result = await listModelsForProviderWithSource(providerId, {
|
|
719370
719426
|
settings: getSettingsForSource("userSettings") ?? undefined,
|
|
719371
|
-
signal: controller.signal
|
|
719427
|
+
signal: controller.signal,
|
|
719428
|
+
freshOnly: providerId === "openrouter"
|
|
719372
719429
|
});
|
|
719373
719430
|
if (cancelled)
|
|
719374
719431
|
return;
|
|
719432
|
+
const modelLabels = buildProviderModelLabels(providerId, result.models);
|
|
719375
719433
|
const options5 = result.models.map((model) => ({
|
|
719376
719434
|
value: model.id,
|
|
719377
|
-
label: model.displayName,
|
|
719435
|
+
label: modelLabels.get(model.id) ?? model.displayName,
|
|
719378
719436
|
description: formatProviderModelDescription(model, result.source, providerId),
|
|
719379
719437
|
pricing: model.pricing,
|
|
719380
719438
|
contextLength: model.contextLength,
|
|
@@ -719942,7 +720000,7 @@ function ProviderFirstModelPicker({
|
|
|
719942
720000
|
}, undefined, false, undefined, this),
|
|
719943
720001
|
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
719944
720002
|
dimColor: true,
|
|
719945
|
-
children: selectedProvider?.value === "openrouter" ? `${modelOptions.length}
|
|
720003
|
+
children: selectedProvider?.value === "openrouter" ? `${modelOptions.length} models \xB7 fetched fresh whenever this catalog opens` : `Showing models for ${selectedProvider?.label} (${selectedProvider?.accessType})`
|
|
719946
720004
|
}, undefined, false, undefined, this),
|
|
719947
720005
|
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
719948
720006
|
color: modelSource === "live" ? "success" : "subtle",
|
|
@@ -719998,6 +720056,14 @@ function ProviderFirstModelPicker({
|
|
|
719998
720056
|
color: "text",
|
|
719999
720057
|
children: focusedModel.label
|
|
720000
720058
|
}, undefined, false, undefined, this),
|
|
720059
|
+
selectedProvider?.value === "openrouter" && /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
720060
|
+
dimColor: true,
|
|
720061
|
+
color: "subtle",
|
|
720062
|
+
children: [
|
|
720063
|
+
"ID: ",
|
|
720064
|
+
focusedModel.value
|
|
720065
|
+
]
|
|
720066
|
+
}, undefined, true, undefined, this),
|
|
720001
720067
|
/* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
|
|
720002
720068
|
dimColor: true,
|
|
720003
720069
|
children: focusedModel.description
|
|
@@ -727667,7 +727733,7 @@ function generateHtmlReport(data, insights) {
|
|
|
727667
727733
|
</html>`;
|
|
727668
727734
|
}
|
|
727669
727735
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
727670
|
-
const version3 = typeof MACRO !== "undefined" ? "1.81.
|
|
727736
|
+
const version3 = typeof MACRO !== "undefined" ? "1.81.5" : "unknown";
|
|
727671
727737
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
727672
727738
|
const facets_summary = {
|
|
727673
727739
|
total: facets.size,
|
|
@@ -731980,7 +732046,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
731980
732046
|
init_settings2();
|
|
731981
732047
|
init_slowOperations();
|
|
731982
732048
|
init_uuid();
|
|
731983
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.81.
|
|
732049
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.81.5" : "unknown";
|
|
731984
732050
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
731985
732051
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
731986
732052
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -733195,7 +733261,7 @@ var init_filesystem = __esm(() => {
|
|
|
733195
733261
|
});
|
|
733196
733262
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
733197
733263
|
const nonce = randomBytes24(16).toString("hex");
|
|
733198
|
-
return join243(getURTempDir(), "bundled-skills", "1.81.
|
|
733264
|
+
return join243(getURTempDir(), "bundled-skills", "1.81.5", nonce);
|
|
733199
733265
|
});
|
|
733200
733266
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
733201
733267
|
});
|
|
@@ -739595,7 +739661,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
739595
739661
|
}
|
|
739596
739662
|
function computeFingerprintFromMessages(messages) {
|
|
739597
739663
|
const firstMessageText = extractFirstMessageText(messages);
|
|
739598
|
-
return computeFingerprint(firstMessageText, "1.81.
|
|
739664
|
+
return computeFingerprint(firstMessageText, "1.81.5");
|
|
739599
739665
|
}
|
|
739600
739666
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
739601
739667
|
var init_fingerprint = () => {};
|
|
@@ -741530,7 +741596,7 @@ async function sideQuery(opts) {
|
|
|
741530
741596
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
741531
741597
|
}
|
|
741532
741598
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
741533
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.81.
|
|
741599
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.81.5");
|
|
741534
741600
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
741535
741601
|
const systemBlocks = [
|
|
741536
741602
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -746364,7 +746430,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
746364
746430
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
746365
746431
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
746366
746432
|
betas: getSdkBetas(),
|
|
746367
|
-
ur_version: "1.81.
|
|
746433
|
+
ur_version: "1.81.5",
|
|
746368
746434
|
output_style: outputStyle,
|
|
746369
746435
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
746370
746436
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -760200,7 +760266,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
760200
760266
|
function getSemverPart(version3) {
|
|
760201
760267
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
760202
760268
|
}
|
|
760203
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.81.
|
|
760269
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.81.5") {
|
|
760204
760270
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
|
|
760205
760271
|
if (!updatedVersion) {
|
|
760206
760272
|
return null;
|
|
@@ -760249,7 +760315,7 @@ function AutoUpdater({
|
|
|
760249
760315
|
return;
|
|
760250
760316
|
}
|
|
760251
760317
|
if (false) {}
|
|
760252
|
-
const currentVersion = "1.81.
|
|
760318
|
+
const currentVersion = "1.81.5";
|
|
760253
760319
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
760254
760320
|
let latestVersion = await getLatestVersion(channel);
|
|
760255
760321
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -760478,12 +760544,12 @@ function NativeAutoUpdater({
|
|
|
760478
760544
|
logEvent("tengu_native_auto_updater_start", {});
|
|
760479
760545
|
try {
|
|
760480
760546
|
const maxVersion = await getMaxVersion();
|
|
760481
|
-
if (maxVersion && gt("1.81.
|
|
760547
|
+
if (maxVersion && gt("1.81.5", maxVersion)) {
|
|
760482
760548
|
const msg = await getMaxVersionMessage();
|
|
760483
760549
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
760484
760550
|
}
|
|
760485
760551
|
const result = await installLatest(channel);
|
|
760486
|
-
const currentVersion = "1.81.
|
|
760552
|
+
const currentVersion = "1.81.5";
|
|
760487
760553
|
const latencyMs = Date.now() - startTime;
|
|
760488
760554
|
if (result.lockFailed) {
|
|
760489
760555
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -760620,17 +760686,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
760620
760686
|
const maxVersion = await getMaxVersion();
|
|
760621
760687
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
760622
760688
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
760623
|
-
if (gte("1.81.
|
|
760624
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.
|
|
760689
|
+
if (gte("1.81.5", maxVersion)) {
|
|
760690
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.5"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
760625
760691
|
setUpdateAvailable(false);
|
|
760626
760692
|
return;
|
|
760627
760693
|
}
|
|
760628
760694
|
latest = maxVersion;
|
|
760629
760695
|
}
|
|
760630
|
-
const hasUpdate = latest && !gte("1.81.
|
|
760696
|
+
const hasUpdate = latest && !gte("1.81.5", latest) && !shouldSkipVersion(latest);
|
|
760631
760697
|
setUpdateAvailable(!!hasUpdate);
|
|
760632
760698
|
if (hasUpdate) {
|
|
760633
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.
|
|
760699
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.5"} -> ${latest}`);
|
|
760634
760700
|
}
|
|
760635
760701
|
};
|
|
760636
760702
|
$2[0] = t1;
|
|
@@ -760664,7 +760730,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
760664
760730
|
wrap: "truncate",
|
|
760665
760731
|
children: [
|
|
760666
760732
|
"currentVersion: ",
|
|
760667
|
-
"1.81.
|
|
760733
|
+
"1.81.5"
|
|
760668
760734
|
]
|
|
760669
760735
|
}, undefined, true, undefined, this);
|
|
760670
760736
|
$2[3] = verbose;
|
|
@@ -771517,7 +771583,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
771517
771583
|
project_dir: getOriginalCwd(),
|
|
771518
771584
|
added_dirs: addedDirs
|
|
771519
771585
|
},
|
|
771520
|
-
version: "1.81.
|
|
771586
|
+
version: "1.81.5",
|
|
771521
771587
|
output_style: {
|
|
771522
771588
|
name: outputStyleName
|
|
771523
771589
|
},
|
|
@@ -771652,7 +771718,7 @@ function StatusLineInner({
|
|
|
771652
771718
|
const attention = customStatusError ?? taskAttention;
|
|
771653
771719
|
const terminalSize = React133.useContext(TerminalSizeContext);
|
|
771654
771720
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
771655
|
-
version: "1.81.
|
|
771721
|
+
version: "1.81.5",
|
|
771656
771722
|
providerLabel: providerRuntime.providerLabel,
|
|
771657
771723
|
authMode: providerRuntime.authLabel,
|
|
771658
771724
|
model: renderModelName(mainLoopModel) || providerRuntime.model || "",
|
|
@@ -783908,7 +783974,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
783908
783974
|
} catch {}
|
|
783909
783975
|
const data = {
|
|
783910
783976
|
trigger: trigger2,
|
|
783911
|
-
version: "1.81.
|
|
783977
|
+
version: "1.81.5",
|
|
783912
783978
|
platform: process.platform,
|
|
783913
783979
|
transcript,
|
|
783914
783980
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -796277,7 +796343,7 @@ function WelcomeV2() {
|
|
|
796277
796343
|
dimColor: true,
|
|
796278
796344
|
children: [
|
|
796279
796345
|
"v",
|
|
796280
|
-
"1.81.
|
|
796346
|
+
"1.81.5"
|
|
796281
796347
|
]
|
|
796282
796348
|
}, undefined, true, undefined, this)
|
|
796283
796349
|
]
|
|
@@ -797537,7 +797603,7 @@ function completeOnboarding() {
|
|
|
797537
797603
|
saveGlobalConfig((current) => ({
|
|
797538
797604
|
...current,
|
|
797539
797605
|
hasCompletedOnboarding: true,
|
|
797540
|
-
lastOnboardingVersion: "1.81.
|
|
797606
|
+
lastOnboardingVersion: "1.81.5"
|
|
797541
797607
|
}));
|
|
797542
797608
|
}
|
|
797543
797609
|
function showDialog(root2, renderer) {
|
|
@@ -802683,7 +802749,7 @@ function appendToLog(path28, message) {
|
|
|
802683
802749
|
cwd: getFsImplementation().cwd(),
|
|
802684
802750
|
userType: process.env.USER_TYPE,
|
|
802685
802751
|
sessionId: getSessionId(),
|
|
802686
|
-
version: "1.81.
|
|
802752
|
+
version: "1.81.5"
|
|
802687
802753
|
};
|
|
802688
802754
|
getLogWriter(path28).write(messageWithTimestamp);
|
|
802689
802755
|
}
|
|
@@ -806847,8 +806913,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
806847
806913
|
}
|
|
806848
806914
|
async function checkEnvLessBridgeMinVersion() {
|
|
806849
806915
|
const cfg = await getEnvLessBridgeConfig();
|
|
806850
|
-
if (cfg.min_version && lt("1.81.
|
|
806851
|
-
return `Your version of UR (${"1.81.
|
|
806916
|
+
if (cfg.min_version && lt("1.81.5", cfg.min_version)) {
|
|
806917
|
+
return `Your version of UR (${"1.81.5"}) is too old for Remote Control.
|
|
806852
806918
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
806853
806919
|
}
|
|
806854
806920
|
return null;
|
|
@@ -807322,7 +807388,7 @@ async function initBridgeCore(params) {
|
|
|
807322
807388
|
const rawApi = createBridgeApiClient({
|
|
807323
807389
|
baseUrl,
|
|
807324
807390
|
getAccessToken,
|
|
807325
|
-
runnerVersion: "1.81.
|
|
807391
|
+
runnerVersion: "1.81.5",
|
|
807326
807392
|
onDebug: logForDebugging,
|
|
807327
807393
|
onAuth401,
|
|
807328
807394
|
getTrustedDeviceToken
|
|
@@ -816795,7 +816861,7 @@ function getAgUiCapabilities() {
|
|
|
816795
816861
|
name: "UR-Nexus",
|
|
816796
816862
|
type: "ur-nexus",
|
|
816797
816863
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
816798
|
-
version: "1.81.
|
|
816864
|
+
version: "1.81.5",
|
|
816799
816865
|
provider: "UR",
|
|
816800
816866
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
816801
816867
|
},
|
|
@@ -818022,7 +818088,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
818022
818088
|
};
|
|
818023
818089
|
const server2 = new Server({
|
|
818024
818090
|
name: "ur-nexus",
|
|
818025
|
-
version: "1.81.
|
|
818091
|
+
version: "1.81.5"
|
|
818026
818092
|
}, {
|
|
818027
818093
|
capabilities: {
|
|
818028
818094
|
tools: {}
|
|
@@ -819226,7 +819292,7 @@ function thrownResponse(error40) {
|
|
|
819226
819292
|
}
|
|
819227
819293
|
async function createUrMcp2026Runtime(options5) {
|
|
819228
819294
|
const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
|
|
819229
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.
|
|
819295
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.5" }, { capabilities: {} });
|
|
819230
819296
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
819231
819297
|
try {
|
|
819232
819298
|
await server2.connect(serverTransport);
|
|
@@ -819237,7 +819303,7 @@ async function createUrMcp2026Runtime(options5) {
|
|
|
819237
819303
|
}
|
|
819238
819304
|
const runtime2 = new Mcp2026Runtime({
|
|
819239
819305
|
cwd: options5.cwd,
|
|
819240
|
-
version: "1.81.
|
|
819306
|
+
version: "1.81.5",
|
|
819241
819307
|
backend: {
|
|
819242
819308
|
listTools: async () => {
|
|
819243
819309
|
const listed = await client2.listTools();
|
|
@@ -821972,7 +822038,7 @@ async function update() {
|
|
|
821972
822038
|
logEvent("tengu_update_check", {});
|
|
821973
822039
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
821974
822040
|
const result = await checkUpgradeStatus({
|
|
821975
|
-
currentVersion: "1.81.
|
|
822041
|
+
currentVersion: "1.81.5",
|
|
821976
822042
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
821977
822043
|
installationType: diagnostic2.installationType,
|
|
821978
822044
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -823300,7 +823366,7 @@ ${customInstructions}` : customInstructions;
|
|
|
823300
823366
|
}
|
|
823301
823367
|
}
|
|
823302
823368
|
logForDiagnosticsNoPII("info", "started", {
|
|
823303
|
-
version: "1.81.
|
|
823369
|
+
version: "1.81.5",
|
|
823304
823370
|
is_native_binary: isInBundledMode()
|
|
823305
823371
|
});
|
|
823306
823372
|
registerCleanup(async () => {
|
|
@@ -824087,7 +824153,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
824087
824153
|
pendingHookMessages
|
|
824088
824154
|
}, renderAndRun);
|
|
824089
824155
|
}
|
|
824090
|
-
}).version("1.81.
|
|
824156
|
+
}).version("1.81.5 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
824091
824157
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
824092
824158
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
824093
824159
|
if (canUserConfigureAdvisor()) {
|
|
@@ -825214,7 +825280,7 @@ if (false) {}
|
|
|
825214
825280
|
async function main2() {
|
|
825215
825281
|
const args = process.argv.slice(2);
|
|
825216
825282
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
825217
|
-
console.log(`${"1.81.
|
|
825283
|
+
console.log(`${"1.81.5"} (UR-Nexus)`);
|
|
825218
825284
|
return;
|
|
825219
825285
|
}
|
|
825220
825286
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|
package/docs/CONFIGURATION.md
CHANGED
|
@@ -146,7 +146,9 @@ request; Ollama is only used when `ollama` is the selected provider.
|
|
|
146
146
|
In the model step, Up/Down browses, Left/Right changes the focused model's
|
|
147
147
|
supported effort level, Enter confirms, Ctrl+R refreshes the catalog, and Esc
|
|
148
148
|
returns to providers. OpenRouter entries show pricing tier, context size,
|
|
149
|
-
tool/reasoning capability, and
|
|
149
|
+
tool/reasoning capability, compact names, and the exact ID for the focused
|
|
150
|
+
entry. Its catalog is fetched fresh whenever opened; a failed refresh never
|
|
151
|
+
silently displays cached entries. API-provider secret
|
|
150
152
|
entry stays on one masked row and stores the value through the keychain flow.
|
|
151
153
|
|
|
152
154
|
The same provider-first picker is mandatory on the first interactive run in a
|
package/docs/VALIDATION.md
CHANGED
package/docs/providers.md
CHANGED
|
@@ -167,7 +167,9 @@ The provider-first `/model` picker supports the same control directly: use
|
|
|
167
167
|
Left/Right to move through the effort levels advertised by the focused model,
|
|
168
168
|
then Enter to apply the model and effort together. OpenRouter's live catalog
|
|
169
169
|
shows pricing tier, context size, tool capability, reasoning capability, and
|
|
170
|
-
|
|
170
|
+
the exact model ID for the focused entry. Opening the OpenRouter catalog always
|
|
171
|
+
fetches the current `/models` endpoint and never substitutes a cached list when
|
|
172
|
+
that refresh fails. API-key entry for
|
|
171
173
|
OpenAI, Claude, Gemini, and OpenRouter is a single aligned masked row; the key
|
|
172
174
|
is stored in the OS keychain flow and is never written to settings.
|
|
173
175
|
|
|
@@ -229,8 +231,11 @@ You see all configured providers with:
|
|
|
229
231
|
After selecting a provider:
|
|
230
232
|
- Only models from that provider are shown
|
|
231
233
|
- Each model shows its concise capabilities; OpenRouter includes pricing,
|
|
232
|
-
context size, tool support, and reasoning support
|
|
234
|
+
context size, tool support, and reasoning support. Its list uses compact
|
|
235
|
+
model names; focus an entry to see the exact provider/model ID
|
|
233
236
|
- Model source is displayed: `live` (dynamic discovery), `cache` (fallback), or `static` (predefined)
|
|
237
|
+
- OpenRouter is fresh-only in this picker: every opening fetches `/models`, and
|
|
238
|
+
a failed refresh is reported instead of showing stale cached entries
|
|
234
239
|
- Left/Right changes effort for the focused model; Up/Down browses and Enter confirms
|
|
235
240
|
- Press Esc to go back and change provider
|
|
236
241
|
|
|
@@ -290,7 +295,8 @@ ur config set provider anthropic-api
|
|
|
290
295
|
|
|
291
296
|
| Provider type | Model discovery | Source label |
|
|
292
297
|
| --- | --- | --- |
|
|
293
|
-
| API providers (openai-api, anthropic-api, gemini-api
|
|
298
|
+
| API providers (openai-api, anthropic-api, gemini-api) | Live discovery from the provider's `/models` endpoint using your connected key (curated fallback until connected) | live |
|
|
299
|
+
| OpenRouter | Fresh `/models` discovery every time its picker opens; no cached-list fallback in the picker | live |
|
|
294
300
|
| Local/server providers (ollama, lmstudio, llama.cpp, vllm) | Dynamic discovery from the selected provider endpoint | live |
|
|
295
301
|
| OpenAI-compatible | Dynamic discovery from configured endpoint | live |
|
|
296
302
|
| Subscription CLIs (codex-cli, claude-code-cli, gemini-cli, antigravity-cli) | Curated list (the official CLIs expose no models API); first-class in `/model`, dispatched via the official CLI. External CLI behavior depends on the vendor CLI. Log in with `ur auth <provider>` | static |
|
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.81.
|
|
48
|
+
<p class="eyebrow">Version 1.81.5</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>
|
|
@@ -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.81.
|
|
5
|
+
"version": "1.81.5",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED