ur-agent 1.65.2 → 1.65.3
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,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.65.3
|
|
4
|
+
|
|
5
|
+
- Removed two tips for things that do not exist: `/mobile to use UR from the
|
|
6
|
+
UR app on your phone` (no such command, no such app) and a pointer to
|
|
7
|
+
`ur.ai/web` (no DNS record, same dead domain class as the `ur.com` links
|
|
8
|
+
removed earlier). Tips are the first thing a new user reads, so a tip for
|
|
9
|
+
something that is not there is the worst place to be wrong.
|
|
10
|
+
- Added short tips covering the command surface that was going unnoticed —
|
|
11
|
+
spec-driven development, compiler-accurate renames, semantic code search,
|
|
12
|
+
crews and arenas, evals, guardrails, the audit trail, the security suite,
|
|
13
|
+
research and multimodal commands, and the tools added this week. One line
|
|
14
|
+
each: the goal is recall, not documentation.
|
|
15
|
+
- Added `test/tipsAreReal.test.ts`: every command a tip names must exist in the
|
|
16
|
+
slash-command reference, and no tip may reference a domain UR does not own.
|
|
17
|
+
It also asserts the checker finds real citations, so it cannot start passing
|
|
18
|
+
vacuously on an empty match.
|
|
19
|
+
|
|
3
20
|
## 1.65.2
|
|
4
21
|
|
|
5
22
|
- Fixed `--discover-ollama` having no effect on model discovery or requests.
|
package/dist/cli.js
CHANGED
|
@@ -75238,7 +75238,7 @@ var init_auth = __esm(() => {
|
|
|
75238
75238
|
|
|
75239
75239
|
// src/utils/userAgent.ts
|
|
75240
75240
|
function getURCodeUserAgent() {
|
|
75241
|
-
return `ur/${"1.65.
|
|
75241
|
+
return `ur/${"1.65.3"}`;
|
|
75242
75242
|
}
|
|
75243
75243
|
|
|
75244
75244
|
// src/utils/workloadContext.ts
|
|
@@ -75260,7 +75260,7 @@ function getUserAgent() {
|
|
|
75260
75260
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
75261
75261
|
const workload = getWorkload();
|
|
75262
75262
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
75263
|
-
return `ur-cli/${"1.65.
|
|
75263
|
+
return `ur-cli/${"1.65.3"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
75264
75264
|
}
|
|
75265
75265
|
function getMCPUserAgent() {
|
|
75266
75266
|
const parts = [];
|
|
@@ -75274,7 +75274,7 @@ function getMCPUserAgent() {
|
|
|
75274
75274
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
75275
75275
|
}
|
|
75276
75276
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
75277
|
-
return `ur/${"1.65.
|
|
75277
|
+
return `ur/${"1.65.3"}${suffix}`;
|
|
75278
75278
|
}
|
|
75279
75279
|
function getWebFetchUserAgent() {
|
|
75280
75280
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -75412,7 +75412,7 @@ var init_user = __esm(() => {
|
|
|
75412
75412
|
deviceId,
|
|
75413
75413
|
sessionId: getSessionId(),
|
|
75414
75414
|
email: getEmail(),
|
|
75415
|
-
appVersion: "1.65.
|
|
75415
|
+
appVersion: "1.65.3",
|
|
75416
75416
|
platform: getHostPlatformForAnalytics(),
|
|
75417
75417
|
organizationUuid,
|
|
75418
75418
|
accountUuid,
|
|
@@ -83612,7 +83612,7 @@ var init_metadata = __esm(() => {
|
|
|
83612
83612
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
83613
83613
|
WHITESPACE_REGEX = /\s+/;
|
|
83614
83614
|
getVersionBase = memoize_default(() => {
|
|
83615
|
-
const match = "1.65.
|
|
83615
|
+
const match = "1.65.3".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
83616
83616
|
return match ? match[0] : undefined;
|
|
83617
83617
|
});
|
|
83618
83618
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -83652,7 +83652,7 @@ var init_metadata = __esm(() => {
|
|
|
83652
83652
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
83653
83653
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
83654
83654
|
isURAiAuth: isURAISubscriber(),
|
|
83655
|
-
version: "1.65.
|
|
83655
|
+
version: "1.65.3",
|
|
83656
83656
|
versionBase: getVersionBase(),
|
|
83657
83657
|
buildTime: "",
|
|
83658
83658
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -84322,7 +84322,7 @@ function initialize1PEventLogging() {
|
|
|
84322
84322
|
const platform2 = getPlatform();
|
|
84323
84323
|
const attributes = {
|
|
84324
84324
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
84325
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.65.
|
|
84325
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.65.3"
|
|
84326
84326
|
};
|
|
84327
84327
|
if (platform2 === "wsl") {
|
|
84328
84328
|
const wslVersion = getWslVersion();
|
|
@@ -84350,7 +84350,7 @@ function initialize1PEventLogging() {
|
|
|
84350
84350
|
})
|
|
84351
84351
|
]
|
|
84352
84352
|
});
|
|
84353
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.65.
|
|
84353
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.65.3");
|
|
84354
84354
|
}
|
|
84355
84355
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
84356
84356
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -94205,7 +94205,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
|
|
|
94205
94205
|
function formatA2AAgentCard(options = {}, pretty = true) {
|
|
94206
94206
|
return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
|
|
94207
94207
|
}
|
|
94208
|
-
var urVersion = "1.65.
|
|
94208
|
+
var urVersion = "1.65.3", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
|
|
94209
94209
|
var init_trends = __esm(() => {
|
|
94210
94210
|
init_a2aCardSignature();
|
|
94211
94211
|
coverage = [
|
|
@@ -97008,7 +97008,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
97008
97008
|
if (!isAttributionHeaderEnabled()) {
|
|
97009
97009
|
return "";
|
|
97010
97010
|
}
|
|
97011
|
-
const version2 = `${"1.65.
|
|
97011
|
+
const version2 = `${"1.65.3"}.${fingerprint}`;
|
|
97012
97012
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
97013
97013
|
const cch = "";
|
|
97014
97014
|
const workload = getWorkload();
|
|
@@ -154772,7 +154772,7 @@ var init_projectSafety = __esm(() => {
|
|
|
154772
154772
|
function getInstruments() {
|
|
154773
154773
|
if (instruments)
|
|
154774
154774
|
return instruments;
|
|
154775
|
-
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.65.
|
|
154775
|
+
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.65.3");
|
|
154776
154776
|
instruments = {
|
|
154777
154777
|
operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
|
|
154778
154778
|
description: "GenAI operation duration.",
|
|
@@ -154870,7 +154870,7 @@ function genAiAgentAttributes() {
|
|
|
154870
154870
|
"gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
|
|
154871
154871
|
"gen_ai.provider.name": "ur",
|
|
154872
154872
|
"gen_ai.agent.name": "UR-Nexus",
|
|
154873
|
-
"gen_ai.agent.version": "1.65.
|
|
154873
|
+
"gen_ai.agent.version": "1.65.3"
|
|
154874
154874
|
};
|
|
154875
154875
|
}
|
|
154876
154876
|
function genAiWorkflowAttributes(workflowName) {
|
|
@@ -154886,7 +154886,7 @@ function genAiWorkflowAttributes(workflowName) {
|
|
|
154886
154886
|
function startGenAiWorkflowSpan(workflowName) {
|
|
154887
154887
|
const attributes = genAiWorkflowAttributes(workflowName);
|
|
154888
154888
|
const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
|
|
154889
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.65.
|
|
154889
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.65.3").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
154890
154890
|
}
|
|
154891
154891
|
function endGenAiWorkflowSpan(span, options2 = {}) {
|
|
154892
154892
|
try {
|
|
@@ -154924,7 +154924,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
|
|
|
154924
154924
|
if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
|
|
154925
154925
|
attributes["gen_ai.memory.record.count"] = options2.recordCount;
|
|
154926
154926
|
}
|
|
154927
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.65.
|
|
154927
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.65.3").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
154928
154928
|
}
|
|
154929
154929
|
function endGenAiMemorySpan(span, options2 = {}) {
|
|
154930
154930
|
try {
|
|
@@ -206443,7 +206443,7 @@ function getTelemetryAttributes() {
|
|
|
206443
206443
|
attributes["session.id"] = sessionId;
|
|
206444
206444
|
}
|
|
206445
206445
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
206446
|
-
attributes["app.version"] = "1.65.
|
|
206446
|
+
attributes["app.version"] = "1.65.3";
|
|
206447
206447
|
}
|
|
206448
206448
|
const oauthAccount = getOauthAccountInfo();
|
|
206449
206449
|
if (oauthAccount) {
|
|
@@ -252980,7 +252980,7 @@ function getInstallationEnv() {
|
|
|
252980
252980
|
return;
|
|
252981
252981
|
}
|
|
252982
252982
|
function getURCodeVersion() {
|
|
252983
|
-
return "1.65.
|
|
252983
|
+
return "1.65.3";
|
|
252984
252984
|
}
|
|
252985
252985
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
252986
252986
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -260311,7 +260311,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
260311
260311
|
const client2 = new Client({
|
|
260312
260312
|
name: "ur",
|
|
260313
260313
|
title: "UR",
|
|
260314
|
-
version: "1.65.
|
|
260314
|
+
version: "1.65.3",
|
|
260315
260315
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
260316
260316
|
websiteUrl: PRODUCT_URL
|
|
260317
260317
|
}, {
|
|
@@ -260671,7 +260671,7 @@ var init_client5 = __esm(() => {
|
|
|
260671
260671
|
const client2 = new Client({
|
|
260672
260672
|
name: "ur",
|
|
260673
260673
|
title: "UR",
|
|
260674
|
-
version: "1.65.
|
|
260674
|
+
version: "1.65.3",
|
|
260675
260675
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
260676
260676
|
websiteUrl: PRODUCT_URL
|
|
260677
260677
|
}, {
|
|
@@ -273272,7 +273272,7 @@ async function createRuntime() {
|
|
|
273272
273272
|
bootstrapTelemetry();
|
|
273273
273273
|
const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
|
|
273274
273274
|
[import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
|
|
273275
|
-
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.65.
|
|
273275
|
+
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.65.3"
|
|
273276
273276
|
}));
|
|
273277
273277
|
const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
|
|
273278
273278
|
resource,
|
|
@@ -273305,11 +273305,11 @@ async function createRuntime() {
|
|
|
273305
273305
|
setMeterProvider(meterProvider);
|
|
273306
273306
|
setLoggerProvider(loggerProvider);
|
|
273307
273307
|
if (meterProvider) {
|
|
273308
|
-
const meter = meterProvider.getMeter("ur-agent", "1.65.
|
|
273308
|
+
const meter = meterProvider.getMeter("ur-agent", "1.65.3");
|
|
273309
273309
|
setMeter(meter, (name, options2) => meter.createCounter(name, options2));
|
|
273310
273310
|
}
|
|
273311
273311
|
if (loggerProvider) {
|
|
273312
|
-
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.65.
|
|
273312
|
+
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.65.3"));
|
|
273313
273313
|
}
|
|
273314
273314
|
if (!cleanupRegistered2) {
|
|
273315
273315
|
cleanupRegistered2 = true;
|
|
@@ -273971,9 +273971,9 @@ async function assertMinVersion() {
|
|
|
273971
273971
|
if (false) {}
|
|
273972
273972
|
try {
|
|
273973
273973
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
273974
|
-
if (versionConfig.minVersion && lt("1.65.
|
|
273974
|
+
if (versionConfig.minVersion && lt("1.65.3", versionConfig.minVersion)) {
|
|
273975
273975
|
console.error(`
|
|
273976
|
-
It looks like your version of UR (${"1.65.
|
|
273976
|
+
It looks like your version of UR (${"1.65.3"}) needs an update.
|
|
273977
273977
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
273978
273978
|
|
|
273979
273979
|
To update, please run:
|
|
@@ -274189,7 +274189,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
274189
274189
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
274190
274190
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
274191
274191
|
pid: process.pid,
|
|
274192
|
-
currentVersion: "1.65.
|
|
274192
|
+
currentVersion: "1.65.3"
|
|
274193
274193
|
});
|
|
274194
274194
|
return "in_progress";
|
|
274195
274195
|
}
|
|
@@ -274198,7 +274198,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
274198
274198
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
274199
274199
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
274200
274200
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
274201
|
-
currentVersion: "1.65.
|
|
274201
|
+
currentVersion: "1.65.3"
|
|
274202
274202
|
});
|
|
274203
274203
|
console.error(`
|
|
274204
274204
|
Error: Windows NPM detected in WSL
|
|
@@ -274733,7 +274733,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
274733
274733
|
}
|
|
274734
274734
|
async function getDoctorDiagnostic() {
|
|
274735
274735
|
const installationType = await getCurrentInstallationType();
|
|
274736
|
-
const version2 = typeof MACRO !== "undefined" ? "1.65.
|
|
274736
|
+
const version2 = typeof MACRO !== "undefined" ? "1.65.3" : "unknown";
|
|
274737
274737
|
const installationPath = await getInstallationPath();
|
|
274738
274738
|
const invokedBinary = getInvokedBinary();
|
|
274739
274739
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -275668,8 +275668,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
275668
275668
|
const maxVersion = await getMaxVersion();
|
|
275669
275669
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
275670
275670
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
275671
|
-
if (gte("1.65.
|
|
275672
|
-
logForDebugging(`Native installer: current version ${"1.65.
|
|
275671
|
+
if (gte("1.65.3", maxVersion)) {
|
|
275672
|
+
logForDebugging(`Native installer: current version ${"1.65.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
275673
275673
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
275674
275674
|
latency_ms: Date.now() - startTime,
|
|
275675
275675
|
max_version: maxVersion,
|
|
@@ -275680,7 +275680,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
275680
275680
|
version2 = maxVersion;
|
|
275681
275681
|
}
|
|
275682
275682
|
}
|
|
275683
|
-
if (!forceReinstall && version2 === "1.65.
|
|
275683
|
+
if (!forceReinstall && version2 === "1.65.3" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
275684
275684
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
275685
275685
|
logEvent("tengu_native_update_complete", {
|
|
275686
275686
|
latency_ms: Date.now() - startTime,
|
|
@@ -345975,7 +345975,7 @@ function isAnyTracingEnabled() {
|
|
|
345975
345975
|
return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
|
|
345976
345976
|
}
|
|
345977
345977
|
function getTracer() {
|
|
345978
|
-
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.65.
|
|
345978
|
+
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.65.3");
|
|
345979
345979
|
}
|
|
345980
345980
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
345981
345981
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -375568,7 +375568,7 @@ function Feedback({
|
|
|
375568
375568
|
platform: env2.platform,
|
|
375569
375569
|
gitRepo: envInfo.isGit,
|
|
375570
375570
|
terminal: env2.terminal,
|
|
375571
|
-
version: "1.65.
|
|
375571
|
+
version: "1.65.3",
|
|
375572
375572
|
transcript: normalizeMessagesForAPI(messages),
|
|
375573
375573
|
errors: sanitizedErrors,
|
|
375574
375574
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -375760,7 +375760,7 @@ function Feedback({
|
|
|
375760
375760
|
", ",
|
|
375761
375761
|
env2.terminal,
|
|
375762
375762
|
", v",
|
|
375763
|
-
"1.65.
|
|
375763
|
+
"1.65.3"
|
|
375764
375764
|
]
|
|
375765
375765
|
}, undefined, true, undefined, this)
|
|
375766
375766
|
]
|
|
@@ -375866,7 +375866,7 @@ ${sanitizedDescription}
|
|
|
375866
375866
|
` + `**Environment Info**
|
|
375867
375867
|
` + `- Platform: ${env2.platform}
|
|
375868
375868
|
` + `- Terminal: ${env2.terminal}
|
|
375869
|
-
` + `- Version: ${"1.65.
|
|
375869
|
+
` + `- Version: ${"1.65.3"}
|
|
375870
375870
|
` + `- Feedback ID: ${feedbackId}
|
|
375871
375871
|
` + `
|
|
375872
375872
|
**Errors**
|
|
@@ -378976,7 +378976,7 @@ function buildPrimarySection() {
|
|
|
378976
378976
|
}, undefined, false, undefined, this);
|
|
378977
378977
|
return [{
|
|
378978
378978
|
label: "Version",
|
|
378979
|
-
value: "1.65.
|
|
378979
|
+
value: "1.65.3"
|
|
378980
378980
|
}, {
|
|
378981
378981
|
label: "Session name",
|
|
378982
378982
|
value: nameValue
|
|
@@ -382306,7 +382306,7 @@ function Config({
|
|
|
382306
382306
|
}
|
|
382307
382307
|
}, undefined, false, undefined, this)
|
|
382308
382308
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
|
|
382309
|
-
currentVersion: "1.65.
|
|
382309
|
+
currentVersion: "1.65.3",
|
|
382310
382310
|
onChoice: (choice) => {
|
|
382311
382311
|
setShowSubmenu(null);
|
|
382312
382312
|
setTabsHidden(false);
|
|
@@ -382318,7 +382318,7 @@ function Config({
|
|
|
382318
382318
|
autoUpdatesChannel: "stable"
|
|
382319
382319
|
};
|
|
382320
382320
|
if (choice === "stay") {
|
|
382321
|
-
newSettings.minimumVersion = "1.65.
|
|
382321
|
+
newSettings.minimumVersion = "1.65.3";
|
|
382322
382322
|
}
|
|
382323
382323
|
updateSettingsForSource("userSettings", newSettings);
|
|
382324
382324
|
setSettingsData((prev_27) => ({
|
|
@@ -390382,7 +390382,7 @@ function HelpV2(t0) {
|
|
|
390382
390382
|
let t6;
|
|
390383
390383
|
if ($2[31] !== tabs) {
|
|
390384
390384
|
t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
|
|
390385
|
-
title: `UR v${"1.65.
|
|
390385
|
+
title: `UR v${"1.65.3"}`,
|
|
390386
390386
|
color: "professionalBlue",
|
|
390387
390387
|
defaultTab: "general",
|
|
390388
390388
|
children: tabs
|
|
@@ -391299,7 +391299,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
391299
391299
|
async function handleInitialize(options2) {
|
|
391300
391300
|
return {
|
|
391301
391301
|
name: "UR",
|
|
391302
|
-
version: "1.65.
|
|
391302
|
+
version: "1.65.3",
|
|
391303
391303
|
protocolVersion: "0.1.0",
|
|
391304
391304
|
workspaceRoot: options2.cwd,
|
|
391305
391305
|
capabilities: {
|
|
@@ -408407,7 +408407,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
408407
408407
|
return [];
|
|
408408
408408
|
}
|
|
408409
408409
|
}
|
|
408410
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.65.
|
|
408410
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.65.3") {
|
|
408411
408411
|
if (process.env.USER_TYPE === "ant") {
|
|
408412
408412
|
const changelog = "";
|
|
408413
408413
|
if (changelog) {
|
|
@@ -408434,7 +408434,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.65.2")
|
|
|
408434
408434
|
releaseNotes
|
|
408435
408435
|
};
|
|
408436
408436
|
}
|
|
408437
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.65.
|
|
408437
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.65.3") {
|
|
408438
408438
|
if (process.env.USER_TYPE === "ant") {
|
|
408439
408439
|
const changelog = "";
|
|
408440
408440
|
if (changelog) {
|
|
@@ -411291,7 +411291,7 @@ function getRecentActivitySync() {
|
|
|
411291
411291
|
return cachedActivity;
|
|
411292
411292
|
}
|
|
411293
411293
|
function getLogoDisplayData() {
|
|
411294
|
-
const version2 = process.env.DEMO_VERSION ?? "1.65.
|
|
411294
|
+
const version2 = process.env.DEMO_VERSION ?? "1.65.3";
|
|
411295
411295
|
const serverUrl = getDirectConnectServerUrl();
|
|
411296
411296
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
411297
411297
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -412175,7 +412175,7 @@ function LogoV2() {
|
|
|
412175
412175
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
412176
412176
|
t2 = () => {
|
|
412177
412177
|
const currentConfig2 = getGlobalConfig();
|
|
412178
|
-
if (currentConfig2.lastReleaseNotesSeen === "1.65.
|
|
412178
|
+
if (currentConfig2.lastReleaseNotesSeen === "1.65.3") {
|
|
412179
412179
|
return;
|
|
412180
412180
|
}
|
|
412181
412181
|
saveGlobalConfig(_temp327);
|
|
@@ -412860,12 +412860,12 @@ function LogoV2() {
|
|
|
412860
412860
|
return t41;
|
|
412861
412861
|
}
|
|
412862
412862
|
function _temp327(current) {
|
|
412863
|
-
if (current.lastReleaseNotesSeen === "1.65.
|
|
412863
|
+
if (current.lastReleaseNotesSeen === "1.65.3") {
|
|
412864
412864
|
return current;
|
|
412865
412865
|
}
|
|
412866
412866
|
return {
|
|
412867
412867
|
...current,
|
|
412868
|
-
lastReleaseNotesSeen: "1.65.
|
|
412868
|
+
lastReleaseNotesSeen: "1.65.3"
|
|
412869
412869
|
};
|
|
412870
412870
|
}
|
|
412871
412871
|
function _temp241(s_0) {
|
|
@@ -429663,7 +429663,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
429663
429663
|
if (spec.name !== specName) {
|
|
429664
429664
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
429665
429665
|
}
|
|
429666
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.65.
|
|
429666
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.65.3" : "1.65.3");
|
|
429667
429667
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
429668
429668
|
throw new Error("invalid ur-agent package version");
|
|
429669
429669
|
}
|
|
@@ -430656,7 +430656,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
430656
430656
|
path: ".github/workflows/ur.yml",
|
|
430657
430657
|
root: "project",
|
|
430658
430658
|
content: compileAgenticCiWorkflow("default", {
|
|
430659
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.65.
|
|
430659
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.65.3" : "1.65.3"
|
|
430660
430660
|
})
|
|
430661
430661
|
},
|
|
430662
430662
|
{
|
|
@@ -430719,7 +430719,7 @@ function value(tokens, flag) {
|
|
|
430719
430719
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
430720
430720
|
}
|
|
430721
430721
|
function cliVersion() {
|
|
430722
|
-
return typeof MACRO !== "undefined" ? "1.65.
|
|
430722
|
+
return typeof MACRO !== "undefined" ? "1.65.3" : "1.65.3";
|
|
430723
430723
|
}
|
|
430724
430724
|
function workflowPath(cwd2) {
|
|
430725
430725
|
return join159(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -436575,7 +436575,7 @@ function createAcpStdioApp(deps) {
|
|
|
436575
436575
|
}
|
|
436576
436576
|
},
|
|
436577
436577
|
authMethods: [],
|
|
436578
|
-
agentInfo: { name: "UR-Nexus", version: "1.65.
|
|
436578
|
+
agentInfo: { name: "UR-Nexus", version: "1.65.3" }
|
|
436579
436579
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
436580
436580
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
436581
436581
|
await runtime2.announce({
|
|
@@ -436672,7 +436672,7 @@ function createAcpStdioAgent(deps) {
|
|
|
436672
436672
|
}
|
|
436673
436673
|
},
|
|
436674
436674
|
authMethods: [],
|
|
436675
|
-
agentInfo: { name: "UR-Nexus", version: "1.65.
|
|
436675
|
+
agentInfo: { name: "UR-Nexus", version: "1.65.3" }
|
|
436676
436676
|
});
|
|
436677
436677
|
return;
|
|
436678
436678
|
case "authenticate":
|
|
@@ -645049,7 +645049,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
645049
645049
|
smapsRollup,
|
|
645050
645050
|
platform: process.platform,
|
|
645051
645051
|
nodeVersion: process.version,
|
|
645052
|
-
ccVersion: "1.65.
|
|
645052
|
+
ccVersion: "1.65.3"
|
|
645053
645053
|
};
|
|
645054
645054
|
}
|
|
645055
645055
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -645629,7 +645629,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
645629
645629
|
var call153 = async () => {
|
|
645630
645630
|
return {
|
|
645631
645631
|
type: "text",
|
|
645632
|
-
value: "1.65.
|
|
645632
|
+
value: "1.65.3"
|
|
645633
645633
|
};
|
|
645634
645634
|
}, version2, version_default;
|
|
645635
645635
|
var init_version = __esm(() => {
|
|
@@ -656700,7 +656700,7 @@ function generateHtmlReport(data, insights) {
|
|
|
656700
656700
|
</html>`;
|
|
656701
656701
|
}
|
|
656702
656702
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
656703
|
-
const version3 = typeof MACRO !== "undefined" ? "1.65.
|
|
656703
|
+
const version3 = typeof MACRO !== "undefined" ? "1.65.3" : "unknown";
|
|
656704
656704
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
656705
656705
|
const facets_summary = {
|
|
656706
656706
|
total: facets.size,
|
|
@@ -661011,7 +661011,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
661011
661011
|
init_settings2();
|
|
661012
661012
|
init_slowOperations();
|
|
661013
661013
|
init_uuid();
|
|
661014
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.65.
|
|
661014
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.65.3" : "unknown";
|
|
661015
661015
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
661016
661016
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
661017
661017
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -662226,7 +662226,7 @@ var init_filesystem = __esm(() => {
|
|
|
662226
662226
|
});
|
|
662227
662227
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
662228
662228
|
const nonce = randomBytes20(16).toString("hex");
|
|
662229
|
-
return join232(getURTempDir(), "bundled-skills", "1.65.
|
|
662229
|
+
return join232(getURTempDir(), "bundled-skills", "1.65.3", nonce);
|
|
662230
662230
|
});
|
|
662231
662231
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
662232
662232
|
});
|
|
@@ -668521,7 +668521,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
668521
668521
|
}
|
|
668522
668522
|
function computeFingerprintFromMessages(messages) {
|
|
668523
668523
|
const firstMessageText = extractFirstMessageText(messages);
|
|
668524
|
-
return computeFingerprint(firstMessageText, "1.65.
|
|
668524
|
+
return computeFingerprint(firstMessageText, "1.65.3");
|
|
668525
668525
|
}
|
|
668526
668526
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
668527
668527
|
var init_fingerprint = () => {};
|
|
@@ -670417,7 +670417,7 @@ async function sideQuery(opts) {
|
|
|
670417
670417
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
670418
670418
|
}
|
|
670419
670419
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
670420
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.65.
|
|
670420
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.65.3");
|
|
670421
670421
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
670422
670422
|
const systemBlocks = [
|
|
670423
670423
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -675188,7 +675188,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
675188
675188
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
675189
675189
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
675190
675190
|
betas: getSdkBetas(),
|
|
675191
|
-
ur_version: "1.65.
|
|
675191
|
+
ur_version: "1.65.3",
|
|
675192
675192
|
output_style: outputStyle2,
|
|
675193
675193
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
675194
675194
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -689048,7 +689048,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
689048
689048
|
function getSemverPart(version3) {
|
|
689049
689049
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
689050
689050
|
}
|
|
689051
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.65.
|
|
689051
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.65.3") {
|
|
689052
689052
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react222.useState(() => getSemverPart(initialVersion));
|
|
689053
689053
|
if (!updatedVersion) {
|
|
689054
689054
|
return null;
|
|
@@ -689097,7 +689097,7 @@ function AutoUpdater({
|
|
|
689097
689097
|
return;
|
|
689098
689098
|
}
|
|
689099
689099
|
if (false) {}
|
|
689100
|
-
const currentVersion = "1.65.
|
|
689100
|
+
const currentVersion = "1.65.3";
|
|
689101
689101
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
689102
689102
|
let latestVersion = await getLatestVersion(channel);
|
|
689103
689103
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -689326,12 +689326,12 @@ function NativeAutoUpdater({
|
|
|
689326
689326
|
logEvent("tengu_native_auto_updater_start", {});
|
|
689327
689327
|
try {
|
|
689328
689328
|
const maxVersion = await getMaxVersion();
|
|
689329
|
-
if (maxVersion && gt("1.65.
|
|
689329
|
+
if (maxVersion && gt("1.65.3", maxVersion)) {
|
|
689330
689330
|
const msg = await getMaxVersionMessage();
|
|
689331
689331
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
689332
689332
|
}
|
|
689333
689333
|
const result = await installLatest(channel);
|
|
689334
|
-
const currentVersion = "1.65.
|
|
689334
|
+
const currentVersion = "1.65.3";
|
|
689335
689335
|
const latencyMs = Date.now() - startTime;
|
|
689336
689336
|
if (result.lockFailed) {
|
|
689337
689337
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -689468,17 +689468,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
689468
689468
|
const maxVersion = await getMaxVersion();
|
|
689469
689469
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
689470
689470
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
689471
|
-
if (gte("1.65.
|
|
689472
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.65.
|
|
689471
|
+
if (gte("1.65.3", maxVersion)) {
|
|
689472
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.65.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
689473
689473
|
setUpdateAvailable(false);
|
|
689474
689474
|
return;
|
|
689475
689475
|
}
|
|
689476
689476
|
latest = maxVersion;
|
|
689477
689477
|
}
|
|
689478
|
-
const hasUpdate = latest && !gte("1.65.
|
|
689478
|
+
const hasUpdate = latest && !gte("1.65.3", latest) && !shouldSkipVersion(latest);
|
|
689479
689479
|
setUpdateAvailable(!!hasUpdate);
|
|
689480
689480
|
if (hasUpdate) {
|
|
689481
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.65.
|
|
689481
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.65.3"} -> ${latest}`);
|
|
689482
689482
|
}
|
|
689483
689483
|
};
|
|
689484
689484
|
$2[0] = t1;
|
|
@@ -689512,7 +689512,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
689512
689512
|
wrap: "truncate",
|
|
689513
689513
|
children: [
|
|
689514
689514
|
"currentVersion: ",
|
|
689515
|
-
"1.65.
|
|
689515
|
+
"1.65.3"
|
|
689516
689516
|
]
|
|
689517
689517
|
}, undefined, true, undefined, this);
|
|
689518
689518
|
$2[3] = verbose;
|
|
@@ -700209,7 +700209,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
700209
700209
|
project_dir: getOriginalCwd(),
|
|
700210
700210
|
added_dirs: addedDirs
|
|
700211
700211
|
},
|
|
700212
|
-
version: "1.65.
|
|
700212
|
+
version: "1.65.3",
|
|
700213
700213
|
output_style: {
|
|
700214
700214
|
name: outputStyleName
|
|
700215
700215
|
},
|
|
@@ -700292,7 +700292,7 @@ function StatusLineInner({
|
|
|
700292
700292
|
const taskValues = Object.values(tasks2);
|
|
700293
700293
|
const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
|
|
700294
700294
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
700295
|
-
version: "1.65.
|
|
700295
|
+
version: "1.65.3",
|
|
700296
700296
|
providerLabel: providerRuntime.providerLabel,
|
|
700297
700297
|
authMode: providerRuntime.authLabel,
|
|
700298
700298
|
model: providerRuntime.model ?? renderModelName(mainLoopModel),
|
|
@@ -712435,7 +712435,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
712435
712435
|
} catch {}
|
|
712436
712436
|
const data = {
|
|
712437
712437
|
trigger: trigger2,
|
|
712438
|
-
version: "1.65.
|
|
712438
|
+
version: "1.65.3",
|
|
712439
712439
|
platform: process.platform,
|
|
712440
712440
|
transcript,
|
|
712441
712441
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -714679,16 +714679,101 @@ var init_tipRegistry = __esm(() => {
|
|
|
714679
714679
|
},
|
|
714680
714680
|
{
|
|
714681
714681
|
id: "web-app",
|
|
714682
|
-
content: async () => "
|
|
714682
|
+
content: async () => '/cloud run "<task>" to run a task in an isolated worktree while you keep coding',
|
|
714683
714683
|
cooldownSessions: 15,
|
|
714684
714684
|
isRelevant: async () => true
|
|
714685
714685
|
},
|
|
714686
714686
|
{
|
|
714687
|
-
id: "
|
|
714688
|
-
content: async () => "
|
|
714687
|
+
id: "model-doctor-capabilities",
|
|
714688
|
+
content: async () => "ur model-doctor shows which local models can actually use tools and vision \u2014 a model without tools will describe work instead of doing it",
|
|
714689
|
+
cooldownSessions: 12,
|
|
714690
|
+
isRelevant: async () => true
|
|
714691
|
+
},
|
|
714692
|
+
{
|
|
714693
|
+
id: "selftest-drills",
|
|
714694
|
+
content: async () => "ur selftest run checks the shipped binary end to end after an upgrade, and prints the checks that need a live model",
|
|
714689
714695
|
cooldownSessions: 15,
|
|
714690
714696
|
isRelevant: async () => true
|
|
714691
714697
|
},
|
|
714698
|
+
{
|
|
714699
|
+
id: "sources-provenance",
|
|
714700
|
+
content: async () => '/sources lists every page and MCP result that entered this session \xB7 /sources --check "<claim>" says whether it came from one',
|
|
714701
|
+
cooldownSessions: 12,
|
|
714702
|
+
isRelevant: async () => true
|
|
714703
|
+
},
|
|
714704
|
+
{
|
|
714705
|
+
id: "agent-inspect-costs",
|
|
714706
|
+
content: async () => "ur agent-inspect --costs breaks a fan-out down per agent, labelled with what each one was doing",
|
|
714707
|
+
cooldownSessions: 15,
|
|
714708
|
+
isRelevant: async () => true
|
|
714709
|
+
},
|
|
714710
|
+
{
|
|
714711
|
+
id: "memory-integrity",
|
|
714712
|
+
content: async () => "ur memory-integrity record then verify detects memory files edited, deleted, or dropped in by something other than UR",
|
|
714713
|
+
cooldownSessions: 20,
|
|
714714
|
+
isRelevant: async () => true
|
|
714715
|
+
},
|
|
714716
|
+
{
|
|
714717
|
+
id: "grade-trajectory",
|
|
714718
|
+
content: async () => "ur grade-trajectory --file <transcript.jsonl> --min-score 70 grades how a run worked, not just what it concluded, and exits non-zero to gate CI",
|
|
714719
|
+
cooldownSessions: 20,
|
|
714720
|
+
isRelevant: async () => true
|
|
714721
|
+
},
|
|
714722
|
+
{
|
|
714723
|
+
id: "ci-loop-heal",
|
|
714724
|
+
content: async () => 'ur ci-loop --command "bun test" fixes failures and reruns until green',
|
|
714725
|
+
cooldownSessions: 12,
|
|
714726
|
+
isRelevant: async () => true
|
|
714727
|
+
},
|
|
714728
|
+
...[
|
|
714729
|
+
["spec-driven", "/spec init <name> \u2014 requirements \u2192 design \u2192 tasks, run with proof gates"],
|
|
714730
|
+
["repo-edit", "/repo-edit rename <sym> --to <new> \u2014 compiler-accurate rename with rollback"],
|
|
714731
|
+
["code-index", '/code-index search "<idea>" \u2014 semantic search over your code, local embeddings'],
|
|
714732
|
+
["knowledge", "/knowledge add <file> then /knowledge search \u2014 curated notes with provenance"],
|
|
714733
|
+
["context-pack", "/context-pack \u2014 scan architecture, record decisions and constraints under .ur/"],
|
|
714734
|
+
["semantic-memory", '/semantic-memory search "<topic>" \u2014 search past memory by meaning'],
|
|
714735
|
+
["remember", "/remember <fact> \u2014 store a durable preference \xB7 /forget to remove it"],
|
|
714736
|
+
["wiki", "/wiki generate \u2014 living repo wiki plus a prompt-injected repo map"],
|
|
714737
|
+
["crew", "/crew create <name> --workers 3 \u2014 lead splits a goal, workers claim tasks"],
|
|
714738
|
+
["arena", '/arena "<task>" --agents 3 \u2014 N attempts in isolated worktrees, judged'],
|
|
714739
|
+
["pattern", '/pattern run debate "<question>" \u2014 PEER, debate, handoff and parallel patterns'],
|
|
714740
|
+
["goal", '/goal add <name> --objective "<x>" \u2014 objectives that persist across sessions'],
|
|
714741
|
+
["bg", '/bg run "<task>" \u2014 detached local agent you can steer, log and kill'],
|
|
714742
|
+
["worktree", "/task start <name> --worktree \u2014 isolated branch per task, PR handoff"],
|
|
714743
|
+
["eval", "/eval run <suite> --repeat 3 \u2014 replayable graded cases with CI gates"],
|
|
714744
|
+
["test-first", "/test-first run \u2014 detect the stack, then compile/test/lint loops"],
|
|
714745
|
+
["guardrails", '/guardrails check "<text>" \u2014 regex, PII and LLM rules with tripwires'],
|
|
714746
|
+
["audit", "/audit export --format csv \u2014 hash-chained trail with tamper verification"],
|
|
714747
|
+
["security-suite", "/security scan \u2014 secrets, threat model, dependency vulnerabilities"],
|
|
714748
|
+
["sandbox", '/sandbox eval "<command>" \u2014 see what the OS sandbox would allow'],
|
|
714749
|
+
["permission-profile", "/permission-profile use <name> \u2014 switch a named permission set"],
|
|
714750
|
+
["escalate", '/escalate run "<task>" \u2014 fast model, escalating hard steps to an oracle'],
|
|
714751
|
+
["model-route", '/model-route "<task>" \u2014 pick the model that fits the work'],
|
|
714752
|
+
["advisor", "/advisor <model> \u2014 a second model critiques the main one"],
|
|
714753
|
+
["rewind", "/rewind \u2014 restore code and conversation to an earlier checkpoint"],
|
|
714754
|
+
["undo", "/undo \u2014 revert the last file edit, including a file it created"],
|
|
714755
|
+
["diff", "/diff \u2014 uncommitted changes and per-turn diffs"],
|
|
714756
|
+
["trace", "/trace \u2014 what the last turns actually called, with results"],
|
|
714757
|
+
["research", "/research, /paper, /cite, /graph \u2014 notes, papers and a claim graph"],
|
|
714758
|
+
["multimodal", "/image, /video, /youtube, /pdf \u2014 inspect media and documents"],
|
|
714759
|
+
["browser", '/browser "<url> <task>" \u2014 drive a real browser \xB7 /browser-qa to replay'],
|
|
714760
|
+
["mcp", "/mcp \u2014 connect MCP servers \xB7 /plugin for plugins and marketplaces"],
|
|
714761
|
+
["skills", "/skill run <name> \xB7 /create-skill <name> \u2014 reusable workflows"],
|
|
714762
|
+
["toolsmith", "/toolsmith <name> python \u2014 scaffold a local helper tool UR can run"],
|
|
714763
|
+
["workflow", "/workflow run <name> \u2014 declarative steps with dependencies"],
|
|
714764
|
+
["automation", '/automation create <name> --schedule "0 3 * * *" \u2014 project-local cron'],
|
|
714765
|
+
["devcontainer", "/devcontainer exec -- <cmd> \u2014 run in a reproducible container"],
|
|
714766
|
+
["ur-doctor", "/ur-doctor \u2014 full health check: tools, Ollama, .ur, MCP, Playwright"],
|
|
714767
|
+
["dna", "/dna \u2014 detect language, package manager, build, test and lint"],
|
|
714768
|
+
["statusline", "/statusline \u2014 put model, branch and context in your prompt"],
|
|
714769
|
+
["speak", "/speak <text> \u2014 read a line aloud with the system voice"],
|
|
714770
|
+
["computer", "/computer screenshot \u2014 desktop control; changes need --yes"]
|
|
714771
|
+
].map(([id, text]) => ({
|
|
714772
|
+
id: `cmd-${id}`,
|
|
714773
|
+
content: async () => text,
|
|
714774
|
+
cooldownSessions: 25,
|
|
714775
|
+
isRelevant: async () => true
|
|
714776
|
+
})),
|
|
714692
714777
|
{
|
|
714693
714778
|
id: "modelOplan-mode-reminder",
|
|
714694
714779
|
content: async () => `Your default model setting is plan mode. Press ${getShortcutDisplay("chat:cycleMode", "Chat", "shift+tab")} twice to activate Plan Mode.`,
|
|
@@ -724715,7 +724800,7 @@ function WelcomeV2() {
|
|
|
724715
724800
|
dimColor: true,
|
|
724716
724801
|
children: [
|
|
724717
724802
|
"v",
|
|
724718
|
-
"1.65.
|
|
724803
|
+
"1.65.3"
|
|
724719
724804
|
]
|
|
724720
724805
|
}, undefined, true, undefined, this)
|
|
724721
724806
|
]
|
|
@@ -725975,7 +726060,7 @@ function completeOnboarding() {
|
|
|
725975
726060
|
saveGlobalConfig((current) => ({
|
|
725976
726061
|
...current,
|
|
725977
726062
|
hasCompletedOnboarding: true,
|
|
725978
|
-
lastOnboardingVersion: "1.65.
|
|
726063
|
+
lastOnboardingVersion: "1.65.3"
|
|
725979
726064
|
}));
|
|
725980
726065
|
}
|
|
725981
726066
|
function showDialog(root2, renderer) {
|
|
@@ -731019,7 +731104,7 @@ function appendToLog(path24, message) {
|
|
|
731019
731104
|
cwd: getFsImplementation().cwd(),
|
|
731020
731105
|
userType: process.env.USER_TYPE,
|
|
731021
731106
|
sessionId: getSessionId(),
|
|
731022
|
-
version: "1.65.
|
|
731107
|
+
version: "1.65.3"
|
|
731023
731108
|
};
|
|
731024
731109
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
731025
731110
|
}
|
|
@@ -735178,8 +735263,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
735178
735263
|
}
|
|
735179
735264
|
async function checkEnvLessBridgeMinVersion() {
|
|
735180
735265
|
const cfg = await getEnvLessBridgeConfig();
|
|
735181
|
-
if (cfg.min_version && lt("1.65.
|
|
735182
|
-
return `Your version of UR (${"1.65.
|
|
735266
|
+
if (cfg.min_version && lt("1.65.3", cfg.min_version)) {
|
|
735267
|
+
return `Your version of UR (${"1.65.3"}) is too old for Remote Control.
|
|
735183
735268
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
735184
735269
|
}
|
|
735185
735270
|
return null;
|
|
@@ -735653,7 +735738,7 @@ async function initBridgeCore(params) {
|
|
|
735653
735738
|
const rawApi = createBridgeApiClient({
|
|
735654
735739
|
baseUrl,
|
|
735655
735740
|
getAccessToken,
|
|
735656
|
-
runnerVersion: "1.65.
|
|
735741
|
+
runnerVersion: "1.65.3",
|
|
735657
735742
|
onDebug: logForDebugging,
|
|
735658
735743
|
onAuth401,
|
|
735659
735744
|
getTrustedDeviceToken
|
|
@@ -745126,7 +745211,7 @@ function getAgUiCapabilities() {
|
|
|
745126
745211
|
name: "UR-Nexus",
|
|
745127
745212
|
type: "ur-nexus",
|
|
745128
745213
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
745129
|
-
version: "1.65.
|
|
745214
|
+
version: "1.65.3",
|
|
745130
745215
|
provider: "UR",
|
|
745131
745216
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
745132
745217
|
},
|
|
@@ -746266,7 +746351,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
746266
746351
|
};
|
|
746267
746352
|
const server2 = new Server({
|
|
746268
746353
|
name: "ur-nexus",
|
|
746269
|
-
version: "1.65.
|
|
746354
|
+
version: "1.65.3"
|
|
746270
746355
|
}, {
|
|
746271
746356
|
capabilities: {
|
|
746272
746357
|
tools: {}
|
|
@@ -747424,7 +747509,7 @@ function thrownResponse(error40) {
|
|
|
747424
747509
|
}
|
|
747425
747510
|
async function createUrMcp2026Runtime(options4) {
|
|
747426
747511
|
const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
|
|
747427
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.65.
|
|
747512
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.65.3" }, { capabilities: {} });
|
|
747428
747513
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
747429
747514
|
try {
|
|
747430
747515
|
await server2.connect(serverTransport);
|
|
@@ -747435,7 +747520,7 @@ async function createUrMcp2026Runtime(options4) {
|
|
|
747435
747520
|
}
|
|
747436
747521
|
const runtime2 = new Mcp2026Runtime({
|
|
747437
747522
|
cwd: options4.cwd,
|
|
747438
|
-
version: "1.65.
|
|
747523
|
+
version: "1.65.3",
|
|
747439
747524
|
backend: {
|
|
747440
747525
|
listTools: async () => {
|
|
747441
747526
|
const listed = await client2.listTools();
|
|
@@ -749568,7 +749653,7 @@ async function update() {
|
|
|
749568
749653
|
logEvent("tengu_update_check", {});
|
|
749569
749654
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
749570
749655
|
const result = await checkUpgradeStatus({
|
|
749571
|
-
currentVersion: "1.65.
|
|
749656
|
+
currentVersion: "1.65.3",
|
|
749572
749657
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
749573
749658
|
installationType: diagnostic2.installationType,
|
|
749574
749659
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -750884,7 +750969,7 @@ ${customInstructions}` : customInstructions;
|
|
|
750884
750969
|
}
|
|
750885
750970
|
}
|
|
750886
750971
|
logForDiagnosticsNoPII("info", "started", {
|
|
750887
|
-
version: "1.65.
|
|
750972
|
+
version: "1.65.3",
|
|
750888
750973
|
is_native_binary: isInBundledMode()
|
|
750889
750974
|
});
|
|
750890
750975
|
registerCleanup(async () => {
|
|
@@ -751670,7 +751755,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
751670
751755
|
pendingHookMessages
|
|
751671
751756
|
}, renderAndRun);
|
|
751672
751757
|
}
|
|
751673
|
-
}).version("1.65.
|
|
751758
|
+
}).version("1.65.3 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
751674
751759
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
751675
751760
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
751676
751761
|
if (canUserConfigureAdvisor()) {
|
|
@@ -752722,7 +752807,7 @@ if (false) {}
|
|
|
752722
752807
|
async function main2() {
|
|
752723
752808
|
const args = process.argv.slice(2);
|
|
752724
752809
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
752725
|
-
console.log(`${"1.65.
|
|
752810
|
+
console.log(`${"1.65.3"} (UR-Nexus)`);
|
|
752726
752811
|
return;
|
|
752727
752812
|
}
|
|
752728
752813
|
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.65.
|
|
48
|
+
<p class="eyebrow">Version 1.65.3</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.65.
|
|
5
|
+
"version": "1.65.3",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED