ur-agent 1.30.2 → 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",
@@ -56823,7 +56906,7 @@ function createURHQSubscriptionClient(providerId, options) {
56823
56906
  }
56824
56907
  const prompt = messagesToPrompt(params);
56825
56908
  const result = await run(options.commandPath, spec.args(model, prompt), {
56826
- input: spec.stdin === "close" ? "" : undefined,
56909
+ stdinMode: spec.stdinMode,
56827
56910
  signal: requestOptions?.signal,
56828
56911
  timeoutMs: options.timeoutMs ?? 120000
56829
56912
  });
@@ -56882,7 +56965,9 @@ function createURHQSubscriptionClient(providerId, options) {
56882
56965
  };
56883
56966
  return { beta: { messages: messagesAPI } };
56884
56967
  }
56885
- function getSubscriptionCliStdinMode(input) {
56968
+ function getSubscriptionCliStdinMode(input, mode) {
56969
+ if (mode)
56970
+ return mode;
56886
56971
  return input === undefined ? "ignore" : "pipe";
56887
56972
  }
56888
56973
  function cliModelName(model) {
@@ -57007,7 +57092,7 @@ function estimateTokens(text) {
57007
57092
  }
57008
57093
  var CLI_SPECS, defaultRunner = (command, args, options) => new Promise((resolve8, reject) => {
57009
57094
  const child = spawn3(command, args, {
57010
- stdio: [getSubscriptionCliStdinMode(options.input), "pipe", "pipe"],
57095
+ stdio: [getSubscriptionCliStdinMode(options.input, options.stdinMode), "pipe", "pipe"],
57011
57096
  signal: options.signal
57012
57097
  });
57013
57098
  let stdout = "";
@@ -57029,7 +57114,7 @@ var CLI_SPECS, defaultRunner = (command, args, options) => new Promise((resolve8
57029
57114
  clearTimeout(timer);
57030
57115
  resolve8({ code: code ?? 1, stdout, stderr });
57031
57116
  });
57032
- if (options.input !== undefined) {
57117
+ if (options.input !== undefined && child.stdin) {
57033
57118
  child.stdin?.write(options.input);
57034
57119
  child.stdin?.end();
57035
57120
  }
@@ -57037,7 +57122,7 @@ var CLI_SPECS, defaultRunner = (command, args, options) => new Promise((resolve8
57037
57122
  var init_urhqSubscription = __esm(() => {
57038
57123
  init_streamingAdapters();
57039
57124
  CLI_SPECS = {
57040
- "codex-cli": { args: (model, prompt) => ["exec", "--model", model, prompt], stdin: "close" },
57125
+ "codex-cli": { args: (model, prompt) => ["exec", "--model", model, prompt], stdinMode: "inherit" },
57041
57126
  "claude-code-cli": {
57042
57127
  args: (model, prompt) => ["-p", prompt, "--model", model, "--output-format", "json"]
57043
57128
  },
@@ -57392,6 +57477,10 @@ function resolveActiveProviderModel(options = {}) {
57392
57477
  if (!provider) {
57393
57478
  throw new Error(`Provider "${providerId}" is selected, but no runtime provider is registered. Run: ur provider list`);
57394
57479
  }
57480
+ const runtimeBlock = getProviderRuntimeBlockReason(providerId);
57481
+ if (runtimeBlock) {
57482
+ throw new Error(runtimeBlock);
57483
+ }
57395
57484
  const configuredModel = providerSettings.model;
57396
57485
  const defaultModel = getDefaultModelForProvider(providerId);
57397
57486
  const model = options.model ?? configuredModel ?? defaultModel;
@@ -57440,6 +57529,10 @@ async function createProviderClient(providerId, options = {}) {
57440
57529
  throw new Error(`Unknown provider: ${providerId}`);
57441
57530
  }
57442
57531
  const provider = getProviderDefinition(resolved);
57532
+ const runtimeBlock = getProviderRuntimeBlockReason(resolved);
57533
+ if (runtimeBlock) {
57534
+ throw new Error(runtimeBlock);
57535
+ }
57443
57536
  let client;
57444
57537
  switch (provider.accessType) {
57445
57538
  case "local":
@@ -57498,6 +57591,10 @@ async function createOpenAICompatibleProviderClient(providerId, options = {}) {
57498
57591
  }
57499
57592
  async function createSubscriptionClient(providerId, options = {}) {
57500
57593
  const provider = getProviderDefinition(providerId);
57594
+ const runtimeBlock = getProviderRuntimeBlockReason(providerId);
57595
+ if (runtimeBlock) {
57596
+ throw new Error(runtimeBlock);
57597
+ }
57501
57598
  const settings = getInitialSettings();
57502
57599
  const providerSettings = getActiveProviderSettings(settings);
57503
57600
  const { which: which2 } = await Promise.resolve().then(() => (init_which(), exports_which));
@@ -69310,7 +69407,7 @@ var init_auth = __esm(() => {
69310
69407
 
69311
69408
  // src/utils/userAgent.ts
69312
69409
  function getURCodeUserAgent() {
69313
- return `ur/${"1.30.2"}`;
69410
+ return `ur/${"1.30.4"}`;
69314
69411
  }
69315
69412
 
69316
69413
  // src/utils/workloadContext.ts
@@ -69332,7 +69429,7 @@ function getUserAgent() {
69332
69429
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
69333
69430
  const workload = getWorkload();
69334
69431
  const workloadSuffix = workload ? `, workload/${workload}` : "";
69335
- return `ur-cli/${"1.30.2"} (${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})`;
69336
69433
  }
69337
69434
  function getMCPUserAgent() {
69338
69435
  const parts = [];
@@ -69346,7 +69443,7 @@ function getMCPUserAgent() {
69346
69443
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
69347
69444
  }
69348
69445
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
69349
- return `ur/${"1.30.2"}${suffix}`;
69446
+ return `ur/${"1.30.4"}${suffix}`;
69350
69447
  }
69351
69448
  function getWebFetchUserAgent() {
69352
69449
  return `UR-User (${getURCodeUserAgent()})`;
@@ -69484,7 +69581,7 @@ var init_user = __esm(() => {
69484
69581
  deviceId,
69485
69582
  sessionId: getSessionId(),
69486
69583
  email: getEmail(),
69487
- appVersion: "1.30.2",
69584
+ appVersion: "1.30.4",
69488
69585
  platform: getHostPlatformForAnalytics(),
69489
69586
  organizationUuid,
69490
69587
  accountUuid,
@@ -76001,7 +76098,7 @@ var init_metadata = __esm(() => {
76001
76098
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
76002
76099
  WHITESPACE_REGEX = /\s+/;
76003
76100
  getVersionBase = memoize_default(() => {
76004
- const match = "1.30.2".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
76101
+ const match = "1.30.4".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
76005
76102
  return match ? match[0] : undefined;
76006
76103
  });
76007
76104
  buildEnvContext = memoize_default(async () => {
@@ -76041,7 +76138,7 @@ var init_metadata = __esm(() => {
76041
76138
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
76042
76139
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
76043
76140
  isURAiAuth: isURAISubscriber2(),
76044
- version: "1.30.2",
76141
+ version: "1.30.4",
76045
76142
  versionBase: getVersionBase(),
76046
76143
  buildTime: "",
76047
76144
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -76711,7 +76808,7 @@ function initialize1PEventLogging() {
76711
76808
  const platform2 = getPlatform();
76712
76809
  const attributes = {
76713
76810
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
76714
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.30.2"
76811
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.30.4"
76715
76812
  };
76716
76813
  if (platform2 === "wsl") {
76717
76814
  const wslVersion = getWslVersion();
@@ -76738,7 +76835,7 @@ function initialize1PEventLogging() {
76738
76835
  })
76739
76836
  ]
76740
76837
  });
76741
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.30.2");
76838
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.30.4");
76742
76839
  }
76743
76840
  async function reinitialize1PEventLoggingIfConfigChanged() {
76744
76841
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -82035,7 +82132,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
82035
82132
  function formatA2AAgentCard(options = {}, pretty = true) {
82036
82133
  return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
82037
82134
  }
82038
- var urVersion = "1.30.2", coverage, priorityRoadmap;
82135
+ var urVersion = "1.30.4", coverage, priorityRoadmap;
82039
82136
  var init_trends = __esm(() => {
82040
82137
  coverage = [
82041
82138
  {
@@ -84028,7 +84125,7 @@ function getAttributionHeader(fingerprint) {
84028
84125
  if (!isAttributionHeaderEnabled()) {
84029
84126
  return "";
84030
84127
  }
84031
- const version2 = `${"1.30.2"}.${fingerprint}`;
84128
+ const version2 = `${"1.30.4"}.${fingerprint}`;
84032
84129
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
84033
84130
  const cch = "";
84034
84131
  const workload = getWorkload();
@@ -191701,7 +191798,7 @@ function getTelemetryAttributes() {
191701
191798
  attributes["session.id"] = sessionId;
191702
191799
  }
191703
191800
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
191704
- attributes["app.version"] = "1.30.2";
191801
+ attributes["app.version"] = "1.30.4";
191705
191802
  }
191706
191803
  const oauthAccount = getOauthAccountInfo();
191707
191804
  if (oauthAccount) {
@@ -227106,7 +227203,7 @@ function getInstallationEnv() {
227106
227203
  return;
227107
227204
  }
227108
227205
  function getURCodeVersion() {
227109
- return "1.30.2";
227206
+ return "1.30.4";
227110
227207
  }
227111
227208
  async function getInstalledVSCodeExtensionVersion(command) {
227112
227209
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -229945,7 +230042,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
229945
230042
  const client2 = new Client({
229946
230043
  name: "ur",
229947
230044
  title: "UR",
229948
- version: "1.30.2",
230045
+ version: "1.30.4",
229949
230046
  description: "UR-AGENT autonomous engineering workflow engine",
229950
230047
  websiteUrl: PRODUCT_URL
229951
230048
  }, {
@@ -230299,7 +230396,7 @@ var init_client5 = __esm(() => {
230299
230396
  const client2 = new Client({
230300
230397
  name: "ur",
230301
230398
  title: "UR",
230302
- version: "1.30.2",
230399
+ version: "1.30.4",
230303
230400
  description: "UR-AGENT autonomous engineering workflow engine",
230304
230401
  websiteUrl: PRODUCT_URL
230305
230402
  }, {
@@ -240115,9 +240212,9 @@ async function assertMinVersion() {
240115
240212
  if (false) {}
240116
240213
  try {
240117
240214
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
240118
- if (versionConfig.minVersion && lt("1.30.2", versionConfig.minVersion)) {
240215
+ if (versionConfig.minVersion && lt("1.30.4", versionConfig.minVersion)) {
240119
240216
  console.error(`
240120
- It looks like your version of UR (${"1.30.2"}) needs an update.
240217
+ It looks like your version of UR (${"1.30.4"}) needs an update.
240121
240218
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
240122
240219
 
240123
240220
  To update, please run:
@@ -240333,7 +240430,7 @@ async function installGlobalPackage(specificVersion) {
240333
240430
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
240334
240431
  logEvent("tengu_auto_updater_lock_contention", {
240335
240432
  pid: process.pid,
240336
- currentVersion: "1.30.2"
240433
+ currentVersion: "1.30.4"
240337
240434
  });
240338
240435
  return "in_progress";
240339
240436
  }
@@ -240342,7 +240439,7 @@ async function installGlobalPackage(specificVersion) {
240342
240439
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
240343
240440
  logError2(new Error("Windows NPM detected in WSL environment"));
240344
240441
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
240345
- currentVersion: "1.30.2"
240442
+ currentVersion: "1.30.4"
240346
240443
  });
240347
240444
  console.error(`
240348
240445
  Error: Windows NPM detected in WSL
@@ -240877,7 +240974,7 @@ function detectLinuxGlobPatternWarnings() {
240877
240974
  }
240878
240975
  async function getDoctorDiagnostic() {
240879
240976
  const installationType = await getCurrentInstallationType();
240880
- const version2 = typeof MACRO !== "undefined" ? "1.30.2" : "unknown";
240977
+ const version2 = typeof MACRO !== "undefined" ? "1.30.4" : "unknown";
240881
240978
  const installationPath = await getInstallationPath();
240882
240979
  const invokedBinary = getInvokedBinary();
240883
240980
  const multipleInstallations = await detectMultipleInstallations();
@@ -241812,8 +241909,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
241812
241909
  const maxVersion = await getMaxVersion();
241813
241910
  if (maxVersion && gt(version2, maxVersion)) {
241814
241911
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
241815
- if (gte("1.30.2", maxVersion)) {
241816
- logForDebugging(`Native installer: current version ${"1.30.2"} 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`);
241817
241914
  logEvent("tengu_native_update_skipped_max_version", {
241818
241915
  latency_ms: Date.now() - startTime,
241819
241916
  max_version: maxVersion,
@@ -241824,7 +241921,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
241824
241921
  version2 = maxVersion;
241825
241922
  }
241826
241923
  }
241827
- if (!forceReinstall && version2 === "1.30.2" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
241924
+ if (!forceReinstall && version2 === "1.30.4" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
241828
241925
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
241829
241926
  logEvent("tengu_native_update_complete", {
241830
241927
  latency_ms: Date.now() - startTime,
@@ -338751,7 +338848,7 @@ function Feedback({
338751
338848
  platform: env2.platform,
338752
338849
  gitRepo: envInfo.isGit,
338753
338850
  terminal: env2.terminal,
338754
- version: "1.30.2",
338851
+ version: "1.30.4",
338755
338852
  transcript: normalizeMessagesForAPI(messages),
338756
338853
  errors: sanitizedErrors,
338757
338854
  lastApiRequest: getLastAPIRequest(),
@@ -338943,7 +339040,7 @@ function Feedback({
338943
339040
  ", ",
338944
339041
  env2.terminal,
338945
339042
  ", v",
338946
- "1.30.2"
339043
+ "1.30.4"
338947
339044
  ]
338948
339045
  }, undefined, true, undefined, this)
338949
339046
  ]
@@ -339049,7 +339146,7 @@ ${sanitizedDescription}
339049
339146
  ` + `**Environment Info**
339050
339147
  ` + `- Platform: ${env2.platform}
339051
339148
  ` + `- Terminal: ${env2.terminal}
339052
- ` + `- Version: ${"1.30.2"}
339149
+ ` + `- Version: ${"1.30.4"}
339053
339150
  ` + `- Feedback ID: ${feedbackId}
339054
339151
  ` + `
339055
339152
  **Errors**
@@ -342160,7 +342257,7 @@ function buildPrimarySection() {
342160
342257
  }, undefined, false, undefined, this);
342161
342258
  return [{
342162
342259
  label: "Version",
342163
- value: "1.30.2"
342260
+ value: "1.30.4"
342164
342261
  }, {
342165
342262
  label: "Session name",
342166
342263
  value: nameValue
@@ -345460,7 +345557,7 @@ function Config({
345460
345557
  }
345461
345558
  }, undefined, false, undefined, this)
345462
345559
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime177.jsxDEV(ChannelDowngradeDialog, {
345463
- currentVersion: "1.30.2",
345560
+ currentVersion: "1.30.4",
345464
345561
  onChoice: (choice) => {
345465
345562
  setShowSubmenu(null);
345466
345563
  setTabsHidden(false);
@@ -345472,7 +345569,7 @@ function Config({
345472
345569
  autoUpdatesChannel: "stable"
345473
345570
  };
345474
345571
  if (choice === "stay") {
345475
- newSettings.minimumVersion = "1.30.2";
345572
+ newSettings.minimumVersion = "1.30.4";
345476
345573
  }
345477
345574
  updateSettingsForSource("userSettings", newSettings);
345478
345575
  setSettingsData((prev_27) => ({
@@ -353542,7 +353639,7 @@ function HelpV2(t0) {
353542
353639
  let t6;
353543
353640
  if ($3[31] !== tabs) {
353544
353641
  t6 = /* @__PURE__ */ jsx_dev_runtime204.jsxDEV(Tabs, {
353545
- title: `UR v${"1.30.2"}`,
353642
+ title: `UR v${"1.30.4"}`,
353546
353643
  color: "professionalBlue",
353547
353644
  defaultTab: "general",
353548
353645
  children: tabs
@@ -354288,7 +354385,7 @@ function buildToolUseContext(tools, readFileStateCache) {
354288
354385
  async function handleInitialize(options2) {
354289
354386
  return {
354290
354387
  name: "ur-agent",
354291
- version: "1.30.2",
354388
+ version: "1.30.4",
354292
354389
  protocolVersion: "0.1.0",
354293
354390
  workspaceRoot: options2.cwd,
354294
354391
  capabilities: {
@@ -374412,7 +374509,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
374412
374509
  return [];
374413
374510
  }
374414
374511
  }
374415
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.30.2") {
374512
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.30.4") {
374416
374513
  if (process.env.USER_TYPE === "ant") {
374417
374514
  const changelog = "";
374418
374515
  if (changelog) {
@@ -374439,7 +374536,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.30.2")
374439
374536
  releaseNotes
374440
374537
  };
374441
374538
  }
374442
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.30.2") {
374539
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.30.4") {
374443
374540
  if (process.env.USER_TYPE === "ant") {
374444
374541
  const changelog = "";
374445
374542
  if (changelog) {
@@ -375609,7 +375706,7 @@ function getRecentActivitySync() {
375609
375706
  return cachedActivity;
375610
375707
  }
375611
375708
  function getLogoDisplayData() {
375612
- const version2 = process.env.DEMO_VERSION ?? "1.30.2";
375709
+ const version2 = process.env.DEMO_VERSION ?? "1.30.4";
375613
375710
  const serverUrl = getDirectConnectServerUrl();
375614
375711
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd2());
375615
375712
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -376398,7 +376495,7 @@ function LogoV2() {
376398
376495
  if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
376399
376496
  t2 = () => {
376400
376497
  const currentConfig = getGlobalConfig();
376401
- if (currentConfig.lastReleaseNotesSeen === "1.30.2") {
376498
+ if (currentConfig.lastReleaseNotesSeen === "1.30.4") {
376402
376499
  return;
376403
376500
  }
376404
376501
  saveGlobalConfig(_temp326);
@@ -377083,12 +377180,12 @@ function LogoV2() {
377083
377180
  return t41;
377084
377181
  }
377085
377182
  function _temp326(current) {
377086
- if (current.lastReleaseNotesSeen === "1.30.2") {
377183
+ if (current.lastReleaseNotesSeen === "1.30.4") {
377087
377184
  return current;
377088
377185
  }
377089
377186
  return {
377090
377187
  ...current,
377091
- lastReleaseNotesSeen: "1.30.2"
377188
+ lastReleaseNotesSeen: "1.30.4"
377092
377189
  };
377093
377190
  }
377094
377191
  function _temp243(s_0) {
@@ -407269,7 +407366,7 @@ var init_code_index2 = __esm(() => {
407269
407366
 
407270
407367
  // node_modules/typescript/lib/typescript.js
407271
407368
  var require_typescript2 = __commonJS((exports, module) => {
407272
- var __dirname = "/sessions/confident-pensive-edison/mnt/UR-1.19.0/node_modules/typescript/lib", __filename = "/sessions/confident-pensive-edison/mnt/UR-1.19.0/node_modules/typescript/lib/typescript.js";
407369
+ var __dirname = "/Users/maith/Desktop/ur3-dev/UR-1.19.0/node_modules/typescript/lib", __filename = "/Users/maith/Desktop/ur3-dev/UR-1.19.0/node_modules/typescript/lib/typescript.js";
407273
407370
  /*! *****************************************************************************
407274
407371
  Copyright (c) Microsoft Corporation. All rights reserved.
407275
407372
  Licensed under the Apache License, Version 2.0 (the "License"); you may not use
@@ -592803,7 +592900,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
592803
592900
  smapsRollup,
592804
592901
  platform: process.platform,
592805
592902
  nodeVersion: process.version,
592806
- ccVersion: "1.30.2"
592903
+ ccVersion: "1.30.4"
592807
592904
  };
592808
592905
  }
592809
592906
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -593389,7 +593486,7 @@ var init_bridge_kick = __esm(() => {
593389
593486
  var call136 = async () => {
593390
593487
  return {
593391
593488
  type: "text",
593392
- value: "1.30.2"
593489
+ value: "1.30.4"
593393
593490
  };
593394
593491
  }, version2, version_default;
593395
593492
  var init_version = __esm(() => {
@@ -596268,6 +596365,7 @@ function ProviderFirstModelPicker({
596268
596365
  const [selectedProvider, setSelectedProvider] = import_react188.useState(null);
596269
596366
  const [modelSource, setModelSource] = import_react188.useState("static");
596270
596367
  const [modelWarning, setModelWarning] = import_react188.useState(null);
596368
+ const [providerWarning, setProviderWarning] = import_react188.useState(null);
596271
596369
  const effortValue = useAppState(selectEffortValue2);
596272
596370
  const [effort] = import_react188.useState(effortValue !== undefined ? convertEffortValueToLevel(effortValue) : undefined);
596273
596371
  const appThinkingEnabled = useAppState(selectThinkingEnabled2);
@@ -596286,11 +596384,12 @@ function ProviderFirstModelPicker({
596286
596384
  return {
596287
596385
  value: provider.id,
596288
596386
  label: provider.displayName,
596289
- description: `${accessType} \xB7 ${status2.label}`,
596387
+ description: `${accessType} \xB7 ${provider.credentialType} \xB7 ${provider.runtimeKind === "external-app" ? "external app bridge" : status2.label}`,
596290
596388
  status: status2.status,
596291
596389
  statusLabel: status2.label,
596292
596390
  accessType,
596293
596391
  credentialType: provider.credentialType,
596392
+ runtimeBlockedReason: getProviderRuntimeBlockReason(provider.id),
596294
596393
  provider
596295
596394
  };
596296
596395
  }));
@@ -596339,6 +596438,7 @@ function ProviderFirstModelPicker({
596339
596438
  const focusedModel = modelOptions.find((m) => m.value === focusedModelValue);
596340
596439
  function handleProviderFocus(value) {
596341
596440
  setFocusedProviderValue(value);
596441
+ setProviderWarning(null);
596342
596442
  }
596343
596443
  function handleModelFocus(value) {
596344
596444
  setFocusedModelValue(value);
@@ -596346,6 +596446,14 @@ function ProviderFirstModelPicker({
596346
596446
  function handleProviderSelect(value) {
596347
596447
  const provider = providerOptions.find((p2) => p2.value === value);
596348
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
+ }
596349
596457
  setSelectedProvider(provider);
596350
596458
  setStep("model");
596351
596459
  setFocusedModelValue(null);
@@ -596508,6 +596616,14 @@ function ProviderFirstModelPicker({
596508
596616
  dimColor: true,
596509
596617
  children: focusedProvider.provider.accessPathLabel
596510
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),
596511
596627
  focusedProvider.status !== "connected" && /* @__PURE__ */ jsx_dev_runtime346.jsxDEV(ThemedText, {
596512
596628
  dimColor: true,
596513
596629
  color: "subtle",
@@ -596516,7 +596632,12 @@ function ProviderFirstModelPicker({
596516
596632
  focusedProvider.value,
596517
596633
  "` for troubleshooting"
596518
596634
  ]
596519
- }, 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)
596520
596641
  ]
596521
596642
  }, undefined, true, undefined, this)
596522
596643
  ]
@@ -597077,11 +597198,12 @@ function ProviderPicker({
597077
597198
  const selectOptions = providers.map((provider) => ({
597078
597199
  value: provider.id,
597079
597200
  label: provider.displayName,
597080
- description: `${getProviderAccessTypeLabel(provider)} \xB7 ${provider.credentialType}`
597201
+ description: `${getProviderAccessTypeLabel(provider)} \xB7 ${provider.credentialType} \xB7 ${provider.runtimeKind === "external-app" ? "external app bridge" : "UR-native"}`
597081
597202
  }));
597082
597203
  const visibleCount = Math.min(10, selectOptions.length);
597083
597204
  const hiddenCount = Math.max(0, selectOptions.length - visibleCount);
597084
597205
  const focusedProvider = providers.find((p2) => p2.id === focusedValue);
597206
+ const focusedBlockReason = focusedProvider ? getProviderRuntimeBlockReason(focusedProvider.id) : null;
597085
597207
  function handleFocus(value) {
597086
597208
  setFocusedValue(value);
597087
597209
  }
@@ -597091,6 +597213,10 @@ function ProviderPicker({
597091
597213
  from_provider: currentProvider,
597092
597214
  to_provider: value
597093
597215
  });
597216
+ const runtimeBlock = getProviderRuntimeBlockReason(value);
597217
+ if (runtimeBlock) {
597218
+ return;
597219
+ }
597094
597220
  const result = setSafeProviderConfig("provider", value);
597095
597221
  if (!result.ok) {
597096
597222
  return;
@@ -597159,21 +597285,28 @@ function ProviderPicker({
597159
597285
  /* @__PURE__ */ jsx_dev_runtime348.jsxDEV(ThemedBox_default, {
597160
597286
  marginBottom: 1,
597161
597287
  flexDirection: "column",
597162
- children: focusedProvider && /* @__PURE__ */ jsx_dev_runtime348.jsxDEV(ThemedText, {
597163
- dimColor: true,
597164
- children: [
597165
- focusedProvider.displayName,
597166
- " (",
597167
- focusedProvider.id,
597168
- ") \xB7",
597169
- " ",
597170
- getProviderAccessTypeLabel(focusedProvider),
597171
- " \xB7",
597172
- " ",
597173
- focusedProvider.accessPathLabel
597174
- ]
597175
- }, undefined, true, undefined, this)
597176
- }, 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)
597177
597310
  ]
597178
597311
  }, undefined, true, undefined, this),
597179
597312
  isStandaloneCommand && /* @__PURE__ */ jsx_dev_runtime348.jsxDEV(ThemedText, {
@@ -603306,7 +603439,7 @@ function generateHtmlReport(data, insights) {
603306
603439
  </html>`;
603307
603440
  }
603308
603441
  function buildExportData(data, insights, facets, remoteStats) {
603309
- const version3 = typeof MACRO !== "undefined" ? "1.30.2" : "unknown";
603442
+ const version3 = typeof MACRO !== "undefined" ? "1.30.4" : "unknown";
603310
603443
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
603311
603444
  const facets_summary = {
603312
603445
  total: facets.size,
@@ -607584,7 +607717,7 @@ var init_sessionStorage = __esm(() => {
607584
607717
  init_settings2();
607585
607718
  init_slowOperations();
607586
607719
  init_uuid();
607587
- VERSION5 = typeof MACRO !== "undefined" ? "1.30.2" : "unknown";
607720
+ VERSION5 = typeof MACRO !== "undefined" ? "1.30.4" : "unknown";
607588
607721
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
607589
607722
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
607590
607723
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -608789,7 +608922,7 @@ var init_filesystem = __esm(() => {
608789
608922
  });
608790
608923
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
608791
608924
  const nonce = randomBytes18(16).toString("hex");
608792
- return join200(getURTempDir(), "bundled-skills", "1.30.2", nonce);
608925
+ return join200(getURTempDir(), "bundled-skills", "1.30.4", nonce);
608793
608926
  });
608794
608927
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
608795
608928
  });
@@ -615086,7 +615219,7 @@ function computeFingerprint(messageText2, version3) {
615086
615219
  }
615087
615220
  function computeFingerprintFromMessages(messages) {
615088
615221
  const firstMessageText = extractFirstMessageText(messages);
615089
- return computeFingerprint(firstMessageText, "1.30.2");
615222
+ return computeFingerprint(firstMessageText, "1.30.4");
615090
615223
  }
615091
615224
  var FINGERPRINT_SALT = "59cf53e54c78";
615092
615225
  var init_fingerprint = () => {};
@@ -616953,7 +617086,7 @@ async function sideQuery(opts) {
616953
617086
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
616954
617087
  }
616955
617088
  const messageText2 = extractFirstUserMessageText(messages);
616956
- const fingerprint = computeFingerprint(messageText2, "1.30.2");
617089
+ const fingerprint = computeFingerprint(messageText2, "1.30.4");
616957
617090
  const attributionHeader = getAttributionHeader(fingerprint);
616958
617091
  const systemBlocks = [
616959
617092
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -621690,7 +621823,7 @@ function buildSystemInitMessage(inputs) {
621690
621823
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
621691
621824
  apiKeySource: getURHQApiKeyWithSource().source,
621692
621825
  betas: getSdkBetas(),
621693
- ur_version: "1.30.2",
621826
+ ur_version: "1.30.4",
621694
621827
  output_style: outputStyle2,
621695
621828
  agents: inputs.agents.map((agent) => agent.agentType),
621696
621829
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -636318,7 +636451,7 @@ var init_useVoiceEnabled = __esm(() => {
636318
636451
  function getSemverPart(version3) {
636319
636452
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
636320
636453
  }
636321
- function useUpdateNotification(updatedVersion, initialVersion = "1.30.2") {
636454
+ function useUpdateNotification(updatedVersion, initialVersion = "1.30.4") {
636322
636455
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react226.useState(() => getSemverPart(initialVersion));
636323
636456
  if (!updatedVersion) {
636324
636457
  return null;
@@ -636367,7 +636500,7 @@ function AutoUpdater({
636367
636500
  return;
636368
636501
  }
636369
636502
  if (false) {}
636370
- const currentVersion = "1.30.2";
636503
+ const currentVersion = "1.30.4";
636371
636504
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
636372
636505
  let latestVersion = await getLatestVersion(channel);
636373
636506
  const isDisabled = isAutoUpdaterDisabled();
@@ -636596,12 +636729,12 @@ function NativeAutoUpdater({
636596
636729
  logEvent("tengu_native_auto_updater_start", {});
636597
636730
  try {
636598
636731
  const maxVersion = await getMaxVersion();
636599
- if (maxVersion && gt("1.30.2", maxVersion)) {
636732
+ if (maxVersion && gt("1.30.4", maxVersion)) {
636600
636733
  const msg = await getMaxVersionMessage();
636601
636734
  setMaxVersionIssue(msg ?? "affects your version");
636602
636735
  }
636603
636736
  const result = await installLatest(channel);
636604
- const currentVersion = "1.30.2";
636737
+ const currentVersion = "1.30.4";
636605
636738
  const latencyMs = Date.now() - startTime;
636606
636739
  if (result.lockFailed) {
636607
636740
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -636738,17 +636871,17 @@ function PackageManagerAutoUpdater(t0) {
636738
636871
  const maxVersion = await getMaxVersion();
636739
636872
  if (maxVersion && latest && gt(latest, maxVersion)) {
636740
636873
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
636741
- if (gte("1.30.2", maxVersion)) {
636742
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.30.2"} 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`);
636743
636876
  setUpdateAvailable(false);
636744
636877
  return;
636745
636878
  }
636746
636879
  latest = maxVersion;
636747
636880
  }
636748
- const hasUpdate = latest && !gte("1.30.2", latest) && !shouldSkipVersion(latest);
636881
+ const hasUpdate = latest && !gte("1.30.4", latest) && !shouldSkipVersion(latest);
636749
636882
  setUpdateAvailable(!!hasUpdate);
636750
636883
  if (hasUpdate) {
636751
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.30.2"} -> ${latest}`);
636884
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.30.4"} -> ${latest}`);
636752
636885
  }
636753
636886
  };
636754
636887
  $3[0] = t1;
@@ -636782,7 +636915,7 @@ function PackageManagerAutoUpdater(t0) {
636782
636915
  wrap: "truncate",
636783
636916
  children: [
636784
636917
  "currentVersion: ",
636785
- "1.30.2"
636918
+ "1.30.4"
636786
636919
  ]
636787
636920
  }, undefined, true, undefined, this);
636788
636921
  $3[3] = verbose;
@@ -649239,7 +649372,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
649239
649372
  project_dir: getOriginalCwd(),
649240
649373
  added_dirs: addedDirs
649241
649374
  },
649242
- version: "1.30.2",
649375
+ version: "1.30.4",
649243
649376
  output_style: {
649244
649377
  name: outputStyleName
649245
649378
  },
@@ -649322,7 +649455,7 @@ function StatusLineInner({
649322
649455
  const taskValues = Object.values(tasks2);
649323
649456
  const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
649324
649457
  const defaultStatusLineText = buildDefaultStatusBar({
649325
- version: "1.30.2",
649458
+ version: "1.30.4",
649326
649459
  providerLabel: providerRuntime.providerLabel,
649327
649460
  authMode: providerRuntime.authLabel,
649328
649461
  model: providerRuntime.model ?? renderModelName(mainLoopModel),
@@ -660810,7 +660943,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
660810
660943
  } catch {}
660811
660944
  const data = {
660812
660945
  trigger: trigger2,
660813
- version: "1.30.2",
660946
+ version: "1.30.4",
660814
660947
  platform: process.platform,
660815
660948
  transcript,
660816
660949
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -672694,7 +672827,7 @@ function WelcomeV2() {
672694
672827
  dimColor: true,
672695
672828
  children: [
672696
672829
  "v",
672697
- "1.30.2"
672830
+ "1.30.4"
672698
672831
  ]
672699
672832
  }, undefined, true, undefined, this)
672700
672833
  ]
@@ -673954,7 +674087,7 @@ function completeOnboarding() {
673954
674087
  saveGlobalConfig((current) => ({
673955
674088
  ...current,
673956
674089
  hasCompletedOnboarding: true,
673957
- lastOnboardingVersion: "1.30.2"
674090
+ lastOnboardingVersion: "1.30.4"
673958
674091
  }));
673959
674092
  }
673960
674093
  function showDialog(root2, renderer) {
@@ -679058,7 +679191,7 @@ function appendToLog(path24, message) {
679058
679191
  cwd: getFsImplementation().cwd(),
679059
679192
  userType: process.env.USER_TYPE,
679060
679193
  sessionId: getSessionId(),
679061
- version: "1.30.2"
679194
+ version: "1.30.4"
679062
679195
  };
679063
679196
  getLogWriter(path24).write(messageWithTimestamp);
679064
679197
  }
@@ -683152,8 +683285,8 @@ async function getEnvLessBridgeConfig() {
683152
683285
  }
683153
683286
  async function checkEnvLessBridgeMinVersion() {
683154
683287
  const cfg = await getEnvLessBridgeConfig();
683155
- if (cfg.min_version && lt("1.30.2", cfg.min_version)) {
683156
- return `Your version of UR (${"1.30.2"}) 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.
683157
683290
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
683158
683291
  }
683159
683292
  return null;
@@ -683627,7 +683760,7 @@ async function initBridgeCore(params) {
683627
683760
  const rawApi = createBridgeApiClient({
683628
683761
  baseUrl,
683629
683762
  getAccessToken,
683630
- runnerVersion: "1.30.2",
683763
+ runnerVersion: "1.30.4",
683631
683764
  onDebug: logForDebugging,
683632
683765
  onAuth401,
683633
683766
  getTrustedDeviceToken
@@ -689309,7 +689442,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
689309
689442
  setCwd(cwd3);
689310
689443
  const server2 = new Server({
689311
689444
  name: "ur/tengu",
689312
- version: "1.30.2"
689445
+ version: "1.30.4"
689313
689446
  }, {
689314
689447
  capabilities: {
689315
689448
  tools: {}
@@ -691286,7 +691419,7 @@ async function update() {
691286
691419
  logEvent("tengu_update_check", {});
691287
691420
  const diagnostic = await getDoctorDiagnostic();
691288
691421
  const result = await checkUpgradeStatus({
691289
- currentVersion: "1.30.2",
691422
+ currentVersion: "1.30.4",
691290
691423
  packageName: UR_AGENT_PACKAGE_NAME,
691291
691424
  installationType: diagnostic.installationType,
691292
691425
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -692532,7 +692665,7 @@ ${customInstructions}` : customInstructions;
692532
692665
  }
692533
692666
  }
692534
692667
  logForDiagnosticsNoPII("info", "started", {
692535
- version: "1.30.2",
692668
+ version: "1.30.4",
692536
692669
  is_native_binary: isInBundledMode()
692537
692670
  });
692538
692671
  registerCleanup(async () => {
@@ -693318,7 +693451,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
693318
693451
  pendingHookMessages
693319
693452
  }, renderAndRun);
693320
693453
  }
693321
- }).version("1.30.2 (UR-AGENT)", "-v, --version", "Output the version number");
693454
+ }).version("1.30.4 (UR-AGENT)", "-v, --version", "Output the version number");
693322
693455
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
693323
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.");
693324
693457
  if (canUserConfigureAdvisor()) {
@@ -694203,7 +694336,7 @@ if (false) {}
694203
694336
  async function main2() {
694204
694337
  const args = process.argv.slice(2);
694205
694338
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
694206
- console.log(`${"1.30.2"} (UR-AGENT)`);
694339
+ console.log(`${"1.30.4"} (UR-AGENT)`);
694207
694340
  return;
694208
694341
  }
694209
694342
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {