ur-agent 1.44.7 → 1.44.8
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 +10 -0
- package/README.md +4 -0
- package/dist/cli.js +220 -79
- package/docs/CONFIGURATION.md +9 -0
- package/documentation/index.html +1 -1
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.44.8
|
|
4
|
+
|
|
5
|
+
- Keep auto-memory and automatic learning on by default with explicit opt-outs.
|
|
6
|
+
Automatic learning can now be disabled with `automaticLearningEnabled: false`
|
|
7
|
+
or `UR_CODE_DISABLE_AUTO_LEARNING=1`.
|
|
8
|
+
- Make `/remember <text>` promote explicit notes into recallable auto-memory
|
|
9
|
+
topic files when auto-memory is enabled.
|
|
10
|
+
- Reduce recall token load by prefiltering memory candidates before the
|
|
11
|
+
selector model and surfacing fewer, smaller high-confidence memories.
|
|
12
|
+
|
|
3
13
|
## 1.44.7
|
|
4
14
|
|
|
5
15
|
- Add `autoApprove` permission mode for command/tool approval prompts. It
|
package/README.md
CHANGED
|
@@ -638,6 +638,10 @@ the permission boundary matters.
|
|
|
638
638
|
rules.
|
|
639
639
|
- `ur context-pack scan` writes a repo architecture manifest from package
|
|
640
640
|
scripts, instruction files, `.ur/verify.json`, and safety config.
|
|
641
|
+
- Auto-memory and automatic learning are enabled by default. Auto-memory can be
|
|
642
|
+
disabled with `autoMemoryEnabled: false`; automatic learning can be disabled
|
|
643
|
+
with `automaticLearningEnabled: false`. The automatic learning path writes
|
|
644
|
+
local JSON stats only and uses no model tokens.
|
|
641
645
|
- The deep verification subagent is available through `/verify` and can be
|
|
642
646
|
auto-enabled with `UR_VERIFIER_AUTO_SUBAGENT=1`.
|
|
643
647
|
- UR enforces permission and sandbox policy before running UR Bash/File
|
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.8"}`;
|
|
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.8"} (${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.8"}${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.8",
|
|
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.8".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.8",
|
|
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.8"
|
|
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.8");
|
|
78870
78870
|
}
|
|
78871
78871
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
78872
78872
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -81501,6 +81501,7 @@ var init_types2 = __esm(() => {
|
|
|
81501
81501
|
autoMemoryEnabled: exports_external.boolean().optional().describe("Enable auto-memory for this project. When false, UR will not read from or write to the auto-memory directory."),
|
|
81502
81502
|
autoMemoryDirectory: exports_external.string().optional().describe("Custom directory path for auto-memory storage. Supports ~/ prefix for home directory expansion. Ignored if set in projectSettings (checked-in .ur/settings.json) for security. When unset, defaults to ~/.ur/projects/<sanitized-cwd>/memory/."),
|
|
81503
81503
|
autoMemoryExtractionInterval: exports_external.number().int().min(1).optional().describe("Run the auto-memory extraction agent only every N eligible turns (default 1 = every turn). The extraction is a forked agent call on the session model, so raising this trades memory freshness for lower token/compute usage."),
|
|
81504
|
+
automaticLearningEnabled: exports_external.boolean().optional().describe("Enable automatic learning from completed ci-loop, arena, escalation, and test-first outcomes. Default: true. The automatic path is a local JSON fold and uses no model calls."),
|
|
81504
81505
|
verifier: exports_external.object({
|
|
81505
81506
|
askBeforeGates: exports_external.boolean().optional().describe("When true, UR asks whether to run project verification commands (tests, typecheck, lint) after a task instead of running them automatically. Default: false.")
|
|
81506
81507
|
}).optional().describe("Verifier behavior configuration"),
|
|
@@ -83404,7 +83405,16 @@ function saveStats(cwd2, stats) {
|
|
|
83404
83405
|
writeFileSync6(statsPath(cwd2), `${JSON.stringify(stats, null, 2)}
|
|
83405
83406
|
`);
|
|
83406
83407
|
}
|
|
83408
|
+
function isAutomaticLearningEnabled() {
|
|
83409
|
+
if (isEnvTruthy(process.env.UR_CODE_DISABLE_AUTO_LEARNING)) {
|
|
83410
|
+
return false;
|
|
83411
|
+
}
|
|
83412
|
+
return getInitialSettings().automaticLearningEnabled !== false;
|
|
83413
|
+
}
|
|
83407
83414
|
function recordOutcome(cwd2, input) {
|
|
83415
|
+
if (!isAutomaticLearningEnabled()) {
|
|
83416
|
+
return;
|
|
83417
|
+
}
|
|
83408
83418
|
try {
|
|
83409
83419
|
saveStats(cwd2, foldOutcomes(loadStats(cwd2), [outcomeFromRun(input)]));
|
|
83410
83420
|
} catch {}
|
|
@@ -83504,7 +83514,9 @@ function formatLearnResult(result, json2) {
|
|
|
83504
83514
|
}
|
|
83505
83515
|
var TEST_PASS_RE, TEST_FAIL_RE;
|
|
83506
83516
|
var init_learning = __esm(() => {
|
|
83517
|
+
init_envUtils();
|
|
83507
83518
|
init_json();
|
|
83519
|
+
init_settings2();
|
|
83508
83520
|
init_artifacts();
|
|
83509
83521
|
init_headlessAgent();
|
|
83510
83522
|
init_intentRouter();
|
|
@@ -84761,7 +84773,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
|
|
|
84761
84773
|
function formatA2AAgentCard(options = {}, pretty = true) {
|
|
84762
84774
|
return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
|
|
84763
84775
|
}
|
|
84764
|
-
var urVersion = "1.44.
|
|
84776
|
+
var urVersion = "1.44.8", coverage, priorityRoadmap;
|
|
84765
84777
|
var init_trends = __esm(() => {
|
|
84766
84778
|
coverage = [
|
|
84767
84779
|
{
|
|
@@ -86756,7 +86768,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
86756
86768
|
if (!isAttributionHeaderEnabled()) {
|
|
86757
86769
|
return "";
|
|
86758
86770
|
}
|
|
86759
|
-
const version2 = `${"1.44.
|
|
86771
|
+
const version2 = `${"1.44.8"}.${fingerprint}`;
|
|
86760
86772
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
86761
86773
|
const cch = "";
|
|
86762
86774
|
const workload = getWorkload();
|
|
@@ -194726,7 +194738,7 @@ function getTelemetryAttributes() {
|
|
|
194726
194738
|
attributes["session.id"] = sessionId;
|
|
194727
194739
|
}
|
|
194728
194740
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
194729
|
-
attributes["app.version"] = "1.44.
|
|
194741
|
+
attributes["app.version"] = "1.44.8";
|
|
194730
194742
|
}
|
|
194731
194743
|
const oauthAccount = getOauthAccountInfo();
|
|
194732
194744
|
if (oauthAccount) {
|
|
@@ -230114,7 +230126,7 @@ function getInstallationEnv() {
|
|
|
230114
230126
|
return;
|
|
230115
230127
|
}
|
|
230116
230128
|
function getURCodeVersion() {
|
|
230117
|
-
return "1.44.
|
|
230129
|
+
return "1.44.8";
|
|
230118
230130
|
}
|
|
230119
230131
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
230120
230132
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -232953,7 +232965,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
232953
232965
|
const client2 = new Client({
|
|
232954
232966
|
name: "ur",
|
|
232955
232967
|
title: "UR",
|
|
232956
|
-
version: "1.44.
|
|
232968
|
+
version: "1.44.8",
|
|
232957
232969
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
232958
232970
|
websiteUrl: PRODUCT_URL
|
|
232959
232971
|
}, {
|
|
@@ -233307,7 +233319,7 @@ var init_client5 = __esm(() => {
|
|
|
233307
233319
|
const client2 = new Client({
|
|
233308
233320
|
name: "ur",
|
|
233309
233321
|
title: "UR",
|
|
233310
|
-
version: "1.44.
|
|
233322
|
+
version: "1.44.8",
|
|
233311
233323
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
233312
233324
|
websiteUrl: PRODUCT_URL
|
|
233313
233325
|
}, {
|
|
@@ -243121,9 +243133,9 @@ async function assertMinVersion() {
|
|
|
243121
243133
|
if (false) {}
|
|
243122
243134
|
try {
|
|
243123
243135
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
243124
|
-
if (versionConfig.minVersion && lt("1.44.
|
|
243136
|
+
if (versionConfig.minVersion && lt("1.44.8", versionConfig.minVersion)) {
|
|
243125
243137
|
console.error(`
|
|
243126
|
-
It looks like your version of UR (${"1.44.
|
|
243138
|
+
It looks like your version of UR (${"1.44.8"}) needs an update.
|
|
243127
243139
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
243128
243140
|
|
|
243129
243141
|
To update, please run:
|
|
@@ -243339,7 +243351,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
243339
243351
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
243340
243352
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
243341
243353
|
pid: process.pid,
|
|
243342
|
-
currentVersion: "1.44.
|
|
243354
|
+
currentVersion: "1.44.8"
|
|
243343
243355
|
});
|
|
243344
243356
|
return "in_progress";
|
|
243345
243357
|
}
|
|
@@ -243348,7 +243360,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
243348
243360
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
243349
243361
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
243350
243362
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
243351
|
-
currentVersion: "1.44.
|
|
243363
|
+
currentVersion: "1.44.8"
|
|
243352
243364
|
});
|
|
243353
243365
|
console.error(`
|
|
243354
243366
|
Error: Windows NPM detected in WSL
|
|
@@ -243883,7 +243895,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
243883
243895
|
}
|
|
243884
243896
|
async function getDoctorDiagnostic() {
|
|
243885
243897
|
const installationType = await getCurrentInstallationType();
|
|
243886
|
-
const version2 = typeof MACRO !== "undefined" ? "1.44.
|
|
243898
|
+
const version2 = typeof MACRO !== "undefined" ? "1.44.8" : "unknown";
|
|
243887
243899
|
const installationPath = await getInstallationPath();
|
|
243888
243900
|
const invokedBinary = getInvokedBinary();
|
|
243889
243901
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -244818,8 +244830,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
244818
244830
|
const maxVersion = await getMaxVersion();
|
|
244819
244831
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
244820
244832
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
244821
|
-
if (gte("1.44.
|
|
244822
|
-
logForDebugging(`Native installer: current version ${"1.44.
|
|
244833
|
+
if (gte("1.44.8", maxVersion)) {
|
|
244834
|
+
logForDebugging(`Native installer: current version ${"1.44.8"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
244823
244835
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
244824
244836
|
latency_ms: Date.now() - startTime,
|
|
244825
244837
|
max_version: maxVersion,
|
|
@@ -244830,7 +244842,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
244830
244842
|
version2 = maxVersion;
|
|
244831
244843
|
}
|
|
244832
244844
|
}
|
|
244833
|
-
if (!forceReinstall && version2 === "1.44.
|
|
244845
|
+
if (!forceReinstall && version2 === "1.44.8" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
244834
244846
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
244835
244847
|
logEvent("tengu_native_update_complete", {
|
|
244836
244848
|
latency_ms: Date.now() - startTime,
|
|
@@ -302327,6 +302339,11 @@ var init_supportedSettings = __esm(() => {
|
|
|
302327
302339
|
type: "boolean",
|
|
302328
302340
|
description: "Enable auto-memory"
|
|
302329
302341
|
},
|
|
302342
|
+
automaticLearningEnabled: {
|
|
302343
|
+
source: "settings",
|
|
302344
|
+
type: "boolean",
|
|
302345
|
+
description: "Automatically learn from completed agent runs using local JSON stats"
|
|
302346
|
+
},
|
|
302330
302347
|
"codeIndex.autoReindex": {
|
|
302331
302348
|
source: "global",
|
|
302332
302349
|
type: "boolean",
|
|
@@ -323429,16 +323446,44 @@ function isHumanTurn(m) {
|
|
|
323429
323446
|
}
|
|
323430
323447
|
|
|
323431
323448
|
// src/memdir/findRelevantMemories.ts
|
|
323449
|
+
function tokenizeForMemoryRecall(text) {
|
|
323450
|
+
const terms = new Set;
|
|
323451
|
+
for (const raw of text.toLowerCase().match(/[a-z0-9][a-z0-9._/-]{2,}/g) ?? []) {
|
|
323452
|
+
const term = raw.replace(/^[/._-]+|[/._-]+$/g, "");
|
|
323453
|
+
if (term.length >= 3 && !STOP_WORDS.has(term)) {
|
|
323454
|
+
terms.add(term);
|
|
323455
|
+
}
|
|
323456
|
+
}
|
|
323457
|
+
return terms;
|
|
323458
|
+
}
|
|
323459
|
+
function scoreMemoryForQuery(queryTerms, memory) {
|
|
323460
|
+
const haystack = `${memory.filename} ${memory.description ?? ""} ${memory.type ?? ""}`.toLowerCase();
|
|
323461
|
+
let score = 0;
|
|
323462
|
+
for (const term of queryTerms) {
|
|
323463
|
+
if (haystack.includes(term)) {
|
|
323464
|
+
score += memory.filename.toLowerCase().includes(term) ? 3 : 1;
|
|
323465
|
+
}
|
|
323466
|
+
}
|
|
323467
|
+
return score;
|
|
323468
|
+
}
|
|
323432
323469
|
async function findRelevantMemories(query2, memoryDir, signal, recentTools = [], alreadySurfaced = new Set) {
|
|
323433
323470
|
const memories = (await scanMemoryFiles(memoryDir, signal)).filter((m) => !alreadySurfaced.has(m.filePath));
|
|
323434
323471
|
if (memories.length === 0) {
|
|
323435
323472
|
return [];
|
|
323436
323473
|
}
|
|
323437
|
-
const
|
|
323438
|
-
|
|
323474
|
+
const queryTerms = tokenizeForMemoryRecall(query2);
|
|
323475
|
+
if (queryTerms.size === 0) {
|
|
323476
|
+
return [];
|
|
323477
|
+
}
|
|
323478
|
+
const candidates2 = memories.map((memory) => ({ memory, score: scoreMemoryForQuery(queryTerms, memory) })).filter(({ score }) => score > 0).sort((a2, b) => b.score - a2.score || b.memory.mtimeMs - a2.memory.mtimeMs).slice(0, MAX_SELECTOR_CANDIDATES).map(({ memory }) => memory);
|
|
323479
|
+
if (candidates2.length === 0) {
|
|
323480
|
+
return [];
|
|
323481
|
+
}
|
|
323482
|
+
const selectedFilenames = await selectRelevantMemories(query2, candidates2, signal, recentTools);
|
|
323483
|
+
const byFilename = new Map(candidates2.map((m) => [m.filename, m]));
|
|
323439
323484
|
const selected = selectedFilenames.map((filename) => byFilename.get(filename)).filter((m) => m !== undefined);
|
|
323440
323485
|
if (false) {}
|
|
323441
|
-
return selected.map((m) => ({ path: m.filePath, mtimeMs: m.mtimeMs }));
|
|
323486
|
+
return selected.slice(0, 3).map((m) => ({ path: m.filePath, mtimeMs: m.mtimeMs }));
|
|
323442
323487
|
}
|
|
323443
323488
|
async function selectRelevantMemories(query2, memories, signal, recentTools) {
|
|
323444
323489
|
const validFilenames = new Set(memories.map((m) => m.filename));
|
|
@@ -323491,11 +323536,11 @@ ${manifest}${toolsSection}`
|
|
|
323491
323536
|
}
|
|
323492
323537
|
var SELECT_MEMORIES_SYSTEM_PROMPT = `You are selecting memories that will be useful to UR as it processes a user's query. You will be given the user's query and a list of available memory files with their filenames and descriptions.
|
|
323493
323538
|
|
|
323494
|
-
Return a list of filenames for the memories that will clearly be useful to UR as it processes the user's query (up to
|
|
323539
|
+
Return a list of filenames for the memories that will clearly be useful to UR as it processes the user's query (up to 3). Only include memories that you are certain will be helpful based on their name and description.
|
|
323495
323540
|
- If you are unsure if a memory will be useful in processing the user's query, then do not include it in your list. Be selective and discerning.
|
|
323496
323541
|
- If there are no memories in the list that would clearly be useful, feel free to return an empty list.
|
|
323497
323542
|
- If a list of recently-used tools is provided, do not select memories that are usage reference or API documentation for those tools (UR is already exercising them). DO still select memories containing warnings, gotchas, or known issues about those tools \u2014 active use is exactly when those matter.
|
|
323498
|
-
|
|
323543
|
+
`, MAX_SELECTOR_CANDIDATES = 40, STOP_WORDS;
|
|
323499
323544
|
var init_findRelevantMemories = __esm(() => {
|
|
323500
323545
|
init_debug();
|
|
323501
323546
|
init_errors();
|
|
@@ -323503,6 +323548,45 @@ var init_findRelevantMemories = __esm(() => {
|
|
|
323503
323548
|
init_sideQuery();
|
|
323504
323549
|
init_slowOperations();
|
|
323505
323550
|
init_memoryScan();
|
|
323551
|
+
STOP_WORDS = new Set([
|
|
323552
|
+
"a",
|
|
323553
|
+
"about",
|
|
323554
|
+
"an",
|
|
323555
|
+
"and",
|
|
323556
|
+
"are",
|
|
323557
|
+
"as",
|
|
323558
|
+
"at",
|
|
323559
|
+
"be",
|
|
323560
|
+
"but",
|
|
323561
|
+
"by",
|
|
323562
|
+
"can",
|
|
323563
|
+
"do",
|
|
323564
|
+
"for",
|
|
323565
|
+
"from",
|
|
323566
|
+
"how",
|
|
323567
|
+
"i",
|
|
323568
|
+
"in",
|
|
323569
|
+
"is",
|
|
323570
|
+
"it",
|
|
323571
|
+
"me",
|
|
323572
|
+
"my",
|
|
323573
|
+
"of",
|
|
323574
|
+
"on",
|
|
323575
|
+
"or",
|
|
323576
|
+
"our",
|
|
323577
|
+
"please",
|
|
323578
|
+
"should",
|
|
323579
|
+
"that",
|
|
323580
|
+
"the",
|
|
323581
|
+
"this",
|
|
323582
|
+
"to",
|
|
323583
|
+
"use",
|
|
323584
|
+
"we",
|
|
323585
|
+
"what",
|
|
323586
|
+
"when",
|
|
323587
|
+
"with",
|
|
323588
|
+
"you"
|
|
323589
|
+
]);
|
|
323506
323590
|
});
|
|
323507
323591
|
|
|
323508
323592
|
// src/utils/attachments.ts
|
|
@@ -324186,7 +324270,7 @@ async function getRelevantMemoryAttachments(input, agents, readFileState, recent
|
|
|
324186
324270
|
});
|
|
324187
324271
|
const dirs = memoryDirs.length > 0 ? memoryDirs : [getAutoMemPath()];
|
|
324188
324272
|
const allResults = await Promise.all(dirs.map((dir) => findRelevantMemories(input, dir, signal, recentTools, alreadySurfaced).catch(() => [])));
|
|
324189
|
-
const selected = allResults.flat().filter((m) => !readFileState.has(m.path) && !alreadySurfaced.has(m.path)).slice(0,
|
|
324273
|
+
const selected = allResults.flat().filter((m) => !readFileState.has(m.path) && !alreadySurfaced.has(m.path)).slice(0, 3);
|
|
324190
324274
|
const memories = await readMemoriesForSurfacing(selected, signal);
|
|
324191
324275
|
if (memories.length === 0) {
|
|
324192
324276
|
return [];
|
|
@@ -325055,7 +325139,7 @@ function isFileReadDenied(filePath, toolPermissionContext) {
|
|
|
325055
325139
|
const denyRule = matchingRuleForInput(filePath, toolPermissionContext, "read", "deny");
|
|
325056
325140
|
return denyRule !== null;
|
|
325057
325141
|
}
|
|
325058
|
-
var BRIEF_TOOL_NAME3 = null, TODO_REMINDER_CONFIG, PLAN_MODE_ATTACHMENT_CONFIG, MAX_MEMORY_LINES =
|
|
325142
|
+
var BRIEF_TOOL_NAME3 = null, TODO_REMINDER_CONFIG, PLAN_MODE_ATTACHMENT_CONFIG, MAX_MEMORY_LINES = 120, MAX_MEMORY_BYTES = 2048, RELEVANT_MEMORIES_CONFIG, VERIFY_PLAN_REMINDER_CONFIG, INLINE_NOTIFICATION_MODES, sentSkillNames, suppressNext = false;
|
|
325059
325143
|
var init_attachments2 = __esm(() => {
|
|
325060
325144
|
init_analytics();
|
|
325061
325145
|
init_Tool();
|
|
@@ -325136,7 +325220,7 @@ var init_attachments2 = __esm(() => {
|
|
|
325136
325220
|
FULL_REMINDER_EVERY_N_ATTACHMENTS: 5
|
|
325137
325221
|
};
|
|
325138
325222
|
RELEVANT_MEMORIES_CONFIG = {
|
|
325139
|
-
MAX_SESSION_BYTES:
|
|
325223
|
+
MAX_SESSION_BYTES: 24 * 1024
|
|
325140
325224
|
};
|
|
325141
325225
|
VERIFY_PLAN_REMINDER_CONFIG = {
|
|
325142
325226
|
TURNS_BETWEEN_REMINDERS: 10
|
|
@@ -341523,7 +341607,7 @@ function Feedback({
|
|
|
341523
341607
|
platform: env2.platform,
|
|
341524
341608
|
gitRepo: envInfo.isGit,
|
|
341525
341609
|
terminal: env2.terminal,
|
|
341526
|
-
version: "1.44.
|
|
341610
|
+
version: "1.44.8",
|
|
341527
341611
|
transcript: normalizeMessagesForAPI(messages),
|
|
341528
341612
|
errors: sanitizedErrors,
|
|
341529
341613
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -341715,7 +341799,7 @@ function Feedback({
|
|
|
341715
341799
|
", ",
|
|
341716
341800
|
env2.terminal,
|
|
341717
341801
|
", v",
|
|
341718
|
-
"1.44.
|
|
341802
|
+
"1.44.8"
|
|
341719
341803
|
]
|
|
341720
341804
|
}, undefined, true, undefined, this)
|
|
341721
341805
|
]
|
|
@@ -341821,7 +341905,7 @@ ${sanitizedDescription}
|
|
|
341821
341905
|
` + `**Environment Info**
|
|
341822
341906
|
` + `- Platform: ${env2.platform}
|
|
341823
341907
|
` + `- Terminal: ${env2.terminal}
|
|
341824
|
-
` + `- Version: ${"1.44.
|
|
341908
|
+
` + `- Version: ${"1.44.8"}
|
|
341825
341909
|
` + `- Feedback ID: ${feedbackId}
|
|
341826
341910
|
` + `
|
|
341827
341911
|
**Errors**
|
|
@@ -344932,7 +345016,7 @@ function buildPrimarySection() {
|
|
|
344932
345016
|
}, undefined, false, undefined, this);
|
|
344933
345017
|
return [{
|
|
344934
345018
|
label: "Version",
|
|
344935
|
-
value: "1.44.
|
|
345019
|
+
value: "1.44.8"
|
|
344936
345020
|
}, {
|
|
344937
345021
|
label: "Session name",
|
|
344938
345022
|
value: nameValue
|
|
@@ -348262,7 +348346,7 @@ function Config({
|
|
|
348262
348346
|
}
|
|
348263
348347
|
}, undefined, false, undefined, this)
|
|
348264
348348
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime176.jsxDEV(ChannelDowngradeDialog, {
|
|
348265
|
-
currentVersion: "1.44.
|
|
348349
|
+
currentVersion: "1.44.8",
|
|
348266
348350
|
onChoice: (choice) => {
|
|
348267
348351
|
setShowSubmenu(null);
|
|
348268
348352
|
setTabsHidden(false);
|
|
@@ -348274,7 +348358,7 @@ function Config({
|
|
|
348274
348358
|
autoUpdatesChannel: "stable"
|
|
348275
348359
|
};
|
|
348276
348360
|
if (choice === "stay") {
|
|
348277
|
-
newSettings.minimumVersion = "1.44.
|
|
348361
|
+
newSettings.minimumVersion = "1.44.8";
|
|
348278
348362
|
}
|
|
348279
348363
|
updateSettingsForSource("userSettings", newSettings);
|
|
348280
348364
|
setSettingsData((prev_27) => ({
|
|
@@ -356344,7 +356428,7 @@ function HelpV2(t0) {
|
|
|
356344
356428
|
let t6;
|
|
356345
356429
|
if ($3[31] !== tabs) {
|
|
356346
356430
|
t6 = /* @__PURE__ */ jsx_dev_runtime203.jsxDEV(Tabs, {
|
|
356347
|
-
title: `UR v${"1.44.
|
|
356431
|
+
title: `UR v${"1.44.8"}`,
|
|
356348
356432
|
color: "professionalBlue",
|
|
356349
356433
|
defaultTab: "general",
|
|
356350
356434
|
children: tabs
|
|
@@ -357090,7 +357174,7 @@ function buildToolUseContext(tools, readFileStateCache) {
|
|
|
357090
357174
|
async function handleInitialize(options2) {
|
|
357091
357175
|
return {
|
|
357092
357176
|
name: "UR",
|
|
357093
|
-
version: "1.44.
|
|
357177
|
+
version: "1.44.8",
|
|
357094
357178
|
protocolVersion: "0.1.0",
|
|
357095
357179
|
workspaceRoot: options2.cwd,
|
|
357096
357180
|
capabilities: {
|
|
@@ -377232,7 +377316,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
377232
377316
|
return [];
|
|
377233
377317
|
}
|
|
377234
377318
|
}
|
|
377235
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.44.
|
|
377319
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.44.8") {
|
|
377236
377320
|
if (process.env.USER_TYPE === "ant") {
|
|
377237
377321
|
const changelog = "";
|
|
377238
377322
|
if (changelog) {
|
|
@@ -377259,7 +377343,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.44.7")
|
|
|
377259
377343
|
releaseNotes
|
|
377260
377344
|
};
|
|
377261
377345
|
}
|
|
377262
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.44.
|
|
377346
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.44.8") {
|
|
377263
377347
|
if (process.env.USER_TYPE === "ant") {
|
|
377264
377348
|
const changelog = "";
|
|
377265
377349
|
if (changelog) {
|
|
@@ -378438,7 +378522,7 @@ function getRecentActivitySync() {
|
|
|
378438
378522
|
return cachedActivity;
|
|
378439
378523
|
}
|
|
378440
378524
|
function getLogoDisplayData() {
|
|
378441
|
-
const version2 = process.env.DEMO_VERSION ?? "1.44.
|
|
378525
|
+
const version2 = process.env.DEMO_VERSION ?? "1.44.8";
|
|
378442
378526
|
const serverUrl = getDirectConnectServerUrl();
|
|
378443
378527
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
378444
378528
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -379227,7 +379311,7 @@ function LogoV2() {
|
|
|
379227
379311
|
if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
379228
379312
|
t2 = () => {
|
|
379229
379313
|
const currentConfig2 = getGlobalConfig();
|
|
379230
|
-
if (currentConfig2.lastReleaseNotesSeen === "1.44.
|
|
379314
|
+
if (currentConfig2.lastReleaseNotesSeen === "1.44.8") {
|
|
379231
379315
|
return;
|
|
379232
379316
|
}
|
|
379233
379317
|
saveGlobalConfig(_temp326);
|
|
@@ -379912,12 +379996,12 @@ function LogoV2() {
|
|
|
379912
379996
|
return t41;
|
|
379913
379997
|
}
|
|
379914
379998
|
function _temp326(current) {
|
|
379915
|
-
if (current.lastReleaseNotesSeen === "1.44.
|
|
379999
|
+
if (current.lastReleaseNotesSeen === "1.44.8") {
|
|
379916
380000
|
return current;
|
|
379917
380001
|
}
|
|
379918
380002
|
return {
|
|
379919
380003
|
...current,
|
|
379920
|
-
lastReleaseNotesSeen: "1.44.
|
|
380004
|
+
lastReleaseNotesSeen: "1.44.8"
|
|
379921
380005
|
};
|
|
379922
380006
|
}
|
|
379923
380007
|
function _temp241(s_0) {
|
|
@@ -410338,6 +410422,7 @@ var init_project2 = __esm(() => {
|
|
|
410338
410422
|
});
|
|
410339
410423
|
|
|
410340
410424
|
// src/ur/notes.ts
|
|
410425
|
+
import { createHash as createHash25 } from "crypto";
|
|
410341
410426
|
import { appendFileSync as appendFileSync5, existsSync as existsSync50, mkdirSync as mkdirSync43, readFileSync as readFileSync56, writeFileSync as writeFileSync42 } from "fs";
|
|
410342
410427
|
import { dirname as dirname62, join as join173 } from "path";
|
|
410343
410428
|
function readJsonl(file2) {
|
|
@@ -410359,6 +410444,58 @@ function append2(file2, rec) {
|
|
|
410359
410444
|
`);
|
|
410360
410445
|
} catch {}
|
|
410361
410446
|
}
|
|
410447
|
+
function memorySlug(text) {
|
|
410448
|
+
const words = text.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").split("-").filter(Boolean).slice(0, 8).join("-");
|
|
410449
|
+
const hash2 = createHash25("sha1").update(text).digest("hex").slice(0, 8);
|
|
410450
|
+
return `${words || "remembered-note"}-${hash2}`;
|
|
410451
|
+
}
|
|
410452
|
+
function yamlSingleQuote(value) {
|
|
410453
|
+
return `'${value.replaceAll("'", "''")}'`;
|
|
410454
|
+
}
|
|
410455
|
+
function oneLine(text, max2 = 140) {
|
|
410456
|
+
const normalized = text.replace(/\s+/g, " ").trim();
|
|
410457
|
+
return normalized.length <= max2 ? normalized : `${normalized.slice(0, max2 - 1)}\u2026`;
|
|
410458
|
+
}
|
|
410459
|
+
function rememberInAutoMemory(memoryDir, text) {
|
|
410460
|
+
const trimmed = text.trim();
|
|
410461
|
+
if (!trimmed)
|
|
410462
|
+
return null;
|
|
410463
|
+
try {
|
|
410464
|
+
mkdirSync43(memoryDir, { recursive: true });
|
|
410465
|
+
const slug4 = memorySlug(trimmed);
|
|
410466
|
+
const fileName = `${slug4}.md`;
|
|
410467
|
+
const filePath = join173(memoryDir, fileName);
|
|
410468
|
+
const description = oneLine(trimmed);
|
|
410469
|
+
const now7 = new Date().toISOString();
|
|
410470
|
+
writeFileSync42(filePath, [
|
|
410471
|
+
"---",
|
|
410472
|
+
`name: ${yamlSingleQuote(description)}`,
|
|
410473
|
+
`description: ${yamlSingleQuote(description)}`,
|
|
410474
|
+
"type: feedback",
|
|
410475
|
+
"---",
|
|
410476
|
+
"",
|
|
410477
|
+
"# Remembered note",
|
|
410478
|
+
"",
|
|
410479
|
+
trimmed,
|
|
410480
|
+
"",
|
|
410481
|
+
`Saved: ${now7}`,
|
|
410482
|
+
""
|
|
410483
|
+
].join(`
|
|
410484
|
+
`));
|
|
410485
|
+
const indexPath3 = join173(memoryDir, "MEMORY.md");
|
|
410486
|
+
const indexLine = `- [Remembered note](${fileName}) \u2014 ${description}`;
|
|
410487
|
+
const existing2 = existsSync50(indexPath3) ? readFileSync56(indexPath3, "utf8") : "";
|
|
410488
|
+
if (!existing2.includes(`](${fileName})`)) {
|
|
410489
|
+
const prefix = existing2.trimEnd();
|
|
410490
|
+
writeFileSync42(indexPath3, `${prefix ? `${prefix}
|
|
410491
|
+
` : ""}${indexLine}
|
|
410492
|
+
`);
|
|
410493
|
+
}
|
|
410494
|
+
return filePath;
|
|
410495
|
+
} catch {
|
|
410496
|
+
return null;
|
|
410497
|
+
}
|
|
410498
|
+
}
|
|
410362
410499
|
function remember(cwd2, text) {
|
|
410363
410500
|
append2(memFile(cwd2), { ts: new Date().toISOString(), text, kind: "note" });
|
|
410364
410501
|
}
|
|
@@ -410402,9 +410539,13 @@ var call93 = async (args) => {
|
|
|
410402
410539
|
`) : "no memory notes yet" };
|
|
410403
410540
|
}
|
|
410404
410541
|
remember(getCwd(), text);
|
|
410542
|
+
if (isAutoMemoryEnabled()) {
|
|
410543
|
+
rememberInAutoMemory(getAutoMemPath(), text);
|
|
410544
|
+
}
|
|
410405
410545
|
return { type: "text", value: `remembered: ${text}` };
|
|
410406
410546
|
};
|
|
410407
410547
|
var init_remember = __esm(() => {
|
|
410548
|
+
init_paths();
|
|
410408
410549
|
init_cwd2();
|
|
410409
410550
|
init_notes();
|
|
410410
410551
|
});
|
|
@@ -596872,7 +597013,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
596872
597013
|
smapsRollup,
|
|
596873
597014
|
platform: process.platform,
|
|
596874
597015
|
nodeVersion: process.version,
|
|
596875
|
-
ccVersion: "1.44.
|
|
597016
|
+
ccVersion: "1.44.8"
|
|
596876
597017
|
};
|
|
596877
597018
|
}
|
|
596878
597019
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -597458,7 +597599,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
597458
597599
|
var call138 = async () => {
|
|
597459
597600
|
return {
|
|
597460
597601
|
type: "text",
|
|
597461
|
-
value: "1.44.
|
|
597602
|
+
value: "1.44.8"
|
|
597462
597603
|
};
|
|
597463
597604
|
}, version2, version_default;
|
|
597464
597605
|
var init_version = __esm(() => {
|
|
@@ -607551,7 +607692,7 @@ function generateHtmlReport(data, insights) {
|
|
|
607551
607692
|
</html>`;
|
|
607552
607693
|
}
|
|
607553
607694
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
607554
|
-
const version3 = typeof MACRO !== "undefined" ? "1.44.
|
|
607695
|
+
const version3 = typeof MACRO !== "undefined" ? "1.44.8" : "unknown";
|
|
607555
607696
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
607556
607697
|
const facets_summary = {
|
|
607557
607698
|
total: facets.size,
|
|
@@ -611833,7 +611974,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
611833
611974
|
init_settings2();
|
|
611834
611975
|
init_slowOperations();
|
|
611835
611976
|
init_uuid();
|
|
611836
|
-
VERSION5 = typeof MACRO !== "undefined" ? "1.44.
|
|
611977
|
+
VERSION5 = typeof MACRO !== "undefined" ? "1.44.8" : "unknown";
|
|
611837
611978
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
611838
611979
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
611839
611980
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -613038,7 +613179,7 @@ var init_filesystem = __esm(() => {
|
|
|
613038
613179
|
});
|
|
613039
613180
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
613040
613181
|
const nonce = randomBytes18(16).toString("hex");
|
|
613041
|
-
return join202(getURTempDir(), "bundled-skills", "1.44.
|
|
613182
|
+
return join202(getURTempDir(), "bundled-skills", "1.44.8", nonce);
|
|
613042
613183
|
});
|
|
613043
613184
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
613044
613185
|
});
|
|
@@ -618886,7 +619027,7 @@ var init_prompts4 = __esm(() => {
|
|
|
618886
619027
|
});
|
|
618887
619028
|
|
|
618888
619029
|
// src/utils/api.ts
|
|
618889
|
-
import { createHash as
|
|
619030
|
+
import { createHash as createHash26 } from "crypto";
|
|
618890
619031
|
function filterSwarmFieldsFromSchema(toolName, schema) {
|
|
618891
619032
|
const fieldsToRemove = SWARM_FIELDS_BY_TOOL[toolName];
|
|
618892
619033
|
if (!fieldsToRemove || fieldsToRemove.length === 0) {
|
|
@@ -618976,7 +619117,7 @@ function logAPIPrefix(systemPrompt) {
|
|
|
618976
619117
|
logEvent("tengu_sysprompt_block", {
|
|
618977
619118
|
snippet: firstSystemPrompt?.slice(0, 20),
|
|
618978
619119
|
length: firstSystemPrompt?.length ?? 0,
|
|
618979
|
-
hash: firstSystemPrompt ?
|
|
619120
|
+
hash: firstSystemPrompt ? createHash26("sha256").update(firstSystemPrompt).digest("hex") : ""
|
|
618980
619121
|
});
|
|
618981
619122
|
}
|
|
618982
619123
|
function splitSysPromptPrefix(systemPrompt, options2) {
|
|
@@ -619302,7 +619443,7 @@ var init_api3 = __esm(() => {
|
|
|
619302
619443
|
});
|
|
619303
619444
|
|
|
619304
619445
|
// src/utils/fingerprint.ts
|
|
619305
|
-
import { createHash as
|
|
619446
|
+
import { createHash as createHash27 } from "crypto";
|
|
619306
619447
|
function extractFirstMessageText(messages) {
|
|
619307
619448
|
const firstUserMessage = messages.find((msg) => msg.type === "user");
|
|
619308
619449
|
if (!firstUserMessage) {
|
|
@@ -619324,12 +619465,12 @@ function computeFingerprint(messageText2, version3) {
|
|
|
619324
619465
|
const indices = [4, 7, 20];
|
|
619325
619466
|
const chars = indices.map((i3) => messageText2[i3] || "0").join("");
|
|
619326
619467
|
const fingerprintInput = `${FINGERPRINT_SALT}${chars}${version3}`;
|
|
619327
|
-
const hash2 =
|
|
619468
|
+
const hash2 = createHash27("sha256").update(fingerprintInput).digest("hex");
|
|
619328
619469
|
return hash2.slice(0, 3);
|
|
619329
619470
|
}
|
|
619330
619471
|
function computeFingerprintFromMessages(messages) {
|
|
619331
619472
|
const firstMessageText = extractFirstMessageText(messages);
|
|
619332
|
-
return computeFingerprint(firstMessageText, "1.44.
|
|
619473
|
+
return computeFingerprint(firstMessageText, "1.44.8");
|
|
619333
619474
|
}
|
|
619334
619475
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
619335
619476
|
var init_fingerprint = () => {};
|
|
@@ -621203,7 +621344,7 @@ async function sideQuery(opts) {
|
|
|
621203
621344
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
621204
621345
|
}
|
|
621205
621346
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
621206
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.44.
|
|
621347
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.44.8");
|
|
621207
621348
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
621208
621349
|
const systemBlocks = [
|
|
621209
621350
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -625940,7 +626081,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
625940
626081
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
625941
626082
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
625942
626083
|
betas: getSdkBetas(),
|
|
625943
|
-
ur_version: "1.44.
|
|
626084
|
+
ur_version: "1.44.8",
|
|
625944
626085
|
output_style: outputStyle2,
|
|
625945
626086
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
625946
626087
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -640568,7 +640709,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
640568
640709
|
function getSemverPart(version3) {
|
|
640569
640710
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
640570
640711
|
}
|
|
640571
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.44.
|
|
640712
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.44.8") {
|
|
640572
640713
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react226.useState(() => getSemverPart(initialVersion));
|
|
640573
640714
|
if (!updatedVersion) {
|
|
640574
640715
|
return null;
|
|
@@ -640617,7 +640758,7 @@ function AutoUpdater({
|
|
|
640617
640758
|
return;
|
|
640618
640759
|
}
|
|
640619
640760
|
if (false) {}
|
|
640620
|
-
const currentVersion = "1.44.
|
|
640761
|
+
const currentVersion = "1.44.8";
|
|
640621
640762
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
640622
640763
|
let latestVersion = await getLatestVersion(channel);
|
|
640623
640764
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -640846,12 +640987,12 @@ function NativeAutoUpdater({
|
|
|
640846
640987
|
logEvent("tengu_native_auto_updater_start", {});
|
|
640847
640988
|
try {
|
|
640848
640989
|
const maxVersion = await getMaxVersion();
|
|
640849
|
-
if (maxVersion && gt("1.44.
|
|
640990
|
+
if (maxVersion && gt("1.44.8", maxVersion)) {
|
|
640850
640991
|
const msg = await getMaxVersionMessage();
|
|
640851
640992
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
640852
640993
|
}
|
|
640853
640994
|
const result = await installLatest(channel);
|
|
640854
|
-
const currentVersion = "1.44.
|
|
640995
|
+
const currentVersion = "1.44.8";
|
|
640855
640996
|
const latencyMs = Date.now() - startTime;
|
|
640856
640997
|
if (result.lockFailed) {
|
|
640857
640998
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -640988,17 +641129,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
640988
641129
|
const maxVersion = await getMaxVersion();
|
|
640989
641130
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
640990
641131
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
640991
|
-
if (gte("1.44.
|
|
640992
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.44.
|
|
641132
|
+
if (gte("1.44.8", maxVersion)) {
|
|
641133
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.44.8"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
640993
641134
|
setUpdateAvailable(false);
|
|
640994
641135
|
return;
|
|
640995
641136
|
}
|
|
640996
641137
|
latest = maxVersion;
|
|
640997
641138
|
}
|
|
640998
|
-
const hasUpdate = latest && !gte("1.44.
|
|
641139
|
+
const hasUpdate = latest && !gte("1.44.8", latest) && !shouldSkipVersion(latest);
|
|
640999
641140
|
setUpdateAvailable(!!hasUpdate);
|
|
641000
641141
|
if (hasUpdate) {
|
|
641001
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.44.
|
|
641142
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.44.8"} -> ${latest}`);
|
|
641002
641143
|
}
|
|
641003
641144
|
};
|
|
641004
641145
|
$3[0] = t1;
|
|
@@ -641032,7 +641173,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
641032
641173
|
wrap: "truncate",
|
|
641033
641174
|
children: [
|
|
641034
641175
|
"currentVersion: ",
|
|
641035
|
-
"1.44.
|
|
641176
|
+
"1.44.8"
|
|
641036
641177
|
]
|
|
641037
641178
|
}, undefined, true, undefined, this);
|
|
641038
641179
|
$3[3] = verbose;
|
|
@@ -653488,7 +653629,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
653488
653629
|
project_dir: getOriginalCwd(),
|
|
653489
653630
|
added_dirs: addedDirs
|
|
653490
653631
|
},
|
|
653491
|
-
version: "1.44.
|
|
653632
|
+
version: "1.44.8",
|
|
653492
653633
|
output_style: {
|
|
653493
653634
|
name: outputStyleName
|
|
653494
653635
|
},
|
|
@@ -653571,7 +653712,7 @@ function StatusLineInner({
|
|
|
653571
653712
|
const taskValues = Object.values(tasks2);
|
|
653572
653713
|
const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
|
|
653573
653714
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
653574
|
-
version: "1.44.
|
|
653715
|
+
version: "1.44.8",
|
|
653575
653716
|
providerLabel: providerRuntime.providerLabel,
|
|
653576
653717
|
authMode: providerRuntime.authLabel,
|
|
653577
653718
|
model: providerRuntime.model ?? renderModelName(mainLoopModel),
|
|
@@ -665502,7 +665643,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
665502
665643
|
} catch {}
|
|
665503
665644
|
const data = {
|
|
665504
665645
|
trigger: trigger2,
|
|
665505
|
-
version: "1.44.
|
|
665646
|
+
version: "1.44.8",
|
|
665506
665647
|
platform: process.platform,
|
|
665507
665648
|
transcript,
|
|
665508
665649
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -677387,7 +677528,7 @@ function WelcomeV2() {
|
|
|
677387
677528
|
dimColor: true,
|
|
677388
677529
|
children: [
|
|
677389
677530
|
"v",
|
|
677390
|
-
"1.44.
|
|
677531
|
+
"1.44.8"
|
|
677391
677532
|
]
|
|
677392
677533
|
}, undefined, true, undefined, this)
|
|
677393
677534
|
]
|
|
@@ -678647,7 +678788,7 @@ function completeOnboarding() {
|
|
|
678647
678788
|
saveGlobalConfig((current) => ({
|
|
678648
678789
|
...current,
|
|
678649
678790
|
hasCompletedOnboarding: true,
|
|
678650
|
-
lastOnboardingVersion: "1.44.
|
|
678791
|
+
lastOnboardingVersion: "1.44.8"
|
|
678651
678792
|
}));
|
|
678652
678793
|
}
|
|
678653
678794
|
function showDialog(root2, renderer) {
|
|
@@ -683687,7 +683828,7 @@ function appendToLog(path24, message) {
|
|
|
683687
683828
|
cwd: getFsImplementation().cwd(),
|
|
683688
683829
|
userType: process.env.USER_TYPE,
|
|
683689
683830
|
sessionId: getSessionId(),
|
|
683690
|
-
version: "1.44.
|
|
683831
|
+
version: "1.44.8"
|
|
683691
683832
|
};
|
|
683692
683833
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
683693
683834
|
}
|
|
@@ -687781,8 +687922,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
687781
687922
|
}
|
|
687782
687923
|
async function checkEnvLessBridgeMinVersion() {
|
|
687783
687924
|
const cfg = await getEnvLessBridgeConfig();
|
|
687784
|
-
if (cfg.min_version && lt("1.44.
|
|
687785
|
-
return `Your version of UR (${"1.44.
|
|
687925
|
+
if (cfg.min_version && lt("1.44.8", cfg.min_version)) {
|
|
687926
|
+
return `Your version of UR (${"1.44.8"}) is too old for Remote Control.
|
|
687786
687927
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
687787
687928
|
}
|
|
687788
687929
|
return null;
|
|
@@ -688256,7 +688397,7 @@ async function initBridgeCore(params) {
|
|
|
688256
688397
|
const rawApi = createBridgeApiClient({
|
|
688257
688398
|
baseUrl,
|
|
688258
688399
|
getAccessToken,
|
|
688259
|
-
runnerVersion: "1.44.
|
|
688400
|
+
runnerVersion: "1.44.8",
|
|
688260
688401
|
onDebug: logForDebugging,
|
|
688261
688402
|
onAuth401,
|
|
688262
688403
|
getTrustedDeviceToken
|
|
@@ -693938,7 +694079,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
|
|
|
693938
694079
|
setCwd(cwd3);
|
|
693939
694080
|
const server2 = new Server({
|
|
693940
694081
|
name: "ur/tengu",
|
|
693941
|
-
version: "1.44.
|
|
694082
|
+
version: "1.44.8"
|
|
693942
694083
|
}, {
|
|
693943
694084
|
capabilities: {
|
|
693944
694085
|
tools: {}
|
|
@@ -695980,7 +696121,7 @@ async function update() {
|
|
|
695980
696121
|
logEvent("tengu_update_check", {});
|
|
695981
696122
|
const diagnostic = await getDoctorDiagnostic();
|
|
695982
696123
|
const result = await checkUpgradeStatus({
|
|
695983
|
-
currentVersion: "1.44.
|
|
696124
|
+
currentVersion: "1.44.8",
|
|
695984
696125
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
695985
696126
|
installationType: diagnostic.installationType,
|
|
695986
696127
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -697226,7 +697367,7 @@ ${customInstructions}` : customInstructions;
|
|
|
697226
697367
|
}
|
|
697227
697368
|
}
|
|
697228
697369
|
logForDiagnosticsNoPII("info", "started", {
|
|
697229
|
-
version: "1.44.
|
|
697370
|
+
version: "1.44.8",
|
|
697230
697371
|
is_native_binary: isInBundledMode()
|
|
697231
697372
|
});
|
|
697232
697373
|
registerCleanup(async () => {
|
|
@@ -698012,7 +698153,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
698012
698153
|
pendingHookMessages
|
|
698013
698154
|
}, renderAndRun);
|
|
698014
698155
|
}
|
|
698015
|
-
}).version("1.44.
|
|
698156
|
+
}).version("1.44.8 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
698016
698157
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
698017
698158
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
698018
698159
|
if (canUserConfigureAdvisor()) {
|
|
@@ -698927,7 +699068,7 @@ if (false) {}
|
|
|
698927
699068
|
async function main2() {
|
|
698928
699069
|
const args = process.argv.slice(2);
|
|
698929
699070
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
698930
|
-
console.log(`${"1.44.
|
|
699071
|
+
console.log(`${"1.44.8"} (UR-Nexus)`);
|
|
698931
699072
|
return;
|
|
698932
699073
|
}
|
|
698933
699074
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|
package/docs/CONFIGURATION.md
CHANGED
|
@@ -270,6 +270,15 @@ Recommended Git behavior:
|
|
|
270
270
|
- Do not commit generated `.ur/index/`, `.ur/memory/`, `.ur/cache/`, `.ur/tmp/`, or `.ur/logs/`.
|
|
271
271
|
- Do not commit `UR.local.md`.
|
|
272
272
|
|
|
273
|
+
Memory and learning defaults:
|
|
274
|
+
|
|
275
|
+
- Auto-memory is enabled by default. Disable with `autoMemoryEnabled: false`,
|
|
276
|
+
`UR_CODE_DISABLE_AUTO_MEMORY=1`, or `--bare`.
|
|
277
|
+
- Automatic learning is enabled by default. Disable with
|
|
278
|
+
`automaticLearningEnabled: false` or `UR_CODE_DISABLE_AUTO_LEARNING=1`.
|
|
279
|
+
- Automatic learning folds local outcome stats only; it does not call a model
|
|
280
|
+
unless you explicitly run `/learn run --reflect`.
|
|
281
|
+
|
|
273
282
|
## Verifier
|
|
274
283
|
|
|
275
284
|
UR runs a lightweight verifier in the agent loop (L1) to catch false "task
|
package/documentation/index.html
CHANGED
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
<main id="content" class="content">
|
|
45
45
|
<header class="topbar">
|
|
46
46
|
<div>
|
|
47
|
-
<p class="eyebrow">Version 1.44.
|
|
47
|
+
<p class="eyebrow">Version 1.44.8</p>
|
|
48
48
|
<h1>UR-Nexus Documentation</h1>
|
|
49
49
|
<p class="lead">A practical, tutorial-style reference for installing, configuring, automating, extending, and operating UR-Nexus.</p>
|
|
50
50
|
</div>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "ur-inline-diffs",
|
|
3
3
|
"displayName": "UR Inline Diffs",
|
|
4
4
|
"description": "Review, apply, and reject UR inline diff bundles from .ur/ide/diffs inside VS Code.",
|
|
5
|
-
"version": "1.44.
|
|
5
|
+
"version": "1.44.8",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED