ur-agent 1.45.4 → 1.45.5
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 +15 -0
- package/README.md +3 -2
- package/dist/cli.js +138 -78
- package/docs/AGENT_FEATURES.md +9 -0
- package/docs/USAGE.md +6 -0
- package/docs/VALIDATION.md +20 -1
- package/docs/providers.md +7 -0
- package/documentation/index.html +8 -3
- package/extensions/jetbrains-ur/build.gradle.kts +1 -1
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.45.5
|
|
4
|
+
|
|
5
|
+
- Bounded Ollama Cloud response-header and streaming phases to 120 seconds by
|
|
6
|
+
default while preserving the five-minute allowance for local Ollama models.
|
|
7
|
+
`API_TIMEOUT_MS` and per-request timeouts still take precedence.
|
|
8
|
+
- Stopped deliberate Ollama Cloud stream deadlines from triggering the shared
|
|
9
|
+
non-streaming fallback and retry chain. Other providers and local Ollama
|
|
10
|
+
retain their existing fallback and retry behavior.
|
|
11
|
+
- Extended the deterministic verifier to reject turns that end by promising an
|
|
12
|
+
immediate file change or command but emit no successful matching tool call.
|
|
13
|
+
Conditional plans and instructional prose remain unaffected.
|
|
14
|
+
- Added focused timeout, retry-containment, intent-detection, and verifier
|
|
15
|
+
integration coverage; synchronized npm, IDE extension, static-site, user,
|
|
16
|
+
validation, and technical release metadata.
|
|
17
|
+
|
|
3
18
|
## 1.45.4
|
|
4
19
|
|
|
5
20
|
- Added mandatory provider-first model selection for the first interactive run
|
package/README.md
CHANGED
|
@@ -636,8 +636,9 @@ the permission boundary matters.
|
|
|
636
636
|
otherwise pause for permission approval, while user-input dialogs still ask.
|
|
637
637
|
- `--dangerously-skip-permissions` should only be used inside disposable
|
|
638
638
|
sandboxes.
|
|
639
|
-
- The verifier checks for false completion claims,
|
|
640
|
-
|
|
639
|
+
- The verifier checks for false completion claims, immediate-action promises
|
|
640
|
+
that end without the matching tool call, repeated tool-call loops, empty
|
|
641
|
+
assistant turns, and project gates.
|
|
641
642
|
- Project gates can be configured in `.ur/verify.json`.
|
|
642
643
|
- `ur test-first install` writes detected compile/test/lint commands into
|
|
643
644
|
`.ur/verify.json` so mutating turns have command evidence before completion.
|
package/dist/cli.js
CHANGED
|
@@ -56931,6 +56931,7 @@ var init_kimiToolCalls = __esm(() => {
|
|
|
56931
56931
|
var exports_ollama = {};
|
|
56932
56932
|
__export(exports_ollama, {
|
|
56933
56933
|
mergeToolCalls: () => mergeToolCalls,
|
|
56934
|
+
isOllamaCloudModel: () => isOllamaCloudModel2,
|
|
56934
56935
|
getOllamaRequestTimeoutMs: () => getOllamaRequestTimeoutMs,
|
|
56935
56936
|
getEffectiveOllamaBaseUrl: () => getEffectiveOllamaBaseUrl,
|
|
56936
56937
|
createOllamaURHQClient: () => createOllamaURHQClient
|
|
@@ -56986,7 +56987,7 @@ async function createNonStreamingRequest(params, options) {
|
|
|
56986
56987
|
return ollamaResponseToURHQMessage(json2, params);
|
|
56987
56988
|
}
|
|
56988
56989
|
async function fetchOllamaChat(params, stream4, controller, options) {
|
|
56989
|
-
const timeout = getOllamaRequestTimeoutMs(options);
|
|
56990
|
+
const timeout = getOllamaRequestTimeoutMs(options, process.env, params.model);
|
|
56990
56991
|
const timeoutId = timeout > 0 ? setTimeout(() => controller.abort(), timeout) : undefined;
|
|
56991
56992
|
try {
|
|
56992
56993
|
const capabilities = await getOllamaModelCapabilities(params.model, controller.signal);
|
|
@@ -57064,7 +57065,7 @@ function createLinkedAbortController(options) {
|
|
|
57064
57065
|
signal.addEventListener("abort", () => controller.abort(), { once: true });
|
|
57065
57066
|
return controller;
|
|
57066
57067
|
}
|
|
57067
|
-
function getOllamaRequestTimeoutMs(options, env4 = process.env) {
|
|
57068
|
+
function getOllamaRequestTimeoutMs(options, env4 = process.env, model) {
|
|
57068
57069
|
if (options?.timeoutMs !== undefined || options?.timeout !== undefined) {
|
|
57069
57070
|
return options.timeoutMs ?? options.timeout ?? DEFAULT_OLLAMA_REQUEST_TIMEOUT_MS;
|
|
57070
57071
|
}
|
|
@@ -57072,7 +57073,16 @@ function getOllamaRequestTimeoutMs(options, env4 = process.env) {
|
|
|
57072
57073
|
if (override > 0) {
|
|
57073
57074
|
return override;
|
|
57074
57075
|
}
|
|
57075
|
-
|
|
57076
|
+
if (isTruthyEnv(env4.UR_CODE_REMOTE)) {
|
|
57077
|
+
return REMOTE_OLLAMA_REQUEST_TIMEOUT_MS;
|
|
57078
|
+
}
|
|
57079
|
+
if (isOllamaCloudModel2(model)) {
|
|
57080
|
+
return CLOUD_OLLAMA_REQUEST_TIMEOUT_MS;
|
|
57081
|
+
}
|
|
57082
|
+
return DEFAULT_OLLAMA_REQUEST_TIMEOUT_MS;
|
|
57083
|
+
}
|
|
57084
|
+
function isOllamaCloudModel2(model) {
|
|
57085
|
+
return model?.trim().toLowerCase().endsWith(":cloud") ?? false;
|
|
57076
57086
|
}
|
|
57077
57087
|
function isTruthyEnv(value) {
|
|
57078
57088
|
if (!value) {
|
|
@@ -57473,7 +57483,7 @@ async function* streamURHQEvents(response, params, controller, requestId, option
|
|
|
57473
57483
|
}
|
|
57474
57484
|
return events;
|
|
57475
57485
|
};
|
|
57476
|
-
for await (const chunk of readOllamaChunks(response, controller, getOllamaRequestTimeoutMs(options), options)) {
|
|
57486
|
+
for await (const chunk of readOllamaChunks(response, controller, getOllamaRequestTimeoutMs(options, process.env, params.model), options)) {
|
|
57477
57487
|
if (chunk.error) {
|
|
57478
57488
|
throw new Error(chunk.error);
|
|
57479
57489
|
}
|
|
@@ -57920,7 +57930,7 @@ function parseToolInput(input) {
|
|
|
57920
57930
|
}
|
|
57921
57931
|
return parsed ?? {};
|
|
57922
57932
|
}
|
|
57923
|
-
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;
|
|
57933
|
+
var DEFAULT_OLLAMA_REQUEST_TIMEOUT_MS = 300000, REMOTE_OLLAMA_REQUEST_TIMEOUT_MS = 120000, CLOUD_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;
|
|
57924
57934
|
var init_ollama = __esm(() => {
|
|
57925
57935
|
init_urhq_sdk();
|
|
57926
57936
|
init_ollamaModels();
|
|
@@ -73087,7 +73097,7 @@ var init_auth = __esm(() => {
|
|
|
73087
73097
|
|
|
73088
73098
|
// src/utils/userAgent.ts
|
|
73089
73099
|
function getURCodeUserAgent() {
|
|
73090
|
-
return `ur/${"1.45.
|
|
73100
|
+
return `ur/${"1.45.5"}`;
|
|
73091
73101
|
}
|
|
73092
73102
|
|
|
73093
73103
|
// src/utils/workloadContext.ts
|
|
@@ -73109,7 +73119,7 @@ function getUserAgent() {
|
|
|
73109
73119
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
73110
73120
|
const workload = getWorkload();
|
|
73111
73121
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
73112
|
-
return `ur-cli/${"1.45.
|
|
73122
|
+
return `ur-cli/${"1.45.5"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
73113
73123
|
}
|
|
73114
73124
|
function getMCPUserAgent() {
|
|
73115
73125
|
const parts = [];
|
|
@@ -73123,7 +73133,7 @@ function getMCPUserAgent() {
|
|
|
73123
73133
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
73124
73134
|
}
|
|
73125
73135
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
73126
|
-
return `ur/${"1.45.
|
|
73136
|
+
return `ur/${"1.45.5"}${suffix}`;
|
|
73127
73137
|
}
|
|
73128
73138
|
function getWebFetchUserAgent() {
|
|
73129
73139
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -73261,7 +73271,7 @@ var init_user = __esm(() => {
|
|
|
73261
73271
|
deviceId,
|
|
73262
73272
|
sessionId: getSessionId(),
|
|
73263
73273
|
email: getEmail(),
|
|
73264
|
-
appVersion: "1.45.
|
|
73274
|
+
appVersion: "1.45.5",
|
|
73265
73275
|
platform: getHostPlatformForAnalytics(),
|
|
73266
73276
|
organizationUuid,
|
|
73267
73277
|
accountUuid,
|
|
@@ -79836,7 +79846,7 @@ var init_metadata = __esm(() => {
|
|
|
79836
79846
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
79837
79847
|
WHITESPACE_REGEX = /\s+/;
|
|
79838
79848
|
getVersionBase = memoize_default(() => {
|
|
79839
|
-
const match = "1.45.
|
|
79849
|
+
const match = "1.45.5".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
79840
79850
|
return match ? match[0] : undefined;
|
|
79841
79851
|
});
|
|
79842
79852
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -79876,7 +79886,7 @@ var init_metadata = __esm(() => {
|
|
|
79876
79886
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
79877
79887
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
79878
79888
|
isURAiAuth: isURAISubscriber(),
|
|
79879
|
-
version: "1.45.
|
|
79889
|
+
version: "1.45.5",
|
|
79880
79890
|
versionBase: getVersionBase(),
|
|
79881
79891
|
buildTime: "",
|
|
79882
79892
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -80546,7 +80556,7 @@ function initialize1PEventLogging() {
|
|
|
80546
80556
|
const platform2 = getPlatform();
|
|
80547
80557
|
const attributes = {
|
|
80548
80558
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
80549
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.45.
|
|
80559
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.45.5"
|
|
80550
80560
|
};
|
|
80551
80561
|
if (platform2 === "wsl") {
|
|
80552
80562
|
const wslVersion = getWslVersion();
|
|
@@ -80573,7 +80583,7 @@ function initialize1PEventLogging() {
|
|
|
80573
80583
|
})
|
|
80574
80584
|
]
|
|
80575
80585
|
});
|
|
80576
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.45.
|
|
80586
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.45.5");
|
|
80577
80587
|
}
|
|
80578
80588
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
80579
80589
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -86498,7 +86508,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
|
|
|
86498
86508
|
function formatA2AAgentCard(options = {}, pretty = true) {
|
|
86499
86509
|
return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
|
|
86500
86510
|
}
|
|
86501
|
-
var urVersion = "1.45.
|
|
86511
|
+
var urVersion = "1.45.5", coverage, priorityRoadmap;
|
|
86502
86512
|
var init_trends = __esm(() => {
|
|
86503
86513
|
coverage = [
|
|
86504
86514
|
{
|
|
@@ -88364,7 +88374,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
88364
88374
|
if (!isAttributionHeaderEnabled()) {
|
|
88365
88375
|
return "";
|
|
88366
88376
|
}
|
|
88367
|
-
const version2 = `${"1.45.
|
|
88377
|
+
const version2 = `${"1.45.5"}.${fingerprint}`;
|
|
88368
88378
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
88369
88379
|
const cch = "";
|
|
88370
88380
|
const workload = getWorkload();
|
|
@@ -146550,6 +146560,25 @@ var init_projectQuality = __esm(() => {
|
|
|
146550
146560
|
});
|
|
146551
146561
|
|
|
146552
146562
|
// src/services/verifier/doneDetector.ts
|
|
146563
|
+
function detectImmediateIntent(text) {
|
|
146564
|
+
const tail = text.trim().slice(-600);
|
|
146565
|
+
const clauses = tail.split(/(?:\n+|(?<=[.!?])\s+)/).map((clause2) => clause2.trim()).filter(Boolean);
|
|
146566
|
+
const clause = clauses.at(-1) ?? "";
|
|
146567
|
+
if (!clause || /^(?:if|when|once|after|before)\b/i.test(clause) || /\b(?:if|when|once|after|unless|until)\b.+$/i.test(clause)) {
|
|
146568
|
+
return null;
|
|
146569
|
+
}
|
|
146570
|
+
const lead = "(?:now[, :]*)?(?:let me|i(?:'ll| will| am going to|'m going to))";
|
|
146571
|
+
if (new RegExp(`\\b${lead}\\s+(?:now\\s+)?${WRITE_INTENT_VERBS}\\b`, "i").test(clause)) {
|
|
146572
|
+
return "write_intent";
|
|
146573
|
+
}
|
|
146574
|
+
if (new RegExp(`\\b${lead}\\s+(?:now\\s+)?${RUN_INTENT_VERBS}\\b`, "i").test(clause)) {
|
|
146575
|
+
return "run_intent";
|
|
146576
|
+
}
|
|
146577
|
+
if (new RegExp(`^${WRITE_INTENT_GERUNDS}\\b.*\\bnow[.!]?$`, "i").test(clause)) {
|
|
146578
|
+
return "write_intent";
|
|
146579
|
+
}
|
|
146580
|
+
return null;
|
|
146581
|
+
}
|
|
146553
146582
|
function detectDoneClaim(text) {
|
|
146554
146583
|
if (!text)
|
|
146555
146584
|
return null;
|
|
@@ -146569,7 +146598,7 @@ function detectDoneClaim(text) {
|
|
|
146569
146598
|
if (pattern.test(text))
|
|
146570
146599
|
return "generic_done";
|
|
146571
146600
|
}
|
|
146572
|
-
return
|
|
146601
|
+
return detectImmediateIntent(text);
|
|
146573
146602
|
}
|
|
146574
146603
|
function evaluateDoneGate(claim, hasMutatingEffect, ranBash) {
|
|
146575
146604
|
if (claim === "write_claim" || claim === "edit_claim" || claim === "delete_claim") {
|
|
@@ -146582,6 +146611,16 @@ function evaluateDoneGate(claim, hasMutatingEffect, ranBash) {
|
|
|
146582
146611
|
reminder: "You claimed to have created, edited, or deleted files this turn but no Write / Edit / NotebookEdit / Bash tool call returned successfully. Make the actual tool call now, or correct the statement before continuing."
|
|
146583
146612
|
};
|
|
146584
146613
|
}
|
|
146614
|
+
if (claim === "write_intent") {
|
|
146615
|
+
if (hasMutatingEffect)
|
|
146616
|
+
return { ok: true };
|
|
146617
|
+
return {
|
|
146618
|
+
ok: false,
|
|
146619
|
+
claim,
|
|
146620
|
+
reason: "promised file action ended without a mutating tool call",
|
|
146621
|
+
reminder: "You ended by saying you were about to create, edit, or fix files, but no Write / Edit / NotebookEdit / Bash tool call returned successfully. Make the actual tool call now, or explain why you cannot continue."
|
|
146622
|
+
};
|
|
146623
|
+
}
|
|
146585
146624
|
if (claim === "run_claim") {
|
|
146586
146625
|
if (ranBash)
|
|
146587
146626
|
return { ok: true };
|
|
@@ -146592,6 +146631,16 @@ function evaluateDoneGate(claim, hasMutatingEffect, ranBash) {
|
|
|
146592
146631
|
reminder: "You claimed to have run a command this turn but no Bash tool call returned successfully. Run the command now or correct the statement."
|
|
146593
146632
|
};
|
|
146594
146633
|
}
|
|
146634
|
+
if (claim === "run_intent") {
|
|
146635
|
+
if (ranBash)
|
|
146636
|
+
return { ok: true };
|
|
146637
|
+
return {
|
|
146638
|
+
ok: false,
|
|
146639
|
+
claim,
|
|
146640
|
+
reason: "promised command ended without a successful Bash call",
|
|
146641
|
+
reminder: "You ended by saying you were about to run a command, but no Bash tool call returned successfully. Run the command now, or explain why you cannot continue."
|
|
146642
|
+
};
|
|
146643
|
+
}
|
|
146595
146644
|
if (hasMutatingEffect || ranBash)
|
|
146596
146645
|
return { ok: true };
|
|
146597
146646
|
return {
|
|
@@ -146601,7 +146650,7 @@ function evaluateDoneGate(claim, hasMutatingEffect, ranBash) {
|
|
|
146601
146650
|
reminder: "You declared the task complete but this turn made no Write / Edit / Bash / NotebookEdit tool call. If the task required no edits, say so explicitly. Otherwise, make the tool call now."
|
|
146602
146651
|
};
|
|
146603
146652
|
}
|
|
146604
|
-
var DONE_PATTERNS;
|
|
146653
|
+
var DONE_PATTERNS, WRITE_INTENT_VERBS = "(?:create|write|edit|update|change|modify|patch|fix|remove|delete|rewrite|implement)", RUN_INTENT_VERBS = "(?:run|execute|test|build)", WRITE_INTENT_GERUNDS = "(?:creating|writing|editing|updating|changing|modifying|patching|fixing|removing|deleting|rewriting|implementing)";
|
|
146605
146654
|
var init_doneDetector = __esm(() => {
|
|
146606
146655
|
DONE_PATTERNS = [
|
|
146607
146656
|
/\b(?:i|i've|i have)\s+(?:created|added|written|wrote|made)\b/i,
|
|
@@ -196545,7 +196594,7 @@ function getTelemetryAttributes() {
|
|
|
196545
196594
|
attributes["session.id"] = sessionId;
|
|
196546
196595
|
}
|
|
196547
196596
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
196548
|
-
attributes["app.version"] = "1.45.
|
|
196597
|
+
attributes["app.version"] = "1.45.5";
|
|
196549
196598
|
}
|
|
196550
196599
|
const oauthAccount = getOauthAccountInfo();
|
|
196551
196600
|
if (oauthAccount) {
|
|
@@ -232026,7 +232075,7 @@ function getInstallationEnv() {
|
|
|
232026
232075
|
return;
|
|
232027
232076
|
}
|
|
232028
232077
|
function getURCodeVersion() {
|
|
232029
|
-
return "1.45.
|
|
232078
|
+
return "1.45.5";
|
|
232030
232079
|
}
|
|
232031
232080
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
232032
232081
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -239408,7 +239457,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
239408
239457
|
const client2 = new Client({
|
|
239409
239458
|
name: "ur",
|
|
239410
239459
|
title: "UR",
|
|
239411
|
-
version: "1.45.
|
|
239460
|
+
version: "1.45.5",
|
|
239412
239461
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
239413
239462
|
websiteUrl: PRODUCT_URL
|
|
239414
239463
|
}, {
|
|
@@ -239771,7 +239820,7 @@ var init_client5 = __esm(() => {
|
|
|
239771
239820
|
const client2 = new Client({
|
|
239772
239821
|
name: "ur",
|
|
239773
239822
|
title: "UR",
|
|
239774
|
-
version: "1.45.
|
|
239823
|
+
version: "1.45.5",
|
|
239775
239824
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
239776
239825
|
websiteUrl: PRODUCT_URL
|
|
239777
239826
|
}, {
|
|
@@ -246808,9 +246857,9 @@ async function assertMinVersion() {
|
|
|
246808
246857
|
if (false) {}
|
|
246809
246858
|
try {
|
|
246810
246859
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
246811
|
-
if (versionConfig.minVersion && lt("1.45.
|
|
246860
|
+
if (versionConfig.minVersion && lt("1.45.5", versionConfig.minVersion)) {
|
|
246812
246861
|
console.error(`
|
|
246813
|
-
It looks like your version of UR (${"1.45.
|
|
246862
|
+
It looks like your version of UR (${"1.45.5"}) needs an update.
|
|
246814
246863
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
246815
246864
|
|
|
246816
246865
|
To update, please run:
|
|
@@ -247026,7 +247075,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
247026
247075
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
247027
247076
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
247028
247077
|
pid: process.pid,
|
|
247029
|
-
currentVersion: "1.45.
|
|
247078
|
+
currentVersion: "1.45.5"
|
|
247030
247079
|
});
|
|
247031
247080
|
return "in_progress";
|
|
247032
247081
|
}
|
|
@@ -247035,7 +247084,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
247035
247084
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
247036
247085
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
247037
247086
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
247038
|
-
currentVersion: "1.45.
|
|
247087
|
+
currentVersion: "1.45.5"
|
|
247039
247088
|
});
|
|
247040
247089
|
console.error(`
|
|
247041
247090
|
Error: Windows NPM detected in WSL
|
|
@@ -247570,7 +247619,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
247570
247619
|
}
|
|
247571
247620
|
async function getDoctorDiagnostic() {
|
|
247572
247621
|
const installationType = await getCurrentInstallationType();
|
|
247573
|
-
const version2 = typeof MACRO !== "undefined" ? "1.45.
|
|
247622
|
+
const version2 = typeof MACRO !== "undefined" ? "1.45.5" : "unknown";
|
|
247574
247623
|
const installationPath = await getInstallationPath();
|
|
247575
247624
|
const invokedBinary = getInvokedBinary();
|
|
247576
247625
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -248505,8 +248554,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
248505
248554
|
const maxVersion = await getMaxVersion();
|
|
248506
248555
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
248507
248556
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
248508
|
-
if (gte("1.45.
|
|
248509
|
-
logForDebugging(`Native installer: current version ${"1.45.
|
|
248557
|
+
if (gte("1.45.5", maxVersion)) {
|
|
248558
|
+
logForDebugging(`Native installer: current version ${"1.45.5"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
248510
248559
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
248511
248560
|
latency_ms: Date.now() - startTime,
|
|
248512
248561
|
max_version: maxVersion,
|
|
@@ -248517,7 +248566,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
248517
248566
|
version2 = maxVersion;
|
|
248518
248567
|
}
|
|
248519
248568
|
}
|
|
248520
|
-
if (!forceReinstall && version2 === "1.45.
|
|
248569
|
+
if (!forceReinstall && version2 === "1.45.5" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
248521
248570
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
248522
248571
|
logEvent("tengu_native_update_complete", {
|
|
248523
248572
|
latency_ms: Date.now() - startTime,
|
|
@@ -346377,7 +346426,7 @@ function Feedback({
|
|
|
346377
346426
|
platform: env2.platform,
|
|
346378
346427
|
gitRepo: envInfo.isGit,
|
|
346379
346428
|
terminal: env2.terminal,
|
|
346380
|
-
version: "1.45.
|
|
346429
|
+
version: "1.45.5",
|
|
346381
346430
|
transcript: normalizeMessagesForAPI(messages),
|
|
346382
346431
|
errors: sanitizedErrors,
|
|
346383
346432
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -346569,7 +346618,7 @@ function Feedback({
|
|
|
346569
346618
|
", ",
|
|
346570
346619
|
env2.terminal,
|
|
346571
346620
|
", v",
|
|
346572
|
-
"1.45.
|
|
346621
|
+
"1.45.5"
|
|
346573
346622
|
]
|
|
346574
346623
|
}, undefined, true, undefined, this)
|
|
346575
346624
|
]
|
|
@@ -346675,7 +346724,7 @@ ${sanitizedDescription}
|
|
|
346675
346724
|
` + `**Environment Info**
|
|
346676
346725
|
` + `- Platform: ${env2.platform}
|
|
346677
346726
|
` + `- Terminal: ${env2.terminal}
|
|
346678
|
-
` + `- Version: ${"1.45.
|
|
346727
|
+
` + `- Version: ${"1.45.5"}
|
|
346679
346728
|
` + `- Feedback ID: ${feedbackId}
|
|
346680
346729
|
` + `
|
|
346681
346730
|
**Errors**
|
|
@@ -349786,7 +349835,7 @@ function buildPrimarySection() {
|
|
|
349786
349835
|
}, undefined, false, undefined, this);
|
|
349787
349836
|
return [{
|
|
349788
349837
|
label: "Version",
|
|
349789
|
-
value: "1.45.
|
|
349838
|
+
value: "1.45.5"
|
|
349790
349839
|
}, {
|
|
349791
349840
|
label: "Session name",
|
|
349792
349841
|
value: nameValue
|
|
@@ -353116,7 +353165,7 @@ function Config({
|
|
|
353116
353165
|
}
|
|
353117
353166
|
}, undefined, false, undefined, this)
|
|
353118
353167
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime178.jsxDEV(ChannelDowngradeDialog, {
|
|
353119
|
-
currentVersion: "1.45.
|
|
353168
|
+
currentVersion: "1.45.5",
|
|
353120
353169
|
onChoice: (choice) => {
|
|
353121
353170
|
setShowSubmenu(null);
|
|
353122
353171
|
setTabsHidden(false);
|
|
@@ -353128,7 +353177,7 @@ function Config({
|
|
|
353128
353177
|
autoUpdatesChannel: "stable"
|
|
353129
353178
|
};
|
|
353130
353179
|
if (choice === "stay") {
|
|
353131
|
-
newSettings.minimumVersion = "1.45.
|
|
353180
|
+
newSettings.minimumVersion = "1.45.5";
|
|
353132
353181
|
}
|
|
353133
353182
|
updateSettingsForSource("userSettings", newSettings);
|
|
353134
353183
|
setSettingsData((prev_27) => ({
|
|
@@ -361198,7 +361247,7 @@ function HelpV2(t0) {
|
|
|
361198
361247
|
let t6;
|
|
361199
361248
|
if ($3[31] !== tabs) {
|
|
361200
361249
|
t6 = /* @__PURE__ */ jsx_dev_runtime205.jsxDEV(Tabs, {
|
|
361201
|
-
title: `UR v${"1.45.
|
|
361250
|
+
title: `UR v${"1.45.5"}`,
|
|
361202
361251
|
color: "professionalBlue",
|
|
361203
361252
|
defaultTab: "general",
|
|
361204
361253
|
children: tabs
|
|
@@ -361972,7 +362021,7 @@ function buildToolUseContext(tools, readFileStateCache) {
|
|
|
361972
362021
|
async function handleInitialize(options2) {
|
|
361973
362022
|
return {
|
|
361974
362023
|
name: "UR",
|
|
361975
|
-
version: "1.45.
|
|
362024
|
+
version: "1.45.5",
|
|
361976
362025
|
protocolVersion: "0.1.0",
|
|
361977
362026
|
workspaceRoot: options2.cwd,
|
|
361978
362027
|
capabilities: {
|
|
@@ -382114,7 +382163,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
382114
382163
|
return [];
|
|
382115
382164
|
}
|
|
382116
382165
|
}
|
|
382117
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.45.
|
|
382166
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.45.5") {
|
|
382118
382167
|
if (process.env.USER_TYPE === "ant") {
|
|
382119
382168
|
const changelog = "";
|
|
382120
382169
|
if (changelog) {
|
|
@@ -382141,7 +382190,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.45.4")
|
|
|
382141
382190
|
releaseNotes
|
|
382142
382191
|
};
|
|
382143
382192
|
}
|
|
382144
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.45.
|
|
382193
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.45.5") {
|
|
382145
382194
|
if (process.env.USER_TYPE === "ant") {
|
|
382146
382195
|
const changelog = "";
|
|
382147
382196
|
if (changelog) {
|
|
@@ -385233,7 +385282,7 @@ function getRecentActivitySync() {
|
|
|
385233
385282
|
return cachedActivity;
|
|
385234
385283
|
}
|
|
385235
385284
|
function getLogoDisplayData() {
|
|
385236
|
-
const version2 = process.env.DEMO_VERSION ?? "1.45.
|
|
385285
|
+
const version2 = process.env.DEMO_VERSION ?? "1.45.5";
|
|
385237
385286
|
const serverUrl = getDirectConnectServerUrl();
|
|
385238
385287
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
385239
385288
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -386117,7 +386166,7 @@ function LogoV2() {
|
|
|
386117
386166
|
if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
386118
386167
|
t2 = () => {
|
|
386119
386168
|
const currentConfig2 = getGlobalConfig();
|
|
386120
|
-
if (currentConfig2.lastReleaseNotesSeen === "1.45.
|
|
386169
|
+
if (currentConfig2.lastReleaseNotesSeen === "1.45.5") {
|
|
386121
386170
|
return;
|
|
386122
386171
|
}
|
|
386123
386172
|
saveGlobalConfig(_temp327);
|
|
@@ -386802,12 +386851,12 @@ function LogoV2() {
|
|
|
386802
386851
|
return t41;
|
|
386803
386852
|
}
|
|
386804
386853
|
function _temp327(current) {
|
|
386805
|
-
if (current.lastReleaseNotesSeen === "1.45.
|
|
386854
|
+
if (current.lastReleaseNotesSeen === "1.45.5") {
|
|
386806
386855
|
return current;
|
|
386807
386856
|
}
|
|
386808
386857
|
return {
|
|
386809
386858
|
...current,
|
|
386810
|
-
lastReleaseNotesSeen: "1.45.
|
|
386859
|
+
lastReleaseNotesSeen: "1.45.5"
|
|
386811
386860
|
};
|
|
386812
386861
|
}
|
|
386813
386862
|
function _temp243(s_0) {
|
|
@@ -604850,7 +604899,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
604850
604899
|
smapsRollup,
|
|
604851
604900
|
platform: process.platform,
|
|
604852
604901
|
nodeVersion: process.version,
|
|
604853
|
-
ccVersion: "1.45.
|
|
604902
|
+
ccVersion: "1.45.5"
|
|
604854
604903
|
};
|
|
604855
604904
|
}
|
|
604856
604905
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -605436,7 +605485,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
605436
605485
|
var call143 = async () => {
|
|
605437
605486
|
return {
|
|
605438
605487
|
type: "text",
|
|
605439
|
-
value: "1.45.
|
|
605488
|
+
value: "1.45.5"
|
|
605440
605489
|
};
|
|
605441
605490
|
}, version2, version_default;
|
|
605442
605491
|
var init_version = __esm(() => {
|
|
@@ -616546,7 +616595,7 @@ function generateHtmlReport(data, insights) {
|
|
|
616546
616595
|
</html>`;
|
|
616547
616596
|
}
|
|
616548
616597
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
616549
|
-
const version3 = typeof MACRO !== "undefined" ? "1.45.
|
|
616598
|
+
const version3 = typeof MACRO !== "undefined" ? "1.45.5" : "unknown";
|
|
616550
616599
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
616551
616600
|
const facets_summary = {
|
|
616552
616601
|
total: facets.size,
|
|
@@ -620875,7 +620924,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
620875
620924
|
init_settings2();
|
|
620876
620925
|
init_slowOperations();
|
|
620877
620926
|
init_uuid();
|
|
620878
|
-
VERSION5 = typeof MACRO !== "undefined" ? "1.45.
|
|
620927
|
+
VERSION5 = typeof MACRO !== "undefined" ? "1.45.5" : "unknown";
|
|
620879
620928
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
620880
620929
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
620881
620930
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -622080,7 +622129,7 @@ var init_filesystem = __esm(() => {
|
|
|
622080
622129
|
});
|
|
622081
622130
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
622082
622131
|
const nonce = randomBytes18(16).toString("hex");
|
|
622083
|
-
return join211(getURTempDir(), "bundled-skills", "1.45.
|
|
622132
|
+
return join211(getURTempDir(), "bundled-skills", "1.45.5", nonce);
|
|
622084
622133
|
});
|
|
622085
622134
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
622086
622135
|
});
|
|
@@ -628375,7 +628424,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
628375
628424
|
}
|
|
628376
628425
|
function computeFingerprintFromMessages(messages) {
|
|
628377
628426
|
const firstMessageText = extractFirstMessageText(messages);
|
|
628378
|
-
return computeFingerprint(firstMessageText, "1.45.
|
|
628427
|
+
return computeFingerprint(firstMessageText, "1.45.5");
|
|
628379
628428
|
}
|
|
628380
628429
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
628381
628430
|
var init_fingerprint = () => {};
|
|
@@ -628763,14 +628812,20 @@ function shouldDeferLspTool(tool) {
|
|
|
628763
628812
|
const status2 = getInitializationStatus();
|
|
628764
628813
|
return status2.status === "pending" || status2.status === "not-started";
|
|
628765
628814
|
}
|
|
628766
|
-
function
|
|
628767
|
-
|
|
628815
|
+
function isOllamaCloudRuntime(model, provider = getAPIProvider()) {
|
|
628816
|
+
return provider === "ollama" && model.trim().toLowerCase().endsWith(":cloud");
|
|
628817
|
+
}
|
|
628818
|
+
function getNonstreamingFallbackTimeoutMs(model, env4 = process.env, provider = getAPIProvider()) {
|
|
628819
|
+
const override = parseInt(env4.API_TIMEOUT_MS || "", 10);
|
|
628768
628820
|
if (override)
|
|
628769
628821
|
return override;
|
|
628770
|
-
return isEnvTruthy(
|
|
628822
|
+
return isEnvTruthy(env4.UR_CODE_REMOTE) || isOllamaCloudRuntime(model, provider) ? 120000 : 300000;
|
|
628823
|
+
}
|
|
628824
|
+
function shouldSkipOllamaNonStreamingFallback(error40, model, provider = getAPIProvider()) {
|
|
628825
|
+
return isOllamaCloudRuntime(model, provider) && error40 instanceof APIConnectionTimeoutError && error40.message === "Ollama stream timed out";
|
|
628771
628826
|
}
|
|
628772
628827
|
async function* executeNonStreamingRequest(clientOptions, retryOptions, paramsFromContext, onAttempt, captureRequest, originatingRequestId) {
|
|
628773
|
-
const fallbackTimeoutMs = getNonstreamingFallbackTimeoutMs();
|
|
628828
|
+
const fallbackTimeoutMs = getNonstreamingFallbackTimeoutMs(clientOptions.model);
|
|
628774
628829
|
const generator = withRetry(() => getURHQClient({
|
|
628775
628830
|
maxRetries: 0,
|
|
628776
628831
|
model: clientOptions.model,
|
|
@@ -628804,6 +628859,7 @@ async function* executeNonStreamingRequest(clientOptions, retryOptions, paramsFr
|
|
|
628804
628859
|
throw err2;
|
|
628805
628860
|
}
|
|
628806
628861
|
}, {
|
|
628862
|
+
...isOllamaCloudRuntime(retryOptions.model) ? { maxRetries: 0 } : {},
|
|
628807
628863
|
model: retryOptions.model,
|
|
628808
628864
|
fallbackModel: retryOptions.fallbackModel,
|
|
628809
628865
|
thinkingConfig: retryOptions.thinkingConfig,
|
|
@@ -629283,6 +629339,7 @@ ${deferredToolList}
|
|
|
629283
629339
|
streamResponse = result.response;
|
|
629284
629340
|
return result.data;
|
|
629285
629341
|
}, {
|
|
629342
|
+
...isOllamaCloudRuntime(options2.model) ? { maxRetries: 0 } : {},
|
|
629286
629343
|
model: options2.model,
|
|
629287
629344
|
fallbackModel: options2.fallbackModel,
|
|
629288
629345
|
thinkingConfig,
|
|
@@ -629627,6 +629684,9 @@ ${deferredToolList}
|
|
|
629627
629684
|
throw new APIConnectionTimeoutError({ message: "Request timed out" });
|
|
629628
629685
|
}
|
|
629629
629686
|
}
|
|
629687
|
+
if (shouldSkipOllamaNonStreamingFallback(streamingError, options2.model)) {
|
|
629688
|
+
throw streamingError;
|
|
629689
|
+
}
|
|
629630
629690
|
const disableFallback = isEnvTruthy(process.env.UR_CODE_DISABLE_NONSTREAMING_FALLBACK) || getFeatureValue_CACHED_MAY_BE_STALE("tengu_disable_streaming_to_non_streaming_fallback", false);
|
|
629631
629691
|
if (disableFallback) {
|
|
629632
629692
|
logForDebugging(`Error streaming (non-streaming fallback disabled): ${errorMessage2(streamingError)}`, { level: "error" });
|
|
@@ -630249,7 +630309,7 @@ async function sideQuery(opts) {
|
|
|
630249
630309
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
630250
630310
|
}
|
|
630251
630311
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
630252
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.45.
|
|
630312
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.45.5");
|
|
630253
630313
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
630254
630314
|
const systemBlocks = [
|
|
630255
630315
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -634986,7 +635046,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
634986
635046
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
634987
635047
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
634988
635048
|
betas: getSdkBetas(),
|
|
634989
|
-
ur_version: "1.45.
|
|
635049
|
+
ur_version: "1.45.5",
|
|
634990
635050
|
output_style: outputStyle2,
|
|
634991
635051
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
634992
635052
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -648846,7 +648906,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
648846
648906
|
function getSemverPart(version3) {
|
|
648847
648907
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
648848
648908
|
}
|
|
648849
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.45.
|
|
648909
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.45.5") {
|
|
648850
648910
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react228.useState(() => getSemverPart(initialVersion));
|
|
648851
648911
|
if (!updatedVersion) {
|
|
648852
648912
|
return null;
|
|
@@ -648895,7 +648955,7 @@ function AutoUpdater({
|
|
|
648895
648955
|
return;
|
|
648896
648956
|
}
|
|
648897
648957
|
if (false) {}
|
|
648898
|
-
const currentVersion = "1.45.
|
|
648958
|
+
const currentVersion = "1.45.5";
|
|
648899
648959
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
648900
648960
|
let latestVersion = await getLatestVersion(channel);
|
|
648901
648961
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -649124,12 +649184,12 @@ function NativeAutoUpdater({
|
|
|
649124
649184
|
logEvent("tengu_native_auto_updater_start", {});
|
|
649125
649185
|
try {
|
|
649126
649186
|
const maxVersion = await getMaxVersion();
|
|
649127
|
-
if (maxVersion && gt("1.45.
|
|
649187
|
+
if (maxVersion && gt("1.45.5", maxVersion)) {
|
|
649128
649188
|
const msg = await getMaxVersionMessage();
|
|
649129
649189
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
649130
649190
|
}
|
|
649131
649191
|
const result = await installLatest(channel);
|
|
649132
|
-
const currentVersion = "1.45.
|
|
649192
|
+
const currentVersion = "1.45.5";
|
|
649133
649193
|
const latencyMs = Date.now() - startTime;
|
|
649134
649194
|
if (result.lockFailed) {
|
|
649135
649195
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -649266,17 +649326,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
649266
649326
|
const maxVersion = await getMaxVersion();
|
|
649267
649327
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
649268
649328
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
649269
|
-
if (gte("1.45.
|
|
649270
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.45.
|
|
649329
|
+
if (gte("1.45.5", maxVersion)) {
|
|
649330
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.45.5"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
649271
649331
|
setUpdateAvailable(false);
|
|
649272
649332
|
return;
|
|
649273
649333
|
}
|
|
649274
649334
|
latest = maxVersion;
|
|
649275
649335
|
}
|
|
649276
|
-
const hasUpdate = latest && !gte("1.45.
|
|
649336
|
+
const hasUpdate = latest && !gte("1.45.5", latest) && !shouldSkipVersion(latest);
|
|
649277
649337
|
setUpdateAvailable(!!hasUpdate);
|
|
649278
649338
|
if (hasUpdate) {
|
|
649279
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.45.
|
|
649339
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.45.5"} -> ${latest}`);
|
|
649280
649340
|
}
|
|
649281
649341
|
};
|
|
649282
649342
|
$3[0] = t1;
|
|
@@ -649310,7 +649370,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
649310
649370
|
wrap: "truncate",
|
|
649311
649371
|
children: [
|
|
649312
649372
|
"currentVersion: ",
|
|
649313
|
-
"1.45.
|
|
649373
|
+
"1.45.5"
|
|
649314
649374
|
]
|
|
649315
649375
|
}, undefined, true, undefined, this);
|
|
649316
649376
|
$3[3] = verbose;
|
|
@@ -660007,7 +660067,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
660007
660067
|
project_dir: getOriginalCwd(),
|
|
660008
660068
|
added_dirs: addedDirs
|
|
660009
660069
|
},
|
|
660010
|
-
version: "1.45.
|
|
660070
|
+
version: "1.45.5",
|
|
660011
660071
|
output_style: {
|
|
660012
660072
|
name: outputStyleName
|
|
660013
660073
|
},
|
|
@@ -660090,7 +660150,7 @@ function StatusLineInner({
|
|
|
660090
660150
|
const taskValues = Object.values(tasks2);
|
|
660091
660151
|
const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
|
|
660092
660152
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
660093
|
-
version: "1.45.
|
|
660153
|
+
version: "1.45.5",
|
|
660094
660154
|
providerLabel: providerRuntime.providerLabel,
|
|
660095
660155
|
authMode: providerRuntime.authLabel,
|
|
660096
660156
|
model: providerRuntime.model ?? renderModelName(mainLoopModel),
|
|
@@ -672083,7 +672143,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
672083
672143
|
} catch {}
|
|
672084
672144
|
const data = {
|
|
672085
672145
|
trigger: trigger2,
|
|
672086
|
-
version: "1.45.
|
|
672146
|
+
version: "1.45.5",
|
|
672087
672147
|
platform: process.platform,
|
|
672088
672148
|
transcript,
|
|
672089
672149
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -684369,7 +684429,7 @@ function WelcomeV2() {
|
|
|
684369
684429
|
dimColor: true,
|
|
684370
684430
|
children: [
|
|
684371
684431
|
"v",
|
|
684372
|
-
"1.45.
|
|
684432
|
+
"1.45.5"
|
|
684373
684433
|
]
|
|
684374
684434
|
}, undefined, true, undefined, this)
|
|
684375
684435
|
]
|
|
@@ -685629,7 +685689,7 @@ function completeOnboarding() {
|
|
|
685629
685689
|
saveGlobalConfig((current) => ({
|
|
685630
685690
|
...current,
|
|
685631
685691
|
hasCompletedOnboarding: true,
|
|
685632
|
-
lastOnboardingVersion: "1.45.
|
|
685692
|
+
lastOnboardingVersion: "1.45.5"
|
|
685633
685693
|
}));
|
|
685634
685694
|
}
|
|
685635
685695
|
function showDialog(root2, renderer) {
|
|
@@ -690651,7 +690711,7 @@ function appendToLog(path24, message) {
|
|
|
690651
690711
|
cwd: getFsImplementation().cwd(),
|
|
690652
690712
|
userType: process.env.USER_TYPE,
|
|
690653
690713
|
sessionId: getSessionId(),
|
|
690654
|
-
version: "1.45.
|
|
690714
|
+
version: "1.45.5"
|
|
690655
690715
|
};
|
|
690656
690716
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
690657
690717
|
}
|
|
@@ -694810,8 +694870,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
694810
694870
|
}
|
|
694811
694871
|
async function checkEnvLessBridgeMinVersion() {
|
|
694812
694872
|
const cfg = await getEnvLessBridgeConfig();
|
|
694813
|
-
if (cfg.min_version && lt("1.45.
|
|
694814
|
-
return `Your version of UR (${"1.45.
|
|
694873
|
+
if (cfg.min_version && lt("1.45.5", cfg.min_version)) {
|
|
694874
|
+
return `Your version of UR (${"1.45.5"}) is too old for Remote Control.
|
|
694815
694875
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
694816
694876
|
}
|
|
694817
694877
|
return null;
|
|
@@ -695285,7 +695345,7 @@ async function initBridgeCore(params) {
|
|
|
695285
695345
|
const rawApi = createBridgeApiClient({
|
|
695286
695346
|
baseUrl,
|
|
695287
695347
|
getAccessToken,
|
|
695288
|
-
runnerVersion: "1.45.
|
|
695348
|
+
runnerVersion: "1.45.5",
|
|
695289
695349
|
onDebug: logForDebugging,
|
|
695290
695350
|
onAuth401,
|
|
695291
695351
|
getTrustedDeviceToken
|
|
@@ -700967,7 +701027,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
|
|
|
700967
701027
|
setCwd(cwd3);
|
|
700968
701028
|
const server2 = new Server({
|
|
700969
701029
|
name: "ur/tengu",
|
|
700970
|
-
version: "1.45.
|
|
701030
|
+
version: "1.45.5"
|
|
700971
701031
|
}, {
|
|
700972
701032
|
capabilities: {
|
|
700973
701033
|
tools: {}
|
|
@@ -703009,7 +703069,7 @@ async function update() {
|
|
|
703009
703069
|
logEvent("tengu_update_check", {});
|
|
703010
703070
|
const diagnostic = await getDoctorDiagnostic();
|
|
703011
703071
|
const result = await checkUpgradeStatus({
|
|
703012
|
-
currentVersion: "1.45.
|
|
703072
|
+
currentVersion: "1.45.5",
|
|
703013
703073
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
703014
703074
|
installationType: diagnostic.installationType,
|
|
703015
703075
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -704320,7 +704380,7 @@ ${customInstructions}` : customInstructions;
|
|
|
704320
704380
|
}
|
|
704321
704381
|
}
|
|
704322
704382
|
logForDiagnosticsNoPII("info", "started", {
|
|
704323
|
-
version: "1.45.
|
|
704383
|
+
version: "1.45.5",
|
|
704324
704384
|
is_native_binary: isInBundledMode()
|
|
704325
704385
|
});
|
|
704326
704386
|
registerCleanup(async () => {
|
|
@@ -705106,7 +705166,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
705106
705166
|
pendingHookMessages
|
|
705107
705167
|
}, renderAndRun);
|
|
705108
705168
|
}
|
|
705109
|
-
}).version("1.45.
|
|
705169
|
+
}).version("1.45.5 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
705110
705170
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
705111
705171
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
705112
705172
|
if (canUserConfigureAdvisor()) {
|
|
@@ -706042,7 +706102,7 @@ if (false) {}
|
|
|
706042
706102
|
async function main2() {
|
|
706043
706103
|
const args = process.argv.slice(2);
|
|
706044
706104
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
706045
|
-
console.log(`${"1.45.
|
|
706105
|
+
console.log(`${"1.45.5"} (UR-Nexus)`);
|
|
706046
706106
|
return;
|
|
706047
706107
|
}
|
|
706048
706108
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|
package/docs/AGENT_FEATURES.md
CHANGED
|
@@ -9,6 +9,15 @@ reproducible autonomous software engineering agent: every substantial task can
|
|
|
9
9
|
be driven as `spec -> plan -> patch -> test -> report -> rollback`, with the
|
|
10
10
|
spec as the durable source of truth and command evidence as the success gate.
|
|
11
11
|
|
|
12
|
+
## v1.45.5 Additions
|
|
13
|
+
|
|
14
|
+
- Ollama Cloud requests have bounded response-header and streaming phases and
|
|
15
|
+
do not amplify a deliberate stream timeout through fallback retries. Local
|
|
16
|
+
model timing and explicit timeout overrides are unchanged.
|
|
17
|
+
- The verifier now recognizes terminal promises such as "Let me create it
|
|
18
|
+
now" or "I will run the tests now" and requires the corresponding successful
|
|
19
|
+
mutation or Bash call before the turn may complete.
|
|
20
|
+
|
|
12
21
|
## Commands
|
|
13
22
|
|
|
14
23
|
```sh
|
package/docs/USAGE.md
CHANGED
|
@@ -100,6 +100,12 @@ use `ollama.host` in settings if you want plain `ur` to default to a LAN host.
|
|
|
100
100
|
Models exposed by the chosen Ollama app are valid, including local models and
|
|
101
101
|
Ollama Cloud-backed models.
|
|
102
102
|
|
|
103
|
+
Ollama Cloud models use a 120-second default bound for both response-header
|
|
104
|
+
waiting and stream consumption. A deliberate stream deadline is returned
|
|
105
|
+
directly instead of being replayed through the non-streaming fallback. Local
|
|
106
|
+
Ollama models keep the five-minute default. Set `API_TIMEOUT_MS` to explicitly
|
|
107
|
+
override either default for the current process.
|
|
108
|
+
|
|
103
109
|
UR-Nexus also has explicit provider commands for legal access paths:
|
|
104
110
|
|
|
105
111
|
```sh
|
package/docs/VALIDATION.md
CHANGED
|
@@ -19,7 +19,7 @@ You need:
|
|
|
19
19
|
|
|
20
20
|
```sh
|
|
21
21
|
ur --version
|
|
22
|
-
# expected for this release: "1.45.
|
|
22
|
+
# expected for this release: "1.45.5 (UR-Nexus)"
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
## 0.1 First-workspace model selection (1.45.4)
|
|
@@ -40,6 +40,20 @@ ur -p "say hi"
|
|
|
40
40
|
Expected: `No model has been selected for this workspace`. Supplying
|
|
41
41
|
`--model <model>`, `OLLAMA_MODEL`, or `UR_MODEL` bypasses the gate for that run.
|
|
42
42
|
|
|
43
|
+
### 0.1.1 Ollama Cloud latency containment (1.45.5)
|
|
44
|
+
|
|
45
|
+
Run the deterministic regression coverage:
|
|
46
|
+
|
|
47
|
+
```sh
|
|
48
|
+
bun test test/ollamaTimeout.test.ts
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Expected: the cloud-model timeout, override-precedence, stream-deadline, and
|
|
52
|
+
fallback-suppression cases pass. A model ending in `:cloud` defaults to 120
|
|
53
|
+
seconds for response headers and streaming; a local model retains 300 seconds.
|
|
54
|
+
`API_TIMEOUT_MS` wins over both. When a cloud stream reaches its deliberate
|
|
55
|
+
deadline, the request fails once instead of starting a non-streaming replay.
|
|
56
|
+
|
|
43
57
|
## 0.2 Permission safety and context pack (1.19.0)
|
|
44
58
|
|
|
45
59
|
In a project checkout:
|
|
@@ -186,6 +200,11 @@ Expected:
|
|
|
186
200
|
UR_VERIFIER_MODE=strict ur # default, false claim rejected
|
|
187
201
|
```
|
|
188
202
|
|
|
203
|
+
Also prompt the model to end with `Let me create index.html now.` while
|
|
204
|
+
forbidding tool calls. Strict mode must inject a correction and continue rather
|
|
205
|
+
than accepting the promise as completion. Conditional text such as `If you
|
|
206
|
+
approve, I'll create it` must not trigger this gate.
|
|
207
|
+
|
|
189
208
|
## 3. L1 loop detector fires
|
|
190
209
|
|
|
191
210
|
```text
|
package/docs/providers.md
CHANGED
|
@@ -431,6 +431,13 @@ Local/server providers use their normal endpoints:
|
|
|
431
431
|
- llama.cpp server mode: `http://localhost:8080/v1`
|
|
432
432
|
- vLLM server mode: `http://localhost:8000/v1`
|
|
433
433
|
|
|
434
|
+
Ollama models whose names end in `:cloud` use a 120-second default for the
|
|
435
|
+
response-header phase and a 120-second total stream deadline. UR does not
|
|
436
|
+
automatically replay a cloud request after that stream deadline, preventing a
|
|
437
|
+
bounded failure from expanding into the shared non-streaming fallback and
|
|
438
|
+
retry chain. Local Ollama models retain the five-minute default. A positive
|
|
439
|
+
`API_TIMEOUT_MS` or explicit request timeout overrides these defaults.
|
|
440
|
+
|
|
434
441
|
## Optional Live Provider Smoke
|
|
435
442
|
|
|
436
443
|
`bun run provider:smoke` runs optional live checks only for providers with the
|
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.45.
|
|
47
|
+
<p class="eyebrow">Version 1.45.5</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>
|
|
@@ -163,9 +163,14 @@ ur config set provider.fallback ollama</code></pre>
|
|
|
163
163
|
</article>
|
|
164
164
|
<article>
|
|
165
165
|
<h3>Status bar and updates</h3>
|
|
166
|
-
<pre><code>Ollama | llama3 | ask | main | update 1.45.
|
|
166
|
+
<pre><code>Ollama | llama3 | ask | main | update 1.45.5 available</code></pre>
|
|
167
167
|
<p>The interactive status bar shows only important runtime state: provider, model, mode, branch, active tasks, checks status when known, and update availability. It is hidden in CI, dumb terminals, and print mode.</p>
|
|
168
168
|
</article>
|
|
169
|
+
<article>
|
|
170
|
+
<h3>Ollama Cloud latency bounds</h3>
|
|
171
|
+
<pre><code>API_TIMEOUT_MS=120000 ur</code></pre>
|
|
172
|
+
<p>Cloud-tagged Ollama models default to bounded response-header and streaming phases. A stream deadline is surfaced directly instead of starting a non-streaming retry chain. Local models retain their longer default, and <code>API_TIMEOUT_MS</code> remains an explicit override.</p>
|
|
173
|
+
</article>
|
|
169
174
|
</div>
|
|
170
175
|
</section>
|
|
171
176
|
|
|
@@ -481,7 +486,7 @@ ur context-pack compress</code></pre>
|
|
|
481
486
|
UR_VERIFIER_MODE=loose
|
|
482
487
|
UR_VERIFIER_MODE=off
|
|
483
488
|
UR_VERIFIER_AUTO_SUBAGENT=1</code></pre>
|
|
484
|
-
<p>L1 gates catch false done claims and loops. <code>/verify</code> manually runs deeper verification.</p>
|
|
489
|
+
<p>L1 gates catch false done claims, immediate-action promises that end without their tool call, and loops. <code>/verify</code> manually runs deeper verification.</p>
|
|
485
490
|
<p>Interactive users can set <code>"verifier": { "askBeforeGates": true }</code> in <code>.ur/settings.json</code> (or via <code>ur config set verifier.askBeforeGates true</code>) to have UR ask before running project test/typecheck/lint gates after a task, instead of running them automatically. Default is <code>false</code> (auto-run gates).</p>
|
|
486
491
|
</article>
|
|
487
492
|
<article>
|
|
@@ -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.45.
|
|
5
|
+
"version": "1.45.5",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED