ur-agent 1.31.0 → 1.32.0
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 +15 -0
- package/dist/cli.js +184 -82
- package/docs/providers.md +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.32.0
|
|
4
|
+
|
|
5
|
+
- `/model` now shows the subscription providers (Codex CLI, Claude Code, Gemini
|
|
6
|
+
CLI, Antigravity) again. They are enabled the moment you `ur connect` them
|
|
7
|
+
(persisted per-account opt-in) — no `UR_ENABLE_EXTERNAL_APP_PROVIDERS` env var
|
|
8
|
+
needed — and run via the official CLI. Not connected → clear connect prompt.
|
|
9
|
+
- API providers (OpenAI, Anthropic, Gemini, OpenRouter) now load their model
|
|
10
|
+
lists **live** from each provider's `/models` endpoint using your connected
|
|
11
|
+
key (OpenAI/Anthropic/OpenRouter `data[].id`; Gemini `models[]` filtered to
|
|
12
|
+
`generateContent`). No hardcoded model IDs; the curated list is only a
|
|
13
|
+
fallback shown before you connect. Subscription CLIs keep a curated list
|
|
14
|
+
because their official CLIs expose no models API.
|
|
15
|
+
- Live-discovered models validate against the discovered list (with cold-process
|
|
16
|
+
tolerance), so a saved API model keeps working across restarts.
|
|
17
|
+
|
|
3
18
|
## 1.31.0
|
|
4
19
|
|
|
5
20
|
- Add in-app provider connection: `ur connect` / `/connect` connects a provider
|
package/dist/cli.js
CHANGED
|
@@ -51616,6 +51616,7 @@ __export(exports_providerRegistry, {
|
|
|
51616
51616
|
isProviderRuntimeSelectable: () => isProviderRuntimeSelectable,
|
|
51617
51617
|
isProviderId: () => isProviderId,
|
|
51618
51618
|
isModelSupportedByProvider: () => isModelSupportedByProvider,
|
|
51619
|
+
isExternalBridgeEnabled: () => isExternalBridgeEnabled,
|
|
51619
51620
|
getValidModelIdsForProvider: () => getValidModelIdsForProvider,
|
|
51620
51621
|
getRuntimeProviderId: () => getRuntimeProviderId,
|
|
51621
51622
|
getProviderStatus: () => getProviderStatus,
|
|
@@ -51635,6 +51636,7 @@ __export(exports_providerRegistry, {
|
|
|
51635
51636
|
formatProviderDoctor: () => formatProviderDoctor,
|
|
51636
51637
|
formatInvalidProviderModelMessage: () => formatInvalidProviderModelMessage,
|
|
51637
51638
|
externalAppProviderBridgeEnabled: () => externalAppProviderBridgeEnabled,
|
|
51639
|
+
enableExternalBridge: () => enableExternalBridge,
|
|
51638
51640
|
doctorProvider: () => doctorProvider,
|
|
51639
51641
|
doctorActiveProvider: () => doctorActiveProvider,
|
|
51640
51642
|
credentialTypeLabel: () => credentialTypeLabel,
|
|
@@ -51775,11 +51777,43 @@ function credentialTypeLabel(type) {
|
|
|
51775
51777
|
function externalAppProviderBridgeEnabled(env4 = process.env) {
|
|
51776
51778
|
return env4.UR_ENABLE_EXTERNAL_APP_PROVIDERS === "1";
|
|
51777
51779
|
}
|
|
51780
|
+
function isExternalBridgeEnabled(providerId, env4 = process.env, settings = getInitialSettings()) {
|
|
51781
|
+
if (externalAppProviderBridgeEnabled(env4)) {
|
|
51782
|
+
return true;
|
|
51783
|
+
}
|
|
51784
|
+
const provider = resolveProviderId(providerId);
|
|
51785
|
+
const enabled = settings.provider?.enabledExternalBridges;
|
|
51786
|
+
return Boolean(provider && Array.isArray(enabled) && enabled.includes(provider));
|
|
51787
|
+
}
|
|
51788
|
+
function enableExternalBridge(providerId) {
|
|
51789
|
+
const provider = resolveProviderId(providerId);
|
|
51790
|
+
if (!provider) {
|
|
51791
|
+
return { ok: false, message: `Unknown provider "${providerId}". Run: ur provider list` };
|
|
51792
|
+
}
|
|
51793
|
+
if (getProviderDefinition(provider).runtimeKind !== "external-app") {
|
|
51794
|
+
return { ok: true, message: `${provider} does not require an external-app opt-in.` };
|
|
51795
|
+
}
|
|
51796
|
+
const settings = getInitialSettings();
|
|
51797
|
+
const current = settings.provider?.enabledExternalBridges ?? [];
|
|
51798
|
+
if (current.includes(provider)) {
|
|
51799
|
+
return { ok: true, message: `${provider} is already enabled.` };
|
|
51800
|
+
}
|
|
51801
|
+
const result = updateSettingsForSource("userSettings", {
|
|
51802
|
+
provider: {
|
|
51803
|
+
...settings.provider ?? {},
|
|
51804
|
+
enabledExternalBridges: [...current, provider]
|
|
51805
|
+
}
|
|
51806
|
+
});
|
|
51807
|
+
if (result.error) {
|
|
51808
|
+
return { ok: false, message: `Failed to persist opt-in: ${result.error.message}` };
|
|
51809
|
+
}
|
|
51810
|
+
return { ok: true, message: `Enabled ${provider} for this account.` };
|
|
51811
|
+
}
|
|
51778
51812
|
function getProviderRuntimeKind(providerId) {
|
|
51779
51813
|
const provider = resolveProviderId(providerId);
|
|
51780
51814
|
return provider ? getProviderDefinition(provider).runtimeKind : "unknown";
|
|
51781
51815
|
}
|
|
51782
|
-
function getProviderRuntimeBlockReason(providerId, env4 = process.env) {
|
|
51816
|
+
function getProviderRuntimeBlockReason(providerId, env4 = process.env, settings = getInitialSettings()) {
|
|
51783
51817
|
const provider = resolveProviderId(providerId);
|
|
51784
51818
|
if (!provider) {
|
|
51785
51819
|
return `Unknown provider "${providerId}". Run: ur provider list`;
|
|
@@ -51791,10 +51825,10 @@ function getProviderRuntimeBlockReason(providerId, env4 = process.env) {
|
|
|
51791
51825
|
if (definition.runtimeKind !== "external-app") {
|
|
51792
51826
|
return null;
|
|
51793
51827
|
}
|
|
51794
|
-
if (
|
|
51828
|
+
if (isExternalBridgeEnabled(provider, env4, settings)) {
|
|
51795
51829
|
return null;
|
|
51796
51830
|
}
|
|
51797
|
-
return `Provider "${provider}" uses an external app bridge (${definition.displayName})
|
|
51831
|
+
return `Provider "${provider}" uses an external app bridge (${definition.displayName}). Connect it once with \`ur connect ${provider}\` (or set UR_ENABLE_EXTERNAL_APP_PROVIDERS=1) to enable it. Otherwise choose an API/local/server provider such as openai-api, anthropic-api, gemini-api, openrouter, ollama, lmstudio, llama.cpp, or vllm.`;
|
|
51798
51832
|
}
|
|
51799
51833
|
function isProviderRuntimeSelectable(providerId, env4 = process.env) {
|
|
51800
51834
|
return getProviderRuntimeBlockReason(providerId, env4) === null;
|
|
@@ -52564,6 +52598,9 @@ function staticModelsForProvider(provider) {
|
|
|
52564
52598
|
async function discoverLiveModelsForProvider(provider, options = {}) {
|
|
52565
52599
|
const definition = getProviderDefinition(provider);
|
|
52566
52600
|
if (!definition.endpointKind) {
|
|
52601
|
+
if (definition.accessType === "api" && definition.modelDiscoveryType === "live") {
|
|
52602
|
+
return discoverApiProviderModels(provider, definition, options);
|
|
52603
|
+
}
|
|
52567
52604
|
return [];
|
|
52568
52605
|
}
|
|
52569
52606
|
const settings = options.settings ?? getInitialSettings();
|
|
@@ -52585,6 +52622,68 @@ async function discoverLiveModelsForProvider(provider, options = {}) {
|
|
|
52585
52622
|
const names = definition.endpointKind === "ollama" ? parseOllamaModelNamesFromTags(body) : parseOpenAICompatibleModelNames(body);
|
|
52586
52623
|
return modelDefinitionsFromNames(provider, names, "live");
|
|
52587
52624
|
}
|
|
52625
|
+
function apiModelsRequest(provider, apiKey) {
|
|
52626
|
+
switch (provider) {
|
|
52627
|
+
case "anthropic-api":
|
|
52628
|
+
return {
|
|
52629
|
+
url: "https://api.anthropic.com/v1/models",
|
|
52630
|
+
headers: { "x-api-key": apiKey, "anthropic-version": "2023-06-01" }
|
|
52631
|
+
};
|
|
52632
|
+
case "gemini-api":
|
|
52633
|
+
return {
|
|
52634
|
+
url: "https://generativelanguage.googleapis.com/v1beta/models",
|
|
52635
|
+
headers: { "x-goog-api-key": apiKey }
|
|
52636
|
+
};
|
|
52637
|
+
case "openrouter":
|
|
52638
|
+
return {
|
|
52639
|
+
url: "https://openrouter.ai/api/v1/models",
|
|
52640
|
+
headers: { Authorization: `Bearer ${apiKey}` }
|
|
52641
|
+
};
|
|
52642
|
+
default:
|
|
52643
|
+
return {
|
|
52644
|
+
url: "https://api.openai.com/v1/models",
|
|
52645
|
+
headers: { Authorization: `Bearer ${apiKey}` }
|
|
52646
|
+
};
|
|
52647
|
+
}
|
|
52648
|
+
}
|
|
52649
|
+
function parseApiModelIds(provider, body) {
|
|
52650
|
+
const root2 = body ?? {};
|
|
52651
|
+
if (provider === "gemini-api") {
|
|
52652
|
+
const models = Array.isArray(root2.models) ? root2.models : [];
|
|
52653
|
+
const names2 = models.filter((m) => {
|
|
52654
|
+
const methods = m.supportedGenerationMethods;
|
|
52655
|
+
return !Array.isArray(methods) || methods.includes("generateContent");
|
|
52656
|
+
}).map((m) => typeof m.name === "string" ? m.name.replace(/^models\//, "") : "").filter(Boolean);
|
|
52657
|
+
return [...new Set(names2)].sort((a2, b) => a2.localeCompare(b));
|
|
52658
|
+
}
|
|
52659
|
+
const data = Array.isArray(root2.data) ? root2.data : [];
|
|
52660
|
+
const names = data.map((m) => typeof m.id === "string" ? m.id : "").filter(Boolean);
|
|
52661
|
+
return [...new Set(names)].sort((a2, b) => a2.localeCompare(b));
|
|
52662
|
+
}
|
|
52663
|
+
async function discoverApiProviderModels(provider, definition, options) {
|
|
52664
|
+
const env4 = options.adapters?.env ?? process.env;
|
|
52665
|
+
let apiKey = definition.envKey ? env4[definition.envKey] : undefined;
|
|
52666
|
+
if (!apiKey) {
|
|
52667
|
+
try {
|
|
52668
|
+
const { getProviderApiKey: getProviderApiKey2 } = await Promise.resolve().then(() => (init_providerCredentials(), exports_providerCredentials));
|
|
52669
|
+
apiKey = getProviderApiKey2(provider, { env: env4 });
|
|
52670
|
+
} catch {}
|
|
52671
|
+
}
|
|
52672
|
+
if (!apiKey) {
|
|
52673
|
+
throw new Error(`Not connected: run \`ur connect ${provider}\` to add an API key.`);
|
|
52674
|
+
}
|
|
52675
|
+
const { url: url3, headers } = apiModelsRequest(provider, apiKey);
|
|
52676
|
+
const response = await (options.adapters?.fetch ?? fetch)(url3, {
|
|
52677
|
+
method: "GET",
|
|
52678
|
+
signal: options.signal,
|
|
52679
|
+
headers
|
|
52680
|
+
});
|
|
52681
|
+
if (!response.ok) {
|
|
52682
|
+
throw new Error(`${url3} returned HTTP ${response.status}.`);
|
|
52683
|
+
}
|
|
52684
|
+
const body = await response.json();
|
|
52685
|
+
return modelDefinitionsFromNames(provider, parseApiModelIds(provider, body), "live");
|
|
52686
|
+
}
|
|
52588
52687
|
async function listModelsForProviderWithSource(providerId, options = {}) {
|
|
52589
52688
|
const provider = resolveProviderId(providerId);
|
|
52590
52689
|
if (!provider) {
|
|
@@ -52707,12 +52806,13 @@ function validateProviderModelPair(providerId, modelId, options = {}) {
|
|
|
52707
52806
|
const suppliedModels = (options.availableModels ?? []).map((model) => typeof model === "string" ? model : model.id);
|
|
52708
52807
|
const cachedModels = getCachedProviderModels(provider).map((model) => model.id);
|
|
52709
52808
|
const staticModelIds = staticModelsForProvider(provider).map((model) => model.id);
|
|
52710
|
-
const hasDynamicModels = models.some((model) => model.isDynamic);
|
|
52809
|
+
const hasDynamicModels = models.some((model) => model.isDynamic) || getProviderDefinition(provider).modelDiscoveryType === "live";
|
|
52711
52810
|
const validModelIds = suppliedModels.length > 0 ? suppliedModels : hasDynamicModels ? cachedModels.length > 0 ? cachedModels : staticModelIds : Array.from(new Set([...staticModelIds, ...cachedModels]));
|
|
52712
52811
|
if (validModelIds.includes(modelId)) {
|
|
52713
52812
|
return { valid: true };
|
|
52714
52813
|
}
|
|
52715
|
-
|
|
52814
|
+
const noAuthoritativeList = cachedModels.length === 0 && suppliedModels.length === 0;
|
|
52815
|
+
if (hasDynamicModels && options.allowUncachedDynamic && noAuthoritativeList) {
|
|
52716
52816
|
return { valid: true };
|
|
52717
52817
|
}
|
|
52718
52818
|
const defaultModel = getDefaultModelForProvider(provider);
|
|
@@ -52889,10 +52989,10 @@ var init_providerRegistry = __esm(() => {
|
|
|
52889
52989
|
statusBarName: "OpenAI",
|
|
52890
52990
|
accessType: "api",
|
|
52891
52991
|
credentialType: "api-key",
|
|
52892
|
-
modelDiscoveryType: "
|
|
52992
|
+
modelDiscoveryType: "live",
|
|
52893
52993
|
statusCheck: "api-key",
|
|
52894
52994
|
listModels: "static",
|
|
52895
|
-
validateModel: "
|
|
52995
|
+
validateModel: "discovered-list",
|
|
52896
52996
|
runtimeKind: "ur-native",
|
|
52897
52997
|
authMode: "api",
|
|
52898
52998
|
legalPath: "OPENAI_API_KEY",
|
|
@@ -52905,10 +53005,10 @@ var init_providerRegistry = __esm(() => {
|
|
|
52905
53005
|
statusBarName: "Claude API",
|
|
52906
53006
|
accessType: "api",
|
|
52907
53007
|
credentialType: "api-key",
|
|
52908
|
-
modelDiscoveryType: "
|
|
53008
|
+
modelDiscoveryType: "live",
|
|
52909
53009
|
statusCheck: "api-key",
|
|
52910
53010
|
listModels: "static",
|
|
52911
|
-
validateModel: "
|
|
53011
|
+
validateModel: "discovered-list",
|
|
52912
53012
|
runtimeKind: "ur-native",
|
|
52913
53013
|
authMode: "api",
|
|
52914
53014
|
legalPath: "ANTHROPIC_API_KEY",
|
|
@@ -52921,10 +53021,10 @@ var init_providerRegistry = __esm(() => {
|
|
|
52921
53021
|
statusBarName: "Gemini API",
|
|
52922
53022
|
accessType: "api",
|
|
52923
53023
|
credentialType: "api-key",
|
|
52924
|
-
modelDiscoveryType: "
|
|
53024
|
+
modelDiscoveryType: "live",
|
|
52925
53025
|
statusCheck: "api-key",
|
|
52926
53026
|
listModels: "static",
|
|
52927
|
-
validateModel: "
|
|
53027
|
+
validateModel: "discovered-list",
|
|
52928
53028
|
runtimeKind: "ur-native",
|
|
52929
53029
|
authMode: "api",
|
|
52930
53030
|
legalPath: "GEMINI_API_KEY",
|
|
@@ -52937,10 +53037,10 @@ var init_providerRegistry = __esm(() => {
|
|
|
52937
53037
|
statusBarName: "OpenRouter",
|
|
52938
53038
|
accessType: "api",
|
|
52939
53039
|
credentialType: "api-key",
|
|
52940
|
-
modelDiscoveryType: "
|
|
53040
|
+
modelDiscoveryType: "live",
|
|
52941
53041
|
statusCheck: "api-key",
|
|
52942
53042
|
listModels: "static",
|
|
52943
|
-
validateModel: "
|
|
53043
|
+
validateModel: "discovered-list",
|
|
52944
53044
|
runtimeKind: "ur-native",
|
|
52945
53045
|
authMode: "api",
|
|
52946
53046
|
legalPath: "OPENROUTER_API_KEY",
|
|
@@ -69418,7 +69518,7 @@ var init_auth = __esm(() => {
|
|
|
69418
69518
|
|
|
69419
69519
|
// src/utils/userAgent.ts
|
|
69420
69520
|
function getURCodeUserAgent() {
|
|
69421
|
-
return `ur/${"1.
|
|
69521
|
+
return `ur/${"1.32.0"}`;
|
|
69422
69522
|
}
|
|
69423
69523
|
|
|
69424
69524
|
// src/utils/workloadContext.ts
|
|
@@ -69440,7 +69540,7 @@ function getUserAgent() {
|
|
|
69440
69540
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
69441
69541
|
const workload = getWorkload();
|
|
69442
69542
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
69443
|
-
return `ur-cli/${"1.
|
|
69543
|
+
return `ur-cli/${"1.32.0"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
69444
69544
|
}
|
|
69445
69545
|
function getMCPUserAgent() {
|
|
69446
69546
|
const parts = [];
|
|
@@ -69454,7 +69554,7 @@ function getMCPUserAgent() {
|
|
|
69454
69554
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
69455
69555
|
}
|
|
69456
69556
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
69457
|
-
return `ur/${"1.
|
|
69557
|
+
return `ur/${"1.32.0"}${suffix}`;
|
|
69458
69558
|
}
|
|
69459
69559
|
function getWebFetchUserAgent() {
|
|
69460
69560
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -69592,7 +69692,7 @@ var init_user = __esm(() => {
|
|
|
69592
69692
|
deviceId,
|
|
69593
69693
|
sessionId: getSessionId(),
|
|
69594
69694
|
email: getEmail(),
|
|
69595
|
-
appVersion: "1.
|
|
69695
|
+
appVersion: "1.32.0",
|
|
69596
69696
|
platform: getHostPlatformForAnalytics(),
|
|
69597
69697
|
organizationUuid,
|
|
69598
69698
|
accountUuid,
|
|
@@ -76109,7 +76209,7 @@ var init_metadata = __esm(() => {
|
|
|
76109
76209
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
76110
76210
|
WHITESPACE_REGEX = /\s+/;
|
|
76111
76211
|
getVersionBase = memoize_default(() => {
|
|
76112
|
-
const match = "1.
|
|
76212
|
+
const match = "1.32.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
76113
76213
|
return match ? match[0] : undefined;
|
|
76114
76214
|
});
|
|
76115
76215
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -76149,7 +76249,7 @@ var init_metadata = __esm(() => {
|
|
|
76149
76249
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
76150
76250
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
76151
76251
|
isURAiAuth: isURAISubscriber2(),
|
|
76152
|
-
version: "1.
|
|
76252
|
+
version: "1.32.0",
|
|
76153
76253
|
versionBase: getVersionBase(),
|
|
76154
76254
|
buildTime: "",
|
|
76155
76255
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -76819,7 +76919,7 @@ function initialize1PEventLogging() {
|
|
|
76819
76919
|
const platform2 = getPlatform();
|
|
76820
76920
|
const attributes = {
|
|
76821
76921
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
76822
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.
|
|
76922
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.32.0"
|
|
76823
76923
|
};
|
|
76824
76924
|
if (platform2 === "wsl") {
|
|
76825
76925
|
const wslVersion = getWslVersion();
|
|
@@ -76846,7 +76946,7 @@ function initialize1PEventLogging() {
|
|
|
76846
76946
|
})
|
|
76847
76947
|
]
|
|
76848
76948
|
});
|
|
76849
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.
|
|
76949
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.32.0");
|
|
76850
76950
|
}
|
|
76851
76951
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
76852
76952
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -82143,7 +82243,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
|
|
|
82143
82243
|
function formatA2AAgentCard(options = {}, pretty = true) {
|
|
82144
82244
|
return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
|
|
82145
82245
|
}
|
|
82146
|
-
var urVersion = "1.
|
|
82246
|
+
var urVersion = "1.32.0", coverage, priorityRoadmap;
|
|
82147
82247
|
var init_trends = __esm(() => {
|
|
82148
82248
|
coverage = [
|
|
82149
82249
|
{
|
|
@@ -84136,7 +84236,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
84136
84236
|
if (!isAttributionHeaderEnabled()) {
|
|
84137
84237
|
return "";
|
|
84138
84238
|
}
|
|
84139
|
-
const version2 = `${"1.
|
|
84239
|
+
const version2 = `${"1.32.0"}.${fingerprint}`;
|
|
84140
84240
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
84141
84241
|
const cch = "";
|
|
84142
84242
|
const workload = getWorkload();
|
|
@@ -191790,7 +191890,7 @@ function getTelemetryAttributes() {
|
|
|
191790
191890
|
attributes["session.id"] = sessionId;
|
|
191791
191891
|
}
|
|
191792
191892
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
191793
|
-
attributes["app.version"] = "1.
|
|
191893
|
+
attributes["app.version"] = "1.32.0";
|
|
191794
191894
|
}
|
|
191795
191895
|
const oauthAccount = getOauthAccountInfo();
|
|
191796
191896
|
if (oauthAccount) {
|
|
@@ -227175,7 +227275,7 @@ function getInstallationEnv() {
|
|
|
227175
227275
|
return;
|
|
227176
227276
|
}
|
|
227177
227277
|
function getURCodeVersion() {
|
|
227178
|
-
return "1.
|
|
227278
|
+
return "1.32.0";
|
|
227179
227279
|
}
|
|
227180
227280
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
227181
227281
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -230014,7 +230114,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
230014
230114
|
const client2 = new Client({
|
|
230015
230115
|
name: "ur",
|
|
230016
230116
|
title: "UR",
|
|
230017
|
-
version: "1.
|
|
230117
|
+
version: "1.32.0",
|
|
230018
230118
|
description: "UR-AGENT autonomous engineering workflow engine",
|
|
230019
230119
|
websiteUrl: PRODUCT_URL
|
|
230020
230120
|
}, {
|
|
@@ -230368,7 +230468,7 @@ var init_client5 = __esm(() => {
|
|
|
230368
230468
|
const client2 = new Client({
|
|
230369
230469
|
name: "ur",
|
|
230370
230470
|
title: "UR",
|
|
230371
|
-
version: "1.
|
|
230471
|
+
version: "1.32.0",
|
|
230372
230472
|
description: "UR-AGENT autonomous engineering workflow engine",
|
|
230373
230473
|
websiteUrl: PRODUCT_URL
|
|
230374
230474
|
}, {
|
|
@@ -240182,9 +240282,9 @@ async function assertMinVersion() {
|
|
|
240182
240282
|
if (false) {}
|
|
240183
240283
|
try {
|
|
240184
240284
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
240185
|
-
if (versionConfig.minVersion && lt("1.
|
|
240285
|
+
if (versionConfig.minVersion && lt("1.32.0", versionConfig.minVersion)) {
|
|
240186
240286
|
console.error(`
|
|
240187
|
-
It looks like your version of UR (${"1.
|
|
240287
|
+
It looks like your version of UR (${"1.32.0"}) needs an update.
|
|
240188
240288
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
240189
240289
|
|
|
240190
240290
|
To update, please run:
|
|
@@ -240400,7 +240500,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
240400
240500
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
240401
240501
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
240402
240502
|
pid: process.pid,
|
|
240403
|
-
currentVersion: "1.
|
|
240503
|
+
currentVersion: "1.32.0"
|
|
240404
240504
|
});
|
|
240405
240505
|
return "in_progress";
|
|
240406
240506
|
}
|
|
@@ -240409,7 +240509,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
240409
240509
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
240410
240510
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
240411
240511
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
240412
|
-
currentVersion: "1.
|
|
240512
|
+
currentVersion: "1.32.0"
|
|
240413
240513
|
});
|
|
240414
240514
|
console.error(`
|
|
240415
240515
|
Error: Windows NPM detected in WSL
|
|
@@ -240944,7 +241044,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
240944
241044
|
}
|
|
240945
241045
|
async function getDoctorDiagnostic() {
|
|
240946
241046
|
const installationType = await getCurrentInstallationType();
|
|
240947
|
-
const version2 = typeof MACRO !== "undefined" ? "1.
|
|
241047
|
+
const version2 = typeof MACRO !== "undefined" ? "1.32.0" : "unknown";
|
|
240948
241048
|
const installationPath = await getInstallationPath();
|
|
240949
241049
|
const invokedBinary = getInvokedBinary();
|
|
240950
241050
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -241879,8 +241979,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
241879
241979
|
const maxVersion = await getMaxVersion();
|
|
241880
241980
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
241881
241981
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
241882
|
-
if (gte("1.
|
|
241883
|
-
logForDebugging(`Native installer: current version ${"1.
|
|
241982
|
+
if (gte("1.32.0", maxVersion)) {
|
|
241983
|
+
logForDebugging(`Native installer: current version ${"1.32.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
241884
241984
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
241885
241985
|
latency_ms: Date.now() - startTime,
|
|
241886
241986
|
max_version: maxVersion,
|
|
@@ -241891,7 +241991,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
241891
241991
|
version2 = maxVersion;
|
|
241892
241992
|
}
|
|
241893
241993
|
}
|
|
241894
|
-
if (!forceReinstall && version2 === "1.
|
|
241994
|
+
if (!forceReinstall && version2 === "1.32.0" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
241895
241995
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
241896
241996
|
logEvent("tengu_native_update_complete", {
|
|
241897
241997
|
latency_ms: Date.now() - startTime,
|
|
@@ -338795,7 +338895,7 @@ function Feedback({
|
|
|
338795
338895
|
platform: env2.platform,
|
|
338796
338896
|
gitRepo: envInfo.isGit,
|
|
338797
338897
|
terminal: env2.terminal,
|
|
338798
|
-
version: "1.
|
|
338898
|
+
version: "1.32.0",
|
|
338799
338899
|
transcript: normalizeMessagesForAPI(messages),
|
|
338800
338900
|
errors: sanitizedErrors,
|
|
338801
338901
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -338987,7 +339087,7 @@ function Feedback({
|
|
|
338987
339087
|
", ",
|
|
338988
339088
|
env2.terminal,
|
|
338989
339089
|
", v",
|
|
338990
|
-
"1.
|
|
339090
|
+
"1.32.0"
|
|
338991
339091
|
]
|
|
338992
339092
|
}, undefined, true, undefined, this)
|
|
338993
339093
|
]
|
|
@@ -339093,7 +339193,7 @@ ${sanitizedDescription}
|
|
|
339093
339193
|
` + `**Environment Info**
|
|
339094
339194
|
` + `- Platform: ${env2.platform}
|
|
339095
339195
|
` + `- Terminal: ${env2.terminal}
|
|
339096
|
-
` + `- Version: ${"1.
|
|
339196
|
+
` + `- Version: ${"1.32.0"}
|
|
339097
339197
|
` + `- Feedback ID: ${feedbackId}
|
|
339098
339198
|
` + `
|
|
339099
339199
|
**Errors**
|
|
@@ -342204,7 +342304,7 @@ function buildPrimarySection() {
|
|
|
342204
342304
|
}, undefined, false, undefined, this);
|
|
342205
342305
|
return [{
|
|
342206
342306
|
label: "Version",
|
|
342207
|
-
value: "1.
|
|
342307
|
+
value: "1.32.0"
|
|
342208
342308
|
}, {
|
|
342209
342309
|
label: "Session name",
|
|
342210
342310
|
value: nameValue
|
|
@@ -345504,7 +345604,7 @@ function Config({
|
|
|
345504
345604
|
}
|
|
345505
345605
|
}, undefined, false, undefined, this)
|
|
345506
345606
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime177.jsxDEV(ChannelDowngradeDialog, {
|
|
345507
|
-
currentVersion: "1.
|
|
345607
|
+
currentVersion: "1.32.0",
|
|
345508
345608
|
onChoice: (choice) => {
|
|
345509
345609
|
setShowSubmenu(null);
|
|
345510
345610
|
setTabsHidden(false);
|
|
@@ -345516,7 +345616,7 @@ function Config({
|
|
|
345516
345616
|
autoUpdatesChannel: "stable"
|
|
345517
345617
|
};
|
|
345518
345618
|
if (choice === "stay") {
|
|
345519
|
-
newSettings.minimumVersion = "1.
|
|
345619
|
+
newSettings.minimumVersion = "1.32.0";
|
|
345520
345620
|
}
|
|
345521
345621
|
updateSettingsForSource("userSettings", newSettings);
|
|
345522
345622
|
setSettingsData((prev_27) => ({
|
|
@@ -353586,7 +353686,7 @@ function HelpV2(t0) {
|
|
|
353586
353686
|
let t6;
|
|
353587
353687
|
if ($3[31] !== tabs) {
|
|
353588
353688
|
t6 = /* @__PURE__ */ jsx_dev_runtime204.jsxDEV(Tabs, {
|
|
353589
|
-
title: `UR v${"1.
|
|
353689
|
+
title: `UR v${"1.32.0"}`,
|
|
353590
353690
|
color: "professionalBlue",
|
|
353591
353691
|
defaultTab: "general",
|
|
353592
353692
|
children: tabs
|
|
@@ -354332,7 +354432,7 @@ function buildToolUseContext(tools, readFileStateCache) {
|
|
|
354332
354432
|
async function handleInitialize(options2) {
|
|
354333
354433
|
return {
|
|
354334
354434
|
name: "ur-agent",
|
|
354335
|
-
version: "1.
|
|
354435
|
+
version: "1.32.0",
|
|
354336
354436
|
protocolVersion: "0.1.0",
|
|
354337
354437
|
workspaceRoot: options2.cwd,
|
|
354338
354438
|
capabilities: {
|
|
@@ -374456,7 +374556,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
374456
374556
|
return [];
|
|
374457
374557
|
}
|
|
374458
374558
|
}
|
|
374459
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.
|
|
374559
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.32.0") {
|
|
374460
374560
|
if (process.env.USER_TYPE === "ant") {
|
|
374461
374561
|
const changelog = "";
|
|
374462
374562
|
if (changelog) {
|
|
@@ -374483,7 +374583,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.31.0")
|
|
|
374483
374583
|
releaseNotes
|
|
374484
374584
|
};
|
|
374485
374585
|
}
|
|
374486
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.
|
|
374586
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.32.0") {
|
|
374487
374587
|
if (process.env.USER_TYPE === "ant") {
|
|
374488
374588
|
const changelog = "";
|
|
374489
374589
|
if (changelog) {
|
|
@@ -375653,7 +375753,7 @@ function getRecentActivitySync() {
|
|
|
375653
375753
|
return cachedActivity;
|
|
375654
375754
|
}
|
|
375655
375755
|
function getLogoDisplayData() {
|
|
375656
|
-
const version2 = process.env.DEMO_VERSION ?? "1.
|
|
375756
|
+
const version2 = process.env.DEMO_VERSION ?? "1.32.0";
|
|
375657
375757
|
const serverUrl = getDirectConnectServerUrl();
|
|
375658
375758
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd2());
|
|
375659
375759
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -376442,7 +376542,7 @@ function LogoV2() {
|
|
|
376442
376542
|
if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
376443
376543
|
t2 = () => {
|
|
376444
376544
|
const currentConfig = getGlobalConfig();
|
|
376445
|
-
if (currentConfig.lastReleaseNotesSeen === "1.
|
|
376545
|
+
if (currentConfig.lastReleaseNotesSeen === "1.32.0") {
|
|
376446
376546
|
return;
|
|
376447
376547
|
}
|
|
376448
376548
|
saveGlobalConfig(_temp326);
|
|
@@ -377127,12 +377227,12 @@ function LogoV2() {
|
|
|
377127
377227
|
return t41;
|
|
377128
377228
|
}
|
|
377129
377229
|
function _temp326(current) {
|
|
377130
|
-
if (current.lastReleaseNotesSeen === "1.
|
|
377230
|
+
if (current.lastReleaseNotesSeen === "1.32.0") {
|
|
377131
377231
|
return current;
|
|
377132
377232
|
}
|
|
377133
377233
|
return {
|
|
377134
377234
|
...current,
|
|
377135
|
-
lastReleaseNotesSeen: "1.
|
|
377235
|
+
lastReleaseNotesSeen: "1.32.0"
|
|
377136
377236
|
};
|
|
377137
377237
|
}
|
|
377138
377238
|
function _temp243(s_0) {
|
|
@@ -394365,8 +394465,10 @@ async function connectProvider(provider, keyFlag) {
|
|
|
394365
394465
|
if (alias === "provider") {
|
|
394366
394466
|
return `No official login is configured for ${provider}.`;
|
|
394367
394467
|
}
|
|
394468
|
+
const enabled = enableExternalBridge(provider);
|
|
394368
394469
|
const result = await launchProviderAuth(alias);
|
|
394369
|
-
return result.message
|
|
394470
|
+
return `${result.message}
|
|
394471
|
+
${enabled.message} It will run via the official ${def2.displayName} CLI.`;
|
|
394370
394472
|
}
|
|
394371
394473
|
if (def2.envKey) {
|
|
394372
394474
|
const key = keyFlag ?? await readStdinKey();
|
|
@@ -593026,7 +593128,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
593026
593128
|
smapsRollup,
|
|
593027
593129
|
platform: process.platform,
|
|
593028
593130
|
nodeVersion: process.version,
|
|
593029
|
-
ccVersion: "1.
|
|
593131
|
+
ccVersion: "1.32.0"
|
|
593030
593132
|
};
|
|
593031
593133
|
}
|
|
593032
593134
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -593612,7 +593714,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
593612
593714
|
var call137 = async () => {
|
|
593613
593715
|
return {
|
|
593614
593716
|
type: "text",
|
|
593615
|
-
value: "1.
|
|
593717
|
+
value: "1.32.0"
|
|
593616
593718
|
};
|
|
593617
593719
|
}, version2, version_default;
|
|
593618
593720
|
var init_version = __esm(() => {
|
|
@@ -596500,7 +596602,7 @@ function ProviderFirstModelPicker({
|
|
|
596500
596602
|
import_react188.useEffect(() => {
|
|
596501
596603
|
async function loadProviderStatus() {
|
|
596502
596604
|
setLoadingProviders(true);
|
|
596503
|
-
const providers = listProviders();
|
|
596605
|
+
const providers = listProviders({ includeExternalAppBridges: true });
|
|
596504
596606
|
const settings = getSettingsForSource("userSettings");
|
|
596505
596607
|
const options2 = await Promise.all(providers.map(async (provider) => {
|
|
596506
596608
|
const status2 = await getProviderStatus(provider.id, {
|
|
@@ -603567,7 +603669,7 @@ function generateHtmlReport(data, insights) {
|
|
|
603567
603669
|
</html>`;
|
|
603568
603670
|
}
|
|
603569
603671
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
603570
|
-
const version3 = typeof MACRO !== "undefined" ? "1.
|
|
603672
|
+
const version3 = typeof MACRO !== "undefined" ? "1.32.0" : "unknown";
|
|
603571
603673
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
603572
603674
|
const facets_summary = {
|
|
603573
603675
|
total: facets.size,
|
|
@@ -607847,7 +607949,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
607847
607949
|
init_settings2();
|
|
607848
607950
|
init_slowOperations();
|
|
607849
607951
|
init_uuid();
|
|
607850
|
-
VERSION5 = typeof MACRO !== "undefined" ? "1.
|
|
607952
|
+
VERSION5 = typeof MACRO !== "undefined" ? "1.32.0" : "unknown";
|
|
607851
607953
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
607852
607954
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
607853
607955
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -609052,7 +609154,7 @@ var init_filesystem = __esm(() => {
|
|
|
609052
609154
|
});
|
|
609053
609155
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
609054
609156
|
const nonce = randomBytes18(16).toString("hex");
|
|
609055
|
-
return join200(getURTempDir(), "bundled-skills", "1.
|
|
609157
|
+
return join200(getURTempDir(), "bundled-skills", "1.32.0", nonce);
|
|
609056
609158
|
});
|
|
609057
609159
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
609058
609160
|
});
|
|
@@ -615341,7 +615443,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
615341
615443
|
}
|
|
615342
615444
|
function computeFingerprintFromMessages(messages) {
|
|
615343
615445
|
const firstMessageText = extractFirstMessageText(messages);
|
|
615344
|
-
return computeFingerprint(firstMessageText, "1.
|
|
615446
|
+
return computeFingerprint(firstMessageText, "1.32.0");
|
|
615345
615447
|
}
|
|
615346
615448
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
615347
615449
|
var init_fingerprint = () => {};
|
|
@@ -617208,7 +617310,7 @@ async function sideQuery(opts) {
|
|
|
617208
617310
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
617209
617311
|
}
|
|
617210
617312
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
617211
|
-
const fingerprint = computeFingerprint(messageText2, "1.
|
|
617313
|
+
const fingerprint = computeFingerprint(messageText2, "1.32.0");
|
|
617212
617314
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
617213
617315
|
const systemBlocks = [
|
|
617214
617316
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -621945,7 +622047,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
621945
622047
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
621946
622048
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
621947
622049
|
betas: getSdkBetas(),
|
|
621948
|
-
ur_version: "1.
|
|
622050
|
+
ur_version: "1.32.0",
|
|
621949
622051
|
output_style: outputStyle2,
|
|
621950
622052
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
621951
622053
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -636573,7 +636675,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
636573
636675
|
function getSemverPart(version3) {
|
|
636574
636676
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
636575
636677
|
}
|
|
636576
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.
|
|
636678
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.32.0") {
|
|
636577
636679
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react226.useState(() => getSemverPart(initialVersion));
|
|
636578
636680
|
if (!updatedVersion) {
|
|
636579
636681
|
return null;
|
|
@@ -636622,7 +636724,7 @@ function AutoUpdater({
|
|
|
636622
636724
|
return;
|
|
636623
636725
|
}
|
|
636624
636726
|
if (false) {}
|
|
636625
|
-
const currentVersion = "1.
|
|
636727
|
+
const currentVersion = "1.32.0";
|
|
636626
636728
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
636627
636729
|
let latestVersion = await getLatestVersion(channel);
|
|
636628
636730
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -636851,12 +636953,12 @@ function NativeAutoUpdater({
|
|
|
636851
636953
|
logEvent("tengu_native_auto_updater_start", {});
|
|
636852
636954
|
try {
|
|
636853
636955
|
const maxVersion = await getMaxVersion();
|
|
636854
|
-
if (maxVersion && gt("1.
|
|
636956
|
+
if (maxVersion && gt("1.32.0", maxVersion)) {
|
|
636855
636957
|
const msg = await getMaxVersionMessage();
|
|
636856
636958
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
636857
636959
|
}
|
|
636858
636960
|
const result = await installLatest(channel);
|
|
636859
|
-
const currentVersion = "1.
|
|
636961
|
+
const currentVersion = "1.32.0";
|
|
636860
636962
|
const latencyMs = Date.now() - startTime;
|
|
636861
636963
|
if (result.lockFailed) {
|
|
636862
636964
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -636993,17 +637095,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
636993
637095
|
const maxVersion = await getMaxVersion();
|
|
636994
637096
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
636995
637097
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
636996
|
-
if (gte("1.
|
|
636997
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.
|
|
637098
|
+
if (gte("1.32.0", maxVersion)) {
|
|
637099
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.32.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
636998
637100
|
setUpdateAvailable(false);
|
|
636999
637101
|
return;
|
|
637000
637102
|
}
|
|
637001
637103
|
latest = maxVersion;
|
|
637002
637104
|
}
|
|
637003
|
-
const hasUpdate = latest && !gte("1.
|
|
637105
|
+
const hasUpdate = latest && !gte("1.32.0", latest) && !shouldSkipVersion(latest);
|
|
637004
637106
|
setUpdateAvailable(!!hasUpdate);
|
|
637005
637107
|
if (hasUpdate) {
|
|
637006
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.
|
|
637108
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.32.0"} -> ${latest}`);
|
|
637007
637109
|
}
|
|
637008
637110
|
};
|
|
637009
637111
|
$3[0] = t1;
|
|
@@ -637037,7 +637139,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
637037
637139
|
wrap: "truncate",
|
|
637038
637140
|
children: [
|
|
637039
637141
|
"currentVersion: ",
|
|
637040
|
-
"1.
|
|
637142
|
+
"1.32.0"
|
|
637041
637143
|
]
|
|
637042
637144
|
}, undefined, true, undefined, this);
|
|
637043
637145
|
$3[3] = verbose;
|
|
@@ -649488,7 +649590,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
649488
649590
|
project_dir: getOriginalCwd(),
|
|
649489
649591
|
added_dirs: addedDirs
|
|
649490
649592
|
},
|
|
649491
|
-
version: "1.
|
|
649593
|
+
version: "1.32.0",
|
|
649492
649594
|
output_style: {
|
|
649493
649595
|
name: outputStyleName
|
|
649494
649596
|
},
|
|
@@ -649571,7 +649673,7 @@ function StatusLineInner({
|
|
|
649571
649673
|
const taskValues = Object.values(tasks2);
|
|
649572
649674
|
const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
|
|
649573
649675
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
649574
|
-
version: "1.
|
|
649676
|
+
version: "1.32.0",
|
|
649575
649677
|
providerLabel: providerRuntime.providerLabel,
|
|
649576
649678
|
authMode: providerRuntime.authLabel,
|
|
649577
649679
|
model: providerRuntime.model ?? renderModelName(mainLoopModel),
|
|
@@ -661059,7 +661161,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
661059
661161
|
} catch {}
|
|
661060
661162
|
const data = {
|
|
661061
661163
|
trigger: trigger2,
|
|
661062
|
-
version: "1.
|
|
661164
|
+
version: "1.32.0",
|
|
661063
661165
|
platform: process.platform,
|
|
661064
661166
|
transcript,
|
|
661065
661167
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -672943,7 +673045,7 @@ function WelcomeV2() {
|
|
|
672943
673045
|
dimColor: true,
|
|
672944
673046
|
children: [
|
|
672945
673047
|
"v",
|
|
672946
|
-
"1.
|
|
673048
|
+
"1.32.0"
|
|
672947
673049
|
]
|
|
672948
673050
|
}, undefined, true, undefined, this)
|
|
672949
673051
|
]
|
|
@@ -674203,7 +674305,7 @@ function completeOnboarding() {
|
|
|
674203
674305
|
saveGlobalConfig((current) => ({
|
|
674204
674306
|
...current,
|
|
674205
674307
|
hasCompletedOnboarding: true,
|
|
674206
|
-
lastOnboardingVersion: "1.
|
|
674308
|
+
lastOnboardingVersion: "1.32.0"
|
|
674207
674309
|
}));
|
|
674208
674310
|
}
|
|
674209
674311
|
function showDialog(root2, renderer) {
|
|
@@ -679240,7 +679342,7 @@ function appendToLog(path24, message) {
|
|
|
679240
679342
|
cwd: getFsImplementation().cwd(),
|
|
679241
679343
|
userType: process.env.USER_TYPE,
|
|
679242
679344
|
sessionId: getSessionId(),
|
|
679243
|
-
version: "1.
|
|
679345
|
+
version: "1.32.0"
|
|
679244
679346
|
};
|
|
679245
679347
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
679246
679348
|
}
|
|
@@ -683334,8 +683436,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
683334
683436
|
}
|
|
683335
683437
|
async function checkEnvLessBridgeMinVersion() {
|
|
683336
683438
|
const cfg = await getEnvLessBridgeConfig();
|
|
683337
|
-
if (cfg.min_version && lt("1.
|
|
683338
|
-
return `Your version of UR (${"1.
|
|
683439
|
+
if (cfg.min_version && lt("1.32.0", cfg.min_version)) {
|
|
683440
|
+
return `Your version of UR (${"1.32.0"}) is too old for Remote Control.
|
|
683339
683441
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
683340
683442
|
}
|
|
683341
683443
|
return null;
|
|
@@ -683809,7 +683911,7 @@ async function initBridgeCore(params) {
|
|
|
683809
683911
|
const rawApi = createBridgeApiClient({
|
|
683810
683912
|
baseUrl,
|
|
683811
683913
|
getAccessToken,
|
|
683812
|
-
runnerVersion: "1.
|
|
683914
|
+
runnerVersion: "1.32.0",
|
|
683813
683915
|
onDebug: logForDebugging,
|
|
683814
683916
|
onAuth401,
|
|
683815
683917
|
getTrustedDeviceToken
|
|
@@ -689491,7 +689593,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
|
|
|
689491
689593
|
setCwd(cwd3);
|
|
689492
689594
|
const server2 = new Server({
|
|
689493
689595
|
name: "ur/tengu",
|
|
689494
|
-
version: "1.
|
|
689596
|
+
version: "1.32.0"
|
|
689495
689597
|
}, {
|
|
689496
689598
|
capabilities: {
|
|
689497
689599
|
tools: {}
|
|
@@ -691468,7 +691570,7 @@ async function update() {
|
|
|
691468
691570
|
logEvent("tengu_update_check", {});
|
|
691469
691571
|
const diagnostic = await getDoctorDiagnostic();
|
|
691470
691572
|
const result = await checkUpgradeStatus({
|
|
691471
|
-
currentVersion: "1.
|
|
691573
|
+
currentVersion: "1.32.0",
|
|
691472
691574
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
691473
691575
|
installationType: diagnostic.installationType,
|
|
691474
691576
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -692714,7 +692816,7 @@ ${customInstructions}` : customInstructions;
|
|
|
692714
692816
|
}
|
|
692715
692817
|
}
|
|
692716
692818
|
logForDiagnosticsNoPII("info", "started", {
|
|
692717
|
-
version: "1.
|
|
692819
|
+
version: "1.32.0",
|
|
692718
692820
|
is_native_binary: isInBundledMode()
|
|
692719
692821
|
});
|
|
692720
692822
|
registerCleanup(async () => {
|
|
@@ -693500,7 +693602,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
693500
693602
|
pendingHookMessages
|
|
693501
693603
|
}, renderAndRun);
|
|
693502
693604
|
}
|
|
693503
|
-
}).version("1.
|
|
693605
|
+
}).version("1.32.0 (UR-AGENT)", "-v, --version", "Output the version number");
|
|
693504
693606
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
693505
693607
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
693506
693608
|
if (canUserConfigureAdvisor()) {
|
|
@@ -694383,7 +694485,7 @@ if (false) {}
|
|
|
694383
694485
|
async function main2() {
|
|
694384
694486
|
const args = process.argv.slice(2);
|
|
694385
694487
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
694386
|
-
console.log(`${"1.
|
|
694488
|
+
console.log(`${"1.32.0"} (UR-AGENT)`);
|
|
694387
694489
|
return;
|
|
694388
694490
|
}
|
|
694389
694491
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|
package/docs/providers.md
CHANGED
|
@@ -163,10 +163,10 @@ ur config set provider anthropic-api
|
|
|
163
163
|
|
|
164
164
|
| Provider type | Model discovery | Source label |
|
|
165
165
|
| --- | --- | --- |
|
|
166
|
-
| API providers (openai-api, anthropic-api, gemini-api, openrouter) |
|
|
166
|
+
| API providers (openai-api, anthropic-api, gemini-api, openrouter) | Live discovery from the provider's `/models` endpoint using your connected key (curated fallback until connected) | live |
|
|
167
167
|
| Local/server providers (ollama, lmstudio, llama.cpp, vllm) | Dynamic discovery from the selected provider endpoint | live |
|
|
168
168
|
| OpenAI-compatible | Dynamic discovery from configured endpoint | live |
|
|
169
|
-
|
|
|
169
|
+
| Subscription CLIs (codex-cli, claude-code-cli, gemini-cli, antigravity-cli) | Curated list (the official CLIs expose no models API); shown in `/model`, enabled once you `ur connect` them | static |
|
|
170
170
|
|
|
171
171
|
### API vs Subscription distinction
|
|
172
172
|
|
package/package.json
CHANGED