ur-agent 1.80.1 → 1.80.2

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,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.80.2
4
+
5
+ - Repaired repeated `AskUserQuestion` validation loops when a model emits one
6
+ flattened `{label, header, description}` suggestion, one ordinary option, or
7
+ duplicate-only options. UR preserves the model's suggestion and adds only a
8
+ neutral `Different answer` rejection path; it never fabricates a second
9
+ domain choice or selects an answer for the user. Zero-option questions still
10
+ fail closed.
11
+
3
12
  ## 1.80.1
4
13
 
5
14
  - Removed the complete unreachable `ultraplan` implementation after its public
package/dist/cli.js CHANGED
@@ -87675,6 +87675,33 @@ function dedupeQuestions(questions) {
87675
87675
  }
87676
87676
  return out;
87677
87677
  }
87678
+ function repairSingleOptionQuestions(questions) {
87679
+ return dedupeQuestions(questions).map((question) => {
87680
+ if (!isRecord2(question) || !Array.isArray(question.options))
87681
+ return question;
87682
+ if (question.options.length !== 1)
87683
+ return question;
87684
+ const onlyOption = question.options[0];
87685
+ if (!isRecord2(onlyOption) || typeof onlyOption.label !== "string") {
87686
+ return question;
87687
+ }
87688
+ const onlyLabel = duplicateKey(onlyOption.label);
87689
+ if (!onlyLabel)
87690
+ return question;
87691
+ const fallbackLabels = ["Different answer", "Reject suggestion"];
87692
+ const fallbackLabel = fallbackLabels.find((label) => duplicateKey(label) !== onlyLabel);
87693
+ return {
87694
+ ...question,
87695
+ options: [
87696
+ onlyOption,
87697
+ {
87698
+ label: fallbackLabel,
87699
+ description: "Reject the suggested option so the agent can ask for a different answer."
87700
+ }
87701
+ ]
87702
+ };
87703
+ });
87704
+ }
87678
87705
  function describeQuestionPayloadProblems(value) {
87679
87706
  const problems = [];
87680
87707
  if (!isRecord2(value)) {
@@ -87921,7 +87948,7 @@ function looksLikeOptionEntry(value) {
87921
87948
  return typeof entry.label === "string" || typeof entry.value === "string" || typeof entry.header === "string" || typeof entry.description === "string";
87922
87949
  }
87923
87950
  function recoverFlattenedOptions(input, entries) {
87924
- if (entries.length < 2 || !entries.every(looksLikeOptionEntry))
87951
+ if (entries.length < 1 || !entries.every(looksLikeOptionEntry))
87925
87952
  return null;
87926
87953
  const questionText = stringField(input, [
87927
87954
  "question",
@@ -88010,7 +88037,7 @@ function normalizeAskUserQuestionInput(value) {
88010
88037
  const entry = typeof raw === "string" || Array.isArray(raw) || objectValue(raw) ? normalizeQuestionInput({ question: questionText, options: raw }, index2) : null;
88011
88038
  return entry;
88012
88039
  });
88013
- const normalized = dedupeQuestions(questions.filter((entry) => entry !== null && typeof entry === "object"));
88040
+ const normalized = repairSingleOptionQuestions(questions.filter((entry) => entry !== null && typeof entry === "object"));
88014
88041
  if (normalized.length > 0) {
88015
88042
  return {
88016
88043
  questions: normalized.slice(0, 4),
@@ -88023,14 +88050,14 @@ function normalizeAskUserQuestionInput(value) {
88023
88050
  const normalized = input.questions.map((entry, index2) => normalizeQuestionInput(entry, index2)).filter((entry) => entry !== null && typeof entry === "object");
88024
88051
  if (normalized.length > 0) {
88025
88052
  return {
88026
- questions: dedupeQuestions(normalized),
88053
+ questions: repairSingleOptionQuestions(normalized),
88027
88054
  ...commonFields
88028
88055
  };
88029
88056
  }
88030
88057
  const recovered = recoverFlattenedOptions(input, input.questions);
88031
88058
  if (recovered && typeof recovered === "object") {
88032
88059
  return {
88033
- questions: dedupeQuestions([recovered]),
88060
+ questions: repairSingleOptionQuestions([recovered]),
88034
88061
  ...commonFields
88035
88062
  };
88036
88063
  }
@@ -88040,7 +88067,7 @@ function normalizeAskUserQuestionInput(value) {
88040
88067
  const singleQuestion = normalizeQuestionInput(input, 0);
88041
88068
  if (singleQuestion && singleQuestion !== input) {
88042
88069
  return {
88043
- questions: dedupeQuestions([singleQuestion]),
88070
+ questions: repairSingleOptionQuestions([singleQuestion]),
88044
88071
  ...commonFields
88045
88072
  };
88046
88073
  }
@@ -107757,7 +107784,7 @@ var init_auth = __esm(() => {
107757
107784
 
107758
107785
  // src/utils/userAgent.ts
107759
107786
  function getURCodeUserAgent() {
107760
- return `ur/${"1.80.1"}`;
107787
+ return `ur/${"1.80.2"}`;
107761
107788
  }
107762
107789
 
107763
107790
  // src/utils/workloadContext.ts
@@ -107779,7 +107806,7 @@ function getUserAgent() {
107779
107806
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
107780
107807
  const workload = getWorkload();
107781
107808
  const workloadSuffix = workload ? `, workload/${workload}` : "";
107782
- return `ur-cli/${"1.80.1"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
107809
+ return `ur-cli/${"1.80.2"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
107783
107810
  }
107784
107811
  function getMCPUserAgent() {
107785
107812
  const parts = [];
@@ -107793,7 +107820,7 @@ function getMCPUserAgent() {
107793
107820
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
107794
107821
  }
107795
107822
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
107796
- return `ur/${"1.80.1"}${suffix}`;
107823
+ return `ur/${"1.80.2"}${suffix}`;
107797
107824
  }
107798
107825
  function getWebFetchUserAgent() {
107799
107826
  return `UR-User (${getURCodeUserAgent()})`;
@@ -107931,7 +107958,7 @@ var init_user = __esm(() => {
107931
107958
  deviceId,
107932
107959
  sessionId: getSessionId(),
107933
107960
  email: getEmail(),
107934
- appVersion: "1.80.1",
107961
+ appVersion: "1.80.2",
107935
107962
  platform: getHostPlatformForAnalytics(),
107936
107963
  organizationUuid,
107937
107964
  accountUuid,
@@ -115818,7 +115845,7 @@ var init_metadata = __esm(() => {
115818
115845
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
115819
115846
  WHITESPACE_REGEX = /\s+/;
115820
115847
  getVersionBase = memoize_default(() => {
115821
- const match = "1.80.1".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
115848
+ const match = "1.80.2".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
115822
115849
  return match ? match[0] : undefined;
115823
115850
  });
115824
115851
  buildEnvContext = memoize_default(async () => {
@@ -115858,7 +115885,7 @@ var init_metadata = __esm(() => {
115858
115885
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
115859
115886
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
115860
115887
  isURAiAuth: isURAISubscriber(),
115861
- version: "1.80.1",
115888
+ version: "1.80.2",
115862
115889
  versionBase: getVersionBase(),
115863
115890
  buildTime: "",
115864
115891
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -116528,7 +116555,7 @@ function initialize1PEventLogging() {
116528
116555
  const platform2 = getPlatform();
116529
116556
  const attributes = {
116530
116557
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
116531
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.80.1"
116558
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.80.2"
116532
116559
  };
116533
116560
  if (platform2 === "wsl") {
116534
116561
  const wslVersion = getWslVersion();
@@ -116556,7 +116583,7 @@ function initialize1PEventLogging() {
116556
116583
  })
116557
116584
  ]
116558
116585
  });
116559
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.80.1");
116586
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.80.2");
116560
116587
  }
116561
116588
  async function reinitialize1PEventLoggingIfConfigChanged() {
116562
116589
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -126515,7 +126542,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
126515
126542
  function formatA2AAgentCard(options = {}, pretty = true) {
126516
126543
  return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
126517
126544
  }
126518
- var urVersion = "1.80.1", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
126545
+ var urVersion = "1.80.2", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
126519
126546
  var init_trends = __esm(() => {
126520
126547
  init_a2aCardSignature();
126521
126548
  coverage = [
@@ -129405,7 +129432,7 @@ function getAttributionHeader(fingerprint) {
129405
129432
  if (!isAttributionHeaderEnabled()) {
129406
129433
  return "";
129407
129434
  }
129408
- const version2 = `${"1.80.1"}.${fingerprint}`;
129435
+ const version2 = `${"1.80.2"}.${fingerprint}`;
129409
129436
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
129410
129437
  const cch = "";
129411
129438
  const workload = getWorkload();
@@ -184598,7 +184625,7 @@ var init_projectSafety = __esm(() => {
184598
184625
  function getInstruments() {
184599
184626
  if (instruments)
184600
184627
  return instruments;
184601
- const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.80.1");
184628
+ const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.80.2");
184602
184629
  instruments = {
184603
184630
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
184604
184631
  description: "GenAI operation duration.",
@@ -184696,7 +184723,7 @@ function genAiAgentAttributes() {
184696
184723
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
184697
184724
  "gen_ai.provider.name": "ur",
184698
184725
  "gen_ai.agent.name": "UR-Nexus",
184699
- "gen_ai.agent.version": "1.80.1"
184726
+ "gen_ai.agent.version": "1.80.2"
184700
184727
  };
184701
184728
  }
184702
184729
  function genAiWorkflowAttributes(workflowName, workflowRunId) {
@@ -184717,7 +184744,7 @@ function genAiWorkflowAttributes(workflowName, workflowRunId) {
184717
184744
  function startGenAiWorkflowSpan(workflowName, workflowRunId) {
184718
184745
  const attributes = genAiWorkflowAttributes(workflowName, workflowRunId);
184719
184746
  const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
184720
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.80.1").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
184747
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.80.2").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
184721
184748
  }
184722
184749
  function endGenAiWorkflowSpan(span, options2 = {}) {
184723
184750
  try {
@@ -184755,7 +184782,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
184755
184782
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
184756
184783
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
184757
184784
  }
184758
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.80.1").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
184785
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.80.2").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
184759
184786
  }
184760
184787
  function endGenAiMemorySpan(span, options2 = {}) {
184761
184788
  try {
@@ -278470,7 +278497,7 @@ function getTelemetryAttributes() {
278470
278497
  attributes["session.id"] = sessionId;
278471
278498
  }
278472
278499
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
278473
- attributes["app.version"] = "1.80.1";
278500
+ attributes["app.version"] = "1.80.2";
278474
278501
  }
278475
278502
  const oauthAccount = getOauthAccountInfo();
278476
278503
  if (oauthAccount) {
@@ -319461,7 +319488,7 @@ function getInstallationEnv() {
319461
319488
  return;
319462
319489
  }
319463
319490
  function getURCodeVersion() {
319464
- return "1.80.1";
319491
+ return "1.80.2";
319465
319492
  }
319466
319493
  async function getInstalledVSCodeExtensionVersion(command) {
319467
319494
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -326831,7 +326858,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
326831
326858
  const client2 = new Client({
326832
326859
  name: "ur",
326833
326860
  title: "UR",
326834
- version: "1.80.1",
326861
+ version: "1.80.2",
326835
326862
  description: "UR-Nexus autonomous engineering workflow engine",
326836
326863
  websiteUrl: PRODUCT_URL
326837
326864
  }, {
@@ -327192,7 +327219,7 @@ var init_client5 = __esm(() => {
327192
327219
  const client2 = new Client({
327193
327220
  name: "ur",
327194
327221
  title: "UR",
327195
- version: "1.80.1",
327222
+ version: "1.80.2",
327196
327223
  description: "UR-Nexus autonomous engineering workflow engine",
327197
327224
  websiteUrl: PRODUCT_URL
327198
327225
  }, {
@@ -339930,7 +339957,7 @@ async function createRuntime() {
339930
339957
  bootstrapTelemetry();
339931
339958
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
339932
339959
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
339933
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.80.1"
339960
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.80.2"
339934
339961
  }));
339935
339962
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
339936
339963
  resource,
@@ -339963,11 +339990,11 @@ async function createRuntime() {
339963
339990
  setMeterProvider(meterProvider);
339964
339991
  setLoggerProvider(loggerProvider);
339965
339992
  if (meterProvider) {
339966
- const meter = meterProvider.getMeter("ur-agent", "1.80.1");
339993
+ const meter = meterProvider.getMeter("ur-agent", "1.80.2");
339967
339994
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
339968
339995
  }
339969
339996
  if (loggerProvider) {
339970
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.80.1"));
339997
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.80.2"));
339971
339998
  }
339972
339999
  if (!cleanupRegistered3) {
339973
340000
  cleanupRegistered3 = true;
@@ -340629,9 +340656,9 @@ async function assertMinVersion() {
340629
340656
  if (false) {}
340630
340657
  try {
340631
340658
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
340632
- if (versionConfig.minVersion && lt("1.80.1", versionConfig.minVersion)) {
340659
+ if (versionConfig.minVersion && lt("1.80.2", versionConfig.minVersion)) {
340633
340660
  console.error(`
340634
- It looks like your version of UR (${"1.80.1"}) needs an update.
340661
+ It looks like your version of UR (${"1.80.2"}) needs an update.
340635
340662
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
340636
340663
 
340637
340664
  To update, please run:
@@ -340847,7 +340874,7 @@ async function installGlobalPackage(specificVersion) {
340847
340874
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
340848
340875
  logEvent("tengu_auto_updater_lock_contention", {
340849
340876
  pid: process.pid,
340850
- currentVersion: "1.80.1"
340877
+ currentVersion: "1.80.2"
340851
340878
  });
340852
340879
  return "in_progress";
340853
340880
  }
@@ -340856,7 +340883,7 @@ async function installGlobalPackage(specificVersion) {
340856
340883
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
340857
340884
  logError2(new Error("Windows NPM detected in WSL environment"));
340858
340885
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
340859
- currentVersion: "1.80.1"
340886
+ currentVersion: "1.80.2"
340860
340887
  });
340861
340888
  console.error(`
340862
340889
  Error: Windows NPM detected in WSL
@@ -341391,7 +341418,7 @@ function detectLinuxGlobPatternWarnings() {
341391
341418
  }
341392
341419
  async function getDoctorDiagnostic() {
341393
341420
  const installationType = await getCurrentInstallationType();
341394
- const version2 = typeof MACRO !== "undefined" ? "1.80.1" : "unknown";
341421
+ const version2 = typeof MACRO !== "undefined" ? "1.80.2" : "unknown";
341395
341422
  const installationPath = await getInstallationPath();
341396
341423
  const invokedBinary = getInvokedBinary();
341397
341424
  const multipleInstallations = await detectMultipleInstallations();
@@ -342326,8 +342353,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
342326
342353
  const maxVersion = await getMaxVersion();
342327
342354
  if (maxVersion && gt(version2, maxVersion)) {
342328
342355
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
342329
- if (gte("1.80.1", maxVersion)) {
342330
- logForDebugging(`Native installer: current version ${"1.80.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
342356
+ if (gte("1.80.2", maxVersion)) {
342357
+ logForDebugging(`Native installer: current version ${"1.80.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
342331
342358
  logEvent("tengu_native_update_skipped_max_version", {
342332
342359
  latency_ms: Date.now() - startTime,
342333
342360
  max_version: maxVersion,
@@ -342338,7 +342365,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
342338
342365
  version2 = maxVersion;
342339
342366
  }
342340
342367
  }
342341
- if (!forceReinstall && version2 === "1.80.1" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
342368
+ if (!forceReinstall && version2 === "1.80.2" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
342342
342369
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
342343
342370
  logEvent("tengu_native_update_complete", {
342344
342371
  latency_ms: Date.now() - startTime,
@@ -412358,7 +412385,7 @@ function isAnyTracingEnabled() {
412358
412385
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
412359
412386
  }
412360
412387
  function getTracer() {
412361
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.80.1");
412388
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.80.2");
412362
412389
  }
412363
412390
  function createSpanAttributes(spanType, customAttributes = {}) {
412364
412391
  const baseAttributes = getTelemetryAttributes();
@@ -442790,7 +442817,7 @@ function Feedback({
442790
442817
  platform: env2.platform,
442791
442818
  gitRepo: envInfo.isGit,
442792
442819
  terminal: env2.terminal,
442793
- version: "1.80.1",
442820
+ version: "1.80.2",
442794
442821
  transcript: normalizeMessagesForAPI(messages),
442795
442822
  errors: sanitizedErrors,
442796
442823
  lastApiRequest: getLastAPIRequest(),
@@ -442982,7 +443009,7 @@ function Feedback({
442982
443009
  ", ",
442983
443010
  env2.terminal,
442984
443011
  ", v",
442985
- "1.80.1"
443012
+ "1.80.2"
442986
443013
  ]
442987
443014
  }, undefined, true, undefined, this)
442988
443015
  ]
@@ -443088,7 +443115,7 @@ ${sanitizedDescription}
443088
443115
  ` + `**Environment Info**
443089
443116
  ` + `- Platform: ${env2.platform}
443090
443117
  ` + `- Terminal: ${env2.terminal}
443091
- ` + `- Version: ${"1.80.1"}
443118
+ ` + `- Version: ${"1.80.2"}
443092
443119
  ` + `- Feedback ID: ${feedbackId}
443093
443120
  ` + `
443094
443121
  **Errors**
@@ -446198,7 +446225,7 @@ function buildPrimarySection() {
446198
446225
  }, undefined, false, undefined, this);
446199
446226
  return [{
446200
446227
  label: "Version",
446201
- value: "1.80.1"
446228
+ value: "1.80.2"
446202
446229
  }, {
446203
446230
  label: "Session name",
446204
446231
  value: nameValue
@@ -449580,7 +449607,7 @@ function Config({
449580
449607
  }
449581
449608
  }, undefined, false, undefined, this)
449582
449609
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
449583
- currentVersion: "1.80.1",
449610
+ currentVersion: "1.80.2",
449584
449611
  onChoice: (choice) => {
449585
449612
  setShowSubmenu(null);
449586
449613
  setTabsHidden(false);
@@ -449592,7 +449619,7 @@ function Config({
449592
449619
  autoUpdatesChannel: "stable"
449593
449620
  };
449594
449621
  if (choice === "stay") {
449595
- newSettings.minimumVersion = "1.80.1";
449622
+ newSettings.minimumVersion = "1.80.2";
449596
449623
  }
449597
449624
  updateSettingsForSource("userSettings", newSettings);
449598
449625
  setSettingsData((prev_27) => ({
@@ -457850,7 +457877,7 @@ function HelpV2(t0) {
457850
457877
  let t6;
457851
457878
  if ($2[31] !== tabs) {
457852
457879
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
457853
- title: `UR v${"1.80.1"}`,
457880
+ title: `UR v${"1.80.2"}`,
457854
457881
  color: "professionalBlue",
457855
457882
  defaultTab: "general",
457856
457883
  children: tabs
@@ -458783,7 +458810,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
458783
458810
  async function handleInitialize(options2) {
458784
458811
  return {
458785
458812
  name: "UR",
458786
- version: "1.80.1",
458813
+ version: "1.80.2",
458787
458814
  protocolVersion: "0.1.0",
458788
458815
  workspaceRoot: options2.cwd,
458789
458816
  capabilities: {
@@ -475891,7 +475918,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
475891
475918
  return [];
475892
475919
  }
475893
475920
  }
475894
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.80.1") {
475921
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.80.2") {
475895
475922
  if (process.env.USER_TYPE === "ant") {
475896
475923
  const changelog = "";
475897
475924
  if (changelog) {
@@ -475918,7 +475945,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.80.1")
475918
475945
  releaseNotes
475919
475946
  };
475920
475947
  }
475921
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.80.1") {
475948
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.80.2") {
475922
475949
  if (process.env.USER_TYPE === "ant") {
475923
475950
  const changelog = "";
475924
475951
  if (changelog) {
@@ -478823,7 +478850,7 @@ function getRecentActivitySync() {
478823
478850
  return cachedActivity;
478824
478851
  }
478825
478852
  function getLogoDisplayData() {
478826
- const version2 = process.env.DEMO_VERSION ?? "1.80.1";
478853
+ const version2 = process.env.DEMO_VERSION ?? "1.80.2";
478827
478854
  const serverUrl = getDirectConnectServerUrl();
478828
478855
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
478829
478856
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -479691,7 +479718,7 @@ function LogoV2() {
479691
479718
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
479692
479719
  t2 = () => {
479693
479720
  const currentConfig = getGlobalConfig();
479694
- if (currentConfig.lastReleaseNotesSeen === "1.80.1") {
479721
+ if (currentConfig.lastReleaseNotesSeen === "1.80.2") {
479695
479722
  return;
479696
479723
  }
479697
479724
  saveGlobalConfig(_temp325);
@@ -480376,12 +480403,12 @@ function LogoV2() {
480376
480403
  return t41;
480377
480404
  }
480378
480405
  function _temp325(current) {
480379
- if (current.lastReleaseNotesSeen === "1.80.1") {
480406
+ if (current.lastReleaseNotesSeen === "1.80.2") {
480380
480407
  return current;
480381
480408
  }
480382
480409
  return {
480383
480410
  ...current,
480384
- lastReleaseNotesSeen: "1.80.1"
480411
+ lastReleaseNotesSeen: "1.80.2"
480385
480412
  };
480386
480413
  }
480387
480414
  function _temp241(s_0) {
@@ -496473,7 +496500,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
496473
496500
  if (spec.name !== specName) {
496474
496501
  throw new Error("Agentic CI workflow spec name does not match");
496475
496502
  }
496476
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.80.1" : "1.80.1");
496503
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.80.2" : "1.80.2");
496477
496504
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
496478
496505
  throw new Error("invalid ur-agent package version");
496479
496506
  }
@@ -497466,7 +497493,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
497466
497493
  path: ".github/workflows/ur.yml",
497467
497494
  root: "project",
497468
497495
  content: compileAgenticCiWorkflow("default", {
497469
- packageVersion: typeof MACRO !== "undefined" ? "1.80.1" : "1.80.1"
497496
+ packageVersion: typeof MACRO !== "undefined" ? "1.80.2" : "1.80.2"
497470
497497
  })
497471
497498
  },
497472
497499
  {
@@ -497529,7 +497556,7 @@ function value(tokens, flag) {
497529
497556
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
497530
497557
  }
497531
497558
  function cliVersion() {
497532
- return typeof MACRO !== "undefined" ? "1.80.1" : "1.80.1";
497559
+ return typeof MACRO !== "undefined" ? "1.80.2" : "1.80.2";
497533
497560
  }
497534
497561
  function workflowPath(cwd2) {
497535
497562
  return join168(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -503385,7 +503412,7 @@ function createAcpStdioApp(deps) {
503385
503412
  }
503386
503413
  },
503387
503414
  authMethods: [],
503388
- agentInfo: { name: "UR-Nexus", version: "1.80.1" }
503415
+ agentInfo: { name: "UR-Nexus", version: "1.80.2" }
503389
503416
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
503390
503417
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
503391
503418
  await runtime2.announce({
@@ -503482,7 +503509,7 @@ function createAcpStdioAgent(deps) {
503482
503509
  }
503483
503510
  },
503484
503511
  authMethods: [],
503485
- agentInfo: { name: "UR-Nexus", version: "1.80.1" }
503512
+ agentInfo: { name: "UR-Nexus", version: "1.80.2" }
503486
503513
  });
503487
503514
  return;
503488
503515
  case "authenticate":
@@ -714708,7 +714735,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
714708
714735
  smapsRollup,
714709
714736
  platform: process.platform,
714710
714737
  nodeVersion: process.version,
714711
- ccVersion: "1.80.1"
714738
+ ccVersion: "1.80.2"
714712
714739
  };
714713
714740
  }
714714
714741
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -715297,7 +715324,7 @@ var init_bridge_kick = __esm(() => {
715297
715324
  var call154 = async () => {
715298
715325
  return {
715299
715326
  type: "text",
715300
- value: "1.80.1"
715327
+ value: "1.80.2"
715301
715328
  };
715302
715329
  }, version2, version_default;
715303
715330
  var init_version = __esm(() => {
@@ -726540,7 +726567,7 @@ function generateHtmlReport(data, insights) {
726540
726567
  </html>`;
726541
726568
  }
726542
726569
  function buildExportData(data, insights, facets, remoteStats) {
726543
- const version3 = typeof MACRO !== "undefined" ? "1.80.1" : "unknown";
726570
+ const version3 = typeof MACRO !== "undefined" ? "1.80.2" : "unknown";
726544
726571
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
726545
726572
  const facets_summary = {
726546
726573
  total: facets.size,
@@ -730853,7 +730880,7 @@ var init_sessionStorage = __esm(() => {
730853
730880
  init_settings2();
730854
730881
  init_slowOperations();
730855
730882
  init_uuid();
730856
- VERSION7 = typeof MACRO !== "undefined" ? "1.80.1" : "unknown";
730883
+ VERSION7 = typeof MACRO !== "undefined" ? "1.80.2" : "unknown";
730857
730884
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
730858
730885
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
730859
730886
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -732068,7 +732095,7 @@ var init_filesystem = __esm(() => {
732068
732095
  });
732069
732096
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
732070
732097
  const nonce = randomBytes24(16).toString("hex");
732071
- return join243(getURTempDir(), "bundled-skills", "1.80.1", nonce);
732098
+ return join243(getURTempDir(), "bundled-skills", "1.80.2", nonce);
732072
732099
  });
732073
732100
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
732074
732101
  });
@@ -738457,7 +738484,7 @@ function computeFingerprint(messageText2, version3) {
738457
738484
  }
738458
738485
  function computeFingerprintFromMessages(messages) {
738459
738486
  const firstMessageText = extractFirstMessageText(messages);
738460
- return computeFingerprint(firstMessageText, "1.80.1");
738487
+ return computeFingerprint(firstMessageText, "1.80.2");
738461
738488
  }
738462
738489
  var FINGERPRINT_SALT = "59cf53e54c78";
738463
738490
  var init_fingerprint = () => {};
@@ -740382,7 +740409,7 @@ async function sideQuery(opts) {
740382
740409
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
740383
740410
  }
740384
740411
  const messageText2 = extractFirstUserMessageText(messages);
740385
- const fingerprint2 = computeFingerprint(messageText2, "1.80.1");
740412
+ const fingerprint2 = computeFingerprint(messageText2, "1.80.2");
740386
740413
  const attributionHeader = getAttributionHeader(fingerprint2);
740387
740414
  const systemBlocks = [
740388
740415
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -745216,7 +745243,7 @@ function buildSystemInitMessage(inputs) {
745216
745243
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
745217
745244
  apiKeySource: getURHQApiKeyWithSource().source,
745218
745245
  betas: getSdkBetas(),
745219
- ur_version: "1.80.1",
745246
+ ur_version: "1.80.2",
745220
745247
  output_style: outputStyle,
745221
745248
  agents: inputs.agents.map((agent2) => agent2.agentType),
745222
745249
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -759052,7 +759079,7 @@ var init_useVoiceEnabled = __esm(() => {
759052
759079
  function getSemverPart(version3) {
759053
759080
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
759054
759081
  }
759055
- function useUpdateNotification(updatedVersion, initialVersion = "1.80.1") {
759082
+ function useUpdateNotification(updatedVersion, initialVersion = "1.80.2") {
759056
759083
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
759057
759084
  if (!updatedVersion) {
759058
759085
  return null;
@@ -759101,7 +759128,7 @@ function AutoUpdater({
759101
759128
  return;
759102
759129
  }
759103
759130
  if (false) {}
759104
- const currentVersion = "1.80.1";
759131
+ const currentVersion = "1.80.2";
759105
759132
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
759106
759133
  let latestVersion = await getLatestVersion(channel);
759107
759134
  const isDisabled = isAutoUpdaterDisabled();
@@ -759330,12 +759357,12 @@ function NativeAutoUpdater({
759330
759357
  logEvent("tengu_native_auto_updater_start", {});
759331
759358
  try {
759332
759359
  const maxVersion = await getMaxVersion();
759333
- if (maxVersion && gt("1.80.1", maxVersion)) {
759360
+ if (maxVersion && gt("1.80.2", maxVersion)) {
759334
759361
  const msg = await getMaxVersionMessage();
759335
759362
  setMaxVersionIssue(msg ?? "affects your version");
759336
759363
  }
759337
759364
  const result = await installLatest(channel);
759338
- const currentVersion = "1.80.1";
759365
+ const currentVersion = "1.80.2";
759339
759366
  const latencyMs = Date.now() - startTime;
759340
759367
  if (result.lockFailed) {
759341
759368
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -759472,17 +759499,17 @@ function PackageManagerAutoUpdater(t0) {
759472
759499
  const maxVersion = await getMaxVersion();
759473
759500
  if (maxVersion && latest && gt(latest, maxVersion)) {
759474
759501
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
759475
- if (gte("1.80.1", maxVersion)) {
759476
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.80.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
759502
+ if (gte("1.80.2", maxVersion)) {
759503
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.80.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
759477
759504
  setUpdateAvailable(false);
759478
759505
  return;
759479
759506
  }
759480
759507
  latest = maxVersion;
759481
759508
  }
759482
- const hasUpdate = latest && !gte("1.80.1", latest) && !shouldSkipVersion(latest);
759509
+ const hasUpdate = latest && !gte("1.80.2", latest) && !shouldSkipVersion(latest);
759483
759510
  setUpdateAvailable(!!hasUpdate);
759484
759511
  if (hasUpdate) {
759485
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.80.1"} -> ${latest}`);
759512
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.80.2"} -> ${latest}`);
759486
759513
  }
759487
759514
  };
759488
759515
  $2[0] = t1;
@@ -759516,7 +759543,7 @@ function PackageManagerAutoUpdater(t0) {
759516
759543
  wrap: "truncate",
759517
759544
  children: [
759518
759545
  "currentVersion: ",
759519
- "1.80.1"
759546
+ "1.80.2"
759520
759547
  ]
759521
759548
  }, undefined, true, undefined, this);
759522
759549
  $2[3] = verbose;
@@ -770369,7 +770396,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
770369
770396
  project_dir: getOriginalCwd(),
770370
770397
  added_dirs: addedDirs
770371
770398
  },
770372
- version: "1.80.1",
770399
+ version: "1.80.2",
770373
770400
  output_style: {
770374
770401
  name: outputStyleName
770375
770402
  },
@@ -770504,7 +770531,7 @@ function StatusLineInner({
770504
770531
  const attention = customStatusError ?? taskAttention;
770505
770532
  const terminalSize = React133.useContext(TerminalSizeContext);
770506
770533
  const defaultStatusLineText = buildDefaultStatusBar({
770507
- version: "1.80.1",
770534
+ version: "1.80.2",
770508
770535
  providerLabel: providerRuntime.providerLabel,
770509
770536
  authMode: providerRuntime.authLabel,
770510
770537
  model: renderModelName(mainLoopModel) || providerRuntime.model || "",
@@ -782759,7 +782786,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
782759
782786
  } catch {}
782760
782787
  const data = {
782761
782788
  trigger: trigger2,
782762
- version: "1.80.1",
782789
+ version: "1.80.2",
782763
782790
  platform: process.platform,
782764
782791
  transcript,
782765
782792
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -795128,7 +795155,7 @@ function WelcomeV2() {
795128
795155
  dimColor: true,
795129
795156
  children: [
795130
795157
  "v",
795131
- "1.80.1"
795158
+ "1.80.2"
795132
795159
  ]
795133
795160
  }, undefined, true, undefined, this)
795134
795161
  ]
@@ -796388,7 +796415,7 @@ function completeOnboarding() {
796388
796415
  saveGlobalConfig((current) => ({
796389
796416
  ...current,
796390
796417
  hasCompletedOnboarding: true,
796391
- lastOnboardingVersion: "1.80.1"
796418
+ lastOnboardingVersion: "1.80.2"
796392
796419
  }));
796393
796420
  }
796394
796421
  function showDialog(root2, renderer) {
@@ -801534,7 +801561,7 @@ function appendToLog(path28, message) {
801534
801561
  cwd: getFsImplementation().cwd(),
801535
801562
  userType: process.env.USER_TYPE,
801536
801563
  sessionId: getSessionId(),
801537
- version: "1.80.1"
801564
+ version: "1.80.2"
801538
801565
  };
801539
801566
  getLogWriter(path28).write(messageWithTimestamp);
801540
801567
  }
@@ -805698,8 +805725,8 @@ async function getEnvLessBridgeConfig() {
805698
805725
  }
805699
805726
  async function checkEnvLessBridgeMinVersion() {
805700
805727
  const cfg = await getEnvLessBridgeConfig();
805701
- if (cfg.min_version && lt("1.80.1", cfg.min_version)) {
805702
- return `Your version of UR (${"1.80.1"}) is too old for Remote Control.
805728
+ if (cfg.min_version && lt("1.80.2", cfg.min_version)) {
805729
+ return `Your version of UR (${"1.80.2"}) is too old for Remote Control.
805703
805730
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
805704
805731
  }
805705
805732
  return null;
@@ -806173,7 +806200,7 @@ async function initBridgeCore(params) {
806173
806200
  const rawApi = createBridgeApiClient({
806174
806201
  baseUrl,
806175
806202
  getAccessToken,
806176
- runnerVersion: "1.80.1",
806203
+ runnerVersion: "1.80.2",
806177
806204
  onDebug: logForDebugging,
806178
806205
  onAuth401,
806179
806206
  getTrustedDeviceToken
@@ -815646,7 +815673,7 @@ function getAgUiCapabilities() {
815646
815673
  name: "UR-Nexus",
815647
815674
  type: "ur-nexus",
815648
815675
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
815649
- version: "1.80.1",
815676
+ version: "1.80.2",
815650
815677
  provider: "UR",
815651
815678
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
815652
815679
  },
@@ -816777,7 +816804,7 @@ function createMCPServer(cwd4, debug2, verbose) {
816777
816804
  };
816778
816805
  const server2 = new Server({
816779
816806
  name: "ur-nexus",
816780
- version: "1.80.1"
816807
+ version: "1.80.2"
816781
816808
  }, {
816782
816809
  capabilities: {
816783
816810
  tools: {}
@@ -817981,7 +818008,7 @@ function thrownResponse(error40) {
817981
818008
  }
817982
818009
  async function createUrMcp2026Runtime(options5) {
817983
818010
  const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
817984
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.80.1" }, { capabilities: {} });
818011
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.80.2" }, { capabilities: {} });
817985
818012
  const [clientTransport, serverTransport] = createLinkedTransportPair();
817986
818013
  try {
817987
818014
  await server2.connect(serverTransport);
@@ -817992,7 +818019,7 @@ async function createUrMcp2026Runtime(options5) {
817992
818019
  }
817993
818020
  const runtime2 = new Mcp2026Runtime({
817994
818021
  cwd: options5.cwd,
817995
- version: "1.80.1",
818022
+ version: "1.80.2",
817996
818023
  backend: {
817997
818024
  listTools: async () => {
817998
818025
  const listed = await client2.listTools();
@@ -820594,7 +820621,7 @@ async function update() {
820594
820621
  logEvent("tengu_update_check", {});
820595
820622
  const diagnostic2 = await getDoctorDiagnostic();
820596
820623
  const result = await checkUpgradeStatus({
820597
- currentVersion: "1.80.1",
820624
+ currentVersion: "1.80.2",
820598
820625
  packageName: UR_AGENT_PACKAGE_NAME,
820599
820626
  installationType: diagnostic2.installationType,
820600
820627
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -821922,7 +821949,7 @@ ${customInstructions}` : customInstructions;
821922
821949
  }
821923
821950
  }
821924
821951
  logForDiagnosticsNoPII("info", "started", {
821925
- version: "1.80.1",
821952
+ version: "1.80.2",
821926
821953
  is_native_binary: isInBundledMode()
821927
821954
  });
821928
821955
  registerCleanup(async () => {
@@ -822709,7 +822736,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
822709
822736
  pendingHookMessages
822710
822737
  }, renderAndRun);
822711
822738
  }
822712
- }).version("1.80.1 (UR-Nexus)", "-v, --version", "Output the version number");
822739
+ }).version("1.80.2 (UR-Nexus)", "-v, --version", "Output the version number");
822713
822740
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
822714
822741
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
822715
822742
  if (canUserConfigureAdvisor()) {
@@ -823817,7 +823844,7 @@ if (false) {}
823817
823844
  async function main2() {
823818
823845
  const args = process.argv.slice(2);
823819
823846
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
823820
- console.log(`${"1.80.1"} (UR-Nexus)`);
823847
+ console.log(`${"1.80.2"} (UR-Nexus)`);
823821
823848
  return;
823822
823849
  }
823823
823850
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
@@ -265,7 +265,7 @@ automatically changes the active provider.
265
265
  | Provider-aware status bar | Interactive bottom status bar, `src/components/StatusLine.tsx`, `src/utils/statusBar.ts` | Shows only important runtime state: active provider, selected model, mode, git branch, active task state, checks/build state when known, and update availability. Hidden in CI, dumb terminals, and non-interactive mode; custom status-line hooks still override it. |
266
266
  | Clean update checks | `ur upgrade`, `ur update`, `src/cli/update.ts` | Detects development/source checkouts and prints a short pull-or-install message instead of attempting self-mutation. npm-installed builds compare the local version with `ur-agent` on npm and print update, latest, registry failure, and malformed-response states without stale planning text. |
267
267
  | Bundled IDE extension install | `extensions/vscode-ur-inline-diffs/`, `src/utils/ide.ts`, `ur ide diff` | Public VS Code install now packages the repo's bundled inline-diffs extension as a local VSIX instead of trying an unpublished marketplace ID. The extension remains local-only and reviews `.ur/ide/diffs` bundles from the current workspace. |
268
- | Professional clarification dialogs | `AskUserQuestion`, `src/tools/AskUserQuestionTool/AskUserQuestionTool.tsx` | Supports up to eight concrete options, infers labels from description-only option objects, accepts prompt aliases, rejects duplicate inferred labels, and is loaded without ToolSearch preloading so typed schemas are available before use. |
268
+ | Professional clarification dialogs | `AskUserQuestion`, `src/tools/AskUserQuestionTool/AskUserQuestionTool.tsx` | Supports up to eight concrete options, infers labels from description-only option objects, accepts prompt aliases, deduplicates equivalent labels, safely repairs single-suggestion payloads with a neutral rejection choice, and is loaded without ToolSearch preloading so typed schemas are available before use. |
269
269
  | Documentation release sync | `README.md`, `docs/`, `documentation/`, `CHANGELOG.md` | Keeps the npm README, static documentation site, provider guide, usage guide, feature ledger, validation runbook, and release notes aligned with current release behavior. |
270
270
 
271
271
  ## v1.24.0 Additions
package/docs/USAGE.md CHANGED
@@ -50,7 +50,9 @@ application. Use Blender locally, or run the 3ds Max project on a Windows host.
50
50
 
51
51
  When UR needs a focused clarification, it uses the `AskUserQuestion` dialog.
52
52
  Professional clarification prompts can provide up to eight concrete options;
53
- UR also accepts custom "Other" answers when the dialog includes one.
53
+ UR also accepts custom "Other" answers. If a model supplies only one concrete
54
+ suggestion, UR keeps it and adds a neutral `Different answer` rejection path
55
+ instead of showing an internal validation error or inventing another choice.
54
56
 
55
57
  ## Print Mode
56
58
 
@@ -19,7 +19,7 @@ You need:
19
19
 
20
20
  ```sh
21
21
  ur --version
22
- # expected for this release: "1.80.1 (UR-Nexus)"
22
+ # expected for this release: "1.80.2 (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.80.1</p>
48
+ <p class="eyebrow">Version 1.80.2</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.80.1"
10
+ version = "1.80.2"
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.80.1",
5
+ "version": "1.80.2",
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.80.1",
3
+ "version": "1.80.2",
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",