ur-agent 1.44.8 → 1.44.9
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 +7 -0
- package/dist/cli.js +273 -151
- package/documentation/index.html +1 -1
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -71438,7 +71438,7 @@ var init_auth = __esm(() => {
|
|
|
71438
71438
|
|
|
71439
71439
|
// src/utils/userAgent.ts
|
|
71440
71440
|
function getURCodeUserAgent() {
|
|
71441
|
-
return `ur/${"1.44.
|
|
71441
|
+
return `ur/${"1.44.9"}`;
|
|
71442
71442
|
}
|
|
71443
71443
|
|
|
71444
71444
|
// src/utils/workloadContext.ts
|
|
@@ -71460,7 +71460,7 @@ function getUserAgent() {
|
|
|
71460
71460
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
71461
71461
|
const workload = getWorkload();
|
|
71462
71462
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
71463
|
-
return `ur-cli/${"1.44.
|
|
71463
|
+
return `ur-cli/${"1.44.9"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
71464
71464
|
}
|
|
71465
71465
|
function getMCPUserAgent() {
|
|
71466
71466
|
const parts = [];
|
|
@@ -71474,7 +71474,7 @@ function getMCPUserAgent() {
|
|
|
71474
71474
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
71475
71475
|
}
|
|
71476
71476
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
71477
|
-
return `ur/${"1.44.
|
|
71477
|
+
return `ur/${"1.44.9"}${suffix}`;
|
|
71478
71478
|
}
|
|
71479
71479
|
function getWebFetchUserAgent() {
|
|
71480
71480
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -71612,7 +71612,7 @@ var init_user = __esm(() => {
|
|
|
71612
71612
|
deviceId,
|
|
71613
71613
|
sessionId: getSessionId(),
|
|
71614
71614
|
email: getEmail(),
|
|
71615
|
-
appVersion: "1.44.
|
|
71615
|
+
appVersion: "1.44.9",
|
|
71616
71616
|
platform: getHostPlatformForAnalytics(),
|
|
71617
71617
|
organizationUuid,
|
|
71618
71618
|
accountUuid,
|
|
@@ -78129,7 +78129,7 @@ var init_metadata = __esm(() => {
|
|
|
78129
78129
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
78130
78130
|
WHITESPACE_REGEX = /\s+/;
|
|
78131
78131
|
getVersionBase = memoize_default(() => {
|
|
78132
|
-
const match = "1.44.
|
|
78132
|
+
const match = "1.44.9".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
78133
78133
|
return match ? match[0] : undefined;
|
|
78134
78134
|
});
|
|
78135
78135
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -78169,7 +78169,7 @@ var init_metadata = __esm(() => {
|
|
|
78169
78169
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
78170
78170
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
78171
78171
|
isURAiAuth: isURAISubscriber(),
|
|
78172
|
-
version: "1.44.
|
|
78172
|
+
version: "1.44.9",
|
|
78173
78173
|
versionBase: getVersionBase(),
|
|
78174
78174
|
buildTime: "",
|
|
78175
78175
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -78839,7 +78839,7 @@ function initialize1PEventLogging() {
|
|
|
78839
78839
|
const platform2 = getPlatform();
|
|
78840
78840
|
const attributes = {
|
|
78841
78841
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
78842
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.44.
|
|
78842
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.44.9"
|
|
78843
78843
|
};
|
|
78844
78844
|
if (platform2 === "wsl") {
|
|
78845
78845
|
const wslVersion = getWslVersion();
|
|
@@ -78866,7 +78866,7 @@ function initialize1PEventLogging() {
|
|
|
78866
78866
|
})
|
|
78867
78867
|
]
|
|
78868
78868
|
});
|
|
78869
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.44.
|
|
78869
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.44.9");
|
|
78870
78870
|
}
|
|
78871
78871
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
78872
78872
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -81514,7 +81514,7 @@ var init_types2 = __esm(() => {
|
|
|
81514
81514
|
showThinkingSummaries: exports_external.boolean().optional().describe("Show thinking summaries in the transcript view (ctrl+o). Default: false."),
|
|
81515
81515
|
skipDangerousModePermissionPrompt: exports_external.boolean().optional().describe("Whether the user has accepted the bypass permissions mode dialog"),
|
|
81516
81516
|
...{},
|
|
81517
|
-
disableAutoMode: exports_external.enum(["disable"]).optional().describe("
|
|
81517
|
+
disableAutoMode: exports_external.enum(["disable"]).optional().describe("DEPRECATED duplicate of permissions.disableAutoMode \u2014 both are honored for back-compat, but set the nested one. This top-level key will be removed in a future major."),
|
|
81518
81518
|
sshConfigs: exports_external.array(exports_external.object({
|
|
81519
81519
|
id: exports_external.string().describe("Unique identifier for this SSH config. Used to match configs across settings sources."),
|
|
81520
81520
|
name: exports_external.string().describe("Display name for the SSH connection"),
|
|
@@ -83463,6 +83463,29 @@ async function runLearn(options) {
|
|
|
83463
83463
|
saveStats(options.cwd, stats);
|
|
83464
83464
|
return { stats, newOutcomes: fresh.length, newLessons };
|
|
83465
83465
|
}
|
|
83466
|
+
function suggestSkillCandidates(stats, existingSkillNames = [], options = {}) {
|
|
83467
|
+
const minPasses = options.minPasses ?? 5;
|
|
83468
|
+
const minRate = options.minRate ?? 0.7;
|
|
83469
|
+
const existing = existingSkillNames.map((n2) => n2.toLowerCase());
|
|
83470
|
+
const out = [];
|
|
83471
|
+
for (const [category, t] of Object.entries(stats.categories)) {
|
|
83472
|
+
const total = t.pass + t.fail;
|
|
83473
|
+
if (t.pass < minPasses || total === 0)
|
|
83474
|
+
continue;
|
|
83475
|
+
const r = t.pass / total;
|
|
83476
|
+
if (r < minRate)
|
|
83477
|
+
continue;
|
|
83478
|
+
if (existing.some((name) => name.includes(category.toLowerCase())))
|
|
83479
|
+
continue;
|
|
83480
|
+
out.push({
|
|
83481
|
+
category,
|
|
83482
|
+
passes: t.pass,
|
|
83483
|
+
rate: r,
|
|
83484
|
+
hint: `You have ${t.pass} successful ${category} runs (${Math.round(r * 100)}%). Distill the repeatable steps into a skill: /create-skill ${category}-playbook or /skillify after the next ${category} run.`
|
|
83485
|
+
});
|
|
83486
|
+
}
|
|
83487
|
+
return out.sort((a2, b) => b.passes - a2.passes);
|
|
83488
|
+
}
|
|
83466
83489
|
function formatStats(stats, json2) {
|
|
83467
83490
|
if (json2)
|
|
83468
83491
|
return JSON.stringify(stats, null, 2);
|
|
@@ -83490,6 +83513,12 @@ function formatStats(stats, json2) {
|
|
|
83490
83513
|
for (const lesson of stats.lessons.slice(-10))
|
|
83491
83514
|
lines.push(` - ${lesson}`);
|
|
83492
83515
|
}
|
|
83516
|
+
const skillIdeas = suggestSkillCandidates(stats);
|
|
83517
|
+
if (skillIdeas.length) {
|
|
83518
|
+
lines.push("", "Skill candidates (auto-skillify):");
|
|
83519
|
+
for (const idea of skillIdeas.slice(0, 5))
|
|
83520
|
+
lines.push(` - ${idea.hint}`);
|
|
83521
|
+
}
|
|
83493
83522
|
if (cats.length === 0 && models.length === 0) {
|
|
83494
83523
|
lines.push("No outcomes yet. Capture work with `ur artifacts`, then run `ur learn`.");
|
|
83495
83524
|
}
|
|
@@ -84773,7 +84802,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
|
|
|
84773
84802
|
function formatA2AAgentCard(options = {}, pretty = true) {
|
|
84774
84803
|
return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
|
|
84775
84804
|
}
|
|
84776
|
-
var urVersion = "1.44.
|
|
84805
|
+
var urVersion = "1.44.9", coverage, priorityRoadmap;
|
|
84777
84806
|
var init_trends = __esm(() => {
|
|
84778
84807
|
coverage = [
|
|
84779
84808
|
{
|
|
@@ -86768,7 +86797,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
86768
86797
|
if (!isAttributionHeaderEnabled()) {
|
|
86769
86798
|
return "";
|
|
86770
86799
|
}
|
|
86771
|
-
const version2 = `${"1.44.
|
|
86800
|
+
const version2 = `${"1.44.9"}.${fingerprint}`;
|
|
86772
86801
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
86773
86802
|
const cch = "";
|
|
86774
86803
|
const workload = getWorkload();
|
|
@@ -194738,7 +194767,7 @@ function getTelemetryAttributes() {
|
|
|
194738
194767
|
attributes["session.id"] = sessionId;
|
|
194739
194768
|
}
|
|
194740
194769
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
194741
|
-
attributes["app.version"] = "1.44.
|
|
194770
|
+
attributes["app.version"] = "1.44.9";
|
|
194742
194771
|
}
|
|
194743
194772
|
const oauthAccount = getOauthAccountInfo();
|
|
194744
194773
|
if (oauthAccount) {
|
|
@@ -230126,7 +230155,7 @@ function getInstallationEnv() {
|
|
|
230126
230155
|
return;
|
|
230127
230156
|
}
|
|
230128
230157
|
function getURCodeVersion() {
|
|
230129
|
-
return "1.44.
|
|
230158
|
+
return "1.44.9";
|
|
230130
230159
|
}
|
|
230131
230160
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
230132
230161
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -232965,7 +232994,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
232965
232994
|
const client2 = new Client({
|
|
232966
232995
|
name: "ur",
|
|
232967
232996
|
title: "UR",
|
|
232968
|
-
version: "1.44.
|
|
232997
|
+
version: "1.44.9",
|
|
232969
232998
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
232970
232999
|
websiteUrl: PRODUCT_URL
|
|
232971
233000
|
}, {
|
|
@@ -233319,7 +233348,7 @@ var init_client5 = __esm(() => {
|
|
|
233319
233348
|
const client2 = new Client({
|
|
233320
233349
|
name: "ur",
|
|
233321
233350
|
title: "UR",
|
|
233322
|
-
version: "1.44.
|
|
233351
|
+
version: "1.44.9",
|
|
233323
233352
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
233324
233353
|
websiteUrl: PRODUCT_URL
|
|
233325
233354
|
}, {
|
|
@@ -243133,9 +243162,9 @@ async function assertMinVersion() {
|
|
|
243133
243162
|
if (false) {}
|
|
243134
243163
|
try {
|
|
243135
243164
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
243136
|
-
if (versionConfig.minVersion && lt("1.44.
|
|
243165
|
+
if (versionConfig.minVersion && lt("1.44.9", versionConfig.minVersion)) {
|
|
243137
243166
|
console.error(`
|
|
243138
|
-
It looks like your version of UR (${"1.44.
|
|
243167
|
+
It looks like your version of UR (${"1.44.9"}) needs an update.
|
|
243139
243168
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
243140
243169
|
|
|
243141
243170
|
To update, please run:
|
|
@@ -243351,7 +243380,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
243351
243380
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
243352
243381
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
243353
243382
|
pid: process.pid,
|
|
243354
|
-
currentVersion: "1.44.
|
|
243383
|
+
currentVersion: "1.44.9"
|
|
243355
243384
|
});
|
|
243356
243385
|
return "in_progress";
|
|
243357
243386
|
}
|
|
@@ -243360,7 +243389,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
243360
243389
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
243361
243390
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
243362
243391
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
243363
|
-
currentVersion: "1.44.
|
|
243392
|
+
currentVersion: "1.44.9"
|
|
243364
243393
|
});
|
|
243365
243394
|
console.error(`
|
|
243366
243395
|
Error: Windows NPM detected in WSL
|
|
@@ -243895,7 +243924,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
243895
243924
|
}
|
|
243896
243925
|
async function getDoctorDiagnostic() {
|
|
243897
243926
|
const installationType = await getCurrentInstallationType();
|
|
243898
|
-
const version2 = typeof MACRO !== "undefined" ? "1.44.
|
|
243927
|
+
const version2 = typeof MACRO !== "undefined" ? "1.44.9" : "unknown";
|
|
243899
243928
|
const installationPath = await getInstallationPath();
|
|
243900
243929
|
const invokedBinary = getInvokedBinary();
|
|
243901
243930
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -244830,8 +244859,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
244830
244859
|
const maxVersion = await getMaxVersion();
|
|
244831
244860
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
244832
244861
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
244833
|
-
if (gte("1.44.
|
|
244834
|
-
logForDebugging(`Native installer: current version ${"1.44.
|
|
244862
|
+
if (gte("1.44.9", maxVersion)) {
|
|
244863
|
+
logForDebugging(`Native installer: current version ${"1.44.9"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
244835
244864
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
244836
244865
|
latency_ms: Date.now() - startTime,
|
|
244837
244866
|
max_version: maxVersion,
|
|
@@ -244842,7 +244871,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
244842
244871
|
version2 = maxVersion;
|
|
244843
244872
|
}
|
|
244844
244873
|
}
|
|
244845
|
-
if (!forceReinstall && version2 === "1.44.
|
|
244874
|
+
if (!forceReinstall && version2 === "1.44.9" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
244846
244875
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
244847
244876
|
logEvent("tengu_native_update_complete", {
|
|
244848
244877
|
latency_ms: Date.now() - startTime,
|
|
@@ -290261,6 +290290,40 @@ function stripTrailingWhitespace(str2) {
|
|
|
290261
290290
|
}
|
|
290262
290291
|
return result;
|
|
290263
290292
|
}
|
|
290293
|
+
function normalizeLineForMatch(line) {
|
|
290294
|
+
return line.replaceAll("\t", " ").replace(/\s+$/, "");
|
|
290295
|
+
}
|
|
290296
|
+
function findActualStringWhitespaceTolerant(fileContent, searchString) {
|
|
290297
|
+
const searchLines = searchString.split(`
|
|
290298
|
+
`);
|
|
290299
|
+
const fileLines = fileContent.split(`
|
|
290300
|
+
`);
|
|
290301
|
+
const normalizedSearchLines = searchLines.map(normalizeLineForMatch);
|
|
290302
|
+
if (normalizedSearchLines.length === 0 || normalizedSearchLines.length > fileLines.length) {
|
|
290303
|
+
return null;
|
|
290304
|
+
}
|
|
290305
|
+
const firstSearchLine = normalizedSearchLines[0];
|
|
290306
|
+
const candidateStarts = [];
|
|
290307
|
+
for (let i3 = 0;i3 <= fileLines.length - normalizedSearchLines.length; i3++) {
|
|
290308
|
+
if (normalizeLineForMatch(fileLines[i3]) === firstSearchLine) {
|
|
290309
|
+
candidateStarts.push(i3);
|
|
290310
|
+
}
|
|
290311
|
+
}
|
|
290312
|
+
for (const start of candidateStarts) {
|
|
290313
|
+
let match = true;
|
|
290314
|
+
for (let j2 = 0;j2 < normalizedSearchLines.length; j2++) {
|
|
290315
|
+
if (normalizeLineForMatch(fileLines[start + j2]) !== normalizedSearchLines[j2]) {
|
|
290316
|
+
match = false;
|
|
290317
|
+
break;
|
|
290318
|
+
}
|
|
290319
|
+
}
|
|
290320
|
+
if (match) {
|
|
290321
|
+
return fileLines.slice(start, start + normalizedSearchLines.length).join(`
|
|
290322
|
+
`);
|
|
290323
|
+
}
|
|
290324
|
+
}
|
|
290325
|
+
return null;
|
|
290326
|
+
}
|
|
290264
290327
|
function findActualString(fileContent, searchString) {
|
|
290265
290328
|
if (fileContent.includes(searchString)) {
|
|
290266
290329
|
return searchString;
|
|
@@ -290271,7 +290334,7 @@ function findActualString(fileContent, searchString) {
|
|
|
290271
290334
|
if (searchIndex !== -1) {
|
|
290272
290335
|
return fileContent.substring(searchIndex, searchIndex + searchString.length);
|
|
290273
290336
|
}
|
|
290274
|
-
return
|
|
290337
|
+
return findActualStringWhitespaceTolerant(fileContent, searchString);
|
|
290275
290338
|
}
|
|
290276
290339
|
function preserveQuoteStyle(oldString, actualOldString, newString) {
|
|
290277
290340
|
if (oldString === actualOldString) {
|
|
@@ -299345,6 +299408,16 @@ function normalizeAskUserQuestionInput2(value) {
|
|
|
299345
299408
|
metadata: input.metadata
|
|
299346
299409
|
} : {}
|
|
299347
299410
|
};
|
|
299411
|
+
if (typeof input.questions === "string") {
|
|
299412
|
+
const parsed = parseToolInputJsonLenient(input.questions);
|
|
299413
|
+
if (Array.isArray(parsed))
|
|
299414
|
+
input.questions = parsed;
|
|
299415
|
+
}
|
|
299416
|
+
if (typeof input.options === "string") {
|
|
299417
|
+
const parsed = parseToolInputJsonLenient(input.options);
|
|
299418
|
+
if (Array.isArray(parsed))
|
|
299419
|
+
input.options = parsed;
|
|
299420
|
+
}
|
|
299348
299421
|
if (Array.isArray(input.questions)) {
|
|
299349
299422
|
return {
|
|
299350
299423
|
questions: input.questions.map(normalizeQuestionInput),
|
|
@@ -299439,6 +299512,7 @@ var init_AskUserQuestionTool = __esm(() => {
|
|
|
299439
299512
|
init_MessageResponse();
|
|
299440
299513
|
init_figures2();
|
|
299441
299514
|
init_PermissionMode();
|
|
299515
|
+
init_json();
|
|
299442
299516
|
init_v4();
|
|
299443
299517
|
init_ink2();
|
|
299444
299518
|
init_Tool();
|
|
@@ -341607,7 +341681,7 @@ function Feedback({
|
|
|
341607
341681
|
platform: env2.platform,
|
|
341608
341682
|
gitRepo: envInfo.isGit,
|
|
341609
341683
|
terminal: env2.terminal,
|
|
341610
|
-
version: "1.44.
|
|
341684
|
+
version: "1.44.9",
|
|
341611
341685
|
transcript: normalizeMessagesForAPI(messages),
|
|
341612
341686
|
errors: sanitizedErrors,
|
|
341613
341687
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -341799,7 +341873,7 @@ function Feedback({
|
|
|
341799
341873
|
", ",
|
|
341800
341874
|
env2.terminal,
|
|
341801
341875
|
", v",
|
|
341802
|
-
"1.44.
|
|
341876
|
+
"1.44.9"
|
|
341803
341877
|
]
|
|
341804
341878
|
}, undefined, true, undefined, this)
|
|
341805
341879
|
]
|
|
@@ -341905,7 +341979,7 @@ ${sanitizedDescription}
|
|
|
341905
341979
|
` + `**Environment Info**
|
|
341906
341980
|
` + `- Platform: ${env2.platform}
|
|
341907
341981
|
` + `- Terminal: ${env2.terminal}
|
|
341908
|
-
` + `- Version: ${"1.44.
|
|
341982
|
+
` + `- Version: ${"1.44.9"}
|
|
341909
341983
|
` + `- Feedback ID: ${feedbackId}
|
|
341910
341984
|
` + `
|
|
341911
341985
|
**Errors**
|
|
@@ -345016,7 +345090,7 @@ function buildPrimarySection() {
|
|
|
345016
345090
|
}, undefined, false, undefined, this);
|
|
345017
345091
|
return [{
|
|
345018
345092
|
label: "Version",
|
|
345019
|
-
value: "1.44.
|
|
345093
|
+
value: "1.44.9"
|
|
345020
345094
|
}, {
|
|
345021
345095
|
label: "Session name",
|
|
345022
345096
|
value: nameValue
|
|
@@ -348346,7 +348420,7 @@ function Config({
|
|
|
348346
348420
|
}
|
|
348347
348421
|
}, undefined, false, undefined, this)
|
|
348348
348422
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime176.jsxDEV(ChannelDowngradeDialog, {
|
|
348349
|
-
currentVersion: "1.44.
|
|
348423
|
+
currentVersion: "1.44.9",
|
|
348350
348424
|
onChoice: (choice) => {
|
|
348351
348425
|
setShowSubmenu(null);
|
|
348352
348426
|
setTabsHidden(false);
|
|
@@ -348358,7 +348432,7 @@ function Config({
|
|
|
348358
348432
|
autoUpdatesChannel: "stable"
|
|
348359
348433
|
};
|
|
348360
348434
|
if (choice === "stay") {
|
|
348361
|
-
newSettings.minimumVersion = "1.44.
|
|
348435
|
+
newSettings.minimumVersion = "1.44.9";
|
|
348362
348436
|
}
|
|
348363
348437
|
updateSettingsForSource("userSettings", newSettings);
|
|
348364
348438
|
setSettingsData((prev_27) => ({
|
|
@@ -356428,7 +356502,7 @@ function HelpV2(t0) {
|
|
|
356428
356502
|
let t6;
|
|
356429
356503
|
if ($3[31] !== tabs) {
|
|
356430
356504
|
t6 = /* @__PURE__ */ jsx_dev_runtime203.jsxDEV(Tabs, {
|
|
356431
|
-
title: `UR v${"1.44.
|
|
356505
|
+
title: `UR v${"1.44.9"}`,
|
|
356432
356506
|
color: "professionalBlue",
|
|
356433
356507
|
defaultTab: "general",
|
|
356434
356508
|
children: tabs
|
|
@@ -357174,7 +357248,7 @@ function buildToolUseContext(tools, readFileStateCache) {
|
|
|
357174
357248
|
async function handleInitialize(options2) {
|
|
357175
357249
|
return {
|
|
357176
357250
|
name: "UR",
|
|
357177
|
-
version: "1.44.
|
|
357251
|
+
version: "1.44.9",
|
|
357178
357252
|
protocolVersion: "0.1.0",
|
|
357179
357253
|
workspaceRoot: options2.cwd,
|
|
357180
357254
|
capabilities: {
|
|
@@ -377316,7 +377390,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
377316
377390
|
return [];
|
|
377317
377391
|
}
|
|
377318
377392
|
}
|
|
377319
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.44.
|
|
377393
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.44.9") {
|
|
377320
377394
|
if (process.env.USER_TYPE === "ant") {
|
|
377321
377395
|
const changelog = "";
|
|
377322
377396
|
if (changelog) {
|
|
@@ -377343,7 +377417,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.44.8")
|
|
|
377343
377417
|
releaseNotes
|
|
377344
377418
|
};
|
|
377345
377419
|
}
|
|
377346
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.44.
|
|
377420
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.44.9") {
|
|
377347
377421
|
if (process.env.USER_TYPE === "ant") {
|
|
377348
377422
|
const changelog = "";
|
|
377349
377423
|
if (changelog) {
|
|
@@ -378522,7 +378596,7 @@ function getRecentActivitySync() {
|
|
|
378522
378596
|
return cachedActivity;
|
|
378523
378597
|
}
|
|
378524
378598
|
function getLogoDisplayData() {
|
|
378525
|
-
const version2 = process.env.DEMO_VERSION ?? "1.44.
|
|
378599
|
+
const version2 = process.env.DEMO_VERSION ?? "1.44.9";
|
|
378526
378600
|
const serverUrl = getDirectConnectServerUrl();
|
|
378527
378601
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
378528
378602
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -379311,7 +379385,7 @@ function LogoV2() {
|
|
|
379311
379385
|
if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
379312
379386
|
t2 = () => {
|
|
379313
379387
|
const currentConfig2 = getGlobalConfig();
|
|
379314
|
-
if (currentConfig2.lastReleaseNotesSeen === "1.44.
|
|
379388
|
+
if (currentConfig2.lastReleaseNotesSeen === "1.44.9") {
|
|
379315
379389
|
return;
|
|
379316
379390
|
}
|
|
379317
379391
|
saveGlobalConfig(_temp326);
|
|
@@ -379996,12 +380070,12 @@ function LogoV2() {
|
|
|
379996
380070
|
return t41;
|
|
379997
380071
|
}
|
|
379998
380072
|
function _temp326(current) {
|
|
379999
|
-
if (current.lastReleaseNotesSeen === "1.44.
|
|
380073
|
+
if (current.lastReleaseNotesSeen === "1.44.9") {
|
|
380000
380074
|
return current;
|
|
380001
380075
|
}
|
|
380002
380076
|
return {
|
|
380003
380077
|
...current,
|
|
380004
|
-
lastReleaseNotesSeen: "1.44.
|
|
380078
|
+
lastReleaseNotesSeen: "1.44.9"
|
|
380005
380079
|
};
|
|
380006
380080
|
}
|
|
380007
380081
|
function _temp241(s_0) {
|
|
@@ -597013,7 +597087,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
597013
597087
|
smapsRollup,
|
|
597014
597088
|
platform: process.platform,
|
|
597015
597089
|
nodeVersion: process.version,
|
|
597016
|
-
ccVersion: "1.44.
|
|
597090
|
+
ccVersion: "1.44.9"
|
|
597017
597091
|
};
|
|
597018
597092
|
}
|
|
597019
597093
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -597599,7 +597673,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
597599
597673
|
var call138 = async () => {
|
|
597600
597674
|
return {
|
|
597601
597675
|
type: "text",
|
|
597602
|
-
value: "1.44.
|
|
597676
|
+
value: "1.44.9"
|
|
597603
597677
|
};
|
|
597604
597678
|
}, version2, version_default;
|
|
597605
597679
|
var init_version = __esm(() => {
|
|
@@ -607692,7 +607766,7 @@ function generateHtmlReport(data, insights) {
|
|
|
607692
607766
|
</html>`;
|
|
607693
607767
|
}
|
|
607694
607768
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
607695
|
-
const version3 = typeof MACRO !== "undefined" ? "1.44.
|
|
607769
|
+
const version3 = typeof MACRO !== "undefined" ? "1.44.9" : "unknown";
|
|
607696
607770
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
607697
607771
|
const facets_summary = {
|
|
607698
607772
|
total: facets.size,
|
|
@@ -611974,7 +612048,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
611974
612048
|
init_settings2();
|
|
611975
612049
|
init_slowOperations();
|
|
611976
612050
|
init_uuid();
|
|
611977
|
-
VERSION5 = typeof MACRO !== "undefined" ? "1.44.
|
|
612051
|
+
VERSION5 = typeof MACRO !== "undefined" ? "1.44.9" : "unknown";
|
|
611978
612052
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
611979
612053
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
611980
612054
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -613179,7 +613253,7 @@ var init_filesystem = __esm(() => {
|
|
|
613179
613253
|
});
|
|
613180
613254
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
613181
613255
|
const nonce = randomBytes18(16).toString("hex");
|
|
613182
|
-
return join202(getURTempDir(), "bundled-skills", "1.44.
|
|
613256
|
+
return join202(getURTempDir(), "bundled-skills", "1.44.9", nonce);
|
|
613183
613257
|
});
|
|
613184
613258
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
613185
613259
|
});
|
|
@@ -618544,6 +618618,51 @@ var init_worktree3 = __esm(() => {
|
|
|
618544
618618
|
];
|
|
618545
618619
|
});
|
|
618546
618620
|
|
|
618621
|
+
// src/services/agents/repoWiki.ts
|
|
618622
|
+
import {
|
|
618623
|
+
chmodSync as chmodSync3,
|
|
618624
|
+
existsSync as existsSync64,
|
|
618625
|
+
mkdirSync as mkdirSync54,
|
|
618626
|
+
readdirSync as readdirSync25,
|
|
618627
|
+
readFileSync as readFileSync66,
|
|
618628
|
+
statSync as statSync15,
|
|
618629
|
+
writeFileSync as writeFileSync53
|
|
618630
|
+
} from "fs";
|
|
618631
|
+
import { join as join205 } from "path";
|
|
618632
|
+
function repoMapPath(cwd2) {
|
|
618633
|
+
return join205(cwd2, ".ur", "repo-map.md");
|
|
618634
|
+
}
|
|
618635
|
+
function loadRepoMapForPrompt(cwd2, maxBytes = 4000) {
|
|
618636
|
+
const path22 = repoMapPath(cwd2);
|
|
618637
|
+
if (!existsSync64(path22))
|
|
618638
|
+
return null;
|
|
618639
|
+
try {
|
|
618640
|
+
const age = Date.now() - statSync15(path22).mtimeMs;
|
|
618641
|
+
if (age > 7 * 24 * 3600 * 1000)
|
|
618642
|
+
return null;
|
|
618643
|
+
const body = readFileSync66(path22, "utf-8");
|
|
618644
|
+
return body.length <= maxBytes ? body : `${body.slice(0, maxBytes)}
|
|
618645
|
+
\u2026 [map truncated]`;
|
|
618646
|
+
} catch {
|
|
618647
|
+
return null;
|
|
618648
|
+
}
|
|
618649
|
+
}
|
|
618650
|
+
var SKIP_DIRS3;
|
|
618651
|
+
var init_repoWiki = __esm(() => {
|
|
618652
|
+
init_projectDna();
|
|
618653
|
+
init_repoIndex();
|
|
618654
|
+
init_json();
|
|
618655
|
+
SKIP_DIRS3 = new Set([
|
|
618656
|
+
"node_modules",
|
|
618657
|
+
".git",
|
|
618658
|
+
"dist",
|
|
618659
|
+
"build",
|
|
618660
|
+
"coverage",
|
|
618661
|
+
".ur",
|
|
618662
|
+
"out"
|
|
618663
|
+
]);
|
|
618664
|
+
});
|
|
618665
|
+
|
|
618547
618666
|
// src/constants/cyberRiskInstruction.ts
|
|
618548
618667
|
var CYBER_RISK_INSTRUCTION = `IMPORTANT: Assist with authorized security testing, defensive security, CTF challenges, and educational contexts. Refuse requests for destructive techniques, DoS attacks, mass targeting, supply chain compromise, or detection evasion for malicious purposes. Dual-use security tools (C2 frameworks, credential testing, exploit development) require clear authorization context: pentesting engagements, CTF competitions, security research, or defensive use cases.`;
|
|
618549
618668
|
|
|
@@ -618906,10 +619025,12 @@ async function computeSimpleEnvInfo(modelId, additionalWorkingDirectories) {
|
|
|
618906
619025
|
includeURProductInfo ? `UR is available as a CLI in the terminal, desktop app (Mac/Windows), web app (ur.ai/code), and IDE extensions (VS Code, JetBrains).` : null,
|
|
618907
619026
|
includeURProductInfo ? `Fast mode for UR keeps the selected provider/model and requests faster output when that backend supports it. It can be toggled with /fast.` : null
|
|
618908
619027
|
].filter((item) => item !== null);
|
|
619028
|
+
const repoMap = loadRepoMapForPrompt(cwd2);
|
|
618909
619029
|
return [
|
|
618910
619030
|
`# Environment`,
|
|
618911
619031
|
`You have been invoked in the following environment: `,
|
|
618912
|
-
...prependBullets(envItems)
|
|
619032
|
+
...prependBullets(envItems),
|
|
619033
|
+
...repoMap ? [``, repoMap.trimEnd()] : []
|
|
618913
619034
|
].join(`
|
|
618914
619035
|
`);
|
|
618915
619036
|
}
|
|
@@ -619023,6 +619144,7 @@ var init_prompts4 = __esm(() => {
|
|
|
619023
619144
|
init_debug();
|
|
619024
619145
|
init_memdir();
|
|
619025
619146
|
init_undercover();
|
|
619147
|
+
init_repoWiki();
|
|
619026
619148
|
init_mcpInstructionsDelta();
|
|
619027
619149
|
});
|
|
619028
619150
|
|
|
@@ -619470,7 +619592,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
619470
619592
|
}
|
|
619471
619593
|
function computeFingerprintFromMessages(messages) {
|
|
619472
619594
|
const firstMessageText = extractFirstMessageText(messages);
|
|
619473
|
-
return computeFingerprint(firstMessageText, "1.44.
|
|
619595
|
+
return computeFingerprint(firstMessageText, "1.44.9");
|
|
619474
619596
|
}
|
|
619475
619597
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
619476
619598
|
var init_fingerprint = () => {};
|
|
@@ -621344,7 +621466,7 @@ async function sideQuery(opts) {
|
|
|
621344
621466
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
621345
621467
|
}
|
|
621346
621468
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
621347
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.44.
|
|
621469
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.44.9");
|
|
621348
621470
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
621349
621471
|
const systemBlocks = [
|
|
621350
621472
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -621630,7 +621752,7 @@ import {
|
|
|
621630
621752
|
} from "fs/promises";
|
|
621631
621753
|
import { createServer as createServer6 } from "net";
|
|
621632
621754
|
import { homedir as homedir33, platform as platform6 } from "os";
|
|
621633
|
-
import { join as
|
|
621755
|
+
import { join as join206 } from "path";
|
|
621634
621756
|
function log(message, ...args) {
|
|
621635
621757
|
if (LOG_FILE) {
|
|
621636
621758
|
const timestamp2 = new Date().toISOString();
|
|
@@ -621697,7 +621819,7 @@ class ChromeNativeHost {
|
|
|
621697
621819
|
try {
|
|
621698
621820
|
process.kill(pid, 0);
|
|
621699
621821
|
} catch {
|
|
621700
|
-
await unlink24(
|
|
621822
|
+
await unlink24(join206(socketDir, file4)).catch(() => {});
|
|
621701
621823
|
log(`Removed stale socket for PID ${pid}`);
|
|
621702
621824
|
}
|
|
621703
621825
|
}
|
|
@@ -621968,7 +622090,7 @@ var init_chromeNativeHost = __esm(() => {
|
|
|
621968
622090
|
init_slowOperations();
|
|
621969
622091
|
init_common2();
|
|
621970
622092
|
MAX_MESSAGE_SIZE = 1024 * 1024;
|
|
621971
|
-
LOG_FILE = process.env.USER_TYPE === "ant" ?
|
|
622093
|
+
LOG_FILE = process.env.USER_TYPE === "ant" ? join206(homedir33(), ".ur", "debug", "chrome-native-host.txt") : undefined;
|
|
621972
622094
|
messageSchema = lazySchema(() => exports_external2.object({
|
|
621973
622095
|
type: exports_external2.string()
|
|
621974
622096
|
}).passthrough());
|
|
@@ -624478,7 +624600,7 @@ __export(exports_upstreamproxy, {
|
|
|
624478
624600
|
});
|
|
624479
624601
|
import { mkdir as mkdir44, readFile as readFile52, unlink as unlink25, writeFile as writeFile45 } from "fs/promises";
|
|
624480
624602
|
import { homedir as homedir34 } from "os";
|
|
624481
|
-
import { join as
|
|
624603
|
+
import { join as join207 } from "path";
|
|
624482
624604
|
async function initUpstreamProxy(opts) {
|
|
624483
624605
|
if (!isEnvTruthy(process.env.UR_CODE_REMOTE)) {
|
|
624484
624606
|
return state;
|
|
@@ -624499,7 +624621,7 @@ async function initUpstreamProxy(opts) {
|
|
|
624499
624621
|
}
|
|
624500
624622
|
setNonDumpable();
|
|
624501
624623
|
const baseUrl = opts?.ccrBaseUrl ?? "";
|
|
624502
|
-
const caBundlePath = opts?.caBundlePath ??
|
|
624624
|
+
const caBundlePath = opts?.caBundlePath ?? join207(homedir34(), ".ccr", "ca-bundle.crt");
|
|
624503
624625
|
const caOk = await downloadCaBundle(baseUrl, opts?.systemCaPath ?? SYSTEM_CA_BUNDLE, caBundlePath);
|
|
624504
624626
|
if (!caOk)
|
|
624505
624627
|
return state;
|
|
@@ -624599,7 +624721,7 @@ async function downloadCaBundle(baseUrl, systemCaPath, outPath) {
|
|
|
624599
624721
|
}
|
|
624600
624722
|
const ccrCa = await resp.text();
|
|
624601
624723
|
const systemCa = await readFile52(systemCaPath, "utf8").catch(() => "");
|
|
624602
|
-
await mkdir44(
|
|
624724
|
+
await mkdir44(join207(outPath, ".."), { recursive: true });
|
|
624603
624725
|
await writeFile45(outPath, systemCa + `
|
|
624604
624726
|
` + ccrCa, "utf8");
|
|
624605
624727
|
return true;
|
|
@@ -626081,7 +626203,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
626081
626203
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
626082
626204
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
626083
626205
|
betas: getSdkBetas(),
|
|
626084
|
-
ur_version: "1.44.
|
|
626206
|
+
ur_version: "1.44.9",
|
|
626085
626207
|
output_style: outputStyle2,
|
|
626086
626208
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
626087
626209
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -632461,7 +632583,7 @@ var init_ShowInIDEPrompt = __esm(() => {
|
|
|
632461
632583
|
|
|
632462
632584
|
// src/components/permissions/FilePermissionDialog/permissionOptions.tsx
|
|
632463
632585
|
import { homedir as homedir35 } from "os";
|
|
632464
|
-
import { basename as basename51, join as
|
|
632586
|
+
import { basename as basename51, join as join208, sep as sep37 } from "path";
|
|
632465
632587
|
function isInURFolder(filePath) {
|
|
632466
632588
|
const absolutePath = expandPath(filePath);
|
|
632467
632589
|
const urFolderPath = expandPath(`${getOriginalCwd()}/.ur`);
|
|
@@ -632471,7 +632593,7 @@ function isInURFolder(filePath) {
|
|
|
632471
632593
|
}
|
|
632472
632594
|
function isInGlobalURFolder(filePath) {
|
|
632473
632595
|
const absolutePath = expandPath(filePath);
|
|
632474
|
-
const globalURFolderPath =
|
|
632596
|
+
const globalURFolderPath = join208(homedir35(), ".ur");
|
|
632475
632597
|
const normalizedAbsolutePath = normalizeCaseForComparison(absolutePath);
|
|
632476
632598
|
const normalizedGlobalURFolderPath = normalizeCaseForComparison(globalURFolderPath);
|
|
632477
632599
|
return normalizedAbsolutePath.startsWith(normalizedGlobalURFolderPath + sep37.toLowerCase()) || normalizedAbsolutePath.startsWith(normalizedGlobalURFolderPath + "/");
|
|
@@ -640709,7 +640831,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
640709
640831
|
function getSemverPart(version3) {
|
|
640710
640832
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
640711
640833
|
}
|
|
640712
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.44.
|
|
640834
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.44.9") {
|
|
640713
640835
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react226.useState(() => getSemverPart(initialVersion));
|
|
640714
640836
|
if (!updatedVersion) {
|
|
640715
640837
|
return null;
|
|
@@ -640758,7 +640880,7 @@ function AutoUpdater({
|
|
|
640758
640880
|
return;
|
|
640759
640881
|
}
|
|
640760
640882
|
if (false) {}
|
|
640761
|
-
const currentVersion = "1.44.
|
|
640883
|
+
const currentVersion = "1.44.9";
|
|
640762
640884
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
640763
640885
|
let latestVersion = await getLatestVersion(channel);
|
|
640764
640886
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -640987,12 +641109,12 @@ function NativeAutoUpdater({
|
|
|
640987
641109
|
logEvent("tengu_native_auto_updater_start", {});
|
|
640988
641110
|
try {
|
|
640989
641111
|
const maxVersion = await getMaxVersion();
|
|
640990
|
-
if (maxVersion && gt("1.44.
|
|
641112
|
+
if (maxVersion && gt("1.44.9", maxVersion)) {
|
|
640991
641113
|
const msg = await getMaxVersionMessage();
|
|
640992
641114
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
640993
641115
|
}
|
|
640994
641116
|
const result = await installLatest(channel);
|
|
640995
|
-
const currentVersion = "1.44.
|
|
641117
|
+
const currentVersion = "1.44.9";
|
|
640996
641118
|
const latencyMs = Date.now() - startTime;
|
|
640997
641119
|
if (result.lockFailed) {
|
|
640998
641120
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -641129,17 +641251,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
641129
641251
|
const maxVersion = await getMaxVersion();
|
|
641130
641252
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
641131
641253
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
641132
|
-
if (gte("1.44.
|
|
641133
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.44.
|
|
641254
|
+
if (gte("1.44.9", maxVersion)) {
|
|
641255
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.44.9"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
641134
641256
|
setUpdateAvailable(false);
|
|
641135
641257
|
return;
|
|
641136
641258
|
}
|
|
641137
641259
|
latest = maxVersion;
|
|
641138
641260
|
}
|
|
641139
|
-
const hasUpdate = latest && !gte("1.44.
|
|
641261
|
+
const hasUpdate = latest && !gte("1.44.9", latest) && !shouldSkipVersion(latest);
|
|
641140
641262
|
setUpdateAvailable(!!hasUpdate);
|
|
641141
641263
|
if (hasUpdate) {
|
|
641142
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.44.
|
|
641264
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.44.9"} -> ${latest}`);
|
|
641143
641265
|
}
|
|
641144
641266
|
};
|
|
641145
641267
|
$3[0] = t1;
|
|
@@ -641173,7 +641295,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
641173
641295
|
wrap: "truncate",
|
|
641174
641296
|
children: [
|
|
641175
641297
|
"currentVersion: ",
|
|
641176
|
-
"1.44.
|
|
641298
|
+
"1.44.9"
|
|
641177
641299
|
]
|
|
641178
641300
|
}, undefined, true, undefined, this);
|
|
641179
641301
|
$3[3] = verbose;
|
|
@@ -653629,7 +653751,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
653629
653751
|
project_dir: getOriginalCwd(),
|
|
653630
653752
|
added_dirs: addedDirs
|
|
653631
653753
|
},
|
|
653632
|
-
version: "1.44.
|
|
653754
|
+
version: "1.44.9",
|
|
653633
653755
|
output_style: {
|
|
653634
653756
|
name: outputStyleName
|
|
653635
653757
|
},
|
|
@@ -653712,7 +653834,7 @@ function StatusLineInner({
|
|
|
653712
653834
|
const taskValues = Object.values(tasks2);
|
|
653713
653835
|
const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
|
|
653714
653836
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
653715
|
-
version: "1.44.
|
|
653837
|
+
version: "1.44.9",
|
|
653716
653838
|
providerLabel: providerRuntime.providerLabel,
|
|
653717
653839
|
authMode: providerRuntime.authLabel,
|
|
653718
653840
|
model: providerRuntime.model ?? renderModelName(mainLoopModel),
|
|
@@ -659800,9 +659922,9 @@ function initSkillImprovement() {
|
|
|
659800
659922
|
async function applySkillImprovement(skillName, updates) {
|
|
659801
659923
|
if (!skillName)
|
|
659802
659924
|
return;
|
|
659803
|
-
const { join:
|
|
659925
|
+
const { join: join209 } = await import("path");
|
|
659804
659926
|
const fs12 = await import("fs/promises");
|
|
659805
|
-
const filePath =
|
|
659927
|
+
const filePath = join209(getCwd(), ".ur", "skills", skillName, "SKILL.md");
|
|
659806
659928
|
let currentContent;
|
|
659807
659929
|
try {
|
|
659808
659930
|
currentContent = await fs12.readFile(filePath, "utf-8");
|
|
@@ -659956,7 +660078,7 @@ function useMoreRight(_args) {
|
|
|
659956
660078
|
// src/utils/cleanup.ts
|
|
659957
660079
|
import * as fs12 from "fs/promises";
|
|
659958
660080
|
import { homedir as homedir36 } from "os";
|
|
659959
|
-
import { join as
|
|
660081
|
+
import { join as join209 } from "path";
|
|
659960
660082
|
function getCutoffDate() {
|
|
659961
660083
|
const settings = getSettings_DEPRECATED() || {};
|
|
659962
660084
|
const cleanupPeriodDays = settings.cleanupPeriodDays ?? DEFAULT_CLEANUP_PERIOD_DAYS;
|
|
@@ -659981,7 +660103,7 @@ async function cleanupOldFilesInDirectory(dirPath, cutoffDate, isMessagePath) {
|
|
|
659981
660103
|
try {
|
|
659982
660104
|
const timestamp2 = convertFileNameToDate(file4.name);
|
|
659983
660105
|
if (timestamp2 < cutoffDate) {
|
|
659984
|
-
await getFsImplementation().unlink(
|
|
660106
|
+
await getFsImplementation().unlink(join209(dirPath, file4.name));
|
|
659985
660107
|
if (isMessagePath) {
|
|
659986
660108
|
result.messages++;
|
|
659987
660109
|
} else {
|
|
@@ -660012,7 +660134,7 @@ async function cleanupOldMessageFiles() {
|
|
|
660012
660134
|
} catch {
|
|
660013
660135
|
return result;
|
|
660014
660136
|
}
|
|
660015
|
-
const mcpLogDirs = dirents.filter((dirent) => dirent.isDirectory() && dirent.name.startsWith("mcp-logs-")).map((dirent) =>
|
|
660137
|
+
const mcpLogDirs = dirents.filter((dirent) => dirent.isDirectory() && dirent.name.startsWith("mcp-logs-")).map((dirent) => join209(baseCachePath, dirent.name));
|
|
660016
660138
|
for (const mcpLogDir of mcpLogDirs) {
|
|
660017
660139
|
result = addCleanupResults(result, await cleanupOldFilesInDirectory(mcpLogDir, cutoffDate, true));
|
|
660018
660140
|
await tryRmdir(mcpLogDir, fsImpl);
|
|
@@ -660051,7 +660173,7 @@ async function cleanupOldSessionFiles() {
|
|
|
660051
660173
|
for (const projectDirent of projectDirents) {
|
|
660052
660174
|
if (!projectDirent.isDirectory())
|
|
660053
660175
|
continue;
|
|
660054
|
-
const projectDir =
|
|
660176
|
+
const projectDir = join209(projectsDir, projectDirent.name);
|
|
660055
660177
|
let entries;
|
|
660056
660178
|
try {
|
|
660057
660179
|
entries = await fsImpl.readdir(projectDir);
|
|
@@ -660065,15 +660187,15 @@ async function cleanupOldSessionFiles() {
|
|
|
660065
660187
|
continue;
|
|
660066
660188
|
}
|
|
660067
660189
|
try {
|
|
660068
|
-
if (await unlinkIfOld(
|
|
660190
|
+
if (await unlinkIfOld(join209(projectDir, entry.name), cutoffDate, fsImpl)) {
|
|
660069
660191
|
result.messages++;
|
|
660070
660192
|
}
|
|
660071
660193
|
} catch {
|
|
660072
660194
|
result.errors++;
|
|
660073
660195
|
}
|
|
660074
660196
|
} else if (entry.isDirectory()) {
|
|
660075
|
-
const sessionDir =
|
|
660076
|
-
const toolResultsDir =
|
|
660197
|
+
const sessionDir = join209(projectDir, entry.name);
|
|
660198
|
+
const toolResultsDir = join209(sessionDir, TOOL_RESULTS_SUBDIR);
|
|
660077
660199
|
let toolDirs;
|
|
660078
660200
|
try {
|
|
660079
660201
|
toolDirs = await fsImpl.readdir(toolResultsDir);
|
|
@@ -660084,14 +660206,14 @@ async function cleanupOldSessionFiles() {
|
|
|
660084
660206
|
for (const toolEntry of toolDirs) {
|
|
660085
660207
|
if (toolEntry.isFile()) {
|
|
660086
660208
|
try {
|
|
660087
|
-
if (await unlinkIfOld(
|
|
660209
|
+
if (await unlinkIfOld(join209(toolResultsDir, toolEntry.name), cutoffDate, fsImpl)) {
|
|
660088
660210
|
result.messages++;
|
|
660089
660211
|
}
|
|
660090
660212
|
} catch {
|
|
660091
660213
|
result.errors++;
|
|
660092
660214
|
}
|
|
660093
660215
|
} else if (toolEntry.isDirectory()) {
|
|
660094
|
-
const toolDirPath =
|
|
660216
|
+
const toolDirPath = join209(toolResultsDir, toolEntry.name);
|
|
660095
660217
|
let toolFiles;
|
|
660096
660218
|
try {
|
|
660097
660219
|
toolFiles = await fsImpl.readdir(toolDirPath);
|
|
@@ -660102,7 +660224,7 @@ async function cleanupOldSessionFiles() {
|
|
|
660102
660224
|
if (!tf.isFile())
|
|
660103
660225
|
continue;
|
|
660104
660226
|
try {
|
|
660105
|
-
if (await unlinkIfOld(
|
|
660227
|
+
if (await unlinkIfOld(join209(toolDirPath, tf.name), cutoffDate, fsImpl)) {
|
|
660106
660228
|
result.messages++;
|
|
660107
660229
|
}
|
|
660108
660230
|
} catch {
|
|
@@ -660134,7 +660256,7 @@ async function cleanupSingleDirectory(dirPath, extension, removeEmptyDir = true)
|
|
|
660134
660256
|
if (!dirent.isFile() || !dirent.name.endsWith(extension))
|
|
660135
660257
|
continue;
|
|
660136
660258
|
try {
|
|
660137
|
-
if (await unlinkIfOld(
|
|
660259
|
+
if (await unlinkIfOld(join209(dirPath, dirent.name), cutoffDate, fsImpl)) {
|
|
660138
660260
|
result.messages++;
|
|
660139
660261
|
}
|
|
660140
660262
|
} catch {
|
|
@@ -660147,7 +660269,7 @@ async function cleanupSingleDirectory(dirPath, extension, removeEmptyDir = true)
|
|
|
660147
660269
|
return result;
|
|
660148
660270
|
}
|
|
660149
660271
|
function cleanupOldPlanFiles() {
|
|
660150
|
-
const plansDir =
|
|
660272
|
+
const plansDir = join209(getURConfigHomeDir(), "plans");
|
|
660151
660273
|
return cleanupSingleDirectory(plansDir, ".md");
|
|
660152
660274
|
}
|
|
660153
660275
|
async function cleanupOldFileHistoryBackups() {
|
|
@@ -660156,14 +660278,14 @@ async function cleanupOldFileHistoryBackups() {
|
|
|
660156
660278
|
const fsImpl = getFsImplementation();
|
|
660157
660279
|
try {
|
|
660158
660280
|
const configDir = getURConfigHomeDir();
|
|
660159
|
-
const fileHistoryStorageDir =
|
|
660281
|
+
const fileHistoryStorageDir = join209(configDir, "file-history");
|
|
660160
660282
|
let dirents;
|
|
660161
660283
|
try {
|
|
660162
660284
|
dirents = await fsImpl.readdir(fileHistoryStorageDir);
|
|
660163
660285
|
} catch {
|
|
660164
660286
|
return result;
|
|
660165
660287
|
}
|
|
660166
|
-
const fileHistorySessionsDirs = dirents.filter((dirent) => dirent.isDirectory()).map((dirent) =>
|
|
660288
|
+
const fileHistorySessionsDirs = dirents.filter((dirent) => dirent.isDirectory()).map((dirent) => join209(fileHistoryStorageDir, dirent.name));
|
|
660167
660289
|
await Promise.all(fileHistorySessionsDirs.map(async (fileHistorySessionDir) => {
|
|
660168
660290
|
try {
|
|
660169
660291
|
const stats2 = await fsImpl.stat(fileHistorySessionDir);
|
|
@@ -660190,14 +660312,14 @@ async function cleanupOldSessionEnvDirs() {
|
|
|
660190
660312
|
const fsImpl = getFsImplementation();
|
|
660191
660313
|
try {
|
|
660192
660314
|
const configDir = getURConfigHomeDir();
|
|
660193
|
-
const sessionEnvBaseDir =
|
|
660315
|
+
const sessionEnvBaseDir = join209(configDir, "session-env");
|
|
660194
660316
|
let dirents;
|
|
660195
660317
|
try {
|
|
660196
660318
|
dirents = await fsImpl.readdir(sessionEnvBaseDir);
|
|
660197
660319
|
} catch {
|
|
660198
660320
|
return result;
|
|
660199
660321
|
}
|
|
660200
|
-
const sessionEnvDirs = dirents.filter((dirent) => dirent.isDirectory()).map((dirent) =>
|
|
660322
|
+
const sessionEnvDirs = dirents.filter((dirent) => dirent.isDirectory()).map((dirent) => join209(sessionEnvBaseDir, dirent.name));
|
|
660201
660323
|
for (const sessionEnvDir of sessionEnvDirs) {
|
|
660202
660324
|
try {
|
|
660203
660325
|
const stats2 = await fsImpl.stat(sessionEnvDir);
|
|
@@ -660219,7 +660341,7 @@ async function cleanupOldDebugLogs() {
|
|
|
660219
660341
|
const cutoffDate = getCutoffDate();
|
|
660220
660342
|
const result = { messages: 0, errors: 0 };
|
|
660221
660343
|
const fsImpl = getFsImplementation();
|
|
660222
|
-
const debugDir =
|
|
660344
|
+
const debugDir = join209(getURConfigHomeDir(), "debug");
|
|
660223
660345
|
let dirents;
|
|
660224
660346
|
try {
|
|
660225
660347
|
dirents = await fsImpl.readdir(debugDir);
|
|
@@ -660231,7 +660353,7 @@ async function cleanupOldDebugLogs() {
|
|
|
660231
660353
|
continue;
|
|
660232
660354
|
}
|
|
660233
660355
|
try {
|
|
660234
|
-
if (await unlinkIfOld(
|
|
660356
|
+
if (await unlinkIfOld(join209(debugDir, dirent.name), cutoffDate, fsImpl)) {
|
|
660235
660357
|
result.messages++;
|
|
660236
660358
|
}
|
|
660237
660359
|
} catch {
|
|
@@ -660241,7 +660363,7 @@ async function cleanupOldDebugLogs() {
|
|
|
660241
660363
|
return result;
|
|
660242
660364
|
}
|
|
660243
660365
|
async function cleanupNpmCacheForURHQPackages() {
|
|
660244
|
-
const markerPath =
|
|
660366
|
+
const markerPath = join209(getURConfigHomeDir(), ".npm-cache-cleanup");
|
|
660245
660367
|
try {
|
|
660246
660368
|
const stat47 = await fs12.stat(markerPath);
|
|
660247
660369
|
if (Date.now() - stat47.mtimeMs < ONE_DAY_MS) {
|
|
@@ -660256,7 +660378,7 @@ async function cleanupNpmCacheForURHQPackages() {
|
|
|
660256
660378
|
return;
|
|
660257
660379
|
}
|
|
660258
660380
|
logForDebugging("npm cache cleanup: starting");
|
|
660259
|
-
const npmCachePath =
|
|
660381
|
+
const npmCachePath = join209(homedir36(), ".npm", "_cacache");
|
|
660260
660382
|
const NPM_CACHE_RETENTION_COUNT = 5;
|
|
660261
660383
|
const startTime = Date.now();
|
|
660262
660384
|
try {
|
|
@@ -660311,7 +660433,7 @@ async function cleanupNpmCacheForURHQPackages() {
|
|
|
660311
660433
|
}
|
|
660312
660434
|
}
|
|
660313
660435
|
async function cleanupOldVersionsThrottled() {
|
|
660314
|
-
const markerPath =
|
|
660436
|
+
const markerPath = join209(getURConfigHomeDir(), ".version-cleanup");
|
|
660315
660437
|
try {
|
|
660316
660438
|
const stat47 = await fs12.stat(markerPath);
|
|
660317
660439
|
if (Date.now() - stat47.mtimeMs < ONE_DAY_MS) {
|
|
@@ -663997,7 +664119,7 @@ __export(exports_asciicast, {
|
|
|
663997
664119
|
_resetRecordingStateForTesting: () => _resetRecordingStateForTesting
|
|
663998
664120
|
});
|
|
663999
664121
|
import { appendFile as appendFile7, rename as rename10 } from "fs/promises";
|
|
664000
|
-
import { basename as basename60, dirname as dirname72, join as
|
|
664122
|
+
import { basename as basename60, dirname as dirname72, join as join211 } from "path";
|
|
664001
664123
|
function getRecordFilePath() {
|
|
664002
664124
|
if (recordingState.filePath !== null) {
|
|
664003
664125
|
return recordingState.filePath;
|
|
@@ -664008,10 +664130,10 @@ function getRecordFilePath() {
|
|
|
664008
664130
|
if (!isEnvTruthy(process.env.UR_CODE_TERMINAL_RECORDING)) {
|
|
664009
664131
|
return null;
|
|
664010
664132
|
}
|
|
664011
|
-
const projectsDir =
|
|
664012
|
-
const projectDir =
|
|
664133
|
+
const projectsDir = join211(getURConfigHomeDir(), "projects");
|
|
664134
|
+
const projectDir = join211(projectsDir, sanitizePath2(getOriginalCwd()));
|
|
664013
664135
|
recordingState.timestamp = Date.now();
|
|
664014
|
-
recordingState.filePath =
|
|
664136
|
+
recordingState.filePath = join211(projectDir, `${getSessionId()}-${recordingState.timestamp}.cast`);
|
|
664015
664137
|
return recordingState.filePath;
|
|
664016
664138
|
}
|
|
664017
664139
|
function _resetRecordingStateForTesting() {
|
|
@@ -664020,13 +664142,13 @@ function _resetRecordingStateForTesting() {
|
|
|
664020
664142
|
}
|
|
664021
664143
|
function getSessionRecordingPaths() {
|
|
664022
664144
|
const sessionId = getSessionId();
|
|
664023
|
-
const projectsDir =
|
|
664024
|
-
const projectDir =
|
|
664145
|
+
const projectsDir = join211(getURConfigHomeDir(), "projects");
|
|
664146
|
+
const projectDir = join211(projectsDir, sanitizePath2(getOriginalCwd()));
|
|
664025
664147
|
try {
|
|
664026
664148
|
const entries = getFsImplementation().readdirSync(projectDir);
|
|
664027
664149
|
const names = typeof entries[0] === "string" ? entries : entries.map((e) => e.name);
|
|
664028
664150
|
const files2 = names.filter((f) => f.startsWith(sessionId) && f.endsWith(".cast")).sort();
|
|
664029
|
-
return files2.map((f) =>
|
|
664151
|
+
return files2.map((f) => join211(projectDir, f));
|
|
664030
664152
|
} catch {
|
|
664031
664153
|
return [];
|
|
664032
664154
|
}
|
|
@@ -664036,9 +664158,9 @@ async function renameRecordingForSession() {
|
|
|
664036
664158
|
if (!oldPath || recordingState.timestamp === 0) {
|
|
664037
664159
|
return;
|
|
664038
664160
|
}
|
|
664039
|
-
const projectsDir =
|
|
664040
|
-
const projectDir =
|
|
664041
|
-
const newPath =
|
|
664161
|
+
const projectsDir = join211(getURConfigHomeDir(), "projects");
|
|
664162
|
+
const projectDir = join211(projectsDir, sanitizePath2(getOriginalCwd()));
|
|
664163
|
+
const newPath = join211(projectDir, `${getSessionId()}-${recordingState.timestamp}.cast`);
|
|
664042
664164
|
if (oldPath === newPath) {
|
|
664043
664165
|
return;
|
|
664044
664166
|
}
|
|
@@ -665643,7 +665765,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
665643
665765
|
} catch {}
|
|
665644
665766
|
const data = {
|
|
665645
665767
|
trigger: trigger2,
|
|
665646
|
-
version: "1.44.
|
|
665768
|
+
version: "1.44.9",
|
|
665647
665769
|
platform: process.platform,
|
|
665648
665770
|
transcript,
|
|
665649
665771
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -666915,7 +667037,7 @@ var init_useChromeExtensionNotification = __esm(() => {
|
|
|
666915
667037
|
});
|
|
666916
667038
|
|
|
666917
667039
|
// src/utils/plugins/officialMarketplaceStartupCheck.ts
|
|
666918
|
-
import { join as
|
|
667040
|
+
import { join as join212 } from "path";
|
|
666919
667041
|
function isOfficialMarketplaceAutoInstallDisabled() {
|
|
666920
667042
|
return isEnvTruthy(process.env.UR_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL);
|
|
666921
667043
|
}
|
|
@@ -666999,7 +667121,7 @@ async function checkAndInstallOfficialMarketplace() {
|
|
|
666999
667121
|
return { installed: false, skipped: true, reason: "policy_blocked" };
|
|
667000
667122
|
}
|
|
667001
667123
|
const cacheDir = getMarketplacesCacheDir();
|
|
667002
|
-
const installLocation =
|
|
667124
|
+
const installLocation = join212(cacheDir, OFFICIAL_MARKETPLACE_NAME);
|
|
667003
667125
|
const gcsSha = await fetchOfficialMarketplaceFromGcs(installLocation, cacheDir);
|
|
667004
667126
|
if (gcsSha !== null) {
|
|
667005
667127
|
const known = await loadKnownMarketplacesConfig();
|
|
@@ -669988,7 +670110,7 @@ var init_usePluginRecommendationBase = __esm(() => {
|
|
|
669988
670110
|
});
|
|
669989
670111
|
|
|
669990
670112
|
// src/hooks/useLspPluginRecommendation.tsx
|
|
669991
|
-
import { extname as extname23, join as
|
|
670113
|
+
import { extname as extname23, join as join213 } from "path";
|
|
669992
670114
|
function useLspPluginRecommendation() {
|
|
669993
670115
|
const $3 = import_compiler_runtime346.c(12);
|
|
669994
670116
|
const trackedFiles = useAppState(_temp206);
|
|
@@ -670073,7 +670195,7 @@ function useLspPluginRecommendation() {
|
|
|
670073
670195
|
case "yes": {
|
|
670074
670196
|
installPluginAndNotify(pluginId, pluginName, "lsp-plugin", addNotification, async (pluginData) => {
|
|
670075
670197
|
logForDebugging(`[useLspPluginRecommendation] Installing plugin: ${pluginId}`);
|
|
670076
|
-
const localSourcePath = typeof pluginData.entry.source === "string" ?
|
|
670198
|
+
const localSourcePath = typeof pluginData.entry.source === "string" ? join213(pluginData.marketplaceInstallLocation, pluginData.entry.source) : undefined;
|
|
670077
670199
|
await cacheAndRegisterPlugin(pluginId, pluginData.entry, "user", undefined, localSourcePath);
|
|
670078
670200
|
const settings = getSettingsForSource("userSettings");
|
|
670079
670201
|
updateSettingsForSource("userSettings", {
|
|
@@ -672904,7 +673026,7 @@ var exports_REPL = {};
|
|
|
672904
673026
|
__export(exports_REPL, {
|
|
672905
673027
|
REPL: () => REPL
|
|
672906
673028
|
});
|
|
672907
|
-
import { dirname as dirname74, join as
|
|
673029
|
+
import { dirname as dirname74, join as join214 } from "path";
|
|
672908
673030
|
import { tmpdir as tmpdir13 } from "os";
|
|
672909
673031
|
import { writeFile as writeFile47 } from "fs/promises";
|
|
672910
673032
|
import { randomUUID as randomUUID57 } from "crypto";
|
|
@@ -675476,7 +675598,7 @@ Note: ctrl + z now suspends UR, ctrl + _ undoes input.
|
|
|
675476
675598
|
const w = Math.max(80, (process.stdout.columns ?? 80) - 6);
|
|
675477
675599
|
const raw = await renderMessagesToPlainText(deferredMessages, tools, w);
|
|
675478
675600
|
const text = raw.replace(/[ \t]+$/gm, "");
|
|
675479
|
-
const path24 =
|
|
675601
|
+
const path24 = join214(tmpdir13(), `cc-transcript-${Date.now()}.txt`);
|
|
675480
675602
|
await writeFile47(path24, text);
|
|
675481
675603
|
const opened = openFileInExternalEditor(path24);
|
|
675482
675604
|
setStatus2(opened ? `opening ${path24}` : `wrote ${path24} \xB7 no $VISUAL/$EDITOR set`);
|
|
@@ -677528,7 +677650,7 @@ function WelcomeV2() {
|
|
|
677528
677650
|
dimColor: true,
|
|
677529
677651
|
children: [
|
|
677530
677652
|
"v",
|
|
677531
|
-
"1.44.
|
|
677653
|
+
"1.44.9"
|
|
677532
677654
|
]
|
|
677533
677655
|
}, undefined, true, undefined, this)
|
|
677534
677656
|
]
|
|
@@ -678788,7 +678910,7 @@ function completeOnboarding() {
|
|
|
678788
678910
|
saveGlobalConfig((current) => ({
|
|
678789
678911
|
...current,
|
|
678790
678912
|
hasCompletedOnboarding: true,
|
|
678791
|
-
lastOnboardingVersion: "1.44.
|
|
678913
|
+
lastOnboardingVersion: "1.44.9"
|
|
678792
678914
|
}));
|
|
678793
678915
|
}
|
|
678794
678916
|
function showDialog(root2, renderer) {
|
|
@@ -683779,12 +683901,12 @@ var init_createDirectConnectSession = __esm(() => {
|
|
|
683779
683901
|
});
|
|
683780
683902
|
|
|
683781
683903
|
// src/utils/errorLogSink.ts
|
|
683782
|
-
import { dirname as dirname76, join as
|
|
683904
|
+
import { dirname as dirname76, join as join215 } from "path";
|
|
683783
683905
|
function getErrorsPath() {
|
|
683784
|
-
return
|
|
683906
|
+
return join215(CACHE_PATHS.errors(), DATE + ".jsonl");
|
|
683785
683907
|
}
|
|
683786
683908
|
function getMCPLogsPath(serverName) {
|
|
683787
|
-
return
|
|
683909
|
+
return join215(CACHE_PATHS.mcpLogs(serverName), DATE + ".jsonl");
|
|
683788
683910
|
}
|
|
683789
683911
|
function createJsonlWriter(options2) {
|
|
683790
683912
|
const writer = createBufferedWriter(options2);
|
|
@@ -683828,7 +683950,7 @@ function appendToLog(path24, message) {
|
|
|
683828
683950
|
cwd: getFsImplementation().cwd(),
|
|
683829
683951
|
userType: process.env.USER_TYPE,
|
|
683830
683952
|
sessionId: getSessionId(),
|
|
683831
|
-
version: "1.44.
|
|
683953
|
+
version: "1.44.9"
|
|
683832
683954
|
};
|
|
683833
683955
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
683834
683956
|
}
|
|
@@ -684127,7 +684249,7 @@ var init_sessionMemory = __esm(() => {
|
|
|
684127
684249
|
// src/utils/iTermBackup.ts
|
|
684128
684250
|
import { copyFile as copyFile11, stat as stat49 } from "fs/promises";
|
|
684129
684251
|
import { homedir as homedir38 } from "os";
|
|
684130
|
-
import { join as
|
|
684252
|
+
import { join as join216 } from "path";
|
|
684131
684253
|
function markITerm2SetupComplete() {
|
|
684132
684254
|
saveGlobalConfig((current) => ({
|
|
684133
684255
|
...current,
|
|
@@ -684142,7 +684264,7 @@ function getIterm2RecoveryInfo() {
|
|
|
684142
684264
|
};
|
|
684143
684265
|
}
|
|
684144
684266
|
function getITerm2PlistPath() {
|
|
684145
|
-
return
|
|
684267
|
+
return join216(homedir38(), "Library", "Preferences", "com.googlecode.iterm2.plist");
|
|
684146
684268
|
}
|
|
684147
684269
|
async function checkAndRestoreITerm2Backup() {
|
|
684148
684270
|
const { inProgress, backupPath } = getIterm2RecoveryInfo();
|
|
@@ -687616,7 +687738,7 @@ var init_idleTimeout = __esm(() => {
|
|
|
687616
687738
|
// src/bridge/inboundAttachments.ts
|
|
687617
687739
|
import { randomUUID as randomUUID60 } from "crypto";
|
|
687618
687740
|
import { mkdir as mkdir45, writeFile as writeFile49 } from "fs/promises";
|
|
687619
|
-
import { basename as basename61, join as
|
|
687741
|
+
import { basename as basename61, join as join217 } from "path";
|
|
687620
687742
|
function debug(msg) {
|
|
687621
687743
|
logForDebugging(`[bridge:inbound-attach] ${msg}`);
|
|
687622
687744
|
}
|
|
@@ -687632,7 +687754,7 @@ function sanitizeFileName(name) {
|
|
|
687632
687754
|
return base2 || "attachment";
|
|
687633
687755
|
}
|
|
687634
687756
|
function uploadsDir() {
|
|
687635
|
-
return
|
|
687757
|
+
return join217(getURConfigHomeDir(), "uploads", getSessionId());
|
|
687636
687758
|
}
|
|
687637
687759
|
async function resolveOne(att) {
|
|
687638
687760
|
const token = getBridgeAccessToken();
|
|
@@ -687661,7 +687783,7 @@ async function resolveOne(att) {
|
|
|
687661
687783
|
const safeName = sanitizeFileName(att.file_name);
|
|
687662
687784
|
const prefix = (att.file_uuid.slice(0, 8) || randomUUID60().slice(0, 8)).replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
687663
687785
|
const dir = uploadsDir();
|
|
687664
|
-
const outPath =
|
|
687786
|
+
const outPath = join217(dir, `${prefix}-${safeName}`);
|
|
687665
687787
|
try {
|
|
687666
687788
|
await mkdir45(dir, { recursive: true });
|
|
687667
687789
|
await writeFile49(outPath, data);
|
|
@@ -687761,7 +687883,7 @@ var init_sessionUrl = __esm(() => {
|
|
|
687761
687883
|
|
|
687762
687884
|
// src/utils/plugins/zipCacheAdapters.ts
|
|
687763
687885
|
import { readFile as readFile54 } from "fs/promises";
|
|
687764
|
-
import { join as
|
|
687886
|
+
import { join as join218 } from "path";
|
|
687765
687887
|
async function readZipCacheKnownMarketplaces() {
|
|
687766
687888
|
try {
|
|
687767
687889
|
const content = await readFile54(getZipCacheKnownMarketplacesPath(), "utf-8");
|
|
@@ -687786,13 +687908,13 @@ async function saveMarketplaceJsonToZipCache(marketplaceName, installLocation) {
|
|
|
687786
687908
|
const content = await readMarketplaceJsonContent(installLocation);
|
|
687787
687909
|
if (content !== null) {
|
|
687788
687910
|
const relPath = getMarketplaceJsonRelativePath(marketplaceName);
|
|
687789
|
-
await atomicWriteToZipCache(
|
|
687911
|
+
await atomicWriteToZipCache(join218(zipCachePath, relPath), content);
|
|
687790
687912
|
}
|
|
687791
687913
|
}
|
|
687792
687914
|
async function readMarketplaceJsonContent(dir) {
|
|
687793
687915
|
const candidates2 = [
|
|
687794
|
-
|
|
687795
|
-
|
|
687916
|
+
join218(dir, ".ur-plugin", "marketplace.json"),
|
|
687917
|
+
join218(dir, "marketplace.json"),
|
|
687796
687918
|
dir
|
|
687797
687919
|
];
|
|
687798
687920
|
for (const candidate of candidates2) {
|
|
@@ -687922,8 +688044,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
687922
688044
|
}
|
|
687923
688045
|
async function checkEnvLessBridgeMinVersion() {
|
|
687924
688046
|
const cfg = await getEnvLessBridgeConfig();
|
|
687925
|
-
if (cfg.min_version && lt("1.44.
|
|
687926
|
-
return `Your version of UR (${"1.44.
|
|
688047
|
+
if (cfg.min_version && lt("1.44.9", cfg.min_version)) {
|
|
688048
|
+
return `Your version of UR (${"1.44.9"}) is too old for Remote Control.
|
|
687927
688049
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
687928
688050
|
}
|
|
687929
688051
|
return null;
|
|
@@ -688251,9 +688373,9 @@ __export(exports_bridgePointer, {
|
|
|
688251
688373
|
BRIDGE_POINTER_TTL_MS: () => BRIDGE_POINTER_TTL_MS
|
|
688252
688374
|
});
|
|
688253
688375
|
import { mkdir as mkdir46, readFile as readFile55, stat as stat50, unlink as unlink26, writeFile as writeFile50 } from "fs/promises";
|
|
688254
|
-
import { dirname as dirname77, join as
|
|
688376
|
+
import { dirname as dirname77, join as join219 } from "path";
|
|
688255
688377
|
function getBridgePointerPath(dir) {
|
|
688256
|
-
return
|
|
688378
|
+
return join219(getProjectsDir(), sanitizePath2(dir), "bridge-pointer.json");
|
|
688257
688379
|
}
|
|
688258
688380
|
async function writeBridgePointer(dir, pointer) {
|
|
688259
688381
|
const path24 = getBridgePointerPath(dir);
|
|
@@ -688397,7 +688519,7 @@ async function initBridgeCore(params) {
|
|
|
688397
688519
|
const rawApi = createBridgeApiClient({
|
|
688398
688520
|
baseUrl,
|
|
688399
688521
|
getAccessToken,
|
|
688400
|
-
runnerVersion: "1.44.
|
|
688522
|
+
runnerVersion: "1.44.9",
|
|
688401
688523
|
onDebug: logForDebugging,
|
|
688402
688524
|
onAuth401,
|
|
688403
688525
|
getTrustedDeviceToken
|
|
@@ -694079,7 +694201,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
|
|
|
694079
694201
|
setCwd(cwd3);
|
|
694080
694202
|
const server2 = new Server({
|
|
694081
694203
|
name: "ur/tengu",
|
|
694082
|
-
version: "1.44.
|
|
694204
|
+
version: "1.44.9"
|
|
694083
694205
|
}, {
|
|
694084
694206
|
capabilities: {
|
|
694085
694207
|
tools: {}
|
|
@@ -694211,14 +694333,14 @@ __export(exports_urDesktop, {
|
|
|
694211
694333
|
});
|
|
694212
694334
|
import { readdir as readdir33, readFile as readFile57, stat as stat52 } from "fs/promises";
|
|
694213
694335
|
import { homedir as homedir39 } from "os";
|
|
694214
|
-
import { join as
|
|
694336
|
+
import { join as join220 } from "path";
|
|
694215
694337
|
async function getURDesktopConfigPath() {
|
|
694216
694338
|
const platform7 = getPlatform();
|
|
694217
694339
|
if (!SUPPORTED_PLATFORMS.includes(platform7)) {
|
|
694218
694340
|
throw new Error(`Unsupported platform: ${platform7} - UR Desktop integration only works on macOS and WSL.`);
|
|
694219
694341
|
}
|
|
694220
694342
|
if (platform7 === "macos") {
|
|
694221
|
-
return
|
|
694343
|
+
return join220(homedir39(), "Library", "Application Support", "UR", "ur_desktop_config.json");
|
|
694222
694344
|
}
|
|
694223
694345
|
const windowsHome = process.env.USERPROFILE ? process.env.USERPROFILE.replace(/\\/g, "/") : null;
|
|
694224
694346
|
if (windowsHome) {
|
|
@@ -694237,7 +694359,7 @@ async function getURDesktopConfigPath() {
|
|
|
694237
694359
|
if (user.name === "Public" || user.name === "Default" || user.name === "Default User" || user.name === "All Users") {
|
|
694238
694360
|
continue;
|
|
694239
694361
|
}
|
|
694240
|
-
const potentialConfigPath =
|
|
694362
|
+
const potentialConfigPath = join220(usersDir, user.name, "AppData", "Roaming", "UR", "ur_desktop_config.json");
|
|
694241
694363
|
try {
|
|
694242
694364
|
await stat52(potentialConfigPath);
|
|
694243
694365
|
return potentialConfigPath;
|
|
@@ -694791,11 +694913,11 @@ var init_providers2 = __esm(() => {
|
|
|
694791
694913
|
});
|
|
694792
694914
|
|
|
694793
694915
|
// src/utils/plugins/pluginDoctor.ts
|
|
694794
|
-
import { existsSync as
|
|
694795
|
-
import { basename as basename62, join as
|
|
694916
|
+
import { existsSync as existsSync65, readdirSync as readdirSync26, readFileSync as readFileSync67, statSync as statSync16 } from "fs";
|
|
694917
|
+
import { basename as basename62, join as join221 } from "path";
|
|
694796
694918
|
function manifestPathFor(dir) {
|
|
694797
|
-
const p2 =
|
|
694798
|
-
return
|
|
694919
|
+
const p2 = join221(dir, ".ur-plugin", "plugin.json");
|
|
694920
|
+
return existsSync65(p2) ? p2 : null;
|
|
694799
694921
|
}
|
|
694800
694922
|
function discoverPluginDirs(roots) {
|
|
694801
694923
|
const dirs = [];
|
|
@@ -694807,7 +694929,7 @@ function discoverPluginDirs(roots) {
|
|
|
694807
694929
|
}
|
|
694808
694930
|
};
|
|
694809
694931
|
for (const root2 of roots) {
|
|
694810
|
-
if (!root2 || !
|
|
694932
|
+
if (!root2 || !existsSync65(root2))
|
|
694811
694933
|
continue;
|
|
694812
694934
|
if (manifestPathFor(root2)) {
|
|
694813
694935
|
add(root2);
|
|
@@ -694815,14 +694937,14 @@ function discoverPluginDirs(roots) {
|
|
|
694815
694937
|
}
|
|
694816
694938
|
let entries = [];
|
|
694817
694939
|
try {
|
|
694818
|
-
entries =
|
|
694940
|
+
entries = readdirSync26(root2);
|
|
694819
694941
|
} catch {
|
|
694820
694942
|
continue;
|
|
694821
694943
|
}
|
|
694822
694944
|
for (const entry of entries) {
|
|
694823
|
-
const full =
|
|
694945
|
+
const full = join221(root2, entry);
|
|
694824
694946
|
try {
|
|
694825
|
-
if (
|
|
694947
|
+
if (statSync16(full).isDirectory() && manifestPathFor(full))
|
|
694826
694948
|
add(full);
|
|
694827
694949
|
} catch {}
|
|
694828
694950
|
}
|
|
@@ -694846,7 +694968,7 @@ function doctorPluginDir(dir) {
|
|
|
694846
694968
|
}
|
|
694847
694969
|
let parsed;
|
|
694848
694970
|
try {
|
|
694849
|
-
parsed = JSON.parse(
|
|
694971
|
+
parsed = JSON.parse(readFileSync67(manifestPath5, "utf8"));
|
|
694850
694972
|
} catch (error40) {
|
|
694851
694973
|
return {
|
|
694852
694974
|
name: basename62(dir),
|
|
@@ -694951,7 +695073,7 @@ __export(exports_plugins, {
|
|
|
694951
695073
|
VALID_UPDATE_SCOPES: () => VALID_UPDATE_SCOPES,
|
|
694952
695074
|
VALID_INSTALLABLE_SCOPES: () => VALID_INSTALLABLE_SCOPES
|
|
694953
695075
|
});
|
|
694954
|
-
import { basename as basename63, dirname as dirname79, join as
|
|
695076
|
+
import { basename as basename63, dirname as dirname79, join as join222, resolve as resolve52 } from "path";
|
|
694955
695077
|
function handleMarketplaceError(error40, action3) {
|
|
694956
695078
|
logError2(error40);
|
|
694957
695079
|
cliError(`${figures_default.cross} Failed to ${action3}: ${errorMessage2(error40)}`);
|
|
@@ -694978,7 +695100,7 @@ async function pluginDoctorHandler(options2) {
|
|
|
694978
695100
|
const roots = [];
|
|
694979
695101
|
if (options2.path)
|
|
694980
695102
|
roots.push(resolve52(options2.path));
|
|
694981
|
-
roots.push(
|
|
695103
|
+
roots.push(join222(process.cwd(), ".ur", "plugins"));
|
|
694982
695104
|
try {
|
|
694983
695105
|
const data = loadInstalledPluginsV2();
|
|
694984
695106
|
for (const installations of Object.values(data.plugins ?? {})) {
|
|
@@ -695485,12 +695607,12 @@ __export(exports_install, {
|
|
|
695485
695607
|
install: () => install
|
|
695486
695608
|
});
|
|
695487
695609
|
import { homedir as homedir40 } from "os";
|
|
695488
|
-
import { join as
|
|
695610
|
+
import { join as join223 } from "path";
|
|
695489
695611
|
function getInstallationPath2() {
|
|
695490
695612
|
const isWindows2 = env2.platform === "win32";
|
|
695491
695613
|
const homeDir = homedir40();
|
|
695492
695614
|
if (isWindows2) {
|
|
695493
|
-
const windowsPath =
|
|
695615
|
+
const windowsPath = join223(homeDir, ".local", "bin", "ur.exe");
|
|
695494
695616
|
return windowsPath.replace(/\//g, "\\");
|
|
695495
695617
|
}
|
|
695496
695618
|
return "~/.local/bin/ur";
|
|
@@ -696121,7 +696243,7 @@ async function update() {
|
|
|
696121
696243
|
logEvent("tengu_update_check", {});
|
|
696122
696244
|
const diagnostic = await getDoctorDiagnostic();
|
|
696123
696245
|
const result = await checkUpgradeStatus({
|
|
696124
|
-
currentVersion: "1.44.
|
|
696246
|
+
currentVersion: "1.44.9",
|
|
696125
696247
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
696126
696248
|
installationType: diagnostic.installationType,
|
|
696127
696249
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -696148,7 +696270,7 @@ __export(exports_main, {
|
|
|
696148
696270
|
startDeferredPrefetches: () => startDeferredPrefetches,
|
|
696149
696271
|
main: () => main
|
|
696150
696272
|
});
|
|
696151
|
-
import { readFileSync as
|
|
696273
|
+
import { readFileSync as readFileSync68 } from "fs";
|
|
696152
696274
|
import { resolve as resolve53 } from "path";
|
|
696153
696275
|
function logManagedSettings() {
|
|
696154
696276
|
try {
|
|
@@ -696304,7 +696426,7 @@ function loadSettingsFromFlag(settingsFile) {
|
|
|
696304
696426
|
resolvedPath: resolvedSettingsPath
|
|
696305
696427
|
} = safeResolvePath(getFsImplementation(), settingsFile);
|
|
696306
696428
|
try {
|
|
696307
|
-
|
|
696429
|
+
readFileSync68(resolvedSettingsPath, "utf8");
|
|
696308
696430
|
} catch (e) {
|
|
696309
696431
|
if (isENOENT(e)) {
|
|
696310
696432
|
process.stderr.write(source_default.red(`Error: Settings file not found: ${resolvedSettingsPath}
|
|
@@ -696718,7 +696840,7 @@ ${getTmuxInstallInstructions2()}
|
|
|
696718
696840
|
}
|
|
696719
696841
|
try {
|
|
696720
696842
|
const filePath = resolve53(options2.systemPromptFile);
|
|
696721
|
-
systemPrompt =
|
|
696843
|
+
systemPrompt = readFileSync68(filePath, "utf8");
|
|
696722
696844
|
} catch (error40) {
|
|
696723
696845
|
const code = getErrnoCode(error40);
|
|
696724
696846
|
if (code === "ENOENT") {
|
|
@@ -696740,7 +696862,7 @@ ${getTmuxInstallInstructions2()}
|
|
|
696740
696862
|
}
|
|
696741
696863
|
try {
|
|
696742
696864
|
const filePath = resolve53(options2.appendSystemPromptFile);
|
|
696743
|
-
appendSystemPrompt =
|
|
696865
|
+
appendSystemPrompt = readFileSync68(filePath, "utf8");
|
|
696744
696866
|
} catch (error40) {
|
|
696745
696867
|
const code = getErrnoCode(error40);
|
|
696746
696868
|
if (code === "ENOENT") {
|
|
@@ -697367,7 +697489,7 @@ ${customInstructions}` : customInstructions;
|
|
|
697367
697489
|
}
|
|
697368
697490
|
}
|
|
697369
697491
|
logForDiagnosticsNoPII("info", "started", {
|
|
697370
|
-
version: "1.44.
|
|
697492
|
+
version: "1.44.9",
|
|
697371
697493
|
is_native_binary: isInBundledMode()
|
|
697372
697494
|
});
|
|
697373
697495
|
registerCleanup(async () => {
|
|
@@ -698153,7 +698275,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
698153
698275
|
pendingHookMessages
|
|
698154
698276
|
}, renderAndRun);
|
|
698155
698277
|
}
|
|
698156
|
-
}).version("1.44.
|
|
698278
|
+
}).version("1.44.9 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
698157
698279
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
698158
698280
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
698159
698281
|
if (canUserConfigureAdvisor()) {
|
|
@@ -699068,7 +699190,7 @@ if (false) {}
|
|
|
699068
699190
|
async function main2() {
|
|
699069
699191
|
const args = process.argv.slice(2);
|
|
699070
699192
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
699071
|
-
console.log(`${"1.44.
|
|
699193
|
+
console.log(`${"1.44.9"} (UR-Nexus)`);
|
|
699072
699194
|
return;
|
|
699073
699195
|
}
|
|
699074
699196
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|