ur-agent 1.77.2 → 1.77.3

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,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.77.3
4
+
5
+ - Read says when it did not return the whole file. It stops at 2000 lines by
6
+ default, but the result was only numbered lines with nothing marking the
7
+ cutoff, so a partial read was indistinguishable from a complete one and
8
+ concluding "this code is not in the file" from one was a reasonable inference
9
+ from what the model was shown. A truncated read now reports the range it
10
+ returned, how many lines were left, and the offset to resume from — the same
11
+ signal Grep and Glob already gave. A complete read, the final page of a
12
+ paginated read, and an empty read all stay silent, so nothing is added to the
13
+ common case.
14
+
3
15
  ## 1.77.2
4
16
 
5
17
  - Git commit and pull-request guidance is no longer sent outside a git
package/dist/cli.js CHANGED
@@ -87513,6 +87513,7 @@ function describeQuestionPayloadProblems(value) {
87513
87513
  if (!Array.isArray(questions) || questions.length === 0) {
87514
87514
  return ["`questions` must be a non-empty array."];
87515
87515
  }
87516
+ const shapes = questions.slice(0, 3).map((question, index2) => isRecord2(question) ? `questions[${index2}] has keys: ${Object.keys(question).join(", ") || "(none)"}` : `questions[${index2}] is ${Array.isArray(question) ? "an array" : typeof question}`).join("; ");
87516
87517
  questions.forEach((question, index2) => {
87517
87518
  const where = `questions[${index2}]`;
87518
87519
  if (!isRecord2(question)) {
@@ -87534,6 +87535,9 @@ function describeQuestionPayloadProblems(value) {
87534
87535
  problems.push(`${where}.options must contain at least 2 distinct labels; this question is open-ended and should be asked in plain text instead.`);
87535
87536
  }
87536
87537
  });
87538
+ if (problems.length > 0 && shapes) {
87539
+ problems.push(`Received ${shapes}.`);
87540
+ }
87537
87541
  return problems;
87538
87542
  }
87539
87543
 
@@ -87656,7 +87660,7 @@ function normalizeQuestionOptionInput(value) {
87656
87660
  const option = objectValue(value);
87657
87661
  if (!option)
87658
87662
  return value;
87659
- const label = typeof option.label === "string" && option.label.trim() || typeof option.value === "string" && option.value.trim() || typeof option.name === "string" && option.name.trim() || typeof option.text === "string" && option.text.trim() || typeof option.title === "string" && option.title.trim() || typeof option.id === "string" && option.id.trim() || typeof option.description === "string" && option.description.trim() || "";
87663
+ const label = typeof option.label === "string" && option.label.trim() || typeof option.value === "string" && option.value.trim() || typeof option.name === "string" && option.name.trim() || typeof option.text === "string" && option.text.trim() || typeof option.title === "string" && option.title.trim() || typeof option.header === "string" && option.header.trim() || typeof option.id === "string" && option.id.trim() || typeof option.description === "string" && option.description.trim() || "";
87660
87664
  if (!label)
87661
87665
  return value;
87662
87666
  const description = typeof option.description === "string" && option.description.trim() || label;
@@ -87729,12 +87733,14 @@ function looksLikeOptionEntry(value) {
87729
87733
  if (!entry)
87730
87734
  return false;
87731
87735
  for (const key of Object.keys(entry)) {
87736
+ if (key === "header")
87737
+ continue;
87732
87738
  if (RESERVED_QUESTION_KEYS.has(key))
87733
87739
  return false;
87734
87740
  if (RESERVED_QUESTION_OPTION_KEYS.has(key.toLowerCase()))
87735
87741
  return false;
87736
87742
  }
87737
- return typeof entry.label === "string" || typeof entry.value === "string" || typeof entry.description === "string";
87743
+ return typeof entry.label === "string" || typeof entry.value === "string" || typeof entry.header === "string" || typeof entry.description === "string";
87738
87744
  }
87739
87745
  function recoverFlattenedOptions(input, entries) {
87740
87746
  if (entries.length < 2 || !entries.every(looksLikeOptionEntry))
@@ -107542,7 +107548,7 @@ var init_auth = __esm(() => {
107542
107548
 
107543
107549
  // src/utils/userAgent.ts
107544
107550
  function getURCodeUserAgent() {
107545
- return `ur/${"1.77.2"}`;
107551
+ return `ur/${"1.77.3"}`;
107546
107552
  }
107547
107553
 
107548
107554
  // src/utils/workloadContext.ts
@@ -107564,7 +107570,7 @@ function getUserAgent() {
107564
107570
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
107565
107571
  const workload = getWorkload();
107566
107572
  const workloadSuffix = workload ? `, workload/${workload}` : "";
107567
- return `ur-cli/${"1.77.2"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
107573
+ return `ur-cli/${"1.77.3"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
107568
107574
  }
107569
107575
  function getMCPUserAgent() {
107570
107576
  const parts = [];
@@ -107578,7 +107584,7 @@ function getMCPUserAgent() {
107578
107584
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
107579
107585
  }
107580
107586
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
107581
- return `ur/${"1.77.2"}${suffix}`;
107587
+ return `ur/${"1.77.3"}${suffix}`;
107582
107588
  }
107583
107589
  function getWebFetchUserAgent() {
107584
107590
  return `UR-User (${getURCodeUserAgent()})`;
@@ -107716,7 +107722,7 @@ var init_user = __esm(() => {
107716
107722
  deviceId,
107717
107723
  sessionId: getSessionId(),
107718
107724
  email: getEmail(),
107719
- appVersion: "1.77.2",
107725
+ appVersion: "1.77.3",
107720
107726
  platform: getHostPlatformForAnalytics(),
107721
107727
  organizationUuid,
107722
107728
  accountUuid,
@@ -115603,7 +115609,7 @@ var init_metadata = __esm(() => {
115603
115609
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
115604
115610
  WHITESPACE_REGEX = /\s+/;
115605
115611
  getVersionBase = memoize_default(() => {
115606
- const match = "1.77.2".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
115612
+ const match = "1.77.3".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
115607
115613
  return match ? match[0] : undefined;
115608
115614
  });
115609
115615
  buildEnvContext = memoize_default(async () => {
@@ -115643,7 +115649,7 @@ var init_metadata = __esm(() => {
115643
115649
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
115644
115650
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
115645
115651
  isURAiAuth: isURAISubscriber(),
115646
- version: "1.77.2",
115652
+ version: "1.77.3",
115647
115653
  versionBase: getVersionBase(),
115648
115654
  buildTime: "",
115649
115655
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -116313,7 +116319,7 @@ function initialize1PEventLogging() {
116313
116319
  const platform2 = getPlatform();
116314
116320
  const attributes = {
116315
116321
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
116316
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.77.2"
116322
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.77.3"
116317
116323
  };
116318
116324
  if (platform2 === "wsl") {
116319
116325
  const wslVersion = getWslVersion();
@@ -116341,7 +116347,7 @@ function initialize1PEventLogging() {
116341
116347
  })
116342
116348
  ]
116343
116349
  });
116344
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.77.2");
116350
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.77.3");
116345
116351
  }
116346
116352
  async function reinitialize1PEventLoggingIfConfigChanged() {
116347
116353
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -126123,7 +126129,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
126123
126129
  function formatA2AAgentCard(options = {}, pretty = true) {
126124
126130
  return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
126125
126131
  }
126126
- var urVersion = "1.77.2", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
126132
+ var urVersion = "1.77.3", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
126127
126133
  var init_trends = __esm(() => {
126128
126134
  init_a2aCardSignature();
126129
126135
  coverage = [
@@ -128926,7 +128932,7 @@ function getAttributionHeader(fingerprint) {
128926
128932
  if (!isAttributionHeaderEnabled()) {
128927
128933
  return "";
128928
128934
  }
128929
- const version2 = `${"1.77.2"}.${fingerprint}`;
128935
+ const version2 = `${"1.77.3"}.${fingerprint}`;
128930
128936
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
128931
128937
  const cch = "";
128932
128938
  const workload = getWorkload();
@@ -156930,7 +156936,7 @@ var init_projectSafety = __esm(() => {
156930
156936
  function getInstruments() {
156931
156937
  if (instruments)
156932
156938
  return instruments;
156933
- const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.77.2");
156939
+ const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.77.3");
156934
156940
  instruments = {
156935
156941
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
156936
156942
  description: "GenAI operation duration.",
@@ -157028,7 +157034,7 @@ function genAiAgentAttributes() {
157028
157034
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
157029
157035
  "gen_ai.provider.name": "ur",
157030
157036
  "gen_ai.agent.name": "UR-Nexus",
157031
- "gen_ai.agent.version": "1.77.2"
157037
+ "gen_ai.agent.version": "1.77.3"
157032
157038
  };
157033
157039
  }
157034
157040
  function genAiWorkflowAttributes(workflowName) {
@@ -157044,7 +157050,7 @@ function genAiWorkflowAttributes(workflowName) {
157044
157050
  function startGenAiWorkflowSpan(workflowName) {
157045
157051
  const attributes = genAiWorkflowAttributes(workflowName);
157046
157052
  const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
157047
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.77.2").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
157053
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.77.3").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
157048
157054
  }
157049
157055
  function endGenAiWorkflowSpan(span, options2 = {}) {
157050
157056
  try {
@@ -157082,7 +157088,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
157082
157088
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
157083
157089
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
157084
157090
  }
157085
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.77.2").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
157091
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.77.3").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
157086
157092
  }
157087
157093
  function endGenAiMemorySpan(span, options2 = {}) {
157088
157094
  try {
@@ -250730,7 +250736,7 @@ function getTelemetryAttributes() {
250730
250736
  attributes["session.id"] = sessionId;
250731
250737
  }
250732
250738
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
250733
- attributes["app.version"] = "1.77.2";
250739
+ attributes["app.version"] = "1.77.3";
250734
250740
  }
250735
250741
  const oauthAccount = getOauthAccountInfo();
250736
250742
  if (oauthAccount) {
@@ -297237,7 +297243,7 @@ function getInstallationEnv() {
297237
297243
  return;
297238
297244
  }
297239
297245
  function getURCodeVersion() {
297240
- return "1.77.2";
297246
+ return "1.77.3";
297241
297247
  }
297242
297248
  async function getInstalledVSCodeExtensionVersion(command) {
297243
297249
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -304568,7 +304574,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
304568
304574
  const client2 = new Client({
304569
304575
  name: "ur",
304570
304576
  title: "UR",
304571
- version: "1.77.2",
304577
+ version: "1.77.3",
304572
304578
  description: "UR-Nexus autonomous engineering workflow engine",
304573
304579
  websiteUrl: PRODUCT_URL
304574
304580
  }, {
@@ -304928,7 +304934,7 @@ var init_client5 = __esm(() => {
304928
304934
  const client2 = new Client({
304929
304935
  name: "ur",
304930
304936
  title: "UR",
304931
- version: "1.77.2",
304937
+ version: "1.77.3",
304932
304938
  description: "UR-Nexus autonomous engineering workflow engine",
304933
304939
  websiteUrl: PRODUCT_URL
304934
304940
  }, {
@@ -317481,7 +317487,7 @@ async function createRuntime() {
317481
317487
  bootstrapTelemetry();
317482
317488
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
317483
317489
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
317484
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.77.2"
317490
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.77.3"
317485
317491
  }));
317486
317492
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
317487
317493
  resource,
@@ -317514,11 +317520,11 @@ async function createRuntime() {
317514
317520
  setMeterProvider(meterProvider);
317515
317521
  setLoggerProvider(loggerProvider);
317516
317522
  if (meterProvider) {
317517
- const meter = meterProvider.getMeter("ur-agent", "1.77.2");
317523
+ const meter = meterProvider.getMeter("ur-agent", "1.77.3");
317518
317524
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
317519
317525
  }
317520
317526
  if (loggerProvider) {
317521
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.77.2"));
317527
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.77.3"));
317522
317528
  }
317523
317529
  if (!cleanupRegistered2) {
317524
317530
  cleanupRegistered2 = true;
@@ -318180,9 +318186,9 @@ async function assertMinVersion() {
318180
318186
  if (false) {}
318181
318187
  try {
318182
318188
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
318183
- if (versionConfig.minVersion && lt("1.77.2", versionConfig.minVersion)) {
318189
+ if (versionConfig.minVersion && lt("1.77.3", versionConfig.minVersion)) {
318184
318190
  console.error(`
318185
- It looks like your version of UR (${"1.77.2"}) needs an update.
318191
+ It looks like your version of UR (${"1.77.3"}) needs an update.
318186
318192
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
318187
318193
 
318188
318194
  To update, please run:
@@ -318398,7 +318404,7 @@ async function installGlobalPackage(specificVersion) {
318398
318404
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
318399
318405
  logEvent("tengu_auto_updater_lock_contention", {
318400
318406
  pid: process.pid,
318401
- currentVersion: "1.77.2"
318407
+ currentVersion: "1.77.3"
318402
318408
  });
318403
318409
  return "in_progress";
318404
318410
  }
@@ -318407,7 +318413,7 @@ async function installGlobalPackage(specificVersion) {
318407
318413
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
318408
318414
  logError2(new Error("Windows NPM detected in WSL environment"));
318409
318415
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
318410
- currentVersion: "1.77.2"
318416
+ currentVersion: "1.77.3"
318411
318417
  });
318412
318418
  console.error(`
318413
318419
  Error: Windows NPM detected in WSL
@@ -318942,7 +318948,7 @@ function detectLinuxGlobPatternWarnings() {
318942
318948
  }
318943
318949
  async function getDoctorDiagnostic() {
318944
318950
  const installationType = await getCurrentInstallationType();
318945
- const version2 = typeof MACRO !== "undefined" ? "1.77.2" : "unknown";
318951
+ const version2 = typeof MACRO !== "undefined" ? "1.77.3" : "unknown";
318946
318952
  const installationPath = await getInstallationPath();
318947
318953
  const invokedBinary = getInvokedBinary();
318948
318954
  const multipleInstallations = await detectMultipleInstallations();
@@ -319877,8 +319883,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
319877
319883
  const maxVersion = await getMaxVersion();
319878
319884
  if (maxVersion && gt(version2, maxVersion)) {
319879
319885
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
319880
- if (gte("1.77.2", maxVersion)) {
319881
- logForDebugging(`Native installer: current version ${"1.77.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
319886
+ if (gte("1.77.3", maxVersion)) {
319887
+ logForDebugging(`Native installer: current version ${"1.77.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
319882
319888
  logEvent("tengu_native_update_skipped_max_version", {
319883
319889
  latency_ms: Date.now() - startTime,
319884
319890
  max_version: maxVersion,
@@ -319889,7 +319895,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
319889
319895
  version2 = maxVersion;
319890
319896
  }
319891
319897
  }
319892
- if (!forceReinstall && version2 === "1.77.2" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
319898
+ if (!forceReinstall && version2 === "1.77.3" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
319893
319899
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
319894
319900
  logEvent("tengu_native_update_complete", {
319895
319901
  latency_ms: Date.now() - startTime,
@@ -389593,7 +389599,7 @@ function isAnyTracingEnabled() {
389593
389599
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
389594
389600
  }
389595
389601
  function getTracer() {
389596
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.77.2");
389602
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.77.3");
389597
389603
  }
389598
389604
  function createSpanAttributes(spanType, customAttributes = {}) {
389599
389605
  const baseAttributes = getTelemetryAttributes();
@@ -400232,6 +400238,16 @@ function pickLineFormatInstruction() {
400232
400238
  function formatFileLines(file2) {
400233
400239
  return addLineNumbers(file2);
400234
400240
  }
400241
+ function describeUnreadRemainder(file2) {
400242
+ const firstLine = Math.max(1, file2.startLine);
400243
+ const lastLine = firstLine + file2.numLines - 1;
400244
+ if (file2.numLines <= 0 || lastLine >= file2.totalLines) {
400245
+ return "";
400246
+ }
400247
+ return `
400248
+
400249
+ <system-reminder>This is lines ${firstLine}-${lastLine} of ${file2.totalLines}. ${file2.totalLines - lastLine} lines were not returned \u2014 read again with offset ${lastLine + 1} if you need them.</system-reminder>`;
400250
+ }
400235
400251
  function shouldIncludeFileReadMitigation() {
400236
400252
  const shortName = getCanonicalName(getMainLoopModel());
400237
400253
  return !MITIGATION_EXEMPT_MODELS.has(shortName);
@@ -400875,7 +400891,7 @@ var init_FileReadTool = __esm(() => {
400875
400891
  case "text": {
400876
400892
  let content;
400877
400893
  if (data.file.content) {
400878
- content = memoryFileFreshnessPrefix(data) + formatFileLines(data.file) + (shouldIncludeFileReadMitigation() ? CYBER_RISK_MITIGATION_REMINDER : "");
400894
+ content = memoryFileFreshnessPrefix(data) + formatFileLines(data.file) + describeUnreadRemainder(data.file) + (shouldIncludeFileReadMitigation() ? CYBER_RISK_MITIGATION_REMINDER : "");
400879
400895
  } else {
400880
400896
  content = data.file.totalLines === 0 ? "<system-reminder>Warning: the file exists but the contents are empty.</system-reminder>" : `<system-reminder>Warning: the file exists but is shorter than the provided offset (${data.file.startLine}). The file has ${data.file.totalLines} lines.</system-reminder>`;
400881
400897
  }
@@ -419760,7 +419776,7 @@ function Feedback({
419760
419776
  platform: env2.platform,
419761
419777
  gitRepo: envInfo.isGit,
419762
419778
  terminal: env2.terminal,
419763
- version: "1.77.2",
419779
+ version: "1.77.3",
419764
419780
  transcript: normalizeMessagesForAPI(messages),
419765
419781
  errors: sanitizedErrors,
419766
419782
  lastApiRequest: getLastAPIRequest(),
@@ -419952,7 +419968,7 @@ function Feedback({
419952
419968
  ", ",
419953
419969
  env2.terminal,
419954
419970
  ", v",
419955
- "1.77.2"
419971
+ "1.77.3"
419956
419972
  ]
419957
419973
  }, undefined, true, undefined, this)
419958
419974
  ]
@@ -420058,7 +420074,7 @@ ${sanitizedDescription}
420058
420074
  ` + `**Environment Info**
420059
420075
  ` + `- Platform: ${env2.platform}
420060
420076
  ` + `- Terminal: ${env2.terminal}
420061
- ` + `- Version: ${"1.77.2"}
420077
+ ` + `- Version: ${"1.77.3"}
420062
420078
  ` + `- Feedback ID: ${feedbackId}
420063
420079
  ` + `
420064
420080
  **Errors**
@@ -423168,7 +423184,7 @@ function buildPrimarySection() {
423168
423184
  }, undefined, false, undefined, this);
423169
423185
  return [{
423170
423186
  label: "Version",
423171
- value: "1.77.2"
423187
+ value: "1.77.3"
423172
423188
  }, {
423173
423189
  label: "Session name",
423174
423190
  value: nameValue
@@ -426550,7 +426566,7 @@ function Config({
426550
426566
  }
426551
426567
  }, undefined, false, undefined, this)
426552
426568
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
426553
- currentVersion: "1.77.2",
426569
+ currentVersion: "1.77.3",
426554
426570
  onChoice: (choice) => {
426555
426571
  setShowSubmenu(null);
426556
426572
  setTabsHidden(false);
@@ -426562,7 +426578,7 @@ function Config({
426562
426578
  autoUpdatesChannel: "stable"
426563
426579
  };
426564
426580
  if (choice === "stay") {
426565
- newSettings.minimumVersion = "1.77.2";
426581
+ newSettings.minimumVersion = "1.77.3";
426566
426582
  }
426567
426583
  updateSettingsForSource("userSettings", newSettings);
426568
426584
  setSettingsData((prev_27) => ({
@@ -434626,7 +434642,7 @@ function HelpV2(t0) {
434626
434642
  let t6;
434627
434643
  if ($2[31] !== tabs) {
434628
434644
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
434629
- title: `UR v${"1.77.2"}`,
434645
+ title: `UR v${"1.77.3"}`,
434630
434646
  color: "professionalBlue",
434631
434647
  defaultTab: "general",
434632
434648
  children: tabs
@@ -435559,7 +435575,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
435559
435575
  async function handleInitialize(options2) {
435560
435576
  return {
435561
435577
  name: "UR",
435562
- version: "1.77.2",
435578
+ version: "1.77.3",
435563
435579
  protocolVersion: "0.1.0",
435564
435580
  workspaceRoot: options2.cwd,
435565
435581
  capabilities: {
@@ -452667,7 +452683,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
452667
452683
  return [];
452668
452684
  }
452669
452685
  }
452670
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.77.2") {
452686
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.77.3") {
452671
452687
  if (process.env.USER_TYPE === "ant") {
452672
452688
  const changelog = "";
452673
452689
  if (changelog) {
@@ -452694,7 +452710,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.77.2")
452694
452710
  releaseNotes
452695
452711
  };
452696
452712
  }
452697
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.77.2") {
452713
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.77.3") {
452698
452714
  if (process.env.USER_TYPE === "ant") {
452699
452715
  const changelog = "";
452700
452716
  if (changelog) {
@@ -455560,7 +455576,7 @@ function getRecentActivitySync() {
455560
455576
  return cachedActivity;
455561
455577
  }
455562
455578
  function getLogoDisplayData() {
455563
- const version2 = process.env.DEMO_VERSION ?? "1.77.2";
455579
+ const version2 = process.env.DEMO_VERSION ?? "1.77.3";
455564
455580
  const serverUrl = getDirectConnectServerUrl();
455565
455581
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
455566
455582
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -456427,7 +456443,7 @@ function LogoV2() {
456427
456443
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
456428
456444
  t2 = () => {
456429
456445
  const currentConfig2 = getGlobalConfig();
456430
- if (currentConfig2.lastReleaseNotesSeen === "1.77.2") {
456446
+ if (currentConfig2.lastReleaseNotesSeen === "1.77.3") {
456431
456447
  return;
456432
456448
  }
456433
456449
  saveGlobalConfig(_temp325);
@@ -457112,12 +457128,12 @@ function LogoV2() {
457112
457128
  return t41;
457113
457129
  }
457114
457130
  function _temp325(current) {
457115
- if (current.lastReleaseNotesSeen === "1.77.2") {
457131
+ if (current.lastReleaseNotesSeen === "1.77.3") {
457116
457132
  return current;
457117
457133
  }
457118
457134
  return {
457119
457135
  ...current,
457120
- lastReleaseNotesSeen: "1.77.2"
457136
+ lastReleaseNotesSeen: "1.77.3"
457121
457137
  };
457122
457138
  }
457123
457139
  function _temp241(s_0) {
@@ -473931,7 +473947,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
473931
473947
  if (spec.name !== specName) {
473932
473948
  throw new Error("Agentic CI workflow spec name does not match");
473933
473949
  }
473934
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.77.2" : "1.77.2");
473950
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.77.3" : "1.77.3");
473935
473951
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
473936
473952
  throw new Error("invalid ur-agent package version");
473937
473953
  }
@@ -474924,7 +474940,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
474924
474940
  path: ".github/workflows/ur.yml",
474925
474941
  root: "project",
474926
474942
  content: compileAgenticCiWorkflow("default", {
474927
- packageVersion: typeof MACRO !== "undefined" ? "1.77.2" : "1.77.2"
474943
+ packageVersion: typeof MACRO !== "undefined" ? "1.77.3" : "1.77.3"
474928
474944
  })
474929
474945
  },
474930
474946
  {
@@ -474987,7 +475003,7 @@ function value(tokens, flag) {
474987
475003
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
474988
475004
  }
474989
475005
  function cliVersion() {
474990
- return typeof MACRO !== "undefined" ? "1.77.2" : "1.77.2";
475006
+ return typeof MACRO !== "undefined" ? "1.77.3" : "1.77.3";
474991
475007
  }
474992
475008
  function workflowPath(cwd2) {
474993
475009
  return join159(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -480843,7 +480859,7 @@ function createAcpStdioApp(deps) {
480843
480859
  }
480844
480860
  },
480845
480861
  authMethods: [],
480846
- agentInfo: { name: "UR-Nexus", version: "1.77.2" }
480862
+ agentInfo: { name: "UR-Nexus", version: "1.77.3" }
480847
480863
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
480848
480864
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
480849
480865
  await runtime2.announce({
@@ -480940,7 +480956,7 @@ function createAcpStdioAgent(deps) {
480940
480956
  }
480941
480957
  },
480942
480958
  authMethods: [],
480943
- agentInfo: { name: "UR-Nexus", version: "1.77.2" }
480959
+ agentInfo: { name: "UR-Nexus", version: "1.77.3" }
480944
480960
  });
480945
480961
  return;
480946
480962
  case "authenticate":
@@ -690400,7 +690416,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
690400
690416
  smapsRollup,
690401
690417
  platform: process.platform,
690402
690418
  nodeVersion: process.version,
690403
- ccVersion: "1.77.2"
690419
+ ccVersion: "1.77.3"
690404
690420
  };
690405
690421
  }
690406
690422
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -690980,7 +690996,7 @@ var init_bridge_kick = __esm(() => {
690980
690996
  var call154 = async () => {
690981
690997
  return {
690982
690998
  type: "text",
690983
- value: "1.77.2"
690999
+ value: "1.77.3"
690984
691000
  };
690985
691001
  }, version2, version_default;
690986
691002
  var init_version = __esm(() => {
@@ -702247,7 +702263,7 @@ function generateHtmlReport(data, insights) {
702247
702263
  </html>`;
702248
702264
  }
702249
702265
  function buildExportData(data, insights, facets, remoteStats) {
702250
- const version3 = typeof MACRO !== "undefined" ? "1.77.2" : "unknown";
702266
+ const version3 = typeof MACRO !== "undefined" ? "1.77.3" : "unknown";
702251
702267
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
702252
702268
  const facets_summary = {
702253
702269
  total: facets.size,
@@ -706561,7 +706577,7 @@ var init_sessionStorage = __esm(() => {
706561
706577
  init_settings2();
706562
706578
  init_slowOperations();
706563
706579
  init_uuid();
706564
- VERSION7 = typeof MACRO !== "undefined" ? "1.77.2" : "unknown";
706580
+ VERSION7 = typeof MACRO !== "undefined" ? "1.77.3" : "unknown";
706565
706581
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
706566
706582
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
706567
706583
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -707776,7 +707792,7 @@ var init_filesystem = __esm(() => {
707776
707792
  });
707777
707793
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
707778
707794
  const nonce = randomBytes20(16).toString("hex");
707779
- return join232(getURTempDir(), "bundled-skills", "1.77.2", nonce);
707795
+ return join232(getURTempDir(), "bundled-skills", "1.77.3", nonce);
707780
707796
  });
707781
707797
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
707782
707798
  });
@@ -714131,7 +714147,7 @@ function computeFingerprint(messageText2, version3) {
714131
714147
  }
714132
714148
  function computeFingerprintFromMessages(messages) {
714133
714149
  const firstMessageText = extractFirstMessageText(messages);
714134
- return computeFingerprint(firstMessageText, "1.77.2");
714150
+ return computeFingerprint(firstMessageText, "1.77.3");
714135
714151
  }
714136
714152
  var FINGERPRINT_SALT = "59cf53e54c78";
714137
714153
  var init_fingerprint = () => {};
@@ -716053,7 +716069,7 @@ async function sideQuery(opts) {
716053
716069
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
716054
716070
  }
716055
716071
  const messageText2 = extractFirstUserMessageText(messages);
716056
- const fingerprint2 = computeFingerprint(messageText2, "1.77.2");
716072
+ const fingerprint2 = computeFingerprint(messageText2, "1.77.3");
716057
716073
  const attributionHeader = getAttributionHeader(fingerprint2);
716058
716074
  const systemBlocks = [
716059
716075
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -720890,7 +720906,7 @@ function buildSystemInitMessage(inputs) {
720890
720906
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
720891
720907
  apiKeySource: getURHQApiKeyWithSource().source,
720892
720908
  betas: getSdkBetas(),
720893
- ur_version: "1.77.2",
720909
+ ur_version: "1.77.3",
720894
720910
  output_style: outputStyle2,
720895
720911
  agents: inputs.agents.map((agent2) => agent2.agentType),
720896
720912
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -734762,7 +734778,7 @@ var init_useVoiceEnabled = __esm(() => {
734762
734778
  function getSemverPart(version3) {
734763
734779
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
734764
734780
  }
734765
- function useUpdateNotification(updatedVersion, initialVersion = "1.77.2") {
734781
+ function useUpdateNotification(updatedVersion, initialVersion = "1.77.3") {
734766
734782
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react223.useState(() => getSemverPart(initialVersion));
734767
734783
  if (!updatedVersion) {
734768
734784
  return null;
@@ -734811,7 +734827,7 @@ function AutoUpdater({
734811
734827
  return;
734812
734828
  }
734813
734829
  if (false) {}
734814
- const currentVersion = "1.77.2";
734830
+ const currentVersion = "1.77.3";
734815
734831
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
734816
734832
  let latestVersion = await getLatestVersion(channel);
734817
734833
  const isDisabled = isAutoUpdaterDisabled();
@@ -735040,12 +735056,12 @@ function NativeAutoUpdater({
735040
735056
  logEvent("tengu_native_auto_updater_start", {});
735041
735057
  try {
735042
735058
  const maxVersion = await getMaxVersion();
735043
- if (maxVersion && gt("1.77.2", maxVersion)) {
735059
+ if (maxVersion && gt("1.77.3", maxVersion)) {
735044
735060
  const msg = await getMaxVersionMessage();
735045
735061
  setMaxVersionIssue(msg ?? "affects your version");
735046
735062
  }
735047
735063
  const result = await installLatest(channel);
735048
- const currentVersion = "1.77.2";
735064
+ const currentVersion = "1.77.3";
735049
735065
  const latencyMs = Date.now() - startTime;
735050
735066
  if (result.lockFailed) {
735051
735067
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -735182,17 +735198,17 @@ function PackageManagerAutoUpdater(t0) {
735182
735198
  const maxVersion = await getMaxVersion();
735183
735199
  if (maxVersion && latest && gt(latest, maxVersion)) {
735184
735200
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
735185
- if (gte("1.77.2", maxVersion)) {
735186
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.77.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
735201
+ if (gte("1.77.3", maxVersion)) {
735202
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.77.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
735187
735203
  setUpdateAvailable(false);
735188
735204
  return;
735189
735205
  }
735190
735206
  latest = maxVersion;
735191
735207
  }
735192
- const hasUpdate = latest && !gte("1.77.2", latest) && !shouldSkipVersion(latest);
735208
+ const hasUpdate = latest && !gte("1.77.3", latest) && !shouldSkipVersion(latest);
735193
735209
  setUpdateAvailable(!!hasUpdate);
735194
735210
  if (hasUpdate) {
735195
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.77.2"} -> ${latest}`);
735211
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.77.3"} -> ${latest}`);
735196
735212
  }
735197
735213
  };
735198
735214
  $2[0] = t1;
@@ -735226,7 +735242,7 @@ function PackageManagerAutoUpdater(t0) {
735226
735242
  wrap: "truncate",
735227
735243
  children: [
735228
735244
  "currentVersion: ",
735229
- "1.77.2"
735245
+ "1.77.3"
735230
735246
  ]
735231
735247
  }, undefined, true, undefined, this);
735232
735248
  $2[3] = verbose;
@@ -746026,7 +746042,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
746026
746042
  project_dir: getOriginalCwd(),
746027
746043
  added_dirs: addedDirs
746028
746044
  },
746029
- version: "1.77.2",
746045
+ version: "1.77.3",
746030
746046
  output_style: {
746031
746047
  name: outputStyleName
746032
746048
  },
@@ -746161,7 +746177,7 @@ function StatusLineInner({
746161
746177
  const attention = customStatusError ?? taskAttention;
746162
746178
  const terminalSize = React132.useContext(TerminalSizeContext);
746163
746179
  const defaultStatusLineText = buildDefaultStatusBar({
746164
- version: "1.77.2",
746180
+ version: "1.77.3",
746165
746181
  providerLabel: providerRuntime.providerLabel,
746166
746182
  authMode: providerRuntime.authLabel,
746167
746183
  model: renderModelName(mainLoopModel) || providerRuntime.model || "",
@@ -758446,7 +758462,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
758446
758462
  } catch {}
758447
758463
  const data = {
758448
758464
  trigger: trigger2,
758449
- version: "1.77.2",
758465
+ version: "1.77.3",
758450
758466
  platform: process.platform,
758451
758467
  transcript,
758452
758468
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -770820,7 +770836,7 @@ function WelcomeV2() {
770820
770836
  dimColor: true,
770821
770837
  children: [
770822
770838
  "v",
770823
- "1.77.2"
770839
+ "1.77.3"
770824
770840
  ]
770825
770841
  }, undefined, true, undefined, this)
770826
770842
  ]
@@ -772080,7 +772096,7 @@ function completeOnboarding() {
772080
772096
  saveGlobalConfig((current) => ({
772081
772097
  ...current,
772082
772098
  hasCompletedOnboarding: true,
772083
- lastOnboardingVersion: "1.77.2"
772099
+ lastOnboardingVersion: "1.77.3"
772084
772100
  }));
772085
772101
  }
772086
772102
  function showDialog(root2, renderer) {
@@ -777124,7 +777140,7 @@ function appendToLog(path24, message) {
777124
777140
  cwd: getFsImplementation().cwd(),
777125
777141
  userType: process.env.USER_TYPE,
777126
777142
  sessionId: getSessionId(),
777127
- version: "1.77.2"
777143
+ version: "1.77.3"
777128
777144
  };
777129
777145
  getLogWriter(path24).write(messageWithTimestamp);
777130
777146
  }
@@ -781283,8 +781299,8 @@ async function getEnvLessBridgeConfig() {
781283
781299
  }
781284
781300
  async function checkEnvLessBridgeMinVersion() {
781285
781301
  const cfg = await getEnvLessBridgeConfig();
781286
- if (cfg.min_version && lt("1.77.2", cfg.min_version)) {
781287
- return `Your version of UR (${"1.77.2"}) is too old for Remote Control.
781302
+ if (cfg.min_version && lt("1.77.3", cfg.min_version)) {
781303
+ return `Your version of UR (${"1.77.3"}) is too old for Remote Control.
781288
781304
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
781289
781305
  }
781290
781306
  return null;
@@ -781758,7 +781774,7 @@ async function initBridgeCore(params) {
781758
781774
  const rawApi = createBridgeApiClient({
781759
781775
  baseUrl,
781760
781776
  getAccessToken,
781761
- runnerVersion: "1.77.2",
781777
+ runnerVersion: "1.77.3",
781762
781778
  onDebug: logForDebugging,
781763
781779
  onAuth401,
781764
781780
  getTrustedDeviceToken
@@ -791231,7 +791247,7 @@ function getAgUiCapabilities() {
791231
791247
  name: "UR-Nexus",
791232
791248
  type: "ur-nexus",
791233
791249
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
791234
- version: "1.77.2",
791250
+ version: "1.77.3",
791235
791251
  provider: "UR",
791236
791252
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
791237
791253
  },
@@ -792371,7 +792387,7 @@ function createMCPServer(cwd4, debug2, verbose) {
792371
792387
  };
792372
792388
  const server2 = new Server({
792373
792389
  name: "ur-nexus",
792374
- version: "1.77.2"
792390
+ version: "1.77.3"
792375
792391
  }, {
792376
792392
  capabilities: {
792377
792393
  tools: {}
@@ -793529,7 +793545,7 @@ function thrownResponse(error40) {
793529
793545
  }
793530
793546
  async function createUrMcp2026Runtime(options4) {
793531
793547
  const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
793532
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.77.2" }, { capabilities: {} });
793548
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.77.3" }, { capabilities: {} });
793533
793549
  const [clientTransport, serverTransport] = createLinkedTransportPair();
793534
793550
  try {
793535
793551
  await server2.connect(serverTransport);
@@ -793540,7 +793556,7 @@ async function createUrMcp2026Runtime(options4) {
793540
793556
  }
793541
793557
  const runtime2 = new Mcp2026Runtime({
793542
793558
  cwd: options4.cwd,
793543
- version: "1.77.2",
793559
+ version: "1.77.3",
793544
793560
  backend: {
793545
793561
  listTools: async () => {
793546
793562
  const listed = await client2.listTools();
@@ -795681,7 +795697,7 @@ async function update() {
795681
795697
  logEvent("tengu_update_check", {});
795682
795698
  const diagnostic2 = await getDoctorDiagnostic();
795683
795699
  const result = await checkUpgradeStatus({
795684
- currentVersion: "1.77.2",
795700
+ currentVersion: "1.77.3",
795685
795701
  packageName: UR_AGENT_PACKAGE_NAME,
795686
795702
  installationType: diagnostic2.installationType,
795687
795703
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -796997,7 +797013,7 @@ ${customInstructions}` : customInstructions;
796997
797013
  }
796998
797014
  }
796999
797015
  logForDiagnosticsNoPII("info", "started", {
797000
- version: "1.77.2",
797016
+ version: "1.77.3",
797001
797017
  is_native_binary: isInBundledMode()
797002
797018
  });
797003
797019
  registerCleanup(async () => {
@@ -797783,7 +797799,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
797783
797799
  pendingHookMessages
797784
797800
  }, renderAndRun);
797785
797801
  }
797786
- }).version("1.77.2 (UR-Nexus)", "-v, --version", "Output the version number");
797802
+ }).version("1.77.3 (UR-Nexus)", "-v, --version", "Output the version number");
797787
797803
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
797788
797804
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
797789
797805
  if (canUserConfigureAdvisor()) {
@@ -798835,7 +798851,7 @@ if (false) {}
798835
798851
  async function main2() {
798836
798852
  const args = process.argv.slice(2);
798837
798853
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
798838
- console.log(`${"1.77.2"} (UR-Nexus)`);
798854
+ console.log(`${"1.77.3"} (UR-Nexus)`);
798839
798855
  return;
798840
798856
  }
798841
798857
  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.77.2 (UR-Nexus)"
22
+ # expected for this release: "1.77.3 (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.77.2</p>
48
+ <p class="eyebrow">Version 1.77.3</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.77.2"
10
+ version = "1.77.3"
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.77.2",
5
+ "version": "1.77.3",
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.77.2",
3
+ "version": "1.77.3",
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",