ur-agent 1.81.0 → 1.81.1
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 +10 -0
- package/dist/cli.js +84 -84
- package/docs/REDTEAM.md +6 -0
- package/docs/VALIDATION.md +1 -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/plugins/core/reverse-skills/.ur-plugin/plugin.json +1 -1
- package/plugins/core/reverse-skills/README.md +6 -0
- package/plugins/core/reverse-skills/UR-INTEGRATION.md +8 -7
- package/plugins/core/reverse-skills/commands/start.md +10 -0
- package/plugins/core/reverse-skills/skills/application-redteam/SKILL.md +1 -1
- package/plugins/core/reverse-skills/skills/binary-reverse/SKILL.md +1 -1
- package/plugins/core/reverse-skills/skills/exploit-development/SKILL.md +1 -1
- package/plugins/core/reverse-skills/skills/forensics-threat-hunting/SKILL.md +1 -1
- package/plugins/core/reverse-skills/skills/llm-agent-security/SKILL.md +1 -1
- package/plugins/core/reverse-skills/skills/malware-edr-research/SKILL.md +1 -1
- package/plugins/core/reverse-skills/skills/platform-radio-security/SKILL.md +1 -1
- package/plugins/core/reverse-skills/skills/research-evidence/SKILL.md +1 -1
- package/plugins/core/reverse-skills/skills/reverse-skill-router/SKILL.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.81.1
|
|
4
|
+
|
|
5
|
+
- Preflighted UR task tracking in `/reverse-skills:start` and every bundled
|
|
6
|
+
reverse-security skill before mutating, multi-outcome workflows. The plugin
|
|
7
|
+
now creates and advances an actionable task board instead of first tripping
|
|
8
|
+
`TaskListRequired`, while keeping `tasks.requireBeforeChanges` enabled.
|
|
9
|
+
- Made verifier and command-registry tests independent of globally installed
|
|
10
|
+
plugins, so release checks remain reproducible when marketplace validators
|
|
11
|
+
and namespaced commands are enabled on the developer machine.
|
|
12
|
+
|
|
3
13
|
## 1.81.0
|
|
4
14
|
|
|
5
15
|
- Added `/mode redteam`, a warning-gated, session-only UR policy mode for
|
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.81.
|
|
107791
|
+
return `ur/${"1.81.1"}`;
|
|
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.81.
|
|
107813
|
+
return `ur-cli/${"1.81.1"} (${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.81.
|
|
107827
|
+
return `ur/${"1.81.1"}${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.81.
|
|
107965
|
+
appVersion: "1.81.1",
|
|
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.81.
|
|
115852
|
+
const match = "1.81.1".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.81.
|
|
115892
|
+
version: "1.81.1",
|
|
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.81.
|
|
116562
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.81.1"
|
|
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.81.
|
|
116590
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.81.1");
|
|
116591
116591
|
}
|
|
116592
116592
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
116593
116593
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -126553,7 +126553,7 @@ function formatA2AAgentCard(options = {}, pretty = true) {
|
|
|
126553
126553
|
function formatA2AV1AgentCard(options = {}, pretty = true) {
|
|
126554
126554
|
return JSON.stringify(buildA2AV1AgentCard(options), null, pretty ? 2 : 0);
|
|
126555
126555
|
}
|
|
126556
|
-
var urVersion = "1.81.
|
|
126556
|
+
var urVersion = "1.81.1", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
|
|
126557
126557
|
var init_trends = __esm(() => {
|
|
126558
126558
|
init_a2aCardSignature();
|
|
126559
126559
|
coverage = [
|
|
@@ -129443,7 +129443,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
129443
129443
|
if (!isAttributionHeaderEnabled()) {
|
|
129444
129444
|
return "";
|
|
129445
129445
|
}
|
|
129446
|
-
const version2 = `${"1.81.
|
|
129446
|
+
const version2 = `${"1.81.1"}.${fingerprint}`;
|
|
129447
129447
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
129448
129448
|
const cch = "";
|
|
129449
129449
|
const workload = getWorkload();
|
|
@@ -184643,7 +184643,7 @@ var init_projectSafety = __esm(() => {
|
|
|
184643
184643
|
function getInstruments() {
|
|
184644
184644
|
if (instruments)
|
|
184645
184645
|
return instruments;
|
|
184646
|
-
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.81.
|
|
184646
|
+
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.81.1");
|
|
184647
184647
|
instruments = {
|
|
184648
184648
|
operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
|
|
184649
184649
|
description: "GenAI operation duration.",
|
|
@@ -184741,7 +184741,7 @@ function genAiAgentAttributes() {
|
|
|
184741
184741
|
"gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
|
|
184742
184742
|
"gen_ai.provider.name": "ur",
|
|
184743
184743
|
"gen_ai.agent.name": "UR-Nexus",
|
|
184744
|
-
"gen_ai.agent.version": "1.81.
|
|
184744
|
+
"gen_ai.agent.version": "1.81.1"
|
|
184745
184745
|
};
|
|
184746
184746
|
}
|
|
184747
184747
|
function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
@@ -184762,7 +184762,7 @@ function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
|
184762
184762
|
function startGenAiWorkflowSpan(workflowName, workflowRunId) {
|
|
184763
184763
|
const attributes = genAiWorkflowAttributes(workflowName, workflowRunId);
|
|
184764
184764
|
const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
|
|
184765
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.
|
|
184765
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.1").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
184766
184766
|
}
|
|
184767
184767
|
function endGenAiWorkflowSpan(span, options2 = {}) {
|
|
184768
184768
|
try {
|
|
@@ -184800,7 +184800,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
|
|
|
184800
184800
|
if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
|
|
184801
184801
|
attributes["gen_ai.memory.record.count"] = options2.recordCount;
|
|
184802
184802
|
}
|
|
184803
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.
|
|
184803
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.1").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
184804
184804
|
}
|
|
184805
184805
|
function endGenAiMemorySpan(span, options2 = {}) {
|
|
184806
184806
|
try {
|
|
@@ -187876,7 +187876,7 @@ class Verifier {
|
|
|
187876
187876
|
this.maxRejections = options2.maxRejectionsPerTurn ?? DEFAULT_MAX_REJECTIONS_PER_TURN;
|
|
187877
187877
|
this.loops = new LoopDetector(options2.repeatThreshold);
|
|
187878
187878
|
this.configPromise = loadVerifyConfig(options2.cwd);
|
|
187879
|
-
this.pluginValidatorsPromise = loadPluginValidators();
|
|
187879
|
+
this.pluginValidatorsPromise = options2.pluginValidators === undefined ? loadPluginValidators() : Promise.resolve(options2.pluginValidators);
|
|
187880
187880
|
this.mode = resolveMode(options2.mode);
|
|
187881
187881
|
this.askBeforeGatesOverride = options2.askBeforeGates;
|
|
187882
187882
|
this.getActionableTasks = options2.getActionableTasks ?? (async () => {
|
|
@@ -278515,7 +278515,7 @@ function getTelemetryAttributes() {
|
|
|
278515
278515
|
attributes["session.id"] = sessionId;
|
|
278516
278516
|
}
|
|
278517
278517
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
278518
|
-
attributes["app.version"] = "1.81.
|
|
278518
|
+
attributes["app.version"] = "1.81.1";
|
|
278519
278519
|
}
|
|
278520
278520
|
const oauthAccount = getOauthAccountInfo();
|
|
278521
278521
|
if (oauthAccount) {
|
|
@@ -319919,7 +319919,7 @@ function getInstallationEnv() {
|
|
|
319919
319919
|
return;
|
|
319920
319920
|
}
|
|
319921
319921
|
function getURCodeVersion() {
|
|
319922
|
-
return "1.81.
|
|
319922
|
+
return "1.81.1";
|
|
319923
319923
|
}
|
|
319924
319924
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
319925
319925
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -327289,7 +327289,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
327289
327289
|
const client2 = new Client({
|
|
327290
327290
|
name: "ur",
|
|
327291
327291
|
title: "UR",
|
|
327292
|
-
version: "1.81.
|
|
327292
|
+
version: "1.81.1",
|
|
327293
327293
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
327294
327294
|
websiteUrl: PRODUCT_URL
|
|
327295
327295
|
}, {
|
|
@@ -327650,7 +327650,7 @@ var init_client5 = __esm(() => {
|
|
|
327650
327650
|
const client2 = new Client({
|
|
327651
327651
|
name: "ur",
|
|
327652
327652
|
title: "UR",
|
|
327653
|
-
version: "1.81.
|
|
327653
|
+
version: "1.81.1",
|
|
327654
327654
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
327655
327655
|
websiteUrl: PRODUCT_URL
|
|
327656
327656
|
}, {
|
|
@@ -340423,7 +340423,7 @@ async function createRuntime() {
|
|
|
340423
340423
|
bootstrapTelemetry();
|
|
340424
340424
|
const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
|
|
340425
340425
|
[import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
|
|
340426
|
-
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.81.
|
|
340426
|
+
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.81.1"
|
|
340427
340427
|
}));
|
|
340428
340428
|
const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
|
|
340429
340429
|
resource,
|
|
@@ -340456,11 +340456,11 @@ async function createRuntime() {
|
|
|
340456
340456
|
setMeterProvider(meterProvider);
|
|
340457
340457
|
setLoggerProvider(loggerProvider);
|
|
340458
340458
|
if (meterProvider) {
|
|
340459
|
-
const meter = meterProvider.getMeter("ur-agent", "1.81.
|
|
340459
|
+
const meter = meterProvider.getMeter("ur-agent", "1.81.1");
|
|
340460
340460
|
setMeter(meter, (name, options2) => meter.createCounter(name, options2));
|
|
340461
340461
|
}
|
|
340462
340462
|
if (loggerProvider) {
|
|
340463
|
-
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.81.
|
|
340463
|
+
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.81.1"));
|
|
340464
340464
|
}
|
|
340465
340465
|
if (!cleanupRegistered3) {
|
|
340466
340466
|
cleanupRegistered3 = true;
|
|
@@ -341122,9 +341122,9 @@ async function assertMinVersion() {
|
|
|
341122
341122
|
if (false) {}
|
|
341123
341123
|
try {
|
|
341124
341124
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
341125
|
-
if (versionConfig.minVersion && lt("1.81.
|
|
341125
|
+
if (versionConfig.minVersion && lt("1.81.1", versionConfig.minVersion)) {
|
|
341126
341126
|
console.error(`
|
|
341127
|
-
It looks like your version of UR (${"1.81.
|
|
341127
|
+
It looks like your version of UR (${"1.81.1"}) needs an update.
|
|
341128
341128
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
341129
341129
|
|
|
341130
341130
|
To update, please run:
|
|
@@ -341340,7 +341340,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
341340
341340
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
341341
341341
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
341342
341342
|
pid: process.pid,
|
|
341343
|
-
currentVersion: "1.81.
|
|
341343
|
+
currentVersion: "1.81.1"
|
|
341344
341344
|
});
|
|
341345
341345
|
return "in_progress";
|
|
341346
341346
|
}
|
|
@@ -341349,7 +341349,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
341349
341349
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
341350
341350
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
341351
341351
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
341352
|
-
currentVersion: "1.81.
|
|
341352
|
+
currentVersion: "1.81.1"
|
|
341353
341353
|
});
|
|
341354
341354
|
console.error(`
|
|
341355
341355
|
Error: Windows NPM detected in WSL
|
|
@@ -341884,7 +341884,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
341884
341884
|
}
|
|
341885
341885
|
async function getDoctorDiagnostic() {
|
|
341886
341886
|
const installationType = await getCurrentInstallationType();
|
|
341887
|
-
const version2 = typeof MACRO !== "undefined" ? "1.81.
|
|
341887
|
+
const version2 = typeof MACRO !== "undefined" ? "1.81.1" : "unknown";
|
|
341888
341888
|
const installationPath = await getInstallationPath();
|
|
341889
341889
|
const invokedBinary = getInvokedBinary();
|
|
341890
341890
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -342819,8 +342819,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
342819
342819
|
const maxVersion = await getMaxVersion();
|
|
342820
342820
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
342821
342821
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
342822
|
-
if (gte("1.81.
|
|
342823
|
-
logForDebugging(`Native installer: current version ${"1.81.
|
|
342822
|
+
if (gte("1.81.1", maxVersion)) {
|
|
342823
|
+
logForDebugging(`Native installer: current version ${"1.81.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
342824
342824
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
342825
342825
|
latency_ms: Date.now() - startTime,
|
|
342826
342826
|
max_version: maxVersion,
|
|
@@ -342831,7 +342831,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
342831
342831
|
version2 = maxVersion;
|
|
342832
342832
|
}
|
|
342833
342833
|
}
|
|
342834
|
-
if (!forceReinstall && version2 === "1.81.
|
|
342834
|
+
if (!forceReinstall && version2 === "1.81.1" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
342835
342835
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
342836
342836
|
logEvent("tengu_native_update_complete", {
|
|
342837
342837
|
latency_ms: Date.now() - startTime,
|
|
@@ -413507,7 +413507,7 @@ function isAnyTracingEnabled() {
|
|
|
413507
413507
|
return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
|
|
413508
413508
|
}
|
|
413509
413509
|
function getTracer() {
|
|
413510
|
-
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.81.
|
|
413510
|
+
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.81.1");
|
|
413511
413511
|
}
|
|
413512
413512
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
413513
413513
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -443655,7 +443655,7 @@ function Feedback({
|
|
|
443655
443655
|
platform: env2.platform,
|
|
443656
443656
|
gitRepo: envInfo.isGit,
|
|
443657
443657
|
terminal: env2.terminal,
|
|
443658
|
-
version: "1.81.
|
|
443658
|
+
version: "1.81.1",
|
|
443659
443659
|
transcript: normalizeMessagesForAPI(messages),
|
|
443660
443660
|
errors: sanitizedErrors,
|
|
443661
443661
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -443847,7 +443847,7 @@ function Feedback({
|
|
|
443847
443847
|
", ",
|
|
443848
443848
|
env2.terminal,
|
|
443849
443849
|
", v",
|
|
443850
|
-
"1.81.
|
|
443850
|
+
"1.81.1"
|
|
443851
443851
|
]
|
|
443852
443852
|
}, undefined, true, undefined, this)
|
|
443853
443853
|
]
|
|
@@ -443953,7 +443953,7 @@ ${sanitizedDescription}
|
|
|
443953
443953
|
` + `**Environment Info**
|
|
443954
443954
|
` + `- Platform: ${env2.platform}
|
|
443955
443955
|
` + `- Terminal: ${env2.terminal}
|
|
443956
|
-
` + `- Version: ${"1.81.
|
|
443956
|
+
` + `- Version: ${"1.81.1"}
|
|
443957
443957
|
` + `- Feedback ID: ${feedbackId}
|
|
443958
443958
|
` + `
|
|
443959
443959
|
**Errors**
|
|
@@ -447063,7 +447063,7 @@ function buildPrimarySection() {
|
|
|
447063
447063
|
}, undefined, false, undefined, this);
|
|
447064
447064
|
return [{
|
|
447065
447065
|
label: "Version",
|
|
447066
|
-
value: "1.81.
|
|
447066
|
+
value: "1.81.1"
|
|
447067
447067
|
}, {
|
|
447068
447068
|
label: "Session name",
|
|
447069
447069
|
value: nameValue
|
|
@@ -450445,7 +450445,7 @@ function Config({
|
|
|
450445
450445
|
}
|
|
450446
450446
|
}, undefined, false, undefined, this)
|
|
450447
450447
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
|
|
450448
|
-
currentVersion: "1.81.
|
|
450448
|
+
currentVersion: "1.81.1",
|
|
450449
450449
|
onChoice: (choice) => {
|
|
450450
450450
|
setShowSubmenu(null);
|
|
450451
450451
|
setTabsHidden(false);
|
|
@@ -450457,7 +450457,7 @@ function Config({
|
|
|
450457
450457
|
autoUpdatesChannel: "stable"
|
|
450458
450458
|
};
|
|
450459
450459
|
if (choice === "stay") {
|
|
450460
|
-
newSettings.minimumVersion = "1.81.
|
|
450460
|
+
newSettings.minimumVersion = "1.81.1";
|
|
450461
450461
|
}
|
|
450462
450462
|
updateSettingsForSource("userSettings", newSettings);
|
|
450463
450463
|
setSettingsData((prev_27) => ({
|
|
@@ -458766,7 +458766,7 @@ function HelpV2(t0) {
|
|
|
458766
458766
|
let t6;
|
|
458767
458767
|
if ($2[31] !== tabs) {
|
|
458768
458768
|
t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
|
|
458769
|
-
title: `UR v${"1.81.
|
|
458769
|
+
title: `UR v${"1.81.1"}`,
|
|
458770
458770
|
color: "professionalBlue",
|
|
458771
458771
|
defaultTab: "general",
|
|
458772
458772
|
children: tabs
|
|
@@ -459699,7 +459699,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
459699
459699
|
async function handleInitialize(options2) {
|
|
459700
459700
|
return {
|
|
459701
459701
|
name: "UR",
|
|
459702
|
-
version: "1.81.
|
|
459702
|
+
version: "1.81.1",
|
|
459703
459703
|
protocolVersion: "0.1.0",
|
|
459704
459704
|
workspaceRoot: options2.cwd,
|
|
459705
459705
|
capabilities: {
|
|
@@ -476807,7 +476807,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
476807
476807
|
return [];
|
|
476808
476808
|
}
|
|
476809
476809
|
}
|
|
476810
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.
|
|
476810
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.1") {
|
|
476811
476811
|
if (process.env.USER_TYPE === "ant") {
|
|
476812
476812
|
const changelog = "";
|
|
476813
476813
|
if (changelog) {
|
|
@@ -476834,7 +476834,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.0")
|
|
|
476834
476834
|
releaseNotes
|
|
476835
476835
|
};
|
|
476836
476836
|
}
|
|
476837
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.81.
|
|
476837
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.81.1") {
|
|
476838
476838
|
if (process.env.USER_TYPE === "ant") {
|
|
476839
476839
|
const changelog = "";
|
|
476840
476840
|
if (changelog) {
|
|
@@ -479739,7 +479739,7 @@ function getRecentActivitySync() {
|
|
|
479739
479739
|
return cachedActivity;
|
|
479740
479740
|
}
|
|
479741
479741
|
function getLogoDisplayData() {
|
|
479742
|
-
const version2 = process.env.DEMO_VERSION ?? "1.81.
|
|
479742
|
+
const version2 = process.env.DEMO_VERSION ?? "1.81.1";
|
|
479743
479743
|
const serverUrl = getDirectConnectServerUrl();
|
|
479744
479744
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
479745
479745
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -480607,7 +480607,7 @@ function LogoV2() {
|
|
|
480607
480607
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
480608
480608
|
t2 = () => {
|
|
480609
480609
|
const currentConfig = getGlobalConfig();
|
|
480610
|
-
if (currentConfig.lastReleaseNotesSeen === "1.81.
|
|
480610
|
+
if (currentConfig.lastReleaseNotesSeen === "1.81.1") {
|
|
480611
480611
|
return;
|
|
480612
480612
|
}
|
|
480613
480613
|
saveGlobalConfig(_temp325);
|
|
@@ -481292,12 +481292,12 @@ function LogoV2() {
|
|
|
481292
481292
|
return t41;
|
|
481293
481293
|
}
|
|
481294
481294
|
function _temp325(current) {
|
|
481295
|
-
if (current.lastReleaseNotesSeen === "1.81.
|
|
481295
|
+
if (current.lastReleaseNotesSeen === "1.81.1") {
|
|
481296
481296
|
return current;
|
|
481297
481297
|
}
|
|
481298
481298
|
return {
|
|
481299
481299
|
...current,
|
|
481300
|
-
lastReleaseNotesSeen: "1.81.
|
|
481300
|
+
lastReleaseNotesSeen: "1.81.1"
|
|
481301
481301
|
};
|
|
481302
481302
|
}
|
|
481303
481303
|
function _temp241(s_0) {
|
|
@@ -497247,7 +497247,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
497247
497247
|
if (spec.name !== specName) {
|
|
497248
497248
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
497249
497249
|
}
|
|
497250
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.
|
|
497250
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.1" : "1.81.1");
|
|
497251
497251
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
497252
497252
|
throw new Error("invalid ur-agent package version");
|
|
497253
497253
|
}
|
|
@@ -498240,7 +498240,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
498240
498240
|
path: ".github/workflows/ur.yml",
|
|
498241
498241
|
root: "project",
|
|
498242
498242
|
content: compileAgenticCiWorkflow("default", {
|
|
498243
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.81.
|
|
498243
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.81.1" : "1.81.1"
|
|
498244
498244
|
})
|
|
498245
498245
|
},
|
|
498246
498246
|
{
|
|
@@ -498303,7 +498303,7 @@ function value(tokens, flag) {
|
|
|
498303
498303
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
498304
498304
|
}
|
|
498305
498305
|
function cliVersion() {
|
|
498306
|
-
return typeof MACRO !== "undefined" ? "1.81.
|
|
498306
|
+
return typeof MACRO !== "undefined" ? "1.81.1" : "1.81.1";
|
|
498307
498307
|
}
|
|
498308
498308
|
function workflowPath(cwd2) {
|
|
498309
498309
|
return join168(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -504159,7 +504159,7 @@ function createAcpStdioApp(deps) {
|
|
|
504159
504159
|
}
|
|
504160
504160
|
},
|
|
504161
504161
|
authMethods: [],
|
|
504162
|
-
agentInfo: { name: "UR-Nexus", version: "1.81.
|
|
504162
|
+
agentInfo: { name: "UR-Nexus", version: "1.81.1" }
|
|
504163
504163
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
504164
504164
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
504165
504165
|
await runtime2.announce({
|
|
@@ -504256,7 +504256,7 @@ function createAcpStdioAgent(deps) {
|
|
|
504256
504256
|
}
|
|
504257
504257
|
},
|
|
504258
504258
|
authMethods: [],
|
|
504259
|
-
agentInfo: { name: "UR-Nexus", version: "1.81.
|
|
504259
|
+
agentInfo: { name: "UR-Nexus", version: "1.81.1" }
|
|
504260
504260
|
});
|
|
504261
504261
|
return;
|
|
504262
504262
|
case "authenticate":
|
|
@@ -715508,7 +715508,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
715508
715508
|
smapsRollup,
|
|
715509
715509
|
platform: process.platform,
|
|
715510
715510
|
nodeVersion: process.version,
|
|
715511
|
-
ccVersion: "1.81.
|
|
715511
|
+
ccVersion: "1.81.1"
|
|
715512
715512
|
};
|
|
715513
715513
|
}
|
|
715514
715514
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -716097,7 +716097,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
716097
716097
|
var call154 = async () => {
|
|
716098
716098
|
return {
|
|
716099
716099
|
type: "text",
|
|
716100
|
-
value: "1.81.
|
|
716100
|
+
value: "1.81.1"
|
|
716101
716101
|
};
|
|
716102
716102
|
}, version2, version_default;
|
|
716103
716103
|
var init_version = __esm(() => {
|
|
@@ -727340,7 +727340,7 @@ function generateHtmlReport(data, insights) {
|
|
|
727340
727340
|
</html>`;
|
|
727341
727341
|
}
|
|
727342
727342
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
727343
|
-
const version3 = typeof MACRO !== "undefined" ? "1.81.
|
|
727343
|
+
const version3 = typeof MACRO !== "undefined" ? "1.81.1" : "unknown";
|
|
727344
727344
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
727345
727345
|
const facets_summary = {
|
|
727346
727346
|
total: facets.size,
|
|
@@ -731653,7 +731653,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
731653
731653
|
init_settings2();
|
|
731654
731654
|
init_slowOperations();
|
|
731655
731655
|
init_uuid();
|
|
731656
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.81.
|
|
731656
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.81.1" : "unknown";
|
|
731657
731657
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
731658
731658
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
731659
731659
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -732868,7 +732868,7 @@ var init_filesystem = __esm(() => {
|
|
|
732868
732868
|
});
|
|
732869
732869
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
732870
732870
|
const nonce = randomBytes24(16).toString("hex");
|
|
732871
|
-
return join243(getURTempDir(), "bundled-skills", "1.81.
|
|
732871
|
+
return join243(getURTempDir(), "bundled-skills", "1.81.1", nonce);
|
|
732872
732872
|
});
|
|
732873
732873
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
732874
732874
|
});
|
|
@@ -739268,7 +739268,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
739268
739268
|
}
|
|
739269
739269
|
function computeFingerprintFromMessages(messages) {
|
|
739270
739270
|
const firstMessageText = extractFirstMessageText(messages);
|
|
739271
|
-
return computeFingerprint(firstMessageText, "1.81.
|
|
739271
|
+
return computeFingerprint(firstMessageText, "1.81.1");
|
|
739272
739272
|
}
|
|
739273
739273
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
739274
739274
|
var init_fingerprint = () => {};
|
|
@@ -741193,7 +741193,7 @@ async function sideQuery(opts) {
|
|
|
741193
741193
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
741194
741194
|
}
|
|
741195
741195
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
741196
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.81.
|
|
741196
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.81.1");
|
|
741197
741197
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
741198
741198
|
const systemBlocks = [
|
|
741199
741199
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -746027,7 +746027,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
746027
746027
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
746028
746028
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
746029
746029
|
betas: getSdkBetas(),
|
|
746030
|
-
ur_version: "1.81.
|
|
746030
|
+
ur_version: "1.81.1",
|
|
746031
746031
|
output_style: outputStyle,
|
|
746032
746032
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
746033
746033
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -759863,7 +759863,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
759863
759863
|
function getSemverPart(version3) {
|
|
759864
759864
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
759865
759865
|
}
|
|
759866
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.81.
|
|
759866
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.81.1") {
|
|
759867
759867
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
|
|
759868
759868
|
if (!updatedVersion) {
|
|
759869
759869
|
return null;
|
|
@@ -759912,7 +759912,7 @@ function AutoUpdater({
|
|
|
759912
759912
|
return;
|
|
759913
759913
|
}
|
|
759914
759914
|
if (false) {}
|
|
759915
|
-
const currentVersion = "1.81.
|
|
759915
|
+
const currentVersion = "1.81.1";
|
|
759916
759916
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
759917
759917
|
let latestVersion = await getLatestVersion(channel);
|
|
759918
759918
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -760141,12 +760141,12 @@ function NativeAutoUpdater({
|
|
|
760141
760141
|
logEvent("tengu_native_auto_updater_start", {});
|
|
760142
760142
|
try {
|
|
760143
760143
|
const maxVersion = await getMaxVersion();
|
|
760144
|
-
if (maxVersion && gt("1.81.
|
|
760144
|
+
if (maxVersion && gt("1.81.1", maxVersion)) {
|
|
760145
760145
|
const msg = await getMaxVersionMessage();
|
|
760146
760146
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
760147
760147
|
}
|
|
760148
760148
|
const result = await installLatest(channel);
|
|
760149
|
-
const currentVersion = "1.81.
|
|
760149
|
+
const currentVersion = "1.81.1";
|
|
760150
760150
|
const latencyMs = Date.now() - startTime;
|
|
760151
760151
|
if (result.lockFailed) {
|
|
760152
760152
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -760283,17 +760283,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
760283
760283
|
const maxVersion = await getMaxVersion();
|
|
760284
760284
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
760285
760285
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
760286
|
-
if (gte("1.81.
|
|
760287
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.
|
|
760286
|
+
if (gte("1.81.1", maxVersion)) {
|
|
760287
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
760288
760288
|
setUpdateAvailable(false);
|
|
760289
760289
|
return;
|
|
760290
760290
|
}
|
|
760291
760291
|
latest = maxVersion;
|
|
760292
760292
|
}
|
|
760293
|
-
const hasUpdate = latest && !gte("1.81.
|
|
760293
|
+
const hasUpdate = latest && !gte("1.81.1", latest) && !shouldSkipVersion(latest);
|
|
760294
760294
|
setUpdateAvailable(!!hasUpdate);
|
|
760295
760295
|
if (hasUpdate) {
|
|
760296
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.
|
|
760296
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.1"} -> ${latest}`);
|
|
760297
760297
|
}
|
|
760298
760298
|
};
|
|
760299
760299
|
$2[0] = t1;
|
|
@@ -760327,7 +760327,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
760327
760327
|
wrap: "truncate",
|
|
760328
760328
|
children: [
|
|
760329
760329
|
"currentVersion: ",
|
|
760330
|
-
"1.81.
|
|
760330
|
+
"1.81.1"
|
|
760331
760331
|
]
|
|
760332
760332
|
}, undefined, true, undefined, this);
|
|
760333
760333
|
$2[3] = verbose;
|
|
@@ -771180,7 +771180,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
771180
771180
|
project_dir: getOriginalCwd(),
|
|
771181
771181
|
added_dirs: addedDirs
|
|
771182
771182
|
},
|
|
771183
|
-
version: "1.81.
|
|
771183
|
+
version: "1.81.1",
|
|
771184
771184
|
output_style: {
|
|
771185
771185
|
name: outputStyleName
|
|
771186
771186
|
},
|
|
@@ -771315,7 +771315,7 @@ function StatusLineInner({
|
|
|
771315
771315
|
const attention = customStatusError ?? taskAttention;
|
|
771316
771316
|
const terminalSize = React133.useContext(TerminalSizeContext);
|
|
771317
771317
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
771318
|
-
version: "1.81.
|
|
771318
|
+
version: "1.81.1",
|
|
771319
771319
|
providerLabel: providerRuntime.providerLabel,
|
|
771320
771320
|
authMode: providerRuntime.authLabel,
|
|
771321
771321
|
model: renderModelName(mainLoopModel) || providerRuntime.model || "",
|
|
@@ -783570,7 +783570,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
783570
783570
|
} catch {}
|
|
783571
783571
|
const data = {
|
|
783572
783572
|
trigger: trigger2,
|
|
783573
|
-
version: "1.81.
|
|
783573
|
+
version: "1.81.1",
|
|
783574
783574
|
platform: process.platform,
|
|
783575
783575
|
transcript,
|
|
783576
783576
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -795939,7 +795939,7 @@ function WelcomeV2() {
|
|
|
795939
795939
|
dimColor: true,
|
|
795940
795940
|
children: [
|
|
795941
795941
|
"v",
|
|
795942
|
-
"1.81.
|
|
795942
|
+
"1.81.1"
|
|
795943
795943
|
]
|
|
795944
795944
|
}, undefined, true, undefined, this)
|
|
795945
795945
|
]
|
|
@@ -797199,7 +797199,7 @@ function completeOnboarding() {
|
|
|
797199
797199
|
saveGlobalConfig((current) => ({
|
|
797200
797200
|
...current,
|
|
797201
797201
|
hasCompletedOnboarding: true,
|
|
797202
|
-
lastOnboardingVersion: "1.81.
|
|
797202
|
+
lastOnboardingVersion: "1.81.1"
|
|
797203
797203
|
}));
|
|
797204
797204
|
}
|
|
797205
797205
|
function showDialog(root2, renderer) {
|
|
@@ -802345,7 +802345,7 @@ function appendToLog(path28, message) {
|
|
|
802345
802345
|
cwd: getFsImplementation().cwd(),
|
|
802346
802346
|
userType: process.env.USER_TYPE,
|
|
802347
802347
|
sessionId: getSessionId(),
|
|
802348
|
-
version: "1.81.
|
|
802348
|
+
version: "1.81.1"
|
|
802349
802349
|
};
|
|
802350
802350
|
getLogWriter(path28).write(messageWithTimestamp);
|
|
802351
802351
|
}
|
|
@@ -806509,8 +806509,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
806509
806509
|
}
|
|
806510
806510
|
async function checkEnvLessBridgeMinVersion() {
|
|
806511
806511
|
const cfg = await getEnvLessBridgeConfig();
|
|
806512
|
-
if (cfg.min_version && lt("1.81.
|
|
806513
|
-
return `Your version of UR (${"1.81.
|
|
806512
|
+
if (cfg.min_version && lt("1.81.1", cfg.min_version)) {
|
|
806513
|
+
return `Your version of UR (${"1.81.1"}) is too old for Remote Control.
|
|
806514
806514
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
806515
806515
|
}
|
|
806516
806516
|
return null;
|
|
@@ -806984,7 +806984,7 @@ async function initBridgeCore(params) {
|
|
|
806984
806984
|
const rawApi = createBridgeApiClient({
|
|
806985
806985
|
baseUrl,
|
|
806986
806986
|
getAccessToken,
|
|
806987
|
-
runnerVersion: "1.81.
|
|
806987
|
+
runnerVersion: "1.81.1",
|
|
806988
806988
|
onDebug: logForDebugging,
|
|
806989
806989
|
onAuth401,
|
|
806990
806990
|
getTrustedDeviceToken
|
|
@@ -816457,7 +816457,7 @@ function getAgUiCapabilities() {
|
|
|
816457
816457
|
name: "UR-Nexus",
|
|
816458
816458
|
type: "ur-nexus",
|
|
816459
816459
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
816460
|
-
version: "1.81.
|
|
816460
|
+
version: "1.81.1",
|
|
816461
816461
|
provider: "UR",
|
|
816462
816462
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
816463
816463
|
},
|
|
@@ -817684,7 +817684,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
817684
817684
|
};
|
|
817685
817685
|
const server2 = new Server({
|
|
817686
817686
|
name: "ur-nexus",
|
|
817687
|
-
version: "1.81.
|
|
817687
|
+
version: "1.81.1"
|
|
817688
817688
|
}, {
|
|
817689
817689
|
capabilities: {
|
|
817690
817690
|
tools: {}
|
|
@@ -818888,7 +818888,7 @@ function thrownResponse(error40) {
|
|
|
818888
818888
|
}
|
|
818889
818889
|
async function createUrMcp2026Runtime(options5) {
|
|
818890
818890
|
const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
|
|
818891
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.
|
|
818891
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.1" }, { capabilities: {} });
|
|
818892
818892
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
818893
818893
|
try {
|
|
818894
818894
|
await server2.connect(serverTransport);
|
|
@@ -818899,7 +818899,7 @@ async function createUrMcp2026Runtime(options5) {
|
|
|
818899
818899
|
}
|
|
818900
818900
|
const runtime2 = new Mcp2026Runtime({
|
|
818901
818901
|
cwd: options5.cwd,
|
|
818902
|
-
version: "1.81.
|
|
818902
|
+
version: "1.81.1",
|
|
818903
818903
|
backend: {
|
|
818904
818904
|
listTools: async () => {
|
|
818905
818905
|
const listed = await client2.listTools();
|
|
@@ -821634,7 +821634,7 @@ async function update() {
|
|
|
821634
821634
|
logEvent("tengu_update_check", {});
|
|
821635
821635
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
821636
821636
|
const result = await checkUpgradeStatus({
|
|
821637
|
-
currentVersion: "1.81.
|
|
821637
|
+
currentVersion: "1.81.1",
|
|
821638
821638
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
821639
821639
|
installationType: diagnostic2.installationType,
|
|
821640
821640
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -822962,7 +822962,7 @@ ${customInstructions}` : customInstructions;
|
|
|
822962
822962
|
}
|
|
822963
822963
|
}
|
|
822964
822964
|
logForDiagnosticsNoPII("info", "started", {
|
|
822965
|
-
version: "1.81.
|
|
822965
|
+
version: "1.81.1",
|
|
822966
822966
|
is_native_binary: isInBundledMode()
|
|
822967
822967
|
});
|
|
822968
822968
|
registerCleanup(async () => {
|
|
@@ -823749,7 +823749,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
823749
823749
|
pendingHookMessages
|
|
823750
823750
|
}, renderAndRun);
|
|
823751
823751
|
}
|
|
823752
|
-
}).version("1.81.
|
|
823752
|
+
}).version("1.81.1 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
823753
823753
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
823754
823754
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
823755
823755
|
if (canUserConfigureAdvisor()) {
|
|
@@ -824876,7 +824876,7 @@ if (false) {}
|
|
|
824876
824876
|
async function main2() {
|
|
824877
824877
|
const args = process.argv.slice(2);
|
|
824878
824878
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
824879
|
-
console.log(`${"1.81.
|
|
824879
|
+
console.log(`${"1.81.1"} (UR-Nexus)`);
|
|
824880
824880
|
return;
|
|
824881
824881
|
}
|
|
824882
824882
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|
package/docs/REDTEAM.md
CHANGED
|
@@ -61,4 +61,10 @@ Install/enable it from the official marketplace if it is not already enabled, ac
|
|
|
61
61
|
/reverse-skills:start <research task>
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
+
The command preflights UR's visible task lifecycle for multi-outcome or
|
|
65
|
+
workspace-changing work. It creates an actionable board before Bash, edits,
|
|
66
|
+
writes, or delegation, so `tasks.requireBeforeChanges` remains enabled without
|
|
67
|
+
surfacing a failed-first `TaskListRequired` tool call. Direct specialist-skill
|
|
68
|
+
invocations follow the same contract.
|
|
69
|
+
|
|
64
70
|
Review [the plugin README](../plugins/core/reverse-skills/README.md) for its capability map and provenance.
|
package/docs/VALIDATION.md
CHANGED
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.81.
|
|
48
|
+
<p class="eyebrow">Version 1.81.1</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.81.
|
|
5
|
+
"version": "1.81.1",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED
|
@@ -12,6 +12,12 @@ The integration is UR-only:
|
|
|
12
12
|
|
|
13
13
|
Start with `/reverse-skills:start <task>` (or invoke the `reverse-skills:reverse-skill-router` skill directly). The router selects one or more specialist skills covering binary reverse engineering, exploitation, application testing, malware/EDR research, platform and radio security, forensics, LLM security, and evidence/reporting.
|
|
14
14
|
|
|
15
|
+
For multi-outcome or workspace-changing research, the command and every
|
|
16
|
+
specialist skill expose UR's task tools and require an actionable task board
|
|
17
|
+
before Bash, edits, writes, or delegation. This keeps the normal
|
|
18
|
+
`tasks.requireBeforeChanges` protection enabled without a failed-first
|
|
19
|
+
`TaskListRequired` retry.
|
|
20
|
+
|
|
15
21
|
## Provenance
|
|
16
22
|
|
|
17
23
|
The adaptation is based on upstream commit `289c24b1617411a16b1e8d3032cce0f2fe52911d` (MIT). UR excludes the upstream GPL CTF orchestrator, external AGPL services, client-specific bootstrap scripts, field journals, and machine-specific configuration. See `NOTICE` and `UPSTREAM-LICENSE`.
|
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
These rules apply to every skill in this plugin.
|
|
4
4
|
|
|
5
5
|
1. Confirm UR redteam mode is active. Plugin gating normally guarantees this; never suggest bypassing the gate.
|
|
6
|
-
2.
|
|
7
|
-
3.
|
|
8
|
-
4.
|
|
9
|
-
5.
|
|
10
|
-
6.
|
|
11
|
-
7.
|
|
12
|
-
8.
|
|
6
|
+
2. Keep UR's task lifecycle ahead of mutations. Read-only inspection may happen first. If the request has multiple outcomes, sequencing, verification/reporting deliverables, or any workspace-changing action, call `TaskList` and create 2–8 concrete outcome tasks with `TaskCreate` when no actionable board exists. Mark the active task `in_progress` before Bash/Edit/Write or delegation, and update every task through completion, failure, or an explicit skip. Never wait for a `TaskListRequired` rejection and never disable the task gate as a workflow shortcut.
|
|
7
|
+
3. Separate offline research from target operations. Reading, decompiling, documenting, and authoring local research artifacts may proceed under normal file/tool permissions.
|
|
8
|
+
4. Before network access, sample execution, exploitation, credential testing, radio transmission, device mutation, or any other target operation, inspect `/scope show`. Require a scope approved in the current UR session. Mode activation and warning acceptance are not target authorization.
|
|
9
|
+
5. Use only the hosts, ports, tools, and intensity recorded in scope. Stop when a discovered pivot or target is outside it; ask the user to update and reapprove scope.
|
|
10
|
+
6. Continue to honor UR permission prompts, sandboxing, secrets handling, action-specific confirmations, and task tracking. Never weaken these controls or silently elevate privileges.
|
|
11
|
+
7. Prefer reproducible case directories, hashes, timestamps, commands, raw evidence, and findings that distinguish observation from inference.
|
|
12
|
+
8. Do not auto-install tools or alter another AI client's configuration. If a dependency is absent, report it and propose an UR-native installation or MCP setup for explicit approval.
|
|
13
|
+
9. The selected model/provider is independent. If it declines a request, state that accurately; do not imply UR redteam mode can override provider policy.
|
|
13
14
|
|
|
14
15
|
Recommended case layout:
|
|
15
16
|
|
|
@@ -3,8 +3,18 @@ description: "Route an authorized security-research task into the UR-exclusive R
|
|
|
3
3
|
argument-hint: "<research task>"
|
|
4
4
|
allowed-tools:
|
|
5
5
|
- "Skill"
|
|
6
|
+
- "TaskCreate"
|
|
7
|
+
- "TaskList"
|
|
8
|
+
- "TaskUpdate"
|
|
6
9
|
---
|
|
7
10
|
|
|
11
|
+
Before invoking another skill or using Bash, Edit, or Write, inspect the request
|
|
12
|
+
for multiple outcomes, sequencing, verification/reporting deliverables, or any
|
|
13
|
+
workspace-changing action. When any of those apply, call `TaskList`, create
|
|
14
|
+
2–8 concrete outcome tasks with `TaskCreate` if no actionable board exists,
|
|
15
|
+
and mark the first unblocked task in progress with `TaskUpdate`. Do not wait for
|
|
16
|
+
`TaskListRequired`, and do not disable UR's task gate to bypass this preflight.
|
|
17
|
+
|
|
8
18
|
Invoke the `reverse-skills:reverse-skill-router` skill with the user's arguments.
|
|
9
19
|
Follow its UR redteam execution contract, select the smallest applicable set of
|
|
10
20
|
specialist skills, and begin with local/passive triage. Do not interpret redteam
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: application-redteam
|
|
3
3
|
description: Conduct authorized application and infrastructure research across APIs, source code, web, cloud/Kubernetes, databases, identity federation, email, supply chain, browser automation, and thick clients.
|
|
4
|
-
allowed-tools: Read Grep Glob Bash Edit Write WebFetch WebSearch
|
|
4
|
+
allowed-tools: Read Grep Glob Bash Edit Write WebFetch WebSearch TaskCreate TaskList TaskUpdate
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Application red-team research
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: binary-reverse
|
|
3
3
|
description: Reverse compiled, managed, packed, obfuscated, browser, bytecode, VM, or protocol artifacts using static and dynamic analysis. Covers IDA, Ghidra, radare2, .NET, Go/Rust, macOS, JavaScript, browser extensions, binary diffing, and protocol reconstruction.
|
|
4
|
-
allowed-tools: Read Grep Glob Bash Edit Write
|
|
4
|
+
allowed-tools: Read Grep Glob Bash Edit Write TaskCreate TaskList TaskUpdate
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Binary reverse engineering
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: exploit-development
|
|
3
3
|
description: Turn a known vulnerability into a reproducible PoC or reliable authorized exploit, including stack/heap/kernel pwn, patch-diff analysis, exploit chains, fuzzing, and remote-environment stabilization.
|
|
4
|
-
allowed-tools: Read Grep Glob Bash Edit Write
|
|
4
|
+
allowed-tools: Read Grep Glob Bash Edit Write TaskCreate TaskList TaskUpdate
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Exploit development
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: forensics-threat-hunting
|
|
3
3
|
description: Perform disk, memory, packet, and log forensics; build timelines and IOCs; create YARA/Sigma detections; and conduct evidence-driven threat hunts.
|
|
4
|
-
allowed-tools: Read Grep Glob Bash Edit Write
|
|
4
|
+
allowed-tools: Read Grep Glob Bash Edit Write TaskCreate TaskList TaskUpdate
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Forensics and threat hunting
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: llm-agent-security
|
|
3
3
|
description: Test LLM and agent systems for prompt injection, tool abuse, memory poisoning, data leakage, unsafe autonomy, identity failures, and model or skill supply-chain risks.
|
|
4
|
-
allowed-tools: Read Grep Glob Bash Edit Write WebFetch WebSearch
|
|
4
|
+
allowed-tools: Read Grep Glob Bash Edit Write WebFetch WebSearch TaskCreate TaskList TaskUpdate
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# LLM and agent security
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: malware-edr-research
|
|
3
3
|
description: Analyze, modify, build, and test malware-like samples, implants, anti-analysis behavior, and EDR/AV telemetry or evasion in authorized research environments.
|
|
4
|
-
allowed-tools: Read Grep Glob Bash Edit Write
|
|
4
|
+
allowed-tools: Read Grep Glob Bash Edit Write TaskCreate TaskList TaskUpdate
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Malware and EDR research
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: platform-radio-security
|
|
3
3
|
description: Research mobile apps, firmware, embedded hardware, OT/ICS systems, Wi-Fi, wireless, and SDR/radio targets in owned or explicitly authorized labs.
|
|
4
|
-
allowed-tools: Read Grep Glob Bash Edit Write
|
|
4
|
+
allowed-tools: Read Grep Glob Bash Edit Write TaskCreate TaskList TaskUpdate
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Platform, device, and radio security
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: research-evidence
|
|
3
3
|
description: Establish scope, review case integrity, preserve evidence-to-finding traceability, generate security diagrams, and produce reproducible technical reports.
|
|
4
|
-
allowed-tools: Read Grep Glob Bash Edit Write
|
|
4
|
+
allowed-tools: Read Grep Glob Bash Edit Write TaskCreate TaskList TaskUpdate
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Research evidence and reporting
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: reverse-skill-router
|
|
3
3
|
description: Route an authorized reverse engineering or red-team research task to the correct UR specialist skill. Use when a task spans domains or its best entrypoint is unclear.
|
|
4
|
-
allowed-tools: Read Grep Glob Bash
|
|
4
|
+
allowed-tools: Read Grep Glob Bash Skill TaskCreate TaskList TaskUpdate
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Reverse Skills router
|