ur-agent 1.85.0 → 1.85.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/README.md +22 -1
- package/dist/cli.js +399 -114
- package/docs/CONFIGURATION.md +22 -0
- package/docs/TROUBLESHOOTING.md +29 -0
- package/docs/USAGE.md +18 -1
- package/docs/VALIDATION.md +13 -1
- package/docs/providers.md +21 -4
- package/documentation/index.html +1 -1
- package/extensions/jetbrains-ur/build.gradle.kts +1 -1
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -60264,15 +60264,76 @@ function errorText(error61) {
|
|
|
60264
60264
|
return `${error61.message}
|
|
60265
60265
|
${error61.body ?? ""}`;
|
|
60266
60266
|
if (axios_default.isAxiosError(error61)) {
|
|
60267
|
-
|
|
60267
|
+
let body = "";
|
|
60268
|
+
if (typeof error61.response?.data === "string") {
|
|
60269
|
+
body = error61.response.data;
|
|
60270
|
+
} else {
|
|
60271
|
+
try {
|
|
60272
|
+
body = JSON.stringify(error61.response?.data ?? "");
|
|
60273
|
+
} catch {
|
|
60274
|
+
body = "";
|
|
60275
|
+
}
|
|
60276
|
+
}
|
|
60268
60277
|
return `${error61.message}
|
|
60269
60278
|
${body}`;
|
|
60270
60279
|
}
|
|
60271
60280
|
return error61 instanceof Error ? error61.message : String(error61);
|
|
60272
60281
|
}
|
|
60282
|
+
function providerErrorPayload(error61) {
|
|
60283
|
+
if (error61 instanceof ProviderHTTPError)
|
|
60284
|
+
return error61.body;
|
|
60285
|
+
if (axios_default.isAxiosError(error61))
|
|
60286
|
+
return error61.response?.data;
|
|
60287
|
+
if (error61 && typeof error61 === "object" && "body" in error61) {
|
|
60288
|
+
return error61.body;
|
|
60289
|
+
}
|
|
60290
|
+
return;
|
|
60291
|
+
}
|
|
60292
|
+
function collectProviderErrorCodes(value, codes, depth = 0) {
|
|
60293
|
+
if (depth > 4 || value === null || value === undefined)
|
|
60294
|
+
return;
|
|
60295
|
+
if (typeof value === "string") {
|
|
60296
|
+
const trimmed = value.trim();
|
|
60297
|
+
if (trimmed.startsWith("{") || trimmed.startsWith("[")) {
|
|
60298
|
+
try {
|
|
60299
|
+
collectProviderErrorCodes(JSON.parse(trimmed), codes, depth + 1);
|
|
60300
|
+
} catch {}
|
|
60301
|
+
}
|
|
60302
|
+
const lower = trimmed.toLowerCase();
|
|
60303
|
+
for (const code of NON_RETRYABLE_PROVIDER_CODES) {
|
|
60304
|
+
if (new RegExp(`(?:^|[^a-z0-9_])${code}(?:$|[^a-z0-9_])`, "u").test(lower)) {
|
|
60305
|
+
codes.add(code);
|
|
60306
|
+
}
|
|
60307
|
+
}
|
|
60308
|
+
return;
|
|
60309
|
+
}
|
|
60310
|
+
if (Array.isArray(value)) {
|
|
60311
|
+
for (const item of value)
|
|
60312
|
+
collectProviderErrorCodes(item, codes, depth + 1);
|
|
60313
|
+
return;
|
|
60314
|
+
}
|
|
60315
|
+
if (typeof value !== "object")
|
|
60316
|
+
return;
|
|
60317
|
+
for (const [key, nested] of Object.entries(value)) {
|
|
60318
|
+
if ((key === "code" || key === "type") && typeof nested === "string") {
|
|
60319
|
+
codes.add(nested.trim().toLowerCase());
|
|
60320
|
+
}
|
|
60321
|
+
if (key === "error" || key === "errors" || key === "detail" || key === "details") {
|
|
60322
|
+
collectProviderErrorCodes(nested, codes, depth + 1);
|
|
60323
|
+
}
|
|
60324
|
+
}
|
|
60325
|
+
}
|
|
60326
|
+
function hasNonRetryableProviderCode(error61) {
|
|
60327
|
+
const codes = new Set;
|
|
60328
|
+
collectProviderErrorCodes(providerErrorPayload(error61), codes);
|
|
60329
|
+
collectProviderErrorCodes(errorText(error61), codes);
|
|
60330
|
+
return [...codes].some((code) => NON_RETRYABLE_PROVIDER_CODES.has(code));
|
|
60331
|
+
}
|
|
60273
60332
|
function isRetryableProviderError(error61) {
|
|
60274
60333
|
if (error61 instanceof ProviderTimeoutError)
|
|
60275
60334
|
return true;
|
|
60335
|
+
if (hasNonRetryableProviderCode(error61))
|
|
60336
|
+
return false;
|
|
60276
60337
|
const status = errorStatus(error61);
|
|
60277
60338
|
if (status !== undefined) {
|
|
60278
60339
|
if (NON_RETRYABLE_STATUSES.has(status))
|
|
@@ -60404,11 +60465,108 @@ async function fetchWithProviderReliability(input2, init, options) {
|
|
|
60404
60465
|
}
|
|
60405
60466
|
async function axiosPostWithProviderReliability(url3, body, config2, options = {}) {
|
|
60406
60467
|
const timeout = options.streaming ? getProviderStreamTimeoutMs(options.timeoutMs) : getProviderRequestTimeoutMs(options.timeoutMs);
|
|
60407
|
-
return withProviderRetry(() =>
|
|
60408
|
-
|
|
60409
|
-
|
|
60410
|
-
|
|
60411
|
-
|
|
60468
|
+
return withProviderRetry(async () => {
|
|
60469
|
+
try {
|
|
60470
|
+
return await axios_default.post(url3, body, {
|
|
60471
|
+
...config2,
|
|
60472
|
+
timeout,
|
|
60473
|
+
signal: options.signal ?? config2.signal
|
|
60474
|
+
});
|
|
60475
|
+
} catch (error61) {
|
|
60476
|
+
if (axios_default.isAxiosError(error61) && error61.response) {
|
|
60477
|
+
let responseData = error61.response.data;
|
|
60478
|
+
if (options.streaming && isAsyncIterable(responseData)) {
|
|
60479
|
+
responseData = await readProviderErrorBody(responseData, options.signal);
|
|
60480
|
+
}
|
|
60481
|
+
const responseBody = serializeProviderErrorData(responseData);
|
|
60482
|
+
const detail = providerErrorMessage(responseBody);
|
|
60483
|
+
throw new ProviderHTTPError(`Provider request failed (${error61.response.status})${detail ? `: ${detail}` : ""}`, {
|
|
60484
|
+
status: error61.response.status,
|
|
60485
|
+
body: responseBody,
|
|
60486
|
+
headers: axiosResponseHeaders(error61.response.headers),
|
|
60487
|
+
cause: error61
|
|
60488
|
+
});
|
|
60489
|
+
}
|
|
60490
|
+
throw error61;
|
|
60491
|
+
}
|
|
60492
|
+
}, { maxRetries: options.maxRetries, signal: options.signal });
|
|
60493
|
+
}
|
|
60494
|
+
function serializeProviderErrorData(value) {
|
|
60495
|
+
if (typeof value === "string")
|
|
60496
|
+
return value;
|
|
60497
|
+
if (value instanceof Uint8Array)
|
|
60498
|
+
return new TextDecoder().decode(value);
|
|
60499
|
+
try {
|
|
60500
|
+
return JSON.stringify(value ?? "");
|
|
60501
|
+
} catch {
|
|
60502
|
+
return "";
|
|
60503
|
+
}
|
|
60504
|
+
}
|
|
60505
|
+
function providerErrorMessage(body) {
|
|
60506
|
+
const trimmed = body.trim();
|
|
60507
|
+
if (!trimmed)
|
|
60508
|
+
return "";
|
|
60509
|
+
try {
|
|
60510
|
+
const parsed = JSON.parse(trimmed);
|
|
60511
|
+
const message = parsed.error?.message ?? parsed.message ?? parsed.detail;
|
|
60512
|
+
if (typeof message === "string") {
|
|
60513
|
+
return message.replace(/\s+/gu, " ").trim().slice(0, 1000);
|
|
60514
|
+
}
|
|
60515
|
+
} catch {}
|
|
60516
|
+
return trimmed.replace(/\s+/gu, " ").slice(0, 1000);
|
|
60517
|
+
}
|
|
60518
|
+
function axiosResponseHeaders(value) {
|
|
60519
|
+
const headers = new Headers;
|
|
60520
|
+
if (!value || typeof value !== "object")
|
|
60521
|
+
return headers;
|
|
60522
|
+
const raw = typeof value.toJSON === "function" ? value.toJSON() : value;
|
|
60523
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
60524
|
+
return headers;
|
|
60525
|
+
for (const [name, header] of Object.entries(raw)) {
|
|
60526
|
+
if (header === undefined || header === null)
|
|
60527
|
+
continue;
|
|
60528
|
+
headers.set(name, Array.isArray(header) ? header.join(", ") : String(header));
|
|
60529
|
+
}
|
|
60530
|
+
return headers;
|
|
60531
|
+
}
|
|
60532
|
+
function isAsyncIterable(value) {
|
|
60533
|
+
return Boolean(value && typeof value === "object" && Symbol.asyncIterator in value && typeof value[Symbol.asyncIterator] === "function");
|
|
60534
|
+
}
|
|
60535
|
+
async function readProviderErrorBody(source, signal) {
|
|
60536
|
+
let timer;
|
|
60537
|
+
const read = async () => {
|
|
60538
|
+
const chunks = [];
|
|
60539
|
+
let bytes = 0;
|
|
60540
|
+
for await (const chunk of source) {
|
|
60541
|
+
if (signal?.aborted)
|
|
60542
|
+
throw signal.reason ?? new Error("aborted");
|
|
60543
|
+
const encoded = typeof chunk === "string" ? new TextEncoder().encode(chunk) : chunk instanceof Uint8Array ? chunk : new TextEncoder().encode(String(chunk ?? ""));
|
|
60544
|
+
const remaining = MAX_PROVIDER_ERROR_BODY_BYTES - bytes;
|
|
60545
|
+
if (remaining <= 0)
|
|
60546
|
+
break;
|
|
60547
|
+
const accepted = encoded.byteLength > remaining ? encoded.subarray(0, remaining) : encoded;
|
|
60548
|
+
chunks.push(accepted);
|
|
60549
|
+
bytes += accepted.byteLength;
|
|
60550
|
+
if (bytes >= MAX_PROVIDER_ERROR_BODY_BYTES)
|
|
60551
|
+
break;
|
|
60552
|
+
}
|
|
60553
|
+
const merged = new Uint8Array(bytes);
|
|
60554
|
+
let offset = 0;
|
|
60555
|
+
for (const chunk of chunks) {
|
|
60556
|
+
merged.set(chunk, offset);
|
|
60557
|
+
offset += chunk.byteLength;
|
|
60558
|
+
}
|
|
60559
|
+
return new TextDecoder().decode(merged);
|
|
60560
|
+
};
|
|
60561
|
+
const deadline = new Promise((_resolve, reject) => {
|
|
60562
|
+
timer = setTimeout(() => reject(new Error("Timed out reading provider error response body.")), PROVIDER_ERROR_BODY_READ_TIMEOUT_MS);
|
|
60563
|
+
});
|
|
60564
|
+
try {
|
|
60565
|
+
return await Promise.race([read(), deadline]);
|
|
60566
|
+
} finally {
|
|
60567
|
+
if (timer !== undefined)
|
|
60568
|
+
clearTimeout(timer);
|
|
60569
|
+
}
|
|
60412
60570
|
}
|
|
60413
60571
|
function trimmedUrl(value) {
|
|
60414
60572
|
const withScheme = /^https?:\/\//i.test(value.trim()) ? value.trim() : `http://${value.trim()}`;
|
|
@@ -60456,13 +60614,22 @@ function normalizeProviderEndpoint(baseUrl, defaultBaseUrl, finalSegment) {
|
|
|
60456
60614
|
}
|
|
60457
60615
|
return url3.toString().replace(/\/$/, "");
|
|
60458
60616
|
}
|
|
60459
|
-
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;
|
|
60617
|
+
var DEFAULT_PROVIDER_REQUEST_TIMEOUT_MS = 120000, DEFAULT_PROVIDER_STREAM_TIMEOUT_MS = 900000, DEFAULT_PROVIDER_MAX_RETRIES = 3, DEFAULT_RETRY_BASE_DELAY_MS = 250, MAX_PROVIDER_ERROR_BODY_BYTES, PROVIDER_ERROR_BODY_READ_TIMEOUT_MS = 1e4, RETRYABLE_STATUSES, NON_RETRYABLE_STATUSES, NON_RETRYABLE_PROVIDER_CODES, TRANSIENT_NETWORK_CODES, ProviderHTTPError, ProviderTimeoutError;
|
|
60460
60618
|
var init_providerHttp = __esm(() => {
|
|
60461
60619
|
init_axios2();
|
|
60462
60620
|
init_settings2();
|
|
60463
60621
|
init_streamIdleTimeout();
|
|
60622
|
+
MAX_PROVIDER_ERROR_BODY_BYTES = 1024 * 1024;
|
|
60464
60623
|
RETRYABLE_STATUSES = new Set([408, 429, 500, 502, 503, 504, 529]);
|
|
60465
60624
|
NON_RETRYABLE_STATUSES = new Set([400, 401, 403, 404, 422]);
|
|
60625
|
+
NON_RETRYABLE_PROVIDER_CODES = new Set([
|
|
60626
|
+
"account_deactivated",
|
|
60627
|
+
"access_terminated",
|
|
60628
|
+
"billing_hard_limit_reached",
|
|
60629
|
+
"billing_not_active",
|
|
60630
|
+
"insufficient_quota",
|
|
60631
|
+
"organization_deactivated"
|
|
60632
|
+
]);
|
|
60466
60633
|
TRANSIENT_NETWORK_CODES = new Set([
|
|
60467
60634
|
"ECONNRESET",
|
|
60468
60635
|
"ECONNREFUSED",
|
|
@@ -60508,6 +60675,45 @@ var init_providerHttp = __esm(() => {
|
|
|
60508
60675
|
};
|
|
60509
60676
|
});
|
|
60510
60677
|
|
|
60678
|
+
// src/services/providers/anthropicWorkspace.ts
|
|
60679
|
+
function isAnthropicWorkspaceId(value) {
|
|
60680
|
+
return ANTHROPIC_WORKSPACE_ID_PATTERN.test(value.trim());
|
|
60681
|
+
}
|
|
60682
|
+
function validateAnthropicWorkspaceId(value) {
|
|
60683
|
+
const trimmed = value.trim();
|
|
60684
|
+
if (!isAnthropicWorkspaceId(trimmed)) {
|
|
60685
|
+
return {
|
|
60686
|
+
ok: false,
|
|
60687
|
+
message: 'Anthropic workspace IDs start with "wrkspc_". Find the ID in Claude Console \u2192 Settings \u2192 Workspaces.'
|
|
60688
|
+
};
|
|
60689
|
+
}
|
|
60690
|
+
return { ok: true, value: trimmed };
|
|
60691
|
+
}
|
|
60692
|
+
function resolveAnthropicWorkspaceId(configured, env4 = process.env) {
|
|
60693
|
+
const raw = configured?.trim() || env4[ANTHROPIC_WORKSPACE_ENV_KEY]?.trim();
|
|
60694
|
+
if (!raw)
|
|
60695
|
+
return;
|
|
60696
|
+
const validated = validateAnthropicWorkspaceId(raw);
|
|
60697
|
+
if (validated.ok === false) {
|
|
60698
|
+
throw new Error(`${configured?.trim() ? "provider.anthropic.workspaceId" : ANTHROPIC_WORKSPACE_ENV_KEY} is invalid. ${validated.message}`);
|
|
60699
|
+
}
|
|
60700
|
+
return validated.value;
|
|
60701
|
+
}
|
|
60702
|
+
function anthropicWorkspaceHeaders(configured, env4 = process.env) {
|
|
60703
|
+
const workspaceId = resolveAnthropicWorkspaceId(configured, env4);
|
|
60704
|
+
return workspaceId ? { "anthropic-workspace-id": workspaceId } : {};
|
|
60705
|
+
}
|
|
60706
|
+
function isAnthropicWorkspaceRequiredError(message) {
|
|
60707
|
+
return /anthropic-workspace-id is required|identity-linked API key/iu.test(message);
|
|
60708
|
+
}
|
|
60709
|
+
function anthropicWorkspaceFix() {
|
|
60710
|
+
return "Set ANTHROPIC_WORKSPACE_ID, run `ur connect anthropic-api --workspace-id wrkspc_...`, or run `ur config set anthropic.workspace_id wrkspc_...`";
|
|
60711
|
+
}
|
|
60712
|
+
var ANTHROPIC_WORKSPACE_ENV_KEY = "ANTHROPIC_WORKSPACE_ID", ANTHROPIC_WORKSPACE_ID_PATTERN;
|
|
60713
|
+
var init_anthropicWorkspace = __esm(() => {
|
|
60714
|
+
ANTHROPIC_WORKSPACE_ID_PATTERN = /^wrkspc_[A-Za-z0-9]+$/u;
|
|
60715
|
+
});
|
|
60716
|
+
|
|
60511
60717
|
// src/services/providers/modelCatalog.ts
|
|
60512
60718
|
function asString(value) {
|
|
60513
60719
|
return typeof value === "string" && value.trim() ? value.trim() : undefined;
|
|
@@ -70974,6 +71180,19 @@ function setSafeProviderConfig(key, value, options = {}) {
|
|
|
70974
71180
|
}
|
|
70975
71181
|
}
|
|
70976
71182
|
};
|
|
71183
|
+
} else if (key === "anthropic.workspace_id") {
|
|
71184
|
+
if (trimmed === "auto") {
|
|
71185
|
+
settings = {
|
|
71186
|
+
provider: { anthropic: { workspaceId: undefined } }
|
|
71187
|
+
};
|
|
71188
|
+
} else {
|
|
71189
|
+
const workspace = validateAnthropicWorkspaceId(trimmed);
|
|
71190
|
+
if (workspace.ok === false)
|
|
71191
|
+
return workspace;
|
|
71192
|
+
settings = {
|
|
71193
|
+
provider: { anthropic: { workspaceId: workspace.value } }
|
|
71194
|
+
};
|
|
71195
|
+
}
|
|
70977
71196
|
} else if (key === "model") {
|
|
70978
71197
|
const currentSettings = getInitialSettings();
|
|
70979
71198
|
const currentProvider = getActiveProviderSettings(currentSettings).active ?? "ollama";
|
|
@@ -71435,7 +71654,16 @@ async function checkApiProvider(definition, settings, adapters, result) {
|
|
|
71435
71654
|
}
|
|
71436
71655
|
if (!apiKey || !baseUrl)
|
|
71437
71656
|
return;
|
|
71438
|
-
|
|
71657
|
+
let workspaceId;
|
|
71658
|
+
try {
|
|
71659
|
+
workspaceId = definition.id === "anthropic-api" ? resolveAnthropicWorkspaceId(settings.anthropic?.workspaceId, env4) : undefined;
|
|
71660
|
+
} catch (error61) {
|
|
71661
|
+
const message = error61 instanceof Error ? error61.message : String(error61);
|
|
71662
|
+
result.checks.push({ name: "workspace", status: "fail", message });
|
|
71663
|
+
addFailure(result, message, anthropicWorkspaceFix());
|
|
71664
|
+
return;
|
|
71665
|
+
}
|
|
71666
|
+
const request = apiModelsRequestForBase(definition.id, apiKey, baseUrl, workspaceId);
|
|
71439
71667
|
try {
|
|
71440
71668
|
const response = await (adapters.fetch ?? fetch)(request.url, {
|
|
71441
71669
|
method: "GET",
|
|
@@ -71443,12 +71671,14 @@ async function checkApiProvider(definition, settings, adapters, result) {
|
|
|
71443
71671
|
signal: AbortSignal.timeout(1e4)
|
|
71444
71672
|
});
|
|
71445
71673
|
if (!response.ok) {
|
|
71674
|
+
const detail = await providerHttpErrorDetail(response);
|
|
71675
|
+
const failure = detail ? `endpoint returned HTTP ${response.status}: ${detail}` : `endpoint returned HTTP ${response.status}`;
|
|
71446
71676
|
result.checks.push({
|
|
71447
71677
|
name: "endpoint",
|
|
71448
71678
|
status: "fail",
|
|
71449
|
-
message: `${request.url} returned HTTP ${response.status}
|
|
71679
|
+
message: `${request.url} returned HTTP ${response.status}${detail ? `: ${detail}` : "."}`
|
|
71450
71680
|
});
|
|
71451
|
-
addFailure(result,
|
|
71681
|
+
addFailure(result, failure, definition.id === "anthropic-api" && isAnthropicWorkspaceRequiredError(detail) ? anthropicWorkspaceFix() : `Check the API key or update base_url: ur config set base_url ${definition.id} ${baseUrl}`);
|
|
71452
71682
|
return;
|
|
71453
71683
|
}
|
|
71454
71684
|
result.checks.push({
|
|
@@ -71466,6 +71696,23 @@ async function checkApiProvider(definition, settings, adapters, result) {
|
|
|
71466
71696
|
addFailure(result, message, `Update base_url or start the configured gateway: ur config set base_url ${definition.id} ${baseUrl}`);
|
|
71467
71697
|
}
|
|
71468
71698
|
}
|
|
71699
|
+
async function providerHttpErrorDetail(response) {
|
|
71700
|
+
try {
|
|
71701
|
+
const raw = (await response.text()).trim();
|
|
71702
|
+
if (!raw)
|
|
71703
|
+
return "";
|
|
71704
|
+
let detail = raw;
|
|
71705
|
+
try {
|
|
71706
|
+
const parsed = JSON.parse(raw);
|
|
71707
|
+
const providerMessage = parsed.error?.message ?? parsed.message;
|
|
71708
|
+
if (typeof providerMessage === "string")
|
|
71709
|
+
detail = providerMessage;
|
|
71710
|
+
} catch {}
|
|
71711
|
+
return detail.replace(/\s+/gu, " ").trim().slice(0, 1000);
|
|
71712
|
+
} catch {
|
|
71713
|
+
return "";
|
|
71714
|
+
}
|
|
71715
|
+
}
|
|
71469
71716
|
function fallbackResult(settings, active, ok) {
|
|
71470
71717
|
if (ok)
|
|
71471
71718
|
return;
|
|
@@ -71949,7 +72196,11 @@ function providerModelCacheKey(provider, settings = getInitialSettings()) {
|
|
|
71949
72196
|
}
|
|
71950
72197
|
if (!endpoint)
|
|
71951
72198
|
return provider;
|
|
71952
|
-
|
|
72199
|
+
const endpointKey = providerEndpointCacheKey(provider, endpoint);
|
|
72200
|
+
if (provider !== "anthropic-api")
|
|
72201
|
+
return endpointKey;
|
|
72202
|
+
const workspaceId = resolveAnthropicWorkspaceId(getActiveProviderSettings(settings).anthropic?.workspaceId, process.env);
|
|
72203
|
+
return `${endpointKey}|workspace:${workspaceId ?? "implicit"}`;
|
|
71953
72204
|
}
|
|
71954
72205
|
function providerEndpointCacheKey(provider, endpoint) {
|
|
71955
72206
|
try {
|
|
@@ -72317,7 +72568,7 @@ async function discoverLiveModelsForProvider(provider, options = {}) {
|
|
|
72317
72568
|
}
|
|
72318
72569
|
return [];
|
|
72319
72570
|
}
|
|
72320
|
-
function apiModelsRequestForBase(provider, apiKey, configuredBase) {
|
|
72571
|
+
function apiModelsRequestForBase(provider, apiKey, configuredBase, anthropicWorkspaceId) {
|
|
72321
72572
|
const providerDefault = getProviderDefinition(provider).defaultBaseUrl;
|
|
72322
72573
|
const modelsUrl = (baseUrl, version2) => {
|
|
72323
72574
|
const url3 = new URL(normalizeBaseUrl(baseUrl));
|
|
@@ -72335,7 +72586,11 @@ function apiModelsRequestForBase(provider, apiKey, configuredBase) {
|
|
|
72335
72586
|
case "anthropic-api":
|
|
72336
72587
|
return {
|
|
72337
72588
|
url: modelsUrl(configuredBase ?? providerDefault, "v1"),
|
|
72338
|
-
headers: {
|
|
72589
|
+
headers: {
|
|
72590
|
+
"x-api-key": apiKey,
|
|
72591
|
+
"anthropic-version": "2023-06-01",
|
|
72592
|
+
...anthropicWorkspaceHeaders(anthropicWorkspaceId, {})
|
|
72593
|
+
}
|
|
72339
72594
|
};
|
|
72340
72595
|
case "gemini-api":
|
|
72341
72596
|
return {
|
|
@@ -72354,8 +72609,9 @@ function apiModelsRequestForBase(provider, apiKey, configuredBase) {
|
|
|
72354
72609
|
};
|
|
72355
72610
|
}
|
|
72356
72611
|
}
|
|
72357
|
-
function apiModelsRequest(provider, apiKey, settings) {
|
|
72358
|
-
|
|
72612
|
+
function apiModelsRequest(provider, apiKey, settings, env4 = process.env) {
|
|
72613
|
+
const providerSettings = getActiveProviderSettings(settings);
|
|
72614
|
+
return apiModelsRequestForBase(provider, apiKey, getScopedProviderBaseUrl(provider, settings), provider === "anthropic-api" ? resolveAnthropicWorkspaceId(providerSettings.anthropic?.workspaceId, env4) : undefined);
|
|
72359
72615
|
}
|
|
72360
72616
|
function apiModelEntries(provider, body) {
|
|
72361
72617
|
const root2 = body ?? {};
|
|
@@ -72411,7 +72667,7 @@ async function discoverApiProviderModels(provider, definition, options) {
|
|
|
72411
72667
|
if (!apiKey) {
|
|
72412
72668
|
throw new Error(`Not connected: run \`ur connect ${provider}\` to add an API key.`);
|
|
72413
72669
|
}
|
|
72414
|
-
const { url: url3, headers } = apiModelsRequest(provider, apiKey, options.settings ?? getInitialSettings());
|
|
72670
|
+
const { url: url3, headers } = apiModelsRequest(provider, apiKey, options.settings ?? getInitialSettings(), env4);
|
|
72415
72671
|
const fetchImpl = options.adapters?.fetch ?? fetch;
|
|
72416
72672
|
const entries = [];
|
|
72417
72673
|
const seenPageTokens = new Set;
|
|
@@ -72424,7 +72680,9 @@ async function discoverApiProviderModels(provider, definition, options) {
|
|
|
72424
72680
|
headers
|
|
72425
72681
|
});
|
|
72426
72682
|
if (!response.ok) {
|
|
72427
|
-
|
|
72683
|
+
const detail = await providerHttpErrorDetail(response);
|
|
72684
|
+
const workspaceHelp = provider === "anthropic-api" && isAnthropicWorkspaceRequiredError(detail) ? ` ${anthropicWorkspaceFix()}` : "";
|
|
72685
|
+
throw new Error(`${pageUrl} returned HTTP ${response.status}${detail ? `: ${detail}` : "."}${workspaceHelp}`);
|
|
72428
72686
|
}
|
|
72429
72687
|
let body;
|
|
72430
72688
|
try {
|
|
@@ -72718,6 +72976,7 @@ var init_providerRegistry = __esm(() => {
|
|
|
72718
72976
|
init_settings2();
|
|
72719
72977
|
init_which();
|
|
72720
72978
|
init_providerHttp();
|
|
72979
|
+
init_anthropicWorkspace();
|
|
72721
72980
|
init_modelCatalog();
|
|
72722
72981
|
init_nvidiaHostedModels();
|
|
72723
72982
|
PROVIDER_IDS = [
|
|
@@ -72895,8 +73154,8 @@ var init_providerRegistry = __esm(() => {
|
|
|
72895
73154
|
runtimeKind: "ur-native",
|
|
72896
73155
|
...UR_NATIVE_CAPABILITIES,
|
|
72897
73156
|
authMode: "api",
|
|
72898
|
-
legalPath: "ANTHROPIC_API_KEY",
|
|
72899
|
-
accessPathLabel: "API key from ANTHROPIC_API_KEY",
|
|
73157
|
+
legalPath: "ANTHROPIC_API_KEY with ANTHROPIC_WORKSPACE_ID when required",
|
|
73158
|
+
accessPathLabel: "API key from ANTHROPIC_API_KEY and optional workspace selection",
|
|
72900
73159
|
envKey: "ANTHROPIC_API_KEY",
|
|
72901
73160
|
defaultBaseUrl: "https://api.anthropic.com/v1"
|
|
72902
73161
|
},
|
|
@@ -241109,7 +241368,7 @@ var init_metadata = __esm(() => {
|
|
|
241109
241368
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
241110
241369
|
WHITESPACE_REGEX2 = /\s+/;
|
|
241111
241370
|
getVersionBase = memoize_default(() => {
|
|
241112
|
-
const match = "1.85.
|
|
241371
|
+
const match = "1.85.1".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
241113
241372
|
return match ? match[0] : undefined;
|
|
241114
241373
|
});
|
|
241115
241374
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -241149,7 +241408,7 @@ var init_metadata = __esm(() => {
|
|
|
241149
241408
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
241150
241409
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
241151
241410
|
isURAiAuth: isURAISubscriber(),
|
|
241152
|
-
version: "1.85.
|
|
241411
|
+
version: "1.85.1",
|
|
241153
241412
|
versionBase: getVersionBase(),
|
|
241154
241413
|
buildTime: "",
|
|
241155
241414
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -248588,7 +248847,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
248588
248847
|
if (!isAttributionHeaderEnabled()) {
|
|
248589
248848
|
return "";
|
|
248590
248849
|
}
|
|
248591
|
-
const version2 = `${"1.85.
|
|
248850
|
+
const version2 = `${"1.85.1"}.${fingerprint}`;
|
|
248592
248851
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
248593
248852
|
const cch = "";
|
|
248594
248853
|
const workload = getWorkload();
|
|
@@ -282071,6 +282330,7 @@ var init_types4 = __esm(() => {
|
|
|
282071
282330
|
speed: exports_external.enum(["standard", "fast"]).optional().describe("Request OpenRouter fast mode on models that explicitly support it.")
|
|
282072
282331
|
}).optional().describe("OpenRouter performance and routing controls."),
|
|
282073
282332
|
anthropic: exports_external.object({
|
|
282333
|
+
workspaceId: exports_external.string().regex(/^wrkspc_[A-Za-z0-9]+$/u).optional().describe("Claude API workspace selected for an identity-linked multi-workspace key."),
|
|
282074
282334
|
speed: exports_external.enum(["standard", "fast"]).optional().describe("Anthropic inference speed. Fast is an opt-in, premium research preview available only to enabled accounts and supported Opus models.")
|
|
282075
282335
|
}).optional().describe("Anthropic API performance controls."),
|
|
282076
282336
|
preferences: exports_external.record(exports_external.string(), NonSecretPreferenceSchema).optional().describe("Non-secret provider preferences only")
|
|
@@ -314692,7 +314952,7 @@ function getTelemetryAttributes() {
|
|
|
314692
314952
|
attributes["session.id"] = sessionId;
|
|
314693
314953
|
}
|
|
314694
314954
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
314695
|
-
attributes["app.version"] = "1.85.
|
|
314955
|
+
attributes["app.version"] = "1.85.1";
|
|
314696
314956
|
}
|
|
314697
314957
|
const oauthAccount = getOauthAccountInfo();
|
|
314698
314958
|
if (oauthAccount) {
|
|
@@ -317723,7 +317983,7 @@ var require_src3 = __commonJS((exports) => {
|
|
|
317723
317983
|
function getInstruments() {
|
|
317724
317984
|
if (instruments)
|
|
317725
317985
|
return instruments;
|
|
317726
|
-
const meter = import_api2.metrics.getMeter("ur-agent.gen_ai", "1.85.
|
|
317986
|
+
const meter = import_api2.metrics.getMeter("ur-agent.gen_ai", "1.85.1");
|
|
317727
317987
|
instruments = {
|
|
317728
317988
|
operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
|
|
317729
317989
|
description: "GenAI operation duration.",
|
|
@@ -317821,7 +318081,7 @@ function genAiAgentAttributes() {
|
|
|
317821
318081
|
"gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
|
|
317822
318082
|
"gen_ai.provider.name": "ur",
|
|
317823
318083
|
"gen_ai.agent.name": "UR-Nexus",
|
|
317824
|
-
"gen_ai.agent.version": "1.85.
|
|
318084
|
+
"gen_ai.agent.version": "1.85.1"
|
|
317825
318085
|
};
|
|
317826
318086
|
}
|
|
317827
318087
|
function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
@@ -317842,7 +318102,7 @@ function genAiWorkflowAttributes(workflowName, workflowRunId) {
|
|
|
317842
318102
|
function startGenAiWorkflowSpan(workflowName, workflowRunId) {
|
|
317843
318103
|
const attributes = genAiWorkflowAttributes(workflowName, workflowRunId);
|
|
317844
318104
|
const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
|
|
317845
|
-
return import_api2.trace.getTracer("ur-agent.gen_ai", "1.85.
|
|
318105
|
+
return import_api2.trace.getTracer("ur-agent.gen_ai", "1.85.1").startSpan(name, { kind: import_api2.SpanKind.INTERNAL, attributes });
|
|
317846
318106
|
}
|
|
317847
318107
|
function endGenAiWorkflowSpan(span, options2 = {}) {
|
|
317848
318108
|
try {
|
|
@@ -317880,7 +318140,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
|
|
|
317880
318140
|
if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
|
|
317881
318141
|
attributes["gen_ai.memory.record.count"] = options2.recordCount;
|
|
317882
318142
|
}
|
|
317883
|
-
return import_api2.trace.getTracer("ur-agent.gen_ai", "1.85.
|
|
318143
|
+
return import_api2.trace.getTracer("ur-agent.gen_ai", "1.85.1").startSpan(operation, { kind: import_api2.SpanKind.INTERNAL, attributes });
|
|
317884
318144
|
}
|
|
317885
318145
|
function endGenAiMemorySpan(span, options2 = {}) {
|
|
317886
318146
|
try {
|
|
@@ -332287,7 +332547,7 @@ async function createRuntime() {
|
|
|
332287
332547
|
bootstrapTelemetry();
|
|
332288
332548
|
const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
|
|
332289
332549
|
[import_semantic_conventions6.ATTR_SERVICE_NAME]: "ur-agent",
|
|
332290
|
-
[import_semantic_conventions6.ATTR_SERVICE_VERSION]: "1.85.
|
|
332550
|
+
[import_semantic_conventions6.ATTR_SERVICE_VERSION]: "1.85.1"
|
|
332291
332551
|
}));
|
|
332292
332552
|
const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
|
|
332293
332553
|
resource,
|
|
@@ -332320,11 +332580,11 @@ async function createRuntime() {
|
|
|
332320
332580
|
setMeterProvider(meterProvider);
|
|
332321
332581
|
setLoggerProvider(loggerProvider);
|
|
332322
332582
|
if (meterProvider) {
|
|
332323
|
-
const meter = meterProvider.getMeter("ur-agent", "1.85.
|
|
332583
|
+
const meter = meterProvider.getMeter("ur-agent", "1.85.1");
|
|
332324
332584
|
setMeter(meter, (name, options2) => meter.createCounter(name, options2));
|
|
332325
332585
|
}
|
|
332326
332586
|
if (loggerProvider) {
|
|
332327
|
-
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.85.
|
|
332587
|
+
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.85.1"));
|
|
332328
332588
|
}
|
|
332329
332589
|
if (!cleanupRegistered4) {
|
|
332330
332590
|
cleanupRegistered4 = true;
|
|
@@ -332873,7 +333133,7 @@ function isAnyTracingEnabled() {
|
|
|
332873
333133
|
return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
|
|
332874
333134
|
}
|
|
332875
333135
|
function getTracer() {
|
|
332876
|
-
return import_api32.trace.getTracer("ur-agent.gen_ai", "1.85.
|
|
333136
|
+
return import_api32.trace.getTracer("ur-agent.gen_ai", "1.85.1");
|
|
332877
333137
|
}
|
|
332878
333138
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
332879
333139
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -344879,7 +345139,7 @@ function computeFingerprint(messageText2, version2) {
|
|
|
344879
345139
|
}
|
|
344880
345140
|
function computeFingerprintFromMessages(messages) {
|
|
344881
345141
|
const firstMessageText = extractFirstMessageText(messages);
|
|
344882
|
-
return computeFingerprint(firstMessageText, "1.85.
|
|
345142
|
+
return computeFingerprint(firstMessageText, "1.85.1");
|
|
344883
345143
|
}
|
|
344884
345144
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
344885
345145
|
var init_fingerprint = () => {};
|
|
@@ -344921,7 +345181,7 @@ async function sideQuery(opts) {
|
|
|
344921
345181
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
344922
345182
|
}
|
|
344923
345183
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
344924
|
-
const fingerprint = computeFingerprint(messageText2, "1.85.
|
|
345184
|
+
const fingerprint = computeFingerprint(messageText2, "1.85.1");
|
|
344925
345185
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
344926
345186
|
const systemBlocks = [
|
|
344927
345187
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -347028,7 +347288,7 @@ var init_user = __esm(() => {
|
|
|
347028
347288
|
deviceId,
|
|
347029
347289
|
sessionId: getSessionId(),
|
|
347030
347290
|
email: getEmail(),
|
|
347031
|
-
appVersion: "1.85.
|
|
347291
|
+
appVersion: "1.85.1",
|
|
347032
347292
|
platform: getHostPlatformForAnalytics(),
|
|
347033
347293
|
organizationUuid,
|
|
347034
347294
|
accountUuid,
|
|
@@ -347788,7 +348048,7 @@ var init_growthbook_experiment_event = __esm(() => {
|
|
|
347788
348048
|
|
|
347789
348049
|
// src/utils/userAgent.ts
|
|
347790
348050
|
function getURCodeUserAgent() {
|
|
347791
|
-
return `ur/${"1.85.
|
|
348051
|
+
return `ur/${"1.85.1"}`;
|
|
347792
348052
|
}
|
|
347793
348053
|
|
|
347794
348054
|
// src/services/analytics/firstPartyEventLoggingExporter.ts
|
|
@@ -348444,7 +348704,7 @@ function initialize1PEventLogging() {
|
|
|
348444
348704
|
const platform4 = getPlatform();
|
|
348445
348705
|
const attributes = {
|
|
348446
348706
|
[import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur",
|
|
348447
|
-
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.85.
|
|
348707
|
+
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.85.1"
|
|
348448
348708
|
};
|
|
348449
348709
|
if (platform4 === "wsl") {
|
|
348450
348710
|
const wslVersion = getWslVersion();
|
|
@@ -348472,7 +348732,7 @@ function initialize1PEventLogging() {
|
|
|
348472
348732
|
})
|
|
348473
348733
|
]
|
|
348474
348734
|
});
|
|
348475
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.85.
|
|
348735
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.85.1");
|
|
348476
348736
|
}
|
|
348477
348737
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
348478
348738
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -351774,9 +352034,9 @@ async function assertMinVersion() {
|
|
|
351774
352034
|
if (false) {}
|
|
351775
352035
|
try {
|
|
351776
352036
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
351777
|
-
if (versionConfig.minVersion && lt("1.85.
|
|
352037
|
+
if (versionConfig.minVersion && lt("1.85.1", versionConfig.minVersion)) {
|
|
351778
352038
|
console.error(`
|
|
351779
|
-
It looks like your version of UR (${"1.85.
|
|
352039
|
+
It looks like your version of UR (${"1.85.1"}) needs an update.
|
|
351780
352040
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
351781
352041
|
|
|
351782
352042
|
To update, please run:
|
|
@@ -351992,7 +352252,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
351992
352252
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
351993
352253
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
351994
352254
|
pid: process.pid,
|
|
351995
|
-
currentVersion: "1.85.
|
|
352255
|
+
currentVersion: "1.85.1"
|
|
351996
352256
|
});
|
|
351997
352257
|
return "in_progress";
|
|
351998
352258
|
}
|
|
@@ -352001,7 +352261,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
352001
352261
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
352002
352262
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
352003
352263
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
352004
|
-
currentVersion: "1.85.
|
|
352264
|
+
currentVersion: "1.85.1"
|
|
352005
352265
|
});
|
|
352006
352266
|
console.error(`
|
|
352007
352267
|
Error: Windows NPM detected in WSL
|
|
@@ -352536,7 +352796,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
352536
352796
|
}
|
|
352537
352797
|
async function getDoctorDiagnostic() {
|
|
352538
352798
|
const installationType = await getCurrentInstallationType();
|
|
352539
|
-
const version2 = typeof MACRO !== "undefined" ? "1.85.
|
|
352799
|
+
const version2 = typeof MACRO !== "undefined" ? "1.85.1" : "unknown";
|
|
352540
352800
|
const installationPath = await getInstallationPath();
|
|
352541
352801
|
const invokedBinary = getInvokedBinary();
|
|
352542
352802
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -353603,7 +353863,7 @@ function getInstallationEnv() {
|
|
|
353603
353863
|
return;
|
|
353604
353864
|
}
|
|
353605
353865
|
function getURCodeVersion() {
|
|
353606
|
-
return "1.85.
|
|
353866
|
+
return "1.85.1";
|
|
353607
353867
|
}
|
|
353608
353868
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
353609
353869
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -355084,8 +355344,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
355084
355344
|
const maxVersion = await getMaxVersion();
|
|
355085
355345
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
355086
355346
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
355087
|
-
if (gte("1.85.
|
|
355088
|
-
logForDebugging(`Native installer: current version ${"1.85.
|
|
355347
|
+
if (gte("1.85.1", maxVersion)) {
|
|
355348
|
+
logForDebugging(`Native installer: current version ${"1.85.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
355089
355349
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
355090
355350
|
latency_ms: Date.now() - startTime,
|
|
355091
355351
|
max_version: maxVersion,
|
|
@@ -355096,7 +355356,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
355096
355356
|
version2 = maxVersion;
|
|
355097
355357
|
}
|
|
355098
355358
|
}
|
|
355099
|
-
if (!forceReinstall && version2 === "1.85.
|
|
355359
|
+
if (!forceReinstall && version2 === "1.85.1" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
355100
355360
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
355101
355361
|
logEvent("tengu_native_update_complete", {
|
|
355102
355362
|
latency_ms: Date.now() - startTime,
|
|
@@ -473319,7 +473579,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
473319
473579
|
const client = new Client({
|
|
473320
473580
|
name: "ur",
|
|
473321
473581
|
title: "UR",
|
|
473322
|
-
version: "1.85.
|
|
473582
|
+
version: "1.85.1",
|
|
473323
473583
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
473324
473584
|
websiteUrl: PRODUCT_URL
|
|
473325
473585
|
}, {
|
|
@@ -473676,7 +473936,7 @@ var init_client2 = __esm(() => {
|
|
|
473676
473936
|
const client = new Client({
|
|
473677
473937
|
name: "ur",
|
|
473678
473938
|
title: "UR",
|
|
473679
|
-
version: "1.85.
|
|
473939
|
+
version: "1.85.1",
|
|
473680
473940
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
473681
473941
|
websiteUrl: PRODUCT_URL
|
|
473682
473942
|
}, {
|
|
@@ -484637,7 +484897,7 @@ function Feedback({
|
|
|
484637
484897
|
platform: env2.platform,
|
|
484638
484898
|
gitRepo: envInfo.isGit,
|
|
484639
484899
|
terminal: env2.terminal,
|
|
484640
|
-
version: "1.85.
|
|
484900
|
+
version: "1.85.1",
|
|
484641
484901
|
transcript: normalizeMessagesForAPI(messages),
|
|
484642
484902
|
errors: sanitizedErrors,
|
|
484643
484903
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -484827,7 +485087,7 @@ function Feedback({
|
|
|
484827
485087
|
", ",
|
|
484828
485088
|
env2.terminal,
|
|
484829
485089
|
", v",
|
|
484830
|
-
"1.85.
|
|
485090
|
+
"1.85.1"
|
|
484831
485091
|
]
|
|
484832
485092
|
}, undefined, true, undefined, this)
|
|
484833
485093
|
]
|
|
@@ -484933,7 +485193,7 @@ ${sanitizedDescription}
|
|
|
484933
485193
|
` + `**Environment Info**
|
|
484934
485194
|
` + `- Platform: ${env2.platform}
|
|
484935
485195
|
` + `- Terminal: ${env2.terminal}
|
|
484936
|
-
` + `- Version: ${"1.85.
|
|
485196
|
+
` + `- Version: ${"1.85.1"}
|
|
484937
485197
|
` + `- Feedback ID: ${feedbackId}
|
|
484938
485198
|
` + `
|
|
484939
485199
|
**Errors**
|
|
@@ -488043,7 +488303,7 @@ function buildPrimarySection() {
|
|
|
488043
488303
|
}, undefined, false, undefined, this);
|
|
488044
488304
|
return [{
|
|
488045
488305
|
label: "Version",
|
|
488046
|
-
value: "1.85.
|
|
488306
|
+
value: "1.85.1"
|
|
488047
488307
|
}, {
|
|
488048
488308
|
label: "Session name",
|
|
488049
488309
|
value: nameValue
|
|
@@ -491557,7 +491817,7 @@ function Config({
|
|
|
491557
491817
|
}
|
|
491558
491818
|
}, undefined, false, undefined, this)
|
|
491559
491819
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime176.jsxDEV(ChannelDowngradeDialog, {
|
|
491560
|
-
currentVersion: "1.85.
|
|
491820
|
+
currentVersion: "1.85.1",
|
|
491561
491821
|
onChoice: (choice) => {
|
|
491562
491822
|
setShowSubmenu(null);
|
|
491563
491823
|
setTabsHidden(false);
|
|
@@ -491569,7 +491829,7 @@ function Config({
|
|
|
491569
491829
|
autoUpdatesChannel: "stable"
|
|
491570
491830
|
};
|
|
491571
491831
|
if (choice === "stay") {
|
|
491572
|
-
newSettings.minimumVersion = "1.85.
|
|
491832
|
+
newSettings.minimumVersion = "1.85.1";
|
|
491573
491833
|
}
|
|
491574
491834
|
updateSettingsForSource("userSettings", newSettings);
|
|
491575
491835
|
setSettingsData((prev_27) => ({
|
|
@@ -499886,7 +500146,7 @@ function HelpV2(t0) {
|
|
|
499886
500146
|
let t6;
|
|
499887
500147
|
if ($2[31] !== tabs) {
|
|
499888
500148
|
t6 = /* @__PURE__ */ jsx_dev_runtime203.jsxDEV(Tabs, {
|
|
499889
|
-
title: `UR v${"1.85.
|
|
500149
|
+
title: `UR v${"1.85.1"}`,
|
|
499890
500150
|
color: "professionalBlue",
|
|
499891
500151
|
defaultTab: "general",
|
|
499892
500152
|
children: tabs
|
|
@@ -500820,7 +501080,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
500820
501080
|
async function handleInitialize(options2) {
|
|
500821
501081
|
return {
|
|
500822
501082
|
name: "UR",
|
|
500823
|
-
version: "1.85.
|
|
501083
|
+
version: "1.85.1",
|
|
500824
501084
|
protocolVersion: "0.1.0",
|
|
500825
501085
|
workspaceRoot: options2.cwd,
|
|
500826
501086
|
capabilities: {
|
|
@@ -517953,7 +518213,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
517953
518213
|
return [];
|
|
517954
518214
|
}
|
|
517955
518215
|
}
|
|
517956
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.85.
|
|
518216
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.85.1") {
|
|
517957
518217
|
if (process.env.USER_TYPE === "ant") {
|
|
517958
518218
|
const changelog = "";
|
|
517959
518219
|
if (changelog) {
|
|
@@ -517980,7 +518240,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.85.0")
|
|
|
517980
518240
|
releaseNotes
|
|
517981
518241
|
};
|
|
517982
518242
|
}
|
|
517983
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.85.
|
|
518243
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.85.1") {
|
|
517984
518244
|
if (process.env.USER_TYPE === "ant") {
|
|
517985
518245
|
const changelog = "";
|
|
517986
518246
|
if (changelog) {
|
|
@@ -520888,7 +521148,7 @@ function getRecentActivitySync() {
|
|
|
520888
521148
|
return cachedActivity;
|
|
520889
521149
|
}
|
|
520890
521150
|
function getLogoDisplayData() {
|
|
520891
|
-
const version2 = process.env.DEMO_VERSION ?? "1.85.
|
|
521151
|
+
const version2 = process.env.DEMO_VERSION ?? "1.85.1";
|
|
520892
521152
|
const serverUrl = getDirectConnectServerUrl();
|
|
520893
521153
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
520894
521154
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -521776,7 +522036,7 @@ function LogoV2() {
|
|
|
521776
522036
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
521777
522037
|
t2 = () => {
|
|
521778
522038
|
const currentConfig = getGlobalConfig();
|
|
521779
|
-
if (currentConfig.lastReleaseNotesSeen === "1.85.
|
|
522039
|
+
if (currentConfig.lastReleaseNotesSeen === "1.85.1") {
|
|
521780
522040
|
return;
|
|
521781
522041
|
}
|
|
521782
522042
|
saveGlobalConfig(_temp327);
|
|
@@ -522464,12 +522724,12 @@ function LogoV2() {
|
|
|
522464
522724
|
return t41;
|
|
522465
522725
|
}
|
|
522466
522726
|
function _temp327(current) {
|
|
522467
|
-
if (current.lastReleaseNotesSeen === "1.85.
|
|
522727
|
+
if (current.lastReleaseNotesSeen === "1.85.1") {
|
|
522468
522728
|
return current;
|
|
522469
522729
|
}
|
|
522470
522730
|
return {
|
|
522471
522731
|
...current,
|
|
522472
|
-
lastReleaseNotesSeen: "1.85.
|
|
522732
|
+
lastReleaseNotesSeen: "1.85.1"
|
|
522473
522733
|
};
|
|
522474
522734
|
}
|
|
522475
522735
|
function _temp240(s_0) {
|
|
@@ -538562,7 +538822,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
538562
538822
|
if (spec.name !== specName) {
|
|
538563
538823
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
538564
538824
|
}
|
|
538565
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.85.
|
|
538825
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.85.1" : "1.85.1");
|
|
538566
538826
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
538567
538827
|
throw new Error("invalid ur-agent package version");
|
|
538568
538828
|
}
|
|
@@ -539558,7 +539818,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
539558
539818
|
path: ".github/workflows/ur.yml",
|
|
539559
539819
|
root: "project",
|
|
539560
539820
|
content: compileAgenticCiWorkflow("default", {
|
|
539561
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.85.
|
|
539821
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.85.1" : "1.85.1"
|
|
539562
539822
|
})
|
|
539563
539823
|
},
|
|
539564
539824
|
{
|
|
@@ -539621,7 +539881,7 @@ function value(tokens, flag) {
|
|
|
539621
539881
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
539622
539882
|
}
|
|
539623
539883
|
function cliVersion() {
|
|
539624
|
-
return typeof MACRO !== "undefined" ? "1.85.
|
|
539884
|
+
return typeof MACRO !== "undefined" ? "1.85.1" : "1.85.1";
|
|
539625
539885
|
}
|
|
539626
539886
|
function workflowPath(cwd2) {
|
|
539627
539887
|
return join158(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -540530,7 +540790,7 @@ function formatA2AV1AgentCard(options2 = {}, pretty = true) {
|
|
|
540530
540790
|
var urVersion, researchSnapshotDate = "2026-08-10", coverage2, priorityRoadmap;
|
|
540531
540791
|
var init_trends = __esm(() => {
|
|
540532
540792
|
init_a2aCardSignature();
|
|
540533
|
-
urVersion = typeof MACRO !== "undefined" ? "1.85.
|
|
540793
|
+
urVersion = typeof MACRO !== "undefined" ? "1.85.1" : "1.85.1";
|
|
540534
540794
|
coverage2 = [
|
|
540535
540795
|
{
|
|
540536
540796
|
id: "local-runtime",
|
|
@@ -546263,7 +546523,7 @@ function createAcpStdioApp(deps) {
|
|
|
546263
546523
|
}
|
|
546264
546524
|
},
|
|
546265
546525
|
authMethods: [],
|
|
546266
|
-
agentInfo: { name: "UR-Nexus", version: "1.85.
|
|
546526
|
+
agentInfo: { name: "UR-Nexus", version: "1.85.1" }
|
|
546267
546527
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
546268
546528
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
546269
546529
|
await runtime2.announce({
|
|
@@ -546360,7 +546620,7 @@ function createAcpStdioAgent(deps) {
|
|
|
546360
546620
|
}
|
|
546361
546621
|
},
|
|
546362
546622
|
authMethods: [],
|
|
546363
|
-
agentInfo: { name: "UR-Nexus", version: "1.85.
|
|
546623
|
+
agentInfo: { name: "UR-Nexus", version: "1.85.1" }
|
|
546364
546624
|
});
|
|
546365
546625
|
return;
|
|
546366
546626
|
case "authenticate":
|
|
@@ -547015,7 +547275,7 @@ function option5(tokens, name) {
|
|
|
547015
547275
|
return index2 === -1 ? undefined : tokens[index2 + 1];
|
|
547016
547276
|
}
|
|
547017
547277
|
function positionals5(tokens) {
|
|
547018
|
-
const withValue = new Set(["--key"]);
|
|
547278
|
+
const withValue = new Set(["--key", "--workspace-id"]);
|
|
547019
547279
|
const values2 = [];
|
|
547020
547280
|
for (let i3 = 0;i3 < tokens.length; i3++) {
|
|
547021
547281
|
const token = tokens[i3];
|
|
@@ -547035,14 +547295,18 @@ function usage6() {
|
|
|
547035
547295
|
" ur connect status [--json] Show connection status for every provider",
|
|
547036
547296
|
" ur connect <provider> Connect (subscription: official login; API: prompts for a key)",
|
|
547037
547297
|
" ur connect <provider> --key <KEY> Store an API key (or pipe it: echo $KEY | ur connect <provider>)",
|
|
547298
|
+
" ur connect anthropic-api --workspace-id <wrkspc_...> Select a Claude workspace",
|
|
547038
547299
|
" ur connect logout <provider> Disconnect (clear stored key / CLI logout hint)",
|
|
547039
547300
|
"",
|
|
547040
547301
|
`Providers: ${PROVIDER_IDS.join(", ")}`
|
|
547041
547302
|
].join(`
|
|
547042
547303
|
`);
|
|
547043
547304
|
}
|
|
547044
|
-
async function connectProvider(provider, keyFlag) {
|
|
547305
|
+
async function connectProvider(provider, keyFlag, workspaceFlag) {
|
|
547045
547306
|
const def2 = getProviderDefinition(provider);
|
|
547307
|
+
if (workspaceFlag !== undefined && provider !== "anthropic-api") {
|
|
547308
|
+
return "--workspace-id is supported only by anthropic-api.";
|
|
547309
|
+
}
|
|
547046
547310
|
if (def2.accessType === "subscription") {
|
|
547047
547311
|
const alias = authAliasForProvider(provider);
|
|
547048
547312
|
if (alias === "provider") {
|
|
@@ -547053,6 +547317,11 @@ async function connectProvider(provider, keyFlag) {
|
|
|
547053
547317
|
Once logged in, ${def2.displayName} runs via its official CLI. Select it with /model.`;
|
|
547054
547318
|
}
|
|
547055
547319
|
if (def2.envKey) {
|
|
547320
|
+
if (provider === "anthropic-api" && workspaceFlag !== undefined) {
|
|
547321
|
+
const workspace = setSafeProviderConfig("anthropic.workspace_id", workspaceFlag);
|
|
547322
|
+
if (!workspace.ok)
|
|
547323
|
+
return workspace.message;
|
|
547324
|
+
}
|
|
547056
547325
|
let key = keyFlag;
|
|
547057
547326
|
if (key === undefined) {
|
|
547058
547327
|
try {
|
|
@@ -547114,7 +547383,10 @@ var call61 = async (args) => {
|
|
|
547114
547383
|
if (!provider) {
|
|
547115
547384
|
return { type: "text", value: usage6() };
|
|
547116
547385
|
}
|
|
547117
|
-
return {
|
|
547386
|
+
return {
|
|
547387
|
+
type: "text",
|
|
547388
|
+
value: await connectProvider(provider, option5(tokens, "--key"), option5(tokens, "--workspace-id"))
|
|
547389
|
+
};
|
|
547118
547390
|
};
|
|
547119
547391
|
var init_connect = __esm(() => {
|
|
547120
547392
|
init_argumentSubstitution();
|
|
@@ -760363,7 +760635,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
760363
760635
|
smapsRollup,
|
|
760364
760636
|
platform: process.platform,
|
|
760365
760637
|
nodeVersion: process.version,
|
|
760366
|
-
ccVersion: "1.85.
|
|
760638
|
+
ccVersion: "1.85.1"
|
|
760367
760639
|
};
|
|
760368
760640
|
}
|
|
760369
760641
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -760952,7 +761224,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
760952
761224
|
var call153 = async () => {
|
|
760953
761225
|
return {
|
|
760954
761226
|
type: "text",
|
|
760955
|
-
value: "1.85.
|
|
761227
|
+
value: "1.85.1"
|
|
760956
761228
|
};
|
|
760957
761229
|
}, version2, version_default;
|
|
760958
761230
|
var init_version = __esm(() => {
|
|
@@ -772910,7 +773182,7 @@ function generateHtmlReport(data, insights) {
|
|
|
772910
773182
|
</html>`;
|
|
772911
773183
|
}
|
|
772912
773184
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
772913
|
-
const version3 = typeof MACRO !== "undefined" ? "1.85.
|
|
773185
|
+
const version3 = typeof MACRO !== "undefined" ? "1.85.1" : "unknown";
|
|
772914
773186
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
772915
773187
|
const facets_summary = {
|
|
772916
773188
|
total: facets.size,
|
|
@@ -777225,7 +777497,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
777225
777497
|
init_settings2();
|
|
777226
777498
|
init_slowOperations();
|
|
777227
777499
|
init_uuid();
|
|
777228
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.85.
|
|
777500
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.85.1" : "unknown";
|
|
777229
777501
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
777230
777502
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
777231
777503
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -778440,7 +778712,7 @@ var init_filesystem = __esm(() => {
|
|
|
778440
778712
|
});
|
|
778441
778713
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
778442
778714
|
const nonce = randomBytes23(16).toString("hex");
|
|
778443
|
-
return join236(getURTempDir(), "bundled-skills", "1.85.
|
|
778715
|
+
return join236(getURTempDir(), "bundled-skills", "1.85.1", nonce);
|
|
778444
778716
|
});
|
|
778445
778717
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
778446
778718
|
});
|
|
@@ -798249,7 +798521,7 @@ async function createStandardAPIClient(options5) {
|
|
|
798249
798521
|
const response = await axiosPostWithProviderReliability(endpoint, buildAPIRequest(family, wireParams, providerId), {
|
|
798250
798522
|
headers: {
|
|
798251
798523
|
"Content-Type": "application/json",
|
|
798252
|
-
...buildAuthHeaders(family, apiKey, wireParams),
|
|
798524
|
+
...buildAuthHeaders(family, apiKey, wireParams, options5.anthropic),
|
|
798253
798525
|
...clientRequestId && { "x-client-request-id": clientRequestId },
|
|
798254
798526
|
...requestOptions?.headers ?? {}
|
|
798255
798527
|
}
|
|
@@ -798272,7 +798544,7 @@ async function createStandardAPIClient(options5) {
|
|
|
798272
798544
|
const response = await axiosPostWithProviderReliability(endpoint, buildAPIRequest(family, { ...wireParams, stream: true }, providerId), {
|
|
798273
798545
|
headers: {
|
|
798274
798546
|
"Content-Type": "application/json",
|
|
798275
|
-
...buildAuthHeaders(family, apiKey, wireParams),
|
|
798547
|
+
...buildAuthHeaders(family, apiKey, wireParams, options5.anthropic),
|
|
798276
798548
|
...clientRequestId && { "x-client-request-id": clientRequestId },
|
|
798277
798549
|
...requestOptions?.headers ?? {}
|
|
798278
798550
|
},
|
|
@@ -798329,7 +798601,7 @@ async function createStandardAPIClient(options5) {
|
|
|
798329
798601
|
method: "POST",
|
|
798330
798602
|
headers: {
|
|
798331
798603
|
"Content-Type": "application/json",
|
|
798332
|
-
...buildAuthHeaders(family, apiKey, params),
|
|
798604
|
+
...buildAuthHeaders(family, apiKey, params, options5.anthropic),
|
|
798333
798605
|
...requestOptions?.headers ?? {}
|
|
798334
798606
|
},
|
|
798335
798607
|
body: JSON.stringify(body)
|
|
@@ -798433,12 +798705,13 @@ function getAPIEndpoint(family, baseUrl, model, stream5) {
|
|
|
798433
798705
|
return baseUrl ?? "";
|
|
798434
798706
|
}
|
|
798435
798707
|
}
|
|
798436
|
-
function buildAuthHeaders(family, apiKey, params) {
|
|
798708
|
+
function buildAuthHeaders(family, apiKey, params, anthropic) {
|
|
798437
798709
|
switch (family) {
|
|
798438
798710
|
case "anthropic": {
|
|
798439
798711
|
const headers = {
|
|
798440
798712
|
"x-api-key": apiKey ?? "",
|
|
798441
|
-
"anthropic-version": ANTHROPIC_VERSION
|
|
798713
|
+
"anthropic-version": ANTHROPIC_VERSION,
|
|
798714
|
+
...anthropicWorkspaceHeaders(anthropic?.workspaceId, {})
|
|
798442
798715
|
};
|
|
798443
798716
|
if (Array.isArray(params.betas) && params.betas.length > 0) {
|
|
798444
798717
|
headers["anthropic-beta"] = params.betas.join(",");
|
|
@@ -799028,6 +799301,7 @@ var init_standardAPI = __esm(() => {
|
|
|
799028
799301
|
init_debug();
|
|
799029
799302
|
init_effort();
|
|
799030
799303
|
init_providerRegistry();
|
|
799304
|
+
init_anthropicWorkspace();
|
|
799031
799305
|
init_openaiCompatible();
|
|
799032
799306
|
init_providerClient();
|
|
799033
799307
|
init_providerHttp();
|
|
@@ -799332,6 +799606,10 @@ async function createAPIClient(providerId, options5 = {}) {
|
|
|
799332
799606
|
});
|
|
799333
799607
|
}
|
|
799334
799608
|
const { createStandardAPIClient: createStandardAPIClient2 } = await Promise.resolve().then(() => (init_standardAPI(), exports_standardAPI));
|
|
799609
|
+
const anthropic = providerId === "anthropic-api" ? {
|
|
799610
|
+
...providerSettings.anthropic,
|
|
799611
|
+
workspaceId: resolveAnthropicWorkspaceId(providerSettings.anthropic?.workspaceId, process.env)
|
|
799612
|
+
} : providerSettings.anthropic;
|
|
799335
799613
|
return await createStandardAPIClient2({
|
|
799336
799614
|
providerId,
|
|
799337
799615
|
apiKey,
|
|
@@ -799339,7 +799617,7 @@ async function createAPIClient(providerId, options5 = {}) {
|
|
|
799339
799617
|
maxRetries: options5.maxRetries ?? 3,
|
|
799340
799618
|
model: options5.model,
|
|
799341
799619
|
fetch: options5.fetchOverride,
|
|
799342
|
-
anthropic
|
|
799620
|
+
anthropic
|
|
799343
799621
|
});
|
|
799344
799622
|
}
|
|
799345
799623
|
var ProviderResponseParseError, ProviderCapabilityError;
|
|
@@ -799347,6 +799625,7 @@ var init_providerClient = __esm(() => {
|
|
|
799347
799625
|
init_providerRegistry();
|
|
799348
799626
|
init_settings2();
|
|
799349
799627
|
init_providerCredentials();
|
|
799628
|
+
init_anthropicWorkspace();
|
|
799350
799629
|
init_offlineMode();
|
|
799351
799630
|
init_ollamaConfig();
|
|
799352
799631
|
ProviderResponseParseError = class ProviderResponseParseError extends Error {
|
|
@@ -810290,7 +810569,7 @@ function getUserAgent() {
|
|
|
810290
810569
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
810291
810570
|
const workload = getWorkload();
|
|
810292
810571
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
810293
|
-
return `ur-cli/${"1.85.
|
|
810572
|
+
return `ur-cli/${"1.85.1"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
810294
810573
|
}
|
|
810295
810574
|
function getMCPUserAgent() {
|
|
810296
810575
|
const parts = [];
|
|
@@ -810304,7 +810583,7 @@ function getMCPUserAgent() {
|
|
|
810304
810583
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
810305
810584
|
}
|
|
810306
810585
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
810307
|
-
return `ur/${"1.85.
|
|
810586
|
+
return `ur/${"1.85.1"}${suffix}`;
|
|
810308
810587
|
}
|
|
810309
810588
|
function getWebFetchUserAgent() {
|
|
810310
810589
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -821742,7 +822021,7 @@ function a2aSseResponse(stream5, version3, onFinally) {
|
|
|
821742
822021
|
}
|
|
821743
822022
|
});
|
|
821744
822023
|
}
|
|
821745
|
-
function
|
|
822024
|
+
function isAsyncIterable2(value2) {
|
|
821746
822025
|
return Boolean(value2) && typeof value2 === "object" && Symbol.asyncIterator in value2;
|
|
821747
822026
|
}
|
|
821748
822027
|
function agentCardResponse(card, version3, request) {
|
|
@@ -821898,7 +822177,7 @@ async function handleA2AProtocolRequest(request, options5, baseUrl) {
|
|
|
821898
822177
|
let streamingLeaseTransferred = false;
|
|
821899
822178
|
try {
|
|
821900
822179
|
const response = await protocolRuntimes(options5, baseUrl).runtime.handle(payload, protocolIdentity(auth2, inspection.method === "message/send" || inspection.method === "message/stream" ? inspection.skill : undefined));
|
|
821901
|
-
if (
|
|
822180
|
+
if (isAsyncIterable2(response)) {
|
|
821902
822181
|
streamingLeaseTransferred = true;
|
|
821903
822182
|
return a2aSseResponse(response, "0.3", releaseSubmission);
|
|
821904
822183
|
}
|
|
@@ -822067,7 +822346,7 @@ async function handleA2AV1JsonRpcRequest(request, options5, baseUrl) {
|
|
|
822067
822346
|
let streamingLeaseTransferred = false;
|
|
822068
822347
|
try {
|
|
822069
822348
|
const response = await protocolRuntimes(options5, baseUrl).v1.handleJsonRpc(payload, protocolIdentity(auth2, inspection.method === "SendMessage" || inspection.method === "SendStreamingMessage" ? inspection.skill : undefined));
|
|
822070
|
-
if (
|
|
822349
|
+
if (isAsyncIterable2(response)) {
|
|
822071
822350
|
streamingLeaseTransferred = true;
|
|
822072
822351
|
return a2aSseResponse(response, "1.0", releaseSubmission);
|
|
822073
822352
|
}
|
|
@@ -827474,7 +827753,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
827474
827753
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
827475
827754
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
827476
827755
|
betas: getSdkBetas(),
|
|
827477
|
-
ur_version: "1.85.
|
|
827756
|
+
ur_version: "1.85.1",
|
|
827478
827757
|
output_style: outputStyle,
|
|
827479
827758
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
827480
827759
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -831015,7 +831294,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
831015
831294
|
function getSemverPart(version3) {
|
|
831016
831295
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
831017
831296
|
}
|
|
831018
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.85.
|
|
831297
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.85.1") {
|
|
831019
831298
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
|
|
831020
831299
|
if (!updatedVersion) {
|
|
831021
831300
|
return null;
|
|
@@ -831064,7 +831343,7 @@ function AutoUpdater({
|
|
|
831064
831343
|
return;
|
|
831065
831344
|
}
|
|
831066
831345
|
if (false) {}
|
|
831067
|
-
const currentVersion = "1.85.
|
|
831346
|
+
const currentVersion = "1.85.1";
|
|
831068
831347
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
831069
831348
|
let latestVersion = await getLatestVersion(channel);
|
|
831070
831349
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -831293,12 +831572,12 @@ function NativeAutoUpdater({
|
|
|
831293
831572
|
logEvent("tengu_native_auto_updater_start", {});
|
|
831294
831573
|
try {
|
|
831295
831574
|
const maxVersion = await getMaxVersion();
|
|
831296
|
-
if (maxVersion && gt("1.85.
|
|
831575
|
+
if (maxVersion && gt("1.85.1", maxVersion)) {
|
|
831297
831576
|
const msg = await getMaxVersionMessage();
|
|
831298
831577
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
831299
831578
|
}
|
|
831300
831579
|
const result = await installLatest(channel);
|
|
831301
|
-
const currentVersion = "1.85.
|
|
831580
|
+
const currentVersion = "1.85.1";
|
|
831302
831581
|
const latencyMs = Date.now() - startTime;
|
|
831303
831582
|
if (result.lockFailed) {
|
|
831304
831583
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -831435,17 +831714,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
831435
831714
|
const maxVersion = await getMaxVersion();
|
|
831436
831715
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
831437
831716
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
831438
|
-
if (gte("1.85.
|
|
831439
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.85.
|
|
831717
|
+
if (gte("1.85.1", maxVersion)) {
|
|
831718
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.85.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
831440
831719
|
setUpdateAvailable(false);
|
|
831441
831720
|
return;
|
|
831442
831721
|
}
|
|
831443
831722
|
latest = maxVersion;
|
|
831444
831723
|
}
|
|
831445
|
-
const hasUpdate = latest && !gte("1.85.
|
|
831724
|
+
const hasUpdate = latest && !gte("1.85.1", latest) && !shouldSkipVersion(latest);
|
|
831446
831725
|
setUpdateAvailable(!!hasUpdate);
|
|
831447
831726
|
if (hasUpdate) {
|
|
831448
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.85.
|
|
831727
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.85.1"} -> ${latest}`);
|
|
831449
831728
|
}
|
|
831450
831729
|
};
|
|
831451
831730
|
$2[0] = t1;
|
|
@@ -831479,7 +831758,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
831479
831758
|
wrap: "truncate",
|
|
831480
831759
|
children: [
|
|
831481
831760
|
"currentVersion: ",
|
|
831482
|
-
"1.85.
|
|
831761
|
+
"1.85.1"
|
|
831483
831762
|
]
|
|
831484
831763
|
}, undefined, true, undefined, this);
|
|
831485
831764
|
$2[3] = verbose;
|
|
@@ -842328,7 +842607,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
842328
842607
|
project_dir: getOriginalCwd(),
|
|
842329
842608
|
added_dirs: addedDirs
|
|
842330
842609
|
},
|
|
842331
|
-
version: "1.85.
|
|
842610
|
+
version: "1.85.1",
|
|
842332
842611
|
output_style: {
|
|
842333
842612
|
name: outputStyleName
|
|
842334
842613
|
},
|
|
@@ -842463,7 +842742,7 @@ function StatusLineInner({
|
|
|
842463
842742
|
const attention = customStatusError ?? taskAttention;
|
|
842464
842743
|
const terminalSize = React138.useContext(TerminalSizeContext);
|
|
842465
842744
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
842466
|
-
version: "1.85.
|
|
842745
|
+
version: "1.85.1",
|
|
842467
842746
|
providerLabel: providerRuntime.providerLabel,
|
|
842468
842747
|
authMode: providerRuntime.authLabel,
|
|
842469
842748
|
model: renderModelName(mainLoopModel) || providerRuntime.model || "",
|
|
@@ -854854,7 +855133,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
854854
855133
|
} catch {}
|
|
854855
855134
|
const data = {
|
|
854856
855135
|
trigger: trigger2,
|
|
854857
|
-
version: "1.85.
|
|
855136
|
+
version: "1.85.1",
|
|
854858
855137
|
platform: process.platform,
|
|
854859
855138
|
transcript,
|
|
854860
855139
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -867236,7 +867515,7 @@ function WelcomeV2() {
|
|
|
867236
867515
|
dimColor: true,
|
|
867237
867516
|
children: [
|
|
867238
867517
|
"v",
|
|
867239
|
-
"1.85.
|
|
867518
|
+
"1.85.1"
|
|
867240
867519
|
]
|
|
867241
867520
|
}, undefined, true, undefined, this)
|
|
867242
867521
|
]
|
|
@@ -868482,7 +868761,7 @@ function completeOnboarding() {
|
|
|
868482
868761
|
saveGlobalConfig((current) => ({
|
|
868483
868762
|
...current,
|
|
868484
868763
|
hasCompletedOnboarding: true,
|
|
868485
|
-
lastOnboardingVersion: "1.85.
|
|
868764
|
+
lastOnboardingVersion: "1.85.1"
|
|
868486
868765
|
}));
|
|
868487
868766
|
}
|
|
868488
868767
|
function showDialog(root2, renderer) {
|
|
@@ -873479,7 +873758,7 @@ function appendToLog(path28, message) {
|
|
|
873479
873758
|
cwd: getFsImplementation().cwd(),
|
|
873480
873759
|
userType: process.env.USER_TYPE,
|
|
873481
873760
|
sessionId: getSessionId(),
|
|
873482
|
-
version: "1.85.
|
|
873761
|
+
version: "1.85.1"
|
|
873483
873762
|
};
|
|
873484
873763
|
getLogWriter(path28).write(messageWithTimestamp);
|
|
873485
873764
|
}
|
|
@@ -877642,8 +877921,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
877642
877921
|
}
|
|
877643
877922
|
async function checkEnvLessBridgeMinVersion() {
|
|
877644
877923
|
const cfg = await getEnvLessBridgeConfig();
|
|
877645
|
-
if (cfg.min_version && lt("1.85.
|
|
877646
|
-
return `Your version of UR (${"1.85.
|
|
877924
|
+
if (cfg.min_version && lt("1.85.1", cfg.min_version)) {
|
|
877925
|
+
return `Your version of UR (${"1.85.1"}) is too old for Remote Control.
|
|
877647
877926
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
877648
877927
|
}
|
|
877649
877928
|
return null;
|
|
@@ -878117,7 +878396,7 @@ async function initBridgeCore(params) {
|
|
|
878117
878396
|
const rawApi = createBridgeApiClient({
|
|
878118
878397
|
baseUrl,
|
|
878119
878398
|
getAccessToken,
|
|
878120
|
-
runnerVersion: "1.85.
|
|
878399
|
+
runnerVersion: "1.85.1",
|
|
878121
878400
|
onDebug: logForDebugging,
|
|
878122
878401
|
onAuth401,
|
|
878123
878402
|
getTrustedDeviceToken
|
|
@@ -891559,7 +891838,7 @@ function getAgUiCapabilities() {
|
|
|
891559
891838
|
name: "UR-Nexus",
|
|
891560
891839
|
type: "ur-nexus",
|
|
891561
891840
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
891562
|
-
version: "1.85.
|
|
891841
|
+
version: "1.85.1",
|
|
891563
891842
|
provider: "UR",
|
|
891564
891843
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
891565
891844
|
},
|
|
@@ -892379,7 +892658,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
892379
892658
|
};
|
|
892380
892659
|
const server2 = new Server({
|
|
892381
892660
|
name: "ur-nexus",
|
|
892382
|
-
version: "1.85.
|
|
892661
|
+
version: "1.85.1"
|
|
892383
892662
|
}, {
|
|
892384
892663
|
capabilities: {
|
|
892385
892664
|
tools: {}
|
|
@@ -893582,7 +893861,7 @@ function thrownResponse(error61) {
|
|
|
893582
893861
|
}
|
|
893583
893862
|
async function createUrMcp2026Runtime(options5) {
|
|
893584
893863
|
const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
|
|
893585
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.85.
|
|
893864
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.85.1" }, { capabilities: {} });
|
|
893586
893865
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
893587
893866
|
try {
|
|
893588
893867
|
await server2.connect(serverTransport);
|
|
@@ -893593,7 +893872,7 @@ async function createUrMcp2026Runtime(options5) {
|
|
|
893593
893872
|
}
|
|
893594
893873
|
const runtime2 = new Mcp2026Runtime({
|
|
893595
893874
|
cwd: options5.cwd,
|
|
893596
|
-
version: "1.85.
|
|
893875
|
+
version: "1.85.1",
|
|
893597
893876
|
backend: {
|
|
893598
893877
|
listTools: async () => {
|
|
893599
893878
|
const listed = await client2.listTools();
|
|
@@ -894524,6 +894803,7 @@ var init_providers2 = __esm(() => {
|
|
|
894524
894803
|
"openrouter.service_tier",
|
|
894525
894804
|
"openrouter.speed",
|
|
894526
894805
|
"anthropic.speed",
|
|
894806
|
+
"anthropic.workspace_id",
|
|
894527
894807
|
"model",
|
|
894528
894808
|
"base_url"
|
|
894529
894809
|
];
|
|
@@ -894624,6 +894904,11 @@ function providerConfigEntries() {
|
|
|
894624
894904
|
value: configured.anthropic?.speed ?? "standard",
|
|
894625
894905
|
category: "provider"
|
|
894626
894906
|
},
|
|
894907
|
+
{
|
|
894908
|
+
key: "anthropic.workspace_id",
|
|
894909
|
+
value: configured.anthropic?.workspaceId ?? null,
|
|
894910
|
+
category: "provider"
|
|
894911
|
+
},
|
|
894627
894912
|
{ key: "model", value: active3.model ?? null, category: "provider" },
|
|
894628
894913
|
{ key: "base_url", value: active3.baseUrl ?? null, category: "provider" }
|
|
894629
894914
|
];
|
|
@@ -896477,7 +896762,7 @@ async function update() {
|
|
|
896477
896762
|
logEvent("tengu_update_check", {});
|
|
896478
896763
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
896479
896764
|
const result = await checkUpgradeStatus({
|
|
896480
|
-
currentVersion: "1.85.
|
|
896765
|
+
currentVersion: "1.85.1",
|
|
896481
896766
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
896482
896767
|
installationType: diagnostic2.installationType,
|
|
896483
896768
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -897805,7 +898090,7 @@ ${customInstructions}` : customInstructions;
|
|
|
897805
898090
|
}
|
|
897806
898091
|
}
|
|
897807
898092
|
logForDiagnosticsNoPII("info", "started", {
|
|
897808
|
-
version: "1.85.
|
|
898093
|
+
version: "1.85.1",
|
|
897809
898094
|
is_native_binary: isInBundledMode()
|
|
897810
898095
|
});
|
|
897811
898096
|
registerCleanup(async () => {
|
|
@@ -898592,7 +898877,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
898592
898877
|
pendingHookMessages
|
|
898593
898878
|
}, renderAndRun);
|
|
898594
898879
|
}
|
|
898595
|
-
}).version("1.85.
|
|
898880
|
+
}).version("1.85.1 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
898596
898881
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
898597
898882
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
898598
898883
|
if (canUserConfigureAdvisor()) {
|
|
@@ -899719,7 +900004,7 @@ if (false) {}
|
|
|
899719
900004
|
async function main2() {
|
|
899720
900005
|
const args = process.argv.slice(2);
|
|
899721
900006
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
899722
|
-
console.log(`${"1.85.
|
|
900007
|
+
console.log(`${"1.85.1"} (UR-Nexus)`);
|
|
899723
900008
|
return;
|
|
899724
900009
|
}
|
|
899725
900010
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|