ur-agent 1.76.10 → 1.77.2
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,56 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.77.2
|
|
4
|
+
|
|
5
|
+
- Git commit and pull-request guidance is no longer sent outside a git
|
|
6
|
+
repository. `shouldIncludeGitInstructions` consulted only the environment
|
|
7
|
+
variable and the setting, so roughly 9KB rode in the system prompt on every
|
|
8
|
+
turn even in workspaces with no `.git` — instructions the model could not act
|
|
9
|
+
on. The repository check uses the memoized synchronous `findGitRoot` already
|
|
10
|
+
relied on for permission checks and prompt building, so it costs nothing. The
|
|
11
|
+
environment variable and setting still win when either is set explicitly.
|
|
12
|
+
|
|
13
|
+
## 1.77.1
|
|
14
|
+
|
|
15
|
+
- Finishing a task no longer produces a long write-up. Both output-efficiency
|
|
16
|
+
sections said "be concise" but neither addressed what actually ran long, so
|
|
17
|
+
the rules are now specific: never paste code or file contents already written
|
|
18
|
+
to disk (cite `file_path:line`), report an audit or review as its findings
|
|
19
|
+
one line each, no closing recap of the conversation, and long explanations
|
|
20
|
+
only when the user asks for one. Subagent reports carry the same rule, since
|
|
21
|
+
their output is relayed verbatim.
|
|
22
|
+
|
|
23
|
+
## 1.77.0
|
|
24
|
+
|
|
25
|
+
- Edit no longer demands a prior Read. A matching `old_string` is checked
|
|
26
|
+
against the bytes on disk, which is exactly what "has this been read?" and
|
|
27
|
+
"has it changed since?" were asking — and stronger, since a stale snapshot
|
|
28
|
+
cannot survive a match against fresh content. The verified content is
|
|
29
|
+
recorded so the write path and later staleness checks work from it. This
|
|
30
|
+
removes a full model round trip from the most common mutating call. A
|
|
31
|
+
genuinely absent `old_string` is still refused, and now says the file has not
|
|
32
|
+
been read so the model knows to read it.
|
|
33
|
+
- Write no longer refuses an unread existing file. It reads and records the
|
|
34
|
+
file itself — one local read instead of a round trip spent asking for content
|
|
35
|
+
nobody needed to see — and the "modified since read" check is unchanged, now
|
|
36
|
+
working from that recorded baseline.
|
|
37
|
+
- Bash no longer issues a `mkdir` syscall on the critical path of every
|
|
38
|
+
command. The task output directory is process-wide and cannot change after
|
|
39
|
+
the first one, so it is created once; a failure is not cached, so the next
|
|
40
|
+
command retries.
|
|
41
|
+
|
|
42
|
+
## 1.76.11
|
|
43
|
+
|
|
44
|
+
- AskUserQuestion recovers the payload shape where a model flattens one
|
|
45
|
+
question's choices straight into `questions`, so six options arrived as six
|
|
46
|
+
question objects carrying a label and a description and no question text.
|
|
47
|
+
Every entry reported "question must be a non-empty string" and "options must
|
|
48
|
+
be an array". The array is folded back into the options of a single question
|
|
49
|
+
using the question text the payload already carries. A genuine
|
|
50
|
+
multi-question payload is never retargeted, and with no question text
|
|
51
|
+
anywhere the payload is still reported rather than given an invented
|
|
52
|
+
question.
|
|
53
|
+
|
|
3
54
|
## 1.76.10
|
|
4
55
|
|
|
5
56
|
- `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.2"}`;
|
|
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.2"} (${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.2"}${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.2",
|
|
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.2".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.2",
|
|
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.2"
|
|
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.2");
|
|
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.2", 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.2"}.${fingerprint}`;
|
|
128888
128930
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
128889
128931
|
const cch = "";
|
|
128890
128932
|
const workload = getWorkload();
|
|
@@ -153272,10 +153314,15 @@ function shouldIncludeGitInstructions() {
|
|
|
153272
153314
|
return false;
|
|
153273
153315
|
if (isEnvDefinedFalsy(envVal))
|
|
153274
153316
|
return true;
|
|
153275
|
-
|
|
153317
|
+
if ((getInitialSettings().includeGitInstructions ?? true) === false) {
|
|
153318
|
+
return false;
|
|
153319
|
+
}
|
|
153320
|
+
return findGitRoot(getCwd()) !== null;
|
|
153276
153321
|
}
|
|
153277
153322
|
var init_gitSettings = __esm(() => {
|
|
153323
|
+
init_cwd2();
|
|
153278
153324
|
init_envUtils();
|
|
153325
|
+
init_git();
|
|
153279
153326
|
init_settings2();
|
|
153280
153327
|
});
|
|
153281
153328
|
|
|
@@ -156883,7 +156930,7 @@ var init_projectSafety = __esm(() => {
|
|
|
156883
156930
|
function getInstruments() {
|
|
156884
156931
|
if (instruments)
|
|
156885
156932
|
return instruments;
|
|
156886
|
-
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.
|
|
156933
|
+
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.77.2");
|
|
156887
156934
|
instruments = {
|
|
156888
156935
|
operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
|
|
156889
156936
|
description: "GenAI operation duration.",
|
|
@@ -156981,7 +157028,7 @@ function genAiAgentAttributes() {
|
|
|
156981
157028
|
"gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
|
|
156982
157029
|
"gen_ai.provider.name": "ur",
|
|
156983
157030
|
"gen_ai.agent.name": "UR-Nexus",
|
|
156984
|
-
"gen_ai.agent.version": "1.
|
|
157031
|
+
"gen_ai.agent.version": "1.77.2"
|
|
156985
157032
|
};
|
|
156986
157033
|
}
|
|
156987
157034
|
function genAiWorkflowAttributes(workflowName) {
|
|
@@ -156997,7 +157044,7 @@ function genAiWorkflowAttributes(workflowName) {
|
|
|
156997
157044
|
function startGenAiWorkflowSpan(workflowName) {
|
|
156998
157045
|
const attributes = genAiWorkflowAttributes(workflowName);
|
|
156999
157046
|
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.
|
|
157047
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.77.2").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
157001
157048
|
}
|
|
157002
157049
|
function endGenAiWorkflowSpan(span, options2 = {}) {
|
|
157003
157050
|
try {
|
|
@@ -157035,7 +157082,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
|
|
|
157035
157082
|
if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
|
|
157036
157083
|
attributes["gen_ai.memory.record.count"] = options2.recordCount;
|
|
157037
157084
|
}
|
|
157038
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.
|
|
157085
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.77.2").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
157039
157086
|
}
|
|
157040
157087
|
function endGenAiMemorySpan(span, options2 = {}) {
|
|
157041
157088
|
try {
|
|
@@ -250683,7 +250730,7 @@ function getTelemetryAttributes() {
|
|
|
250683
250730
|
attributes["session.id"] = sessionId;
|
|
250684
250731
|
}
|
|
250685
250732
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
250686
|
-
attributes["app.version"] = "1.
|
|
250733
|
+
attributes["app.version"] = "1.77.2";
|
|
250687
250734
|
}
|
|
250688
250735
|
const oauthAccount = getOauthAccountInfo();
|
|
250689
250736
|
if (oauthAccount) {
|
|
@@ -297190,7 +297237,7 @@ function getInstallationEnv() {
|
|
|
297190
297237
|
return;
|
|
297191
297238
|
}
|
|
297192
297239
|
function getURCodeVersion() {
|
|
297193
|
-
return "1.
|
|
297240
|
+
return "1.77.2";
|
|
297194
297241
|
}
|
|
297195
297242
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
297196
297243
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -304521,7 +304568,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
304521
304568
|
const client2 = new Client({
|
|
304522
304569
|
name: "ur",
|
|
304523
304570
|
title: "UR",
|
|
304524
|
-
version: "1.
|
|
304571
|
+
version: "1.77.2",
|
|
304525
304572
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
304526
304573
|
websiteUrl: PRODUCT_URL
|
|
304527
304574
|
}, {
|
|
@@ -304881,7 +304928,7 @@ var init_client5 = __esm(() => {
|
|
|
304881
304928
|
const client2 = new Client({
|
|
304882
304929
|
name: "ur",
|
|
304883
304930
|
title: "UR",
|
|
304884
|
-
version: "1.
|
|
304931
|
+
version: "1.77.2",
|
|
304885
304932
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
304886
304933
|
websiteUrl: PRODUCT_URL
|
|
304887
304934
|
}, {
|
|
@@ -317434,7 +317481,7 @@ async function createRuntime() {
|
|
|
317434
317481
|
bootstrapTelemetry();
|
|
317435
317482
|
const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
|
|
317436
317483
|
[import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
|
|
317437
|
-
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.
|
|
317484
|
+
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.77.2"
|
|
317438
317485
|
}));
|
|
317439
317486
|
const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
|
|
317440
317487
|
resource,
|
|
@@ -317467,11 +317514,11 @@ async function createRuntime() {
|
|
|
317467
317514
|
setMeterProvider(meterProvider);
|
|
317468
317515
|
setLoggerProvider(loggerProvider);
|
|
317469
317516
|
if (meterProvider) {
|
|
317470
|
-
const meter = meterProvider.getMeter("ur-agent", "1.
|
|
317517
|
+
const meter = meterProvider.getMeter("ur-agent", "1.77.2");
|
|
317471
317518
|
setMeter(meter, (name, options2) => meter.createCounter(name, options2));
|
|
317472
317519
|
}
|
|
317473
317520
|
if (loggerProvider) {
|
|
317474
|
-
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.
|
|
317521
|
+
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.77.2"));
|
|
317475
317522
|
}
|
|
317476
317523
|
if (!cleanupRegistered2) {
|
|
317477
317524
|
cleanupRegistered2 = true;
|
|
@@ -318133,9 +318180,9 @@ async function assertMinVersion() {
|
|
|
318133
318180
|
if (false) {}
|
|
318134
318181
|
try {
|
|
318135
318182
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
318136
|
-
if (versionConfig.minVersion && lt("1.
|
|
318183
|
+
if (versionConfig.minVersion && lt("1.77.2", versionConfig.minVersion)) {
|
|
318137
318184
|
console.error(`
|
|
318138
|
-
It looks like your version of UR (${"1.
|
|
318185
|
+
It looks like your version of UR (${"1.77.2"}) needs an update.
|
|
318139
318186
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
318140
318187
|
|
|
318141
318188
|
To update, please run:
|
|
@@ -318351,7 +318398,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
318351
318398
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
318352
318399
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
318353
318400
|
pid: process.pid,
|
|
318354
|
-
currentVersion: "1.
|
|
318401
|
+
currentVersion: "1.77.2"
|
|
318355
318402
|
});
|
|
318356
318403
|
return "in_progress";
|
|
318357
318404
|
}
|
|
@@ -318360,7 +318407,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
318360
318407
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
318361
318408
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
318362
318409
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
318363
|
-
currentVersion: "1.
|
|
318410
|
+
currentVersion: "1.77.2"
|
|
318364
318411
|
});
|
|
318365
318412
|
console.error(`
|
|
318366
318413
|
Error: Windows NPM detected in WSL
|
|
@@ -318895,7 +318942,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
318895
318942
|
}
|
|
318896
318943
|
async function getDoctorDiagnostic() {
|
|
318897
318944
|
const installationType = await getCurrentInstallationType();
|
|
318898
|
-
const version2 = typeof MACRO !== "undefined" ? "1.
|
|
318945
|
+
const version2 = typeof MACRO !== "undefined" ? "1.77.2" : "unknown";
|
|
318899
318946
|
const installationPath = await getInstallationPath();
|
|
318900
318947
|
const invokedBinary = getInvokedBinary();
|
|
318901
318948
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -319830,8 +319877,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
319830
319877
|
const maxVersion = await getMaxVersion();
|
|
319831
319878
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
319832
319879
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
319833
|
-
if (gte("1.
|
|
319834
|
-
logForDebugging(`Native installer: current version ${"1.
|
|
319880
|
+
if (gte("1.77.2", maxVersion)) {
|
|
319881
|
+
logForDebugging(`Native installer: current version ${"1.77.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
319835
319882
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
319836
319883
|
latency_ms: Date.now() - startTime,
|
|
319837
319884
|
max_version: maxVersion,
|
|
@@ -319842,7 +319889,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
319842
319889
|
version2 = maxVersion;
|
|
319843
319890
|
}
|
|
319844
319891
|
}
|
|
319845
|
-
if (!forceReinstall && version2 === "1.
|
|
319892
|
+
if (!forceReinstall && version2 === "1.77.2" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
319846
319893
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
319847
319894
|
logEvent("tengu_native_update_complete", {
|
|
319848
319895
|
latency_ms: Date.now() - startTime,
|
|
@@ -354013,6 +354060,15 @@ async function getShellConfigImpl() {
|
|
|
354013
354060
|
const provider = await createBashShellProvider(binShell);
|
|
354014
354061
|
return { provider };
|
|
354015
354062
|
}
|
|
354063
|
+
function ensureTaskOutputDir() {
|
|
354064
|
+
taskOutputDirReady ??= mkdir20(getTaskOutputDir(), { recursive: true }).then(() => {
|
|
354065
|
+
return;
|
|
354066
|
+
}, (error40) => {
|
|
354067
|
+
taskOutputDirReady = undefined;
|
|
354068
|
+
throw error40;
|
|
354069
|
+
});
|
|
354070
|
+
return taskOutputDirReady;
|
|
354071
|
+
}
|
|
354016
354072
|
async function exec3(command, abortSignal, shellType, options2) {
|
|
354017
354073
|
const {
|
|
354018
354074
|
timeout,
|
|
@@ -354069,7 +354125,7 @@ async function exec3(command, abortSignal, shellType, options2) {
|
|
|
354069
354125
|
const usePipeMode = !!onStdout;
|
|
354070
354126
|
const taskId = generateTaskId("local_bash");
|
|
354071
354127
|
const taskOutput = new TaskOutput(taskId, onProgress ?? null, !usePipeMode);
|
|
354072
|
-
await
|
|
354128
|
+
await ensureTaskOutputDir();
|
|
354073
354129
|
let outputHandle;
|
|
354074
354130
|
let stderrHandle;
|
|
354075
354131
|
if (!usePipeMode) {
|
|
@@ -354175,7 +354231,7 @@ function setCwd(path13, relativeTo) {
|
|
|
354175
354231
|
} catch (_error) {}
|
|
354176
354232
|
}
|
|
354177
354233
|
}
|
|
354178
|
-
var DEFAULT_TIMEOUT, getShellConfig, getPsProvider, resolveProvider;
|
|
354234
|
+
var DEFAULT_TIMEOUT, getShellConfig, getPsProvider, resolveProvider, taskOutputDirReady;
|
|
354179
354235
|
var init_Shell = __esm(() => {
|
|
354180
354236
|
init_memoize();
|
|
354181
354237
|
init_analytics();
|
|
@@ -366406,28 +366462,6 @@ var init_FileEditTool = __esm(() => {
|
|
|
366406
366462
|
};
|
|
366407
366463
|
}
|
|
366408
366464
|
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
366465
|
const file2 = fileContent;
|
|
366432
366466
|
const editTarget = findEditTarget(file2, old_string);
|
|
366433
366467
|
const actualOldString = editTarget?.actual ?? null;
|
|
@@ -366435,13 +366469,21 @@ var init_FileEditTool = __esm(() => {
|
|
|
366435
366469
|
return {
|
|
366436
366470
|
result: false,
|
|
366437
366471
|
behavior: "ask",
|
|
366438
|
-
message: describeEditMatchFailure(file2, old_string),
|
|
366472
|
+
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
366473
|
meta: {
|
|
366440
366474
|
isFilePathAbsolute: String(isAbsolute24(file_path))
|
|
366441
366475
|
},
|
|
366442
366476
|
errorCode: 8
|
|
366443
366477
|
};
|
|
366444
366478
|
}
|
|
366479
|
+
if (readTimestamp === undefined || readTimestamp.isPartialView || !fileStateMatchesContent(file2, readTimestamp)) {
|
|
366480
|
+
toolUseContext.readFileState.set(fullFilePath, {
|
|
366481
|
+
content: file2,
|
|
366482
|
+
timestamp: getFileModificationTime(fullFilePath),
|
|
366483
|
+
offset: undefined,
|
|
366484
|
+
limit: undefined
|
|
366485
|
+
});
|
|
366486
|
+
}
|
|
366445
366487
|
const matches = file2.split(actualOldString).length - 1;
|
|
366446
366488
|
if (matches > 1 && !replace_all) {
|
|
366447
366489
|
return {
|
|
@@ -366521,7 +366563,7 @@ String: ${old_string}`,
|
|
|
366521
366563
|
if (fileExists) {
|
|
366522
366564
|
const lastWriteTime = getFileModificationTime(absoluteFilePath);
|
|
366523
366565
|
const lastRead = readFileState.get(absoluteFilePath);
|
|
366524
|
-
if (
|
|
366566
|
+
if (lastRead && (lastWriteTime > lastRead.timestamp || !fileStateMatchesContent(originalFileContents, lastRead))) {
|
|
366525
366567
|
throw new Error(FILE_UNEXPECTEDLY_MODIFIED_ERROR);
|
|
366526
366568
|
}
|
|
366527
366569
|
}
|
|
@@ -367236,14 +367278,16 @@ var init_FileWriteTool = __esm(() => {
|
|
|
367236
367278
|
throw e;
|
|
367237
367279
|
}
|
|
367238
367280
|
const readTimestamp = toolUseContext.readFileState.get(fullFilePath);
|
|
367281
|
+
const lastWriteTime = Math.floor(fileMtimeMs);
|
|
367239
367282
|
if (!readTimestamp || readTimestamp.isPartialView) {
|
|
367240
|
-
|
|
367241
|
-
|
|
367242
|
-
|
|
367243
|
-
|
|
367244
|
-
|
|
367283
|
+
toolUseContext.readFileState.set(fullFilePath, {
|
|
367284
|
+
content: readFileSyncCached(fullFilePath),
|
|
367285
|
+
timestamp: lastWriteTime,
|
|
367286
|
+
offset: undefined,
|
|
367287
|
+
limit: undefined
|
|
367288
|
+
});
|
|
367289
|
+
return { result: true };
|
|
367245
367290
|
}
|
|
367246
|
-
const lastWriteTime = Math.floor(fileMtimeMs);
|
|
367247
367291
|
if (lastWriteTime > readTimestamp.timestamp) {
|
|
367248
367292
|
return {
|
|
367249
367293
|
result: false,
|
|
@@ -389549,7 +389593,7 @@ function isAnyTracingEnabled() {
|
|
|
389549
389593
|
return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
|
|
389550
389594
|
}
|
|
389551
389595
|
function getTracer() {
|
|
389552
|
-
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.
|
|
389596
|
+
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.77.2");
|
|
389553
389597
|
}
|
|
389554
389598
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
389555
389599
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -419716,7 +419760,7 @@ function Feedback({
|
|
|
419716
419760
|
platform: env2.platform,
|
|
419717
419761
|
gitRepo: envInfo.isGit,
|
|
419718
419762
|
terminal: env2.terminal,
|
|
419719
|
-
version: "1.
|
|
419763
|
+
version: "1.77.2",
|
|
419720
419764
|
transcript: normalizeMessagesForAPI(messages),
|
|
419721
419765
|
errors: sanitizedErrors,
|
|
419722
419766
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -419908,7 +419952,7 @@ function Feedback({
|
|
|
419908
419952
|
", ",
|
|
419909
419953
|
env2.terminal,
|
|
419910
419954
|
", v",
|
|
419911
|
-
"1.
|
|
419955
|
+
"1.77.2"
|
|
419912
419956
|
]
|
|
419913
419957
|
}, undefined, true, undefined, this)
|
|
419914
419958
|
]
|
|
@@ -420014,7 +420058,7 @@ ${sanitizedDescription}
|
|
|
420014
420058
|
` + `**Environment Info**
|
|
420015
420059
|
` + `- Platform: ${env2.platform}
|
|
420016
420060
|
` + `- Terminal: ${env2.terminal}
|
|
420017
|
-
` + `- Version: ${"1.
|
|
420061
|
+
` + `- Version: ${"1.77.2"}
|
|
420018
420062
|
` + `- Feedback ID: ${feedbackId}
|
|
420019
420063
|
` + `
|
|
420020
420064
|
**Errors**
|
|
@@ -423124,7 +423168,7 @@ function buildPrimarySection() {
|
|
|
423124
423168
|
}, undefined, false, undefined, this);
|
|
423125
423169
|
return [{
|
|
423126
423170
|
label: "Version",
|
|
423127
|
-
value: "1.
|
|
423171
|
+
value: "1.77.2"
|
|
423128
423172
|
}, {
|
|
423129
423173
|
label: "Session name",
|
|
423130
423174
|
value: nameValue
|
|
@@ -426506,7 +426550,7 @@ function Config({
|
|
|
426506
426550
|
}
|
|
426507
426551
|
}, undefined, false, undefined, this)
|
|
426508
426552
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
|
|
426509
|
-
currentVersion: "1.
|
|
426553
|
+
currentVersion: "1.77.2",
|
|
426510
426554
|
onChoice: (choice) => {
|
|
426511
426555
|
setShowSubmenu(null);
|
|
426512
426556
|
setTabsHidden(false);
|
|
@@ -426518,7 +426562,7 @@ function Config({
|
|
|
426518
426562
|
autoUpdatesChannel: "stable"
|
|
426519
426563
|
};
|
|
426520
426564
|
if (choice === "stay") {
|
|
426521
|
-
newSettings.minimumVersion = "1.
|
|
426565
|
+
newSettings.minimumVersion = "1.77.2";
|
|
426522
426566
|
}
|
|
426523
426567
|
updateSettingsForSource("userSettings", newSettings);
|
|
426524
426568
|
setSettingsData((prev_27) => ({
|
|
@@ -434582,7 +434626,7 @@ function HelpV2(t0) {
|
|
|
434582
434626
|
let t6;
|
|
434583
434627
|
if ($2[31] !== tabs) {
|
|
434584
434628
|
t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
|
|
434585
|
-
title: `UR v${"1.
|
|
434629
|
+
title: `UR v${"1.77.2"}`,
|
|
434586
434630
|
color: "professionalBlue",
|
|
434587
434631
|
defaultTab: "general",
|
|
434588
434632
|
children: tabs
|
|
@@ -435515,7 +435559,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
435515
435559
|
async function handleInitialize(options2) {
|
|
435516
435560
|
return {
|
|
435517
435561
|
name: "UR",
|
|
435518
|
-
version: "1.
|
|
435562
|
+
version: "1.77.2",
|
|
435519
435563
|
protocolVersion: "0.1.0",
|
|
435520
435564
|
workspaceRoot: options2.cwd,
|
|
435521
435565
|
capabilities: {
|
|
@@ -452623,7 +452667,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
452623
452667
|
return [];
|
|
452624
452668
|
}
|
|
452625
452669
|
}
|
|
452626
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.
|
|
452670
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.77.2") {
|
|
452627
452671
|
if (process.env.USER_TYPE === "ant") {
|
|
452628
452672
|
const changelog = "";
|
|
452629
452673
|
if (changelog) {
|
|
@@ -452650,7 +452694,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.76.10")
|
|
|
452650
452694
|
releaseNotes
|
|
452651
452695
|
};
|
|
452652
452696
|
}
|
|
452653
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.
|
|
452697
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.77.2") {
|
|
452654
452698
|
if (process.env.USER_TYPE === "ant") {
|
|
452655
452699
|
const changelog = "";
|
|
452656
452700
|
if (changelog) {
|
|
@@ -455516,7 +455560,7 @@ function getRecentActivitySync() {
|
|
|
455516
455560
|
return cachedActivity;
|
|
455517
455561
|
}
|
|
455518
455562
|
function getLogoDisplayData() {
|
|
455519
|
-
const version2 = process.env.DEMO_VERSION ?? "1.
|
|
455563
|
+
const version2 = process.env.DEMO_VERSION ?? "1.77.2";
|
|
455520
455564
|
const serverUrl = getDirectConnectServerUrl();
|
|
455521
455565
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
455522
455566
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -456383,7 +456427,7 @@ function LogoV2() {
|
|
|
456383
456427
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
456384
456428
|
t2 = () => {
|
|
456385
456429
|
const currentConfig2 = getGlobalConfig();
|
|
456386
|
-
if (currentConfig2.lastReleaseNotesSeen === "1.
|
|
456430
|
+
if (currentConfig2.lastReleaseNotesSeen === "1.77.2") {
|
|
456387
456431
|
return;
|
|
456388
456432
|
}
|
|
456389
456433
|
saveGlobalConfig(_temp325);
|
|
@@ -457068,12 +457112,12 @@ function LogoV2() {
|
|
|
457068
457112
|
return t41;
|
|
457069
457113
|
}
|
|
457070
457114
|
function _temp325(current) {
|
|
457071
|
-
if (current.lastReleaseNotesSeen === "1.
|
|
457115
|
+
if (current.lastReleaseNotesSeen === "1.77.2") {
|
|
457072
457116
|
return current;
|
|
457073
457117
|
}
|
|
457074
457118
|
return {
|
|
457075
457119
|
...current,
|
|
457076
|
-
lastReleaseNotesSeen: "1.
|
|
457120
|
+
lastReleaseNotesSeen: "1.77.2"
|
|
457077
457121
|
};
|
|
457078
457122
|
}
|
|
457079
457123
|
function _temp241(s_0) {
|
|
@@ -473887,7 +473931,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
473887
473931
|
if (spec.name !== specName) {
|
|
473888
473932
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
473889
473933
|
}
|
|
473890
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.
|
|
473934
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.77.2" : "1.77.2");
|
|
473891
473935
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
473892
473936
|
throw new Error("invalid ur-agent package version");
|
|
473893
473937
|
}
|
|
@@ -474880,7 +474924,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
474880
474924
|
path: ".github/workflows/ur.yml",
|
|
474881
474925
|
root: "project",
|
|
474882
474926
|
content: compileAgenticCiWorkflow("default", {
|
|
474883
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.
|
|
474927
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.77.2" : "1.77.2"
|
|
474884
474928
|
})
|
|
474885
474929
|
},
|
|
474886
474930
|
{
|
|
@@ -474943,7 +474987,7 @@ function value(tokens, flag) {
|
|
|
474943
474987
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
474944
474988
|
}
|
|
474945
474989
|
function cliVersion() {
|
|
474946
|
-
return typeof MACRO !== "undefined" ? "1.
|
|
474990
|
+
return typeof MACRO !== "undefined" ? "1.77.2" : "1.77.2";
|
|
474947
474991
|
}
|
|
474948
474992
|
function workflowPath(cwd2) {
|
|
474949
474993
|
return join159(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -480799,7 +480843,7 @@ function createAcpStdioApp(deps) {
|
|
|
480799
480843
|
}
|
|
480800
480844
|
},
|
|
480801
480845
|
authMethods: [],
|
|
480802
|
-
agentInfo: { name: "UR-Nexus", version: "1.
|
|
480846
|
+
agentInfo: { name: "UR-Nexus", version: "1.77.2" }
|
|
480803
480847
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
480804
480848
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
480805
480849
|
await runtime2.announce({
|
|
@@ -480896,7 +480940,7 @@ function createAcpStdioAgent(deps) {
|
|
|
480896
480940
|
}
|
|
480897
480941
|
},
|
|
480898
480942
|
authMethods: [],
|
|
480899
|
-
agentInfo: { name: "UR-Nexus", version: "1.
|
|
480943
|
+
agentInfo: { name: "UR-Nexus", version: "1.77.2" }
|
|
480900
480944
|
});
|
|
480901
480945
|
return;
|
|
480902
480946
|
case "authenticate":
|
|
@@ -690356,7 +690400,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
690356
690400
|
smapsRollup,
|
|
690357
690401
|
platform: process.platform,
|
|
690358
690402
|
nodeVersion: process.version,
|
|
690359
|
-
ccVersion: "1.
|
|
690403
|
+
ccVersion: "1.77.2"
|
|
690360
690404
|
};
|
|
690361
690405
|
}
|
|
690362
690406
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -690936,7 +690980,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
690936
690980
|
var call154 = async () => {
|
|
690937
690981
|
return {
|
|
690938
690982
|
type: "text",
|
|
690939
|
-
value: "1.
|
|
690983
|
+
value: "1.77.2"
|
|
690940
690984
|
};
|
|
690941
690985
|
}, version2, version_default;
|
|
690942
690986
|
var init_version = __esm(() => {
|
|
@@ -702203,7 +702247,7 @@ function generateHtmlReport(data, insights) {
|
|
|
702203
702247
|
</html>`;
|
|
702204
702248
|
}
|
|
702205
702249
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
702206
|
-
const version3 = typeof MACRO !== "undefined" ? "1.
|
|
702250
|
+
const version3 = typeof MACRO !== "undefined" ? "1.77.2" : "unknown";
|
|
702207
702251
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
702208
702252
|
const facets_summary = {
|
|
702209
702253
|
total: facets.size,
|
|
@@ -706517,7 +706561,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
706517
706561
|
init_settings2();
|
|
706518
706562
|
init_slowOperations();
|
|
706519
706563
|
init_uuid();
|
|
706520
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.
|
|
706564
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.77.2" : "unknown";
|
|
706521
706565
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
706522
706566
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
706523
706567
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -707732,7 +707776,7 @@ var init_filesystem = __esm(() => {
|
|
|
707732
707776
|
});
|
|
707733
707777
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
707734
707778
|
const nonce = randomBytes20(16).toString("hex");
|
|
707735
|
-
return join232(getURTempDir(), "bundled-skills", "1.
|
|
707779
|
+
return join232(getURTempDir(), "bundled-skills", "1.77.2", nonce);
|
|
707736
707780
|
});
|
|
707737
707781
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
707738
707782
|
});
|
|
@@ -713371,6 +713415,12 @@ Focus text output on:
|
|
|
713371
713415
|
- High-level status updates at natural milestones
|
|
713372
713416
|
- Errors or blockers that change the plan
|
|
713373
713417
|
|
|
713418
|
+
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:
|
|
713419
|
+
- Never paste code, file contents, or diffs you already wrote to disk. Cite \`file_path:line\` instead. The user can open the file.
|
|
713420
|
+
- 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.
|
|
713421
|
+
- Do not re-explain a change you already described, list every file touched, or add a closing recap of the conversation.
|
|
713422
|
+
- Write a long explanation only when the user asks for one.
|
|
713423
|
+
|
|
713374
713424
|
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
713425
|
}
|
|
713376
713426
|
function getSimpleToneAndStyleSection() {
|
|
@@ -713593,7 +713643,7 @@ function getFunctionResultClearingSection(model) {
|
|
|
713593
713643
|
|
|
713594
713644
|
Old tool results will be automatically cleared from context to free up space. The ${config3.keepRecent} most recent results are always kept.`;
|
|
713595
713645
|
}
|
|
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
|
|
713646
|
+
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
713647
|
var init_prompts4 = __esm(() => {
|
|
713598
713648
|
init_env();
|
|
713599
713649
|
init_git();
|
|
@@ -714081,7 +714131,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
714081
714131
|
}
|
|
714082
714132
|
function computeFingerprintFromMessages(messages) {
|
|
714083
714133
|
const firstMessageText = extractFirstMessageText(messages);
|
|
714084
|
-
return computeFingerprint(firstMessageText, "1.
|
|
714134
|
+
return computeFingerprint(firstMessageText, "1.77.2");
|
|
714085
714135
|
}
|
|
714086
714136
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
714087
714137
|
var init_fingerprint = () => {};
|
|
@@ -716003,7 +716053,7 @@ async function sideQuery(opts) {
|
|
|
716003
716053
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
716004
716054
|
}
|
|
716005
716055
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
716006
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.
|
|
716056
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.77.2");
|
|
716007
716057
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
716008
716058
|
const systemBlocks = [
|
|
716009
716059
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -720840,7 +720890,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
720840
720890
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
720841
720891
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
720842
720892
|
betas: getSdkBetas(),
|
|
720843
|
-
ur_version: "1.
|
|
720893
|
+
ur_version: "1.77.2",
|
|
720844
720894
|
output_style: outputStyle2,
|
|
720845
720895
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
720846
720896
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -734712,7 +734762,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
734712
734762
|
function getSemverPart(version3) {
|
|
734713
734763
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
734714
734764
|
}
|
|
734715
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.
|
|
734765
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.77.2") {
|
|
734716
734766
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react223.useState(() => getSemverPart(initialVersion));
|
|
734717
734767
|
if (!updatedVersion) {
|
|
734718
734768
|
return null;
|
|
@@ -734761,7 +734811,7 @@ function AutoUpdater({
|
|
|
734761
734811
|
return;
|
|
734762
734812
|
}
|
|
734763
734813
|
if (false) {}
|
|
734764
|
-
const currentVersion = "1.
|
|
734814
|
+
const currentVersion = "1.77.2";
|
|
734765
734815
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
734766
734816
|
let latestVersion = await getLatestVersion(channel);
|
|
734767
734817
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -734990,12 +735040,12 @@ function NativeAutoUpdater({
|
|
|
734990
735040
|
logEvent("tengu_native_auto_updater_start", {});
|
|
734991
735041
|
try {
|
|
734992
735042
|
const maxVersion = await getMaxVersion();
|
|
734993
|
-
if (maxVersion && gt("1.
|
|
735043
|
+
if (maxVersion && gt("1.77.2", maxVersion)) {
|
|
734994
735044
|
const msg = await getMaxVersionMessage();
|
|
734995
735045
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
734996
735046
|
}
|
|
734997
735047
|
const result = await installLatest(channel);
|
|
734998
|
-
const currentVersion = "1.
|
|
735048
|
+
const currentVersion = "1.77.2";
|
|
734999
735049
|
const latencyMs = Date.now() - startTime;
|
|
735000
735050
|
if (result.lockFailed) {
|
|
735001
735051
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -735132,17 +735182,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
735132
735182
|
const maxVersion = await getMaxVersion();
|
|
735133
735183
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
735134
735184
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
735135
|
-
if (gte("1.
|
|
735136
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.
|
|
735185
|
+
if (gte("1.77.2", maxVersion)) {
|
|
735186
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.77.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
735137
735187
|
setUpdateAvailable(false);
|
|
735138
735188
|
return;
|
|
735139
735189
|
}
|
|
735140
735190
|
latest = maxVersion;
|
|
735141
735191
|
}
|
|
735142
|
-
const hasUpdate = latest && !gte("1.
|
|
735192
|
+
const hasUpdate = latest && !gte("1.77.2", latest) && !shouldSkipVersion(latest);
|
|
735143
735193
|
setUpdateAvailable(!!hasUpdate);
|
|
735144
735194
|
if (hasUpdate) {
|
|
735145
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.
|
|
735195
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.77.2"} -> ${latest}`);
|
|
735146
735196
|
}
|
|
735147
735197
|
};
|
|
735148
735198
|
$2[0] = t1;
|
|
@@ -735176,7 +735226,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
735176
735226
|
wrap: "truncate",
|
|
735177
735227
|
children: [
|
|
735178
735228
|
"currentVersion: ",
|
|
735179
|
-
"1.
|
|
735229
|
+
"1.77.2"
|
|
735180
735230
|
]
|
|
735181
735231
|
}, undefined, true, undefined, this);
|
|
735182
735232
|
$2[3] = verbose;
|
|
@@ -745976,7 +746026,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
745976
746026
|
project_dir: getOriginalCwd(),
|
|
745977
746027
|
added_dirs: addedDirs
|
|
745978
746028
|
},
|
|
745979
|
-
version: "1.
|
|
746029
|
+
version: "1.77.2",
|
|
745980
746030
|
output_style: {
|
|
745981
746031
|
name: outputStyleName
|
|
745982
746032
|
},
|
|
@@ -746111,7 +746161,7 @@ function StatusLineInner({
|
|
|
746111
746161
|
const attention = customStatusError ?? taskAttention;
|
|
746112
746162
|
const terminalSize = React132.useContext(TerminalSizeContext);
|
|
746113
746163
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
746114
|
-
version: "1.
|
|
746164
|
+
version: "1.77.2",
|
|
746115
746165
|
providerLabel: providerRuntime.providerLabel,
|
|
746116
746166
|
authMode: providerRuntime.authLabel,
|
|
746117
746167
|
model: renderModelName(mainLoopModel) || providerRuntime.model || "",
|
|
@@ -758396,7 +758446,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
758396
758446
|
} catch {}
|
|
758397
758447
|
const data = {
|
|
758398
758448
|
trigger: trigger2,
|
|
758399
|
-
version: "1.
|
|
758449
|
+
version: "1.77.2",
|
|
758400
758450
|
platform: process.platform,
|
|
758401
758451
|
transcript,
|
|
758402
758452
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -770770,7 +770820,7 @@ function WelcomeV2() {
|
|
|
770770
770820
|
dimColor: true,
|
|
770771
770821
|
children: [
|
|
770772
770822
|
"v",
|
|
770773
|
-
"1.
|
|
770823
|
+
"1.77.2"
|
|
770774
770824
|
]
|
|
770775
770825
|
}, undefined, true, undefined, this)
|
|
770776
770826
|
]
|
|
@@ -772030,7 +772080,7 @@ function completeOnboarding() {
|
|
|
772030
772080
|
saveGlobalConfig((current) => ({
|
|
772031
772081
|
...current,
|
|
772032
772082
|
hasCompletedOnboarding: true,
|
|
772033
|
-
lastOnboardingVersion: "1.
|
|
772083
|
+
lastOnboardingVersion: "1.77.2"
|
|
772034
772084
|
}));
|
|
772035
772085
|
}
|
|
772036
772086
|
function showDialog(root2, renderer) {
|
|
@@ -777074,7 +777124,7 @@ function appendToLog(path24, message) {
|
|
|
777074
777124
|
cwd: getFsImplementation().cwd(),
|
|
777075
777125
|
userType: process.env.USER_TYPE,
|
|
777076
777126
|
sessionId: getSessionId(),
|
|
777077
|
-
version: "1.
|
|
777127
|
+
version: "1.77.2"
|
|
777078
777128
|
};
|
|
777079
777129
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
777080
777130
|
}
|
|
@@ -781233,8 +781283,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
781233
781283
|
}
|
|
781234
781284
|
async function checkEnvLessBridgeMinVersion() {
|
|
781235
781285
|
const cfg = await getEnvLessBridgeConfig();
|
|
781236
|
-
if (cfg.min_version && lt("1.
|
|
781237
|
-
return `Your version of UR (${"1.
|
|
781286
|
+
if (cfg.min_version && lt("1.77.2", cfg.min_version)) {
|
|
781287
|
+
return `Your version of UR (${"1.77.2"}) is too old for Remote Control.
|
|
781238
781288
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
781239
781289
|
}
|
|
781240
781290
|
return null;
|
|
@@ -781708,7 +781758,7 @@ async function initBridgeCore(params) {
|
|
|
781708
781758
|
const rawApi = createBridgeApiClient({
|
|
781709
781759
|
baseUrl,
|
|
781710
781760
|
getAccessToken,
|
|
781711
|
-
runnerVersion: "1.
|
|
781761
|
+
runnerVersion: "1.77.2",
|
|
781712
781762
|
onDebug: logForDebugging,
|
|
781713
781763
|
onAuth401,
|
|
781714
781764
|
getTrustedDeviceToken
|
|
@@ -791181,7 +791231,7 @@ function getAgUiCapabilities() {
|
|
|
791181
791231
|
name: "UR-Nexus",
|
|
791182
791232
|
type: "ur-nexus",
|
|
791183
791233
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
791184
|
-
version: "1.
|
|
791234
|
+
version: "1.77.2",
|
|
791185
791235
|
provider: "UR",
|
|
791186
791236
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
791187
791237
|
},
|
|
@@ -792321,7 +792371,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
792321
792371
|
};
|
|
792322
792372
|
const server2 = new Server({
|
|
792323
792373
|
name: "ur-nexus",
|
|
792324
|
-
version: "1.
|
|
792374
|
+
version: "1.77.2"
|
|
792325
792375
|
}, {
|
|
792326
792376
|
capabilities: {
|
|
792327
792377
|
tools: {}
|
|
@@ -793479,7 +793529,7 @@ function thrownResponse(error40) {
|
|
|
793479
793529
|
}
|
|
793480
793530
|
async function createUrMcp2026Runtime(options4) {
|
|
793481
793531
|
const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
|
|
793482
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.
|
|
793532
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.77.2" }, { capabilities: {} });
|
|
793483
793533
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
793484
793534
|
try {
|
|
793485
793535
|
await server2.connect(serverTransport);
|
|
@@ -793490,7 +793540,7 @@ async function createUrMcp2026Runtime(options4) {
|
|
|
793490
793540
|
}
|
|
793491
793541
|
const runtime2 = new Mcp2026Runtime({
|
|
793492
793542
|
cwd: options4.cwd,
|
|
793493
|
-
version: "1.
|
|
793543
|
+
version: "1.77.2",
|
|
793494
793544
|
backend: {
|
|
793495
793545
|
listTools: async () => {
|
|
793496
793546
|
const listed = await client2.listTools();
|
|
@@ -795631,7 +795681,7 @@ async function update() {
|
|
|
795631
795681
|
logEvent("tengu_update_check", {});
|
|
795632
795682
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
795633
795683
|
const result = await checkUpgradeStatus({
|
|
795634
|
-
currentVersion: "1.
|
|
795684
|
+
currentVersion: "1.77.2",
|
|
795635
795685
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
795636
795686
|
installationType: diagnostic2.installationType,
|
|
795637
795687
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -796947,7 +796997,7 @@ ${customInstructions}` : customInstructions;
|
|
|
796947
796997
|
}
|
|
796948
796998
|
}
|
|
796949
796999
|
logForDiagnosticsNoPII("info", "started", {
|
|
796950
|
-
version: "1.
|
|
797000
|
+
version: "1.77.2",
|
|
796951
797001
|
is_native_binary: isInBundledMode()
|
|
796952
797002
|
});
|
|
796953
797003
|
registerCleanup(async () => {
|
|
@@ -797733,7 +797783,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
797733
797783
|
pendingHookMessages
|
|
797734
797784
|
}, renderAndRun);
|
|
797735
797785
|
}
|
|
797736
|
-
}).version("1.
|
|
797786
|
+
}).version("1.77.2 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
797737
797787
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
797738
797788
|
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
797789
|
if (canUserConfigureAdvisor()) {
|
|
@@ -798785,7 +798835,7 @@ if (false) {}
|
|
|
798785
798835
|
async function main2() {
|
|
798786
798836
|
const args = process.argv.slice(2);
|
|
798787
798837
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
798788
|
-
console.log(`${"1.
|
|
798838
|
+
console.log(`${"1.77.2"} (UR-Nexus)`);
|
|
798789
798839
|
return;
|
|
798790
798840
|
}
|
|
798791
798841
|
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.2</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.2",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED