ur-agent 1.35.0 → 1.35.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
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.35.1
|
|
4
|
+
|
|
5
|
+
- Polished the bundled VS Code inline-diffs view with native toolbar icons,
|
|
6
|
+
useful empty-state rows, clearer diff labels, and a cleaner review webview.
|
|
7
|
+
- Fixed `ur ide status` routing so the IDE extension status action reports
|
|
8
|
+
provider/model/plugin status instead of printing inline-diff usage.
|
|
9
|
+
- Kept model/provider selections project-local by default and made transient
|
|
10
|
+
Ollama gateway timeouts retry cleanly.
|
|
11
|
+
|
|
3
12
|
## 1.35.0
|
|
4
13
|
|
|
5
14
|
- New `ur connect` CLI command (same implementation as the `/connect` slash
|
package/dist/cli.js
CHANGED
|
@@ -51815,7 +51815,7 @@ function normalizeBaseUrl(value) {
|
|
|
51815
51815
|
}
|
|
51816
51816
|
return withScheme.replace(/\/$/, "");
|
|
51817
51817
|
}
|
|
51818
|
-
function setSafeProviderConfig(key, value) {
|
|
51818
|
+
function setSafeProviderConfig(key, value, options = {}) {
|
|
51819
51819
|
const trimmed = value.trim();
|
|
51820
51820
|
if (!trimmed) {
|
|
51821
51821
|
return { ok: false, message: `Missing value for ${key}.` };
|
|
@@ -51907,7 +51907,8 @@ function setSafeProviderConfig(key, value) {
|
|
|
51907
51907
|
message: error40 instanceof Error ? error40.message : String(error40)
|
|
51908
51908
|
};
|
|
51909
51909
|
}
|
|
51910
|
-
const
|
|
51910
|
+
const source = options.source ?? "localSettings";
|
|
51911
|
+
const result = updateSettingsForSource(source, settings);
|
|
51911
51912
|
if (result.error) {
|
|
51912
51913
|
return {
|
|
51913
51914
|
ok: false,
|
|
@@ -52801,7 +52802,8 @@ function setProviderModel(providerId, modelId, options = {}) {
|
|
|
52801
52802
|
message: validation.error
|
|
52802
52803
|
};
|
|
52803
52804
|
}
|
|
52804
|
-
const
|
|
52805
|
+
const source = options.source ?? "localSettings";
|
|
52806
|
+
const result = updateSettingsForSource(source, {
|
|
52805
52807
|
provider: {
|
|
52806
52808
|
active: provider,
|
|
52807
52809
|
model: modelId
|
|
@@ -55184,7 +55186,7 @@ async function fetchOllamaChat(params, stream4, controller, options) {
|
|
|
55184
55186
|
});
|
|
55185
55187
|
if (!response.ok) {
|
|
55186
55188
|
const body = await response.text().catch(() => "");
|
|
55187
|
-
throw
|
|
55189
|
+
throw createOllamaHTTPError(response.status, body, response.statusText);
|
|
55188
55190
|
}
|
|
55189
55191
|
return response;
|
|
55190
55192
|
} catch (error40) {
|
|
@@ -55194,6 +55196,9 @@ async function fetchOllamaChat(params, stream4, controller, options) {
|
|
|
55194
55196
|
}
|
|
55195
55197
|
throw new APIConnectionTimeoutError({ message: "Ollama request timed out" });
|
|
55196
55198
|
}
|
|
55199
|
+
if (error40 instanceof APIConnectionError || error40 instanceof APIConnectionTimeoutError || error40 instanceof APIUserAbortError) {
|
|
55200
|
+
throw error40;
|
|
55201
|
+
}
|
|
55197
55202
|
if (error40 instanceof Error) {
|
|
55198
55203
|
throw new APIConnectionError({ message: error40.message, cause: error40 });
|
|
55199
55204
|
}
|
|
@@ -55204,6 +55209,34 @@ async function fetchOllamaChat(params, stream4, controller, options) {
|
|
|
55204
55209
|
}
|
|
55205
55210
|
}
|
|
55206
55211
|
}
|
|
55212
|
+
function createOllamaHTTPError(status, body, statusText) {
|
|
55213
|
+
const rawMessage = extractOllamaHTTPErrorMessage(body) || statusText;
|
|
55214
|
+
if (isOllamaGatewayTimeout(status, rawMessage)) {
|
|
55215
|
+
return new APIConnectionTimeoutError({
|
|
55216
|
+
message: OLLAMA_GATEWAY_TIMEOUT_MESSAGE,
|
|
55217
|
+
cause: new Error(`Ollama request failed (${status}): ${rawMessage}`)
|
|
55218
|
+
});
|
|
55219
|
+
}
|
|
55220
|
+
return new Error(`Ollama request failed (${status}): ${rawMessage}`);
|
|
55221
|
+
}
|
|
55222
|
+
function extractOllamaHTTPErrorMessage(body) {
|
|
55223
|
+
if (!body.trim()) {
|
|
55224
|
+
return "";
|
|
55225
|
+
}
|
|
55226
|
+
try {
|
|
55227
|
+
const parsed = JSON.parse(body);
|
|
55228
|
+
if (typeof parsed.error === "string") {
|
|
55229
|
+
return parsed.error;
|
|
55230
|
+
}
|
|
55231
|
+
} catch {}
|
|
55232
|
+
return body;
|
|
55233
|
+
}
|
|
55234
|
+
function isOllamaGatewayTimeout(status, message) {
|
|
55235
|
+
if (status !== 502 && status !== 504) {
|
|
55236
|
+
return false;
|
|
55237
|
+
}
|
|
55238
|
+
return /operation timed out|read:.*timed out|timeout|deadline exceeded/i.test(message);
|
|
55239
|
+
}
|
|
55207
55240
|
function createLinkedAbortController(options) {
|
|
55208
55241
|
const controller = new AbortController;
|
|
55209
55242
|
const signal = options?.signal;
|
|
@@ -55999,7 +56032,7 @@ function parseToolInput(input) {
|
|
|
55999
56032
|
return {};
|
|
56000
56033
|
}
|
|
56001
56034
|
}
|
|
56002
|
-
var DEFAULT_OLLAMA_REQUEST_TIMEOUT_MS = 300000, REMOTE_OLLAMA_REQUEST_TIMEOUT_MS = 120000, ollamaModelCapabilitiesCache, ollamaBaseUrlOverride;
|
|
56035
|
+
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;
|
|
56003
56036
|
var init_ollama = __esm(() => {
|
|
56004
56037
|
init_urhq_sdk();
|
|
56005
56038
|
init_ollamaModels();
|
|
@@ -69472,7 +69505,7 @@ var init_auth = __esm(() => {
|
|
|
69472
69505
|
|
|
69473
69506
|
// src/utils/userAgent.ts
|
|
69474
69507
|
function getURCodeUserAgent() {
|
|
69475
|
-
return `ur/${"1.35.
|
|
69508
|
+
return `ur/${"1.35.1"}`;
|
|
69476
69509
|
}
|
|
69477
69510
|
|
|
69478
69511
|
// src/utils/workloadContext.ts
|
|
@@ -69494,7 +69527,7 @@ function getUserAgent() {
|
|
|
69494
69527
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
69495
69528
|
const workload = getWorkload();
|
|
69496
69529
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
69497
|
-
return `ur-cli/${"1.35.
|
|
69530
|
+
return `ur-cli/${"1.35.1"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
69498
69531
|
}
|
|
69499
69532
|
function getMCPUserAgent() {
|
|
69500
69533
|
const parts = [];
|
|
@@ -69508,7 +69541,7 @@ function getMCPUserAgent() {
|
|
|
69508
69541
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
69509
69542
|
}
|
|
69510
69543
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
69511
|
-
return `ur/${"1.35.
|
|
69544
|
+
return `ur/${"1.35.1"}${suffix}`;
|
|
69512
69545
|
}
|
|
69513
69546
|
function getWebFetchUserAgent() {
|
|
69514
69547
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -69646,7 +69679,7 @@ var init_user = __esm(() => {
|
|
|
69646
69679
|
deviceId,
|
|
69647
69680
|
sessionId: getSessionId(),
|
|
69648
69681
|
email: getEmail(),
|
|
69649
|
-
appVersion: "1.35.
|
|
69682
|
+
appVersion: "1.35.1",
|
|
69650
69683
|
platform: getHostPlatformForAnalytics(),
|
|
69651
69684
|
organizationUuid,
|
|
69652
69685
|
accountUuid,
|
|
@@ -76163,7 +76196,7 @@ var init_metadata = __esm(() => {
|
|
|
76163
76196
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
76164
76197
|
WHITESPACE_REGEX = /\s+/;
|
|
76165
76198
|
getVersionBase = memoize_default(() => {
|
|
76166
|
-
const match = "1.35.
|
|
76199
|
+
const match = "1.35.1".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
76167
76200
|
return match ? match[0] : undefined;
|
|
76168
76201
|
});
|
|
76169
76202
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -76203,7 +76236,7 @@ var init_metadata = __esm(() => {
|
|
|
76203
76236
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
76204
76237
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
76205
76238
|
isURAiAuth: isURAISubscriber2(),
|
|
76206
|
-
version: "1.35.
|
|
76239
|
+
version: "1.35.1",
|
|
76207
76240
|
versionBase: getVersionBase(),
|
|
76208
76241
|
buildTime: "",
|
|
76209
76242
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -76873,7 +76906,7 @@ function initialize1PEventLogging() {
|
|
|
76873
76906
|
const platform2 = getPlatform();
|
|
76874
76907
|
const attributes = {
|
|
76875
76908
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
76876
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.35.
|
|
76909
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.35.1"
|
|
76877
76910
|
};
|
|
76878
76911
|
if (platform2 === "wsl") {
|
|
76879
76912
|
const wslVersion = getWslVersion();
|
|
@@ -76900,7 +76933,7 @@ function initialize1PEventLogging() {
|
|
|
76900
76933
|
})
|
|
76901
76934
|
]
|
|
76902
76935
|
});
|
|
76903
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.35.
|
|
76936
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.35.1");
|
|
76904
76937
|
}
|
|
76905
76938
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
76906
76939
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -80616,7 +80649,7 @@ function getOllamaBaseUrl(env4 = process.env, settings) {
|
|
|
80616
80649
|
if (envHost) {
|
|
80617
80650
|
return normalizeOllamaBaseUrl(envHost);
|
|
80618
80651
|
}
|
|
80619
|
-
const settingsHost = settings === undefined ?
|
|
80652
|
+
const settingsHost = settings === undefined ? getInitialSettings().ollama?.host : settings.ollama?.host;
|
|
80620
80653
|
if (settingsHost) {
|
|
80621
80654
|
return normalizeOllamaBaseUrl(settingsHost);
|
|
80622
80655
|
}
|
|
@@ -82197,7 +82230,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
|
|
|
82197
82230
|
function formatA2AAgentCard(options = {}, pretty = true) {
|
|
82198
82231
|
return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
|
|
82199
82232
|
}
|
|
82200
|
-
var urVersion = "1.35.
|
|
82233
|
+
var urVersion = "1.35.1", coverage, priorityRoadmap;
|
|
82201
82234
|
var init_trends = __esm(() => {
|
|
82202
82235
|
coverage = [
|
|
82203
82236
|
{
|
|
@@ -84190,7 +84223,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
84190
84223
|
if (!isAttributionHeaderEnabled()) {
|
|
84191
84224
|
return "";
|
|
84192
84225
|
}
|
|
84193
|
-
const version2 = `${"1.35.
|
|
84226
|
+
const version2 = `${"1.35.1"}.${fingerprint}`;
|
|
84194
84227
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
84195
84228
|
const cch = "";
|
|
84196
84229
|
const workload = getWorkload();
|
|
@@ -139616,7 +139649,7 @@ async function* withRetry(getClient, operation, options2) {
|
|
|
139616
139649
|
throw new CannotRetryError(error40, retryContext);
|
|
139617
139650
|
}
|
|
139618
139651
|
const handledCloudAuthError = handleAwsCredentialError(error40) || handleGcpCredentialError(error40);
|
|
139619
|
-
if (!handledCloudAuthError &&
|
|
139652
|
+
if (!handledCloudAuthError && !((error40 instanceof APIError || error40 instanceof APIConnectionError) && shouldRetry(error40))) {
|
|
139620
139653
|
throw new CannotRetryError(error40, retryContext);
|
|
139621
139654
|
}
|
|
139622
139655
|
if (error40 instanceof APIError) {
|
|
@@ -191844,7 +191877,7 @@ function getTelemetryAttributes() {
|
|
|
191844
191877
|
attributes["session.id"] = sessionId;
|
|
191845
191878
|
}
|
|
191846
191879
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
191847
|
-
attributes["app.version"] = "1.35.
|
|
191880
|
+
attributes["app.version"] = "1.35.1";
|
|
191848
191881
|
}
|
|
191849
191882
|
const oauthAccount = getOauthAccountInfo();
|
|
191850
191883
|
if (oauthAccount) {
|
|
@@ -227229,7 +227262,7 @@ function getInstallationEnv() {
|
|
|
227229
227262
|
return;
|
|
227230
227263
|
}
|
|
227231
227264
|
function getURCodeVersion() {
|
|
227232
|
-
return "1.35.
|
|
227265
|
+
return "1.35.1";
|
|
227233
227266
|
}
|
|
227234
227267
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
227235
227268
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -230068,7 +230101,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
230068
230101
|
const client2 = new Client({
|
|
230069
230102
|
name: "ur",
|
|
230070
230103
|
title: "UR",
|
|
230071
|
-
version: "1.35.
|
|
230104
|
+
version: "1.35.1",
|
|
230072
230105
|
description: "UR-AGENT autonomous engineering workflow engine",
|
|
230073
230106
|
websiteUrl: PRODUCT_URL
|
|
230074
230107
|
}, {
|
|
@@ -230422,7 +230455,7 @@ var init_client5 = __esm(() => {
|
|
|
230422
230455
|
const client2 = new Client({
|
|
230423
230456
|
name: "ur",
|
|
230424
230457
|
title: "UR",
|
|
230425
|
-
version: "1.35.
|
|
230458
|
+
version: "1.35.1",
|
|
230426
230459
|
description: "UR-AGENT autonomous engineering workflow engine",
|
|
230427
230460
|
websiteUrl: PRODUCT_URL
|
|
230428
230461
|
}, {
|
|
@@ -240236,9 +240269,9 @@ async function assertMinVersion() {
|
|
|
240236
240269
|
if (false) {}
|
|
240237
240270
|
try {
|
|
240238
240271
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
240239
|
-
if (versionConfig.minVersion && lt("1.35.
|
|
240272
|
+
if (versionConfig.minVersion && lt("1.35.1", versionConfig.minVersion)) {
|
|
240240
240273
|
console.error(`
|
|
240241
|
-
It looks like your version of UR (${"1.35.
|
|
240274
|
+
It looks like your version of UR (${"1.35.1"}) needs an update.
|
|
240242
240275
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
240243
240276
|
|
|
240244
240277
|
To update, please run:
|
|
@@ -240454,7 +240487,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
240454
240487
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
240455
240488
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
240456
240489
|
pid: process.pid,
|
|
240457
|
-
currentVersion: "1.35.
|
|
240490
|
+
currentVersion: "1.35.1"
|
|
240458
240491
|
});
|
|
240459
240492
|
return "in_progress";
|
|
240460
240493
|
}
|
|
@@ -240463,7 +240496,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
240463
240496
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
240464
240497
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
240465
240498
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
240466
|
-
currentVersion: "1.35.
|
|
240499
|
+
currentVersion: "1.35.1"
|
|
240467
240500
|
});
|
|
240468
240501
|
console.error(`
|
|
240469
240502
|
Error: Windows NPM detected in WSL
|
|
@@ -240998,7 +241031,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
240998
241031
|
}
|
|
240999
241032
|
async function getDoctorDiagnostic() {
|
|
241000
241033
|
const installationType = await getCurrentInstallationType();
|
|
241001
|
-
const version2 = typeof MACRO !== "undefined" ? "1.35.
|
|
241034
|
+
const version2 = typeof MACRO !== "undefined" ? "1.35.1" : "unknown";
|
|
241002
241035
|
const installationPath = await getInstallationPath();
|
|
241003
241036
|
const invokedBinary = getInvokedBinary();
|
|
241004
241037
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -241933,8 +241966,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
241933
241966
|
const maxVersion = await getMaxVersion();
|
|
241934
241967
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
241935
241968
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
241936
|
-
if (gte("1.35.
|
|
241937
|
-
logForDebugging(`Native installer: current version ${"1.35.
|
|
241969
|
+
if (gte("1.35.1", maxVersion)) {
|
|
241970
|
+
logForDebugging(`Native installer: current version ${"1.35.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
241938
241971
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
241939
241972
|
latency_ms: Date.now() - startTime,
|
|
241940
241973
|
max_version: maxVersion,
|
|
@@ -241945,7 +241978,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
241945
241978
|
version2 = maxVersion;
|
|
241946
241979
|
}
|
|
241947
241980
|
}
|
|
241948
|
-
if (!forceReinstall && version2 === "1.35.
|
|
241981
|
+
if (!forceReinstall && version2 === "1.35.1" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
241949
241982
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
241950
241983
|
logEvent("tengu_native_update_complete", {
|
|
241951
241984
|
latency_ms: Date.now() - startTime,
|
|
@@ -338849,7 +338882,7 @@ function Feedback({
|
|
|
338849
338882
|
platform: env2.platform,
|
|
338850
338883
|
gitRepo: envInfo.isGit,
|
|
338851
338884
|
terminal: env2.terminal,
|
|
338852
|
-
version: "1.35.
|
|
338885
|
+
version: "1.35.1",
|
|
338853
338886
|
transcript: normalizeMessagesForAPI(messages),
|
|
338854
338887
|
errors: sanitizedErrors,
|
|
338855
338888
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -339041,7 +339074,7 @@ function Feedback({
|
|
|
339041
339074
|
", ",
|
|
339042
339075
|
env2.terminal,
|
|
339043
339076
|
", v",
|
|
339044
|
-
"1.35.
|
|
339077
|
+
"1.35.1"
|
|
339045
339078
|
]
|
|
339046
339079
|
}, undefined, true, undefined, this)
|
|
339047
339080
|
]
|
|
@@ -339147,7 +339180,7 @@ ${sanitizedDescription}
|
|
|
339147
339180
|
` + `**Environment Info**
|
|
339148
339181
|
` + `- Platform: ${env2.platform}
|
|
339149
339182
|
` + `- Terminal: ${env2.terminal}
|
|
339150
|
-
` + `- Version: ${"1.35.
|
|
339183
|
+
` + `- Version: ${"1.35.1"}
|
|
339151
339184
|
` + `- Feedback ID: ${feedbackId}
|
|
339152
339185
|
` + `
|
|
339153
339186
|
**Errors**
|
|
@@ -342258,7 +342291,7 @@ function buildPrimarySection() {
|
|
|
342258
342291
|
}, undefined, false, undefined, this);
|
|
342259
342292
|
return [{
|
|
342260
342293
|
label: "Version",
|
|
342261
|
-
value: "1.35.
|
|
342294
|
+
value: "1.35.1"
|
|
342262
342295
|
}, {
|
|
342263
342296
|
label: "Session name",
|
|
342264
342297
|
value: nameValue
|
|
@@ -343074,11 +343107,12 @@ function ModelPicker({
|
|
|
343074
343107
|
const [thinkingEnabled, setThinkingEnabled] = import_react101.useState(() => appThinkingEnabled ?? shouldEnableThinkingByDefault());
|
|
343075
343108
|
const [providerModelOptions, setProviderModelOptions] = import_react101.useState([]);
|
|
343076
343109
|
const [pickerError, setPickerError] = import_react101.useState(null);
|
|
343077
|
-
const
|
|
343110
|
+
const effectiveSettings = getInitialSettings();
|
|
343111
|
+
const currentProvider = getActiveProviderSettings(effectiveSettings).active ?? "ollama";
|
|
343078
343112
|
import_react101.useEffect(() => {
|
|
343079
343113
|
const controller = new AbortController;
|
|
343080
343114
|
listModelsForProviderWithSource(currentProvider, {
|
|
343081
|
-
settings:
|
|
343115
|
+
settings: effectiveSettings,
|
|
343082
343116
|
signal: controller.signal
|
|
343083
343117
|
}).then((result) => {
|
|
343084
343118
|
if (controller.signal.aborted)
|
|
@@ -343096,7 +343130,7 @@ function ModelPicker({
|
|
|
343096
343130
|
setPickerError(error40 instanceof Error ? error40.message : String(error40));
|
|
343097
343131
|
});
|
|
343098
343132
|
return () => controller.abort();
|
|
343099
|
-
}, [currentProvider]);
|
|
343133
|
+
}, [currentProvider, effectiveSettings]);
|
|
343100
343134
|
const modelOptions = providerModelOptions;
|
|
343101
343135
|
const optionsWithInitial = initial !== null && validateProviderModelPair(currentProvider, initial, {
|
|
343102
343136
|
availableModels: modelOptions.map((option) => option.value)
|
|
@@ -345558,7 +345592,7 @@ function Config({
|
|
|
345558
345592
|
}
|
|
345559
345593
|
}, undefined, false, undefined, this)
|
|
345560
345594
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime177.jsxDEV(ChannelDowngradeDialog, {
|
|
345561
|
-
currentVersion: "1.35.
|
|
345595
|
+
currentVersion: "1.35.1",
|
|
345562
345596
|
onChoice: (choice) => {
|
|
345563
345597
|
setShowSubmenu(null);
|
|
345564
345598
|
setTabsHidden(false);
|
|
@@ -345570,7 +345604,7 @@ function Config({
|
|
|
345570
345604
|
autoUpdatesChannel: "stable"
|
|
345571
345605
|
};
|
|
345572
345606
|
if (choice === "stay") {
|
|
345573
|
-
newSettings.minimumVersion = "1.35.
|
|
345607
|
+
newSettings.minimumVersion = "1.35.1";
|
|
345574
345608
|
}
|
|
345575
345609
|
updateSettingsForSource("userSettings", newSettings);
|
|
345576
345610
|
setSettingsData((prev_27) => ({
|
|
@@ -353640,7 +353674,7 @@ function HelpV2(t0) {
|
|
|
353640
353674
|
let t6;
|
|
353641
353675
|
if ($3[31] !== tabs) {
|
|
353642
353676
|
t6 = /* @__PURE__ */ jsx_dev_runtime204.jsxDEV(Tabs, {
|
|
353643
|
-
title: `UR v${"1.35.
|
|
353677
|
+
title: `UR v${"1.35.1"}`,
|
|
353644
353678
|
color: "professionalBlue",
|
|
353645
353679
|
defaultTab: "general",
|
|
353646
353680
|
children: tabs
|
|
@@ -354386,7 +354420,7 @@ function buildToolUseContext(tools, readFileStateCache) {
|
|
|
354386
354420
|
async function handleInitialize(options2) {
|
|
354387
354421
|
return {
|
|
354388
354422
|
name: "ur-agent",
|
|
354389
|
-
version: "1.35.
|
|
354423
|
+
version: "1.35.1",
|
|
354390
354424
|
protocolVersion: "0.1.0",
|
|
354391
354425
|
workspaceRoot: options2.cwd,
|
|
354392
354426
|
capabilities: {
|
|
@@ -374510,7 +374544,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
374510
374544
|
return [];
|
|
374511
374545
|
}
|
|
374512
374546
|
}
|
|
374513
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.35.
|
|
374547
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.35.1") {
|
|
374514
374548
|
if (process.env.USER_TYPE === "ant") {
|
|
374515
374549
|
const changelog = "";
|
|
374516
374550
|
if (changelog) {
|
|
@@ -374537,7 +374571,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.35.0")
|
|
|
374537
374571
|
releaseNotes
|
|
374538
374572
|
};
|
|
374539
374573
|
}
|
|
374540
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.35.
|
|
374574
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.35.1") {
|
|
374541
374575
|
if (process.env.USER_TYPE === "ant") {
|
|
374542
374576
|
const changelog = "";
|
|
374543
374577
|
if (changelog) {
|
|
@@ -375707,7 +375741,7 @@ function getRecentActivitySync() {
|
|
|
375707
375741
|
return cachedActivity;
|
|
375708
375742
|
}
|
|
375709
375743
|
function getLogoDisplayData() {
|
|
375710
|
-
const version2 = process.env.DEMO_VERSION ?? "1.35.
|
|
375744
|
+
const version2 = process.env.DEMO_VERSION ?? "1.35.1";
|
|
375711
375745
|
const serverUrl = getDirectConnectServerUrl();
|
|
375712
375746
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd2());
|
|
375713
375747
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -376496,7 +376530,7 @@ function LogoV2() {
|
|
|
376496
376530
|
if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
376497
376531
|
t2 = () => {
|
|
376498
376532
|
const currentConfig = getGlobalConfig();
|
|
376499
|
-
if (currentConfig.lastReleaseNotesSeen === "1.35.
|
|
376533
|
+
if (currentConfig.lastReleaseNotesSeen === "1.35.1") {
|
|
376500
376534
|
return;
|
|
376501
376535
|
}
|
|
376502
376536
|
saveGlobalConfig(_temp326);
|
|
@@ -377181,12 +377215,12 @@ function LogoV2() {
|
|
|
377181
377215
|
return t41;
|
|
377182
377216
|
}
|
|
377183
377217
|
function _temp326(current) {
|
|
377184
|
-
if (current.lastReleaseNotesSeen === "1.35.
|
|
377218
|
+
if (current.lastReleaseNotesSeen === "1.35.1") {
|
|
377185
377219
|
return current;
|
|
377186
377220
|
}
|
|
377187
377221
|
return {
|
|
377188
377222
|
...current,
|
|
377189
|
-
lastReleaseNotesSeen: "1.35.
|
|
377223
|
+
lastReleaseNotesSeen: "1.35.1"
|
|
377190
377224
|
};
|
|
377191
377225
|
}
|
|
377192
377226
|
function _temp243(s_0) {
|
|
@@ -407547,7 +407581,7 @@ var init_code_index2 = __esm(() => {
|
|
|
407547
407581
|
|
|
407548
407582
|
// node_modules/typescript/lib/typescript.js
|
|
407549
407583
|
var require_typescript2 = __commonJS((exports, module) => {
|
|
407550
|
-
var __dirname = "/
|
|
407584
|
+
var __dirname = "/Users/maith/Desktop/ur3-dev/UR-1.19.0/node_modules/typescript/lib", __filename = "/Users/maith/Desktop/ur3-dev/UR-1.19.0/node_modules/typescript/lib/typescript.js";
|
|
407551
407585
|
/*! *****************************************************************************
|
|
407552
407586
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
407553
407587
|
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
@@ -593081,7 +593115,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
593081
593115
|
smapsRollup,
|
|
593082
593116
|
platform: process.platform,
|
|
593083
593117
|
nodeVersion: process.version,
|
|
593084
|
-
ccVersion: "1.35.
|
|
593118
|
+
ccVersion: "1.35.1"
|
|
593085
593119
|
};
|
|
593086
593120
|
}
|
|
593087
593121
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -593667,7 +593701,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
593667
593701
|
var call137 = async () => {
|
|
593668
593702
|
return {
|
|
593669
593703
|
type: "text",
|
|
593670
|
-
value: "1.35.
|
|
593704
|
+
value: "1.35.1"
|
|
593671
593705
|
};
|
|
593672
593706
|
}, version2, version_default;
|
|
593673
593707
|
var init_version = __esm(() => {
|
|
@@ -597519,7 +597553,7 @@ function ProviderPicker({
|
|
|
597519
597553
|
if (!result.ok) {
|
|
597520
597554
|
return;
|
|
597521
597555
|
}
|
|
597522
|
-
const saved = getActiveProviderSettings(
|
|
597556
|
+
const saved = getActiveProviderSettings(getInitialSettings());
|
|
597523
597557
|
setAppState((prev) => ({
|
|
597524
597558
|
...prev,
|
|
597525
597559
|
provider: {
|
|
@@ -603737,7 +603771,7 @@ function generateHtmlReport(data, insights) {
|
|
|
603737
603771
|
</html>`;
|
|
603738
603772
|
}
|
|
603739
603773
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
603740
|
-
const version3 = typeof MACRO !== "undefined" ? "1.35.
|
|
603774
|
+
const version3 = typeof MACRO !== "undefined" ? "1.35.1" : "unknown";
|
|
603741
603775
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
603742
603776
|
const facets_summary = {
|
|
603743
603777
|
total: facets.size,
|
|
@@ -608017,7 +608051,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
608017
608051
|
init_settings2();
|
|
608018
608052
|
init_slowOperations();
|
|
608019
608053
|
init_uuid();
|
|
608020
|
-
VERSION5 = typeof MACRO !== "undefined" ? "1.35.
|
|
608054
|
+
VERSION5 = typeof MACRO !== "undefined" ? "1.35.1" : "unknown";
|
|
608021
608055
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
608022
608056
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
608023
608057
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -609222,7 +609256,7 @@ var init_filesystem = __esm(() => {
|
|
|
609222
609256
|
});
|
|
609223
609257
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
609224
609258
|
const nonce = randomBytes18(16).toString("hex");
|
|
609225
|
-
return join200(getURTempDir(), "bundled-skills", "1.35.
|
|
609259
|
+
return join200(getURTempDir(), "bundled-skills", "1.35.1", nonce);
|
|
609226
609260
|
});
|
|
609227
609261
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
609228
609262
|
});
|
|
@@ -615511,7 +615545,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
615511
615545
|
}
|
|
615512
615546
|
function computeFingerprintFromMessages(messages) {
|
|
615513
615547
|
const firstMessageText = extractFirstMessageText(messages);
|
|
615514
|
-
return computeFingerprint(firstMessageText, "1.35.
|
|
615548
|
+
return computeFingerprint(firstMessageText, "1.35.1");
|
|
615515
615549
|
}
|
|
615516
615550
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
615517
615551
|
var init_fingerprint = () => {};
|
|
@@ -617378,7 +617412,7 @@ async function sideQuery(opts) {
|
|
|
617378
617412
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
617379
617413
|
}
|
|
617380
617414
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
617381
|
-
const fingerprint = computeFingerprint(messageText2, "1.35.
|
|
617415
|
+
const fingerprint = computeFingerprint(messageText2, "1.35.1");
|
|
617382
617416
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
617383
617417
|
const systemBlocks = [
|
|
617384
617418
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -621276,11 +621310,11 @@ function onChangeAppState({
|
|
|
621276
621310
|
notifyPermissionModeChanged(newMode);
|
|
621277
621311
|
}
|
|
621278
621312
|
if (newState.mainLoopModel !== oldState.mainLoopModel && newState.mainLoopModel === null) {
|
|
621279
|
-
updateSettingsForSource("
|
|
621313
|
+
updateSettingsForSource("localSettings", { model: undefined });
|
|
621280
621314
|
setMainLoopModelOverride(null);
|
|
621281
621315
|
}
|
|
621282
621316
|
if (newState.mainLoopModel !== oldState.mainLoopModel && newState.mainLoopModel !== null) {
|
|
621283
|
-
updateSettingsForSource("
|
|
621317
|
+
updateSettingsForSource("localSettings", { model: newState.mainLoopModel });
|
|
621284
621318
|
setMainLoopModelOverride(newState.mainLoopModel);
|
|
621285
621319
|
}
|
|
621286
621320
|
if (newState.expandedView !== oldState.expandedView) {
|
|
@@ -622115,7 +622149,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
622115
622149
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
622116
622150
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
622117
622151
|
betas: getSdkBetas(),
|
|
622118
|
-
ur_version: "1.35.
|
|
622152
|
+
ur_version: "1.35.1",
|
|
622119
622153
|
output_style: outputStyle2,
|
|
622120
622154
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
622121
622155
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -636743,7 +636777,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
636743
636777
|
function getSemverPart(version3) {
|
|
636744
636778
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
636745
636779
|
}
|
|
636746
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.35.
|
|
636780
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.35.1") {
|
|
636747
636781
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react226.useState(() => getSemverPart(initialVersion));
|
|
636748
636782
|
if (!updatedVersion) {
|
|
636749
636783
|
return null;
|
|
@@ -636792,7 +636826,7 @@ function AutoUpdater({
|
|
|
636792
636826
|
return;
|
|
636793
636827
|
}
|
|
636794
636828
|
if (false) {}
|
|
636795
|
-
const currentVersion = "1.35.
|
|
636829
|
+
const currentVersion = "1.35.1";
|
|
636796
636830
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
636797
636831
|
let latestVersion = await getLatestVersion(channel);
|
|
636798
636832
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -637021,12 +637055,12 @@ function NativeAutoUpdater({
|
|
|
637021
637055
|
logEvent("tengu_native_auto_updater_start", {});
|
|
637022
637056
|
try {
|
|
637023
637057
|
const maxVersion = await getMaxVersion();
|
|
637024
|
-
if (maxVersion && gt("1.35.
|
|
637058
|
+
if (maxVersion && gt("1.35.1", maxVersion)) {
|
|
637025
637059
|
const msg = await getMaxVersionMessage();
|
|
637026
637060
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
637027
637061
|
}
|
|
637028
637062
|
const result = await installLatest(channel);
|
|
637029
|
-
const currentVersion = "1.35.
|
|
637063
|
+
const currentVersion = "1.35.1";
|
|
637030
637064
|
const latencyMs = Date.now() - startTime;
|
|
637031
637065
|
if (result.lockFailed) {
|
|
637032
637066
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -637163,17 +637197,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
637163
637197
|
const maxVersion = await getMaxVersion();
|
|
637164
637198
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
637165
637199
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
637166
|
-
if (gte("1.35.
|
|
637167
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.35.
|
|
637200
|
+
if (gte("1.35.1", maxVersion)) {
|
|
637201
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.35.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
637168
637202
|
setUpdateAvailable(false);
|
|
637169
637203
|
return;
|
|
637170
637204
|
}
|
|
637171
637205
|
latest = maxVersion;
|
|
637172
637206
|
}
|
|
637173
|
-
const hasUpdate = latest && !gte("1.35.
|
|
637207
|
+
const hasUpdate = latest && !gte("1.35.1", latest) && !shouldSkipVersion(latest);
|
|
637174
637208
|
setUpdateAvailable(!!hasUpdate);
|
|
637175
637209
|
if (hasUpdate) {
|
|
637176
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.35.
|
|
637210
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.35.1"} -> ${latest}`);
|
|
637177
637211
|
}
|
|
637178
637212
|
};
|
|
637179
637213
|
$3[0] = t1;
|
|
@@ -637207,7 +637241,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
637207
637241
|
wrap: "truncate",
|
|
637208
637242
|
children: [
|
|
637209
637243
|
"currentVersion: ",
|
|
637210
|
-
"1.35.
|
|
637244
|
+
"1.35.1"
|
|
637211
637245
|
]
|
|
637212
637246
|
}, undefined, true, undefined, this);
|
|
637213
637247
|
$3[3] = verbose;
|
|
@@ -649658,7 +649692,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
649658
649692
|
project_dir: getOriginalCwd(),
|
|
649659
649693
|
added_dirs: addedDirs
|
|
649660
649694
|
},
|
|
649661
|
-
version: "1.35.
|
|
649695
|
+
version: "1.35.1",
|
|
649662
649696
|
output_style: {
|
|
649663
649697
|
name: outputStyleName
|
|
649664
649698
|
},
|
|
@@ -649741,7 +649775,7 @@ function StatusLineInner({
|
|
|
649741
649775
|
const taskValues = Object.values(tasks2);
|
|
649742
649776
|
const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
|
|
649743
649777
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
649744
|
-
version: "1.35.
|
|
649778
|
+
version: "1.35.1",
|
|
649745
649779
|
providerLabel: providerRuntime.providerLabel,
|
|
649746
649780
|
authMode: providerRuntime.authLabel,
|
|
649747
649781
|
model: providerRuntime.model ?? renderModelName(mainLoopModel),
|
|
@@ -661229,7 +661263,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
661229
661263
|
} catch {}
|
|
661230
661264
|
const data = {
|
|
661231
661265
|
trigger: trigger2,
|
|
661232
|
-
version: "1.35.
|
|
661266
|
+
version: "1.35.1",
|
|
661233
661267
|
platform: process.platform,
|
|
661234
661268
|
transcript,
|
|
661235
661269
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -673113,7 +673147,7 @@ function WelcomeV2() {
|
|
|
673113
673147
|
dimColor: true,
|
|
673114
673148
|
children: [
|
|
673115
673149
|
"v",
|
|
673116
|
-
"1.35.
|
|
673150
|
+
"1.35.1"
|
|
673117
673151
|
]
|
|
673118
673152
|
}, undefined, true, undefined, this)
|
|
673119
673153
|
]
|
|
@@ -674373,7 +674407,7 @@ function completeOnboarding() {
|
|
|
674373
674407
|
saveGlobalConfig((current) => ({
|
|
674374
674408
|
...current,
|
|
674375
674409
|
hasCompletedOnboarding: true,
|
|
674376
|
-
lastOnboardingVersion: "1.35.
|
|
674410
|
+
lastOnboardingVersion: "1.35.1"
|
|
674377
674411
|
}));
|
|
674378
674412
|
}
|
|
674379
674413
|
function showDialog(root2, renderer) {
|
|
@@ -679410,7 +679444,7 @@ function appendToLog(path24, message) {
|
|
|
679410
679444
|
cwd: getFsImplementation().cwd(),
|
|
679411
679445
|
userType: process.env.USER_TYPE,
|
|
679412
679446
|
sessionId: getSessionId(),
|
|
679413
|
-
version: "1.35.
|
|
679447
|
+
version: "1.35.1"
|
|
679414
679448
|
};
|
|
679415
679449
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
679416
679450
|
}
|
|
@@ -683504,8 +683538,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
683504
683538
|
}
|
|
683505
683539
|
async function checkEnvLessBridgeMinVersion() {
|
|
683506
683540
|
const cfg = await getEnvLessBridgeConfig();
|
|
683507
|
-
if (cfg.min_version && lt("1.35.
|
|
683508
|
-
return `Your version of UR (${"1.35.
|
|
683541
|
+
if (cfg.min_version && lt("1.35.1", cfg.min_version)) {
|
|
683542
|
+
return `Your version of UR (${"1.35.1"}) is too old for Remote Control.
|
|
683509
683543
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
683510
683544
|
}
|
|
683511
683545
|
return null;
|
|
@@ -683979,7 +684013,7 @@ async function initBridgeCore(params) {
|
|
|
683979
684013
|
const rawApi = createBridgeApiClient({
|
|
683980
684014
|
baseUrl,
|
|
683981
684015
|
getAccessToken,
|
|
683982
|
-
runnerVersion: "1.35.
|
|
684016
|
+
runnerVersion: "1.35.1",
|
|
683983
684017
|
onDebug: logForDebugging,
|
|
683984
684018
|
onAuth401,
|
|
683985
684019
|
getTrustedDeviceToken
|
|
@@ -689661,7 +689695,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
|
|
|
689661
689695
|
setCwd(cwd3);
|
|
689662
689696
|
const server2 = new Server({
|
|
689663
689697
|
name: "ur/tengu",
|
|
689664
|
-
version: "1.35.
|
|
689698
|
+
version: "1.35.1"
|
|
689665
689699
|
}, {
|
|
689666
689700
|
capabilities: {
|
|
689667
689701
|
tools: {}
|
|
@@ -691638,7 +691672,7 @@ async function update() {
|
|
|
691638
691672
|
logEvent("tengu_update_check", {});
|
|
691639
691673
|
const diagnostic = await getDoctorDiagnostic();
|
|
691640
691674
|
const result = await checkUpgradeStatus({
|
|
691641
|
-
currentVersion: "1.35.
|
|
691675
|
+
currentVersion: "1.35.1",
|
|
691642
691676
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
691643
691677
|
installationType: diagnostic.installationType,
|
|
691644
691678
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -692884,7 +692918,7 @@ ${customInstructions}` : customInstructions;
|
|
|
692884
692918
|
}
|
|
692885
692919
|
}
|
|
692886
692920
|
logForDiagnosticsNoPII("info", "started", {
|
|
692887
|
-
version: "1.35.
|
|
692921
|
+
version: "1.35.1",
|
|
692888
692922
|
is_native_binary: isInBundledMode()
|
|
692889
692923
|
});
|
|
692890
692924
|
registerCleanup(async () => {
|
|
@@ -693670,7 +693704,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
693670
693704
|
pendingHookMessages
|
|
693671
693705
|
}, renderAndRun);
|
|
693672
693706
|
}
|
|
693673
|
-
}).version("1.35.
|
|
693707
|
+
}).version("1.35.1 (UR-AGENT)", "-v, --version", "Output the version number");
|
|
693674
693708
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
693675
693709
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
693676
693710
|
if (canUserConfigureAdvisor()) {
|
|
@@ -694125,13 +694159,21 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
694125
694159
|
await runLocalTextCommand(() => Promise.resolve().then(() => (init_repo_edit(), exports_repo_edit)), args);
|
|
694126
694160
|
});
|
|
694127
694161
|
program2.command("ide [action] [rest...]").description("Manage IDE integrations and inline diff bundles").option("--title <title>", "Title for captured inline diff bundle").option("--base <ref>", "Capture branch diff from this base ref").option("--staged", "Capture staged changes instead of unstaged changes").option("--feedback <text>", "Comment text for an IDE diff bundle").option("--file <path>", "File path for an inline diff comment").option("--line <line>", "Line number for an inline diff comment").option("--json", "Output as JSON").action(async (action3, rest = [], opts) => {
|
|
694128
|
-
const {
|
|
694129
|
-
runIdeDiffCommand: runIdeDiffCommand2
|
|
694130
|
-
} = await Promise.resolve().then(() => (init_inlineDiffCommand(), exports_inlineDiffCommand));
|
|
694131
694162
|
if (action3 === "open") {
|
|
694132
694163
|
console.log("Use `/ide open` inside an interactive UR session, or use `ur ide diff ...` for inline diff bundles.");
|
|
694133
694164
|
process.exit(0);
|
|
694134
694165
|
}
|
|
694166
|
+
if (action3 === "status" || action3 === "doctor" || action3 === "config") {
|
|
694167
|
+
const {
|
|
694168
|
+
runIdeInfoCommand: runIdeInfoCommand2
|
|
694169
|
+
} = await Promise.resolve().then(() => (init_ideInfoCommand(), exports_ideInfoCommand));
|
|
694170
|
+
const args2 = [action3, ...rest, opts.json ? "--json" : undefined].filter(Boolean).join(" ");
|
|
694171
|
+
console.log(await runIdeInfoCommand2(args2));
|
|
694172
|
+
process.exit(0);
|
|
694173
|
+
}
|
|
694174
|
+
const {
|
|
694175
|
+
runIdeDiffCommand: runIdeDiffCommand2
|
|
694176
|
+
} = await Promise.resolve().then(() => (init_inlineDiffCommand(), exports_inlineDiffCommand));
|
|
694135
694177
|
const command8 = action3 === "diff" || action3 === "diffs" ? [action3, ...rest] : ["diff", action3 ?? "list", ...rest];
|
|
694136
694178
|
const args = [...command8, opts.title ? `--title ${quoteLocalCommandArg(opts.title)}` : undefined, opts.base ? `--base ${quoteLocalCommandArg(opts.base)}` : undefined, opts.staged ? "--staged" : undefined, opts.feedback ? `--feedback ${quoteLocalCommandArg(opts.feedback)}` : undefined, opts.file ? `--file ${quoteLocalCommandArg(opts.file)}` : undefined, opts.line ? `--line ${opts.line}` : undefined, opts.json ? "--json" : undefined].filter(Boolean).join(" ");
|
|
694137
694179
|
console.log(await runIdeDiffCommand2(args));
|
|
@@ -694565,7 +694607,7 @@ if (false) {}
|
|
|
694565
694607
|
async function main2() {
|
|
694566
694608
|
const args = process.argv.slice(2);
|
|
694567
694609
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
694568
|
-
console.log(`${"1.35.
|
|
694610
|
+
console.log(`${"1.35.1"} (UR-AGENT)`);
|
|
694569
694611
|
return;
|
|
694570
694612
|
}
|
|
694571
694613
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|
package/docs/VALIDATION.md
CHANGED
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.35.
|
|
47
|
+
<p class="eyebrow">Version 1.35.1</p>
|
|
48
48
|
<h1>UR-AGENT Documentation</h1>
|
|
49
49
|
<p class="lead">A practical, tutorial-style reference for installing, configuring, automating, extending, and operating UR-AGENT.</p>
|
|
50
50
|
</div>
|
|
@@ -52,13 +52,58 @@ function escapeHtml(text) {
|
|
|
52
52
|
.replace(/"/g, '"')
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
function formatCount(count, singular, plural = `${singular}s`) {
|
|
56
|
+
return `${count} ${count === 1 ? singular : plural}`
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function formatRelativeTime(value) {
|
|
60
|
+
if (!value) return 'unknown time'
|
|
61
|
+
const date = new Date(value)
|
|
62
|
+
if (Number.isNaN(date.getTime())) return String(value)
|
|
63
|
+
const deltaMs = Date.now() - date.getTime()
|
|
64
|
+
const minute = 60 * 1000
|
|
65
|
+
const hour = 60 * minute
|
|
66
|
+
const day = 24 * hour
|
|
67
|
+
if (deltaMs < minute) return 'just now'
|
|
68
|
+
if (deltaMs < hour) return `${Math.max(1, Math.floor(deltaMs / minute))}m ago`
|
|
69
|
+
if (deltaMs < day) return `${Math.floor(deltaMs / hour)}h ago`
|
|
70
|
+
if (deltaMs < 7 * day) return `${Math.floor(deltaMs / day)}d ago`
|
|
71
|
+
return date.toLocaleDateString()
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function statusIcon(status) {
|
|
75
|
+
switch (status) {
|
|
76
|
+
case 'applied':
|
|
77
|
+
return new vscode.ThemeIcon('check', new vscode.ThemeColor('testing.iconPassed'))
|
|
78
|
+
case 'rejected':
|
|
79
|
+
return new vscode.ThemeIcon('circle-slash', new vscode.ThemeColor('testing.iconFailed'))
|
|
80
|
+
case 'commented':
|
|
81
|
+
return new vscode.ThemeIcon('comment-discussion', new vscode.ThemeColor('charts.yellow'))
|
|
82
|
+
default:
|
|
83
|
+
return new vscode.ThemeIcon('diff', new vscode.ThemeColor('charts.blue'))
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
55
87
|
class DiffItem extends vscode.TreeItem {
|
|
56
88
|
constructor(bundle) {
|
|
57
|
-
|
|
89
|
+
const title = bundle.title || bundle.id
|
|
90
|
+
super(title, vscode.TreeItemCollapsibleState.None)
|
|
58
91
|
this.bundle = bundle
|
|
59
92
|
this.contextValue = 'diff'
|
|
60
|
-
|
|
61
|
-
|
|
93
|
+
const fileCount = bundle.files?.length ?? 0
|
|
94
|
+
const changedAt = bundle.updatedAt ?? bundle.createdAt
|
|
95
|
+
this.description = `${bundle.status ?? 'captured'} · ${formatCount(fileCount, 'file')} · ${formatRelativeTime(changedAt)}`
|
|
96
|
+
this.iconPath = statusIcon(bundle.status)
|
|
97
|
+
this.tooltip = new vscode.MarkdownString(
|
|
98
|
+
[
|
|
99
|
+
`**${escapeHtml(title)}**`,
|
|
100
|
+
'',
|
|
101
|
+
`- ID: \`${escapeHtml(bundle.id)}\``,
|
|
102
|
+
`- Status: ${escapeHtml(bundle.status ?? 'captured')}`,
|
|
103
|
+
`- Files: ${fileCount}`,
|
|
104
|
+
`- Patch: \`${escapeHtml(bundle.patchFile)}\``,
|
|
105
|
+
].join('\n'),
|
|
106
|
+
)
|
|
62
107
|
this.command = {
|
|
63
108
|
command: 'urInlineDiffs.open',
|
|
64
109
|
title: 'Open Inline Diff',
|
|
@@ -67,6 +112,27 @@ class DiffItem extends vscode.TreeItem {
|
|
|
67
112
|
}
|
|
68
113
|
}
|
|
69
114
|
|
|
115
|
+
class ActionItem extends vscode.TreeItem {
|
|
116
|
+
constructor(label, description, icon, command, tooltip) {
|
|
117
|
+
super(label, vscode.TreeItemCollapsibleState.None)
|
|
118
|
+
this.contextValue = 'urAction'
|
|
119
|
+
this.description = description
|
|
120
|
+
this.iconPath = new vscode.ThemeIcon(icon)
|
|
121
|
+
this.tooltip = tooltip ?? `${label}${description ? ` — ${description}` : ''}`
|
|
122
|
+
this.command = command
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
class InfoItem extends vscode.TreeItem {
|
|
127
|
+
constructor(label, description, icon = 'info') {
|
|
128
|
+
super(label, vscode.TreeItemCollapsibleState.None)
|
|
129
|
+
this.contextValue = 'urInfo'
|
|
130
|
+
this.description = description
|
|
131
|
+
this.iconPath = new vscode.ThemeIcon(icon)
|
|
132
|
+
this.tooltip = `${label}${description ? ` — ${description}` : ''}`
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
70
136
|
class DiffProvider {
|
|
71
137
|
constructor() {
|
|
72
138
|
this._onDidChangeTreeData = new vscode.EventEmitter()
|
|
@@ -83,12 +149,41 @@ class DiffProvider {
|
|
|
83
149
|
|
|
84
150
|
getChildren() {
|
|
85
151
|
const root = workspaceRoot()
|
|
86
|
-
if (!root)
|
|
87
|
-
|
|
152
|
+
if (!root) {
|
|
153
|
+
return [
|
|
154
|
+
new InfoItem('Open a workspace folder', 'UR inline diffs are scoped to the active project', 'folder-opened'),
|
|
155
|
+
]
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
const manifest = loadManifest(root)
|
|
159
|
+
const diffs = manifest
|
|
88
160
|
.diffs
|
|
89
161
|
.slice()
|
|
90
162
|
.sort((a, b) => String(b.createdAt).localeCompare(String(a.createdAt)))
|
|
91
|
-
|
|
163
|
+
|
|
164
|
+
if (diffs.length === 0) {
|
|
165
|
+
return [
|
|
166
|
+
new InfoItem(
|
|
167
|
+
'Ready for inline review',
|
|
168
|
+
fs.existsSync(manifestPath(root)) ? 'No pending diff bundles' : 'No diff bundles captured yet',
|
|
169
|
+
'pass',
|
|
170
|
+
),
|
|
171
|
+
new ActionItem(
|
|
172
|
+
'Show UR status',
|
|
173
|
+
'Provider, model, plugins',
|
|
174
|
+
'pulse',
|
|
175
|
+
{ command: 'urInlineDiffs.status', title: 'Show UR Status' },
|
|
176
|
+
),
|
|
177
|
+
new ActionItem(
|
|
178
|
+
'Refresh',
|
|
179
|
+
path.relative(root, manifestPath(root)),
|
|
180
|
+
'refresh',
|
|
181
|
+
{ command: 'urInlineDiffs.refresh', title: 'Refresh Inline Diffs' },
|
|
182
|
+
),
|
|
183
|
+
]
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
return diffs.map(bundle => new DiffItem(bundle))
|
|
92
187
|
}
|
|
93
188
|
}
|
|
94
189
|
|
|
@@ -103,18 +198,29 @@ function renderDiffHtml(root, bundle) {
|
|
|
103
198
|
<meta charset="utf-8">
|
|
104
199
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
105
200
|
<style>
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
201
|
+
:root { color-scheme: light dark; }
|
|
202
|
+
body { font: 13px/1.5 var(--vscode-font-family); color: var(--vscode-foreground); padding: 20px; margin: 0; }
|
|
203
|
+
header { border-bottom: 1px solid var(--vscode-panel-border); padding-bottom: 14px; margin-bottom: 16px; }
|
|
204
|
+
h1 { font-size: 20px; font-weight: 600; margin: 0 0 6px; }
|
|
205
|
+
h2 { font-size: 14px; margin: 20px 0 10px; }
|
|
206
|
+
.meta, .where { color: var(--vscode-descriptionForeground); }
|
|
207
|
+
.chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
|
|
208
|
+
.chip { border: 1px solid var(--vscode-panel-border); border-radius: 4px; padding: 3px 8px; background: var(--vscode-sideBar-background); }
|
|
209
|
+
pre { background: var(--vscode-editor-background); border: 1px solid var(--vscode-panel-border); border-radius: 6px; padding: 14px; overflow: auto; font-family: var(--vscode-editor-font-family); }
|
|
110
210
|
.comments { margin-top: 18px; }
|
|
111
|
-
.comment { border
|
|
112
|
-
.where { color: var(--vscode-descriptionForeground); }
|
|
211
|
+
.comment { border: 1px solid var(--vscode-panel-border); border-radius: 6px; padding: 10px 12px; margin-bottom: 10px; background: var(--vscode-sideBar-background); }
|
|
113
212
|
</style>
|
|
114
213
|
</head>
|
|
115
214
|
<body>
|
|
116
|
-
<
|
|
117
|
-
|
|
215
|
+
<header>
|
|
216
|
+
<h1>${escapeHtml(bundle.title)}</h1>
|
|
217
|
+
<div class="meta">${escapeHtml(bundle.id)} · ${escapeHtml(formatRelativeTime(bundle.updatedAt ?? bundle.createdAt))}</div>
|
|
218
|
+
<div class="chips">
|
|
219
|
+
<span class="chip">${escapeHtml(bundle.status ?? 'captured')}</span>
|
|
220
|
+
<span class="chip">${escapeHtml(formatCount(bundle.files?.length ?? 0, 'file'))}</span>
|
|
221
|
+
<span class="chip">${escapeHtml(formatCount(comments.length, 'comment'))}</span>
|
|
222
|
+
</div>
|
|
223
|
+
</header>
|
|
118
224
|
<pre>${escapeHtml(patch)}</pre>
|
|
119
225
|
<section class="comments">
|
|
120
226
|
<h2>Comments</h2>
|
|
@@ -256,9 +362,13 @@ async function showStatus(channel) {
|
|
|
256
362
|
function activate(context) {
|
|
257
363
|
const provider = new DiffProvider()
|
|
258
364
|
const channel = vscode.window.createOutputChannel('UR')
|
|
365
|
+
const tree = vscode.window.createTreeView('urInlineDiffs', {
|
|
366
|
+
treeDataProvider: provider,
|
|
367
|
+
showCollapseAll: false,
|
|
368
|
+
})
|
|
259
369
|
context.subscriptions.push(
|
|
260
370
|
channel,
|
|
261
|
-
|
|
371
|
+
tree,
|
|
262
372
|
vscode.commands.registerCommand('urInlineDiffs.refresh', () => provider.refresh()),
|
|
263
373
|
vscode.commands.registerCommand('urInlineDiffs.open', item => openDiff(item)),
|
|
264
374
|
vscode.commands.registerCommand('urInlineDiffs.comment', item => commentDiff(item, provider)),
|
|
@@ -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.35.
|
|
5
|
+
"version": "1.35.1",
|
|
6
6
|
"publisher": "ur-agent",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
|
@@ -41,27 +41,39 @@
|
|
|
41
41
|
"commands": [
|
|
42
42
|
{
|
|
43
43
|
"command": "urInlineDiffs.refresh",
|
|
44
|
-
"title": "UR: Refresh Inline Diffs"
|
|
44
|
+
"title": "UR: Refresh Inline Diffs",
|
|
45
|
+
"icon": "$(refresh)"
|
|
45
46
|
},
|
|
46
47
|
{
|
|
47
48
|
"command": "urInlineDiffs.open",
|
|
48
|
-
"title": "UR: Open Inline Diff"
|
|
49
|
+
"title": "UR: Open Inline Diff",
|
|
50
|
+
"icon": "$(diff)"
|
|
49
51
|
},
|
|
50
52
|
{
|
|
51
53
|
"command": "urInlineDiffs.comment",
|
|
52
|
-
"title": "UR: Comment On Inline Diff"
|
|
54
|
+
"title": "UR: Comment On Inline Diff",
|
|
55
|
+
"icon": "$(comment-discussion)"
|
|
53
56
|
},
|
|
54
57
|
{
|
|
55
58
|
"command": "urInlineDiffs.apply",
|
|
56
|
-
"title": "UR: Apply Inline Diff"
|
|
59
|
+
"title": "UR: Apply Inline Diff",
|
|
60
|
+
"icon": "$(check)"
|
|
57
61
|
},
|
|
58
62
|
{
|
|
59
63
|
"command": "urInlineDiffs.reject",
|
|
60
|
-
"title": "UR: Reject Inline Diff"
|
|
64
|
+
"title": "UR: Reject Inline Diff",
|
|
65
|
+
"icon": "$(circle-slash)"
|
|
61
66
|
},
|
|
62
67
|
{
|
|
63
68
|
"command": "urInlineDiffs.status",
|
|
64
|
-
"title": "UR: Show Status (provider, model, plugins)"
|
|
69
|
+
"title": "UR: Show Status (provider, model, plugins)",
|
|
70
|
+
"icon": "$(pulse)"
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"viewsWelcome": [
|
|
74
|
+
{
|
|
75
|
+
"view": "urInlineDiffs",
|
|
76
|
+
"contents": "UR inline diffs appear here when a review bundle is captured.\n[Show Status](command:urInlineDiffs.status) [Refresh](command:urInlineDiffs.refresh)"
|
|
65
77
|
}
|
|
66
78
|
],
|
|
67
79
|
"menus": {
|
package/package.json
CHANGED