ur-agent 1.76.7 → 1.76.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
@@ -87800,7 +87800,7 @@ function normalizeAskUserQuestionInput(value) {
87800
87800
  ...commonFields
87801
87801
  };
87802
87802
  }
87803
- return null;
87803
+ return input;
87804
87804
  }
87805
87805
  if (Array.isArray(input.questions)) {
87806
87806
  const normalized = input.questions.map((entry, index2) => normalizeQuestionInput(entry, index2)).filter((entry) => entry !== null && typeof entry === "object");
@@ -87810,7 +87810,7 @@ function normalizeAskUserQuestionInput(value) {
87810
87810
  ...commonFields
87811
87811
  };
87812
87812
  }
87813
- return null;
87813
+ return input;
87814
87814
  }
87815
87815
  if (optionsField(input) !== null) {
87816
87816
  const singleQuestion = normalizeQuestionInput(input, 0);
@@ -87821,7 +87821,7 @@ function normalizeAskUserQuestionInput(value) {
87821
87821
  };
87822
87822
  }
87823
87823
  }
87824
- return null;
87824
+ return input;
87825
87825
  }
87826
87826
  function AskUserQuestionResultMessage(t0) {
87827
87827
  const $2 = import_compiler_runtime17.c(3);
@@ -89879,13 +89879,15 @@ async function* readOllamaChunks(response, controller, timeoutMs, options) {
89879
89879
  const reader = response.body.getReader();
89880
89880
  const decoder = new TextDecoder;
89881
89881
  let buffer = "";
89882
- const deadline = timeoutMs > 0 ? Date.now() + timeoutMs : Infinity;
89882
+ const nextDeadline = () => timeoutMs > 0 ? Date.now() + timeoutMs : Infinity;
89883
+ let deadline = nextDeadline();
89883
89884
  try {
89884
89885
  while (true) {
89885
89886
  const { done, value } = await readWithDeadline(reader, deadline, controller, options);
89886
89887
  if (done) {
89887
89888
  break;
89888
89889
  }
89890
+ deadline = nextDeadline();
89889
89891
  buffer += decoder.decode(value, { stream: true });
89890
89892
  let newlineIndex = buffer.indexOf(`
89891
89893
  `);
@@ -90463,7 +90465,7 @@ function withStreamIdleTimeout(source, idleMs, onTimeout) {
90463
90465
  }
90464
90466
  });
90465
90467
  }
90466
- var DEFAULT_STREAM_IDLE_TIMEOUT_MS = 60000, StreamIdleTimeoutError;
90468
+ var DEFAULT_STREAM_IDLE_TIMEOUT_MS = 300000, StreamIdleTimeoutError;
90467
90469
  var init_streamIdleTimeout = __esm(() => {
90468
90470
  StreamIdleTimeoutError = class StreamIdleTimeoutError extends Error {
90469
90471
  idleMs;
@@ -90498,6 +90500,12 @@ function parseNonNegativeInteger(value) {
90498
90500
  function getProviderRequestTimeoutMs(override) {
90499
90501
  return parsePositiveInteger(override) ?? parsePositiveInteger(process.env.API_TIMEOUT_MS) ?? parsePositiveInteger(process.env.UR_API_TIMEOUT_MS) ?? parsePositiveInteger(getInitialSettings().provider?.timeoutMs) ?? DEFAULT_PROVIDER_REQUEST_TIMEOUT_MS;
90500
90502
  }
90503
+ function getProviderStreamTimeoutMs(override) {
90504
+ const explicit = parsePositiveInteger(override) ?? parsePositiveInteger(process.env.UR_STREAM_REQUEST_TIMEOUT_MS) ?? parsePositiveInteger(getInitialSettings().provider?.streamTimeoutMs);
90505
+ if (explicit !== undefined)
90506
+ return explicit;
90507
+ return Math.max(DEFAULT_PROVIDER_STREAM_TIMEOUT_MS, getProviderRequestTimeoutMs());
90508
+ }
90501
90509
  function normalizeProviderMaxRetries(value) {
90502
90510
  const parsed = parseNonNegativeInteger(value);
90503
90511
  if (parsed === undefined)
@@ -90644,7 +90652,7 @@ async function waitForResponseBody(response, signal) {
90644
90652
  }
90645
90653
  }
90646
90654
  async function fetchWithProviderReliability(input, init, options) {
90647
- const timeoutMs = getProviderRequestTimeoutMs(options.timeoutMs);
90655
+ const timeoutMs = options.streaming ? getProviderStreamTimeoutMs(options.timeoutMs) : getProviderRequestTimeoutMs(options.timeoutMs);
90648
90656
  const fetchImpl = options.fetch ?? fetch;
90649
90657
  return withProviderRetry(async () => {
90650
90658
  const timeout = createTimeoutSignal(options.signal, timeoutMs);
@@ -90685,7 +90693,7 @@ async function fetchWithProviderReliability(input, init, options) {
90685
90693
  }, options);
90686
90694
  }
90687
90695
  async function axiosPostWithProviderReliability(url3, body, config2, options = {}) {
90688
- const timeout = getProviderRequestTimeoutMs(options.timeoutMs);
90696
+ const timeout = options.streaming ? getProviderStreamTimeoutMs(options.timeoutMs) : getProviderRequestTimeoutMs(options.timeoutMs);
90689
90697
  return withProviderRetry(() => axios_default.post(url3, body, {
90690
90698
  ...config2,
90691
90699
  timeout,
@@ -90726,7 +90734,7 @@ function normalizeProviderEndpoint(baseUrl, defaultBaseUrl, finalSegment) {
90726
90734
  }
90727
90735
  return url3.toString().replace(/\/$/, "");
90728
90736
  }
90729
- var DEFAULT_PROVIDER_REQUEST_TIMEOUT_MS = 120000, DEFAULT_PROVIDER_MAX_RETRIES = 3, DEFAULT_RETRY_BASE_DELAY_MS = 250, RETRYABLE_STATUSES, NON_RETRYABLE_STATUSES, TRANSIENT_NETWORK_CODES, ProviderHTTPError, ProviderTimeoutError;
90737
+ var DEFAULT_PROVIDER_REQUEST_TIMEOUT_MS = 120000, DEFAULT_PROVIDER_STREAM_TIMEOUT_MS = 900000, DEFAULT_PROVIDER_MAX_RETRIES = 3, DEFAULT_RETRY_BASE_DELAY_MS = 250, RETRYABLE_STATUSES, NON_RETRYABLE_STATUSES, TRANSIENT_NETWORK_CODES, ProviderHTTPError, ProviderTimeoutError;
90730
90738
  var init_providerHttp = __esm(() => {
90731
90739
  init_axios2();
90732
90740
  init_settings2();
@@ -90973,6 +90981,10 @@ async function* streamOpenAIEvents(body, options) {
90973
90981
  }
90974
90982
  };
90975
90983
  for await (const payload of readSSEData(body, options.signal)) {
90984
+ if (payload === SSE_KEEPALIVE) {
90985
+ yield { type: "ping" };
90986
+ continue;
90987
+ }
90976
90988
  if (payload === "[DONE]") {
90977
90989
  sawDone = true;
90978
90990
  break;
@@ -91187,6 +91199,10 @@ async function* streamOpenAIResponsesEvents(body, options) {
91187
91199
  };
91188
91200
  };
91189
91201
  for await (const payload of readSSEData(body, options.signal)) {
91202
+ if (payload === SSE_KEEPALIVE) {
91203
+ yield { type: "ping" };
91204
+ continue;
91205
+ }
91190
91206
  if (payload === "[DONE]")
91191
91207
  break;
91192
91208
  const event = parseJSONPayload(payload, `${providerName} SSE event`);
@@ -91339,11 +91355,19 @@ async function* streamAnthropicEvents(body, options) {
91339
91355
  const toolIds = new Set;
91340
91356
  const streamedToolInputs = new Map;
91341
91357
  for await (const payload of readSSEData(body, options.signal)) {
91358
+ if (payload === SSE_KEEPALIVE) {
91359
+ yield { type: "ping" };
91360
+ continue;
91361
+ }
91342
91362
  if (payload === "[DONE]")
91343
91363
  break;
91344
91364
  const event = parseJSONPayload(payload, `${providerName} SSE event`);
91345
- if (!event || event.type === "ping")
91365
+ if (!event)
91366
+ continue;
91367
+ if (event.type === "ping") {
91368
+ yield { type: "ping" };
91346
91369
  continue;
91370
+ }
91347
91371
  throwProviderPayloadError(event, providerName);
91348
91372
  if (!sawMessageStart && event.type !== "message_start") {
91349
91373
  sawMessageStart = true;
@@ -91510,6 +91534,10 @@ async function* streamGeminiEvents(body, options) {
91510
91534
  yield { type: "content_block_stop", index: currentIndex };
91511
91535
  };
91512
91536
  for await (const payload of readSSEData(body, options.signal)) {
91537
+ if (payload === SSE_KEEPALIVE) {
91538
+ yield { type: "ping" };
91539
+ continue;
91540
+ }
91513
91541
  if (payload === "[DONE]")
91514
91542
  break;
91515
91543
  const parsed = parseJSONPayload(payload, `${providerName} SSE chunk`);
@@ -91628,6 +91656,7 @@ async function* readSSEData(body, signal) {
91628
91656
  let buffer = "";
91629
91657
  for await (const chunk of readTextChunks(body, signal)) {
91630
91658
  buffer += chunk;
91659
+ let emitted = false;
91631
91660
  while (true) {
91632
91661
  const delimiter = findSSEDelimiter(buffer);
91633
91662
  if (!delimiter)
@@ -91635,9 +91664,13 @@ async function* readSSEData(body, signal) {
91635
91664
  const rawEvent = buffer.slice(0, delimiter.index);
91636
91665
  buffer = buffer.slice(delimiter.index + delimiter.length);
91637
91666
  const data = parseSSEEvent(rawEvent);
91638
- if (data !== undefined)
91667
+ if (data !== undefined) {
91668
+ emitted = true;
91639
91669
  yield data;
91670
+ }
91640
91671
  }
91672
+ if (!emitted)
91673
+ yield SSE_KEEPALIVE;
91641
91674
  }
91642
91675
  if (buffer.trim()) {
91643
91676
  const data = parseSSEEvent(buffer);
@@ -91845,7 +91878,7 @@ function canonicalJson(value) {
91845
91878
  }
91846
91879
  return JSON.stringify(value);
91847
91880
  }
91848
- var EMPTY_USAGE;
91881
+ var EMPTY_USAGE, SSE_KEEPALIVE = "\x00ur:sse-keepalive";
91849
91882
  var init_streamingAdapters = __esm(() => {
91850
91883
  init_providerClient();
91851
91884
  init_json();
@@ -92788,7 +92821,8 @@ async function createOpenRouterClient(options) {
92788
92821
  }, {
92789
92822
  maxRetries,
92790
92823
  timeoutMs: requestOptions?.timeoutMs,
92791
- signal
92824
+ signal,
92825
+ streaming: true
92792
92826
  });
92793
92827
  const requestId = response.headers?.["x-request-id"] ?? `openrouter-${randomUUID7()}`;
92794
92828
  return {
@@ -94046,7 +94080,8 @@ async function createStandardAPIClient(options) {
94046
94080
  }, {
94047
94081
  maxRetries,
94048
94082
  timeoutMs: requestOptions?.timeoutMs,
94049
- signal
94083
+ signal,
94084
+ streaming: true
94050
94085
  });
94051
94086
  const requestId = providerRequestId(family, response.headers) ?? `${family}-${randomUUID10()}`;
94052
94087
  const streamOptions = {
@@ -107465,7 +107500,7 @@ var init_auth = __esm(() => {
107465
107500
 
107466
107501
  // src/utils/userAgent.ts
107467
107502
  function getURCodeUserAgent() {
107468
- return `ur/${"1.76.7"}`;
107503
+ return `ur/${"1.76.10"}`;
107469
107504
  }
107470
107505
 
107471
107506
  // src/utils/workloadContext.ts
@@ -107487,7 +107522,7 @@ function getUserAgent() {
107487
107522
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
107488
107523
  const workload = getWorkload();
107489
107524
  const workloadSuffix = workload ? `, workload/${workload}` : "";
107490
- return `ur-cli/${"1.76.7"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
107525
+ return `ur-cli/${"1.76.10"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
107491
107526
  }
107492
107527
  function getMCPUserAgent() {
107493
107528
  const parts = [];
@@ -107501,7 +107536,7 @@ function getMCPUserAgent() {
107501
107536
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
107502
107537
  }
107503
107538
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
107504
- return `ur/${"1.76.7"}${suffix}`;
107539
+ return `ur/${"1.76.10"}${suffix}`;
107505
107540
  }
107506
107541
  function getWebFetchUserAgent() {
107507
107542
  return `UR-User (${getURCodeUserAgent()})`;
@@ -107639,7 +107674,7 @@ var init_user = __esm(() => {
107639
107674
  deviceId,
107640
107675
  sessionId: getSessionId(),
107641
107676
  email: getEmail(),
107642
- appVersion: "1.76.7",
107677
+ appVersion: "1.76.10",
107643
107678
  platform: getHostPlatformForAnalytics(),
107644
107679
  organizationUuid,
107645
107680
  accountUuid,
@@ -115526,7 +115561,7 @@ var init_metadata = __esm(() => {
115526
115561
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
115527
115562
  WHITESPACE_REGEX = /\s+/;
115528
115563
  getVersionBase = memoize_default(() => {
115529
- const match = "1.76.7".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
115564
+ const match = "1.76.10".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
115530
115565
  return match ? match[0] : undefined;
115531
115566
  });
115532
115567
  buildEnvContext = memoize_default(async () => {
@@ -115566,7 +115601,7 @@ var init_metadata = __esm(() => {
115566
115601
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
115567
115602
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
115568
115603
  isURAiAuth: isURAISubscriber(),
115569
- version: "1.76.7",
115604
+ version: "1.76.10",
115570
115605
  versionBase: getVersionBase(),
115571
115606
  buildTime: "",
115572
115607
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -116236,7 +116271,7 @@ function initialize1PEventLogging() {
116236
116271
  const platform2 = getPlatform();
116237
116272
  const attributes = {
116238
116273
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
116239
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.76.7"
116274
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.76.10"
116240
116275
  };
116241
116276
  if (platform2 === "wsl") {
116242
116277
  const wslVersion = getWslVersion();
@@ -116264,7 +116299,7 @@ function initialize1PEventLogging() {
116264
116299
  })
116265
116300
  ]
116266
116301
  });
116267
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.76.7");
116302
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.76.10");
116268
116303
  }
116269
116304
  async function reinitialize1PEventLoggingIfConfigChanged() {
116270
116305
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -118714,6 +118749,7 @@ var init_types2 = __esm(() => {
118714
118749
  model: exports_external.string().optional().describe("Selected model name for the active provider"),
118715
118750
  baseUrl: exports_external.string().optional().describe("Provider base URL without embedded credentials"),
118716
118751
  timeoutMs: exports_external.number().int().positive().optional().describe("Provider HTTP request timeout in milliseconds. Defaults to 120000."),
118752
+ streamTimeoutMs: exports_external.number().int().positive().optional().describe("How long a streaming request may wait for response headers, in milliseconds. Defaults to 900000; mid-stream liveness is governed by the inactivity watchdog."),
118717
118753
  commandPath: exports_external.string().optional().describe("Explicit official CLI executable path for subscription providers"),
118718
118754
  fallback: exports_external.union([exports_external.enum(PROVIDER_SETTING_IDS), exports_external.literal("disabled")]).optional().describe("Optional recovery provider shown by provider diagnostics; switching is always explicit"),
118719
118755
  openaiTransport: exports_external.enum(["chat-completions", "responses"]).optional().describe("OpenAI API transport. Defaults to chat-completions; Responses is explicit opt-in."),
@@ -126045,7 +126081,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
126045
126081
  function formatA2AAgentCard(options = {}, pretty = true) {
126046
126082
  return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
126047
126083
  }
126048
- var urVersion = "1.76.7", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
126084
+ var urVersion = "1.76.10", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
126049
126085
  var init_trends = __esm(() => {
126050
126086
  init_a2aCardSignature();
126051
126087
  coverage = [
@@ -128848,7 +128884,7 @@ function getAttributionHeader(fingerprint) {
128848
128884
  if (!isAttributionHeaderEnabled()) {
128849
128885
  return "";
128850
128886
  }
128851
- const version2 = `${"1.76.7"}.${fingerprint}`;
128887
+ const version2 = `${"1.76.10"}.${fingerprint}`;
128852
128888
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
128853
128889
  const cch = "";
128854
128890
  const workload = getWorkload();
@@ -156847,7 +156883,7 @@ var init_projectSafety = __esm(() => {
156847
156883
  function getInstruments() {
156848
156884
  if (instruments)
156849
156885
  return instruments;
156850
- const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.76.7");
156886
+ const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.76.10");
156851
156887
  instruments = {
156852
156888
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
156853
156889
  description: "GenAI operation duration.",
@@ -156945,7 +156981,7 @@ function genAiAgentAttributes() {
156945
156981
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
156946
156982
  "gen_ai.provider.name": "ur",
156947
156983
  "gen_ai.agent.name": "UR-Nexus",
156948
- "gen_ai.agent.version": "1.76.7"
156984
+ "gen_ai.agent.version": "1.76.10"
156949
156985
  };
156950
156986
  }
156951
156987
  function genAiWorkflowAttributes(workflowName) {
@@ -156961,7 +156997,7 @@ function genAiWorkflowAttributes(workflowName) {
156961
156997
  function startGenAiWorkflowSpan(workflowName) {
156962
156998
  const attributes = genAiWorkflowAttributes(workflowName);
156963
156999
  const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
156964
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.76.7").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
157000
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.76.10").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
156965
157001
  }
156966
157002
  function endGenAiWorkflowSpan(span, options2 = {}) {
156967
157003
  try {
@@ -156999,7 +157035,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
156999
157035
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
157000
157036
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
157001
157037
  }
157002
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.76.7").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
157038
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.76.10").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
157003
157039
  }
157004
157040
  function endGenAiMemorySpan(span, options2 = {}) {
157005
157041
  try {
@@ -200758,7 +200794,7 @@ var require_color_convert = __commonJS((exports, module) => {
200758
200794
  module.exports = convert;
200759
200795
  });
200760
200796
 
200761
- // node_modules/cli-highlight/node_modules/ansi-styles/index.js
200797
+ // node_modules/cli-highlight/node_modules/chalk/node_modules/ansi-styles/index.js
200762
200798
  var require_ansi_styles = __commonJS((exports, module) => {
200763
200799
  var wrapAnsi163 = (fn, offset) => (...args) => {
200764
200800
  const code = fn(...args);
@@ -250647,7 +250683,7 @@ function getTelemetryAttributes() {
250647
250683
  attributes["session.id"] = sessionId;
250648
250684
  }
250649
250685
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
250650
- attributes["app.version"] = "1.76.7";
250686
+ attributes["app.version"] = "1.76.10";
250651
250687
  }
250652
250688
  const oauthAccount = getOauthAccountInfo();
250653
250689
  if (oauthAccount) {
@@ -259139,21 +259175,39 @@ async function* all3(generators, concurrencyCap = Infinity) {
259139
259175
  };
259140
259176
  const waiting = [...generators];
259141
259177
  const promises = new Set;
259142
- while (promises.size < concurrencyCap && waiting.length > 0) {
259143
- const gen = waiting.shift();
259144
- promises.add(next(gen));
259145
- }
259146
- while (promises.size > 0) {
259147
- const { done, value, generator, promise: promise2 } = await Promise.race(promises);
259148
- promises.delete(promise2);
259149
- if (!done) {
259150
- promises.add(next(generator));
259151
- if (value !== undefined) {
259152
- yield value;
259178
+ const running = new Set;
259179
+ const start = (generator) => {
259180
+ running.add(generator);
259181
+ promises.add(next(generator));
259182
+ };
259183
+ try {
259184
+ while (promises.size < concurrencyCap && waiting.length > 0) {
259185
+ start(waiting.shift());
259186
+ }
259187
+ while (promises.size > 0) {
259188
+ const { done, value, generator, promise: promise2 } = await Promise.race(promises);
259189
+ promises.delete(promise2);
259190
+ if (!done) {
259191
+ promises.add(next(generator));
259192
+ if (value !== undefined) {
259193
+ yield value;
259194
+ }
259195
+ } else {
259196
+ running.delete(generator);
259197
+ if (waiting.length > 0) {
259198
+ start(waiting.shift());
259199
+ }
259153
259200
  }
259154
- } else if (waiting.length > 0) {
259155
- const nextGen = waiting.shift();
259156
- promises.add(next(nextGen));
259201
+ }
259202
+ } finally {
259203
+ for (const generator of running) {
259204
+ generator.return(undefined).catch(() => {});
259205
+ }
259206
+ for (const generator of waiting) {
259207
+ generator.return(undefined).catch(() => {});
259208
+ }
259209
+ for (const promise2 of promises) {
259210
+ promise2.catch(() => {});
259157
259211
  }
259158
259212
  }
259159
259213
  }
@@ -259176,11 +259230,16 @@ var init_generators = __esm(() => {
259176
259230
 
259177
259231
  // src/services/tools/toolOrchestration.ts
259178
259232
  function getMaxToolUseConcurrency() {
259179
- const configured = Number.parseInt(process.env.UR_CODE_MAX_TOOL_USE_CONCURRENCY ?? "", 10);
259180
- if (!Number.isFinite(configured) || configured < 1) {
259181
- return DEFAULT_MAX_TOOL_USE_CONCURRENCY;
259233
+ for (const raw of [
259234
+ process.env.UR_CODE_MAX_TOOL_USE_CONCURRENCY,
259235
+ process.env.UR_MAX_CONCURRENT_TOOLS
259236
+ ]) {
259237
+ const configured = Number.parseInt(raw ?? "", 10);
259238
+ if (Number.isFinite(configured) && configured >= 1) {
259239
+ return Math.min(configured, HARD_MAX_TOOL_USE_CONCURRENCY);
259240
+ }
259182
259241
  }
259183
- return Math.min(configured, HARD_MAX_TOOL_USE_CONCURRENCY);
259242
+ return DEFAULT_MAX_TOOL_USE_CONCURRENCY;
259184
259243
  }
259185
259244
  function assistantMessageContainsToolUse(message, toolUseId) {
259186
259245
  const content = message.message?.content;
@@ -297131,7 +297190,7 @@ function getInstallationEnv() {
297131
297190
  return;
297132
297191
  }
297133
297192
  function getURCodeVersion() {
297134
- return "1.76.7";
297193
+ return "1.76.10";
297135
297194
  }
297136
297195
  async function getInstalledVSCodeExtensionVersion(command) {
297137
297196
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -304462,7 +304521,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
304462
304521
  const client2 = new Client({
304463
304522
  name: "ur",
304464
304523
  title: "UR",
304465
- version: "1.76.7",
304524
+ version: "1.76.10",
304466
304525
  description: "UR-Nexus autonomous engineering workflow engine",
304467
304526
  websiteUrl: PRODUCT_URL
304468
304527
  }, {
@@ -304822,7 +304881,7 @@ var init_client5 = __esm(() => {
304822
304881
  const client2 = new Client({
304823
304882
  name: "ur",
304824
304883
  title: "UR",
304825
- version: "1.76.7",
304884
+ version: "1.76.10",
304826
304885
  description: "UR-Nexus autonomous engineering workflow engine",
304827
304886
  websiteUrl: PRODUCT_URL
304828
304887
  }, {
@@ -317375,7 +317434,7 @@ async function createRuntime() {
317375
317434
  bootstrapTelemetry();
317376
317435
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
317377
317436
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
317378
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.76.7"
317437
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.76.10"
317379
317438
  }));
317380
317439
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
317381
317440
  resource,
@@ -317408,11 +317467,11 @@ async function createRuntime() {
317408
317467
  setMeterProvider(meterProvider);
317409
317468
  setLoggerProvider(loggerProvider);
317410
317469
  if (meterProvider) {
317411
- const meter = meterProvider.getMeter("ur-agent", "1.76.7");
317470
+ const meter = meterProvider.getMeter("ur-agent", "1.76.10");
317412
317471
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
317413
317472
  }
317414
317473
  if (loggerProvider) {
317415
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.76.7"));
317474
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.76.10"));
317416
317475
  }
317417
317476
  if (!cleanupRegistered2) {
317418
317477
  cleanupRegistered2 = true;
@@ -318074,9 +318133,9 @@ async function assertMinVersion() {
318074
318133
  if (false) {}
318075
318134
  try {
318076
318135
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
318077
- if (versionConfig.minVersion && lt("1.76.7", versionConfig.minVersion)) {
318136
+ if (versionConfig.minVersion && lt("1.76.10", versionConfig.minVersion)) {
318078
318137
  console.error(`
318079
- It looks like your version of UR (${"1.76.7"}) needs an update.
318138
+ It looks like your version of UR (${"1.76.10"}) needs an update.
318080
318139
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
318081
318140
 
318082
318141
  To update, please run:
@@ -318292,7 +318351,7 @@ async function installGlobalPackage(specificVersion) {
318292
318351
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
318293
318352
  logEvent("tengu_auto_updater_lock_contention", {
318294
318353
  pid: process.pid,
318295
- currentVersion: "1.76.7"
318354
+ currentVersion: "1.76.10"
318296
318355
  });
318297
318356
  return "in_progress";
318298
318357
  }
@@ -318301,7 +318360,7 @@ async function installGlobalPackage(specificVersion) {
318301
318360
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
318302
318361
  logError2(new Error("Windows NPM detected in WSL environment"));
318303
318362
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
318304
- currentVersion: "1.76.7"
318363
+ currentVersion: "1.76.10"
318305
318364
  });
318306
318365
  console.error(`
318307
318366
  Error: Windows NPM detected in WSL
@@ -318836,7 +318895,7 @@ function detectLinuxGlobPatternWarnings() {
318836
318895
  }
318837
318896
  async function getDoctorDiagnostic() {
318838
318897
  const installationType = await getCurrentInstallationType();
318839
- const version2 = typeof MACRO !== "undefined" ? "1.76.7" : "unknown";
318898
+ const version2 = typeof MACRO !== "undefined" ? "1.76.10" : "unknown";
318840
318899
  const installationPath = await getInstallationPath();
318841
318900
  const invokedBinary = getInvokedBinary();
318842
318901
  const multipleInstallations = await detectMultipleInstallations();
@@ -319771,8 +319830,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
319771
319830
  const maxVersion = await getMaxVersion();
319772
319831
  if (maxVersion && gt(version2, maxVersion)) {
319773
319832
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
319774
- if (gte("1.76.7", maxVersion)) {
319775
- logForDebugging(`Native installer: current version ${"1.76.7"} is already at or above maxVersion ${maxVersion}, skipping update`);
319833
+ if (gte("1.76.10", maxVersion)) {
319834
+ logForDebugging(`Native installer: current version ${"1.76.10"} is already at or above maxVersion ${maxVersion}, skipping update`);
319776
319835
  logEvent("tengu_native_update_skipped_max_version", {
319777
319836
  latency_ms: Date.now() - startTime,
319778
319837
  max_version: maxVersion,
@@ -319783,7 +319842,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
319783
319842
  version2 = maxVersion;
319784
319843
  }
319785
319844
  }
319786
- if (!forceReinstall && version2 === "1.76.7" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
319845
+ if (!forceReinstall && version2 === "1.76.10" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
319787
319846
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
319788
319847
  logEvent("tengu_native_update_complete", {
319789
319848
  latency_ms: Date.now() - startTime,
@@ -340957,16 +341016,8 @@ async function* runAgent({
340957
341016
  }
340958
341017
  if (message.type === "attachment") {
340959
341018
  if (message.attachment.type === "max_turns_reached") {
340960
- logForDebugging(`[Agent
340961
- : $
340962
- {
340963
- agentDefinition.agentType
340964
- }
340965
- ] Reached max turns limit ($
340966
- {
340967
- message.attachment.maxTurns
340968
- }
340969
- )`);
341019
+ logForDebugging(`[Agent: ${agentDefinition.agentType}] Reached max turns limit (${message.attachment.maxTurns})`);
341020
+ yield message;
340970
341021
  break;
340971
341022
  }
340972
341023
  yield message;
@@ -365348,8 +365399,43 @@ function stripTrailingWhitespace(str2) {
365348
365399
  }
365349
365400
  return result;
365350
365401
  }
365402
+ function foldInvisibleChars(line) {
365403
+ return line.normalize("NFC").replace(EXOTIC_SPACES, " ").replace(ZERO_WIDTH, "");
365404
+ }
365351
365405
  function normalizeLineForMatch(line) {
365352
- return line.replaceAll("\t", " ").replace(/\s+$/, "");
365406
+ return foldInvisibleChars(line).replaceAll("\t", " ").replace(/\s+$/, "");
365407
+ }
365408
+ function lineBody(line) {
365409
+ return normalizeLineForMatch(line).trimStart();
365410
+ }
365411
+ function indentWidth(line) {
365412
+ const normalized = normalizeLineForMatch(line);
365413
+ return normalized.length - normalized.trimStart().length;
365414
+ }
365415
+ function shiftIndentation(text, columns) {
365416
+ if (columns === 0)
365417
+ return text;
365418
+ return text.split(`
365419
+ `).map((line) => {
365420
+ if (line.trim() === "")
365421
+ return line;
365422
+ if (columns > 0)
365423
+ return " ".repeat(columns) + line;
365424
+ const removable = line.length - line.trimStart().length;
365425
+ return line.slice(Math.min(-columns, removable));
365426
+ }).join(`
365427
+ `);
365428
+ }
365429
+ function stripLineNumberPrefixes(searchString) {
365430
+ const lines = searchString.split(`
365431
+ `);
365432
+ const meaningful = lines.filter((line) => line.trim() !== "");
365433
+ if (meaningful.length === 0)
365434
+ return null;
365435
+ if (!meaningful.every((line) => LINE_NUMBER_PREFIX.test(line)))
365436
+ return null;
365437
+ return lines.map((line) => line.replace(LINE_NUMBER_PREFIX, "")).join(`
365438
+ `);
365353
365439
  }
365354
365440
  function findActualStringWhitespaceTolerant(fileContent, searchString) {
365355
365441
  const searchLines = searchString.split(`
@@ -365382,17 +365468,110 @@ function findActualStringWhitespaceTolerant(fileContent, searchString) {
365382
365468
  }
365383
365469
  return null;
365384
365470
  }
365385
- function findActualString(fileContent, searchString) {
365471
+ function findActualStringIndentTolerant(fileContent, searchString) {
365472
+ const searchLines = searchString.split(`
365473
+ `);
365474
+ const fileLines = fileContent.split(`
365475
+ `);
365476
+ if (searchLines.length === 0 || searchLines.length > fileLines.length) {
365477
+ return null;
365478
+ }
365479
+ const searchBodies = searchLines.map(lineBody);
365480
+ const firstBody = searchBodies[0];
365481
+ if (searchBodies.every((body) => body === ""))
365482
+ return null;
365483
+ for (let start = 0;start <= fileLines.length - searchLines.length; start++) {
365484
+ if (lineBody(fileLines[start]) !== firstBody)
365485
+ continue;
365486
+ let shift = null;
365487
+ let match = true;
365488
+ for (let j2 = 0;j2 < searchLines.length; j2++) {
365489
+ const fileLine = fileLines[start + j2];
365490
+ const searchBody = searchBodies[j2];
365491
+ if (lineBody(fileLine) !== searchBody) {
365492
+ match = false;
365493
+ break;
365494
+ }
365495
+ if (searchBody === "")
365496
+ continue;
365497
+ const lineShift = indentWidth(fileLine) - indentWidth(searchLines[j2]);
365498
+ if (shift === null) {
365499
+ shift = lineShift;
365500
+ } else if (shift !== lineShift) {
365501
+ match = false;
365502
+ break;
365503
+ }
365504
+ }
365505
+ if (match && shift !== null && shift !== 0) {
365506
+ return {
365507
+ actual: fileLines.slice(start, start + searchLines.length).join(`
365508
+ `),
365509
+ indentShift: shift
365510
+ };
365511
+ }
365512
+ }
365513
+ return null;
365514
+ }
365515
+ function findEditTarget(fileContent, searchString) {
365386
365516
  if (fileContent.includes(searchString)) {
365387
- return searchString;
365517
+ return { actual: searchString, indentShift: 0 };
365388
365518
  }
365389
365519
  const normalizedSearch = normalizeQuotes(searchString);
365390
365520
  const normalizedFile = normalizeQuotes(fileContent);
365391
365521
  const searchIndex = normalizedFile.indexOf(normalizedSearch);
365392
365522
  if (searchIndex !== -1) {
365393
- return fileContent.substring(searchIndex, searchIndex + searchString.length);
365523
+ return {
365524
+ actual: fileContent.substring(searchIndex, searchIndex + searchString.length),
365525
+ indentShift: 0
365526
+ };
365527
+ }
365528
+ const whitespaceMatch = findActualStringWhitespaceTolerant(fileContent, searchString);
365529
+ if (whitespaceMatch !== null) {
365530
+ return { actual: whitespaceMatch, indentShift: 0 };
365531
+ }
365532
+ const indentMatch = findActualStringIndentTolerant(fileContent, searchString);
365533
+ if (indentMatch !== null) {
365534
+ return indentMatch;
365535
+ }
365536
+ const withoutPrefixes = stripLineNumberPrefixes(searchString);
365537
+ if (withoutPrefixes !== null && withoutPrefixes !== searchString) {
365538
+ return findEditTarget(fileContent, withoutPrefixes);
365539
+ }
365540
+ return null;
365541
+ }
365542
+ function findActualString(fileContent, searchString) {
365543
+ return findEditTarget(fileContent, searchString)?.actual ?? null;
365544
+ }
365545
+ function describeEditMatchFailure(fileContent, searchString) {
365546
+ const searchLines = searchString.split(`
365547
+ `);
365548
+ const firstSearchLine = searchLines.find((line) => line.trim() !== "");
365549
+ if (firstSearchLine === undefined) {
365550
+ return "String to replace not found in file. The string is blank.";
365551
+ }
365552
+ const fileLines = fileContent.split(`
365553
+ `);
365554
+ const anchorBody = lineBody(firstSearchLine);
365555
+ const anchors = fileLines.map((line, index2) => ({ line, index: index2 })).filter((entry) => lineBody(entry.line) === anchorBody);
365556
+ if (anchors.length === 0) {
365557
+ return "String to replace not found in file. No line in the file matches its " + `first line: ${JSON.stringify(firstSearchLine.trim())}. Read the file ` + "again and copy the target text from the current contents.";
365394
365558
  }
365395
- return findActualStringWhitespaceTolerant(fileContent, searchString);
365559
+ const anchor = anchors[0];
365560
+ const offset = searchLines.indexOf(firstSearchLine);
365561
+ const details = anchors.slice(0, 3).map((entry) => {
365562
+ const start = entry.index - offset;
365563
+ for (let j2 = 0;j2 < searchLines.length; j2++) {
365564
+ const fileLine = fileLines[start + j2];
365565
+ if (fileLine === undefined) {
365566
+ return `line ${entry.index + 1}: the file ends before the string does`;
365567
+ }
365568
+ if (lineBody(fileLine) !== lineBody(searchLines[j2])) {
365569
+ return `line ${start + j2 + 1}: file has ${JSON.stringify(fileLine)}, ` + `string has ${JSON.stringify(searchLines[j2])}`;
365570
+ }
365571
+ }
365572
+ return `line ${entry.index + 1}: matches`;
365573
+ }).join("; ");
365574
+ return `String to replace not found in file. Its first line appears at line ` + `${anchor.index + 1}, but the block diverges \u2014 ${details}.`;
365396
365575
  }
365397
365576
  function preserveQuoteStyle(oldString, actualOldString, newString) {
365398
365577
  if (oldString === actualOldString) {
@@ -365693,7 +365872,7 @@ function areFileEditsInputsEquivalent(input1, input2) {
365693
365872
  }
365694
365873
  return areFileEditsEquivalent(input1.edits, input2.edits, fileContent);
365695
365874
  }
365696
- var LEFT_SINGLE_CURLY_QUOTE = "\u2018", RIGHT_SINGLE_CURLY_QUOTE = "\u2019", LEFT_DOUBLE_CURLY_QUOTE = "\u201C", RIGHT_DOUBLE_CURLY_QUOTE = "\u201D", DIFF_SNIPPET_MAX_BYTES = 8192, DESANITIZATIONS;
365875
+ var LEFT_SINGLE_CURLY_QUOTE = "\u2018", RIGHT_SINGLE_CURLY_QUOTE = "\u2019", LEFT_DOUBLE_CURLY_QUOTE = "\u201C", RIGHT_DOUBLE_CURLY_QUOTE = "\u201D", EXOTIC_SPACES, ZERO_WIDTH, LINE_NUMBER_PREFIX, DIFF_SNIPPET_MAX_BYTES = 8192, DESANITIZATIONS;
365697
365876
  var init_utils10 = __esm(() => {
365698
365877
  init_libesm();
365699
365878
  init_log2();
@@ -365702,6 +365881,9 @@ var init_utils10 = __esm(() => {
365702
365881
  init_diff2();
365703
365882
  init_errors();
365704
365883
  init_file();
365884
+ EXOTIC_SPACES = /[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/g;
365885
+ ZERO_WIDTH = /[\u200B-\u200D\u2060\uFEFF]/g;
365886
+ LINE_NUMBER_PREFIX = /^\s*\d+[\u2192\t]/;
365705
365887
  DESANITIZATIONS = {
365706
365888
  "<fnr>": "<function_results>",
365707
365889
  "<n>": "<name>",
@@ -366247,13 +366429,13 @@ var init_FileEditTool = __esm(() => {
366247
366429
  }
366248
366430
  }
366249
366431
  const file2 = fileContent;
366250
- const actualOldString = findActualString(file2, old_string);
366432
+ const editTarget = findEditTarget(file2, old_string);
366433
+ const actualOldString = editTarget?.actual ?? null;
366251
366434
  if (!actualOldString) {
366252
366435
  return {
366253
366436
  result: false,
366254
366437
  behavior: "ask",
366255
- message: `String to replace not found in file.
366256
- String: ${old_string}`,
366438
+ message: describeEditMatchFailure(file2, old_string),
366257
366439
  meta: {
366258
366440
  isFilePathAbsolute: String(isAbsolute24(file_path))
366259
366441
  },
@@ -366275,7 +366457,8 @@ String: ${old_string}`,
366275
366457
  };
366276
366458
  }
366277
366459
  const settingsValidationResult = validateInputForSettingsFileEdit(fullFilePath, file2, () => {
366278
- return replace_all ? file2.replaceAll(actualOldString, new_string) : file2.replace(actualOldString, new_string);
366460
+ const simulatedNewString = shiftIndentation(new_string, editTarget?.indentShift ?? 0);
366461
+ return replace_all ? file2.replaceAll(actualOldString, simulatedNewString) : file2.replace(actualOldString, simulatedNewString);
366279
366462
  });
366280
366463
  if (settingsValidationResult !== null) {
366281
366464
  return settingsValidationResult;
@@ -366342,8 +366525,9 @@ String: ${old_string}`,
366342
366525
  throw new Error(FILE_UNEXPECTEDLY_MODIFIED_ERROR);
366343
366526
  }
366344
366527
  }
366345
- let actualOldString = findActualString(originalFileContents, old_string) || old_string;
366346
- let actualNewString = preserveQuoteStyle(old_string, actualOldString, new_string);
366528
+ const target = findEditTarget(originalFileContents, old_string);
366529
+ let actualOldString = target?.actual ?? old_string;
366530
+ let actualNewString = shiftIndentation(preserveQuoteStyle(old_string, actualOldString, new_string), target?.indentShift ?? 0);
366347
366531
  const toolUseID = toolUseContext.toolUseId ?? parentMessage?.uuid ?? "";
366348
366532
  const beforeEdit = await executeBeforeEditHooks(absoluteFilePath, actualOldString, actualNewString, replace_all, toolUseContext, toolUseID, toolUseContext.abortController.signal);
366349
366533
  if (beforeEdit.updatedInput) {
@@ -383820,6 +384004,11 @@ var init_AgentTool = __esm(() => {
383820
384004
  let finalMessage = extractTextContent(agentResult2.content, `
383821
384005
  `);
383822
384006
  if (false) {}
384007
+ if (agentMessages.some((_) => _.type === "attachment" && _.attachment?.type === "max_turns_reached")) {
384008
+ finalMessage = `Note: this agent stopped after reaching its maximum number of turns, so the result below is incomplete.
384009
+
384010
+ ${finalMessage}`;
384011
+ }
383823
384012
  const worktreeResult2 = await cleanupWorktreeIfNeeded();
383824
384013
  enqueueAgentNotification({
383825
384014
  taskId: backgroundedTaskId,
@@ -384020,10 +384209,12 @@ var init_AgentTool = __esm(() => {
384020
384209
  }
384021
384210
  const agentResult = finalizeAgentTool(agentMessages, syncAgentId, metadata);
384022
384211
  if (false) {}
384212
+ const truncatedByMaxTurns = agentMessages.some((_) => _.type === "attachment" && _.attachment?.type === "max_turns_reached");
384213
+ const incompleteReason = syncAgentError ? errorMessage2(syncAgentError) : truncatedByMaxTurns ? "Agent stopped after reaching its maximum number of turns; the result is incomplete." : undefined;
384023
384214
  return {
384024
384215
  data: {
384025
- status: syncAgentError ? "partial" : "completed",
384026
- ...syncAgentError && { error: errorMessage2(syncAgentError) },
384216
+ status: incompleteReason ? "partial" : "completed",
384217
+ ...incompleteReason && { error: incompleteReason },
384027
384218
  prompt,
384028
384219
  ...agentResult,
384029
384220
  ...worktreeResult
@@ -389358,7 +389549,7 @@ function isAnyTracingEnabled() {
389358
389549
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
389359
389550
  }
389360
389551
  function getTracer() {
389361
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.76.7");
389552
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.76.10");
389362
389553
  }
389363
389554
  function createSpanAttributes(spanType, customAttributes = {}) {
389364
389555
  const baseAttributes = getTelemetryAttributes();
@@ -392486,9 +392677,7 @@ class StreamingToolExecutor {
392486
392677
  return false;
392487
392678
  if (!executingTools.every((t) => t.isConcurrencySafe))
392488
392679
  return false;
392489
- const envCap = Number(process.env.UR_MAX_CONCURRENT_TOOLS);
392490
- const cap = Number.isFinite(envCap) && envCap >= 1 ? Math.min(Math.floor(envCap), 32) : MAX_CONCURRENT_TOOLS;
392491
- return executingTools.length < cap;
392680
+ return executingTools.length < getMaxToolUseConcurrency();
392492
392681
  }
392493
392682
  async processQueue() {
392494
392683
  if (this.discarded) {
@@ -392733,12 +392922,12 @@ function markToolUseAsComplete2(toolUseContext, toolUseID) {
392733
392922
  return next;
392734
392923
  });
392735
392924
  }
392736
- var MAX_CONCURRENT_TOOLS = 8;
392737
392925
  var init_StreamingToolExecutor = __esm(() => {
392738
392926
  init_messages();
392739
392927
  init_Tool();
392740
392928
  init_abortController();
392741
392929
  init_toolExecution();
392930
+ init_toolOrchestration();
392742
392931
  });
392743
392932
 
392744
392933
  // src/utils/queryProfiler.ts
@@ -419527,7 +419716,7 @@ function Feedback({
419527
419716
  platform: env2.platform,
419528
419717
  gitRepo: envInfo.isGit,
419529
419718
  terminal: env2.terminal,
419530
- version: "1.76.7",
419719
+ version: "1.76.10",
419531
419720
  transcript: normalizeMessagesForAPI(messages),
419532
419721
  errors: sanitizedErrors,
419533
419722
  lastApiRequest: getLastAPIRequest(),
@@ -419719,7 +419908,7 @@ function Feedback({
419719
419908
  ", ",
419720
419909
  env2.terminal,
419721
419910
  ", v",
419722
- "1.76.7"
419911
+ "1.76.10"
419723
419912
  ]
419724
419913
  }, undefined, true, undefined, this)
419725
419914
  ]
@@ -419825,7 +420014,7 @@ ${sanitizedDescription}
419825
420014
  ` + `**Environment Info**
419826
420015
  ` + `- Platform: ${env2.platform}
419827
420016
  ` + `- Terminal: ${env2.terminal}
419828
- ` + `- Version: ${"1.76.7"}
420017
+ ` + `- Version: ${"1.76.10"}
419829
420018
  ` + `- Feedback ID: ${feedbackId}
419830
420019
  ` + `
419831
420020
  **Errors**
@@ -422935,7 +423124,7 @@ function buildPrimarySection() {
422935
423124
  }, undefined, false, undefined, this);
422936
423125
  return [{
422937
423126
  label: "Version",
422938
- value: "1.76.7"
423127
+ value: "1.76.10"
422939
423128
  }, {
422940
423129
  label: "Session name",
422941
423130
  value: nameValue
@@ -426317,7 +426506,7 @@ function Config({
426317
426506
  }
426318
426507
  }, undefined, false, undefined, this)
426319
426508
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
426320
- currentVersion: "1.76.7",
426509
+ currentVersion: "1.76.10",
426321
426510
  onChoice: (choice) => {
426322
426511
  setShowSubmenu(null);
426323
426512
  setTabsHidden(false);
@@ -426329,7 +426518,7 @@ function Config({
426329
426518
  autoUpdatesChannel: "stable"
426330
426519
  };
426331
426520
  if (choice === "stay") {
426332
- newSettings.minimumVersion = "1.76.7";
426521
+ newSettings.minimumVersion = "1.76.10";
426333
426522
  }
426334
426523
  updateSettingsForSource("userSettings", newSettings);
426335
426524
  setSettingsData((prev_27) => ({
@@ -434393,7 +434582,7 @@ function HelpV2(t0) {
434393
434582
  let t6;
434394
434583
  if ($2[31] !== tabs) {
434395
434584
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
434396
- title: `UR v${"1.76.7"}`,
434585
+ title: `UR v${"1.76.10"}`,
434397
434586
  color: "professionalBlue",
434398
434587
  defaultTab: "general",
434399
434588
  children: tabs
@@ -435326,7 +435515,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
435326
435515
  async function handleInitialize(options2) {
435327
435516
  return {
435328
435517
  name: "UR",
435329
- version: "1.76.7",
435518
+ version: "1.76.10",
435330
435519
  protocolVersion: "0.1.0",
435331
435520
  workspaceRoot: options2.cwd,
435332
435521
  capabilities: {
@@ -452434,7 +452623,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
452434
452623
  return [];
452435
452624
  }
452436
452625
  }
452437
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.76.7") {
452626
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.76.10") {
452438
452627
  if (process.env.USER_TYPE === "ant") {
452439
452628
  const changelog = "";
452440
452629
  if (changelog) {
@@ -452461,7 +452650,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.76.7")
452461
452650
  releaseNotes
452462
452651
  };
452463
452652
  }
452464
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.76.7") {
452653
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.76.10") {
452465
452654
  if (process.env.USER_TYPE === "ant") {
452466
452655
  const changelog = "";
452467
452656
  if (changelog) {
@@ -455327,7 +455516,7 @@ function getRecentActivitySync() {
455327
455516
  return cachedActivity;
455328
455517
  }
455329
455518
  function getLogoDisplayData() {
455330
- const version2 = process.env.DEMO_VERSION ?? "1.76.7";
455519
+ const version2 = process.env.DEMO_VERSION ?? "1.76.10";
455331
455520
  const serverUrl = getDirectConnectServerUrl();
455332
455521
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
455333
455522
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -456194,7 +456383,7 @@ function LogoV2() {
456194
456383
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
456195
456384
  t2 = () => {
456196
456385
  const currentConfig2 = getGlobalConfig();
456197
- if (currentConfig2.lastReleaseNotesSeen === "1.76.7") {
456386
+ if (currentConfig2.lastReleaseNotesSeen === "1.76.10") {
456198
456387
  return;
456199
456388
  }
456200
456389
  saveGlobalConfig(_temp325);
@@ -456879,12 +457068,12 @@ function LogoV2() {
456879
457068
  return t41;
456880
457069
  }
456881
457070
  function _temp325(current) {
456882
- if (current.lastReleaseNotesSeen === "1.76.7") {
457071
+ if (current.lastReleaseNotesSeen === "1.76.10") {
456883
457072
  return current;
456884
457073
  }
456885
457074
  return {
456886
457075
  ...current,
456887
- lastReleaseNotesSeen: "1.76.7"
457076
+ lastReleaseNotesSeen: "1.76.10"
456888
457077
  };
456889
457078
  }
456890
457079
  function _temp241(s_0) {
@@ -473698,7 +473887,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
473698
473887
  if (spec.name !== specName) {
473699
473888
  throw new Error("Agentic CI workflow spec name does not match");
473700
473889
  }
473701
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.76.7" : "1.76.7");
473890
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.76.10" : "1.76.10");
473702
473891
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
473703
473892
  throw new Error("invalid ur-agent package version");
473704
473893
  }
@@ -474691,7 +474880,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
474691
474880
  path: ".github/workflows/ur.yml",
474692
474881
  root: "project",
474693
474882
  content: compileAgenticCiWorkflow("default", {
474694
- packageVersion: typeof MACRO !== "undefined" ? "1.76.7" : "1.76.7"
474883
+ packageVersion: typeof MACRO !== "undefined" ? "1.76.10" : "1.76.10"
474695
474884
  })
474696
474885
  },
474697
474886
  {
@@ -474754,7 +474943,7 @@ function value(tokens, flag) {
474754
474943
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
474755
474944
  }
474756
474945
  function cliVersion() {
474757
- return typeof MACRO !== "undefined" ? "1.76.7" : "1.76.7";
474946
+ return typeof MACRO !== "undefined" ? "1.76.10" : "1.76.10";
474758
474947
  }
474759
474948
  function workflowPath(cwd2) {
474760
474949
  return join159(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -480610,7 +480799,7 @@ function createAcpStdioApp(deps) {
480610
480799
  }
480611
480800
  },
480612
480801
  authMethods: [],
480613
- agentInfo: { name: "UR-Nexus", version: "1.76.7" }
480802
+ agentInfo: { name: "UR-Nexus", version: "1.76.10" }
480614
480803
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
480615
480804
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
480616
480805
  await runtime2.announce({
@@ -480707,7 +480896,7 @@ function createAcpStdioAgent(deps) {
480707
480896
  }
480708
480897
  },
480709
480898
  authMethods: [],
480710
- agentInfo: { name: "UR-Nexus", version: "1.76.7" }
480899
+ agentInfo: { name: "UR-Nexus", version: "1.76.10" }
480711
480900
  });
480712
480901
  return;
480713
480902
  case "authenticate":
@@ -492667,6 +492856,11 @@ async function runCrew(name, options2) {
492667
492856
  options2.onEvent?.({ kind: "worker-exit", worker: workerId, handled: count5 });
492668
492857
  return count5;
492669
492858
  }
492859
+ const workerFailures = [];
492860
+ const track = (promise3) => promise3.catch((error40) => {
492861
+ workerFailures.push(error40);
492862
+ return 0;
492863
+ });
492670
492864
  let spawned = 0;
492671
492865
  if (options2.dynamic) {
492672
492866
  const governor = boundedInteger2(options2.maxWorkers, 8, 1, 32);
@@ -492683,13 +492877,13 @@ async function runCrew(name, options2) {
492683
492877
  while (active3.size < governor && runnableCount() > 0) {
492684
492878
  spawned += 1;
492685
492879
  const id = `w${spawned}`;
492686
- const p2 = worker(id).finally(() => active3.delete(p2));
492880
+ const p2 = track(worker(id)).finally(() => active3.delete(p2));
492687
492881
  active3.add(p2);
492688
492882
  }
492689
492883
  if (active3.size === 0) {
492690
492884
  if (todoCount() > 0) {
492691
492885
  spawned += 1;
492692
- await worker(`w${spawned}`);
492886
+ await track(worker(`w${spawned}`));
492693
492887
  continue;
492694
492888
  }
492695
492889
  break;
@@ -492702,7 +492896,10 @@ async function runCrew(name, options2) {
492702
492896
  } else {
492703
492897
  spawned = workerCount;
492704
492898
  const workerIds = Array.from({ length: workerCount }, (_, i3) => `w${i3 + 1}`);
492705
- await Promise.all(workerIds.map(worker));
492899
+ await Promise.all(workerIds.map((id) => track(worker(id))));
492900
+ }
492901
+ if (workerFailures.length > 0) {
492902
+ throw workerFailures[0];
492706
492903
  }
492707
492904
  const finalSpec = loadCrew(cwd2, name) ?? baseSpec;
492708
492905
  return { name, workers: spawned, progress: crewProgress(finalSpec), handled };
@@ -690159,7 +690356,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
690159
690356
  smapsRollup,
690160
690357
  platform: process.platform,
690161
690358
  nodeVersion: process.version,
690162
- ccVersion: "1.76.7"
690359
+ ccVersion: "1.76.10"
690163
690360
  };
690164
690361
  }
690165
690362
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -690739,7 +690936,7 @@ var init_bridge_kick = __esm(() => {
690739
690936
  var call154 = async () => {
690740
690937
  return {
690741
690938
  type: "text",
690742
- value: "1.76.7"
690939
+ value: "1.76.10"
690743
690940
  };
690744
690941
  }, version2, version_default;
690745
690942
  var init_version = __esm(() => {
@@ -702006,7 +702203,7 @@ function generateHtmlReport(data, insights) {
702006
702203
  </html>`;
702007
702204
  }
702008
702205
  function buildExportData(data, insights, facets, remoteStats) {
702009
- const version3 = typeof MACRO !== "undefined" ? "1.76.7" : "unknown";
702206
+ const version3 = typeof MACRO !== "undefined" ? "1.76.10" : "unknown";
702010
702207
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
702011
702208
  const facets_summary = {
702012
702209
  total: facets.size,
@@ -706320,7 +706517,7 @@ var init_sessionStorage = __esm(() => {
706320
706517
  init_settings2();
706321
706518
  init_slowOperations();
706322
706519
  init_uuid();
706323
- VERSION7 = typeof MACRO !== "undefined" ? "1.76.7" : "unknown";
706520
+ VERSION7 = typeof MACRO !== "undefined" ? "1.76.10" : "unknown";
706324
706521
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
706325
706522
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
706326
706523
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -707535,7 +707732,7 @@ var init_filesystem = __esm(() => {
707535
707732
  });
707536
707733
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
707537
707734
  const nonce = randomBytes20(16).toString("hex");
707538
- return join232(getURTempDir(), "bundled-skills", "1.76.7", nonce);
707735
+ return join232(getURTempDir(), "bundled-skills", "1.76.10", nonce);
707539
707736
  });
707540
707737
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
707541
707738
  });
@@ -713884,7 +714081,7 @@ function computeFingerprint(messageText2, version3) {
713884
714081
  }
713885
714082
  function computeFingerprintFromMessages(messages) {
713886
714083
  const firstMessageText = extractFirstMessageText(messages);
713887
- return computeFingerprint(firstMessageText, "1.76.7");
714084
+ return computeFingerprint(firstMessageText, "1.76.10");
713888
714085
  }
713889
714086
  var FINGERPRINT_SALT = "59cf53e54c78";
713890
714087
  var init_fingerprint = () => {};
@@ -714831,7 +715028,7 @@ ${deferredToolList}
714831
715028
  stopReason = null;
714832
715029
  isAdvisorInProgress = false;
714833
715030
  const streamWatchdogEnabled = isStreamWatchdogEnabled();
714834
- const STREAM_IDLE_TIMEOUT_MS = parseInt(process.env.UR_STREAM_IDLE_TIMEOUT_MS || "", 10) || 90000;
715031
+ const STREAM_IDLE_TIMEOUT_MS = parseInt(process.env.UR_STREAM_IDLE_TIMEOUT_MS || "", 10) || 300000;
714835
715032
  const STREAM_IDLE_WARNING_MS = STREAM_IDLE_TIMEOUT_MS / 2;
714836
715033
  let streamIdleAborted = false;
714837
715034
  let streamWatchdogFiredAt = null;
@@ -714849,6 +715046,9 @@ ${deferredToolList}
714849
715046
  for await (const _part of stream5) {
714850
715047
  const part = _part;
714851
715048
  resetStreamIdleTimer();
715049
+ if (part?.type === "ping") {
715050
+ continue;
715051
+ }
714852
715052
  const outputChunkAt = performance.now();
714853
715053
  if (previousOutputChunkAt !== undefined) {
714854
715054
  recordGenAiOutputChunkMetric({
@@ -715803,7 +716003,7 @@ async function sideQuery(opts) {
715803
716003
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
715804
716004
  }
715805
716005
  const messageText2 = extractFirstUserMessageText(messages);
715806
- const fingerprint2 = computeFingerprint(messageText2, "1.76.7");
716006
+ const fingerprint2 = computeFingerprint(messageText2, "1.76.10");
715807
716007
  const attributionHeader = getAttributionHeader(fingerprint2);
715808
716008
  const systemBlocks = [
715809
716009
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -720640,7 +720840,7 @@ function buildSystemInitMessage(inputs) {
720640
720840
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
720641
720841
  apiKeySource: getURHQApiKeyWithSource().source,
720642
720842
  betas: getSdkBetas(),
720643
- ur_version: "1.76.7",
720843
+ ur_version: "1.76.10",
720644
720844
  output_style: outputStyle2,
720645
720845
  agents: inputs.agents.map((agent2) => agent2.agentType),
720646
720846
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -734512,7 +734712,7 @@ var init_useVoiceEnabled = __esm(() => {
734512
734712
  function getSemverPart(version3) {
734513
734713
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
734514
734714
  }
734515
- function useUpdateNotification(updatedVersion, initialVersion = "1.76.7") {
734715
+ function useUpdateNotification(updatedVersion, initialVersion = "1.76.10") {
734516
734716
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react223.useState(() => getSemverPart(initialVersion));
734517
734717
  if (!updatedVersion) {
734518
734718
  return null;
@@ -734561,7 +734761,7 @@ function AutoUpdater({
734561
734761
  return;
734562
734762
  }
734563
734763
  if (false) {}
734564
- const currentVersion = "1.76.7";
734764
+ const currentVersion = "1.76.10";
734565
734765
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
734566
734766
  let latestVersion = await getLatestVersion(channel);
734567
734767
  const isDisabled = isAutoUpdaterDisabled();
@@ -734790,12 +734990,12 @@ function NativeAutoUpdater({
734790
734990
  logEvent("tengu_native_auto_updater_start", {});
734791
734991
  try {
734792
734992
  const maxVersion = await getMaxVersion();
734793
- if (maxVersion && gt("1.76.7", maxVersion)) {
734993
+ if (maxVersion && gt("1.76.10", maxVersion)) {
734794
734994
  const msg = await getMaxVersionMessage();
734795
734995
  setMaxVersionIssue(msg ?? "affects your version");
734796
734996
  }
734797
734997
  const result = await installLatest(channel);
734798
- const currentVersion = "1.76.7";
734998
+ const currentVersion = "1.76.10";
734799
734999
  const latencyMs = Date.now() - startTime;
734800
735000
  if (result.lockFailed) {
734801
735001
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -734932,17 +735132,17 @@ function PackageManagerAutoUpdater(t0) {
734932
735132
  const maxVersion = await getMaxVersion();
734933
735133
  if (maxVersion && latest && gt(latest, maxVersion)) {
734934
735134
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
734935
- if (gte("1.76.7", maxVersion)) {
734936
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.76.7"} is already at or above maxVersion ${maxVersion}, skipping update`);
735135
+ if (gte("1.76.10", maxVersion)) {
735136
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.76.10"} is already at or above maxVersion ${maxVersion}, skipping update`);
734937
735137
  setUpdateAvailable(false);
734938
735138
  return;
734939
735139
  }
734940
735140
  latest = maxVersion;
734941
735141
  }
734942
- const hasUpdate = latest && !gte("1.76.7", latest) && !shouldSkipVersion(latest);
735142
+ const hasUpdate = latest && !gte("1.76.10", latest) && !shouldSkipVersion(latest);
734943
735143
  setUpdateAvailable(!!hasUpdate);
734944
735144
  if (hasUpdate) {
734945
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.76.7"} -> ${latest}`);
735145
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.76.10"} -> ${latest}`);
734946
735146
  }
734947
735147
  };
734948
735148
  $2[0] = t1;
@@ -734976,7 +735176,7 @@ function PackageManagerAutoUpdater(t0) {
734976
735176
  wrap: "truncate",
734977
735177
  children: [
734978
735178
  "currentVersion: ",
734979
- "1.76.7"
735179
+ "1.76.10"
734980
735180
  ]
734981
735181
  }, undefined, true, undefined, this);
734982
735182
  $2[3] = verbose;
@@ -745776,7 +745976,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
745776
745976
  project_dir: getOriginalCwd(),
745777
745977
  added_dirs: addedDirs
745778
745978
  },
745779
- version: "1.76.7",
745979
+ version: "1.76.10",
745780
745980
  output_style: {
745781
745981
  name: outputStyleName
745782
745982
  },
@@ -745911,7 +746111,7 @@ function StatusLineInner({
745911
746111
  const attention = customStatusError ?? taskAttention;
745912
746112
  const terminalSize = React132.useContext(TerminalSizeContext);
745913
746113
  const defaultStatusLineText = buildDefaultStatusBar({
745914
- version: "1.76.7",
746114
+ version: "1.76.10",
745915
746115
  providerLabel: providerRuntime.providerLabel,
745916
746116
  authMode: providerRuntime.authLabel,
745917
746117
  model: renderModelName(mainLoopModel) || providerRuntime.model || "",
@@ -758196,7 +758396,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
758196
758396
  } catch {}
758197
758397
  const data = {
758198
758398
  trigger: trigger2,
758199
- version: "1.76.7",
758399
+ version: "1.76.10",
758200
758400
  platform: process.platform,
758201
758401
  transcript,
758202
758402
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -770570,7 +770770,7 @@ function WelcomeV2() {
770570
770770
  dimColor: true,
770571
770771
  children: [
770572
770772
  "v",
770573
- "1.76.7"
770773
+ "1.76.10"
770574
770774
  ]
770575
770775
  }, undefined, true, undefined, this)
770576
770776
  ]
@@ -771830,7 +772030,7 @@ function completeOnboarding() {
771830
772030
  saveGlobalConfig((current) => ({
771831
772031
  ...current,
771832
772032
  hasCompletedOnboarding: true,
771833
- lastOnboardingVersion: "1.76.7"
772033
+ lastOnboardingVersion: "1.76.10"
771834
772034
  }));
771835
772035
  }
771836
772036
  function showDialog(root2, renderer) {
@@ -776874,7 +777074,7 @@ function appendToLog(path24, message) {
776874
777074
  cwd: getFsImplementation().cwd(),
776875
777075
  userType: process.env.USER_TYPE,
776876
777076
  sessionId: getSessionId(),
776877
- version: "1.76.7"
777077
+ version: "1.76.10"
776878
777078
  };
776879
777079
  getLogWriter(path24).write(messageWithTimestamp);
776880
777080
  }
@@ -781033,8 +781233,8 @@ async function getEnvLessBridgeConfig() {
781033
781233
  }
781034
781234
  async function checkEnvLessBridgeMinVersion() {
781035
781235
  const cfg = await getEnvLessBridgeConfig();
781036
- if (cfg.min_version && lt("1.76.7", cfg.min_version)) {
781037
- return `Your version of UR (${"1.76.7"}) is too old for Remote Control.
781236
+ if (cfg.min_version && lt("1.76.10", cfg.min_version)) {
781237
+ return `Your version of UR (${"1.76.10"}) is too old for Remote Control.
781038
781238
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
781039
781239
  }
781040
781240
  return null;
@@ -781508,7 +781708,7 @@ async function initBridgeCore(params) {
781508
781708
  const rawApi = createBridgeApiClient({
781509
781709
  baseUrl,
781510
781710
  getAccessToken,
781511
- runnerVersion: "1.76.7",
781711
+ runnerVersion: "1.76.10",
781512
781712
  onDebug: logForDebugging,
781513
781713
  onAuth401,
781514
781714
  getTrustedDeviceToken
@@ -790981,7 +791181,7 @@ function getAgUiCapabilities() {
790981
791181
  name: "UR-Nexus",
790982
791182
  type: "ur-nexus",
790983
791183
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
790984
- version: "1.76.7",
791184
+ version: "1.76.10",
790985
791185
  provider: "UR",
790986
791186
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
790987
791187
  },
@@ -792121,7 +792321,7 @@ function createMCPServer(cwd4, debug2, verbose) {
792121
792321
  };
792122
792322
  const server2 = new Server({
792123
792323
  name: "ur-nexus",
792124
- version: "1.76.7"
792324
+ version: "1.76.10"
792125
792325
  }, {
792126
792326
  capabilities: {
792127
792327
  tools: {}
@@ -793279,7 +793479,7 @@ function thrownResponse(error40) {
793279
793479
  }
793280
793480
  async function createUrMcp2026Runtime(options4) {
793281
793481
  const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
793282
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.76.7" }, { capabilities: {} });
793482
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.76.10" }, { capabilities: {} });
793283
793483
  const [clientTransport, serverTransport] = createLinkedTransportPair();
793284
793484
  try {
793285
793485
  await server2.connect(serverTransport);
@@ -793290,7 +793490,7 @@ async function createUrMcp2026Runtime(options4) {
793290
793490
  }
793291
793491
  const runtime2 = new Mcp2026Runtime({
793292
793492
  cwd: options4.cwd,
793293
- version: "1.76.7",
793493
+ version: "1.76.10",
793294
793494
  backend: {
793295
793495
  listTools: async () => {
793296
793496
  const listed = await client2.listTools();
@@ -795431,7 +795631,7 @@ async function update() {
795431
795631
  logEvent("tengu_update_check", {});
795432
795632
  const diagnostic2 = await getDoctorDiagnostic();
795433
795633
  const result = await checkUpgradeStatus({
795434
- currentVersion: "1.76.7",
795634
+ currentVersion: "1.76.10",
795435
795635
  packageName: UR_AGENT_PACKAGE_NAME,
795436
795636
  installationType: diagnostic2.installationType,
795437
795637
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -796747,7 +796947,7 @@ ${customInstructions}` : customInstructions;
796747
796947
  }
796748
796948
  }
796749
796949
  logForDiagnosticsNoPII("info", "started", {
796750
- version: "1.76.7",
796950
+ version: "1.76.10",
796751
796951
  is_native_binary: isInBundledMode()
796752
796952
  });
796753
796953
  registerCleanup(async () => {
@@ -797533,7 +797733,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
797533
797733
  pendingHookMessages
797534
797734
  }, renderAndRun);
797535
797735
  }
797536
- }).version("1.76.7 (UR-Nexus)", "-v, --version", "Output the version number");
797736
+ }).version("1.76.10 (UR-Nexus)", "-v, --version", "Output the version number");
797537
797737
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
797538
797738
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
797539
797739
  if (canUserConfigureAdvisor()) {
@@ -798585,7 +798785,7 @@ if (false) {}
798585
798785
  async function main2() {
798586
798786
  const args = process.argv.slice(2);
798587
798787
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
798588
- console.log(`${"1.76.7"} (UR-Nexus)`);
798788
+ console.log(`${"1.76.10"} (UR-Nexus)`);
798589
798789
  return;
798590
798790
  }
798591
798791
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {