ur-agent 1.44.0 → 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 +31 -0
- package/dist/cli.js +283 -113
- package/documentation/index.html +1 -1
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,36 @@
|
|
|
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
|
+
|
|
27
|
+
## 1.44.1
|
|
28
|
+
|
|
29
|
+
- Fix task board rendering: finished, failed, and skipped tasks now render as
|
|
30
|
+
checked instead of unchecked.
|
|
31
|
+
- Deduplicate consecutive task board emissions and keep final boards clean
|
|
32
|
+
(single header, single progress summary).
|
|
33
|
+
|
|
3
34
|
## 1.44.0
|
|
4
35
|
|
|
5
36
|
- Add `verifier.askBeforeGates` setting (default `false`). When enabled, UR asks
|
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();
|
|
@@ -51805,7 +51870,7 @@ function isProviderRuntimeSelectable(providerId, env4 = process.env) {
|
|
|
51805
51870
|
return getProviderRuntimeBlockReason(providerId, env4) === null;
|
|
51806
51871
|
}
|
|
51807
51872
|
function listProviders(_options = {}) {
|
|
51808
|
-
return PROVIDER_IDS.map((id) => PROVIDERS[id]).filter((provider) => provider.id !== "subscription");
|
|
51873
|
+
return PROVIDER_IDS.map((id) => PROVIDERS[id]).filter((provider) => provider.id !== "subscription" && !provider.disabled);
|
|
51809
51874
|
}
|
|
51810
51875
|
function hasSecretLikeValue(value) {
|
|
51811
51876
|
const trimmed = value.trim();
|
|
@@ -53025,7 +53090,8 @@ var init_providerRegistry = __esm(() => {
|
|
|
53025
53090
|
versionArgs: ["--version"],
|
|
53026
53091
|
statusArgs: ["login", "status"],
|
|
53027
53092
|
loginArgs: ["login"],
|
|
53028
|
-
deviceLoginArgs: ["login", "--device-auth"]
|
|
53093
|
+
deviceLoginArgs: ["login", "--device-auth"],
|
|
53094
|
+
disabled: true
|
|
53029
53095
|
},
|
|
53030
53096
|
"claude-code-cli": {
|
|
53031
53097
|
id: "claude-code-cli",
|
|
@@ -53045,7 +53111,8 @@ var init_providerRegistry = __esm(() => {
|
|
|
53045
53111
|
commandCandidates: ["claude"],
|
|
53046
53112
|
versionArgs: ["--version"],
|
|
53047
53113
|
statusArgs: ["auth", "status"],
|
|
53048
|
-
loginArgs: ["auth", "login"]
|
|
53114
|
+
loginArgs: ["auth", "login"],
|
|
53115
|
+
disabled: true
|
|
53049
53116
|
},
|
|
53050
53117
|
"gemini-cli": {
|
|
53051
53118
|
id: "gemini-cli",
|
|
@@ -53065,7 +53132,8 @@ var init_providerRegistry = __esm(() => {
|
|
|
53065
53132
|
commandCandidates: ["gemini"],
|
|
53066
53133
|
versionArgs: ["--version"],
|
|
53067
53134
|
loginArgs: [],
|
|
53068
|
-
unsupportedPersonalAccountMessage: "Personal Google account login is not enabled by UR-Nexus. Use an official Gemini Code Assist Standard/Enterprise path if your Gemini CLI supports it."
|
|
53135
|
+
unsupportedPersonalAccountMessage: "Personal Google account login is not enabled by UR-Nexus. Use an official Gemini Code Assist Standard/Enterprise path if your Gemini CLI supports it.",
|
|
53136
|
+
disabled: true
|
|
53069
53137
|
},
|
|
53070
53138
|
"antigravity-cli": {
|
|
53071
53139
|
id: "antigravity-cli",
|
|
@@ -53084,7 +53152,8 @@ var init_providerRegistry = __esm(() => {
|
|
|
53084
53152
|
accessPathLabel: "subscription login via official Antigravity CLI",
|
|
53085
53153
|
commandCandidates: ["agy", "antigravity", "google-antigravity", "ag"],
|
|
53086
53154
|
versionArgs: ["--version"],
|
|
53087
|
-
loginArgs: []
|
|
53155
|
+
loginArgs: [],
|
|
53156
|
+
disabled: true
|
|
53088
53157
|
},
|
|
53089
53158
|
"openai-api": {
|
|
53090
53159
|
id: "openai-api",
|
|
@@ -53203,11 +53272,12 @@ var init_providerRegistry = __esm(() => {
|
|
|
53203
53272
|
listModels: "openai-compatible-models",
|
|
53204
53273
|
validateModel: "discovered-list",
|
|
53205
53274
|
runtimeKind: "ur-native",
|
|
53206
|
-
...
|
|
53275
|
+
...SUBSCRIPTION_CLI_CAPABILITIES,
|
|
53207
53276
|
authMode: "local",
|
|
53208
53277
|
legalPath: "local OpenAI-compatible server",
|
|
53209
53278
|
accessPathLabel: "local OpenAI-compatible endpoint",
|
|
53210
53279
|
defaultBaseUrl: "http://localhost:1234/v1",
|
|
53280
|
+
disabled: true,
|
|
53211
53281
|
endpointKind: "openai-compatible"
|
|
53212
53282
|
},
|
|
53213
53283
|
"llama.cpp": {
|
|
@@ -54581,11 +54651,8 @@ function parseArgs(raw) {
|
|
|
54581
54651
|
const v = JSON.parse(s);
|
|
54582
54652
|
return v && typeof v === "object" ? v : {};
|
|
54583
54653
|
} catch {
|
|
54584
|
-
|
|
54585
|
-
|
|
54586
|
-
} catch {
|
|
54587
|
-
return {};
|
|
54588
|
-
}
|
|
54654
|
+
const repaired = parseToolInputJsonLenient(s);
|
|
54655
|
+
return repaired && typeof repaired === "object" && !Array.isArray(repaired) ? repaired : {};
|
|
54589
54656
|
}
|
|
54590
54657
|
}
|
|
54591
54658
|
function parseKimiToolCalls(text) {
|
|
@@ -54705,6 +54772,10 @@ function parseJsonObject(text) {
|
|
|
54705
54772
|
const end = findJsonObjectEnd(trimmed, 0);
|
|
54706
54773
|
if (end !== null && trimmed.slice(end).trim())
|
|
54707
54774
|
return null;
|
|
54775
|
+
const repaired = parseToolInputJsonLenient(trimmed);
|
|
54776
|
+
if (repaired && typeof repaired === "object" && !Array.isArray(repaired)) {
|
|
54777
|
+
return repaired;
|
|
54778
|
+
}
|
|
54708
54779
|
return parseLooseWriteObject(trimmed) ?? parseLooseEditObject(trimmed);
|
|
54709
54780
|
}
|
|
54710
54781
|
}
|
|
@@ -55230,6 +55301,7 @@ function parseClarifyingQuestions(text, options = {}) {
|
|
|
55230
55301
|
}
|
|
55231
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;
|
|
55232
55303
|
var init_kimiToolCalls = __esm(() => {
|
|
55304
|
+
init_json();
|
|
55233
55305
|
SECTION_RE = /<\|tool_calls_section_begin\|>([\s\S]*?)<\|tool_calls_section_end\|>/g;
|
|
55234
55306
|
CALL_RE = /<\|tool_call_begin\|>([\s\S]*?)<\|tool_call_argument_begin\|>([\s\S]*?)<\|tool_call_end\|>/g;
|
|
55235
55307
|
STRAY_RE = /<\|tool_calls?_section_(?:begin|end)\|>|<\|tool_call_(?:begin|end|argument_begin)\|>/g;
|
|
@@ -55273,6 +55345,7 @@ var init_kimiToolCalls = __esm(() => {
|
|
|
55273
55345
|
// src/services/api/ollama.ts
|
|
55274
55346
|
var exports_ollama = {};
|
|
55275
55347
|
__export(exports_ollama, {
|
|
55348
|
+
mergeToolCalls: () => mergeToolCalls,
|
|
55276
55349
|
getOllamaRequestTimeoutMs: () => getOllamaRequestTimeoutMs,
|
|
55277
55350
|
getEffectiveOllamaBaseUrl: () => getEffectiveOllamaBaseUrl,
|
|
55278
55351
|
createOllamaURHQClient: () => createOllamaURHQClient
|
|
@@ -55425,9 +55498,15 @@ function isTruthyEnv(value) {
|
|
|
55425
55498
|
function toOllamaChatRequest(params, stream4, capabilities) {
|
|
55426
55499
|
const supportsTools = modelCapabilityEnabled(capabilities, "tools");
|
|
55427
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
|
+
}
|
|
55428
55507
|
const systemMessage = {
|
|
55429
55508
|
role: "system",
|
|
55430
|
-
content: systemToText(params.system)
|
|
55509
|
+
content: systemToText(params.system) + (toolsDropped ? TEXT_TOOL_CALL_HINT : "")
|
|
55431
55510
|
};
|
|
55432
55511
|
const think = getOllamaThink(params, capabilities);
|
|
55433
55512
|
const request = {
|
|
@@ -56078,18 +56157,63 @@ function ollamaResponseToURHQMessage(response, params) {
|
|
|
56078
56157
|
usage: usageFromOllama(response, text + thinking)
|
|
56079
56158
|
};
|
|
56080
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
|
+
}
|
|
56081
56181
|
function mergeToolCalls(target, incoming) {
|
|
56082
|
-
for (
|
|
56083
|
-
const
|
|
56084
|
-
if (!
|
|
56182
|
+
for (const current of incoming) {
|
|
56183
|
+
const fn = current?.function;
|
|
56184
|
+
if (!fn) {
|
|
56085
56185
|
continue;
|
|
56086
56186
|
}
|
|
56087
|
-
|
|
56088
|
-
|
|
56089
|
-
|
|
56090
|
-
|
|
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;
|
|
56091
56193
|
}
|
|
56092
|
-
|
|
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 ?? {} } });
|
|
56093
56217
|
}
|
|
56094
56218
|
}
|
|
56095
56219
|
function getStopReason(response, toolCalls) {
|
|
@@ -56182,20 +56306,33 @@ function parseToolInput(input) {
|
|
|
56182
56306
|
if (typeof input !== "string") {
|
|
56183
56307
|
return input ?? {};
|
|
56184
56308
|
}
|
|
56185
|
-
|
|
56186
|
-
|
|
56187
|
-
|
|
56188
|
-
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" });
|
|
56189
56312
|
}
|
|
56313
|
+
return parsed ?? {};
|
|
56190
56314
|
}
|
|
56191
|
-
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;
|
|
56192
56316
|
var init_ollama = __esm(() => {
|
|
56193
56317
|
init_urhq_sdk();
|
|
56194
56318
|
init_ollamaModels();
|
|
56195
56319
|
init_ollamaConfig();
|
|
56196
56320
|
init_ollamaTuning();
|
|
56197
56321
|
init_kimiToolCalls();
|
|
56322
|
+
init_json();
|
|
56323
|
+
init_debug();
|
|
56198
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
|
+
`);
|
|
56199
56336
|
});
|
|
56200
56337
|
|
|
56201
56338
|
// src/services/api/providerHttp.ts
|
|
@@ -60377,7 +60514,7 @@ var require_extend = __commonJS((exports, module) => {
|
|
|
60377
60514
|
}
|
|
60378
60515
|
return toStr.call(arr) === "[object Array]";
|
|
60379
60516
|
};
|
|
60380
|
-
var
|
|
60517
|
+
var isPlainObject6 = function isPlainObject7(obj) {
|
|
60381
60518
|
if (!obj || toStr.call(obj) !== "[object Object]") {
|
|
60382
60519
|
return false;
|
|
60383
60520
|
}
|
|
@@ -60433,12 +60570,12 @@ var require_extend = __commonJS((exports, module) => {
|
|
|
60433
60570
|
src = getProperty(target, name);
|
|
60434
60571
|
copy = getProperty(options, name);
|
|
60435
60572
|
if (target !== copy) {
|
|
60436
|
-
if (deep && copy && (
|
|
60573
|
+
if (deep && copy && (isPlainObject6(copy) || (copyIsArray = isArray3(copy)))) {
|
|
60437
60574
|
if (copyIsArray) {
|
|
60438
60575
|
copyIsArray = false;
|
|
60439
60576
|
clone3 = src && isArray3(src) ? src : [];
|
|
60440
60577
|
} else {
|
|
60441
|
-
clone3 = src &&
|
|
60578
|
+
clone3 = src && isPlainObject6(src) ? src : {};
|
|
60442
60579
|
}
|
|
60443
60580
|
setProperty2(target, { name, newValue: extend3(deep, clone3, copy) });
|
|
60444
60581
|
} else if (typeof copy !== "undefined") {
|
|
@@ -71253,7 +71390,7 @@ var init_auth = __esm(() => {
|
|
|
71253
71390
|
|
|
71254
71391
|
// src/utils/userAgent.ts
|
|
71255
71392
|
function getURCodeUserAgent() {
|
|
71256
|
-
return `ur/${"1.44.
|
|
71393
|
+
return `ur/${"1.44.2"}`;
|
|
71257
71394
|
}
|
|
71258
71395
|
|
|
71259
71396
|
// src/utils/workloadContext.ts
|
|
@@ -71275,7 +71412,7 @@ function getUserAgent() {
|
|
|
71275
71412
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
71276
71413
|
const workload = getWorkload();
|
|
71277
71414
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
71278
|
-
return `ur-cli/${"1.44.
|
|
71415
|
+
return `ur-cli/${"1.44.2"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
71279
71416
|
}
|
|
71280
71417
|
function getMCPUserAgent() {
|
|
71281
71418
|
const parts = [];
|
|
@@ -71289,7 +71426,7 @@ function getMCPUserAgent() {
|
|
|
71289
71426
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
71290
71427
|
}
|
|
71291
71428
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
71292
|
-
return `ur/${"1.44.
|
|
71429
|
+
return `ur/${"1.44.2"}${suffix}`;
|
|
71293
71430
|
}
|
|
71294
71431
|
function getWebFetchUserAgent() {
|
|
71295
71432
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -71427,7 +71564,7 @@ var init_user = __esm(() => {
|
|
|
71427
71564
|
deviceId,
|
|
71428
71565
|
sessionId: getSessionId(),
|
|
71429
71566
|
email: getEmail(),
|
|
71430
|
-
appVersion: "1.44.
|
|
71567
|
+
appVersion: "1.44.2",
|
|
71431
71568
|
platform: getHostPlatformForAnalytics(),
|
|
71432
71569
|
organizationUuid,
|
|
71433
71570
|
accountUuid,
|
|
@@ -77944,7 +78081,7 @@ var init_metadata = __esm(() => {
|
|
|
77944
78081
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
77945
78082
|
WHITESPACE_REGEX = /\s+/;
|
|
77946
78083
|
getVersionBase = memoize_default(() => {
|
|
77947
|
-
const match = "1.44.
|
|
78084
|
+
const match = "1.44.2".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
77948
78085
|
return match ? match[0] : undefined;
|
|
77949
78086
|
});
|
|
77950
78087
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -77984,7 +78121,7 @@ var init_metadata = __esm(() => {
|
|
|
77984
78121
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
77985
78122
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
77986
78123
|
isURAiAuth: isURAISubscriber(),
|
|
77987
|
-
version: "1.44.
|
|
78124
|
+
version: "1.44.2",
|
|
77988
78125
|
versionBase: getVersionBase(),
|
|
77989
78126
|
buildTime: "",
|
|
77990
78127
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -78654,7 +78791,7 @@ function initialize1PEventLogging() {
|
|
|
78654
78791
|
const platform2 = getPlatform();
|
|
78655
78792
|
const attributes = {
|
|
78656
78793
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
78657
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.44.
|
|
78794
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.44.2"
|
|
78658
78795
|
};
|
|
78659
78796
|
if (platform2 === "wsl") {
|
|
78660
78797
|
const wslVersion = getWslVersion();
|
|
@@ -78681,7 +78818,7 @@ function initialize1PEventLogging() {
|
|
|
78681
78818
|
})
|
|
78682
78819
|
]
|
|
78683
78820
|
});
|
|
78684
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.44.
|
|
78821
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.44.2");
|
|
78685
78822
|
}
|
|
78686
78823
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
78687
78824
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -83983,7 +84120,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
|
|
|
83983
84120
|
function formatA2AAgentCard(options = {}, pretty = true) {
|
|
83984
84121
|
return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
|
|
83985
84122
|
}
|
|
83986
|
-
var urVersion = "1.44.
|
|
84123
|
+
var urVersion = "1.44.2", coverage, priorityRoadmap;
|
|
83987
84124
|
var init_trends = __esm(() => {
|
|
83988
84125
|
coverage = [
|
|
83989
84126
|
{
|
|
@@ -85978,7 +86115,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
85978
86115
|
if (!isAttributionHeaderEnabled()) {
|
|
85979
86116
|
return "";
|
|
85980
86117
|
}
|
|
85981
|
-
const version2 = `${"1.44.
|
|
86118
|
+
const version2 = `${"1.44.2"}.${fingerprint}`;
|
|
85982
86119
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
85983
86120
|
const cch = "";
|
|
85984
86121
|
const workload = getWorkload();
|
|
@@ -193948,7 +194085,7 @@ function getTelemetryAttributes() {
|
|
|
193948
194085
|
attributes["session.id"] = sessionId;
|
|
193949
194086
|
}
|
|
193950
194087
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
193951
|
-
attributes["app.version"] = "1.44.
|
|
194088
|
+
attributes["app.version"] = "1.44.2";
|
|
193952
194089
|
}
|
|
193953
194090
|
const oauthAccount = getOauthAccountInfo();
|
|
193954
194091
|
if (oauthAccount) {
|
|
@@ -215503,7 +215640,7 @@ class Protocol {
|
|
|
215503
215640
|
};
|
|
215504
215641
|
}
|
|
215505
215642
|
}
|
|
215506
|
-
function
|
|
215643
|
+
function isPlainObject6(value) {
|
|
215507
215644
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
215508
215645
|
}
|
|
215509
215646
|
function mergeCapabilities(base2, additional) {
|
|
@@ -215514,7 +215651,7 @@ function mergeCapabilities(base2, additional) {
|
|
|
215514
215651
|
if (addValue === undefined)
|
|
215515
215652
|
continue;
|
|
215516
215653
|
const baseValue = result[k];
|
|
215517
|
-
if (
|
|
215654
|
+
if (isPlainObject6(baseValue) && isPlainObject6(addValue)) {
|
|
215518
215655
|
result[k] = { ...baseValue, ...addValue };
|
|
215519
215656
|
} else {
|
|
215520
215657
|
result[k] = addValue;
|
|
@@ -229336,7 +229473,7 @@ function getInstallationEnv() {
|
|
|
229336
229473
|
return;
|
|
229337
229474
|
}
|
|
229338
229475
|
function getURCodeVersion() {
|
|
229339
|
-
return "1.44.
|
|
229476
|
+
return "1.44.2";
|
|
229340
229477
|
}
|
|
229341
229478
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
229342
229479
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -232175,7 +232312,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
232175
232312
|
const client2 = new Client({
|
|
232176
232313
|
name: "ur",
|
|
232177
232314
|
title: "UR",
|
|
232178
|
-
version: "1.44.
|
|
232315
|
+
version: "1.44.2",
|
|
232179
232316
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
232180
232317
|
websiteUrl: PRODUCT_URL
|
|
232181
232318
|
}, {
|
|
@@ -232529,7 +232666,7 @@ var init_client5 = __esm(() => {
|
|
|
232529
232666
|
const client2 = new Client({
|
|
232530
232667
|
name: "ur",
|
|
232531
232668
|
title: "UR",
|
|
232532
|
-
version: "1.44.
|
|
232669
|
+
version: "1.44.2",
|
|
232533
232670
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
232534
232671
|
websiteUrl: PRODUCT_URL
|
|
232535
232672
|
}, {
|
|
@@ -242343,9 +242480,9 @@ async function assertMinVersion() {
|
|
|
242343
242480
|
if (false) {}
|
|
242344
242481
|
try {
|
|
242345
242482
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
242346
|
-
if (versionConfig.minVersion && lt("1.44.
|
|
242483
|
+
if (versionConfig.minVersion && lt("1.44.2", versionConfig.minVersion)) {
|
|
242347
242484
|
console.error(`
|
|
242348
|
-
It looks like your version of UR (${"1.44.
|
|
242485
|
+
It looks like your version of UR (${"1.44.2"}) needs an update.
|
|
242349
242486
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
242350
242487
|
|
|
242351
242488
|
To update, please run:
|
|
@@ -242561,7 +242698,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
242561
242698
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
242562
242699
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
242563
242700
|
pid: process.pid,
|
|
242564
|
-
currentVersion: "1.44.
|
|
242701
|
+
currentVersion: "1.44.2"
|
|
242565
242702
|
});
|
|
242566
242703
|
return "in_progress";
|
|
242567
242704
|
}
|
|
@@ -242570,7 +242707,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
242570
242707
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
242571
242708
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
242572
242709
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
242573
|
-
currentVersion: "1.44.
|
|
242710
|
+
currentVersion: "1.44.2"
|
|
242574
242711
|
});
|
|
242575
242712
|
console.error(`
|
|
242576
242713
|
Error: Windows NPM detected in WSL
|
|
@@ -243105,7 +243242,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
243105
243242
|
}
|
|
243106
243243
|
async function getDoctorDiagnostic() {
|
|
243107
243244
|
const installationType = await getCurrentInstallationType();
|
|
243108
|
-
const version2 = typeof MACRO !== "undefined" ? "1.44.
|
|
243245
|
+
const version2 = typeof MACRO !== "undefined" ? "1.44.2" : "unknown";
|
|
243109
243246
|
const installationPath = await getInstallationPath();
|
|
243110
243247
|
const invokedBinary = getInvokedBinary();
|
|
243111
243248
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -244040,8 +244177,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
244040
244177
|
const maxVersion = await getMaxVersion();
|
|
244041
244178
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
244042
244179
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
244043
|
-
if (gte("1.44.
|
|
244044
|
-
logForDebugging(`Native installer: current version ${"1.44.
|
|
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`);
|
|
244045
244182
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
244046
244183
|
latency_ms: Date.now() - startTime,
|
|
244047
244184
|
max_version: maxVersion,
|
|
@@ -244052,7 +244189,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
244052
244189
|
version2 = maxVersion;
|
|
244053
244190
|
}
|
|
244054
244191
|
}
|
|
244055
|
-
if (!forceReinstall && version2 === "1.44.
|
|
244192
|
+
if (!forceReinstall && version2 === "1.44.2" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
244056
244193
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
244057
244194
|
logEvent("tengu_native_update_complete", {
|
|
244058
244195
|
latency_ms: Date.now() - startTime,
|
|
@@ -246583,6 +246720,16 @@ function getTaskIcon(status) {
|
|
|
246583
246720
|
icon: figures_default.squareSmall,
|
|
246584
246721
|
color: undefined
|
|
246585
246722
|
};
|
|
246723
|
+
case "failed":
|
|
246724
|
+
return {
|
|
246725
|
+
icon: figures_default.cross,
|
|
246726
|
+
color: "error"
|
|
246727
|
+
};
|
|
246728
|
+
case "skipped":
|
|
246729
|
+
return {
|
|
246730
|
+
icon: figures_default.warning,
|
|
246731
|
+
color: "warning"
|
|
246732
|
+
};
|
|
246586
246733
|
}
|
|
246587
246734
|
}
|
|
246588
246735
|
function TaskItem(t0) {
|
|
@@ -331365,14 +331512,22 @@ function normalizeContentFromAPI(contentBlocks, tools, agentId) {
|
|
|
331365
331512
|
}
|
|
331366
331513
|
let normalizedInput;
|
|
331367
331514
|
if (typeof contentBlock.input === "string") {
|
|
331368
|
-
|
|
331515
|
+
let parsed = safeParseJSON(contentBlock.input, false);
|
|
331369
331516
|
if (parsed === null && contentBlock.input.length > 0) {
|
|
331370
|
-
|
|
331371
|
-
|
|
331372
|
-
|
|
331373
|
-
|
|
331374
|
-
|
|
331375
|
-
|
|
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
|
+
}
|
|
331376
331531
|
}
|
|
331377
331532
|
}
|
|
331378
331533
|
normalizedInput = parsed ?? {};
|
|
@@ -341049,7 +341204,7 @@ function Feedback({
|
|
|
341049
341204
|
platform: env2.platform,
|
|
341050
341205
|
gitRepo: envInfo.isGit,
|
|
341051
341206
|
terminal: env2.terminal,
|
|
341052
|
-
version: "1.44.
|
|
341207
|
+
version: "1.44.2",
|
|
341053
341208
|
transcript: normalizeMessagesForAPI(messages),
|
|
341054
341209
|
errors: sanitizedErrors,
|
|
341055
341210
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -341241,7 +341396,7 @@ function Feedback({
|
|
|
341241
341396
|
", ",
|
|
341242
341397
|
env2.terminal,
|
|
341243
341398
|
", v",
|
|
341244
|
-
"1.44.
|
|
341399
|
+
"1.44.2"
|
|
341245
341400
|
]
|
|
341246
341401
|
}, undefined, true, undefined, this)
|
|
341247
341402
|
]
|
|
@@ -341347,7 +341502,7 @@ ${sanitizedDescription}
|
|
|
341347
341502
|
` + `**Environment Info**
|
|
341348
341503
|
` + `- Platform: ${env2.platform}
|
|
341349
341504
|
` + `- Terminal: ${env2.terminal}
|
|
341350
|
-
` + `- Version: ${"1.44.
|
|
341505
|
+
` + `- Version: ${"1.44.2"}
|
|
341351
341506
|
` + `- Feedback ID: ${feedbackId}
|
|
341352
341507
|
` + `
|
|
341353
341508
|
**Errors**
|
|
@@ -344458,7 +344613,7 @@ function buildPrimarySection() {
|
|
|
344458
344613
|
}, undefined, false, undefined, this);
|
|
344459
344614
|
return [{
|
|
344460
344615
|
label: "Version",
|
|
344461
|
-
value: "1.44.
|
|
344616
|
+
value: "1.44.2"
|
|
344462
344617
|
}, {
|
|
344463
344618
|
label: "Session name",
|
|
344464
344619
|
value: nameValue
|
|
@@ -347788,7 +347943,7 @@ function Config({
|
|
|
347788
347943
|
}
|
|
347789
347944
|
}, undefined, false, undefined, this)
|
|
347790
347945
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime177.jsxDEV(ChannelDowngradeDialog, {
|
|
347791
|
-
currentVersion: "1.44.
|
|
347946
|
+
currentVersion: "1.44.2",
|
|
347792
347947
|
onChoice: (choice) => {
|
|
347793
347948
|
setShowSubmenu(null);
|
|
347794
347949
|
setTabsHidden(false);
|
|
@@ -347800,7 +347955,7 @@ function Config({
|
|
|
347800
347955
|
autoUpdatesChannel: "stable"
|
|
347801
347956
|
};
|
|
347802
347957
|
if (choice === "stay") {
|
|
347803
|
-
newSettings.minimumVersion = "1.44.
|
|
347958
|
+
newSettings.minimumVersion = "1.44.2";
|
|
347804
347959
|
}
|
|
347805
347960
|
updateSettingsForSource("userSettings", newSettings);
|
|
347806
347961
|
setSettingsData((prev_27) => ({
|
|
@@ -355870,7 +356025,7 @@ function HelpV2(t0) {
|
|
|
355870
356025
|
let t6;
|
|
355871
356026
|
if ($3[31] !== tabs) {
|
|
355872
356027
|
t6 = /* @__PURE__ */ jsx_dev_runtime204.jsxDEV(Tabs, {
|
|
355873
|
-
title: `UR v${"1.44.
|
|
356028
|
+
title: `UR v${"1.44.2"}`,
|
|
355874
356029
|
color: "professionalBlue",
|
|
355875
356030
|
defaultTab: "general",
|
|
355876
356031
|
children: tabs
|
|
@@ -356616,7 +356771,7 @@ function buildToolUseContext(tools, readFileStateCache) {
|
|
|
356616
356771
|
async function handleInitialize(options2) {
|
|
356617
356772
|
return {
|
|
356618
356773
|
name: "UR",
|
|
356619
|
-
version: "1.44.
|
|
356774
|
+
version: "1.44.2",
|
|
356620
356775
|
protocolVersion: "0.1.0",
|
|
356621
356776
|
workspaceRoot: options2.cwd,
|
|
356622
356777
|
capabilities: {
|
|
@@ -376758,7 +376913,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
376758
376913
|
return [];
|
|
376759
376914
|
}
|
|
376760
376915
|
}
|
|
376761
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.44.
|
|
376916
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.44.2") {
|
|
376762
376917
|
if (process.env.USER_TYPE === "ant") {
|
|
376763
376918
|
const changelog = "";
|
|
376764
376919
|
if (changelog) {
|
|
@@ -376785,7 +376940,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.44.0")
|
|
|
376785
376940
|
releaseNotes
|
|
376786
376941
|
};
|
|
376787
376942
|
}
|
|
376788
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.44.
|
|
376943
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.44.2") {
|
|
376789
376944
|
if (process.env.USER_TYPE === "ant") {
|
|
376790
376945
|
const changelog = "";
|
|
376791
376946
|
if (changelog) {
|
|
@@ -377964,7 +378119,7 @@ function getRecentActivitySync() {
|
|
|
377964
378119
|
return cachedActivity;
|
|
377965
378120
|
}
|
|
377966
378121
|
function getLogoDisplayData() {
|
|
377967
|
-
const version2 = process.env.DEMO_VERSION ?? "1.44.
|
|
378122
|
+
const version2 = process.env.DEMO_VERSION ?? "1.44.2";
|
|
377968
378123
|
const serverUrl = getDirectConnectServerUrl();
|
|
377969
378124
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
377970
378125
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -378753,7 +378908,7 @@ function LogoV2() {
|
|
|
378753
378908
|
if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
378754
378909
|
t2 = () => {
|
|
378755
378910
|
const currentConfig2 = getGlobalConfig();
|
|
378756
|
-
if (currentConfig2.lastReleaseNotesSeen === "1.44.
|
|
378911
|
+
if (currentConfig2.lastReleaseNotesSeen === "1.44.2") {
|
|
378757
378912
|
return;
|
|
378758
378913
|
}
|
|
378759
378914
|
saveGlobalConfig(_temp326);
|
|
@@ -379438,12 +379593,12 @@ function LogoV2() {
|
|
|
379438
379593
|
return t41;
|
|
379439
379594
|
}
|
|
379440
379595
|
function _temp326(current) {
|
|
379441
|
-
if (current.lastReleaseNotesSeen === "1.44.
|
|
379596
|
+
if (current.lastReleaseNotesSeen === "1.44.2") {
|
|
379442
379597
|
return current;
|
|
379443
379598
|
}
|
|
379444
379599
|
return {
|
|
379445
379600
|
...current,
|
|
379446
|
-
lastReleaseNotesSeen: "1.44.
|
|
379601
|
+
lastReleaseNotesSeen: "1.44.2"
|
|
379447
379602
|
};
|
|
379448
379603
|
}
|
|
379449
379604
|
function _temp243(s_0) {
|
|
@@ -397519,7 +397674,11 @@ function publicStatus(task) {
|
|
|
397519
397674
|
if (task.status === "paused-review")
|
|
397520
397675
|
return "paused for review";
|
|
397521
397676
|
if (task.status === "skipped")
|
|
397522
|
-
return "skipped
|
|
397677
|
+
return "skipped";
|
|
397678
|
+
if (task.status === "failed")
|
|
397679
|
+
return "failed";
|
|
397680
|
+
if (task.status === "finished")
|
|
397681
|
+
return "completed";
|
|
397523
397682
|
return task.status;
|
|
397524
397683
|
}
|
|
397525
397684
|
function isWaiting(task) {
|
|
@@ -397540,6 +397699,9 @@ function progressSummary(tasks2) {
|
|
|
397540
397699
|
const skipped = tasks2.filter((task) => task.status === "skipped").length;
|
|
397541
397700
|
return `Progress: ${finished7}/${tasks2.length} finished, ${running} running, ${queued} queued, ${waiting} waiting, ${failed} failed, ${skipped} skipped`;
|
|
397542
397701
|
}
|
|
397702
|
+
function isFinished(task) {
|
|
397703
|
+
return task.status === "finished" || task.status === "failed" || task.status === "skipped";
|
|
397704
|
+
}
|
|
397543
397705
|
function renderTaskBoard(planOrTasks, options2 = {}) {
|
|
397544
397706
|
const tasks2 = Array.isArray(planOrTasks) ? planOrTasks : planOrTasks.tasks;
|
|
397545
397707
|
const activeAgents = options2.activeAgents ?? tasks2.filter((task) => task.status === "running").length;
|
|
@@ -397548,7 +397710,8 @@ function renderTaskBoard(planOrTasks, options2 = {}) {
|
|
|
397548
397710
|
const rows = orderedTasks.map((task) => {
|
|
397549
397711
|
const status2 = pad(publicStatus(task), 18);
|
|
397550
397712
|
const agent = pad(String(task.assignedAgent), 8);
|
|
397551
|
-
|
|
397713
|
+
const check3 = isFinished(task) ? "[\u2713]" : "[ ]";
|
|
397714
|
+
return `${check3} ${task.order}. ${status2} | ${agent} | ${task.title}`;
|
|
397552
397715
|
});
|
|
397553
397716
|
return [
|
|
397554
397717
|
"[UR-Nexus Task Board]",
|
|
@@ -397823,13 +397986,18 @@ function emitBoard(options2, tasks2, maxAgents2) {
|
|
|
397823
397986
|
...DEFAULT_PROMPT_PLANNING_CONFIG,
|
|
397824
397987
|
...resolvePromptPlanningConfig(options2.config)
|
|
397825
397988
|
};
|
|
397826
|
-
if (config3.showTaskBoard)
|
|
397827
|
-
|
|
397828
|
-
|
|
397829
|
-
|
|
397830
|
-
|
|
397831
|
-
|
|
397832
|
-
|
|
397989
|
+
if (!config3.showTaskBoard)
|
|
397990
|
+
return;
|
|
397991
|
+
const board = renderTaskBoard(tasks2, { maxAgents: maxAgents2 });
|
|
397992
|
+
const lastBoard = lastBoardByRun.get(options2);
|
|
397993
|
+
if (lastBoard === board)
|
|
397994
|
+
return;
|
|
397995
|
+
lastBoardByRun.set(options2, board);
|
|
397996
|
+
options2.onEvent?.({
|
|
397997
|
+
type: "board",
|
|
397998
|
+
board,
|
|
397999
|
+
tasks: tasks2
|
|
398000
|
+
});
|
|
397833
398001
|
}
|
|
397834
398002
|
function emitStatus(options2, task, tasks2, lastStatuses, maxAgents2) {
|
|
397835
398003
|
if (lastStatuses.get(task.id) === task.status)
|
|
@@ -398044,10 +398212,12 @@ async function runPromptPlan(plan, options2) {
|
|
|
398044
398212
|
await Promise.race(running);
|
|
398045
398213
|
}
|
|
398046
398214
|
}
|
|
398215
|
+
var lastBoardByRun;
|
|
398047
398216
|
var init_executor = __esm(() => {
|
|
398048
398217
|
init_config9();
|
|
398049
398218
|
init_evidence3();
|
|
398050
398219
|
init_validation4();
|
|
398220
|
+
lastBoardByRun = new WeakMap;
|
|
398051
398221
|
});
|
|
398052
398222
|
|
|
398053
398223
|
// src/services/promptPlanning/planner.ts
|
|
@@ -596858,7 +597028,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
596858
597028
|
smapsRollup,
|
|
596859
597029
|
platform: process.platform,
|
|
596860
597030
|
nodeVersion: process.version,
|
|
596861
|
-
ccVersion: "1.44.
|
|
597031
|
+
ccVersion: "1.44.2"
|
|
596862
597032
|
};
|
|
596863
597033
|
}
|
|
596864
597034
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -597444,7 +597614,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
597444
597614
|
var call137 = async () => {
|
|
597445
597615
|
return {
|
|
597446
597616
|
type: "text",
|
|
597447
|
-
value: "1.44.
|
|
597617
|
+
value: "1.44.2"
|
|
597448
597618
|
};
|
|
597449
597619
|
}, version2, version_default;
|
|
597450
597620
|
var init_version = __esm(() => {
|
|
@@ -607537,7 +607707,7 @@ function generateHtmlReport(data, insights) {
|
|
|
607537
607707
|
</html>`;
|
|
607538
607708
|
}
|
|
607539
607709
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
607540
|
-
const version3 = typeof MACRO !== "undefined" ? "1.44.
|
|
607710
|
+
const version3 = typeof MACRO !== "undefined" ? "1.44.2" : "unknown";
|
|
607541
607711
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
607542
607712
|
const facets_summary = {
|
|
607543
607713
|
total: facets.size,
|
|
@@ -611817,7 +611987,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
611817
611987
|
init_settings2();
|
|
611818
611988
|
init_slowOperations();
|
|
611819
611989
|
init_uuid();
|
|
611820
|
-
VERSION5 = typeof MACRO !== "undefined" ? "1.44.
|
|
611990
|
+
VERSION5 = typeof MACRO !== "undefined" ? "1.44.2" : "unknown";
|
|
611821
611991
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
611822
611992
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
611823
611993
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -613022,7 +613192,7 @@ var init_filesystem = __esm(() => {
|
|
|
613022
613192
|
});
|
|
613023
613193
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
613024
613194
|
const nonce = randomBytes18(16).toString("hex");
|
|
613025
|
-
return join202(getURTempDir(), "bundled-skills", "1.44.
|
|
613195
|
+
return join202(getURTempDir(), "bundled-skills", "1.44.2", nonce);
|
|
613026
613196
|
});
|
|
613027
613197
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
613028
613198
|
});
|
|
@@ -619313,7 +619483,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
619313
619483
|
}
|
|
619314
619484
|
function computeFingerprintFromMessages(messages) {
|
|
619315
619485
|
const firstMessageText = extractFirstMessageText(messages);
|
|
619316
|
-
return computeFingerprint(firstMessageText, "1.44.
|
|
619486
|
+
return computeFingerprint(firstMessageText, "1.44.2");
|
|
619317
619487
|
}
|
|
619318
619488
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
619319
619489
|
var init_fingerprint = () => {};
|
|
@@ -621187,7 +621357,7 @@ async function sideQuery(opts) {
|
|
|
621187
621357
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
621188
621358
|
}
|
|
621189
621359
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
621190
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.44.
|
|
621360
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.44.2");
|
|
621191
621361
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
621192
621362
|
const systemBlocks = [
|
|
621193
621363
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -625924,7 +626094,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
625924
626094
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
625925
626095
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
625926
626096
|
betas: getSdkBetas(),
|
|
625927
|
-
ur_version: "1.44.
|
|
626097
|
+
ur_version: "1.44.2",
|
|
625928
626098
|
output_style: outputStyle2,
|
|
625929
626099
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
625930
626100
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -640552,7 +640722,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
640552
640722
|
function getSemverPart(version3) {
|
|
640553
640723
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
640554
640724
|
}
|
|
640555
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.44.
|
|
640725
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.44.2") {
|
|
640556
640726
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react226.useState(() => getSemverPart(initialVersion));
|
|
640557
640727
|
if (!updatedVersion) {
|
|
640558
640728
|
return null;
|
|
@@ -640601,7 +640771,7 @@ function AutoUpdater({
|
|
|
640601
640771
|
return;
|
|
640602
640772
|
}
|
|
640603
640773
|
if (false) {}
|
|
640604
|
-
const currentVersion = "1.44.
|
|
640774
|
+
const currentVersion = "1.44.2";
|
|
640605
640775
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
640606
640776
|
let latestVersion = await getLatestVersion(channel);
|
|
640607
640777
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -640830,12 +641000,12 @@ function NativeAutoUpdater({
|
|
|
640830
641000
|
logEvent("tengu_native_auto_updater_start", {});
|
|
640831
641001
|
try {
|
|
640832
641002
|
const maxVersion = await getMaxVersion();
|
|
640833
|
-
if (maxVersion && gt("1.44.
|
|
641003
|
+
if (maxVersion && gt("1.44.2", maxVersion)) {
|
|
640834
641004
|
const msg = await getMaxVersionMessage();
|
|
640835
641005
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
640836
641006
|
}
|
|
640837
641007
|
const result = await installLatest(channel);
|
|
640838
|
-
const currentVersion = "1.44.
|
|
641008
|
+
const currentVersion = "1.44.2";
|
|
640839
641009
|
const latencyMs = Date.now() - startTime;
|
|
640840
641010
|
if (result.lockFailed) {
|
|
640841
641011
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -640972,17 +641142,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
640972
641142
|
const maxVersion = await getMaxVersion();
|
|
640973
641143
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
640974
641144
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
640975
|
-
if (gte("1.44.
|
|
640976
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.44.
|
|
641145
|
+
if (gte("1.44.2", maxVersion)) {
|
|
641146
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.44.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
640977
641147
|
setUpdateAvailable(false);
|
|
640978
641148
|
return;
|
|
640979
641149
|
}
|
|
640980
641150
|
latest = maxVersion;
|
|
640981
641151
|
}
|
|
640982
|
-
const hasUpdate = latest && !gte("1.44.
|
|
641152
|
+
const hasUpdate = latest && !gte("1.44.2", latest) && !shouldSkipVersion(latest);
|
|
640983
641153
|
setUpdateAvailable(!!hasUpdate);
|
|
640984
641154
|
if (hasUpdate) {
|
|
640985
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.44.
|
|
641155
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.44.2"} -> ${latest}`);
|
|
640986
641156
|
}
|
|
640987
641157
|
};
|
|
640988
641158
|
$3[0] = t1;
|
|
@@ -641016,7 +641186,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
641016
641186
|
wrap: "truncate",
|
|
641017
641187
|
children: [
|
|
641018
641188
|
"currentVersion: ",
|
|
641019
|
-
"1.44.
|
|
641189
|
+
"1.44.2"
|
|
641020
641190
|
]
|
|
641021
641191
|
}, undefined, true, undefined, this);
|
|
641022
641192
|
$3[3] = verbose;
|
|
@@ -653468,7 +653638,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
653468
653638
|
project_dir: getOriginalCwd(),
|
|
653469
653639
|
added_dirs: addedDirs
|
|
653470
653640
|
},
|
|
653471
|
-
version: "1.44.
|
|
653641
|
+
version: "1.44.2",
|
|
653472
653642
|
output_style: {
|
|
653473
653643
|
name: outputStyleName
|
|
653474
653644
|
},
|
|
@@ -653551,7 +653721,7 @@ function StatusLineInner({
|
|
|
653551
653721
|
const taskValues = Object.values(tasks2);
|
|
653552
653722
|
const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
|
|
653553
653723
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
653554
|
-
version: "1.44.
|
|
653724
|
+
version: "1.44.2",
|
|
653555
653725
|
providerLabel: providerRuntime.providerLabel,
|
|
653556
653726
|
authMode: providerRuntime.authLabel,
|
|
653557
653727
|
model: providerRuntime.model ?? renderModelName(mainLoopModel),
|
|
@@ -665039,7 +665209,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
665039
665209
|
} catch {}
|
|
665040
665210
|
const data = {
|
|
665041
665211
|
trigger: trigger2,
|
|
665042
|
-
version: "1.44.
|
|
665212
|
+
version: "1.44.2",
|
|
665043
665213
|
platform: process.platform,
|
|
665044
665214
|
transcript,
|
|
665045
665215
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -676924,7 +677094,7 @@ function WelcomeV2() {
|
|
|
676924
677094
|
dimColor: true,
|
|
676925
677095
|
children: [
|
|
676926
677096
|
"v",
|
|
676927
|
-
"1.44.
|
|
677097
|
+
"1.44.2"
|
|
676928
677098
|
]
|
|
676929
677099
|
}, undefined, true, undefined, this)
|
|
676930
677100
|
]
|
|
@@ -678184,7 +678354,7 @@ function completeOnboarding() {
|
|
|
678184
678354
|
saveGlobalConfig((current) => ({
|
|
678185
678355
|
...current,
|
|
678186
678356
|
hasCompletedOnboarding: true,
|
|
678187
|
-
lastOnboardingVersion: "1.44.
|
|
678357
|
+
lastOnboardingVersion: "1.44.2"
|
|
678188
678358
|
}));
|
|
678189
678359
|
}
|
|
678190
678360
|
function showDialog(root2, renderer) {
|
|
@@ -683221,7 +683391,7 @@ function appendToLog(path24, message) {
|
|
|
683221
683391
|
cwd: getFsImplementation().cwd(),
|
|
683222
683392
|
userType: process.env.USER_TYPE,
|
|
683223
683393
|
sessionId: getSessionId(),
|
|
683224
|
-
version: "1.44.
|
|
683394
|
+
version: "1.44.2"
|
|
683225
683395
|
};
|
|
683226
683396
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
683227
683397
|
}
|
|
@@ -687315,8 +687485,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
687315
687485
|
}
|
|
687316
687486
|
async function checkEnvLessBridgeMinVersion() {
|
|
687317
687487
|
const cfg = await getEnvLessBridgeConfig();
|
|
687318
|
-
if (cfg.min_version && lt("1.44.
|
|
687319
|
-
return `Your version of UR (${"1.44.
|
|
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.
|
|
687320
687490
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
687321
687491
|
}
|
|
687322
687492
|
return null;
|
|
@@ -687790,7 +687960,7 @@ async function initBridgeCore(params) {
|
|
|
687790
687960
|
const rawApi = createBridgeApiClient({
|
|
687791
687961
|
baseUrl,
|
|
687792
687962
|
getAccessToken,
|
|
687793
|
-
runnerVersion: "1.44.
|
|
687963
|
+
runnerVersion: "1.44.2",
|
|
687794
687964
|
onDebug: logForDebugging,
|
|
687795
687965
|
onAuth401,
|
|
687796
687966
|
getTrustedDeviceToken
|
|
@@ -693472,7 +693642,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
|
|
|
693472
693642
|
setCwd(cwd3);
|
|
693473
693643
|
const server2 = new Server({
|
|
693474
693644
|
name: "ur/tengu",
|
|
693475
|
-
version: "1.44.
|
|
693645
|
+
version: "1.44.2"
|
|
693476
693646
|
}, {
|
|
693477
693647
|
capabilities: {
|
|
693478
693648
|
tools: {}
|
|
@@ -695514,7 +695684,7 @@ async function update() {
|
|
|
695514
695684
|
logEvent("tengu_update_check", {});
|
|
695515
695685
|
const diagnostic = await getDoctorDiagnostic();
|
|
695516
695686
|
const result = await checkUpgradeStatus({
|
|
695517
|
-
currentVersion: "1.44.
|
|
695687
|
+
currentVersion: "1.44.2",
|
|
695518
695688
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
695519
695689
|
installationType: diagnostic.installationType,
|
|
695520
695690
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -696760,7 +696930,7 @@ ${customInstructions}` : customInstructions;
|
|
|
696760
696930
|
}
|
|
696761
696931
|
}
|
|
696762
696932
|
logForDiagnosticsNoPII("info", "started", {
|
|
696763
|
-
version: "1.44.
|
|
696933
|
+
version: "1.44.2",
|
|
696764
696934
|
is_native_binary: isInBundledMode()
|
|
696765
696935
|
});
|
|
696766
696936
|
registerCleanup(async () => {
|
|
@@ -697546,7 +697716,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
697546
697716
|
pendingHookMessages
|
|
697547
697717
|
}, renderAndRun);
|
|
697548
697718
|
}
|
|
697549
|
-
}).version("1.44.
|
|
697719
|
+
}).version("1.44.2 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
697550
697720
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
697551
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.");
|
|
697552
697722
|
if (canUserConfigureAdvisor()) {
|
|
@@ -698461,7 +698631,7 @@ if (false) {}
|
|
|
698461
698631
|
async function main2() {
|
|
698462
698632
|
const args = process.argv.slice(2);
|
|
698463
698633
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
698464
|
-
console.log(`${"1.44.
|
|
698634
|
+
console.log(`${"1.44.2"} (UR-Nexus)`);
|
|
698465
698635
|
return;
|
|
698466
698636
|
}
|
|
698467
698637
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|
package/documentation/index.html
CHANGED
|
@@ -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.
|
|
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.
|
|
5
|
+
"version": "1.44.2",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ur-agent",
|
|
3
|
-
"version": "1.44.
|
|
4
|
-
"description": "UR-Nexus
|
|
3
|
+
"version": "1.44.2",
|
|
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",
|
|
7
7
|
"engines": {
|