ur-agent 1.43.6 → 1.44.1
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 +17 -0
- package/dist/cli.js +186 -88
- package/documentation/index.html +2 -1
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.44.1
|
|
4
|
+
|
|
5
|
+
- Fix task board rendering: finished, failed, and skipped tasks now render as
|
|
6
|
+
checked instead of unchecked.
|
|
7
|
+
- Deduplicate consecutive task board emissions and keep final boards clean
|
|
8
|
+
(single header, single progress summary).
|
|
9
|
+
|
|
10
|
+
## 1.44.0
|
|
11
|
+
|
|
12
|
+
- Add `verifier.askBeforeGates` setting (default `false`). When enabled, UR asks
|
|
13
|
+
via `AskUserQuestion` whether to run project verification commands after a
|
|
14
|
+
task, instead of auto-running tests/typecheck/lint gates. Available in
|
|
15
|
+
`/config`, `ur config set verifier.askBeforeGates true`, and
|
|
16
|
+
`.ur/settings.json`.
|
|
17
|
+
- Prompt the model to stop after delivering its final response, reducing silent
|
|
18
|
+
extra thinking turns.
|
|
19
|
+
|
|
3
20
|
## 1.43.6
|
|
4
21
|
|
|
5
22
|
- Render output from reasoning models on OpenAI-compatible providers (LM Studio,
|
package/dist/cli.js
CHANGED
|
@@ -51805,7 +51805,7 @@ function isProviderRuntimeSelectable(providerId, env4 = process.env) {
|
|
|
51805
51805
|
return getProviderRuntimeBlockReason(providerId, env4) === null;
|
|
51806
51806
|
}
|
|
51807
51807
|
function listProviders(_options = {}) {
|
|
51808
|
-
return PROVIDER_IDS.map((id) => PROVIDERS[id]).filter((provider) => provider.id !== "subscription");
|
|
51808
|
+
return PROVIDER_IDS.map((id) => PROVIDERS[id]).filter((provider) => provider.id !== "subscription" && !provider.disabled);
|
|
51809
51809
|
}
|
|
51810
51810
|
function hasSecretLikeValue(value) {
|
|
51811
51811
|
const trimmed = value.trim();
|
|
@@ -53025,7 +53025,8 @@ var init_providerRegistry = __esm(() => {
|
|
|
53025
53025
|
versionArgs: ["--version"],
|
|
53026
53026
|
statusArgs: ["login", "status"],
|
|
53027
53027
|
loginArgs: ["login"],
|
|
53028
|
-
deviceLoginArgs: ["login", "--device-auth"]
|
|
53028
|
+
deviceLoginArgs: ["login", "--device-auth"],
|
|
53029
|
+
disabled: true
|
|
53029
53030
|
},
|
|
53030
53031
|
"claude-code-cli": {
|
|
53031
53032
|
id: "claude-code-cli",
|
|
@@ -53045,7 +53046,8 @@ var init_providerRegistry = __esm(() => {
|
|
|
53045
53046
|
commandCandidates: ["claude"],
|
|
53046
53047
|
versionArgs: ["--version"],
|
|
53047
53048
|
statusArgs: ["auth", "status"],
|
|
53048
|
-
loginArgs: ["auth", "login"]
|
|
53049
|
+
loginArgs: ["auth", "login"],
|
|
53050
|
+
disabled: true
|
|
53049
53051
|
},
|
|
53050
53052
|
"gemini-cli": {
|
|
53051
53053
|
id: "gemini-cli",
|
|
@@ -53065,7 +53067,8 @@ var init_providerRegistry = __esm(() => {
|
|
|
53065
53067
|
commandCandidates: ["gemini"],
|
|
53066
53068
|
versionArgs: ["--version"],
|
|
53067
53069
|
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."
|
|
53070
|
+
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.",
|
|
53071
|
+
disabled: true
|
|
53069
53072
|
},
|
|
53070
53073
|
"antigravity-cli": {
|
|
53071
53074
|
id: "antigravity-cli",
|
|
@@ -53084,7 +53087,8 @@ var init_providerRegistry = __esm(() => {
|
|
|
53084
53087
|
accessPathLabel: "subscription login via official Antigravity CLI",
|
|
53085
53088
|
commandCandidates: ["agy", "antigravity", "google-antigravity", "ag"],
|
|
53086
53089
|
versionArgs: ["--version"],
|
|
53087
|
-
loginArgs: []
|
|
53090
|
+
loginArgs: [],
|
|
53091
|
+
disabled: true
|
|
53088
53092
|
},
|
|
53089
53093
|
"openai-api": {
|
|
53090
53094
|
id: "openai-api",
|
|
@@ -53203,11 +53207,12 @@ var init_providerRegistry = __esm(() => {
|
|
|
53203
53207
|
listModels: "openai-compatible-models",
|
|
53204
53208
|
validateModel: "discovered-list",
|
|
53205
53209
|
runtimeKind: "ur-native",
|
|
53206
|
-
...
|
|
53210
|
+
...SUBSCRIPTION_CLI_CAPABILITIES,
|
|
53207
53211
|
authMode: "local",
|
|
53208
53212
|
legalPath: "local OpenAI-compatible server",
|
|
53209
53213
|
accessPathLabel: "local OpenAI-compatible endpoint",
|
|
53210
53214
|
defaultBaseUrl: "http://localhost:1234/v1",
|
|
53215
|
+
disabled: true,
|
|
53211
53216
|
endpointKind: "openai-compatible"
|
|
53212
53217
|
},
|
|
53213
53218
|
"llama.cpp": {
|
|
@@ -71253,7 +71258,7 @@ var init_auth = __esm(() => {
|
|
|
71253
71258
|
|
|
71254
71259
|
// src/utils/userAgent.ts
|
|
71255
71260
|
function getURCodeUserAgent() {
|
|
71256
|
-
return `ur/${"1.
|
|
71261
|
+
return `ur/${"1.44.1"}`;
|
|
71257
71262
|
}
|
|
71258
71263
|
|
|
71259
71264
|
// src/utils/workloadContext.ts
|
|
@@ -71275,7 +71280,7 @@ function getUserAgent() {
|
|
|
71275
71280
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
71276
71281
|
const workload = getWorkload();
|
|
71277
71282
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
71278
|
-
return `ur-cli/${"1.
|
|
71283
|
+
return `ur-cli/${"1.44.1"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
71279
71284
|
}
|
|
71280
71285
|
function getMCPUserAgent() {
|
|
71281
71286
|
const parts = [];
|
|
@@ -71289,7 +71294,7 @@ function getMCPUserAgent() {
|
|
|
71289
71294
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
71290
71295
|
}
|
|
71291
71296
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
71292
|
-
return `ur/${"1.
|
|
71297
|
+
return `ur/${"1.44.1"}${suffix}`;
|
|
71293
71298
|
}
|
|
71294
71299
|
function getWebFetchUserAgent() {
|
|
71295
71300
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -71427,7 +71432,7 @@ var init_user = __esm(() => {
|
|
|
71427
71432
|
deviceId,
|
|
71428
71433
|
sessionId: getSessionId(),
|
|
71429
71434
|
email: getEmail(),
|
|
71430
|
-
appVersion: "1.
|
|
71435
|
+
appVersion: "1.44.1",
|
|
71431
71436
|
platform: getHostPlatformForAnalytics(),
|
|
71432
71437
|
organizationUuid,
|
|
71433
71438
|
accountUuid,
|
|
@@ -77944,7 +77949,7 @@ var init_metadata = __esm(() => {
|
|
|
77944
77949
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
77945
77950
|
WHITESPACE_REGEX = /\s+/;
|
|
77946
77951
|
getVersionBase = memoize_default(() => {
|
|
77947
|
-
const match = "1.
|
|
77952
|
+
const match = "1.44.1".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
77948
77953
|
return match ? match[0] : undefined;
|
|
77949
77954
|
});
|
|
77950
77955
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -77984,7 +77989,7 @@ var init_metadata = __esm(() => {
|
|
|
77984
77989
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
77985
77990
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
77986
77991
|
isURAiAuth: isURAISubscriber(),
|
|
77987
|
-
version: "1.
|
|
77992
|
+
version: "1.44.1",
|
|
77988
77993
|
versionBase: getVersionBase(),
|
|
77989
77994
|
buildTime: "",
|
|
77990
77995
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -78654,7 +78659,7 @@ function initialize1PEventLogging() {
|
|
|
78654
78659
|
const platform2 = getPlatform();
|
|
78655
78660
|
const attributes = {
|
|
78656
78661
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
78657
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.
|
|
78662
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.44.1"
|
|
78658
78663
|
};
|
|
78659
78664
|
if (platform2 === "wsl") {
|
|
78660
78665
|
const wslVersion = getWslVersion();
|
|
@@ -78681,7 +78686,7 @@ function initialize1PEventLogging() {
|
|
|
78681
78686
|
})
|
|
78682
78687
|
]
|
|
78683
78688
|
});
|
|
78684
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.
|
|
78689
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.44.1");
|
|
78685
78690
|
}
|
|
78686
78691
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
78687
78692
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -81311,6 +81316,9 @@ var init_types2 = __esm(() => {
|
|
|
81311
81316
|
prefersReducedMotion: exports_external.boolean().optional().describe("Reduce or disable animations for accessibility (spinner shimmer, flash effects, etc.)"),
|
|
81312
81317
|
autoMemoryEnabled: exports_external.boolean().optional().describe("Enable auto-memory for this project. When false, UR will not read from or write to the auto-memory directory."),
|
|
81313
81318
|
autoMemoryDirectory: exports_external.string().optional().describe("Custom directory path for auto-memory storage. Supports ~/ prefix for home directory expansion. Ignored if set in projectSettings (checked-in .ur/settings.json) for security. When unset, defaults to ~/.ur/projects/<sanitized-cwd>/memory/."),
|
|
81319
|
+
verifier: exports_external.object({
|
|
81320
|
+
askBeforeGates: exports_external.boolean().optional().describe("When true, UR asks whether to run project verification commands (tests, typecheck, lint) after a task instead of running them automatically. Default: false.")
|
|
81321
|
+
}).optional().describe("Verifier behavior configuration"),
|
|
81314
81322
|
autoDreamEnabled: exports_external.boolean().optional().describe("Enable background memory consolidation (auto-dream). When set, overrides the server-side default."),
|
|
81315
81323
|
ollama: exports_external.object({
|
|
81316
81324
|
host: exports_external.string().optional().describe("URL of the Ollama server to use (e.g. http://192.168.1.50:11434)"),
|
|
@@ -83980,7 +83988,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
|
|
|
83980
83988
|
function formatA2AAgentCard(options = {}, pretty = true) {
|
|
83981
83989
|
return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
|
|
83982
83990
|
}
|
|
83983
|
-
var urVersion = "1.
|
|
83991
|
+
var urVersion = "1.44.1", coverage, priorityRoadmap;
|
|
83984
83992
|
var init_trends = __esm(() => {
|
|
83985
83993
|
coverage = [
|
|
83986
83994
|
{
|
|
@@ -85975,7 +85983,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
85975
85983
|
if (!isAttributionHeaderEnabled()) {
|
|
85976
85984
|
return "";
|
|
85977
85985
|
}
|
|
85978
|
-
const version2 = `${"1.
|
|
85986
|
+
const version2 = `${"1.44.1"}.${fingerprint}`;
|
|
85979
85987
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
85980
85988
|
const cch = "";
|
|
85981
85989
|
const workload = getWorkload();
|
|
@@ -144522,16 +144530,26 @@ class Verifier {
|
|
|
144522
144530
|
const ranBash = this.ledger.ranBash(turnId);
|
|
144523
144531
|
let commands = config2 ? pickCommands(config2, modifiedFiles, ranBash, this.cwd) : null;
|
|
144524
144532
|
let timeoutMs = config2?.timeoutMs;
|
|
144533
|
+
let autoDetected = false;
|
|
144525
144534
|
if (!commands && hasNonIgnoredEdits(config2, modifiedFiles, this.cwd)) {
|
|
144526
144535
|
commands = this.autoDetectedAfterEditCommands();
|
|
144527
144536
|
timeoutMs = config2?.timeoutMs ?? AUTO_DETECTED_GATE_TIMEOUT_MS;
|
|
144537
|
+
autoDetected = true;
|
|
144528
144538
|
}
|
|
144529
144539
|
if (commands && commands.length > 0) {
|
|
144530
|
-
|
|
144531
|
-
|
|
144540
|
+
if (!askBeforeGatesEnabled() && getIsNonInteractiveSession()) {
|
|
144541
|
+
const result = await runGateCommands(commands, this.cwd, timeoutMs);
|
|
144542
|
+
if (!result.ok) {
|
|
144543
|
+
this.bumpRejection(turnId);
|
|
144544
|
+
const failed = result;
|
|
144545
|
+
return { ok: false, reminder: failed.reminder };
|
|
144546
|
+
}
|
|
144547
|
+
} else {
|
|
144532
144548
|
this.bumpRejection(turnId);
|
|
144533
|
-
|
|
144534
|
-
|
|
144549
|
+
return {
|
|
144550
|
+
ok: false,
|
|
144551
|
+
reminder: buildAskBeforeGatesReminder(commands, autoDetected)
|
|
144552
|
+
};
|
|
144535
144553
|
}
|
|
144536
144554
|
}
|
|
144537
144555
|
const pluginValidators = await this.pluginValidatorsPromise;
|
|
@@ -144588,6 +144606,22 @@ class Verifier {
|
|
|
144588
144606
|
return detectProjectQualityStack(this.cwd).commands.map((command) => command.command);
|
|
144589
144607
|
}
|
|
144590
144608
|
}
|
|
144609
|
+
function askBeforeGatesEnabled() {
|
|
144610
|
+
try {
|
|
144611
|
+
return getInitialSettings().verifier?.askBeforeGates === true;
|
|
144612
|
+
} catch {
|
|
144613
|
+
return false;
|
|
144614
|
+
}
|
|
144615
|
+
}
|
|
144616
|
+
function buildAskBeforeGatesReminder(commands, autoDetected) {
|
|
144617
|
+
const label = autoDetected ? "auto-detected project verification" : "project verification";
|
|
144618
|
+
const list2 = commands.map((c4) => `- \`${c4}\``).join(`
|
|
144619
|
+
`);
|
|
144620
|
+
return `I have ${label} commands ready to run:
|
|
144621
|
+
${list2}
|
|
144622
|
+
|
|
144623
|
+
` + `Do not automatically run them and do not declare the task complete without the user's decision. ` + `Use AskUserQuestion to ask the user whether to run these verification commands now. ` + `If they confirm, run them with the BashTool and then report the outcome. ` + `If they decline, finish your response without running them.`;
|
|
144624
|
+
}
|
|
144591
144625
|
function pickPluginValidators(validators3, modifiedFiles, ranBash) {
|
|
144592
144626
|
return validators3.filter((v) => {
|
|
144593
144627
|
if (v.when === "always")
|
|
@@ -144605,6 +144639,8 @@ function pickPluginValidators(validators3, modifiedFiles, ranBash) {
|
|
|
144605
144639
|
var import_picomatch3, DEFAULT_MAX_REJECTIONS_PER_TURN = 3, AUTO_DETECTED_GATE_TIMEOUT_MS = 600000;
|
|
144606
144640
|
var init_verifier = __esm(() => {
|
|
144607
144641
|
init_envUtils();
|
|
144642
|
+
init_state();
|
|
144643
|
+
init_settings2();
|
|
144608
144644
|
init_projectQuality();
|
|
144609
144645
|
init_doneDetector();
|
|
144610
144646
|
init_ledger();
|
|
@@ -193917,7 +193953,7 @@ function getTelemetryAttributes() {
|
|
|
193917
193953
|
attributes["session.id"] = sessionId;
|
|
193918
193954
|
}
|
|
193919
193955
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
193920
|
-
attributes["app.version"] = "1.
|
|
193956
|
+
attributes["app.version"] = "1.44.1";
|
|
193921
193957
|
}
|
|
193922
193958
|
const oauthAccount = getOauthAccountInfo();
|
|
193923
193959
|
if (oauthAccount) {
|
|
@@ -229305,7 +229341,7 @@ function getInstallationEnv() {
|
|
|
229305
229341
|
return;
|
|
229306
229342
|
}
|
|
229307
229343
|
function getURCodeVersion() {
|
|
229308
|
-
return "1.
|
|
229344
|
+
return "1.44.1";
|
|
229309
229345
|
}
|
|
229310
229346
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
229311
229347
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -232144,7 +232180,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
232144
232180
|
const client2 = new Client({
|
|
232145
232181
|
name: "ur",
|
|
232146
232182
|
title: "UR",
|
|
232147
|
-
version: "1.
|
|
232183
|
+
version: "1.44.1",
|
|
232148
232184
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
232149
232185
|
websiteUrl: PRODUCT_URL
|
|
232150
232186
|
}, {
|
|
@@ -232498,7 +232534,7 @@ var init_client5 = __esm(() => {
|
|
|
232498
232534
|
const client2 = new Client({
|
|
232499
232535
|
name: "ur",
|
|
232500
232536
|
title: "UR",
|
|
232501
|
-
version: "1.
|
|
232537
|
+
version: "1.44.1",
|
|
232502
232538
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
232503
232539
|
websiteUrl: PRODUCT_URL
|
|
232504
232540
|
}, {
|
|
@@ -242312,9 +242348,9 @@ async function assertMinVersion() {
|
|
|
242312
242348
|
if (false) {}
|
|
242313
242349
|
try {
|
|
242314
242350
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
242315
|
-
if (versionConfig.minVersion && lt("1.
|
|
242351
|
+
if (versionConfig.minVersion && lt("1.44.1", versionConfig.minVersion)) {
|
|
242316
242352
|
console.error(`
|
|
242317
|
-
It looks like your version of UR (${"1.
|
|
242353
|
+
It looks like your version of UR (${"1.44.1"}) needs an update.
|
|
242318
242354
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
242319
242355
|
|
|
242320
242356
|
To update, please run:
|
|
@@ -242530,7 +242566,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
242530
242566
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
242531
242567
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
242532
242568
|
pid: process.pid,
|
|
242533
|
-
currentVersion: "1.
|
|
242569
|
+
currentVersion: "1.44.1"
|
|
242534
242570
|
});
|
|
242535
242571
|
return "in_progress";
|
|
242536
242572
|
}
|
|
@@ -242539,7 +242575,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
242539
242575
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
242540
242576
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
242541
242577
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
242542
|
-
currentVersion: "1.
|
|
242578
|
+
currentVersion: "1.44.1"
|
|
242543
242579
|
});
|
|
242544
242580
|
console.error(`
|
|
242545
242581
|
Error: Windows NPM detected in WSL
|
|
@@ -243074,7 +243110,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
243074
243110
|
}
|
|
243075
243111
|
async function getDoctorDiagnostic() {
|
|
243076
243112
|
const installationType = await getCurrentInstallationType();
|
|
243077
|
-
const version2 = typeof MACRO !== "undefined" ? "1.
|
|
243113
|
+
const version2 = typeof MACRO !== "undefined" ? "1.44.1" : "unknown";
|
|
243078
243114
|
const installationPath = await getInstallationPath();
|
|
243079
243115
|
const invokedBinary = getInvokedBinary();
|
|
243080
243116
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -244009,8 +244045,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
244009
244045
|
const maxVersion = await getMaxVersion();
|
|
244010
244046
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
244011
244047
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
244012
|
-
if (gte("1.
|
|
244013
|
-
logForDebugging(`Native installer: current version ${"1.
|
|
244048
|
+
if (gte("1.44.1", maxVersion)) {
|
|
244049
|
+
logForDebugging(`Native installer: current version ${"1.44.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
244014
244050
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
244015
244051
|
latency_ms: Date.now() - startTime,
|
|
244016
244052
|
max_version: maxVersion,
|
|
@@ -244021,7 +244057,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
244021
244057
|
version2 = maxVersion;
|
|
244022
244058
|
}
|
|
244023
244059
|
}
|
|
244024
|
-
if (!forceReinstall && version2 === "1.
|
|
244060
|
+
if (!forceReinstall && version2 === "1.44.1" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
244025
244061
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
244026
244062
|
logEvent("tengu_native_update_complete", {
|
|
244027
244063
|
latency_ms: Date.now() - startTime,
|
|
@@ -246552,6 +246588,16 @@ function getTaskIcon(status) {
|
|
|
246552
246588
|
icon: figures_default.squareSmall,
|
|
246553
246589
|
color: undefined
|
|
246554
246590
|
};
|
|
246591
|
+
case "failed":
|
|
246592
|
+
return {
|
|
246593
|
+
icon: figures_default.cross,
|
|
246594
|
+
color: "error"
|
|
246595
|
+
};
|
|
246596
|
+
case "skipped":
|
|
246597
|
+
return {
|
|
246598
|
+
icon: figures_default.warning,
|
|
246599
|
+
color: "warning"
|
|
246600
|
+
};
|
|
246555
246601
|
}
|
|
246556
246602
|
}
|
|
246557
246603
|
function TaskItem(t0) {
|
|
@@ -301951,6 +301997,12 @@ var init_supportedSettings = __esm(() => {
|
|
|
301951
301997
|
path: ["codeIndexAutoReindex"],
|
|
301952
301998
|
description: "Automatically refresh the local semantic code index during interactive sessions"
|
|
301953
301999
|
},
|
|
302000
|
+
"verifier.askBeforeGates": {
|
|
302001
|
+
source: "settings",
|
|
302002
|
+
type: "boolean",
|
|
302003
|
+
path: ["verifier", "askBeforeGates"],
|
|
302004
|
+
description: "Ask before running project verification commands (tests, typecheck, lint) after a task instead of running them automatically. Default: false."
|
|
302005
|
+
},
|
|
301954
302006
|
autoDreamEnabled: {
|
|
301955
302007
|
source: "settings",
|
|
301956
302008
|
type: "boolean",
|
|
@@ -341012,7 +341064,7 @@ function Feedback({
|
|
|
341012
341064
|
platform: env2.platform,
|
|
341013
341065
|
gitRepo: envInfo.isGit,
|
|
341014
341066
|
terminal: env2.terminal,
|
|
341015
|
-
version: "1.
|
|
341067
|
+
version: "1.44.1",
|
|
341016
341068
|
transcript: normalizeMessagesForAPI(messages),
|
|
341017
341069
|
errors: sanitizedErrors,
|
|
341018
341070
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -341204,7 +341256,7 @@ function Feedback({
|
|
|
341204
341256
|
", ",
|
|
341205
341257
|
env2.terminal,
|
|
341206
341258
|
", v",
|
|
341207
|
-
"1.
|
|
341259
|
+
"1.44.1"
|
|
341208
341260
|
]
|
|
341209
341261
|
}, undefined, true, undefined, this)
|
|
341210
341262
|
]
|
|
@@ -341310,7 +341362,7 @@ ${sanitizedDescription}
|
|
|
341310
341362
|
` + `**Environment Info**
|
|
341311
341363
|
` + `- Platform: ${env2.platform}
|
|
341312
341364
|
` + `- Terminal: ${env2.terminal}
|
|
341313
|
-
` + `- Version: ${"1.
|
|
341365
|
+
` + `- Version: ${"1.44.1"}
|
|
341314
341366
|
` + `- Feedback ID: ${feedbackId}
|
|
341315
341367
|
` + `
|
|
341316
341368
|
**Errors**
|
|
@@ -344421,7 +344473,7 @@ function buildPrimarySection() {
|
|
|
344421
344473
|
}, undefined, false, undefined, this);
|
|
344422
344474
|
return [{
|
|
344423
344475
|
label: "Version",
|
|
344424
|
-
value: "1.
|
|
344476
|
+
value: "1.44.1"
|
|
344425
344477
|
}, {
|
|
344426
344478
|
label: "Session name",
|
|
344427
344479
|
value: nameValue
|
|
@@ -346668,6 +346720,31 @@ function Config({
|
|
|
346668
346720
|
});
|
|
346669
346721
|
}
|
|
346670
346722
|
}] : [],
|
|
346723
|
+
{
|
|
346724
|
+
id: "verifierAskBeforeGates",
|
|
346725
|
+
label: "Ask before running verification gates",
|
|
346726
|
+
value: settingsData?.verifier?.askBeforeGates ?? false,
|
|
346727
|
+
type: "boolean",
|
|
346728
|
+
onChange(askBeforeGates) {
|
|
346729
|
+
updateSettingsForSource("userSettings", {
|
|
346730
|
+
verifier: {
|
|
346731
|
+
...settingsData?.verifier,
|
|
346732
|
+
askBeforeGates
|
|
346733
|
+
}
|
|
346734
|
+
});
|
|
346735
|
+
setSettingsData((prev) => ({
|
|
346736
|
+
...prev,
|
|
346737
|
+
verifier: {
|
|
346738
|
+
...prev?.verifier,
|
|
346739
|
+
askBeforeGates
|
|
346740
|
+
}
|
|
346741
|
+
}));
|
|
346742
|
+
logEvent("tengu_config_changed", {
|
|
346743
|
+
setting: "verifierAskBeforeGates",
|
|
346744
|
+
value: String(askBeforeGates)
|
|
346745
|
+
});
|
|
346746
|
+
}
|
|
346747
|
+
},
|
|
346671
346748
|
{
|
|
346672
346749
|
id: "verbose",
|
|
346673
346750
|
label: "Verbose output",
|
|
@@ -347182,6 +347259,9 @@ function Config({
|
|
|
347182
347259
|
if (globalConfig2.autoInstallIdeExtension !== initialConfig.current.autoInstallIdeExtension) {
|
|
347183
347260
|
formattedChanges.push(`${globalConfig2.autoInstallIdeExtension ? "Enabled" : "Disabled"} auto-install IDE extension`);
|
|
347184
347261
|
}
|
|
347262
|
+
if (settingsData?.verifier?.askBeforeGates !== initialSettingsData.current?.verifier?.askBeforeGates) {
|
|
347263
|
+
formattedChanges.push(`${settingsData?.verifier?.askBeforeGates ? "Enabled" : "Disabled"} ask before running verification gates`);
|
|
347264
|
+
}
|
|
347185
347265
|
if (globalConfig2.autoCompactEnabled !== initialConfig.current.autoCompactEnabled) {
|
|
347186
347266
|
formattedChanges.push(`${globalConfig2.autoCompactEnabled ? "Enabled" : "Disabled"} auto-compact`);
|
|
347187
347267
|
}
|
|
@@ -347239,6 +347319,7 @@ function Config({
|
|
|
347239
347319
|
autoUpdatesChannel: iu?.autoUpdatesChannel,
|
|
347240
347320
|
minimumVersion: iu?.minimumVersion,
|
|
347241
347321
|
language: iu?.language,
|
|
347322
|
+
verifier: iu?.verifier,
|
|
347242
347323
|
...{},
|
|
347243
347324
|
syntaxHighlightingDisabled: iu?.syntaxHighlightingDisabled,
|
|
347244
347325
|
permissions: iu?.permissions === undefined ? undefined : {
|
|
@@ -347722,7 +347803,7 @@ function Config({
|
|
|
347722
347803
|
}
|
|
347723
347804
|
}, undefined, false, undefined, this)
|
|
347724
347805
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime177.jsxDEV(ChannelDowngradeDialog, {
|
|
347725
|
-
currentVersion: "1.
|
|
347806
|
+
currentVersion: "1.44.1",
|
|
347726
347807
|
onChoice: (choice) => {
|
|
347727
347808
|
setShowSubmenu(null);
|
|
347728
347809
|
setTabsHidden(false);
|
|
@@ -347734,7 +347815,7 @@ function Config({
|
|
|
347734
347815
|
autoUpdatesChannel: "stable"
|
|
347735
347816
|
};
|
|
347736
347817
|
if (choice === "stay") {
|
|
347737
|
-
newSettings.minimumVersion = "1.
|
|
347818
|
+
newSettings.minimumVersion = "1.44.1";
|
|
347738
347819
|
}
|
|
347739
347820
|
updateSettingsForSource("userSettings", newSettings);
|
|
347740
347821
|
setSettingsData((prev_27) => ({
|
|
@@ -355804,7 +355885,7 @@ function HelpV2(t0) {
|
|
|
355804
355885
|
let t6;
|
|
355805
355886
|
if ($3[31] !== tabs) {
|
|
355806
355887
|
t6 = /* @__PURE__ */ jsx_dev_runtime204.jsxDEV(Tabs, {
|
|
355807
|
-
title: `UR v${"1.
|
|
355888
|
+
title: `UR v${"1.44.1"}`,
|
|
355808
355889
|
color: "professionalBlue",
|
|
355809
355890
|
defaultTab: "general",
|
|
355810
355891
|
children: tabs
|
|
@@ -356550,7 +356631,7 @@ function buildToolUseContext(tools, readFileStateCache) {
|
|
|
356550
356631
|
async function handleInitialize(options2) {
|
|
356551
356632
|
return {
|
|
356552
356633
|
name: "UR",
|
|
356553
|
-
version: "1.
|
|
356634
|
+
version: "1.44.1",
|
|
356554
356635
|
protocolVersion: "0.1.0",
|
|
356555
356636
|
workspaceRoot: options2.cwd,
|
|
356556
356637
|
capabilities: {
|
|
@@ -376692,7 +376773,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
376692
376773
|
return [];
|
|
376693
376774
|
}
|
|
376694
376775
|
}
|
|
376695
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.
|
|
376776
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.44.1") {
|
|
376696
376777
|
if (process.env.USER_TYPE === "ant") {
|
|
376697
376778
|
const changelog = "";
|
|
376698
376779
|
if (changelog) {
|
|
@@ -376719,7 +376800,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.43.6")
|
|
|
376719
376800
|
releaseNotes
|
|
376720
376801
|
};
|
|
376721
376802
|
}
|
|
376722
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.
|
|
376803
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.44.1") {
|
|
376723
376804
|
if (process.env.USER_TYPE === "ant") {
|
|
376724
376805
|
const changelog = "";
|
|
376725
376806
|
if (changelog) {
|
|
@@ -377898,7 +377979,7 @@ function getRecentActivitySync() {
|
|
|
377898
377979
|
return cachedActivity;
|
|
377899
377980
|
}
|
|
377900
377981
|
function getLogoDisplayData() {
|
|
377901
|
-
const version2 = process.env.DEMO_VERSION ?? "1.
|
|
377982
|
+
const version2 = process.env.DEMO_VERSION ?? "1.44.1";
|
|
377902
377983
|
const serverUrl = getDirectConnectServerUrl();
|
|
377903
377984
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
377904
377985
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -378687,7 +378768,7 @@ function LogoV2() {
|
|
|
378687
378768
|
if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
378688
378769
|
t2 = () => {
|
|
378689
378770
|
const currentConfig2 = getGlobalConfig();
|
|
378690
|
-
if (currentConfig2.lastReleaseNotesSeen === "1.
|
|
378771
|
+
if (currentConfig2.lastReleaseNotesSeen === "1.44.1") {
|
|
378691
378772
|
return;
|
|
378692
378773
|
}
|
|
378693
378774
|
saveGlobalConfig(_temp326);
|
|
@@ -379372,12 +379453,12 @@ function LogoV2() {
|
|
|
379372
379453
|
return t41;
|
|
379373
379454
|
}
|
|
379374
379455
|
function _temp326(current) {
|
|
379375
|
-
if (current.lastReleaseNotesSeen === "1.
|
|
379456
|
+
if (current.lastReleaseNotesSeen === "1.44.1") {
|
|
379376
379457
|
return current;
|
|
379377
379458
|
}
|
|
379378
379459
|
return {
|
|
379379
379460
|
...current,
|
|
379380
|
-
lastReleaseNotesSeen: "1.
|
|
379461
|
+
lastReleaseNotesSeen: "1.44.1"
|
|
379381
379462
|
};
|
|
379382
379463
|
}
|
|
379383
379464
|
function _temp243(s_0) {
|
|
@@ -397453,7 +397534,11 @@ function publicStatus(task) {
|
|
|
397453
397534
|
if (task.status === "paused-review")
|
|
397454
397535
|
return "paused for review";
|
|
397455
397536
|
if (task.status === "skipped")
|
|
397456
|
-
return "skipped
|
|
397537
|
+
return "skipped";
|
|
397538
|
+
if (task.status === "failed")
|
|
397539
|
+
return "failed";
|
|
397540
|
+
if (task.status === "finished")
|
|
397541
|
+
return "completed";
|
|
397457
397542
|
return task.status;
|
|
397458
397543
|
}
|
|
397459
397544
|
function isWaiting(task) {
|
|
@@ -397474,6 +397559,9 @@ function progressSummary(tasks2) {
|
|
|
397474
397559
|
const skipped = tasks2.filter((task) => task.status === "skipped").length;
|
|
397475
397560
|
return `Progress: ${finished7}/${tasks2.length} finished, ${running} running, ${queued} queued, ${waiting} waiting, ${failed} failed, ${skipped} skipped`;
|
|
397476
397561
|
}
|
|
397562
|
+
function isFinished(task) {
|
|
397563
|
+
return task.status === "finished" || task.status === "failed" || task.status === "skipped";
|
|
397564
|
+
}
|
|
397477
397565
|
function renderTaskBoard(planOrTasks, options2 = {}) {
|
|
397478
397566
|
const tasks2 = Array.isArray(planOrTasks) ? planOrTasks : planOrTasks.tasks;
|
|
397479
397567
|
const activeAgents = options2.activeAgents ?? tasks2.filter((task) => task.status === "running").length;
|
|
@@ -397482,7 +397570,8 @@ function renderTaskBoard(planOrTasks, options2 = {}) {
|
|
|
397482
397570
|
const rows = orderedTasks.map((task) => {
|
|
397483
397571
|
const status2 = pad(publicStatus(task), 18);
|
|
397484
397572
|
const agent = pad(String(task.assignedAgent), 8);
|
|
397485
|
-
|
|
397573
|
+
const check3 = isFinished(task) ? "[\u2713]" : "[ ]";
|
|
397574
|
+
return `${check3} ${task.order}. ${status2} | ${agent} | ${task.title}`;
|
|
397486
397575
|
});
|
|
397487
397576
|
return [
|
|
397488
397577
|
"[UR-Nexus Task Board]",
|
|
@@ -397757,13 +397846,18 @@ function emitBoard(options2, tasks2, maxAgents2) {
|
|
|
397757
397846
|
...DEFAULT_PROMPT_PLANNING_CONFIG,
|
|
397758
397847
|
...resolvePromptPlanningConfig(options2.config)
|
|
397759
397848
|
};
|
|
397760
|
-
if (config3.showTaskBoard)
|
|
397761
|
-
|
|
397762
|
-
|
|
397763
|
-
|
|
397764
|
-
|
|
397765
|
-
|
|
397766
|
-
|
|
397849
|
+
if (!config3.showTaskBoard)
|
|
397850
|
+
return;
|
|
397851
|
+
const board = renderTaskBoard(tasks2, { maxAgents: maxAgents2 });
|
|
397852
|
+
const lastBoard = lastBoardByRun.get(options2);
|
|
397853
|
+
if (lastBoard === board)
|
|
397854
|
+
return;
|
|
397855
|
+
lastBoardByRun.set(options2, board);
|
|
397856
|
+
options2.onEvent?.({
|
|
397857
|
+
type: "board",
|
|
397858
|
+
board,
|
|
397859
|
+
tasks: tasks2
|
|
397860
|
+
});
|
|
397767
397861
|
}
|
|
397768
397862
|
function emitStatus(options2, task, tasks2, lastStatuses, maxAgents2) {
|
|
397769
397863
|
if (lastStatuses.get(task.id) === task.status)
|
|
@@ -397978,10 +398072,12 @@ async function runPromptPlan(plan, options2) {
|
|
|
397978
398072
|
await Promise.race(running);
|
|
397979
398073
|
}
|
|
397980
398074
|
}
|
|
398075
|
+
var lastBoardByRun;
|
|
397981
398076
|
var init_executor = __esm(() => {
|
|
397982
398077
|
init_config9();
|
|
397983
398078
|
init_evidence3();
|
|
397984
398079
|
init_validation4();
|
|
398080
|
+
lastBoardByRun = new WeakMap;
|
|
397985
398081
|
});
|
|
397986
398082
|
|
|
397987
398083
|
// src/services/promptPlanning/planner.ts
|
|
@@ -411258,7 +411354,7 @@ var init_code_index2 = __esm(() => {
|
|
|
411258
411354
|
|
|
411259
411355
|
// node_modules/typescript/lib/typescript.js
|
|
411260
411356
|
var require_typescript2 = __commonJS((exports, module) => {
|
|
411261
|
-
var __dirname = "/
|
|
411357
|
+
var __dirname = "/Users/maith/Desktop/ur3-dev/UR-1.43.3/node_modules/typescript/lib", __filename = "/Users/maith/Desktop/ur3-dev/UR-1.43.3/node_modules/typescript/lib/typescript.js";
|
|
411262
411358
|
/*! *****************************************************************************
|
|
411263
411359
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
411264
411360
|
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
@@ -596792,7 +596888,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
596792
596888
|
smapsRollup,
|
|
596793
596889
|
platform: process.platform,
|
|
596794
596890
|
nodeVersion: process.version,
|
|
596795
|
-
ccVersion: "1.
|
|
596891
|
+
ccVersion: "1.44.1"
|
|
596796
596892
|
};
|
|
596797
596893
|
}
|
|
596798
596894
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -597378,7 +597474,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
597378
597474
|
var call137 = async () => {
|
|
597379
597475
|
return {
|
|
597380
597476
|
type: "text",
|
|
597381
|
-
value: "1.
|
|
597477
|
+
value: "1.44.1"
|
|
597382
597478
|
};
|
|
597383
597479
|
}, version2, version_default;
|
|
597384
597480
|
var init_version = __esm(() => {
|
|
@@ -607471,7 +607567,7 @@ function generateHtmlReport(data, insights) {
|
|
|
607471
607567
|
</html>`;
|
|
607472
607568
|
}
|
|
607473
607569
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
607474
|
-
const version3 = typeof MACRO !== "undefined" ? "1.
|
|
607570
|
+
const version3 = typeof MACRO !== "undefined" ? "1.44.1" : "unknown";
|
|
607475
607571
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
607476
607572
|
const facets_summary = {
|
|
607477
607573
|
total: facets.size,
|
|
@@ -611751,7 +611847,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
611751
611847
|
init_settings2();
|
|
611752
611848
|
init_slowOperations();
|
|
611753
611849
|
init_uuid();
|
|
611754
|
-
VERSION5 = typeof MACRO !== "undefined" ? "1.
|
|
611850
|
+
VERSION5 = typeof MACRO !== "undefined" ? "1.44.1" : "unknown";
|
|
611755
611851
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
611756
611852
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
611757
611853
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -612956,7 +613052,7 @@ var init_filesystem = __esm(() => {
|
|
|
612956
613052
|
});
|
|
612957
613053
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
612958
613054
|
const nonce = randomBytes18(16).toString("hex");
|
|
612959
|
-
return join202(getURTempDir(), "bundled-skills", "1.
|
|
613055
|
+
return join202(getURTempDir(), "bundled-skills", "1.44.1", nonce);
|
|
612960
613056
|
});
|
|
612961
613057
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
612962
613058
|
});
|
|
@@ -618383,7 +618479,9 @@ function getSimpleDoingTasksSection() {
|
|
|
618383
618479
|
`Default to writing no comments. Only add one when the WHY is non-obvious: a hidden constraint, a subtle invariant, a workaround for a specific bug, behavior that would surprise a reader. If removing the comment wouldn't confuse a future reader, don't write it.`,
|
|
618384
618480
|
`Don't explain WHAT the code does, since well-named identifiers already do that. Don't reference the current task, fix, or callers ("used by X", "added for the Y flow", "handles the case from issue #123"), since those belong in the PR description and rot as the codebase evolves.`,
|
|
618385
618481
|
`Don't remove existing comments unless you're removing the code they describe or you know they're wrong. A comment that looks pointless to you may encode a constraint or a lesson from a past bug that isn't visible in the current diff.`,
|
|
618386
|
-
`
|
|
618482
|
+
`When you finish the substantive work of a task, do not automatically run the full project test suite. Instead, use AskUserQuestion to ask the user whether they want you to run the verification commands. Only run them if the user confirms. If they decline, report completion based on the verification you have already performed.`,
|
|
618483
|
+
`Before reporting a task complete, verify it actually works: run the test, execute the script, check the output. Minimum complexity means no gold-plating, not skipping the finish line. If you can't verify (no test exists, can't run the code), say so explicitly rather than claiming success.`,
|
|
618484
|
+
`When the task is fully complete and you have delivered your final response, stop. Do not continue with additional thinking turns, empty responses, or further tool calls unless the user asks for something new.`
|
|
618387
618485
|
];
|
|
618388
618486
|
const userHelpSubitems = [
|
|
618389
618487
|
`/help: Get help with using UR`,
|
|
@@ -619245,7 +619343,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
619245
619343
|
}
|
|
619246
619344
|
function computeFingerprintFromMessages(messages) {
|
|
619247
619345
|
const firstMessageText = extractFirstMessageText(messages);
|
|
619248
|
-
return computeFingerprint(firstMessageText, "1.
|
|
619346
|
+
return computeFingerprint(firstMessageText, "1.44.1");
|
|
619249
619347
|
}
|
|
619250
619348
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
619251
619349
|
var init_fingerprint = () => {};
|
|
@@ -621119,7 +621217,7 @@ async function sideQuery(opts) {
|
|
|
621119
621217
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
621120
621218
|
}
|
|
621121
621219
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
621122
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.
|
|
621220
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.44.1");
|
|
621123
621221
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
621124
621222
|
const systemBlocks = [
|
|
621125
621223
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -625856,7 +625954,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
625856
625954
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
625857
625955
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
625858
625956
|
betas: getSdkBetas(),
|
|
625859
|
-
ur_version: "1.
|
|
625957
|
+
ur_version: "1.44.1",
|
|
625860
625958
|
output_style: outputStyle2,
|
|
625861
625959
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
625862
625960
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -640484,7 +640582,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
640484
640582
|
function getSemverPart(version3) {
|
|
640485
640583
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
640486
640584
|
}
|
|
640487
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.
|
|
640585
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.44.1") {
|
|
640488
640586
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react226.useState(() => getSemverPart(initialVersion));
|
|
640489
640587
|
if (!updatedVersion) {
|
|
640490
640588
|
return null;
|
|
@@ -640533,7 +640631,7 @@ function AutoUpdater({
|
|
|
640533
640631
|
return;
|
|
640534
640632
|
}
|
|
640535
640633
|
if (false) {}
|
|
640536
|
-
const currentVersion = "1.
|
|
640634
|
+
const currentVersion = "1.44.1";
|
|
640537
640635
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
640538
640636
|
let latestVersion = await getLatestVersion(channel);
|
|
640539
640637
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -640762,12 +640860,12 @@ function NativeAutoUpdater({
|
|
|
640762
640860
|
logEvent("tengu_native_auto_updater_start", {});
|
|
640763
640861
|
try {
|
|
640764
640862
|
const maxVersion = await getMaxVersion();
|
|
640765
|
-
if (maxVersion && gt("1.
|
|
640863
|
+
if (maxVersion && gt("1.44.1", maxVersion)) {
|
|
640766
640864
|
const msg = await getMaxVersionMessage();
|
|
640767
640865
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
640768
640866
|
}
|
|
640769
640867
|
const result = await installLatest(channel);
|
|
640770
|
-
const currentVersion = "1.
|
|
640868
|
+
const currentVersion = "1.44.1";
|
|
640771
640869
|
const latencyMs = Date.now() - startTime;
|
|
640772
640870
|
if (result.lockFailed) {
|
|
640773
640871
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -640904,17 +641002,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
640904
641002
|
const maxVersion = await getMaxVersion();
|
|
640905
641003
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
640906
641004
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
640907
|
-
if (gte("1.
|
|
640908
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.
|
|
641005
|
+
if (gte("1.44.1", maxVersion)) {
|
|
641006
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.44.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
640909
641007
|
setUpdateAvailable(false);
|
|
640910
641008
|
return;
|
|
640911
641009
|
}
|
|
640912
641010
|
latest = maxVersion;
|
|
640913
641011
|
}
|
|
640914
|
-
const hasUpdate = latest && !gte("1.
|
|
641012
|
+
const hasUpdate = latest && !gte("1.44.1", latest) && !shouldSkipVersion(latest);
|
|
640915
641013
|
setUpdateAvailable(!!hasUpdate);
|
|
640916
641014
|
if (hasUpdate) {
|
|
640917
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.
|
|
641015
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.44.1"} -> ${latest}`);
|
|
640918
641016
|
}
|
|
640919
641017
|
};
|
|
640920
641018
|
$3[0] = t1;
|
|
@@ -640948,7 +641046,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
640948
641046
|
wrap: "truncate",
|
|
640949
641047
|
children: [
|
|
640950
641048
|
"currentVersion: ",
|
|
640951
|
-
"1.
|
|
641049
|
+
"1.44.1"
|
|
640952
641050
|
]
|
|
640953
641051
|
}, undefined, true, undefined, this);
|
|
640954
641052
|
$3[3] = verbose;
|
|
@@ -653400,7 +653498,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
653400
653498
|
project_dir: getOriginalCwd(),
|
|
653401
653499
|
added_dirs: addedDirs
|
|
653402
653500
|
},
|
|
653403
|
-
version: "1.
|
|
653501
|
+
version: "1.44.1",
|
|
653404
653502
|
output_style: {
|
|
653405
653503
|
name: outputStyleName
|
|
653406
653504
|
},
|
|
@@ -653483,7 +653581,7 @@ function StatusLineInner({
|
|
|
653483
653581
|
const taskValues = Object.values(tasks2);
|
|
653484
653582
|
const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
|
|
653485
653583
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
653486
|
-
version: "1.
|
|
653584
|
+
version: "1.44.1",
|
|
653487
653585
|
providerLabel: providerRuntime.providerLabel,
|
|
653488
653586
|
authMode: providerRuntime.authLabel,
|
|
653489
653587
|
model: providerRuntime.model ?? renderModelName(mainLoopModel),
|
|
@@ -664971,7 +665069,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
664971
665069
|
} catch {}
|
|
664972
665070
|
const data = {
|
|
664973
665071
|
trigger: trigger2,
|
|
664974
|
-
version: "1.
|
|
665072
|
+
version: "1.44.1",
|
|
664975
665073
|
platform: process.platform,
|
|
664976
665074
|
transcript,
|
|
664977
665075
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -676856,7 +676954,7 @@ function WelcomeV2() {
|
|
|
676856
676954
|
dimColor: true,
|
|
676857
676955
|
children: [
|
|
676858
676956
|
"v",
|
|
676859
|
-
"1.
|
|
676957
|
+
"1.44.1"
|
|
676860
676958
|
]
|
|
676861
676959
|
}, undefined, true, undefined, this)
|
|
676862
676960
|
]
|
|
@@ -678116,7 +678214,7 @@ function completeOnboarding() {
|
|
|
678116
678214
|
saveGlobalConfig((current) => ({
|
|
678117
678215
|
...current,
|
|
678118
678216
|
hasCompletedOnboarding: true,
|
|
678119
|
-
lastOnboardingVersion: "1.
|
|
678217
|
+
lastOnboardingVersion: "1.44.1"
|
|
678120
678218
|
}));
|
|
678121
678219
|
}
|
|
678122
678220
|
function showDialog(root2, renderer) {
|
|
@@ -683153,7 +683251,7 @@ function appendToLog(path24, message) {
|
|
|
683153
683251
|
cwd: getFsImplementation().cwd(),
|
|
683154
683252
|
userType: process.env.USER_TYPE,
|
|
683155
683253
|
sessionId: getSessionId(),
|
|
683156
|
-
version: "1.
|
|
683254
|
+
version: "1.44.1"
|
|
683157
683255
|
};
|
|
683158
683256
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
683159
683257
|
}
|
|
@@ -687247,8 +687345,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
687247
687345
|
}
|
|
687248
687346
|
async function checkEnvLessBridgeMinVersion() {
|
|
687249
687347
|
const cfg = await getEnvLessBridgeConfig();
|
|
687250
|
-
if (cfg.min_version && lt("1.
|
|
687251
|
-
return `Your version of UR (${"1.
|
|
687348
|
+
if (cfg.min_version && lt("1.44.1", cfg.min_version)) {
|
|
687349
|
+
return `Your version of UR (${"1.44.1"}) is too old for Remote Control.
|
|
687252
687350
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
687253
687351
|
}
|
|
687254
687352
|
return null;
|
|
@@ -687722,7 +687820,7 @@ async function initBridgeCore(params) {
|
|
|
687722
687820
|
const rawApi = createBridgeApiClient({
|
|
687723
687821
|
baseUrl,
|
|
687724
687822
|
getAccessToken,
|
|
687725
|
-
runnerVersion: "1.
|
|
687823
|
+
runnerVersion: "1.44.1",
|
|
687726
687824
|
onDebug: logForDebugging,
|
|
687727
687825
|
onAuth401,
|
|
687728
687826
|
getTrustedDeviceToken
|
|
@@ -693404,7 +693502,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
|
|
|
693404
693502
|
setCwd(cwd3);
|
|
693405
693503
|
const server2 = new Server({
|
|
693406
693504
|
name: "ur/tengu",
|
|
693407
|
-
version: "1.
|
|
693505
|
+
version: "1.44.1"
|
|
693408
693506
|
}, {
|
|
693409
693507
|
capabilities: {
|
|
693410
693508
|
tools: {}
|
|
@@ -695446,7 +695544,7 @@ async function update() {
|
|
|
695446
695544
|
logEvent("tengu_update_check", {});
|
|
695447
695545
|
const diagnostic = await getDoctorDiagnostic();
|
|
695448
695546
|
const result = await checkUpgradeStatus({
|
|
695449
|
-
currentVersion: "1.
|
|
695547
|
+
currentVersion: "1.44.1",
|
|
695450
695548
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
695451
695549
|
installationType: diagnostic.installationType,
|
|
695452
695550
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -696692,7 +696790,7 @@ ${customInstructions}` : customInstructions;
|
|
|
696692
696790
|
}
|
|
696693
696791
|
}
|
|
696694
696792
|
logForDiagnosticsNoPII("info", "started", {
|
|
696695
|
-
version: "1.
|
|
696793
|
+
version: "1.44.1",
|
|
696696
696794
|
is_native_binary: isInBundledMode()
|
|
696697
696795
|
});
|
|
696698
696796
|
registerCleanup(async () => {
|
|
@@ -697478,7 +697576,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
697478
697576
|
pendingHookMessages
|
|
697479
697577
|
}, renderAndRun);
|
|
697480
697578
|
}
|
|
697481
|
-
}).version("1.
|
|
697579
|
+
}).version("1.44.1 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
697482
697580
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
697483
697581
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
697484
697582
|
if (canUserConfigureAdvisor()) {
|
|
@@ -698393,7 +698491,7 @@ if (false) {}
|
|
|
698393
698491
|
async function main2() {
|
|
698394
698492
|
const args = process.argv.slice(2);
|
|
698395
698493
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
698396
|
-
console.log(`${"1.
|
|
698494
|
+
console.log(`${"1.44.1"} (UR-Nexus)`);
|
|
698397
698495
|
return;
|
|
698398
698496
|
}
|
|
698399
698497
|
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.
|
|
47
|
+
<p class="eyebrow">Version 1.44.0</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>
|
|
@@ -477,6 +477,7 @@ UR_VERIFIER_MODE=loose
|
|
|
477
477
|
UR_VERIFIER_MODE=off
|
|
478
478
|
UR_VERIFIER_AUTO_SUBAGENT=1</code></pre>
|
|
479
479
|
<p>L1 gates catch false done claims and loops. <code>/verify</code> manually runs deeper verification.</p>
|
|
480
|
+
<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>
|
|
480
481
|
</article>
|
|
481
482
|
<article>
|
|
482
483
|
<h3>MCP and plugins</h3>
|
|
@@ -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.
|
|
5
|
+
"version": "1.44.0",
|
|
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.
|
|
4
|
-
"description": "UR-Nexus
|
|
3
|
+
"version": "1.44.1",
|
|
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": {
|