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/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 backend: ${getProviderRuntimeBackend(result.provider)}${model}
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
- "codex-cli",
52274
- "claude-code-cli",
52275
- "gemini-cli",
52276
- "antigravity-cli",
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
- "openai-compatible",
52282
- "ollama",
52283
- "lmstudio",
52284
- "llama.cpp",
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.3"}`;
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.3"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
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.3"}${suffix}`;
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.3",
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.3".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
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.3",
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.3"
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.3");
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.3", coverage, priorityRoadmap;
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.3"}.${fingerprint}`;
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.3";
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.3";
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.3",
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.3",
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.3", versionConfig.minVersion)) {
240215
+ if (versionConfig.minVersion && lt("1.30.4", versionConfig.minVersion)) {
240121
240216
  console.error(`
240122
- It looks like your version of UR (${"1.30.3"}) needs an update.
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.3"
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.3"
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.3" : "unknown";
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.3", maxVersion)) {
241818
- logForDebugging(`Native installer: current version ${"1.30.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
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.3" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
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.3",
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.3"
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.3"}
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.3"
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.3",
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.3";
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.3"}`,
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.3",
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.3") {
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.3") {
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.3";
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.3") {
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.3") {
377183
+ if (current.lastReleaseNotesSeen === "1.30.4") {
377089
377184
  return current;
377090
377185
  }
377091
377186
  return {
377092
377187
  ...current,
377093
- lastReleaseNotesSeen: "1.30.3"
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.3"
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.3"
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: focusedProvider && /* @__PURE__ */ jsx_dev_runtime348.jsxDEV(ThemedText, {
597165
- dimColor: true,
597166
- children: [
597167
- focusedProvider.displayName,
597168
- " (",
597169
- focusedProvider.id,
597170
- ") \xB7",
597171
- " ",
597172
- getProviderAccessTypeLabel(focusedProvider),
597173
- " \xB7",
597174
- " ",
597175
- focusedProvider.accessPathLabel
597176
- ]
597177
- }, undefined, true, undefined, this)
597178
- }, undefined, false, undefined, this)
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.3" : "unknown";
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.3" : "unknown";
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.3", nonce);
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.3");
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.3");
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.3",
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.3") {
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.3";
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.3", maxVersion)) {
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.3";
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.3", maxVersion)) {
636744
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.30.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
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.3", latest) && !shouldSkipVersion(latest);
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.3"} -> ${latest}`);
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.3"
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.3",
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.3",
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.3",
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.3"
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.3"
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.3"
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.3", cfg.min_version)) {
683158
- return `Your version of UR (${"1.30.3"}) is too old for Remote Control.
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.3",
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.3"
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.3",
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.3",
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.3 (UR-AGENT)", "-v, --version", "Output the version number");
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.3"} (UR-AGENT)`);
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")) {