ur-agent 1.78.9 → 1.78.11

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.11"}`;
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.11"} (${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.11"}${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.11",
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.11".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.11",
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.11"
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.11");
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.11", 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.11"}.${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.11");
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.11"
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.11").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.11").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
157250
157264
  }
157251
157265
  function endGenAiMemorySpan(span, options2 = {}) {
157252
157266
  try {
@@ -159286,6 +159300,7 @@ __export(exports_tasks, {
159286
159300
  listTaskHistory: () => listTaskHistory,
159287
159301
  isTodoV2Enabled: () => isTodoV2Enabled,
159288
159302
  isTaskListFullyCompleted: () => isTaskListFullyCompleted,
159303
+ isAutomaticPromptTask: () => isAutomaticPromptTask,
159289
159304
  inspectTaskListForGate: () => inspectTaskListForGate,
159290
159305
  getTasksDir: () => getTasksDir,
159291
159306
  getTaskPath: () => getTaskPath,
@@ -159305,7 +159320,10 @@ __export(exports_tasks, {
159305
159320
  TaskStatusSchema: () => TaskStatusSchema2,
159306
159321
  TaskSchema: () => TaskSchema2,
159307
159322
  TASK_STATUSES: () => TASK_STATUSES,
159308
- DEFAULT_TASKS_MODE_TASK_LIST_ID: () => DEFAULT_TASKS_MODE_TASK_LIST_ID
159323
+ DEFAULT_TASKS_MODE_TASK_LIST_ID: () => DEFAULT_TASKS_MODE_TASK_LIST_ID,
159324
+ AUTOMATIC_PROMPT_TASK_SUBJECT: () => AUTOMATIC_PROMPT_TASK_SUBJECT,
159325
+ AUTOMATIC_PROMPT_TASK_DESCRIPTION: () => AUTOMATIC_PROMPT_TASK_DESCRIPTION,
159326
+ AUTOMATIC_PROMPT_TASK_ACTIVE_FORM: () => AUTOMATIC_PROMPT_TASK_ACTIVE_FORM
159309
159327
  });
159310
159328
  import {
159311
159329
  mkdir as mkdir6,
@@ -159336,6 +159354,9 @@ function notifyTasksUpdated() {
159336
159354
  tasksUpdated.emit();
159337
159355
  } catch {}
159338
159356
  }
159357
+ function isAutomaticPromptTask(task) {
159358
+ return task.metadata?.[AUTOMATIC_PROMPT_TASK_KEY] === true;
159359
+ }
159339
159360
  function parseNumericTaskId(value) {
159340
159361
  if (!/^\d+$/u.test(value))
159341
159362
  return null;
@@ -159627,42 +159648,59 @@ async function createTaskForRun(taskListId, generationId, taskData, options2 = {
159627
159648
  await establishTaskListGenerationUnsafe(taskListId, generationId, options2);
159628
159649
  const existingTasks = await listTasks(taskListId);
159629
159650
  if (options2.replaceAutomaticPromptTask) {
159630
- const automaticTask = existingTasks.find((task2) => task2.metadata?.[AUTOMATIC_PROMPT_TASK_KEY] === true && task2.metadata?.[AUTOMATIC_PROMPT_GENERATION_KEY] === generationId);
159651
+ const automaticTask = existingTasks.find((task) => task.metadata?.[AUTOMATIC_PROMPT_TASK_KEY] === true && task.metadata?.[AUTOMATIC_PROMPT_GENERATION_KEY] === generationId);
159631
159652
  if (automaticTask) {
159632
- const replacement = adoptForwardTaskDependencies(automaticTask.id, taskData, existingTasks.filter((task2) => task2.id !== automaticTask.id));
159653
+ const replacement = adoptForwardTaskDependencies(automaticTask.id, taskData, existingTasks.filter((task) => task.id !== automaticTask.id));
159633
159654
  await writeTaskSnapshotUnsafe(taskListId, replacement);
159634
159655
  return automaticTask.id;
159635
159656
  }
159636
159657
  }
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;
159658
+ return allocateTaskSnapshotUnsafe(taskListId, taskData, existingTasks);
159645
159659
  });
159646
159660
  notifyTasksUpdated();
159647
159661
  return id;
159648
159662
  }
159649
- async function createAutomaticPromptTaskForRun(taskListId, generationId, prompt) {
159650
- const compact = prompt.replace(/\s+/gu, " ").trim() || "Handle user request";
159651
- const subject = compact.length <= 80 ? compact : `${compact.slice(0, 77).trimEnd()}...`;
159652
- 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
159663
+ async function createAutomaticPromptTaskForRun(taskListId, generationId, _prompt, options2 = {}) {
159664
+ const taskId = await withTaskListLock(taskListId, async () => {
159665
+ await establishTaskListGenerationUnsafe(taskListId, generationId, {
159666
+ appendToCurrent: options2.reuseExistingBoard
159667
+ });
159668
+ const existingTasks = await listTasks(taskListId);
159669
+ const resumableAutomaticTask = existingTasks.findLast((task) => task.metadata?.[AUTOMATIC_PROMPT_TASK_KEY] === true && (task.status === "pending" || task.status === "in_progress" || options2.reuseExistingBoard === true));
159670
+ if (resumableAutomaticTask) {
159671
+ await writeTaskSnapshotUnsafe(taskListId, {
159672
+ ...resumableAutomaticTask,
159673
+ subject: AUTOMATIC_PROMPT_TASK_SUBJECT,
159674
+ description: AUTOMATIC_PROMPT_TASK_DESCRIPTION,
159675
+ activeForm: AUTOMATIC_PROMPT_TASK_ACTIVE_FORM,
159676
+ status: "in_progress",
159677
+ metadata: {
159678
+ ...resumableAutomaticTask.metadata,
159679
+ [AUTOMATIC_PROMPT_TASK_KEY]: true,
159680
+ [AUTOMATIC_PROMPT_GENERATION_KEY]: generationId
159681
+ }
159682
+ });
159683
+ return resumableAutomaticTask.id;
159684
+ }
159685
+ if (hasUnfinishedWork(existingTasks) || options2.reuseExistingBoard === true && existingTasks.length > 0) {
159686
+ return;
159664
159687
  }
159665
- }, { appendToCurrent: true });
159688
+ return allocateTaskSnapshotUnsafe(taskListId, {
159689
+ subject: AUTOMATIC_PROMPT_TASK_SUBJECT,
159690
+ description: AUTOMATIC_PROMPT_TASK_DESCRIPTION,
159691
+ activeForm: AUTOMATIC_PROMPT_TASK_ACTIVE_FORM,
159692
+ status: "in_progress",
159693
+ owner: undefined,
159694
+ blocks: [],
159695
+ blockedBy: [],
159696
+ metadata: {
159697
+ [AUTOMATIC_PROMPT_TASK_KEY]: true,
159698
+ [AUTOMATIC_PROMPT_GENERATION_KEY]: generationId
159699
+ }
159700
+ }, existingTasks);
159701
+ });
159702
+ notifyTasksUpdated();
159703
+ return taskId;
159666
159704
  }
159667
159705
  async function finalizeAutomaticPromptTask(taskListId, taskId, generationId, status) {
159668
159706
  const task = await getTask(taskListId, taskId);
@@ -159683,6 +159721,16 @@ function adoptForwardTaskDependencies(id, taskData, existingTasks) {
159683
159721
  ]
159684
159722
  };
159685
159723
  }
159724
+ async function allocateTaskSnapshotUnsafe(taskListId, taskData, existingTasks) {
159725
+ const highestId = await findHighestTaskId(taskListId);
159726
+ if (highestId >= Number.MAX_SAFE_INTEGER) {
159727
+ throw new Error("Task ID space is exhausted");
159728
+ }
159729
+ const taskId = String(highestId + 1);
159730
+ const task = adoptForwardTaskDependencies(taskId, taskData, existingTasks);
159731
+ await writeTaskSnapshotUnsafe(taskListId, task);
159732
+ return taskId;
159733
+ }
159686
159734
  async function getTask(taskListId, taskId) {
159687
159735
  const path10 = getTaskPath(taskListId, taskId);
159688
159736
  try {
@@ -160241,7 +160289,7 @@ async function unassignTeammateTasks(teamName, teammateId, teammateName, reason)
160241
160289
  notificationMessage
160242
160290
  };
160243
160291
  }
160244
- var tasksUpdated, leaderTeamName, onTasksUpdated, TASK_STATUSES, TaskStatusSchema2, TaskSchema2, HIGH_WATER_MARK_FILE = ".highwatermark", ACTIVE_GENERATION_FILE = ".active-generation", HISTORY_DIRECTORY = ".history", HISTORY_MANIFEST_FILE = ".manifest.json", AUTOMATIC_PROMPT_TASK_KEY = "urAutomaticPromptTask", AUTOMATIC_PROMPT_GENERATION_KEY = "urPromptGeneration", LOCK_OPTIONS, DEFAULT_TASKS_MODE_TASK_LIST_ID = "tasklist";
160292
+ var tasksUpdated, leaderTeamName, onTasksUpdated, TASK_STATUSES, TaskStatusSchema2, TaskSchema2, HIGH_WATER_MARK_FILE = ".highwatermark", ACTIVE_GENERATION_FILE = ".active-generation", HISTORY_DIRECTORY = ".history", HISTORY_MANIFEST_FILE = ".manifest.json", AUTOMATIC_PROMPT_TASK_KEY = "urAutomaticPromptTask", AUTOMATIC_PROMPT_GENERATION_KEY = "urPromptGeneration", AUTOMATIC_PROMPT_TASK_SUBJECT = "Preparing task plan", AUTOMATIC_PROMPT_TASK_DESCRIPTION = "Temporary placeholder while the agent creates concrete tasks.", AUTOMATIC_PROMPT_TASK_ACTIVE_FORM = "Planning requested work", LOCK_OPTIONS, DEFAULT_TASKS_MODE_TASK_LIST_ID = "tasklist";
160245
160293
  var init_tasks = __esm(() => {
160246
160294
  init_v4();
160247
160295
  init_state();
@@ -250949,7 +250997,7 @@ function getTelemetryAttributes() {
250949
250997
  attributes["session.id"] = sessionId;
250950
250998
  }
250951
250999
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
250952
- attributes["app.version"] = "1.78.9";
251000
+ attributes["app.version"] = "1.78.11";
250953
251001
  }
250954
251002
  const oauthAccount = getOauthAccountInfo();
250955
251003
  if (oauthAccount) {
@@ -297456,7 +297504,7 @@ function getInstallationEnv() {
297456
297504
  return;
297457
297505
  }
297458
297506
  function getURCodeVersion() {
297459
- return "1.78.9";
297507
+ return "1.78.11";
297460
297508
  }
297461
297509
  async function getInstalledVSCodeExtensionVersion(command) {
297462
297510
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -304787,7 +304835,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
304787
304835
  const client2 = new Client({
304788
304836
  name: "ur",
304789
304837
  title: "UR",
304790
- version: "1.78.9",
304838
+ version: "1.78.11",
304791
304839
  description: "UR-Nexus autonomous engineering workflow engine",
304792
304840
  websiteUrl: PRODUCT_URL
304793
304841
  }, {
@@ -305147,7 +305195,7 @@ var init_client5 = __esm(() => {
305147
305195
  const client2 = new Client({
305148
305196
  name: "ur",
305149
305197
  title: "UR",
305150
- version: "1.78.9",
305198
+ version: "1.78.11",
305151
305199
  description: "UR-Nexus autonomous engineering workflow engine",
305152
305200
  websiteUrl: PRODUCT_URL
305153
305201
  }, {
@@ -317868,7 +317916,7 @@ async function createRuntime() {
317868
317916
  bootstrapTelemetry();
317869
317917
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
317870
317918
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
317871
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.78.9"
317919
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.78.11"
317872
317920
  }));
317873
317921
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
317874
317922
  resource,
@@ -317901,11 +317949,11 @@ async function createRuntime() {
317901
317949
  setMeterProvider(meterProvider);
317902
317950
  setLoggerProvider(loggerProvider);
317903
317951
  if (meterProvider) {
317904
- const meter = meterProvider.getMeter("ur-agent", "1.78.9");
317952
+ const meter = meterProvider.getMeter("ur-agent", "1.78.11");
317905
317953
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
317906
317954
  }
317907
317955
  if (loggerProvider) {
317908
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.78.9"));
317956
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.78.11"));
317909
317957
  }
317910
317958
  if (!cleanupRegistered2) {
317911
317959
  cleanupRegistered2 = true;
@@ -318567,9 +318615,9 @@ async function assertMinVersion() {
318567
318615
  if (false) {}
318568
318616
  try {
318569
318617
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
318570
- if (versionConfig.minVersion && lt("1.78.9", versionConfig.minVersion)) {
318618
+ if (versionConfig.minVersion && lt("1.78.11", versionConfig.minVersion)) {
318571
318619
  console.error(`
318572
- It looks like your version of UR (${"1.78.9"}) needs an update.
318620
+ It looks like your version of UR (${"1.78.11"}) needs an update.
318573
318621
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
318574
318622
 
318575
318623
  To update, please run:
@@ -318785,7 +318833,7 @@ async function installGlobalPackage(specificVersion) {
318785
318833
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
318786
318834
  logEvent("tengu_auto_updater_lock_contention", {
318787
318835
  pid: process.pid,
318788
- currentVersion: "1.78.9"
318836
+ currentVersion: "1.78.11"
318789
318837
  });
318790
318838
  return "in_progress";
318791
318839
  }
@@ -318794,7 +318842,7 @@ async function installGlobalPackage(specificVersion) {
318794
318842
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
318795
318843
  logError2(new Error("Windows NPM detected in WSL environment"));
318796
318844
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
318797
- currentVersion: "1.78.9"
318845
+ currentVersion: "1.78.11"
318798
318846
  });
318799
318847
  console.error(`
318800
318848
  Error: Windows NPM detected in WSL
@@ -319329,7 +319377,7 @@ function detectLinuxGlobPatternWarnings() {
319329
319377
  }
319330
319378
  async function getDoctorDiagnostic() {
319331
319379
  const installationType = await getCurrentInstallationType();
319332
- const version2 = typeof MACRO !== "undefined" ? "1.78.9" : "unknown";
319380
+ const version2 = typeof MACRO !== "undefined" ? "1.78.11" : "unknown";
319333
319381
  const installationPath = await getInstallationPath();
319334
319382
  const invokedBinary = getInvokedBinary();
319335
319383
  const multipleInstallations = await detectMultipleInstallations();
@@ -320264,8 +320312,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
320264
320312
  const maxVersion = await getMaxVersion();
320265
320313
  if (maxVersion && gt(version2, maxVersion)) {
320266
320314
  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`);
320315
+ if (gte("1.78.11", maxVersion)) {
320316
+ logForDebugging(`Native installer: current version ${"1.78.11"} is already at or above maxVersion ${maxVersion}, skipping update`);
320269
320317
  logEvent("tengu_native_update_skipped_max_version", {
320270
320318
  latency_ms: Date.now() - startTime,
320271
320319
  max_version: maxVersion,
@@ -320276,7 +320324,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
320276
320324
  version2 = maxVersion;
320277
320325
  }
320278
320326
  }
320279
- if (!forceReinstall && version2 === "1.78.9" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
320327
+ if (!forceReinstall && version2 === "1.78.11" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
320280
320328
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
320281
320329
  logEvent("tengu_native_update_complete", {
320282
320330
  latency_ms: Date.now() - startTime,
@@ -322976,6 +323024,21 @@ var init_ink3 = __esm(() => {
322976
323024
  init_agentColorManager();
322977
323025
  });
322978
323026
 
323027
+ // src/components/Spinner/taskLabel.ts
323028
+ function currentSpinnerTaskLabel(tasks) {
323029
+ const task = tasks?.find((candidate) => candidate.status === "in_progress");
323030
+ const label = (task?.activeForm || task?.subject || "").replace(/\s+/g, " ").trim();
323031
+ return label || null;
323032
+ }
323033
+ function fitSpinnerTaskLabel(label, maxWidth) {
323034
+ if (!label || maxWidth < 8)
323035
+ return null;
323036
+ return truncateToWidth(label, Math.min(48, maxWidth));
323037
+ }
323038
+ var init_taskLabel = __esm(() => {
323039
+ init_truncate();
323040
+ });
323041
+
322979
323042
  // src/components/Spinner/SpinnerAnimationRow.tsx
322980
323043
  function spinnerActivityStatus(mode) {
322981
323044
  switch (String(mode)) {
@@ -322999,6 +323062,7 @@ function SpinnerAnimationRow({
322999
323062
  hasActiveTools,
323000
323063
  responseLengthRef,
323001
323064
  message,
323065
+ taskLabel,
323002
323066
  messageColor,
323003
323067
  shimmerColor,
323004
323068
  overrideColor,
@@ -323046,9 +323110,12 @@ function SpinnerAnimationRow({
323046
323110
  let thinkingWidthValue = thinkingText ? stringWidth(thinkingText) : 0;
323047
323111
  const messageWidth = glimmerMessageWidth + 2;
323048
323112
  const sep13 = SEP_WIDTH;
323113
+ const taskWidthBudget = columns - messageWidth - thinkingWidthValue - 9;
323114
+ const visibleTaskLabel = fitSpinnerTaskLabel(taskLabel, taskWidthBudget);
323115
+ const taskSegmentWidth = visibleTaskLabel ? sep13 + stringWidth(visibleTaskLabel) : 0;
323049
323116
  const wantsThinking = true;
323050
323117
  const wantsTimerAndTokens = verbose || hasRunningTeammates || effectiveElapsedMs > SHOW_TOKENS_AFTER_MS;
323051
- const availableSpace = columns - messageWidth - 5;
323118
+ const availableSpace = columns - messageWidth - taskSegmentWidth - 5;
323052
323119
  let showThinking = wantsThinking;
323053
323120
  if (!showThinking && wantsThinking && thinkingStatus === "thinking" && effortSuffix) {
323054
323121
  if (availableSpace > THINKING_BARE_WIDTH) {
@@ -323090,7 +323157,7 @@ function SpinnerAnimationRow({
323090
323157
  children: thinkingOnly ? `(${thinkingText})` : thinkingText
323091
323158
  }, "thinking", false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime69.jsxDEV(ThemedText, {
323092
323159
  dimColor: true,
323093
- children: thinkingText
323160
+ children: thinkingOnly ? `(${thinkingText})` : thinkingText
323094
323161
  }, "thinking", false, undefined, this)] : []];
323095
323162
  const status = foregroundedTeammate && !foregroundedTeammate.isIdle ? /* @__PURE__ */ jsx_dev_runtime69.jsxDEV(jsx_dev_runtime69.Fragment, {
323096
323163
  children: [
@@ -323147,6 +323214,10 @@ function SpinnerAnimationRow({
323147
323214
  shimmerColor,
323148
323215
  stalledIntensity: overrideColor ? 0 : stalledIntensity
323149
323216
  }, undefined, false, undefined, this),
323217
+ visibleTaskLabel && /* @__PURE__ */ jsx_dev_runtime69.jsxDEV(ThemedText, {
323218
+ dimColor: true,
323219
+ children: `\xB7 ${visibleTaskLabel} `
323220
+ }, undefined, false, undefined, this),
323150
323221
  status
323151
323222
  ]
323152
323223
  }, undefined, true, undefined, this);
@@ -323202,6 +323273,7 @@ var init_SpinnerAnimationRow = __esm(() => {
323202
323273
  init_format2();
323203
323274
  init_ink3();
323204
323275
  init_Byline();
323276
+ init_taskLabel();
323205
323277
  init_GlimmerMessage();
323206
323278
  init_SpinnerGlyph();
323207
323279
  init_useStalledAnimation();
@@ -329027,10 +329099,10 @@ function SpinnerWithVerbInner({
329027
329099
  clearTimeout(clearStatusTimer);
329028
329100
  };
329029
329101
  }, [mode]);
329030
- const currentTodo = tasksV2?.find((task) => task.status !== "pending" && task.status !== "completed");
329102
+ const currentTaskLabel = currentSpinnerTaskLabel(tasksV2);
329031
329103
  const nextTask = findNextPendingTask(tasksV2);
329032
329104
  const [randomVerb] = import_react59.useState(() => sample_default(getSpinnerVerbs()));
329033
- const leaderVerb = overrideMessage ?? currentTodo?.activeForm ?? currentTodo?.subject ?? randomVerb;
329105
+ const leaderVerb = overrideMessage ?? randomVerb;
329034
329106
  const effectiveVerb = foregroundedTeammate && !foregroundedTeammate.isIdle ? foregroundedTeammate.spinnerVerb ?? randomVerb : leaderVerb;
329035
329107
  const message = effectiveVerb + "\u2026";
329036
329108
  import_react59.useEffect(() => {
@@ -329139,6 +329211,7 @@ function SpinnerWithVerbInner({
329139
329211
  hasActiveTools,
329140
329212
  responseLengthRef,
329141
329213
  message,
329214
+ taskLabel: !foregroundedTeammate ? currentTaskLabel : null,
329142
329215
  messageColor,
329143
329216
  shimmerColor,
329144
329217
  overrideColor,
@@ -329354,6 +329427,7 @@ var init_Spinner2 = __esm(() => {
329354
329427
  init_stringWidth();
329355
329428
  init_Spinner();
329356
329429
  init_SpinnerAnimationRow();
329430
+ init_taskLabel();
329357
329431
  init_useSettings();
329358
329432
  init_InProcessTeammateTask();
329359
329433
  init_effort();
@@ -379812,8 +379886,14 @@ function requestsContinueCurrentTaskList(input) {
379812
379886
  return false;
379813
379887
  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
379888
  }
379889
+ function requestsRevisionOfCurrentTaskList(input) {
379890
+ const normalized = input.replace(/\s+/gu, " ").trim().toLowerCase();
379891
+ if (!normalized || normalized.length > 500)
379892
+ return false;
379893
+ return /^(?:no|also|and|but|actually|instead|still|again|not yet|(?:it|this|that)\s+still)\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);
379894
+ }
379815
379895
  function shouldKeepCurrentTaskList(input) {
379816
- return requestsAppendToCurrentTaskList(input) || requestsContinueCurrentTaskList(input);
379896
+ return requestsAppendToCurrentTaskList(input) || requestsContinueCurrentTaskList(input) || requestsRevisionOfCurrentTaskList(input);
379817
379897
  }
379818
379898
  function getTaskListRunForCommand(command, options2 = {}) {
379819
379899
  if (!command || command.mode !== "prompt" || command.isMeta)
@@ -390082,7 +390162,7 @@ function isAnyTracingEnabled() {
390082
390162
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
390083
390163
  }
390084
390164
  function getTracer() {
390085
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.78.9");
390165
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.78.11");
390086
390166
  }
390087
390167
  function createSpanAttributes(spanType, customAttributes = {}) {
390088
390168
  const baseAttributes = getTelemetryAttributes();
@@ -420371,7 +420451,7 @@ function Feedback({
420371
420451
  platform: env2.platform,
420372
420452
  gitRepo: envInfo.isGit,
420373
420453
  terminal: env2.terminal,
420374
- version: "1.78.9",
420454
+ version: "1.78.11",
420375
420455
  transcript: normalizeMessagesForAPI(messages),
420376
420456
  errors: sanitizedErrors,
420377
420457
  lastApiRequest: getLastAPIRequest(),
@@ -420563,7 +420643,7 @@ function Feedback({
420563
420643
  ", ",
420564
420644
  env2.terminal,
420565
420645
  ", v",
420566
- "1.78.9"
420646
+ "1.78.11"
420567
420647
  ]
420568
420648
  }, undefined, true, undefined, this)
420569
420649
  ]
@@ -420669,7 +420749,7 @@ ${sanitizedDescription}
420669
420749
  ` + `**Environment Info**
420670
420750
  ` + `- Platform: ${env2.platform}
420671
420751
  ` + `- Terminal: ${env2.terminal}
420672
- ` + `- Version: ${"1.78.9"}
420752
+ ` + `- Version: ${"1.78.11"}
420673
420753
  ` + `- Feedback ID: ${feedbackId}
420674
420754
  ` + `
420675
420755
  **Errors**
@@ -423779,7 +423859,7 @@ function buildPrimarySection() {
423779
423859
  }, undefined, false, undefined, this);
423780
423860
  return [{
423781
423861
  label: "Version",
423782
- value: "1.78.9"
423862
+ value: "1.78.11"
423783
423863
  }, {
423784
423864
  label: "Session name",
423785
423865
  value: nameValue
@@ -427161,7 +427241,7 @@ function Config({
427161
427241
  }
427162
427242
  }, undefined, false, undefined, this)
427163
427243
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
427164
- currentVersion: "1.78.9",
427244
+ currentVersion: "1.78.11",
427165
427245
  onChoice: (choice) => {
427166
427246
  setShowSubmenu(null);
427167
427247
  setTabsHidden(false);
@@ -427173,7 +427253,7 @@ function Config({
427173
427253
  autoUpdatesChannel: "stable"
427174
427254
  };
427175
427255
  if (choice === "stay") {
427176
- newSettings.minimumVersion = "1.78.9";
427256
+ newSettings.minimumVersion = "1.78.11";
427177
427257
  }
427178
427258
  updateSettingsForSource("userSettings", newSettings);
427179
427259
  setSettingsData((prev_27) => ({
@@ -435237,7 +435317,7 @@ function HelpV2(t0) {
435237
435317
  let t6;
435238
435318
  if ($2[31] !== tabs) {
435239
435319
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
435240
- title: `UR v${"1.78.9"}`,
435320
+ title: `UR v${"1.78.11"}`,
435241
435321
  color: "professionalBlue",
435242
435322
  defaultTab: "general",
435243
435323
  children: tabs
@@ -436170,7 +436250,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
436170
436250
  async function handleInitialize(options2) {
436171
436251
  return {
436172
436252
  name: "UR",
436173
- version: "1.78.9",
436253
+ version: "1.78.11",
436174
436254
  protocolVersion: "0.1.0",
436175
436255
  workspaceRoot: options2.cwd,
436176
436256
  capabilities: {
@@ -453278,7 +453358,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
453278
453358
  return [];
453279
453359
  }
453280
453360
  }
453281
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.78.9") {
453361
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.78.11") {
453282
453362
  if (process.env.USER_TYPE === "ant") {
453283
453363
  const changelog = "";
453284
453364
  if (changelog) {
@@ -453305,7 +453385,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.78.9")
453305
453385
  releaseNotes
453306
453386
  };
453307
453387
  }
453308
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.78.9") {
453388
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.78.11") {
453309
453389
  if (process.env.USER_TYPE === "ant") {
453310
453390
  const changelog = "";
453311
453391
  if (changelog) {
@@ -455900,6 +455980,45 @@ var init_groupToolUses = __esm(() => {
455900
455980
  GROUPING_CACHE = new WeakMap;
455901
455981
  });
455902
455982
 
455983
+ // src/utils/messagePresentation.ts
455984
+ function sourceMessageKey(message) {
455985
+ const id = message.message?.id;
455986
+ if (id)
455987
+ return `id:${id}`;
455988
+ if (message.uuid)
455989
+ return `uuid:${message.uuid.slice(0, 24)}`;
455990
+ return null;
455991
+ }
455992
+ function isToolExecutionBlock(block2) {
455993
+ return block2?.type === "tool_use" || block2?.type?.endsWith("_tool_use") === true;
455994
+ }
455995
+ function dropIntermediateToolNarration(messages) {
455996
+ const sourcesWithToolExecution = new Set;
455997
+ for (const message of messages) {
455998
+ if (message.type !== "assistant")
455999
+ continue;
456000
+ if (!message.message?.content?.some(isToolExecutionBlock))
456001
+ continue;
456002
+ const key = sourceMessageKey(message);
456003
+ if (key)
456004
+ sourcesWithToolExecution.add(key);
456005
+ }
456006
+ if (sourcesWithToolExecution.size === 0)
456007
+ return [...messages];
456008
+ return messages.filter((message) => {
456009
+ if (message.type !== "assistant" || message.isApiErrorMessage)
456010
+ return true;
456011
+ if (message.message?.content?.length !== 1 || message.message.content[0]?.type !== "text") {
456012
+ return true;
456013
+ }
456014
+ const key = sourceMessageKey(message);
456015
+ return key === null || !sourcesWithToolExecution.has(key);
456016
+ });
456017
+ }
456018
+ function shouldShowLiveAssistantDraft(isTranscriptMode, verbose) {
456019
+ return isTranscriptMode || verbose;
456020
+ }
456021
+
455903
456022
  // src/utils/transcriptSearch.ts
455904
456023
  function memoryContentSearchText(memories) {
455905
456024
  if (!Array.isArray(memories)) {
@@ -456171,7 +456290,7 @@ function getRecentActivitySync() {
456171
456290
  return cachedActivity;
456172
456291
  }
456173
456292
  function getLogoDisplayData() {
456174
- const version2 = process.env.DEMO_VERSION ?? "1.78.9";
456293
+ const version2 = process.env.DEMO_VERSION ?? "1.78.11";
456175
456294
  const serverUrl = getDirectConnectServerUrl();
456176
456295
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
456177
456296
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -457038,7 +457157,7 @@ function LogoV2() {
457038
457157
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
457039
457158
  t2 = () => {
457040
457159
  const currentConfig2 = getGlobalConfig();
457041
- if (currentConfig2.lastReleaseNotesSeen === "1.78.9") {
457160
+ if (currentConfig2.lastReleaseNotesSeen === "1.78.11") {
457042
457161
  return;
457043
457162
  }
457044
457163
  saveGlobalConfig(_temp325);
@@ -457723,12 +457842,12 @@ function LogoV2() {
457723
457842
  return t41;
457724
457843
  }
457725
457844
  function _temp325(current) {
457726
- if (current.lastReleaseNotesSeen === "1.78.9") {
457845
+ if (current.lastReleaseNotesSeen === "1.78.11") {
457727
457846
  return current;
457728
457847
  }
457729
457848
  return {
457730
457849
  ...current,
457731
- lastReleaseNotesSeen: "1.78.9"
457850
+ lastReleaseNotesSeen: "1.78.11"
457732
457851
  };
457733
457852
  }
457734
457853
  function _temp241(s_0) {
@@ -460659,7 +460778,8 @@ var import_compiler_runtime187, React76, import_react150, jsx_dev_runtime251, Lo
460659
460778
  const compactAwareMessages = verbose || isFullscreenEnvEnabled() ? normalizedMessages : getMessagesAfterCompactBoundary(normalizedMessages, {
460660
460779
  includeSnipped: true
460661
460780
  });
460662
- const messagesToShowNotTruncated = reorderMessagesInUI(compactAwareMessages.filter((msg_2) => msg_2.type !== "progress").filter((msg_3) => !isNullRenderingAttachment(msg_3)).filter((_) => shouldShowUserMessage(_, isTranscriptMode)), syntheticStreamingToolUseMessages);
460781
+ const presentationMessages = !isTranscriptMode && !verbose && !disableRenderCap ? dropIntermediateToolNarration(compactAwareMessages) : compactAwareMessages;
460782
+ const messagesToShowNotTruncated = reorderMessagesInUI(presentationMessages.filter((msg_2) => msg_2.type !== "progress").filter((msg_3) => !isNullRenderingAttachment(msg_3)).filter((_) => shouldShowUserMessage(_, isTranscriptMode)), syntheticStreamingToolUseMessages);
460663
460783
  const briefToolNames = [BRIEF_TOOL_NAME4, SEND_USER_FILE_TOOL_NAME2].filter((n2) => n2 !== null);
460664
460784
  const dropTextToolNames = [BRIEF_TOOL_NAME4].filter((n_0) => n_0 !== null);
460665
460785
  const briefFiltered = briefToolNames.length > 0 && !isTranscriptMode ? isBriefOnly ? filterForBriefTool(messagesToShowNotTruncated, briefToolNames) : dropTextToolNames.length > 0 ? dropTextInBriefTurns(messagesToShowNotTruncated, dropTextToolNames) : messagesToShowNotTruncated : messagesToShowNotTruncated;
@@ -460677,7 +460797,7 @@ var import_compiler_runtime187, React76, import_react150, jsx_dev_runtime251, Lo
460677
460797
  hasTruncatedMessages,
460678
460798
  hiddenMessageCount
460679
460799
  };
460680
- }, [verbose, normalizedMessages, isTranscriptMode, syntheticStreamingToolUseMessages, shouldTruncate, tools, isBriefOnly]);
460800
+ }, [verbose, normalizedMessages, isTranscriptMode, syntheticStreamingToolUseMessages, shouldTruncate, tools, isBriefOnly, disableRenderCap]);
460681
460801
  const renderableMessages = import_react150.useMemo(() => {
460682
460802
  const capApplies = !virtualScrollRuntimeGate && !disableRenderCap;
460683
460803
  const sliceStart = capApplies ? computeSliceStart(collapsed_0, sliceAnchorRef) : 0;
@@ -460838,9 +460958,9 @@ var import_compiler_runtime187, React76, import_react150, jsx_dev_runtime251, Lo
460838
460958
  extractSearchText
460839
460959
  }, undefined, false, undefined, this)
460840
460960
  }, undefined, false, undefined, this) : renderableMessages.flatMap(renderMessageRow),
460841
- streamingText && !isBriefOnly && /* @__PURE__ */ jsx_dev_runtime251.jsxDEV(StreamingAssistantTextMessage, {
460961
+ streamingText && !isBriefOnly && shouldShowLiveAssistantDraft(isTranscriptMode, verbose) && /* @__PURE__ */ jsx_dev_runtime251.jsxDEV(StreamingAssistantTextMessage, {
460842
460962
  text: streamingText,
460843
- showFull: isTranscriptMode || verbose
460963
+ showFull: true
460844
460964
  }, undefined, false, undefined, this),
460845
460965
  isStreamingThinkingVisible && streamingThinking && !isBriefOnly && /* @__PURE__ */ jsx_dev_runtime251.jsxDEV(ThemedBox_default, {
460846
460966
  marginTop: 1,
@@ -474564,7 +474684,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
474564
474684
  if (spec.name !== specName) {
474565
474685
  throw new Error("Agentic CI workflow spec name does not match");
474566
474686
  }
474567
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.78.9" : "1.78.9");
474687
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.78.11" : "1.78.11");
474568
474688
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
474569
474689
  throw new Error("invalid ur-agent package version");
474570
474690
  }
@@ -475557,7 +475677,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
475557
475677
  path: ".github/workflows/ur.yml",
475558
475678
  root: "project",
475559
475679
  content: compileAgenticCiWorkflow("default", {
475560
- packageVersion: typeof MACRO !== "undefined" ? "1.78.9" : "1.78.9"
475680
+ packageVersion: typeof MACRO !== "undefined" ? "1.78.11" : "1.78.11"
475561
475681
  })
475562
475682
  },
475563
475683
  {
@@ -475620,7 +475740,7 @@ function value(tokens, flag) {
475620
475740
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
475621
475741
  }
475622
475742
  function cliVersion() {
475623
- return typeof MACRO !== "undefined" ? "1.78.9" : "1.78.9";
475743
+ return typeof MACRO !== "undefined" ? "1.78.11" : "1.78.11";
475624
475744
  }
475625
475745
  function workflowPath(cwd2) {
475626
475746
  return join159(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -481476,7 +481596,7 @@ function createAcpStdioApp(deps) {
481476
481596
  }
481477
481597
  },
481478
481598
  authMethods: [],
481479
- agentInfo: { name: "UR-Nexus", version: "1.78.9" }
481599
+ agentInfo: { name: "UR-Nexus", version: "1.78.11" }
481480
481600
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
481481
481601
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
481482
481602
  await runtime2.announce({
@@ -481573,7 +481693,7 @@ function createAcpStdioAgent(deps) {
481573
481693
  }
481574
481694
  },
481575
481695
  authMethods: [],
481576
- agentInfo: { name: "UR-Nexus", version: "1.78.9" }
481696
+ agentInfo: { name: "UR-Nexus", version: "1.78.11" }
481577
481697
  });
481578
481698
  return;
481579
481699
  case "authenticate":
@@ -505204,7 +505324,7 @@ var init_code_index2 = __esm(() => {
505204
505324
 
505205
505325
  // node_modules/typescript/lib/typescript.js
505206
505326
  var require_typescript3 = __commonJS((exports, module) => {
505207
- var __dirname = "/Users/maith/Desktop/ur3-dev/UR-1.65.0/node_modules/typescript/lib", __filename = "/Users/maith/Desktop/ur3-dev/UR-1.65.0/node_modules/typescript/lib/typescript.js";
505327
+ var __dirname = "/home/runner/work/UR/UR/node_modules/typescript/lib", __filename = "/home/runner/work/UR/UR/node_modules/typescript/lib/typescript.js";
505208
505328
  /*! *****************************************************************************
505209
505329
  Copyright (c) Microsoft Corporation. All rights reserved.
505210
505330
  Licensed under the Apache License, Version 2.0 (the "License"); you may not use
@@ -691195,7 +691315,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
691195
691315
  smapsRollup,
691196
691316
  platform: process.platform,
691197
691317
  nodeVersion: process.version,
691198
- ccVersion: "1.78.9"
691318
+ ccVersion: "1.78.11"
691199
691319
  };
691200
691320
  }
691201
691321
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -691775,7 +691895,7 @@ var init_bridge_kick = __esm(() => {
691775
691895
  var call154 = async () => {
691776
691896
  return {
691777
691897
  type: "text",
691778
- value: "1.78.9"
691898
+ value: "1.78.11"
691779
691899
  };
691780
691900
  }, version2, version_default;
691781
691901
  var init_version = __esm(() => {
@@ -703042,7 +703162,7 @@ function generateHtmlReport(data, insights) {
703042
703162
  </html>`;
703043
703163
  }
703044
703164
  function buildExportData(data, insights, facets, remoteStats) {
703045
- const version3 = typeof MACRO !== "undefined" ? "1.78.9" : "unknown";
703165
+ const version3 = typeof MACRO !== "undefined" ? "1.78.11" : "unknown";
703046
703166
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
703047
703167
  const facets_summary = {
703048
703168
  total: facets.size,
@@ -707356,7 +707476,7 @@ var init_sessionStorage = __esm(() => {
707356
707476
  init_settings2();
707357
707477
  init_slowOperations();
707358
707478
  init_uuid();
707359
- VERSION7 = typeof MACRO !== "undefined" ? "1.78.9" : "unknown";
707479
+ VERSION7 = typeof MACRO !== "undefined" ? "1.78.11" : "unknown";
707360
707480
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
707361
707481
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
707362
707482
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -708571,7 +708691,7 @@ var init_filesystem = __esm(() => {
708571
708691
  });
708572
708692
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
708573
708693
  const nonce = randomBytes20(16).toString("hex");
708574
- return join232(getURTempDir(), "bundled-skills", "1.78.9", nonce);
708694
+ return join232(getURTempDir(), "bundled-skills", "1.78.11", nonce);
708575
708695
  });
708576
708696
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
708577
708697
  });
@@ -714946,7 +715066,7 @@ function computeFingerprint(messageText2, version3) {
714946
715066
  }
714947
715067
  function computeFingerprintFromMessages(messages) {
714948
715068
  const firstMessageText = extractFirstMessageText(messages);
714949
- return computeFingerprint(firstMessageText, "1.78.9");
715069
+ return computeFingerprint(firstMessageText, "1.78.11");
714950
715070
  }
714951
715071
  var FINGERPRINT_SALT = "59cf53e54c78";
714952
715072
  var init_fingerprint = () => {};
@@ -716868,7 +716988,7 @@ async function sideQuery(opts) {
716868
716988
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
716869
716989
  }
716870
716990
  const messageText2 = extractFirstUserMessageText(messages);
716871
- const fingerprint2 = computeFingerprint(messageText2, "1.78.9");
716991
+ const fingerprint2 = computeFingerprint(messageText2, "1.78.11");
716872
716992
  const attributionHeader = getAttributionHeader(fingerprint2);
716873
716993
  const systemBlocks = [
716874
716994
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -721705,7 +721825,7 @@ function buildSystemInitMessage(inputs) {
721705
721825
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
721706
721826
  apiKeySource: getURHQApiKeyWithSource().source,
721707
721827
  betas: getSdkBetas(),
721708
- ur_version: "1.78.9",
721828
+ ur_version: "1.78.11",
721709
721829
  output_style: outputStyle2,
721710
721830
  agents: inputs.agents.map((agent2) => agent2.agentType),
721711
721831
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -735577,7 +735697,7 @@ var init_useVoiceEnabled = __esm(() => {
735577
735697
  function getSemverPart(version3) {
735578
735698
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
735579
735699
  }
735580
- function useUpdateNotification(updatedVersion, initialVersion = "1.78.9") {
735700
+ function useUpdateNotification(updatedVersion, initialVersion = "1.78.11") {
735581
735701
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react224.useState(() => getSemverPart(initialVersion));
735582
735702
  if (!updatedVersion) {
735583
735703
  return null;
@@ -735626,7 +735746,7 @@ function AutoUpdater({
735626
735746
  return;
735627
735747
  }
735628
735748
  if (false) {}
735629
- const currentVersion = "1.78.9";
735749
+ const currentVersion = "1.78.11";
735630
735750
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
735631
735751
  let latestVersion = await getLatestVersion(channel);
735632
735752
  const isDisabled = isAutoUpdaterDisabled();
@@ -735855,12 +735975,12 @@ function NativeAutoUpdater({
735855
735975
  logEvent("tengu_native_auto_updater_start", {});
735856
735976
  try {
735857
735977
  const maxVersion = await getMaxVersion();
735858
- if (maxVersion && gt("1.78.9", maxVersion)) {
735978
+ if (maxVersion && gt("1.78.11", maxVersion)) {
735859
735979
  const msg = await getMaxVersionMessage();
735860
735980
  setMaxVersionIssue(msg ?? "affects your version");
735861
735981
  }
735862
735982
  const result = await installLatest(channel);
735863
- const currentVersion = "1.78.9";
735983
+ const currentVersion = "1.78.11";
735864
735984
  const latencyMs = Date.now() - startTime;
735865
735985
  if (result.lockFailed) {
735866
735986
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -735997,17 +736117,17 @@ function PackageManagerAutoUpdater(t0) {
735997
736117
  const maxVersion = await getMaxVersion();
735998
736118
  if (maxVersion && latest && gt(latest, maxVersion)) {
735999
736119
  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`);
736120
+ if (gte("1.78.11", maxVersion)) {
736121
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.78.11"} is already at or above maxVersion ${maxVersion}, skipping update`);
736002
736122
  setUpdateAvailable(false);
736003
736123
  return;
736004
736124
  }
736005
736125
  latest = maxVersion;
736006
736126
  }
736007
- const hasUpdate = latest && !gte("1.78.9", latest) && !shouldSkipVersion(latest);
736127
+ const hasUpdate = latest && !gte("1.78.11", latest) && !shouldSkipVersion(latest);
736008
736128
  setUpdateAvailable(!!hasUpdate);
736009
736129
  if (hasUpdate) {
736010
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.78.9"} -> ${latest}`);
736130
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.78.11"} -> ${latest}`);
736011
736131
  }
736012
736132
  };
736013
736133
  $2[0] = t1;
@@ -736041,7 +736161,7 @@ function PackageManagerAutoUpdater(t0) {
736041
736161
  wrap: "truncate",
736042
736162
  children: [
736043
736163
  "currentVersion: ",
736044
- "1.78.9"
736164
+ "1.78.11"
736045
736165
  ]
736046
736166
  }, undefined, true, undefined, this);
736047
736167
  $2[3] = verbose;
@@ -746841,7 +746961,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
746841
746961
  project_dir: getOriginalCwd(),
746842
746962
  added_dirs: addedDirs
746843
746963
  },
746844
- version: "1.78.9",
746964
+ version: "1.78.11",
746845
746965
  output_style: {
746846
746966
  name: outputStyleName
746847
746967
  },
@@ -746976,7 +747096,7 @@ function StatusLineInner({
746976
747096
  const attention = customStatusError ?? taskAttention;
746977
747097
  const terminalSize = React133.useContext(TerminalSizeContext);
746978
747098
  const defaultStatusLineText = buildDefaultStatusBar({
746979
- version: "1.78.9",
747099
+ version: "1.78.11",
746980
747100
  providerLabel: providerRuntime.providerLabel,
746981
747101
  authMode: providerRuntime.authLabel,
746982
747102
  model: renderModelName(mainLoopModel) || providerRuntime.model || "",
@@ -753489,6 +753609,17 @@ function useMoreRight(_args) {
753489
753609
  };
753490
753610
  }
753491
753611
 
753612
+ // src/components/Spinner/activityVisibility.ts
753613
+ function shouldShowActivityRow({
753614
+ toolAllowsActivity,
753615
+ hasBlockingPrompt,
753616
+ hasActiveWork,
753617
+ pendingWorkerRequest,
753618
+ onlySleepToolActive
753619
+ }) {
753620
+ return toolAllowsActivity && !hasBlockingPrompt && hasActiveWork && !pendingWorkerRequest && !onlySleepToolActive;
753621
+ }
753622
+
753492
753623
  // src/utils/cleanup.ts
753493
753624
  import * as fs12 from "fs/promises";
753494
753625
  import { homedir as homedir39 } from "os";
@@ -756210,11 +756341,14 @@ async function executeUserInput(params) {
756210
756341
  appendToCurrent: taskListRun.appendToCurrent
756211
756342
  });
756212
756343
  if (!requestsContinueCurrentTaskList(primaryCommandText)) {
756213
- automaticPromptTask = {
756214
- taskListId,
756215
- taskId: await createAutomaticPromptTaskForRun(taskListId, taskListRun.generationId, primaryCommandText),
756216
- generationId: taskListRun.generationId
756217
- };
756344
+ const taskId = await createAutomaticPromptTaskForRun(taskListId, taskListRun.generationId, primaryCommandText, { reuseExistingBoard: taskListRun.appendToCurrent });
756345
+ if (taskId) {
756346
+ automaticPromptTask = {
756347
+ taskListId,
756348
+ taskId,
756349
+ generationId: taskListRun.generationId
756350
+ };
756351
+ }
756218
756352
  }
756219
756353
  }
756220
756354
  for (let i3 = 0;i3 < commands.length; i3++) {
@@ -756965,6 +757099,9 @@ function getTaskStatusCounts(tasks2, unresolvedIds) {
756965
757099
  }
756966
757100
  return counts;
756967
757101
  }
757102
+ function isTaskPlanningPlaceholder(tasks2) {
757103
+ return tasks2.length === 1 && isAutomaticPromptTask(tasks2[0]);
757104
+ }
756968
757105
  function TaskListV2({
756969
757106
  tasks: tasks2,
756970
757107
  isStandalone = false
@@ -757019,6 +757156,22 @@ function TaskListV2({
757019
757156
  if (tasks2.length === 0) {
757020
757157
  return null;
757021
757158
  }
757159
+ if (isTaskPlanningPlaceholder(tasks2)) {
757160
+ const planningState = /* @__PURE__ */ jsx_dev_runtime431.jsxDEV(ThemedText, {
757161
+ dimColor: true,
757162
+ children: [
757163
+ figures_default.ellipsis,
757164
+ " Planning tasks"
757165
+ ]
757166
+ }, undefined, true, undefined, this);
757167
+ return isStandalone ? /* @__PURE__ */ jsx_dev_runtime431.jsxDEV(ThemedBox_default, {
757168
+ marginTop: 1,
757169
+ marginLeft: 2,
757170
+ children: planningState
757171
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime431.jsxDEV(ThemedBox_default, {
757172
+ children: planningState
757173
+ }, undefined, false, undefined, this);
757174
+ }
757022
757175
  const teammateColors = {};
757023
757176
  if (isAgentSwarmsEnabled() && teamContext?.teammates) {
757024
757177
  for (const teammate of Object.values(teamContext.teammates)) {
@@ -759284,7 +759437,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
759284
759437
  } catch {}
759285
759438
  const data = {
759286
759439
  trigger: trigger2,
759287
- version: "1.78.9",
759440
+ version: "1.78.11",
759288
759441
  platform: process.platform,
759289
759442
  transcript,
759290
759443
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -767873,7 +768026,13 @@ function REPL({
767873
768026
  setInputValue,
767874
768027
  setToolJSX
767875
768028
  });
767876
- const showSpinner = (!toolJSX || toolJSX.showSpinner === true) && toolUseConfirmQueue.length === 0 && promptQueue.length === 0 && (isLoading || userInputOnProcessing || hasRunningTeammates || getCommandQueueLength() > 0) && !pendingWorkerRequest && !onlySleepToolActive && (!visibleStreamingText || isBriefOnly);
768029
+ const showSpinner = shouldShowActivityRow({
768030
+ toolAllowsActivity: !toolJSX || toolJSX.showSpinner === true,
768031
+ hasBlockingPrompt: toolUseConfirmQueue.length > 0 || promptQueue.length > 0,
768032
+ hasActiveWork: Boolean(isLoading || userInputOnProcessing || hasRunningTeammates || getCommandQueueLength() > 0),
768033
+ pendingWorkerRequest: Boolean(pendingWorkerRequest),
768034
+ onlySleepToolActive
768035
+ });
767877
768036
  const hasActivePrompt = toolUseConfirmQueue.length > 0 || promptQueue.length > 0 || sandboxPermissionRequestQueue.length > 0 || elicitation.queue.length > 0 || workerSandboxPermissions.queue.length > 0;
767878
768037
  const feedbackSurveyOriginal = useFeedbackSurvey(messages, isLoading, submitCount, "session", hasActivePrompt);
767879
768038
  const skillImprovementSurvey = useSkillImprovementSurvey(setMessages);
@@ -771658,7 +771817,7 @@ function WelcomeV2() {
771658
771817
  dimColor: true,
771659
771818
  children: [
771660
771819
  "v",
771661
- "1.78.9"
771820
+ "1.78.11"
771662
771821
  ]
771663
771822
  }, undefined, true, undefined, this)
771664
771823
  ]
@@ -772918,7 +773077,7 @@ function completeOnboarding() {
772918
773077
  saveGlobalConfig((current) => ({
772919
773078
  ...current,
772920
773079
  hasCompletedOnboarding: true,
772921
- lastOnboardingVersion: "1.78.9"
773080
+ lastOnboardingVersion: "1.78.11"
772922
773081
  }));
772923
773082
  }
772924
773083
  function showDialog(root2, renderer) {
@@ -777962,7 +778121,7 @@ function appendToLog(path24, message) {
777962
778121
  cwd: getFsImplementation().cwd(),
777963
778122
  userType: process.env.USER_TYPE,
777964
778123
  sessionId: getSessionId(),
777965
- version: "1.78.9"
778124
+ version: "1.78.11"
777966
778125
  };
777967
778126
  getLogWriter(path24).write(messageWithTimestamp);
777968
778127
  }
@@ -782121,8 +782280,8 @@ async function getEnvLessBridgeConfig() {
782121
782280
  }
782122
782281
  async function checkEnvLessBridgeMinVersion() {
782123
782282
  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.
782283
+ if (cfg.min_version && lt("1.78.11", cfg.min_version)) {
782284
+ return `Your version of UR (${"1.78.11"}) is too old for Remote Control.
782126
782285
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
782127
782286
  }
782128
782287
  return null;
@@ -782596,7 +782755,7 @@ async function initBridgeCore(params) {
782596
782755
  const rawApi = createBridgeApiClient({
782597
782756
  baseUrl,
782598
782757
  getAccessToken,
782599
- runnerVersion: "1.78.9",
782758
+ runnerVersion: "1.78.11",
782600
782759
  onDebug: logForDebugging,
782601
782760
  onAuth401,
782602
782761
  getTrustedDeviceToken
@@ -792069,7 +792228,7 @@ function getAgUiCapabilities() {
792069
792228
  name: "UR-Nexus",
792070
792229
  type: "ur-nexus",
792071
792230
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
792072
- version: "1.78.9",
792231
+ version: "1.78.11",
792073
792232
  provider: "UR",
792074
792233
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
792075
792234
  },
@@ -793209,7 +793368,7 @@ function createMCPServer(cwd4, debug2, verbose) {
793209
793368
  };
793210
793369
  const server2 = new Server({
793211
793370
  name: "ur-nexus",
793212
- version: "1.78.9"
793371
+ version: "1.78.11"
793213
793372
  }, {
793214
793373
  capabilities: {
793215
793374
  tools: {}
@@ -794367,7 +794526,7 @@ function thrownResponse(error40) {
794367
794526
  }
794368
794527
  async function createUrMcp2026Runtime(options4) {
794369
794528
  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: {} });
794529
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.78.11" }, { capabilities: {} });
794371
794530
  const [clientTransport, serverTransport] = createLinkedTransportPair();
794372
794531
  try {
794373
794532
  await server2.connect(serverTransport);
@@ -794378,7 +794537,7 @@ async function createUrMcp2026Runtime(options4) {
794378
794537
  }
794379
794538
  const runtime2 = new Mcp2026Runtime({
794380
794539
  cwd: options4.cwd,
794381
- version: "1.78.9",
794540
+ version: "1.78.11",
794382
794541
  backend: {
794383
794542
  listTools: async () => {
794384
794543
  const listed = await client2.listTools();
@@ -796519,7 +796678,7 @@ async function update() {
796519
796678
  logEvent("tengu_update_check", {});
796520
796679
  const diagnostic2 = await getDoctorDiagnostic();
796521
796680
  const result = await checkUpgradeStatus({
796522
- currentVersion: "1.78.9",
796681
+ currentVersion: "1.78.11",
796523
796682
  packageName: UR_AGENT_PACKAGE_NAME,
796524
796683
  installationType: diagnostic2.installationType,
796525
796684
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -797835,7 +797994,7 @@ ${customInstructions}` : customInstructions;
797835
797994
  }
797836
797995
  }
797837
797996
  logForDiagnosticsNoPII("info", "started", {
797838
- version: "1.78.9",
797997
+ version: "1.78.11",
797839
797998
  is_native_binary: isInBundledMode()
797840
797999
  });
797841
798000
  registerCleanup(async () => {
@@ -798621,7 +798780,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
798621
798780
  pendingHookMessages
798622
798781
  }, renderAndRun);
798623
798782
  }
798624
- }).version("1.78.9 (UR-Nexus)", "-v, --version", "Output the version number");
798783
+ }).version("1.78.11 (UR-Nexus)", "-v, --version", "Output the version number");
798625
798784
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
798626
798785
  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
798786
  if (canUserConfigureAdvisor()) {
@@ -799673,7 +799832,7 @@ if (false) {}
799673
799832
  async function main2() {
799674
799833
  const args = process.argv.slice(2);
799675
799834
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
799676
- console.log(`${"1.78.9"} (UR-Nexus)`);
799835
+ console.log(`${"1.78.11"} (UR-Nexus)`);
799677
799836
  return;
799678
799837
  }
799679
799838
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {