ur-agent 1.80.7 → 1.80.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/dist/cli.js +108 -87
- package/docs/AGENT_FEATURES.md +6 -0
- package/docs/CONFIGURATION.md +4 -1
- package/docs/TROUBLESHOOTING.md +6 -0
- package/docs/USAGE.md +6 -3
- package/docs/VALIDATION.md +10 -4
- package/documentation/index.html +1 -1
- package/extensions/jetbrains-ur/build.gradle.kts +1 -1
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.80.8
|
|
4
|
+
|
|
5
|
+
- Fixed provider-independent failed-first research delegation. Several model
|
|
6
|
+
families selected `general-purpose` even when their own worker brief said
|
|
7
|
+
read-only research, causing `TaskListRequired` before the research could
|
|
8
|
+
start. UR now safely downgrades that exact main-session contract to its
|
|
9
|
+
mechanically read-only shipped `Explore` agent before task gating.
|
|
10
|
+
- Strengthened the shared Agent prompt and Explore description so models choose
|
|
11
|
+
`subagent_type="Explore"` directly for task-free research. The compatibility
|
|
12
|
+
downgrade also recognizes “research task only; do not write files” wording.
|
|
13
|
+
- Kept the boundary fail-closed: implementation prompts, custom definitions,
|
|
14
|
+
nested workers, named/team agents, worktrees, cwd overrides, and every other
|
|
15
|
+
general-purpose call still require an actionable task. Permission and hook
|
|
16
|
+
rewrites are revalidated before execution. Approve All remains unchanged.
|
|
17
|
+
|
|
3
18
|
## 1.80.7
|
|
4
19
|
|
|
5
20
|
- Fixed Ollama runs stopping with `response returned unavailable tool
|
package/dist/cli.js
CHANGED
|
@@ -107788,7 +107788,7 @@ var init_auth = __esm(() => {
|
|
|
107788
107788
|
|
|
107789
107789
|
// src/utils/userAgent.ts
|
|
107790
107790
|
function getURCodeUserAgent() {
|
|
107791
|
-
return `ur/${"1.80.
|
|
107791
|
+
return `ur/${"1.80.8"}`;
|
|
107792
107792
|
}
|
|
107793
107793
|
|
|
107794
107794
|
// src/utils/workloadContext.ts
|
|
@@ -107810,7 +107810,7 @@ function getUserAgent() {
|
|
|
107810
107810
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
107811
107811
|
const workload = getWorkload();
|
|
107812
107812
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
107813
|
-
return `ur-cli/${"1.80.
|
|
107813
|
+
return `ur-cli/${"1.80.8"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
107814
107814
|
}
|
|
107815
107815
|
function getMCPUserAgent() {
|
|
107816
107816
|
const parts = [];
|
|
@@ -107824,7 +107824,7 @@ function getMCPUserAgent() {
|
|
|
107824
107824
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
107825
107825
|
}
|
|
107826
107826
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
107827
|
-
return `ur/${"1.80.
|
|
107827
|
+
return `ur/${"1.80.8"}${suffix}`;
|
|
107828
107828
|
}
|
|
107829
107829
|
function getWebFetchUserAgent() {
|
|
107830
107830
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -107962,7 +107962,7 @@ var init_user = __esm(() => {
|
|
|
107962
107962
|
deviceId,
|
|
107963
107963
|
sessionId: getSessionId(),
|
|
107964
107964
|
email: getEmail(),
|
|
107965
|
-
appVersion: "1.80.
|
|
107965
|
+
appVersion: "1.80.8",
|
|
107966
107966
|
platform: getHostPlatformForAnalytics(),
|
|
107967
107967
|
organizationUuid,
|
|
107968
107968
|
accountUuid,
|
|
@@ -115849,7 +115849,7 @@ var init_metadata = __esm(() => {
|
|
|
115849
115849
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
115850
115850
|
WHITESPACE_REGEX = /\s+/;
|
|
115851
115851
|
getVersionBase = memoize_default(() => {
|
|
115852
|
-
const match = "1.80.
|
|
115852
|
+
const match = "1.80.8".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
115853
115853
|
return match ? match[0] : undefined;
|
|
115854
115854
|
});
|
|
115855
115855
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -115889,7 +115889,7 @@ var init_metadata = __esm(() => {
|
|
|
115889
115889
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
115890
115890
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
115891
115891
|
isURAiAuth: isURAISubscriber(),
|
|
115892
|
-
version: "1.80.
|
|
115892
|
+
version: "1.80.8",
|
|
115893
115893
|
versionBase: getVersionBase(),
|
|
115894
115894
|
buildTime: "",
|
|
115895
115895
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -116559,7 +116559,7 @@ function initialize1PEventLogging() {
|
|
|
116559
116559
|
const platform2 = getPlatform();
|
|
116560
116560
|
const attributes = {
|
|
116561
116561
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
116562
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.80.
|
|
116562
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.80.8"
|
|
116563
116563
|
};
|
|
116564
116564
|
if (platform2 === "wsl") {
|
|
116565
116565
|
const wslVersion = getWslVersion();
|
|
@@ -116587,7 +116587,7 @@ function initialize1PEventLogging() {
|
|
|
116587
116587
|
})
|
|
116588
116588
|
]
|
|
116589
116589
|
});
|
|
116590
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.80.
|
|
116590
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.80.8");
|
|
116591
116591
|
}
|
|
116592
116592
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
116593
116593
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -126550,7 +126550,7 @@ function formatA2AAgentCard(options = {}, pretty = true) {
|
|
|
126550
126550
|
function formatA2AV1AgentCard(options = {}, pretty = true) {
|
|
126551
126551
|
return JSON.stringify(buildA2AV1AgentCard(options), null, pretty ? 2 : 0);
|
|
126552
126552
|
}
|
|
126553
|
-
var urVersion = "1.80.
|
|
126553
|
+
var urVersion = "1.80.8", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
|
|
126554
126554
|
var init_trends = __esm(() => {
|
|
126555
126555
|
init_a2aCardSignature();
|
|
126556
126556
|
coverage = [
|
|
@@ -129440,7 +129440,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
129440
129440
|
if (!isAttributionHeaderEnabled()) {
|
|
129441
129441
|
return "";
|
|
129442
129442
|
}
|
|
129443
|
-
const version2 = `${"1.80.
|
|
129443
|
+
const version2 = `${"1.80.8"}.${fingerprint}`;
|
|
129444
129444
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
129445
129445
|
const cch = "";
|
|
129446
129446
|
const workload = getWorkload();
|
|
@@ -174270,7 +174270,7 @@ NOTE: You are meant to be a fast agent that returns output as quickly as possibl
|
|
|
174270
174270
|
|
|
174271
174271
|
Complete the user's search request efficiently and report your findings clearly.`;
|
|
174272
174272
|
}
|
|
174273
|
-
var EXPLORE_AGENT_MIN_QUERIES = 3, EXPLORE_WHEN_TO_USE = '
|
|
174273
|
+
var EXPLORE_AGENT_MIN_QUERIES = 3, EXPLORE_WHEN_TO_USE = 'Read-only research and exploration agent. Use this for external research, source gathering, audits, codebase exploration, file-pattern searches (eg. "src/components/**/*.tsx"), code searches (eg. "API endpoints"), and questions about how a repository works. Prefer this over general-purpose whenever the worker must not modify files, especially before an actionable task exists. Specify the desired thoroughness: "quick", "medium", or "very thorough".', EXPLORE_AGENT;
|
|
174274
174274
|
var init_exploreAgent = __esm(() => {
|
|
174275
174275
|
init_prompt3();
|
|
174276
174276
|
init_prompt4();
|
|
@@ -184636,7 +184636,7 @@ var init_projectSafety = __esm(() => {
|
|
|
184636
184636
|
function getInstruments() {
|
|
184637
184637
|
if (instruments)
|
|
184638
184638
|
return instruments;
|
|
184639
|
-
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.80.
|
|
184639
|
+
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.80.8");
|
|
184640
184640
|
instruments = {
|
|
184641
184641
|
operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
|
|
184642
184642
|
description: "GenAI operation duration.",
|
|
@@ -184734,7 +184734,7 @@ function genAiAgentAttributes() {
|
|
|
184734
184734
|
"gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
|
|
184735
184735
|
"gen_ai.provider.name": "ur",
|
|
184736
184736
|
"gen_ai.agent.name": "UR-Nexus",
|
|
184737
|
-
"gen_ai.agent.version": "1.80.
|
|
184737
|
+
"gen_ai.agent.version": "1.80.8"
|
|
184738
184738
|
};
|
|
184739
184739
|
}
|
|
184740
184740
|
function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
@@ -184755,7 +184755,7 @@ function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
|
184755
184755
|
function startGenAiWorkflowSpan(workflowName, workflowRunId) {
|
|
184756
184756
|
const attributes = genAiWorkflowAttributes(workflowName, workflowRunId);
|
|
184757
184757
|
const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
|
|
184758
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.80.
|
|
184758
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.80.8").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
184759
184759
|
}
|
|
184760
184760
|
function endGenAiWorkflowSpan(span, options2 = {}) {
|
|
184761
184761
|
try {
|
|
@@ -184793,7 +184793,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
|
|
|
184793
184793
|
if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
|
|
184794
184794
|
attributes["gen_ai.memory.record.count"] = options2.recordCount;
|
|
184795
184795
|
}
|
|
184796
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.80.
|
|
184796
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.80.8").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
184797
184797
|
}
|
|
184798
184798
|
function endGenAiMemorySpan(span, options2 = {}) {
|
|
184799
184799
|
try {
|
|
@@ -278508,7 +278508,7 @@ function getTelemetryAttributes() {
|
|
|
278508
278508
|
attributes["session.id"] = sessionId;
|
|
278509
278509
|
}
|
|
278510
278510
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
278511
|
-
attributes["app.version"] = "1.80.
|
|
278511
|
+
attributes["app.version"] = "1.80.8";
|
|
278512
278512
|
}
|
|
278513
278513
|
const oauthAccount = getOauthAccountInfo();
|
|
278514
278514
|
if (oauthAccount) {
|
|
@@ -319499,7 +319499,7 @@ function getInstallationEnv() {
|
|
|
319499
319499
|
return;
|
|
319500
319500
|
}
|
|
319501
319501
|
function getURCodeVersion() {
|
|
319502
|
-
return "1.80.
|
|
319502
|
+
return "1.80.8";
|
|
319503
319503
|
}
|
|
319504
319504
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
319505
319505
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -326869,7 +326869,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
326869
326869
|
const client2 = new Client({
|
|
326870
326870
|
name: "ur",
|
|
326871
326871
|
title: "UR",
|
|
326872
|
-
version: "1.80.
|
|
326872
|
+
version: "1.80.8",
|
|
326873
326873
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
326874
326874
|
websiteUrl: PRODUCT_URL
|
|
326875
326875
|
}, {
|
|
@@ -327230,7 +327230,7 @@ var init_client5 = __esm(() => {
|
|
|
327230
327230
|
const client2 = new Client({
|
|
327231
327231
|
name: "ur",
|
|
327232
327232
|
title: "UR",
|
|
327233
|
-
version: "1.80.
|
|
327233
|
+
version: "1.80.8",
|
|
327234
327234
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
327235
327235
|
websiteUrl: PRODUCT_URL
|
|
327236
327236
|
}, {
|
|
@@ -329250,6 +329250,15 @@ var init_agentToolUtils = __esm(() => {
|
|
|
329250
329250
|
function isShippedReadOnlyAgentDefinition(agent) {
|
|
329251
329251
|
return SHIPPED_READ_ONLY_AGENT_TYPES.has(agent.agentType) && agent.source === "built-in" && agent.permissionMode === "plan";
|
|
329252
329252
|
}
|
|
329253
|
+
function normalizeReadOnlyResearchDelegation(input, activeAgents, isNestedAgent) {
|
|
329254
|
+
if (isNestedAgent || input.subagent_type !== "general-purpose" || input.name !== undefined || input.team_name !== undefined || input.isolation !== undefined || input.cwd !== undefined || typeof input.prompt !== "string" || !READ_ONLY_RESEARCH_MARKER.test(input.prompt) || !RESEARCH_INTENT_MARKER.test(input.prompt)) {
|
|
329255
|
+
return input;
|
|
329256
|
+
}
|
|
329257
|
+
const exploreAgent = activeAgents.find((agent) => agent.agentType === "Explore" && isShippedReadOnlyAgentDefinition(agent));
|
|
329258
|
+
if (!exploreAgent)
|
|
329259
|
+
return input;
|
|
329260
|
+
return { ...input, subagent_type: exploreAgent.agentType };
|
|
329261
|
+
}
|
|
329253
329262
|
function shouldApplyAgentDefinitionPermissionMode(agent, parentMode, transcriptClassifierEnabled) {
|
|
329254
329263
|
if (!agent.permissionMode)
|
|
329255
329264
|
return false;
|
|
@@ -329257,12 +329266,14 @@ function shouldApplyAgentDefinitionPermissionMode(agent, parentMode, transcriptC
|
|
|
329257
329266
|
return true;
|
|
329258
329267
|
return parentMode !== "bypassPermissions" && parentMode !== "acceptEdits" && !(transcriptClassifierEnabled && parentMode === "auto");
|
|
329259
329268
|
}
|
|
329260
|
-
var SHIPPED_READ_ONLY_AGENT_TYPES;
|
|
329269
|
+
var SHIPPED_READ_ONLY_AGENT_TYPES, READ_ONLY_RESEARCH_MARKER, RESEARCH_INTENT_MARKER;
|
|
329261
329270
|
var init_readOnlyAgents = __esm(() => {
|
|
329262
329271
|
SHIPPED_READ_ONLY_AGENT_TYPES = new Set([
|
|
329263
329272
|
"Explore",
|
|
329264
329273
|
"Plan"
|
|
329265
329274
|
]);
|
|
329275
|
+
READ_ONLY_RESEARCH_MARKER = /\bread[\s-]?only\b|\b(?:do not|don't|must not|never)\s+(?:modify|write|edit|create|change)\s+(?:any\s+)?(?:code\s+)?files?\b|\bno\s+(?:file|workspace)\s+(?:changes|modifications)\b/i;
|
|
329276
|
+
RESEARCH_INTENT_MARKER = /\b(?:research|investigat\w*|explor\w*|analy[sz]\w*|audit\w*)\b/i;
|
|
329266
329277
|
});
|
|
329267
329278
|
|
|
329268
329279
|
// src/components/AgentProgressLine.tsx
|
|
@@ -339987,7 +339998,7 @@ async function createRuntime() {
|
|
|
339987
339998
|
bootstrapTelemetry();
|
|
339988
339999
|
const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
|
|
339989
340000
|
[import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
|
|
339990
|
-
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.80.
|
|
340001
|
+
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.80.8"
|
|
339991
340002
|
}));
|
|
339992
340003
|
const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
|
|
339993
340004
|
resource,
|
|
@@ -340020,11 +340031,11 @@ async function createRuntime() {
|
|
|
340020
340031
|
setMeterProvider(meterProvider);
|
|
340021
340032
|
setLoggerProvider(loggerProvider);
|
|
340022
340033
|
if (meterProvider) {
|
|
340023
|
-
const meter = meterProvider.getMeter("ur-agent", "1.80.
|
|
340034
|
+
const meter = meterProvider.getMeter("ur-agent", "1.80.8");
|
|
340024
340035
|
setMeter(meter, (name, options2) => meter.createCounter(name, options2));
|
|
340025
340036
|
}
|
|
340026
340037
|
if (loggerProvider) {
|
|
340027
|
-
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.80.
|
|
340038
|
+
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.80.8"));
|
|
340028
340039
|
}
|
|
340029
340040
|
if (!cleanupRegistered3) {
|
|
340030
340041
|
cleanupRegistered3 = true;
|
|
@@ -340686,9 +340697,9 @@ async function assertMinVersion() {
|
|
|
340686
340697
|
if (false) {}
|
|
340687
340698
|
try {
|
|
340688
340699
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
340689
|
-
if (versionConfig.minVersion && lt("1.80.
|
|
340700
|
+
if (versionConfig.minVersion && lt("1.80.8", versionConfig.minVersion)) {
|
|
340690
340701
|
console.error(`
|
|
340691
|
-
It looks like your version of UR (${"1.80.
|
|
340702
|
+
It looks like your version of UR (${"1.80.8"}) needs an update.
|
|
340692
340703
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
340693
340704
|
|
|
340694
340705
|
To update, please run:
|
|
@@ -340904,7 +340915,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
340904
340915
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
340905
340916
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
340906
340917
|
pid: process.pid,
|
|
340907
|
-
currentVersion: "1.80.
|
|
340918
|
+
currentVersion: "1.80.8"
|
|
340908
340919
|
});
|
|
340909
340920
|
return "in_progress";
|
|
340910
340921
|
}
|
|
@@ -340913,7 +340924,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
340913
340924
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
340914
340925
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
340915
340926
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
340916
|
-
currentVersion: "1.80.
|
|
340927
|
+
currentVersion: "1.80.8"
|
|
340917
340928
|
});
|
|
340918
340929
|
console.error(`
|
|
340919
340930
|
Error: Windows NPM detected in WSL
|
|
@@ -341448,7 +341459,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
341448
341459
|
}
|
|
341449
341460
|
async function getDoctorDiagnostic() {
|
|
341450
341461
|
const installationType = await getCurrentInstallationType();
|
|
341451
|
-
const version2 = typeof MACRO !== "undefined" ? "1.80.
|
|
341462
|
+
const version2 = typeof MACRO !== "undefined" ? "1.80.8" : "unknown";
|
|
341452
341463
|
const installationPath = await getInstallationPath();
|
|
341453
341464
|
const invokedBinary = getInvokedBinary();
|
|
341454
341465
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -342383,8 +342394,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
342383
342394
|
const maxVersion = await getMaxVersion();
|
|
342384
342395
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
342385
342396
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
342386
|
-
if (gte("1.80.
|
|
342387
|
-
logForDebugging(`Native installer: current version ${"1.80.
|
|
342397
|
+
if (gte("1.80.8", maxVersion)) {
|
|
342398
|
+
logForDebugging(`Native installer: current version ${"1.80.8"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
342388
342399
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
342389
342400
|
latency_ms: Date.now() - startTime,
|
|
342390
342401
|
max_version: maxVersion,
|
|
@@ -342395,7 +342406,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
342395
342406
|
version2 = maxVersion;
|
|
342396
342407
|
}
|
|
342397
342408
|
}
|
|
342398
|
-
if (!forceReinstall && version2 === "1.80.
|
|
342409
|
+
if (!forceReinstall && version2 === "1.80.8" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
342399
342410
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
342400
342411
|
logEvent("tengu_native_update_complete", {
|
|
342401
342412
|
latency_ms: Date.now() - startTime,
|
|
@@ -406705,7 +406716,7 @@ async function getPrompt9(agentDefinitions, isCoordinator, allowedAgentTypes) {
|
|
|
406705
406716
|
## When to fork
|
|
406706
406717
|
|
|
406707
406718
|
Fork yourself (omit \`subagent_type\`) when the intermediate tool output isn't worth keeping in your context. The criterion is qualitative \u2014 "will I need this output again" \u2014 not task size.
|
|
406708
|
-
- **Research**: fork open-ended questions
|
|
406719
|
+
- **Research after tasks exist**: fork open-ended questions when inherited context is valuable. Before an actionable task exists, use the shipped \`Explore\` agent instead; a fork or general-purpose agent is write-capable and will be task-gated. If research can be broken into independent questions, launch parallel \`Explore\` agents in one message.
|
|
406709
406720
|
- **Implementation**: fork only a bounded branch with explicit file scope. Parallel implementation forks must use isolated worktrees based on the exact clean starting revision; otherwise keep shared-checkout writers sequential. Do research before jumping to implementation.
|
|
406710
406721
|
|
|
406711
406722
|
Forks are cheap because they share your prompt cache. Don't set \`model\` on a fork \u2014 a different model can't reuse the parent's cache. Pass a short \`name\` (one or two words, lowercase) so the user can see the fork in the teams panel and steer it mid-run.
|
|
@@ -413051,7 +413062,7 @@ function isAnyTracingEnabled() {
|
|
|
413051
413062
|
return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
|
|
413052
413063
|
}
|
|
413053
413064
|
function getTracer() {
|
|
413054
|
-
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.80.
|
|
413065
|
+
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.80.8");
|
|
413055
413066
|
}
|
|
413056
413067
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
413057
413068
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -414843,6 +414854,16 @@ async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContex
|
|
|
414843
414854
|
}
|
|
414844
414855
|
}
|
|
414845
414856
|
}
|
|
414857
|
+
if (parsedInput.success && (tool.name === AGENT_TOOL_NAME || tool.name === LEGACY_AGENT_TOOL_NAME)) {
|
|
414858
|
+
const normalizedDelegation = normalizeReadOnlyResearchDelegation(parsedInput.data, toolUseContext.options.agentDefinitions.activeAgents, Boolean(toolUseContext.agentId));
|
|
414859
|
+
if (normalizedDelegation !== parsedInput.data) {
|
|
414860
|
+
input = normalizedDelegation;
|
|
414861
|
+
parsedInput = tool.inputSchema.safeParse(input);
|
|
414862
|
+
logEvent("tengu_agent_read_only_research_normalized", {
|
|
414863
|
+
toolName: sanitizeToolNameForAnalytics(tool.name)
|
|
414864
|
+
});
|
|
414865
|
+
}
|
|
414866
|
+
}
|
|
414846
414867
|
let callSig = callSignature(tool.name, input, repeatedFailureScope(toolUseContext, messageId));
|
|
414847
414868
|
const repeat2 = checkRepeatedFailure(callSig);
|
|
414848
414869
|
if (repeat2.action !== "allow") {
|
|
@@ -443170,7 +443191,7 @@ function Feedback({
|
|
|
443170
443191
|
platform: env2.platform,
|
|
443171
443192
|
gitRepo: envInfo.isGit,
|
|
443172
443193
|
terminal: env2.terminal,
|
|
443173
|
-
version: "1.80.
|
|
443194
|
+
version: "1.80.8",
|
|
443174
443195
|
transcript: normalizeMessagesForAPI(messages),
|
|
443175
443196
|
errors: sanitizedErrors,
|
|
443176
443197
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -443362,7 +443383,7 @@ function Feedback({
|
|
|
443362
443383
|
", ",
|
|
443363
443384
|
env2.terminal,
|
|
443364
443385
|
", v",
|
|
443365
|
-
"1.80.
|
|
443386
|
+
"1.80.8"
|
|
443366
443387
|
]
|
|
443367
443388
|
}, undefined, true, undefined, this)
|
|
443368
443389
|
]
|
|
@@ -443468,7 +443489,7 @@ ${sanitizedDescription}
|
|
|
443468
443489
|
` + `**Environment Info**
|
|
443469
443490
|
` + `- Platform: ${env2.platform}
|
|
443470
443491
|
` + `- Terminal: ${env2.terminal}
|
|
443471
|
-
` + `- Version: ${"1.80.
|
|
443492
|
+
` + `- Version: ${"1.80.8"}
|
|
443472
443493
|
` + `- Feedback ID: ${feedbackId}
|
|
443473
443494
|
` + `
|
|
443474
443495
|
**Errors**
|
|
@@ -446578,7 +446599,7 @@ function buildPrimarySection() {
|
|
|
446578
446599
|
}, undefined, false, undefined, this);
|
|
446579
446600
|
return [{
|
|
446580
446601
|
label: "Version",
|
|
446581
|
-
value: "1.80.
|
|
446602
|
+
value: "1.80.8"
|
|
446582
446603
|
}, {
|
|
446583
446604
|
label: "Session name",
|
|
446584
446605
|
value: nameValue
|
|
@@ -449960,7 +449981,7 @@ function Config({
|
|
|
449960
449981
|
}
|
|
449961
449982
|
}, undefined, false, undefined, this)
|
|
449962
449983
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
|
|
449963
|
-
currentVersion: "1.80.
|
|
449984
|
+
currentVersion: "1.80.8",
|
|
449964
449985
|
onChoice: (choice) => {
|
|
449965
449986
|
setShowSubmenu(null);
|
|
449966
449987
|
setTabsHidden(false);
|
|
@@ -449972,7 +449993,7 @@ function Config({
|
|
|
449972
449993
|
autoUpdatesChannel: "stable"
|
|
449973
449994
|
};
|
|
449974
449995
|
if (choice === "stay") {
|
|
449975
|
-
newSettings.minimumVersion = "1.80.
|
|
449996
|
+
newSettings.minimumVersion = "1.80.8";
|
|
449976
449997
|
}
|
|
449977
449998
|
updateSettingsForSource("userSettings", newSettings);
|
|
449978
449999
|
setSettingsData((prev_27) => ({
|
|
@@ -458281,7 +458302,7 @@ function HelpV2(t0) {
|
|
|
458281
458302
|
let t6;
|
|
458282
458303
|
if ($2[31] !== tabs) {
|
|
458283
458304
|
t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
|
|
458284
|
-
title: `UR v${"1.80.
|
|
458305
|
+
title: `UR v${"1.80.8"}`,
|
|
458285
458306
|
color: "professionalBlue",
|
|
458286
458307
|
defaultTab: "general",
|
|
458287
458308
|
children: tabs
|
|
@@ -459214,7 +459235,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
459214
459235
|
async function handleInitialize(options2) {
|
|
459215
459236
|
return {
|
|
459216
459237
|
name: "UR",
|
|
459217
|
-
version: "1.80.
|
|
459238
|
+
version: "1.80.8",
|
|
459218
459239
|
protocolVersion: "0.1.0",
|
|
459219
459240
|
workspaceRoot: options2.cwd,
|
|
459220
459241
|
capabilities: {
|
|
@@ -476322,7 +476343,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
476322
476343
|
return [];
|
|
476323
476344
|
}
|
|
476324
476345
|
}
|
|
476325
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.80.
|
|
476346
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.80.8") {
|
|
476326
476347
|
if (process.env.USER_TYPE === "ant") {
|
|
476327
476348
|
const changelog = "";
|
|
476328
476349
|
if (changelog) {
|
|
@@ -476349,7 +476370,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.80.7")
|
|
|
476349
476370
|
releaseNotes
|
|
476350
476371
|
};
|
|
476351
476372
|
}
|
|
476352
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.80.
|
|
476373
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.80.8") {
|
|
476353
476374
|
if (process.env.USER_TYPE === "ant") {
|
|
476354
476375
|
const changelog = "";
|
|
476355
476376
|
if (changelog) {
|
|
@@ -479254,7 +479275,7 @@ function getRecentActivitySync() {
|
|
|
479254
479275
|
return cachedActivity;
|
|
479255
479276
|
}
|
|
479256
479277
|
function getLogoDisplayData() {
|
|
479257
|
-
const version2 = process.env.DEMO_VERSION ?? "1.80.
|
|
479278
|
+
const version2 = process.env.DEMO_VERSION ?? "1.80.8";
|
|
479258
479279
|
const serverUrl = getDirectConnectServerUrl();
|
|
479259
479280
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
479260
479281
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -480122,7 +480143,7 @@ function LogoV2() {
|
|
|
480122
480143
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
480123
480144
|
t2 = () => {
|
|
480124
480145
|
const currentConfig = getGlobalConfig();
|
|
480125
|
-
if (currentConfig.lastReleaseNotesSeen === "1.80.
|
|
480146
|
+
if (currentConfig.lastReleaseNotesSeen === "1.80.8") {
|
|
480126
480147
|
return;
|
|
480127
480148
|
}
|
|
480128
480149
|
saveGlobalConfig(_temp325);
|
|
@@ -480807,12 +480828,12 @@ function LogoV2() {
|
|
|
480807
480828
|
return t41;
|
|
480808
480829
|
}
|
|
480809
480830
|
function _temp325(current) {
|
|
480810
|
-
if (current.lastReleaseNotesSeen === "1.80.
|
|
480831
|
+
if (current.lastReleaseNotesSeen === "1.80.8") {
|
|
480811
480832
|
return current;
|
|
480812
480833
|
}
|
|
480813
480834
|
return {
|
|
480814
480835
|
...current,
|
|
480815
|
-
lastReleaseNotesSeen: "1.80.
|
|
480836
|
+
lastReleaseNotesSeen: "1.80.8"
|
|
480816
480837
|
};
|
|
480817
480838
|
}
|
|
480818
480839
|
function _temp241(s_0) {
|
|
@@ -496904,7 +496925,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
496904
496925
|
if (spec.name !== specName) {
|
|
496905
496926
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
496906
496927
|
}
|
|
496907
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.80.
|
|
496928
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.80.8" : "1.80.8");
|
|
496908
496929
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
496909
496930
|
throw new Error("invalid ur-agent package version");
|
|
496910
496931
|
}
|
|
@@ -497897,7 +497918,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
497897
497918
|
path: ".github/workflows/ur.yml",
|
|
497898
497919
|
root: "project",
|
|
497899
497920
|
content: compileAgenticCiWorkflow("default", {
|
|
497900
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.80.
|
|
497921
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.80.8" : "1.80.8"
|
|
497901
497922
|
})
|
|
497902
497923
|
},
|
|
497903
497924
|
{
|
|
@@ -497960,7 +497981,7 @@ function value(tokens, flag) {
|
|
|
497960
497981
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
497961
497982
|
}
|
|
497962
497983
|
function cliVersion() {
|
|
497963
|
-
return typeof MACRO !== "undefined" ? "1.80.
|
|
497984
|
+
return typeof MACRO !== "undefined" ? "1.80.8" : "1.80.8";
|
|
497964
497985
|
}
|
|
497965
497986
|
function workflowPath(cwd2) {
|
|
497966
497987
|
return join168(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -503816,7 +503837,7 @@ function createAcpStdioApp(deps) {
|
|
|
503816
503837
|
}
|
|
503817
503838
|
},
|
|
503818
503839
|
authMethods: [],
|
|
503819
|
-
agentInfo: { name: "UR-Nexus", version: "1.80.
|
|
503840
|
+
agentInfo: { name: "UR-Nexus", version: "1.80.8" }
|
|
503820
503841
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
503821
503842
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
503822
503843
|
await runtime2.announce({
|
|
@@ -503913,7 +503934,7 @@ function createAcpStdioAgent(deps) {
|
|
|
503913
503934
|
}
|
|
503914
503935
|
},
|
|
503915
503936
|
authMethods: [],
|
|
503916
|
-
agentInfo: { name: "UR-Nexus", version: "1.80.
|
|
503937
|
+
agentInfo: { name: "UR-Nexus", version: "1.80.8" }
|
|
503917
503938
|
});
|
|
503918
503939
|
return;
|
|
503919
503940
|
case "authenticate":
|
|
@@ -715139,7 +715160,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
715139
715160
|
smapsRollup,
|
|
715140
715161
|
platform: process.platform,
|
|
715141
715162
|
nodeVersion: process.version,
|
|
715142
|
-
ccVersion: "1.80.
|
|
715163
|
+
ccVersion: "1.80.8"
|
|
715143
715164
|
};
|
|
715144
715165
|
}
|
|
715145
715166
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -715728,7 +715749,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
715728
715749
|
var call154 = async () => {
|
|
715729
715750
|
return {
|
|
715730
715751
|
type: "text",
|
|
715731
|
-
value: "1.80.
|
|
715752
|
+
value: "1.80.8"
|
|
715732
715753
|
};
|
|
715733
715754
|
}, version2, version_default;
|
|
715734
715755
|
var init_version = __esm(() => {
|
|
@@ -726971,7 +726992,7 @@ function generateHtmlReport(data, insights) {
|
|
|
726971
726992
|
</html>`;
|
|
726972
726993
|
}
|
|
726973
726994
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
726974
|
-
const version3 = typeof MACRO !== "undefined" ? "1.80.
|
|
726995
|
+
const version3 = typeof MACRO !== "undefined" ? "1.80.8" : "unknown";
|
|
726975
726996
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
726976
726997
|
const facets_summary = {
|
|
726977
726998
|
total: facets.size,
|
|
@@ -731284,7 +731305,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
731284
731305
|
init_settings2();
|
|
731285
731306
|
init_slowOperations();
|
|
731286
731307
|
init_uuid();
|
|
731287
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.80.
|
|
731308
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.80.8" : "unknown";
|
|
731288
731309
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
731289
731310
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
731290
731311
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -732499,7 +732520,7 @@ var init_filesystem = __esm(() => {
|
|
|
732499
732520
|
});
|
|
732500
732521
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
732501
732522
|
const nonce = randomBytes24(16).toString("hex");
|
|
732502
|
-
return join243(getURTempDir(), "bundled-skills", "1.80.
|
|
732523
|
+
return join243(getURTempDir(), "bundled-skills", "1.80.8", nonce);
|
|
732503
732524
|
});
|
|
732504
732525
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
732505
732526
|
});
|
|
@@ -738119,7 +738140,7 @@ function getOllamaToolDisciplineSection() {
|
|
|
738119
738140
|
}
|
|
738120
738141
|
function getAgentToolSection() {
|
|
738121
738142
|
const launch = isForkSubagentEnabled() ? `Calling ${AGENT_TOOL_NAME} without a subagent_type creates a fork, which runs in the background and keeps its raw tool output out of your context. **If you ARE the fork**, execute your bounded assignment directly; do not re-delegate.` : `Use ${AGENT_TOOL_NAME} with the specialized agent whose description best matches each bounded assignment.`;
|
|
738122
|
-
return `${launch} For a large request, first create a bounded task list, then delegate at most one ready independent branch per agent.
|
|
738143
|
+
return `${launch} For a large request, first create a bounded task list, then delegate at most one ready independent branch per agent. Before that list exists, read-only research, audits, and exploration MUST use subagent_type="Explore" (or "Plan" for planning); never label a read-only worker general-purpose. Every custom, general-purpose, write-capable, nested, team, or worktree delegation requires a ready parent task. Launch independent read-only research, audits, or exploration together. Shared-checkout writers, unknown scopes, dependencies, and overlapping file targets must run sequentially. Parallel writers require separate worktrees based on the exact clean starting revision; if the current required state is dirty or unsnapshotted, keep those writers serial in the shared checkout. Keep tiny dependent steps with the parent when delegation overhead is larger than the work. The parent owns task status, integration, and final verification: do not duplicate delegated work, do not mark a delegated task complete from a launch acknowledgement, and do not finish until the returned result and acceptance evidence have been checked.`;
|
|
738123
738144
|
}
|
|
738124
738145
|
function getDiscoverSkillsGuidance() {
|
|
738125
738146
|
if (false) {}
|
|
@@ -738889,7 +738910,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
738889
738910
|
}
|
|
738890
738911
|
function computeFingerprintFromMessages(messages) {
|
|
738891
738912
|
const firstMessageText = extractFirstMessageText(messages);
|
|
738892
|
-
return computeFingerprint(firstMessageText, "1.80.
|
|
738913
|
+
return computeFingerprint(firstMessageText, "1.80.8");
|
|
738893
738914
|
}
|
|
738894
738915
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
738895
738916
|
var init_fingerprint = () => {};
|
|
@@ -740814,7 +740835,7 @@ async function sideQuery(opts) {
|
|
|
740814
740835
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
740815
740836
|
}
|
|
740816
740837
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
740817
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.80.
|
|
740838
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.80.8");
|
|
740818
740839
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
740819
740840
|
const systemBlocks = [
|
|
740820
740841
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -745648,7 +745669,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
745648
745669
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
745649
745670
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
745650
745671
|
betas: getSdkBetas(),
|
|
745651
|
-
ur_version: "1.80.
|
|
745672
|
+
ur_version: "1.80.8",
|
|
745652
745673
|
output_style: outputStyle,
|
|
745653
745674
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
745654
745675
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -759484,7 +759505,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
759484
759505
|
function getSemverPart(version3) {
|
|
759485
759506
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
759486
759507
|
}
|
|
759487
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.80.
|
|
759508
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.80.8") {
|
|
759488
759509
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
|
|
759489
759510
|
if (!updatedVersion) {
|
|
759490
759511
|
return null;
|
|
@@ -759533,7 +759554,7 @@ function AutoUpdater({
|
|
|
759533
759554
|
return;
|
|
759534
759555
|
}
|
|
759535
759556
|
if (false) {}
|
|
759536
|
-
const currentVersion = "1.80.
|
|
759557
|
+
const currentVersion = "1.80.8";
|
|
759537
759558
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
759538
759559
|
let latestVersion = await getLatestVersion(channel);
|
|
759539
759560
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -759762,12 +759783,12 @@ function NativeAutoUpdater({
|
|
|
759762
759783
|
logEvent("tengu_native_auto_updater_start", {});
|
|
759763
759784
|
try {
|
|
759764
759785
|
const maxVersion = await getMaxVersion();
|
|
759765
|
-
if (maxVersion && gt("1.80.
|
|
759786
|
+
if (maxVersion && gt("1.80.8", maxVersion)) {
|
|
759766
759787
|
const msg = await getMaxVersionMessage();
|
|
759767
759788
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
759768
759789
|
}
|
|
759769
759790
|
const result = await installLatest(channel);
|
|
759770
|
-
const currentVersion = "1.80.
|
|
759791
|
+
const currentVersion = "1.80.8";
|
|
759771
759792
|
const latencyMs = Date.now() - startTime;
|
|
759772
759793
|
if (result.lockFailed) {
|
|
759773
759794
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -759904,17 +759925,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
759904
759925
|
const maxVersion = await getMaxVersion();
|
|
759905
759926
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
759906
759927
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
759907
|
-
if (gte("1.80.
|
|
759908
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.80.
|
|
759928
|
+
if (gte("1.80.8", maxVersion)) {
|
|
759929
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.80.8"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
759909
759930
|
setUpdateAvailable(false);
|
|
759910
759931
|
return;
|
|
759911
759932
|
}
|
|
759912
759933
|
latest = maxVersion;
|
|
759913
759934
|
}
|
|
759914
|
-
const hasUpdate = latest && !gte("1.80.
|
|
759935
|
+
const hasUpdate = latest && !gte("1.80.8", latest) && !shouldSkipVersion(latest);
|
|
759915
759936
|
setUpdateAvailable(!!hasUpdate);
|
|
759916
759937
|
if (hasUpdate) {
|
|
759917
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.80.
|
|
759938
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.80.8"} -> ${latest}`);
|
|
759918
759939
|
}
|
|
759919
759940
|
};
|
|
759920
759941
|
$2[0] = t1;
|
|
@@ -759948,7 +759969,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
759948
759969
|
wrap: "truncate",
|
|
759949
759970
|
children: [
|
|
759950
759971
|
"currentVersion: ",
|
|
759951
|
-
"1.80.
|
|
759972
|
+
"1.80.8"
|
|
759952
759973
|
]
|
|
759953
759974
|
}, undefined, true, undefined, this);
|
|
759954
759975
|
$2[3] = verbose;
|
|
@@ -770801,7 +770822,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
770801
770822
|
project_dir: getOriginalCwd(),
|
|
770802
770823
|
added_dirs: addedDirs
|
|
770803
770824
|
},
|
|
770804
|
-
version: "1.80.
|
|
770825
|
+
version: "1.80.8",
|
|
770805
770826
|
output_style: {
|
|
770806
770827
|
name: outputStyleName
|
|
770807
770828
|
},
|
|
@@ -770936,7 +770957,7 @@ function StatusLineInner({
|
|
|
770936
770957
|
const attention = customStatusError ?? taskAttention;
|
|
770937
770958
|
const terminalSize = React133.useContext(TerminalSizeContext);
|
|
770938
770959
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
770939
|
-
version: "1.80.
|
|
770960
|
+
version: "1.80.8",
|
|
770940
770961
|
providerLabel: providerRuntime.providerLabel,
|
|
770941
770962
|
authMode: providerRuntime.authLabel,
|
|
770942
770963
|
model: renderModelName(mainLoopModel) || providerRuntime.model || "",
|
|
@@ -783191,7 +783212,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
783191
783212
|
} catch {}
|
|
783192
783213
|
const data = {
|
|
783193
783214
|
trigger: trigger2,
|
|
783194
|
-
version: "1.80.
|
|
783215
|
+
version: "1.80.8",
|
|
783195
783216
|
platform: process.platform,
|
|
783196
783217
|
transcript,
|
|
783197
783218
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -795560,7 +795581,7 @@ function WelcomeV2() {
|
|
|
795560
795581
|
dimColor: true,
|
|
795561
795582
|
children: [
|
|
795562
795583
|
"v",
|
|
795563
|
-
"1.80.
|
|
795584
|
+
"1.80.8"
|
|
795564
795585
|
]
|
|
795565
795586
|
}, undefined, true, undefined, this)
|
|
795566
795587
|
]
|
|
@@ -796820,7 +796841,7 @@ function completeOnboarding() {
|
|
|
796820
796841
|
saveGlobalConfig((current) => ({
|
|
796821
796842
|
...current,
|
|
796822
796843
|
hasCompletedOnboarding: true,
|
|
796823
|
-
lastOnboardingVersion: "1.80.
|
|
796844
|
+
lastOnboardingVersion: "1.80.8"
|
|
796824
796845
|
}));
|
|
796825
796846
|
}
|
|
796826
796847
|
function showDialog(root2, renderer) {
|
|
@@ -801966,7 +801987,7 @@ function appendToLog(path28, message) {
|
|
|
801966
801987
|
cwd: getFsImplementation().cwd(),
|
|
801967
801988
|
userType: process.env.USER_TYPE,
|
|
801968
801989
|
sessionId: getSessionId(),
|
|
801969
|
-
version: "1.80.
|
|
801990
|
+
version: "1.80.8"
|
|
801970
801991
|
};
|
|
801971
801992
|
getLogWriter(path28).write(messageWithTimestamp);
|
|
801972
801993
|
}
|
|
@@ -806130,8 +806151,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
806130
806151
|
}
|
|
806131
806152
|
async function checkEnvLessBridgeMinVersion() {
|
|
806132
806153
|
const cfg = await getEnvLessBridgeConfig();
|
|
806133
|
-
if (cfg.min_version && lt("1.80.
|
|
806134
|
-
return `Your version of UR (${"1.80.
|
|
806154
|
+
if (cfg.min_version && lt("1.80.8", cfg.min_version)) {
|
|
806155
|
+
return `Your version of UR (${"1.80.8"}) is too old for Remote Control.
|
|
806135
806156
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
806136
806157
|
}
|
|
806137
806158
|
return null;
|
|
@@ -806605,7 +806626,7 @@ async function initBridgeCore(params) {
|
|
|
806605
806626
|
const rawApi = createBridgeApiClient({
|
|
806606
806627
|
baseUrl,
|
|
806607
806628
|
getAccessToken,
|
|
806608
|
-
runnerVersion: "1.80.
|
|
806629
|
+
runnerVersion: "1.80.8",
|
|
806609
806630
|
onDebug: logForDebugging,
|
|
806610
806631
|
onAuth401,
|
|
806611
806632
|
getTrustedDeviceToken
|
|
@@ -816078,7 +816099,7 @@ function getAgUiCapabilities() {
|
|
|
816078
816099
|
name: "UR-Nexus",
|
|
816079
816100
|
type: "ur-nexus",
|
|
816080
816101
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
816081
|
-
version: "1.80.
|
|
816102
|
+
version: "1.80.8",
|
|
816082
816103
|
provider: "UR",
|
|
816083
816104
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
816084
816105
|
},
|
|
@@ -817305,7 +817326,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
817305
817326
|
};
|
|
817306
817327
|
const server2 = new Server({
|
|
817307
817328
|
name: "ur-nexus",
|
|
817308
|
-
version: "1.80.
|
|
817329
|
+
version: "1.80.8"
|
|
817309
817330
|
}, {
|
|
817310
817331
|
capabilities: {
|
|
817311
817332
|
tools: {}
|
|
@@ -818509,7 +818530,7 @@ function thrownResponse(error40) {
|
|
|
818509
818530
|
}
|
|
818510
818531
|
async function createUrMcp2026Runtime(options5) {
|
|
818511
818532
|
const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
|
|
818512
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.80.
|
|
818533
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.80.8" }, { capabilities: {} });
|
|
818513
818534
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
818514
818535
|
try {
|
|
818515
818536
|
await server2.connect(serverTransport);
|
|
@@ -818520,7 +818541,7 @@ async function createUrMcp2026Runtime(options5) {
|
|
|
818520
818541
|
}
|
|
818521
818542
|
const runtime2 = new Mcp2026Runtime({
|
|
818522
818543
|
cwd: options5.cwd,
|
|
818523
|
-
version: "1.80.
|
|
818544
|
+
version: "1.80.8",
|
|
818524
818545
|
backend: {
|
|
818525
818546
|
listTools: async () => {
|
|
818526
818547
|
const listed = await client2.listTools();
|
|
@@ -821255,7 +821276,7 @@ async function update() {
|
|
|
821255
821276
|
logEvent("tengu_update_check", {});
|
|
821256
821277
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
821257
821278
|
const result = await checkUpgradeStatus({
|
|
821258
|
-
currentVersion: "1.80.
|
|
821279
|
+
currentVersion: "1.80.8",
|
|
821259
821280
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
821260
821281
|
installationType: diagnostic2.installationType,
|
|
821261
821282
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -822583,7 +822604,7 @@ ${customInstructions}` : customInstructions;
|
|
|
822583
822604
|
}
|
|
822584
822605
|
}
|
|
822585
822606
|
logForDiagnosticsNoPII("info", "started", {
|
|
822586
|
-
version: "1.80.
|
|
822607
|
+
version: "1.80.8",
|
|
822587
822608
|
is_native_binary: isInBundledMode()
|
|
822588
822609
|
});
|
|
822589
822610
|
registerCleanup(async () => {
|
|
@@ -823370,7 +823391,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
823370
823391
|
pendingHookMessages
|
|
823371
823392
|
}, renderAndRun);
|
|
823372
823393
|
}
|
|
823373
|
-
}).version("1.80.
|
|
823394
|
+
}).version("1.80.8 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
823374
823395
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
823375
823396
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
823376
823397
|
if (canUserConfigureAdvisor()) {
|
|
@@ -824497,7 +824518,7 @@ if (false) {}
|
|
|
824497
824518
|
async function main2() {
|
|
824498
824519
|
const args = process.argv.slice(2);
|
|
824499
824520
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
824500
|
-
console.log(`${"1.80.
|
|
824521
|
+
console.log(`${"1.80.8"} (UR-Nexus)`);
|
|
824501
824522
|
return;
|
|
824502
824523
|
}
|
|
824503
824524
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|
package/docs/AGENT_FEATURES.md
CHANGED
|
@@ -9,6 +9,12 @@ reproducible autonomous software engineering agent: every substantial task can
|
|
|
9
9
|
be driven as `spec -> plan -> patch -> test -> report -> rollback`, with the
|
|
10
10
|
spec as the durable source of truth and command evidence as the success gate.
|
|
11
11
|
|
|
12
|
+
## v1.80.8 Addition
|
|
13
|
+
|
|
14
|
+
| Addition | Surface | What it adds |
|
|
15
|
+
| --- | --- | --- |
|
|
16
|
+
| Provider-independent research routing | Shared Agent prompt and execution gate | Directs every model family to use the shipped `Explore` worker for task-free read-only research. If a model still labels an explicitly read-only research brief `general-purpose`, UR reduces it to protected Explore capabilities before task gating; write-capable and custom delegation remains gated. |
|
|
17
|
+
|
|
12
18
|
## v1.80.7 Additions
|
|
13
19
|
|
|
14
20
|
| Addition | Surface | What it adds |
|
package/docs/CONFIGURATION.md
CHANGED
|
@@ -60,7 +60,10 @@ gated, because they could not satisfy the requirement. The main session may
|
|
|
60
60
|
launch UR's shipped `Explore` and `Plan` agents before a task exists in any
|
|
61
61
|
permission mode. These exact built-in definitions are forced read-only; custom,
|
|
62
62
|
write-capable, nested, named/team, and worktree delegation still requires an
|
|
63
|
-
actionable parent task.
|
|
63
|
+
actionable parent task. As provider-independent compatibility, an unnamed
|
|
64
|
+
main-session `general-purpose` call whose own prompt explicitly declares both
|
|
65
|
+
research intent and no file writes is reduced to the shipped Explore definition
|
|
66
|
+
before the gate. It never receives general-purpose tools through this path.
|
|
64
67
|
|
|
65
68
|
## Model Providers
|
|
66
69
|
|
package/docs/TROUBLESHOOTING.md
CHANGED
|
@@ -102,6 +102,12 @@ ur provider status
|
|
|
102
102
|
agents without a parent task: create the requested tasks or finish and
|
|
103
103
|
approve the plan first. Disabling `tasks.requireBeforeChanges` is no longer
|
|
104
104
|
needed for normal plan mode.
|
|
105
|
+
- If an API, local, or subscription-CLI model still returns this error for an
|
|
106
|
+
explicitly read-only research brief on 1.80.7, upgrade to 1.80.8. Some models
|
|
107
|
+
emitted `subagent_type: "general-purpose"` despite the read-only instruction.
|
|
108
|
+
UR 1.80.8 routes that narrow contract to the protected Explore worker before
|
|
109
|
+
the gate. A real general-purpose or implementation worker is still expected
|
|
110
|
+
to require a task.
|
|
105
111
|
|
|
106
112
|
### Ollama stops with `unavailable tool "WebSearch"`
|
|
107
113
|
|
package/docs/USAGE.md
CHANGED
|
@@ -473,9 +473,12 @@ the exact plan file for the active session while the rest of the workspace
|
|
|
473
473
|
remains read-only. In any permission mode, the main session may delegate early
|
|
474
474
|
research to UR's shipped `Explore` and `Plan` agents before tasks exist. Those
|
|
475
475
|
two definitions are mechanically forced into plan permission mode even when
|
|
476
|
-
the parent is in Accept Edits or Approve All.
|
|
477
|
-
|
|
478
|
-
|
|
476
|
+
the parent is in Accept Edits or Approve All. Models are instructed to select
|
|
477
|
+
`subagent_type="Explore"` for this work. If a provider still labels an explicit
|
|
478
|
+
read-only research brief `general-purpose`, UR reduces that main-session call
|
|
479
|
+
to the shipped Explore definition before gating. Ordinary general-purpose
|
|
480
|
+
work, custom overrides, nested agents, named/team workers, worktrees, and cwd
|
|
481
|
+
overrides still require an actionable parent task. When the user approves the plan,
|
|
479
482
|
`ExitPlanMode` preserves any existing actionable board or creates a bounded set
|
|
480
483
|
of professional, deduplicated implementation tasks plus a verification task
|
|
481
484
|
that depends on them. Implementation therefore starts with visible tracking
|
package/docs/VALIDATION.md
CHANGED
|
@@ -19,17 +19,23 @@ You need:
|
|
|
19
19
|
|
|
20
20
|
```sh
|
|
21
21
|
ur --version
|
|
22
|
-
# expected for this release: "1.80.
|
|
22
|
+
# expected for this release: "1.80.8 (UR-Nexus)"
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
### 0.0 Read-only research delegation starts cleanly (1.80.
|
|
25
|
+
### 0.0 Read-only research delegation starts cleanly (1.80.8)
|
|
26
26
|
|
|
27
27
|
Start an interactive session with task enforcement enabled and ask UR to
|
|
28
28
|
research a change, both normally and from Plan Mode. Before any task exists,
|
|
29
29
|
built-in `Explore` and `Plan` agent calls should initialize without
|
|
30
30
|
`TaskListRequired`. Their workers remain read-only even when the parent uses
|
|
31
|
-
Accept Edits or Approve All. Custom
|
|
32
|
-
blocked until they have an actionable parent task.
|
|
31
|
+
Accept Edits or Approve All. Custom agents and ordinary general-purpose agents
|
|
32
|
+
should remain blocked until they have an actionable parent task.
|
|
33
|
+
|
|
34
|
+
Repeat with multiple available model families. A model may correctly emit
|
|
35
|
+
`subagent_type: "Explore"`; if it instead emits `general-purpose` with an
|
|
36
|
+
explicit read-only research/no-file-write brief, UR must safely reduce it to
|
|
37
|
+
Explore and start without a failed `TaskListRequired` attempt. A
|
|
38
|
+
general-purpose implementation brief must remain blocked. The deterministic
|
|
33
39
|
regressions are:
|
|
34
40
|
|
|
35
41
|
```sh
|
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.80.
|
|
48
|
+
<p class="eyebrow">Version 1.80.8</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.80.
|
|
5
|
+
"version": "1.80.8",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED