ur-agent 1.44.1 → 1.44.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.44.2
4
+
5
+ - Fix Ollama streamed tool-call accumulation: Ollama streams each completed
6
+ tool call in its own chunk, but the merge logic overwrote call N-1 with
7
+ call N, collapsing multi-call turns (e.g. several `Write` calls scaffolding
8
+ a test suite) into just the last call. Calls now append; string argument
9
+ fragments concatenate; empty argument resends no longer clobber good
10
+ arguments; cumulative resends stay idempotent.
11
+ - Repair almost-JSON tool-call arguments instead of silently emptying them.
12
+ Local models routinely emit raw newlines inside JSON string values,
13
+ markdown fences, and trailing commas; strict parsing collapsed the whole
14
+ input to `{}`, which surfaced as `InputValidationError: required parameter
15
+ \`file_path\` is missing` and trapped the model in a retry loop. A lenient
16
+ parser (`parseToolInputJsonLenient`) now repairs these across the Kimi
17
+ marker parser, the bare-JSON text parser, the Ollama input parser, and
18
+ streamed tool-input normalization. Repairs are tracked via the
19
+ `tengu_tool_input_json_repaired` event; only genuinely hopeless input still
20
+ falls back to `{}`.
21
+ - Warn (once per model, in debug logs) when an Ollama model does not
22
+ advertise the `tools` capability, since tool definitions are then silently
23
+ dropped. In that mode the system prompt now includes a concise instruction
24
+ telling the model to emit single-line bare-JSON tool arguments — the exact
25
+ format the text parser recovers — instead of leaving it to guess.
26
+
3
27
  ## 1.44.1
4
28
 
5
29
  - Fix task board rendering: finished, failed, and skipped tasks now render as
package/dist/cli.js CHANGED
@@ -14537,6 +14537,71 @@ function addItemToJSONCArray(content, newItem) {
14537
14537
  return jsonStringify([newItem], null, 4);
14538
14538
  }
14539
14539
  }
14540
+ function escapeControlCharsInJsonStrings(text) {
14541
+ let out = "";
14542
+ let inString = false;
14543
+ let escaped = false;
14544
+ for (let i2 = 0;i2 < text.length; i2++) {
14545
+ const ch = text[i2];
14546
+ if (!inString) {
14547
+ if (ch === '"')
14548
+ inString = true;
14549
+ out += ch;
14550
+ continue;
14551
+ }
14552
+ if (escaped) {
14553
+ escaped = false;
14554
+ out += ch;
14555
+ continue;
14556
+ }
14557
+ if (ch === "\\") {
14558
+ escaped = true;
14559
+ out += ch;
14560
+ continue;
14561
+ }
14562
+ if (ch === '"') {
14563
+ inString = false;
14564
+ out += ch;
14565
+ continue;
14566
+ }
14567
+ const code = ch.charCodeAt(0);
14568
+ if (code < 32) {
14569
+ switch (ch) {
14570
+ case `
14571
+ `:
14572
+ out += "\\n";
14573
+ break;
14574
+ case "\r":
14575
+ out += "\\r";
14576
+ break;
14577
+ case "\t":
14578
+ out += "\\t";
14579
+ break;
14580
+ default:
14581
+ out += `\\u${code.toString(16).padStart(4, "0")}`;
14582
+ }
14583
+ continue;
14584
+ }
14585
+ out += ch;
14586
+ }
14587
+ return out;
14588
+ }
14589
+ function parseToolInputJsonLenient(raw) {
14590
+ if (!raw)
14591
+ return null;
14592
+ try {
14593
+ return JSON.parse(raw);
14594
+ } catch {}
14595
+ let s = raw.trim();
14596
+ s = s.replace(/^```(?:json)?\s*\n?/i, "").replace(/\n?```\s*$/, "");
14597
+ s = escapeControlCharsInJsonStrings(s);
14598
+ s = s.replace(/,\s*([}\]])/g, "$1");
14599
+ try {
14600
+ return JSON.parse(s);
14601
+ } catch {
14602
+ return null;
14603
+ }
14604
+ }
14540
14605
  var PARSE_CACHE_MAX_KEY_BYTES, parseJSONCached, safeParseJSON, bunJSONLParse, MAX_JSONL_READ_BYTES;
14541
14606
  var init_json = __esm(() => {
14542
14607
  init_main2();
@@ -54586,11 +54651,8 @@ function parseArgs(raw) {
54586
54651
  const v = JSON.parse(s);
54587
54652
  return v && typeof v === "object" ? v : {};
54588
54653
  } catch {
54589
- try {
54590
- return JSON.parse(s.replace(/,\s*([}\]])/g, "$1"));
54591
- } catch {
54592
- return {};
54593
- }
54654
+ const repaired = parseToolInputJsonLenient(s);
54655
+ return repaired && typeof repaired === "object" && !Array.isArray(repaired) ? repaired : {};
54594
54656
  }
54595
54657
  }
54596
54658
  function parseKimiToolCalls(text) {
@@ -54710,6 +54772,10 @@ function parseJsonObject(text) {
54710
54772
  const end = findJsonObjectEnd(trimmed, 0);
54711
54773
  if (end !== null && trimmed.slice(end).trim())
54712
54774
  return null;
54775
+ const repaired = parseToolInputJsonLenient(trimmed);
54776
+ if (repaired && typeof repaired === "object" && !Array.isArray(repaired)) {
54777
+ return repaired;
54778
+ }
54713
54779
  return parseLooseWriteObject(trimmed) ?? parseLooseEditObject(trimmed);
54714
54780
  }
54715
54781
  }
@@ -55235,6 +55301,7 @@ function parseClarifyingQuestions(text, options = {}) {
55235
55301
  }
55236
55302
  var SECTION_RE, CALL_RE, STRAY_RE, CLARIFY_MAX_LEN = 2000, OPTION_LEADIN_RE, OPTION_QUESTION_LEADIN_RE, OPTION_CATCHALL_RE, OPTION_TRAILING_QUALIFIER_RE, CLARIFY_HEADER_STOP_WORDS;
55237
55303
  var init_kimiToolCalls = __esm(() => {
55304
+ init_json();
55238
55305
  SECTION_RE = /<\|tool_calls_section_begin\|>([\s\S]*?)<\|tool_calls_section_end\|>/g;
55239
55306
  CALL_RE = /<\|tool_call_begin\|>([\s\S]*?)<\|tool_call_argument_begin\|>([\s\S]*?)<\|tool_call_end\|>/g;
55240
55307
  STRAY_RE = /<\|tool_calls?_section_(?:begin|end)\|>|<\|tool_call_(?:begin|end|argument_begin)\|>/g;
@@ -55278,6 +55345,7 @@ var init_kimiToolCalls = __esm(() => {
55278
55345
  // src/services/api/ollama.ts
55279
55346
  var exports_ollama = {};
55280
55347
  __export(exports_ollama, {
55348
+ mergeToolCalls: () => mergeToolCalls,
55281
55349
  getOllamaRequestTimeoutMs: () => getOllamaRequestTimeoutMs,
55282
55350
  getEffectiveOllamaBaseUrl: () => getEffectiveOllamaBaseUrl,
55283
55351
  createOllamaURHQClient: () => createOllamaURHQClient
@@ -55430,9 +55498,15 @@ function isTruthyEnv(value) {
55430
55498
  function toOllamaChatRequest(params, stream4, capabilities) {
55431
55499
  const supportsTools = modelCapabilityEnabled(capabilities, "tools");
55432
55500
  const tools = supportsTools ? toOllamaTools(params.tools) : [];
55501
+ const toolsRequested = (params.tools?.length ?? 0) > 0;
55502
+ const toolsDropped = toolsRequested && !supportsTools;
55503
+ if (toolsDropped && !warnedToolsUnsupportedModels.has(params.model)) {
55504
+ warnedToolsUnsupportedModels.add(params.model);
55505
+ logForDebugging(`Ollama model "${params.model}" does not advertise the 'tools' capability; ` + "tool definitions are not sent and tool calls fall back to text parsing. " + "Expect degraded agent behavior \u2014 prefer a tools-capable model (check with: ollama show <model>).", { level: "warn" });
55506
+ }
55433
55507
  const systemMessage = {
55434
55508
  role: "system",
55435
- content: systemToText(params.system)
55509
+ content: systemToText(params.system) + (toolsDropped ? TEXT_TOOL_CALL_HINT : "")
55436
55510
  };
55437
55511
  const think = getOllamaThink(params, capabilities);
55438
55512
  const request = {
@@ -56083,18 +56157,63 @@ function ollamaResponseToURHQMessage(response, params) {
56083
56157
  usage: usageFromOllama(response, text + thinking)
56084
56158
  };
56085
56159
  }
56160
+ function isPlainObject5(value) {
56161
+ return typeof value === "object" && value !== null && !Array.isArray(value);
56162
+ }
56163
+ function isEmptyToolArgs(value) {
56164
+ if (value === undefined || value === null)
56165
+ return true;
56166
+ if (typeof value === "string")
56167
+ return value.trim() === "";
56168
+ if (isPlainObject5(value))
56169
+ return Object.keys(value).length === 0;
56170
+ return false;
56171
+ }
56172
+ function toolArgsKey(value) {
56173
+ if (typeof value === "string")
56174
+ return value;
56175
+ try {
56176
+ return JSON.stringify(value ?? {});
56177
+ } catch {
56178
+ return String(value);
56179
+ }
56180
+ }
56086
56181
  function mergeToolCalls(target, incoming) {
56087
- for (let i2 = 0;i2 < incoming.length; i2++) {
56088
- const current = incoming[i2];
56089
- if (!current) {
56182
+ for (const current of incoming) {
56183
+ const fn = current?.function;
56184
+ if (!fn) {
56090
56185
  continue;
56091
56186
  }
56092
- target[i2] = {
56093
- function: {
56094
- name: current.function?.name ?? target[i2]?.function?.name,
56095
- arguments: current.function?.arguments ?? target[i2]?.function?.arguments ?? {}
56187
+ const name = fn.name;
56188
+ const args = fn.arguments;
56189
+ const last = target[target.length - 1];
56190
+ if (!name) {
56191
+ if (!last?.function) {
56192
+ continue;
56096
56193
  }
56097
- };
56194
+ const prev = last.function.arguments;
56195
+ if (typeof prev === "string" && typeof args === "string") {
56196
+ last.function.arguments = prev + args;
56197
+ } else if (isPlainObject5(prev) && isPlainObject5(args)) {
56198
+ last.function.arguments = { ...prev, ...args };
56199
+ } else if (isEmptyToolArgs(prev) && !isEmptyToolArgs(args)) {
56200
+ last.function.arguments = args;
56201
+ }
56202
+ continue;
56203
+ }
56204
+ if (last?.function?.name === name && typeof args === "string" && typeof last.function.arguments === "string") {
56205
+ last.function.arguments = last.function.arguments + args;
56206
+ continue;
56207
+ }
56208
+ const key = toolArgsKey(args);
56209
+ const duplicate = target.some((t) => t.function?.name === name && toolArgsKey(t.function?.arguments) === key);
56210
+ if (duplicate) {
56211
+ continue;
56212
+ }
56213
+ if (isEmptyToolArgs(args) && last?.function?.name === name && !isEmptyToolArgs(last.function.arguments)) {
56214
+ continue;
56215
+ }
56216
+ target.push({ function: { name, arguments: args ?? {} } });
56098
56217
  }
56099
56218
  }
56100
56219
  function getStopReason(response, toolCalls) {
@@ -56187,20 +56306,33 @@ function parseToolInput(input) {
56187
56306
  if (typeof input !== "string") {
56188
56307
  return input ?? {};
56189
56308
  }
56190
- try {
56191
- return JSON.parse(input);
56192
- } catch {
56193
- return {};
56309
+ const parsed = parseToolInputJsonLenient(input);
56310
+ if (parsed === null && input.trim().length > 0) {
56311
+ logForDebugging(`Ollama tool call arguments failed to parse even after repair: ${input.slice(0, 200)}`, { level: "warn" });
56194
56312
  }
56313
+ return parsed ?? {};
56195
56314
  }
56196
- var DEFAULT_OLLAMA_REQUEST_TIMEOUT_MS = 300000, REMOTE_OLLAMA_REQUEST_TIMEOUT_MS = 120000, OLLAMA_GATEWAY_TIMEOUT_MESSAGE = "Ollama gateway timed out while waiting for the model to respond. Check the selected Ollama endpoint or increase API_TIMEOUT_MS if the model needs more time.", ollamaModelCapabilitiesCache, ollamaBaseUrlOverride;
56315
+ var DEFAULT_OLLAMA_REQUEST_TIMEOUT_MS = 300000, REMOTE_OLLAMA_REQUEST_TIMEOUT_MS = 120000, OLLAMA_GATEWAY_TIMEOUT_MESSAGE = "Ollama gateway timed out while waiting for the model to respond. Check the selected Ollama endpoint or increase API_TIMEOUT_MS if the model needs more time.", ollamaModelCapabilitiesCache, ollamaBaseUrlOverride, warnedToolsUnsupportedModels, TEXT_TOOL_CALL_HINT;
56197
56316
  var init_ollama = __esm(() => {
56198
56317
  init_urhq_sdk();
56199
56318
  init_ollamaModels();
56200
56319
  init_ollamaConfig();
56201
56320
  init_ollamaTuning();
56202
56321
  init_kimiToolCalls();
56322
+ init_json();
56323
+ init_debug();
56203
56324
  ollamaModelCapabilitiesCache = new Map;
56325
+ warnedToolsUnsupportedModels = new Set;
56326
+ TEXT_TOOL_CALL_HINT = [
56327
+ "",
56328
+ "IMPORTANT: This runtime could not register native tool-calling for the current model.",
56329
+ "To invoke a tool, output ONLY a single-line JSON object with that tool\u2019s arguments, e.g.:",
56330
+ '{"file_path": "/abs/path/file.py", "content": "full file content"} (Write)',
56331
+ '{"file_path": "/abs/path/file.py", "old_string": "before", "new_string": "after"} (Edit)',
56332
+ '{"command": "ls -la"} (Bash)',
56333
+ "Escape newlines inside JSON strings as \\n. Do not wrap the JSON in prose or code fences."
56334
+ ].join(`
56335
+ `);
56204
56336
  });
56205
56337
 
56206
56338
  // src/services/api/providerHttp.ts
@@ -60382,7 +60514,7 @@ var require_extend = __commonJS((exports, module) => {
60382
60514
  }
60383
60515
  return toStr.call(arr) === "[object Array]";
60384
60516
  };
60385
- var isPlainObject5 = function isPlainObject6(obj) {
60517
+ var isPlainObject6 = function isPlainObject7(obj) {
60386
60518
  if (!obj || toStr.call(obj) !== "[object Object]") {
60387
60519
  return false;
60388
60520
  }
@@ -60438,12 +60570,12 @@ var require_extend = __commonJS((exports, module) => {
60438
60570
  src = getProperty(target, name);
60439
60571
  copy = getProperty(options, name);
60440
60572
  if (target !== copy) {
60441
- if (deep && copy && (isPlainObject5(copy) || (copyIsArray = isArray3(copy)))) {
60573
+ if (deep && copy && (isPlainObject6(copy) || (copyIsArray = isArray3(copy)))) {
60442
60574
  if (copyIsArray) {
60443
60575
  copyIsArray = false;
60444
60576
  clone3 = src && isArray3(src) ? src : [];
60445
60577
  } else {
60446
- clone3 = src && isPlainObject5(src) ? src : {};
60578
+ clone3 = src && isPlainObject6(src) ? src : {};
60447
60579
  }
60448
60580
  setProperty2(target, { name, newValue: extend3(deep, clone3, copy) });
60449
60581
  } else if (typeof copy !== "undefined") {
@@ -71258,7 +71390,7 @@ var init_auth = __esm(() => {
71258
71390
 
71259
71391
  // src/utils/userAgent.ts
71260
71392
  function getURCodeUserAgent() {
71261
- return `ur/${"1.44.1"}`;
71393
+ return `ur/${"1.44.2"}`;
71262
71394
  }
71263
71395
 
71264
71396
  // src/utils/workloadContext.ts
@@ -71280,7 +71412,7 @@ function getUserAgent() {
71280
71412
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
71281
71413
  const workload = getWorkload();
71282
71414
  const workloadSuffix = workload ? `, workload/${workload}` : "";
71283
- return `ur-cli/${"1.44.1"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
71415
+ return `ur-cli/${"1.44.2"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
71284
71416
  }
71285
71417
  function getMCPUserAgent() {
71286
71418
  const parts = [];
@@ -71294,7 +71426,7 @@ function getMCPUserAgent() {
71294
71426
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
71295
71427
  }
71296
71428
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
71297
- return `ur/${"1.44.1"}${suffix}`;
71429
+ return `ur/${"1.44.2"}${suffix}`;
71298
71430
  }
71299
71431
  function getWebFetchUserAgent() {
71300
71432
  return `UR-User (${getURCodeUserAgent()})`;
@@ -71432,7 +71564,7 @@ var init_user = __esm(() => {
71432
71564
  deviceId,
71433
71565
  sessionId: getSessionId(),
71434
71566
  email: getEmail(),
71435
- appVersion: "1.44.1",
71567
+ appVersion: "1.44.2",
71436
71568
  platform: getHostPlatformForAnalytics(),
71437
71569
  organizationUuid,
71438
71570
  accountUuid,
@@ -77949,7 +78081,7 @@ var init_metadata = __esm(() => {
77949
78081
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
77950
78082
  WHITESPACE_REGEX = /\s+/;
77951
78083
  getVersionBase = memoize_default(() => {
77952
- const match = "1.44.1".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
78084
+ const match = "1.44.2".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
77953
78085
  return match ? match[0] : undefined;
77954
78086
  });
77955
78087
  buildEnvContext = memoize_default(async () => {
@@ -77989,7 +78121,7 @@ var init_metadata = __esm(() => {
77989
78121
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
77990
78122
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
77991
78123
  isURAiAuth: isURAISubscriber(),
77992
- version: "1.44.1",
78124
+ version: "1.44.2",
77993
78125
  versionBase: getVersionBase(),
77994
78126
  buildTime: "",
77995
78127
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -78659,7 +78791,7 @@ function initialize1PEventLogging() {
78659
78791
  const platform2 = getPlatform();
78660
78792
  const attributes = {
78661
78793
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
78662
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.44.1"
78794
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.44.2"
78663
78795
  };
78664
78796
  if (platform2 === "wsl") {
78665
78797
  const wslVersion = getWslVersion();
@@ -78686,7 +78818,7 @@ function initialize1PEventLogging() {
78686
78818
  })
78687
78819
  ]
78688
78820
  });
78689
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.44.1");
78821
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.44.2");
78690
78822
  }
78691
78823
  async function reinitialize1PEventLoggingIfConfigChanged() {
78692
78824
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -83988,7 +84120,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
83988
84120
  function formatA2AAgentCard(options = {}, pretty = true) {
83989
84121
  return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
83990
84122
  }
83991
- var urVersion = "1.44.1", coverage, priorityRoadmap;
84123
+ var urVersion = "1.44.2", coverage, priorityRoadmap;
83992
84124
  var init_trends = __esm(() => {
83993
84125
  coverage = [
83994
84126
  {
@@ -85983,7 +86115,7 @@ function getAttributionHeader(fingerprint) {
85983
86115
  if (!isAttributionHeaderEnabled()) {
85984
86116
  return "";
85985
86117
  }
85986
- const version2 = `${"1.44.1"}.${fingerprint}`;
86118
+ const version2 = `${"1.44.2"}.${fingerprint}`;
85987
86119
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
85988
86120
  const cch = "";
85989
86121
  const workload = getWorkload();
@@ -193953,7 +194085,7 @@ function getTelemetryAttributes() {
193953
194085
  attributes["session.id"] = sessionId;
193954
194086
  }
193955
194087
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
193956
- attributes["app.version"] = "1.44.1";
194088
+ attributes["app.version"] = "1.44.2";
193957
194089
  }
193958
194090
  const oauthAccount = getOauthAccountInfo();
193959
194091
  if (oauthAccount) {
@@ -215508,7 +215640,7 @@ class Protocol {
215508
215640
  };
215509
215641
  }
215510
215642
  }
215511
- function isPlainObject5(value) {
215643
+ function isPlainObject6(value) {
215512
215644
  return value !== null && typeof value === "object" && !Array.isArray(value);
215513
215645
  }
215514
215646
  function mergeCapabilities(base2, additional) {
@@ -215519,7 +215651,7 @@ function mergeCapabilities(base2, additional) {
215519
215651
  if (addValue === undefined)
215520
215652
  continue;
215521
215653
  const baseValue = result[k];
215522
- if (isPlainObject5(baseValue) && isPlainObject5(addValue)) {
215654
+ if (isPlainObject6(baseValue) && isPlainObject6(addValue)) {
215523
215655
  result[k] = { ...baseValue, ...addValue };
215524
215656
  } else {
215525
215657
  result[k] = addValue;
@@ -229341,7 +229473,7 @@ function getInstallationEnv() {
229341
229473
  return;
229342
229474
  }
229343
229475
  function getURCodeVersion() {
229344
- return "1.44.1";
229476
+ return "1.44.2";
229345
229477
  }
229346
229478
  async function getInstalledVSCodeExtensionVersion(command) {
229347
229479
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -232180,7 +232312,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
232180
232312
  const client2 = new Client({
232181
232313
  name: "ur",
232182
232314
  title: "UR",
232183
- version: "1.44.1",
232315
+ version: "1.44.2",
232184
232316
  description: "UR-Nexus autonomous engineering workflow engine",
232185
232317
  websiteUrl: PRODUCT_URL
232186
232318
  }, {
@@ -232534,7 +232666,7 @@ var init_client5 = __esm(() => {
232534
232666
  const client2 = new Client({
232535
232667
  name: "ur",
232536
232668
  title: "UR",
232537
- version: "1.44.1",
232669
+ version: "1.44.2",
232538
232670
  description: "UR-Nexus autonomous engineering workflow engine",
232539
232671
  websiteUrl: PRODUCT_URL
232540
232672
  }, {
@@ -242348,9 +242480,9 @@ async function assertMinVersion() {
242348
242480
  if (false) {}
242349
242481
  try {
242350
242482
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
242351
- if (versionConfig.minVersion && lt("1.44.1", versionConfig.minVersion)) {
242483
+ if (versionConfig.minVersion && lt("1.44.2", versionConfig.minVersion)) {
242352
242484
  console.error(`
242353
- It looks like your version of UR (${"1.44.1"}) needs an update.
242485
+ It looks like your version of UR (${"1.44.2"}) needs an update.
242354
242486
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
242355
242487
 
242356
242488
  To update, please run:
@@ -242566,7 +242698,7 @@ async function installGlobalPackage(specificVersion) {
242566
242698
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
242567
242699
  logEvent("tengu_auto_updater_lock_contention", {
242568
242700
  pid: process.pid,
242569
- currentVersion: "1.44.1"
242701
+ currentVersion: "1.44.2"
242570
242702
  });
242571
242703
  return "in_progress";
242572
242704
  }
@@ -242575,7 +242707,7 @@ async function installGlobalPackage(specificVersion) {
242575
242707
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
242576
242708
  logError2(new Error("Windows NPM detected in WSL environment"));
242577
242709
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
242578
- currentVersion: "1.44.1"
242710
+ currentVersion: "1.44.2"
242579
242711
  });
242580
242712
  console.error(`
242581
242713
  Error: Windows NPM detected in WSL
@@ -243110,7 +243242,7 @@ function detectLinuxGlobPatternWarnings() {
243110
243242
  }
243111
243243
  async function getDoctorDiagnostic() {
243112
243244
  const installationType = await getCurrentInstallationType();
243113
- const version2 = typeof MACRO !== "undefined" ? "1.44.1" : "unknown";
243245
+ const version2 = typeof MACRO !== "undefined" ? "1.44.2" : "unknown";
243114
243246
  const installationPath = await getInstallationPath();
243115
243247
  const invokedBinary = getInvokedBinary();
243116
243248
  const multipleInstallations = await detectMultipleInstallations();
@@ -244045,8 +244177,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
244045
244177
  const maxVersion = await getMaxVersion();
244046
244178
  if (maxVersion && gt(version2, maxVersion)) {
244047
244179
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
244048
- if (gte("1.44.1", maxVersion)) {
244049
- logForDebugging(`Native installer: current version ${"1.44.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
244180
+ if (gte("1.44.2", maxVersion)) {
244181
+ logForDebugging(`Native installer: current version ${"1.44.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
244050
244182
  logEvent("tengu_native_update_skipped_max_version", {
244051
244183
  latency_ms: Date.now() - startTime,
244052
244184
  max_version: maxVersion,
@@ -244057,7 +244189,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
244057
244189
  version2 = maxVersion;
244058
244190
  }
244059
244191
  }
244060
- if (!forceReinstall && version2 === "1.44.1" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
244192
+ if (!forceReinstall && version2 === "1.44.2" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
244061
244193
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
244062
244194
  logEvent("tengu_native_update_complete", {
244063
244195
  latency_ms: Date.now() - startTime,
@@ -331380,14 +331512,22 @@ function normalizeContentFromAPI(contentBlocks, tools, agentId) {
331380
331512
  }
331381
331513
  let normalizedInput;
331382
331514
  if (typeof contentBlock.input === "string") {
331383
- const parsed = safeParseJSON(contentBlock.input);
331515
+ let parsed = safeParseJSON(contentBlock.input, false);
331384
331516
  if (parsed === null && contentBlock.input.length > 0) {
331385
- logEvent("tengu_tool_input_json_parse_fail", {
331386
- toolName: sanitizeToolNameForAnalytics(contentBlock.name),
331387
- inputLen: contentBlock.input.length
331388
- });
331389
- if (process.env.USER_TYPE === "ant") {
331390
- logForDebugging(`tool input JSON parse fail: ${contentBlock.input.slice(0, 200)}`, { level: "warn" });
331517
+ parsed = parseToolInputJsonLenient(contentBlock.input);
331518
+ if (parsed !== null) {
331519
+ logEvent("tengu_tool_input_json_repaired", {
331520
+ toolName: sanitizeToolNameForAnalytics(contentBlock.name),
331521
+ inputLen: contentBlock.input.length
331522
+ });
331523
+ } else {
331524
+ logEvent("tengu_tool_input_json_parse_fail", {
331525
+ toolName: sanitizeToolNameForAnalytics(contentBlock.name),
331526
+ inputLen: contentBlock.input.length
331527
+ });
331528
+ if (process.env.USER_TYPE === "ant") {
331529
+ logForDebugging(`tool input JSON parse fail: ${contentBlock.input.slice(0, 200)}`, { level: "warn" });
331530
+ }
331391
331531
  }
331392
331532
  }
331393
331533
  normalizedInput = parsed ?? {};
@@ -341064,7 +341204,7 @@ function Feedback({
341064
341204
  platform: env2.platform,
341065
341205
  gitRepo: envInfo.isGit,
341066
341206
  terminal: env2.terminal,
341067
- version: "1.44.1",
341207
+ version: "1.44.2",
341068
341208
  transcript: normalizeMessagesForAPI(messages),
341069
341209
  errors: sanitizedErrors,
341070
341210
  lastApiRequest: getLastAPIRequest(),
@@ -341256,7 +341396,7 @@ function Feedback({
341256
341396
  ", ",
341257
341397
  env2.terminal,
341258
341398
  ", v",
341259
- "1.44.1"
341399
+ "1.44.2"
341260
341400
  ]
341261
341401
  }, undefined, true, undefined, this)
341262
341402
  ]
@@ -341362,7 +341502,7 @@ ${sanitizedDescription}
341362
341502
  ` + `**Environment Info**
341363
341503
  ` + `- Platform: ${env2.platform}
341364
341504
  ` + `- Terminal: ${env2.terminal}
341365
- ` + `- Version: ${"1.44.1"}
341505
+ ` + `- Version: ${"1.44.2"}
341366
341506
  ` + `- Feedback ID: ${feedbackId}
341367
341507
  ` + `
341368
341508
  **Errors**
@@ -344473,7 +344613,7 @@ function buildPrimarySection() {
344473
344613
  }, undefined, false, undefined, this);
344474
344614
  return [{
344475
344615
  label: "Version",
344476
- value: "1.44.1"
344616
+ value: "1.44.2"
344477
344617
  }, {
344478
344618
  label: "Session name",
344479
344619
  value: nameValue
@@ -347803,7 +347943,7 @@ function Config({
347803
347943
  }
347804
347944
  }, undefined, false, undefined, this)
347805
347945
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime177.jsxDEV(ChannelDowngradeDialog, {
347806
- currentVersion: "1.44.1",
347946
+ currentVersion: "1.44.2",
347807
347947
  onChoice: (choice) => {
347808
347948
  setShowSubmenu(null);
347809
347949
  setTabsHidden(false);
@@ -347815,7 +347955,7 @@ function Config({
347815
347955
  autoUpdatesChannel: "stable"
347816
347956
  };
347817
347957
  if (choice === "stay") {
347818
- newSettings.minimumVersion = "1.44.1";
347958
+ newSettings.minimumVersion = "1.44.2";
347819
347959
  }
347820
347960
  updateSettingsForSource("userSettings", newSettings);
347821
347961
  setSettingsData((prev_27) => ({
@@ -355885,7 +356025,7 @@ function HelpV2(t0) {
355885
356025
  let t6;
355886
356026
  if ($3[31] !== tabs) {
355887
356027
  t6 = /* @__PURE__ */ jsx_dev_runtime204.jsxDEV(Tabs, {
355888
- title: `UR v${"1.44.1"}`,
356028
+ title: `UR v${"1.44.2"}`,
355889
356029
  color: "professionalBlue",
355890
356030
  defaultTab: "general",
355891
356031
  children: tabs
@@ -356631,7 +356771,7 @@ function buildToolUseContext(tools, readFileStateCache) {
356631
356771
  async function handleInitialize(options2) {
356632
356772
  return {
356633
356773
  name: "UR",
356634
- version: "1.44.1",
356774
+ version: "1.44.2",
356635
356775
  protocolVersion: "0.1.0",
356636
356776
  workspaceRoot: options2.cwd,
356637
356777
  capabilities: {
@@ -376773,7 +376913,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
376773
376913
  return [];
376774
376914
  }
376775
376915
  }
376776
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.44.1") {
376916
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.44.2") {
376777
376917
  if (process.env.USER_TYPE === "ant") {
376778
376918
  const changelog = "";
376779
376919
  if (changelog) {
@@ -376800,7 +376940,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.44.1")
376800
376940
  releaseNotes
376801
376941
  };
376802
376942
  }
376803
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.44.1") {
376943
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.44.2") {
376804
376944
  if (process.env.USER_TYPE === "ant") {
376805
376945
  const changelog = "";
376806
376946
  if (changelog) {
@@ -377979,7 +378119,7 @@ function getRecentActivitySync() {
377979
378119
  return cachedActivity;
377980
378120
  }
377981
378121
  function getLogoDisplayData() {
377982
- const version2 = process.env.DEMO_VERSION ?? "1.44.1";
378122
+ const version2 = process.env.DEMO_VERSION ?? "1.44.2";
377983
378123
  const serverUrl = getDirectConnectServerUrl();
377984
378124
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
377985
378125
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -378768,7 +378908,7 @@ function LogoV2() {
378768
378908
  if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
378769
378909
  t2 = () => {
378770
378910
  const currentConfig2 = getGlobalConfig();
378771
- if (currentConfig2.lastReleaseNotesSeen === "1.44.1") {
378911
+ if (currentConfig2.lastReleaseNotesSeen === "1.44.2") {
378772
378912
  return;
378773
378913
  }
378774
378914
  saveGlobalConfig(_temp326);
@@ -379453,12 +379593,12 @@ function LogoV2() {
379453
379593
  return t41;
379454
379594
  }
379455
379595
  function _temp326(current) {
379456
- if (current.lastReleaseNotesSeen === "1.44.1") {
379596
+ if (current.lastReleaseNotesSeen === "1.44.2") {
379457
379597
  return current;
379458
379598
  }
379459
379599
  return {
379460
379600
  ...current,
379461
- lastReleaseNotesSeen: "1.44.1"
379601
+ lastReleaseNotesSeen: "1.44.2"
379462
379602
  };
379463
379603
  }
379464
379604
  function _temp243(s_0) {
@@ -596888,7 +597028,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
596888
597028
  smapsRollup,
596889
597029
  platform: process.platform,
596890
597030
  nodeVersion: process.version,
596891
- ccVersion: "1.44.1"
597031
+ ccVersion: "1.44.2"
596892
597032
  };
596893
597033
  }
596894
597034
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -597474,7 +597614,7 @@ var init_bridge_kick = __esm(() => {
597474
597614
  var call137 = async () => {
597475
597615
  return {
597476
597616
  type: "text",
597477
- value: "1.44.1"
597617
+ value: "1.44.2"
597478
597618
  };
597479
597619
  }, version2, version_default;
597480
597620
  var init_version = __esm(() => {
@@ -607567,7 +607707,7 @@ function generateHtmlReport(data, insights) {
607567
607707
  </html>`;
607568
607708
  }
607569
607709
  function buildExportData(data, insights, facets, remoteStats) {
607570
- const version3 = typeof MACRO !== "undefined" ? "1.44.1" : "unknown";
607710
+ const version3 = typeof MACRO !== "undefined" ? "1.44.2" : "unknown";
607571
607711
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
607572
607712
  const facets_summary = {
607573
607713
  total: facets.size,
@@ -611847,7 +611987,7 @@ var init_sessionStorage = __esm(() => {
611847
611987
  init_settings2();
611848
611988
  init_slowOperations();
611849
611989
  init_uuid();
611850
- VERSION5 = typeof MACRO !== "undefined" ? "1.44.1" : "unknown";
611990
+ VERSION5 = typeof MACRO !== "undefined" ? "1.44.2" : "unknown";
611851
611991
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
611852
611992
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
611853
611993
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -613052,7 +613192,7 @@ var init_filesystem = __esm(() => {
613052
613192
  });
613053
613193
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
613054
613194
  const nonce = randomBytes18(16).toString("hex");
613055
- return join202(getURTempDir(), "bundled-skills", "1.44.1", nonce);
613195
+ return join202(getURTempDir(), "bundled-skills", "1.44.2", nonce);
613056
613196
  });
613057
613197
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
613058
613198
  });
@@ -619343,7 +619483,7 @@ function computeFingerprint(messageText2, version3) {
619343
619483
  }
619344
619484
  function computeFingerprintFromMessages(messages) {
619345
619485
  const firstMessageText = extractFirstMessageText(messages);
619346
- return computeFingerprint(firstMessageText, "1.44.1");
619486
+ return computeFingerprint(firstMessageText, "1.44.2");
619347
619487
  }
619348
619488
  var FINGERPRINT_SALT = "59cf53e54c78";
619349
619489
  var init_fingerprint = () => {};
@@ -621217,7 +621357,7 @@ async function sideQuery(opts) {
621217
621357
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
621218
621358
  }
621219
621359
  const messageText2 = extractFirstUserMessageText(messages);
621220
- const fingerprint2 = computeFingerprint(messageText2, "1.44.1");
621360
+ const fingerprint2 = computeFingerprint(messageText2, "1.44.2");
621221
621361
  const attributionHeader = getAttributionHeader(fingerprint2);
621222
621362
  const systemBlocks = [
621223
621363
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -625954,7 +626094,7 @@ function buildSystemInitMessage(inputs) {
625954
626094
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
625955
626095
  apiKeySource: getURHQApiKeyWithSource().source,
625956
626096
  betas: getSdkBetas(),
625957
- ur_version: "1.44.1",
626097
+ ur_version: "1.44.2",
625958
626098
  output_style: outputStyle2,
625959
626099
  agents: inputs.agents.map((agent) => agent.agentType),
625960
626100
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -640582,7 +640722,7 @@ var init_useVoiceEnabled = __esm(() => {
640582
640722
  function getSemverPart(version3) {
640583
640723
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
640584
640724
  }
640585
- function useUpdateNotification(updatedVersion, initialVersion = "1.44.1") {
640725
+ function useUpdateNotification(updatedVersion, initialVersion = "1.44.2") {
640586
640726
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react226.useState(() => getSemverPart(initialVersion));
640587
640727
  if (!updatedVersion) {
640588
640728
  return null;
@@ -640631,7 +640771,7 @@ function AutoUpdater({
640631
640771
  return;
640632
640772
  }
640633
640773
  if (false) {}
640634
- const currentVersion = "1.44.1";
640774
+ const currentVersion = "1.44.2";
640635
640775
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
640636
640776
  let latestVersion = await getLatestVersion(channel);
640637
640777
  const isDisabled = isAutoUpdaterDisabled();
@@ -640860,12 +641000,12 @@ function NativeAutoUpdater({
640860
641000
  logEvent("tengu_native_auto_updater_start", {});
640861
641001
  try {
640862
641002
  const maxVersion = await getMaxVersion();
640863
- if (maxVersion && gt("1.44.1", maxVersion)) {
641003
+ if (maxVersion && gt("1.44.2", maxVersion)) {
640864
641004
  const msg = await getMaxVersionMessage();
640865
641005
  setMaxVersionIssue(msg ?? "affects your version");
640866
641006
  }
640867
641007
  const result = await installLatest(channel);
640868
- const currentVersion = "1.44.1";
641008
+ const currentVersion = "1.44.2";
640869
641009
  const latencyMs = Date.now() - startTime;
640870
641010
  if (result.lockFailed) {
640871
641011
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -641002,17 +641142,17 @@ function PackageManagerAutoUpdater(t0) {
641002
641142
  const maxVersion = await getMaxVersion();
641003
641143
  if (maxVersion && latest && gt(latest, maxVersion)) {
641004
641144
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
641005
- if (gte("1.44.1", maxVersion)) {
641006
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.44.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
641145
+ if (gte("1.44.2", maxVersion)) {
641146
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.44.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
641007
641147
  setUpdateAvailable(false);
641008
641148
  return;
641009
641149
  }
641010
641150
  latest = maxVersion;
641011
641151
  }
641012
- const hasUpdate = latest && !gte("1.44.1", latest) && !shouldSkipVersion(latest);
641152
+ const hasUpdate = latest && !gte("1.44.2", latest) && !shouldSkipVersion(latest);
641013
641153
  setUpdateAvailable(!!hasUpdate);
641014
641154
  if (hasUpdate) {
641015
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.44.1"} -> ${latest}`);
641155
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.44.2"} -> ${latest}`);
641016
641156
  }
641017
641157
  };
641018
641158
  $3[0] = t1;
@@ -641046,7 +641186,7 @@ function PackageManagerAutoUpdater(t0) {
641046
641186
  wrap: "truncate",
641047
641187
  children: [
641048
641188
  "currentVersion: ",
641049
- "1.44.1"
641189
+ "1.44.2"
641050
641190
  ]
641051
641191
  }, undefined, true, undefined, this);
641052
641192
  $3[3] = verbose;
@@ -653498,7 +653638,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
653498
653638
  project_dir: getOriginalCwd(),
653499
653639
  added_dirs: addedDirs
653500
653640
  },
653501
- version: "1.44.1",
653641
+ version: "1.44.2",
653502
653642
  output_style: {
653503
653643
  name: outputStyleName
653504
653644
  },
@@ -653581,7 +653721,7 @@ function StatusLineInner({
653581
653721
  const taskValues = Object.values(tasks2);
653582
653722
  const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
653583
653723
  const defaultStatusLineText = buildDefaultStatusBar({
653584
- version: "1.44.1",
653724
+ version: "1.44.2",
653585
653725
  providerLabel: providerRuntime.providerLabel,
653586
653726
  authMode: providerRuntime.authLabel,
653587
653727
  model: providerRuntime.model ?? renderModelName(mainLoopModel),
@@ -665069,7 +665209,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
665069
665209
  } catch {}
665070
665210
  const data = {
665071
665211
  trigger: trigger2,
665072
- version: "1.44.1",
665212
+ version: "1.44.2",
665073
665213
  platform: process.platform,
665074
665214
  transcript,
665075
665215
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -676954,7 +677094,7 @@ function WelcomeV2() {
676954
677094
  dimColor: true,
676955
677095
  children: [
676956
677096
  "v",
676957
- "1.44.1"
677097
+ "1.44.2"
676958
677098
  ]
676959
677099
  }, undefined, true, undefined, this)
676960
677100
  ]
@@ -678214,7 +678354,7 @@ function completeOnboarding() {
678214
678354
  saveGlobalConfig((current) => ({
678215
678355
  ...current,
678216
678356
  hasCompletedOnboarding: true,
678217
- lastOnboardingVersion: "1.44.1"
678357
+ lastOnboardingVersion: "1.44.2"
678218
678358
  }));
678219
678359
  }
678220
678360
  function showDialog(root2, renderer) {
@@ -683251,7 +683391,7 @@ function appendToLog(path24, message) {
683251
683391
  cwd: getFsImplementation().cwd(),
683252
683392
  userType: process.env.USER_TYPE,
683253
683393
  sessionId: getSessionId(),
683254
- version: "1.44.1"
683394
+ version: "1.44.2"
683255
683395
  };
683256
683396
  getLogWriter(path24).write(messageWithTimestamp);
683257
683397
  }
@@ -687345,8 +687485,8 @@ async function getEnvLessBridgeConfig() {
687345
687485
  }
687346
687486
  async function checkEnvLessBridgeMinVersion() {
687347
687487
  const cfg = await getEnvLessBridgeConfig();
687348
- if (cfg.min_version && lt("1.44.1", cfg.min_version)) {
687349
- return `Your version of UR (${"1.44.1"}) is too old for Remote Control.
687488
+ if (cfg.min_version && lt("1.44.2", cfg.min_version)) {
687489
+ return `Your version of UR (${"1.44.2"}) is too old for Remote Control.
687350
687490
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
687351
687491
  }
687352
687492
  return null;
@@ -687820,7 +687960,7 @@ async function initBridgeCore(params) {
687820
687960
  const rawApi = createBridgeApiClient({
687821
687961
  baseUrl,
687822
687962
  getAccessToken,
687823
- runnerVersion: "1.44.1",
687963
+ runnerVersion: "1.44.2",
687824
687964
  onDebug: logForDebugging,
687825
687965
  onAuth401,
687826
687966
  getTrustedDeviceToken
@@ -693502,7 +693642,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
693502
693642
  setCwd(cwd3);
693503
693643
  const server2 = new Server({
693504
693644
  name: "ur/tengu",
693505
- version: "1.44.1"
693645
+ version: "1.44.2"
693506
693646
  }, {
693507
693647
  capabilities: {
693508
693648
  tools: {}
@@ -695544,7 +695684,7 @@ async function update() {
695544
695684
  logEvent("tengu_update_check", {});
695545
695685
  const diagnostic = await getDoctorDiagnostic();
695546
695686
  const result = await checkUpgradeStatus({
695547
- currentVersion: "1.44.1",
695687
+ currentVersion: "1.44.2",
695548
695688
  packageName: UR_AGENT_PACKAGE_NAME,
695549
695689
  installationType: diagnostic.installationType,
695550
695690
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -696790,7 +696930,7 @@ ${customInstructions}` : customInstructions;
696790
696930
  }
696791
696931
  }
696792
696932
  logForDiagnosticsNoPII("info", "started", {
696793
- version: "1.44.1",
696933
+ version: "1.44.2",
696794
696934
  is_native_binary: isInBundledMode()
696795
696935
  });
696796
696936
  registerCleanup(async () => {
@@ -697576,7 +697716,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
697576
697716
  pendingHookMessages
697577
697717
  }, renderAndRun);
697578
697718
  }
697579
- }).version("1.44.1 (UR-Nexus)", "-v, --version", "Output the version number");
697719
+ }).version("1.44.2 (UR-Nexus)", "-v, --version", "Output the version number");
697580
697720
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
697581
697721
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
697582
697722
  if (canUserConfigureAdvisor()) {
@@ -698491,7 +698631,7 @@ if (false) {}
698491
698631
  async function main2() {
698492
698632
  const args = process.argv.slice(2);
698493
698633
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
698494
- console.log(`${"1.44.1"} (UR-Nexus)`);
698634
+ console.log(`${"1.44.2"} (UR-Nexus)`);
698495
698635
  return;
698496
698636
  }
698497
698637
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
@@ -44,7 +44,7 @@
44
44
  <main id="content" class="content">
45
45
  <header class="topbar">
46
46
  <div>
47
- <p class="eyebrow">Version 1.44.0</p>
47
+ <p class="eyebrow">Version 1.44.2</p>
48
48
  <h1>UR-Nexus Documentation</h1>
49
49
  <p class="lead">A practical, tutorial-style reference for installing, configuring, automating, extending, and operating UR-Nexus.</p>
50
50
  </div>
@@ -2,7 +2,7 @@
2
2
  "name": "ur-inline-diffs",
3
3
  "displayName": "UR Inline Diffs",
4
4
  "description": "Review, apply, and reject UR inline diff bundles from .ur/ide/diffs inside VS Code.",
5
- "version": "1.44.0",
5
+ "version": "1.44.2",
6
6
  "publisher": "ur-nexus",
7
7
  "engines": {
8
8
  "vscode": "^1.92.0"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ur-agent",
3
- "version": "1.44.1",
3
+ "version": "1.44.2",
4
4
  "description": "UR-Nexus — autonomous engineering workflow engine (plan, execute, test, verify, document, benchmark, reproduce)",
5
5
  "type": "module",
6
6
  "packageManager": "bun@1.3.14",