ur-agent 1.61.2 → 1.62.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,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.62.0
4
+
5
+ - `ur agent-inspect --costs` now labels each row with what the agent was
6
+ actually doing. A real 62-agent fan-out reported opaque hex ids, so you could
7
+ see that one agent burned 810k input tokens — 14% of the session — without
8
+ being able to tell which of your subagents it was. The description already
9
+ existed in the `agent-{id}.meta.json` sidecar and was simply never read.
10
+ - Agents with missing or malformed metadata still appear, keyed by id.
11
+ Historical sessions predate the description field, and dropping those rows
12
+ would lose spend in order to avoid losing a label.
13
+
3
14
  ## 1.61.2
4
15
 
5
16
  - Fixed `ur agent-inspect --costs` reporting nothing, always. It resolved the
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.61.2"}`;
75210
+ return `ur/${"1.62.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.61.2"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
75232
+ return `ur-cli/${"1.62.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.61.2"}${suffix}`;
75246
+ return `ur/${"1.62.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.61.2",
75384
+ appVersion: "1.62.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.61.2".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
83584
+ const match = "1.62.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.61.2",
83624
+ version: "1.62.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.61.2"
84294
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.62.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.61.2");
84322
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.62.0");
84323
84323
  }
84324
84324
  async function reinitialize1PEventLoggingIfConfigChanged() {
84325
84325
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -94158,7 +94158,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
94158
94158
  function formatA2AAgentCard(options = {}, pretty = true) {
94159
94159
  return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
94160
94160
  }
94161
- var urVersion = "1.61.2", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
94161
+ var urVersion = "1.62.0", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
94162
94162
  var init_trends = __esm(() => {
94163
94163
  init_a2aCardSignature();
94164
94164
  coverage = [
@@ -96961,7 +96961,7 @@ function getAttributionHeader(fingerprint) {
96961
96961
  if (!isAttributionHeaderEnabled()) {
96962
96962
  return "";
96963
96963
  }
96964
- const version2 = `${"1.61.2"}.${fingerprint}`;
96964
+ const version2 = `${"1.62.0"}.${fingerprint}`;
96965
96965
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
96966
96966
  const cch = "";
96967
96967
  const workload = getWorkload();
@@ -154550,7 +154550,7 @@ var init_projectSafety = __esm(() => {
154550
154550
  function getInstruments() {
154551
154551
  if (instruments)
154552
154552
  return instruments;
154553
- const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.61.2");
154553
+ const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.62.0");
154554
154554
  instruments = {
154555
154555
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
154556
154556
  description: "GenAI operation duration.",
@@ -154648,7 +154648,7 @@ function genAiAgentAttributes() {
154648
154648
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
154649
154649
  "gen_ai.provider.name": "ur",
154650
154650
  "gen_ai.agent.name": "UR-Nexus",
154651
- "gen_ai.agent.version": "1.61.2"
154651
+ "gen_ai.agent.version": "1.62.0"
154652
154652
  };
154653
154653
  }
154654
154654
  function genAiWorkflowAttributes(workflowName) {
@@ -154664,7 +154664,7 @@ function genAiWorkflowAttributes(workflowName) {
154664
154664
  function startGenAiWorkflowSpan(workflowName) {
154665
154665
  const attributes = genAiWorkflowAttributes(workflowName);
154666
154666
  const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
154667
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.61.2").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
154667
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.62.0").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
154668
154668
  }
154669
154669
  function endGenAiWorkflowSpan(span, options2 = {}) {
154670
154670
  try {
@@ -154702,7 +154702,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
154702
154702
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
154703
154703
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
154704
154704
  }
154705
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.61.2").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
154705
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.62.0").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
154706
154706
  }
154707
154707
  function endGenAiMemorySpan(span, options2 = {}) {
154708
154708
  try {
@@ -206221,7 +206221,7 @@ function getTelemetryAttributes() {
206221
206221
  attributes["session.id"] = sessionId;
206222
206222
  }
206223
206223
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
206224
- attributes["app.version"] = "1.61.2";
206224
+ attributes["app.version"] = "1.62.0";
206225
206225
  }
206226
206226
  const oauthAccount = getOauthAccountInfo();
206227
206227
  if (oauthAccount) {
@@ -241995,7 +241995,7 @@ function getInstallationEnv() {
241995
241995
  return;
241996
241996
  }
241997
241997
  function getURCodeVersion() {
241998
- return "1.61.2";
241998
+ return "1.62.0";
241999
241999
  }
242000
242000
  async function getInstalledVSCodeExtensionVersion(command) {
242001
242001
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -249326,7 +249326,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
249326
249326
  const client2 = new Client({
249327
249327
  name: "ur",
249328
249328
  title: "UR",
249329
- version: "1.61.2",
249329
+ version: "1.62.0",
249330
249330
  description: "UR-Nexus autonomous engineering workflow engine",
249331
249331
  websiteUrl: PRODUCT_URL
249332
249332
  }, {
@@ -249686,7 +249686,7 @@ var init_client5 = __esm(() => {
249686
249686
  const client2 = new Client({
249687
249687
  name: "ur",
249688
249688
  title: "UR",
249689
- version: "1.61.2",
249689
+ version: "1.62.0",
249690
249690
  description: "UR-Nexus autonomous engineering workflow engine",
249691
249691
  websiteUrl: PRODUCT_URL
249692
249692
  }, {
@@ -262287,7 +262287,7 @@ async function createRuntime() {
262287
262287
  bootstrapTelemetry();
262288
262288
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
262289
262289
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
262290
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.61.2"
262290
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.62.0"
262291
262291
  }));
262292
262292
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
262293
262293
  resource,
@@ -262320,11 +262320,11 @@ async function createRuntime() {
262320
262320
  setMeterProvider(meterProvider);
262321
262321
  setLoggerProvider(loggerProvider);
262322
262322
  if (meterProvider) {
262323
- const meter = meterProvider.getMeter("ur-agent", "1.61.2");
262323
+ const meter = meterProvider.getMeter("ur-agent", "1.62.0");
262324
262324
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
262325
262325
  }
262326
262326
  if (loggerProvider) {
262327
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.61.2"));
262327
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.62.0"));
262328
262328
  }
262329
262329
  if (!cleanupRegistered2) {
262330
262330
  cleanupRegistered2 = true;
@@ -262986,9 +262986,9 @@ async function assertMinVersion() {
262986
262986
  if (false) {}
262987
262987
  try {
262988
262988
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
262989
- if (versionConfig.minVersion && lt("1.61.2", versionConfig.minVersion)) {
262989
+ if (versionConfig.minVersion && lt("1.62.0", versionConfig.minVersion)) {
262990
262990
  console.error(`
262991
- It looks like your version of UR (${"1.61.2"}) needs an update.
262991
+ It looks like your version of UR (${"1.62.0"}) needs an update.
262992
262992
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
262993
262993
 
262994
262994
  To update, please run:
@@ -263204,7 +263204,7 @@ async function installGlobalPackage(specificVersion) {
263204
263204
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
263205
263205
  logEvent("tengu_auto_updater_lock_contention", {
263206
263206
  pid: process.pid,
263207
- currentVersion: "1.61.2"
263207
+ currentVersion: "1.62.0"
263208
263208
  });
263209
263209
  return "in_progress";
263210
263210
  }
@@ -263213,7 +263213,7 @@ async function installGlobalPackage(specificVersion) {
263213
263213
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
263214
263214
  logError2(new Error("Windows NPM detected in WSL environment"));
263215
263215
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
263216
- currentVersion: "1.61.2"
263216
+ currentVersion: "1.62.0"
263217
263217
  });
263218
263218
  console.error(`
263219
263219
  Error: Windows NPM detected in WSL
@@ -263748,7 +263748,7 @@ function detectLinuxGlobPatternWarnings() {
263748
263748
  }
263749
263749
  async function getDoctorDiagnostic() {
263750
263750
  const installationType = await getCurrentInstallationType();
263751
- const version2 = typeof MACRO !== "undefined" ? "1.61.2" : "unknown";
263751
+ const version2 = typeof MACRO !== "undefined" ? "1.62.0" : "unknown";
263752
263752
  const installationPath = await getInstallationPath();
263753
263753
  const invokedBinary = getInvokedBinary();
263754
263754
  const multipleInstallations = await detectMultipleInstallations();
@@ -264683,8 +264683,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
264683
264683
  const maxVersion = await getMaxVersion();
264684
264684
  if (maxVersion && gt(version2, maxVersion)) {
264685
264685
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
264686
- if (gte("1.61.2", maxVersion)) {
264687
- logForDebugging(`Native installer: current version ${"1.61.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
264686
+ if (gte("1.62.0", maxVersion)) {
264687
+ logForDebugging(`Native installer: current version ${"1.62.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
264688
264688
  logEvent("tengu_native_update_skipped_max_version", {
264689
264689
  latency_ms: Date.now() - startTime,
264690
264690
  max_version: maxVersion,
@@ -264695,7 +264695,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
264695
264695
  version2 = maxVersion;
264696
264696
  }
264697
264697
  }
264698
- if (!forceReinstall && version2 === "1.61.2" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
264698
+ if (!forceReinstall && version2 === "1.62.0" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
264699
264699
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
264700
264700
  logEvent("tengu_native_update_complete", {
264701
264701
  latency_ms: Date.now() - startTime,
@@ -334894,7 +334894,7 @@ function isAnyTracingEnabled() {
334894
334894
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
334895
334895
  }
334896
334896
  function getTracer() {
334897
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.61.2");
334897
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.62.0");
334898
334898
  }
334899
334899
  function createSpanAttributes(spanType, customAttributes = {}) {
334900
334900
  const baseAttributes = getTelemetryAttributes();
@@ -364397,7 +364397,7 @@ function Feedback({
364397
364397
  platform: env2.platform,
364398
364398
  gitRepo: envInfo.isGit,
364399
364399
  terminal: env2.terminal,
364400
- version: "1.61.2",
364400
+ version: "1.62.0",
364401
364401
  transcript: normalizeMessagesForAPI(messages),
364402
364402
  errors: sanitizedErrors,
364403
364403
  lastApiRequest: getLastAPIRequest(),
@@ -364589,7 +364589,7 @@ function Feedback({
364589
364589
  ", ",
364590
364590
  env2.terminal,
364591
364591
  ", v",
364592
- "1.61.2"
364592
+ "1.62.0"
364593
364593
  ]
364594
364594
  }, undefined, true, undefined, this)
364595
364595
  ]
@@ -364695,7 +364695,7 @@ ${sanitizedDescription}
364695
364695
  ` + `**Environment Info**
364696
364696
  ` + `- Platform: ${env2.platform}
364697
364697
  ` + `- Terminal: ${env2.terminal}
364698
- ` + `- Version: ${"1.61.2"}
364698
+ ` + `- Version: ${"1.62.0"}
364699
364699
  ` + `- Feedback ID: ${feedbackId}
364700
364700
  ` + `
364701
364701
  **Errors**
@@ -367805,7 +367805,7 @@ function buildPrimarySection() {
367805
367805
  }, undefined, false, undefined, this);
367806
367806
  return [{
367807
367807
  label: "Version",
367808
- value: "1.61.2"
367808
+ value: "1.62.0"
367809
367809
  }, {
367810
367810
  label: "Session name",
367811
367811
  value: nameValue
@@ -371135,7 +371135,7 @@ function Config({
371135
371135
  }
371136
371136
  }, undefined, false, undefined, this)
371137
371137
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
371138
- currentVersion: "1.61.2",
371138
+ currentVersion: "1.62.0",
371139
371139
  onChoice: (choice) => {
371140
371140
  setShowSubmenu(null);
371141
371141
  setTabsHidden(false);
@@ -371147,7 +371147,7 @@ function Config({
371147
371147
  autoUpdatesChannel: "stable"
371148
371148
  };
371149
371149
  if (choice === "stay") {
371150
- newSettings.minimumVersion = "1.61.2";
371150
+ newSettings.minimumVersion = "1.62.0";
371151
371151
  }
371152
371152
  updateSettingsForSource("userSettings", newSettings);
371153
371153
  setSettingsData((prev_27) => ({
@@ -379211,7 +379211,7 @@ function HelpV2(t0) {
379211
379211
  let t6;
379212
379212
  if ($2[31] !== tabs) {
379213
379213
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
379214
- title: `UR v${"1.61.2"}`,
379214
+ title: `UR v${"1.62.0"}`,
379215
379215
  color: "professionalBlue",
379216
379216
  defaultTab: "general",
379217
379217
  children: tabs
@@ -380128,7 +380128,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
380128
380128
  async function handleInitialize(options2) {
380129
380129
  return {
380130
380130
  name: "UR",
380131
- version: "1.61.2",
380131
+ version: "1.62.0",
380132
380132
  protocolVersion: "0.1.0",
380133
380133
  workspaceRoot: options2.cwd,
380134
380134
  capabilities: {
@@ -397236,7 +397236,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
397236
397236
  return [];
397237
397237
  }
397238
397238
  }
397239
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.61.2") {
397239
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.62.0") {
397240
397240
  if (process.env.USER_TYPE === "ant") {
397241
397241
  const changelog = "";
397242
397242
  if (changelog) {
@@ -397263,7 +397263,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.61.2")
397263
397263
  releaseNotes
397264
397264
  };
397265
397265
  }
397266
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.61.2") {
397266
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.62.0") {
397267
397267
  if (process.env.USER_TYPE === "ant") {
397268
397268
  const changelog = "";
397269
397269
  if (changelog) {
@@ -400120,7 +400120,7 @@ function getRecentActivitySync() {
400120
400120
  return cachedActivity;
400121
400121
  }
400122
400122
  function getLogoDisplayData() {
400123
- const version2 = process.env.DEMO_VERSION ?? "1.61.2";
400123
+ const version2 = process.env.DEMO_VERSION ?? "1.62.0";
400124
400124
  const serverUrl = getDirectConnectServerUrl();
400125
400125
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
400126
400126
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -401004,7 +401004,7 @@ function LogoV2() {
401004
401004
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
401005
401005
  t2 = () => {
401006
401006
  const currentConfig2 = getGlobalConfig();
401007
- if (currentConfig2.lastReleaseNotesSeen === "1.61.2") {
401007
+ if (currentConfig2.lastReleaseNotesSeen === "1.62.0") {
401008
401008
  return;
401009
401009
  }
401010
401010
  saveGlobalConfig(_temp327);
@@ -401689,12 +401689,12 @@ function LogoV2() {
401689
401689
  return t41;
401690
401690
  }
401691
401691
  function _temp327(current) {
401692
- if (current.lastReleaseNotesSeen === "1.61.2") {
401692
+ if (current.lastReleaseNotesSeen === "1.62.0") {
401693
401693
  return current;
401694
401694
  }
401695
401695
  return {
401696
401696
  ...current,
401697
- lastReleaseNotesSeen: "1.61.2"
401697
+ lastReleaseNotesSeen: "1.62.0"
401698
401698
  };
401699
401699
  }
401700
401700
  function _temp241(s_0) {
@@ -418492,7 +418492,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
418492
418492
  if (spec.name !== specName) {
418493
418493
  throw new Error("Agentic CI workflow spec name does not match");
418494
418494
  }
418495
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.61.2" : "1.61.2");
418495
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.62.0" : "1.62.0");
418496
418496
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
418497
418497
  throw new Error("invalid ur-agent package version");
418498
418498
  }
@@ -419485,7 +419485,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
419485
419485
  path: ".github/workflows/ur.yml",
419486
419486
  root: "project",
419487
419487
  content: compileAgenticCiWorkflow("default", {
419488
- packageVersion: typeof MACRO !== "undefined" ? "1.61.2" : "1.61.2"
419488
+ packageVersion: typeof MACRO !== "undefined" ? "1.62.0" : "1.62.0"
419489
419489
  })
419490
419490
  },
419491
419491
  {
@@ -419548,7 +419548,7 @@ function value(tokens, flag) {
419548
419548
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
419549
419549
  }
419550
419550
  function cliVersion() {
419551
- return typeof MACRO !== "undefined" ? "1.61.2" : "1.61.2";
419551
+ return typeof MACRO !== "undefined" ? "1.62.0" : "1.62.0";
419552
419552
  }
419553
419553
  function workflowPath(cwd2) {
419554
419554
  return join159(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -425404,7 +425404,7 @@ function createAcpStdioApp(deps) {
425404
425404
  }
425405
425405
  },
425406
425406
  authMethods: [],
425407
- agentInfo: { name: "UR-Nexus", version: "1.61.2" }
425407
+ agentInfo: { name: "UR-Nexus", version: "1.62.0" }
425408
425408
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
425409
425409
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
425410
425410
  await runtime2.announce({
@@ -425501,7 +425501,7 @@ function createAcpStdioAgent(deps) {
425501
425501
  }
425502
425502
  },
425503
425503
  authMethods: [],
425504
- agentInfo: { name: "UR-Nexus", version: "1.61.2" }
425504
+ agentInfo: { name: "UR-Nexus", version: "1.62.0" }
425505
425505
  });
425506
425506
  return;
425507
425507
  case "authenticate":
@@ -434834,8 +434834,11 @@ function summarizeSubagentCosts(subagentsDir) {
434834
434834
  } catch {
434835
434835
  continue;
434836
434836
  }
434837
+ const meta = readAgentMetadata2(join182(subagentsDir, entry));
434837
434838
  const row = {
434838
434839
  agentId: matched[1],
434840
+ agentType: meta.agentType,
434841
+ description: meta.description,
434839
434842
  model: null,
434840
434843
  messages: messages.length,
434841
434844
  inputTokens: 0,
@@ -434867,6 +434870,18 @@ function summarizeSubagentCosts(subagentsDir) {
434867
434870
  }
434868
434871
  return rows.sort((a2, b) => b.costUSD - a2.costUSD);
434869
434872
  }
434873
+ function readAgentMetadata2(transcriptPath) {
434874
+ try {
434875
+ const raw = readFileSync61(transcriptPath.replace(/\.jsonl$/, ".meta.json"), "utf8");
434876
+ const parsed = JSON.parse(raw);
434877
+ return {
434878
+ agentType: typeof parsed.agentType === "string" ? parsed.agentType : null,
434879
+ description: typeof parsed.description === "string" ? parsed.description : null
434880
+ };
434881
+ } catch {
434882
+ return { agentType: null, description: null };
434883
+ }
434884
+ }
434870
434885
  function formatSubagentCosts(rows, json2, searchedDir) {
434871
434886
  if (json2)
434872
434887
  return JSON.stringify({ subagents: rows, searchedDir }, null, 2);
@@ -434875,11 +434890,12 @@ function formatSubagentCosts(rows, json2, searchedDir) {
434875
434890
  Either this session spawned no subagents, or that is not where they were written.` : "No subagent transcripts found for this session.";
434876
434891
  }
434877
434892
  const billed = rows.some((row) => row.costUSD > 0);
434878
- const width = Math.max(...rows.map((row) => row.agentId.length), 5);
434893
+ const label = (row) => row.description || row.agentType || row.agentId;
434894
+ const width = Math.min(Math.max(...rows.map((row) => label(row).length), 5), 44);
434879
434895
  const lines = ["Per-agent usage", ""];
434880
434896
  for (const row of rows) {
434881
434897
  const cost2 = billed ? ` ${formatUSD(row.costUSD).padStart(9)}` : "";
434882
- lines.push(` ${row.agentId.padEnd(width)} ${String(row.inputTokens).padStart(9)} in ` + `${String(row.outputTokens).padStart(8)} out${cost2} ${row.model ?? "unknown model"}`);
434898
+ lines.push(` ${label(row).slice(0, width).padEnd(width)} ${String(row.inputTokens).padStart(9)} in ` + `${String(row.outputTokens).padStart(8)} out${cost2} ${row.model ?? "unknown model"}`);
434883
434899
  }
434884
434900
  const totalIn = rows.reduce((sum, row) => sum + row.inputTokens, 0);
434885
434901
  const totalOut = rows.reduce((sum, row) => sum + row.outputTokens, 0);
@@ -633820,7 +633836,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
633820
633836
  smapsRollup,
633821
633837
  platform: process.platform,
633822
633838
  nodeVersion: process.version,
633823
- ccVersion: "1.61.2"
633839
+ ccVersion: "1.62.0"
633824
633840
  };
633825
633841
  }
633826
633842
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -634400,7 +634416,7 @@ var init_bridge_kick = __esm(() => {
634400
634416
  var call153 = async () => {
634401
634417
  return {
634402
634418
  type: "text",
634403
- value: "1.61.2"
634419
+ value: "1.62.0"
634404
634420
  };
634405
634421
  }, version2, version_default;
634406
634422
  var init_version = __esm(() => {
@@ -645471,7 +645487,7 @@ function generateHtmlReport(data, insights) {
645471
645487
  </html>`;
645472
645488
  }
645473
645489
  function buildExportData(data, insights, facets, remoteStats) {
645474
- const version3 = typeof MACRO !== "undefined" ? "1.61.2" : "unknown";
645490
+ const version3 = typeof MACRO !== "undefined" ? "1.62.0" : "unknown";
645475
645491
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
645476
645492
  const facets_summary = {
645477
645493
  total: facets.size,
@@ -649782,7 +649798,7 @@ var init_sessionStorage = __esm(() => {
649782
649798
  init_settings2();
649783
649799
  init_slowOperations();
649784
649800
  init_uuid();
649785
- VERSION7 = typeof MACRO !== "undefined" ? "1.61.2" : "unknown";
649801
+ VERSION7 = typeof MACRO !== "undefined" ? "1.62.0" : "unknown";
649786
649802
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
649787
649803
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
649788
649804
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -650997,7 +651013,7 @@ var init_filesystem = __esm(() => {
650997
651013
  });
650998
651014
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
650999
651015
  const nonce = randomBytes20(16).toString("hex");
651000
- return join232(getURTempDir(), "bundled-skills", "1.61.2", nonce);
651016
+ return join232(getURTempDir(), "bundled-skills", "1.62.0", nonce);
651001
651017
  });
651002
651018
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
651003
651019
  });
@@ -657292,7 +657308,7 @@ function computeFingerprint(messageText2, version3) {
657292
657308
  }
657293
657309
  function computeFingerprintFromMessages(messages) {
657294
657310
  const firstMessageText = extractFirstMessageText(messages);
657295
- return computeFingerprint(firstMessageText, "1.61.2");
657311
+ return computeFingerprint(firstMessageText, "1.62.0");
657296
657312
  }
657297
657313
  var FINGERPRINT_SALT = "59cf53e54c78";
657298
657314
  var init_fingerprint = () => {};
@@ -659188,7 +659204,7 @@ async function sideQuery(opts) {
659188
659204
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
659189
659205
  }
659190
659206
  const messageText2 = extractFirstUserMessageText(messages);
659191
- const fingerprint2 = computeFingerprint(messageText2, "1.61.2");
659207
+ const fingerprint2 = computeFingerprint(messageText2, "1.62.0");
659192
659208
  const attributionHeader = getAttributionHeader(fingerprint2);
659193
659209
  const systemBlocks = [
659194
659210
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -663959,7 +663975,7 @@ function buildSystemInitMessage(inputs) {
663959
663975
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
663960
663976
  apiKeySource: getURHQApiKeyWithSource().source,
663961
663977
  betas: getSdkBetas(),
663962
- ur_version: "1.61.2",
663978
+ ur_version: "1.62.0",
663963
663979
  output_style: outputStyle2,
663964
663980
  agents: inputs.agents.map((agent2) => agent2.agentType),
663965
663981
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -677819,7 +677835,7 @@ var init_useVoiceEnabled = __esm(() => {
677819
677835
  function getSemverPart(version3) {
677820
677836
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
677821
677837
  }
677822
- function useUpdateNotification(updatedVersion, initialVersion = "1.61.2") {
677838
+ function useUpdateNotification(updatedVersion, initialVersion = "1.62.0") {
677823
677839
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react222.useState(() => getSemverPart(initialVersion));
677824
677840
  if (!updatedVersion) {
677825
677841
  return null;
@@ -677868,7 +677884,7 @@ function AutoUpdater({
677868
677884
  return;
677869
677885
  }
677870
677886
  if (false) {}
677871
- const currentVersion = "1.61.2";
677887
+ const currentVersion = "1.62.0";
677872
677888
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
677873
677889
  let latestVersion = await getLatestVersion(channel);
677874
677890
  const isDisabled = isAutoUpdaterDisabled();
@@ -678097,12 +678113,12 @@ function NativeAutoUpdater({
678097
678113
  logEvent("tengu_native_auto_updater_start", {});
678098
678114
  try {
678099
678115
  const maxVersion = await getMaxVersion();
678100
- if (maxVersion && gt("1.61.2", maxVersion)) {
678116
+ if (maxVersion && gt("1.62.0", maxVersion)) {
678101
678117
  const msg = await getMaxVersionMessage();
678102
678118
  setMaxVersionIssue(msg ?? "affects your version");
678103
678119
  }
678104
678120
  const result = await installLatest(channel);
678105
- const currentVersion = "1.61.2";
678121
+ const currentVersion = "1.62.0";
678106
678122
  const latencyMs = Date.now() - startTime;
678107
678123
  if (result.lockFailed) {
678108
678124
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -678239,17 +678255,17 @@ function PackageManagerAutoUpdater(t0) {
678239
678255
  const maxVersion = await getMaxVersion();
678240
678256
  if (maxVersion && latest && gt(latest, maxVersion)) {
678241
678257
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
678242
- if (gte("1.61.2", maxVersion)) {
678243
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.61.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
678258
+ if (gte("1.62.0", maxVersion)) {
678259
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.62.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
678244
678260
  setUpdateAvailable(false);
678245
678261
  return;
678246
678262
  }
678247
678263
  latest = maxVersion;
678248
678264
  }
678249
- const hasUpdate = latest && !gte("1.61.2", latest) && !shouldSkipVersion(latest);
678265
+ const hasUpdate = latest && !gte("1.62.0", latest) && !shouldSkipVersion(latest);
678250
678266
  setUpdateAvailable(!!hasUpdate);
678251
678267
  if (hasUpdate) {
678252
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.61.2"} -> ${latest}`);
678268
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.62.0"} -> ${latest}`);
678253
678269
  }
678254
678270
  };
678255
678271
  $2[0] = t1;
@@ -678283,7 +678299,7 @@ function PackageManagerAutoUpdater(t0) {
678283
678299
  wrap: "truncate",
678284
678300
  children: [
678285
678301
  "currentVersion: ",
678286
- "1.61.2"
678302
+ "1.62.0"
678287
678303
  ]
678288
678304
  }, undefined, true, undefined, this);
678289
678305
  $2[3] = verbose;
@@ -688980,7 +688996,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
688980
688996
  project_dir: getOriginalCwd(),
688981
688997
  added_dirs: addedDirs
688982
688998
  },
688983
- version: "1.61.2",
688999
+ version: "1.62.0",
688984
689000
  output_style: {
688985
689001
  name: outputStyleName
688986
689002
  },
@@ -689063,7 +689079,7 @@ function StatusLineInner({
689063
689079
  const taskValues = Object.values(tasks2);
689064
689080
  const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
689065
689081
  const defaultStatusLineText = buildDefaultStatusBar({
689066
- version: "1.61.2",
689082
+ version: "1.62.0",
689067
689083
  providerLabel: providerRuntime.providerLabel,
689068
689084
  authMode: providerRuntime.authLabel,
689069
689085
  model: providerRuntime.model ?? renderModelName(mainLoopModel),
@@ -701206,7 +701222,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
701206
701222
  } catch {}
701207
701223
  const data = {
701208
701224
  trigger: trigger2,
701209
- version: "1.61.2",
701225
+ version: "1.62.0",
701210
701226
  platform: process.platform,
701211
701227
  transcript,
701212
701228
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -713486,7 +713502,7 @@ function WelcomeV2() {
713486
713502
  dimColor: true,
713487
713503
  children: [
713488
713504
  "v",
713489
- "1.61.2"
713505
+ "1.62.0"
713490
713506
  ]
713491
713507
  }, undefined, true, undefined, this)
713492
713508
  ]
@@ -714746,7 +714762,7 @@ function completeOnboarding() {
714746
714762
  saveGlobalConfig((current) => ({
714747
714763
  ...current,
714748
714764
  hasCompletedOnboarding: true,
714749
- lastOnboardingVersion: "1.61.2"
714765
+ lastOnboardingVersion: "1.62.0"
714750
714766
  }));
714751
714767
  }
714752
714768
  function showDialog(root2, renderer) {
@@ -719790,7 +719806,7 @@ function appendToLog(path24, message) {
719790
719806
  cwd: getFsImplementation().cwd(),
719791
719807
  userType: process.env.USER_TYPE,
719792
719808
  sessionId: getSessionId(),
719793
- version: "1.61.2"
719809
+ version: "1.62.0"
719794
719810
  };
719795
719811
  getLogWriter(path24).write(messageWithTimestamp);
719796
719812
  }
@@ -723949,8 +723965,8 @@ async function getEnvLessBridgeConfig() {
723949
723965
  }
723950
723966
  async function checkEnvLessBridgeMinVersion() {
723951
723967
  const cfg = await getEnvLessBridgeConfig();
723952
- if (cfg.min_version && lt("1.61.2", cfg.min_version)) {
723953
- return `Your version of UR (${"1.61.2"}) is too old for Remote Control.
723968
+ if (cfg.min_version && lt("1.62.0", cfg.min_version)) {
723969
+ return `Your version of UR (${"1.62.0"}) is too old for Remote Control.
723954
723970
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
723955
723971
  }
723956
723972
  return null;
@@ -724424,7 +724440,7 @@ async function initBridgeCore(params) {
724424
724440
  const rawApi = createBridgeApiClient({
724425
724441
  baseUrl,
724426
724442
  getAccessToken,
724427
- runnerVersion: "1.61.2",
724443
+ runnerVersion: "1.62.0",
724428
724444
  onDebug: logForDebugging,
724429
724445
  onAuth401,
724430
724446
  getTrustedDeviceToken
@@ -733900,7 +733916,7 @@ function getAgUiCapabilities() {
733900
733916
  name: "UR-Nexus",
733901
733917
  type: "ur-nexus",
733902
733918
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
733903
- version: "1.61.2",
733919
+ version: "1.62.0",
733904
733920
  provider: "UR",
733905
733921
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
733906
733922
  },
@@ -735040,7 +735056,7 @@ function createMCPServer(cwd4, debug2, verbose) {
735040
735056
  };
735041
735057
  const server2 = new Server({
735042
735058
  name: "ur-nexus",
735043
- version: "1.61.2"
735059
+ version: "1.62.0"
735044
735060
  }, {
735045
735061
  capabilities: {
735046
735062
  tools: {}
@@ -736198,7 +736214,7 @@ function thrownResponse(error40) {
736198
736214
  }
736199
736215
  async function createUrMcp2026Runtime(options4) {
736200
736216
  const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
736201
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.61.2" }, { capabilities: {} });
736217
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.62.0" }, { capabilities: {} });
736202
736218
  const [clientTransport, serverTransport] = createLinkedTransportPair();
736203
736219
  try {
736204
736220
  await server2.connect(serverTransport);
@@ -736209,7 +736225,7 @@ async function createUrMcp2026Runtime(options4) {
736209
736225
  }
736210
736226
  const runtime2 = new Mcp2026Runtime({
736211
736227
  cwd: options4.cwd,
736212
- version: "1.61.2",
736228
+ version: "1.62.0",
736213
736229
  backend: {
736214
736230
  listTools: async () => {
736215
736231
  const listed = await client2.listTools();
@@ -738342,7 +738358,7 @@ async function update() {
738342
738358
  logEvent("tengu_update_check", {});
738343
738359
  const diagnostic2 = await getDoctorDiagnostic();
738344
738360
  const result = await checkUpgradeStatus({
738345
- currentVersion: "1.61.2",
738361
+ currentVersion: "1.62.0",
738346
738362
  packageName: UR_AGENT_PACKAGE_NAME,
738347
738363
  installationType: diagnostic2.installationType,
738348
738364
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -739658,7 +739674,7 @@ ${customInstructions}` : customInstructions;
739658
739674
  }
739659
739675
  }
739660
739676
  logForDiagnosticsNoPII("info", "started", {
739661
- version: "1.61.2",
739677
+ version: "1.62.0",
739662
739678
  is_native_binary: isInBundledMode()
739663
739679
  });
739664
739680
  registerCleanup(async () => {
@@ -740444,7 +740460,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
740444
740460
  pendingHookMessages
740445
740461
  }, renderAndRun);
740446
740462
  }
740447
- }).version("1.61.2 (UR-Nexus)", "-v, --version", "Output the version number");
740463
+ }).version("1.62.0 (UR-Nexus)", "-v, --version", "Output the version number");
740448
740464
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
740449
740465
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
740450
740466
  if (canUserConfigureAdvisor()) {
@@ -741496,7 +741512,7 @@ if (false) {}
741496
741512
  async function main2() {
741497
741513
  const args = process.argv.slice(2);
741498
741514
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
741499
- console.log(`${"1.61.2"} (UR-Nexus)`);
741515
+ console.log(`${"1.62.0"} (UR-Nexus)`);
741500
741516
  return;
741501
741517
  }
741502
741518
  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.61.2</p>
48
+ <p class="eyebrow">Version 1.62.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.61.2"
10
+ version = "1.62.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.61.2",
5
+ "version": "1.62.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.61.2",
3
+ "version": "1.62.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.61.2",
87
+ "playwright-core": "^1.62.0",
88
88
  "sharp": "^0.35.3"
89
89
  },
90
90
  "devDependencies": {