ur-agent 1.63.0 → 1.64.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,29 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.64.0
4
+
5
+ - Tool-result pruning now announces itself. It changed context silently, so
6
+ there was no way to confirm it fired or to attribute a missing detail to it —
7
+ the same defect memory suggestions had when they went to stderr. A prune now
8
+ prints what it removed and how many tokens that freed.
9
+ - Corrected the fan-out drill, which tested the wrong limit. Asking for 30
10
+ subagents in one turn cannot reach `agents.maxConcurrent`, because
11
+ `MAX_CONCURRENT_TOOLS` caps a single turn at 8 — so the run reported an
12
+ unrelated cap and I mistook that for the governor being unreachable. It is
13
+ reachable by nesting: 8 roots, each spawning more, hits 20 and fires naming
14
+ the setting. The drill now exercises that path.
15
+ - Added a manual drill for tool-result pruning. It only fires inside a live
16
+ query loop, so no automated drill can reach it.
17
+ - Added opt-in signing of the memory integrity manifest via
18
+ `UR_MEMORY_INTEGRITY_KEY`. Unsigned, anyone who can write a memory file can
19
+ rewrite the manifest to match and pass verification; the HMAC raises that to
20
+ needing the key. Off by default because a key stored beside the data it
21
+ protects is theatre.
22
+ - `verify` exits non-zero on an invalid signature — the first implementation
23
+ detected forgery and still exited 0, because a forged manifest updates the
24
+ digests so every tamper count reads zero. A manifest that is signed but
25
+ unverifiable also fails, rather than passing on an unperformed check.
26
+
3
27
  ## 1.63.0
4
28
 
5
29
  - Added size-triggered pruning of superseded tool results
package/dist/cli.js CHANGED
@@ -75207,7 +75207,7 @@ var init_auth = __esm(() => {
75207
75207
 
75208
75208
  // src/utils/userAgent.ts
75209
75209
  function getURCodeUserAgent() {
75210
- return `ur/${"1.63.0"}`;
75210
+ return `ur/${"1.64.0"}`;
75211
75211
  }
75212
75212
 
75213
75213
  // src/utils/workloadContext.ts
@@ -75229,7 +75229,7 @@ function getUserAgent() {
75229
75229
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
75230
75230
  const workload = getWorkload();
75231
75231
  const workloadSuffix = workload ? `, workload/${workload}` : "";
75232
- return `ur-cli/${"1.63.0"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
75232
+ return `ur-cli/${"1.64.0"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
75233
75233
  }
75234
75234
  function getMCPUserAgent() {
75235
75235
  const parts = [];
@@ -75243,7 +75243,7 @@ function getMCPUserAgent() {
75243
75243
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
75244
75244
  }
75245
75245
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
75246
- return `ur/${"1.63.0"}${suffix}`;
75246
+ return `ur/${"1.64.0"}${suffix}`;
75247
75247
  }
75248
75248
  function getWebFetchUserAgent() {
75249
75249
  return `UR-User (${getURCodeUserAgent()})`;
@@ -75381,7 +75381,7 @@ var init_user = __esm(() => {
75381
75381
  deviceId,
75382
75382
  sessionId: getSessionId(),
75383
75383
  email: getEmail(),
75384
- appVersion: "1.63.0",
75384
+ appVersion: "1.64.0",
75385
75385
  platform: getHostPlatformForAnalytics(),
75386
75386
  organizationUuid,
75387
75387
  accountUuid,
@@ -83581,7 +83581,7 @@ var init_metadata = __esm(() => {
83581
83581
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
83582
83582
  WHITESPACE_REGEX = /\s+/;
83583
83583
  getVersionBase = memoize_default(() => {
83584
- const match = "1.63.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
83584
+ const match = "1.64.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
83585
83585
  return match ? match[0] : undefined;
83586
83586
  });
83587
83587
  buildEnvContext = memoize_default(async () => {
@@ -83621,7 +83621,7 @@ var init_metadata = __esm(() => {
83621
83621
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
83622
83622
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
83623
83623
  isURAiAuth: isURAISubscriber(),
83624
- version: "1.63.0",
83624
+ version: "1.64.0",
83625
83625
  versionBase: getVersionBase(),
83626
83626
  buildTime: "",
83627
83627
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -84291,7 +84291,7 @@ function initialize1PEventLogging() {
84291
84291
  const platform2 = getPlatform();
84292
84292
  const attributes = {
84293
84293
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
84294
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.63.0"
84294
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.64.0"
84295
84295
  };
84296
84296
  if (platform2 === "wsl") {
84297
84297
  const wslVersion = getWslVersion();
@@ -84319,7 +84319,7 @@ function initialize1PEventLogging() {
84319
84319
  })
84320
84320
  ]
84321
84321
  });
84322
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.63.0");
84322
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.64.0");
84323
84323
  }
84324
84324
  async function reinitialize1PEventLoggingIfConfigChanged() {
84325
84325
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -94165,7 +94165,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
94165
94165
  function formatA2AAgentCard(options = {}, pretty = true) {
94166
94166
  return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
94167
94167
  }
94168
- var urVersion = "1.63.0", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
94168
+ var urVersion = "1.64.0", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
94169
94169
  var init_trends = __esm(() => {
94170
94170
  init_a2aCardSignature();
94171
94171
  coverage = [
@@ -96968,7 +96968,7 @@ function getAttributionHeader(fingerprint) {
96968
96968
  if (!isAttributionHeaderEnabled()) {
96969
96969
  return "";
96970
96970
  }
96971
- const version2 = `${"1.63.0"}.${fingerprint}`;
96971
+ const version2 = `${"1.64.0"}.${fingerprint}`;
96972
96972
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
96973
96973
  const cch = "";
96974
96974
  const workload = getWorkload();
@@ -146435,7 +146435,10 @@ function maybeSizeBasedMicrocompact(messages, querySource) {
146435
146435
  suppressCompactWarning();
146436
146436
  resetMicrocompactState();
146437
146437
  if (false) {}
146438
- return { messages: cleared.messages };
146438
+ return {
146439
+ messages: cleared.messages,
146440
+ notice: `Pruned ${cleared.cleared} superseded tool result(s), freeing about ` + `${cleared.tokensSaved.toLocaleString()} tokens. The ${config2.keepRecent} most ` + `recent are kept. Disable with context.pruneToolResults.enabled=false.`
146441
+ };
146439
146442
  }
146440
146443
  function maybeTimeBasedMicrocompact(messages, querySource) {
146441
146444
  const trigger = evaluateTimeBasedTrigger(messages, querySource);
@@ -154633,7 +154636,7 @@ var init_projectSafety = __esm(() => {
154633
154636
  function getInstruments() {
154634
154637
  if (instruments)
154635
154638
  return instruments;
154636
- const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.63.0");
154639
+ const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.64.0");
154637
154640
  instruments = {
154638
154641
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
154639
154642
  description: "GenAI operation duration.",
@@ -154731,7 +154734,7 @@ function genAiAgentAttributes() {
154731
154734
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
154732
154735
  "gen_ai.provider.name": "ur",
154733
154736
  "gen_ai.agent.name": "UR-Nexus",
154734
- "gen_ai.agent.version": "1.63.0"
154737
+ "gen_ai.agent.version": "1.64.0"
154735
154738
  };
154736
154739
  }
154737
154740
  function genAiWorkflowAttributes(workflowName) {
@@ -154747,7 +154750,7 @@ function genAiWorkflowAttributes(workflowName) {
154747
154750
  function startGenAiWorkflowSpan(workflowName) {
154748
154751
  const attributes = genAiWorkflowAttributes(workflowName);
154749
154752
  const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
154750
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.63.0").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
154753
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.64.0").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
154751
154754
  }
154752
154755
  function endGenAiWorkflowSpan(span, options2 = {}) {
154753
154756
  try {
@@ -154785,7 +154788,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
154785
154788
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
154786
154789
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
154787
154790
  }
154788
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.63.0").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
154791
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.64.0").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
154789
154792
  }
154790
154793
  function endGenAiMemorySpan(span, options2 = {}) {
154791
154794
  try {
@@ -206304,7 +206307,7 @@ function getTelemetryAttributes() {
206304
206307
  attributes["session.id"] = sessionId;
206305
206308
  }
206306
206309
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
206307
- attributes["app.version"] = "1.63.0";
206310
+ attributes["app.version"] = "1.64.0";
206308
206311
  }
206309
206312
  const oauthAccount = getOauthAccountInfo();
206310
206313
  if (oauthAccount) {
@@ -242078,7 +242081,7 @@ function getInstallationEnv() {
242078
242081
  return;
242079
242082
  }
242080
242083
  function getURCodeVersion() {
242081
- return "1.63.0";
242084
+ return "1.64.0";
242082
242085
  }
242083
242086
  async function getInstalledVSCodeExtensionVersion(command) {
242084
242087
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -249409,7 +249412,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
249409
249412
  const client2 = new Client({
249410
249413
  name: "ur",
249411
249414
  title: "UR",
249412
- version: "1.63.0",
249415
+ version: "1.64.0",
249413
249416
  description: "UR-Nexus autonomous engineering workflow engine",
249414
249417
  websiteUrl: PRODUCT_URL
249415
249418
  }, {
@@ -249769,7 +249772,7 @@ var init_client5 = __esm(() => {
249769
249772
  const client2 = new Client({
249770
249773
  name: "ur",
249771
249774
  title: "UR",
249772
- version: "1.63.0",
249775
+ version: "1.64.0",
249773
249776
  description: "UR-Nexus autonomous engineering workflow engine",
249774
249777
  websiteUrl: PRODUCT_URL
249775
249778
  }, {
@@ -262370,7 +262373,7 @@ async function createRuntime() {
262370
262373
  bootstrapTelemetry();
262371
262374
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
262372
262375
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
262373
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.63.0"
262376
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.64.0"
262374
262377
  }));
262375
262378
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
262376
262379
  resource,
@@ -262403,11 +262406,11 @@ async function createRuntime() {
262403
262406
  setMeterProvider(meterProvider);
262404
262407
  setLoggerProvider(loggerProvider);
262405
262408
  if (meterProvider) {
262406
- const meter = meterProvider.getMeter("ur-agent", "1.63.0");
262409
+ const meter = meterProvider.getMeter("ur-agent", "1.64.0");
262407
262410
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
262408
262411
  }
262409
262412
  if (loggerProvider) {
262410
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.63.0"));
262413
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.64.0"));
262411
262414
  }
262412
262415
  if (!cleanupRegistered2) {
262413
262416
  cleanupRegistered2 = true;
@@ -263069,9 +263072,9 @@ async function assertMinVersion() {
263069
263072
  if (false) {}
263070
263073
  try {
263071
263074
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
263072
- if (versionConfig.minVersion && lt("1.63.0", versionConfig.minVersion)) {
263075
+ if (versionConfig.minVersion && lt("1.64.0", versionConfig.minVersion)) {
263073
263076
  console.error(`
263074
- It looks like your version of UR (${"1.63.0"}) needs an update.
263077
+ It looks like your version of UR (${"1.64.0"}) needs an update.
263075
263078
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
263076
263079
 
263077
263080
  To update, please run:
@@ -263287,7 +263290,7 @@ async function installGlobalPackage(specificVersion) {
263287
263290
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
263288
263291
  logEvent("tengu_auto_updater_lock_contention", {
263289
263292
  pid: process.pid,
263290
- currentVersion: "1.63.0"
263293
+ currentVersion: "1.64.0"
263291
263294
  });
263292
263295
  return "in_progress";
263293
263296
  }
@@ -263296,7 +263299,7 @@ async function installGlobalPackage(specificVersion) {
263296
263299
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
263297
263300
  logError2(new Error("Windows NPM detected in WSL environment"));
263298
263301
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
263299
- currentVersion: "1.63.0"
263302
+ currentVersion: "1.64.0"
263300
263303
  });
263301
263304
  console.error(`
263302
263305
  Error: Windows NPM detected in WSL
@@ -263831,7 +263834,7 @@ function detectLinuxGlobPatternWarnings() {
263831
263834
  }
263832
263835
  async function getDoctorDiagnostic() {
263833
263836
  const installationType = await getCurrentInstallationType();
263834
- const version2 = typeof MACRO !== "undefined" ? "1.63.0" : "unknown";
263837
+ const version2 = typeof MACRO !== "undefined" ? "1.64.0" : "unknown";
263835
263838
  const installationPath = await getInstallationPath();
263836
263839
  const invokedBinary = getInvokedBinary();
263837
263840
  const multipleInstallations = await detectMultipleInstallations();
@@ -264766,8 +264769,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
264766
264769
  const maxVersion = await getMaxVersion();
264767
264770
  if (maxVersion && gt(version2, maxVersion)) {
264768
264771
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
264769
- if (gte("1.63.0", maxVersion)) {
264770
- logForDebugging(`Native installer: current version ${"1.63.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
264772
+ if (gte("1.64.0", maxVersion)) {
264773
+ logForDebugging(`Native installer: current version ${"1.64.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
264771
264774
  logEvent("tengu_native_update_skipped_max_version", {
264772
264775
  latency_ms: Date.now() - startTime,
264773
264776
  max_version: maxVersion,
@@ -264778,7 +264781,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
264778
264781
  version2 = maxVersion;
264779
264782
  }
264780
264783
  }
264781
- if (!forceReinstall && version2 === "1.63.0" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
264784
+ if (!forceReinstall && version2 === "1.64.0" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
264782
264785
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
264783
264786
  logEvent("tengu_native_update_complete", {
264784
264787
  latency_ms: Date.now() - startTime,
@@ -334977,7 +334980,7 @@ function isAnyTracingEnabled() {
334977
334980
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
334978
334981
  }
334979
334982
  function getTracer() {
334980
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.63.0");
334983
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.64.0");
334981
334984
  }
334982
334985
  function createSpanAttributes(spanType, customAttributes = {}) {
334983
334986
  const baseAttributes = getTelemetryAttributes();
@@ -339451,6 +339454,9 @@ async function* queryLoop(params, consumedCommandUuids) {
339451
339454
  queryCheckpoint("query_microcompact_start");
339452
339455
  const microcompactResult = await deps.microcompact(messagesForQuery, toolUseContext, querySource);
339453
339456
  messagesForQuery = microcompactResult.messages;
339457
+ if (microcompactResult.notice) {
339458
+ yield createSystemMessage(microcompactResult.notice, "info");
339459
+ }
339454
339460
  const pendingCacheEdits2 = undefined;
339455
339461
  queryCheckpoint("query_microcompact_end");
339456
339462
  if (false) {}
@@ -364480,7 +364486,7 @@ function Feedback({
364480
364486
  platform: env2.platform,
364481
364487
  gitRepo: envInfo.isGit,
364482
364488
  terminal: env2.terminal,
364483
- version: "1.63.0",
364489
+ version: "1.64.0",
364484
364490
  transcript: normalizeMessagesForAPI(messages),
364485
364491
  errors: sanitizedErrors,
364486
364492
  lastApiRequest: getLastAPIRequest(),
@@ -364672,7 +364678,7 @@ function Feedback({
364672
364678
  ", ",
364673
364679
  env2.terminal,
364674
364680
  ", v",
364675
- "1.63.0"
364681
+ "1.64.0"
364676
364682
  ]
364677
364683
  }, undefined, true, undefined, this)
364678
364684
  ]
@@ -364778,7 +364784,7 @@ ${sanitizedDescription}
364778
364784
  ` + `**Environment Info**
364779
364785
  ` + `- Platform: ${env2.platform}
364780
364786
  ` + `- Terminal: ${env2.terminal}
364781
- ` + `- Version: ${"1.63.0"}
364787
+ ` + `- Version: ${"1.64.0"}
364782
364788
  ` + `- Feedback ID: ${feedbackId}
364783
364789
  ` + `
364784
364790
  **Errors**
@@ -367888,7 +367894,7 @@ function buildPrimarySection() {
367888
367894
  }, undefined, false, undefined, this);
367889
367895
  return [{
367890
367896
  label: "Version",
367891
- value: "1.63.0"
367897
+ value: "1.64.0"
367892
367898
  }, {
367893
367899
  label: "Session name",
367894
367900
  value: nameValue
@@ -371218,7 +371224,7 @@ function Config({
371218
371224
  }
371219
371225
  }, undefined, false, undefined, this)
371220
371226
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
371221
- currentVersion: "1.63.0",
371227
+ currentVersion: "1.64.0",
371222
371228
  onChoice: (choice) => {
371223
371229
  setShowSubmenu(null);
371224
371230
  setTabsHidden(false);
@@ -371230,7 +371236,7 @@ function Config({
371230
371236
  autoUpdatesChannel: "stable"
371231
371237
  };
371232
371238
  if (choice === "stay") {
371233
- newSettings.minimumVersion = "1.63.0";
371239
+ newSettings.minimumVersion = "1.64.0";
371234
371240
  }
371235
371241
  updateSettingsForSource("userSettings", newSettings);
371236
371242
  setSettingsData((prev_27) => ({
@@ -379294,7 +379300,7 @@ function HelpV2(t0) {
379294
379300
  let t6;
379295
379301
  if ($2[31] !== tabs) {
379296
379302
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
379297
- title: `UR v${"1.63.0"}`,
379303
+ title: `UR v${"1.64.0"}`,
379298
379304
  color: "professionalBlue",
379299
379305
  defaultTab: "general",
379300
379306
  children: tabs
@@ -380211,7 +380217,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
380211
380217
  async function handleInitialize(options2) {
380212
380218
  return {
380213
380219
  name: "UR",
380214
- version: "1.63.0",
380220
+ version: "1.64.0",
380215
380221
  protocolVersion: "0.1.0",
380216
380222
  workspaceRoot: options2.cwd,
380217
380223
  capabilities: {
@@ -397319,7 +397325,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
397319
397325
  return [];
397320
397326
  }
397321
397327
  }
397322
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.63.0") {
397328
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.64.0") {
397323
397329
  if (process.env.USER_TYPE === "ant") {
397324
397330
  const changelog = "";
397325
397331
  if (changelog) {
@@ -397346,7 +397352,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.63.0")
397346
397352
  releaseNotes
397347
397353
  };
397348
397354
  }
397349
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.63.0") {
397355
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.64.0") {
397350
397356
  if (process.env.USER_TYPE === "ant") {
397351
397357
  const changelog = "";
397352
397358
  if (changelog) {
@@ -400203,7 +400209,7 @@ function getRecentActivitySync() {
400203
400209
  return cachedActivity;
400204
400210
  }
400205
400211
  function getLogoDisplayData() {
400206
- const version2 = process.env.DEMO_VERSION ?? "1.63.0";
400212
+ const version2 = process.env.DEMO_VERSION ?? "1.64.0";
400207
400213
  const serverUrl = getDirectConnectServerUrl();
400208
400214
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
400209
400215
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -401087,7 +401093,7 @@ function LogoV2() {
401087
401093
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
401088
401094
  t2 = () => {
401089
401095
  const currentConfig2 = getGlobalConfig();
401090
- if (currentConfig2.lastReleaseNotesSeen === "1.63.0") {
401096
+ if (currentConfig2.lastReleaseNotesSeen === "1.64.0") {
401091
401097
  return;
401092
401098
  }
401093
401099
  saveGlobalConfig(_temp327);
@@ -401772,12 +401778,12 @@ function LogoV2() {
401772
401778
  return t41;
401773
401779
  }
401774
401780
  function _temp327(current) {
401775
- if (current.lastReleaseNotesSeen === "1.63.0") {
401781
+ if (current.lastReleaseNotesSeen === "1.64.0") {
401776
401782
  return current;
401777
401783
  }
401778
401784
  return {
401779
401785
  ...current,
401780
- lastReleaseNotesSeen: "1.63.0"
401786
+ lastReleaseNotesSeen: "1.64.0"
401781
401787
  };
401782
401788
  }
401783
401789
  function _temp241(s_0) {
@@ -418575,7 +418581,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
418575
418581
  if (spec.name !== specName) {
418576
418582
  throw new Error("Agentic CI workflow spec name does not match");
418577
418583
  }
418578
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.63.0" : "1.63.0");
418584
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.64.0" : "1.64.0");
418579
418585
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
418580
418586
  throw new Error("invalid ur-agent package version");
418581
418587
  }
@@ -419568,7 +419574,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
419568
419574
  path: ".github/workflows/ur.yml",
419569
419575
  root: "project",
419570
419576
  content: compileAgenticCiWorkflow("default", {
419571
- packageVersion: typeof MACRO !== "undefined" ? "1.63.0" : "1.63.0"
419577
+ packageVersion: typeof MACRO !== "undefined" ? "1.64.0" : "1.64.0"
419572
419578
  })
419573
419579
  },
419574
419580
  {
@@ -419631,7 +419637,7 @@ function value(tokens, flag) {
419631
419637
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
419632
419638
  }
419633
419639
  function cliVersion() {
419634
- return typeof MACRO !== "undefined" ? "1.63.0" : "1.63.0";
419640
+ return typeof MACRO !== "undefined" ? "1.64.0" : "1.64.0";
419635
419641
  }
419636
419642
  function workflowPath(cwd2) {
419637
419643
  return join159(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -425487,7 +425493,7 @@ function createAcpStdioApp(deps) {
425487
425493
  }
425488
425494
  },
425489
425495
  authMethods: [],
425490
- agentInfo: { name: "UR-Nexus", version: "1.63.0" }
425496
+ agentInfo: { name: "UR-Nexus", version: "1.64.0" }
425491
425497
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
425492
425498
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
425493
425499
  await runtime2.announce({
@@ -425584,7 +425590,7 @@ function createAcpStdioAgent(deps) {
425584
425590
  }
425585
425591
  },
425586
425592
  authMethods: [],
425587
- agentInfo: { name: "UR-Nexus", version: "1.63.0" }
425593
+ agentInfo: { name: "UR-Nexus", version: "1.64.0" }
425588
425594
  });
425589
425595
  return;
425590
425596
  case "authenticate":
@@ -435139,7 +435145,7 @@ var init_sources2 = __esm(() => {
435139
435145
  });
435140
435146
 
435141
435147
  // src/memdir/memoryIntegrity.ts
435142
- import { createHash as createHash42 } from "crypto";
435148
+ import { createHash as createHash42, createHmac as createHmac2 } from "crypto";
435143
435149
  import {
435144
435150
  existsSync as existsSync65,
435145
435151
  mkdirSync as mkdirSync46,
@@ -435150,6 +435156,23 @@ import {
435150
435156
  writeFileSync as writeFileSync46
435151
435157
  } from "fs";
435152
435158
  import { join as join184, relative as relative42 } from "path";
435159
+ function signingKey(env4 = process.env) {
435160
+ const key = env4.UR_MEMORY_INTEGRITY_KEY?.trim();
435161
+ return key ? key : null;
435162
+ }
435163
+ function signManifest(files, key) {
435164
+ const canonical = Object.keys(files).sort().map((name) => `${name}:${files[name].digest}`).join(`
435165
+ `);
435166
+ return createHmac2("sha256", key).update(canonical).digest("hex");
435167
+ }
435168
+ function checkSignature(manifest, env4 = process.env) {
435169
+ const key = signingKey(env4);
435170
+ if (!manifest.signature)
435171
+ return "unsigned";
435172
+ if (!key)
435173
+ return "unverifiable";
435174
+ return signManifest(manifest.files, key) === manifest.signature ? "valid" : "invalid";
435175
+ }
435153
435176
  function manifestPathFor2(dir) {
435154
435177
  return join184(dir, MANIFEST_NAME);
435155
435178
  }
@@ -435199,10 +435222,12 @@ function recordManifest(dir) {
435199
435222
  bytes: statSync24(full).size
435200
435223
  };
435201
435224
  }
435225
+ const key = signingKey();
435202
435226
  const manifest = {
435203
435227
  version: 1,
435204
435228
  updatedAt: new Date().toISOString(),
435205
- files
435229
+ files,
435230
+ ...key ? { signature: signManifest(files, key) } : {}
435206
435231
  };
435207
435232
  writeFileSync46(manifestPathFor2(dir), `${JSON.stringify(manifest, null, 2)}
435208
435233
  `);
@@ -435249,7 +435274,8 @@ function verifyMemoryStore(dir) {
435249
435274
  dir,
435250
435275
  manifestPath: manifestPathFor2(dir),
435251
435276
  exists: existsSync65(dir),
435252
- valid: manifest !== null && entries.length > 0 && counts.modified === 0 && counts.untracked === 0 && counts.missing === 0,
435277
+ signature: manifest ? checkSignature(manifest) : "unsigned",
435278
+ valid: manifest !== null && checkSignature(manifest) !== "invalid" && checkSignature(manifest) !== "unverifiable" && entries.length > 0 && counts.modified === 0 && counts.untracked === 0 && counts.missing === 0,
435253
435279
  entries,
435254
435280
  counts
435255
435281
  };
@@ -435281,6 +435307,17 @@ function formatMemoryIntegrity(report, json2) {
435281
435307
  return `${report.dir}
435282
435308
  ` + ` no such directory \u2014 nothing was checked. If you expected memory here,
435283
435309
  ` + ` the path is wrong; verifying a path that does not exist proves nothing.`;
435310
+ }
435311
+ if (report.signature === "invalid") {
435312
+ return `${report.dir}
435313
+ ` + ` SIGNATURE INVALID \u2014 the manifest does not match its signature.
435314
+ ` + ` Someone with write access to this directory rewrote the manifest
435315
+ ` + ` without the key. Treat every file here as untrusted.`;
435316
+ }
435317
+ if (report.signature === "unverifiable") {
435318
+ return `${report.dir}
435319
+ ` + ` signed, but UR_MEMORY_INTEGRITY_KEY is not set, so the signature
435320
+ ` + ` could not be checked. Nothing here can be vouched for without it.`;
435284
435321
  }
435285
435322
  if (report.entries.length === 0) {
435286
435323
  return `${report.dir}
@@ -435371,7 +435408,7 @@ var call80 = async (args) => {
435371
435408
  };
435372
435409
  }
435373
435410
  const reports = stores.map((dir) => verifyMemoryStore(dir));
435374
- const tampered = reports.some((report) => report.counts.modified > 0 || report.counts.missing > 0 || report.counts.untracked > 0);
435411
+ const tampered = reports.some((report) => report.counts.modified > 0 || report.counts.missing > 0 || report.counts.untracked > 0 || report.signature === "invalid" || report.signature === "unverifiable");
435375
435412
  if (tampered)
435376
435413
  process.exitCode = 1;
435377
435414
  return {
@@ -435618,9 +435655,17 @@ var init_selfTest = __esm(() => {
435618
435655
  id: "fan-out-limit",
435619
435656
  feature: "agent fan-out limits",
435620
435657
  kind: "manual",
435621
- action: 'Start `ur` and ask it to spawn more subagents than agents.maxConcurrent allows (e.g. "review these 30 files, one subagent each")',
435622
- expect: "the cap is enforced and the refusal names agents.maxConcurrent, so you can act on it",
435623
- rationale: "The limiter has unit tests and has never been exercised live; a governor that never trips in practice is unproven."
435658
+ action: 'In the UR repo, ask for NESTED fan-out: "review every directory in src/tools, and have each reviewer spawn a subagent per file it finds"',
435659
+ expect: "once ~20 agents are live the cap fires, and the refusal names agents.maxConcurrent so you can raise it",
435660
+ rationale: "Asking for 30 agents in one turn does NOT test this: MAX_CONCURRENT_TOOLS caps a single turn at 8, so the 20-agent limit is only reachable by nesting. An earlier version of this drill made that mistake and reported the wrong limit firing."
435661
+ },
435662
+ {
435663
+ id: "tool-result-pruning",
435664
+ feature: "context.pruneToolResults",
435665
+ kind: "manual",
435666
+ action: 'Run a long session that reads many large files (e.g. "read every file in src/services/api and summarise each"), then watch for the prune notice and check /context',
435667
+ expect: "a line reporting how many tool results were pruned and roughly how many tokens that freed; context stops climbing where it previously kept filling",
435668
+ rationale: "Pruning only fires inside a live query loop, so no automated drill can reach it. It is on by default and changes context for every session, which makes it the least-verified thing shipped."
435624
435669
  },
435625
435670
  {
435626
435671
  id: "btw-full-question",
@@ -633919,7 +633964,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
633919
633964
  smapsRollup,
633920
633965
  platform: process.platform,
633921
633966
  nodeVersion: process.version,
633922
- ccVersion: "1.63.0"
633967
+ ccVersion: "1.64.0"
633923
633968
  };
633924
633969
  }
633925
633970
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -634499,7 +634544,7 @@ var init_bridge_kick = __esm(() => {
634499
634544
  var call153 = async () => {
634500
634545
  return {
634501
634546
  type: "text",
634502
- value: "1.63.0"
634547
+ value: "1.64.0"
634503
634548
  };
634504
634549
  }, version2, version_default;
634505
634550
  var init_version = __esm(() => {
@@ -645570,7 +645615,7 @@ function generateHtmlReport(data, insights) {
645570
645615
  </html>`;
645571
645616
  }
645572
645617
  function buildExportData(data, insights, facets, remoteStats) {
645573
- const version3 = typeof MACRO !== "undefined" ? "1.63.0" : "unknown";
645618
+ const version3 = typeof MACRO !== "undefined" ? "1.64.0" : "unknown";
645574
645619
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
645575
645620
  const facets_summary = {
645576
645621
  total: facets.size,
@@ -649881,7 +649926,7 @@ var init_sessionStorage = __esm(() => {
649881
649926
  init_settings2();
649882
649927
  init_slowOperations();
649883
649928
  init_uuid();
649884
- VERSION7 = typeof MACRO !== "undefined" ? "1.63.0" : "unknown";
649929
+ VERSION7 = typeof MACRO !== "undefined" ? "1.64.0" : "unknown";
649885
649930
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
649886
649931
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
649887
649932
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -651096,7 +651141,7 @@ var init_filesystem = __esm(() => {
651096
651141
  });
651097
651142
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
651098
651143
  const nonce = randomBytes20(16).toString("hex");
651099
- return join232(getURTempDir(), "bundled-skills", "1.63.0", nonce);
651144
+ return join232(getURTempDir(), "bundled-skills", "1.64.0", nonce);
651100
651145
  });
651101
651146
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
651102
651147
  });
@@ -657391,7 +657436,7 @@ function computeFingerprint(messageText2, version3) {
657391
657436
  }
657392
657437
  function computeFingerprintFromMessages(messages) {
657393
657438
  const firstMessageText = extractFirstMessageText(messages);
657394
- return computeFingerprint(firstMessageText, "1.63.0");
657439
+ return computeFingerprint(firstMessageText, "1.64.0");
657395
657440
  }
657396
657441
  var FINGERPRINT_SALT = "59cf53e54c78";
657397
657442
  var init_fingerprint = () => {};
@@ -659287,7 +659332,7 @@ async function sideQuery(opts) {
659287
659332
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
659288
659333
  }
659289
659334
  const messageText2 = extractFirstUserMessageText(messages);
659290
- const fingerprint2 = computeFingerprint(messageText2, "1.63.0");
659335
+ const fingerprint2 = computeFingerprint(messageText2, "1.64.0");
659291
659336
  const attributionHeader = getAttributionHeader(fingerprint2);
659292
659337
  const systemBlocks = [
659293
659338
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -664058,7 +664103,7 @@ function buildSystemInitMessage(inputs) {
664058
664103
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
664059
664104
  apiKeySource: getURHQApiKeyWithSource().source,
664060
664105
  betas: getSdkBetas(),
664061
- ur_version: "1.63.0",
664106
+ ur_version: "1.64.0",
664062
664107
  output_style: outputStyle2,
664063
664108
  agents: inputs.agents.map((agent2) => agent2.agentType),
664064
664109
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -677918,7 +677963,7 @@ var init_useVoiceEnabled = __esm(() => {
677918
677963
  function getSemverPart(version3) {
677919
677964
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
677920
677965
  }
677921
- function useUpdateNotification(updatedVersion, initialVersion = "1.63.0") {
677966
+ function useUpdateNotification(updatedVersion, initialVersion = "1.64.0") {
677922
677967
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react222.useState(() => getSemverPart(initialVersion));
677923
677968
  if (!updatedVersion) {
677924
677969
  return null;
@@ -677967,7 +678012,7 @@ function AutoUpdater({
677967
678012
  return;
677968
678013
  }
677969
678014
  if (false) {}
677970
- const currentVersion = "1.63.0";
678015
+ const currentVersion = "1.64.0";
677971
678016
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
677972
678017
  let latestVersion = await getLatestVersion(channel);
677973
678018
  const isDisabled = isAutoUpdaterDisabled();
@@ -678196,12 +678241,12 @@ function NativeAutoUpdater({
678196
678241
  logEvent("tengu_native_auto_updater_start", {});
678197
678242
  try {
678198
678243
  const maxVersion = await getMaxVersion();
678199
- if (maxVersion && gt("1.63.0", maxVersion)) {
678244
+ if (maxVersion && gt("1.64.0", maxVersion)) {
678200
678245
  const msg = await getMaxVersionMessage();
678201
678246
  setMaxVersionIssue(msg ?? "affects your version");
678202
678247
  }
678203
678248
  const result = await installLatest(channel);
678204
- const currentVersion = "1.63.0";
678249
+ const currentVersion = "1.64.0";
678205
678250
  const latencyMs = Date.now() - startTime;
678206
678251
  if (result.lockFailed) {
678207
678252
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -678338,17 +678383,17 @@ function PackageManagerAutoUpdater(t0) {
678338
678383
  const maxVersion = await getMaxVersion();
678339
678384
  if (maxVersion && latest && gt(latest, maxVersion)) {
678340
678385
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
678341
- if (gte("1.63.0", maxVersion)) {
678342
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.63.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
678386
+ if (gte("1.64.0", maxVersion)) {
678387
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.64.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
678343
678388
  setUpdateAvailable(false);
678344
678389
  return;
678345
678390
  }
678346
678391
  latest = maxVersion;
678347
678392
  }
678348
- const hasUpdate = latest && !gte("1.63.0", latest) && !shouldSkipVersion(latest);
678393
+ const hasUpdate = latest && !gte("1.64.0", latest) && !shouldSkipVersion(latest);
678349
678394
  setUpdateAvailable(!!hasUpdate);
678350
678395
  if (hasUpdate) {
678351
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.63.0"} -> ${latest}`);
678396
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.64.0"} -> ${latest}`);
678352
678397
  }
678353
678398
  };
678354
678399
  $2[0] = t1;
@@ -678382,7 +678427,7 @@ function PackageManagerAutoUpdater(t0) {
678382
678427
  wrap: "truncate",
678383
678428
  children: [
678384
678429
  "currentVersion: ",
678385
- "1.63.0"
678430
+ "1.64.0"
678386
678431
  ]
678387
678432
  }, undefined, true, undefined, this);
678388
678433
  $2[3] = verbose;
@@ -689079,7 +689124,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
689079
689124
  project_dir: getOriginalCwd(),
689080
689125
  added_dirs: addedDirs
689081
689126
  },
689082
- version: "1.63.0",
689127
+ version: "1.64.0",
689083
689128
  output_style: {
689084
689129
  name: outputStyleName
689085
689130
  },
@@ -689162,7 +689207,7 @@ function StatusLineInner({
689162
689207
  const taskValues = Object.values(tasks2);
689163
689208
  const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
689164
689209
  const defaultStatusLineText = buildDefaultStatusBar({
689165
- version: "1.63.0",
689210
+ version: "1.64.0",
689166
689211
  providerLabel: providerRuntime.providerLabel,
689167
689212
  authMode: providerRuntime.authLabel,
689168
689213
  model: providerRuntime.model ?? renderModelName(mainLoopModel),
@@ -701305,7 +701350,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
701305
701350
  } catch {}
701306
701351
  const data = {
701307
701352
  trigger: trigger2,
701308
- version: "1.63.0",
701353
+ version: "1.64.0",
701309
701354
  platform: process.platform,
701310
701355
  transcript,
701311
701356
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -713585,7 +713630,7 @@ function WelcomeV2() {
713585
713630
  dimColor: true,
713586
713631
  children: [
713587
713632
  "v",
713588
- "1.63.0"
713633
+ "1.64.0"
713589
713634
  ]
713590
713635
  }, undefined, true, undefined, this)
713591
713636
  ]
@@ -714845,7 +714890,7 @@ function completeOnboarding() {
714845
714890
  saveGlobalConfig((current) => ({
714846
714891
  ...current,
714847
714892
  hasCompletedOnboarding: true,
714848
- lastOnboardingVersion: "1.63.0"
714893
+ lastOnboardingVersion: "1.64.0"
714849
714894
  }));
714850
714895
  }
714851
714896
  function showDialog(root2, renderer) {
@@ -719889,7 +719934,7 @@ function appendToLog(path24, message) {
719889
719934
  cwd: getFsImplementation().cwd(),
719890
719935
  userType: process.env.USER_TYPE,
719891
719936
  sessionId: getSessionId(),
719892
- version: "1.63.0"
719937
+ version: "1.64.0"
719893
719938
  };
719894
719939
  getLogWriter(path24).write(messageWithTimestamp);
719895
719940
  }
@@ -724048,8 +724093,8 @@ async function getEnvLessBridgeConfig() {
724048
724093
  }
724049
724094
  async function checkEnvLessBridgeMinVersion() {
724050
724095
  const cfg = await getEnvLessBridgeConfig();
724051
- if (cfg.min_version && lt("1.63.0", cfg.min_version)) {
724052
- return `Your version of UR (${"1.63.0"}) is too old for Remote Control.
724096
+ if (cfg.min_version && lt("1.64.0", cfg.min_version)) {
724097
+ return `Your version of UR (${"1.64.0"}) is too old for Remote Control.
724053
724098
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
724054
724099
  }
724055
724100
  return null;
@@ -724523,7 +724568,7 @@ async function initBridgeCore(params) {
724523
724568
  const rawApi = createBridgeApiClient({
724524
724569
  baseUrl,
724525
724570
  getAccessToken,
724526
- runnerVersion: "1.63.0",
724571
+ runnerVersion: "1.64.0",
724527
724572
  onDebug: logForDebugging,
724528
724573
  onAuth401,
724529
724574
  getTrustedDeviceToken
@@ -733999,7 +734044,7 @@ function getAgUiCapabilities() {
733999
734044
  name: "UR-Nexus",
734000
734045
  type: "ur-nexus",
734001
734046
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
734002
- version: "1.63.0",
734047
+ version: "1.64.0",
734003
734048
  provider: "UR",
734004
734049
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
734005
734050
  },
@@ -735139,7 +735184,7 @@ function createMCPServer(cwd4, debug2, verbose) {
735139
735184
  };
735140
735185
  const server2 = new Server({
735141
735186
  name: "ur-nexus",
735142
- version: "1.63.0"
735187
+ version: "1.64.0"
735143
735188
  }, {
735144
735189
  capabilities: {
735145
735190
  tools: {}
@@ -736297,7 +736342,7 @@ function thrownResponse(error40) {
736297
736342
  }
736298
736343
  async function createUrMcp2026Runtime(options4) {
736299
736344
  const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
736300
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.63.0" }, { capabilities: {} });
736345
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.64.0" }, { capabilities: {} });
736301
736346
  const [clientTransport, serverTransport] = createLinkedTransportPair();
736302
736347
  try {
736303
736348
  await server2.connect(serverTransport);
@@ -736308,7 +736353,7 @@ async function createUrMcp2026Runtime(options4) {
736308
736353
  }
736309
736354
  const runtime2 = new Mcp2026Runtime({
736310
736355
  cwd: options4.cwd,
736311
- version: "1.63.0",
736356
+ version: "1.64.0",
736312
736357
  backend: {
736313
736358
  listTools: async () => {
736314
736359
  const listed = await client2.listTools();
@@ -738441,7 +738486,7 @@ async function update() {
738441
738486
  logEvent("tengu_update_check", {});
738442
738487
  const diagnostic2 = await getDoctorDiagnostic();
738443
738488
  const result = await checkUpgradeStatus({
738444
- currentVersion: "1.63.0",
738489
+ currentVersion: "1.64.0",
738445
738490
  packageName: UR_AGENT_PACKAGE_NAME,
738446
738491
  installationType: diagnostic2.installationType,
738447
738492
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -739757,7 +739802,7 @@ ${customInstructions}` : customInstructions;
739757
739802
  }
739758
739803
  }
739759
739804
  logForDiagnosticsNoPII("info", "started", {
739760
- version: "1.63.0",
739805
+ version: "1.64.0",
739761
739806
  is_native_binary: isInBundledMode()
739762
739807
  });
739763
739808
  registerCleanup(async () => {
@@ -740543,7 +740588,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
740543
740588
  pendingHookMessages
740544
740589
  }, renderAndRun);
740545
740590
  }
740546
- }).version("1.63.0 (UR-Nexus)", "-v, --version", "Output the version number");
740591
+ }).version("1.64.0 (UR-Nexus)", "-v, --version", "Output the version number");
740547
740592
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
740548
740593
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
740549
740594
  if (canUserConfigureAdvisor()) {
@@ -741595,7 +741640,7 @@ if (false) {}
741595
741640
  async function main2() {
741596
741641
  const args = process.argv.slice(2);
741597
741642
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
741598
- console.log(`${"1.63.0"} (UR-Nexus)`);
741643
+ console.log(`${"1.64.0"} (UR-Nexus)`);
741599
741644
  return;
741600
741645
  }
741601
741646
  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.63.0</p>
48
+ <p class="eyebrow">Version 1.64.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.63.0"
10
+ version = "1.64.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.63.0",
5
+ "version": "1.64.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.63.0",
3
+ "version": "1.64.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",
@@ -84,7 +84,7 @@
84
84
  "@ag-ui/core": "0.0.57",
85
85
  "@ag-ui/encoder": "0.0.57",
86
86
  "diff2html": "^3.4.56",
87
- "playwright-core": "^1.63.0",
87
+ "playwright-core": "^1.64.0",
88
88
  "sharp": "^0.35.3"
89
89
  },
90
90
  "devDependencies": {