ur-agent 1.63.0 → 1.64.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.64.0
|
|
4
|
+
|
|
5
|
+
- Tool-result pruning now announces itself. It changed context silently, so
|
|
6
|
+
there was no way to confirm it fired or to attribute a missing detail to it —
|
|
7
|
+
the same defect memory suggestions had when they went to stderr. A prune now
|
|
8
|
+
prints what it removed and how many tokens that freed.
|
|
9
|
+
- Corrected the fan-out drill, which tested the wrong limit. Asking for 30
|
|
10
|
+
subagents in one turn cannot reach `agents.maxConcurrent`, because
|
|
11
|
+
`MAX_CONCURRENT_TOOLS` caps a single turn at 8 — so the run reported an
|
|
12
|
+
unrelated cap and I mistook that for the governor being unreachable. It is
|
|
13
|
+
reachable by nesting: 8 roots, each spawning more, hits 20 and fires naming
|
|
14
|
+
the setting. The drill now exercises that path.
|
|
15
|
+
- Added a manual drill for tool-result pruning. It only fires inside a live
|
|
16
|
+
query loop, so no automated drill can reach it.
|
|
17
|
+
- Added opt-in signing of the memory integrity manifest via
|
|
18
|
+
`UR_MEMORY_INTEGRITY_KEY`. Unsigned, anyone who can write a memory file can
|
|
19
|
+
rewrite the manifest to match and pass verification; the HMAC raises that to
|
|
20
|
+
needing the key. Off by default because a key stored beside the data it
|
|
21
|
+
protects is theatre.
|
|
22
|
+
- `verify` exits non-zero on an invalid signature — the first implementation
|
|
23
|
+
detected forgery and still exited 0, because a forged manifest updates the
|
|
24
|
+
digests so every tamper count reads zero. A manifest that is signed but
|
|
25
|
+
unverifiable also fails, rather than passing on an unperformed check.
|
|
26
|
+
|
|
3
27
|
## 1.63.0
|
|
4
28
|
|
|
5
29
|
- Added size-triggered pruning of superseded tool results
|
package/dist/cli.js
CHANGED
|
@@ -75207,7 +75207,7 @@ var init_auth = __esm(() => {
|
|
|
75207
75207
|
|
|
75208
75208
|
// src/utils/userAgent.ts
|
|
75209
75209
|
function getURCodeUserAgent() {
|
|
75210
|
-
return `ur/${"1.
|
|
75210
|
+
return `ur/${"1.64.0"}`;
|
|
75211
75211
|
}
|
|
75212
75212
|
|
|
75213
75213
|
// src/utils/workloadContext.ts
|
|
@@ -75229,7 +75229,7 @@ function getUserAgent() {
|
|
|
75229
75229
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
75230
75230
|
const workload = getWorkload();
|
|
75231
75231
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
75232
|
-
return `ur-cli/${"1.
|
|
75232
|
+
return `ur-cli/${"1.64.0"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
75233
75233
|
}
|
|
75234
75234
|
function getMCPUserAgent() {
|
|
75235
75235
|
const parts = [];
|
|
@@ -75243,7 +75243,7 @@ function getMCPUserAgent() {
|
|
|
75243
75243
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
75244
75244
|
}
|
|
75245
75245
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
75246
|
-
return `ur/${"1.
|
|
75246
|
+
return `ur/${"1.64.0"}${suffix}`;
|
|
75247
75247
|
}
|
|
75248
75248
|
function getWebFetchUserAgent() {
|
|
75249
75249
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -75381,7 +75381,7 @@ var init_user = __esm(() => {
|
|
|
75381
75381
|
deviceId,
|
|
75382
75382
|
sessionId: getSessionId(),
|
|
75383
75383
|
email: getEmail(),
|
|
75384
|
-
appVersion: "1.
|
|
75384
|
+
appVersion: "1.64.0",
|
|
75385
75385
|
platform: getHostPlatformForAnalytics(),
|
|
75386
75386
|
organizationUuid,
|
|
75387
75387
|
accountUuid,
|
|
@@ -83581,7 +83581,7 @@ var init_metadata = __esm(() => {
|
|
|
83581
83581
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
83582
83582
|
WHITESPACE_REGEX = /\s+/;
|
|
83583
83583
|
getVersionBase = memoize_default(() => {
|
|
83584
|
-
const match = "1.
|
|
83584
|
+
const match = "1.64.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
83585
83585
|
return match ? match[0] : undefined;
|
|
83586
83586
|
});
|
|
83587
83587
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -83621,7 +83621,7 @@ var init_metadata = __esm(() => {
|
|
|
83621
83621
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
83622
83622
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
83623
83623
|
isURAiAuth: isURAISubscriber(),
|
|
83624
|
-
version: "1.
|
|
83624
|
+
version: "1.64.0",
|
|
83625
83625
|
versionBase: getVersionBase(),
|
|
83626
83626
|
buildTime: "",
|
|
83627
83627
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -84291,7 +84291,7 @@ function initialize1PEventLogging() {
|
|
|
84291
84291
|
const platform2 = getPlatform();
|
|
84292
84292
|
const attributes = {
|
|
84293
84293
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
84294
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.
|
|
84294
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.64.0"
|
|
84295
84295
|
};
|
|
84296
84296
|
if (platform2 === "wsl") {
|
|
84297
84297
|
const wslVersion = getWslVersion();
|
|
@@ -84319,7 +84319,7 @@ function initialize1PEventLogging() {
|
|
|
84319
84319
|
})
|
|
84320
84320
|
]
|
|
84321
84321
|
});
|
|
84322
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.
|
|
84322
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.64.0");
|
|
84323
84323
|
}
|
|
84324
84324
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
84325
84325
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -94165,7 +94165,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
|
|
|
94165
94165
|
function formatA2AAgentCard(options = {}, pretty = true) {
|
|
94166
94166
|
return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
|
|
94167
94167
|
}
|
|
94168
|
-
var urVersion = "1.
|
|
94168
|
+
var urVersion = "1.64.0", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
|
|
94169
94169
|
var init_trends = __esm(() => {
|
|
94170
94170
|
init_a2aCardSignature();
|
|
94171
94171
|
coverage = [
|
|
@@ -96968,7 +96968,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
96968
96968
|
if (!isAttributionHeaderEnabled()) {
|
|
96969
96969
|
return "";
|
|
96970
96970
|
}
|
|
96971
|
-
const version2 = `${"1.
|
|
96971
|
+
const version2 = `${"1.64.0"}.${fingerprint}`;
|
|
96972
96972
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
96973
96973
|
const cch = "";
|
|
96974
96974
|
const workload = getWorkload();
|
|
@@ -146435,7 +146435,10 @@ function maybeSizeBasedMicrocompact(messages, querySource) {
|
|
|
146435
146435
|
suppressCompactWarning();
|
|
146436
146436
|
resetMicrocompactState();
|
|
146437
146437
|
if (false) {}
|
|
146438
|
-
return {
|
|
146438
|
+
return {
|
|
146439
|
+
messages: cleared.messages,
|
|
146440
|
+
notice: `Pruned ${cleared.cleared} superseded tool result(s), freeing about ` + `${cleared.tokensSaved.toLocaleString()} tokens. The ${config2.keepRecent} most ` + `recent are kept. Disable with context.pruneToolResults.enabled=false.`
|
|
146441
|
+
};
|
|
146439
146442
|
}
|
|
146440
146443
|
function maybeTimeBasedMicrocompact(messages, querySource) {
|
|
146441
146444
|
const trigger = evaluateTimeBasedTrigger(messages, querySource);
|
|
@@ -154633,7 +154636,7 @@ var init_projectSafety = __esm(() => {
|
|
|
154633
154636
|
function getInstruments() {
|
|
154634
154637
|
if (instruments)
|
|
154635
154638
|
return instruments;
|
|
154636
|
-
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.
|
|
154639
|
+
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.64.0");
|
|
154637
154640
|
instruments = {
|
|
154638
154641
|
operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
|
|
154639
154642
|
description: "GenAI operation duration.",
|
|
@@ -154731,7 +154734,7 @@ function genAiAgentAttributes() {
|
|
|
154731
154734
|
"gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
|
|
154732
154735
|
"gen_ai.provider.name": "ur",
|
|
154733
154736
|
"gen_ai.agent.name": "UR-Nexus",
|
|
154734
|
-
"gen_ai.agent.version": "1.
|
|
154737
|
+
"gen_ai.agent.version": "1.64.0"
|
|
154735
154738
|
};
|
|
154736
154739
|
}
|
|
154737
154740
|
function genAiWorkflowAttributes(workflowName) {
|
|
@@ -154747,7 +154750,7 @@ function genAiWorkflowAttributes(workflowName) {
|
|
|
154747
154750
|
function startGenAiWorkflowSpan(workflowName) {
|
|
154748
154751
|
const attributes = genAiWorkflowAttributes(workflowName);
|
|
154749
154752
|
const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
|
|
154750
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.
|
|
154753
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.64.0").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
154751
154754
|
}
|
|
154752
154755
|
function endGenAiWorkflowSpan(span, options2 = {}) {
|
|
154753
154756
|
try {
|
|
@@ -154785,7 +154788,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
|
|
|
154785
154788
|
if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
|
|
154786
154789
|
attributes["gen_ai.memory.record.count"] = options2.recordCount;
|
|
154787
154790
|
}
|
|
154788
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.
|
|
154791
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.64.0").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
154789
154792
|
}
|
|
154790
154793
|
function endGenAiMemorySpan(span, options2 = {}) {
|
|
154791
154794
|
try {
|
|
@@ -206304,7 +206307,7 @@ function getTelemetryAttributes() {
|
|
|
206304
206307
|
attributes["session.id"] = sessionId;
|
|
206305
206308
|
}
|
|
206306
206309
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
206307
|
-
attributes["app.version"] = "1.
|
|
206310
|
+
attributes["app.version"] = "1.64.0";
|
|
206308
206311
|
}
|
|
206309
206312
|
const oauthAccount = getOauthAccountInfo();
|
|
206310
206313
|
if (oauthAccount) {
|
|
@@ -242078,7 +242081,7 @@ function getInstallationEnv() {
|
|
|
242078
242081
|
return;
|
|
242079
242082
|
}
|
|
242080
242083
|
function getURCodeVersion() {
|
|
242081
|
-
return "1.
|
|
242084
|
+
return "1.64.0";
|
|
242082
242085
|
}
|
|
242083
242086
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
242084
242087
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -249409,7 +249412,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
249409
249412
|
const client2 = new Client({
|
|
249410
249413
|
name: "ur",
|
|
249411
249414
|
title: "UR",
|
|
249412
|
-
version: "1.
|
|
249415
|
+
version: "1.64.0",
|
|
249413
249416
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
249414
249417
|
websiteUrl: PRODUCT_URL
|
|
249415
249418
|
}, {
|
|
@@ -249769,7 +249772,7 @@ var init_client5 = __esm(() => {
|
|
|
249769
249772
|
const client2 = new Client({
|
|
249770
249773
|
name: "ur",
|
|
249771
249774
|
title: "UR",
|
|
249772
|
-
version: "1.
|
|
249775
|
+
version: "1.64.0",
|
|
249773
249776
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
249774
249777
|
websiteUrl: PRODUCT_URL
|
|
249775
249778
|
}, {
|
|
@@ -262370,7 +262373,7 @@ async function createRuntime() {
|
|
|
262370
262373
|
bootstrapTelemetry();
|
|
262371
262374
|
const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
|
|
262372
262375
|
[import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
|
|
262373
|
-
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.
|
|
262376
|
+
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.64.0"
|
|
262374
262377
|
}));
|
|
262375
262378
|
const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
|
|
262376
262379
|
resource,
|
|
@@ -262403,11 +262406,11 @@ async function createRuntime() {
|
|
|
262403
262406
|
setMeterProvider(meterProvider);
|
|
262404
262407
|
setLoggerProvider(loggerProvider);
|
|
262405
262408
|
if (meterProvider) {
|
|
262406
|
-
const meter = meterProvider.getMeter("ur-agent", "1.
|
|
262409
|
+
const meter = meterProvider.getMeter("ur-agent", "1.64.0");
|
|
262407
262410
|
setMeter(meter, (name, options2) => meter.createCounter(name, options2));
|
|
262408
262411
|
}
|
|
262409
262412
|
if (loggerProvider) {
|
|
262410
|
-
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.
|
|
262413
|
+
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.64.0"));
|
|
262411
262414
|
}
|
|
262412
262415
|
if (!cleanupRegistered2) {
|
|
262413
262416
|
cleanupRegistered2 = true;
|
|
@@ -263069,9 +263072,9 @@ async function assertMinVersion() {
|
|
|
263069
263072
|
if (false) {}
|
|
263070
263073
|
try {
|
|
263071
263074
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
263072
|
-
if (versionConfig.minVersion && lt("1.
|
|
263075
|
+
if (versionConfig.minVersion && lt("1.64.0", versionConfig.minVersion)) {
|
|
263073
263076
|
console.error(`
|
|
263074
|
-
It looks like your version of UR (${"1.
|
|
263077
|
+
It looks like your version of UR (${"1.64.0"}) needs an update.
|
|
263075
263078
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
263076
263079
|
|
|
263077
263080
|
To update, please run:
|
|
@@ -263287,7 +263290,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
263287
263290
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
263288
263291
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
263289
263292
|
pid: process.pid,
|
|
263290
|
-
currentVersion: "1.
|
|
263293
|
+
currentVersion: "1.64.0"
|
|
263291
263294
|
});
|
|
263292
263295
|
return "in_progress";
|
|
263293
263296
|
}
|
|
@@ -263296,7 +263299,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
263296
263299
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
263297
263300
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
263298
263301
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
263299
|
-
currentVersion: "1.
|
|
263302
|
+
currentVersion: "1.64.0"
|
|
263300
263303
|
});
|
|
263301
263304
|
console.error(`
|
|
263302
263305
|
Error: Windows NPM detected in WSL
|
|
@@ -263831,7 +263834,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
263831
263834
|
}
|
|
263832
263835
|
async function getDoctorDiagnostic() {
|
|
263833
263836
|
const installationType = await getCurrentInstallationType();
|
|
263834
|
-
const version2 = typeof MACRO !== "undefined" ? "1.
|
|
263837
|
+
const version2 = typeof MACRO !== "undefined" ? "1.64.0" : "unknown";
|
|
263835
263838
|
const installationPath = await getInstallationPath();
|
|
263836
263839
|
const invokedBinary = getInvokedBinary();
|
|
263837
263840
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -264766,8 +264769,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
264766
264769
|
const maxVersion = await getMaxVersion();
|
|
264767
264770
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
264768
264771
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
264769
|
-
if (gte("1.
|
|
264770
|
-
logForDebugging(`Native installer: current version ${"1.
|
|
264772
|
+
if (gte("1.64.0", maxVersion)) {
|
|
264773
|
+
logForDebugging(`Native installer: current version ${"1.64.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
264771
264774
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
264772
264775
|
latency_ms: Date.now() - startTime,
|
|
264773
264776
|
max_version: maxVersion,
|
|
@@ -264778,7 +264781,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
264778
264781
|
version2 = maxVersion;
|
|
264779
264782
|
}
|
|
264780
264783
|
}
|
|
264781
|
-
if (!forceReinstall && version2 === "1.
|
|
264784
|
+
if (!forceReinstall && version2 === "1.64.0" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
264782
264785
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
264783
264786
|
logEvent("tengu_native_update_complete", {
|
|
264784
264787
|
latency_ms: Date.now() - startTime,
|
|
@@ -334977,7 +334980,7 @@ function isAnyTracingEnabled() {
|
|
|
334977
334980
|
return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
|
|
334978
334981
|
}
|
|
334979
334982
|
function getTracer() {
|
|
334980
|
-
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.
|
|
334983
|
+
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.64.0");
|
|
334981
334984
|
}
|
|
334982
334985
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
334983
334986
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -339451,6 +339454,9 @@ async function* queryLoop(params, consumedCommandUuids) {
|
|
|
339451
339454
|
queryCheckpoint("query_microcompact_start");
|
|
339452
339455
|
const microcompactResult = await deps.microcompact(messagesForQuery, toolUseContext, querySource);
|
|
339453
339456
|
messagesForQuery = microcompactResult.messages;
|
|
339457
|
+
if (microcompactResult.notice) {
|
|
339458
|
+
yield createSystemMessage(microcompactResult.notice, "info");
|
|
339459
|
+
}
|
|
339454
339460
|
const pendingCacheEdits2 = undefined;
|
|
339455
339461
|
queryCheckpoint("query_microcompact_end");
|
|
339456
339462
|
if (false) {}
|
|
@@ -364480,7 +364486,7 @@ function Feedback({
|
|
|
364480
364486
|
platform: env2.platform,
|
|
364481
364487
|
gitRepo: envInfo.isGit,
|
|
364482
364488
|
terminal: env2.terminal,
|
|
364483
|
-
version: "1.
|
|
364489
|
+
version: "1.64.0",
|
|
364484
364490
|
transcript: normalizeMessagesForAPI(messages),
|
|
364485
364491
|
errors: sanitizedErrors,
|
|
364486
364492
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -364672,7 +364678,7 @@ function Feedback({
|
|
|
364672
364678
|
", ",
|
|
364673
364679
|
env2.terminal,
|
|
364674
364680
|
", v",
|
|
364675
|
-
"1.
|
|
364681
|
+
"1.64.0"
|
|
364676
364682
|
]
|
|
364677
364683
|
}, undefined, true, undefined, this)
|
|
364678
364684
|
]
|
|
@@ -364778,7 +364784,7 @@ ${sanitizedDescription}
|
|
|
364778
364784
|
` + `**Environment Info**
|
|
364779
364785
|
` + `- Platform: ${env2.platform}
|
|
364780
364786
|
` + `- Terminal: ${env2.terminal}
|
|
364781
|
-
` + `- Version: ${"1.
|
|
364787
|
+
` + `- Version: ${"1.64.0"}
|
|
364782
364788
|
` + `- Feedback ID: ${feedbackId}
|
|
364783
364789
|
` + `
|
|
364784
364790
|
**Errors**
|
|
@@ -367888,7 +367894,7 @@ function buildPrimarySection() {
|
|
|
367888
367894
|
}, undefined, false, undefined, this);
|
|
367889
367895
|
return [{
|
|
367890
367896
|
label: "Version",
|
|
367891
|
-
value: "1.
|
|
367897
|
+
value: "1.64.0"
|
|
367892
367898
|
}, {
|
|
367893
367899
|
label: "Session name",
|
|
367894
367900
|
value: nameValue
|
|
@@ -371218,7 +371224,7 @@ function Config({
|
|
|
371218
371224
|
}
|
|
371219
371225
|
}, undefined, false, undefined, this)
|
|
371220
371226
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
|
|
371221
|
-
currentVersion: "1.
|
|
371227
|
+
currentVersion: "1.64.0",
|
|
371222
371228
|
onChoice: (choice) => {
|
|
371223
371229
|
setShowSubmenu(null);
|
|
371224
371230
|
setTabsHidden(false);
|
|
@@ -371230,7 +371236,7 @@ function Config({
|
|
|
371230
371236
|
autoUpdatesChannel: "stable"
|
|
371231
371237
|
};
|
|
371232
371238
|
if (choice === "stay") {
|
|
371233
|
-
newSettings.minimumVersion = "1.
|
|
371239
|
+
newSettings.minimumVersion = "1.64.0";
|
|
371234
371240
|
}
|
|
371235
371241
|
updateSettingsForSource("userSettings", newSettings);
|
|
371236
371242
|
setSettingsData((prev_27) => ({
|
|
@@ -379294,7 +379300,7 @@ function HelpV2(t0) {
|
|
|
379294
379300
|
let t6;
|
|
379295
379301
|
if ($2[31] !== tabs) {
|
|
379296
379302
|
t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
|
|
379297
|
-
title: `UR v${"1.
|
|
379303
|
+
title: `UR v${"1.64.0"}`,
|
|
379298
379304
|
color: "professionalBlue",
|
|
379299
379305
|
defaultTab: "general",
|
|
379300
379306
|
children: tabs
|
|
@@ -380211,7 +380217,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
380211
380217
|
async function handleInitialize(options2) {
|
|
380212
380218
|
return {
|
|
380213
380219
|
name: "UR",
|
|
380214
|
-
version: "1.
|
|
380220
|
+
version: "1.64.0",
|
|
380215
380221
|
protocolVersion: "0.1.0",
|
|
380216
380222
|
workspaceRoot: options2.cwd,
|
|
380217
380223
|
capabilities: {
|
|
@@ -397319,7 +397325,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
397319
397325
|
return [];
|
|
397320
397326
|
}
|
|
397321
397327
|
}
|
|
397322
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.
|
|
397328
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.64.0") {
|
|
397323
397329
|
if (process.env.USER_TYPE === "ant") {
|
|
397324
397330
|
const changelog = "";
|
|
397325
397331
|
if (changelog) {
|
|
@@ -397346,7 +397352,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.63.0")
|
|
|
397346
397352
|
releaseNotes
|
|
397347
397353
|
};
|
|
397348
397354
|
}
|
|
397349
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.
|
|
397355
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.64.0") {
|
|
397350
397356
|
if (process.env.USER_TYPE === "ant") {
|
|
397351
397357
|
const changelog = "";
|
|
397352
397358
|
if (changelog) {
|
|
@@ -400203,7 +400209,7 @@ function getRecentActivitySync() {
|
|
|
400203
400209
|
return cachedActivity;
|
|
400204
400210
|
}
|
|
400205
400211
|
function getLogoDisplayData() {
|
|
400206
|
-
const version2 = process.env.DEMO_VERSION ?? "1.
|
|
400212
|
+
const version2 = process.env.DEMO_VERSION ?? "1.64.0";
|
|
400207
400213
|
const serverUrl = getDirectConnectServerUrl();
|
|
400208
400214
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
400209
400215
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -401087,7 +401093,7 @@ function LogoV2() {
|
|
|
401087
401093
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
401088
401094
|
t2 = () => {
|
|
401089
401095
|
const currentConfig2 = getGlobalConfig();
|
|
401090
|
-
if (currentConfig2.lastReleaseNotesSeen === "1.
|
|
401096
|
+
if (currentConfig2.lastReleaseNotesSeen === "1.64.0") {
|
|
401091
401097
|
return;
|
|
401092
401098
|
}
|
|
401093
401099
|
saveGlobalConfig(_temp327);
|
|
@@ -401772,12 +401778,12 @@ function LogoV2() {
|
|
|
401772
401778
|
return t41;
|
|
401773
401779
|
}
|
|
401774
401780
|
function _temp327(current) {
|
|
401775
|
-
if (current.lastReleaseNotesSeen === "1.
|
|
401781
|
+
if (current.lastReleaseNotesSeen === "1.64.0") {
|
|
401776
401782
|
return current;
|
|
401777
401783
|
}
|
|
401778
401784
|
return {
|
|
401779
401785
|
...current,
|
|
401780
|
-
lastReleaseNotesSeen: "1.
|
|
401786
|
+
lastReleaseNotesSeen: "1.64.0"
|
|
401781
401787
|
};
|
|
401782
401788
|
}
|
|
401783
401789
|
function _temp241(s_0) {
|
|
@@ -418575,7 +418581,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
418575
418581
|
if (spec.name !== specName) {
|
|
418576
418582
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
418577
418583
|
}
|
|
418578
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.
|
|
418584
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.64.0" : "1.64.0");
|
|
418579
418585
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
418580
418586
|
throw new Error("invalid ur-agent package version");
|
|
418581
418587
|
}
|
|
@@ -419568,7 +419574,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
419568
419574
|
path: ".github/workflows/ur.yml",
|
|
419569
419575
|
root: "project",
|
|
419570
419576
|
content: compileAgenticCiWorkflow("default", {
|
|
419571
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.
|
|
419577
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.64.0" : "1.64.0"
|
|
419572
419578
|
})
|
|
419573
419579
|
},
|
|
419574
419580
|
{
|
|
@@ -419631,7 +419637,7 @@ function value(tokens, flag) {
|
|
|
419631
419637
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
419632
419638
|
}
|
|
419633
419639
|
function cliVersion() {
|
|
419634
|
-
return typeof MACRO !== "undefined" ? "1.
|
|
419640
|
+
return typeof MACRO !== "undefined" ? "1.64.0" : "1.64.0";
|
|
419635
419641
|
}
|
|
419636
419642
|
function workflowPath(cwd2) {
|
|
419637
419643
|
return join159(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -425487,7 +425493,7 @@ function createAcpStdioApp(deps) {
|
|
|
425487
425493
|
}
|
|
425488
425494
|
},
|
|
425489
425495
|
authMethods: [],
|
|
425490
|
-
agentInfo: { name: "UR-Nexus", version: "1.
|
|
425496
|
+
agentInfo: { name: "UR-Nexus", version: "1.64.0" }
|
|
425491
425497
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
425492
425498
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
425493
425499
|
await runtime2.announce({
|
|
@@ -425584,7 +425590,7 @@ function createAcpStdioAgent(deps) {
|
|
|
425584
425590
|
}
|
|
425585
425591
|
},
|
|
425586
425592
|
authMethods: [],
|
|
425587
|
-
agentInfo: { name: "UR-Nexus", version: "1.
|
|
425593
|
+
agentInfo: { name: "UR-Nexus", version: "1.64.0" }
|
|
425588
425594
|
});
|
|
425589
425595
|
return;
|
|
425590
425596
|
case "authenticate":
|
|
@@ -435139,7 +435145,7 @@ var init_sources2 = __esm(() => {
|
|
|
435139
435145
|
});
|
|
435140
435146
|
|
|
435141
435147
|
// src/memdir/memoryIntegrity.ts
|
|
435142
|
-
import { createHash as createHash42 } from "crypto";
|
|
435148
|
+
import { createHash as createHash42, createHmac as createHmac2 } from "crypto";
|
|
435143
435149
|
import {
|
|
435144
435150
|
existsSync as existsSync65,
|
|
435145
435151
|
mkdirSync as mkdirSync46,
|
|
@@ -435150,6 +435156,23 @@ import {
|
|
|
435150
435156
|
writeFileSync as writeFileSync46
|
|
435151
435157
|
} from "fs";
|
|
435152
435158
|
import { join as join184, relative as relative42 } from "path";
|
|
435159
|
+
function signingKey(env4 = process.env) {
|
|
435160
|
+
const key = env4.UR_MEMORY_INTEGRITY_KEY?.trim();
|
|
435161
|
+
return key ? key : null;
|
|
435162
|
+
}
|
|
435163
|
+
function signManifest(files, key) {
|
|
435164
|
+
const canonical = Object.keys(files).sort().map((name) => `${name}:${files[name].digest}`).join(`
|
|
435165
|
+
`);
|
|
435166
|
+
return createHmac2("sha256", key).update(canonical).digest("hex");
|
|
435167
|
+
}
|
|
435168
|
+
function checkSignature(manifest, env4 = process.env) {
|
|
435169
|
+
const key = signingKey(env4);
|
|
435170
|
+
if (!manifest.signature)
|
|
435171
|
+
return "unsigned";
|
|
435172
|
+
if (!key)
|
|
435173
|
+
return "unverifiable";
|
|
435174
|
+
return signManifest(manifest.files, key) === manifest.signature ? "valid" : "invalid";
|
|
435175
|
+
}
|
|
435153
435176
|
function manifestPathFor2(dir) {
|
|
435154
435177
|
return join184(dir, MANIFEST_NAME);
|
|
435155
435178
|
}
|
|
@@ -435199,10 +435222,12 @@ function recordManifest(dir) {
|
|
|
435199
435222
|
bytes: statSync24(full).size
|
|
435200
435223
|
};
|
|
435201
435224
|
}
|
|
435225
|
+
const key = signingKey();
|
|
435202
435226
|
const manifest = {
|
|
435203
435227
|
version: 1,
|
|
435204
435228
|
updatedAt: new Date().toISOString(),
|
|
435205
|
-
files
|
|
435229
|
+
files,
|
|
435230
|
+
...key ? { signature: signManifest(files, key) } : {}
|
|
435206
435231
|
};
|
|
435207
435232
|
writeFileSync46(manifestPathFor2(dir), `${JSON.stringify(manifest, null, 2)}
|
|
435208
435233
|
`);
|
|
@@ -435249,7 +435274,8 @@ function verifyMemoryStore(dir) {
|
|
|
435249
435274
|
dir,
|
|
435250
435275
|
manifestPath: manifestPathFor2(dir),
|
|
435251
435276
|
exists: existsSync65(dir),
|
|
435252
|
-
|
|
435277
|
+
signature: manifest ? checkSignature(manifest) : "unsigned",
|
|
435278
|
+
valid: manifest !== null && checkSignature(manifest) !== "invalid" && checkSignature(manifest) !== "unverifiable" && entries.length > 0 && counts.modified === 0 && counts.untracked === 0 && counts.missing === 0,
|
|
435253
435279
|
entries,
|
|
435254
435280
|
counts
|
|
435255
435281
|
};
|
|
@@ -435281,6 +435307,17 @@ function formatMemoryIntegrity(report, json2) {
|
|
|
435281
435307
|
return `${report.dir}
|
|
435282
435308
|
` + ` no such directory \u2014 nothing was checked. If you expected memory here,
|
|
435283
435309
|
` + ` the path is wrong; verifying a path that does not exist proves nothing.`;
|
|
435310
|
+
}
|
|
435311
|
+
if (report.signature === "invalid") {
|
|
435312
|
+
return `${report.dir}
|
|
435313
|
+
` + ` SIGNATURE INVALID \u2014 the manifest does not match its signature.
|
|
435314
|
+
` + ` Someone with write access to this directory rewrote the manifest
|
|
435315
|
+
` + ` without the key. Treat every file here as untrusted.`;
|
|
435316
|
+
}
|
|
435317
|
+
if (report.signature === "unverifiable") {
|
|
435318
|
+
return `${report.dir}
|
|
435319
|
+
` + ` signed, but UR_MEMORY_INTEGRITY_KEY is not set, so the signature
|
|
435320
|
+
` + ` could not be checked. Nothing here can be vouched for without it.`;
|
|
435284
435321
|
}
|
|
435285
435322
|
if (report.entries.length === 0) {
|
|
435286
435323
|
return `${report.dir}
|
|
@@ -435371,7 +435408,7 @@ var call80 = async (args) => {
|
|
|
435371
435408
|
};
|
|
435372
435409
|
}
|
|
435373
435410
|
const reports = stores.map((dir) => verifyMemoryStore(dir));
|
|
435374
|
-
const tampered = reports.some((report) => report.counts.modified > 0 || report.counts.missing > 0 || report.counts.untracked > 0);
|
|
435411
|
+
const tampered = reports.some((report) => report.counts.modified > 0 || report.counts.missing > 0 || report.counts.untracked > 0 || report.signature === "invalid" || report.signature === "unverifiable");
|
|
435375
435412
|
if (tampered)
|
|
435376
435413
|
process.exitCode = 1;
|
|
435377
435414
|
return {
|
|
@@ -435618,9 +435655,17 @@ var init_selfTest = __esm(() => {
|
|
|
435618
435655
|
id: "fan-out-limit",
|
|
435619
435656
|
feature: "agent fan-out limits",
|
|
435620
435657
|
kind: "manual",
|
|
435621
|
-
action: '
|
|
435622
|
-
expect: "the cap
|
|
435623
|
-
rationale: "
|
|
435658
|
+
action: 'In the UR repo, ask for NESTED fan-out: "review every directory in src/tools, and have each reviewer spawn a subagent per file it finds"',
|
|
435659
|
+
expect: "once ~20 agents are live the cap fires, and the refusal names agents.maxConcurrent so you can raise it",
|
|
435660
|
+
rationale: "Asking for 30 agents in one turn does NOT test this: MAX_CONCURRENT_TOOLS caps a single turn at 8, so the 20-agent limit is only reachable by nesting. An earlier version of this drill made that mistake and reported the wrong limit firing."
|
|
435661
|
+
},
|
|
435662
|
+
{
|
|
435663
|
+
id: "tool-result-pruning",
|
|
435664
|
+
feature: "context.pruneToolResults",
|
|
435665
|
+
kind: "manual",
|
|
435666
|
+
action: 'Run a long session that reads many large files (e.g. "read every file in src/services/api and summarise each"), then watch for the prune notice and check /context',
|
|
435667
|
+
expect: "a line reporting how many tool results were pruned and roughly how many tokens that freed; context stops climbing where it previously kept filling",
|
|
435668
|
+
rationale: "Pruning only fires inside a live query loop, so no automated drill can reach it. It is on by default and changes context for every session, which makes it the least-verified thing shipped."
|
|
435624
435669
|
},
|
|
435625
435670
|
{
|
|
435626
435671
|
id: "btw-full-question",
|
|
@@ -633919,7 +633964,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
633919
633964
|
smapsRollup,
|
|
633920
633965
|
platform: process.platform,
|
|
633921
633966
|
nodeVersion: process.version,
|
|
633922
|
-
ccVersion: "1.
|
|
633967
|
+
ccVersion: "1.64.0"
|
|
633923
633968
|
};
|
|
633924
633969
|
}
|
|
633925
633970
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -634499,7 +634544,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
634499
634544
|
var call153 = async () => {
|
|
634500
634545
|
return {
|
|
634501
634546
|
type: "text",
|
|
634502
|
-
value: "1.
|
|
634547
|
+
value: "1.64.0"
|
|
634503
634548
|
};
|
|
634504
634549
|
}, version2, version_default;
|
|
634505
634550
|
var init_version = __esm(() => {
|
|
@@ -645570,7 +645615,7 @@ function generateHtmlReport(data, insights) {
|
|
|
645570
645615
|
</html>`;
|
|
645571
645616
|
}
|
|
645572
645617
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
645573
|
-
const version3 = typeof MACRO !== "undefined" ? "1.
|
|
645618
|
+
const version3 = typeof MACRO !== "undefined" ? "1.64.0" : "unknown";
|
|
645574
645619
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
645575
645620
|
const facets_summary = {
|
|
645576
645621
|
total: facets.size,
|
|
@@ -649881,7 +649926,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
649881
649926
|
init_settings2();
|
|
649882
649927
|
init_slowOperations();
|
|
649883
649928
|
init_uuid();
|
|
649884
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.
|
|
649929
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.64.0" : "unknown";
|
|
649885
649930
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
649886
649931
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
649887
649932
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -651096,7 +651141,7 @@ var init_filesystem = __esm(() => {
|
|
|
651096
651141
|
});
|
|
651097
651142
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
651098
651143
|
const nonce = randomBytes20(16).toString("hex");
|
|
651099
|
-
return join232(getURTempDir(), "bundled-skills", "1.
|
|
651144
|
+
return join232(getURTempDir(), "bundled-skills", "1.64.0", nonce);
|
|
651100
651145
|
});
|
|
651101
651146
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
651102
651147
|
});
|
|
@@ -657391,7 +657436,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
657391
657436
|
}
|
|
657392
657437
|
function computeFingerprintFromMessages(messages) {
|
|
657393
657438
|
const firstMessageText = extractFirstMessageText(messages);
|
|
657394
|
-
return computeFingerprint(firstMessageText, "1.
|
|
657439
|
+
return computeFingerprint(firstMessageText, "1.64.0");
|
|
657395
657440
|
}
|
|
657396
657441
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
657397
657442
|
var init_fingerprint = () => {};
|
|
@@ -659287,7 +659332,7 @@ async function sideQuery(opts) {
|
|
|
659287
659332
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
659288
659333
|
}
|
|
659289
659334
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
659290
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.
|
|
659335
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.64.0");
|
|
659291
659336
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
659292
659337
|
const systemBlocks = [
|
|
659293
659338
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -664058,7 +664103,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
664058
664103
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
664059
664104
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
664060
664105
|
betas: getSdkBetas(),
|
|
664061
|
-
ur_version: "1.
|
|
664106
|
+
ur_version: "1.64.0",
|
|
664062
664107
|
output_style: outputStyle2,
|
|
664063
664108
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
664064
664109
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -677918,7 +677963,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
677918
677963
|
function getSemverPart(version3) {
|
|
677919
677964
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
677920
677965
|
}
|
|
677921
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.
|
|
677966
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.64.0") {
|
|
677922
677967
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react222.useState(() => getSemverPart(initialVersion));
|
|
677923
677968
|
if (!updatedVersion) {
|
|
677924
677969
|
return null;
|
|
@@ -677967,7 +678012,7 @@ function AutoUpdater({
|
|
|
677967
678012
|
return;
|
|
677968
678013
|
}
|
|
677969
678014
|
if (false) {}
|
|
677970
|
-
const currentVersion = "1.
|
|
678015
|
+
const currentVersion = "1.64.0";
|
|
677971
678016
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
677972
678017
|
let latestVersion = await getLatestVersion(channel);
|
|
677973
678018
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -678196,12 +678241,12 @@ function NativeAutoUpdater({
|
|
|
678196
678241
|
logEvent("tengu_native_auto_updater_start", {});
|
|
678197
678242
|
try {
|
|
678198
678243
|
const maxVersion = await getMaxVersion();
|
|
678199
|
-
if (maxVersion && gt("1.
|
|
678244
|
+
if (maxVersion && gt("1.64.0", maxVersion)) {
|
|
678200
678245
|
const msg = await getMaxVersionMessage();
|
|
678201
678246
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
678202
678247
|
}
|
|
678203
678248
|
const result = await installLatest(channel);
|
|
678204
|
-
const currentVersion = "1.
|
|
678249
|
+
const currentVersion = "1.64.0";
|
|
678205
678250
|
const latencyMs = Date.now() - startTime;
|
|
678206
678251
|
if (result.lockFailed) {
|
|
678207
678252
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -678338,17 +678383,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
678338
678383
|
const maxVersion = await getMaxVersion();
|
|
678339
678384
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
678340
678385
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
678341
|
-
if (gte("1.
|
|
678342
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.
|
|
678386
|
+
if (gte("1.64.0", maxVersion)) {
|
|
678387
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.64.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
678343
678388
|
setUpdateAvailable(false);
|
|
678344
678389
|
return;
|
|
678345
678390
|
}
|
|
678346
678391
|
latest = maxVersion;
|
|
678347
678392
|
}
|
|
678348
|
-
const hasUpdate = latest && !gte("1.
|
|
678393
|
+
const hasUpdate = latest && !gte("1.64.0", latest) && !shouldSkipVersion(latest);
|
|
678349
678394
|
setUpdateAvailable(!!hasUpdate);
|
|
678350
678395
|
if (hasUpdate) {
|
|
678351
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.
|
|
678396
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.64.0"} -> ${latest}`);
|
|
678352
678397
|
}
|
|
678353
678398
|
};
|
|
678354
678399
|
$2[0] = t1;
|
|
@@ -678382,7 +678427,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
678382
678427
|
wrap: "truncate",
|
|
678383
678428
|
children: [
|
|
678384
678429
|
"currentVersion: ",
|
|
678385
|
-
"1.
|
|
678430
|
+
"1.64.0"
|
|
678386
678431
|
]
|
|
678387
678432
|
}, undefined, true, undefined, this);
|
|
678388
678433
|
$2[3] = verbose;
|
|
@@ -689079,7 +689124,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
689079
689124
|
project_dir: getOriginalCwd(),
|
|
689080
689125
|
added_dirs: addedDirs
|
|
689081
689126
|
},
|
|
689082
|
-
version: "1.
|
|
689127
|
+
version: "1.64.0",
|
|
689083
689128
|
output_style: {
|
|
689084
689129
|
name: outputStyleName
|
|
689085
689130
|
},
|
|
@@ -689162,7 +689207,7 @@ function StatusLineInner({
|
|
|
689162
689207
|
const taskValues = Object.values(tasks2);
|
|
689163
689208
|
const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
|
|
689164
689209
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
689165
|
-
version: "1.
|
|
689210
|
+
version: "1.64.0",
|
|
689166
689211
|
providerLabel: providerRuntime.providerLabel,
|
|
689167
689212
|
authMode: providerRuntime.authLabel,
|
|
689168
689213
|
model: providerRuntime.model ?? renderModelName(mainLoopModel),
|
|
@@ -701305,7 +701350,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
701305
701350
|
} catch {}
|
|
701306
701351
|
const data = {
|
|
701307
701352
|
trigger: trigger2,
|
|
701308
|
-
version: "1.
|
|
701353
|
+
version: "1.64.0",
|
|
701309
701354
|
platform: process.platform,
|
|
701310
701355
|
transcript,
|
|
701311
701356
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -713585,7 +713630,7 @@ function WelcomeV2() {
|
|
|
713585
713630
|
dimColor: true,
|
|
713586
713631
|
children: [
|
|
713587
713632
|
"v",
|
|
713588
|
-
"1.
|
|
713633
|
+
"1.64.0"
|
|
713589
713634
|
]
|
|
713590
713635
|
}, undefined, true, undefined, this)
|
|
713591
713636
|
]
|
|
@@ -714845,7 +714890,7 @@ function completeOnboarding() {
|
|
|
714845
714890
|
saveGlobalConfig((current) => ({
|
|
714846
714891
|
...current,
|
|
714847
714892
|
hasCompletedOnboarding: true,
|
|
714848
|
-
lastOnboardingVersion: "1.
|
|
714893
|
+
lastOnboardingVersion: "1.64.0"
|
|
714849
714894
|
}));
|
|
714850
714895
|
}
|
|
714851
714896
|
function showDialog(root2, renderer) {
|
|
@@ -719889,7 +719934,7 @@ function appendToLog(path24, message) {
|
|
|
719889
719934
|
cwd: getFsImplementation().cwd(),
|
|
719890
719935
|
userType: process.env.USER_TYPE,
|
|
719891
719936
|
sessionId: getSessionId(),
|
|
719892
|
-
version: "1.
|
|
719937
|
+
version: "1.64.0"
|
|
719893
719938
|
};
|
|
719894
719939
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
719895
719940
|
}
|
|
@@ -724048,8 +724093,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
724048
724093
|
}
|
|
724049
724094
|
async function checkEnvLessBridgeMinVersion() {
|
|
724050
724095
|
const cfg = await getEnvLessBridgeConfig();
|
|
724051
|
-
if (cfg.min_version && lt("1.
|
|
724052
|
-
return `Your version of UR (${"1.
|
|
724096
|
+
if (cfg.min_version && lt("1.64.0", cfg.min_version)) {
|
|
724097
|
+
return `Your version of UR (${"1.64.0"}) is too old for Remote Control.
|
|
724053
724098
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
724054
724099
|
}
|
|
724055
724100
|
return null;
|
|
@@ -724523,7 +724568,7 @@ async function initBridgeCore(params) {
|
|
|
724523
724568
|
const rawApi = createBridgeApiClient({
|
|
724524
724569
|
baseUrl,
|
|
724525
724570
|
getAccessToken,
|
|
724526
|
-
runnerVersion: "1.
|
|
724571
|
+
runnerVersion: "1.64.0",
|
|
724527
724572
|
onDebug: logForDebugging,
|
|
724528
724573
|
onAuth401,
|
|
724529
724574
|
getTrustedDeviceToken
|
|
@@ -733999,7 +734044,7 @@ function getAgUiCapabilities() {
|
|
|
733999
734044
|
name: "UR-Nexus",
|
|
734000
734045
|
type: "ur-nexus",
|
|
734001
734046
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
734002
|
-
version: "1.
|
|
734047
|
+
version: "1.64.0",
|
|
734003
734048
|
provider: "UR",
|
|
734004
734049
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
734005
734050
|
},
|
|
@@ -735139,7 +735184,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
735139
735184
|
};
|
|
735140
735185
|
const server2 = new Server({
|
|
735141
735186
|
name: "ur-nexus",
|
|
735142
|
-
version: "1.
|
|
735187
|
+
version: "1.64.0"
|
|
735143
735188
|
}, {
|
|
735144
735189
|
capabilities: {
|
|
735145
735190
|
tools: {}
|
|
@@ -736297,7 +736342,7 @@ function thrownResponse(error40) {
|
|
|
736297
736342
|
}
|
|
736298
736343
|
async function createUrMcp2026Runtime(options4) {
|
|
736299
736344
|
const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
|
|
736300
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.
|
|
736345
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.64.0" }, { capabilities: {} });
|
|
736301
736346
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
736302
736347
|
try {
|
|
736303
736348
|
await server2.connect(serverTransport);
|
|
@@ -736308,7 +736353,7 @@ async function createUrMcp2026Runtime(options4) {
|
|
|
736308
736353
|
}
|
|
736309
736354
|
const runtime2 = new Mcp2026Runtime({
|
|
736310
736355
|
cwd: options4.cwd,
|
|
736311
|
-
version: "1.
|
|
736356
|
+
version: "1.64.0",
|
|
736312
736357
|
backend: {
|
|
736313
736358
|
listTools: async () => {
|
|
736314
736359
|
const listed = await client2.listTools();
|
|
@@ -738441,7 +738486,7 @@ async function update() {
|
|
|
738441
738486
|
logEvent("tengu_update_check", {});
|
|
738442
738487
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
738443
738488
|
const result = await checkUpgradeStatus({
|
|
738444
|
-
currentVersion: "1.
|
|
738489
|
+
currentVersion: "1.64.0",
|
|
738445
738490
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
738446
738491
|
installationType: diagnostic2.installationType,
|
|
738447
738492
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -739757,7 +739802,7 @@ ${customInstructions}` : customInstructions;
|
|
|
739757
739802
|
}
|
|
739758
739803
|
}
|
|
739759
739804
|
logForDiagnosticsNoPII("info", "started", {
|
|
739760
|
-
version: "1.
|
|
739805
|
+
version: "1.64.0",
|
|
739761
739806
|
is_native_binary: isInBundledMode()
|
|
739762
739807
|
});
|
|
739763
739808
|
registerCleanup(async () => {
|
|
@@ -740543,7 +740588,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
740543
740588
|
pendingHookMessages
|
|
740544
740589
|
}, renderAndRun);
|
|
740545
740590
|
}
|
|
740546
|
-
}).version("1.
|
|
740591
|
+
}).version("1.64.0 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
740547
740592
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
740548
740593
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
740549
740594
|
if (canUserConfigureAdvisor()) {
|
|
@@ -741595,7 +741640,7 @@ if (false) {}
|
|
|
741595
741640
|
async function main2() {
|
|
741596
741641
|
const args = process.argv.slice(2);
|
|
741597
741642
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
741598
|
-
console.log(`${"1.
|
|
741643
|
+
console.log(`${"1.64.0"} (UR-Nexus)`);
|
|
741599
741644
|
return;
|
|
741600
741645
|
}
|
|
741601
741646
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|
package/documentation/index.html
CHANGED
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
<main id="content" class="content">
|
|
46
46
|
<header class="topbar">
|
|
47
47
|
<div>
|
|
48
|
-
<p class="eyebrow">Version 1.
|
|
48
|
+
<p class="eyebrow">Version 1.64.0</p>
|
|
49
49
|
<h1>UR-Nexus Documentation</h1>
|
|
50
50
|
<p class="lead">A practical, tutorial-style reference for installing, configuring, automating, extending, and operating UR-Nexus.</p>
|
|
51
51
|
</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.
|
|
5
|
+
"version": "1.64.0",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ur-agent",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.64.0",
|
|
4
4
|
"description": "UR-Nexus — autonomous engineering workflow engine (plan, execute, test, verify, document, benchmark, reproduce)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "bun@1.3.14",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"@ag-ui/core": "0.0.57",
|
|
85
85
|
"@ag-ui/encoder": "0.0.57",
|
|
86
86
|
"diff2html": "^3.4.56",
|
|
87
|
-
"playwright-core": "^1.
|
|
87
|
+
"playwright-core": "^1.64.0",
|
|
88
88
|
"sharp": "^0.35.3"
|
|
89
89
|
},
|
|
90
90
|
"devDependencies": {
|