ur-agent 1.51.0 → 1.52.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,25 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.52.0
4
+
5
+ - Implemented Ollama Cloud authentication. The Ollama client sent no
6
+ `Authorization` header at all, so the hosted API was unreachable: local
7
+ sessions only worked because the signed-in daemon proxies `:cloud` models on
8
+ the user's behalf, and CI — which has no daemon — could not use Ollama at
9
+ all. `OLLAMA_API_KEY` is now sent as a bearer token, trimmed so a pasted
10
+ trailing newline cannot corrupt the header.
11
+ - A configured key with no configured host now resolves to `https://ollama.com`
12
+ rather than localhost, since a bare key is useless against a local daemon. An
13
+ explicit `OLLAMA_HOST` still wins, so self-hosted gateways are unaffected.
14
+ - Added `OLLAMA_API_KEY` to the Agentic CI provider-credential allowlist, so it
15
+ reaches the isolated agent while platform write tokens still do not. Together
16
+ these make `@ur` runnable in GitHub Actions against Ollama Cloud.
17
+ - Fixed the release gate hanging instead of failing. `bun test` loads all ~173
18
+ files into one process and peaks past 3 GB; when a runner OOM-kills it the
19
+ parent waits forever on dead children, which looks like a hang rather than a
20
+ failure. The gate now runs `--parallel=4`, which implies `--isolate` and
21
+ reclaims memory per worker. The suite itself was never broken.
22
+
3
23
  ## 1.51.0
4
24
 
5
25
  - Added named permission profiles. `settings.permissions.profiles` holds named
package/dist/cli.js CHANGED
@@ -57324,7 +57324,8 @@ __export(exports_ollama, {
57324
57324
  isOllamaCloudModel: () => isOllamaCloudModel2,
57325
57325
  getOllamaRequestTimeoutMs: () => getOllamaRequestTimeoutMs,
57326
57326
  getEffectiveOllamaBaseUrl: () => getEffectiveOllamaBaseUrl,
57327
- createOllamaURHQClient: () => createOllamaURHQClient
57327
+ createOllamaURHQClient: () => createOllamaURHQClient,
57328
+ buildOllamaHeaders: () => buildOllamaHeaders
57328
57329
  });
57329
57330
  import { randomUUID as randomUUID2 } from "crypto";
57330
57331
  function createOllamaURHQClient(options) {
@@ -57352,6 +57353,16 @@ function createOllamaURHQClient(options) {
57352
57353
  function getEffectiveOllamaBaseUrl() {
57353
57354
  return ollamaBaseUrlOverride ?? getOllamaBaseUrl();
57354
57355
  }
57356
+ function buildOllamaHeaders(env4 = process.env) {
57357
+ const headers = {
57358
+ "Content-Type": "application/json"
57359
+ };
57360
+ const apiKey = env4.OLLAMA_API_KEY?.trim();
57361
+ if (apiKey) {
57362
+ headers.Authorization = `Bearer ${apiKey}`;
57363
+ }
57364
+ return headers;
57365
+ }
57355
57366
  function createStreamingRequest(params, options) {
57356
57367
  const controller = createLinkedAbortController(options);
57357
57368
  const responsePromise = fetchOllamaChat(params, true, controller, options);
@@ -57383,9 +57394,7 @@ async function fetchOllamaChat(params, stream4, controller, options) {
57383
57394
  const capabilities = await getOllamaModelCapabilities(params.model, controller.signal);
57384
57395
  const response = await fetch(`${getEffectiveOllamaBaseUrl()}/api/chat`, {
57385
57396
  method: "POST",
57386
- headers: {
57387
- "Content-Type": "application/json"
57388
- },
57397
+ headers: buildOllamaHeaders(),
57389
57398
  body: JSON.stringify(toOllamaChatRequest(params, stream4, capabilities)),
57390
57399
  signal: controller.signal
57391
57400
  });
@@ -57720,9 +57729,7 @@ async function getOllamaModelCapabilities(model, signal) {
57720
57729
  try {
57721
57730
  const response = await fetch(`${getEffectiveOllamaBaseUrl()}/api/show`, {
57722
57731
  method: "POST",
57723
- headers: {
57724
- "Content-Type": "application/json"
57725
- },
57732
+ headers: buildOllamaHeaders(),
57726
57733
  body: JSON.stringify({ model: normalizedModel }),
57727
57734
  signal
57728
57735
  });
@@ -75100,7 +75107,7 @@ var init_auth = __esm(() => {
75100
75107
 
75101
75108
  // src/utils/userAgent.ts
75102
75109
  function getURCodeUserAgent() {
75103
- return `ur/${"1.51.0"}`;
75110
+ return `ur/${"1.52.0"}`;
75104
75111
  }
75105
75112
 
75106
75113
  // src/utils/workloadContext.ts
@@ -75122,7 +75129,7 @@ function getUserAgent() {
75122
75129
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
75123
75130
  const workload = getWorkload();
75124
75131
  const workloadSuffix = workload ? `, workload/${workload}` : "";
75125
- return `ur-cli/${"1.51.0"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
75132
+ return `ur-cli/${"1.52.0"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
75126
75133
  }
75127
75134
  function getMCPUserAgent() {
75128
75135
  const parts = [];
@@ -75136,7 +75143,7 @@ function getMCPUserAgent() {
75136
75143
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
75137
75144
  }
75138
75145
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
75139
- return `ur/${"1.51.0"}${suffix}`;
75146
+ return `ur/${"1.52.0"}${suffix}`;
75140
75147
  }
75141
75148
  function getWebFetchUserAgent() {
75142
75149
  return `UR-User (${getURCodeUserAgent()})`;
@@ -75274,7 +75281,7 @@ var init_user = __esm(() => {
75274
75281
  deviceId,
75275
75282
  sessionId: getSessionId(),
75276
75283
  email: getEmail(),
75277
- appVersion: "1.51.0",
75284
+ appVersion: "1.52.0",
75278
75285
  platform: getHostPlatformForAnalytics(),
75279
75286
  organizationUuid,
75280
75287
  accountUuid,
@@ -83474,7 +83481,7 @@ var init_metadata = __esm(() => {
83474
83481
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
83475
83482
  WHITESPACE_REGEX = /\s+/;
83476
83483
  getVersionBase = memoize_default(() => {
83477
- const match = "1.51.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
83484
+ const match = "1.52.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
83478
83485
  return match ? match[0] : undefined;
83479
83486
  });
83480
83487
  buildEnvContext = memoize_default(async () => {
@@ -83514,7 +83521,7 @@ var init_metadata = __esm(() => {
83514
83521
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
83515
83522
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
83516
83523
  isURAiAuth: isURAISubscriber(),
83517
- version: "1.51.0",
83524
+ version: "1.52.0",
83518
83525
  versionBase: getVersionBase(),
83519
83526
  buildTime: "",
83520
83527
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -84184,7 +84191,7 @@ function initialize1PEventLogging() {
84184
84191
  const platform2 = getPlatform();
84185
84192
  const attributes = {
84186
84193
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
84187
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.51.0"
84194
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.52.0"
84188
84195
  };
84189
84196
  if (platform2 === "wsl") {
84190
84197
  const wslVersion = getWslVersion();
@@ -84212,7 +84219,7 @@ function initialize1PEventLogging() {
84212
84219
  })
84213
84220
  ]
84214
84221
  });
84215
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.51.0");
84222
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.52.0");
84216
84223
  }
84217
84224
  async function reinitialize1PEventLoggingIfConfigChanged() {
84218
84225
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -87944,12 +87951,15 @@ function getOllamaBaseUrl(env4 = process.env, settings) {
87944
87951
  if (settingsHost) {
87945
87952
  return normalizeOllamaBaseUrl(settingsHost);
87946
87953
  }
87954
+ if (env4.OLLAMA_API_KEY?.trim()) {
87955
+ return OLLAMA_CLOUD_BASE_URL;
87956
+ }
87947
87957
  return "http://localhost:11434";
87948
87958
  }
87949
87959
  function setOllamaBaseUrlOverride(url3) {
87950
87960
  sessionOverride = url3;
87951
87961
  }
87952
- var sessionOverride;
87962
+ var sessionOverride, OLLAMA_CLOUD_BASE_URL = "https://ollama.com";
87953
87963
  var init_ollamaConfig = __esm(() => {
87954
87964
  init_settings2();
87955
87965
  });
@@ -94035,7 +94045,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
94035
94045
  function formatA2AAgentCard(options = {}, pretty = true) {
94036
94046
  return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
94037
94047
  }
94038
- var urVersion = "1.51.0", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
94048
+ var urVersion = "1.52.0", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
94039
94049
  var init_trends = __esm(() => {
94040
94050
  init_a2aCardSignature();
94041
94051
  coverage = [
@@ -96836,7 +96846,7 @@ function getAttributionHeader(fingerprint) {
96836
96846
  if (!isAttributionHeaderEnabled()) {
96837
96847
  return "";
96838
96848
  }
96839
- const version2 = `${"1.51.0"}.${fingerprint}`;
96849
+ const version2 = `${"1.52.0"}.${fingerprint}`;
96840
96850
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
96841
96851
  const cch = "";
96842
96852
  const workload = getWorkload();
@@ -154521,7 +154531,7 @@ var init_projectSafety = __esm(() => {
154521
154531
  function getInstruments() {
154522
154532
  if (instruments)
154523
154533
  return instruments;
154524
- const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.51.0");
154534
+ const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.52.0");
154525
154535
  instruments = {
154526
154536
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
154527
154537
  description: "GenAI operation duration.",
@@ -154619,7 +154629,7 @@ function genAiAgentAttributes() {
154619
154629
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
154620
154630
  "gen_ai.provider.name": "ur",
154621
154631
  "gen_ai.agent.name": "UR-Nexus",
154622
- "gen_ai.agent.version": "1.51.0"
154632
+ "gen_ai.agent.version": "1.52.0"
154623
154633
  };
154624
154634
  }
154625
154635
  function genAiWorkflowAttributes(workflowName) {
@@ -154635,7 +154645,7 @@ function genAiWorkflowAttributes(workflowName) {
154635
154645
  function startGenAiWorkflowSpan(workflowName) {
154636
154646
  const attributes = genAiWorkflowAttributes(workflowName);
154637
154647
  const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
154638
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.51.0").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
154648
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.52.0").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
154639
154649
  }
154640
154650
  function endGenAiWorkflowSpan(span, options2 = {}) {
154641
154651
  try {
@@ -154673,7 +154683,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
154673
154683
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
154674
154684
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
154675
154685
  }
154676
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.51.0").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
154686
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.52.0").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
154677
154687
  }
154678
154688
  function endGenAiMemorySpan(span, options2 = {}) {
154679
154689
  try {
@@ -206192,7 +206202,7 @@ function getTelemetryAttributes() {
206192
206202
  attributes["session.id"] = sessionId;
206193
206203
  }
206194
206204
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
206195
- attributes["app.version"] = "1.51.0";
206205
+ attributes["app.version"] = "1.52.0";
206196
206206
  }
206197
206207
  const oauthAccount = getOauthAccountInfo();
206198
206208
  if (oauthAccount) {
@@ -252455,7 +252465,7 @@ function getInstallationEnv() {
252455
252465
  return;
252456
252466
  }
252457
252467
  function getURCodeVersion() {
252458
- return "1.51.0";
252468
+ return "1.52.0";
252459
252469
  }
252460
252470
  async function getInstalledVSCodeExtensionVersion(command) {
252461
252471
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -259786,7 +259796,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
259786
259796
  const client2 = new Client({
259787
259797
  name: "ur",
259788
259798
  title: "UR",
259789
- version: "1.51.0",
259799
+ version: "1.52.0",
259790
259800
  description: "UR-Nexus autonomous engineering workflow engine",
259791
259801
  websiteUrl: PRODUCT_URL
259792
259802
  }, {
@@ -260146,7 +260156,7 @@ var init_client5 = __esm(() => {
260146
260156
  const client2 = new Client({
260147
260157
  name: "ur",
260148
260158
  title: "UR",
260149
- version: "1.51.0",
260159
+ version: "1.52.0",
260150
260160
  description: "UR-Nexus autonomous engineering workflow engine",
260151
260161
  websiteUrl: PRODUCT_URL
260152
260162
  }, {
@@ -272747,7 +272757,7 @@ async function createRuntime() {
272747
272757
  bootstrapTelemetry();
272748
272758
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
272749
272759
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
272750
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.51.0"
272760
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.52.0"
272751
272761
  }));
272752
272762
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
272753
272763
  resource,
@@ -272780,11 +272790,11 @@ async function createRuntime() {
272780
272790
  setMeterProvider(meterProvider);
272781
272791
  setLoggerProvider(loggerProvider);
272782
272792
  if (meterProvider) {
272783
- const meter = meterProvider.getMeter("ur-agent", "1.51.0");
272793
+ const meter = meterProvider.getMeter("ur-agent", "1.52.0");
272784
272794
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
272785
272795
  }
272786
272796
  if (loggerProvider) {
272787
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.51.0"));
272797
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.52.0"));
272788
272798
  }
272789
272799
  if (!cleanupRegistered2) {
272790
272800
  cleanupRegistered2 = true;
@@ -273446,9 +273456,9 @@ async function assertMinVersion() {
273446
273456
  if (false) {}
273447
273457
  try {
273448
273458
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
273449
- if (versionConfig.minVersion && lt("1.51.0", versionConfig.minVersion)) {
273459
+ if (versionConfig.minVersion && lt("1.52.0", versionConfig.minVersion)) {
273450
273460
  console.error(`
273451
- It looks like your version of UR (${"1.51.0"}) needs an update.
273461
+ It looks like your version of UR (${"1.52.0"}) needs an update.
273452
273462
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
273453
273463
 
273454
273464
  To update, please run:
@@ -273664,7 +273674,7 @@ async function installGlobalPackage(specificVersion) {
273664
273674
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
273665
273675
  logEvent("tengu_auto_updater_lock_contention", {
273666
273676
  pid: process.pid,
273667
- currentVersion: "1.51.0"
273677
+ currentVersion: "1.52.0"
273668
273678
  });
273669
273679
  return "in_progress";
273670
273680
  }
@@ -273673,7 +273683,7 @@ async function installGlobalPackage(specificVersion) {
273673
273683
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
273674
273684
  logError2(new Error("Windows NPM detected in WSL environment"));
273675
273685
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
273676
- currentVersion: "1.51.0"
273686
+ currentVersion: "1.52.0"
273677
273687
  });
273678
273688
  console.error(`
273679
273689
  Error: Windows NPM detected in WSL
@@ -274208,7 +274218,7 @@ function detectLinuxGlobPatternWarnings() {
274208
274218
  }
274209
274219
  async function getDoctorDiagnostic() {
274210
274220
  const installationType = await getCurrentInstallationType();
274211
- const version2 = typeof MACRO !== "undefined" ? "1.51.0" : "unknown";
274221
+ const version2 = typeof MACRO !== "undefined" ? "1.52.0" : "unknown";
274212
274222
  const installationPath = await getInstallationPath();
274213
274223
  const invokedBinary = getInvokedBinary();
274214
274224
  const multipleInstallations = await detectMultipleInstallations();
@@ -275143,8 +275153,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
275143
275153
  const maxVersion = await getMaxVersion();
275144
275154
  if (maxVersion && gt(version2, maxVersion)) {
275145
275155
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
275146
- if (gte("1.51.0", maxVersion)) {
275147
- logForDebugging(`Native installer: current version ${"1.51.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
275156
+ if (gte("1.52.0", maxVersion)) {
275157
+ logForDebugging(`Native installer: current version ${"1.52.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
275148
275158
  logEvent("tengu_native_update_skipped_max_version", {
275149
275159
  latency_ms: Date.now() - startTime,
275150
275160
  max_version: maxVersion,
@@ -275155,7 +275165,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
275155
275165
  version2 = maxVersion;
275156
275166
  }
275157
275167
  }
275158
- if (!forceReinstall && version2 === "1.51.0" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
275168
+ if (!forceReinstall && version2 === "1.52.0" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
275159
275169
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
275160
275170
  logEvent("tengu_native_update_complete", {
275161
275171
  latency_ms: Date.now() - startTime,
@@ -344958,7 +344968,7 @@ function isAnyTracingEnabled() {
344958
344968
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
344959
344969
  }
344960
344970
  function getTracer() {
344961
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.51.0");
344971
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.52.0");
344962
344972
  }
344963
344973
  function createSpanAttributes(spanType, customAttributes = {}) {
344964
344974
  const baseAttributes = getTelemetryAttributes();
@@ -374028,7 +374038,7 @@ function Feedback({
374028
374038
  platform: env2.platform,
374029
374039
  gitRepo: envInfo.isGit,
374030
374040
  terminal: env2.terminal,
374031
- version: "1.51.0",
374041
+ version: "1.52.0",
374032
374042
  transcript: normalizeMessagesForAPI(messages),
374033
374043
  errors: sanitizedErrors,
374034
374044
  lastApiRequest: getLastAPIRequest(),
@@ -374220,7 +374230,7 @@ function Feedback({
374220
374230
  ", ",
374221
374231
  env2.terminal,
374222
374232
  ", v",
374223
- "1.51.0"
374233
+ "1.52.0"
374224
374234
  ]
374225
374235
  }, undefined, true, undefined, this)
374226
374236
  ]
@@ -374326,7 +374336,7 @@ ${sanitizedDescription}
374326
374336
  ` + `**Environment Info**
374327
374337
  ` + `- Platform: ${env2.platform}
374328
374338
  ` + `- Terminal: ${env2.terminal}
374329
- ` + `- Version: ${"1.51.0"}
374339
+ ` + `- Version: ${"1.52.0"}
374330
374340
  ` + `- Feedback ID: ${feedbackId}
374331
374341
  ` + `
374332
374342
  **Errors**
@@ -377436,7 +377446,7 @@ function buildPrimarySection() {
377436
377446
  }, undefined, false, undefined, this);
377437
377447
  return [{
377438
377448
  label: "Version",
377439
- value: "1.51.0"
377449
+ value: "1.52.0"
377440
377450
  }, {
377441
377451
  label: "Session name",
377442
377452
  value: nameValue
@@ -380766,7 +380776,7 @@ function Config({
380766
380776
  }
380767
380777
  }, undefined, false, undefined, this)
380768
380778
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime178.jsxDEV(ChannelDowngradeDialog, {
380769
- currentVersion: "1.51.0",
380779
+ currentVersion: "1.52.0",
380770
380780
  onChoice: (choice) => {
380771
380781
  setShowSubmenu(null);
380772
380782
  setTabsHidden(false);
@@ -380778,7 +380788,7 @@ function Config({
380778
380788
  autoUpdatesChannel: "stable"
380779
380789
  };
380780
380790
  if (choice === "stay") {
380781
- newSettings.minimumVersion = "1.51.0";
380791
+ newSettings.minimumVersion = "1.52.0";
380782
380792
  }
380783
380793
  updateSettingsForSource("userSettings", newSettings);
380784
380794
  setSettingsData((prev_27) => ({
@@ -388842,7 +388852,7 @@ function HelpV2(t0) {
388842
388852
  let t6;
388843
388853
  if ($2[31] !== tabs) {
388844
388854
  t6 = /* @__PURE__ */ jsx_dev_runtime205.jsxDEV(Tabs, {
388845
- title: `UR v${"1.51.0"}`,
388855
+ title: `UR v${"1.52.0"}`,
388846
388856
  color: "professionalBlue",
388847
388857
  defaultTab: "general",
388848
388858
  children: tabs
@@ -389759,7 +389769,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
389759
389769
  async function handleInitialize(options2) {
389760
389770
  return {
389761
389771
  name: "UR",
389762
- version: "1.51.0",
389772
+ version: "1.52.0",
389763
389773
  protocolVersion: "0.1.0",
389764
389774
  workspaceRoot: options2.cwd,
389765
389775
  capabilities: {
@@ -406867,7 +406877,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
406867
406877
  return [];
406868
406878
  }
406869
406879
  }
406870
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.51.0") {
406880
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.52.0") {
406871
406881
  if (process.env.USER_TYPE === "ant") {
406872
406882
  const changelog = "";
406873
406883
  if (changelog) {
@@ -406894,7 +406904,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.51.0")
406894
406904
  releaseNotes
406895
406905
  };
406896
406906
  }
406897
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.51.0") {
406907
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.52.0") {
406898
406908
  if (process.env.USER_TYPE === "ant") {
406899
406909
  const changelog = "";
406900
406910
  if (changelog) {
@@ -409751,7 +409761,7 @@ function getRecentActivitySync() {
409751
409761
  return cachedActivity;
409752
409762
  }
409753
409763
  function getLogoDisplayData() {
409754
- const version2 = process.env.DEMO_VERSION ?? "1.51.0";
409764
+ const version2 = process.env.DEMO_VERSION ?? "1.52.0";
409755
409765
  const serverUrl = getDirectConnectServerUrl();
409756
409766
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
409757
409767
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -410635,7 +410645,7 @@ function LogoV2() {
410635
410645
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
410636
410646
  t2 = () => {
410637
410647
  const currentConfig2 = getGlobalConfig();
410638
- if (currentConfig2.lastReleaseNotesSeen === "1.51.0") {
410648
+ if (currentConfig2.lastReleaseNotesSeen === "1.52.0") {
410639
410649
  return;
410640
410650
  }
410641
410651
  saveGlobalConfig(_temp327);
@@ -411320,12 +411330,12 @@ function LogoV2() {
411320
411330
  return t41;
411321
411331
  }
411322
411332
  function _temp327(current) {
411323
- if (current.lastReleaseNotesSeen === "1.51.0") {
411333
+ if (current.lastReleaseNotesSeen === "1.52.0") {
411324
411334
  return current;
411325
411335
  }
411326
411336
  return {
411327
411337
  ...current,
411328
- lastReleaseNotesSeen: "1.51.0"
411338
+ lastReleaseNotesSeen: "1.52.0"
411329
411339
  };
411330
411340
  }
411331
411341
  function _temp241(s_0) {
@@ -427624,7 +427634,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
427624
427634
  if (spec.name !== specName) {
427625
427635
  throw new Error("Agentic CI workflow spec name does not match");
427626
427636
  }
427627
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.51.0" : "1.51.0");
427637
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.52.0" : "1.52.0");
427628
427638
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
427629
427639
  throw new Error("invalid ur-agent package version");
427630
427640
  }
@@ -427958,7 +427968,7 @@ var init_agenticCi = __esm(() => {
427958
427968
  KEYWORD_RE = /^[A-Za-z0-9@/_+#:.-]{1,64}$/;
427959
427969
  SECRET_NAME_RE = /(?:TOKEN|SECRET|PASSWORD|PASSWD|API_KEY|PRIVATE_KEY|CREDENTIAL|AUTH)/i;
427960
427970
  CHILD_FORBIDDEN_ENV_RE = /^(?:GITHUB_TOKEN|GH_TOKEN|ACTIONS_ID_TOKEN_REQUEST_TOKEN|ACTIONS_ID_TOKEN_REQUEST_URL|ACTIONS_RUNTIME_TOKEN|ACTIONS_RUNTIME_URL|SSH_AUTH_SOCK)$/;
427961
- HEADLESS_PROVIDER_SECRET_RE = /^(?:URHQ_API_KEY|UR_CODE_OAUTH_TOKEN|URHQ_AUTH_TOKEN|URHQ_FOUNDRY_API_KEY|OPENAI_API_KEY|ANTHROPIC_API_KEY|GEMINI_API_KEY|OPENROUTER_API_KEY|OPENAI_COMPATIBLE_API_KEY|AWS_ACCESS_KEY_ID|AWS_SECRET_ACCESS_KEY|AWS_SESSION_TOKEN|AWS_BEARER_TOKEN_BEDROCK|AZURE_CLIENT_SECRET|AZURE_CLIENT_CERTIFICATE_PATH|GOOGLE_APPLICATION_CREDENTIALS)$/;
427971
+ HEADLESS_PROVIDER_SECRET_RE = /^(?:URHQ_API_KEY|UR_CODE_OAUTH_TOKEN|URHQ_AUTH_TOKEN|URHQ_FOUNDRY_API_KEY|OLLAMA_API_KEY|OPENAI_API_KEY|ANTHROPIC_API_KEY|GEMINI_API_KEY|OPENROUTER_API_KEY|OPENAI_COMPATIBLE_API_KEY|AWS_ACCESS_KEY_ID|AWS_SECRET_ACCESS_KEY|AWS_SESSION_TOKEN|AWS_BEARER_TOKEN_BEDROCK|AZURE_CLIENT_SECRET|AZURE_CLIENT_CERTIFICATE_PATH|GOOGLE_APPLICATION_CREDENTIALS)$/;
427962
427972
  });
427963
427973
 
427964
427974
  // src/services/agents/featureScaffolds.ts
@@ -428617,7 +428627,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
428617
428627
  path: ".github/workflows/ur.yml",
428618
428628
  root: "project",
428619
428629
  content: compileAgenticCiWorkflow("default", {
428620
- packageVersion: typeof MACRO !== "undefined" ? "1.51.0" : "1.51.0"
428630
+ packageVersion: typeof MACRO !== "undefined" ? "1.52.0" : "1.52.0"
428621
428631
  })
428622
428632
  },
428623
428633
  {
@@ -428680,7 +428690,7 @@ function value(tokens, flag) {
428680
428690
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
428681
428691
  }
428682
428692
  function cliVersion() {
428683
- return typeof MACRO !== "undefined" ? "1.51.0" : "1.51.0";
428693
+ return typeof MACRO !== "undefined" ? "1.52.0" : "1.52.0";
428684
428694
  }
428685
428695
  function workflowPath(cwd2) {
428686
428696
  return join155(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -434536,7 +434546,7 @@ function createAcpStdioApp(deps) {
434536
434546
  }
434537
434547
  },
434538
434548
  authMethods: [],
434539
- agentInfo: { name: "UR-Nexus", version: "1.51.0" }
434549
+ agentInfo: { name: "UR-Nexus", version: "1.52.0" }
434540
434550
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
434541
434551
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
434542
434552
  await runtime2.announce({
@@ -434633,7 +434643,7 @@ function createAcpStdioAgent(deps) {
434633
434643
  }
434634
434644
  },
434635
434645
  authMethods: [],
434636
- agentInfo: { name: "UR-Nexus", version: "1.51.0" }
434646
+ agentInfo: { name: "UR-Nexus", version: "1.52.0" }
434637
434647
  });
434638
434648
  return;
434639
434649
  case "authenticate":
@@ -642105,7 +642115,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
642105
642115
  smapsRollup,
642106
642116
  platform: process.platform,
642107
642117
  nodeVersion: process.version,
642108
- ccVersion: "1.51.0"
642118
+ ccVersion: "1.52.0"
642109
642119
  };
642110
642120
  }
642111
642121
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -642685,7 +642695,7 @@ var init_bridge_kick = __esm(() => {
642685
642695
  var call145 = async () => {
642686
642696
  return {
642687
642697
  type: "text",
642688
- value: "1.51.0"
642698
+ value: "1.52.0"
642689
642699
  };
642690
642700
  }, version2, version_default;
642691
642701
  var init_version = __esm(() => {
@@ -653756,7 +653766,7 @@ function generateHtmlReport(data, insights) {
653756
653766
  </html>`;
653757
653767
  }
653758
653768
  function buildExportData(data, insights, facets, remoteStats) {
653759
- const version3 = typeof MACRO !== "undefined" ? "1.51.0" : "unknown";
653769
+ const version3 = typeof MACRO !== "undefined" ? "1.52.0" : "unknown";
653760
653770
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
653761
653771
  const facets_summary = {
653762
653772
  total: facets.size,
@@ -658051,7 +658061,7 @@ var init_sessionStorage = __esm(() => {
658051
658061
  init_settings2();
658052
658062
  init_slowOperations();
658053
658063
  init_uuid();
658054
- VERSION7 = typeof MACRO !== "undefined" ? "1.51.0" : "unknown";
658064
+ VERSION7 = typeof MACRO !== "undefined" ? "1.52.0" : "unknown";
658055
658065
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
658056
658066
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
658057
658067
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -659266,7 +659276,7 @@ var init_filesystem = __esm(() => {
659266
659276
  });
659267
659277
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
659268
659278
  const nonce = randomBytes19(16).toString("hex");
659269
- return join224(getURTempDir(), "bundled-skills", "1.51.0", nonce);
659279
+ return join224(getURTempDir(), "bundled-skills", "1.52.0", nonce);
659270
659280
  });
659271
659281
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
659272
659282
  });
@@ -665561,7 +665571,7 @@ function computeFingerprint(messageText2, version3) {
665561
665571
  }
665562
665572
  function computeFingerprintFromMessages(messages) {
665563
665573
  const firstMessageText = extractFirstMessageText(messages);
665564
- return computeFingerprint(firstMessageText, "1.51.0");
665574
+ return computeFingerprint(firstMessageText, "1.52.0");
665565
665575
  }
665566
665576
  var FINGERPRINT_SALT = "59cf53e54c78";
665567
665577
  var init_fingerprint = () => {};
@@ -667457,7 +667467,7 @@ async function sideQuery(opts) {
667457
667467
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
667458
667468
  }
667459
667469
  const messageText2 = extractFirstUserMessageText(messages);
667460
- const fingerprint2 = computeFingerprint(messageText2, "1.51.0");
667470
+ const fingerprint2 = computeFingerprint(messageText2, "1.52.0");
667461
667471
  const attributionHeader = getAttributionHeader(fingerprint2);
667462
667472
  const systemBlocks = [
667463
667473
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -672228,7 +672238,7 @@ function buildSystemInitMessage(inputs) {
672228
672238
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
672229
672239
  apiKeySource: getURHQApiKeyWithSource().source,
672230
672240
  betas: getSdkBetas(),
672231
- ur_version: "1.51.0",
672241
+ ur_version: "1.52.0",
672232
672242
  output_style: outputStyle2,
672233
672243
  agents: inputs.agents.map((agent2) => agent2.agentType),
672234
672244
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -686088,7 +686098,7 @@ var init_useVoiceEnabled = __esm(() => {
686088
686098
  function getSemverPart(version3) {
686089
686099
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
686090
686100
  }
686091
- function useUpdateNotification(updatedVersion, initialVersion = "1.51.0") {
686101
+ function useUpdateNotification(updatedVersion, initialVersion = "1.52.0") {
686092
686102
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react222.useState(() => getSemverPart(initialVersion));
686093
686103
  if (!updatedVersion) {
686094
686104
  return null;
@@ -686137,7 +686147,7 @@ function AutoUpdater({
686137
686147
  return;
686138
686148
  }
686139
686149
  if (false) {}
686140
- const currentVersion = "1.51.0";
686150
+ const currentVersion = "1.52.0";
686141
686151
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
686142
686152
  let latestVersion = await getLatestVersion(channel);
686143
686153
  const isDisabled = isAutoUpdaterDisabled();
@@ -686366,12 +686376,12 @@ function NativeAutoUpdater({
686366
686376
  logEvent("tengu_native_auto_updater_start", {});
686367
686377
  try {
686368
686378
  const maxVersion = await getMaxVersion();
686369
- if (maxVersion && gt("1.51.0", maxVersion)) {
686379
+ if (maxVersion && gt("1.52.0", maxVersion)) {
686370
686380
  const msg = await getMaxVersionMessage();
686371
686381
  setMaxVersionIssue(msg ?? "affects your version");
686372
686382
  }
686373
686383
  const result = await installLatest(channel);
686374
- const currentVersion = "1.51.0";
686384
+ const currentVersion = "1.52.0";
686375
686385
  const latencyMs = Date.now() - startTime;
686376
686386
  if (result.lockFailed) {
686377
686387
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -686508,17 +686518,17 @@ function PackageManagerAutoUpdater(t0) {
686508
686518
  const maxVersion = await getMaxVersion();
686509
686519
  if (maxVersion && latest && gt(latest, maxVersion)) {
686510
686520
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
686511
- if (gte("1.51.0", maxVersion)) {
686512
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.51.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
686521
+ if (gte("1.52.0", maxVersion)) {
686522
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.52.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
686513
686523
  setUpdateAvailable(false);
686514
686524
  return;
686515
686525
  }
686516
686526
  latest = maxVersion;
686517
686527
  }
686518
- const hasUpdate = latest && !gte("1.51.0", latest) && !shouldSkipVersion(latest);
686528
+ const hasUpdate = latest && !gte("1.52.0", latest) && !shouldSkipVersion(latest);
686519
686529
  setUpdateAvailable(!!hasUpdate);
686520
686530
  if (hasUpdate) {
686521
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.51.0"} -> ${latest}`);
686531
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.52.0"} -> ${latest}`);
686522
686532
  }
686523
686533
  };
686524
686534
  $2[0] = t1;
@@ -686552,7 +686562,7 @@ function PackageManagerAutoUpdater(t0) {
686552
686562
  wrap: "truncate",
686553
686563
  children: [
686554
686564
  "currentVersion: ",
686555
- "1.51.0"
686565
+ "1.52.0"
686556
686566
  ]
686557
686567
  }, undefined, true, undefined, this);
686558
686568
  $2[3] = verbose;
@@ -697249,7 +697259,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
697249
697259
  project_dir: getOriginalCwd(),
697250
697260
  added_dirs: addedDirs
697251
697261
  },
697252
- version: "1.51.0",
697262
+ version: "1.52.0",
697253
697263
  output_style: {
697254
697264
  name: outputStyleName
697255
697265
  },
@@ -697332,7 +697342,7 @@ function StatusLineInner({
697332
697342
  const taskValues = Object.values(tasks2);
697333
697343
  const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
697334
697344
  const defaultStatusLineText = buildDefaultStatusBar({
697335
- version: "1.51.0",
697345
+ version: "1.52.0",
697336
697346
  providerLabel: providerRuntime.providerLabel,
697337
697347
  authMode: providerRuntime.authLabel,
697338
697348
  model: providerRuntime.model ?? renderModelName(mainLoopModel),
@@ -709475,7 +709485,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
709475
709485
  } catch {}
709476
709486
  const data = {
709477
709487
  trigger: trigger2,
709478
- version: "1.51.0",
709488
+ version: "1.52.0",
709479
709489
  platform: process.platform,
709480
709490
  transcript,
709481
709491
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -721755,7 +721765,7 @@ function WelcomeV2() {
721755
721765
  dimColor: true,
721756
721766
  children: [
721757
721767
  "v",
721758
- "1.51.0"
721768
+ "1.52.0"
721759
721769
  ]
721760
721770
  }, undefined, true, undefined, this)
721761
721771
  ]
@@ -723015,7 +723025,7 @@ function completeOnboarding() {
723015
723025
  saveGlobalConfig((current) => ({
723016
723026
  ...current,
723017
723027
  hasCompletedOnboarding: true,
723018
- lastOnboardingVersion: "1.51.0"
723028
+ lastOnboardingVersion: "1.52.0"
723019
723029
  }));
723020
723030
  }
723021
723031
  function showDialog(root2, renderer) {
@@ -728059,7 +728069,7 @@ function appendToLog(path24, message) {
728059
728069
  cwd: getFsImplementation().cwd(),
728060
728070
  userType: process.env.USER_TYPE,
728061
728071
  sessionId: getSessionId(),
728062
- version: "1.51.0"
728072
+ version: "1.52.0"
728063
728073
  };
728064
728074
  getLogWriter(path24).write(messageWithTimestamp);
728065
728075
  }
@@ -732218,8 +732228,8 @@ async function getEnvLessBridgeConfig() {
732218
732228
  }
732219
732229
  async function checkEnvLessBridgeMinVersion() {
732220
732230
  const cfg = await getEnvLessBridgeConfig();
732221
- if (cfg.min_version && lt("1.51.0", cfg.min_version)) {
732222
- return `Your version of UR (${"1.51.0"}) is too old for Remote Control.
732231
+ if (cfg.min_version && lt("1.52.0", cfg.min_version)) {
732232
+ return `Your version of UR (${"1.52.0"}) is too old for Remote Control.
732223
732233
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
732224
732234
  }
732225
732235
  return null;
@@ -732693,7 +732703,7 @@ async function initBridgeCore(params) {
732693
732703
  const rawApi = createBridgeApiClient({
732694
732704
  baseUrl,
732695
732705
  getAccessToken,
732696
- runnerVersion: "1.51.0",
732706
+ runnerVersion: "1.52.0",
732697
732707
  onDebug: logForDebugging,
732698
732708
  onAuth401,
732699
732709
  getTrustedDeviceToken
@@ -742162,7 +742172,7 @@ function getAgUiCapabilities() {
742162
742172
  name: "UR-Nexus",
742163
742173
  type: "ur-nexus",
742164
742174
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
742165
- version: "1.51.0",
742175
+ version: "1.52.0",
742166
742176
  provider: "UR",
742167
742177
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
742168
742178
  },
@@ -743302,7 +743312,7 @@ function createMCPServer(cwd4, debug2, verbose) {
743302
743312
  };
743303
743313
  const server2 = new Server({
743304
743314
  name: "ur-nexus",
743305
- version: "1.51.0"
743315
+ version: "1.52.0"
743306
743316
  }, {
743307
743317
  capabilities: {
743308
743318
  tools: {}
@@ -744460,7 +744470,7 @@ function thrownResponse(error40) {
744460
744470
  }
744461
744471
  async function createUrMcp2026Runtime(options4) {
744462
744472
  const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
744463
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.51.0" }, { capabilities: {} });
744473
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.52.0" }, { capabilities: {} });
744464
744474
  const [clientTransport, serverTransport] = createLinkedTransportPair();
744465
744475
  try {
744466
744476
  await server2.connect(serverTransport);
@@ -744471,7 +744481,7 @@ async function createUrMcp2026Runtime(options4) {
744471
744481
  }
744472
744482
  const runtime2 = new Mcp2026Runtime({
744473
744483
  cwd: options4.cwd,
744474
- version: "1.51.0",
744484
+ version: "1.52.0",
744475
744485
  backend: {
744476
744486
  listTools: async () => {
744477
744487
  const listed = await client2.listTools();
@@ -746604,7 +746614,7 @@ async function update() {
746604
746614
  logEvent("tengu_update_check", {});
746605
746615
  const diagnostic2 = await getDoctorDiagnostic();
746606
746616
  const result = await checkUpgradeStatus({
746607
- currentVersion: "1.51.0",
746617
+ currentVersion: "1.52.0",
746608
746618
  packageName: UR_AGENT_PACKAGE_NAME,
746609
746619
  installationType: diagnostic2.installationType,
746610
746620
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -747920,7 +747930,7 @@ ${customInstructions}` : customInstructions;
747920
747930
  }
747921
747931
  }
747922
747932
  logForDiagnosticsNoPII("info", "started", {
747923
- version: "1.51.0",
747933
+ version: "1.52.0",
747924
747934
  is_native_binary: isInBundledMode()
747925
747935
  });
747926
747936
  registerCleanup(async () => {
@@ -748706,7 +748716,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
748706
748716
  pendingHookMessages
748707
748717
  }, renderAndRun);
748708
748718
  }
748709
- }).version("1.51.0 (UR-Nexus)", "-v, --version", "Output the version number");
748719
+ }).version("1.52.0 (UR-Nexus)", "-v, --version", "Output the version number");
748710
748720
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
748711
748721
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
748712
748722
  if (canUserConfigureAdvisor()) {
@@ -749722,7 +749732,7 @@ if (false) {}
749722
749732
  async function main2() {
749723
749733
  const args = process.argv.slice(2);
749724
749734
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
749725
- console.log(`${"1.51.0"} (UR-Nexus)`);
749735
+ console.log(`${"1.52.0"} (UR-Nexus)`);
749726
749736
  return;
749727
749737
  }
749728
749738
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
@@ -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.51.0</p>
48
+ <p class="eyebrow">Version 1.52.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.51.0"
10
+ version = "1.52.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.51.0",
5
+ "version": "1.52.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.51.0",
3
+ "version": "1.52.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",