ur-agent 1.69.0 → 1.70.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,19 +1,37 @@
1
1
  # Changelog
2
2
 
3
- ## 1.69.0
3
+ ## 1.70.0
4
4
 
5
5
  - Rolled the codebase back to the state shipped as 1.65.6. Everything released
6
6
  between 1.65.7 and 1.68.19 is withdrawn from this line. The version number
7
7
  moves forward rather than back so npm and existing installs upgrade cleanly.
8
- - No functional change relative to 1.65.6. Commit history for the withdrawn
9
- releases is retained and any part of it can be reintroduced in a later
10
- release.
8
+ Commit history for the withdrawn releases is retained and any part of it can
9
+ be reintroduced later. 1.69.0 was tagged as the rollback point and never
10
+ published.
11
+ - The task-list gate now ships disabled. It refused the first `Write` of
12
+ ordinary one-file work often enough that the friction cost more than the
13
+ plans it produced, and the refusal itself provoked the retry loops 1.65.4 was
14
+ written to stop. The mechanism is unchanged and returns with
15
+ `tasks.requireBeforeChanges.enabled=true`.
16
+ - The repeated-failure guard now ships disabled. It was introduced for a 4B
17
+ model that looped on an identical failing call; on a capable model it mostly
18
+ fires on legitimate retries and ends the turn. Callers that want loop
19
+ protection pass an enabled config.
20
+ - Raised the subagent fan-out limits from depth 3 / 20 concurrent to depth 10 /
21
+ 100, with hard ceilings of 64 and 1000. The governor now catches only a
22
+ runaway tree rather than ordinary fan-out; it is deliberately not removed,
23
+ because an unbounded tree wedges the host, which is the slowest possible
24
+ failure.
11
25
  - Fixed the packaged-CLI smoke check failing on npm 11 and later. It read the
12
26
  `npm pack --json` report as an array, but npm now returns an object keyed by
13
27
  package name, so a successful pack was reported as "npm pack did not report a
14
28
  tarball" and the release gate failed on every modern npm. Both shapes are now
15
29
  accepted. The check lives in `scripts/`, which is not published, so the
16
30
  released artifact is unaffected.
31
+ - Unchanged: tool-call validation at the execution boundary still fails closed
32
+ on unknown tools, duplicate IDs and malformed inputs. It rejects only calls
33
+ that could not have succeeded, so disabling it would trade clear errors for
34
+ undefined execution rather than unlocking any capability.
17
35
 
18
36
  ## 1.65.6
19
37
 
package/dist/cli.js CHANGED
@@ -75577,7 +75577,7 @@ var init_auth = __esm(() => {
75577
75577
 
75578
75578
  // src/utils/userAgent.ts
75579
75579
  function getURCodeUserAgent() {
75580
- return `ur/${"1.69.0"}`;
75580
+ return `ur/${"1.70.0"}`;
75581
75581
  }
75582
75582
 
75583
75583
  // src/utils/workloadContext.ts
@@ -75599,7 +75599,7 @@ function getUserAgent() {
75599
75599
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
75600
75600
  const workload = getWorkload();
75601
75601
  const workloadSuffix = workload ? `, workload/${workload}` : "";
75602
- return `ur-cli/${"1.69.0"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
75602
+ return `ur-cli/${"1.70.0"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
75603
75603
  }
75604
75604
  function getMCPUserAgent() {
75605
75605
  const parts = [];
@@ -75613,7 +75613,7 @@ function getMCPUserAgent() {
75613
75613
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
75614
75614
  }
75615
75615
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
75616
- return `ur/${"1.69.0"}${suffix}`;
75616
+ return `ur/${"1.70.0"}${suffix}`;
75617
75617
  }
75618
75618
  function getWebFetchUserAgent() {
75619
75619
  return `UR-User (${getURCodeUserAgent()})`;
@@ -75751,7 +75751,7 @@ var init_user = __esm(() => {
75751
75751
  deviceId,
75752
75752
  sessionId: getSessionId(),
75753
75753
  email: getEmail(),
75754
- appVersion: "1.69.0",
75754
+ appVersion: "1.70.0",
75755
75755
  platform: getHostPlatformForAnalytics(),
75756
75756
  organizationUuid,
75757
75757
  accountUuid,
@@ -83951,7 +83951,7 @@ var init_metadata = __esm(() => {
83951
83951
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
83952
83952
  WHITESPACE_REGEX = /\s+/;
83953
83953
  getVersionBase = memoize_default(() => {
83954
- const match = "1.69.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
83954
+ const match = "1.70.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
83955
83955
  return match ? match[0] : undefined;
83956
83956
  });
83957
83957
  buildEnvContext = memoize_default(async () => {
@@ -83991,7 +83991,7 @@ var init_metadata = __esm(() => {
83991
83991
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
83992
83992
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
83993
83993
  isURAiAuth: isURAISubscriber(),
83994
- version: "1.69.0",
83994
+ version: "1.70.0",
83995
83995
  versionBase: getVersionBase(),
83996
83996
  buildTime: "",
83997
83997
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -84661,7 +84661,7 @@ function initialize1PEventLogging() {
84661
84661
  const platform2 = getPlatform();
84662
84662
  const attributes = {
84663
84663
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
84664
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.69.0"
84664
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.70.0"
84665
84665
  };
84666
84666
  if (platform2 === "wsl") {
84667
84667
  const wslVersion = getWslVersion();
@@ -84689,7 +84689,7 @@ function initialize1PEventLogging() {
84689
84689
  })
84690
84690
  ]
84691
84691
  });
84692
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.69.0");
84692
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.70.0");
84693
84693
  }
84694
84694
  async function reinitialize1PEventLoggingIfConfigChanged() {
84695
84695
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -94565,7 +94565,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
94565
94565
  function formatA2AAgentCard(options = {}, pretty = true) {
94566
94566
  return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
94567
94567
  }
94568
- var urVersion = "1.69.0", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
94568
+ var urVersion = "1.70.0", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
94569
94569
  var init_trends = __esm(() => {
94570
94570
  init_a2aCardSignature();
94571
94571
  coverage = [
@@ -97368,7 +97368,7 @@ function getAttributionHeader(fingerprint) {
97368
97368
  if (!isAttributionHeaderEnabled()) {
97369
97369
  return "";
97370
97370
  }
97371
- const version2 = `${"1.69.0"}.${fingerprint}`;
97371
+ const version2 = `${"1.70.0"}.${fingerprint}`;
97372
97372
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
97373
97373
  const cch = "";
97374
97374
  const workload = getWorkload();
@@ -155132,7 +155132,7 @@ var init_projectSafety = __esm(() => {
155132
155132
  function getInstruments() {
155133
155133
  if (instruments)
155134
155134
  return instruments;
155135
- const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.69.0");
155135
+ const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.70.0");
155136
155136
  instruments = {
155137
155137
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
155138
155138
  description: "GenAI operation duration.",
@@ -155230,7 +155230,7 @@ function genAiAgentAttributes() {
155230
155230
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
155231
155231
  "gen_ai.provider.name": "ur",
155232
155232
  "gen_ai.agent.name": "UR-Nexus",
155233
- "gen_ai.agent.version": "1.69.0"
155233
+ "gen_ai.agent.version": "1.70.0"
155234
155234
  };
155235
155235
  }
155236
155236
  function genAiWorkflowAttributes(workflowName) {
@@ -155246,7 +155246,7 @@ function genAiWorkflowAttributes(workflowName) {
155246
155246
  function startGenAiWorkflowSpan(workflowName) {
155247
155247
  const attributes = genAiWorkflowAttributes(workflowName);
155248
155248
  const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
155249
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.69.0").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
155249
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.70.0").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
155250
155250
  }
155251
155251
  function endGenAiWorkflowSpan(span, options2 = {}) {
155252
155252
  try {
@@ -155284,7 +155284,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
155284
155284
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
155285
155285
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
155286
155286
  }
155287
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.69.0").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
155287
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.70.0").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
155288
155288
  }
155289
155289
  function endGenAiMemorySpan(span, options2 = {}) {
155290
155290
  try {
@@ -198866,7 +198866,7 @@ var require_color_convert = __commonJS((exports, module) => {
198866
198866
  module.exports = convert;
198867
198867
  });
198868
198868
 
198869
- // node_modules/cli-highlight/node_modules/chalk/node_modules/ansi-styles/index.js
198869
+ // node_modules/cli-highlight/node_modules/ansi-styles/index.js
198870
198870
  var require_ansi_styles = __commonJS((exports, module) => {
198871
198871
  var wrapAnsi163 = (fn, offset) => (...args) => {
198872
198872
  const code = fn(...args);
@@ -248755,7 +248755,7 @@ function getTelemetryAttributes() {
248755
248755
  attributes["session.id"] = sessionId;
248756
248756
  }
248757
248757
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
248758
- attributes["app.version"] = "1.69.0";
248758
+ attributes["app.version"] = "1.70.0";
248759
248759
  }
248760
248760
  const oauthAccount = getOauthAccountInfo();
248761
248761
  if (oauthAccount) {
@@ -265387,7 +265387,7 @@ function registerAgent(agentId, parentId, depth, now5 = Date.now) {
265387
265387
  active.delete(agentId);
265388
265388
  };
265389
265389
  }
265390
- var DEFAULT_MAX_AGENT_DEPTH = 3, DEFAULT_MAX_CONCURRENT_AGENTS = 20, active;
265390
+ var DEFAULT_MAX_AGENT_DEPTH = 10, DEFAULT_MAX_CONCURRENT_AGENTS = 100, active;
265391
265391
  var init_fanOutLimits = __esm(() => {
265392
265392
  active = new Map;
265393
265393
  });
@@ -265408,7 +265408,7 @@ function resolveFanOutLimits(settings = getInitialSettings()) {
265408
265408
  maxConcurrent: clamp2(agents.maxConcurrent, DEFAULT_MAX_CONCURRENT_AGENTS, HARD_MAX_CONCURRENT)
265409
265409
  };
265410
265410
  }
265411
- var HARD_MAX_DEPTH = 10, HARD_MAX_CONCURRENT = 100;
265411
+ var HARD_MAX_DEPTH = 64, HARD_MAX_CONCURRENT = 1000;
265412
265412
  var init_fanOutSettings = __esm(() => {
265413
265413
  init_settings2();
265414
265414
  init_fanOutLimits();
@@ -295298,7 +295298,7 @@ function getInstallationEnv() {
295298
295298
  return;
295299
295299
  }
295300
295300
  function getURCodeVersion() {
295301
- return "1.69.0";
295301
+ return "1.70.0";
295302
295302
  }
295303
295303
  async function getInstalledVSCodeExtensionVersion(command) {
295304
295304
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -302629,7 +302629,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
302629
302629
  const client2 = new Client({
302630
302630
  name: "ur",
302631
302631
  title: "UR",
302632
- version: "1.69.0",
302632
+ version: "1.70.0",
302633
302633
  description: "UR-Nexus autonomous engineering workflow engine",
302634
302634
  websiteUrl: PRODUCT_URL
302635
302635
  }, {
@@ -302989,7 +302989,7 @@ var init_client5 = __esm(() => {
302989
302989
  const client2 = new Client({
302990
302990
  name: "ur",
302991
302991
  title: "UR",
302992
- version: "1.69.0",
302992
+ version: "1.70.0",
302993
302993
  description: "UR-Nexus autonomous engineering workflow engine",
302994
302994
  websiteUrl: PRODUCT_URL
302995
302995
  }, {
@@ -315528,7 +315528,7 @@ async function createRuntime() {
315528
315528
  bootstrapTelemetry();
315529
315529
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
315530
315530
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
315531
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.69.0"
315531
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.70.0"
315532
315532
  }));
315533
315533
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
315534
315534
  resource,
@@ -315561,11 +315561,11 @@ async function createRuntime() {
315561
315561
  setMeterProvider(meterProvider);
315562
315562
  setLoggerProvider(loggerProvider);
315563
315563
  if (meterProvider) {
315564
- const meter = meterProvider.getMeter("ur-agent", "1.69.0");
315564
+ const meter = meterProvider.getMeter("ur-agent", "1.70.0");
315565
315565
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
315566
315566
  }
315567
315567
  if (loggerProvider) {
315568
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.69.0"));
315568
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.70.0"));
315569
315569
  }
315570
315570
  if (!cleanupRegistered2) {
315571
315571
  cleanupRegistered2 = true;
@@ -316227,9 +316227,9 @@ async function assertMinVersion() {
316227
316227
  if (false) {}
316228
316228
  try {
316229
316229
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
316230
- if (versionConfig.minVersion && lt("1.69.0", versionConfig.minVersion)) {
316230
+ if (versionConfig.minVersion && lt("1.70.0", versionConfig.minVersion)) {
316231
316231
  console.error(`
316232
- It looks like your version of UR (${"1.69.0"}) needs an update.
316232
+ It looks like your version of UR (${"1.70.0"}) needs an update.
316233
316233
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
316234
316234
 
316235
316235
  To update, please run:
@@ -316445,7 +316445,7 @@ async function installGlobalPackage(specificVersion) {
316445
316445
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
316446
316446
  logEvent("tengu_auto_updater_lock_contention", {
316447
316447
  pid: process.pid,
316448
- currentVersion: "1.69.0"
316448
+ currentVersion: "1.70.0"
316449
316449
  });
316450
316450
  return "in_progress";
316451
316451
  }
@@ -316454,7 +316454,7 @@ async function installGlobalPackage(specificVersion) {
316454
316454
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
316455
316455
  logError2(new Error("Windows NPM detected in WSL environment"));
316456
316456
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
316457
- currentVersion: "1.69.0"
316457
+ currentVersion: "1.70.0"
316458
316458
  });
316459
316459
  console.error(`
316460
316460
  Error: Windows NPM detected in WSL
@@ -316989,7 +316989,7 @@ function detectLinuxGlobPatternWarnings() {
316989
316989
  }
316990
316990
  async function getDoctorDiagnostic() {
316991
316991
  const installationType = await getCurrentInstallationType();
316992
- const version2 = typeof MACRO !== "undefined" ? "1.69.0" : "unknown";
316992
+ const version2 = typeof MACRO !== "undefined" ? "1.70.0" : "unknown";
316993
316993
  const installationPath = await getInstallationPath();
316994
316994
  const invokedBinary = getInvokedBinary();
316995
316995
  const multipleInstallations = await detectMultipleInstallations();
@@ -317924,8 +317924,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
317924
317924
  const maxVersion = await getMaxVersion();
317925
317925
  if (maxVersion && gt(version2, maxVersion)) {
317926
317926
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
317927
- if (gte("1.69.0", maxVersion)) {
317928
- logForDebugging(`Native installer: current version ${"1.69.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
317927
+ if (gte("1.70.0", maxVersion)) {
317928
+ logForDebugging(`Native installer: current version ${"1.70.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
317929
317929
  logEvent("tengu_native_update_skipped_max_version", {
317930
317930
  latency_ms: Date.now() - startTime,
317931
317931
  max_version: maxVersion,
@@ -317936,7 +317936,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
317936
317936
  version2 = maxVersion;
317937
317937
  }
317938
317938
  }
317939
- if (!forceReinstall && version2 === "1.69.0" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
317939
+ if (!forceReinstall && version2 === "1.70.0" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
317940
317940
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
317941
317941
  logEvent("tengu_native_update_complete", {
317942
317942
  latency_ms: Date.now() - startTime,
@@ -387704,7 +387704,7 @@ function isAnyTracingEnabled() {
387704
387704
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
387705
387705
  }
387706
387706
  function getTracer() {
387707
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.69.0");
387707
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.70.0");
387708
387708
  }
387709
387709
  function createSpanAttributes(spanType, customAttributes = {}) {
387710
387710
  const baseAttributes = getTelemetryAttributes();
@@ -388416,7 +388416,7 @@ var TASK_LIST_GATE_DEFAULTS, KNOWN_MUTATING_TOOLS, GATE_EXEMPT_TOOLS, ALWAYS_REQ
388416
388416
  var init_taskListGate = __esm(() => {
388417
388417
  init_settings2();
388418
388418
  TASK_LIST_GATE_DEFAULTS = {
388419
- enabled: true,
388419
+ enabled: false,
388420
388420
  freeReads: 3
388421
388421
  };
388422
388422
  KNOWN_MUTATING_TOOLS = new Set([
@@ -388667,6 +388667,8 @@ function clearRepeatedFailuresForQuery(queryChainId) {
388667
388667
  return clearRepeatedFailuresForScope(`query:${queryChainId}`);
388668
388668
  }
388669
388669
  function checkRepeatedFailure(signature, config2 = REPEATED_FAILURE_DEFAULTS) {
388670
+ if (!config2.enabled)
388671
+ return { action: "allow" };
388670
388672
  const now5 = repeatedFailureNow();
388671
388673
  pruneExpiredFailures(now5);
388672
388674
  const failures = failureCounts.get(signatureStorageIdentity(signature).key)?.failures ?? 0;
@@ -388687,6 +388689,7 @@ function checkRepeatedFailure(signature, config2 = REPEATED_FAILURE_DEFAULTS) {
388687
388689
  var REPEATED_FAILURE_DEFAULTS, REPEATED_FAILURE_GUARD_LIMITS, SIGNATURE_VERSION = "rf2", UNSCOPED_DIGEST = "-", SHA256_HEX_LENGTH = 64, HASH_CHUNK_CODE_UNITS, UNSCOPED_SIGNATURE_LENGTH, SCOPED_SIGNATURE_LENGTH, failureCounts, serializationFailureNonce = 0n, repeatedFailureNow, CanonicalTraversalLimitError, RepeatedToolFailureAbort;
388688
388690
  var init_repeatedFailureGuard = __esm(() => {
388689
388691
  REPEATED_FAILURE_DEFAULTS = {
388692
+ enabled: false,
388690
388693
  limit: 3,
388691
388694
  abortAfter: 6
388692
388695
  };
@@ -417890,7 +417893,7 @@ function Feedback({
417890
417893
  platform: env2.platform,
417891
417894
  gitRepo: envInfo.isGit,
417892
417895
  terminal: env2.terminal,
417893
- version: "1.69.0",
417896
+ version: "1.70.0",
417894
417897
  transcript: normalizeMessagesForAPI(messages),
417895
417898
  errors: sanitizedErrors,
417896
417899
  lastApiRequest: getLastAPIRequest(),
@@ -418082,7 +418085,7 @@ function Feedback({
418082
418085
  ", ",
418083
418086
  env2.terminal,
418084
418087
  ", v",
418085
- "1.69.0"
418088
+ "1.70.0"
418086
418089
  ]
418087
418090
  }, undefined, true, undefined, this)
418088
418091
  ]
@@ -418188,7 +418191,7 @@ ${sanitizedDescription}
418188
418191
  ` + `**Environment Info**
418189
418192
  ` + `- Platform: ${env2.platform}
418190
418193
  ` + `- Terminal: ${env2.terminal}
418191
- ` + `- Version: ${"1.69.0"}
418194
+ ` + `- Version: ${"1.70.0"}
418192
418195
  ` + `- Feedback ID: ${feedbackId}
418193
418196
  ` + `
418194
418197
  **Errors**
@@ -421298,7 +421301,7 @@ function buildPrimarySection() {
421298
421301
  }, undefined, false, undefined, this);
421299
421302
  return [{
421300
421303
  label: "Version",
421301
- value: "1.69.0"
421304
+ value: "1.70.0"
421302
421305
  }, {
421303
421306
  label: "Session name",
421304
421307
  value: nameValue
@@ -424628,7 +424631,7 @@ function Config({
424628
424631
  }
424629
424632
  }, undefined, false, undefined, this)
424630
424633
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
424631
- currentVersion: "1.69.0",
424634
+ currentVersion: "1.70.0",
424632
424635
  onChoice: (choice) => {
424633
424636
  setShowSubmenu(null);
424634
424637
  setTabsHidden(false);
@@ -424640,7 +424643,7 @@ function Config({
424640
424643
  autoUpdatesChannel: "stable"
424641
424644
  };
424642
424645
  if (choice === "stay") {
424643
- newSettings.minimumVersion = "1.69.0";
424646
+ newSettings.minimumVersion = "1.70.0";
424644
424647
  }
424645
424648
  updateSettingsForSource("userSettings", newSettings);
424646
424649
  setSettingsData((prev_27) => ({
@@ -432704,7 +432707,7 @@ function HelpV2(t0) {
432704
432707
  let t6;
432705
432708
  if ($2[31] !== tabs) {
432706
432709
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
432707
- title: `UR v${"1.69.0"}`,
432710
+ title: `UR v${"1.70.0"}`,
432708
432711
  color: "professionalBlue",
432709
432712
  defaultTab: "general",
432710
432713
  children: tabs
@@ -433637,7 +433640,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
433637
433640
  async function handleInitialize(options2) {
433638
433641
  return {
433639
433642
  name: "UR",
433640
- version: "1.69.0",
433643
+ version: "1.70.0",
433641
433644
  protocolVersion: "0.1.0",
433642
433645
  workspaceRoot: options2.cwd,
433643
433646
  capabilities: {
@@ -450745,7 +450748,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
450745
450748
  return [];
450746
450749
  }
450747
450750
  }
450748
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.69.0") {
450751
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.70.0") {
450749
450752
  if (process.env.USER_TYPE === "ant") {
450750
450753
  const changelog = "";
450751
450754
  if (changelog) {
@@ -450772,7 +450775,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.69.0")
450772
450775
  releaseNotes
450773
450776
  };
450774
450777
  }
450775
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.69.0") {
450778
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.70.0") {
450776
450779
  if (process.env.USER_TYPE === "ant") {
450777
450780
  const changelog = "";
450778
450781
  if (changelog) {
@@ -453638,7 +453641,7 @@ function getRecentActivitySync() {
453638
453641
  return cachedActivity;
453639
453642
  }
453640
453643
  function getLogoDisplayData() {
453641
- const version2 = process.env.DEMO_VERSION ?? "1.69.0";
453644
+ const version2 = process.env.DEMO_VERSION ?? "1.70.0";
453642
453645
  const serverUrl = getDirectConnectServerUrl();
453643
453646
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
453644
453647
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -454505,7 +454508,7 @@ function LogoV2() {
454505
454508
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
454506
454509
  t2 = () => {
454507
454510
  const currentConfig2 = getGlobalConfig();
454508
- if (currentConfig2.lastReleaseNotesSeen === "1.69.0") {
454511
+ if (currentConfig2.lastReleaseNotesSeen === "1.70.0") {
454509
454512
  return;
454510
454513
  }
454511
454514
  saveGlobalConfig(_temp325);
@@ -455190,12 +455193,12 @@ function LogoV2() {
455190
455193
  return t41;
455191
455194
  }
455192
455195
  function _temp325(current) {
455193
- if (current.lastReleaseNotesSeen === "1.69.0") {
455196
+ if (current.lastReleaseNotesSeen === "1.70.0") {
455194
455197
  return current;
455195
455198
  }
455196
455199
  return {
455197
455200
  ...current,
455198
- lastReleaseNotesSeen: "1.69.0"
455201
+ lastReleaseNotesSeen: "1.70.0"
455199
455202
  };
455200
455203
  }
455201
455204
  function _temp241(s_0) {
@@ -472009,7 +472012,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
472009
472012
  if (spec.name !== specName) {
472010
472013
  throw new Error("Agentic CI workflow spec name does not match");
472011
472014
  }
472012
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.69.0" : "1.69.0");
472015
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.70.0" : "1.70.0");
472013
472016
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
472014
472017
  throw new Error("invalid ur-agent package version");
472015
472018
  }
@@ -473002,7 +473005,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
473002
473005
  path: ".github/workflows/ur.yml",
473003
473006
  root: "project",
473004
473007
  content: compileAgenticCiWorkflow("default", {
473005
- packageVersion: typeof MACRO !== "undefined" ? "1.69.0" : "1.69.0"
473008
+ packageVersion: typeof MACRO !== "undefined" ? "1.70.0" : "1.70.0"
473006
473009
  })
473007
473010
  },
473008
473011
  {
@@ -473065,7 +473068,7 @@ function value(tokens, flag) {
473065
473068
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
473066
473069
  }
473067
473070
  function cliVersion() {
473068
- return typeof MACRO !== "undefined" ? "1.69.0" : "1.69.0";
473071
+ return typeof MACRO !== "undefined" ? "1.70.0" : "1.70.0";
473069
473072
  }
473070
473073
  function workflowPath(cwd2) {
473071
473074
  return join159(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -478921,7 +478924,7 @@ function createAcpStdioApp(deps) {
478921
478924
  }
478922
478925
  },
478923
478926
  authMethods: [],
478924
- agentInfo: { name: "UR-Nexus", version: "1.69.0" }
478927
+ agentInfo: { name: "UR-Nexus", version: "1.70.0" }
478925
478928
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
478926
478929
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
478927
478930
  await runtime2.announce({
@@ -479018,7 +479021,7 @@ function createAcpStdioAgent(deps) {
479018
479021
  }
479019
479022
  },
479020
479023
  authMethods: [],
479021
- agentInfo: { name: "UR-Nexus", version: "1.69.0" }
479024
+ agentInfo: { name: "UR-Nexus", version: "1.70.0" }
479022
479025
  });
479023
479026
  return;
479024
479027
  case "authenticate":
@@ -688183,7 +688186,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
688183
688186
  smapsRollup,
688184
688187
  platform: process.platform,
688185
688188
  nodeVersion: process.version,
688186
- ccVersion: "1.69.0"
688189
+ ccVersion: "1.70.0"
688187
688190
  };
688188
688191
  }
688189
688192
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -688763,7 +688766,7 @@ var init_bridge_kick = __esm(() => {
688763
688766
  var call153 = async () => {
688764
688767
  return {
688765
688768
  type: "text",
688766
- value: "1.69.0"
688769
+ value: "1.70.0"
688767
688770
  };
688768
688771
  }, version2, version_default;
688769
688772
  var init_version = __esm(() => {
@@ -699834,7 +699837,7 @@ function generateHtmlReport(data, insights) {
699834
699837
  </html>`;
699835
699838
  }
699836
699839
  function buildExportData(data, insights, facets, remoteStats) {
699837
- const version3 = typeof MACRO !== "undefined" ? "1.69.0" : "unknown";
699840
+ const version3 = typeof MACRO !== "undefined" ? "1.70.0" : "unknown";
699838
699841
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
699839
699842
  const facets_summary = {
699840
699843
  total: facets.size,
@@ -704145,7 +704148,7 @@ var init_sessionStorage = __esm(() => {
704145
704148
  init_settings2();
704146
704149
  init_slowOperations();
704147
704150
  init_uuid();
704148
- VERSION7 = typeof MACRO !== "undefined" ? "1.69.0" : "unknown";
704151
+ VERSION7 = typeof MACRO !== "undefined" ? "1.70.0" : "unknown";
704149
704152
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
704150
704153
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
704151
704154
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -705360,7 +705363,7 @@ var init_filesystem = __esm(() => {
705360
705363
  });
705361
705364
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
705362
705365
  const nonce = randomBytes20(16).toString("hex");
705363
- return join232(getURTempDir(), "bundled-skills", "1.69.0", nonce);
705366
+ return join232(getURTempDir(), "bundled-skills", "1.70.0", nonce);
705364
705367
  });
705365
705368
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
705366
705369
  });
@@ -711663,7 +711666,7 @@ function computeFingerprint(messageText2, version3) {
711663
711666
  }
711664
711667
  function computeFingerprintFromMessages(messages) {
711665
711668
  const firstMessageText = extractFirstMessageText(messages);
711666
- return computeFingerprint(firstMessageText, "1.69.0");
711669
+ return computeFingerprint(firstMessageText, "1.70.0");
711667
711670
  }
711668
711671
  var FINGERPRINT_SALT = "59cf53e54c78";
711669
711672
  var init_fingerprint = () => {};
@@ -713559,7 +713562,7 @@ async function sideQuery(opts) {
713559
713562
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
713560
713563
  }
713561
713564
  const messageText2 = extractFirstUserMessageText(messages);
713562
- const fingerprint2 = computeFingerprint(messageText2, "1.69.0");
713565
+ const fingerprint2 = computeFingerprint(messageText2, "1.70.0");
713563
713566
  const attributionHeader = getAttributionHeader(fingerprint2);
713564
713567
  const systemBlocks = [
713565
713568
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -718346,7 +718349,7 @@ function buildSystemInitMessage(inputs) {
718346
718349
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
718347
718350
  apiKeySource: getURHQApiKeyWithSource().source,
718348
718351
  betas: getSdkBetas(),
718349
- ur_version: "1.69.0",
718352
+ ur_version: "1.70.0",
718350
718353
  output_style: outputStyle2,
718351
718354
  agents: inputs.agents.map((agent2) => agent2.agentType),
718352
718355
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -732206,7 +732209,7 @@ var init_useVoiceEnabled = __esm(() => {
732206
732209
  function getSemverPart(version3) {
732207
732210
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
732208
732211
  }
732209
- function useUpdateNotification(updatedVersion, initialVersion = "1.69.0") {
732212
+ function useUpdateNotification(updatedVersion, initialVersion = "1.70.0") {
732210
732213
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react222.useState(() => getSemverPart(initialVersion));
732211
732214
  if (!updatedVersion) {
732212
732215
  return null;
@@ -732255,7 +732258,7 @@ function AutoUpdater({
732255
732258
  return;
732256
732259
  }
732257
732260
  if (false) {}
732258
- const currentVersion = "1.69.0";
732261
+ const currentVersion = "1.70.0";
732259
732262
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
732260
732263
  let latestVersion = await getLatestVersion(channel);
732261
732264
  const isDisabled = isAutoUpdaterDisabled();
@@ -732484,12 +732487,12 @@ function NativeAutoUpdater({
732484
732487
  logEvent("tengu_native_auto_updater_start", {});
732485
732488
  try {
732486
732489
  const maxVersion = await getMaxVersion();
732487
- if (maxVersion && gt("1.69.0", maxVersion)) {
732490
+ if (maxVersion && gt("1.70.0", maxVersion)) {
732488
732491
  const msg = await getMaxVersionMessage();
732489
732492
  setMaxVersionIssue(msg ?? "affects your version");
732490
732493
  }
732491
732494
  const result = await installLatest(channel);
732492
- const currentVersion = "1.69.0";
732495
+ const currentVersion = "1.70.0";
732493
732496
  const latencyMs = Date.now() - startTime;
732494
732497
  if (result.lockFailed) {
732495
732498
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -732626,17 +732629,17 @@ function PackageManagerAutoUpdater(t0) {
732626
732629
  const maxVersion = await getMaxVersion();
732627
732630
  if (maxVersion && latest && gt(latest, maxVersion)) {
732628
732631
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
732629
- if (gte("1.69.0", maxVersion)) {
732630
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.69.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
732632
+ if (gte("1.70.0", maxVersion)) {
732633
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.70.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
732631
732634
  setUpdateAvailable(false);
732632
732635
  return;
732633
732636
  }
732634
732637
  latest = maxVersion;
732635
732638
  }
732636
- const hasUpdate = latest && !gte("1.69.0", latest) && !shouldSkipVersion(latest);
732639
+ const hasUpdate = latest && !gte("1.70.0", latest) && !shouldSkipVersion(latest);
732637
732640
  setUpdateAvailable(!!hasUpdate);
732638
732641
  if (hasUpdate) {
732639
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.69.0"} -> ${latest}`);
732642
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.70.0"} -> ${latest}`);
732640
732643
  }
732641
732644
  };
732642
732645
  $2[0] = t1;
@@ -732670,7 +732673,7 @@ function PackageManagerAutoUpdater(t0) {
732670
732673
  wrap: "truncate",
732671
732674
  children: [
732672
732675
  "currentVersion: ",
732673
- "1.69.0"
732676
+ "1.70.0"
732674
732677
  ]
732675
732678
  }, undefined, true, undefined, this);
732676
732679
  $2[3] = verbose;
@@ -743382,7 +743385,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
743382
743385
  project_dir: getOriginalCwd(),
743383
743386
  added_dirs: addedDirs
743384
743387
  },
743385
- version: "1.69.0",
743388
+ version: "1.70.0",
743386
743389
  output_style: {
743387
743390
  name: outputStyleName
743388
743391
  },
@@ -743460,7 +743463,7 @@ function StatusLineInner({
743460
743463
  const taskValues = Object.values(tasks2);
743461
743464
  const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
743462
743465
  const defaultStatusLineText = buildDefaultStatusBar({
743463
- version: "1.69.0",
743466
+ version: "1.70.0",
743464
743467
  providerLabel: providerRuntime.providerLabel,
743465
743468
  authMode: providerRuntime.authLabel,
743466
743469
  model: renderModelName(mainLoopModel) || providerRuntime.model || "",
@@ -755638,7 +755641,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
755638
755641
  } catch {}
755639
755642
  const data = {
755640
755643
  trigger: trigger2,
755641
- version: "1.69.0",
755644
+ version: "1.70.0",
755642
755645
  platform: process.platform,
755643
755646
  transcript,
755644
755647
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -768003,7 +768006,7 @@ function WelcomeV2() {
768003
768006
  dimColor: true,
768004
768007
  children: [
768005
768008
  "v",
768006
- "1.69.0"
768009
+ "1.70.0"
768007
768010
  ]
768008
768011
  }, undefined, true, undefined, this)
768009
768012
  ]
@@ -769263,7 +769266,7 @@ function completeOnboarding() {
769263
769266
  saveGlobalConfig((current) => ({
769264
769267
  ...current,
769265
769268
  hasCompletedOnboarding: true,
769266
- lastOnboardingVersion: "1.69.0"
769269
+ lastOnboardingVersion: "1.70.0"
769267
769270
  }));
769268
769271
  }
769269
769272
  function showDialog(root2, renderer) {
@@ -774307,7 +774310,7 @@ function appendToLog(path24, message) {
774307
774310
  cwd: getFsImplementation().cwd(),
774308
774311
  userType: process.env.USER_TYPE,
774309
774312
  sessionId: getSessionId(),
774310
- version: "1.69.0"
774313
+ version: "1.70.0"
774311
774314
  };
774312
774315
  getLogWriter(path24).write(messageWithTimestamp);
774313
774316
  }
@@ -778466,8 +778469,8 @@ async function getEnvLessBridgeConfig() {
778466
778469
  }
778467
778470
  async function checkEnvLessBridgeMinVersion() {
778468
778471
  const cfg = await getEnvLessBridgeConfig();
778469
- if (cfg.min_version && lt("1.69.0", cfg.min_version)) {
778470
- return `Your version of UR (${"1.69.0"}) is too old for Remote Control.
778472
+ if (cfg.min_version && lt("1.70.0", cfg.min_version)) {
778473
+ return `Your version of UR (${"1.70.0"}) is too old for Remote Control.
778471
778474
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
778472
778475
  }
778473
778476
  return null;
@@ -778941,7 +778944,7 @@ async function initBridgeCore(params) {
778941
778944
  const rawApi = createBridgeApiClient({
778942
778945
  baseUrl,
778943
778946
  getAccessToken,
778944
- runnerVersion: "1.69.0",
778947
+ runnerVersion: "1.70.0",
778945
778948
  onDebug: logForDebugging,
778946
778949
  onAuth401,
778947
778950
  getTrustedDeviceToken
@@ -788414,7 +788417,7 @@ function getAgUiCapabilities() {
788414
788417
  name: "UR-Nexus",
788415
788418
  type: "ur-nexus",
788416
788419
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
788417
- version: "1.69.0",
788420
+ version: "1.70.0",
788418
788421
  provider: "UR",
788419
788422
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
788420
788423
  },
@@ -789554,7 +789557,7 @@ function createMCPServer(cwd4, debug2, verbose) {
789554
789557
  };
789555
789558
  const server2 = new Server({
789556
789559
  name: "ur-nexus",
789557
- version: "1.69.0"
789560
+ version: "1.70.0"
789558
789561
  }, {
789559
789562
  capabilities: {
789560
789563
  tools: {}
@@ -790712,7 +790715,7 @@ function thrownResponse(error40) {
790712
790715
  }
790713
790716
  async function createUrMcp2026Runtime(options4) {
790714
790717
  const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
790715
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.69.0" }, { capabilities: {} });
790718
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.70.0" }, { capabilities: {} });
790716
790719
  const [clientTransport, serverTransport] = createLinkedTransportPair();
790717
790720
  try {
790718
790721
  await server2.connect(serverTransport);
@@ -790723,7 +790726,7 @@ async function createUrMcp2026Runtime(options4) {
790723
790726
  }
790724
790727
  const runtime2 = new Mcp2026Runtime({
790725
790728
  cwd: options4.cwd,
790726
- version: "1.69.0",
790729
+ version: "1.70.0",
790727
790730
  backend: {
790728
790731
  listTools: async () => {
790729
790732
  const listed = await client2.listTools();
@@ -792856,7 +792859,7 @@ async function update() {
792856
792859
  logEvent("tengu_update_check", {});
792857
792860
  const diagnostic2 = await getDoctorDiagnostic();
792858
792861
  const result = await checkUpgradeStatus({
792859
- currentVersion: "1.69.0",
792862
+ currentVersion: "1.70.0",
792860
792863
  packageName: UR_AGENT_PACKAGE_NAME,
792861
792864
  installationType: diagnostic2.installationType,
792862
792865
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -794172,7 +794175,7 @@ ${customInstructions}` : customInstructions;
794172
794175
  }
794173
794176
  }
794174
794177
  logForDiagnosticsNoPII("info", "started", {
794175
- version: "1.69.0",
794178
+ version: "1.70.0",
794176
794179
  is_native_binary: isInBundledMode()
794177
794180
  });
794178
794181
  registerCleanup(async () => {
@@ -794958,7 +794961,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
794958
794961
  pendingHookMessages
794959
794962
  }, renderAndRun);
794960
794963
  }
794961
- }).version("1.69.0 (UR-Nexus)", "-v, --version", "Output the version number");
794964
+ }).version("1.70.0 (UR-Nexus)", "-v, --version", "Output the version number");
794962
794965
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
794963
794966
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
794964
794967
  if (canUserConfigureAdvisor()) {
@@ -796010,7 +796013,7 @@ if (false) {}
796010
796013
  async function main2() {
796011
796014
  const args = process.argv.slice(2);
796012
796015
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
796013
- console.log(`${"1.69.0"} (UR-Nexus)`);
796016
+ console.log(`${"1.70.0"} (UR-Nexus)`);
796014
796017
  return;
796015
796018
  }
796016
796019
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
@@ -19,7 +19,7 @@ You need:
19
19
 
20
20
  ```sh
21
21
  ur --version
22
- # expected for this release: "1.69.0 (UR-Nexus)"
22
+ # expected for this release: "1.70.0 (UR-Nexus)"
23
23
  ```
24
24
 
25
25
  ## 0.1 First-workspace model selection (1.45.4)
@@ -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.69.0</p>
48
+ <p class="eyebrow">Version 1.70.0</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.69.0"
10
+ version = "1.70.0"
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.69.0",
5
+ "version": "1.70.0",
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.69.0",
3
+ "version": "1.70.0",
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",