ur-agent 1.78.9 → 1.78.10

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/dist/cli.js CHANGED
@@ -89249,12 +89249,112 @@ var init_toolSchema = __esm(() => {
89249
89249
  TOOL_NAME_PATTERN = /^[A-Za-z0-9_-]{1,64}$/u;
89250
89250
  });
89251
89251
 
89252
+ // src/services/api/streamIdleTimeout.ts
89253
+ function resolveStreamIdleTimeoutMs(configured, env4 = process.env) {
89254
+ const candidates = [
89255
+ configured,
89256
+ Number.parseInt(env4.UR_STREAM_IDLE_TIMEOUT_MS ?? "", 10)
89257
+ ];
89258
+ for (const candidate of candidates) {
89259
+ if (typeof candidate === "number" && Number.isFinite(candidate) && candidate > 0) {
89260
+ return Math.floor(candidate);
89261
+ }
89262
+ }
89263
+ return DEFAULT_STREAM_IDLE_TIMEOUT_MS;
89264
+ }
89265
+ function withStreamIdleTimeout(source, idleMs, onTimeout) {
89266
+ if (!Number.isFinite(idleMs) || idleMs <= 0) {
89267
+ return source;
89268
+ }
89269
+ const reader = source.getReader();
89270
+ let timer;
89271
+ let bytesReceived = 0;
89272
+ let settled = false;
89273
+ return new ReadableStream({
89274
+ start(controller) {
89275
+ const clear = () => {
89276
+ if (timer !== undefined) {
89277
+ clearTimeout(timer);
89278
+ timer = undefined;
89279
+ }
89280
+ };
89281
+ const fail = () => {
89282
+ if (settled)
89283
+ return;
89284
+ settled = true;
89285
+ const error40 = new StreamIdleTimeoutError(idleMs, bytesReceived);
89286
+ clear();
89287
+ reader.cancel(error40).catch(() => {});
89288
+ onTimeout?.(error40);
89289
+ controller.error(error40);
89290
+ };
89291
+ const arm = () => {
89292
+ clear();
89293
+ if (settled)
89294
+ return;
89295
+ timer = setTimeout(fail, idleMs);
89296
+ };
89297
+ const pump = async () => {
89298
+ arm();
89299
+ try {
89300
+ while (!settled) {
89301
+ const { done, value } = await reader.read();
89302
+ if (settled)
89303
+ return;
89304
+ if (done) {
89305
+ clear();
89306
+ settled = true;
89307
+ controller.close();
89308
+ return;
89309
+ }
89310
+ if (value !== undefined) {
89311
+ bytesReceived += value.byteLength ?? value.length ?? 0;
89312
+ controller.enqueue(value);
89313
+ }
89314
+ arm();
89315
+ }
89316
+ } catch (error40) {
89317
+ if (settled)
89318
+ return;
89319
+ settled = true;
89320
+ clear();
89321
+ controller.error(error40);
89322
+ }
89323
+ };
89324
+ pump();
89325
+ },
89326
+ cancel(reason) {
89327
+ settled = true;
89328
+ if (timer !== undefined) {
89329
+ clearTimeout(timer);
89330
+ timer = undefined;
89331
+ }
89332
+ return reader.cancel(reason);
89333
+ }
89334
+ });
89335
+ }
89336
+ var DEFAULT_STREAM_IDLE_TIMEOUT_MS = 300000, StreamIdleTimeoutError;
89337
+ var init_streamIdleTimeout = __esm(() => {
89338
+ StreamIdleTimeoutError = class StreamIdleTimeoutError extends Error {
89339
+ idleMs;
89340
+ bytesReceived;
89341
+ isStreamIdleTimeout = true;
89342
+ constructor(idleMs, bytesReceived) {
89343
+ super(bytesReceived === 0 ? `Provider accepted the request but sent no data for ${idleMs}ms.` : `Provider stopped sending data for ${idleMs}ms after ${bytesReceived} bytes.`);
89344
+ this.idleMs = idleMs;
89345
+ this.bytesReceived = bytesReceived;
89346
+ this.name = "StreamIdleTimeoutError";
89347
+ }
89348
+ };
89349
+ });
89350
+
89252
89351
  // src/services/api/ollama.ts
89253
89352
  var exports_ollama = {};
89254
89353
  __export(exports_ollama, {
89255
89354
  toOllamaChatRequest: () => toOllamaChatRequest,
89256
89355
  mergeToolCalls: () => mergeToolCalls,
89257
89356
  isOllamaCloudModel: () => isOllamaCloudModel2,
89357
+ getOllamaStreamIdleTimeoutMs: () => getOllamaStreamIdleTimeoutMs,
89258
89358
  getOllamaRequestTimeoutMs: () => getOllamaRequestTimeoutMs,
89259
89359
  getOllamaHeaderTimeoutMs: () => getOllamaHeaderTimeoutMs,
89260
89360
  getEffectiveOllamaBaseUrl: () => getEffectiveOllamaBaseUrl,
@@ -89423,6 +89523,18 @@ function getOllamaRequestTimeoutMs(options, env4 = process.env, model) {
89423
89523
  }
89424
89524
  return DEFAULT_OLLAMA_REQUEST_TIMEOUT_MS;
89425
89525
  }
89526
+ function getOllamaStreamIdleTimeoutMs(options, env4 = process.env, model) {
89527
+ if (options?.timeoutMs !== undefined || options?.timeout !== undefined) {
89528
+ return getOllamaRequestTimeoutMs(options, env4, model);
89529
+ }
89530
+ const streamOverride = parseInt(env4.UR_STREAM_IDLE_TIMEOUT_MS || "", 10);
89531
+ if (streamOverride > 0)
89532
+ return streamOverride;
89533
+ const apiOverride = parseInt(env4.API_TIMEOUT_MS || "", 10);
89534
+ if (apiOverride > 0)
89535
+ return apiOverride;
89536
+ return isTruthyEnv(env4.UR_CODE_REMOTE) ? REMOTE_OLLAMA_REQUEST_TIMEOUT_MS : DEFAULT_STREAM_IDLE_TIMEOUT_MS;
89537
+ }
89426
89538
  function isOllamaCloudModel2(model) {
89427
89539
  return model?.trim().toLowerCase().endsWith(":cloud") ?? false;
89428
89540
  }
@@ -89847,7 +89959,7 @@ async function* streamURHQEvents(response, params, controller, requestId, textTo
89847
89959
  }
89848
89960
  return events;
89849
89961
  };
89850
- for await (const chunk of readOllamaChunks(response, controller, getOllamaRequestTimeoutMs(options, process.env, params.model), options)) {
89962
+ for await (const chunk of readOllamaChunks(response, controller, getOllamaStreamIdleTimeoutMs(options, process.env, params.model), options)) {
89851
89963
  if (chunk.error) {
89852
89964
  throw new Error(chunk.error);
89853
89965
  }
@@ -90372,6 +90484,7 @@ var init_ollama = __esm(() => {
90372
90484
  init_debug();
90373
90485
  init_providerClient();
90374
90486
  init_toolSchema();
90487
+ init_streamIdleTimeout();
90375
90488
  ollamaModelCapabilitiesCache = new Map;
90376
90489
  warnedToolsUnsupportedModels = new Set;
90377
90490
  TEXT_TOOL_CALL_HINT = [
@@ -90460,105 +90573,6 @@ function getStoredGeminiThoughtSignature(block) {
90460
90573
  }
90461
90574
  var GEMINI_THOUGHT_SIGNATURE = "gemini_thought_signature";
90462
90575
 
90463
- // src/services/api/streamIdleTimeout.ts
90464
- function resolveStreamIdleTimeoutMs(configured, env4 = process.env) {
90465
- const candidates = [
90466
- configured,
90467
- Number.parseInt(env4.UR_STREAM_IDLE_TIMEOUT_MS ?? "", 10)
90468
- ];
90469
- for (const candidate of candidates) {
90470
- if (typeof candidate === "number" && Number.isFinite(candidate) && candidate > 0) {
90471
- return Math.floor(candidate);
90472
- }
90473
- }
90474
- return DEFAULT_STREAM_IDLE_TIMEOUT_MS;
90475
- }
90476
- function withStreamIdleTimeout(source, idleMs, onTimeout) {
90477
- if (!Number.isFinite(idleMs) || idleMs <= 0) {
90478
- return source;
90479
- }
90480
- const reader = source.getReader();
90481
- let timer;
90482
- let bytesReceived = 0;
90483
- let settled = false;
90484
- return new ReadableStream({
90485
- start(controller) {
90486
- const clear = () => {
90487
- if (timer !== undefined) {
90488
- clearTimeout(timer);
90489
- timer = undefined;
90490
- }
90491
- };
90492
- const fail = () => {
90493
- if (settled)
90494
- return;
90495
- settled = true;
90496
- const error40 = new StreamIdleTimeoutError(idleMs, bytesReceived);
90497
- clear();
90498
- reader.cancel(error40).catch(() => {});
90499
- onTimeout?.(error40);
90500
- controller.error(error40);
90501
- };
90502
- const arm = () => {
90503
- clear();
90504
- if (settled)
90505
- return;
90506
- timer = setTimeout(fail, idleMs);
90507
- };
90508
- const pump = async () => {
90509
- arm();
90510
- try {
90511
- while (!settled) {
90512
- const { done, value } = await reader.read();
90513
- if (settled)
90514
- return;
90515
- if (done) {
90516
- clear();
90517
- settled = true;
90518
- controller.close();
90519
- return;
90520
- }
90521
- if (value !== undefined) {
90522
- bytesReceived += value.byteLength ?? value.length ?? 0;
90523
- controller.enqueue(value);
90524
- }
90525
- arm();
90526
- }
90527
- } catch (error40) {
90528
- if (settled)
90529
- return;
90530
- settled = true;
90531
- clear();
90532
- controller.error(error40);
90533
- }
90534
- };
90535
- pump();
90536
- },
90537
- cancel(reason) {
90538
- settled = true;
90539
- if (timer !== undefined) {
90540
- clearTimeout(timer);
90541
- timer = undefined;
90542
- }
90543
- return reader.cancel(reason);
90544
- }
90545
- });
90546
- }
90547
- var DEFAULT_STREAM_IDLE_TIMEOUT_MS = 300000, StreamIdleTimeoutError;
90548
- var init_streamIdleTimeout = __esm(() => {
90549
- StreamIdleTimeoutError = class StreamIdleTimeoutError extends Error {
90550
- idleMs;
90551
- bytesReceived;
90552
- isStreamIdleTimeout = true;
90553
- constructor(idleMs, bytesReceived) {
90554
- super(bytesReceived === 0 ? `Provider accepted the request but sent no data for ${idleMs}ms.` : `Provider stopped sending data for ${idleMs}ms after ${bytesReceived} bytes.`);
90555
- this.idleMs = idleMs;
90556
- this.bytesReceived = bytesReceived;
90557
- this.name = "StreamIdleTimeoutError";
90558
- }
90559
- };
90560
- });
90561
-
90562
90576
  // src/services/api/providerHttp.ts
90563
90577
  function parsePositiveInteger(value) {
90564
90578
  if (typeof value !== "string" && typeof value !== "number")
@@ -107588,7 +107602,7 @@ var init_auth = __esm(() => {
107588
107602
 
107589
107603
  // src/utils/userAgent.ts
107590
107604
  function getURCodeUserAgent() {
107591
- return `ur/${"1.78.9"}`;
107605
+ return `ur/${"1.78.10"}`;
107592
107606
  }
107593
107607
 
107594
107608
  // src/utils/workloadContext.ts
@@ -107610,7 +107624,7 @@ function getUserAgent() {
107610
107624
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
107611
107625
  const workload = getWorkload();
107612
107626
  const workloadSuffix = workload ? `, workload/${workload}` : "";
107613
- return `ur-cli/${"1.78.9"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
107627
+ return `ur-cli/${"1.78.10"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
107614
107628
  }
107615
107629
  function getMCPUserAgent() {
107616
107630
  const parts = [];
@@ -107624,7 +107638,7 @@ function getMCPUserAgent() {
107624
107638
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
107625
107639
  }
107626
107640
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
107627
- return `ur/${"1.78.9"}${suffix}`;
107641
+ return `ur/${"1.78.10"}${suffix}`;
107628
107642
  }
107629
107643
  function getWebFetchUserAgent() {
107630
107644
  return `UR-User (${getURCodeUserAgent()})`;
@@ -107762,7 +107776,7 @@ var init_user = __esm(() => {
107762
107776
  deviceId,
107763
107777
  sessionId: getSessionId(),
107764
107778
  email: getEmail(),
107765
- appVersion: "1.78.9",
107779
+ appVersion: "1.78.10",
107766
107780
  platform: getHostPlatformForAnalytics(),
107767
107781
  organizationUuid,
107768
107782
  accountUuid,
@@ -115649,7 +115663,7 @@ var init_metadata = __esm(() => {
115649
115663
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
115650
115664
  WHITESPACE_REGEX = /\s+/;
115651
115665
  getVersionBase = memoize_default(() => {
115652
- const match = "1.78.9".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
115666
+ const match = "1.78.10".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
115653
115667
  return match ? match[0] : undefined;
115654
115668
  });
115655
115669
  buildEnvContext = memoize_default(async () => {
@@ -115689,7 +115703,7 @@ var init_metadata = __esm(() => {
115689
115703
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
115690
115704
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
115691
115705
  isURAiAuth: isURAISubscriber(),
115692
- version: "1.78.9",
115706
+ version: "1.78.10",
115693
115707
  versionBase: getVersionBase(),
115694
115708
  buildTime: "",
115695
115709
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -116359,7 +116373,7 @@ function initialize1PEventLogging() {
116359
116373
  const platform2 = getPlatform();
116360
116374
  const attributes = {
116361
116375
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
116362
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.78.9"
116376
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.78.10"
116363
116377
  };
116364
116378
  if (platform2 === "wsl") {
116365
116379
  const wslVersion = getWslVersion();
@@ -116387,7 +116401,7 @@ function initialize1PEventLogging() {
116387
116401
  })
116388
116402
  ]
116389
116403
  });
116390
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.78.9");
116404
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.78.10");
116391
116405
  }
116392
116406
  async function reinitialize1PEventLoggingIfConfigChanged() {
116393
116407
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -126287,7 +126301,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
126287
126301
  function formatA2AAgentCard(options = {}, pretty = true) {
126288
126302
  return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
126289
126303
  }
126290
- var urVersion = "1.78.9", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
126304
+ var urVersion = "1.78.10", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
126291
126305
  var init_trends = __esm(() => {
126292
126306
  init_a2aCardSignature();
126293
126307
  coverage = [
@@ -129090,7 +129104,7 @@ function getAttributionHeader(fingerprint) {
129090
129104
  if (!isAttributionHeaderEnabled()) {
129091
129105
  return "";
129092
129106
  }
129093
- const version2 = `${"1.78.9"}.${fingerprint}`;
129107
+ const version2 = `${"1.78.10"}.${fingerprint}`;
129094
129108
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
129095
129109
  const cch = "";
129096
129110
  const workload = getWorkload();
@@ -157094,7 +157108,7 @@ var init_projectSafety = __esm(() => {
157094
157108
  function getInstruments() {
157095
157109
  if (instruments)
157096
157110
  return instruments;
157097
- const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.78.9");
157111
+ const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.78.10");
157098
157112
  instruments = {
157099
157113
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
157100
157114
  description: "GenAI operation duration.",
@@ -157192,7 +157206,7 @@ function genAiAgentAttributes() {
157192
157206
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
157193
157207
  "gen_ai.provider.name": "ur",
157194
157208
  "gen_ai.agent.name": "UR-Nexus",
157195
- "gen_ai.agent.version": "1.78.9"
157209
+ "gen_ai.agent.version": "1.78.10"
157196
157210
  };
157197
157211
  }
157198
157212
  function genAiWorkflowAttributes(workflowName) {
@@ -157208,7 +157222,7 @@ function genAiWorkflowAttributes(workflowName) {
157208
157222
  function startGenAiWorkflowSpan(workflowName) {
157209
157223
  const attributes = genAiWorkflowAttributes(workflowName);
157210
157224
  const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
157211
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.78.9").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
157225
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.78.10").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
157212
157226
  }
157213
157227
  function endGenAiWorkflowSpan(span, options2 = {}) {
157214
157228
  try {
@@ -157246,7 +157260,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
157246
157260
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
157247
157261
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
157248
157262
  }
157249
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.78.9").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
157263
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.78.10").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
157250
157264
  }
157251
157265
  function endGenAiMemorySpan(span, options2 = {}) {
157252
157266
  try {
@@ -159627,42 +159641,59 @@ async function createTaskForRun(taskListId, generationId, taskData, options2 = {
159627
159641
  await establishTaskListGenerationUnsafe(taskListId, generationId, options2);
159628
159642
  const existingTasks = await listTasks(taskListId);
159629
159643
  if (options2.replaceAutomaticPromptTask) {
159630
- const automaticTask = existingTasks.find((task2) => task2.metadata?.[AUTOMATIC_PROMPT_TASK_KEY] === true && task2.metadata?.[AUTOMATIC_PROMPT_GENERATION_KEY] === generationId);
159644
+ const automaticTask = existingTasks.find((task) => task.metadata?.[AUTOMATIC_PROMPT_TASK_KEY] === true && task.metadata?.[AUTOMATIC_PROMPT_GENERATION_KEY] === generationId);
159631
159645
  if (automaticTask) {
159632
- const replacement = adoptForwardTaskDependencies(automaticTask.id, taskData, existingTasks.filter((task2) => task2.id !== automaticTask.id));
159646
+ const replacement = adoptForwardTaskDependencies(automaticTask.id, taskData, existingTasks.filter((task) => task.id !== automaticTask.id));
159633
159647
  await writeTaskSnapshotUnsafe(taskListId, replacement);
159634
159648
  return automaticTask.id;
159635
159649
  }
159636
159650
  }
159637
- const highestId = await findHighestTaskId(taskListId);
159638
- if (highestId >= Number.MAX_SAFE_INTEGER) {
159639
- throw new Error("Task ID space is exhausted");
159640
- }
159641
- const taskId = String(highestId + 1);
159642
- const task = adoptForwardTaskDependencies(taskId, taskData, existingTasks);
159643
- await writeTaskSnapshotUnsafe(taskListId, task);
159644
- return taskId;
159651
+ return allocateTaskSnapshotUnsafe(taskListId, taskData, existingTasks);
159645
159652
  });
159646
159653
  notifyTasksUpdated();
159647
159654
  return id;
159648
159655
  }
159649
- async function createAutomaticPromptTaskForRun(taskListId, generationId, prompt) {
159656
+ async function createAutomaticPromptTaskForRun(taskListId, generationId, prompt, options2 = {}) {
159650
159657
  const compact = prompt.replace(/\s+/gu, " ").trim() || "Handle user request";
159651
159658
  const subject = compact.length <= 80 ? compact : `${compact.slice(0, 77).trimEnd()}...`;
159652
159659
  const description = prompt.length <= 2000 ? prompt : `${prompt.slice(0, 1997)}...`;
159653
- return createTaskForRun(taskListId, generationId, {
159654
- subject,
159655
- description,
159656
- activeForm: "Working on user request",
159657
- status: "in_progress",
159658
- owner: undefined,
159659
- blocks: [],
159660
- blockedBy: [],
159661
- metadata: {
159662
- [AUTOMATIC_PROMPT_TASK_KEY]: true,
159663
- [AUTOMATIC_PROMPT_GENERATION_KEY]: generationId
159660
+ const taskId = await withTaskListLock(taskListId, async () => {
159661
+ await establishTaskListGenerationUnsafe(taskListId, generationId, {
159662
+ appendToCurrent: options2.reuseExistingBoard
159663
+ });
159664
+ const existingTasks = await listTasks(taskListId);
159665
+ const resumableAutomaticTask = existingTasks.findLast((task) => task.metadata?.[AUTOMATIC_PROMPT_TASK_KEY] === true && (task.status === "pending" || task.status === "in_progress" || options2.reuseExistingBoard === true));
159666
+ if (resumableAutomaticTask) {
159667
+ await writeTaskSnapshotUnsafe(taskListId, {
159668
+ ...resumableAutomaticTask,
159669
+ status: "in_progress",
159670
+ metadata: {
159671
+ ...resumableAutomaticTask.metadata,
159672
+ [AUTOMATIC_PROMPT_TASK_KEY]: true,
159673
+ [AUTOMATIC_PROMPT_GENERATION_KEY]: generationId
159674
+ }
159675
+ });
159676
+ return resumableAutomaticTask.id;
159664
159677
  }
159665
- }, { appendToCurrent: true });
159678
+ if (hasUnfinishedWork(existingTasks) || options2.reuseExistingBoard === true && existingTasks.length > 0) {
159679
+ return;
159680
+ }
159681
+ return allocateTaskSnapshotUnsafe(taskListId, {
159682
+ subject,
159683
+ description,
159684
+ activeForm: "Working on user request",
159685
+ status: "in_progress",
159686
+ owner: undefined,
159687
+ blocks: [],
159688
+ blockedBy: [],
159689
+ metadata: {
159690
+ [AUTOMATIC_PROMPT_TASK_KEY]: true,
159691
+ [AUTOMATIC_PROMPT_GENERATION_KEY]: generationId
159692
+ }
159693
+ }, existingTasks);
159694
+ });
159695
+ notifyTasksUpdated();
159696
+ return taskId;
159666
159697
  }
159667
159698
  async function finalizeAutomaticPromptTask(taskListId, taskId, generationId, status) {
159668
159699
  const task = await getTask(taskListId, taskId);
@@ -159683,6 +159714,16 @@ function adoptForwardTaskDependencies(id, taskData, existingTasks) {
159683
159714
  ]
159684
159715
  };
159685
159716
  }
159717
+ async function allocateTaskSnapshotUnsafe(taskListId, taskData, existingTasks) {
159718
+ const highestId = await findHighestTaskId(taskListId);
159719
+ if (highestId >= Number.MAX_SAFE_INTEGER) {
159720
+ throw new Error("Task ID space is exhausted");
159721
+ }
159722
+ const taskId = String(highestId + 1);
159723
+ const task = adoptForwardTaskDependencies(taskId, taskData, existingTasks);
159724
+ await writeTaskSnapshotUnsafe(taskListId, task);
159725
+ return taskId;
159726
+ }
159686
159727
  async function getTask(taskListId, taskId) {
159687
159728
  const path10 = getTaskPath(taskListId, taskId);
159688
159729
  try {
@@ -250949,7 +250990,7 @@ function getTelemetryAttributes() {
250949
250990
  attributes["session.id"] = sessionId;
250950
250991
  }
250951
250992
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
250952
- attributes["app.version"] = "1.78.9";
250993
+ attributes["app.version"] = "1.78.10";
250953
250994
  }
250954
250995
  const oauthAccount = getOauthAccountInfo();
250955
250996
  if (oauthAccount) {
@@ -297456,7 +297497,7 @@ function getInstallationEnv() {
297456
297497
  return;
297457
297498
  }
297458
297499
  function getURCodeVersion() {
297459
- return "1.78.9";
297500
+ return "1.78.10";
297460
297501
  }
297461
297502
  async function getInstalledVSCodeExtensionVersion(command) {
297462
297503
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -304787,7 +304828,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
304787
304828
  const client2 = new Client({
304788
304829
  name: "ur",
304789
304830
  title: "UR",
304790
- version: "1.78.9",
304831
+ version: "1.78.10",
304791
304832
  description: "UR-Nexus autonomous engineering workflow engine",
304792
304833
  websiteUrl: PRODUCT_URL
304793
304834
  }, {
@@ -305147,7 +305188,7 @@ var init_client5 = __esm(() => {
305147
305188
  const client2 = new Client({
305148
305189
  name: "ur",
305149
305190
  title: "UR",
305150
- version: "1.78.9",
305191
+ version: "1.78.10",
305151
305192
  description: "UR-Nexus autonomous engineering workflow engine",
305152
305193
  websiteUrl: PRODUCT_URL
305153
305194
  }, {
@@ -317868,7 +317909,7 @@ async function createRuntime() {
317868
317909
  bootstrapTelemetry();
317869
317910
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
317870
317911
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
317871
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.78.9"
317912
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.78.10"
317872
317913
  }));
317873
317914
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
317874
317915
  resource,
@@ -317901,11 +317942,11 @@ async function createRuntime() {
317901
317942
  setMeterProvider(meterProvider);
317902
317943
  setLoggerProvider(loggerProvider);
317903
317944
  if (meterProvider) {
317904
- const meter = meterProvider.getMeter("ur-agent", "1.78.9");
317945
+ const meter = meterProvider.getMeter("ur-agent", "1.78.10");
317905
317946
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
317906
317947
  }
317907
317948
  if (loggerProvider) {
317908
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.78.9"));
317949
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.78.10"));
317909
317950
  }
317910
317951
  if (!cleanupRegistered2) {
317911
317952
  cleanupRegistered2 = true;
@@ -318567,9 +318608,9 @@ async function assertMinVersion() {
318567
318608
  if (false) {}
318568
318609
  try {
318569
318610
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
318570
- if (versionConfig.minVersion && lt("1.78.9", versionConfig.minVersion)) {
318611
+ if (versionConfig.minVersion && lt("1.78.10", versionConfig.minVersion)) {
318571
318612
  console.error(`
318572
- It looks like your version of UR (${"1.78.9"}) needs an update.
318613
+ It looks like your version of UR (${"1.78.10"}) needs an update.
318573
318614
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
318574
318615
 
318575
318616
  To update, please run:
@@ -318785,7 +318826,7 @@ async function installGlobalPackage(specificVersion) {
318785
318826
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
318786
318827
  logEvent("tengu_auto_updater_lock_contention", {
318787
318828
  pid: process.pid,
318788
- currentVersion: "1.78.9"
318829
+ currentVersion: "1.78.10"
318789
318830
  });
318790
318831
  return "in_progress";
318791
318832
  }
@@ -318794,7 +318835,7 @@ async function installGlobalPackage(specificVersion) {
318794
318835
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
318795
318836
  logError2(new Error("Windows NPM detected in WSL environment"));
318796
318837
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
318797
- currentVersion: "1.78.9"
318838
+ currentVersion: "1.78.10"
318798
318839
  });
318799
318840
  console.error(`
318800
318841
  Error: Windows NPM detected in WSL
@@ -319329,7 +319370,7 @@ function detectLinuxGlobPatternWarnings() {
319329
319370
  }
319330
319371
  async function getDoctorDiagnostic() {
319331
319372
  const installationType = await getCurrentInstallationType();
319332
- const version2 = typeof MACRO !== "undefined" ? "1.78.9" : "unknown";
319373
+ const version2 = typeof MACRO !== "undefined" ? "1.78.10" : "unknown";
319333
319374
  const installationPath = await getInstallationPath();
319334
319375
  const invokedBinary = getInvokedBinary();
319335
319376
  const multipleInstallations = await detectMultipleInstallations();
@@ -320264,8 +320305,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
320264
320305
  const maxVersion = await getMaxVersion();
320265
320306
  if (maxVersion && gt(version2, maxVersion)) {
320266
320307
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
320267
- if (gte("1.78.9", maxVersion)) {
320268
- logForDebugging(`Native installer: current version ${"1.78.9"} is already at or above maxVersion ${maxVersion}, skipping update`);
320308
+ if (gte("1.78.10", maxVersion)) {
320309
+ logForDebugging(`Native installer: current version ${"1.78.10"} is already at or above maxVersion ${maxVersion}, skipping update`);
320269
320310
  logEvent("tengu_native_update_skipped_max_version", {
320270
320311
  latency_ms: Date.now() - startTime,
320271
320312
  max_version: maxVersion,
@@ -320276,7 +320317,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
320276
320317
  version2 = maxVersion;
320277
320318
  }
320278
320319
  }
320279
- if (!forceReinstall && version2 === "1.78.9" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
320320
+ if (!forceReinstall && version2 === "1.78.10" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
320280
320321
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
320281
320322
  logEvent("tengu_native_update_complete", {
320282
320323
  latency_ms: Date.now() - startTime,
@@ -322976,6 +323017,21 @@ var init_ink3 = __esm(() => {
322976
323017
  init_agentColorManager();
322977
323018
  });
322978
323019
 
323020
+ // src/components/Spinner/taskLabel.ts
323021
+ function currentSpinnerTaskLabel(tasks) {
323022
+ const task = tasks?.find((candidate) => candidate.status === "in_progress");
323023
+ const label = (task?.activeForm || task?.subject || "").replace(/\s+/g, " ").trim();
323024
+ return label || null;
323025
+ }
323026
+ function fitSpinnerTaskLabel(label, maxWidth) {
323027
+ if (!label || maxWidth < 8)
323028
+ return null;
323029
+ return truncateToWidth(label, Math.min(48, maxWidth));
323030
+ }
323031
+ var init_taskLabel = __esm(() => {
323032
+ init_truncate();
323033
+ });
323034
+
322979
323035
  // src/components/Spinner/SpinnerAnimationRow.tsx
322980
323036
  function spinnerActivityStatus(mode) {
322981
323037
  switch (String(mode)) {
@@ -322999,6 +323055,7 @@ function SpinnerAnimationRow({
322999
323055
  hasActiveTools,
323000
323056
  responseLengthRef,
323001
323057
  message,
323058
+ taskLabel,
323002
323059
  messageColor,
323003
323060
  shimmerColor,
323004
323061
  overrideColor,
@@ -323046,9 +323103,12 @@ function SpinnerAnimationRow({
323046
323103
  let thinkingWidthValue = thinkingText ? stringWidth(thinkingText) : 0;
323047
323104
  const messageWidth = glimmerMessageWidth + 2;
323048
323105
  const sep13 = SEP_WIDTH;
323106
+ const taskWidthBudget = columns - messageWidth - thinkingWidthValue - 9;
323107
+ const visibleTaskLabel = fitSpinnerTaskLabel(taskLabel, taskWidthBudget);
323108
+ const taskSegmentWidth = visibleTaskLabel ? sep13 + stringWidth(visibleTaskLabel) : 0;
323049
323109
  const wantsThinking = true;
323050
323110
  const wantsTimerAndTokens = verbose || hasRunningTeammates || effectiveElapsedMs > SHOW_TOKENS_AFTER_MS;
323051
- const availableSpace = columns - messageWidth - 5;
323111
+ const availableSpace = columns - messageWidth - taskSegmentWidth - 5;
323052
323112
  let showThinking = wantsThinking;
323053
323113
  if (!showThinking && wantsThinking && thinkingStatus === "thinking" && effortSuffix) {
323054
323114
  if (availableSpace > THINKING_BARE_WIDTH) {
@@ -323090,7 +323150,7 @@ function SpinnerAnimationRow({
323090
323150
  children: thinkingOnly ? `(${thinkingText})` : thinkingText
323091
323151
  }, "thinking", false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime69.jsxDEV(ThemedText, {
323092
323152
  dimColor: true,
323093
- children: thinkingText
323153
+ children: thinkingOnly ? `(${thinkingText})` : thinkingText
323094
323154
  }, "thinking", false, undefined, this)] : []];
323095
323155
  const status = foregroundedTeammate && !foregroundedTeammate.isIdle ? /* @__PURE__ */ jsx_dev_runtime69.jsxDEV(jsx_dev_runtime69.Fragment, {
323096
323156
  children: [
@@ -323147,6 +323207,10 @@ function SpinnerAnimationRow({
323147
323207
  shimmerColor,
323148
323208
  stalledIntensity: overrideColor ? 0 : stalledIntensity
323149
323209
  }, undefined, false, undefined, this),
323210
+ visibleTaskLabel && /* @__PURE__ */ jsx_dev_runtime69.jsxDEV(ThemedText, {
323211
+ dimColor: true,
323212
+ children: `\xB7 ${visibleTaskLabel} `
323213
+ }, undefined, false, undefined, this),
323150
323214
  status
323151
323215
  ]
323152
323216
  }, undefined, true, undefined, this);
@@ -323202,6 +323266,7 @@ var init_SpinnerAnimationRow = __esm(() => {
323202
323266
  init_format2();
323203
323267
  init_ink3();
323204
323268
  init_Byline();
323269
+ init_taskLabel();
323205
323270
  init_GlimmerMessage();
323206
323271
  init_SpinnerGlyph();
323207
323272
  init_useStalledAnimation();
@@ -329027,10 +329092,10 @@ function SpinnerWithVerbInner({
329027
329092
  clearTimeout(clearStatusTimer);
329028
329093
  };
329029
329094
  }, [mode]);
329030
- const currentTodo = tasksV2?.find((task) => task.status !== "pending" && task.status !== "completed");
329095
+ const currentTaskLabel = currentSpinnerTaskLabel(tasksV2);
329031
329096
  const nextTask = findNextPendingTask(tasksV2);
329032
329097
  const [randomVerb] = import_react59.useState(() => sample_default(getSpinnerVerbs()));
329033
- const leaderVerb = overrideMessage ?? currentTodo?.activeForm ?? currentTodo?.subject ?? randomVerb;
329098
+ const leaderVerb = overrideMessage ?? randomVerb;
329034
329099
  const effectiveVerb = foregroundedTeammate && !foregroundedTeammate.isIdle ? foregroundedTeammate.spinnerVerb ?? randomVerb : leaderVerb;
329035
329100
  const message = effectiveVerb + "\u2026";
329036
329101
  import_react59.useEffect(() => {
@@ -329139,6 +329204,7 @@ function SpinnerWithVerbInner({
329139
329204
  hasActiveTools,
329140
329205
  responseLengthRef,
329141
329206
  message,
329207
+ taskLabel: !foregroundedTeammate ? currentTaskLabel : null,
329142
329208
  messageColor,
329143
329209
  shimmerColor,
329144
329210
  overrideColor,
@@ -329354,6 +329420,7 @@ var init_Spinner2 = __esm(() => {
329354
329420
  init_stringWidth();
329355
329421
  init_Spinner();
329356
329422
  init_SpinnerAnimationRow();
329423
+ init_taskLabel();
329357
329424
  init_useSettings();
329358
329425
  init_InProcessTeammateTask();
329359
329426
  init_effort();
@@ -379812,8 +379879,14 @@ function requestsContinueCurrentTaskList(input) {
379812
379879
  return false;
379813
379880
  return /^(?:ok(?:ay)?|yes|yep|yup|sure|approved|i approve|looks good|sounds good)$/u.test(normalized) || /^(?:please\s+)?(?:continue|proceed|go ahead|carry on|do it|start(?: now)?|begin implementation|start implementation)$/u.test(normalized) || /^(?:ok(?:ay)?|yes|sure|approved|i approve)[, ]+(?:please\s+)?(?:continue|proceed|go ahead|carry on|do it|start(?: now)?|begin implementation|start implementation)$/u.test(normalized);
379814
379881
  }
379882
+ function requestsRevisionOfCurrentTaskList(input) {
379883
+ const normalized = input.replace(/\s+/gu, " ").trim().toLowerCase();
379884
+ if (!normalized || normalized.length > 500)
379885
+ return false;
379886
+ return /^(?:also|and|but|actually|instead|still|again)\b/u.test(normalized) || /\b(?:why did (?:you|u)|i (?:said|asked|meant)|you (?:removed|deleted|changed|forgot|missed))\b/u.test(normalized) || /^(?:please\s+)?(?:fix|change|update|restore|keep|remove|add)\s+(?:it|that|this)\b/u.test(normalized) || /^(?:please\s+)?(?:do not|don't)\s+(?:remove|delete|change|replace|forget)\b/u.test(normalized);
379887
+ }
379815
379888
  function shouldKeepCurrentTaskList(input) {
379816
- return requestsAppendToCurrentTaskList(input) || requestsContinueCurrentTaskList(input);
379889
+ return requestsAppendToCurrentTaskList(input) || requestsContinueCurrentTaskList(input) || requestsRevisionOfCurrentTaskList(input);
379817
379890
  }
379818
379891
  function getTaskListRunForCommand(command, options2 = {}) {
379819
379892
  if (!command || command.mode !== "prompt" || command.isMeta)
@@ -390082,7 +390155,7 @@ function isAnyTracingEnabled() {
390082
390155
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
390083
390156
  }
390084
390157
  function getTracer() {
390085
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.78.9");
390158
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.78.10");
390086
390159
  }
390087
390160
  function createSpanAttributes(spanType, customAttributes = {}) {
390088
390161
  const baseAttributes = getTelemetryAttributes();
@@ -420371,7 +420444,7 @@ function Feedback({
420371
420444
  platform: env2.platform,
420372
420445
  gitRepo: envInfo.isGit,
420373
420446
  terminal: env2.terminal,
420374
- version: "1.78.9",
420447
+ version: "1.78.10",
420375
420448
  transcript: normalizeMessagesForAPI(messages),
420376
420449
  errors: sanitizedErrors,
420377
420450
  lastApiRequest: getLastAPIRequest(),
@@ -420563,7 +420636,7 @@ function Feedback({
420563
420636
  ", ",
420564
420637
  env2.terminal,
420565
420638
  ", v",
420566
- "1.78.9"
420639
+ "1.78.10"
420567
420640
  ]
420568
420641
  }, undefined, true, undefined, this)
420569
420642
  ]
@@ -420669,7 +420742,7 @@ ${sanitizedDescription}
420669
420742
  ` + `**Environment Info**
420670
420743
  ` + `- Platform: ${env2.platform}
420671
420744
  ` + `- Terminal: ${env2.terminal}
420672
- ` + `- Version: ${"1.78.9"}
420745
+ ` + `- Version: ${"1.78.10"}
420673
420746
  ` + `- Feedback ID: ${feedbackId}
420674
420747
  ` + `
420675
420748
  **Errors**
@@ -423779,7 +423852,7 @@ function buildPrimarySection() {
423779
423852
  }, undefined, false, undefined, this);
423780
423853
  return [{
423781
423854
  label: "Version",
423782
- value: "1.78.9"
423855
+ value: "1.78.10"
423783
423856
  }, {
423784
423857
  label: "Session name",
423785
423858
  value: nameValue
@@ -427161,7 +427234,7 @@ function Config({
427161
427234
  }
427162
427235
  }, undefined, false, undefined, this)
427163
427236
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
427164
- currentVersion: "1.78.9",
427237
+ currentVersion: "1.78.10",
427165
427238
  onChoice: (choice) => {
427166
427239
  setShowSubmenu(null);
427167
427240
  setTabsHidden(false);
@@ -427173,7 +427246,7 @@ function Config({
427173
427246
  autoUpdatesChannel: "stable"
427174
427247
  };
427175
427248
  if (choice === "stay") {
427176
- newSettings.minimumVersion = "1.78.9";
427249
+ newSettings.minimumVersion = "1.78.10";
427177
427250
  }
427178
427251
  updateSettingsForSource("userSettings", newSettings);
427179
427252
  setSettingsData((prev_27) => ({
@@ -435237,7 +435310,7 @@ function HelpV2(t0) {
435237
435310
  let t6;
435238
435311
  if ($2[31] !== tabs) {
435239
435312
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
435240
- title: `UR v${"1.78.9"}`,
435313
+ title: `UR v${"1.78.10"}`,
435241
435314
  color: "professionalBlue",
435242
435315
  defaultTab: "general",
435243
435316
  children: tabs
@@ -436170,7 +436243,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
436170
436243
  async function handleInitialize(options2) {
436171
436244
  return {
436172
436245
  name: "UR",
436173
- version: "1.78.9",
436246
+ version: "1.78.10",
436174
436247
  protocolVersion: "0.1.0",
436175
436248
  workspaceRoot: options2.cwd,
436176
436249
  capabilities: {
@@ -453278,7 +453351,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
453278
453351
  return [];
453279
453352
  }
453280
453353
  }
453281
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.78.9") {
453354
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.78.10") {
453282
453355
  if (process.env.USER_TYPE === "ant") {
453283
453356
  const changelog = "";
453284
453357
  if (changelog) {
@@ -453305,7 +453378,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.78.9")
453305
453378
  releaseNotes
453306
453379
  };
453307
453380
  }
453308
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.78.9") {
453381
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.78.10") {
453309
453382
  if (process.env.USER_TYPE === "ant") {
453310
453383
  const changelog = "";
453311
453384
  if (changelog) {
@@ -455900,6 +455973,45 @@ var init_groupToolUses = __esm(() => {
455900
455973
  GROUPING_CACHE = new WeakMap;
455901
455974
  });
455902
455975
 
455976
+ // src/utils/messagePresentation.ts
455977
+ function sourceMessageKey(message) {
455978
+ const id = message.message?.id;
455979
+ if (id)
455980
+ return `id:${id}`;
455981
+ if (message.uuid)
455982
+ return `uuid:${message.uuid.slice(0, 24)}`;
455983
+ return null;
455984
+ }
455985
+ function isToolExecutionBlock(block2) {
455986
+ return block2?.type === "tool_use" || block2?.type?.endsWith("_tool_use") === true;
455987
+ }
455988
+ function dropIntermediateToolNarration(messages) {
455989
+ const sourcesWithToolExecution = new Set;
455990
+ for (const message of messages) {
455991
+ if (message.type !== "assistant")
455992
+ continue;
455993
+ if (!message.message?.content?.some(isToolExecutionBlock))
455994
+ continue;
455995
+ const key = sourceMessageKey(message);
455996
+ if (key)
455997
+ sourcesWithToolExecution.add(key);
455998
+ }
455999
+ if (sourcesWithToolExecution.size === 0)
456000
+ return [...messages];
456001
+ return messages.filter((message) => {
456002
+ if (message.type !== "assistant" || message.isApiErrorMessage)
456003
+ return true;
456004
+ if (message.message?.content?.length !== 1 || message.message.content[0]?.type !== "text") {
456005
+ return true;
456006
+ }
456007
+ const key = sourceMessageKey(message);
456008
+ return key === null || !sourcesWithToolExecution.has(key);
456009
+ });
456010
+ }
456011
+ function shouldShowLiveAssistantDraft(isTranscriptMode, verbose) {
456012
+ return isTranscriptMode || verbose;
456013
+ }
456014
+
455903
456015
  // src/utils/transcriptSearch.ts
455904
456016
  function memoryContentSearchText(memories) {
455905
456017
  if (!Array.isArray(memories)) {
@@ -456171,7 +456283,7 @@ function getRecentActivitySync() {
456171
456283
  return cachedActivity;
456172
456284
  }
456173
456285
  function getLogoDisplayData() {
456174
- const version2 = process.env.DEMO_VERSION ?? "1.78.9";
456286
+ const version2 = process.env.DEMO_VERSION ?? "1.78.10";
456175
456287
  const serverUrl = getDirectConnectServerUrl();
456176
456288
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
456177
456289
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -457038,7 +457150,7 @@ function LogoV2() {
457038
457150
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
457039
457151
  t2 = () => {
457040
457152
  const currentConfig2 = getGlobalConfig();
457041
- if (currentConfig2.lastReleaseNotesSeen === "1.78.9") {
457153
+ if (currentConfig2.lastReleaseNotesSeen === "1.78.10") {
457042
457154
  return;
457043
457155
  }
457044
457156
  saveGlobalConfig(_temp325);
@@ -457723,12 +457835,12 @@ function LogoV2() {
457723
457835
  return t41;
457724
457836
  }
457725
457837
  function _temp325(current) {
457726
- if (current.lastReleaseNotesSeen === "1.78.9") {
457838
+ if (current.lastReleaseNotesSeen === "1.78.10") {
457727
457839
  return current;
457728
457840
  }
457729
457841
  return {
457730
457842
  ...current,
457731
- lastReleaseNotesSeen: "1.78.9"
457843
+ lastReleaseNotesSeen: "1.78.10"
457732
457844
  };
457733
457845
  }
457734
457846
  function _temp241(s_0) {
@@ -460659,7 +460771,8 @@ var import_compiler_runtime187, React76, import_react150, jsx_dev_runtime251, Lo
460659
460771
  const compactAwareMessages = verbose || isFullscreenEnvEnabled() ? normalizedMessages : getMessagesAfterCompactBoundary(normalizedMessages, {
460660
460772
  includeSnipped: true
460661
460773
  });
460662
- const messagesToShowNotTruncated = reorderMessagesInUI(compactAwareMessages.filter((msg_2) => msg_2.type !== "progress").filter((msg_3) => !isNullRenderingAttachment(msg_3)).filter((_) => shouldShowUserMessage(_, isTranscriptMode)), syntheticStreamingToolUseMessages);
460774
+ const presentationMessages = !isTranscriptMode && !verbose && !disableRenderCap ? dropIntermediateToolNarration(compactAwareMessages) : compactAwareMessages;
460775
+ const messagesToShowNotTruncated = reorderMessagesInUI(presentationMessages.filter((msg_2) => msg_2.type !== "progress").filter((msg_3) => !isNullRenderingAttachment(msg_3)).filter((_) => shouldShowUserMessage(_, isTranscriptMode)), syntheticStreamingToolUseMessages);
460663
460776
  const briefToolNames = [BRIEF_TOOL_NAME4, SEND_USER_FILE_TOOL_NAME2].filter((n2) => n2 !== null);
460664
460777
  const dropTextToolNames = [BRIEF_TOOL_NAME4].filter((n_0) => n_0 !== null);
460665
460778
  const briefFiltered = briefToolNames.length > 0 && !isTranscriptMode ? isBriefOnly ? filterForBriefTool(messagesToShowNotTruncated, briefToolNames) : dropTextToolNames.length > 0 ? dropTextInBriefTurns(messagesToShowNotTruncated, dropTextToolNames) : messagesToShowNotTruncated : messagesToShowNotTruncated;
@@ -460677,7 +460790,7 @@ var import_compiler_runtime187, React76, import_react150, jsx_dev_runtime251, Lo
460677
460790
  hasTruncatedMessages,
460678
460791
  hiddenMessageCount
460679
460792
  };
460680
- }, [verbose, normalizedMessages, isTranscriptMode, syntheticStreamingToolUseMessages, shouldTruncate, tools, isBriefOnly]);
460793
+ }, [verbose, normalizedMessages, isTranscriptMode, syntheticStreamingToolUseMessages, shouldTruncate, tools, isBriefOnly, disableRenderCap]);
460681
460794
  const renderableMessages = import_react150.useMemo(() => {
460682
460795
  const capApplies = !virtualScrollRuntimeGate && !disableRenderCap;
460683
460796
  const sliceStart = capApplies ? computeSliceStart(collapsed_0, sliceAnchorRef) : 0;
@@ -460838,9 +460951,9 @@ var import_compiler_runtime187, React76, import_react150, jsx_dev_runtime251, Lo
460838
460951
  extractSearchText
460839
460952
  }, undefined, false, undefined, this)
460840
460953
  }, undefined, false, undefined, this) : renderableMessages.flatMap(renderMessageRow),
460841
- streamingText && !isBriefOnly && /* @__PURE__ */ jsx_dev_runtime251.jsxDEV(StreamingAssistantTextMessage, {
460954
+ streamingText && !isBriefOnly && shouldShowLiveAssistantDraft(isTranscriptMode, verbose) && /* @__PURE__ */ jsx_dev_runtime251.jsxDEV(StreamingAssistantTextMessage, {
460842
460955
  text: streamingText,
460843
- showFull: isTranscriptMode || verbose
460956
+ showFull: true
460844
460957
  }, undefined, false, undefined, this),
460845
460958
  isStreamingThinkingVisible && streamingThinking && !isBriefOnly && /* @__PURE__ */ jsx_dev_runtime251.jsxDEV(ThemedBox_default, {
460846
460959
  marginTop: 1,
@@ -474564,7 +474677,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
474564
474677
  if (spec.name !== specName) {
474565
474678
  throw new Error("Agentic CI workflow spec name does not match");
474566
474679
  }
474567
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.78.9" : "1.78.9");
474680
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.78.10" : "1.78.10");
474568
474681
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
474569
474682
  throw new Error("invalid ur-agent package version");
474570
474683
  }
@@ -475557,7 +475670,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
475557
475670
  path: ".github/workflows/ur.yml",
475558
475671
  root: "project",
475559
475672
  content: compileAgenticCiWorkflow("default", {
475560
- packageVersion: typeof MACRO !== "undefined" ? "1.78.9" : "1.78.9"
475673
+ packageVersion: typeof MACRO !== "undefined" ? "1.78.10" : "1.78.10"
475561
475674
  })
475562
475675
  },
475563
475676
  {
@@ -475620,7 +475733,7 @@ function value(tokens, flag) {
475620
475733
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
475621
475734
  }
475622
475735
  function cliVersion() {
475623
- return typeof MACRO !== "undefined" ? "1.78.9" : "1.78.9";
475736
+ return typeof MACRO !== "undefined" ? "1.78.10" : "1.78.10";
475624
475737
  }
475625
475738
  function workflowPath(cwd2) {
475626
475739
  return join159(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -481476,7 +481589,7 @@ function createAcpStdioApp(deps) {
481476
481589
  }
481477
481590
  },
481478
481591
  authMethods: [],
481479
- agentInfo: { name: "UR-Nexus", version: "1.78.9" }
481592
+ agentInfo: { name: "UR-Nexus", version: "1.78.10" }
481480
481593
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
481481
481594
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
481482
481595
  await runtime2.announce({
@@ -481573,7 +481686,7 @@ function createAcpStdioAgent(deps) {
481573
481686
  }
481574
481687
  },
481575
481688
  authMethods: [],
481576
- agentInfo: { name: "UR-Nexus", version: "1.78.9" }
481689
+ agentInfo: { name: "UR-Nexus", version: "1.78.10" }
481577
481690
  });
481578
481691
  return;
481579
481692
  case "authenticate":
@@ -691195,7 +691308,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
691195
691308
  smapsRollup,
691196
691309
  platform: process.platform,
691197
691310
  nodeVersion: process.version,
691198
- ccVersion: "1.78.9"
691311
+ ccVersion: "1.78.10"
691199
691312
  };
691200
691313
  }
691201
691314
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -691775,7 +691888,7 @@ var init_bridge_kick = __esm(() => {
691775
691888
  var call154 = async () => {
691776
691889
  return {
691777
691890
  type: "text",
691778
- value: "1.78.9"
691891
+ value: "1.78.10"
691779
691892
  };
691780
691893
  }, version2, version_default;
691781
691894
  var init_version = __esm(() => {
@@ -703042,7 +703155,7 @@ function generateHtmlReport(data, insights) {
703042
703155
  </html>`;
703043
703156
  }
703044
703157
  function buildExportData(data, insights, facets, remoteStats) {
703045
- const version3 = typeof MACRO !== "undefined" ? "1.78.9" : "unknown";
703158
+ const version3 = typeof MACRO !== "undefined" ? "1.78.10" : "unknown";
703046
703159
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
703047
703160
  const facets_summary = {
703048
703161
  total: facets.size,
@@ -707356,7 +707469,7 @@ var init_sessionStorage = __esm(() => {
707356
707469
  init_settings2();
707357
707470
  init_slowOperations();
707358
707471
  init_uuid();
707359
- VERSION7 = typeof MACRO !== "undefined" ? "1.78.9" : "unknown";
707472
+ VERSION7 = typeof MACRO !== "undefined" ? "1.78.10" : "unknown";
707360
707473
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
707361
707474
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
707362
707475
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -708571,7 +708684,7 @@ var init_filesystem = __esm(() => {
708571
708684
  });
708572
708685
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
708573
708686
  const nonce = randomBytes20(16).toString("hex");
708574
- return join232(getURTempDir(), "bundled-skills", "1.78.9", nonce);
708687
+ return join232(getURTempDir(), "bundled-skills", "1.78.10", nonce);
708575
708688
  });
708576
708689
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
708577
708690
  });
@@ -714946,7 +715059,7 @@ function computeFingerprint(messageText2, version3) {
714946
715059
  }
714947
715060
  function computeFingerprintFromMessages(messages) {
714948
715061
  const firstMessageText = extractFirstMessageText(messages);
714949
- return computeFingerprint(firstMessageText, "1.78.9");
715062
+ return computeFingerprint(firstMessageText, "1.78.10");
714950
715063
  }
714951
715064
  var FINGERPRINT_SALT = "59cf53e54c78";
714952
715065
  var init_fingerprint = () => {};
@@ -716868,7 +716981,7 @@ async function sideQuery(opts) {
716868
716981
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
716869
716982
  }
716870
716983
  const messageText2 = extractFirstUserMessageText(messages);
716871
- const fingerprint2 = computeFingerprint(messageText2, "1.78.9");
716984
+ const fingerprint2 = computeFingerprint(messageText2, "1.78.10");
716872
716985
  const attributionHeader = getAttributionHeader(fingerprint2);
716873
716986
  const systemBlocks = [
716874
716987
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -721705,7 +721818,7 @@ function buildSystemInitMessage(inputs) {
721705
721818
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
721706
721819
  apiKeySource: getURHQApiKeyWithSource().source,
721707
721820
  betas: getSdkBetas(),
721708
- ur_version: "1.78.9",
721821
+ ur_version: "1.78.10",
721709
721822
  output_style: outputStyle2,
721710
721823
  agents: inputs.agents.map((agent2) => agent2.agentType),
721711
721824
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -735577,7 +735690,7 @@ var init_useVoiceEnabled = __esm(() => {
735577
735690
  function getSemverPart(version3) {
735578
735691
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
735579
735692
  }
735580
- function useUpdateNotification(updatedVersion, initialVersion = "1.78.9") {
735693
+ function useUpdateNotification(updatedVersion, initialVersion = "1.78.10") {
735581
735694
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react224.useState(() => getSemverPart(initialVersion));
735582
735695
  if (!updatedVersion) {
735583
735696
  return null;
@@ -735626,7 +735739,7 @@ function AutoUpdater({
735626
735739
  return;
735627
735740
  }
735628
735741
  if (false) {}
735629
- const currentVersion = "1.78.9";
735742
+ const currentVersion = "1.78.10";
735630
735743
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
735631
735744
  let latestVersion = await getLatestVersion(channel);
735632
735745
  const isDisabled = isAutoUpdaterDisabled();
@@ -735855,12 +735968,12 @@ function NativeAutoUpdater({
735855
735968
  logEvent("tengu_native_auto_updater_start", {});
735856
735969
  try {
735857
735970
  const maxVersion = await getMaxVersion();
735858
- if (maxVersion && gt("1.78.9", maxVersion)) {
735971
+ if (maxVersion && gt("1.78.10", maxVersion)) {
735859
735972
  const msg = await getMaxVersionMessage();
735860
735973
  setMaxVersionIssue(msg ?? "affects your version");
735861
735974
  }
735862
735975
  const result = await installLatest(channel);
735863
- const currentVersion = "1.78.9";
735976
+ const currentVersion = "1.78.10";
735864
735977
  const latencyMs = Date.now() - startTime;
735865
735978
  if (result.lockFailed) {
735866
735979
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -735997,17 +736110,17 @@ function PackageManagerAutoUpdater(t0) {
735997
736110
  const maxVersion = await getMaxVersion();
735998
736111
  if (maxVersion && latest && gt(latest, maxVersion)) {
735999
736112
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
736000
- if (gte("1.78.9", maxVersion)) {
736001
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.78.9"} is already at or above maxVersion ${maxVersion}, skipping update`);
736113
+ if (gte("1.78.10", maxVersion)) {
736114
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.78.10"} is already at or above maxVersion ${maxVersion}, skipping update`);
736002
736115
  setUpdateAvailable(false);
736003
736116
  return;
736004
736117
  }
736005
736118
  latest = maxVersion;
736006
736119
  }
736007
- const hasUpdate = latest && !gte("1.78.9", latest) && !shouldSkipVersion(latest);
736120
+ const hasUpdate = latest && !gte("1.78.10", latest) && !shouldSkipVersion(latest);
736008
736121
  setUpdateAvailable(!!hasUpdate);
736009
736122
  if (hasUpdate) {
736010
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.78.9"} -> ${latest}`);
736123
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.78.10"} -> ${latest}`);
736011
736124
  }
736012
736125
  };
736013
736126
  $2[0] = t1;
@@ -736041,7 +736154,7 @@ function PackageManagerAutoUpdater(t0) {
736041
736154
  wrap: "truncate",
736042
736155
  children: [
736043
736156
  "currentVersion: ",
736044
- "1.78.9"
736157
+ "1.78.10"
736045
736158
  ]
736046
736159
  }, undefined, true, undefined, this);
736047
736160
  $2[3] = verbose;
@@ -746841,7 +746954,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
746841
746954
  project_dir: getOriginalCwd(),
746842
746955
  added_dirs: addedDirs
746843
746956
  },
746844
- version: "1.78.9",
746957
+ version: "1.78.10",
746845
746958
  output_style: {
746846
746959
  name: outputStyleName
746847
746960
  },
@@ -746976,7 +747089,7 @@ function StatusLineInner({
746976
747089
  const attention = customStatusError ?? taskAttention;
746977
747090
  const terminalSize = React133.useContext(TerminalSizeContext);
746978
747091
  const defaultStatusLineText = buildDefaultStatusBar({
746979
- version: "1.78.9",
747092
+ version: "1.78.10",
746980
747093
  providerLabel: providerRuntime.providerLabel,
746981
747094
  authMode: providerRuntime.authLabel,
746982
747095
  model: renderModelName(mainLoopModel) || providerRuntime.model || "",
@@ -753489,6 +753602,17 @@ function useMoreRight(_args) {
753489
753602
  };
753490
753603
  }
753491
753604
 
753605
+ // src/components/Spinner/activityVisibility.ts
753606
+ function shouldShowActivityRow({
753607
+ toolAllowsActivity,
753608
+ hasBlockingPrompt,
753609
+ hasActiveWork,
753610
+ pendingWorkerRequest,
753611
+ onlySleepToolActive
753612
+ }) {
753613
+ return toolAllowsActivity && !hasBlockingPrompt && hasActiveWork && !pendingWorkerRequest && !onlySleepToolActive;
753614
+ }
753615
+
753492
753616
  // src/utils/cleanup.ts
753493
753617
  import * as fs12 from "fs/promises";
753494
753618
  import { homedir as homedir39 } from "os";
@@ -756210,11 +756334,14 @@ async function executeUserInput(params) {
756210
756334
  appendToCurrent: taskListRun.appendToCurrent
756211
756335
  });
756212
756336
  if (!requestsContinueCurrentTaskList(primaryCommandText)) {
756213
- automaticPromptTask = {
756214
- taskListId,
756215
- taskId: await createAutomaticPromptTaskForRun(taskListId, taskListRun.generationId, primaryCommandText),
756216
- generationId: taskListRun.generationId
756217
- };
756337
+ const taskId = await createAutomaticPromptTaskForRun(taskListId, taskListRun.generationId, primaryCommandText, { reuseExistingBoard: taskListRun.appendToCurrent });
756338
+ if (taskId) {
756339
+ automaticPromptTask = {
756340
+ taskListId,
756341
+ taskId,
756342
+ generationId: taskListRun.generationId
756343
+ };
756344
+ }
756218
756345
  }
756219
756346
  }
756220
756347
  for (let i3 = 0;i3 < commands.length; i3++) {
@@ -759284,7 +759411,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
759284
759411
  } catch {}
759285
759412
  const data = {
759286
759413
  trigger: trigger2,
759287
- version: "1.78.9",
759414
+ version: "1.78.10",
759288
759415
  platform: process.platform,
759289
759416
  transcript,
759290
759417
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -767873,7 +768000,13 @@ function REPL({
767873
768000
  setInputValue,
767874
768001
  setToolJSX
767875
768002
  });
767876
- const showSpinner = (!toolJSX || toolJSX.showSpinner === true) && toolUseConfirmQueue.length === 0 && promptQueue.length === 0 && (isLoading || userInputOnProcessing || hasRunningTeammates || getCommandQueueLength() > 0) && !pendingWorkerRequest && !onlySleepToolActive && (!visibleStreamingText || isBriefOnly);
768003
+ const showSpinner = shouldShowActivityRow({
768004
+ toolAllowsActivity: !toolJSX || toolJSX.showSpinner === true,
768005
+ hasBlockingPrompt: toolUseConfirmQueue.length > 0 || promptQueue.length > 0,
768006
+ hasActiveWork: Boolean(isLoading || userInputOnProcessing || hasRunningTeammates || getCommandQueueLength() > 0),
768007
+ pendingWorkerRequest: Boolean(pendingWorkerRequest),
768008
+ onlySleepToolActive
768009
+ });
767877
768010
  const hasActivePrompt = toolUseConfirmQueue.length > 0 || promptQueue.length > 0 || sandboxPermissionRequestQueue.length > 0 || elicitation.queue.length > 0 || workerSandboxPermissions.queue.length > 0;
767878
768011
  const feedbackSurveyOriginal = useFeedbackSurvey(messages, isLoading, submitCount, "session", hasActivePrompt);
767879
768012
  const skillImprovementSurvey = useSkillImprovementSurvey(setMessages);
@@ -771658,7 +771791,7 @@ function WelcomeV2() {
771658
771791
  dimColor: true,
771659
771792
  children: [
771660
771793
  "v",
771661
- "1.78.9"
771794
+ "1.78.10"
771662
771795
  ]
771663
771796
  }, undefined, true, undefined, this)
771664
771797
  ]
@@ -772918,7 +773051,7 @@ function completeOnboarding() {
772918
773051
  saveGlobalConfig((current) => ({
772919
773052
  ...current,
772920
773053
  hasCompletedOnboarding: true,
772921
- lastOnboardingVersion: "1.78.9"
773054
+ lastOnboardingVersion: "1.78.10"
772922
773055
  }));
772923
773056
  }
772924
773057
  function showDialog(root2, renderer) {
@@ -777962,7 +778095,7 @@ function appendToLog(path24, message) {
777962
778095
  cwd: getFsImplementation().cwd(),
777963
778096
  userType: process.env.USER_TYPE,
777964
778097
  sessionId: getSessionId(),
777965
- version: "1.78.9"
778098
+ version: "1.78.10"
777966
778099
  };
777967
778100
  getLogWriter(path24).write(messageWithTimestamp);
777968
778101
  }
@@ -782121,8 +782254,8 @@ async function getEnvLessBridgeConfig() {
782121
782254
  }
782122
782255
  async function checkEnvLessBridgeMinVersion() {
782123
782256
  const cfg = await getEnvLessBridgeConfig();
782124
- if (cfg.min_version && lt("1.78.9", cfg.min_version)) {
782125
- return `Your version of UR (${"1.78.9"}) is too old for Remote Control.
782257
+ if (cfg.min_version && lt("1.78.10", cfg.min_version)) {
782258
+ return `Your version of UR (${"1.78.10"}) is too old for Remote Control.
782126
782259
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
782127
782260
  }
782128
782261
  return null;
@@ -782596,7 +782729,7 @@ async function initBridgeCore(params) {
782596
782729
  const rawApi = createBridgeApiClient({
782597
782730
  baseUrl,
782598
782731
  getAccessToken,
782599
- runnerVersion: "1.78.9",
782732
+ runnerVersion: "1.78.10",
782600
782733
  onDebug: logForDebugging,
782601
782734
  onAuth401,
782602
782735
  getTrustedDeviceToken
@@ -792069,7 +792202,7 @@ function getAgUiCapabilities() {
792069
792202
  name: "UR-Nexus",
792070
792203
  type: "ur-nexus",
792071
792204
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
792072
- version: "1.78.9",
792205
+ version: "1.78.10",
792073
792206
  provider: "UR",
792074
792207
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
792075
792208
  },
@@ -793209,7 +793342,7 @@ function createMCPServer(cwd4, debug2, verbose) {
793209
793342
  };
793210
793343
  const server2 = new Server({
793211
793344
  name: "ur-nexus",
793212
- version: "1.78.9"
793345
+ version: "1.78.10"
793213
793346
  }, {
793214
793347
  capabilities: {
793215
793348
  tools: {}
@@ -794367,7 +794500,7 @@ function thrownResponse(error40) {
794367
794500
  }
794368
794501
  async function createUrMcp2026Runtime(options4) {
794369
794502
  const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
794370
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.78.9" }, { capabilities: {} });
794503
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.78.10" }, { capabilities: {} });
794371
794504
  const [clientTransport, serverTransport] = createLinkedTransportPair();
794372
794505
  try {
794373
794506
  await server2.connect(serverTransport);
@@ -794378,7 +794511,7 @@ async function createUrMcp2026Runtime(options4) {
794378
794511
  }
794379
794512
  const runtime2 = new Mcp2026Runtime({
794380
794513
  cwd: options4.cwd,
794381
- version: "1.78.9",
794514
+ version: "1.78.10",
794382
794515
  backend: {
794383
794516
  listTools: async () => {
794384
794517
  const listed = await client2.listTools();
@@ -796519,7 +796652,7 @@ async function update() {
796519
796652
  logEvent("tengu_update_check", {});
796520
796653
  const diagnostic2 = await getDoctorDiagnostic();
796521
796654
  const result = await checkUpgradeStatus({
796522
- currentVersion: "1.78.9",
796655
+ currentVersion: "1.78.10",
796523
796656
  packageName: UR_AGENT_PACKAGE_NAME,
796524
796657
  installationType: diagnostic2.installationType,
796525
796658
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -797835,7 +797968,7 @@ ${customInstructions}` : customInstructions;
797835
797968
  }
797836
797969
  }
797837
797970
  logForDiagnosticsNoPII("info", "started", {
797838
- version: "1.78.9",
797971
+ version: "1.78.10",
797839
797972
  is_native_binary: isInBundledMode()
797840
797973
  });
797841
797974
  registerCleanup(async () => {
@@ -798621,7 +798754,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
798621
798754
  pendingHookMessages
798622
798755
  }, renderAndRun);
798623
798756
  }
798624
- }).version("1.78.9 (UR-Nexus)", "-v, --version", "Output the version number");
798757
+ }).version("1.78.10 (UR-Nexus)", "-v, --version", "Output the version number");
798625
798758
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
798626
798759
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
798627
798760
  if (canUserConfigureAdvisor()) {
@@ -799673,7 +799806,7 @@ if (false) {}
799673
799806
  async function main2() {
799674
799807
  const args = process.argv.slice(2);
799675
799808
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
799676
- console.log(`${"1.78.9"} (UR-Nexus)`);
799809
+ console.log(`${"1.78.10"} (UR-Nexus)`);
799677
799810
  return;
799678
799811
  }
799679
799812
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {