ur-agent 1.80.5 → 1.80.6
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 +11 -0
- package/dist/cli.js +115 -95
- package/docs/AGENT_FEATURES.md +6 -0
- package/docs/TROUBLESHOOTING.md +12 -8
- package/docs/USAGE.md +10 -5
- package/docs/VALIDATION.md +13 -1
- 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,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.80.6
|
|
4
|
+
|
|
5
|
+
- Fixed Plan Mode's failed-first research delegation. UR's shipped read-only
|
|
6
|
+
`Explore` and `Plan` agents can now run before implementation tasks exist, as
|
|
7
|
+
the plan workflow already instructs, without emitting `TaskListRequired`.
|
|
8
|
+
- Kept the exception deliberately narrow: the active definition must be the
|
|
9
|
+
built-in plan-permission agent, called by the main session without a name,
|
|
10
|
+
team, worktree, or nested parent. Custom overrides and every write-capable
|
|
11
|
+
delegation still require an actionable task, and rewritten tool inputs are
|
|
12
|
+
revalidated immediately before execution. Approve All remains unchanged.
|
|
13
|
+
|
|
3
14
|
## 1.80.5
|
|
4
15
|
|
|
5
16
|
- Fixed the plan-mode/task-tracking deadlock introduced by the strict task
|
package/dist/cli.js
CHANGED
|
@@ -107784,7 +107784,7 @@ var init_auth = __esm(() => {
|
|
|
107784
107784
|
|
|
107785
107785
|
// src/utils/userAgent.ts
|
|
107786
107786
|
function getURCodeUserAgent() {
|
|
107787
|
-
return `ur/${"1.80.
|
|
107787
|
+
return `ur/${"1.80.6"}`;
|
|
107788
107788
|
}
|
|
107789
107789
|
|
|
107790
107790
|
// src/utils/workloadContext.ts
|
|
@@ -107806,7 +107806,7 @@ function getUserAgent() {
|
|
|
107806
107806
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
107807
107807
|
const workload = getWorkload();
|
|
107808
107808
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
107809
|
-
return `ur-cli/${"1.80.
|
|
107809
|
+
return `ur-cli/${"1.80.6"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
107810
107810
|
}
|
|
107811
107811
|
function getMCPUserAgent() {
|
|
107812
107812
|
const parts = [];
|
|
@@ -107820,7 +107820,7 @@ function getMCPUserAgent() {
|
|
|
107820
107820
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
107821
107821
|
}
|
|
107822
107822
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
107823
|
-
return `ur/${"1.80.
|
|
107823
|
+
return `ur/${"1.80.6"}${suffix}`;
|
|
107824
107824
|
}
|
|
107825
107825
|
function getWebFetchUserAgent() {
|
|
107826
107826
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -107958,7 +107958,7 @@ var init_user = __esm(() => {
|
|
|
107958
107958
|
deviceId,
|
|
107959
107959
|
sessionId: getSessionId(),
|
|
107960
107960
|
email: getEmail(),
|
|
107961
|
-
appVersion: "1.80.
|
|
107961
|
+
appVersion: "1.80.6",
|
|
107962
107962
|
platform: getHostPlatformForAnalytics(),
|
|
107963
107963
|
organizationUuid,
|
|
107964
107964
|
accountUuid,
|
|
@@ -115845,7 +115845,7 @@ var init_metadata = __esm(() => {
|
|
|
115845
115845
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
115846
115846
|
WHITESPACE_REGEX = /\s+/;
|
|
115847
115847
|
getVersionBase = memoize_default(() => {
|
|
115848
|
-
const match = "1.80.
|
|
115848
|
+
const match = "1.80.6".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
115849
115849
|
return match ? match[0] : undefined;
|
|
115850
115850
|
});
|
|
115851
115851
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -115885,7 +115885,7 @@ var init_metadata = __esm(() => {
|
|
|
115885
115885
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
115886
115886
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
115887
115887
|
isURAiAuth: isURAISubscriber(),
|
|
115888
|
-
version: "1.80.
|
|
115888
|
+
version: "1.80.6",
|
|
115889
115889
|
versionBase: getVersionBase(),
|
|
115890
115890
|
buildTime: "",
|
|
115891
115891
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -116555,7 +116555,7 @@ function initialize1PEventLogging() {
|
|
|
116555
116555
|
const platform2 = getPlatform();
|
|
116556
116556
|
const attributes = {
|
|
116557
116557
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
116558
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.80.
|
|
116558
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.80.6"
|
|
116559
116559
|
};
|
|
116560
116560
|
if (platform2 === "wsl") {
|
|
116561
116561
|
const wslVersion = getWslVersion();
|
|
@@ -116583,7 +116583,7 @@ function initialize1PEventLogging() {
|
|
|
116583
116583
|
})
|
|
116584
116584
|
]
|
|
116585
116585
|
});
|
|
116586
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.80.
|
|
116586
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.80.6");
|
|
116587
116587
|
}
|
|
116588
116588
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
116589
116589
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -126546,7 +126546,7 @@ function formatA2AAgentCard(options = {}, pretty = true) {
|
|
|
126546
126546
|
function formatA2AV1AgentCard(options = {}, pretty = true) {
|
|
126547
126547
|
return JSON.stringify(buildA2AV1AgentCard(options), null, pretty ? 2 : 0);
|
|
126548
126548
|
}
|
|
126549
|
-
var urVersion = "1.80.
|
|
126549
|
+
var urVersion = "1.80.6", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
|
|
126550
126550
|
var init_trends = __esm(() => {
|
|
126551
126551
|
init_a2aCardSignature();
|
|
126552
126552
|
coverage = [
|
|
@@ -129436,7 +129436,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
129436
129436
|
if (!isAttributionHeaderEnabled()) {
|
|
129437
129437
|
return "";
|
|
129438
129438
|
}
|
|
129439
|
-
const version2 = `${"1.80.
|
|
129439
|
+
const version2 = `${"1.80.6"}.${fingerprint}`;
|
|
129440
129440
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
129441
129441
|
const cch = "";
|
|
129442
129442
|
const workload = getWorkload();
|
|
@@ -174285,6 +174285,7 @@ var init_exploreAgent = __esm(() => {
|
|
|
174285
174285
|
],
|
|
174286
174286
|
source: "built-in",
|
|
174287
174287
|
baseDir: "built-in",
|
|
174288
|
+
permissionMode: "plan",
|
|
174288
174289
|
model: process.env.USER_TYPE === "ant" ? "inherit" : "modelH",
|
|
174289
174290
|
omitAgentMd: true,
|
|
174290
174291
|
getSystemPrompt: () => getExploreSystemPrompt()
|
|
@@ -174395,6 +174396,7 @@ var init_planAgent = __esm(() => {
|
|
|
174395
174396
|
source: "built-in",
|
|
174396
174397
|
tools: EXPLORE_AGENT.tools,
|
|
174397
174398
|
baseDir: "built-in",
|
|
174399
|
+
permissionMode: "plan",
|
|
174398
174400
|
model: "inherit",
|
|
174399
174401
|
omitAgentMd: true,
|
|
174400
174402
|
getSystemPrompt: () => getPlanV2SystemPrompt()
|
|
@@ -184630,7 +184632,7 @@ var init_projectSafety = __esm(() => {
|
|
|
184630
184632
|
function getInstruments() {
|
|
184631
184633
|
if (instruments)
|
|
184632
184634
|
return instruments;
|
|
184633
|
-
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.80.
|
|
184635
|
+
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.80.6");
|
|
184634
184636
|
instruments = {
|
|
184635
184637
|
operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
|
|
184636
184638
|
description: "GenAI operation duration.",
|
|
@@ -184728,7 +184730,7 @@ function genAiAgentAttributes() {
|
|
|
184728
184730
|
"gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
|
|
184729
184731
|
"gen_ai.provider.name": "ur",
|
|
184730
184732
|
"gen_ai.agent.name": "UR-Nexus",
|
|
184731
|
-
"gen_ai.agent.version": "1.80.
|
|
184733
|
+
"gen_ai.agent.version": "1.80.6"
|
|
184732
184734
|
};
|
|
184733
184735
|
}
|
|
184734
184736
|
function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
@@ -184749,7 +184751,7 @@ function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
|
184749
184751
|
function startGenAiWorkflowSpan(workflowName, workflowRunId) {
|
|
184750
184752
|
const attributes = genAiWorkflowAttributes(workflowName, workflowRunId);
|
|
184751
184753
|
const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
|
|
184752
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.80.
|
|
184754
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.80.6").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
184753
184755
|
}
|
|
184754
184756
|
function endGenAiWorkflowSpan(span, options2 = {}) {
|
|
184755
184757
|
try {
|
|
@@ -184787,7 +184789,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
|
|
|
184787
184789
|
if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
|
|
184788
184790
|
attributes["gen_ai.memory.record.count"] = options2.recordCount;
|
|
184789
184791
|
}
|
|
184790
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.80.
|
|
184792
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.80.6").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
184791
184793
|
}
|
|
184792
184794
|
function endGenAiMemorySpan(span, options2 = {}) {
|
|
184793
184795
|
try {
|
|
@@ -278502,7 +278504,7 @@ function getTelemetryAttributes() {
|
|
|
278502
278504
|
attributes["session.id"] = sessionId;
|
|
278503
278505
|
}
|
|
278504
278506
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
278505
|
-
attributes["app.version"] = "1.80.
|
|
278507
|
+
attributes["app.version"] = "1.80.6";
|
|
278506
278508
|
}
|
|
278507
278509
|
const oauthAccount = getOauthAccountInfo();
|
|
278508
278510
|
if (oauthAccount) {
|
|
@@ -319493,7 +319495,7 @@ function getInstallationEnv() {
|
|
|
319493
319495
|
return;
|
|
319494
319496
|
}
|
|
319495
319497
|
function getURCodeVersion() {
|
|
319496
|
-
return "1.80.
|
|
319498
|
+
return "1.80.6";
|
|
319497
319499
|
}
|
|
319498
319500
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
319499
319501
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -326863,7 +326865,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
326863
326865
|
const client2 = new Client({
|
|
326864
326866
|
name: "ur",
|
|
326865
326867
|
title: "UR",
|
|
326866
|
-
version: "1.80.
|
|
326868
|
+
version: "1.80.6",
|
|
326867
326869
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
326868
326870
|
websiteUrl: PRODUCT_URL
|
|
326869
326871
|
}, {
|
|
@@ -327224,7 +327226,7 @@ var init_client5 = __esm(() => {
|
|
|
327224
327226
|
const client2 = new Client({
|
|
327225
327227
|
name: "ur",
|
|
327226
327228
|
title: "UR",
|
|
327227
|
-
version: "1.80.
|
|
327229
|
+
version: "1.80.6",
|
|
327228
327230
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
327229
327231
|
websiteUrl: PRODUCT_URL
|
|
327230
327232
|
}, {
|
|
@@ -339962,7 +339964,7 @@ async function createRuntime() {
|
|
|
339962
339964
|
bootstrapTelemetry();
|
|
339963
339965
|
const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
|
|
339964
339966
|
[import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
|
|
339965
|
-
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.80.
|
|
339967
|
+
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.80.6"
|
|
339966
339968
|
}));
|
|
339967
339969
|
const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
|
|
339968
339970
|
resource,
|
|
@@ -339995,11 +339997,11 @@ async function createRuntime() {
|
|
|
339995
339997
|
setMeterProvider(meterProvider);
|
|
339996
339998
|
setLoggerProvider(loggerProvider);
|
|
339997
339999
|
if (meterProvider) {
|
|
339998
|
-
const meter = meterProvider.getMeter("ur-agent", "1.80.
|
|
340000
|
+
const meter = meterProvider.getMeter("ur-agent", "1.80.6");
|
|
339999
340001
|
setMeter(meter, (name, options2) => meter.createCounter(name, options2));
|
|
340000
340002
|
}
|
|
340001
340003
|
if (loggerProvider) {
|
|
340002
|
-
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.80.
|
|
340004
|
+
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.80.6"));
|
|
340003
340005
|
}
|
|
340004
340006
|
if (!cleanupRegistered3) {
|
|
340005
340007
|
cleanupRegistered3 = true;
|
|
@@ -340661,9 +340663,9 @@ async function assertMinVersion() {
|
|
|
340661
340663
|
if (false) {}
|
|
340662
340664
|
try {
|
|
340663
340665
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
340664
|
-
if (versionConfig.minVersion && lt("1.80.
|
|
340666
|
+
if (versionConfig.minVersion && lt("1.80.6", versionConfig.minVersion)) {
|
|
340665
340667
|
console.error(`
|
|
340666
|
-
It looks like your version of UR (${"1.80.
|
|
340668
|
+
It looks like your version of UR (${"1.80.6"}) needs an update.
|
|
340667
340669
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
340668
340670
|
|
|
340669
340671
|
To update, please run:
|
|
@@ -340879,7 +340881,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
340879
340881
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
340880
340882
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
340881
340883
|
pid: process.pid,
|
|
340882
|
-
currentVersion: "1.80.
|
|
340884
|
+
currentVersion: "1.80.6"
|
|
340883
340885
|
});
|
|
340884
340886
|
return "in_progress";
|
|
340885
340887
|
}
|
|
@@ -340888,7 +340890,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
340888
340890
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
340889
340891
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
340890
340892
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
340891
|
-
currentVersion: "1.80.
|
|
340893
|
+
currentVersion: "1.80.6"
|
|
340892
340894
|
});
|
|
340893
340895
|
console.error(`
|
|
340894
340896
|
Error: Windows NPM detected in WSL
|
|
@@ -341423,7 +341425,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
341423
341425
|
}
|
|
341424
341426
|
async function getDoctorDiagnostic() {
|
|
341425
341427
|
const installationType = await getCurrentInstallationType();
|
|
341426
|
-
const version2 = typeof MACRO !== "undefined" ? "1.80.
|
|
341428
|
+
const version2 = typeof MACRO !== "undefined" ? "1.80.6" : "unknown";
|
|
341427
341429
|
const installationPath = await getInstallationPath();
|
|
341428
341430
|
const invokedBinary = getInvokedBinary();
|
|
341429
341431
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -342358,8 +342360,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
342358
342360
|
const maxVersion = await getMaxVersion();
|
|
342359
342361
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
342360
342362
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
342361
|
-
if (gte("1.80.
|
|
342362
|
-
logForDebugging(`Native installer: current version ${"1.80.
|
|
342363
|
+
if (gte("1.80.6", maxVersion)) {
|
|
342364
|
+
logForDebugging(`Native installer: current version ${"1.80.6"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
342363
342365
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
342364
342366
|
latency_ms: Date.now() - startTime,
|
|
342365
342367
|
max_version: maxVersion,
|
|
@@ -342370,7 +342372,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
342370
342372
|
version2 = maxVersion;
|
|
342371
342373
|
}
|
|
342372
342374
|
}
|
|
342373
|
-
if (!forceReinstall && version2 === "1.80.
|
|
342375
|
+
if (!forceReinstall && version2 === "1.80.6" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
342374
342376
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
342375
342377
|
logEvent("tengu_native_update_complete", {
|
|
342376
342378
|
latency_ms: Date.now() - startTime,
|
|
@@ -396226,6 +396228,8 @@ function checkTaskListGate(input) {
|
|
|
396226
396228
|
return { allowed: true };
|
|
396227
396229
|
if (input.isPlanningArtifact === true)
|
|
396228
396230
|
return { allowed: true };
|
|
396231
|
+
if (input.isReadOnlyPlanningDelegation === true)
|
|
396232
|
+
return { allowed: true };
|
|
396229
396233
|
const isMutating = input.isMutating ?? isMutatingTool2(input.toolName);
|
|
396230
396234
|
if (!isMutating)
|
|
396231
396235
|
return { allowed: true };
|
|
@@ -400519,12 +400523,13 @@ var init_prompt18 = __esm(() => {
|
|
|
400519
400523
|
|
|
400520
400524
|
In plan mode, you'll:
|
|
400521
400525
|
1. Thoroughly explore the codebase using Glob, Grep, and Read tools
|
|
400522
|
-
2.
|
|
400523
|
-
3.
|
|
400524
|
-
4.
|
|
400525
|
-
5.
|
|
400526
|
-
6. Use
|
|
400527
|
-
7.
|
|
400526
|
+
2. Delegate early research only to UR's shipped read-only Explore or Plan agents; other delegation requires an actionable parent task
|
|
400527
|
+
3. Understand existing patterns and architecture
|
|
400528
|
+
4. Design an implementation approach
|
|
400529
|
+
5. Present your plan to the user for approval
|
|
400530
|
+
6. Use ${ASK_USER_QUESTION_TOOL_NAME} if you need to clarify approaches
|
|
400531
|
+
7. Use TaskCreate for manual task decomposition when useful; plan-file writes are allowed while planning
|
|
400532
|
+
8. Exit plan mode with ExitPlanMode when ready. After approval, ExitPlanMode guarantees that visible implementation tasks exist before coding begins
|
|
400528
400533
|
|
|
400529
400534
|
`;
|
|
400530
400535
|
});
|
|
@@ -400643,7 +400648,7 @@ var init_EnterPlanModeTool = __esm(() => {
|
|
|
400643
400648
|
}));
|
|
400644
400649
|
return {
|
|
400645
400650
|
data: {
|
|
400646
|
-
message: "Entered plan mode. Explore the codebase and write the plan file. TaskCreate remains available for manual decomposition; after approval, ExitPlanMode guarantees visible implementation tasks before coding begins."
|
|
400651
|
+
message: "Entered plan mode. Explore the codebase and write the plan file. UR's shipped read-only Explore and Plan agents may assist before tasks exist; other delegation requires an actionable parent task. TaskCreate remains available for manual decomposition; after approval, ExitPlanMode guarantees visible implementation tasks before coding begins."
|
|
400647
400652
|
}
|
|
400648
400653
|
};
|
|
400649
400654
|
},
|
|
@@ -400658,8 +400663,9 @@ In plan mode, you should:
|
|
|
400658
400663
|
3. Consider multiple approaches and their trade-offs
|
|
400659
400664
|
4. Use AskUserQuestion if you need to clarify the approach
|
|
400660
400665
|
5. Design a concrete implementation strategy
|
|
400661
|
-
6.
|
|
400662
|
-
7.
|
|
400666
|
+
6. Before tasks exist, delegate only to UR's shipped read-only Explore or Plan agents; other delegation requires an actionable parent task
|
|
400667
|
+
7. If useful, use TaskCreate to decompose the work manually; plan-file writes remain allowed while planning
|
|
400668
|
+
8. When ready, use ExitPlanMode to present your plan for approval. After approval, it guarantees visible implementation tasks before coding begins
|
|
400663
400669
|
|
|
400664
400670
|
Remember: DO NOT write or edit any files yet. This is a read-only exploration and planning phase.`;
|
|
400665
400671
|
return {
|
|
@@ -413021,7 +413027,7 @@ function isAnyTracingEnabled() {
|
|
|
413021
413027
|
return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
|
|
413022
413028
|
}
|
|
413023
413029
|
function getTracer() {
|
|
413024
|
-
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.80.
|
|
413030
|
+
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.80.6");
|
|
413025
413031
|
}
|
|
413026
413032
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
413027
413033
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -414476,6 +414482,16 @@ function isCurrentPlanFileMutation(toolName, input, context5) {
|
|
|
414476
414482
|
return false;
|
|
414477
414483
|
}
|
|
414478
414484
|
}
|
|
414485
|
+
function isReadOnlyPlanningDelegation(toolName, input, context5) {
|
|
414486
|
+
if (context5.agentId || context5.getAppState().toolPermissionContext.mode !== "plan" || toolName !== AGENT_TOOL_NAME && toolName !== LEGACY_AGENT_TOOL_NAME || !input || typeof input !== "object" || Array.isArray(input)) {
|
|
414487
|
+
return false;
|
|
414488
|
+
}
|
|
414489
|
+
const delegation = input;
|
|
414490
|
+
if (typeof delegation.subagent_type !== "string" || !READ_ONLY_PLANNING_AGENT_TYPES.has(delegation.subagent_type) || delegation.name !== undefined || delegation.team_name !== undefined || delegation.isolation !== undefined) {
|
|
414491
|
+
return false;
|
|
414492
|
+
}
|
|
414493
|
+
return context5.options.agentDefinitions.activeAgents.some((agent) => agent.agentType === delegation.subagent_type && agent.source === "built-in" && agent.permissionMode === "plan");
|
|
414494
|
+
}
|
|
414479
414495
|
function getStopHookInfo(attachment) {
|
|
414480
414496
|
if (typeof attachment !== "object" || attachment === null || !("command" in attachment) || typeof attachment.command !== "string" || !("durationMs" in attachment) || typeof attachment.durationMs !== "number") {
|
|
414481
414497
|
return null;
|
|
@@ -414941,6 +414957,7 @@ async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContex
|
|
|
414941
414957
|
requiresTaskList: taskListRun?.requiresTaskList,
|
|
414942
414958
|
requirementReason: taskListRun?.requirementReason,
|
|
414943
414959
|
isPlanningArtifact: isCurrentPlanFileMutation(tool.name, parsedInput.data, toolUseContext),
|
|
414960
|
+
isReadOnlyPlanningDelegation: isReadOnlyPlanningDelegation(tool.name, parsedInput.data, toolUseContext),
|
|
414944
414961
|
taskListWriterAvailable: toolUseContext.options.tools.some((candidate) => candidate.name === "TaskCreate")
|
|
414945
414962
|
});
|
|
414946
414963
|
if (gate.allowed === false) {
|
|
@@ -415302,6 +415319,7 @@ async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContex
|
|
|
415302
415319
|
requiresTaskList: taskListRun?.requiresTaskList,
|
|
415303
415320
|
requirementReason: taskListRun?.requirementReason,
|
|
415304
415321
|
isPlanningArtifact: isCurrentPlanFileMutation(tool.name, finalParsedInput.data, toolUseContext),
|
|
415322
|
+
isReadOnlyPlanningDelegation: isReadOnlyPlanningDelegation(tool.name, finalParsedInput.data, toolUseContext),
|
|
415305
415323
|
taskListWriterAvailable: toolUseContext.options.tools.some((candidate) => candidate.name === "TaskCreate")
|
|
415306
415324
|
});
|
|
415307
415325
|
if (finalGate.allowed === false) {
|
|
@@ -415711,7 +415729,7 @@ async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContex
|
|
|
415711
415729
|
}
|
|
415712
415730
|
}
|
|
415713
415731
|
}
|
|
415714
|
-
var HOOK_TIMING_DISPLAY_THRESHOLD_MS2 = 500, SLOW_PHASE_LOG_THRESHOLD_MS = 2000;
|
|
415732
|
+
var READ_ONLY_PLANNING_AGENT_TYPES, HOOK_TIMING_DISPLAY_THRESHOLD_MS2 = 500, SLOW_PHASE_LOG_THRESHOLD_MS = 2000;
|
|
415715
415733
|
var init_toolExecution = __esm(() => {
|
|
415716
415734
|
init_analytics();
|
|
415717
415735
|
init_metadata();
|
|
@@ -415722,6 +415740,7 @@ var init_toolExecution = __esm(() => {
|
|
|
415722
415740
|
init_AskUserQuestionTool();
|
|
415723
415741
|
init_prompt();
|
|
415724
415742
|
init_bashPermissions();
|
|
415743
|
+
init_constants2();
|
|
415725
415744
|
init_prompt3();
|
|
415726
415745
|
init_prompt4();
|
|
415727
415746
|
init_gitOperationTracking();
|
|
@@ -415752,6 +415771,7 @@ var init_toolExecution = __esm(() => {
|
|
|
415752
415771
|
init_mcpStringUtils();
|
|
415753
415772
|
init_utils3();
|
|
415754
415773
|
init_toolHooks();
|
|
415774
|
+
READ_ONLY_PLANNING_AGENT_TYPES = new Set(["Explore", "Plan"]);
|
|
415755
415775
|
});
|
|
415756
415776
|
|
|
415757
415777
|
// src/services/tools/StreamingToolExecutor.ts
|
|
@@ -433403,7 +433423,7 @@ function getPlanModeV2Instructions(attachment) {
|
|
|
433403
433423
|
const agentCount = getPlanModeV2AgentCount();
|
|
433404
433424
|
const exploreAgentCount = getPlanModeV2ExploreAgentCount();
|
|
433405
433425
|
const planFileInfo = attachment.planExists ? `A plan file already exists at ${attachment.planFilePath}. You can read it and make incremental edits using the ${FileEditTool.name} tool.` : `No plan file exists yet. You should create your plan at ${attachment.planFilePath} using the ${FileWriteTool.name} tool.`;
|
|
433406
|
-
const content = `Plan mode is active. The user indicated that they do not want you to execute yet -- you MUST NOT make any edits (with the exception of the plan file mentioned below), run any non-readonly tools (including changing configs or making commits), or otherwise make any changes to the system. TaskCreate, TaskUpdate, TaskList, and TaskGet are also allowed for visible task tracking. This supercedes any other instructions you have received.
|
|
433426
|
+
const content = `Plan mode is active. The user indicated that they do not want you to execute yet -- you MUST NOT make any edits (with the exception of the plan file mentioned below), run any non-readonly tools (including changing configs or making commits), or otherwise make any changes to the system. TaskCreate, TaskUpdate, TaskList, and TaskGet are also allowed for visible task tracking. Before tasks exist, only UR's shipped read-only ${EXPLORE_AGENT.agentType} and ${PLAN_AGENT.agentType} agents may be delegated to; custom, general-purpose, nested, team, and worktree agents still require an actionable parent task. This supercedes any other instructions you have received.
|
|
433407
433427
|
|
|
433408
433428
|
## Plan File Info:
|
|
433409
433429
|
${planFileInfo}
|
|
@@ -433478,7 +433498,7 @@ function getReadOnlyToolNames() {
|
|
|
433478
433498
|
}
|
|
433479
433499
|
function getPlanModeInterviewInstructions(attachment) {
|
|
433480
433500
|
const planFileInfo = attachment.planExists ? `A plan file already exists at ${attachment.planFilePath}. You can read it and make incremental edits using the ${FileEditTool.name} tool.` : `No plan file exists yet. You should create your plan at ${attachment.planFilePath} using the ${FileWriteTool.name} tool.`;
|
|
433481
|
-
const content = `Plan mode is active. The user indicated that they do not want you to execute yet -- you MUST NOT make any edits (with the exception of the plan file mentioned below), run any non-readonly tools (including changing configs or making commits), or otherwise make any changes to the system. TaskCreate, TaskUpdate, TaskList, and TaskGet are also allowed for visible task tracking. This supercedes any other instructions you have received.
|
|
433501
|
+
const content = `Plan mode is active. The user indicated that they do not want you to execute yet -- you MUST NOT make any edits (with the exception of the plan file mentioned below), run any non-readonly tools (including changing configs or making commits), or otherwise make any changes to the system. TaskCreate, TaskUpdate, TaskList, and TaskGet are also allowed for visible task tracking.${areExplorePlanAgentsEnabled() ? ` Before tasks exist, only UR's shipped read-only ${EXPLORE_AGENT.agentType} and ${PLAN_AGENT.agentType} agents may be delegated to; custom, general-purpose, nested, team, and worktree agents still require an actionable parent task.` : ""} This supercedes any other instructions you have received.
|
|
433482
433502
|
|
|
433483
433503
|
## Plan File Info:
|
|
433484
433504
|
${planFileInfo}
|
|
@@ -443127,7 +443147,7 @@ function Feedback({
|
|
|
443127
443147
|
platform: env2.platform,
|
|
443128
443148
|
gitRepo: envInfo.isGit,
|
|
443129
443149
|
terminal: env2.terminal,
|
|
443130
|
-
version: "1.80.
|
|
443150
|
+
version: "1.80.6",
|
|
443131
443151
|
transcript: normalizeMessagesForAPI(messages),
|
|
443132
443152
|
errors: sanitizedErrors,
|
|
443133
443153
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -443319,7 +443339,7 @@ function Feedback({
|
|
|
443319
443339
|
", ",
|
|
443320
443340
|
env2.terminal,
|
|
443321
443341
|
", v",
|
|
443322
|
-
"1.80.
|
|
443342
|
+
"1.80.6"
|
|
443323
443343
|
]
|
|
443324
443344
|
}, undefined, true, undefined, this)
|
|
443325
443345
|
]
|
|
@@ -443425,7 +443445,7 @@ ${sanitizedDescription}
|
|
|
443425
443445
|
` + `**Environment Info**
|
|
443426
443446
|
` + `- Platform: ${env2.platform}
|
|
443427
443447
|
` + `- Terminal: ${env2.terminal}
|
|
443428
|
-
` + `- Version: ${"1.80.
|
|
443448
|
+
` + `- Version: ${"1.80.6"}
|
|
443429
443449
|
` + `- Feedback ID: ${feedbackId}
|
|
443430
443450
|
` + `
|
|
443431
443451
|
**Errors**
|
|
@@ -446535,7 +446555,7 @@ function buildPrimarySection() {
|
|
|
446535
446555
|
}, undefined, false, undefined, this);
|
|
446536
446556
|
return [{
|
|
446537
446557
|
label: "Version",
|
|
446538
|
-
value: "1.80.
|
|
446558
|
+
value: "1.80.6"
|
|
446539
446559
|
}, {
|
|
446540
446560
|
label: "Session name",
|
|
446541
446561
|
value: nameValue
|
|
@@ -449917,7 +449937,7 @@ function Config({
|
|
|
449917
449937
|
}
|
|
449918
449938
|
}, undefined, false, undefined, this)
|
|
449919
449939
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
|
|
449920
|
-
currentVersion: "1.80.
|
|
449940
|
+
currentVersion: "1.80.6",
|
|
449921
449941
|
onChoice: (choice) => {
|
|
449922
449942
|
setShowSubmenu(null);
|
|
449923
449943
|
setTabsHidden(false);
|
|
@@ -449929,7 +449949,7 @@ function Config({
|
|
|
449929
449949
|
autoUpdatesChannel: "stable"
|
|
449930
449950
|
};
|
|
449931
449951
|
if (choice === "stay") {
|
|
449932
|
-
newSettings.minimumVersion = "1.80.
|
|
449952
|
+
newSettings.minimumVersion = "1.80.6";
|
|
449933
449953
|
}
|
|
449934
449954
|
updateSettingsForSource("userSettings", newSettings);
|
|
449935
449955
|
setSettingsData((prev_27) => ({
|
|
@@ -458238,7 +458258,7 @@ function HelpV2(t0) {
|
|
|
458238
458258
|
let t6;
|
|
458239
458259
|
if ($2[31] !== tabs) {
|
|
458240
458260
|
t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
|
|
458241
|
-
title: `UR v${"1.80.
|
|
458261
|
+
title: `UR v${"1.80.6"}`,
|
|
458242
458262
|
color: "professionalBlue",
|
|
458243
458263
|
defaultTab: "general",
|
|
458244
458264
|
children: tabs
|
|
@@ -459171,7 +459191,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
459171
459191
|
async function handleInitialize(options2) {
|
|
459172
459192
|
return {
|
|
459173
459193
|
name: "UR",
|
|
459174
|
-
version: "1.80.
|
|
459194
|
+
version: "1.80.6",
|
|
459175
459195
|
protocolVersion: "0.1.0",
|
|
459176
459196
|
workspaceRoot: options2.cwd,
|
|
459177
459197
|
capabilities: {
|
|
@@ -476279,7 +476299,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
476279
476299
|
return [];
|
|
476280
476300
|
}
|
|
476281
476301
|
}
|
|
476282
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.80.
|
|
476302
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.80.6") {
|
|
476283
476303
|
if (process.env.USER_TYPE === "ant") {
|
|
476284
476304
|
const changelog = "";
|
|
476285
476305
|
if (changelog) {
|
|
@@ -476306,7 +476326,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.80.5")
|
|
|
476306
476326
|
releaseNotes
|
|
476307
476327
|
};
|
|
476308
476328
|
}
|
|
476309
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.80.
|
|
476329
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.80.6") {
|
|
476310
476330
|
if (process.env.USER_TYPE === "ant") {
|
|
476311
476331
|
const changelog = "";
|
|
476312
476332
|
if (changelog) {
|
|
@@ -479211,7 +479231,7 @@ function getRecentActivitySync() {
|
|
|
479211
479231
|
return cachedActivity;
|
|
479212
479232
|
}
|
|
479213
479233
|
function getLogoDisplayData() {
|
|
479214
|
-
const version2 = process.env.DEMO_VERSION ?? "1.80.
|
|
479234
|
+
const version2 = process.env.DEMO_VERSION ?? "1.80.6";
|
|
479215
479235
|
const serverUrl = getDirectConnectServerUrl();
|
|
479216
479236
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
479217
479237
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -480079,7 +480099,7 @@ function LogoV2() {
|
|
|
480079
480099
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
480080
480100
|
t2 = () => {
|
|
480081
480101
|
const currentConfig = getGlobalConfig();
|
|
480082
|
-
if (currentConfig.lastReleaseNotesSeen === "1.80.
|
|
480102
|
+
if (currentConfig.lastReleaseNotesSeen === "1.80.6") {
|
|
480083
480103
|
return;
|
|
480084
480104
|
}
|
|
480085
480105
|
saveGlobalConfig(_temp325);
|
|
@@ -480764,12 +480784,12 @@ function LogoV2() {
|
|
|
480764
480784
|
return t41;
|
|
480765
480785
|
}
|
|
480766
480786
|
function _temp325(current) {
|
|
480767
|
-
if (current.lastReleaseNotesSeen === "1.80.
|
|
480787
|
+
if (current.lastReleaseNotesSeen === "1.80.6") {
|
|
480768
480788
|
return current;
|
|
480769
480789
|
}
|
|
480770
480790
|
return {
|
|
480771
480791
|
...current,
|
|
480772
|
-
lastReleaseNotesSeen: "1.80.
|
|
480792
|
+
lastReleaseNotesSeen: "1.80.6"
|
|
480773
480793
|
};
|
|
480774
480794
|
}
|
|
480775
480795
|
function _temp241(s_0) {
|
|
@@ -496861,7 +496881,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
496861
496881
|
if (spec.name !== specName) {
|
|
496862
496882
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
496863
496883
|
}
|
|
496864
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.80.
|
|
496884
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.80.6" : "1.80.6");
|
|
496865
496885
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
496866
496886
|
throw new Error("invalid ur-agent package version");
|
|
496867
496887
|
}
|
|
@@ -497854,7 +497874,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
497854
497874
|
path: ".github/workflows/ur.yml",
|
|
497855
497875
|
root: "project",
|
|
497856
497876
|
content: compileAgenticCiWorkflow("default", {
|
|
497857
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.80.
|
|
497877
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.80.6" : "1.80.6"
|
|
497858
497878
|
})
|
|
497859
497879
|
},
|
|
497860
497880
|
{
|
|
@@ -497917,7 +497937,7 @@ function value(tokens, flag) {
|
|
|
497917
497937
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
497918
497938
|
}
|
|
497919
497939
|
function cliVersion() {
|
|
497920
|
-
return typeof MACRO !== "undefined" ? "1.80.
|
|
497940
|
+
return typeof MACRO !== "undefined" ? "1.80.6" : "1.80.6";
|
|
497921
497941
|
}
|
|
497922
497942
|
function workflowPath(cwd2) {
|
|
497923
497943
|
return join168(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -503773,7 +503793,7 @@ function createAcpStdioApp(deps) {
|
|
|
503773
503793
|
}
|
|
503774
503794
|
},
|
|
503775
503795
|
authMethods: [],
|
|
503776
|
-
agentInfo: { name: "UR-Nexus", version: "1.80.
|
|
503796
|
+
agentInfo: { name: "UR-Nexus", version: "1.80.6" }
|
|
503777
503797
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
503778
503798
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
503779
503799
|
await runtime2.announce({
|
|
@@ -503870,7 +503890,7 @@ function createAcpStdioAgent(deps) {
|
|
|
503870
503890
|
}
|
|
503871
503891
|
},
|
|
503872
503892
|
authMethods: [],
|
|
503873
|
-
agentInfo: { name: "UR-Nexus", version: "1.80.
|
|
503893
|
+
agentInfo: { name: "UR-Nexus", version: "1.80.6" }
|
|
503874
503894
|
});
|
|
503875
503895
|
return;
|
|
503876
503896
|
case "authenticate":
|
|
@@ -715096,7 +715116,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
715096
715116
|
smapsRollup,
|
|
715097
715117
|
platform: process.platform,
|
|
715098
715118
|
nodeVersion: process.version,
|
|
715099
|
-
ccVersion: "1.80.
|
|
715119
|
+
ccVersion: "1.80.6"
|
|
715100
715120
|
};
|
|
715101
715121
|
}
|
|
715102
715122
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -715685,7 +715705,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
715685
715705
|
var call154 = async () => {
|
|
715686
715706
|
return {
|
|
715687
715707
|
type: "text",
|
|
715688
|
-
value: "1.80.
|
|
715708
|
+
value: "1.80.6"
|
|
715689
715709
|
};
|
|
715690
715710
|
}, version2, version_default;
|
|
715691
715711
|
var init_version = __esm(() => {
|
|
@@ -726928,7 +726948,7 @@ function generateHtmlReport(data, insights) {
|
|
|
726928
726948
|
</html>`;
|
|
726929
726949
|
}
|
|
726930
726950
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
726931
|
-
const version3 = typeof MACRO !== "undefined" ? "1.80.
|
|
726951
|
+
const version3 = typeof MACRO !== "undefined" ? "1.80.6" : "unknown";
|
|
726932
726952
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
726933
726953
|
const facets_summary = {
|
|
726934
726954
|
total: facets.size,
|
|
@@ -731241,7 +731261,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
731241
731261
|
init_settings2();
|
|
731242
731262
|
init_slowOperations();
|
|
731243
731263
|
init_uuid();
|
|
731244
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.80.
|
|
731264
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.80.6" : "unknown";
|
|
731245
731265
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
731246
731266
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
731247
731267
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -732456,7 +732476,7 @@ var init_filesystem = __esm(() => {
|
|
|
732456
732476
|
});
|
|
732457
732477
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
732458
732478
|
const nonce = randomBytes24(16).toString("hex");
|
|
732459
|
-
return join243(getURTempDir(), "bundled-skills", "1.80.
|
|
732479
|
+
return join243(getURTempDir(), "bundled-skills", "1.80.6", nonce);
|
|
732460
732480
|
});
|
|
732461
732481
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
732462
732482
|
});
|
|
@@ -738845,7 +738865,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
738845
738865
|
}
|
|
738846
738866
|
function computeFingerprintFromMessages(messages) {
|
|
738847
738867
|
const firstMessageText = extractFirstMessageText(messages);
|
|
738848
|
-
return computeFingerprint(firstMessageText, "1.80.
|
|
738868
|
+
return computeFingerprint(firstMessageText, "1.80.6");
|
|
738849
738869
|
}
|
|
738850
738870
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
738851
738871
|
var init_fingerprint = () => {};
|
|
@@ -740770,7 +740790,7 @@ async function sideQuery(opts) {
|
|
|
740770
740790
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
740771
740791
|
}
|
|
740772
740792
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
740773
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.80.
|
|
740793
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.80.6");
|
|
740774
740794
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
740775
740795
|
const systemBlocks = [
|
|
740776
740796
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -745604,7 +745624,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
745604
745624
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
745605
745625
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
745606
745626
|
betas: getSdkBetas(),
|
|
745607
|
-
ur_version: "1.80.
|
|
745627
|
+
ur_version: "1.80.6",
|
|
745608
745628
|
output_style: outputStyle,
|
|
745609
745629
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
745610
745630
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -759440,7 +759460,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
759440
759460
|
function getSemverPart(version3) {
|
|
759441
759461
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
759442
759462
|
}
|
|
759443
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.80.
|
|
759463
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.80.6") {
|
|
759444
759464
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
|
|
759445
759465
|
if (!updatedVersion) {
|
|
759446
759466
|
return null;
|
|
@@ -759489,7 +759509,7 @@ function AutoUpdater({
|
|
|
759489
759509
|
return;
|
|
759490
759510
|
}
|
|
759491
759511
|
if (false) {}
|
|
759492
|
-
const currentVersion = "1.80.
|
|
759512
|
+
const currentVersion = "1.80.6";
|
|
759493
759513
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
759494
759514
|
let latestVersion = await getLatestVersion(channel);
|
|
759495
759515
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -759718,12 +759738,12 @@ function NativeAutoUpdater({
|
|
|
759718
759738
|
logEvent("tengu_native_auto_updater_start", {});
|
|
759719
759739
|
try {
|
|
759720
759740
|
const maxVersion = await getMaxVersion();
|
|
759721
|
-
if (maxVersion && gt("1.80.
|
|
759741
|
+
if (maxVersion && gt("1.80.6", maxVersion)) {
|
|
759722
759742
|
const msg = await getMaxVersionMessage();
|
|
759723
759743
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
759724
759744
|
}
|
|
759725
759745
|
const result = await installLatest(channel);
|
|
759726
|
-
const currentVersion = "1.80.
|
|
759746
|
+
const currentVersion = "1.80.6";
|
|
759727
759747
|
const latencyMs = Date.now() - startTime;
|
|
759728
759748
|
if (result.lockFailed) {
|
|
759729
759749
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -759860,17 +759880,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
759860
759880
|
const maxVersion = await getMaxVersion();
|
|
759861
759881
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
759862
759882
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
759863
|
-
if (gte("1.80.
|
|
759864
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.80.
|
|
759883
|
+
if (gte("1.80.6", maxVersion)) {
|
|
759884
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.80.6"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
759865
759885
|
setUpdateAvailable(false);
|
|
759866
759886
|
return;
|
|
759867
759887
|
}
|
|
759868
759888
|
latest = maxVersion;
|
|
759869
759889
|
}
|
|
759870
|
-
const hasUpdate = latest && !gte("1.80.
|
|
759890
|
+
const hasUpdate = latest && !gte("1.80.6", latest) && !shouldSkipVersion(latest);
|
|
759871
759891
|
setUpdateAvailable(!!hasUpdate);
|
|
759872
759892
|
if (hasUpdate) {
|
|
759873
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.80.
|
|
759893
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.80.6"} -> ${latest}`);
|
|
759874
759894
|
}
|
|
759875
759895
|
};
|
|
759876
759896
|
$2[0] = t1;
|
|
@@ -759904,7 +759924,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
759904
759924
|
wrap: "truncate",
|
|
759905
759925
|
children: [
|
|
759906
759926
|
"currentVersion: ",
|
|
759907
|
-
"1.80.
|
|
759927
|
+
"1.80.6"
|
|
759908
759928
|
]
|
|
759909
759929
|
}, undefined, true, undefined, this);
|
|
759910
759930
|
$2[3] = verbose;
|
|
@@ -770757,7 +770777,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
770757
770777
|
project_dir: getOriginalCwd(),
|
|
770758
770778
|
added_dirs: addedDirs
|
|
770759
770779
|
},
|
|
770760
|
-
version: "1.80.
|
|
770780
|
+
version: "1.80.6",
|
|
770761
770781
|
output_style: {
|
|
770762
770782
|
name: outputStyleName
|
|
770763
770783
|
},
|
|
@@ -770892,7 +770912,7 @@ function StatusLineInner({
|
|
|
770892
770912
|
const attention = customStatusError ?? taskAttention;
|
|
770893
770913
|
const terminalSize = React133.useContext(TerminalSizeContext);
|
|
770894
770914
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
770895
|
-
version: "1.80.
|
|
770915
|
+
version: "1.80.6",
|
|
770896
770916
|
providerLabel: providerRuntime.providerLabel,
|
|
770897
770917
|
authMode: providerRuntime.authLabel,
|
|
770898
770918
|
model: renderModelName(mainLoopModel) || providerRuntime.model || "",
|
|
@@ -783147,7 +783167,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
783147
783167
|
} catch {}
|
|
783148
783168
|
const data = {
|
|
783149
783169
|
trigger: trigger2,
|
|
783150
|
-
version: "1.80.
|
|
783170
|
+
version: "1.80.6",
|
|
783151
783171
|
platform: process.platform,
|
|
783152
783172
|
transcript,
|
|
783153
783173
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -795516,7 +795536,7 @@ function WelcomeV2() {
|
|
|
795516
795536
|
dimColor: true,
|
|
795517
795537
|
children: [
|
|
795518
795538
|
"v",
|
|
795519
|
-
"1.80.
|
|
795539
|
+
"1.80.6"
|
|
795520
795540
|
]
|
|
795521
795541
|
}, undefined, true, undefined, this)
|
|
795522
795542
|
]
|
|
@@ -796776,7 +796796,7 @@ function completeOnboarding() {
|
|
|
796776
796796
|
saveGlobalConfig((current) => ({
|
|
796777
796797
|
...current,
|
|
796778
796798
|
hasCompletedOnboarding: true,
|
|
796779
|
-
lastOnboardingVersion: "1.80.
|
|
796799
|
+
lastOnboardingVersion: "1.80.6"
|
|
796780
796800
|
}));
|
|
796781
796801
|
}
|
|
796782
796802
|
function showDialog(root2, renderer) {
|
|
@@ -801922,7 +801942,7 @@ function appendToLog(path28, message) {
|
|
|
801922
801942
|
cwd: getFsImplementation().cwd(),
|
|
801923
801943
|
userType: process.env.USER_TYPE,
|
|
801924
801944
|
sessionId: getSessionId(),
|
|
801925
|
-
version: "1.80.
|
|
801945
|
+
version: "1.80.6"
|
|
801926
801946
|
};
|
|
801927
801947
|
getLogWriter(path28).write(messageWithTimestamp);
|
|
801928
801948
|
}
|
|
@@ -806086,8 +806106,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
806086
806106
|
}
|
|
806087
806107
|
async function checkEnvLessBridgeMinVersion() {
|
|
806088
806108
|
const cfg = await getEnvLessBridgeConfig();
|
|
806089
|
-
if (cfg.min_version && lt("1.80.
|
|
806090
|
-
return `Your version of UR (${"1.80.
|
|
806109
|
+
if (cfg.min_version && lt("1.80.6", cfg.min_version)) {
|
|
806110
|
+
return `Your version of UR (${"1.80.6"}) is too old for Remote Control.
|
|
806091
806111
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
806092
806112
|
}
|
|
806093
806113
|
return null;
|
|
@@ -806561,7 +806581,7 @@ async function initBridgeCore(params) {
|
|
|
806561
806581
|
const rawApi = createBridgeApiClient({
|
|
806562
806582
|
baseUrl,
|
|
806563
806583
|
getAccessToken,
|
|
806564
|
-
runnerVersion: "1.80.
|
|
806584
|
+
runnerVersion: "1.80.6",
|
|
806565
806585
|
onDebug: logForDebugging,
|
|
806566
806586
|
onAuth401,
|
|
806567
806587
|
getTrustedDeviceToken
|
|
@@ -816034,7 +816054,7 @@ function getAgUiCapabilities() {
|
|
|
816034
816054
|
name: "UR-Nexus",
|
|
816035
816055
|
type: "ur-nexus",
|
|
816036
816056
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
816037
|
-
version: "1.80.
|
|
816057
|
+
version: "1.80.6",
|
|
816038
816058
|
provider: "UR",
|
|
816039
816059
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
816040
816060
|
},
|
|
@@ -817261,7 +817281,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
817261
817281
|
};
|
|
817262
817282
|
const server2 = new Server({
|
|
817263
817283
|
name: "ur-nexus",
|
|
817264
|
-
version: "1.80.
|
|
817284
|
+
version: "1.80.6"
|
|
817265
817285
|
}, {
|
|
817266
817286
|
capabilities: {
|
|
817267
817287
|
tools: {}
|
|
@@ -818465,7 +818485,7 @@ function thrownResponse(error40) {
|
|
|
818465
818485
|
}
|
|
818466
818486
|
async function createUrMcp2026Runtime(options5) {
|
|
818467
818487
|
const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
|
|
818468
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.80.
|
|
818488
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.80.6" }, { capabilities: {} });
|
|
818469
818489
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
818470
818490
|
try {
|
|
818471
818491
|
await server2.connect(serverTransport);
|
|
@@ -818476,7 +818496,7 @@ async function createUrMcp2026Runtime(options5) {
|
|
|
818476
818496
|
}
|
|
818477
818497
|
const runtime2 = new Mcp2026Runtime({
|
|
818478
818498
|
cwd: options5.cwd,
|
|
818479
|
-
version: "1.80.
|
|
818499
|
+
version: "1.80.6",
|
|
818480
818500
|
backend: {
|
|
818481
818501
|
listTools: async () => {
|
|
818482
818502
|
const listed = await client2.listTools();
|
|
@@ -821211,7 +821231,7 @@ async function update() {
|
|
|
821211
821231
|
logEvent("tengu_update_check", {});
|
|
821212
821232
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
821213
821233
|
const result = await checkUpgradeStatus({
|
|
821214
|
-
currentVersion: "1.80.
|
|
821234
|
+
currentVersion: "1.80.6",
|
|
821215
821235
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
821216
821236
|
installationType: diagnostic2.installationType,
|
|
821217
821237
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -822539,7 +822559,7 @@ ${customInstructions}` : customInstructions;
|
|
|
822539
822559
|
}
|
|
822540
822560
|
}
|
|
822541
822561
|
logForDiagnosticsNoPII("info", "started", {
|
|
822542
|
-
version: "1.80.
|
|
822562
|
+
version: "1.80.6",
|
|
822543
822563
|
is_native_binary: isInBundledMode()
|
|
822544
822564
|
});
|
|
822545
822565
|
registerCleanup(async () => {
|
|
@@ -823326,7 +823346,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
823326
823346
|
pendingHookMessages
|
|
823327
823347
|
}, renderAndRun);
|
|
823328
823348
|
}
|
|
823329
|
-
}).version("1.80.
|
|
823349
|
+
}).version("1.80.6 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
823330
823350
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
823331
823351
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
823332
823352
|
if (canUserConfigureAdvisor()) {
|
|
@@ -824453,7 +824473,7 @@ if (false) {}
|
|
|
824453
824473
|
async function main2() {
|
|
824454
824474
|
const args = process.argv.slice(2);
|
|
824455
824475
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
824456
|
-
console.log(`${"1.80.
|
|
824476
|
+
console.log(`${"1.80.6"} (UR-Nexus)`);
|
|
824457
824477
|
return;
|
|
824458
824478
|
}
|
|
824459
824479
|
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.6 Addition
|
|
13
|
+
|
|
14
|
+
| Addition | Surface | What it adds |
|
|
15
|
+
| --- | --- | --- |
|
|
16
|
+
| Read-only planning delegation | Plan mode, `Agent`, strict-hybrid task gate | Lets the shipped `Explore` and `Plan` agents research before implementation tasks exist, eliminating failed-first delegation while retaining plan permissions and task requirements for every custom, write-capable, nested, team, or worktree agent. |
|
|
17
|
+
|
|
12
18
|
## v1.80.5 Addition
|
|
13
19
|
|
|
14
20
|
| Addition | Surface | What it adds |
|
package/docs/TROUBLESHOOTING.md
CHANGED
|
@@ -85,16 +85,20 @@ ur provider status
|
|
|
85
85
|
|
|
86
86
|
### Plan mode says `TaskListRequired`
|
|
87
87
|
|
|
88
|
-
- Likely cause on UR 1.80.3–1.80.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
- Fix: upgrade to UR 1.80.
|
|
92
|
-
|
|
88
|
+
- Likely cause on UR 1.80.3–1.80.5: the strict task gate treated either the
|
|
89
|
+
active plan file or early read-only research delegation as an untracked
|
|
90
|
+
project mutation, creating a circular requirement before planning finished.
|
|
91
|
+
- Fix: upgrade to UR 1.80.6 or newer. The exact active plan file and main-thread
|
|
92
|
+
delegation to UR's shipped read-only `Explore` and `Plan` agents are allowed
|
|
93
|
+
before tasks exist. Approved plans are synchronized into visible
|
|
93
94
|
implementation and verification tasks before the first project mutation.
|
|
94
|
-
Other files remain protected. Existing
|
|
95
|
+
Other files and write-capable delegation remain protected. Existing
|
|
96
|
+
actionable tasks are preserved.
|
|
95
97
|
- If the message names a project file rather than the active plan file, it is
|
|
96
|
-
expected
|
|
97
|
-
|
|
98
|
+
expected. It is also expected for custom/general-purpose/nested/team/worktree
|
|
99
|
+
agents without a parent task: create the requested tasks or finish and
|
|
100
|
+
approve the plan first. Disabling `tasks.requireBeforeChanges` is no longer
|
|
101
|
+
needed for normal plan mode.
|
|
98
102
|
|
|
99
103
|
## Providers and models
|
|
100
104
|
|
package/docs/USAGE.md
CHANGED
|
@@ -470,11 +470,16 @@ older builds are hidden and removed at the next prompt boundary.
|
|
|
470
470
|
|
|
471
471
|
Plan mode has one narrow exception to the mutation gate: UR may write or edit
|
|
472
472
|
the exact plan file for the active session while the rest of the workspace
|
|
473
|
-
remains read-only.
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
473
|
+
remains read-only. The main session may also delegate early research to UR's
|
|
474
|
+
shipped `Explore` and `Plan` agents before tasks exist. Those two definitions
|
|
475
|
+
are mechanically held in plan permission mode; custom overrides,
|
|
476
|
+
general-purpose agents, nested agents, team workers, and worktree agents still
|
|
477
|
+
require an actionable parent task. When the user approves the plan,
|
|
478
|
+
`ExitPlanMode` preserves any existing actionable board or creates a bounded set
|
|
479
|
+
of professional, deduplicated implementation tasks plus a verification task
|
|
480
|
+
that depends on them. Implementation therefore starts with visible tracking
|
|
481
|
+
without requiring the model or user to recover from a circular
|
|
482
|
+
`TaskListRequired` error.
|
|
478
483
|
|
|
479
484
|
Independent read-only tasks can run in parallel. A task that may write to the
|
|
480
485
|
shared checkout is serialized with other possible writers, even when it comes
|
package/docs/VALIDATION.md
CHANGED
|
@@ -19,7 +19,19 @@ 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.6 (UR-Nexus)"
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### 0.0 Plan research delegation starts cleanly (1.80.6)
|
|
26
|
+
|
|
27
|
+
Start an interactive session with task enforcement enabled and ask UR to plan a
|
|
28
|
+
change that requires codebase research. Before any task exists, built-in
|
|
29
|
+
`Explore` and `Plan` agent calls should initialize without `TaskListRequired`.
|
|
30
|
+
Custom or general-purpose agents should remain blocked until they have an
|
|
31
|
+
actionable parent task. The deterministic regressions are:
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
bun test test/taskListGate.test.ts test/toolExecutionFinalInput.test.ts
|
|
23
35
|
```
|
|
24
36
|
|
|
25
37
|
### 0.0.1 Plan approval creates visible tasks (1.80.5)
|
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.6</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.6",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED