ur-agent 1.81.5 → 1.81.6

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 CHANGED
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.81.6
4
+
5
+ - Restored the original clean welcome house without a shadow. The full adaptive
6
+ startup UI is now the default at every terminal size; its responsive stacking
7
+ and wordmark fallbacks handle resizing. The small-house condensed UI appears
8
+ only when explicitly requested with `UR_CODE_COMPACT_LOGO=1`.
9
+ - Replaced the large UR wordmark with the supplied 16-line letterform in UR's
10
+ existing theme-aware brand color. It responds to terminal width and height,
11
+ falling back to the prior compact mark and then plain `UR` so resized or
12
+ narrow windows never overflow.
13
+ - Kept OpenRouter catalog rows concise while showing the focused model's full,
14
+ untruncated provider/model ID immediately below the list on both picker
15
+ surfaces. Request routing continues to use that exact ID.
16
+ - Removed the blanket file-read system reminder that told models to refuse all
17
+ code improvements. Reading ordinary games, websites, applications, and tools
18
+ no longer blocks requested edits; UR's normal authorization, malware, secret,
19
+ sandbox, and destructive-action safeguards remain enforced where relevant.
20
+
3
21
  ## 1.81.5
4
22
 
5
23
  - Matched the UR welcome wordmark to the house and frame's bright, theme-aware
package/README.md CHANGED
@@ -114,6 +114,12 @@ available, and the approval decision in task evidence. Security-research prompts
114
114
  need scoped targets and authorization confirmation; local/lab/test targets are
115
115
  preferred unless the user confirms authorized external scope.
116
116
 
117
+ Reading source code does not attach a blanket modification refusal. UR evaluates
118
+ the actual behavior and requested intent, so ordinary games, websites, apps,
119
+ and developer tools can be analyzed and improved normally. Genuine malicious
120
+ or unauthorized activity remains subject to UR's security and operational
121
+ boundaries.
122
+
117
123
  Authorized researchers can explicitly activate `/mode redteam`. The first use
118
124
  shows a mandatory risk warning; `/mode redteam --accept-risk` acknowledges it
119
125
  and enables UR's unrestricted security-research prompt policy for the current
@@ -356,8 +362,9 @@ In the interactive app, `/model` is a two-step, provider-first picker:
356
362
  In the model catalog, use **Up/Down** to browse and **Left/Right** to change
357
363
  the focused model's effort before pressing Enter. OpenRouter additionally
358
364
  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.
365
+ support, and the full untruncated ID immediately below the focused entry.
366
+ Its catalog is fetched fresh every time it opens and never falls back to a
367
+ stale cached list.
361
368
  API-key entry is masked, aligned on one row, and stored through the OS
362
369
  keychain flow.
363
370
 
package/dist/cli.js CHANGED
@@ -108252,7 +108252,7 @@ var init_auth = __esm(() => {
108252
108252
 
108253
108253
  // src/utils/userAgent.ts
108254
108254
  function getURCodeUserAgent() {
108255
- return `ur/${"1.81.5"}`;
108255
+ return `ur/${"1.81.6"}`;
108256
108256
  }
108257
108257
 
108258
108258
  // src/utils/workloadContext.ts
@@ -108274,7 +108274,7 @@ function getUserAgent() {
108274
108274
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
108275
108275
  const workload = getWorkload();
108276
108276
  const workloadSuffix = workload ? `, workload/${workload}` : "";
108277
- return `ur-cli/${"1.81.5"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
108277
+ return `ur-cli/${"1.81.6"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
108278
108278
  }
108279
108279
  function getMCPUserAgent() {
108280
108280
  const parts = [];
@@ -108288,7 +108288,7 @@ function getMCPUserAgent() {
108288
108288
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
108289
108289
  }
108290
108290
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
108291
- return `ur/${"1.81.5"}${suffix}`;
108291
+ return `ur/${"1.81.6"}${suffix}`;
108292
108292
  }
108293
108293
  function getWebFetchUserAgent() {
108294
108294
  return `UR-User (${getURCodeUserAgent()})`;
@@ -108426,7 +108426,7 @@ var init_user = __esm(() => {
108426
108426
  deviceId,
108427
108427
  sessionId: getSessionId(),
108428
108428
  email: getEmail(),
108429
- appVersion: "1.81.5",
108429
+ appVersion: "1.81.6",
108430
108430
  platform: getHostPlatformForAnalytics(),
108431
108431
  organizationUuid,
108432
108432
  accountUuid,
@@ -116313,7 +116313,7 @@ var init_metadata = __esm(() => {
116313
116313
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
116314
116314
  WHITESPACE_REGEX = /\s+/;
116315
116315
  getVersionBase = memoize_default(() => {
116316
- const match = "1.81.5".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
116316
+ const match = "1.81.6".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
116317
116317
  return match ? match[0] : undefined;
116318
116318
  });
116319
116319
  buildEnvContext = memoize_default(async () => {
@@ -116353,7 +116353,7 @@ var init_metadata = __esm(() => {
116353
116353
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
116354
116354
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
116355
116355
  isURAiAuth: isURAISubscriber(),
116356
- version: "1.81.5",
116356
+ version: "1.81.6",
116357
116357
  versionBase: getVersionBase(),
116358
116358
  buildTime: "",
116359
116359
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -117023,7 +117023,7 @@ function initialize1PEventLogging() {
117023
117023
  const platform2 = getPlatform();
117024
117024
  const attributes = {
117025
117025
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
117026
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.81.5"
117026
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.81.6"
117027
117027
  };
117028
117028
  if (platform2 === "wsl") {
117029
117029
  const wslVersion = getWslVersion();
@@ -117051,7 +117051,7 @@ function initialize1PEventLogging() {
117051
117051
  })
117052
117052
  ]
117053
117053
  });
117054
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.81.5");
117054
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.81.6");
117055
117055
  }
117056
117056
  async function reinitialize1PEventLoggingIfConfigChanged() {
117057
117057
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -127017,7 +127017,7 @@ function formatA2AAgentCard(options = {}, pretty = true) {
127017
127017
  function formatA2AV1AgentCard(options = {}, pretty = true) {
127018
127018
  return JSON.stringify(buildA2AV1AgentCard(options), null, pretty ? 2 : 0);
127019
127019
  }
127020
- var urVersion = "1.81.5", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
127020
+ var urVersion = "1.81.6", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
127021
127021
  var init_trends = __esm(() => {
127022
127022
  init_a2aCardSignature();
127023
127023
  coverage = [
@@ -129907,7 +129907,7 @@ function getAttributionHeader(fingerprint) {
129907
129907
  if (!isAttributionHeaderEnabled()) {
129908
129908
  return "";
129909
129909
  }
129910
- const version2 = `${"1.81.5"}.${fingerprint}`;
129910
+ const version2 = `${"1.81.6"}.${fingerprint}`;
129911
129911
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
129912
129912
  const cch = "";
129913
129913
  const workload = getWorkload();
@@ -184828,7 +184828,7 @@ var init_projectSafety = __esm(() => {
184828
184828
  function getInstruments() {
184829
184829
  if (instruments)
184830
184830
  return instruments;
184831
- const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.81.5");
184831
+ const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.81.6");
184832
184832
  instruments = {
184833
184833
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
184834
184834
  description: "GenAI operation duration.",
@@ -184926,7 +184926,7 @@ function genAiAgentAttributes() {
184926
184926
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
184927
184927
  "gen_ai.provider.name": "ur",
184928
184928
  "gen_ai.agent.name": "UR-Nexus",
184929
- "gen_ai.agent.version": "1.81.5"
184929
+ "gen_ai.agent.version": "1.81.6"
184930
184930
  };
184931
184931
  }
184932
184932
  function genAiWorkflowAttributes(workflowName, workflowRunId) {
@@ -184947,7 +184947,7 @@ function genAiWorkflowAttributes(workflowName, workflowRunId) {
184947
184947
  function startGenAiWorkflowSpan(workflowName, workflowRunId) {
184948
184948
  const attributes = genAiWorkflowAttributes(workflowName, workflowRunId);
184949
184949
  const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
184950
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.5").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
184950
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.6").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
184951
184951
  }
184952
184952
  function endGenAiWorkflowSpan(span, options2 = {}) {
184953
184953
  try {
@@ -184985,7 +184985,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
184985
184985
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
184986
184986
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
184987
184987
  }
184988
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.5").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
184988
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.6").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
184989
184989
  }
184990
184990
  function endGenAiMemorySpan(span, options2 = {}) {
184991
184991
  try {
@@ -278700,7 +278700,7 @@ function getTelemetryAttributes() {
278700
278700
  attributes["session.id"] = sessionId;
278701
278701
  }
278702
278702
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
278703
- attributes["app.version"] = "1.81.5";
278703
+ attributes["app.version"] = "1.81.6";
278704
278704
  }
278705
278705
  const oauthAccount = getOauthAccountInfo();
278706
278706
  if (oauthAccount) {
@@ -320104,7 +320104,7 @@ function getInstallationEnv() {
320104
320104
  return;
320105
320105
  }
320106
320106
  function getURCodeVersion() {
320107
- return "1.81.5";
320107
+ return "1.81.6";
320108
320108
  }
320109
320109
  async function getInstalledVSCodeExtensionVersion(command) {
320110
320110
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -327474,7 +327474,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
327474
327474
  const client2 = new Client({
327475
327475
  name: "ur",
327476
327476
  title: "UR",
327477
- version: "1.81.5",
327477
+ version: "1.81.6",
327478
327478
  description: "UR-Nexus autonomous engineering workflow engine",
327479
327479
  websiteUrl: PRODUCT_URL
327480
327480
  }, {
@@ -327835,7 +327835,7 @@ var init_client5 = __esm(() => {
327835
327835
  const client2 = new Client({
327836
327836
  name: "ur",
327837
327837
  title: "UR",
327838
- version: "1.81.5",
327838
+ version: "1.81.6",
327839
327839
  description: "UR-Nexus autonomous engineering workflow engine",
327840
327840
  websiteUrl: PRODUCT_URL
327841
327841
  }, {
@@ -340608,7 +340608,7 @@ async function createRuntime() {
340608
340608
  bootstrapTelemetry();
340609
340609
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
340610
340610
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
340611
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.81.5"
340611
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.81.6"
340612
340612
  }));
340613
340613
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
340614
340614
  resource,
@@ -340641,11 +340641,11 @@ async function createRuntime() {
340641
340641
  setMeterProvider(meterProvider);
340642
340642
  setLoggerProvider(loggerProvider);
340643
340643
  if (meterProvider) {
340644
- const meter = meterProvider.getMeter("ur-agent", "1.81.5");
340644
+ const meter = meterProvider.getMeter("ur-agent", "1.81.6");
340645
340645
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
340646
340646
  }
340647
340647
  if (loggerProvider) {
340648
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.81.5"));
340648
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.81.6"));
340649
340649
  }
340650
340650
  if (!cleanupRegistered3) {
340651
340651
  cleanupRegistered3 = true;
@@ -341307,9 +341307,9 @@ async function assertMinVersion() {
341307
341307
  if (false) {}
341308
341308
  try {
341309
341309
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
341310
- if (versionConfig.minVersion && lt("1.81.5", versionConfig.minVersion)) {
341310
+ if (versionConfig.minVersion && lt("1.81.6", versionConfig.minVersion)) {
341311
341311
  console.error(`
341312
- It looks like your version of UR (${"1.81.5"}) needs an update.
341312
+ It looks like your version of UR (${"1.81.6"}) needs an update.
341313
341313
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
341314
341314
 
341315
341315
  To update, please run:
@@ -341525,7 +341525,7 @@ async function installGlobalPackage(specificVersion) {
341525
341525
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
341526
341526
  logEvent("tengu_auto_updater_lock_contention", {
341527
341527
  pid: process.pid,
341528
- currentVersion: "1.81.5"
341528
+ currentVersion: "1.81.6"
341529
341529
  });
341530
341530
  return "in_progress";
341531
341531
  }
@@ -341534,7 +341534,7 @@ async function installGlobalPackage(specificVersion) {
341534
341534
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
341535
341535
  logError2(new Error("Windows NPM detected in WSL environment"));
341536
341536
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
341537
- currentVersion: "1.81.5"
341537
+ currentVersion: "1.81.6"
341538
341538
  });
341539
341539
  console.error(`
341540
341540
  Error: Windows NPM detected in WSL
@@ -342069,7 +342069,7 @@ function detectLinuxGlobPatternWarnings() {
342069
342069
  }
342070
342070
  async function getDoctorDiagnostic() {
342071
342071
  const installationType = await getCurrentInstallationType();
342072
- const version2 = typeof MACRO !== "undefined" ? "1.81.5" : "unknown";
342072
+ const version2 = typeof MACRO !== "undefined" ? "1.81.6" : "unknown";
342073
342073
  const installationPath = await getInstallationPath();
342074
342074
  const invokedBinary = getInvokedBinary();
342075
342075
  const multipleInstallations = await detectMultipleInstallations();
@@ -343004,8 +343004,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
343004
343004
  const maxVersion = await getMaxVersion();
343005
343005
  if (maxVersion && gt(version2, maxVersion)) {
343006
343006
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
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`);
343007
+ if (gte("1.81.6", maxVersion)) {
343008
+ logForDebugging(`Native installer: current version ${"1.81.6"} is already at or above maxVersion ${maxVersion}, skipping update`);
343009
343009
  logEvent("tengu_native_update_skipped_max_version", {
343010
343010
  latency_ms: Date.now() - startTime,
343011
343011
  max_version: maxVersion,
@@ -343016,7 +343016,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
343016
343016
  version2 = maxVersion;
343017
343017
  }
343018
343018
  }
343019
- if (!forceReinstall && version2 === "1.81.5" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
343019
+ if (!forceReinstall && version2 === "1.81.6" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
343020
343020
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
343021
343021
  logEvent("tengu_native_update_complete", {
343022
343022
  latency_ms: Date.now() - startTime,
@@ -413703,7 +413703,7 @@ function isAnyTracingEnabled() {
413703
413703
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
413704
413704
  }
413705
413705
  function getTracer() {
413706
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.81.5");
413706
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.81.6");
413707
413707
  }
413708
413708
  function createSpanAttributes(spanType, customAttributes = {}) {
413709
413709
  const baseAttributes = getTelemetryAttributes();
@@ -424159,13 +424159,6 @@ function describeUnreadRemainder(file2) {
424159
424159
 
424160
424160
  <system-reminder>This is lines ${firstLine}-${lastLine} of ${file2.totalLines}. ${file2.totalLines - lastLine} lines were not returned \u2014 read again with offset ${lastLine + 1} if you need them.</system-reminder>`;
424161
424161
  }
424162
- function shouldIncludeFileReadMitigation() {
424163
- const shortName = getCanonicalName(getMainLoopModel());
424164
- return !MITIGATION_EXEMPT_MODELS.has(shortName);
424165
- }
424166
- function getFileReadSecurityReminder() {
424167
- return isRedteamModeActive() ? REDTEAM_FILE_READ_REMINDER : CYBER_RISK_MITIGATION_REMINDER;
424168
- }
424169
424162
  function memoryFileFreshnessPrefix(data) {
424170
424163
  const mtimeMs = memoryFileMtimes.get(data);
424171
424164
  if (mtimeMs === undefined)
@@ -424443,17 +424436,7 @@ async function readImageWithTokenBudget(filePath, maxTokens = getDefaultFileRead
424443
424436
  }
424444
424437
  return result;
424445
424438
  }
424446
- var BLOCKED_DEVICE_PATHS, THIN_SPACE, fileReadListeners, MaxFileReadTokenExceededError, IMAGE_EXTENSIONS, inputSchema46, outputSchema39, FileReadTool, CYBER_RISK_MITIGATION_REMINDER = `
424447
-
424448
- <system-reminder>
424449
- Whenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.
424450
- </system-reminder>
424451
- `, REDTEAM_FILE_READ_REMINDER = `
424452
-
424453
- <system-reminder>
424454
- UR redteam mode is active. You may analyze, modify, build, and test security-research code, including malware and exploits. Keep operational actions within the approved target scope and continue to honor tool permissions, sandboxing, and action confirmations. The selected model/provider may apply separate policies.
424455
- </system-reminder>
424456
- `, MITIGATION_EXEMPT_MODELS, memoryFileMtimes;
424439
+ var BLOCKED_DEVICE_PATHS, THIN_SPACE, fileReadListeners, MaxFileReadTokenExceededError, IMAGE_EXTENSIONS, inputSchema46, outputSchema39, FileReadTool, memoryFileMtimes;
424457
424440
  var init_FileReadTool = __esm(() => {
424458
424441
  init_v4();
424459
424442
  init_apiLimits();
@@ -424465,7 +424448,6 @@ var init_FileReadTool = __esm(() => {
424465
424448
  init_loadSkillsDir();
424466
424449
  init_Tool();
424467
424450
  init_cwd2();
424468
- init_redteamMode();
424469
424451
  init_envUtils();
424470
424452
  init_errors();
424471
424453
  init_file();
@@ -424476,7 +424458,6 @@ var init_FileReadTool = __esm(() => {
424476
424458
  init_log2();
424477
424459
  init_memoryFileDetection();
424478
424460
  init_messages();
424479
- init_model();
424480
424461
  init_notebook();
424481
424462
  init_path();
424482
424463
  init_pdf();
@@ -424811,7 +424792,7 @@ var init_FileReadTool = __esm(() => {
424811
424792
  case "text": {
424812
424793
  let content;
424813
424794
  if (data.file.content) {
424814
- content = memoryFileFreshnessPrefix(data) + formatFileLines(data.file) + describeUnreadRemainder(data.file) + (shouldIncludeFileReadMitigation() ? getFileReadSecurityReminder() : "");
424795
+ content = memoryFileFreshnessPrefix(data) + formatFileLines(data.file) + describeUnreadRemainder(data.file);
424815
424796
  } else {
424816
424797
  content = data.file.totalLines === 0 ? "<system-reminder>Warning: the file exists but the contents are empty.</system-reminder>" : `<system-reminder>Warning: the file exists but is shorter than the provided offset (${data.file.startLine}). The file has ${data.file.totalLines} lines.</system-reminder>`;
424817
424798
  }
@@ -424824,7 +424805,6 @@ var init_FileReadTool = __esm(() => {
424824
424805
  }
424825
424806
  }
424826
424807
  });
424827
- MITIGATION_EXEMPT_MODELS = new Set;
424828
424808
  memoryFileMtimes = new WeakMap;
424829
424809
  });
424830
424810
 
@@ -443862,7 +443842,7 @@ function Feedback({
443862
443842
  platform: env2.platform,
443863
443843
  gitRepo: envInfo.isGit,
443864
443844
  terminal: env2.terminal,
443865
- version: "1.81.5",
443845
+ version: "1.81.6",
443866
443846
  transcript: normalizeMessagesForAPI(messages),
443867
443847
  errors: sanitizedErrors,
443868
443848
  lastApiRequest: getLastAPIRequest(),
@@ -444054,7 +444034,7 @@ function Feedback({
444054
444034
  ", ",
444055
444035
  env2.terminal,
444056
444036
  ", v",
444057
- "1.81.5"
444037
+ "1.81.6"
444058
444038
  ]
444059
444039
  }, undefined, true, undefined, this)
444060
444040
  ]
@@ -444160,7 +444140,7 @@ ${sanitizedDescription}
444160
444140
  ` + `**Environment Info**
444161
444141
  ` + `- Platform: ${env2.platform}
444162
444142
  ` + `- Terminal: ${env2.terminal}
444163
- ` + `- Version: ${"1.81.5"}
444143
+ ` + `- Version: ${"1.81.6"}
444164
444144
  ` + `- Feedback ID: ${feedbackId}
444165
444145
  ` + `
444166
444146
  **Errors**
@@ -447270,7 +447250,7 @@ function buildPrimarySection() {
447270
447250
  }, undefined, false, undefined, this);
447271
447251
  return [{
447272
447252
  label: "Version",
447273
- value: "1.81.5"
447253
+ value: "1.81.6"
447274
447254
  }, {
447275
447255
  label: "Session name",
447276
447256
  value: nameValue
@@ -448071,6 +448051,9 @@ function compactModelDisplayName(modelId, maxLength = DEFAULT_COMPACT_MODEL_LENG
448071
448051
  return leaf2;
448072
448052
  return `${leaf2.slice(0, limit - 1)}\u2026`;
448073
448053
  }
448054
+ function fullProviderModelDisplayName(providerId, model) {
448055
+ return providerId === "openrouter" ? model.id : model.displayName;
448056
+ }
448074
448057
  function buildProviderModelLabels(providerId, models) {
448075
448058
  if (providerId !== "openrouter") {
448076
448059
  return new Map(models.map((model) => [model.id, model.displayName]));
@@ -448175,6 +448158,7 @@ function ModelPicker({
448175
448158
  const visibleCount = getAdaptiveModelVisibleCount(selectOptions.length, terminalSize?.rows);
448176
448159
  const hiddenCount = Math.max(0, selectOptions.length - visibleCount);
448177
448160
  const focusedModelName = selectOptions.find((opt) => opt.value === focusedValue)?.label;
448161
+ const focusedModelOption = selectOptions.find((opt) => opt.value === focusedValue);
448178
448162
  const focusedModel = resolveOptionModel(focusedValue);
448179
448163
  const focusedSupportsEffort = focusedModel ? modelSupportsEffort(focusedModel) : false;
448180
448164
  const focusedSupportsMax = focusedModel ? modelSupportsMaxEffort(focusedModel) : false;
@@ -448364,7 +448348,27 @@ function ModelPicker({
448364
448348
  " more\u2026"
448365
448349
  ]
448366
448350
  }, undefined, true, undefined, this)
448367
- }, undefined, false, undefined, this)
448351
+ }, undefined, false, undefined, this),
448352
+ focusedModelOption && focusedValue !== NO_PREFERENCE && /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedBox_default, {
448353
+ paddingLeft: 3,
448354
+ marginTop: 1,
448355
+ flexDirection: "column",
448356
+ children: [
448357
+ /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedText, {
448358
+ dimColor: true,
448359
+ color: "subtle",
448360
+ children: "Focused model \xB7 full name"
448361
+ }, undefined, false, undefined, this),
448362
+ /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedText, {
448363
+ bold: true,
448364
+ color: "text",
448365
+ children: fullProviderModelDisplayName(currentProvider, {
448366
+ id: focusedModelOption.value,
448367
+ displayName: String(focusedModelOption.label)
448368
+ })
448369
+ }, undefined, false, undefined, this)
448370
+ ]
448371
+ }, undefined, true, undefined, this)
448368
448372
  ]
448369
448373
  }, undefined, true, undefined, this),
448370
448374
  /* @__PURE__ */ jsx_dev_runtime174.jsxDEV(ThemedBox_default, {
@@ -450684,7 +450688,7 @@ function Config({
450684
450688
  }
450685
450689
  }, undefined, false, undefined, this)
450686
450690
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
450687
- currentVersion: "1.81.5",
450691
+ currentVersion: "1.81.6",
450688
450692
  onChoice: (choice) => {
450689
450693
  setShowSubmenu(null);
450690
450694
  setTabsHidden(false);
@@ -450696,7 +450700,7 @@ function Config({
450696
450700
  autoUpdatesChannel: "stable"
450697
450701
  };
450698
450702
  if (choice === "stay") {
450699
- newSettings.minimumVersion = "1.81.5";
450703
+ newSettings.minimumVersion = "1.81.6";
450700
450704
  }
450701
450705
  updateSettingsForSource("userSettings", newSettings);
450702
450706
  setSettingsData((prev_27) => ({
@@ -459005,7 +459009,7 @@ function HelpV2(t0) {
459005
459009
  let t6;
459006
459010
  if ($2[31] !== tabs) {
459007
459011
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
459008
- title: `UR v${"1.81.5"}`,
459012
+ title: `UR v${"1.81.6"}`,
459009
459013
  color: "professionalBlue",
459010
459014
  defaultTab: "general",
459011
459015
  children: tabs
@@ -459938,7 +459942,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
459938
459942
  async function handleInitialize(options2) {
459939
459943
  return {
459940
459944
  name: "UR",
459941
- version: "1.81.5",
459945
+ version: "1.81.6",
459942
459946
  protocolVersion: "0.1.0",
459943
459947
  workspaceRoot: options2.cwd,
459944
459948
  capabilities: {
@@ -477046,7 +477050,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
477046
477050
  return [];
477047
477051
  }
477048
477052
  }
477049
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.5") {
477053
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.6") {
477050
477054
  if (process.env.USER_TYPE === "ant") {
477051
477055
  const changelog = "";
477052
477056
  if (changelog) {
@@ -477073,7 +477077,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.5")
477073
477077
  releaseNotes
477074
477078
  };
477075
477079
  }
477076
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.81.5") {
477080
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.81.6") {
477077
477081
  if (process.env.USER_TYPE === "ant") {
477078
477082
  const changelog = "";
477079
477083
  if (changelog) {
@@ -479861,6 +479865,9 @@ var init_transcriptSearch = __esm(() => {
479861
479865
  });
479862
479866
 
479863
479867
  // src/utils/logoV2Utils.ts
479868
+ function shouldUseCondensedLogo(hasReleaseNotes, showOnboarding, compactRequested, forceFull) {
479869
+ return compactRequested && !forceFull && !hasReleaseNotes && !showOnboarding;
479870
+ }
479864
479871
  function getCondensedLogoLayout(columns) {
479865
479872
  const safeColumns = Number.isFinite(columns) ? Math.max(1, Math.floor(columns)) : 1;
479866
479873
  const stacked = safeColumns < 35;
@@ -479978,7 +479985,7 @@ function getRecentActivitySync() {
479978
479985
  return cachedActivity;
479979
479986
  }
479980
479987
  function getLogoDisplayData() {
479981
- const version2 = process.env.DEMO_VERSION ?? "1.81.5";
479988
+ const version2 = process.env.DEMO_VERSION ?? "1.81.6";
479982
479989
  const serverUrl = getDirectConnectServerUrl();
479983
479990
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
479984
479991
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -480052,37 +480059,65 @@ var init_logoV2Utils = __esm(() => {
480052
480059
  });
480053
480060
 
480054
480061
  // src/components/LogoV2/URBanner.tsx
480055
- function URBanner() {
480062
+ function getResponsiveURWordmarkVariant(availableWidth = Number.POSITIVE_INFINITY, availableHeight = Number.POSITIVE_INFINITY) {
480063
+ if (availableWidth >= 41 && availableHeight >= 22)
480064
+ return "full";
480065
+ if (availableWidth >= 20 && availableHeight >= 8)
480066
+ return "compact";
480067
+ return "minimal";
480068
+ }
480069
+ function URBanner({
480070
+ availableWidth,
480071
+ availableHeight
480072
+ } = {}) {
480056
480073
  if (isScreenReaderMode()) {
480057
480074
  return /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
480058
480075
  children: "UR \u2014 the autonomous agent"
480059
480076
  }, undefined, false, undefined, this);
480060
480077
  }
480078
+ const variant = getResponsiveURWordmarkVariant(availableWidth, availableHeight);
480079
+ const rows = variant === "full" ? UR_WORDMARK_ROWS : variant === "compact" ? COMPACT_UR_WORDMARK_ROWS : ["UR"];
480080
+ const showTagline = variant !== "minimal";
480081
+ const decorateTagline = (availableWidth ?? Number.POSITIVE_INFINITY) >= 24;
480061
480082
  return /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedBox_default, {
480062
480083
  flexDirection: "column",
480063
480084
  alignItems: "center",
480064
480085
  children: [
480065
- UR_WORDMARK_ROWS.map((row, i3) => /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
480086
+ rows.map((row, i3) => /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
480066
480087
  color: "ur",
480067
480088
  children: row
480068
480089
  }, i3, false, undefined, this)),
480069
- /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
480090
+ showTagline && /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
480070
480091
  color: "ur",
480071
- children: [
480072
- "\u2726 ",
480073
- UR_WORDMARK_TAGLINE,
480074
- " \u2726"
480075
- ]
480076
- }, undefined, true, undefined, this)
480092
+ children: decorateTagline ? `\u2726 ${UR_WORDMARK_TAGLINE} \u2726` : UR_WORDMARK_TAGLINE
480093
+ }, undefined, false, undefined, this)
480077
480094
  ]
480078
480095
  }, undefined, true, undefined, this);
480079
480096
  }
480080
- var jsx_dev_runtime233, UR_WORDMARK_ROWS, UR_WORDMARK_TAGLINE = "THE AUTONOMOUS AGENT";
480097
+ var jsx_dev_runtime233, UR_WORDMARK_ROWS, COMPACT_UR_WORDMARK_ROWS, UR_WORDMARK_TAGLINE = "THE AUTONOMOUS AGENT";
480081
480098
  var init_URBanner = __esm(() => {
480082
480099
  init_ink2();
480083
480100
  init_screenReader();
480084
480101
  jsx_dev_runtime233 = __toESM(require_jsx_dev_runtime(), 1);
480085
480102
  UR_WORDMARK_ROWS = [
480103
+ "UUUUUUUU UUUUUUUURRRRRRRRRRRRRRRRR ",
480104
+ "U::::::U U::::::UR::::::::::::::::R ",
480105
+ "U::::::U U::::::UR::::::RRRRRR:::::R ",
480106
+ "UU:::::U U:::::UURR:::::R R:::::R",
480107
+ " U:::::U U:::::U R::::R R:::::R",
480108
+ " U:::::D D:::::U R::::R R:::::R",
480109
+ " U:::::D D:::::U R::::RRRRRR:::::R ",
480110
+ " U:::::D D:::::U R:::::::::::::RR ",
480111
+ " U:::::D D:::::U R::::RRRRRR:::::R ",
480112
+ " U:::::D D:::::U R::::R R:::::R",
480113
+ " U:::::D D:::::U R::::R R:::::R",
480114
+ " U::::::U U::::::U R::::R R:::::R",
480115
+ " U:::::::UUU:::::::U RR:::::R R:::::R",
480116
+ " UU:::::::::::::UU R::::::R R:::::R",
480117
+ " UU:::::::::UU R::::::R R:::::R",
480118
+ " UUUUUUUUU RRRRRRRR RRRRRRR"
480119
+ ];
480120
+ COMPACT_UR_WORDMARK_ROWS = [
480086
480121
  "\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 ",
480087
480122
  "\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557",
480088
480123
  "\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D",
@@ -480094,38 +480129,21 @@ var init_URBanner = __esm(() => {
480094
480129
 
480095
480130
  // src/components/LogoV2/UrHouse.tsx
480096
480131
  function UrHouse({ size = "large" }) {
480097
- const rows = size === "small" ? SMALL : LARGE;
480132
+ const rows = size === "small" ? SMALL_HOUSE_ROWS : LARGE_HOUSE_ROWS;
480098
480133
  return /* @__PURE__ */ jsx_dev_runtime234.jsxDEV(ThemedBox_default, {
480099
480134
  flexDirection: "column",
480100
480135
  alignItems: "center",
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);
480136
+ children: rows.map((row, index2) => /* @__PURE__ */ jsx_dev_runtime234.jsxDEV(ThemedText, {
480137
+ color: "ur",
480138
+ children: row
480139
+ }, index2, false, undefined, this))
480140
+ }, undefined, false, undefined, this);
480123
480141
  }
480124
- var jsx_dev_runtime234, LARGE, SMALL, LARGE_SHADOW_START_ROW = 3, LARGE_HOUSE_BOTTOM_SHADOW = " \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 ";
480142
+ var jsx_dev_runtime234, LARGE_HOUSE_ROWS, SMALL_HOUSE_ROWS, AUTOMATIC_HOUSE_SIZE = "large";
480125
480143
  var init_UrHouse = __esm(() => {
480126
480144
  init_ink2();
480127
480145
  jsx_dev_runtime234 = __toESM(require_jsx_dev_runtime(), 1);
480128
- LARGE = [
480146
+ LARGE_HOUSE_ROWS = [
480129
480147
  " \u2571\u2572 ",
480130
480148
  " \u2571 \u2572 ",
480131
480149
  " \u2571 \u2572 ",
@@ -480135,7 +480153,7 @@ var init_UrHouse = __esm(() => {
480135
480153
  " \u2502 \u25A2\u25A2 \u2502 ",
480136
480154
  " \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2518 "
480137
480155
  ];
480138
- SMALL = [
480156
+ SMALL_HOUSE_ROWS = [
480139
480157
  " \u2571\u2572 ",
480140
480158
  "\u2571\u2500\u2500\u2572",
480141
480159
  "\u2502\u25A3\u25A3\u2502",
@@ -480830,7 +480848,8 @@ function LogoV2() {
480830
480848
  const activities = getRecentActivitySync();
480831
480849
  const username = getGlobalConfig().oauthAccount?.displayName ?? "";
480832
480850
  const {
480833
- columns
480851
+ columns,
480852
+ rows
480834
480853
  } = useTerminalSize();
480835
480854
  let t0;
480836
480855
  if ($2[0] === Symbol.for("react.memo_cache_sentinel")) {
@@ -480874,7 +480893,7 @@ function LogoV2() {
480874
480893
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
480875
480894
  t2 = () => {
480876
480895
  const currentConfig = getGlobalConfig();
480877
- if (currentConfig.lastReleaseNotesSeen === "1.81.5") {
480896
+ if (currentConfig.lastReleaseNotesSeen === "1.81.6") {
480878
480897
  return;
480879
480898
  }
480880
480899
  saveGlobalConfig(_temp325);
@@ -480897,7 +480916,7 @@ function LogoV2() {
480897
480916
  import_react144.useEffect(t2, t3);
480898
480917
  let t4;
480899
480918
  if ($2[5] === Symbol.for("react.memo_cache_sentinel")) {
480900
- t4 = !hasReleaseNotes && !showOnboarding && !isEnvTruthy(process.env.UR_CODE_FORCE_FULL_LOGO);
480919
+ t4 = shouldUseCondensedLogo(hasReleaseNotes, showOnboarding, isEnvTruthy(process.env.UR_CODE_COMPACT_LOGO), isEnvTruthy(process.env.UR_CODE_FORCE_FULL_LOGO));
480901
480920
  $2[5] = t4;
480902
480921
  } else {
480903
480922
  t4 = $2[5];
@@ -480958,7 +480977,7 @@ function LogoV2() {
480958
480977
  t10 = $2[14];
480959
480978
  }
480960
480979
  const modelDisplayName = t10;
480961
- if (!hasReleaseNotes && !showOnboarding && !isEnvTruthy(process.env.UR_CODE_FORCE_FULL_LOGO)) {
480980
+ if (isCondensedMode) {
480962
480981
  let t112;
480963
480982
  let t122;
480964
480983
  let t132;
@@ -481127,7 +481146,7 @@ function LogoV2() {
481127
481146
  t122 = /* @__PURE__ */ jsx_dev_runtime241.jsxDEV(ThemedBox_default, {
481128
481147
  marginY: 1,
481129
481148
  children: /* @__PURE__ */ jsx_dev_runtime241.jsxDEV(UrHouse, {
481130
- size: "small"
481149
+ size: AUTOMATIC_HOUSE_SIZE
481131
481150
  }, undefined, false, undefined, this)
481132
481151
  }, undefined, false, undefined, this);
481133
481152
  $2[34] = t122;
@@ -481276,7 +481295,7 @@ function LogoV2() {
481276
481295
  t19 = /* @__PURE__ */ jsx_dev_runtime241.jsxDEV(ThemedBox_default, {
481277
481296
  marginY: 1,
481278
481297
  children: /* @__PURE__ */ jsx_dev_runtime241.jsxDEV(UrHouse, {
481279
- size: "large"
481298
+ size: AUTOMATIC_HOUSE_SIZE
481280
481299
  }, undefined, false, undefined, this)
481281
481300
  }, undefined, false, undefined, this);
481282
481301
  $2[48] = t19;
@@ -481362,7 +481381,10 @@ function LogoV2() {
481362
481381
  width: rightWidth,
481363
481382
  alignItems: "center",
481364
481383
  justifyContent: "center",
481365
- children: /* @__PURE__ */ jsx_dev_runtime241.jsxDEV(URBanner, {}, undefined, false, undefined, this)
481384
+ children: /* @__PURE__ */ jsx_dev_runtime241.jsxDEV(URBanner, {
481385
+ availableWidth: rightWidth,
481386
+ availableHeight: Math.max(1, rows - 4)
481387
+ }, undefined, false, undefined, this)
481366
481388
  }, undefined, false, undefined, this);
481367
481389
  let t26;
481368
481390
  if ($2[62] !== T22 || $2[63] !== t15 || $2[64] !== t23 || $2[65] !== t24 || $2[66] !== t25) {
@@ -481559,12 +481581,12 @@ function LogoV2() {
481559
481581
  return t41;
481560
481582
  }
481561
481583
  function _temp325(current) {
481562
- if (current.lastReleaseNotesSeen === "1.81.5") {
481584
+ if (current.lastReleaseNotesSeen === "1.81.6") {
481563
481585
  return current;
481564
481586
  }
481565
481587
  return {
481566
481588
  ...current,
481567
- lastReleaseNotesSeen: "1.81.5"
481589
+ lastReleaseNotesSeen: "1.81.6"
481568
481590
  };
481569
481591
  }
481570
481592
  function _temp241(s_0) {
@@ -497514,7 +497536,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
497514
497536
  if (spec.name !== specName) {
497515
497537
  throw new Error("Agentic CI workflow spec name does not match");
497516
497538
  }
497517
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.5" : "1.81.5");
497539
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.6" : "1.81.6");
497518
497540
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
497519
497541
  throw new Error("invalid ur-agent package version");
497520
497542
  }
@@ -498507,7 +498529,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
498507
498529
  path: ".github/workflows/ur.yml",
498508
498530
  root: "project",
498509
498531
  content: compileAgenticCiWorkflow("default", {
498510
- packageVersion: typeof MACRO !== "undefined" ? "1.81.5" : "1.81.5"
498532
+ packageVersion: typeof MACRO !== "undefined" ? "1.81.6" : "1.81.6"
498511
498533
  })
498512
498534
  },
498513
498535
  {
@@ -498570,7 +498592,7 @@ function value(tokens, flag) {
498570
498592
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
498571
498593
  }
498572
498594
  function cliVersion() {
498573
- return typeof MACRO !== "undefined" ? "1.81.5" : "1.81.5";
498595
+ return typeof MACRO !== "undefined" ? "1.81.6" : "1.81.6";
498574
498596
  }
498575
498597
  function workflowPath(cwd2) {
498576
498598
  return join168(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -504426,7 +504448,7 @@ function createAcpStdioApp(deps) {
504426
504448
  }
504427
504449
  },
504428
504450
  authMethods: [],
504429
- agentInfo: { name: "UR-Nexus", version: "1.81.5" }
504451
+ agentInfo: { name: "UR-Nexus", version: "1.81.6" }
504430
504452
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
504431
504453
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
504432
504454
  await runtime2.announce({
@@ -504523,7 +504545,7 @@ function createAcpStdioAgent(deps) {
504523
504545
  }
504524
504546
  },
504525
504547
  authMethods: [],
504526
- agentInfo: { name: "UR-Nexus", version: "1.81.5" }
504548
+ agentInfo: { name: "UR-Nexus", version: "1.81.6" }
504527
504549
  });
504528
504550
  return;
504529
504551
  case "authenticate":
@@ -715775,7 +715797,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
715775
715797
  smapsRollup,
715776
715798
  platform: process.platform,
715777
715799
  nodeVersion: process.version,
715778
- ccVersion: "1.81.5"
715800
+ ccVersion: "1.81.6"
715779
715801
  };
715780
715802
  }
715781
715803
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -716364,7 +716386,7 @@ var init_bridge_kick = __esm(() => {
716364
716386
  var call154 = async () => {
716365
716387
  return {
716366
716388
  type: "text",
716367
- value: "1.81.5"
716389
+ value: "1.81.6"
716368
716390
  };
716369
716391
  }, version2, version_default;
716370
716392
  var init_version = __esm(() => {
@@ -720051,19 +720073,19 @@ function ProviderFirstModelPicker({
720051
720073
  marginBottom: 1,
720052
720074
  flexDirection: "column",
720053
720075
  children: [
720076
+ /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
720077
+ dimColor: true,
720078
+ color: "subtle",
720079
+ children: "Focused model \xB7 full name"
720080
+ }, undefined, false, undefined, this),
720054
720081
  /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
720055
720082
  bold: true,
720056
720083
  color: "text",
720057
- children: focusedModel.label
720084
+ children: fullProviderModelDisplayName(selectedProvider?.value ?? "", {
720085
+ id: focusedModel.value,
720086
+ displayName: focusedModel.label
720087
+ })
720058
720088
  }, 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),
720067
720089
  /* @__PURE__ */ jsx_dev_runtime336.jsxDEV(ThemedText, {
720068
720090
  dimColor: true,
720069
720091
  children: focusedModel.description
@@ -727733,7 +727755,7 @@ function generateHtmlReport(data, insights) {
727733
727755
  </html>`;
727734
727756
  }
727735
727757
  function buildExportData(data, insights, facets, remoteStats) {
727736
- const version3 = typeof MACRO !== "undefined" ? "1.81.5" : "unknown";
727758
+ const version3 = typeof MACRO !== "undefined" ? "1.81.6" : "unknown";
727737
727759
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
727738
727760
  const facets_summary = {
727739
727761
  total: facets.size,
@@ -732046,7 +732068,7 @@ var init_sessionStorage = __esm(() => {
732046
732068
  init_settings2();
732047
732069
  init_slowOperations();
732048
732070
  init_uuid();
732049
- VERSION7 = typeof MACRO !== "undefined" ? "1.81.5" : "unknown";
732071
+ VERSION7 = typeof MACRO !== "undefined" ? "1.81.6" : "unknown";
732050
732072
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
732051
732073
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
732052
732074
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -733261,7 +733283,7 @@ var init_filesystem = __esm(() => {
733261
733283
  });
733262
733284
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
733263
733285
  const nonce = randomBytes24(16).toString("hex");
733264
- return join243(getURTempDir(), "bundled-skills", "1.81.5", nonce);
733286
+ return join243(getURTempDir(), "bundled-skills", "1.81.6", nonce);
733265
733287
  });
733266
733288
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
733267
733289
  });
@@ -739661,7 +739683,7 @@ function computeFingerprint(messageText2, version3) {
739661
739683
  }
739662
739684
  function computeFingerprintFromMessages(messages) {
739663
739685
  const firstMessageText = extractFirstMessageText(messages);
739664
- return computeFingerprint(firstMessageText, "1.81.5");
739686
+ return computeFingerprint(firstMessageText, "1.81.6");
739665
739687
  }
739666
739688
  var FINGERPRINT_SALT = "59cf53e54c78";
739667
739689
  var init_fingerprint = () => {};
@@ -741596,7 +741618,7 @@ async function sideQuery(opts) {
741596
741618
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
741597
741619
  }
741598
741620
  const messageText2 = extractFirstUserMessageText(messages);
741599
- const fingerprint2 = computeFingerprint(messageText2, "1.81.5");
741621
+ const fingerprint2 = computeFingerprint(messageText2, "1.81.6");
741600
741622
  const attributionHeader = getAttributionHeader(fingerprint2);
741601
741623
  const systemBlocks = [
741602
741624
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -746430,7 +746452,7 @@ function buildSystemInitMessage(inputs) {
746430
746452
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
746431
746453
  apiKeySource: getURHQApiKeyWithSource().source,
746432
746454
  betas: getSdkBetas(),
746433
- ur_version: "1.81.5",
746455
+ ur_version: "1.81.6",
746434
746456
  output_style: outputStyle,
746435
746457
  agents: inputs.agents.map((agent2) => agent2.agentType),
746436
746458
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -760266,7 +760288,7 @@ var init_useVoiceEnabled = __esm(() => {
760266
760288
  function getSemverPart(version3) {
760267
760289
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
760268
760290
  }
760269
- function useUpdateNotification(updatedVersion, initialVersion = "1.81.5") {
760291
+ function useUpdateNotification(updatedVersion, initialVersion = "1.81.6") {
760270
760292
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
760271
760293
  if (!updatedVersion) {
760272
760294
  return null;
@@ -760315,7 +760337,7 @@ function AutoUpdater({
760315
760337
  return;
760316
760338
  }
760317
760339
  if (false) {}
760318
- const currentVersion = "1.81.5";
760340
+ const currentVersion = "1.81.6";
760319
760341
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
760320
760342
  let latestVersion = await getLatestVersion(channel);
760321
760343
  const isDisabled = isAutoUpdaterDisabled();
@@ -760544,12 +760566,12 @@ function NativeAutoUpdater({
760544
760566
  logEvent("tengu_native_auto_updater_start", {});
760545
760567
  try {
760546
760568
  const maxVersion = await getMaxVersion();
760547
- if (maxVersion && gt("1.81.5", maxVersion)) {
760569
+ if (maxVersion && gt("1.81.6", maxVersion)) {
760548
760570
  const msg = await getMaxVersionMessage();
760549
760571
  setMaxVersionIssue(msg ?? "affects your version");
760550
760572
  }
760551
760573
  const result = await installLatest(channel);
760552
- const currentVersion = "1.81.5";
760574
+ const currentVersion = "1.81.6";
760553
760575
  const latencyMs = Date.now() - startTime;
760554
760576
  if (result.lockFailed) {
760555
760577
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -760686,17 +760708,17 @@ function PackageManagerAutoUpdater(t0) {
760686
760708
  const maxVersion = await getMaxVersion();
760687
760709
  if (maxVersion && latest && gt(latest, maxVersion)) {
760688
760710
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
760689
- if (gte("1.81.5", maxVersion)) {
760690
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.5"} is already at or above maxVersion ${maxVersion}, skipping update`);
760711
+ if (gte("1.81.6", maxVersion)) {
760712
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.6"} is already at or above maxVersion ${maxVersion}, skipping update`);
760691
760713
  setUpdateAvailable(false);
760692
760714
  return;
760693
760715
  }
760694
760716
  latest = maxVersion;
760695
760717
  }
760696
- const hasUpdate = latest && !gte("1.81.5", latest) && !shouldSkipVersion(latest);
760718
+ const hasUpdate = latest && !gte("1.81.6", latest) && !shouldSkipVersion(latest);
760697
760719
  setUpdateAvailable(!!hasUpdate);
760698
760720
  if (hasUpdate) {
760699
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.5"} -> ${latest}`);
760721
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.6"} -> ${latest}`);
760700
760722
  }
760701
760723
  };
760702
760724
  $2[0] = t1;
@@ -760730,7 +760752,7 @@ function PackageManagerAutoUpdater(t0) {
760730
760752
  wrap: "truncate",
760731
760753
  children: [
760732
760754
  "currentVersion: ",
760733
- "1.81.5"
760755
+ "1.81.6"
760734
760756
  ]
760735
760757
  }, undefined, true, undefined, this);
760736
760758
  $2[3] = verbose;
@@ -771583,7 +771605,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
771583
771605
  project_dir: getOriginalCwd(),
771584
771606
  added_dirs: addedDirs
771585
771607
  },
771586
- version: "1.81.5",
771608
+ version: "1.81.6",
771587
771609
  output_style: {
771588
771610
  name: outputStyleName
771589
771611
  },
@@ -771718,7 +771740,7 @@ function StatusLineInner({
771718
771740
  const attention = customStatusError ?? taskAttention;
771719
771741
  const terminalSize = React133.useContext(TerminalSizeContext);
771720
771742
  const defaultStatusLineText = buildDefaultStatusBar({
771721
- version: "1.81.5",
771743
+ version: "1.81.6",
771722
771744
  providerLabel: providerRuntime.providerLabel,
771723
771745
  authMode: providerRuntime.authLabel,
771724
771746
  model: renderModelName(mainLoopModel) || providerRuntime.model || "",
@@ -783974,7 +783996,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
783974
783996
  } catch {}
783975
783997
  const data = {
783976
783998
  trigger: trigger2,
783977
- version: "1.81.5",
783999
+ version: "1.81.6",
783978
784000
  platform: process.platform,
783979
784001
  transcript,
783980
784002
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -796343,13 +796365,13 @@ function WelcomeV2() {
796343
796365
  dimColor: true,
796344
796366
  children: [
796345
796367
  "v",
796346
- "1.81.5"
796368
+ "1.81.6"
796347
796369
  ]
796348
796370
  }, undefined, true, undefined, this)
796349
796371
  ]
796350
796372
  }, undefined, true, undefined, this),
796351
796373
  /* @__PURE__ */ jsx_dev_runtime464.jsxDEV(UrHouse, {
796352
- size: "large"
796374
+ size: AUTOMATIC_HOUSE_SIZE
796353
796375
  }, undefined, false, undefined, this),
796354
796376
  /* @__PURE__ */ jsx_dev_runtime464.jsxDEV(ThemedText, {
796355
796377
  color: "ur",
@@ -797603,7 +797625,7 @@ function completeOnboarding() {
797603
797625
  saveGlobalConfig((current) => ({
797604
797626
  ...current,
797605
797627
  hasCompletedOnboarding: true,
797606
- lastOnboardingVersion: "1.81.5"
797628
+ lastOnboardingVersion: "1.81.6"
797607
797629
  }));
797608
797630
  }
797609
797631
  function showDialog(root2, renderer) {
@@ -802749,7 +802771,7 @@ function appendToLog(path28, message) {
802749
802771
  cwd: getFsImplementation().cwd(),
802750
802772
  userType: process.env.USER_TYPE,
802751
802773
  sessionId: getSessionId(),
802752
- version: "1.81.5"
802774
+ version: "1.81.6"
802753
802775
  };
802754
802776
  getLogWriter(path28).write(messageWithTimestamp);
802755
802777
  }
@@ -806913,8 +806935,8 @@ async function getEnvLessBridgeConfig() {
806913
806935
  }
806914
806936
  async function checkEnvLessBridgeMinVersion() {
806915
806937
  const cfg = await getEnvLessBridgeConfig();
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.
806938
+ if (cfg.min_version && lt("1.81.6", cfg.min_version)) {
806939
+ return `Your version of UR (${"1.81.6"}) is too old for Remote Control.
806918
806940
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
806919
806941
  }
806920
806942
  return null;
@@ -807388,7 +807410,7 @@ async function initBridgeCore(params) {
807388
807410
  const rawApi = createBridgeApiClient({
807389
807411
  baseUrl,
807390
807412
  getAccessToken,
807391
- runnerVersion: "1.81.5",
807413
+ runnerVersion: "1.81.6",
807392
807414
  onDebug: logForDebugging,
807393
807415
  onAuth401,
807394
807416
  getTrustedDeviceToken
@@ -816861,7 +816883,7 @@ function getAgUiCapabilities() {
816861
816883
  name: "UR-Nexus",
816862
816884
  type: "ur-nexus",
816863
816885
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
816864
- version: "1.81.5",
816886
+ version: "1.81.6",
816865
816887
  provider: "UR",
816866
816888
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
816867
816889
  },
@@ -818088,7 +818110,7 @@ function createMCPServer(cwd4, debug2, verbose) {
818088
818110
  };
818089
818111
  const server2 = new Server({
818090
818112
  name: "ur-nexus",
818091
- version: "1.81.5"
818113
+ version: "1.81.6"
818092
818114
  }, {
818093
818115
  capabilities: {
818094
818116
  tools: {}
@@ -819292,7 +819314,7 @@ function thrownResponse(error40) {
819292
819314
  }
819293
819315
  async function createUrMcp2026Runtime(options5) {
819294
819316
  const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
819295
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.5" }, { capabilities: {} });
819317
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.6" }, { capabilities: {} });
819296
819318
  const [clientTransport, serverTransport] = createLinkedTransportPair();
819297
819319
  try {
819298
819320
  await server2.connect(serverTransport);
@@ -819303,7 +819325,7 @@ async function createUrMcp2026Runtime(options5) {
819303
819325
  }
819304
819326
  const runtime2 = new Mcp2026Runtime({
819305
819327
  cwd: options5.cwd,
819306
- version: "1.81.5",
819328
+ version: "1.81.6",
819307
819329
  backend: {
819308
819330
  listTools: async () => {
819309
819331
  const listed = await client2.listTools();
@@ -822038,7 +822060,7 @@ async function update() {
822038
822060
  logEvent("tengu_update_check", {});
822039
822061
  const diagnostic2 = await getDoctorDiagnostic();
822040
822062
  const result = await checkUpgradeStatus({
822041
- currentVersion: "1.81.5",
822063
+ currentVersion: "1.81.6",
822042
822064
  packageName: UR_AGENT_PACKAGE_NAME,
822043
822065
  installationType: diagnostic2.installationType,
822044
822066
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -823366,7 +823388,7 @@ ${customInstructions}` : customInstructions;
823366
823388
  }
823367
823389
  }
823368
823390
  logForDiagnosticsNoPII("info", "started", {
823369
- version: "1.81.5",
823391
+ version: "1.81.6",
823370
823392
  is_native_binary: isInBundledMode()
823371
823393
  });
823372
823394
  registerCleanup(async () => {
@@ -824153,7 +824175,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
824153
824175
  pendingHookMessages
824154
824176
  }, renderAndRun);
824155
824177
  }
824156
- }).version("1.81.5 (UR-Nexus)", "-v, --version", "Output the version number");
824178
+ }).version("1.81.6 (UR-Nexus)", "-v, --version", "Output the version number");
824157
824179
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
824158
824180
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
824159
824181
  if (canUserConfigureAdvisor()) {
@@ -825280,7 +825302,7 @@ if (false) {}
825280
825302
  async function main2() {
825281
825303
  const args = process.argv.slice(2);
825282
825304
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
825283
- console.log(`${"1.81.5"} (UR-Nexus)`);
825305
+ console.log(`${"1.81.6"} (UR-Nexus)`);
825284
825306
  return;
825285
825307
  }
825286
825308
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
@@ -9,6 +9,23 @@ reproducible autonomous software engineering agent: every substantial task can
9
9
  be driven as `spec -> plan -> patch -> test -> report -> rollback`, with the
10
10
  spec as the durable source of truth and command evidence as the success gate.
11
11
 
12
+ ## v1.81.6 Addition
13
+
14
+ - File reads no longer inject a blanket instruction that blocks all code
15
+ improvements. Benign games, websites, applications, and developer tools can
16
+ be modified normally; UR continues to apply authorization, secret handling,
17
+ sandbox, destructive-action, and genuine malware safeguards based on actual
18
+ behavior and intent.
19
+ - OpenRouter keeps compact catalog rows while repeating the focused model's
20
+ complete provider/model ID immediately below the list.
21
+ - The welcome screen uses the original clean house mark without a shadow. The
22
+ full adaptive layout is the default at every terminal size; the small-house
23
+ condensed layout is explicit-only through
24
+ `UR_CODE_COMPACT_LOGO=1`.
25
+ - The full welcome pane uses a 16-line UR wordmark in the active UR theme color
26
+ and automatically switches to compact and minimal marks as terminal width or
27
+ height decreases.
28
+
12
29
  ## v1.81.0 Addition
13
30
 
14
31
  - UR now provides an explicit `/mode redteam` for authorized researchers. A
@@ -19,7 +19,7 @@ You need:
19
19
 
20
20
  ```sh
21
21
  ur --version
22
- # expected for this release: "1.81.5 (UR-Nexus)"
22
+ # expected for this release: "1.81.6 (UR-Nexus)"
23
23
  ```
24
24
 
25
25
  ### 0.0 Redteam mode and Reverse Skills (1.81.0)
package/docs/providers.md CHANGED
@@ -167,9 +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
- 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
170
+ the full, untruncated model ID immediately below the focused entry. Opening the
171
+ OpenRouter catalog always fetches the current `/models` endpoint and never
172
+ substitutes a cached list when that refresh fails. API-key entry for
173
173
  OpenAI, Claude, Gemini, and OpenRouter is a single aligned masked row; the key
174
174
  is stored in the OS keychain flow and is never written to settings.
175
175
 
@@ -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.5</p>
48
+ <p class="eyebrow">Version 1.81.6</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>
@@ -7,7 +7,7 @@ plugins {
7
7
  }
8
8
 
9
9
  group = "dev.urnexus"
10
- version = "1.81.5"
10
+ version = "1.81.6"
11
11
 
12
12
  repositories {
13
13
  mavenCentral()
@@ -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",
5
+ "version": "1.81.6",
6
6
  "publisher": "ur-nexus",
7
7
  "engines": {
8
8
  "vscode": "^1.92.0"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ur-agent",
3
- "version": "1.81.5",
3
+ "version": "1.81.6",
4
4
  "description": "UR-Nexus — autonomous engineering workflow engine (plan, execute, test, verify, document, benchmark, reproduce)",
5
5
  "type": "module",
6
6
  "packageManager": "bun@1.3.14",