ur-agent 1.76.7 → 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/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)
|
|
@@ -87800,7 +87835,7 @@ function normalizeAskUserQuestionInput(value) {
|
|
|
87800
87835
|
...commonFields
|
|
87801
87836
|
};
|
|
87802
87837
|
}
|
|
87803
|
-
return
|
|
87838
|
+
return input;
|
|
87804
87839
|
}
|
|
87805
87840
|
if (Array.isArray(input.questions)) {
|
|
87806
87841
|
const normalized = input.questions.map((entry, index2) => normalizeQuestionInput(entry, index2)).filter((entry) => entry !== null && typeof entry === "object");
|
|
@@ -87810,7 +87845,14 @@ function normalizeAskUserQuestionInput(value) {
|
|
|
87810
87845
|
...commonFields
|
|
87811
87846
|
};
|
|
87812
87847
|
}
|
|
87813
|
-
|
|
87848
|
+
const recovered = recoverFlattenedOptions(input, input.questions);
|
|
87849
|
+
if (recovered && typeof recovered === "object") {
|
|
87850
|
+
return {
|
|
87851
|
+
questions: dedupeQuestions([recovered]),
|
|
87852
|
+
...commonFields
|
|
87853
|
+
};
|
|
87854
|
+
}
|
|
87855
|
+
return input;
|
|
87814
87856
|
}
|
|
87815
87857
|
if (optionsField(input) !== null) {
|
|
87816
87858
|
const singleQuestion = normalizeQuestionInput(input, 0);
|
|
@@ -87821,7 +87863,7 @@ function normalizeAskUserQuestionInput(value) {
|
|
|
87821
87863
|
};
|
|
87822
87864
|
}
|
|
87823
87865
|
}
|
|
87824
|
-
return
|
|
87866
|
+
return input;
|
|
87825
87867
|
}
|
|
87826
87868
|
function AskUserQuestionResultMessage(t0) {
|
|
87827
87869
|
const $2 = import_compiler_runtime17.c(3);
|
|
@@ -89879,13 +89921,15 @@ async function* readOllamaChunks(response, controller, timeoutMs, options) {
|
|
|
89879
89921
|
const reader = response.body.getReader();
|
|
89880
89922
|
const decoder = new TextDecoder;
|
|
89881
89923
|
let buffer = "";
|
|
89882
|
-
const
|
|
89924
|
+
const nextDeadline = () => timeoutMs > 0 ? Date.now() + timeoutMs : Infinity;
|
|
89925
|
+
let deadline = nextDeadline();
|
|
89883
89926
|
try {
|
|
89884
89927
|
while (true) {
|
|
89885
89928
|
const { done, value } = await readWithDeadline(reader, deadline, controller, options);
|
|
89886
89929
|
if (done) {
|
|
89887
89930
|
break;
|
|
89888
89931
|
}
|
|
89932
|
+
deadline = nextDeadline();
|
|
89889
89933
|
buffer += decoder.decode(value, { stream: true });
|
|
89890
89934
|
let newlineIndex = buffer.indexOf(`
|
|
89891
89935
|
`);
|
|
@@ -90463,7 +90507,7 @@ function withStreamIdleTimeout(source, idleMs, onTimeout) {
|
|
|
90463
90507
|
}
|
|
90464
90508
|
});
|
|
90465
90509
|
}
|
|
90466
|
-
var DEFAULT_STREAM_IDLE_TIMEOUT_MS =
|
|
90510
|
+
var DEFAULT_STREAM_IDLE_TIMEOUT_MS = 300000, StreamIdleTimeoutError;
|
|
90467
90511
|
var init_streamIdleTimeout = __esm(() => {
|
|
90468
90512
|
StreamIdleTimeoutError = class StreamIdleTimeoutError extends Error {
|
|
90469
90513
|
idleMs;
|
|
@@ -90498,6 +90542,12 @@ function parseNonNegativeInteger(value) {
|
|
|
90498
90542
|
function getProviderRequestTimeoutMs(override) {
|
|
90499
90543
|
return parsePositiveInteger(override) ?? parsePositiveInteger(process.env.API_TIMEOUT_MS) ?? parsePositiveInteger(process.env.UR_API_TIMEOUT_MS) ?? parsePositiveInteger(getInitialSettings().provider?.timeoutMs) ?? DEFAULT_PROVIDER_REQUEST_TIMEOUT_MS;
|
|
90500
90544
|
}
|
|
90545
|
+
function getProviderStreamTimeoutMs(override) {
|
|
90546
|
+
const explicit = parsePositiveInteger(override) ?? parsePositiveInteger(process.env.UR_STREAM_REQUEST_TIMEOUT_MS) ?? parsePositiveInteger(getInitialSettings().provider?.streamTimeoutMs);
|
|
90547
|
+
if (explicit !== undefined)
|
|
90548
|
+
return explicit;
|
|
90549
|
+
return Math.max(DEFAULT_PROVIDER_STREAM_TIMEOUT_MS, getProviderRequestTimeoutMs());
|
|
90550
|
+
}
|
|
90501
90551
|
function normalizeProviderMaxRetries(value) {
|
|
90502
90552
|
const parsed = parseNonNegativeInteger(value);
|
|
90503
90553
|
if (parsed === undefined)
|
|
@@ -90644,7 +90694,7 @@ async function waitForResponseBody(response, signal) {
|
|
|
90644
90694
|
}
|
|
90645
90695
|
}
|
|
90646
90696
|
async function fetchWithProviderReliability(input, init, options) {
|
|
90647
|
-
const timeoutMs = getProviderRequestTimeoutMs(options.timeoutMs);
|
|
90697
|
+
const timeoutMs = options.streaming ? getProviderStreamTimeoutMs(options.timeoutMs) : getProviderRequestTimeoutMs(options.timeoutMs);
|
|
90648
90698
|
const fetchImpl = options.fetch ?? fetch;
|
|
90649
90699
|
return withProviderRetry(async () => {
|
|
90650
90700
|
const timeout = createTimeoutSignal(options.signal, timeoutMs);
|
|
@@ -90685,7 +90735,7 @@ async function fetchWithProviderReliability(input, init, options) {
|
|
|
90685
90735
|
}, options);
|
|
90686
90736
|
}
|
|
90687
90737
|
async function axiosPostWithProviderReliability(url3, body, config2, options = {}) {
|
|
90688
|
-
const timeout = getProviderRequestTimeoutMs(options.timeoutMs);
|
|
90738
|
+
const timeout = options.streaming ? getProviderStreamTimeoutMs(options.timeoutMs) : getProviderRequestTimeoutMs(options.timeoutMs);
|
|
90689
90739
|
return withProviderRetry(() => axios_default.post(url3, body, {
|
|
90690
90740
|
...config2,
|
|
90691
90741
|
timeout,
|
|
@@ -90726,7 +90776,7 @@ function normalizeProviderEndpoint(baseUrl, defaultBaseUrl, finalSegment) {
|
|
|
90726
90776
|
}
|
|
90727
90777
|
return url3.toString().replace(/\/$/, "");
|
|
90728
90778
|
}
|
|
90729
|
-
var DEFAULT_PROVIDER_REQUEST_TIMEOUT_MS = 120000, DEFAULT_PROVIDER_MAX_RETRIES = 3, DEFAULT_RETRY_BASE_DELAY_MS = 250, RETRYABLE_STATUSES, NON_RETRYABLE_STATUSES, TRANSIENT_NETWORK_CODES, ProviderHTTPError, ProviderTimeoutError;
|
|
90779
|
+
var DEFAULT_PROVIDER_REQUEST_TIMEOUT_MS = 120000, DEFAULT_PROVIDER_STREAM_TIMEOUT_MS = 900000, DEFAULT_PROVIDER_MAX_RETRIES = 3, DEFAULT_RETRY_BASE_DELAY_MS = 250, RETRYABLE_STATUSES, NON_RETRYABLE_STATUSES, TRANSIENT_NETWORK_CODES, ProviderHTTPError, ProviderTimeoutError;
|
|
90730
90780
|
var init_providerHttp = __esm(() => {
|
|
90731
90781
|
init_axios2();
|
|
90732
90782
|
init_settings2();
|
|
@@ -90973,6 +91023,10 @@ async function* streamOpenAIEvents(body, options) {
|
|
|
90973
91023
|
}
|
|
90974
91024
|
};
|
|
90975
91025
|
for await (const payload of readSSEData(body, options.signal)) {
|
|
91026
|
+
if (payload === SSE_KEEPALIVE) {
|
|
91027
|
+
yield { type: "ping" };
|
|
91028
|
+
continue;
|
|
91029
|
+
}
|
|
90976
91030
|
if (payload === "[DONE]") {
|
|
90977
91031
|
sawDone = true;
|
|
90978
91032
|
break;
|
|
@@ -91187,6 +91241,10 @@ async function* streamOpenAIResponsesEvents(body, options) {
|
|
|
91187
91241
|
};
|
|
91188
91242
|
};
|
|
91189
91243
|
for await (const payload of readSSEData(body, options.signal)) {
|
|
91244
|
+
if (payload === SSE_KEEPALIVE) {
|
|
91245
|
+
yield { type: "ping" };
|
|
91246
|
+
continue;
|
|
91247
|
+
}
|
|
91190
91248
|
if (payload === "[DONE]")
|
|
91191
91249
|
break;
|
|
91192
91250
|
const event = parseJSONPayload(payload, `${providerName} SSE event`);
|
|
@@ -91339,11 +91397,19 @@ async function* streamAnthropicEvents(body, options) {
|
|
|
91339
91397
|
const toolIds = new Set;
|
|
91340
91398
|
const streamedToolInputs = new Map;
|
|
91341
91399
|
for await (const payload of readSSEData(body, options.signal)) {
|
|
91400
|
+
if (payload === SSE_KEEPALIVE) {
|
|
91401
|
+
yield { type: "ping" };
|
|
91402
|
+
continue;
|
|
91403
|
+
}
|
|
91342
91404
|
if (payload === "[DONE]")
|
|
91343
91405
|
break;
|
|
91344
91406
|
const event = parseJSONPayload(payload, `${providerName} SSE event`);
|
|
91345
|
-
if (!event
|
|
91407
|
+
if (!event)
|
|
91408
|
+
continue;
|
|
91409
|
+
if (event.type === "ping") {
|
|
91410
|
+
yield { type: "ping" };
|
|
91346
91411
|
continue;
|
|
91412
|
+
}
|
|
91347
91413
|
throwProviderPayloadError(event, providerName);
|
|
91348
91414
|
if (!sawMessageStart && event.type !== "message_start") {
|
|
91349
91415
|
sawMessageStart = true;
|
|
@@ -91510,6 +91576,10 @@ async function* streamGeminiEvents(body, options) {
|
|
|
91510
91576
|
yield { type: "content_block_stop", index: currentIndex };
|
|
91511
91577
|
};
|
|
91512
91578
|
for await (const payload of readSSEData(body, options.signal)) {
|
|
91579
|
+
if (payload === SSE_KEEPALIVE) {
|
|
91580
|
+
yield { type: "ping" };
|
|
91581
|
+
continue;
|
|
91582
|
+
}
|
|
91513
91583
|
if (payload === "[DONE]")
|
|
91514
91584
|
break;
|
|
91515
91585
|
const parsed = parseJSONPayload(payload, `${providerName} SSE chunk`);
|
|
@@ -91628,6 +91698,7 @@ async function* readSSEData(body, signal) {
|
|
|
91628
91698
|
let buffer = "";
|
|
91629
91699
|
for await (const chunk of readTextChunks(body, signal)) {
|
|
91630
91700
|
buffer += chunk;
|
|
91701
|
+
let emitted = false;
|
|
91631
91702
|
while (true) {
|
|
91632
91703
|
const delimiter = findSSEDelimiter(buffer);
|
|
91633
91704
|
if (!delimiter)
|
|
@@ -91635,9 +91706,13 @@ async function* readSSEData(body, signal) {
|
|
|
91635
91706
|
const rawEvent = buffer.slice(0, delimiter.index);
|
|
91636
91707
|
buffer = buffer.slice(delimiter.index + delimiter.length);
|
|
91637
91708
|
const data = parseSSEEvent(rawEvent);
|
|
91638
|
-
if (data !== undefined)
|
|
91709
|
+
if (data !== undefined) {
|
|
91710
|
+
emitted = true;
|
|
91639
91711
|
yield data;
|
|
91712
|
+
}
|
|
91640
91713
|
}
|
|
91714
|
+
if (!emitted)
|
|
91715
|
+
yield SSE_KEEPALIVE;
|
|
91641
91716
|
}
|
|
91642
91717
|
if (buffer.trim()) {
|
|
91643
91718
|
const data = parseSSEEvent(buffer);
|
|
@@ -91845,7 +91920,7 @@ function canonicalJson(value) {
|
|
|
91845
91920
|
}
|
|
91846
91921
|
return JSON.stringify(value);
|
|
91847
91922
|
}
|
|
91848
|
-
var EMPTY_USAGE;
|
|
91923
|
+
var EMPTY_USAGE, SSE_KEEPALIVE = "\x00ur:sse-keepalive";
|
|
91849
91924
|
var init_streamingAdapters = __esm(() => {
|
|
91850
91925
|
init_providerClient();
|
|
91851
91926
|
init_json();
|
|
@@ -92788,7 +92863,8 @@ async function createOpenRouterClient(options) {
|
|
|
92788
92863
|
}, {
|
|
92789
92864
|
maxRetries,
|
|
92790
92865
|
timeoutMs: requestOptions?.timeoutMs,
|
|
92791
|
-
signal
|
|
92866
|
+
signal,
|
|
92867
|
+
streaming: true
|
|
92792
92868
|
});
|
|
92793
92869
|
const requestId = response.headers?.["x-request-id"] ?? `openrouter-${randomUUID7()}`;
|
|
92794
92870
|
return {
|
|
@@ -94046,7 +94122,8 @@ async function createStandardAPIClient(options) {
|
|
|
94046
94122
|
}, {
|
|
94047
94123
|
maxRetries,
|
|
94048
94124
|
timeoutMs: requestOptions?.timeoutMs,
|
|
94049
|
-
signal
|
|
94125
|
+
signal,
|
|
94126
|
+
streaming: true
|
|
94050
94127
|
});
|
|
94051
94128
|
const requestId = providerRequestId(family, response.headers) ?? `${family}-${randomUUID10()}`;
|
|
94052
94129
|
const streamOptions = {
|
|
@@ -107465,7 +107542,7 @@ var init_auth = __esm(() => {
|
|
|
107465
107542
|
|
|
107466
107543
|
// src/utils/userAgent.ts
|
|
107467
107544
|
function getURCodeUserAgent() {
|
|
107468
|
-
return `ur/${"1.
|
|
107545
|
+
return `ur/${"1.77.1"}`;
|
|
107469
107546
|
}
|
|
107470
107547
|
|
|
107471
107548
|
// src/utils/workloadContext.ts
|
|
@@ -107487,7 +107564,7 @@ function getUserAgent() {
|
|
|
107487
107564
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
107488
107565
|
const workload = getWorkload();
|
|
107489
107566
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
107490
|
-
return `ur-cli/${"1.
|
|
107567
|
+
return `ur-cli/${"1.77.1"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
107491
107568
|
}
|
|
107492
107569
|
function getMCPUserAgent() {
|
|
107493
107570
|
const parts = [];
|
|
@@ -107501,7 +107578,7 @@ function getMCPUserAgent() {
|
|
|
107501
107578
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
107502
107579
|
}
|
|
107503
107580
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
107504
|
-
return `ur/${"1.
|
|
107581
|
+
return `ur/${"1.77.1"}${suffix}`;
|
|
107505
107582
|
}
|
|
107506
107583
|
function getWebFetchUserAgent() {
|
|
107507
107584
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -107639,7 +107716,7 @@ var init_user = __esm(() => {
|
|
|
107639
107716
|
deviceId,
|
|
107640
107717
|
sessionId: getSessionId(),
|
|
107641
107718
|
email: getEmail(),
|
|
107642
|
-
appVersion: "1.
|
|
107719
|
+
appVersion: "1.77.1",
|
|
107643
107720
|
platform: getHostPlatformForAnalytics(),
|
|
107644
107721
|
organizationUuid,
|
|
107645
107722
|
accountUuid,
|
|
@@ -115526,7 +115603,7 @@ var init_metadata = __esm(() => {
|
|
|
115526
115603
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
115527
115604
|
WHITESPACE_REGEX = /\s+/;
|
|
115528
115605
|
getVersionBase = memoize_default(() => {
|
|
115529
|
-
const match = "1.
|
|
115606
|
+
const match = "1.77.1".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
115530
115607
|
return match ? match[0] : undefined;
|
|
115531
115608
|
});
|
|
115532
115609
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -115566,7 +115643,7 @@ var init_metadata = __esm(() => {
|
|
|
115566
115643
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
115567
115644
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
115568
115645
|
isURAiAuth: isURAISubscriber(),
|
|
115569
|
-
version: "1.
|
|
115646
|
+
version: "1.77.1",
|
|
115570
115647
|
versionBase: getVersionBase(),
|
|
115571
115648
|
buildTime: "",
|
|
115572
115649
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -116236,7 +116313,7 @@ function initialize1PEventLogging() {
|
|
|
116236
116313
|
const platform2 = getPlatform();
|
|
116237
116314
|
const attributes = {
|
|
116238
116315
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
116239
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.
|
|
116316
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.77.1"
|
|
116240
116317
|
};
|
|
116241
116318
|
if (platform2 === "wsl") {
|
|
116242
116319
|
const wslVersion = getWslVersion();
|
|
@@ -116264,7 +116341,7 @@ function initialize1PEventLogging() {
|
|
|
116264
116341
|
})
|
|
116265
116342
|
]
|
|
116266
116343
|
});
|
|
116267
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.
|
|
116344
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.77.1");
|
|
116268
116345
|
}
|
|
116269
116346
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
116270
116347
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -118714,6 +118791,7 @@ var init_types2 = __esm(() => {
|
|
|
118714
118791
|
model: exports_external.string().optional().describe("Selected model name for the active provider"),
|
|
118715
118792
|
baseUrl: exports_external.string().optional().describe("Provider base URL without embedded credentials"),
|
|
118716
118793
|
timeoutMs: exports_external.number().int().positive().optional().describe("Provider HTTP request timeout in milliseconds. Defaults to 120000."),
|
|
118794
|
+
streamTimeoutMs: exports_external.number().int().positive().optional().describe("How long a streaming request may wait for response headers, in milliseconds. Defaults to 900000; mid-stream liveness is governed by the inactivity watchdog."),
|
|
118717
118795
|
commandPath: exports_external.string().optional().describe("Explicit official CLI executable path for subscription providers"),
|
|
118718
118796
|
fallback: exports_external.union([exports_external.enum(PROVIDER_SETTING_IDS), exports_external.literal("disabled")]).optional().describe("Optional recovery provider shown by provider diagnostics; switching is always explicit"),
|
|
118719
118797
|
openaiTransport: exports_external.enum(["chat-completions", "responses"]).optional().describe("OpenAI API transport. Defaults to chat-completions; Responses is explicit opt-in."),
|
|
@@ -126045,7 +126123,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
|
|
|
126045
126123
|
function formatA2AAgentCard(options = {}, pretty = true) {
|
|
126046
126124
|
return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
|
|
126047
126125
|
}
|
|
126048
|
-
var urVersion = "1.
|
|
126126
|
+
var urVersion = "1.77.1", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
|
|
126049
126127
|
var init_trends = __esm(() => {
|
|
126050
126128
|
init_a2aCardSignature();
|
|
126051
126129
|
coverage = [
|
|
@@ -128848,7 +128926,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
128848
128926
|
if (!isAttributionHeaderEnabled()) {
|
|
128849
128927
|
return "";
|
|
128850
128928
|
}
|
|
128851
|
-
const version2 = `${"1.
|
|
128929
|
+
const version2 = `${"1.77.1"}.${fingerprint}`;
|
|
128852
128930
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
128853
128931
|
const cch = "";
|
|
128854
128932
|
const workload = getWorkload();
|
|
@@ -156847,7 +156925,7 @@ var init_projectSafety = __esm(() => {
|
|
|
156847
156925
|
function getInstruments() {
|
|
156848
156926
|
if (instruments)
|
|
156849
156927
|
return instruments;
|
|
156850
|
-
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");
|
|
156851
156929
|
instruments = {
|
|
156852
156930
|
operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
|
|
156853
156931
|
description: "GenAI operation duration.",
|
|
@@ -156945,7 +157023,7 @@ function genAiAgentAttributes() {
|
|
|
156945
157023
|
"gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
|
|
156946
157024
|
"gen_ai.provider.name": "ur",
|
|
156947
157025
|
"gen_ai.agent.name": "UR-Nexus",
|
|
156948
|
-
"gen_ai.agent.version": "1.
|
|
157026
|
+
"gen_ai.agent.version": "1.77.1"
|
|
156949
157027
|
};
|
|
156950
157028
|
}
|
|
156951
157029
|
function genAiWorkflowAttributes(workflowName) {
|
|
@@ -156961,7 +157039,7 @@ function genAiWorkflowAttributes(workflowName) {
|
|
|
156961
157039
|
function startGenAiWorkflowSpan(workflowName) {
|
|
156962
157040
|
const attributes = genAiWorkflowAttributes(workflowName);
|
|
156963
157041
|
const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
|
|
156964
|
-
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 });
|
|
156965
157043
|
}
|
|
156966
157044
|
function endGenAiWorkflowSpan(span, options2 = {}) {
|
|
156967
157045
|
try {
|
|
@@ -156999,7 +157077,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
|
|
|
156999
157077
|
if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
|
|
157000
157078
|
attributes["gen_ai.memory.record.count"] = options2.recordCount;
|
|
157001
157079
|
}
|
|
157002
|
-
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 });
|
|
157003
157081
|
}
|
|
157004
157082
|
function endGenAiMemorySpan(span, options2 = {}) {
|
|
157005
157083
|
try {
|
|
@@ -200758,7 +200836,7 @@ var require_color_convert = __commonJS((exports, module) => {
|
|
|
200758
200836
|
module.exports = convert;
|
|
200759
200837
|
});
|
|
200760
200838
|
|
|
200761
|
-
// node_modules/cli-highlight/node_modules/ansi-styles/index.js
|
|
200839
|
+
// node_modules/cli-highlight/node_modules/chalk/node_modules/ansi-styles/index.js
|
|
200762
200840
|
var require_ansi_styles = __commonJS((exports, module) => {
|
|
200763
200841
|
var wrapAnsi163 = (fn, offset) => (...args) => {
|
|
200764
200842
|
const code = fn(...args);
|
|
@@ -250647,7 +250725,7 @@ function getTelemetryAttributes() {
|
|
|
250647
250725
|
attributes["session.id"] = sessionId;
|
|
250648
250726
|
}
|
|
250649
250727
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
250650
|
-
attributes["app.version"] = "1.
|
|
250728
|
+
attributes["app.version"] = "1.77.1";
|
|
250651
250729
|
}
|
|
250652
250730
|
const oauthAccount = getOauthAccountInfo();
|
|
250653
250731
|
if (oauthAccount) {
|
|
@@ -259139,21 +259217,39 @@ async function* all3(generators, concurrencyCap = Infinity) {
|
|
|
259139
259217
|
};
|
|
259140
259218
|
const waiting = [...generators];
|
|
259141
259219
|
const promises = new Set;
|
|
259142
|
-
|
|
259143
|
-
|
|
259144
|
-
|
|
259145
|
-
|
|
259146
|
-
|
|
259147
|
-
|
|
259148
|
-
promises.
|
|
259149
|
-
|
|
259150
|
-
|
|
259151
|
-
|
|
259152
|
-
|
|
259220
|
+
const running = new Set;
|
|
259221
|
+
const start = (generator) => {
|
|
259222
|
+
running.add(generator);
|
|
259223
|
+
promises.add(next(generator));
|
|
259224
|
+
};
|
|
259225
|
+
try {
|
|
259226
|
+
while (promises.size < concurrencyCap && waiting.length > 0) {
|
|
259227
|
+
start(waiting.shift());
|
|
259228
|
+
}
|
|
259229
|
+
while (promises.size > 0) {
|
|
259230
|
+
const { done, value, generator, promise: promise2 } = await Promise.race(promises);
|
|
259231
|
+
promises.delete(promise2);
|
|
259232
|
+
if (!done) {
|
|
259233
|
+
promises.add(next(generator));
|
|
259234
|
+
if (value !== undefined) {
|
|
259235
|
+
yield value;
|
|
259236
|
+
}
|
|
259237
|
+
} else {
|
|
259238
|
+
running.delete(generator);
|
|
259239
|
+
if (waiting.length > 0) {
|
|
259240
|
+
start(waiting.shift());
|
|
259241
|
+
}
|
|
259153
259242
|
}
|
|
259154
|
-
}
|
|
259155
|
-
|
|
259156
|
-
|
|
259243
|
+
}
|
|
259244
|
+
} finally {
|
|
259245
|
+
for (const generator of running) {
|
|
259246
|
+
generator.return(undefined).catch(() => {});
|
|
259247
|
+
}
|
|
259248
|
+
for (const generator of waiting) {
|
|
259249
|
+
generator.return(undefined).catch(() => {});
|
|
259250
|
+
}
|
|
259251
|
+
for (const promise2 of promises) {
|
|
259252
|
+
promise2.catch(() => {});
|
|
259157
259253
|
}
|
|
259158
259254
|
}
|
|
259159
259255
|
}
|
|
@@ -259176,11 +259272,16 @@ var init_generators = __esm(() => {
|
|
|
259176
259272
|
|
|
259177
259273
|
// src/services/tools/toolOrchestration.ts
|
|
259178
259274
|
function getMaxToolUseConcurrency() {
|
|
259179
|
-
|
|
259180
|
-
|
|
259181
|
-
|
|
259275
|
+
for (const raw of [
|
|
259276
|
+
process.env.UR_CODE_MAX_TOOL_USE_CONCURRENCY,
|
|
259277
|
+
process.env.UR_MAX_CONCURRENT_TOOLS
|
|
259278
|
+
]) {
|
|
259279
|
+
const configured = Number.parseInt(raw ?? "", 10);
|
|
259280
|
+
if (Number.isFinite(configured) && configured >= 1) {
|
|
259281
|
+
return Math.min(configured, HARD_MAX_TOOL_USE_CONCURRENCY);
|
|
259282
|
+
}
|
|
259182
259283
|
}
|
|
259183
|
-
return
|
|
259284
|
+
return DEFAULT_MAX_TOOL_USE_CONCURRENCY;
|
|
259184
259285
|
}
|
|
259185
259286
|
function assistantMessageContainsToolUse(message, toolUseId) {
|
|
259186
259287
|
const content = message.message?.content;
|
|
@@ -297131,7 +297232,7 @@ function getInstallationEnv() {
|
|
|
297131
297232
|
return;
|
|
297132
297233
|
}
|
|
297133
297234
|
function getURCodeVersion() {
|
|
297134
|
-
return "1.
|
|
297235
|
+
return "1.77.1";
|
|
297135
297236
|
}
|
|
297136
297237
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
297137
297238
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -304462,7 +304563,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
304462
304563
|
const client2 = new Client({
|
|
304463
304564
|
name: "ur",
|
|
304464
304565
|
title: "UR",
|
|
304465
|
-
version: "1.
|
|
304566
|
+
version: "1.77.1",
|
|
304466
304567
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
304467
304568
|
websiteUrl: PRODUCT_URL
|
|
304468
304569
|
}, {
|
|
@@ -304822,7 +304923,7 @@ var init_client5 = __esm(() => {
|
|
|
304822
304923
|
const client2 = new Client({
|
|
304823
304924
|
name: "ur",
|
|
304824
304925
|
title: "UR",
|
|
304825
|
-
version: "1.
|
|
304926
|
+
version: "1.77.1",
|
|
304826
304927
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
304827
304928
|
websiteUrl: PRODUCT_URL
|
|
304828
304929
|
}, {
|
|
@@ -317375,7 +317476,7 @@ async function createRuntime() {
|
|
|
317375
317476
|
bootstrapTelemetry();
|
|
317376
317477
|
const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
|
|
317377
317478
|
[import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
|
|
317378
|
-
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.
|
|
317479
|
+
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.77.1"
|
|
317379
317480
|
}));
|
|
317380
317481
|
const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
|
|
317381
317482
|
resource,
|
|
@@ -317408,11 +317509,11 @@ async function createRuntime() {
|
|
|
317408
317509
|
setMeterProvider(meterProvider);
|
|
317409
317510
|
setLoggerProvider(loggerProvider);
|
|
317410
317511
|
if (meterProvider) {
|
|
317411
|
-
const meter = meterProvider.getMeter("ur-agent", "1.
|
|
317512
|
+
const meter = meterProvider.getMeter("ur-agent", "1.77.1");
|
|
317412
317513
|
setMeter(meter, (name, options2) => meter.createCounter(name, options2));
|
|
317413
317514
|
}
|
|
317414
317515
|
if (loggerProvider) {
|
|
317415
|
-
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.
|
|
317516
|
+
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.77.1"));
|
|
317416
317517
|
}
|
|
317417
317518
|
if (!cleanupRegistered2) {
|
|
317418
317519
|
cleanupRegistered2 = true;
|
|
@@ -318074,9 +318175,9 @@ async function assertMinVersion() {
|
|
|
318074
318175
|
if (false) {}
|
|
318075
318176
|
try {
|
|
318076
318177
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
318077
|
-
if (versionConfig.minVersion && lt("1.
|
|
318178
|
+
if (versionConfig.minVersion && lt("1.77.1", versionConfig.minVersion)) {
|
|
318078
318179
|
console.error(`
|
|
318079
|
-
It looks like your version of UR (${"1.
|
|
318180
|
+
It looks like your version of UR (${"1.77.1"}) needs an update.
|
|
318080
318181
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
318081
318182
|
|
|
318082
318183
|
To update, please run:
|
|
@@ -318292,7 +318393,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
318292
318393
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
318293
318394
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
318294
318395
|
pid: process.pid,
|
|
318295
|
-
currentVersion: "1.
|
|
318396
|
+
currentVersion: "1.77.1"
|
|
318296
318397
|
});
|
|
318297
318398
|
return "in_progress";
|
|
318298
318399
|
}
|
|
@@ -318301,7 +318402,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
318301
318402
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
318302
318403
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
318303
318404
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
318304
|
-
currentVersion: "1.
|
|
318405
|
+
currentVersion: "1.77.1"
|
|
318305
318406
|
});
|
|
318306
318407
|
console.error(`
|
|
318307
318408
|
Error: Windows NPM detected in WSL
|
|
@@ -318836,7 +318937,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
318836
318937
|
}
|
|
318837
318938
|
async function getDoctorDiagnostic() {
|
|
318838
318939
|
const installationType = await getCurrentInstallationType();
|
|
318839
|
-
const version2 = typeof MACRO !== "undefined" ? "1.
|
|
318940
|
+
const version2 = typeof MACRO !== "undefined" ? "1.77.1" : "unknown";
|
|
318840
318941
|
const installationPath = await getInstallationPath();
|
|
318841
318942
|
const invokedBinary = getInvokedBinary();
|
|
318842
318943
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -319771,8 +319872,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
319771
319872
|
const maxVersion = await getMaxVersion();
|
|
319772
319873
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
319773
319874
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
319774
|
-
if (gte("1.
|
|
319775
|
-
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`);
|
|
319776
319877
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
319777
319878
|
latency_ms: Date.now() - startTime,
|
|
319778
319879
|
max_version: maxVersion,
|
|
@@ -319783,7 +319884,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
319783
319884
|
version2 = maxVersion;
|
|
319784
319885
|
}
|
|
319785
319886
|
}
|
|
319786
|
-
if (!forceReinstall && version2 === "1.
|
|
319887
|
+
if (!forceReinstall && version2 === "1.77.1" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
319787
319888
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
319788
319889
|
logEvent("tengu_native_update_complete", {
|
|
319789
319890
|
latency_ms: Date.now() - startTime,
|
|
@@ -340957,16 +341058,8 @@ async function* runAgent({
|
|
|
340957
341058
|
}
|
|
340958
341059
|
if (message.type === "attachment") {
|
|
340959
341060
|
if (message.attachment.type === "max_turns_reached") {
|
|
340960
|
-
logForDebugging(`[Agent
|
|
340961
|
-
|
|
340962
|
-
{
|
|
340963
|
-
agentDefinition.agentType
|
|
340964
|
-
}
|
|
340965
|
-
] Reached max turns limit ($
|
|
340966
|
-
{
|
|
340967
|
-
message.attachment.maxTurns
|
|
340968
|
-
}
|
|
340969
|
-
)`);
|
|
341061
|
+
logForDebugging(`[Agent: ${agentDefinition.agentType}] Reached max turns limit (${message.attachment.maxTurns})`);
|
|
341062
|
+
yield message;
|
|
340970
341063
|
break;
|
|
340971
341064
|
}
|
|
340972
341065
|
yield message;
|
|
@@ -353962,6 +354055,15 @@ async function getShellConfigImpl() {
|
|
|
353962
354055
|
const provider = await createBashShellProvider(binShell);
|
|
353963
354056
|
return { provider };
|
|
353964
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
|
+
}
|
|
353965
354067
|
async function exec3(command, abortSignal, shellType, options2) {
|
|
353966
354068
|
const {
|
|
353967
354069
|
timeout,
|
|
@@ -354018,7 +354120,7 @@ async function exec3(command, abortSignal, shellType, options2) {
|
|
|
354018
354120
|
const usePipeMode = !!onStdout;
|
|
354019
354121
|
const taskId = generateTaskId("local_bash");
|
|
354020
354122
|
const taskOutput = new TaskOutput(taskId, onProgress ?? null, !usePipeMode);
|
|
354021
|
-
await
|
|
354123
|
+
await ensureTaskOutputDir();
|
|
354022
354124
|
let outputHandle;
|
|
354023
354125
|
let stderrHandle;
|
|
354024
354126
|
if (!usePipeMode) {
|
|
@@ -354124,7 +354226,7 @@ function setCwd(path13, relativeTo) {
|
|
|
354124
354226
|
} catch (_error) {}
|
|
354125
354227
|
}
|
|
354126
354228
|
}
|
|
354127
|
-
var DEFAULT_TIMEOUT, getShellConfig, getPsProvider, resolveProvider;
|
|
354229
|
+
var DEFAULT_TIMEOUT, getShellConfig, getPsProvider, resolveProvider, taskOutputDirReady;
|
|
354128
354230
|
var init_Shell = __esm(() => {
|
|
354129
354231
|
init_memoize();
|
|
354130
354232
|
init_analytics();
|
|
@@ -365348,8 +365450,43 @@ function stripTrailingWhitespace(str2) {
|
|
|
365348
365450
|
}
|
|
365349
365451
|
return result;
|
|
365350
365452
|
}
|
|
365453
|
+
function foldInvisibleChars(line) {
|
|
365454
|
+
return line.normalize("NFC").replace(EXOTIC_SPACES, " ").replace(ZERO_WIDTH, "");
|
|
365455
|
+
}
|
|
365351
365456
|
function normalizeLineForMatch(line) {
|
|
365352
|
-
return line.replaceAll("\t", " ").replace(/\s+$/, "");
|
|
365457
|
+
return foldInvisibleChars(line).replaceAll("\t", " ").replace(/\s+$/, "");
|
|
365458
|
+
}
|
|
365459
|
+
function lineBody(line) {
|
|
365460
|
+
return normalizeLineForMatch(line).trimStart();
|
|
365461
|
+
}
|
|
365462
|
+
function indentWidth(line) {
|
|
365463
|
+
const normalized = normalizeLineForMatch(line);
|
|
365464
|
+
return normalized.length - normalized.trimStart().length;
|
|
365465
|
+
}
|
|
365466
|
+
function shiftIndentation(text, columns) {
|
|
365467
|
+
if (columns === 0)
|
|
365468
|
+
return text;
|
|
365469
|
+
return text.split(`
|
|
365470
|
+
`).map((line) => {
|
|
365471
|
+
if (line.trim() === "")
|
|
365472
|
+
return line;
|
|
365473
|
+
if (columns > 0)
|
|
365474
|
+
return " ".repeat(columns) + line;
|
|
365475
|
+
const removable = line.length - line.trimStart().length;
|
|
365476
|
+
return line.slice(Math.min(-columns, removable));
|
|
365477
|
+
}).join(`
|
|
365478
|
+
`);
|
|
365479
|
+
}
|
|
365480
|
+
function stripLineNumberPrefixes(searchString) {
|
|
365481
|
+
const lines = searchString.split(`
|
|
365482
|
+
`);
|
|
365483
|
+
const meaningful = lines.filter((line) => line.trim() !== "");
|
|
365484
|
+
if (meaningful.length === 0)
|
|
365485
|
+
return null;
|
|
365486
|
+
if (!meaningful.every((line) => LINE_NUMBER_PREFIX.test(line)))
|
|
365487
|
+
return null;
|
|
365488
|
+
return lines.map((line) => line.replace(LINE_NUMBER_PREFIX, "")).join(`
|
|
365489
|
+
`);
|
|
365353
365490
|
}
|
|
365354
365491
|
function findActualStringWhitespaceTolerant(fileContent, searchString) {
|
|
365355
365492
|
const searchLines = searchString.split(`
|
|
@@ -365382,17 +365519,110 @@ function findActualStringWhitespaceTolerant(fileContent, searchString) {
|
|
|
365382
365519
|
}
|
|
365383
365520
|
return null;
|
|
365384
365521
|
}
|
|
365385
|
-
function
|
|
365522
|
+
function findActualStringIndentTolerant(fileContent, searchString) {
|
|
365523
|
+
const searchLines = searchString.split(`
|
|
365524
|
+
`);
|
|
365525
|
+
const fileLines = fileContent.split(`
|
|
365526
|
+
`);
|
|
365527
|
+
if (searchLines.length === 0 || searchLines.length > fileLines.length) {
|
|
365528
|
+
return null;
|
|
365529
|
+
}
|
|
365530
|
+
const searchBodies = searchLines.map(lineBody);
|
|
365531
|
+
const firstBody = searchBodies[0];
|
|
365532
|
+
if (searchBodies.every((body) => body === ""))
|
|
365533
|
+
return null;
|
|
365534
|
+
for (let start = 0;start <= fileLines.length - searchLines.length; start++) {
|
|
365535
|
+
if (lineBody(fileLines[start]) !== firstBody)
|
|
365536
|
+
continue;
|
|
365537
|
+
let shift = null;
|
|
365538
|
+
let match = true;
|
|
365539
|
+
for (let j2 = 0;j2 < searchLines.length; j2++) {
|
|
365540
|
+
const fileLine = fileLines[start + j2];
|
|
365541
|
+
const searchBody = searchBodies[j2];
|
|
365542
|
+
if (lineBody(fileLine) !== searchBody) {
|
|
365543
|
+
match = false;
|
|
365544
|
+
break;
|
|
365545
|
+
}
|
|
365546
|
+
if (searchBody === "")
|
|
365547
|
+
continue;
|
|
365548
|
+
const lineShift = indentWidth(fileLine) - indentWidth(searchLines[j2]);
|
|
365549
|
+
if (shift === null) {
|
|
365550
|
+
shift = lineShift;
|
|
365551
|
+
} else if (shift !== lineShift) {
|
|
365552
|
+
match = false;
|
|
365553
|
+
break;
|
|
365554
|
+
}
|
|
365555
|
+
}
|
|
365556
|
+
if (match && shift !== null && shift !== 0) {
|
|
365557
|
+
return {
|
|
365558
|
+
actual: fileLines.slice(start, start + searchLines.length).join(`
|
|
365559
|
+
`),
|
|
365560
|
+
indentShift: shift
|
|
365561
|
+
};
|
|
365562
|
+
}
|
|
365563
|
+
}
|
|
365564
|
+
return null;
|
|
365565
|
+
}
|
|
365566
|
+
function findEditTarget(fileContent, searchString) {
|
|
365386
365567
|
if (fileContent.includes(searchString)) {
|
|
365387
|
-
return searchString;
|
|
365568
|
+
return { actual: searchString, indentShift: 0 };
|
|
365388
365569
|
}
|
|
365389
365570
|
const normalizedSearch = normalizeQuotes(searchString);
|
|
365390
365571
|
const normalizedFile = normalizeQuotes(fileContent);
|
|
365391
365572
|
const searchIndex = normalizedFile.indexOf(normalizedSearch);
|
|
365392
365573
|
if (searchIndex !== -1) {
|
|
365393
|
-
return
|
|
365574
|
+
return {
|
|
365575
|
+
actual: fileContent.substring(searchIndex, searchIndex + searchString.length),
|
|
365576
|
+
indentShift: 0
|
|
365577
|
+
};
|
|
365578
|
+
}
|
|
365579
|
+
const whitespaceMatch = findActualStringWhitespaceTolerant(fileContent, searchString);
|
|
365580
|
+
if (whitespaceMatch !== null) {
|
|
365581
|
+
return { actual: whitespaceMatch, indentShift: 0 };
|
|
365394
365582
|
}
|
|
365395
|
-
|
|
365583
|
+
const indentMatch = findActualStringIndentTolerant(fileContent, searchString);
|
|
365584
|
+
if (indentMatch !== null) {
|
|
365585
|
+
return indentMatch;
|
|
365586
|
+
}
|
|
365587
|
+
const withoutPrefixes = stripLineNumberPrefixes(searchString);
|
|
365588
|
+
if (withoutPrefixes !== null && withoutPrefixes !== searchString) {
|
|
365589
|
+
return findEditTarget(fileContent, withoutPrefixes);
|
|
365590
|
+
}
|
|
365591
|
+
return null;
|
|
365592
|
+
}
|
|
365593
|
+
function findActualString(fileContent, searchString) {
|
|
365594
|
+
return findEditTarget(fileContent, searchString)?.actual ?? null;
|
|
365595
|
+
}
|
|
365596
|
+
function describeEditMatchFailure(fileContent, searchString) {
|
|
365597
|
+
const searchLines = searchString.split(`
|
|
365598
|
+
`);
|
|
365599
|
+
const firstSearchLine = searchLines.find((line) => line.trim() !== "");
|
|
365600
|
+
if (firstSearchLine === undefined) {
|
|
365601
|
+
return "String to replace not found in file. The string is blank.";
|
|
365602
|
+
}
|
|
365603
|
+
const fileLines = fileContent.split(`
|
|
365604
|
+
`);
|
|
365605
|
+
const anchorBody = lineBody(firstSearchLine);
|
|
365606
|
+
const anchors = fileLines.map((line, index2) => ({ line, index: index2 })).filter((entry) => lineBody(entry.line) === anchorBody);
|
|
365607
|
+
if (anchors.length === 0) {
|
|
365608
|
+
return "String to replace not found in file. No line in the file matches its " + `first line: ${JSON.stringify(firstSearchLine.trim())}. Read the file ` + "again and copy the target text from the current contents.";
|
|
365609
|
+
}
|
|
365610
|
+
const anchor = anchors[0];
|
|
365611
|
+
const offset = searchLines.indexOf(firstSearchLine);
|
|
365612
|
+
const details = anchors.slice(0, 3).map((entry) => {
|
|
365613
|
+
const start = entry.index - offset;
|
|
365614
|
+
for (let j2 = 0;j2 < searchLines.length; j2++) {
|
|
365615
|
+
const fileLine = fileLines[start + j2];
|
|
365616
|
+
if (fileLine === undefined) {
|
|
365617
|
+
return `line ${entry.index + 1}: the file ends before the string does`;
|
|
365618
|
+
}
|
|
365619
|
+
if (lineBody(fileLine) !== lineBody(searchLines[j2])) {
|
|
365620
|
+
return `line ${start + j2 + 1}: file has ${JSON.stringify(fileLine)}, ` + `string has ${JSON.stringify(searchLines[j2])}`;
|
|
365621
|
+
}
|
|
365622
|
+
}
|
|
365623
|
+
return `line ${entry.index + 1}: matches`;
|
|
365624
|
+
}).join("; ");
|
|
365625
|
+
return `String to replace not found in file. Its first line appears at line ` + `${anchor.index + 1}, but the block diverges \u2014 ${details}.`;
|
|
365396
365626
|
}
|
|
365397
365627
|
function preserveQuoteStyle(oldString, actualOldString, newString) {
|
|
365398
365628
|
if (oldString === actualOldString) {
|
|
@@ -365693,7 +365923,7 @@ function areFileEditsInputsEquivalent(input1, input2) {
|
|
|
365693
365923
|
}
|
|
365694
365924
|
return areFileEditsEquivalent(input1.edits, input2.edits, fileContent);
|
|
365695
365925
|
}
|
|
365696
|
-
var LEFT_SINGLE_CURLY_QUOTE = "\u2018", RIGHT_SINGLE_CURLY_QUOTE = "\u2019", LEFT_DOUBLE_CURLY_QUOTE = "\u201C", RIGHT_DOUBLE_CURLY_QUOTE = "\u201D", DIFF_SNIPPET_MAX_BYTES = 8192, DESANITIZATIONS;
|
|
365926
|
+
var LEFT_SINGLE_CURLY_QUOTE = "\u2018", RIGHT_SINGLE_CURLY_QUOTE = "\u2019", LEFT_DOUBLE_CURLY_QUOTE = "\u201C", RIGHT_DOUBLE_CURLY_QUOTE = "\u201D", EXOTIC_SPACES, ZERO_WIDTH, LINE_NUMBER_PREFIX, DIFF_SNIPPET_MAX_BYTES = 8192, DESANITIZATIONS;
|
|
365697
365927
|
var init_utils10 = __esm(() => {
|
|
365698
365928
|
init_libesm();
|
|
365699
365929
|
init_log2();
|
|
@@ -365702,6 +365932,9 @@ var init_utils10 = __esm(() => {
|
|
|
365702
365932
|
init_diff2();
|
|
365703
365933
|
init_errors();
|
|
365704
365934
|
init_file();
|
|
365935
|
+
EXOTIC_SPACES = /[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/g;
|
|
365936
|
+
ZERO_WIDTH = /[\u200B-\u200D\u2060\uFEFF]/g;
|
|
365937
|
+
LINE_NUMBER_PREFIX = /^\s*\d+[\u2192\t]/;
|
|
365705
365938
|
DESANITIZATIONS = {
|
|
365706
365939
|
"<fnr>": "<function_results>",
|
|
365707
365940
|
"<n>": "<name>",
|
|
@@ -366224,42 +366457,28 @@ var init_FileEditTool = __esm(() => {
|
|
|
366224
366457
|
};
|
|
366225
366458
|
}
|
|
366226
366459
|
const readTimestamp = toolUseContext.readFileState.get(fullFilePath);
|
|
366227
|
-
if (!readTimestamp || readTimestamp.isPartialView) {
|
|
366228
|
-
return {
|
|
366229
|
-
result: false,
|
|
366230
|
-
behavior: "ask",
|
|
366231
|
-
message: "File has not been read yet. Read it first before writing to it.",
|
|
366232
|
-
meta: {
|
|
366233
|
-
isFilePathAbsolute: String(isAbsolute24(file_path))
|
|
366234
|
-
},
|
|
366235
|
-
errorCode: 6
|
|
366236
|
-
};
|
|
366237
|
-
}
|
|
366238
|
-
if (readTimestamp) {
|
|
366239
|
-
const lastWriteTime = getFileModificationTime(fullFilePath);
|
|
366240
|
-
if (lastWriteTime > readTimestamp.timestamp || !fileStateMatchesContent(fileContent, readTimestamp)) {
|
|
366241
|
-
return {
|
|
366242
|
-
result: false,
|
|
366243
|
-
behavior: "ask",
|
|
366244
|
-
message: "File has been modified since read, either by the user or by a linter. Read it again before attempting to write it.",
|
|
366245
|
-
errorCode: 7
|
|
366246
|
-
};
|
|
366247
|
-
}
|
|
366248
|
-
}
|
|
366249
366460
|
const file2 = fileContent;
|
|
366250
|
-
const
|
|
366461
|
+
const editTarget = findEditTarget(file2, old_string);
|
|
366462
|
+
const actualOldString = editTarget?.actual ?? null;
|
|
366251
366463
|
if (!actualOldString) {
|
|
366252
366464
|
return {
|
|
366253
366465
|
result: false,
|
|
366254
366466
|
behavior: "ask",
|
|
366255
|
-
message:
|
|
366256
|
-
String: ${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),
|
|
366257
366468
|
meta: {
|
|
366258
366469
|
isFilePathAbsolute: String(isAbsolute24(file_path))
|
|
366259
366470
|
},
|
|
366260
366471
|
errorCode: 8
|
|
366261
366472
|
};
|
|
366262
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
|
+
}
|
|
366263
366482
|
const matches = file2.split(actualOldString).length - 1;
|
|
366264
366483
|
if (matches > 1 && !replace_all) {
|
|
366265
366484
|
return {
|
|
@@ -366275,7 +366494,8 @@ String: ${old_string}`,
|
|
|
366275
366494
|
};
|
|
366276
366495
|
}
|
|
366277
366496
|
const settingsValidationResult = validateInputForSettingsFileEdit(fullFilePath, file2, () => {
|
|
366278
|
-
|
|
366497
|
+
const simulatedNewString = shiftIndentation(new_string, editTarget?.indentShift ?? 0);
|
|
366498
|
+
return replace_all ? file2.replaceAll(actualOldString, simulatedNewString) : file2.replace(actualOldString, simulatedNewString);
|
|
366279
366499
|
});
|
|
366280
366500
|
if (settingsValidationResult !== null) {
|
|
366281
366501
|
return settingsValidationResult;
|
|
@@ -366338,12 +366558,13 @@ String: ${old_string}`,
|
|
|
366338
366558
|
if (fileExists) {
|
|
366339
366559
|
const lastWriteTime = getFileModificationTime(absoluteFilePath);
|
|
366340
366560
|
const lastRead = readFileState.get(absoluteFilePath);
|
|
366341
|
-
if (
|
|
366561
|
+
if (lastRead && (lastWriteTime > lastRead.timestamp || !fileStateMatchesContent(originalFileContents, lastRead))) {
|
|
366342
366562
|
throw new Error(FILE_UNEXPECTEDLY_MODIFIED_ERROR);
|
|
366343
366563
|
}
|
|
366344
366564
|
}
|
|
366345
|
-
|
|
366346
|
-
let
|
|
366565
|
+
const target = findEditTarget(originalFileContents, old_string);
|
|
366566
|
+
let actualOldString = target?.actual ?? old_string;
|
|
366567
|
+
let actualNewString = shiftIndentation(preserveQuoteStyle(old_string, actualOldString, new_string), target?.indentShift ?? 0);
|
|
366347
366568
|
const toolUseID = toolUseContext.toolUseId ?? parentMessage?.uuid ?? "";
|
|
366348
366569
|
const beforeEdit = await executeBeforeEditHooks(absoluteFilePath, actualOldString, actualNewString, replace_all, toolUseContext, toolUseID, toolUseContext.abortController.signal);
|
|
366349
366570
|
if (beforeEdit.updatedInput) {
|
|
@@ -367052,14 +367273,16 @@ var init_FileWriteTool = __esm(() => {
|
|
|
367052
367273
|
throw e;
|
|
367053
367274
|
}
|
|
367054
367275
|
const readTimestamp = toolUseContext.readFileState.get(fullFilePath);
|
|
367276
|
+
const lastWriteTime = Math.floor(fileMtimeMs);
|
|
367055
367277
|
if (!readTimestamp || readTimestamp.isPartialView) {
|
|
367056
|
-
|
|
367057
|
-
|
|
367058
|
-
|
|
367059
|
-
|
|
367060
|
-
|
|
367278
|
+
toolUseContext.readFileState.set(fullFilePath, {
|
|
367279
|
+
content: readFileSyncCached(fullFilePath),
|
|
367280
|
+
timestamp: lastWriteTime,
|
|
367281
|
+
offset: undefined,
|
|
367282
|
+
limit: undefined
|
|
367283
|
+
});
|
|
367284
|
+
return { result: true };
|
|
367061
367285
|
}
|
|
367062
|
-
const lastWriteTime = Math.floor(fileMtimeMs);
|
|
367063
367286
|
if (lastWriteTime > readTimestamp.timestamp) {
|
|
367064
367287
|
return {
|
|
367065
367288
|
result: false,
|
|
@@ -383820,6 +384043,11 @@ var init_AgentTool = __esm(() => {
|
|
|
383820
384043
|
let finalMessage = extractTextContent(agentResult2.content, `
|
|
383821
384044
|
`);
|
|
383822
384045
|
if (false) {}
|
|
384046
|
+
if (agentMessages.some((_) => _.type === "attachment" && _.attachment?.type === "max_turns_reached")) {
|
|
384047
|
+
finalMessage = `Note: this agent stopped after reaching its maximum number of turns, so the result below is incomplete.
|
|
384048
|
+
|
|
384049
|
+
${finalMessage}`;
|
|
384050
|
+
}
|
|
383823
384051
|
const worktreeResult2 = await cleanupWorktreeIfNeeded();
|
|
383824
384052
|
enqueueAgentNotification({
|
|
383825
384053
|
taskId: backgroundedTaskId,
|
|
@@ -384020,10 +384248,12 @@ var init_AgentTool = __esm(() => {
|
|
|
384020
384248
|
}
|
|
384021
384249
|
const agentResult = finalizeAgentTool(agentMessages, syncAgentId, metadata);
|
|
384022
384250
|
if (false) {}
|
|
384251
|
+
const truncatedByMaxTurns = agentMessages.some((_) => _.type === "attachment" && _.attachment?.type === "max_turns_reached");
|
|
384252
|
+
const incompleteReason = syncAgentError ? errorMessage2(syncAgentError) : truncatedByMaxTurns ? "Agent stopped after reaching its maximum number of turns; the result is incomplete." : undefined;
|
|
384023
384253
|
return {
|
|
384024
384254
|
data: {
|
|
384025
|
-
status:
|
|
384026
|
-
...
|
|
384255
|
+
status: incompleteReason ? "partial" : "completed",
|
|
384256
|
+
...incompleteReason && { error: incompleteReason },
|
|
384027
384257
|
prompt,
|
|
384028
384258
|
...agentResult,
|
|
384029
384259
|
...worktreeResult
|
|
@@ -389358,7 +389588,7 @@ function isAnyTracingEnabled() {
|
|
|
389358
389588
|
return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
|
|
389359
389589
|
}
|
|
389360
389590
|
function getTracer() {
|
|
389361
|
-
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.
|
|
389591
|
+
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.77.1");
|
|
389362
389592
|
}
|
|
389363
389593
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
389364
389594
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -392486,9 +392716,7 @@ class StreamingToolExecutor {
|
|
|
392486
392716
|
return false;
|
|
392487
392717
|
if (!executingTools.every((t) => t.isConcurrencySafe))
|
|
392488
392718
|
return false;
|
|
392489
|
-
|
|
392490
|
-
const cap = Number.isFinite(envCap) && envCap >= 1 ? Math.min(Math.floor(envCap), 32) : MAX_CONCURRENT_TOOLS;
|
|
392491
|
-
return executingTools.length < cap;
|
|
392719
|
+
return executingTools.length < getMaxToolUseConcurrency();
|
|
392492
392720
|
}
|
|
392493
392721
|
async processQueue() {
|
|
392494
392722
|
if (this.discarded) {
|
|
@@ -392733,12 +392961,12 @@ function markToolUseAsComplete2(toolUseContext, toolUseID) {
|
|
|
392733
392961
|
return next;
|
|
392734
392962
|
});
|
|
392735
392963
|
}
|
|
392736
|
-
var MAX_CONCURRENT_TOOLS = 8;
|
|
392737
392964
|
var init_StreamingToolExecutor = __esm(() => {
|
|
392738
392965
|
init_messages();
|
|
392739
392966
|
init_Tool();
|
|
392740
392967
|
init_abortController();
|
|
392741
392968
|
init_toolExecution();
|
|
392969
|
+
init_toolOrchestration();
|
|
392742
392970
|
});
|
|
392743
392971
|
|
|
392744
392972
|
// src/utils/queryProfiler.ts
|
|
@@ -419527,7 +419755,7 @@ function Feedback({
|
|
|
419527
419755
|
platform: env2.platform,
|
|
419528
419756
|
gitRepo: envInfo.isGit,
|
|
419529
419757
|
terminal: env2.terminal,
|
|
419530
|
-
version: "1.
|
|
419758
|
+
version: "1.77.1",
|
|
419531
419759
|
transcript: normalizeMessagesForAPI(messages),
|
|
419532
419760
|
errors: sanitizedErrors,
|
|
419533
419761
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -419719,7 +419947,7 @@ function Feedback({
|
|
|
419719
419947
|
", ",
|
|
419720
419948
|
env2.terminal,
|
|
419721
419949
|
", v",
|
|
419722
|
-
"1.
|
|
419950
|
+
"1.77.1"
|
|
419723
419951
|
]
|
|
419724
419952
|
}, undefined, true, undefined, this)
|
|
419725
419953
|
]
|
|
@@ -419825,7 +420053,7 @@ ${sanitizedDescription}
|
|
|
419825
420053
|
` + `**Environment Info**
|
|
419826
420054
|
` + `- Platform: ${env2.platform}
|
|
419827
420055
|
` + `- Terminal: ${env2.terminal}
|
|
419828
|
-
` + `- Version: ${"1.
|
|
420056
|
+
` + `- Version: ${"1.77.1"}
|
|
419829
420057
|
` + `- Feedback ID: ${feedbackId}
|
|
419830
420058
|
` + `
|
|
419831
420059
|
**Errors**
|
|
@@ -422935,7 +423163,7 @@ function buildPrimarySection() {
|
|
|
422935
423163
|
}, undefined, false, undefined, this);
|
|
422936
423164
|
return [{
|
|
422937
423165
|
label: "Version",
|
|
422938
|
-
value: "1.
|
|
423166
|
+
value: "1.77.1"
|
|
422939
423167
|
}, {
|
|
422940
423168
|
label: "Session name",
|
|
422941
423169
|
value: nameValue
|
|
@@ -426317,7 +426545,7 @@ function Config({
|
|
|
426317
426545
|
}
|
|
426318
426546
|
}, undefined, false, undefined, this)
|
|
426319
426547
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
|
|
426320
|
-
currentVersion: "1.
|
|
426548
|
+
currentVersion: "1.77.1",
|
|
426321
426549
|
onChoice: (choice) => {
|
|
426322
426550
|
setShowSubmenu(null);
|
|
426323
426551
|
setTabsHidden(false);
|
|
@@ -426329,7 +426557,7 @@ function Config({
|
|
|
426329
426557
|
autoUpdatesChannel: "stable"
|
|
426330
426558
|
};
|
|
426331
426559
|
if (choice === "stay") {
|
|
426332
|
-
newSettings.minimumVersion = "1.
|
|
426560
|
+
newSettings.minimumVersion = "1.77.1";
|
|
426333
426561
|
}
|
|
426334
426562
|
updateSettingsForSource("userSettings", newSettings);
|
|
426335
426563
|
setSettingsData((prev_27) => ({
|
|
@@ -434393,7 +434621,7 @@ function HelpV2(t0) {
|
|
|
434393
434621
|
let t6;
|
|
434394
434622
|
if ($2[31] !== tabs) {
|
|
434395
434623
|
t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
|
|
434396
|
-
title: `UR v${"1.
|
|
434624
|
+
title: `UR v${"1.77.1"}`,
|
|
434397
434625
|
color: "professionalBlue",
|
|
434398
434626
|
defaultTab: "general",
|
|
434399
434627
|
children: tabs
|
|
@@ -435326,7 +435554,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
435326
435554
|
async function handleInitialize(options2) {
|
|
435327
435555
|
return {
|
|
435328
435556
|
name: "UR",
|
|
435329
|
-
version: "1.
|
|
435557
|
+
version: "1.77.1",
|
|
435330
435558
|
protocolVersion: "0.1.0",
|
|
435331
435559
|
workspaceRoot: options2.cwd,
|
|
435332
435560
|
capabilities: {
|
|
@@ -452434,7 +452662,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
452434
452662
|
return [];
|
|
452435
452663
|
}
|
|
452436
452664
|
}
|
|
452437
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.
|
|
452665
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.77.1") {
|
|
452438
452666
|
if (process.env.USER_TYPE === "ant") {
|
|
452439
452667
|
const changelog = "";
|
|
452440
452668
|
if (changelog) {
|
|
@@ -452461,7 +452689,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.76.7")
|
|
|
452461
452689
|
releaseNotes
|
|
452462
452690
|
};
|
|
452463
452691
|
}
|
|
452464
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.
|
|
452692
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.77.1") {
|
|
452465
452693
|
if (process.env.USER_TYPE === "ant") {
|
|
452466
452694
|
const changelog = "";
|
|
452467
452695
|
if (changelog) {
|
|
@@ -455327,7 +455555,7 @@ function getRecentActivitySync() {
|
|
|
455327
455555
|
return cachedActivity;
|
|
455328
455556
|
}
|
|
455329
455557
|
function getLogoDisplayData() {
|
|
455330
|
-
const version2 = process.env.DEMO_VERSION ?? "1.
|
|
455558
|
+
const version2 = process.env.DEMO_VERSION ?? "1.77.1";
|
|
455331
455559
|
const serverUrl = getDirectConnectServerUrl();
|
|
455332
455560
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
455333
455561
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -456194,7 +456422,7 @@ function LogoV2() {
|
|
|
456194
456422
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
456195
456423
|
t2 = () => {
|
|
456196
456424
|
const currentConfig2 = getGlobalConfig();
|
|
456197
|
-
if (currentConfig2.lastReleaseNotesSeen === "1.
|
|
456425
|
+
if (currentConfig2.lastReleaseNotesSeen === "1.77.1") {
|
|
456198
456426
|
return;
|
|
456199
456427
|
}
|
|
456200
456428
|
saveGlobalConfig(_temp325);
|
|
@@ -456879,12 +457107,12 @@ function LogoV2() {
|
|
|
456879
457107
|
return t41;
|
|
456880
457108
|
}
|
|
456881
457109
|
function _temp325(current) {
|
|
456882
|
-
if (current.lastReleaseNotesSeen === "1.
|
|
457110
|
+
if (current.lastReleaseNotesSeen === "1.77.1") {
|
|
456883
457111
|
return current;
|
|
456884
457112
|
}
|
|
456885
457113
|
return {
|
|
456886
457114
|
...current,
|
|
456887
|
-
lastReleaseNotesSeen: "1.
|
|
457115
|
+
lastReleaseNotesSeen: "1.77.1"
|
|
456888
457116
|
};
|
|
456889
457117
|
}
|
|
456890
457118
|
function _temp241(s_0) {
|
|
@@ -473698,7 +473926,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
473698
473926
|
if (spec.name !== specName) {
|
|
473699
473927
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
473700
473928
|
}
|
|
473701
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.
|
|
473929
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.77.1" : "1.77.1");
|
|
473702
473930
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
473703
473931
|
throw new Error("invalid ur-agent package version");
|
|
473704
473932
|
}
|
|
@@ -474691,7 +474919,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
474691
474919
|
path: ".github/workflows/ur.yml",
|
|
474692
474920
|
root: "project",
|
|
474693
474921
|
content: compileAgenticCiWorkflow("default", {
|
|
474694
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.
|
|
474922
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.77.1" : "1.77.1"
|
|
474695
474923
|
})
|
|
474696
474924
|
},
|
|
474697
474925
|
{
|
|
@@ -474754,7 +474982,7 @@ function value(tokens, flag) {
|
|
|
474754
474982
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
474755
474983
|
}
|
|
474756
474984
|
function cliVersion() {
|
|
474757
|
-
return typeof MACRO !== "undefined" ? "1.
|
|
474985
|
+
return typeof MACRO !== "undefined" ? "1.77.1" : "1.77.1";
|
|
474758
474986
|
}
|
|
474759
474987
|
function workflowPath(cwd2) {
|
|
474760
474988
|
return join159(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -480610,7 +480838,7 @@ function createAcpStdioApp(deps) {
|
|
|
480610
480838
|
}
|
|
480611
480839
|
},
|
|
480612
480840
|
authMethods: [],
|
|
480613
|
-
agentInfo: { name: "UR-Nexus", version: "1.
|
|
480841
|
+
agentInfo: { name: "UR-Nexus", version: "1.77.1" }
|
|
480614
480842
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
480615
480843
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
480616
480844
|
await runtime2.announce({
|
|
@@ -480707,7 +480935,7 @@ function createAcpStdioAgent(deps) {
|
|
|
480707
480935
|
}
|
|
480708
480936
|
},
|
|
480709
480937
|
authMethods: [],
|
|
480710
|
-
agentInfo: { name: "UR-Nexus", version: "1.
|
|
480938
|
+
agentInfo: { name: "UR-Nexus", version: "1.77.1" }
|
|
480711
480939
|
});
|
|
480712
480940
|
return;
|
|
480713
480941
|
case "authenticate":
|
|
@@ -492667,6 +492895,11 @@ async function runCrew(name, options2) {
|
|
|
492667
492895
|
options2.onEvent?.({ kind: "worker-exit", worker: workerId, handled: count5 });
|
|
492668
492896
|
return count5;
|
|
492669
492897
|
}
|
|
492898
|
+
const workerFailures = [];
|
|
492899
|
+
const track = (promise3) => promise3.catch((error40) => {
|
|
492900
|
+
workerFailures.push(error40);
|
|
492901
|
+
return 0;
|
|
492902
|
+
});
|
|
492670
492903
|
let spawned = 0;
|
|
492671
492904
|
if (options2.dynamic) {
|
|
492672
492905
|
const governor = boundedInteger2(options2.maxWorkers, 8, 1, 32);
|
|
@@ -492683,13 +492916,13 @@ async function runCrew(name, options2) {
|
|
|
492683
492916
|
while (active3.size < governor && runnableCount() > 0) {
|
|
492684
492917
|
spawned += 1;
|
|
492685
492918
|
const id = `w${spawned}`;
|
|
492686
|
-
const p2 = worker(id).finally(() => active3.delete(p2));
|
|
492919
|
+
const p2 = track(worker(id)).finally(() => active3.delete(p2));
|
|
492687
492920
|
active3.add(p2);
|
|
492688
492921
|
}
|
|
492689
492922
|
if (active3.size === 0) {
|
|
492690
492923
|
if (todoCount() > 0) {
|
|
492691
492924
|
spawned += 1;
|
|
492692
|
-
await worker(`w${spawned}`);
|
|
492925
|
+
await track(worker(`w${spawned}`));
|
|
492693
492926
|
continue;
|
|
492694
492927
|
}
|
|
492695
492928
|
break;
|
|
@@ -492702,7 +492935,10 @@ async function runCrew(name, options2) {
|
|
|
492702
492935
|
} else {
|
|
492703
492936
|
spawned = workerCount;
|
|
492704
492937
|
const workerIds = Array.from({ length: workerCount }, (_, i3) => `w${i3 + 1}`);
|
|
492705
|
-
await Promise.all(workerIds.map(worker));
|
|
492938
|
+
await Promise.all(workerIds.map((id) => track(worker(id))));
|
|
492939
|
+
}
|
|
492940
|
+
if (workerFailures.length > 0) {
|
|
492941
|
+
throw workerFailures[0];
|
|
492706
492942
|
}
|
|
492707
492943
|
const finalSpec = loadCrew(cwd2, name) ?? baseSpec;
|
|
492708
492944
|
return { name, workers: spawned, progress: crewProgress(finalSpec), handled };
|
|
@@ -690159,7 +690395,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
690159
690395
|
smapsRollup,
|
|
690160
690396
|
platform: process.platform,
|
|
690161
690397
|
nodeVersion: process.version,
|
|
690162
|
-
ccVersion: "1.
|
|
690398
|
+
ccVersion: "1.77.1"
|
|
690163
690399
|
};
|
|
690164
690400
|
}
|
|
690165
690401
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -690739,7 +690975,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
690739
690975
|
var call154 = async () => {
|
|
690740
690976
|
return {
|
|
690741
690977
|
type: "text",
|
|
690742
|
-
value: "1.
|
|
690978
|
+
value: "1.77.1"
|
|
690743
690979
|
};
|
|
690744
690980
|
}, version2, version_default;
|
|
690745
690981
|
var init_version = __esm(() => {
|
|
@@ -702006,7 +702242,7 @@ function generateHtmlReport(data, insights) {
|
|
|
702006
702242
|
</html>`;
|
|
702007
702243
|
}
|
|
702008
702244
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
702009
|
-
const version3 = typeof MACRO !== "undefined" ? "1.
|
|
702245
|
+
const version3 = typeof MACRO !== "undefined" ? "1.77.1" : "unknown";
|
|
702010
702246
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
702011
702247
|
const facets_summary = {
|
|
702012
702248
|
total: facets.size,
|
|
@@ -706320,7 +706556,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
706320
706556
|
init_settings2();
|
|
706321
706557
|
init_slowOperations();
|
|
706322
706558
|
init_uuid();
|
|
706323
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.
|
|
706559
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.77.1" : "unknown";
|
|
706324
706560
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
706325
706561
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
706326
706562
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -707535,7 +707771,7 @@ var init_filesystem = __esm(() => {
|
|
|
707535
707771
|
});
|
|
707536
707772
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
707537
707773
|
const nonce = randomBytes20(16).toString("hex");
|
|
707538
|
-
return join232(getURTempDir(), "bundled-skills", "1.
|
|
707774
|
+
return join232(getURTempDir(), "bundled-skills", "1.77.1", nonce);
|
|
707539
707775
|
});
|
|
707540
707776
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
707541
707777
|
});
|
|
@@ -713174,6 +713410,12 @@ Focus text output on:
|
|
|
713174
713410
|
- High-level status updates at natural milestones
|
|
713175
713411
|
- Errors or blockers that change the plan
|
|
713176
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
|
+
|
|
713177
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.`;
|
|
713178
713420
|
}
|
|
713179
713421
|
function getSimpleToneAndStyleSection() {
|
|
@@ -713396,7 +713638,7 @@ function getFunctionResultClearingSection(model) {
|
|
|
713396
713638
|
|
|
713397
713639
|
Old tool results will be automatically cleared from context to free up space. The ${config3.keepRecent} most recent results are always kept.`;
|
|
713398
713640
|
}
|
|
713399
|
-
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.`;
|
|
713400
713642
|
var init_prompts4 = __esm(() => {
|
|
713401
713643
|
init_env();
|
|
713402
713644
|
init_git();
|
|
@@ -713884,7 +714126,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
713884
714126
|
}
|
|
713885
714127
|
function computeFingerprintFromMessages(messages) {
|
|
713886
714128
|
const firstMessageText = extractFirstMessageText(messages);
|
|
713887
|
-
return computeFingerprint(firstMessageText, "1.
|
|
714129
|
+
return computeFingerprint(firstMessageText, "1.77.1");
|
|
713888
714130
|
}
|
|
713889
714131
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
713890
714132
|
var init_fingerprint = () => {};
|
|
@@ -714831,7 +715073,7 @@ ${deferredToolList}
|
|
|
714831
715073
|
stopReason = null;
|
|
714832
715074
|
isAdvisorInProgress = false;
|
|
714833
715075
|
const streamWatchdogEnabled = isStreamWatchdogEnabled();
|
|
714834
|
-
const STREAM_IDLE_TIMEOUT_MS = parseInt(process.env.UR_STREAM_IDLE_TIMEOUT_MS || "", 10) ||
|
|
715076
|
+
const STREAM_IDLE_TIMEOUT_MS = parseInt(process.env.UR_STREAM_IDLE_TIMEOUT_MS || "", 10) || 300000;
|
|
714835
715077
|
const STREAM_IDLE_WARNING_MS = STREAM_IDLE_TIMEOUT_MS / 2;
|
|
714836
715078
|
let streamIdleAborted = false;
|
|
714837
715079
|
let streamWatchdogFiredAt = null;
|
|
@@ -714849,6 +715091,9 @@ ${deferredToolList}
|
|
|
714849
715091
|
for await (const _part of stream5) {
|
|
714850
715092
|
const part = _part;
|
|
714851
715093
|
resetStreamIdleTimer();
|
|
715094
|
+
if (part?.type === "ping") {
|
|
715095
|
+
continue;
|
|
715096
|
+
}
|
|
714852
715097
|
const outputChunkAt = performance.now();
|
|
714853
715098
|
if (previousOutputChunkAt !== undefined) {
|
|
714854
715099
|
recordGenAiOutputChunkMetric({
|
|
@@ -715803,7 +716048,7 @@ async function sideQuery(opts) {
|
|
|
715803
716048
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
715804
716049
|
}
|
|
715805
716050
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
715806
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.
|
|
716051
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.77.1");
|
|
715807
716052
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
715808
716053
|
const systemBlocks = [
|
|
715809
716054
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -720640,7 +720885,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
720640
720885
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
720641
720886
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
720642
720887
|
betas: getSdkBetas(),
|
|
720643
|
-
ur_version: "1.
|
|
720888
|
+
ur_version: "1.77.1",
|
|
720644
720889
|
output_style: outputStyle2,
|
|
720645
720890
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
720646
720891
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -734512,7 +734757,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
734512
734757
|
function getSemverPart(version3) {
|
|
734513
734758
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
734514
734759
|
}
|
|
734515
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.
|
|
734760
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.77.1") {
|
|
734516
734761
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react223.useState(() => getSemverPart(initialVersion));
|
|
734517
734762
|
if (!updatedVersion) {
|
|
734518
734763
|
return null;
|
|
@@ -734561,7 +734806,7 @@ function AutoUpdater({
|
|
|
734561
734806
|
return;
|
|
734562
734807
|
}
|
|
734563
734808
|
if (false) {}
|
|
734564
|
-
const currentVersion = "1.
|
|
734809
|
+
const currentVersion = "1.77.1";
|
|
734565
734810
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
734566
734811
|
let latestVersion = await getLatestVersion(channel);
|
|
734567
734812
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -734790,12 +735035,12 @@ function NativeAutoUpdater({
|
|
|
734790
735035
|
logEvent("tengu_native_auto_updater_start", {});
|
|
734791
735036
|
try {
|
|
734792
735037
|
const maxVersion = await getMaxVersion();
|
|
734793
|
-
if (maxVersion && gt("1.
|
|
735038
|
+
if (maxVersion && gt("1.77.1", maxVersion)) {
|
|
734794
735039
|
const msg = await getMaxVersionMessage();
|
|
734795
735040
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
734796
735041
|
}
|
|
734797
735042
|
const result = await installLatest(channel);
|
|
734798
|
-
const currentVersion = "1.
|
|
735043
|
+
const currentVersion = "1.77.1";
|
|
734799
735044
|
const latencyMs = Date.now() - startTime;
|
|
734800
735045
|
if (result.lockFailed) {
|
|
734801
735046
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -734932,17 +735177,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
734932
735177
|
const maxVersion = await getMaxVersion();
|
|
734933
735178
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
734934
735179
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
734935
|
-
if (gte("1.
|
|
734936
|
-
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`);
|
|
734937
735182
|
setUpdateAvailable(false);
|
|
734938
735183
|
return;
|
|
734939
735184
|
}
|
|
734940
735185
|
latest = maxVersion;
|
|
734941
735186
|
}
|
|
734942
|
-
const hasUpdate = latest && !gte("1.
|
|
735187
|
+
const hasUpdate = latest && !gte("1.77.1", latest) && !shouldSkipVersion(latest);
|
|
734943
735188
|
setUpdateAvailable(!!hasUpdate);
|
|
734944
735189
|
if (hasUpdate) {
|
|
734945
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.
|
|
735190
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.77.1"} -> ${latest}`);
|
|
734946
735191
|
}
|
|
734947
735192
|
};
|
|
734948
735193
|
$2[0] = t1;
|
|
@@ -734976,7 +735221,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
734976
735221
|
wrap: "truncate",
|
|
734977
735222
|
children: [
|
|
734978
735223
|
"currentVersion: ",
|
|
734979
|
-
"1.
|
|
735224
|
+
"1.77.1"
|
|
734980
735225
|
]
|
|
734981
735226
|
}, undefined, true, undefined, this);
|
|
734982
735227
|
$2[3] = verbose;
|
|
@@ -745776,7 +746021,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
745776
746021
|
project_dir: getOriginalCwd(),
|
|
745777
746022
|
added_dirs: addedDirs
|
|
745778
746023
|
},
|
|
745779
|
-
version: "1.
|
|
746024
|
+
version: "1.77.1",
|
|
745780
746025
|
output_style: {
|
|
745781
746026
|
name: outputStyleName
|
|
745782
746027
|
},
|
|
@@ -745911,7 +746156,7 @@ function StatusLineInner({
|
|
|
745911
746156
|
const attention = customStatusError ?? taskAttention;
|
|
745912
746157
|
const terminalSize = React132.useContext(TerminalSizeContext);
|
|
745913
746158
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
745914
|
-
version: "1.
|
|
746159
|
+
version: "1.77.1",
|
|
745915
746160
|
providerLabel: providerRuntime.providerLabel,
|
|
745916
746161
|
authMode: providerRuntime.authLabel,
|
|
745917
746162
|
model: renderModelName(mainLoopModel) || providerRuntime.model || "",
|
|
@@ -758196,7 +758441,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
758196
758441
|
} catch {}
|
|
758197
758442
|
const data = {
|
|
758198
758443
|
trigger: trigger2,
|
|
758199
|
-
version: "1.
|
|
758444
|
+
version: "1.77.1",
|
|
758200
758445
|
platform: process.platform,
|
|
758201
758446
|
transcript,
|
|
758202
758447
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -770570,7 +770815,7 @@ function WelcomeV2() {
|
|
|
770570
770815
|
dimColor: true,
|
|
770571
770816
|
children: [
|
|
770572
770817
|
"v",
|
|
770573
|
-
"1.
|
|
770818
|
+
"1.77.1"
|
|
770574
770819
|
]
|
|
770575
770820
|
}, undefined, true, undefined, this)
|
|
770576
770821
|
]
|
|
@@ -771830,7 +772075,7 @@ function completeOnboarding() {
|
|
|
771830
772075
|
saveGlobalConfig((current) => ({
|
|
771831
772076
|
...current,
|
|
771832
772077
|
hasCompletedOnboarding: true,
|
|
771833
|
-
lastOnboardingVersion: "1.
|
|
772078
|
+
lastOnboardingVersion: "1.77.1"
|
|
771834
772079
|
}));
|
|
771835
772080
|
}
|
|
771836
772081
|
function showDialog(root2, renderer) {
|
|
@@ -776874,7 +777119,7 @@ function appendToLog(path24, message) {
|
|
|
776874
777119
|
cwd: getFsImplementation().cwd(),
|
|
776875
777120
|
userType: process.env.USER_TYPE,
|
|
776876
777121
|
sessionId: getSessionId(),
|
|
776877
|
-
version: "1.
|
|
777122
|
+
version: "1.77.1"
|
|
776878
777123
|
};
|
|
776879
777124
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
776880
777125
|
}
|
|
@@ -781033,8 +781278,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
781033
781278
|
}
|
|
781034
781279
|
async function checkEnvLessBridgeMinVersion() {
|
|
781035
781280
|
const cfg = await getEnvLessBridgeConfig();
|
|
781036
|
-
if (cfg.min_version && lt("1.
|
|
781037
|
-
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.
|
|
781038
781283
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
781039
781284
|
}
|
|
781040
781285
|
return null;
|
|
@@ -781508,7 +781753,7 @@ async function initBridgeCore(params) {
|
|
|
781508
781753
|
const rawApi = createBridgeApiClient({
|
|
781509
781754
|
baseUrl,
|
|
781510
781755
|
getAccessToken,
|
|
781511
|
-
runnerVersion: "1.
|
|
781756
|
+
runnerVersion: "1.77.1",
|
|
781512
781757
|
onDebug: logForDebugging,
|
|
781513
781758
|
onAuth401,
|
|
781514
781759
|
getTrustedDeviceToken
|
|
@@ -790981,7 +791226,7 @@ function getAgUiCapabilities() {
|
|
|
790981
791226
|
name: "UR-Nexus",
|
|
790982
791227
|
type: "ur-nexus",
|
|
790983
791228
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
790984
|
-
version: "1.
|
|
791229
|
+
version: "1.77.1",
|
|
790985
791230
|
provider: "UR",
|
|
790986
791231
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
790987
791232
|
},
|
|
@@ -792121,7 +792366,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
792121
792366
|
};
|
|
792122
792367
|
const server2 = new Server({
|
|
792123
792368
|
name: "ur-nexus",
|
|
792124
|
-
version: "1.
|
|
792369
|
+
version: "1.77.1"
|
|
792125
792370
|
}, {
|
|
792126
792371
|
capabilities: {
|
|
792127
792372
|
tools: {}
|
|
@@ -793279,7 +793524,7 @@ function thrownResponse(error40) {
|
|
|
793279
793524
|
}
|
|
793280
793525
|
async function createUrMcp2026Runtime(options4) {
|
|
793281
793526
|
const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
|
|
793282
|
-
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: {} });
|
|
793283
793528
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
793284
793529
|
try {
|
|
793285
793530
|
await server2.connect(serverTransport);
|
|
@@ -793290,7 +793535,7 @@ async function createUrMcp2026Runtime(options4) {
|
|
|
793290
793535
|
}
|
|
793291
793536
|
const runtime2 = new Mcp2026Runtime({
|
|
793292
793537
|
cwd: options4.cwd,
|
|
793293
|
-
version: "1.
|
|
793538
|
+
version: "1.77.1",
|
|
793294
793539
|
backend: {
|
|
793295
793540
|
listTools: async () => {
|
|
793296
793541
|
const listed = await client2.listTools();
|
|
@@ -795431,7 +795676,7 @@ async function update() {
|
|
|
795431
795676
|
logEvent("tengu_update_check", {});
|
|
795432
795677
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
795433
795678
|
const result = await checkUpgradeStatus({
|
|
795434
|
-
currentVersion: "1.
|
|
795679
|
+
currentVersion: "1.77.1",
|
|
795435
795680
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
795436
795681
|
installationType: diagnostic2.installationType,
|
|
795437
795682
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -796747,7 +796992,7 @@ ${customInstructions}` : customInstructions;
|
|
|
796747
796992
|
}
|
|
796748
796993
|
}
|
|
796749
796994
|
logForDiagnosticsNoPII("info", "started", {
|
|
796750
|
-
version: "1.
|
|
796995
|
+
version: "1.77.1",
|
|
796751
796996
|
is_native_binary: isInBundledMode()
|
|
796752
796997
|
});
|
|
796753
796998
|
registerCleanup(async () => {
|
|
@@ -797533,7 +797778,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
797533
797778
|
pendingHookMessages
|
|
797534
797779
|
}, renderAndRun);
|
|
797535
797780
|
}
|
|
797536
|
-
}).version("1.
|
|
797781
|
+
}).version("1.77.1 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
797537
797782
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
797538
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.");
|
|
797539
797784
|
if (canUserConfigureAdvisor()) {
|
|
@@ -798585,7 +798830,7 @@ if (false) {}
|
|
|
798585
798830
|
async function main2() {
|
|
798586
798831
|
const args = process.argv.slice(2);
|
|
798587
798832
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
798588
|
-
console.log(`${"1.
|
|
798833
|
+
console.log(`${"1.77.1"} (UR-Nexus)`);
|
|
798589
798834
|
return;
|
|
798590
798835
|
}
|
|
798591
798836
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|