ur-agent 1.76.10 → 1.77.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
CHANGED
|
@@ -1,5 +1,46 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.77.1
|
|
4
|
+
|
|
5
|
+
- Finishing a task no longer produces a long write-up. Both output-efficiency
|
|
6
|
+
sections said "be concise" but neither addressed what actually ran long, so
|
|
7
|
+
the rules are now specific: never paste code or file contents already written
|
|
8
|
+
to disk (cite `file_path:line`), report an audit or review as its findings
|
|
9
|
+
one line each, no closing recap of the conversation, and long explanations
|
|
10
|
+
only when the user asks for one. Subagent reports carry the same rule, since
|
|
11
|
+
their output is relayed verbatim.
|
|
12
|
+
|
|
13
|
+
## 1.77.0
|
|
14
|
+
|
|
15
|
+
- Edit no longer demands a prior Read. A matching `old_string` is checked
|
|
16
|
+
against the bytes on disk, which is exactly what "has this been read?" and
|
|
17
|
+
"has it changed since?" were asking — and stronger, since a stale snapshot
|
|
18
|
+
cannot survive a match against fresh content. The verified content is
|
|
19
|
+
recorded so the write path and later staleness checks work from it. This
|
|
20
|
+
removes a full model round trip from the most common mutating call. A
|
|
21
|
+
genuinely absent `old_string` is still refused, and now says the file has not
|
|
22
|
+
been read so the model knows to read it.
|
|
23
|
+
- Write no longer refuses an unread existing file. It reads and records the
|
|
24
|
+
file itself — one local read instead of a round trip spent asking for content
|
|
25
|
+
nobody needed to see — and the "modified since read" check is unchanged, now
|
|
26
|
+
working from that recorded baseline.
|
|
27
|
+
- Bash no longer issues a `mkdir` syscall on the critical path of every
|
|
28
|
+
command. The task output directory is process-wide and cannot change after
|
|
29
|
+
the first one, so it is created once; a failure is not cached, so the next
|
|
30
|
+
command retries.
|
|
31
|
+
|
|
32
|
+
## 1.76.11
|
|
33
|
+
|
|
34
|
+
- AskUserQuestion recovers the payload shape where a model flattens one
|
|
35
|
+
question's choices straight into `questions`, so six options arrived as six
|
|
36
|
+
question objects carrying a label and a description and no question text.
|
|
37
|
+
Every entry reported "question must be a non-empty string" and "options must
|
|
38
|
+
be an array". The array is folded back into the options of a single question
|
|
39
|
+
using the question text the payload already carries. A genuine
|
|
40
|
+
multi-question payload is never retargeted, and with no question text
|
|
41
|
+
anywhere the payload is still reported rather than given an invented
|
|
42
|
+
question.
|
|
43
|
+
|
|
3
44
|
## 1.76.10
|
|
4
45
|
|
|
5
46
|
- `npm publish` builds before it validates. `prepack` ran `release:check`
|
package/dist/cli.js
CHANGED
|
@@ -87722,6 +87722,41 @@ function coerceQuestionValueToOptions(question) {
|
|
|
87722
87722
|
}
|
|
87723
87723
|
return null;
|
|
87724
87724
|
}
|
|
87725
|
+
function looksLikeOptionEntry(value) {
|
|
87726
|
+
if (typeof value === "string")
|
|
87727
|
+
return value.trim().length > 0;
|
|
87728
|
+
const entry = objectValue(value);
|
|
87729
|
+
if (!entry)
|
|
87730
|
+
return false;
|
|
87731
|
+
for (const key of Object.keys(entry)) {
|
|
87732
|
+
if (RESERVED_QUESTION_KEYS.has(key))
|
|
87733
|
+
return false;
|
|
87734
|
+
if (RESERVED_QUESTION_OPTION_KEYS.has(key.toLowerCase()))
|
|
87735
|
+
return false;
|
|
87736
|
+
}
|
|
87737
|
+
return typeof entry.label === "string" || typeof entry.value === "string" || typeof entry.description === "string";
|
|
87738
|
+
}
|
|
87739
|
+
function recoverFlattenedOptions(input, entries) {
|
|
87740
|
+
if (entries.length < 2 || !entries.every(looksLikeOptionEntry))
|
|
87741
|
+
return null;
|
|
87742
|
+
const questionText = stringField(input, [
|
|
87743
|
+
"question",
|
|
87744
|
+
"questionText",
|
|
87745
|
+
"question_text",
|
|
87746
|
+
"q",
|
|
87747
|
+
"query",
|
|
87748
|
+
"prompt",
|
|
87749
|
+
"text",
|
|
87750
|
+
"title",
|
|
87751
|
+
"message",
|
|
87752
|
+
"body",
|
|
87753
|
+
"goal",
|
|
87754
|
+
"header"
|
|
87755
|
+
]);
|
|
87756
|
+
if (!questionText)
|
|
87757
|
+
return null;
|
|
87758
|
+
return normalizeQuestionInput({ ...input, question: questionText, options: entries }, 0);
|
|
87759
|
+
}
|
|
87725
87760
|
function normalizeQuestionInput(value, index2) {
|
|
87726
87761
|
const question = objectValue(value);
|
|
87727
87762
|
if (!question)
|
|
@@ -87810,6 +87845,13 @@ function normalizeAskUserQuestionInput(value) {
|
|
|
87810
87845
|
...commonFields
|
|
87811
87846
|
};
|
|
87812
87847
|
}
|
|
87848
|
+
const recovered = recoverFlattenedOptions(input, input.questions);
|
|
87849
|
+
if (recovered && typeof recovered === "object") {
|
|
87850
|
+
return {
|
|
87851
|
+
questions: dedupeQuestions([recovered]),
|
|
87852
|
+
...commonFields
|
|
87853
|
+
};
|
|
87854
|
+
}
|
|
87813
87855
|
return input;
|
|
87814
87856
|
}
|
|
87815
87857
|
if (optionsField(input) !== null) {
|
|
@@ -107500,7 +107542,7 @@ var init_auth = __esm(() => {
|
|
|
107500
107542
|
|
|
107501
107543
|
// src/utils/userAgent.ts
|
|
107502
107544
|
function getURCodeUserAgent() {
|
|
107503
|
-
return `ur/${"1.
|
|
107545
|
+
return `ur/${"1.77.1"}`;
|
|
107504
107546
|
}
|
|
107505
107547
|
|
|
107506
107548
|
// src/utils/workloadContext.ts
|
|
@@ -107522,7 +107564,7 @@ function getUserAgent() {
|
|
|
107522
107564
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
107523
107565
|
const workload = getWorkload();
|
|
107524
107566
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
107525
|
-
return `ur-cli/${"1.
|
|
107567
|
+
return `ur-cli/${"1.77.1"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
107526
107568
|
}
|
|
107527
107569
|
function getMCPUserAgent() {
|
|
107528
107570
|
const parts = [];
|
|
@@ -107536,7 +107578,7 @@ function getMCPUserAgent() {
|
|
|
107536
107578
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
107537
107579
|
}
|
|
107538
107580
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
107539
|
-
return `ur/${"1.
|
|
107581
|
+
return `ur/${"1.77.1"}${suffix}`;
|
|
107540
107582
|
}
|
|
107541
107583
|
function getWebFetchUserAgent() {
|
|
107542
107584
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -107674,7 +107716,7 @@ var init_user = __esm(() => {
|
|
|
107674
107716
|
deviceId,
|
|
107675
107717
|
sessionId: getSessionId(),
|
|
107676
107718
|
email: getEmail(),
|
|
107677
|
-
appVersion: "1.
|
|
107719
|
+
appVersion: "1.77.1",
|
|
107678
107720
|
platform: getHostPlatformForAnalytics(),
|
|
107679
107721
|
organizationUuid,
|
|
107680
107722
|
accountUuid,
|
|
@@ -115561,7 +115603,7 @@ var init_metadata = __esm(() => {
|
|
|
115561
115603
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
115562
115604
|
WHITESPACE_REGEX = /\s+/;
|
|
115563
115605
|
getVersionBase = memoize_default(() => {
|
|
115564
|
-
const match = "1.
|
|
115606
|
+
const match = "1.77.1".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
115565
115607
|
return match ? match[0] : undefined;
|
|
115566
115608
|
});
|
|
115567
115609
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -115601,7 +115643,7 @@ var init_metadata = __esm(() => {
|
|
|
115601
115643
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
115602
115644
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
115603
115645
|
isURAiAuth: isURAISubscriber(),
|
|
115604
|
-
version: "1.
|
|
115646
|
+
version: "1.77.1",
|
|
115605
115647
|
versionBase: getVersionBase(),
|
|
115606
115648
|
buildTime: "",
|
|
115607
115649
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -116271,7 +116313,7 @@ function initialize1PEventLogging() {
|
|
|
116271
116313
|
const platform2 = getPlatform();
|
|
116272
116314
|
const attributes = {
|
|
116273
116315
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
116274
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.
|
|
116316
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.77.1"
|
|
116275
116317
|
};
|
|
116276
116318
|
if (platform2 === "wsl") {
|
|
116277
116319
|
const wslVersion = getWslVersion();
|
|
@@ -116299,7 +116341,7 @@ function initialize1PEventLogging() {
|
|
|
116299
116341
|
})
|
|
116300
116342
|
]
|
|
116301
116343
|
});
|
|
116302
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.
|
|
116344
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.77.1");
|
|
116303
116345
|
}
|
|
116304
116346
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
116305
116347
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -126081,7 +126123,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
|
|
|
126081
126123
|
function formatA2AAgentCard(options = {}, pretty = true) {
|
|
126082
126124
|
return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
|
|
126083
126125
|
}
|
|
126084
|
-
var urVersion = "1.
|
|
126126
|
+
var urVersion = "1.77.1", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
|
|
126085
126127
|
var init_trends = __esm(() => {
|
|
126086
126128
|
init_a2aCardSignature();
|
|
126087
126129
|
coverage = [
|
|
@@ -128884,7 +128926,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
128884
128926
|
if (!isAttributionHeaderEnabled()) {
|
|
128885
128927
|
return "";
|
|
128886
128928
|
}
|
|
128887
|
-
const version2 = `${"1.
|
|
128929
|
+
const version2 = `${"1.77.1"}.${fingerprint}`;
|
|
128888
128930
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
128889
128931
|
const cch = "";
|
|
128890
128932
|
const workload = getWorkload();
|
|
@@ -156883,7 +156925,7 @@ var init_projectSafety = __esm(() => {
|
|
|
156883
156925
|
function getInstruments() {
|
|
156884
156926
|
if (instruments)
|
|
156885
156927
|
return instruments;
|
|
156886
|
-
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.
|
|
156928
|
+
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.77.1");
|
|
156887
156929
|
instruments = {
|
|
156888
156930
|
operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
|
|
156889
156931
|
description: "GenAI operation duration.",
|
|
@@ -156981,7 +157023,7 @@ function genAiAgentAttributes() {
|
|
|
156981
157023
|
"gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
|
|
156982
157024
|
"gen_ai.provider.name": "ur",
|
|
156983
157025
|
"gen_ai.agent.name": "UR-Nexus",
|
|
156984
|
-
"gen_ai.agent.version": "1.
|
|
157026
|
+
"gen_ai.agent.version": "1.77.1"
|
|
156985
157027
|
};
|
|
156986
157028
|
}
|
|
156987
157029
|
function genAiWorkflowAttributes(workflowName) {
|
|
@@ -156997,7 +157039,7 @@ function genAiWorkflowAttributes(workflowName) {
|
|
|
156997
157039
|
function startGenAiWorkflowSpan(workflowName) {
|
|
156998
157040
|
const attributes = genAiWorkflowAttributes(workflowName);
|
|
156999
157041
|
const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
|
|
157000
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.
|
|
157042
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.77.1").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
157001
157043
|
}
|
|
157002
157044
|
function endGenAiWorkflowSpan(span, options2 = {}) {
|
|
157003
157045
|
try {
|
|
@@ -157035,7 +157077,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
|
|
|
157035
157077
|
if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
|
|
157036
157078
|
attributes["gen_ai.memory.record.count"] = options2.recordCount;
|
|
157037
157079
|
}
|
|
157038
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.
|
|
157080
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.77.1").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
157039
157081
|
}
|
|
157040
157082
|
function endGenAiMemorySpan(span, options2 = {}) {
|
|
157041
157083
|
try {
|
|
@@ -250683,7 +250725,7 @@ function getTelemetryAttributes() {
|
|
|
250683
250725
|
attributes["session.id"] = sessionId;
|
|
250684
250726
|
}
|
|
250685
250727
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
250686
|
-
attributes["app.version"] = "1.
|
|
250728
|
+
attributes["app.version"] = "1.77.1";
|
|
250687
250729
|
}
|
|
250688
250730
|
const oauthAccount = getOauthAccountInfo();
|
|
250689
250731
|
if (oauthAccount) {
|
|
@@ -297190,7 +297232,7 @@ function getInstallationEnv() {
|
|
|
297190
297232
|
return;
|
|
297191
297233
|
}
|
|
297192
297234
|
function getURCodeVersion() {
|
|
297193
|
-
return "1.
|
|
297235
|
+
return "1.77.1";
|
|
297194
297236
|
}
|
|
297195
297237
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
297196
297238
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -304521,7 +304563,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
304521
304563
|
const client2 = new Client({
|
|
304522
304564
|
name: "ur",
|
|
304523
304565
|
title: "UR",
|
|
304524
|
-
version: "1.
|
|
304566
|
+
version: "1.77.1",
|
|
304525
304567
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
304526
304568
|
websiteUrl: PRODUCT_URL
|
|
304527
304569
|
}, {
|
|
@@ -304881,7 +304923,7 @@ var init_client5 = __esm(() => {
|
|
|
304881
304923
|
const client2 = new Client({
|
|
304882
304924
|
name: "ur",
|
|
304883
304925
|
title: "UR",
|
|
304884
|
-
version: "1.
|
|
304926
|
+
version: "1.77.1",
|
|
304885
304927
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
304886
304928
|
websiteUrl: PRODUCT_URL
|
|
304887
304929
|
}, {
|
|
@@ -317434,7 +317476,7 @@ async function createRuntime() {
|
|
|
317434
317476
|
bootstrapTelemetry();
|
|
317435
317477
|
const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
|
|
317436
317478
|
[import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
|
|
317437
|
-
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.
|
|
317479
|
+
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.77.1"
|
|
317438
317480
|
}));
|
|
317439
317481
|
const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
|
|
317440
317482
|
resource,
|
|
@@ -317467,11 +317509,11 @@ async function createRuntime() {
|
|
|
317467
317509
|
setMeterProvider(meterProvider);
|
|
317468
317510
|
setLoggerProvider(loggerProvider);
|
|
317469
317511
|
if (meterProvider) {
|
|
317470
|
-
const meter = meterProvider.getMeter("ur-agent", "1.
|
|
317512
|
+
const meter = meterProvider.getMeter("ur-agent", "1.77.1");
|
|
317471
317513
|
setMeter(meter, (name, options2) => meter.createCounter(name, options2));
|
|
317472
317514
|
}
|
|
317473
317515
|
if (loggerProvider) {
|
|
317474
|
-
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.
|
|
317516
|
+
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.77.1"));
|
|
317475
317517
|
}
|
|
317476
317518
|
if (!cleanupRegistered2) {
|
|
317477
317519
|
cleanupRegistered2 = true;
|
|
@@ -318133,9 +318175,9 @@ async function assertMinVersion() {
|
|
|
318133
318175
|
if (false) {}
|
|
318134
318176
|
try {
|
|
318135
318177
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
318136
|
-
if (versionConfig.minVersion && lt("1.
|
|
318178
|
+
if (versionConfig.minVersion && lt("1.77.1", versionConfig.minVersion)) {
|
|
318137
318179
|
console.error(`
|
|
318138
|
-
It looks like your version of UR (${"1.
|
|
318180
|
+
It looks like your version of UR (${"1.77.1"}) needs an update.
|
|
318139
318181
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
318140
318182
|
|
|
318141
318183
|
To update, please run:
|
|
@@ -318351,7 +318393,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
318351
318393
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
318352
318394
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
318353
318395
|
pid: process.pid,
|
|
318354
|
-
currentVersion: "1.
|
|
318396
|
+
currentVersion: "1.77.1"
|
|
318355
318397
|
});
|
|
318356
318398
|
return "in_progress";
|
|
318357
318399
|
}
|
|
@@ -318360,7 +318402,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
318360
318402
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
318361
318403
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
318362
318404
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
318363
|
-
currentVersion: "1.
|
|
318405
|
+
currentVersion: "1.77.1"
|
|
318364
318406
|
});
|
|
318365
318407
|
console.error(`
|
|
318366
318408
|
Error: Windows NPM detected in WSL
|
|
@@ -318895,7 +318937,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
318895
318937
|
}
|
|
318896
318938
|
async function getDoctorDiagnostic() {
|
|
318897
318939
|
const installationType = await getCurrentInstallationType();
|
|
318898
|
-
const version2 = typeof MACRO !== "undefined" ? "1.
|
|
318940
|
+
const version2 = typeof MACRO !== "undefined" ? "1.77.1" : "unknown";
|
|
318899
318941
|
const installationPath = await getInstallationPath();
|
|
318900
318942
|
const invokedBinary = getInvokedBinary();
|
|
318901
318943
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -319830,8 +319872,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
319830
319872
|
const maxVersion = await getMaxVersion();
|
|
319831
319873
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
319832
319874
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
319833
|
-
if (gte("1.
|
|
319834
|
-
logForDebugging(`Native installer: current version ${"1.
|
|
319875
|
+
if (gte("1.77.1", maxVersion)) {
|
|
319876
|
+
logForDebugging(`Native installer: current version ${"1.77.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
319835
319877
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
319836
319878
|
latency_ms: Date.now() - startTime,
|
|
319837
319879
|
max_version: maxVersion,
|
|
@@ -319842,7 +319884,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
319842
319884
|
version2 = maxVersion;
|
|
319843
319885
|
}
|
|
319844
319886
|
}
|
|
319845
|
-
if (!forceReinstall && version2 === "1.
|
|
319887
|
+
if (!forceReinstall && version2 === "1.77.1" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
319846
319888
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
319847
319889
|
logEvent("tengu_native_update_complete", {
|
|
319848
319890
|
latency_ms: Date.now() - startTime,
|
|
@@ -354013,6 +354055,15 @@ async function getShellConfigImpl() {
|
|
|
354013
354055
|
const provider = await createBashShellProvider(binShell);
|
|
354014
354056
|
return { provider };
|
|
354015
354057
|
}
|
|
354058
|
+
function ensureTaskOutputDir() {
|
|
354059
|
+
taskOutputDirReady ??= mkdir20(getTaskOutputDir(), { recursive: true }).then(() => {
|
|
354060
|
+
return;
|
|
354061
|
+
}, (error40) => {
|
|
354062
|
+
taskOutputDirReady = undefined;
|
|
354063
|
+
throw error40;
|
|
354064
|
+
});
|
|
354065
|
+
return taskOutputDirReady;
|
|
354066
|
+
}
|
|
354016
354067
|
async function exec3(command, abortSignal, shellType, options2) {
|
|
354017
354068
|
const {
|
|
354018
354069
|
timeout,
|
|
@@ -354069,7 +354120,7 @@ async function exec3(command, abortSignal, shellType, options2) {
|
|
|
354069
354120
|
const usePipeMode = !!onStdout;
|
|
354070
354121
|
const taskId = generateTaskId("local_bash");
|
|
354071
354122
|
const taskOutput = new TaskOutput(taskId, onProgress ?? null, !usePipeMode);
|
|
354072
|
-
await
|
|
354123
|
+
await ensureTaskOutputDir();
|
|
354073
354124
|
let outputHandle;
|
|
354074
354125
|
let stderrHandle;
|
|
354075
354126
|
if (!usePipeMode) {
|
|
@@ -354175,7 +354226,7 @@ function setCwd(path13, relativeTo) {
|
|
|
354175
354226
|
} catch (_error) {}
|
|
354176
354227
|
}
|
|
354177
354228
|
}
|
|
354178
|
-
var DEFAULT_TIMEOUT, getShellConfig, getPsProvider, resolveProvider;
|
|
354229
|
+
var DEFAULT_TIMEOUT, getShellConfig, getPsProvider, resolveProvider, taskOutputDirReady;
|
|
354179
354230
|
var init_Shell = __esm(() => {
|
|
354180
354231
|
init_memoize();
|
|
354181
354232
|
init_analytics();
|
|
@@ -366406,28 +366457,6 @@ var init_FileEditTool = __esm(() => {
|
|
|
366406
366457
|
};
|
|
366407
366458
|
}
|
|
366408
366459
|
const readTimestamp = toolUseContext.readFileState.get(fullFilePath);
|
|
366409
|
-
if (!readTimestamp || readTimestamp.isPartialView) {
|
|
366410
|
-
return {
|
|
366411
|
-
result: false,
|
|
366412
|
-
behavior: "ask",
|
|
366413
|
-
message: "File has not been read yet. Read it first before writing to it.",
|
|
366414
|
-
meta: {
|
|
366415
|
-
isFilePathAbsolute: String(isAbsolute24(file_path))
|
|
366416
|
-
},
|
|
366417
|
-
errorCode: 6
|
|
366418
|
-
};
|
|
366419
|
-
}
|
|
366420
|
-
if (readTimestamp) {
|
|
366421
|
-
const lastWriteTime = getFileModificationTime(fullFilePath);
|
|
366422
|
-
if (lastWriteTime > readTimestamp.timestamp || !fileStateMatchesContent(fileContent, readTimestamp)) {
|
|
366423
|
-
return {
|
|
366424
|
-
result: false,
|
|
366425
|
-
behavior: "ask",
|
|
366426
|
-
message: "File has been modified since read, either by the user or by a linter. Read it again before attempting to write it.",
|
|
366427
|
-
errorCode: 7
|
|
366428
|
-
};
|
|
366429
|
-
}
|
|
366430
|
-
}
|
|
366431
366460
|
const file2 = fileContent;
|
|
366432
366461
|
const editTarget = findEditTarget(file2, old_string);
|
|
366433
366462
|
const actualOldString = editTarget?.actual ?? null;
|
|
@@ -366435,13 +366464,21 @@ var init_FileEditTool = __esm(() => {
|
|
|
366435
366464
|
return {
|
|
366436
366465
|
result: false,
|
|
366437
366466
|
behavior: "ask",
|
|
366438
|
-
message: describeEditMatchFailure(file2, old_string),
|
|
366467
|
+
message: readTimestamp === undefined ? `${describeEditMatchFailure(file2, old_string)} This file has not been read in this session \u2014 read it and copy the target text from the result.` : describeEditMatchFailure(file2, old_string),
|
|
366439
366468
|
meta: {
|
|
366440
366469
|
isFilePathAbsolute: String(isAbsolute24(file_path))
|
|
366441
366470
|
},
|
|
366442
366471
|
errorCode: 8
|
|
366443
366472
|
};
|
|
366444
366473
|
}
|
|
366474
|
+
if (readTimestamp === undefined || readTimestamp.isPartialView || !fileStateMatchesContent(file2, readTimestamp)) {
|
|
366475
|
+
toolUseContext.readFileState.set(fullFilePath, {
|
|
366476
|
+
content: file2,
|
|
366477
|
+
timestamp: getFileModificationTime(fullFilePath),
|
|
366478
|
+
offset: undefined,
|
|
366479
|
+
limit: undefined
|
|
366480
|
+
});
|
|
366481
|
+
}
|
|
366445
366482
|
const matches = file2.split(actualOldString).length - 1;
|
|
366446
366483
|
if (matches > 1 && !replace_all) {
|
|
366447
366484
|
return {
|
|
@@ -366521,7 +366558,7 @@ String: ${old_string}`,
|
|
|
366521
366558
|
if (fileExists) {
|
|
366522
366559
|
const lastWriteTime = getFileModificationTime(absoluteFilePath);
|
|
366523
366560
|
const lastRead = readFileState.get(absoluteFilePath);
|
|
366524
|
-
if (
|
|
366561
|
+
if (lastRead && (lastWriteTime > lastRead.timestamp || !fileStateMatchesContent(originalFileContents, lastRead))) {
|
|
366525
366562
|
throw new Error(FILE_UNEXPECTEDLY_MODIFIED_ERROR);
|
|
366526
366563
|
}
|
|
366527
366564
|
}
|
|
@@ -367236,14 +367273,16 @@ var init_FileWriteTool = __esm(() => {
|
|
|
367236
367273
|
throw e;
|
|
367237
367274
|
}
|
|
367238
367275
|
const readTimestamp = toolUseContext.readFileState.get(fullFilePath);
|
|
367276
|
+
const lastWriteTime = Math.floor(fileMtimeMs);
|
|
367239
367277
|
if (!readTimestamp || readTimestamp.isPartialView) {
|
|
367240
|
-
|
|
367241
|
-
|
|
367242
|
-
|
|
367243
|
-
|
|
367244
|
-
|
|
367278
|
+
toolUseContext.readFileState.set(fullFilePath, {
|
|
367279
|
+
content: readFileSyncCached(fullFilePath),
|
|
367280
|
+
timestamp: lastWriteTime,
|
|
367281
|
+
offset: undefined,
|
|
367282
|
+
limit: undefined
|
|
367283
|
+
});
|
|
367284
|
+
return { result: true };
|
|
367245
367285
|
}
|
|
367246
|
-
const lastWriteTime = Math.floor(fileMtimeMs);
|
|
367247
367286
|
if (lastWriteTime > readTimestamp.timestamp) {
|
|
367248
367287
|
return {
|
|
367249
367288
|
result: false,
|
|
@@ -389549,7 +389588,7 @@ function isAnyTracingEnabled() {
|
|
|
389549
389588
|
return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
|
|
389550
389589
|
}
|
|
389551
389590
|
function getTracer() {
|
|
389552
|
-
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.
|
|
389591
|
+
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.77.1");
|
|
389553
389592
|
}
|
|
389554
389593
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
389555
389594
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -419716,7 +419755,7 @@ function Feedback({
|
|
|
419716
419755
|
platform: env2.platform,
|
|
419717
419756
|
gitRepo: envInfo.isGit,
|
|
419718
419757
|
terminal: env2.terminal,
|
|
419719
|
-
version: "1.
|
|
419758
|
+
version: "1.77.1",
|
|
419720
419759
|
transcript: normalizeMessagesForAPI(messages),
|
|
419721
419760
|
errors: sanitizedErrors,
|
|
419722
419761
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -419908,7 +419947,7 @@ function Feedback({
|
|
|
419908
419947
|
", ",
|
|
419909
419948
|
env2.terminal,
|
|
419910
419949
|
", v",
|
|
419911
|
-
"1.
|
|
419950
|
+
"1.77.1"
|
|
419912
419951
|
]
|
|
419913
419952
|
}, undefined, true, undefined, this)
|
|
419914
419953
|
]
|
|
@@ -420014,7 +420053,7 @@ ${sanitizedDescription}
|
|
|
420014
420053
|
` + `**Environment Info**
|
|
420015
420054
|
` + `- Platform: ${env2.platform}
|
|
420016
420055
|
` + `- Terminal: ${env2.terminal}
|
|
420017
|
-
` + `- Version: ${"1.
|
|
420056
|
+
` + `- Version: ${"1.77.1"}
|
|
420018
420057
|
` + `- Feedback ID: ${feedbackId}
|
|
420019
420058
|
` + `
|
|
420020
420059
|
**Errors**
|
|
@@ -423124,7 +423163,7 @@ function buildPrimarySection() {
|
|
|
423124
423163
|
}, undefined, false, undefined, this);
|
|
423125
423164
|
return [{
|
|
423126
423165
|
label: "Version",
|
|
423127
|
-
value: "1.
|
|
423166
|
+
value: "1.77.1"
|
|
423128
423167
|
}, {
|
|
423129
423168
|
label: "Session name",
|
|
423130
423169
|
value: nameValue
|
|
@@ -426506,7 +426545,7 @@ function Config({
|
|
|
426506
426545
|
}
|
|
426507
426546
|
}, undefined, false, undefined, this)
|
|
426508
426547
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
|
|
426509
|
-
currentVersion: "1.
|
|
426548
|
+
currentVersion: "1.77.1",
|
|
426510
426549
|
onChoice: (choice) => {
|
|
426511
426550
|
setShowSubmenu(null);
|
|
426512
426551
|
setTabsHidden(false);
|
|
@@ -426518,7 +426557,7 @@ function Config({
|
|
|
426518
426557
|
autoUpdatesChannel: "stable"
|
|
426519
426558
|
};
|
|
426520
426559
|
if (choice === "stay") {
|
|
426521
|
-
newSettings.minimumVersion = "1.
|
|
426560
|
+
newSettings.minimumVersion = "1.77.1";
|
|
426522
426561
|
}
|
|
426523
426562
|
updateSettingsForSource("userSettings", newSettings);
|
|
426524
426563
|
setSettingsData((prev_27) => ({
|
|
@@ -434582,7 +434621,7 @@ function HelpV2(t0) {
|
|
|
434582
434621
|
let t6;
|
|
434583
434622
|
if ($2[31] !== tabs) {
|
|
434584
434623
|
t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
|
|
434585
|
-
title: `UR v${"1.
|
|
434624
|
+
title: `UR v${"1.77.1"}`,
|
|
434586
434625
|
color: "professionalBlue",
|
|
434587
434626
|
defaultTab: "general",
|
|
434588
434627
|
children: tabs
|
|
@@ -435515,7 +435554,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
435515
435554
|
async function handleInitialize(options2) {
|
|
435516
435555
|
return {
|
|
435517
435556
|
name: "UR",
|
|
435518
|
-
version: "1.
|
|
435557
|
+
version: "1.77.1",
|
|
435519
435558
|
protocolVersion: "0.1.0",
|
|
435520
435559
|
workspaceRoot: options2.cwd,
|
|
435521
435560
|
capabilities: {
|
|
@@ -452623,7 +452662,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
452623
452662
|
return [];
|
|
452624
452663
|
}
|
|
452625
452664
|
}
|
|
452626
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.
|
|
452665
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.77.1") {
|
|
452627
452666
|
if (process.env.USER_TYPE === "ant") {
|
|
452628
452667
|
const changelog = "";
|
|
452629
452668
|
if (changelog) {
|
|
@@ -452650,7 +452689,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.76.10")
|
|
|
452650
452689
|
releaseNotes
|
|
452651
452690
|
};
|
|
452652
452691
|
}
|
|
452653
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.
|
|
452692
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.77.1") {
|
|
452654
452693
|
if (process.env.USER_TYPE === "ant") {
|
|
452655
452694
|
const changelog = "";
|
|
452656
452695
|
if (changelog) {
|
|
@@ -455516,7 +455555,7 @@ function getRecentActivitySync() {
|
|
|
455516
455555
|
return cachedActivity;
|
|
455517
455556
|
}
|
|
455518
455557
|
function getLogoDisplayData() {
|
|
455519
|
-
const version2 = process.env.DEMO_VERSION ?? "1.
|
|
455558
|
+
const version2 = process.env.DEMO_VERSION ?? "1.77.1";
|
|
455520
455559
|
const serverUrl = getDirectConnectServerUrl();
|
|
455521
455560
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
455522
455561
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -456383,7 +456422,7 @@ function LogoV2() {
|
|
|
456383
456422
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
456384
456423
|
t2 = () => {
|
|
456385
456424
|
const currentConfig2 = getGlobalConfig();
|
|
456386
|
-
if (currentConfig2.lastReleaseNotesSeen === "1.
|
|
456425
|
+
if (currentConfig2.lastReleaseNotesSeen === "1.77.1") {
|
|
456387
456426
|
return;
|
|
456388
456427
|
}
|
|
456389
456428
|
saveGlobalConfig(_temp325);
|
|
@@ -457068,12 +457107,12 @@ function LogoV2() {
|
|
|
457068
457107
|
return t41;
|
|
457069
457108
|
}
|
|
457070
457109
|
function _temp325(current) {
|
|
457071
|
-
if (current.lastReleaseNotesSeen === "1.
|
|
457110
|
+
if (current.lastReleaseNotesSeen === "1.77.1") {
|
|
457072
457111
|
return current;
|
|
457073
457112
|
}
|
|
457074
457113
|
return {
|
|
457075
457114
|
...current,
|
|
457076
|
-
lastReleaseNotesSeen: "1.
|
|
457115
|
+
lastReleaseNotesSeen: "1.77.1"
|
|
457077
457116
|
};
|
|
457078
457117
|
}
|
|
457079
457118
|
function _temp241(s_0) {
|
|
@@ -473887,7 +473926,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
473887
473926
|
if (spec.name !== specName) {
|
|
473888
473927
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
473889
473928
|
}
|
|
473890
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.
|
|
473929
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.77.1" : "1.77.1");
|
|
473891
473930
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
473892
473931
|
throw new Error("invalid ur-agent package version");
|
|
473893
473932
|
}
|
|
@@ -474880,7 +474919,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
474880
474919
|
path: ".github/workflows/ur.yml",
|
|
474881
474920
|
root: "project",
|
|
474882
474921
|
content: compileAgenticCiWorkflow("default", {
|
|
474883
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.
|
|
474922
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.77.1" : "1.77.1"
|
|
474884
474923
|
})
|
|
474885
474924
|
},
|
|
474886
474925
|
{
|
|
@@ -474943,7 +474982,7 @@ function value(tokens, flag) {
|
|
|
474943
474982
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
474944
474983
|
}
|
|
474945
474984
|
function cliVersion() {
|
|
474946
|
-
return typeof MACRO !== "undefined" ? "1.
|
|
474985
|
+
return typeof MACRO !== "undefined" ? "1.77.1" : "1.77.1";
|
|
474947
474986
|
}
|
|
474948
474987
|
function workflowPath(cwd2) {
|
|
474949
474988
|
return join159(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -480799,7 +480838,7 @@ function createAcpStdioApp(deps) {
|
|
|
480799
480838
|
}
|
|
480800
480839
|
},
|
|
480801
480840
|
authMethods: [],
|
|
480802
|
-
agentInfo: { name: "UR-Nexus", version: "1.
|
|
480841
|
+
agentInfo: { name: "UR-Nexus", version: "1.77.1" }
|
|
480803
480842
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
480804
480843
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
480805
480844
|
await runtime2.announce({
|
|
@@ -480896,7 +480935,7 @@ function createAcpStdioAgent(deps) {
|
|
|
480896
480935
|
}
|
|
480897
480936
|
},
|
|
480898
480937
|
authMethods: [],
|
|
480899
|
-
agentInfo: { name: "UR-Nexus", version: "1.
|
|
480938
|
+
agentInfo: { name: "UR-Nexus", version: "1.77.1" }
|
|
480900
480939
|
});
|
|
480901
480940
|
return;
|
|
480902
480941
|
case "authenticate":
|
|
@@ -690356,7 +690395,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
690356
690395
|
smapsRollup,
|
|
690357
690396
|
platform: process.platform,
|
|
690358
690397
|
nodeVersion: process.version,
|
|
690359
|
-
ccVersion: "1.
|
|
690398
|
+
ccVersion: "1.77.1"
|
|
690360
690399
|
};
|
|
690361
690400
|
}
|
|
690362
690401
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -690936,7 +690975,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
690936
690975
|
var call154 = async () => {
|
|
690937
690976
|
return {
|
|
690938
690977
|
type: "text",
|
|
690939
|
-
value: "1.
|
|
690978
|
+
value: "1.77.1"
|
|
690940
690979
|
};
|
|
690941
690980
|
}, version2, version_default;
|
|
690942
690981
|
var init_version = __esm(() => {
|
|
@@ -702203,7 +702242,7 @@ function generateHtmlReport(data, insights) {
|
|
|
702203
702242
|
</html>`;
|
|
702204
702243
|
}
|
|
702205
702244
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
702206
|
-
const version3 = typeof MACRO !== "undefined" ? "1.
|
|
702245
|
+
const version3 = typeof MACRO !== "undefined" ? "1.77.1" : "unknown";
|
|
702207
702246
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
702208
702247
|
const facets_summary = {
|
|
702209
702248
|
total: facets.size,
|
|
@@ -706517,7 +706556,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
706517
706556
|
init_settings2();
|
|
706518
706557
|
init_slowOperations();
|
|
706519
706558
|
init_uuid();
|
|
706520
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.
|
|
706559
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.77.1" : "unknown";
|
|
706521
706560
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
706522
706561
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
706523
706562
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -707732,7 +707771,7 @@ var init_filesystem = __esm(() => {
|
|
|
707732
707771
|
});
|
|
707733
707772
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
707734
707773
|
const nonce = randomBytes20(16).toString("hex");
|
|
707735
|
-
return join232(getURTempDir(), "bundled-skills", "1.
|
|
707774
|
+
return join232(getURTempDir(), "bundled-skills", "1.77.1", nonce);
|
|
707736
707775
|
});
|
|
707737
707776
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
707738
707777
|
});
|
|
@@ -713371,6 +713410,12 @@ Focus text output on:
|
|
|
713371
713410
|
- High-level status updates at natural milestones
|
|
713372
713411
|
- Errors or blockers that change the plan
|
|
713373
713412
|
|
|
713413
|
+
Finishing a task is not an invitation to write at length. The work is in the files and the tool calls; the final message only says what changed and anything the user must act on. Specifically:
|
|
713414
|
+
- Never paste code, file contents, or diffs you already wrote to disk. Cite \`file_path:line\` instead. The user can open the file.
|
|
713415
|
+
- Report an audit, review, or investigation as its findings \u2014 one line each, and only the ones that matter. Do not narrate how you searched or restate what you read.
|
|
713416
|
+
- Do not re-explain a change you already described, list every file touched, or add a closing recap of the conversation.
|
|
713417
|
+
- Write a long explanation only when the user asks for one.
|
|
713418
|
+
|
|
713374
713419
|
If you can say it in one sentence, don't use three. Prefer short, direct sentences over long explanations. This does not apply to code or tool calls.`;
|
|
713375
713420
|
}
|
|
713376
713421
|
function getSimpleToneAndStyleSection() {
|
|
@@ -713593,7 +713638,7 @@ function getFunctionResultClearingSection(model) {
|
|
|
713593
713638
|
|
|
713594
713639
|
Old tool results will be automatically cleared from context to free up space. The ${config3.keepRecent} most recent results are always kept.`;
|
|
713595
713640
|
}
|
|
713596
|
-
var getCachedMCConfigForFRC = null, DISCOVER_SKILLS_TOOL_NAME = null, SYSTEM_PROMPT_DYNAMIC_BOUNDARY = "__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__", DEFAULT_AGENT_PROMPT = `You are an agent for Ur. Given the user's message, you should use the tools available to complete the task. Complete the task fully\u2014don't gold-plate, but don't leave it half-done. When you complete the task, respond with a concise report covering what was done and any key findings \u2014 the caller will relay this to the user, so it only needs the essentials
|
|
713641
|
+
var getCachedMCConfigForFRC = null, DISCOVER_SKILLS_TOOL_NAME = null, SYSTEM_PROMPT_DYNAMIC_BOUNDARY = "__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__", DEFAULT_AGENT_PROMPT = `You are an agent for Ur. Given the user's message, you should use the tools available to complete the task. Complete the task fully\u2014don't gold-plate, but don't leave it half-done. When you complete the task, respond with a concise report covering what was done and any key findings \u2014 the caller will relay this to the user, so it only needs the essentials. Do not include code or file contents you already wrote; cite \`file_path:line\`.`, SUMMARIZE_TOOL_RESULTS_SECTION = `When working with tool results, write down any important information you might need later in your response, as the original tool result may be cleared later.`;
|
|
713597
713642
|
var init_prompts4 = __esm(() => {
|
|
713598
713643
|
init_env();
|
|
713599
713644
|
init_git();
|
|
@@ -714081,7 +714126,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
714081
714126
|
}
|
|
714082
714127
|
function computeFingerprintFromMessages(messages) {
|
|
714083
714128
|
const firstMessageText = extractFirstMessageText(messages);
|
|
714084
|
-
return computeFingerprint(firstMessageText, "1.
|
|
714129
|
+
return computeFingerprint(firstMessageText, "1.77.1");
|
|
714085
714130
|
}
|
|
714086
714131
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
714087
714132
|
var init_fingerprint = () => {};
|
|
@@ -716003,7 +716048,7 @@ async function sideQuery(opts) {
|
|
|
716003
716048
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
716004
716049
|
}
|
|
716005
716050
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
716006
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.
|
|
716051
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.77.1");
|
|
716007
716052
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
716008
716053
|
const systemBlocks = [
|
|
716009
716054
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -720840,7 +720885,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
720840
720885
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
720841
720886
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
720842
720887
|
betas: getSdkBetas(),
|
|
720843
|
-
ur_version: "1.
|
|
720888
|
+
ur_version: "1.77.1",
|
|
720844
720889
|
output_style: outputStyle2,
|
|
720845
720890
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
720846
720891
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -734712,7 +734757,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
734712
734757
|
function getSemverPart(version3) {
|
|
734713
734758
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
734714
734759
|
}
|
|
734715
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.
|
|
734760
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.77.1") {
|
|
734716
734761
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react223.useState(() => getSemverPart(initialVersion));
|
|
734717
734762
|
if (!updatedVersion) {
|
|
734718
734763
|
return null;
|
|
@@ -734761,7 +734806,7 @@ function AutoUpdater({
|
|
|
734761
734806
|
return;
|
|
734762
734807
|
}
|
|
734763
734808
|
if (false) {}
|
|
734764
|
-
const currentVersion = "1.
|
|
734809
|
+
const currentVersion = "1.77.1";
|
|
734765
734810
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
734766
734811
|
let latestVersion = await getLatestVersion(channel);
|
|
734767
734812
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -734990,12 +735035,12 @@ function NativeAutoUpdater({
|
|
|
734990
735035
|
logEvent("tengu_native_auto_updater_start", {});
|
|
734991
735036
|
try {
|
|
734992
735037
|
const maxVersion = await getMaxVersion();
|
|
734993
|
-
if (maxVersion && gt("1.
|
|
735038
|
+
if (maxVersion && gt("1.77.1", maxVersion)) {
|
|
734994
735039
|
const msg = await getMaxVersionMessage();
|
|
734995
735040
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
734996
735041
|
}
|
|
734997
735042
|
const result = await installLatest(channel);
|
|
734998
|
-
const currentVersion = "1.
|
|
735043
|
+
const currentVersion = "1.77.1";
|
|
734999
735044
|
const latencyMs = Date.now() - startTime;
|
|
735000
735045
|
if (result.lockFailed) {
|
|
735001
735046
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -735132,17 +735177,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
735132
735177
|
const maxVersion = await getMaxVersion();
|
|
735133
735178
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
735134
735179
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
735135
|
-
if (gte("1.
|
|
735136
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.
|
|
735180
|
+
if (gte("1.77.1", maxVersion)) {
|
|
735181
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.77.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
735137
735182
|
setUpdateAvailable(false);
|
|
735138
735183
|
return;
|
|
735139
735184
|
}
|
|
735140
735185
|
latest = maxVersion;
|
|
735141
735186
|
}
|
|
735142
|
-
const hasUpdate = latest && !gte("1.
|
|
735187
|
+
const hasUpdate = latest && !gte("1.77.1", latest) && !shouldSkipVersion(latest);
|
|
735143
735188
|
setUpdateAvailable(!!hasUpdate);
|
|
735144
735189
|
if (hasUpdate) {
|
|
735145
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.
|
|
735190
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.77.1"} -> ${latest}`);
|
|
735146
735191
|
}
|
|
735147
735192
|
};
|
|
735148
735193
|
$2[0] = t1;
|
|
@@ -735176,7 +735221,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
735176
735221
|
wrap: "truncate",
|
|
735177
735222
|
children: [
|
|
735178
735223
|
"currentVersion: ",
|
|
735179
|
-
"1.
|
|
735224
|
+
"1.77.1"
|
|
735180
735225
|
]
|
|
735181
735226
|
}, undefined, true, undefined, this);
|
|
735182
735227
|
$2[3] = verbose;
|
|
@@ -745976,7 +746021,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
745976
746021
|
project_dir: getOriginalCwd(),
|
|
745977
746022
|
added_dirs: addedDirs
|
|
745978
746023
|
},
|
|
745979
|
-
version: "1.
|
|
746024
|
+
version: "1.77.1",
|
|
745980
746025
|
output_style: {
|
|
745981
746026
|
name: outputStyleName
|
|
745982
746027
|
},
|
|
@@ -746111,7 +746156,7 @@ function StatusLineInner({
|
|
|
746111
746156
|
const attention = customStatusError ?? taskAttention;
|
|
746112
746157
|
const terminalSize = React132.useContext(TerminalSizeContext);
|
|
746113
746158
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
746114
|
-
version: "1.
|
|
746159
|
+
version: "1.77.1",
|
|
746115
746160
|
providerLabel: providerRuntime.providerLabel,
|
|
746116
746161
|
authMode: providerRuntime.authLabel,
|
|
746117
746162
|
model: renderModelName(mainLoopModel) || providerRuntime.model || "",
|
|
@@ -758396,7 +758441,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
758396
758441
|
} catch {}
|
|
758397
758442
|
const data = {
|
|
758398
758443
|
trigger: trigger2,
|
|
758399
|
-
version: "1.
|
|
758444
|
+
version: "1.77.1",
|
|
758400
758445
|
platform: process.platform,
|
|
758401
758446
|
transcript,
|
|
758402
758447
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -770770,7 +770815,7 @@ function WelcomeV2() {
|
|
|
770770
770815
|
dimColor: true,
|
|
770771
770816
|
children: [
|
|
770772
770817
|
"v",
|
|
770773
|
-
"1.
|
|
770818
|
+
"1.77.1"
|
|
770774
770819
|
]
|
|
770775
770820
|
}, undefined, true, undefined, this)
|
|
770776
770821
|
]
|
|
@@ -772030,7 +772075,7 @@ function completeOnboarding() {
|
|
|
772030
772075
|
saveGlobalConfig((current) => ({
|
|
772031
772076
|
...current,
|
|
772032
772077
|
hasCompletedOnboarding: true,
|
|
772033
|
-
lastOnboardingVersion: "1.
|
|
772078
|
+
lastOnboardingVersion: "1.77.1"
|
|
772034
772079
|
}));
|
|
772035
772080
|
}
|
|
772036
772081
|
function showDialog(root2, renderer) {
|
|
@@ -777074,7 +777119,7 @@ function appendToLog(path24, message) {
|
|
|
777074
777119
|
cwd: getFsImplementation().cwd(),
|
|
777075
777120
|
userType: process.env.USER_TYPE,
|
|
777076
777121
|
sessionId: getSessionId(),
|
|
777077
|
-
version: "1.
|
|
777122
|
+
version: "1.77.1"
|
|
777078
777123
|
};
|
|
777079
777124
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
777080
777125
|
}
|
|
@@ -781233,8 +781278,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
781233
781278
|
}
|
|
781234
781279
|
async function checkEnvLessBridgeMinVersion() {
|
|
781235
781280
|
const cfg = await getEnvLessBridgeConfig();
|
|
781236
|
-
if (cfg.min_version && lt("1.
|
|
781237
|
-
return `Your version of UR (${"1.
|
|
781281
|
+
if (cfg.min_version && lt("1.77.1", cfg.min_version)) {
|
|
781282
|
+
return `Your version of UR (${"1.77.1"}) is too old for Remote Control.
|
|
781238
781283
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
781239
781284
|
}
|
|
781240
781285
|
return null;
|
|
@@ -781708,7 +781753,7 @@ async function initBridgeCore(params) {
|
|
|
781708
781753
|
const rawApi = createBridgeApiClient({
|
|
781709
781754
|
baseUrl,
|
|
781710
781755
|
getAccessToken,
|
|
781711
|
-
runnerVersion: "1.
|
|
781756
|
+
runnerVersion: "1.77.1",
|
|
781712
781757
|
onDebug: logForDebugging,
|
|
781713
781758
|
onAuth401,
|
|
781714
781759
|
getTrustedDeviceToken
|
|
@@ -791181,7 +791226,7 @@ function getAgUiCapabilities() {
|
|
|
791181
791226
|
name: "UR-Nexus",
|
|
791182
791227
|
type: "ur-nexus",
|
|
791183
791228
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
791184
|
-
version: "1.
|
|
791229
|
+
version: "1.77.1",
|
|
791185
791230
|
provider: "UR",
|
|
791186
791231
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
791187
791232
|
},
|
|
@@ -792321,7 +792366,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
792321
792366
|
};
|
|
792322
792367
|
const server2 = new Server({
|
|
792323
792368
|
name: "ur-nexus",
|
|
792324
|
-
version: "1.
|
|
792369
|
+
version: "1.77.1"
|
|
792325
792370
|
}, {
|
|
792326
792371
|
capabilities: {
|
|
792327
792372
|
tools: {}
|
|
@@ -793479,7 +793524,7 @@ function thrownResponse(error40) {
|
|
|
793479
793524
|
}
|
|
793480
793525
|
async function createUrMcp2026Runtime(options4) {
|
|
793481
793526
|
const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
|
|
793482
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.
|
|
793527
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.77.1" }, { capabilities: {} });
|
|
793483
793528
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
793484
793529
|
try {
|
|
793485
793530
|
await server2.connect(serverTransport);
|
|
@@ -793490,7 +793535,7 @@ async function createUrMcp2026Runtime(options4) {
|
|
|
793490
793535
|
}
|
|
793491
793536
|
const runtime2 = new Mcp2026Runtime({
|
|
793492
793537
|
cwd: options4.cwd,
|
|
793493
|
-
version: "1.
|
|
793538
|
+
version: "1.77.1",
|
|
793494
793539
|
backend: {
|
|
793495
793540
|
listTools: async () => {
|
|
793496
793541
|
const listed = await client2.listTools();
|
|
@@ -795631,7 +795676,7 @@ async function update() {
|
|
|
795631
795676
|
logEvent("tengu_update_check", {});
|
|
795632
795677
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
795633
795678
|
const result = await checkUpgradeStatus({
|
|
795634
|
-
currentVersion: "1.
|
|
795679
|
+
currentVersion: "1.77.1",
|
|
795635
795680
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
795636
795681
|
installationType: diagnostic2.installationType,
|
|
795637
795682
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -796947,7 +796992,7 @@ ${customInstructions}` : customInstructions;
|
|
|
796947
796992
|
}
|
|
796948
796993
|
}
|
|
796949
796994
|
logForDiagnosticsNoPII("info", "started", {
|
|
796950
|
-
version: "1.
|
|
796995
|
+
version: "1.77.1",
|
|
796951
796996
|
is_native_binary: isInBundledMode()
|
|
796952
796997
|
});
|
|
796953
796998
|
registerCleanup(async () => {
|
|
@@ -797733,7 +797778,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
797733
797778
|
pendingHookMessages
|
|
797734
797779
|
}, renderAndRun);
|
|
797735
797780
|
}
|
|
797736
|
-
}).version("1.
|
|
797781
|
+
}).version("1.77.1 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
797737
797782
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
797738
797783
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
797739
797784
|
if (canUserConfigureAdvisor()) {
|
|
@@ -798785,7 +798830,7 @@ if (false) {}
|
|
|
798785
798830
|
async function main2() {
|
|
798786
798831
|
const args = process.argv.slice(2);
|
|
798787
798832
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
798788
|
-
console.log(`${"1.
|
|
798833
|
+
console.log(`${"1.77.1"} (UR-Nexus)`);
|
|
798789
798834
|
return;
|
|
798790
798835
|
}
|
|
798791
798836
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|
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.
|
|
48
|
+
<p class="eyebrow">Version 1.77.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.
|
|
5
|
+
"version": "1.77.1",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED