ur-agent 1.41.0 → 1.42.0

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,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.42.0
4
+
5
+ - Project safety policy no longer hard-blocks commands. Risky or deny-matched
6
+ commands (package installs, destructive git operations, secret access,
7
+ sandbox-required commands when the sandbox is unavailable) now surface as
8
+ approval prompts instead of `Blocked by project safety policy` errors; the
9
+ user decides. `ur safety`/`ur sandbox` evaluation output is unchanged.
10
+
11
+ ## 1.41.1
12
+
13
+ - Harden provider tests against stored API keys in the local secure storage.
14
+ - Revert sandbox default to disabled; expose `sandbox.enabled`,
15
+ `sandbox.failIfUnavailable`, and `sandbox.allowUnsandboxedCommands` through
16
+ the `/config` tool so users can toggle the sandbox on/off explicitly.
17
+
3
18
  ## 1.41.0
4
19
 
5
20
  - Persist the model chosen through the interactive `/model` picker to settings
package/dist/cli.js CHANGED
@@ -71146,7 +71146,7 @@ var init_auth = __esm(() => {
71146
71146
 
71147
71147
  // src/utils/userAgent.ts
71148
71148
  function getURCodeUserAgent() {
71149
- return `ur/${"1.41.0"}`;
71149
+ return `ur/${"1.42.0"}`;
71150
71150
  }
71151
71151
 
71152
71152
  // src/utils/workloadContext.ts
@@ -71168,7 +71168,7 @@ function getUserAgent() {
71168
71168
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
71169
71169
  const workload = getWorkload();
71170
71170
  const workloadSuffix = workload ? `, workload/${workload}` : "";
71171
- return `ur-cli/${"1.41.0"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
71171
+ return `ur-cli/${"1.42.0"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
71172
71172
  }
71173
71173
  function getMCPUserAgent() {
71174
71174
  const parts = [];
@@ -71182,7 +71182,7 @@ function getMCPUserAgent() {
71182
71182
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
71183
71183
  }
71184
71184
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
71185
- return `ur/${"1.41.0"}${suffix}`;
71185
+ return `ur/${"1.42.0"}${suffix}`;
71186
71186
  }
71187
71187
  function getWebFetchUserAgent() {
71188
71188
  return `UR-User (${getURCodeUserAgent()})`;
@@ -71320,7 +71320,7 @@ var init_user = __esm(() => {
71320
71320
  deviceId,
71321
71321
  sessionId: getSessionId(),
71322
71322
  email: getEmail(),
71323
- appVersion: "1.41.0",
71323
+ appVersion: "1.42.0",
71324
71324
  platform: getHostPlatformForAnalytics(),
71325
71325
  organizationUuid,
71326
71326
  accountUuid,
@@ -77837,7 +77837,7 @@ var init_metadata = __esm(() => {
77837
77837
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
77838
77838
  WHITESPACE_REGEX = /\s+/;
77839
77839
  getVersionBase = memoize_default(() => {
77840
- const match = "1.41.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
77840
+ const match = "1.42.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
77841
77841
  return match ? match[0] : undefined;
77842
77842
  });
77843
77843
  buildEnvContext = memoize_default(async () => {
@@ -77877,7 +77877,7 @@ var init_metadata = __esm(() => {
77877
77877
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
77878
77878
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
77879
77879
  isURAiAuth: isURAISubscriber(),
77880
- version: "1.41.0",
77880
+ version: "1.42.0",
77881
77881
  versionBase: getVersionBase(),
77882
77882
  buildTime: "",
77883
77883
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -78547,7 +78547,7 @@ function initialize1PEventLogging() {
78547
78547
  const platform2 = getPlatform();
78548
78548
  const attributes = {
78549
78549
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
78550
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.41.0"
78550
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.42.0"
78551
78551
  };
78552
78552
  if (platform2 === "wsl") {
78553
78553
  const wslVersion = getWslVersion();
@@ -78574,7 +78574,7 @@ function initialize1PEventLogging() {
78574
78574
  })
78575
78575
  ]
78576
78576
  });
78577
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.41.0");
78577
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.42.0");
78578
78578
  }
78579
78579
  async function reinitialize1PEventLoggingIfConfigChanged() {
78580
78580
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -83873,7 +83873,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
83873
83873
  function formatA2AAgentCard(options = {}, pretty = true) {
83874
83874
  return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
83875
83875
  }
83876
- var urVersion = "1.41.0", coverage, priorityRoadmap;
83876
+ var urVersion = "1.42.0", coverage, priorityRoadmap;
83877
83877
  var init_trends = __esm(() => {
83878
83878
  coverage = [
83879
83879
  {
@@ -85868,7 +85868,7 @@ function getAttributionHeader(fingerprint) {
85868
85868
  if (!isAttributionHeaderEnabled()) {
85869
85869
  return "";
85870
85870
  }
85871
- const version2 = `${"1.41.0"}.${fingerprint}`;
85871
+ const version2 = `${"1.42.0"}.${fingerprint}`;
85872
85872
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
85873
85873
  const cch = "";
85874
85874
  const workload = getWorkload();
@@ -127181,10 +127181,10 @@ async function detectWorktreeMainRepoPath(cwd2) {
127181
127181
  function getSandboxEnabledSetting() {
127182
127182
  try {
127183
127183
  const settings = getSettings_DEPRECATED();
127184
- return settings?.sandbox?.enabled ?? true;
127184
+ return settings?.sandbox?.enabled ?? false;
127185
127185
  } catch (error40) {
127186
127186
  logForDebugging(`Failed to get settings for sandbox check: ${error40}`);
127187
- return true;
127187
+ return false;
127188
127188
  }
127189
127189
  }
127190
127190
  function isAutoAllowBashIfSandboxedEnabled() {
@@ -193771,7 +193771,7 @@ function getTelemetryAttributes() {
193771
193771
  attributes["session.id"] = sessionId;
193772
193772
  }
193773
193773
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
193774
- attributes["app.version"] = "1.41.0";
193774
+ attributes["app.version"] = "1.42.0";
193775
193775
  }
193776
193776
  const oauthAccount = getOauthAccountInfo();
193777
193777
  if (oauthAccount) {
@@ -229157,7 +229157,7 @@ function getInstallationEnv() {
229157
229157
  return;
229158
229158
  }
229159
229159
  function getURCodeVersion() {
229160
- return "1.41.0";
229160
+ return "1.42.0";
229161
229161
  }
229162
229162
  async function getInstalledVSCodeExtensionVersion(command) {
229163
229163
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -231996,7 +231996,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
231996
231996
  const client2 = new Client({
231997
231997
  name: "ur",
231998
231998
  title: "UR",
231999
- version: "1.41.0",
231999
+ version: "1.42.0",
232000
232000
  description: "UR-Nexus autonomous engineering workflow engine",
232001
232001
  websiteUrl: PRODUCT_URL
232002
232002
  }, {
@@ -232350,7 +232350,7 @@ var init_client5 = __esm(() => {
232350
232350
  const client2 = new Client({
232351
232351
  name: "ur",
232352
232352
  title: "UR",
232353
- version: "1.41.0",
232353
+ version: "1.42.0",
232354
232354
  description: "UR-Nexus autonomous engineering workflow engine",
232355
232355
  websiteUrl: PRODUCT_URL
232356
232356
  }, {
@@ -242164,9 +242164,9 @@ async function assertMinVersion() {
242164
242164
  if (false) {}
242165
242165
  try {
242166
242166
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
242167
- if (versionConfig.minVersion && lt("1.41.0", versionConfig.minVersion)) {
242167
+ if (versionConfig.minVersion && lt("1.42.0", versionConfig.minVersion)) {
242168
242168
  console.error(`
242169
- It looks like your version of UR (${"1.41.0"}) needs an update.
242169
+ It looks like your version of UR (${"1.42.0"}) needs an update.
242170
242170
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
242171
242171
 
242172
242172
  To update, please run:
@@ -242382,7 +242382,7 @@ async function installGlobalPackage(specificVersion) {
242382
242382
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
242383
242383
  logEvent("tengu_auto_updater_lock_contention", {
242384
242384
  pid: process.pid,
242385
- currentVersion: "1.41.0"
242385
+ currentVersion: "1.42.0"
242386
242386
  });
242387
242387
  return "in_progress";
242388
242388
  }
@@ -242391,7 +242391,7 @@ async function installGlobalPackage(specificVersion) {
242391
242391
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
242392
242392
  logError2(new Error("Windows NPM detected in WSL environment"));
242393
242393
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
242394
- currentVersion: "1.41.0"
242394
+ currentVersion: "1.42.0"
242395
242395
  });
242396
242396
  console.error(`
242397
242397
  Error: Windows NPM detected in WSL
@@ -242926,7 +242926,7 @@ function detectLinuxGlobPatternWarnings() {
242926
242926
  }
242927
242927
  async function getDoctorDiagnostic() {
242928
242928
  const installationType = await getCurrentInstallationType();
242929
- const version2 = typeof MACRO !== "undefined" ? "1.41.0" : "unknown";
242929
+ const version2 = typeof MACRO !== "undefined" ? "1.42.0" : "unknown";
242930
242930
  const installationPath = await getInstallationPath();
242931
242931
  const invokedBinary = getInvokedBinary();
242932
242932
  const multipleInstallations = await detectMultipleInstallations();
@@ -243861,8 +243861,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
243861
243861
  const maxVersion = await getMaxVersion();
243862
243862
  if (maxVersion && gt(version2, maxVersion)) {
243863
243863
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
243864
- if (gte("1.41.0", maxVersion)) {
243865
- logForDebugging(`Native installer: current version ${"1.41.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
243864
+ if (gte("1.42.0", maxVersion)) {
243865
+ logForDebugging(`Native installer: current version ${"1.42.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
243866
243866
  logEvent("tengu_native_update_skipped_max_version", {
243867
243867
  latency_ms: Date.now() - startTime,
243868
243868
  max_version: maxVersion,
@@ -243873,7 +243873,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
243873
243873
  version2 = maxVersion;
243874
243874
  }
243875
243875
  }
243876
- if (!forceReinstall && version2 === "1.41.0" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
243876
+ if (!forceReinstall && version2 === "1.42.0" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
243877
243877
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
243878
243878
  logEvent("tengu_native_update_complete", {
243879
243879
  latency_ms: Date.now() - startTime,
@@ -301849,6 +301849,24 @@ var init_supportedSettings = __esm(() => {
301849
301849
  description: "Enable extended thinking (false to disable)",
301850
301850
  appStateKey: "thinkingEnabled"
301851
301851
  },
301852
+ "sandbox.enabled": {
301853
+ source: "settings",
301854
+ type: "boolean",
301855
+ description: "Enable the OS-level sandbox for Bash/File tool commands",
301856
+ path: ["sandbox", "enabled"]
301857
+ },
301858
+ "sandbox.failIfUnavailable": {
301859
+ source: "settings",
301860
+ type: "boolean",
301861
+ description: "Refuse to start when sandbox.enabled is true but the sandbox cannot start",
301862
+ path: ["sandbox", "failIfUnavailable"]
301863
+ },
301864
+ "sandbox.allowUnsandboxedCommands": {
301865
+ source: "settings",
301866
+ type: "boolean",
301867
+ description: "Allow commands to run unsandboxed when they explicitly request it",
301868
+ path: ["sandbox", "allowUnsandboxedCommands"]
301869
+ },
301852
301870
  "permissions.defaultMode": {
301853
301871
  source: "settings",
301854
301872
  type: "string",
@@ -311247,27 +311265,27 @@ async function bashToolHasPermission(input, context3, getCommandSubcommandPrefix
311247
311265
  if (safetyEvaluation.behavior === "deny") {
311248
311266
  const reason = safetyEvaluation.reasons.join("; ");
311249
311267
  recordShellSafetyViolation(safetyEvaluation, reason);
311268
+ const decisionReason2 = {
311269
+ type: "other",
311270
+ reason: `Project safety policy requires approval: ${reason}`
311271
+ };
311250
311272
  return {
311251
- behavior: "deny",
311252
- message: `Blocked by project safety policy: ${reason}`,
311253
- decisionReason: {
311254
- type: "other",
311255
- reason: `Project safety policy denied command: ${reason}`
311256
- }
311273
+ behavior: "ask",
311274
+ decisionReason: decisionReason2,
311275
+ message: createPermissionRequestMessage2(BashTool.name, decisionReason2),
311276
+ suggestions: []
311257
311277
  };
311258
311278
  }
311259
311279
  if (safetyEvaluation.sandboxMode === "required" && !shouldUseSandbox(input)) {
311260
- const reason = safetyEvaluation.reasons.join("; ");
311261
- const unavailableReason = SandboxManager2.getSandboxUnavailableReason() ?? "sandbox is disabled, unavailable, or bypassed for this command";
311262
- const message = `Blocked by project safety policy: sandbox is required but unavailable. ${unavailableReason}`;
311263
- recordShellSafetyViolation(safetyEvaluation, `${reason}; ${unavailableReason}`);
311280
+ const decisionReason2 = {
311281
+ type: "other",
311282
+ reason: `Sandbox unavailable; approval required to run unsandboxed: ${safetyEvaluation.reasons.join("; ")}`
311283
+ };
311264
311284
  return {
311265
- behavior: "deny",
311266
- message,
311267
- decisionReason: {
311268
- type: "other",
311269
- reason: `Project safety policy requires sandbox enforcement: ${reason}; ${unavailableReason}`
311270
- }
311285
+ behavior: "ask",
311286
+ decisionReason: decisionReason2,
311287
+ message: createPermissionRequestMessage2(BashTool.name, decisionReason2),
311288
+ suggestions: []
311271
311289
  };
311272
311290
  }
311273
311291
  if (safetyEvaluation.behavior === "ask") {
@@ -340826,7 +340844,7 @@ function Feedback({
340826
340844
  platform: env2.platform,
340827
340845
  gitRepo: envInfo.isGit,
340828
340846
  terminal: env2.terminal,
340829
- version: "1.41.0",
340847
+ version: "1.42.0",
340830
340848
  transcript: normalizeMessagesForAPI(messages),
340831
340849
  errors: sanitizedErrors,
340832
340850
  lastApiRequest: getLastAPIRequest(),
@@ -341018,7 +341036,7 @@ function Feedback({
341018
341036
  ", ",
341019
341037
  env2.terminal,
341020
341038
  ", v",
341021
- "1.41.0"
341039
+ "1.42.0"
341022
341040
  ]
341023
341041
  }, undefined, true, undefined, this)
341024
341042
  ]
@@ -341124,7 +341142,7 @@ ${sanitizedDescription}
341124
341142
  ` + `**Environment Info**
341125
341143
  ` + `- Platform: ${env2.platform}
341126
341144
  ` + `- Terminal: ${env2.terminal}
341127
- ` + `- Version: ${"1.41.0"}
341145
+ ` + `- Version: ${"1.42.0"}
341128
341146
  ` + `- Feedback ID: ${feedbackId}
341129
341147
  ` + `
341130
341148
  **Errors**
@@ -344235,7 +344253,7 @@ function buildPrimarySection() {
344235
344253
  }, undefined, false, undefined, this);
344236
344254
  return [{
344237
344255
  label: "Version",
344238
- value: "1.41.0"
344256
+ value: "1.42.0"
344239
344257
  }, {
344240
344258
  label: "Session name",
344241
344259
  value: nameValue
@@ -347536,7 +347554,7 @@ function Config({
347536
347554
  }
347537
347555
  }, undefined, false, undefined, this)
347538
347556
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime177.jsxDEV(ChannelDowngradeDialog, {
347539
- currentVersion: "1.41.0",
347557
+ currentVersion: "1.42.0",
347540
347558
  onChoice: (choice) => {
347541
347559
  setShowSubmenu(null);
347542
347560
  setTabsHidden(false);
@@ -347548,7 +347566,7 @@ function Config({
347548
347566
  autoUpdatesChannel: "stable"
347549
347567
  };
347550
347568
  if (choice === "stay") {
347551
- newSettings.minimumVersion = "1.41.0";
347569
+ newSettings.minimumVersion = "1.42.0";
347552
347570
  }
347553
347571
  updateSettingsForSource("userSettings", newSettings);
347554
347572
  setSettingsData((prev_27) => ({
@@ -355618,7 +355636,7 @@ function HelpV2(t0) {
355618
355636
  let t6;
355619
355637
  if ($3[31] !== tabs) {
355620
355638
  t6 = /* @__PURE__ */ jsx_dev_runtime204.jsxDEV(Tabs, {
355621
- title: `UR v${"1.41.0"}`,
355639
+ title: `UR v${"1.42.0"}`,
355622
355640
  color: "professionalBlue",
355623
355641
  defaultTab: "general",
355624
355642
  children: tabs
@@ -356364,7 +356382,7 @@ function buildToolUseContext(tools, readFileStateCache) {
356364
356382
  async function handleInitialize(options2) {
356365
356383
  return {
356366
356384
  name: "UR",
356367
- version: "1.41.0",
356385
+ version: "1.42.0",
356368
356386
  protocolVersion: "0.1.0",
356369
356387
  workspaceRoot: options2.cwd,
356370
356388
  capabilities: {
@@ -376506,7 +376524,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
376506
376524
  return [];
376507
376525
  }
376508
376526
  }
376509
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.41.0") {
376527
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.42.0") {
376510
376528
  if (process.env.USER_TYPE === "ant") {
376511
376529
  const changelog = "";
376512
376530
  if (changelog) {
@@ -376533,7 +376551,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.41.0")
376533
376551
  releaseNotes
376534
376552
  };
376535
376553
  }
376536
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.41.0") {
376554
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.42.0") {
376537
376555
  if (process.env.USER_TYPE === "ant") {
376538
376556
  const changelog = "";
376539
376557
  if (changelog) {
@@ -377712,7 +377730,7 @@ function getRecentActivitySync() {
377712
377730
  return cachedActivity;
377713
377731
  }
377714
377732
  function getLogoDisplayData() {
377715
- const version2 = process.env.DEMO_VERSION ?? "1.41.0";
377733
+ const version2 = process.env.DEMO_VERSION ?? "1.42.0";
377716
377734
  const serverUrl = getDirectConnectServerUrl();
377717
377735
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
377718
377736
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -378501,7 +378519,7 @@ function LogoV2() {
378501
378519
  if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
378502
378520
  t2 = () => {
378503
378521
  const currentConfig2 = getGlobalConfig();
378504
- if (currentConfig2.lastReleaseNotesSeen === "1.41.0") {
378522
+ if (currentConfig2.lastReleaseNotesSeen === "1.42.0") {
378505
378523
  return;
378506
378524
  }
378507
378525
  saveGlobalConfig(_temp326);
@@ -379186,12 +379204,12 @@ function LogoV2() {
379186
379204
  return t41;
379187
379205
  }
379188
379206
  function _temp326(current) {
379189
- if (current.lastReleaseNotesSeen === "1.41.0") {
379207
+ if (current.lastReleaseNotesSeen === "1.42.0") {
379190
379208
  return current;
379191
379209
  }
379192
379210
  return {
379193
379211
  ...current,
379194
- lastReleaseNotesSeen: "1.41.0"
379212
+ lastReleaseNotesSeen: "1.42.0"
379195
379213
  };
379196
379214
  }
379197
379215
  function _temp243(s_0) {
@@ -410814,7 +410832,7 @@ var init_code_index2 = __esm(() => {
410814
410832
 
410815
410833
  // node_modules/typescript/lib/typescript.js
410816
410834
  var require_typescript2 = __commonJS((exports, module) => {
410817
- var __dirname = "/Users/maith/Desktop/ur3-dev/UR-1.41.0/node_modules/typescript/lib", __filename = "/Users/maith/Desktop/ur3-dev/UR-1.41.0/node_modules/typescript/lib/typescript.js";
410835
+ var __dirname = "/sessions/friendly-inspiring-goldberg/mnt/UR-1.41.1/node_modules/typescript/lib", __filename = "/sessions/friendly-inspiring-goldberg/mnt/UR-1.41.1/node_modules/typescript/lib/typescript.js";
410818
410836
  /*! *****************************************************************************
410819
410837
  Copyright (c) Microsoft Corporation. All rights reserved.
410820
410838
  Licensed under the Apache License, Version 2.0 (the "License"); you may not use
@@ -596348,7 +596366,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
596348
596366
  smapsRollup,
596349
596367
  platform: process.platform,
596350
596368
  nodeVersion: process.version,
596351
- ccVersion: "1.41.0"
596369
+ ccVersion: "1.42.0"
596352
596370
  };
596353
596371
  }
596354
596372
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -596934,7 +596952,7 @@ var init_bridge_kick = __esm(() => {
596934
596952
  var call137 = async () => {
596935
596953
  return {
596936
596954
  type: "text",
596937
- value: "1.41.0"
596955
+ value: "1.42.0"
596938
596956
  };
596939
596957
  }, version2, version_default;
596940
596958
  var init_version = __esm(() => {
@@ -607027,7 +607045,7 @@ function generateHtmlReport(data, insights) {
607027
607045
  </html>`;
607028
607046
  }
607029
607047
  function buildExportData(data, insights, facets, remoteStats) {
607030
- const version3 = typeof MACRO !== "undefined" ? "1.41.0" : "unknown";
607048
+ const version3 = typeof MACRO !== "undefined" ? "1.42.0" : "unknown";
607031
607049
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
607032
607050
  const facets_summary = {
607033
607051
  total: facets.size,
@@ -611307,7 +611325,7 @@ var init_sessionStorage = __esm(() => {
611307
611325
  init_settings2();
611308
611326
  init_slowOperations();
611309
611327
  init_uuid();
611310
- VERSION5 = typeof MACRO !== "undefined" ? "1.41.0" : "unknown";
611328
+ VERSION5 = typeof MACRO !== "undefined" ? "1.42.0" : "unknown";
611311
611329
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
611312
611330
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
611313
611331
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -612512,7 +612530,7 @@ var init_filesystem = __esm(() => {
612512
612530
  });
612513
612531
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
612514
612532
  const nonce = randomBytes18(16).toString("hex");
612515
- return join202(getURTempDir(), "bundled-skills", "1.41.0", nonce);
612533
+ return join202(getURTempDir(), "bundled-skills", "1.42.0", nonce);
612516
612534
  });
612517
612535
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
612518
612536
  });
@@ -618801,7 +618819,7 @@ function computeFingerprint(messageText2, version3) {
618801
618819
  }
618802
618820
  function computeFingerprintFromMessages(messages) {
618803
618821
  const firstMessageText = extractFirstMessageText(messages);
618804
- return computeFingerprint(firstMessageText, "1.41.0");
618822
+ return computeFingerprint(firstMessageText, "1.42.0");
618805
618823
  }
618806
618824
  var FINGERPRINT_SALT = "59cf53e54c78";
618807
618825
  var init_fingerprint = () => {};
@@ -620675,7 +620693,7 @@ async function sideQuery(opts) {
620675
620693
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
620676
620694
  }
620677
620695
  const messageText2 = extractFirstUserMessageText(messages);
620678
- const fingerprint2 = computeFingerprint(messageText2, "1.41.0");
620696
+ const fingerprint2 = computeFingerprint(messageText2, "1.42.0");
620679
620697
  const attributionHeader = getAttributionHeader(fingerprint2);
620680
620698
  const systemBlocks = [
620681
620699
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -625412,7 +625430,7 @@ function buildSystemInitMessage(inputs) {
625412
625430
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
625413
625431
  apiKeySource: getURHQApiKeyWithSource().source,
625414
625432
  betas: getSdkBetas(),
625415
- ur_version: "1.41.0",
625433
+ ur_version: "1.42.0",
625416
625434
  output_style: outputStyle2,
625417
625435
  agents: inputs.agents.map((agent) => agent.agentType),
625418
625436
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -640040,7 +640058,7 @@ var init_useVoiceEnabled = __esm(() => {
640040
640058
  function getSemverPart(version3) {
640041
640059
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
640042
640060
  }
640043
- function useUpdateNotification(updatedVersion, initialVersion = "1.41.0") {
640061
+ function useUpdateNotification(updatedVersion, initialVersion = "1.42.0") {
640044
640062
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react226.useState(() => getSemverPart(initialVersion));
640045
640063
  if (!updatedVersion) {
640046
640064
  return null;
@@ -640089,7 +640107,7 @@ function AutoUpdater({
640089
640107
  return;
640090
640108
  }
640091
640109
  if (false) {}
640092
- const currentVersion = "1.41.0";
640110
+ const currentVersion = "1.42.0";
640093
640111
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
640094
640112
  let latestVersion = await getLatestVersion(channel);
640095
640113
  const isDisabled = isAutoUpdaterDisabled();
@@ -640318,12 +640336,12 @@ function NativeAutoUpdater({
640318
640336
  logEvent("tengu_native_auto_updater_start", {});
640319
640337
  try {
640320
640338
  const maxVersion = await getMaxVersion();
640321
- if (maxVersion && gt("1.41.0", maxVersion)) {
640339
+ if (maxVersion && gt("1.42.0", maxVersion)) {
640322
640340
  const msg = await getMaxVersionMessage();
640323
640341
  setMaxVersionIssue(msg ?? "affects your version");
640324
640342
  }
640325
640343
  const result = await installLatest(channel);
640326
- const currentVersion = "1.41.0";
640344
+ const currentVersion = "1.42.0";
640327
640345
  const latencyMs = Date.now() - startTime;
640328
640346
  if (result.lockFailed) {
640329
640347
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -640460,17 +640478,17 @@ function PackageManagerAutoUpdater(t0) {
640460
640478
  const maxVersion = await getMaxVersion();
640461
640479
  if (maxVersion && latest && gt(latest, maxVersion)) {
640462
640480
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
640463
- if (gte("1.41.0", maxVersion)) {
640464
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.41.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
640481
+ if (gte("1.42.0", maxVersion)) {
640482
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.42.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
640465
640483
  setUpdateAvailable(false);
640466
640484
  return;
640467
640485
  }
640468
640486
  latest = maxVersion;
640469
640487
  }
640470
- const hasUpdate = latest && !gte("1.41.0", latest) && !shouldSkipVersion(latest);
640488
+ const hasUpdate = latest && !gte("1.42.0", latest) && !shouldSkipVersion(latest);
640471
640489
  setUpdateAvailable(!!hasUpdate);
640472
640490
  if (hasUpdate) {
640473
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.41.0"} -> ${latest}`);
640491
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.42.0"} -> ${latest}`);
640474
640492
  }
640475
640493
  };
640476
640494
  $3[0] = t1;
@@ -640504,7 +640522,7 @@ function PackageManagerAutoUpdater(t0) {
640504
640522
  wrap: "truncate",
640505
640523
  children: [
640506
640524
  "currentVersion: ",
640507
- "1.41.0"
640525
+ "1.42.0"
640508
640526
  ]
640509
640527
  }, undefined, true, undefined, this);
640510
640528
  $3[3] = verbose;
@@ -652956,7 +652974,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
652956
652974
  project_dir: getOriginalCwd(),
652957
652975
  added_dirs: addedDirs
652958
652976
  },
652959
- version: "1.41.0",
652977
+ version: "1.42.0",
652960
652978
  output_style: {
652961
652979
  name: outputStyleName
652962
652980
  },
@@ -653039,7 +653057,7 @@ function StatusLineInner({
653039
653057
  const taskValues = Object.values(tasks2);
653040
653058
  const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
653041
653059
  const defaultStatusLineText = buildDefaultStatusBar({
653042
- version: "1.41.0",
653060
+ version: "1.42.0",
653043
653061
  providerLabel: providerRuntime.providerLabel,
653044
653062
  authMode: providerRuntime.authLabel,
653045
653063
  model: providerRuntime.model ?? renderModelName(mainLoopModel),
@@ -664527,7 +664545,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
664527
664545
  } catch {}
664528
664546
  const data = {
664529
664547
  trigger: trigger2,
664530
- version: "1.41.0",
664548
+ version: "1.42.0",
664531
664549
  platform: process.platform,
664532
664550
  transcript,
664533
664551
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -676412,7 +676430,7 @@ function WelcomeV2() {
676412
676430
  dimColor: true,
676413
676431
  children: [
676414
676432
  "v",
676415
- "1.41.0"
676433
+ "1.42.0"
676416
676434
  ]
676417
676435
  }, undefined, true, undefined, this)
676418
676436
  ]
@@ -677672,7 +677690,7 @@ function completeOnboarding() {
677672
677690
  saveGlobalConfig((current) => ({
677673
677691
  ...current,
677674
677692
  hasCompletedOnboarding: true,
677675
- lastOnboardingVersion: "1.41.0"
677693
+ lastOnboardingVersion: "1.42.0"
677676
677694
  }));
677677
677695
  }
677678
677696
  function showDialog(root2, renderer) {
@@ -682709,7 +682727,7 @@ function appendToLog(path24, message) {
682709
682727
  cwd: getFsImplementation().cwd(),
682710
682728
  userType: process.env.USER_TYPE,
682711
682729
  sessionId: getSessionId(),
682712
- version: "1.41.0"
682730
+ version: "1.42.0"
682713
682731
  };
682714
682732
  getLogWriter(path24).write(messageWithTimestamp);
682715
682733
  }
@@ -686803,8 +686821,8 @@ async function getEnvLessBridgeConfig() {
686803
686821
  }
686804
686822
  async function checkEnvLessBridgeMinVersion() {
686805
686823
  const cfg = await getEnvLessBridgeConfig();
686806
- if (cfg.min_version && lt("1.41.0", cfg.min_version)) {
686807
- return `Your version of UR (${"1.41.0"}) is too old for Remote Control.
686824
+ if (cfg.min_version && lt("1.42.0", cfg.min_version)) {
686825
+ return `Your version of UR (${"1.42.0"}) is too old for Remote Control.
686808
686826
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
686809
686827
  }
686810
686828
  return null;
@@ -687278,7 +687296,7 @@ async function initBridgeCore(params) {
687278
687296
  const rawApi = createBridgeApiClient({
687279
687297
  baseUrl,
687280
687298
  getAccessToken,
687281
- runnerVersion: "1.41.0",
687299
+ runnerVersion: "1.42.0",
687282
687300
  onDebug: logForDebugging,
687283
687301
  onAuth401,
687284
687302
  getTrustedDeviceToken
@@ -692960,7 +692978,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
692960
692978
  setCwd(cwd3);
692961
692979
  const server2 = new Server({
692962
692980
  name: "ur/tengu",
692963
- version: "1.41.0"
692981
+ version: "1.42.0"
692964
692982
  }, {
692965
692983
  capabilities: {
692966
692984
  tools: {}
@@ -695002,7 +695020,7 @@ async function update() {
695002
695020
  logEvent("tengu_update_check", {});
695003
695021
  const diagnostic = await getDoctorDiagnostic();
695004
695022
  const result = await checkUpgradeStatus({
695005
- currentVersion: "1.41.0",
695023
+ currentVersion: "1.42.0",
695006
695024
  packageName: UR_AGENT_PACKAGE_NAME,
695007
695025
  installationType: diagnostic.installationType,
695008
695026
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -696248,7 +696266,7 @@ ${customInstructions}` : customInstructions;
696248
696266
  }
696249
696267
  }
696250
696268
  logForDiagnosticsNoPII("info", "started", {
696251
- version: "1.41.0",
696269
+ version: "1.42.0",
696252
696270
  is_native_binary: isInBundledMode()
696253
696271
  });
696254
696272
  registerCleanup(async () => {
@@ -697034,7 +697052,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
697034
697052
  pendingHookMessages
697035
697053
  }, renderAndRun);
697036
697054
  }
697037
- }).version("1.41.0 (UR-Nexus)", "-v, --version", "Output the version number");
697055
+ }).version("1.42.0 (UR-Nexus)", "-v, --version", "Output the version number");
697038
697056
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
697039
697057
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
697040
697058
  if (canUserConfigureAdvisor()) {
@@ -697949,7 +697967,7 @@ if (false) {}
697949
697967
  async function main2() {
697950
697968
  const args = process.argv.slice(2);
697951
697969
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
697952
- console.log(`${"1.41.0"} (UR-Nexus)`);
697970
+ console.log(`${"1.42.0"} (UR-Nexus)`);
697953
697971
  return;
697954
697972
  }
697955
697973
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
@@ -365,6 +365,15 @@ Sandbox behavior has three modes, controlled by `sandbox.enabled` and
365
365
  UR fails closed: it refuses to start rather than run without a working
366
366
  sandbox.
367
367
 
368
+ To turn the sandbox on or off, use the `/config` tool or run:
369
+
370
+ ```sh
371
+ ur config set sandbox.enabled true
372
+ ur config set sandbox.enabled false
373
+ ```
374
+
375
+ You can also inspect the current state with `ur sandbox status`.
376
+
368
377
  OS confinement depends on platform support: `sandbox-exec` (Seatbelt) on
369
378
  macOS, or `bwrap` (bubblewrap) on Linux/WSL2. `ur sandbox check` reports
370
379
  missing dependencies for the current platform.
@@ -44,7 +44,7 @@
44
44
  <main id="content" class="content">
45
45
  <header class="topbar">
46
46
  <div>
47
- <p class="eyebrow">Version 1.41.0</p>
47
+ <p class="eyebrow">Version 1.42.0</p>
48
48
  <h1>UR-Nexus Documentation</h1>
49
49
  <p class="lead">A practical, tutorial-style reference for installing, configuring, automating, extending, and operating UR-Nexus.</p>
50
50
  </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.41.0",
5
+ "version": "1.42.0",
6
6
  "publisher": "ur-nexus",
7
7
  "engines": {
8
8
  "vscode": "^1.92.0"
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ur-agent",
3
- "version": "1.41.0",
4
- "description": "UR-Nexus autonomous engineering workflow engine (plan, execute, test, verify, document, benchmark, reproduce)",
3
+ "version": "1.42.0",
4
+ "description": "UR-Nexus \u2014 autonomous engineering workflow engine (plan, execute, test, verify, document, benchmark, reproduce)",
5
5
  "type": "module",
6
6
  "packageManager": "bun@1.3.14",
7
7
  "engines": {