ur-agent 1.65.3 → 1.65.4
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,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.65.4
|
|
4
|
+
|
|
5
|
+
- A tool call that keeps failing identically is now stopped. A 4B model refused
|
|
6
|
+
once by the task-list gate answered by emitting `Write` with no arguments
|
|
7
|
+
repeatedly, and nothing intervened — the trajectory grader names this pattern
|
|
8
|
+
but only after a run has ended, so it could grade the wreck and never prevent
|
|
9
|
+
it. Three identical failures are refused with instructions to change course;
|
|
10
|
+
six abort the turn, because otherwise a model that ignores the refusal simply
|
|
11
|
+
loops on the refusal instead.
|
|
12
|
+
- The signature is tool name plus input, so a corrected retry is never
|
|
13
|
+
penalised — that is precisely the recovery a refusal asks for. Both the
|
|
14
|
+
task-list gate and input validation feed the counter; the observed loop was
|
|
15
|
+
rejected by validation every time, so recording only gate refusals would have
|
|
16
|
+
left the guard counting zero.
|
|
17
|
+
|
|
3
18
|
## 1.65.3
|
|
4
19
|
|
|
5
20
|
- Removed two tips for things that do not exist: `/mobile to use UR from the
|
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.4"}`;
|
|
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.4"} (${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.4"}${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.4",
|
|
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.4".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.4",
|
|
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.4"
|
|
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.4");
|
|
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.4", 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.4"}.${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.4");
|
|
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.4"
|
|
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.4").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.4").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.4";
|
|
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.4";
|
|
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.4",
|
|
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.4",
|
|
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.4"
|
|
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.4");
|
|
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.4"));
|
|
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.4", 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.4"}) 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.4"
|
|
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.4"
|
|
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.4" : "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.4", maxVersion)) {
|
|
275672
|
+
logForDebugging(`Native installer: current version ${"1.65.4"} 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.4" && 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.4");
|
|
345979
345979
|
}
|
|
345980
345980
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
345981
345981
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -346680,6 +346680,46 @@ var init_taskListGate = __esm(() => {
|
|
|
346680
346680
|
]);
|
|
346681
346681
|
});
|
|
346682
346682
|
|
|
346683
|
+
// src/services/tools/repeatedFailureGuard.ts
|
|
346684
|
+
function callSignature(toolName, input) {
|
|
346685
|
+
let serialized;
|
|
346686
|
+
try {
|
|
346687
|
+
serialized = JSON.stringify(input, Object.keys(input ?? {}).sort());
|
|
346688
|
+
} catch {
|
|
346689
|
+
serialized = "<unserializable>";
|
|
346690
|
+
}
|
|
346691
|
+
return `${toolName}:${serialized}`;
|
|
346692
|
+
}
|
|
346693
|
+
function recordCallFailure(signature) {
|
|
346694
|
+
const next = (failureCounts.get(signature) ?? 0) + 1;
|
|
346695
|
+
failureCounts.set(signature, next);
|
|
346696
|
+
return next;
|
|
346697
|
+
}
|
|
346698
|
+
function checkRepeatedFailure(signature, config2 = REPEATED_FAILURE_DEFAULTS) {
|
|
346699
|
+
const failures = failureCounts.get(signature) ?? 0;
|
|
346700
|
+
if (failures >= config2.abortAfter) {
|
|
346701
|
+
return {
|
|
346702
|
+
action: "abort",
|
|
346703
|
+
reason: `This exact call has failed ${failures} times and is still being ` + `repeated. Stopping the turn rather than continuing to loop.`
|
|
346704
|
+
};
|
|
346705
|
+
}
|
|
346706
|
+
if (failures >= config2.limit) {
|
|
346707
|
+
return {
|
|
346708
|
+
action: "refuse",
|
|
346709
|
+
reason: `This exact call has already failed ${failures} times with the same ` + `arguments, so it will fail again. Do not retry it unchanged. Either ` + `fix the arguments, use a different tool, or tell the user what is ` + `blocking you and stop.`
|
|
346710
|
+
};
|
|
346711
|
+
}
|
|
346712
|
+
return { action: "allow" };
|
|
346713
|
+
}
|
|
346714
|
+
var REPEATED_FAILURE_DEFAULTS, failureCounts;
|
|
346715
|
+
var init_repeatedFailureGuard = __esm(() => {
|
|
346716
|
+
REPEATED_FAILURE_DEFAULTS = {
|
|
346717
|
+
limit: 3,
|
|
346718
|
+
abortAfter: 6
|
|
346719
|
+
};
|
|
346720
|
+
failureCounts = new Map;
|
|
346721
|
+
});
|
|
346722
|
+
|
|
346683
346723
|
// src/stability/types.ts
|
|
346684
346724
|
var DEFAULT_LIMITS;
|
|
346685
346725
|
var init_types12 = __esm(() => {
|
|
@@ -347710,6 +347750,32 @@ async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContex
|
|
|
347710
347750
|
}
|
|
347711
347751
|
}
|
|
347712
347752
|
}
|
|
347753
|
+
const callSig = callSignature(tool.name, input);
|
|
347754
|
+
const repeat2 = checkRepeatedFailure(callSig);
|
|
347755
|
+
if (repeat2.action !== "allow") {
|
|
347756
|
+
logEvent("tengu_repeated_failure_guard", {
|
|
347757
|
+
toolName: sanitizeToolNameForAnalytics(tool.name),
|
|
347758
|
+
action: repeat2.action
|
|
347759
|
+
});
|
|
347760
|
+
if (repeat2.action === "abort") {
|
|
347761
|
+
throw new Error(`Repeated tool failure: ${repeat2.reason}`);
|
|
347762
|
+
}
|
|
347763
|
+
return [
|
|
347764
|
+
{
|
|
347765
|
+
message: createUserMessage({
|
|
347766
|
+
content: [
|
|
347767
|
+
{
|
|
347768
|
+
type: "tool_result",
|
|
347769
|
+
content: `<tool_use_error>RepeatedFailure: ${repeat2.reason}</tool_use_error>`,
|
|
347770
|
+
is_error: true,
|
|
347771
|
+
tool_use_id: toolUseID
|
|
347772
|
+
}
|
|
347773
|
+
]
|
|
347774
|
+
}),
|
|
347775
|
+
shouldSkipPermissionCheck: false
|
|
347776
|
+
}
|
|
347777
|
+
];
|
|
347778
|
+
}
|
|
347713
347779
|
const gate = checkTaskListGate({
|
|
347714
347780
|
toolName: tool.name,
|
|
347715
347781
|
taskCount: await countTasksForGate(),
|
|
@@ -347717,6 +347783,7 @@ async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContex
|
|
|
347717
347783
|
isSubagent: Boolean(toolUseContext.agentId)
|
|
347718
347784
|
});
|
|
347719
347785
|
if (!gate.allowed) {
|
|
347786
|
+
recordCallFailure(callSig);
|
|
347720
347787
|
logEvent("tengu_task_list_gate_blocked", {
|
|
347721
347788
|
toolName: sanitizeToolNameForAnalytics(tool.name)
|
|
347722
347789
|
});
|
|
@@ -347737,6 +347804,7 @@ async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContex
|
|
|
347737
347804
|
];
|
|
347738
347805
|
}
|
|
347739
347806
|
if (!parsedInput.success) {
|
|
347807
|
+
recordCallFailure(callSig);
|
|
347740
347808
|
let errorContent = formatZodValidationError(tool.name, parsedInput.error);
|
|
347741
347809
|
const schemaHint = buildSchemaNotSentHint(tool, toolUseContext.messages, toolUseContext.options.tools);
|
|
347742
347810
|
if (schemaHint) {
|
|
@@ -348427,6 +348495,7 @@ var init_toolExecution = __esm(() => {
|
|
|
348427
348495
|
init_toolResultStorage();
|
|
348428
348496
|
init_toolSearch();
|
|
348429
348497
|
init_taskListGate();
|
|
348498
|
+
init_repeatedFailureGuard();
|
|
348430
348499
|
init_client5();
|
|
348431
348500
|
init_mcpStringUtils();
|
|
348432
348501
|
init_utils3();
|
|
@@ -375568,7 +375637,7 @@ function Feedback({
|
|
|
375568
375637
|
platform: env2.platform,
|
|
375569
375638
|
gitRepo: envInfo.isGit,
|
|
375570
375639
|
terminal: env2.terminal,
|
|
375571
|
-
version: "1.65.
|
|
375640
|
+
version: "1.65.4",
|
|
375572
375641
|
transcript: normalizeMessagesForAPI(messages),
|
|
375573
375642
|
errors: sanitizedErrors,
|
|
375574
375643
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -375760,7 +375829,7 @@ function Feedback({
|
|
|
375760
375829
|
", ",
|
|
375761
375830
|
env2.terminal,
|
|
375762
375831
|
", v",
|
|
375763
|
-
"1.65.
|
|
375832
|
+
"1.65.4"
|
|
375764
375833
|
]
|
|
375765
375834
|
}, undefined, true, undefined, this)
|
|
375766
375835
|
]
|
|
@@ -375866,7 +375935,7 @@ ${sanitizedDescription}
|
|
|
375866
375935
|
` + `**Environment Info**
|
|
375867
375936
|
` + `- Platform: ${env2.platform}
|
|
375868
375937
|
` + `- Terminal: ${env2.terminal}
|
|
375869
|
-
` + `- Version: ${"1.65.
|
|
375938
|
+
` + `- Version: ${"1.65.4"}
|
|
375870
375939
|
` + `- Feedback ID: ${feedbackId}
|
|
375871
375940
|
` + `
|
|
375872
375941
|
**Errors**
|
|
@@ -378976,7 +379045,7 @@ function buildPrimarySection() {
|
|
|
378976
379045
|
}, undefined, false, undefined, this);
|
|
378977
379046
|
return [{
|
|
378978
379047
|
label: "Version",
|
|
378979
|
-
value: "1.65.
|
|
379048
|
+
value: "1.65.4"
|
|
378980
379049
|
}, {
|
|
378981
379050
|
label: "Session name",
|
|
378982
379051
|
value: nameValue
|
|
@@ -382306,7 +382375,7 @@ function Config({
|
|
|
382306
382375
|
}
|
|
382307
382376
|
}, undefined, false, undefined, this)
|
|
382308
382377
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
|
|
382309
|
-
currentVersion: "1.65.
|
|
382378
|
+
currentVersion: "1.65.4",
|
|
382310
382379
|
onChoice: (choice) => {
|
|
382311
382380
|
setShowSubmenu(null);
|
|
382312
382381
|
setTabsHidden(false);
|
|
@@ -382318,7 +382387,7 @@ function Config({
|
|
|
382318
382387
|
autoUpdatesChannel: "stable"
|
|
382319
382388
|
};
|
|
382320
382389
|
if (choice === "stay") {
|
|
382321
|
-
newSettings.minimumVersion = "1.65.
|
|
382390
|
+
newSettings.minimumVersion = "1.65.4";
|
|
382322
382391
|
}
|
|
382323
382392
|
updateSettingsForSource("userSettings", newSettings);
|
|
382324
382393
|
setSettingsData((prev_27) => ({
|
|
@@ -390382,7 +390451,7 @@ function HelpV2(t0) {
|
|
|
390382
390451
|
let t6;
|
|
390383
390452
|
if ($2[31] !== tabs) {
|
|
390384
390453
|
t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
|
|
390385
|
-
title: `UR v${"1.65.
|
|
390454
|
+
title: `UR v${"1.65.4"}`,
|
|
390386
390455
|
color: "professionalBlue",
|
|
390387
390456
|
defaultTab: "general",
|
|
390388
390457
|
children: tabs
|
|
@@ -391299,7 +391368,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
391299
391368
|
async function handleInitialize(options2) {
|
|
391300
391369
|
return {
|
|
391301
391370
|
name: "UR",
|
|
391302
|
-
version: "1.65.
|
|
391371
|
+
version: "1.65.4",
|
|
391303
391372
|
protocolVersion: "0.1.0",
|
|
391304
391373
|
workspaceRoot: options2.cwd,
|
|
391305
391374
|
capabilities: {
|
|
@@ -408407,7 +408476,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
408407
408476
|
return [];
|
|
408408
408477
|
}
|
|
408409
408478
|
}
|
|
408410
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.65.
|
|
408479
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.65.4") {
|
|
408411
408480
|
if (process.env.USER_TYPE === "ant") {
|
|
408412
408481
|
const changelog = "";
|
|
408413
408482
|
if (changelog) {
|
|
@@ -408434,7 +408503,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.65.3")
|
|
|
408434
408503
|
releaseNotes
|
|
408435
408504
|
};
|
|
408436
408505
|
}
|
|
408437
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.65.
|
|
408506
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.65.4") {
|
|
408438
408507
|
if (process.env.USER_TYPE === "ant") {
|
|
408439
408508
|
const changelog = "";
|
|
408440
408509
|
if (changelog) {
|
|
@@ -411291,7 +411360,7 @@ function getRecentActivitySync() {
|
|
|
411291
411360
|
return cachedActivity;
|
|
411292
411361
|
}
|
|
411293
411362
|
function getLogoDisplayData() {
|
|
411294
|
-
const version2 = process.env.DEMO_VERSION ?? "1.65.
|
|
411363
|
+
const version2 = process.env.DEMO_VERSION ?? "1.65.4";
|
|
411295
411364
|
const serverUrl = getDirectConnectServerUrl();
|
|
411296
411365
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
411297
411366
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -412175,7 +412244,7 @@ function LogoV2() {
|
|
|
412175
412244
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
412176
412245
|
t2 = () => {
|
|
412177
412246
|
const currentConfig2 = getGlobalConfig();
|
|
412178
|
-
if (currentConfig2.lastReleaseNotesSeen === "1.65.
|
|
412247
|
+
if (currentConfig2.lastReleaseNotesSeen === "1.65.4") {
|
|
412179
412248
|
return;
|
|
412180
412249
|
}
|
|
412181
412250
|
saveGlobalConfig(_temp327);
|
|
@@ -412860,12 +412929,12 @@ function LogoV2() {
|
|
|
412860
412929
|
return t41;
|
|
412861
412930
|
}
|
|
412862
412931
|
function _temp327(current) {
|
|
412863
|
-
if (current.lastReleaseNotesSeen === "1.65.
|
|
412932
|
+
if (current.lastReleaseNotesSeen === "1.65.4") {
|
|
412864
412933
|
return current;
|
|
412865
412934
|
}
|
|
412866
412935
|
return {
|
|
412867
412936
|
...current,
|
|
412868
|
-
lastReleaseNotesSeen: "1.65.
|
|
412937
|
+
lastReleaseNotesSeen: "1.65.4"
|
|
412869
412938
|
};
|
|
412870
412939
|
}
|
|
412871
412940
|
function _temp241(s_0) {
|
|
@@ -429663,7 +429732,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
429663
429732
|
if (spec.name !== specName) {
|
|
429664
429733
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
429665
429734
|
}
|
|
429666
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.65.
|
|
429735
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.65.4" : "1.65.4");
|
|
429667
429736
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
429668
429737
|
throw new Error("invalid ur-agent package version");
|
|
429669
429738
|
}
|
|
@@ -430656,7 +430725,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
430656
430725
|
path: ".github/workflows/ur.yml",
|
|
430657
430726
|
root: "project",
|
|
430658
430727
|
content: compileAgenticCiWorkflow("default", {
|
|
430659
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.65.
|
|
430728
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.65.4" : "1.65.4"
|
|
430660
430729
|
})
|
|
430661
430730
|
},
|
|
430662
430731
|
{
|
|
@@ -430719,7 +430788,7 @@ function value(tokens, flag) {
|
|
|
430719
430788
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
430720
430789
|
}
|
|
430721
430790
|
function cliVersion() {
|
|
430722
|
-
return typeof MACRO !== "undefined" ? "1.65.
|
|
430791
|
+
return typeof MACRO !== "undefined" ? "1.65.4" : "1.65.4";
|
|
430723
430792
|
}
|
|
430724
430793
|
function workflowPath(cwd2) {
|
|
430725
430794
|
return join159(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -436575,7 +436644,7 @@ function createAcpStdioApp(deps) {
|
|
|
436575
436644
|
}
|
|
436576
436645
|
},
|
|
436577
436646
|
authMethods: [],
|
|
436578
|
-
agentInfo: { name: "UR-Nexus", version: "1.65.
|
|
436647
|
+
agentInfo: { name: "UR-Nexus", version: "1.65.4" }
|
|
436579
436648
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
436580
436649
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
436581
436650
|
await runtime2.announce({
|
|
@@ -436672,7 +436741,7 @@ function createAcpStdioAgent(deps) {
|
|
|
436672
436741
|
}
|
|
436673
436742
|
},
|
|
436674
436743
|
authMethods: [],
|
|
436675
|
-
agentInfo: { name: "UR-Nexus", version: "1.65.
|
|
436744
|
+
agentInfo: { name: "UR-Nexus", version: "1.65.4" }
|
|
436676
436745
|
});
|
|
436677
436746
|
return;
|
|
436678
436747
|
case "authenticate":
|
|
@@ -534920,13 +534989,13 @@ ${lanes.join(`
|
|
|
534920
534989
|
}
|
|
534921
534990
|
function instantiateTypeWithSingleGenericCallSignature(node, type, checkMode) {
|
|
534922
534991
|
if (checkMode && checkMode & (2 | 8)) {
|
|
534923
|
-
const
|
|
534992
|
+
const callSignature2 = getSingleSignature(type, 0, true);
|
|
534924
534993
|
const constructSignature = getSingleSignature(type, 1, true);
|
|
534925
|
-
const signature =
|
|
534994
|
+
const signature = callSignature2 || constructSignature;
|
|
534926
534995
|
if (signature && signature.typeParameters) {
|
|
534927
534996
|
const contextualType = getApparentTypeOfContextualType(node, 2);
|
|
534928
534997
|
if (contextualType) {
|
|
534929
|
-
const contextualSignature = getSingleSignature(getNonNullableType(contextualType),
|
|
534998
|
+
const contextualSignature = getSingleSignature(getNonNullableType(contextualType), callSignature2 ? 0 : 1, false);
|
|
534930
534999
|
if (contextualSignature && !contextualSignature.typeParameters) {
|
|
534931
535000
|
if (checkMode & 8) {
|
|
534932
535001
|
skippedGenericFunction(node, checkMode);
|
|
@@ -645049,7 +645118,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
645049
645118
|
smapsRollup,
|
|
645050
645119
|
platform: process.platform,
|
|
645051
645120
|
nodeVersion: process.version,
|
|
645052
|
-
ccVersion: "1.65.
|
|
645121
|
+
ccVersion: "1.65.4"
|
|
645053
645122
|
};
|
|
645054
645123
|
}
|
|
645055
645124
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -645629,7 +645698,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
645629
645698
|
var call153 = async () => {
|
|
645630
645699
|
return {
|
|
645631
645700
|
type: "text",
|
|
645632
|
-
value: "1.65.
|
|
645701
|
+
value: "1.65.4"
|
|
645633
645702
|
};
|
|
645634
645703
|
}, version2, version_default;
|
|
645635
645704
|
var init_version = __esm(() => {
|
|
@@ -656700,7 +656769,7 @@ function generateHtmlReport(data, insights) {
|
|
|
656700
656769
|
</html>`;
|
|
656701
656770
|
}
|
|
656702
656771
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
656703
|
-
const version3 = typeof MACRO !== "undefined" ? "1.65.
|
|
656772
|
+
const version3 = typeof MACRO !== "undefined" ? "1.65.4" : "unknown";
|
|
656704
656773
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
656705
656774
|
const facets_summary = {
|
|
656706
656775
|
total: facets.size,
|
|
@@ -661011,7 +661080,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
661011
661080
|
init_settings2();
|
|
661012
661081
|
init_slowOperations();
|
|
661013
661082
|
init_uuid();
|
|
661014
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.65.
|
|
661083
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.65.4" : "unknown";
|
|
661015
661084
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
661016
661085
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
661017
661086
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -662226,7 +662295,7 @@ var init_filesystem = __esm(() => {
|
|
|
662226
662295
|
});
|
|
662227
662296
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
662228
662297
|
const nonce = randomBytes20(16).toString("hex");
|
|
662229
|
-
return join232(getURTempDir(), "bundled-skills", "1.65.
|
|
662298
|
+
return join232(getURTempDir(), "bundled-skills", "1.65.4", nonce);
|
|
662230
662299
|
});
|
|
662231
662300
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
662232
662301
|
});
|
|
@@ -668521,7 +668590,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
668521
668590
|
}
|
|
668522
668591
|
function computeFingerprintFromMessages(messages) {
|
|
668523
668592
|
const firstMessageText = extractFirstMessageText(messages);
|
|
668524
|
-
return computeFingerprint(firstMessageText, "1.65.
|
|
668593
|
+
return computeFingerprint(firstMessageText, "1.65.4");
|
|
668525
668594
|
}
|
|
668526
668595
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
668527
668596
|
var init_fingerprint = () => {};
|
|
@@ -670417,7 +670486,7 @@ async function sideQuery(opts) {
|
|
|
670417
670486
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
670418
670487
|
}
|
|
670419
670488
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
670420
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.65.
|
|
670489
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.65.4");
|
|
670421
670490
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
670422
670491
|
const systemBlocks = [
|
|
670423
670492
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -675188,7 +675257,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
675188
675257
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
675189
675258
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
675190
675259
|
betas: getSdkBetas(),
|
|
675191
|
-
ur_version: "1.65.
|
|
675260
|
+
ur_version: "1.65.4",
|
|
675192
675261
|
output_style: outputStyle2,
|
|
675193
675262
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
675194
675263
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -689048,7 +689117,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
689048
689117
|
function getSemverPart(version3) {
|
|
689049
689118
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
689050
689119
|
}
|
|
689051
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.65.
|
|
689120
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.65.4") {
|
|
689052
689121
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react222.useState(() => getSemverPart(initialVersion));
|
|
689053
689122
|
if (!updatedVersion) {
|
|
689054
689123
|
return null;
|
|
@@ -689097,7 +689166,7 @@ function AutoUpdater({
|
|
|
689097
689166
|
return;
|
|
689098
689167
|
}
|
|
689099
689168
|
if (false) {}
|
|
689100
|
-
const currentVersion = "1.65.
|
|
689169
|
+
const currentVersion = "1.65.4";
|
|
689101
689170
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
689102
689171
|
let latestVersion = await getLatestVersion(channel);
|
|
689103
689172
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -689326,12 +689395,12 @@ function NativeAutoUpdater({
|
|
|
689326
689395
|
logEvent("tengu_native_auto_updater_start", {});
|
|
689327
689396
|
try {
|
|
689328
689397
|
const maxVersion = await getMaxVersion();
|
|
689329
|
-
if (maxVersion && gt("1.65.
|
|
689398
|
+
if (maxVersion && gt("1.65.4", maxVersion)) {
|
|
689330
689399
|
const msg = await getMaxVersionMessage();
|
|
689331
689400
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
689332
689401
|
}
|
|
689333
689402
|
const result = await installLatest(channel);
|
|
689334
|
-
const currentVersion = "1.65.
|
|
689403
|
+
const currentVersion = "1.65.4";
|
|
689335
689404
|
const latencyMs = Date.now() - startTime;
|
|
689336
689405
|
if (result.lockFailed) {
|
|
689337
689406
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -689468,17 +689537,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
689468
689537
|
const maxVersion = await getMaxVersion();
|
|
689469
689538
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
689470
689539
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
689471
|
-
if (gte("1.65.
|
|
689472
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.65.
|
|
689540
|
+
if (gte("1.65.4", maxVersion)) {
|
|
689541
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.65.4"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
689473
689542
|
setUpdateAvailable(false);
|
|
689474
689543
|
return;
|
|
689475
689544
|
}
|
|
689476
689545
|
latest = maxVersion;
|
|
689477
689546
|
}
|
|
689478
|
-
const hasUpdate = latest && !gte("1.65.
|
|
689547
|
+
const hasUpdate = latest && !gte("1.65.4", latest) && !shouldSkipVersion(latest);
|
|
689479
689548
|
setUpdateAvailable(!!hasUpdate);
|
|
689480
689549
|
if (hasUpdate) {
|
|
689481
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.65.
|
|
689550
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.65.4"} -> ${latest}`);
|
|
689482
689551
|
}
|
|
689483
689552
|
};
|
|
689484
689553
|
$2[0] = t1;
|
|
@@ -689512,7 +689581,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
689512
689581
|
wrap: "truncate",
|
|
689513
689582
|
children: [
|
|
689514
689583
|
"currentVersion: ",
|
|
689515
|
-
"1.65.
|
|
689584
|
+
"1.65.4"
|
|
689516
689585
|
]
|
|
689517
689586
|
}, undefined, true, undefined, this);
|
|
689518
689587
|
$2[3] = verbose;
|
|
@@ -700209,7 +700278,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
700209
700278
|
project_dir: getOriginalCwd(),
|
|
700210
700279
|
added_dirs: addedDirs
|
|
700211
700280
|
},
|
|
700212
|
-
version: "1.65.
|
|
700281
|
+
version: "1.65.4",
|
|
700213
700282
|
output_style: {
|
|
700214
700283
|
name: outputStyleName
|
|
700215
700284
|
},
|
|
@@ -700292,7 +700361,7 @@ function StatusLineInner({
|
|
|
700292
700361
|
const taskValues = Object.values(tasks2);
|
|
700293
700362
|
const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
|
|
700294
700363
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
700295
|
-
version: "1.65.
|
|
700364
|
+
version: "1.65.4",
|
|
700296
700365
|
providerLabel: providerRuntime.providerLabel,
|
|
700297
700366
|
authMode: providerRuntime.authLabel,
|
|
700298
700367
|
model: providerRuntime.model ?? renderModelName(mainLoopModel),
|
|
@@ -712435,7 +712504,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
712435
712504
|
} catch {}
|
|
712436
712505
|
const data = {
|
|
712437
712506
|
trigger: trigger2,
|
|
712438
|
-
version: "1.65.
|
|
712507
|
+
version: "1.65.4",
|
|
712439
712508
|
platform: process.platform,
|
|
712440
712509
|
transcript,
|
|
712441
712510
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -724800,7 +724869,7 @@ function WelcomeV2() {
|
|
|
724800
724869
|
dimColor: true,
|
|
724801
724870
|
children: [
|
|
724802
724871
|
"v",
|
|
724803
|
-
"1.65.
|
|
724872
|
+
"1.65.4"
|
|
724804
724873
|
]
|
|
724805
724874
|
}, undefined, true, undefined, this)
|
|
724806
724875
|
]
|
|
@@ -726060,7 +726129,7 @@ function completeOnboarding() {
|
|
|
726060
726129
|
saveGlobalConfig((current) => ({
|
|
726061
726130
|
...current,
|
|
726062
726131
|
hasCompletedOnboarding: true,
|
|
726063
|
-
lastOnboardingVersion: "1.65.
|
|
726132
|
+
lastOnboardingVersion: "1.65.4"
|
|
726064
726133
|
}));
|
|
726065
726134
|
}
|
|
726066
726135
|
function showDialog(root2, renderer) {
|
|
@@ -731104,7 +731173,7 @@ function appendToLog(path24, message) {
|
|
|
731104
731173
|
cwd: getFsImplementation().cwd(),
|
|
731105
731174
|
userType: process.env.USER_TYPE,
|
|
731106
731175
|
sessionId: getSessionId(),
|
|
731107
|
-
version: "1.65.
|
|
731176
|
+
version: "1.65.4"
|
|
731108
731177
|
};
|
|
731109
731178
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
731110
731179
|
}
|
|
@@ -731884,7 +731953,7 @@ function createTokenRefreshScheduler({
|
|
|
731884
731953
|
refreshBufferMs = TOKEN_REFRESH_BUFFER_MS
|
|
731885
731954
|
}) {
|
|
731886
731955
|
const timers = new Map;
|
|
731887
|
-
const
|
|
731956
|
+
const failureCounts2 = new Map;
|
|
731888
731957
|
const generations = new Map;
|
|
731889
731958
|
function nextGeneration(sessionId) {
|
|
731890
731959
|
const gen = (generations.get(sessionId) ?? 0) + 1;
|
|
@@ -731935,8 +732004,8 @@ function createTokenRefreshScheduler({
|
|
|
731935
732004
|
return;
|
|
731936
732005
|
}
|
|
731937
732006
|
if (!oauthToken) {
|
|
731938
|
-
const failures = (
|
|
731939
|
-
|
|
732007
|
+
const failures = (failureCounts2.get(sessionId) ?? 0) + 1;
|
|
732008
|
+
failureCounts2.set(sessionId, failures);
|
|
731940
732009
|
logForDebugging(`[${label}:token] No OAuth token available for refresh, sessionId=${sessionId} (failure ${failures}/${MAX_REFRESH_FAILURES})`, { level: "error" });
|
|
731941
732010
|
logForDiagnosticsNoPII("error", "bridge_token_refresh_no_oauth");
|
|
731942
732011
|
if (failures < MAX_REFRESH_FAILURES) {
|
|
@@ -731945,7 +732014,7 @@ function createTokenRefreshScheduler({
|
|
|
731945
732014
|
}
|
|
731946
732015
|
return;
|
|
731947
732016
|
}
|
|
731948
|
-
|
|
732017
|
+
failureCounts2.delete(sessionId);
|
|
731949
732018
|
logForDebugging(`[${label}:token] Refreshing token for sessionId=${sessionId}: new token prefix=${oauthToken.slice(0, 15)}\u2026`);
|
|
731950
732019
|
logEvent("tengu_bridge_token_refreshed", {});
|
|
731951
732020
|
onRefresh(sessionId, oauthToken);
|
|
@@ -731960,7 +732029,7 @@ function createTokenRefreshScheduler({
|
|
|
731960
732029
|
clearTimeout(timer);
|
|
731961
732030
|
timers.delete(sessionId);
|
|
731962
732031
|
}
|
|
731963
|
-
|
|
732032
|
+
failureCounts2.delete(sessionId);
|
|
731964
732033
|
}
|
|
731965
732034
|
function cancelAll() {
|
|
731966
732035
|
for (const sessionId of generations.keys()) {
|
|
@@ -731970,7 +732039,7 @@ function createTokenRefreshScheduler({
|
|
|
731970
732039
|
clearTimeout(timer);
|
|
731971
732040
|
}
|
|
731972
732041
|
timers.clear();
|
|
731973
|
-
|
|
732042
|
+
failureCounts2.clear();
|
|
731974
732043
|
}
|
|
731975
732044
|
return { schedule: schedule2, scheduleFromExpiresIn, cancel, cancelAll };
|
|
731976
732045
|
}
|
|
@@ -735263,8 +735332,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
735263
735332
|
}
|
|
735264
735333
|
async function checkEnvLessBridgeMinVersion() {
|
|
735265
735334
|
const cfg = await getEnvLessBridgeConfig();
|
|
735266
|
-
if (cfg.min_version && lt("1.65.
|
|
735267
|
-
return `Your version of UR (${"1.65.
|
|
735335
|
+
if (cfg.min_version && lt("1.65.4", cfg.min_version)) {
|
|
735336
|
+
return `Your version of UR (${"1.65.4"}) is too old for Remote Control.
|
|
735268
735337
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
735269
735338
|
}
|
|
735270
735339
|
return null;
|
|
@@ -735738,7 +735807,7 @@ async function initBridgeCore(params) {
|
|
|
735738
735807
|
const rawApi = createBridgeApiClient({
|
|
735739
735808
|
baseUrl,
|
|
735740
735809
|
getAccessToken,
|
|
735741
|
-
runnerVersion: "1.65.
|
|
735810
|
+
runnerVersion: "1.65.4",
|
|
735742
735811
|
onDebug: logForDebugging,
|
|
735743
735812
|
onAuth401,
|
|
735744
735813
|
getTrustedDeviceToken
|
|
@@ -745211,7 +745280,7 @@ function getAgUiCapabilities() {
|
|
|
745211
745280
|
name: "UR-Nexus",
|
|
745212
745281
|
type: "ur-nexus",
|
|
745213
745282
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
745214
|
-
version: "1.65.
|
|
745283
|
+
version: "1.65.4",
|
|
745215
745284
|
provider: "UR",
|
|
745216
745285
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
745217
745286
|
},
|
|
@@ -746351,7 +746420,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
746351
746420
|
};
|
|
746352
746421
|
const server2 = new Server({
|
|
746353
746422
|
name: "ur-nexus",
|
|
746354
|
-
version: "1.65.
|
|
746423
|
+
version: "1.65.4"
|
|
746355
746424
|
}, {
|
|
746356
746425
|
capabilities: {
|
|
746357
746426
|
tools: {}
|
|
@@ -747509,7 +747578,7 @@ function thrownResponse(error40) {
|
|
|
747509
747578
|
}
|
|
747510
747579
|
async function createUrMcp2026Runtime(options4) {
|
|
747511
747580
|
const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
|
|
747512
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.65.
|
|
747581
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.65.4" }, { capabilities: {} });
|
|
747513
747582
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
747514
747583
|
try {
|
|
747515
747584
|
await server2.connect(serverTransport);
|
|
@@ -747520,7 +747589,7 @@ async function createUrMcp2026Runtime(options4) {
|
|
|
747520
747589
|
}
|
|
747521
747590
|
const runtime2 = new Mcp2026Runtime({
|
|
747522
747591
|
cwd: options4.cwd,
|
|
747523
|
-
version: "1.65.
|
|
747592
|
+
version: "1.65.4",
|
|
747524
747593
|
backend: {
|
|
747525
747594
|
listTools: async () => {
|
|
747526
747595
|
const listed = await client2.listTools();
|
|
@@ -749653,7 +749722,7 @@ async function update() {
|
|
|
749653
749722
|
logEvent("tengu_update_check", {});
|
|
749654
749723
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
749655
749724
|
const result = await checkUpgradeStatus({
|
|
749656
|
-
currentVersion: "1.65.
|
|
749725
|
+
currentVersion: "1.65.4",
|
|
749657
749726
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
749658
749727
|
installationType: diagnostic2.installationType,
|
|
749659
749728
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -750969,7 +751038,7 @@ ${customInstructions}` : customInstructions;
|
|
|
750969
751038
|
}
|
|
750970
751039
|
}
|
|
750971
751040
|
logForDiagnosticsNoPII("info", "started", {
|
|
750972
|
-
version: "1.65.
|
|
751041
|
+
version: "1.65.4",
|
|
750973
751042
|
is_native_binary: isInBundledMode()
|
|
750974
751043
|
});
|
|
750975
751044
|
registerCleanup(async () => {
|
|
@@ -751755,7 +751824,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
751755
751824
|
pendingHookMessages
|
|
751756
751825
|
}, renderAndRun);
|
|
751757
751826
|
}
|
|
751758
|
-
}).version("1.65.
|
|
751827
|
+
}).version("1.65.4 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
751759
751828
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
751760
751829
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
751761
751830
|
if (canUserConfigureAdvisor()) {
|
|
@@ -752807,7 +752876,7 @@ if (false) {}
|
|
|
752807
752876
|
async function main2() {
|
|
752808
752877
|
const args = process.argv.slice(2);
|
|
752809
752878
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
752810
|
-
console.log(`${"1.65.
|
|
752879
|
+
console.log(`${"1.65.4"} (UR-Nexus)`);
|
|
752811
752880
|
return;
|
|
752812
752881
|
}
|
|
752813
752882
|
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.4</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.4",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED