ur-agent 1.30.3 → 1.30.4
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 +10 -0
- package/README.md +49 -43
- package/dist/cli.js +229 -98
- package/docs/AGENT_FEATURES.md +1 -1
- package/docs/CONFIGURATION.md +13 -14
- package/docs/USAGE.md +23 -20
- package/docs/providers.md +60 -51
- package/documentation/app.js +4 -4
- package/documentation/index.html +5 -5
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -51209,12 +51209,15 @@ __export(exports_providerRegistry, {
|
|
|
51209
51209
|
listModelsForProviderWithSource: () => listModelsForProviderWithSource,
|
|
51210
51210
|
listModelsForProvider: () => listModelsForProvider,
|
|
51211
51211
|
launchProviderAuth: () => launchProviderAuth,
|
|
51212
|
+
isProviderRuntimeSelectable: () => isProviderRuntimeSelectable,
|
|
51212
51213
|
isProviderId: () => isProviderId,
|
|
51213
51214
|
isModelSupportedByProvider: () => isModelSupportedByProvider,
|
|
51214
51215
|
getValidModelIdsForProvider: () => getValidModelIdsForProvider,
|
|
51215
51216
|
getRuntimeProviderId: () => getRuntimeProviderId,
|
|
51216
51217
|
getProviderStatus: () => getProviderStatus,
|
|
51218
|
+
getProviderRuntimeKind: () => getProviderRuntimeKind,
|
|
51217
51219
|
getProviderRuntimeInfo: () => getProviderRuntimeInfo,
|
|
51220
|
+
getProviderRuntimeBlockReason: () => getProviderRuntimeBlockReason,
|
|
51218
51221
|
getProviderRuntimeBackend: () => getProviderRuntimeBackend,
|
|
51219
51222
|
getProviderFamily: () => getProviderFamily,
|
|
51220
51223
|
getProviderDefinition: () => getProviderDefinition,
|
|
@@ -51227,6 +51230,7 @@ __export(exports_providerRegistry, {
|
|
|
51227
51230
|
formatProviderList: () => formatProviderList,
|
|
51228
51231
|
formatProviderDoctor: () => formatProviderDoctor,
|
|
51229
51232
|
formatInvalidProviderModelMessage: () => formatInvalidProviderModelMessage,
|
|
51233
|
+
externalAppProviderBridgeEnabled: () => externalAppProviderBridgeEnabled,
|
|
51230
51234
|
doctorProvider: () => doctorProvider,
|
|
51231
51235
|
doctorActiveProvider: () => doctorActiveProvider,
|
|
51232
51236
|
credentialTypeLabel: () => credentialTypeLabel,
|
|
@@ -51360,6 +51364,30 @@ function credentialTypeLabel(type) {
|
|
|
51360
51364
|
return "OpenAI-compatible endpoint";
|
|
51361
51365
|
}
|
|
51362
51366
|
}
|
|
51367
|
+
function externalAppProviderBridgeEnabled(env4 = process.env) {
|
|
51368
|
+
return env4.UR_ENABLE_EXTERNAL_APP_PROVIDERS === "1";
|
|
51369
|
+
}
|
|
51370
|
+
function getProviderRuntimeKind(providerId) {
|
|
51371
|
+
const provider = resolveProviderId(providerId);
|
|
51372
|
+
return provider ? getProviderDefinition(provider).runtimeKind : "unknown";
|
|
51373
|
+
}
|
|
51374
|
+
function getProviderRuntimeBlockReason(providerId, env4 = process.env) {
|
|
51375
|
+
const provider = resolveProviderId(providerId);
|
|
51376
|
+
if (!provider) {
|
|
51377
|
+
return `Unknown provider "${providerId}". Run: ur provider list`;
|
|
51378
|
+
}
|
|
51379
|
+
const definition = getProviderDefinition(provider);
|
|
51380
|
+
if (definition.runtimeKind !== "external-app") {
|
|
51381
|
+
return null;
|
|
51382
|
+
}
|
|
51383
|
+
if (externalAppProviderBridgeEnabled(env4)) {
|
|
51384
|
+
return null;
|
|
51385
|
+
}
|
|
51386
|
+
return `Provider "${provider}" uses an external app bridge (${definition.displayName}), not a UR-native model endpoint. UR's independent runtime does not require Codex, Claude Code, Gemini CLI, or Antigravity to be installed. Choose an API/local/server provider such as openai-api, anthropic-api, gemini-api, openrouter, ollama, lmstudio, llama.cpp, or vllm. To intentionally delegate turns to the external app bridge, set UR_ENABLE_EXTERNAL_APP_PROVIDERS=1.`;
|
|
51387
|
+
}
|
|
51388
|
+
function isProviderRuntimeSelectable(providerId, env4 = process.env) {
|
|
51389
|
+
return getProviderRuntimeBlockReason(providerId, env4) === null;
|
|
51390
|
+
}
|
|
51363
51391
|
function listProviders() {
|
|
51364
51392
|
return PROVIDER_IDS.map((id) => PROVIDERS[id]);
|
|
51365
51393
|
}
|
|
@@ -51409,6 +51437,13 @@ function setSafeProviderConfig(key, value) {
|
|
|
51409
51437
|
message: `Unknown provider "${trimmed}". Run: ur provider list`
|
|
51410
51438
|
};
|
|
51411
51439
|
}
|
|
51440
|
+
const runtimeBlock = getProviderRuntimeBlockReason(provider);
|
|
51441
|
+
if (runtimeBlock) {
|
|
51442
|
+
return {
|
|
51443
|
+
ok: false,
|
|
51444
|
+
message: runtimeBlock
|
|
51445
|
+
};
|
|
51446
|
+
}
|
|
51412
51447
|
const currentSettings = getInitialSettings();
|
|
51413
51448
|
const currentModel = getActiveProviderSettings(currentSettings).model;
|
|
51414
51449
|
const nextProviderSettings = { active: provider };
|
|
@@ -51433,12 +51468,28 @@ function setSafeProviderConfig(key, value) {
|
|
|
51433
51468
|
message: `Unknown fallback provider "${trimmed}". Run: ur provider list`
|
|
51434
51469
|
};
|
|
51435
51470
|
}
|
|
51471
|
+
if (fallback !== "disabled") {
|
|
51472
|
+
const runtimeBlock = getProviderRuntimeBlockReason(fallback);
|
|
51473
|
+
if (runtimeBlock) {
|
|
51474
|
+
return {
|
|
51475
|
+
ok: false,
|
|
51476
|
+
message: runtimeBlock
|
|
51477
|
+
};
|
|
51478
|
+
}
|
|
51479
|
+
}
|
|
51436
51480
|
settings = { provider: { fallback } };
|
|
51437
51481
|
} else if (key === "provider.command_path") {
|
|
51438
51482
|
settings = { provider: { commandPath: trimmed } };
|
|
51439
51483
|
} else if (key === "model") {
|
|
51440
51484
|
const currentSettings = getInitialSettings();
|
|
51441
51485
|
const currentProvider = getActiveProviderSettings(currentSettings).active ?? "ollama";
|
|
51486
|
+
const runtimeBlock = getProviderRuntimeBlockReason(currentProvider);
|
|
51487
|
+
if (runtimeBlock) {
|
|
51488
|
+
return {
|
|
51489
|
+
ok: false,
|
|
51490
|
+
message: runtimeBlock
|
|
51491
|
+
};
|
|
51492
|
+
}
|
|
51442
51493
|
const validation = validateProviderModelPair(currentProvider, trimmed);
|
|
51443
51494
|
if (validation.valid === false) {
|
|
51444
51495
|
return {
|
|
@@ -51917,6 +51968,7 @@ function formatProviderList(json2 = false) {
|
|
|
51917
51968
|
accessTypeLabel: getProviderAccessTypeLabel(provider),
|
|
51918
51969
|
credentialType: provider.credentialType,
|
|
51919
51970
|
modelDiscoveryType: provider.modelDiscoveryType,
|
|
51971
|
+
runtimeKind: provider.runtimeKind,
|
|
51920
51972
|
runtimeBackend: getProviderRuntimeBackend(provider.id),
|
|
51921
51973
|
authMode: provider.authMode,
|
|
51922
51974
|
accessPath: provider.accessPathLabel,
|
|
@@ -51926,9 +51978,9 @@ function formatProviderList(json2 = false) {
|
|
|
51926
51978
|
return JSON.stringify(providers, null, 2);
|
|
51927
51979
|
}
|
|
51928
51980
|
return [
|
|
51929
|
-
"Provider | ID | Aliases | Access type | Credential | Model discovery | Runtime backend | Access path",
|
|
51930
|
-
"--- | --- | --- | --- | --- | --- | --- | ---",
|
|
51931
|
-
...providers.map((provider) => `${provider.name} | ${provider.id} | ${provider.aliases.slice(0, 3).join(", ") || "-"} | ${provider.accessTypeLabel} | ${provider.credentialType} | ${provider.modelDiscoveryType} | ${provider.runtimeBackend} | ${provider.accessPath}`)
|
|
51981
|
+
"Provider | ID | Aliases | Access type | Credential | Model discovery | Runtime kind | Runtime backend | Access path",
|
|
51982
|
+
"--- | --- | --- | --- | --- | --- | --- | --- | ---",
|
|
51983
|
+
...providers.map((provider) => `${provider.name} | ${provider.id} | ${provider.aliases.slice(0, 3).join(", ") || "-"} | ${provider.accessTypeLabel} | ${provider.credentialType} | ${provider.modelDiscoveryType} | ${provider.runtimeKind} | ${provider.runtimeBackend} | ${provider.accessPath}`)
|
|
51932
51984
|
].join(`
|
|
51933
51985
|
`);
|
|
51934
51986
|
}
|
|
@@ -51936,14 +51988,20 @@ function formatProviderDoctor(result, json2 = false) {
|
|
|
51936
51988
|
if (json2) {
|
|
51937
51989
|
return JSON.stringify(result, null, 2);
|
|
51938
51990
|
}
|
|
51991
|
+
const runtimeBlock = getProviderRuntimeBlockReason(result.provider);
|
|
51939
51992
|
const lines = [
|
|
51940
51993
|
`Provider: ${result.displayName} (${result.provider})`,
|
|
51941
51994
|
`Access: ${getProviderAccessTypeLabel(getProviderDefinition(result.provider))}`,
|
|
51942
51995
|
`Credential: ${getProviderDefinition(result.provider).credentialType}`,
|
|
51996
|
+
`Runtime kind: ${getProviderDefinition(result.provider).runtimeKind}`,
|
|
51943
51997
|
`Runtime backend: ${getProviderRuntimeBackend(result.provider)}`,
|
|
51998
|
+
`Runtime available: ${runtimeBlock ? "no" : "yes"}`,
|
|
51944
51999
|
`Auth: ${authModeLabel(result.authMode)}`,
|
|
51945
52000
|
`Status: ${result.ok ? "ready" : "not ready"}`
|
|
51946
52001
|
];
|
|
52002
|
+
if (runtimeBlock) {
|
|
52003
|
+
lines.push(`Runtime note: ${runtimeBlock}`);
|
|
52004
|
+
}
|
|
51947
52005
|
for (const check3 of result.checks) {
|
|
51948
52006
|
lines.push(`- ${check3.status.toUpperCase()} ${check3.name}: ${check3.message}`);
|
|
51949
52007
|
}
|
|
@@ -51971,10 +52029,15 @@ Suggested fix: ${result.suggestedFix}` : "";
|
|
|
51971
52029
|
const settings = getActiveProviderSettings(getInitialSettings());
|
|
51972
52030
|
const model = settings.model ? `
|
|
51973
52031
|
Active model: ${settings.model}` : "";
|
|
52032
|
+
const runtimeBlock = getProviderRuntimeBlockReason(result.provider);
|
|
52033
|
+
const runtime = `
|
|
52034
|
+
Runtime available: ${runtimeBlock ? "no" : "yes"}${runtimeBlock ? `
|
|
52035
|
+
Runtime note: ${runtimeBlock}` : ""}`;
|
|
51974
52036
|
return `Selected provider: ${result.displayName} (${result.provider})
|
|
51975
52037
|
Access type: ${getProviderAccessTypeLabel(definition)}
|
|
51976
52038
|
Credential: ${definition.credentialType}
|
|
51977
|
-
Runtime
|
|
52039
|
+
Runtime kind: ${definition.runtimeKind}
|
|
52040
|
+
Runtime backend: ${getProviderRuntimeBackend(result.provider)}${model}${runtime}
|
|
51978
52041
|
Auth mode: ${authModeLabel(result.authMode)}
|
|
51979
52042
|
Ready: ${result.ok ? "yes" : "no"}${failure}${fix}`;
|
|
51980
52043
|
}
|
|
@@ -52233,6 +52296,13 @@ function setProviderModel(providerId, modelId, options = {}) {
|
|
|
52233
52296
|
message: `Unknown provider "${providerId}". Run: ur provider list`
|
|
52234
52297
|
};
|
|
52235
52298
|
}
|
|
52299
|
+
const runtimeBlock = getProviderRuntimeBlockReason(provider);
|
|
52300
|
+
if (runtimeBlock) {
|
|
52301
|
+
return {
|
|
52302
|
+
ok: false,
|
|
52303
|
+
message: runtimeBlock
|
|
52304
|
+
};
|
|
52305
|
+
}
|
|
52236
52306
|
const validation = validateProviderModelPair(provider, modelId, {
|
|
52237
52307
|
availableModels: options.availableModels
|
|
52238
52308
|
});
|
|
@@ -52270,19 +52340,19 @@ var init_providerRegistry = __esm(() => {
|
|
|
52270
52340
|
init_settings2();
|
|
52271
52341
|
init_which();
|
|
52272
52342
|
PROVIDER_IDS = [
|
|
52273
|
-
"
|
|
52274
|
-
"
|
|
52275
|
-
"
|
|
52276
|
-
"
|
|
52343
|
+
"ollama",
|
|
52344
|
+
"lmstudio",
|
|
52345
|
+
"llama.cpp",
|
|
52346
|
+
"vllm",
|
|
52347
|
+
"openai-compatible",
|
|
52277
52348
|
"openai-api",
|
|
52278
52349
|
"anthropic-api",
|
|
52279
52350
|
"gemini-api",
|
|
52280
52351
|
"openrouter",
|
|
52281
|
-
"
|
|
52282
|
-
"
|
|
52283
|
-
"
|
|
52284
|
-
"
|
|
52285
|
-
"vllm"
|
|
52352
|
+
"codex-cli",
|
|
52353
|
+
"claude-code-cli",
|
|
52354
|
+
"gemini-cli",
|
|
52355
|
+
"antigravity-cli"
|
|
52286
52356
|
];
|
|
52287
52357
|
LOCALHOST_RE = /^(https?:\/\/)?(localhost|127\.0\.0\.1|\[::1\]|::1)(:\d+)?(\/|$)/i;
|
|
52288
52358
|
PROVIDERS = {
|
|
@@ -52296,6 +52366,7 @@ var init_providerRegistry = __esm(() => {
|
|
|
52296
52366
|
statusCheck: "cli-login",
|
|
52297
52367
|
listModels: "static",
|
|
52298
52368
|
validateModel: "static-list",
|
|
52369
|
+
runtimeKind: "external-app",
|
|
52299
52370
|
authMode: "subscription",
|
|
52300
52371
|
legalPath: "official Codex CLI login",
|
|
52301
52372
|
accessPathLabel: "subscription login via official Codex CLI",
|
|
@@ -52315,6 +52386,7 @@ var init_providerRegistry = __esm(() => {
|
|
|
52315
52386
|
statusCheck: "cli-login",
|
|
52316
52387
|
listModels: "static",
|
|
52317
52388
|
validateModel: "static-list",
|
|
52389
|
+
runtimeKind: "external-app",
|
|
52318
52390
|
authMode: "subscription",
|
|
52319
52391
|
legalPath: "official Claude Code CLI login",
|
|
52320
52392
|
accessPathLabel: "subscription login via official Claude Code CLI",
|
|
@@ -52333,6 +52405,7 @@ var init_providerRegistry = __esm(() => {
|
|
|
52333
52405
|
statusCheck: "cli-login",
|
|
52334
52406
|
listModels: "static",
|
|
52335
52407
|
validateModel: "static-list",
|
|
52408
|
+
runtimeKind: "external-app",
|
|
52336
52409
|
authMode: "enterprise-login",
|
|
52337
52410
|
legalPath: "official Gemini Code Assist login",
|
|
52338
52411
|
accessPathLabel: "subscription login via official Gemini CLI",
|
|
@@ -52351,6 +52424,7 @@ var init_providerRegistry = __esm(() => {
|
|
|
52351
52424
|
statusCheck: "cli-login",
|
|
52352
52425
|
listModels: "static",
|
|
52353
52426
|
validateModel: "static-list",
|
|
52427
|
+
runtimeKind: "external-app",
|
|
52354
52428
|
authMode: "personal-login",
|
|
52355
52429
|
legalPath: "official Antigravity CLI login, where supported",
|
|
52356
52430
|
accessPathLabel: "subscription login via official Antigravity CLI",
|
|
@@ -52368,6 +52442,7 @@ var init_providerRegistry = __esm(() => {
|
|
|
52368
52442
|
statusCheck: "api-key",
|
|
52369
52443
|
listModels: "static",
|
|
52370
52444
|
validateModel: "static-list",
|
|
52445
|
+
runtimeKind: "ur-native",
|
|
52371
52446
|
authMode: "api",
|
|
52372
52447
|
legalPath: "OPENAI_API_KEY",
|
|
52373
52448
|
accessPathLabel: "API key from OPENAI_API_KEY",
|
|
@@ -52383,6 +52458,7 @@ var init_providerRegistry = __esm(() => {
|
|
|
52383
52458
|
statusCheck: "api-key",
|
|
52384
52459
|
listModels: "static",
|
|
52385
52460
|
validateModel: "static-list",
|
|
52461
|
+
runtimeKind: "ur-native",
|
|
52386
52462
|
authMode: "api",
|
|
52387
52463
|
legalPath: "ANTHROPIC_API_KEY",
|
|
52388
52464
|
accessPathLabel: "API key from ANTHROPIC_API_KEY",
|
|
@@ -52398,6 +52474,7 @@ var init_providerRegistry = __esm(() => {
|
|
|
52398
52474
|
statusCheck: "api-key",
|
|
52399
52475
|
listModels: "static",
|
|
52400
52476
|
validateModel: "static-list",
|
|
52477
|
+
runtimeKind: "ur-native",
|
|
52401
52478
|
authMode: "api",
|
|
52402
52479
|
legalPath: "GEMINI_API_KEY",
|
|
52403
52480
|
accessPathLabel: "API key from GEMINI_API_KEY",
|
|
@@ -52413,6 +52490,7 @@ var init_providerRegistry = __esm(() => {
|
|
|
52413
52490
|
statusCheck: "api-key",
|
|
52414
52491
|
listModels: "static",
|
|
52415
52492
|
validateModel: "static-list",
|
|
52493
|
+
runtimeKind: "ur-native",
|
|
52416
52494
|
authMode: "api",
|
|
52417
52495
|
legalPath: "OPENROUTER_API_KEY",
|
|
52418
52496
|
accessPathLabel: "API key from OPENROUTER_API_KEY",
|
|
@@ -52429,6 +52507,7 @@ var init_providerRegistry = __esm(() => {
|
|
|
52429
52507
|
statusCheck: "endpoint",
|
|
52430
52508
|
listModels: "openai-compatible-models",
|
|
52431
52509
|
validateModel: "discovered-list",
|
|
52510
|
+
runtimeKind: "ur-native",
|
|
52432
52511
|
authMode: "api",
|
|
52433
52512
|
legalPath: "user-selected OpenAI-compatible base URL with API key only when required by that endpoint",
|
|
52434
52513
|
accessPathLabel: "OpenAI-compatible endpoint",
|
|
@@ -52445,6 +52524,7 @@ var init_providerRegistry = __esm(() => {
|
|
|
52445
52524
|
statusCheck: "endpoint",
|
|
52446
52525
|
listModels: "ollama-tags",
|
|
52447
52526
|
validateModel: "discovered-list",
|
|
52527
|
+
runtimeKind: "ur-native",
|
|
52448
52528
|
authMode: "local",
|
|
52449
52529
|
legalPath: "localhost Ollama runtime",
|
|
52450
52530
|
accessPathLabel: "local Ollama runtime",
|
|
@@ -52462,6 +52542,7 @@ var init_providerRegistry = __esm(() => {
|
|
|
52462
52542
|
statusCheck: "endpoint",
|
|
52463
52543
|
listModels: "openai-compatible-models",
|
|
52464
52544
|
validateModel: "discovered-list",
|
|
52545
|
+
runtimeKind: "ur-native",
|
|
52465
52546
|
authMode: "local",
|
|
52466
52547
|
legalPath: "local OpenAI-compatible server",
|
|
52467
52548
|
accessPathLabel: "local OpenAI-compatible endpoint",
|
|
@@ -52479,6 +52560,7 @@ var init_providerRegistry = __esm(() => {
|
|
|
52479
52560
|
statusCheck: "endpoint",
|
|
52480
52561
|
listModels: "openai-compatible-models",
|
|
52481
52562
|
validateModel: "discovered-list",
|
|
52563
|
+
runtimeKind: "ur-native",
|
|
52482
52564
|
authMode: "local",
|
|
52483
52565
|
legalPath: "local OpenAI-compatible server",
|
|
52484
52566
|
accessPathLabel: "local OpenAI-compatible endpoint",
|
|
@@ -52496,6 +52578,7 @@ var init_providerRegistry = __esm(() => {
|
|
|
52496
52578
|
statusCheck: "endpoint",
|
|
52497
52579
|
listModels: "openai-compatible-models",
|
|
52498
52580
|
validateModel: "discovered-list",
|
|
52581
|
+
runtimeKind: "ur-native",
|
|
52499
52582
|
authMode: "local",
|
|
52500
52583
|
legalPath: "OpenAI-compatible server",
|
|
52501
52584
|
accessPathLabel: "OpenAI-compatible endpoint runtime",
|
|
@@ -57394,6 +57477,10 @@ function resolveActiveProviderModel(options = {}) {
|
|
|
57394
57477
|
if (!provider) {
|
|
57395
57478
|
throw new Error(`Provider "${providerId}" is selected, but no runtime provider is registered. Run: ur provider list`);
|
|
57396
57479
|
}
|
|
57480
|
+
const runtimeBlock = getProviderRuntimeBlockReason(providerId);
|
|
57481
|
+
if (runtimeBlock) {
|
|
57482
|
+
throw new Error(runtimeBlock);
|
|
57483
|
+
}
|
|
57397
57484
|
const configuredModel = providerSettings.model;
|
|
57398
57485
|
const defaultModel = getDefaultModelForProvider(providerId);
|
|
57399
57486
|
const model = options.model ?? configuredModel ?? defaultModel;
|
|
@@ -57442,6 +57529,10 @@ async function createProviderClient(providerId, options = {}) {
|
|
|
57442
57529
|
throw new Error(`Unknown provider: ${providerId}`);
|
|
57443
57530
|
}
|
|
57444
57531
|
const provider = getProviderDefinition(resolved);
|
|
57532
|
+
const runtimeBlock = getProviderRuntimeBlockReason(resolved);
|
|
57533
|
+
if (runtimeBlock) {
|
|
57534
|
+
throw new Error(runtimeBlock);
|
|
57535
|
+
}
|
|
57445
57536
|
let client;
|
|
57446
57537
|
switch (provider.accessType) {
|
|
57447
57538
|
case "local":
|
|
@@ -57500,6 +57591,10 @@ async function createOpenAICompatibleProviderClient(providerId, options = {}) {
|
|
|
57500
57591
|
}
|
|
57501
57592
|
async function createSubscriptionClient(providerId, options = {}) {
|
|
57502
57593
|
const provider = getProviderDefinition(providerId);
|
|
57594
|
+
const runtimeBlock = getProviderRuntimeBlockReason(providerId);
|
|
57595
|
+
if (runtimeBlock) {
|
|
57596
|
+
throw new Error(runtimeBlock);
|
|
57597
|
+
}
|
|
57503
57598
|
const settings = getInitialSettings();
|
|
57504
57599
|
const providerSettings = getActiveProviderSettings(settings);
|
|
57505
57600
|
const { which: which2 } = await Promise.resolve().then(() => (init_which(), exports_which));
|
|
@@ -69312,7 +69407,7 @@ var init_auth = __esm(() => {
|
|
|
69312
69407
|
|
|
69313
69408
|
// src/utils/userAgent.ts
|
|
69314
69409
|
function getURCodeUserAgent() {
|
|
69315
|
-
return `ur/${"1.30.
|
|
69410
|
+
return `ur/${"1.30.4"}`;
|
|
69316
69411
|
}
|
|
69317
69412
|
|
|
69318
69413
|
// src/utils/workloadContext.ts
|
|
@@ -69334,7 +69429,7 @@ function getUserAgent() {
|
|
|
69334
69429
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
69335
69430
|
const workload = getWorkload();
|
|
69336
69431
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
69337
|
-
return `ur-cli/${"1.30.
|
|
69432
|
+
return `ur-cli/${"1.30.4"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
69338
69433
|
}
|
|
69339
69434
|
function getMCPUserAgent() {
|
|
69340
69435
|
const parts = [];
|
|
@@ -69348,7 +69443,7 @@ function getMCPUserAgent() {
|
|
|
69348
69443
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
69349
69444
|
}
|
|
69350
69445
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
69351
|
-
return `ur/${"1.30.
|
|
69446
|
+
return `ur/${"1.30.4"}${suffix}`;
|
|
69352
69447
|
}
|
|
69353
69448
|
function getWebFetchUserAgent() {
|
|
69354
69449
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -69486,7 +69581,7 @@ var init_user = __esm(() => {
|
|
|
69486
69581
|
deviceId,
|
|
69487
69582
|
sessionId: getSessionId(),
|
|
69488
69583
|
email: getEmail(),
|
|
69489
|
-
appVersion: "1.30.
|
|
69584
|
+
appVersion: "1.30.4",
|
|
69490
69585
|
platform: getHostPlatformForAnalytics(),
|
|
69491
69586
|
organizationUuid,
|
|
69492
69587
|
accountUuid,
|
|
@@ -76003,7 +76098,7 @@ var init_metadata = __esm(() => {
|
|
|
76003
76098
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
76004
76099
|
WHITESPACE_REGEX = /\s+/;
|
|
76005
76100
|
getVersionBase = memoize_default(() => {
|
|
76006
|
-
const match = "1.30.
|
|
76101
|
+
const match = "1.30.4".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
76007
76102
|
return match ? match[0] : undefined;
|
|
76008
76103
|
});
|
|
76009
76104
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -76043,7 +76138,7 @@ var init_metadata = __esm(() => {
|
|
|
76043
76138
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
76044
76139
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
76045
76140
|
isURAiAuth: isURAISubscriber2(),
|
|
76046
|
-
version: "1.30.
|
|
76141
|
+
version: "1.30.4",
|
|
76047
76142
|
versionBase: getVersionBase(),
|
|
76048
76143
|
buildTime: "",
|
|
76049
76144
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -76713,7 +76808,7 @@ function initialize1PEventLogging() {
|
|
|
76713
76808
|
const platform2 = getPlatform();
|
|
76714
76809
|
const attributes = {
|
|
76715
76810
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
76716
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.30.
|
|
76811
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.30.4"
|
|
76717
76812
|
};
|
|
76718
76813
|
if (platform2 === "wsl") {
|
|
76719
76814
|
const wslVersion = getWslVersion();
|
|
@@ -76740,7 +76835,7 @@ function initialize1PEventLogging() {
|
|
|
76740
76835
|
})
|
|
76741
76836
|
]
|
|
76742
76837
|
});
|
|
76743
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.30.
|
|
76838
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.30.4");
|
|
76744
76839
|
}
|
|
76745
76840
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
76746
76841
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -82037,7 +82132,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
|
|
|
82037
82132
|
function formatA2AAgentCard(options = {}, pretty = true) {
|
|
82038
82133
|
return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
|
|
82039
82134
|
}
|
|
82040
|
-
var urVersion = "1.30.
|
|
82135
|
+
var urVersion = "1.30.4", coverage, priorityRoadmap;
|
|
82041
82136
|
var init_trends = __esm(() => {
|
|
82042
82137
|
coverage = [
|
|
82043
82138
|
{
|
|
@@ -84030,7 +84125,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
84030
84125
|
if (!isAttributionHeaderEnabled()) {
|
|
84031
84126
|
return "";
|
|
84032
84127
|
}
|
|
84033
|
-
const version2 = `${"1.30.
|
|
84128
|
+
const version2 = `${"1.30.4"}.${fingerprint}`;
|
|
84034
84129
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
84035
84130
|
const cch = "";
|
|
84036
84131
|
const workload = getWorkload();
|
|
@@ -191703,7 +191798,7 @@ function getTelemetryAttributes() {
|
|
|
191703
191798
|
attributes["session.id"] = sessionId;
|
|
191704
191799
|
}
|
|
191705
191800
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
191706
|
-
attributes["app.version"] = "1.30.
|
|
191801
|
+
attributes["app.version"] = "1.30.4";
|
|
191707
191802
|
}
|
|
191708
191803
|
const oauthAccount = getOauthAccountInfo();
|
|
191709
191804
|
if (oauthAccount) {
|
|
@@ -227108,7 +227203,7 @@ function getInstallationEnv() {
|
|
|
227108
227203
|
return;
|
|
227109
227204
|
}
|
|
227110
227205
|
function getURCodeVersion() {
|
|
227111
|
-
return "1.30.
|
|
227206
|
+
return "1.30.4";
|
|
227112
227207
|
}
|
|
227113
227208
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
227114
227209
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -229947,7 +230042,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
229947
230042
|
const client2 = new Client({
|
|
229948
230043
|
name: "ur",
|
|
229949
230044
|
title: "UR",
|
|
229950
|
-
version: "1.30.
|
|
230045
|
+
version: "1.30.4",
|
|
229951
230046
|
description: "UR-AGENT autonomous engineering workflow engine",
|
|
229952
230047
|
websiteUrl: PRODUCT_URL
|
|
229953
230048
|
}, {
|
|
@@ -230301,7 +230396,7 @@ var init_client5 = __esm(() => {
|
|
|
230301
230396
|
const client2 = new Client({
|
|
230302
230397
|
name: "ur",
|
|
230303
230398
|
title: "UR",
|
|
230304
|
-
version: "1.30.
|
|
230399
|
+
version: "1.30.4",
|
|
230305
230400
|
description: "UR-AGENT autonomous engineering workflow engine",
|
|
230306
230401
|
websiteUrl: PRODUCT_URL
|
|
230307
230402
|
}, {
|
|
@@ -240117,9 +240212,9 @@ async function assertMinVersion() {
|
|
|
240117
240212
|
if (false) {}
|
|
240118
240213
|
try {
|
|
240119
240214
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
240120
|
-
if (versionConfig.minVersion && lt("1.30.
|
|
240215
|
+
if (versionConfig.minVersion && lt("1.30.4", versionConfig.minVersion)) {
|
|
240121
240216
|
console.error(`
|
|
240122
|
-
It looks like your version of UR (${"1.30.
|
|
240217
|
+
It looks like your version of UR (${"1.30.4"}) needs an update.
|
|
240123
240218
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
240124
240219
|
|
|
240125
240220
|
To update, please run:
|
|
@@ -240335,7 +240430,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
240335
240430
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
240336
240431
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
240337
240432
|
pid: process.pid,
|
|
240338
|
-
currentVersion: "1.30.
|
|
240433
|
+
currentVersion: "1.30.4"
|
|
240339
240434
|
});
|
|
240340
240435
|
return "in_progress";
|
|
240341
240436
|
}
|
|
@@ -240344,7 +240439,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
240344
240439
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
240345
240440
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
240346
240441
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
240347
|
-
currentVersion: "1.30.
|
|
240442
|
+
currentVersion: "1.30.4"
|
|
240348
240443
|
});
|
|
240349
240444
|
console.error(`
|
|
240350
240445
|
Error: Windows NPM detected in WSL
|
|
@@ -240879,7 +240974,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
240879
240974
|
}
|
|
240880
240975
|
async function getDoctorDiagnostic() {
|
|
240881
240976
|
const installationType = await getCurrentInstallationType();
|
|
240882
|
-
const version2 = typeof MACRO !== "undefined" ? "1.30.
|
|
240977
|
+
const version2 = typeof MACRO !== "undefined" ? "1.30.4" : "unknown";
|
|
240883
240978
|
const installationPath = await getInstallationPath();
|
|
240884
240979
|
const invokedBinary = getInvokedBinary();
|
|
240885
240980
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -241814,8 +241909,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
241814
241909
|
const maxVersion = await getMaxVersion();
|
|
241815
241910
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
241816
241911
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
241817
|
-
if (gte("1.30.
|
|
241818
|
-
logForDebugging(`Native installer: current version ${"1.30.
|
|
241912
|
+
if (gte("1.30.4", maxVersion)) {
|
|
241913
|
+
logForDebugging(`Native installer: current version ${"1.30.4"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
241819
241914
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
241820
241915
|
latency_ms: Date.now() - startTime,
|
|
241821
241916
|
max_version: maxVersion,
|
|
@@ -241826,7 +241921,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
241826
241921
|
version2 = maxVersion;
|
|
241827
241922
|
}
|
|
241828
241923
|
}
|
|
241829
|
-
if (!forceReinstall && version2 === "1.30.
|
|
241924
|
+
if (!forceReinstall && version2 === "1.30.4" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
241830
241925
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
241831
241926
|
logEvent("tengu_native_update_complete", {
|
|
241832
241927
|
latency_ms: Date.now() - startTime,
|
|
@@ -338753,7 +338848,7 @@ function Feedback({
|
|
|
338753
338848
|
platform: env2.platform,
|
|
338754
338849
|
gitRepo: envInfo.isGit,
|
|
338755
338850
|
terminal: env2.terminal,
|
|
338756
|
-
version: "1.30.
|
|
338851
|
+
version: "1.30.4",
|
|
338757
338852
|
transcript: normalizeMessagesForAPI(messages),
|
|
338758
338853
|
errors: sanitizedErrors,
|
|
338759
338854
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -338945,7 +339040,7 @@ function Feedback({
|
|
|
338945
339040
|
", ",
|
|
338946
339041
|
env2.terminal,
|
|
338947
339042
|
", v",
|
|
338948
|
-
"1.30.
|
|
339043
|
+
"1.30.4"
|
|
338949
339044
|
]
|
|
338950
339045
|
}, undefined, true, undefined, this)
|
|
338951
339046
|
]
|
|
@@ -339051,7 +339146,7 @@ ${sanitizedDescription}
|
|
|
339051
339146
|
` + `**Environment Info**
|
|
339052
339147
|
` + `- Platform: ${env2.platform}
|
|
339053
339148
|
` + `- Terminal: ${env2.terminal}
|
|
339054
|
-
` + `- Version: ${"1.30.
|
|
339149
|
+
` + `- Version: ${"1.30.4"}
|
|
339055
339150
|
` + `- Feedback ID: ${feedbackId}
|
|
339056
339151
|
` + `
|
|
339057
339152
|
**Errors**
|
|
@@ -342162,7 +342257,7 @@ function buildPrimarySection() {
|
|
|
342162
342257
|
}, undefined, false, undefined, this);
|
|
342163
342258
|
return [{
|
|
342164
342259
|
label: "Version",
|
|
342165
|
-
value: "1.30.
|
|
342260
|
+
value: "1.30.4"
|
|
342166
342261
|
}, {
|
|
342167
342262
|
label: "Session name",
|
|
342168
342263
|
value: nameValue
|
|
@@ -345462,7 +345557,7 @@ function Config({
|
|
|
345462
345557
|
}
|
|
345463
345558
|
}, undefined, false, undefined, this)
|
|
345464
345559
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime177.jsxDEV(ChannelDowngradeDialog, {
|
|
345465
|
-
currentVersion: "1.30.
|
|
345560
|
+
currentVersion: "1.30.4",
|
|
345466
345561
|
onChoice: (choice) => {
|
|
345467
345562
|
setShowSubmenu(null);
|
|
345468
345563
|
setTabsHidden(false);
|
|
@@ -345474,7 +345569,7 @@ function Config({
|
|
|
345474
345569
|
autoUpdatesChannel: "stable"
|
|
345475
345570
|
};
|
|
345476
345571
|
if (choice === "stay") {
|
|
345477
|
-
newSettings.minimumVersion = "1.30.
|
|
345572
|
+
newSettings.minimumVersion = "1.30.4";
|
|
345478
345573
|
}
|
|
345479
345574
|
updateSettingsForSource("userSettings", newSettings);
|
|
345480
345575
|
setSettingsData((prev_27) => ({
|
|
@@ -353544,7 +353639,7 @@ function HelpV2(t0) {
|
|
|
353544
353639
|
let t6;
|
|
353545
353640
|
if ($3[31] !== tabs) {
|
|
353546
353641
|
t6 = /* @__PURE__ */ jsx_dev_runtime204.jsxDEV(Tabs, {
|
|
353547
|
-
title: `UR v${"1.30.
|
|
353642
|
+
title: `UR v${"1.30.4"}`,
|
|
353548
353643
|
color: "professionalBlue",
|
|
353549
353644
|
defaultTab: "general",
|
|
353550
353645
|
children: tabs
|
|
@@ -354290,7 +354385,7 @@ function buildToolUseContext(tools, readFileStateCache) {
|
|
|
354290
354385
|
async function handleInitialize(options2) {
|
|
354291
354386
|
return {
|
|
354292
354387
|
name: "ur-agent",
|
|
354293
|
-
version: "1.30.
|
|
354388
|
+
version: "1.30.4",
|
|
354294
354389
|
protocolVersion: "0.1.0",
|
|
354295
354390
|
workspaceRoot: options2.cwd,
|
|
354296
354391
|
capabilities: {
|
|
@@ -374414,7 +374509,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
374414
374509
|
return [];
|
|
374415
374510
|
}
|
|
374416
374511
|
}
|
|
374417
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.30.
|
|
374512
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.30.4") {
|
|
374418
374513
|
if (process.env.USER_TYPE === "ant") {
|
|
374419
374514
|
const changelog = "";
|
|
374420
374515
|
if (changelog) {
|
|
@@ -374441,7 +374536,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.30.3")
|
|
|
374441
374536
|
releaseNotes
|
|
374442
374537
|
};
|
|
374443
374538
|
}
|
|
374444
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.30.
|
|
374539
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.30.4") {
|
|
374445
374540
|
if (process.env.USER_TYPE === "ant") {
|
|
374446
374541
|
const changelog = "";
|
|
374447
374542
|
if (changelog) {
|
|
@@ -375611,7 +375706,7 @@ function getRecentActivitySync() {
|
|
|
375611
375706
|
return cachedActivity;
|
|
375612
375707
|
}
|
|
375613
375708
|
function getLogoDisplayData() {
|
|
375614
|
-
const version2 = process.env.DEMO_VERSION ?? "1.30.
|
|
375709
|
+
const version2 = process.env.DEMO_VERSION ?? "1.30.4";
|
|
375615
375710
|
const serverUrl = getDirectConnectServerUrl();
|
|
375616
375711
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd2());
|
|
375617
375712
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -376400,7 +376495,7 @@ function LogoV2() {
|
|
|
376400
376495
|
if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
376401
376496
|
t2 = () => {
|
|
376402
376497
|
const currentConfig = getGlobalConfig();
|
|
376403
|
-
if (currentConfig.lastReleaseNotesSeen === "1.30.
|
|
376498
|
+
if (currentConfig.lastReleaseNotesSeen === "1.30.4") {
|
|
376404
376499
|
return;
|
|
376405
376500
|
}
|
|
376406
376501
|
saveGlobalConfig(_temp326);
|
|
@@ -377085,12 +377180,12 @@ function LogoV2() {
|
|
|
377085
377180
|
return t41;
|
|
377086
377181
|
}
|
|
377087
377182
|
function _temp326(current) {
|
|
377088
|
-
if (current.lastReleaseNotesSeen === "1.30.
|
|
377183
|
+
if (current.lastReleaseNotesSeen === "1.30.4") {
|
|
377089
377184
|
return current;
|
|
377090
377185
|
}
|
|
377091
377186
|
return {
|
|
377092
377187
|
...current,
|
|
377093
|
-
lastReleaseNotesSeen: "1.30.
|
|
377188
|
+
lastReleaseNotesSeen: "1.30.4"
|
|
377094
377189
|
};
|
|
377095
377190
|
}
|
|
377096
377191
|
function _temp243(s_0) {
|
|
@@ -592805,7 +592900,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
592805
592900
|
smapsRollup,
|
|
592806
592901
|
platform: process.platform,
|
|
592807
592902
|
nodeVersion: process.version,
|
|
592808
|
-
ccVersion: "1.30.
|
|
592903
|
+
ccVersion: "1.30.4"
|
|
592809
592904
|
};
|
|
592810
592905
|
}
|
|
592811
592906
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -593391,7 +593486,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
593391
593486
|
var call136 = async () => {
|
|
593392
593487
|
return {
|
|
593393
593488
|
type: "text",
|
|
593394
|
-
value: "1.30.
|
|
593489
|
+
value: "1.30.4"
|
|
593395
593490
|
};
|
|
593396
593491
|
}, version2, version_default;
|
|
593397
593492
|
var init_version = __esm(() => {
|
|
@@ -596270,6 +596365,7 @@ function ProviderFirstModelPicker({
|
|
|
596270
596365
|
const [selectedProvider, setSelectedProvider] = import_react188.useState(null);
|
|
596271
596366
|
const [modelSource, setModelSource] = import_react188.useState("static");
|
|
596272
596367
|
const [modelWarning, setModelWarning] = import_react188.useState(null);
|
|
596368
|
+
const [providerWarning, setProviderWarning] = import_react188.useState(null);
|
|
596273
596369
|
const effortValue = useAppState(selectEffortValue2);
|
|
596274
596370
|
const [effort] = import_react188.useState(effortValue !== undefined ? convertEffortValueToLevel(effortValue) : undefined);
|
|
596275
596371
|
const appThinkingEnabled = useAppState(selectThinkingEnabled2);
|
|
@@ -596288,11 +596384,12 @@ function ProviderFirstModelPicker({
|
|
|
596288
596384
|
return {
|
|
596289
596385
|
value: provider.id,
|
|
596290
596386
|
label: provider.displayName,
|
|
596291
|
-
description: `${accessType} \xB7 ${status2.label}`,
|
|
596387
|
+
description: `${accessType} \xB7 ${provider.credentialType} \xB7 ${provider.runtimeKind === "external-app" ? "external app bridge" : status2.label}`,
|
|
596292
596388
|
status: status2.status,
|
|
596293
596389
|
statusLabel: status2.label,
|
|
596294
596390
|
accessType,
|
|
596295
596391
|
credentialType: provider.credentialType,
|
|
596392
|
+
runtimeBlockedReason: getProviderRuntimeBlockReason(provider.id),
|
|
596296
596393
|
provider
|
|
596297
596394
|
};
|
|
596298
596395
|
}));
|
|
@@ -596341,6 +596438,7 @@ function ProviderFirstModelPicker({
|
|
|
596341
596438
|
const focusedModel = modelOptions.find((m) => m.value === focusedModelValue);
|
|
596342
596439
|
function handleProviderFocus(value) {
|
|
596343
596440
|
setFocusedProviderValue(value);
|
|
596441
|
+
setProviderWarning(null);
|
|
596344
596442
|
}
|
|
596345
596443
|
function handleModelFocus(value) {
|
|
596346
596444
|
setFocusedModelValue(value);
|
|
@@ -596348,6 +596446,14 @@ function ProviderFirstModelPicker({
|
|
|
596348
596446
|
function handleProviderSelect(value) {
|
|
596349
596447
|
const provider = providerOptions.find((p2) => p2.value === value);
|
|
596350
596448
|
if (provider) {
|
|
596449
|
+
if (provider.runtimeBlockedReason) {
|
|
596450
|
+
setProviderWarning(provider.runtimeBlockedReason);
|
|
596451
|
+
return;
|
|
596452
|
+
}
|
|
596453
|
+
if (provider.status !== "connected") {
|
|
596454
|
+
setProviderWarning(`Provider "${provider.value}" is ${provider.status}: ${provider.statusLabel}. Run \`ur provider doctor ${provider.value}\`, or choose a connected API/local/server provider.`);
|
|
596455
|
+
return;
|
|
596456
|
+
}
|
|
596351
596457
|
setSelectedProvider(provider);
|
|
596352
596458
|
setStep("model");
|
|
596353
596459
|
setFocusedModelValue(null);
|
|
@@ -596510,6 +596616,14 @@ function ProviderFirstModelPicker({
|
|
|
596510
596616
|
dimColor: true,
|
|
596511
596617
|
children: focusedProvider.provider.accessPathLabel
|
|
596512
596618
|
}, undefined, false, undefined, this),
|
|
596619
|
+
/* @__PURE__ */ jsx_dev_runtime346.jsxDEV(ThemedText, {
|
|
596620
|
+
dimColor: true,
|
|
596621
|
+
color: focusedProvider.runtimeBlockedReason ? "error" : "subtle",
|
|
596622
|
+
children: [
|
|
596623
|
+
"Runtime: ",
|
|
596624
|
+
focusedProvider.provider.runtimeKind === "external-app" ? "external app bridge (disabled for independent UR runtime)" : "UR-native"
|
|
596625
|
+
]
|
|
596626
|
+
}, undefined, true, undefined, this),
|
|
596513
596627
|
focusedProvider.status !== "connected" && /* @__PURE__ */ jsx_dev_runtime346.jsxDEV(ThemedText, {
|
|
596514
596628
|
dimColor: true,
|
|
596515
596629
|
color: "subtle",
|
|
@@ -596518,7 +596632,12 @@ function ProviderFirstModelPicker({
|
|
|
596518
596632
|
focusedProvider.value,
|
|
596519
596633
|
"` for troubleshooting"
|
|
596520
596634
|
]
|
|
596521
|
-
}, undefined, true, undefined, this)
|
|
596635
|
+
}, undefined, true, undefined, this),
|
|
596636
|
+
providerWarning && focusedProvider.value === focusedProviderValue && /* @__PURE__ */ jsx_dev_runtime346.jsxDEV(ThemedText, {
|
|
596637
|
+
dimColor: true,
|
|
596638
|
+
color: "error",
|
|
596639
|
+
children: providerWarning
|
|
596640
|
+
}, undefined, false, undefined, this)
|
|
596522
596641
|
]
|
|
596523
596642
|
}, undefined, true, undefined, this)
|
|
596524
596643
|
]
|
|
@@ -597079,11 +597198,12 @@ function ProviderPicker({
|
|
|
597079
597198
|
const selectOptions = providers.map((provider) => ({
|
|
597080
597199
|
value: provider.id,
|
|
597081
597200
|
label: provider.displayName,
|
|
597082
|
-
description: `${getProviderAccessTypeLabel(provider)} \xB7 ${provider.credentialType}`
|
|
597201
|
+
description: `${getProviderAccessTypeLabel(provider)} \xB7 ${provider.credentialType} \xB7 ${provider.runtimeKind === "external-app" ? "external app bridge" : "UR-native"}`
|
|
597083
597202
|
}));
|
|
597084
597203
|
const visibleCount = Math.min(10, selectOptions.length);
|
|
597085
597204
|
const hiddenCount = Math.max(0, selectOptions.length - visibleCount);
|
|
597086
597205
|
const focusedProvider = providers.find((p2) => p2.id === focusedValue);
|
|
597206
|
+
const focusedBlockReason = focusedProvider ? getProviderRuntimeBlockReason(focusedProvider.id) : null;
|
|
597087
597207
|
function handleFocus(value) {
|
|
597088
597208
|
setFocusedValue(value);
|
|
597089
597209
|
}
|
|
@@ -597093,6 +597213,10 @@ function ProviderPicker({
|
|
|
597093
597213
|
from_provider: currentProvider,
|
|
597094
597214
|
to_provider: value
|
|
597095
597215
|
});
|
|
597216
|
+
const runtimeBlock = getProviderRuntimeBlockReason(value);
|
|
597217
|
+
if (runtimeBlock) {
|
|
597218
|
+
return;
|
|
597219
|
+
}
|
|
597096
597220
|
const result = setSafeProviderConfig("provider", value);
|
|
597097
597221
|
if (!result.ok) {
|
|
597098
597222
|
return;
|
|
@@ -597161,21 +597285,28 @@ function ProviderPicker({
|
|
|
597161
597285
|
/* @__PURE__ */ jsx_dev_runtime348.jsxDEV(ThemedBox_default, {
|
|
597162
597286
|
marginBottom: 1,
|
|
597163
597287
|
flexDirection: "column",
|
|
597164
|
-
children:
|
|
597165
|
-
|
|
597166
|
-
|
|
597167
|
-
|
|
597168
|
-
|
|
597169
|
-
|
|
597170
|
-
|
|
597171
|
-
|
|
597172
|
-
|
|
597173
|
-
|
|
597174
|
-
|
|
597175
|
-
|
|
597176
|
-
|
|
597177
|
-
|
|
597178
|
-
|
|
597288
|
+
children: [
|
|
597289
|
+
focusedProvider && /* @__PURE__ */ jsx_dev_runtime348.jsxDEV(ThemedText, {
|
|
597290
|
+
dimColor: true,
|
|
597291
|
+
children: [
|
|
597292
|
+
focusedProvider.displayName,
|
|
597293
|
+
" (",
|
|
597294
|
+
focusedProvider.id,
|
|
597295
|
+
") \xB7",
|
|
597296
|
+
" ",
|
|
597297
|
+
getProviderAccessTypeLabel(focusedProvider),
|
|
597298
|
+
" \xB7",
|
|
597299
|
+
" ",
|
|
597300
|
+
focusedProvider.accessPathLabel
|
|
597301
|
+
]
|
|
597302
|
+
}, undefined, true, undefined, this),
|
|
597303
|
+
focusedBlockReason && /* @__PURE__ */ jsx_dev_runtime348.jsxDEV(ThemedText, {
|
|
597304
|
+
dimColor: true,
|
|
597305
|
+
color: "error",
|
|
597306
|
+
children: focusedBlockReason
|
|
597307
|
+
}, undefined, false, undefined, this)
|
|
597308
|
+
]
|
|
597309
|
+
}, undefined, true, undefined, this)
|
|
597179
597310
|
]
|
|
597180
597311
|
}, undefined, true, undefined, this),
|
|
597181
597312
|
isStandaloneCommand && /* @__PURE__ */ jsx_dev_runtime348.jsxDEV(ThemedText, {
|
|
@@ -603308,7 +603439,7 @@ function generateHtmlReport(data, insights) {
|
|
|
603308
603439
|
</html>`;
|
|
603309
603440
|
}
|
|
603310
603441
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
603311
|
-
const version3 = typeof MACRO !== "undefined" ? "1.30.
|
|
603442
|
+
const version3 = typeof MACRO !== "undefined" ? "1.30.4" : "unknown";
|
|
603312
603443
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
603313
603444
|
const facets_summary = {
|
|
603314
603445
|
total: facets.size,
|
|
@@ -607586,7 +607717,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
607586
607717
|
init_settings2();
|
|
607587
607718
|
init_slowOperations();
|
|
607588
607719
|
init_uuid();
|
|
607589
|
-
VERSION5 = typeof MACRO !== "undefined" ? "1.30.
|
|
607720
|
+
VERSION5 = typeof MACRO !== "undefined" ? "1.30.4" : "unknown";
|
|
607590
607721
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
607591
607722
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
607592
607723
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -608791,7 +608922,7 @@ var init_filesystem = __esm(() => {
|
|
|
608791
608922
|
});
|
|
608792
608923
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
608793
608924
|
const nonce = randomBytes18(16).toString("hex");
|
|
608794
|
-
return join200(getURTempDir(), "bundled-skills", "1.30.
|
|
608925
|
+
return join200(getURTempDir(), "bundled-skills", "1.30.4", nonce);
|
|
608795
608926
|
});
|
|
608796
608927
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
608797
608928
|
});
|
|
@@ -615088,7 +615219,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
615088
615219
|
}
|
|
615089
615220
|
function computeFingerprintFromMessages(messages) {
|
|
615090
615221
|
const firstMessageText = extractFirstMessageText(messages);
|
|
615091
|
-
return computeFingerprint(firstMessageText, "1.30.
|
|
615222
|
+
return computeFingerprint(firstMessageText, "1.30.4");
|
|
615092
615223
|
}
|
|
615093
615224
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
615094
615225
|
var init_fingerprint = () => {};
|
|
@@ -616955,7 +617086,7 @@ async function sideQuery(opts) {
|
|
|
616955
617086
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
616956
617087
|
}
|
|
616957
617088
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
616958
|
-
const fingerprint = computeFingerprint(messageText2, "1.30.
|
|
617089
|
+
const fingerprint = computeFingerprint(messageText2, "1.30.4");
|
|
616959
617090
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
616960
617091
|
const systemBlocks = [
|
|
616961
617092
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -621692,7 +621823,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
621692
621823
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
621693
621824
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
621694
621825
|
betas: getSdkBetas(),
|
|
621695
|
-
ur_version: "1.30.
|
|
621826
|
+
ur_version: "1.30.4",
|
|
621696
621827
|
output_style: outputStyle2,
|
|
621697
621828
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
621698
621829
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -636320,7 +636451,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
636320
636451
|
function getSemverPart(version3) {
|
|
636321
636452
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
636322
636453
|
}
|
|
636323
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.30.
|
|
636454
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.30.4") {
|
|
636324
636455
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react226.useState(() => getSemverPart(initialVersion));
|
|
636325
636456
|
if (!updatedVersion) {
|
|
636326
636457
|
return null;
|
|
@@ -636369,7 +636500,7 @@ function AutoUpdater({
|
|
|
636369
636500
|
return;
|
|
636370
636501
|
}
|
|
636371
636502
|
if (false) {}
|
|
636372
|
-
const currentVersion = "1.30.
|
|
636503
|
+
const currentVersion = "1.30.4";
|
|
636373
636504
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
636374
636505
|
let latestVersion = await getLatestVersion(channel);
|
|
636375
636506
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -636598,12 +636729,12 @@ function NativeAutoUpdater({
|
|
|
636598
636729
|
logEvent("tengu_native_auto_updater_start", {});
|
|
636599
636730
|
try {
|
|
636600
636731
|
const maxVersion = await getMaxVersion();
|
|
636601
|
-
if (maxVersion && gt("1.30.
|
|
636732
|
+
if (maxVersion && gt("1.30.4", maxVersion)) {
|
|
636602
636733
|
const msg = await getMaxVersionMessage();
|
|
636603
636734
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
636604
636735
|
}
|
|
636605
636736
|
const result = await installLatest(channel);
|
|
636606
|
-
const currentVersion = "1.30.
|
|
636737
|
+
const currentVersion = "1.30.4";
|
|
636607
636738
|
const latencyMs = Date.now() - startTime;
|
|
636608
636739
|
if (result.lockFailed) {
|
|
636609
636740
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -636740,17 +636871,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
636740
636871
|
const maxVersion = await getMaxVersion();
|
|
636741
636872
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
636742
636873
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
636743
|
-
if (gte("1.30.
|
|
636744
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.30.
|
|
636874
|
+
if (gte("1.30.4", maxVersion)) {
|
|
636875
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.30.4"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
636745
636876
|
setUpdateAvailable(false);
|
|
636746
636877
|
return;
|
|
636747
636878
|
}
|
|
636748
636879
|
latest = maxVersion;
|
|
636749
636880
|
}
|
|
636750
|
-
const hasUpdate = latest && !gte("1.30.
|
|
636881
|
+
const hasUpdate = latest && !gte("1.30.4", latest) && !shouldSkipVersion(latest);
|
|
636751
636882
|
setUpdateAvailable(!!hasUpdate);
|
|
636752
636883
|
if (hasUpdate) {
|
|
636753
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.30.
|
|
636884
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.30.4"} -> ${latest}`);
|
|
636754
636885
|
}
|
|
636755
636886
|
};
|
|
636756
636887
|
$3[0] = t1;
|
|
@@ -636784,7 +636915,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
636784
636915
|
wrap: "truncate",
|
|
636785
636916
|
children: [
|
|
636786
636917
|
"currentVersion: ",
|
|
636787
|
-
"1.30.
|
|
636918
|
+
"1.30.4"
|
|
636788
636919
|
]
|
|
636789
636920
|
}, undefined, true, undefined, this);
|
|
636790
636921
|
$3[3] = verbose;
|
|
@@ -649241,7 +649372,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
649241
649372
|
project_dir: getOriginalCwd(),
|
|
649242
649373
|
added_dirs: addedDirs
|
|
649243
649374
|
},
|
|
649244
|
-
version: "1.30.
|
|
649375
|
+
version: "1.30.4",
|
|
649245
649376
|
output_style: {
|
|
649246
649377
|
name: outputStyleName
|
|
649247
649378
|
},
|
|
@@ -649324,7 +649455,7 @@ function StatusLineInner({
|
|
|
649324
649455
|
const taskValues = Object.values(tasks2);
|
|
649325
649456
|
const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
|
|
649326
649457
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
649327
|
-
version: "1.30.
|
|
649458
|
+
version: "1.30.4",
|
|
649328
649459
|
providerLabel: providerRuntime.providerLabel,
|
|
649329
649460
|
authMode: providerRuntime.authLabel,
|
|
649330
649461
|
model: providerRuntime.model ?? renderModelName(mainLoopModel),
|
|
@@ -660812,7 +660943,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
660812
660943
|
} catch {}
|
|
660813
660944
|
const data = {
|
|
660814
660945
|
trigger: trigger2,
|
|
660815
|
-
version: "1.30.
|
|
660946
|
+
version: "1.30.4",
|
|
660816
660947
|
platform: process.platform,
|
|
660817
660948
|
transcript,
|
|
660818
660949
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -672696,7 +672827,7 @@ function WelcomeV2() {
|
|
|
672696
672827
|
dimColor: true,
|
|
672697
672828
|
children: [
|
|
672698
672829
|
"v",
|
|
672699
|
-
"1.30.
|
|
672830
|
+
"1.30.4"
|
|
672700
672831
|
]
|
|
672701
672832
|
}, undefined, true, undefined, this)
|
|
672702
672833
|
]
|
|
@@ -673956,7 +674087,7 @@ function completeOnboarding() {
|
|
|
673956
674087
|
saveGlobalConfig((current) => ({
|
|
673957
674088
|
...current,
|
|
673958
674089
|
hasCompletedOnboarding: true,
|
|
673959
|
-
lastOnboardingVersion: "1.30.
|
|
674090
|
+
lastOnboardingVersion: "1.30.4"
|
|
673960
674091
|
}));
|
|
673961
674092
|
}
|
|
673962
674093
|
function showDialog(root2, renderer) {
|
|
@@ -679060,7 +679191,7 @@ function appendToLog(path24, message) {
|
|
|
679060
679191
|
cwd: getFsImplementation().cwd(),
|
|
679061
679192
|
userType: process.env.USER_TYPE,
|
|
679062
679193
|
sessionId: getSessionId(),
|
|
679063
|
-
version: "1.30.
|
|
679194
|
+
version: "1.30.4"
|
|
679064
679195
|
};
|
|
679065
679196
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
679066
679197
|
}
|
|
@@ -683154,8 +683285,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
683154
683285
|
}
|
|
683155
683286
|
async function checkEnvLessBridgeMinVersion() {
|
|
683156
683287
|
const cfg = await getEnvLessBridgeConfig();
|
|
683157
|
-
if (cfg.min_version && lt("1.30.
|
|
683158
|
-
return `Your version of UR (${"1.30.
|
|
683288
|
+
if (cfg.min_version && lt("1.30.4", cfg.min_version)) {
|
|
683289
|
+
return `Your version of UR (${"1.30.4"}) is too old for Remote Control.
|
|
683159
683290
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
683160
683291
|
}
|
|
683161
683292
|
return null;
|
|
@@ -683629,7 +683760,7 @@ async function initBridgeCore(params) {
|
|
|
683629
683760
|
const rawApi = createBridgeApiClient({
|
|
683630
683761
|
baseUrl,
|
|
683631
683762
|
getAccessToken,
|
|
683632
|
-
runnerVersion: "1.30.
|
|
683763
|
+
runnerVersion: "1.30.4",
|
|
683633
683764
|
onDebug: logForDebugging,
|
|
683634
683765
|
onAuth401,
|
|
683635
683766
|
getTrustedDeviceToken
|
|
@@ -689311,7 +689442,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
|
|
|
689311
689442
|
setCwd(cwd3);
|
|
689312
689443
|
const server2 = new Server({
|
|
689313
689444
|
name: "ur/tengu",
|
|
689314
|
-
version: "1.30.
|
|
689445
|
+
version: "1.30.4"
|
|
689315
689446
|
}, {
|
|
689316
689447
|
capabilities: {
|
|
689317
689448
|
tools: {}
|
|
@@ -691288,7 +691419,7 @@ async function update() {
|
|
|
691288
691419
|
logEvent("tengu_update_check", {});
|
|
691289
691420
|
const diagnostic = await getDoctorDiagnostic();
|
|
691290
691421
|
const result = await checkUpgradeStatus({
|
|
691291
|
-
currentVersion: "1.30.
|
|
691422
|
+
currentVersion: "1.30.4",
|
|
691292
691423
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
691293
691424
|
installationType: diagnostic.installationType,
|
|
691294
691425
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -692534,7 +692665,7 @@ ${customInstructions}` : customInstructions;
|
|
|
692534
692665
|
}
|
|
692535
692666
|
}
|
|
692536
692667
|
logForDiagnosticsNoPII("info", "started", {
|
|
692537
|
-
version: "1.30.
|
|
692668
|
+
version: "1.30.4",
|
|
692538
692669
|
is_native_binary: isInBundledMode()
|
|
692539
692670
|
});
|
|
692540
692671
|
registerCleanup(async () => {
|
|
@@ -693320,7 +693451,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
693320
693451
|
pendingHookMessages
|
|
693321
693452
|
}, renderAndRun);
|
|
693322
693453
|
}
|
|
693323
|
-
}).version("1.30.
|
|
693454
|
+
}).version("1.30.4 (UR-AGENT)", "-v, --version", "Output the version number");
|
|
693324
693455
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
693325
693456
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
693326
693457
|
if (canUserConfigureAdvisor()) {
|
|
@@ -694205,7 +694336,7 @@ if (false) {}
|
|
|
694205
694336
|
async function main2() {
|
|
694206
694337
|
const args = process.argv.slice(2);
|
|
694207
694338
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
694208
|
-
console.log(`${"1.30.
|
|
694339
|
+
console.log(`${"1.30.4"} (UR-AGENT)`);
|
|
694209
694340
|
return;
|
|
694210
694341
|
}
|
|
694211
694342
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|