ur-agent 1.34.0 → 1.35.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -51616,7 +51616,6 @@ __export(exports_providerRegistry, {
51616
51616
  isProviderRuntimeSelectable: () => isProviderRuntimeSelectable,
51617
51617
  isProviderId: () => isProviderId,
51618
51618
  isModelSupportedByProvider: () => isModelSupportedByProvider,
51619
- isExternalBridgeEnabled: () => isExternalBridgeEnabled,
51620
51619
  getValidModelIdsForProvider: () => getValidModelIdsForProvider,
51621
51620
  getRuntimeProviderId: () => getRuntimeProviderId,
51622
51621
  getProviderStatus: () => getProviderStatus,
@@ -51635,8 +51634,6 @@ __export(exports_providerRegistry, {
51635
51634
  formatProviderList: () => formatProviderList,
51636
51635
  formatProviderDoctor: () => formatProviderDoctor,
51637
51636
  formatInvalidProviderModelMessage: () => formatInvalidProviderModelMessage,
51638
- externalAppProviderBridgeEnabled: () => externalAppProviderBridgeEnabled,
51639
- enableExternalBridge: () => enableExternalBridge,
51640
51637
  doctorProvider: () => doctorProvider,
51641
51638
  doctorActiveProvider: () => doctorActiveProvider,
51642
51639
  credentialTypeLabel: () => credentialTypeLabel,
@@ -51774,41 +51771,6 @@ function credentialTypeLabel(type) {
51774
51771
  return "OpenAI-compatible endpoint";
51775
51772
  }
51776
51773
  }
51777
- function externalAppProviderBridgeEnabled(env4 = process.env) {
51778
- return env4.UR_ENABLE_EXTERNAL_APP_PROVIDERS === "1";
51779
- }
51780
- function isExternalBridgeEnabled(providerId, env4 = process.env, settings = getInitialSettings()) {
51781
- if (externalAppProviderBridgeEnabled(env4)) {
51782
- return true;
51783
- }
51784
- const provider = resolveProviderId(providerId);
51785
- const enabled = settings.provider?.enabledExternalBridges;
51786
- return Boolean(provider && Array.isArray(enabled) && enabled.includes(provider));
51787
- }
51788
- function enableExternalBridge(providerId) {
51789
- const provider = resolveProviderId(providerId);
51790
- if (!provider) {
51791
- return { ok: false, message: `Unknown provider "${providerId}". Run: ur provider list` };
51792
- }
51793
- if (getProviderDefinition(provider).runtimeKind !== "external-app") {
51794
- return { ok: true, message: `${provider} does not require an external-app opt-in.` };
51795
- }
51796
- const settings = getInitialSettings();
51797
- const current = settings.provider?.enabledExternalBridges ?? [];
51798
- if (current.includes(provider)) {
51799
- return { ok: true, message: `${provider} is already enabled.` };
51800
- }
51801
- const result = updateSettingsForSource("userSettings", {
51802
- provider: {
51803
- ...settings.provider ?? {},
51804
- enabledExternalBridges: [...current, provider]
51805
- }
51806
- });
51807
- if (result.error) {
51808
- return { ok: false, message: `Failed to persist opt-in: ${result.error.message}` };
51809
- }
51810
- return { ok: true, message: `Enabled ${provider} for this account.` };
51811
- }
51812
51774
  function getProviderRuntimeKind(providerId) {
51813
51775
  const provider = resolveProviderId(providerId);
51814
51776
  return provider ? getProviderDefinition(provider).runtimeKind : "unknown";
@@ -51853,7 +51815,7 @@ function normalizeBaseUrl(value) {
51853
51815
  }
51854
51816
  return withScheme.replace(/\/$/, "");
51855
51817
  }
51856
- function setSafeProviderConfig(key, value) {
51818
+ function setSafeProviderConfig(key, value, options = {}) {
51857
51819
  const trimmed = value.trim();
51858
51820
  if (!trimmed) {
51859
51821
  return { ok: false, message: `Missing value for ${key}.` };
@@ -51945,7 +51907,8 @@ function setSafeProviderConfig(key, value) {
51945
51907
  message: error40 instanceof Error ? error40.message : String(error40)
51946
51908
  };
51947
51909
  }
51948
- const result = updateSettingsForSource("userSettings", settings);
51910
+ const source = options.source ?? "localSettings";
51911
+ const result = updateSettingsForSource(source, settings);
51949
51912
  if (result.error) {
51950
51913
  return {
51951
51914
  ok: false,
@@ -52839,7 +52802,8 @@ function setProviderModel(providerId, modelId, options = {}) {
52839
52802
  message: validation.error
52840
52803
  };
52841
52804
  }
52842
- const result = updateSettingsForSource("userSettings", {
52805
+ const source = options.source ?? "localSettings";
52806
+ const result = updateSettingsForSource(source, {
52843
52807
  provider: {
52844
52808
  active: provider,
52845
52809
  model: modelId
@@ -55222,7 +55186,7 @@ async function fetchOllamaChat(params, stream4, controller, options) {
55222
55186
  });
55223
55187
  if (!response.ok) {
55224
55188
  const body = await response.text().catch(() => "");
55225
- throw new Error(`Ollama request failed (${response.status}): ${body || response.statusText}`);
55189
+ throw createOllamaHTTPError(response.status, body, response.statusText);
55226
55190
  }
55227
55191
  return response;
55228
55192
  } catch (error40) {
@@ -55232,6 +55196,9 @@ async function fetchOllamaChat(params, stream4, controller, options) {
55232
55196
  }
55233
55197
  throw new APIConnectionTimeoutError({ message: "Ollama request timed out" });
55234
55198
  }
55199
+ if (error40 instanceof APIConnectionError || error40 instanceof APIConnectionTimeoutError || error40 instanceof APIUserAbortError) {
55200
+ throw error40;
55201
+ }
55235
55202
  if (error40 instanceof Error) {
55236
55203
  throw new APIConnectionError({ message: error40.message, cause: error40 });
55237
55204
  }
@@ -55242,6 +55209,34 @@ async function fetchOllamaChat(params, stream4, controller, options) {
55242
55209
  }
55243
55210
  }
55244
55211
  }
55212
+ function createOllamaHTTPError(status, body, statusText) {
55213
+ const rawMessage = extractOllamaHTTPErrorMessage(body) || statusText;
55214
+ if (isOllamaGatewayTimeout(status, rawMessage)) {
55215
+ return new APIConnectionTimeoutError({
55216
+ message: OLLAMA_GATEWAY_TIMEOUT_MESSAGE,
55217
+ cause: new Error(`Ollama request failed (${status}): ${rawMessage}`)
55218
+ });
55219
+ }
55220
+ return new Error(`Ollama request failed (${status}): ${rawMessage}`);
55221
+ }
55222
+ function extractOllamaHTTPErrorMessage(body) {
55223
+ if (!body.trim()) {
55224
+ return "";
55225
+ }
55226
+ try {
55227
+ const parsed = JSON.parse(body);
55228
+ if (typeof parsed.error === "string") {
55229
+ return parsed.error;
55230
+ }
55231
+ } catch {}
55232
+ return body;
55233
+ }
55234
+ function isOllamaGatewayTimeout(status, message) {
55235
+ if (status !== 502 && status !== 504) {
55236
+ return false;
55237
+ }
55238
+ return /operation timed out|read:.*timed out|timeout|deadline exceeded/i.test(message);
55239
+ }
55245
55240
  function createLinkedAbortController(options) {
55246
55241
  const controller = new AbortController;
55247
55242
  const signal = options?.signal;
@@ -56037,7 +56032,7 @@ function parseToolInput(input) {
56037
56032
  return {};
56038
56033
  }
56039
56034
  }
56040
- var DEFAULT_OLLAMA_REQUEST_TIMEOUT_MS = 300000, REMOTE_OLLAMA_REQUEST_TIMEOUT_MS = 120000, ollamaModelCapabilitiesCache, ollamaBaseUrlOverride;
56035
+ var DEFAULT_OLLAMA_REQUEST_TIMEOUT_MS = 300000, REMOTE_OLLAMA_REQUEST_TIMEOUT_MS = 120000, OLLAMA_GATEWAY_TIMEOUT_MESSAGE = "Ollama gateway timed out while waiting for the model to respond. Check the selected Ollama endpoint or increase API_TIMEOUT_MS if the model needs more time.", ollamaModelCapabilitiesCache, ollamaBaseUrlOverride;
56041
56036
  var init_ollama = __esm(() => {
56042
56037
  init_urhq_sdk();
56043
56038
  init_ollamaModels();
@@ -69510,7 +69505,7 @@ var init_auth = __esm(() => {
69510
69505
 
69511
69506
  // src/utils/userAgent.ts
69512
69507
  function getURCodeUserAgent() {
69513
- return `ur/${"1.34.0"}`;
69508
+ return `ur/${"1.35.1"}`;
69514
69509
  }
69515
69510
 
69516
69511
  // src/utils/workloadContext.ts
@@ -69532,7 +69527,7 @@ function getUserAgent() {
69532
69527
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
69533
69528
  const workload = getWorkload();
69534
69529
  const workloadSuffix = workload ? `, workload/${workload}` : "";
69535
- return `ur-cli/${"1.34.0"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
69530
+ return `ur-cli/${"1.35.1"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
69536
69531
  }
69537
69532
  function getMCPUserAgent() {
69538
69533
  const parts = [];
@@ -69546,7 +69541,7 @@ function getMCPUserAgent() {
69546
69541
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
69547
69542
  }
69548
69543
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
69549
- return `ur/${"1.34.0"}${suffix}`;
69544
+ return `ur/${"1.35.1"}${suffix}`;
69550
69545
  }
69551
69546
  function getWebFetchUserAgent() {
69552
69547
  return `UR-User (${getURCodeUserAgent()})`;
@@ -69684,7 +69679,7 @@ var init_user = __esm(() => {
69684
69679
  deviceId,
69685
69680
  sessionId: getSessionId(),
69686
69681
  email: getEmail(),
69687
- appVersion: "1.34.0",
69682
+ appVersion: "1.35.1",
69688
69683
  platform: getHostPlatformForAnalytics(),
69689
69684
  organizationUuid,
69690
69685
  accountUuid,
@@ -76201,7 +76196,7 @@ var init_metadata = __esm(() => {
76201
76196
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
76202
76197
  WHITESPACE_REGEX = /\s+/;
76203
76198
  getVersionBase = memoize_default(() => {
76204
- const match = "1.34.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
76199
+ const match = "1.35.1".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
76205
76200
  return match ? match[0] : undefined;
76206
76201
  });
76207
76202
  buildEnvContext = memoize_default(async () => {
@@ -76241,7 +76236,7 @@ var init_metadata = __esm(() => {
76241
76236
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
76242
76237
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
76243
76238
  isURAiAuth: isURAISubscriber2(),
76244
- version: "1.34.0",
76239
+ version: "1.35.1",
76245
76240
  versionBase: getVersionBase(),
76246
76241
  buildTime: "",
76247
76242
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -76911,7 +76906,7 @@ function initialize1PEventLogging() {
76911
76906
  const platform2 = getPlatform();
76912
76907
  const attributes = {
76913
76908
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
76914
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.34.0"
76909
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.35.1"
76915
76910
  };
76916
76911
  if (platform2 === "wsl") {
76917
76912
  const wslVersion = getWslVersion();
@@ -76938,7 +76933,7 @@ function initialize1PEventLogging() {
76938
76933
  })
76939
76934
  ]
76940
76935
  });
76941
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.34.0");
76936
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.35.1");
76942
76937
  }
76943
76938
  async function reinitialize1PEventLoggingIfConfigChanged() {
76944
76939
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -80654,7 +80649,7 @@ function getOllamaBaseUrl(env4 = process.env, settings) {
80654
80649
  if (envHost) {
80655
80650
  return normalizeOllamaBaseUrl(envHost);
80656
80651
  }
80657
- const settingsHost = settings === undefined ? getSettingsForSource("userSettings")?.ollama?.host : settings.ollama?.host;
80652
+ const settingsHost = settings === undefined ? getInitialSettings().ollama?.host : settings.ollama?.host;
80658
80653
  if (settingsHost) {
80659
80654
  return normalizeOllamaBaseUrl(settingsHost);
80660
80655
  }
@@ -82235,7 +82230,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
82235
82230
  function formatA2AAgentCard(options = {}, pretty = true) {
82236
82231
  return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
82237
82232
  }
82238
- var urVersion = "1.34.0", coverage, priorityRoadmap;
82233
+ var urVersion = "1.35.1", coverage, priorityRoadmap;
82239
82234
  var init_trends = __esm(() => {
82240
82235
  coverage = [
82241
82236
  {
@@ -84228,7 +84223,7 @@ function getAttributionHeader(fingerprint) {
84228
84223
  if (!isAttributionHeaderEnabled()) {
84229
84224
  return "";
84230
84225
  }
84231
- const version2 = `${"1.34.0"}.${fingerprint}`;
84226
+ const version2 = `${"1.35.1"}.${fingerprint}`;
84232
84227
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
84233
84228
  const cch = "";
84234
84229
  const workload = getWorkload();
@@ -139654,7 +139649,7 @@ async function* withRetry(getClient, operation, options2) {
139654
139649
  throw new CannotRetryError(error40, retryContext);
139655
139650
  }
139656
139651
  const handledCloudAuthError = handleAwsCredentialError(error40) || handleGcpCredentialError(error40);
139657
- if (!handledCloudAuthError && (!(error40 instanceof APIError) || !shouldRetry(error40))) {
139652
+ if (!handledCloudAuthError && !((error40 instanceof APIError || error40 instanceof APIConnectionError) && shouldRetry(error40))) {
139658
139653
  throw new CannotRetryError(error40, retryContext);
139659
139654
  }
139660
139655
  if (error40 instanceof APIError) {
@@ -191882,7 +191877,7 @@ function getTelemetryAttributes() {
191882
191877
  attributes["session.id"] = sessionId;
191883
191878
  }
191884
191879
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
191885
- attributes["app.version"] = "1.34.0";
191880
+ attributes["app.version"] = "1.35.1";
191886
191881
  }
191887
191882
  const oauthAccount = getOauthAccountInfo();
191888
191883
  if (oauthAccount) {
@@ -227267,7 +227262,7 @@ function getInstallationEnv() {
227267
227262
  return;
227268
227263
  }
227269
227264
  function getURCodeVersion() {
227270
- return "1.34.0";
227265
+ return "1.35.1";
227271
227266
  }
227272
227267
  async function getInstalledVSCodeExtensionVersion(command) {
227273
227268
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -230106,7 +230101,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
230106
230101
  const client2 = new Client({
230107
230102
  name: "ur",
230108
230103
  title: "UR",
230109
- version: "1.34.0",
230104
+ version: "1.35.1",
230110
230105
  description: "UR-AGENT autonomous engineering workflow engine",
230111
230106
  websiteUrl: PRODUCT_URL
230112
230107
  }, {
@@ -230460,7 +230455,7 @@ var init_client5 = __esm(() => {
230460
230455
  const client2 = new Client({
230461
230456
  name: "ur",
230462
230457
  title: "UR",
230463
- version: "1.34.0",
230458
+ version: "1.35.1",
230464
230459
  description: "UR-AGENT autonomous engineering workflow engine",
230465
230460
  websiteUrl: PRODUCT_URL
230466
230461
  }, {
@@ -240274,9 +240269,9 @@ async function assertMinVersion() {
240274
240269
  if (false) {}
240275
240270
  try {
240276
240271
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
240277
- if (versionConfig.minVersion && lt("1.34.0", versionConfig.minVersion)) {
240272
+ if (versionConfig.minVersion && lt("1.35.1", versionConfig.minVersion)) {
240278
240273
  console.error(`
240279
- It looks like your version of UR (${"1.34.0"}) needs an update.
240274
+ It looks like your version of UR (${"1.35.1"}) needs an update.
240280
240275
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
240281
240276
 
240282
240277
  To update, please run:
@@ -240492,7 +240487,7 @@ async function installGlobalPackage(specificVersion) {
240492
240487
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
240493
240488
  logEvent("tengu_auto_updater_lock_contention", {
240494
240489
  pid: process.pid,
240495
- currentVersion: "1.34.0"
240490
+ currentVersion: "1.35.1"
240496
240491
  });
240497
240492
  return "in_progress";
240498
240493
  }
@@ -240501,7 +240496,7 @@ async function installGlobalPackage(specificVersion) {
240501
240496
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
240502
240497
  logError2(new Error("Windows NPM detected in WSL environment"));
240503
240498
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
240504
- currentVersion: "1.34.0"
240499
+ currentVersion: "1.35.1"
240505
240500
  });
240506
240501
  console.error(`
240507
240502
  Error: Windows NPM detected in WSL
@@ -241036,7 +241031,7 @@ function detectLinuxGlobPatternWarnings() {
241036
241031
  }
241037
241032
  async function getDoctorDiagnostic() {
241038
241033
  const installationType = await getCurrentInstallationType();
241039
- const version2 = typeof MACRO !== "undefined" ? "1.34.0" : "unknown";
241034
+ const version2 = typeof MACRO !== "undefined" ? "1.35.1" : "unknown";
241040
241035
  const installationPath = await getInstallationPath();
241041
241036
  const invokedBinary = getInvokedBinary();
241042
241037
  const multipleInstallations = await detectMultipleInstallations();
@@ -241971,8 +241966,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
241971
241966
  const maxVersion = await getMaxVersion();
241972
241967
  if (maxVersion && gt(version2, maxVersion)) {
241973
241968
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
241974
- if (gte("1.34.0", maxVersion)) {
241975
- logForDebugging(`Native installer: current version ${"1.34.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
241969
+ if (gte("1.35.1", maxVersion)) {
241970
+ logForDebugging(`Native installer: current version ${"1.35.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
241976
241971
  logEvent("tengu_native_update_skipped_max_version", {
241977
241972
  latency_ms: Date.now() - startTime,
241978
241973
  max_version: maxVersion,
@@ -241983,7 +241978,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
241983
241978
  version2 = maxVersion;
241984
241979
  }
241985
241980
  }
241986
- if (!forceReinstall && version2 === "1.34.0" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
241981
+ if (!forceReinstall && version2 === "1.35.1" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
241987
241982
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
241988
241983
  logEvent("tengu_native_update_complete", {
241989
241984
  latency_ms: Date.now() - startTime,
@@ -338887,7 +338882,7 @@ function Feedback({
338887
338882
  platform: env2.platform,
338888
338883
  gitRepo: envInfo.isGit,
338889
338884
  terminal: env2.terminal,
338890
- version: "1.34.0",
338885
+ version: "1.35.1",
338891
338886
  transcript: normalizeMessagesForAPI(messages),
338892
338887
  errors: sanitizedErrors,
338893
338888
  lastApiRequest: getLastAPIRequest(),
@@ -339079,7 +339074,7 @@ function Feedback({
339079
339074
  ", ",
339080
339075
  env2.terminal,
339081
339076
  ", v",
339082
- "1.34.0"
339077
+ "1.35.1"
339083
339078
  ]
339084
339079
  }, undefined, true, undefined, this)
339085
339080
  ]
@@ -339185,7 +339180,7 @@ ${sanitizedDescription}
339185
339180
  ` + `**Environment Info**
339186
339181
  ` + `- Platform: ${env2.platform}
339187
339182
  ` + `- Terminal: ${env2.terminal}
339188
- ` + `- Version: ${"1.34.0"}
339183
+ ` + `- Version: ${"1.35.1"}
339189
339184
  ` + `- Feedback ID: ${feedbackId}
339190
339185
  ` + `
339191
339186
  **Errors**
@@ -342296,7 +342291,7 @@ function buildPrimarySection() {
342296
342291
  }, undefined, false, undefined, this);
342297
342292
  return [{
342298
342293
  label: "Version",
342299
- value: "1.34.0"
342294
+ value: "1.35.1"
342300
342295
  }, {
342301
342296
  label: "Session name",
342302
342297
  value: nameValue
@@ -343112,11 +343107,12 @@ function ModelPicker({
343112
343107
  const [thinkingEnabled, setThinkingEnabled] = import_react101.useState(() => appThinkingEnabled ?? shouldEnableThinkingByDefault());
343113
343108
  const [providerModelOptions, setProviderModelOptions] = import_react101.useState([]);
343114
343109
  const [pickerError, setPickerError] = import_react101.useState(null);
343115
- const currentProvider = getActiveProviderSettings(getSettingsForSource("userSettings") ?? {}).active ?? "ollama";
343110
+ const effectiveSettings = getInitialSettings();
343111
+ const currentProvider = getActiveProviderSettings(effectiveSettings).active ?? "ollama";
343116
343112
  import_react101.useEffect(() => {
343117
343113
  const controller = new AbortController;
343118
343114
  listModelsForProviderWithSource(currentProvider, {
343119
- settings: getSettingsForSource("userSettings") ?? undefined,
343115
+ settings: effectiveSettings,
343120
343116
  signal: controller.signal
343121
343117
  }).then((result) => {
343122
343118
  if (controller.signal.aborted)
@@ -343134,7 +343130,7 @@ function ModelPicker({
343134
343130
  setPickerError(error40 instanceof Error ? error40.message : String(error40));
343135
343131
  });
343136
343132
  return () => controller.abort();
343137
- }, [currentProvider]);
343133
+ }, [currentProvider, effectiveSettings]);
343138
343134
  const modelOptions = providerModelOptions;
343139
343135
  const optionsWithInitial = initial !== null && validateProviderModelPair(currentProvider, initial, {
343140
343136
  availableModels: modelOptions.map((option) => option.value)
@@ -345596,7 +345592,7 @@ function Config({
345596
345592
  }
345597
345593
  }, undefined, false, undefined, this)
345598
345594
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime177.jsxDEV(ChannelDowngradeDialog, {
345599
- currentVersion: "1.34.0",
345595
+ currentVersion: "1.35.1",
345600
345596
  onChoice: (choice) => {
345601
345597
  setShowSubmenu(null);
345602
345598
  setTabsHidden(false);
@@ -345608,7 +345604,7 @@ function Config({
345608
345604
  autoUpdatesChannel: "stable"
345609
345605
  };
345610
345606
  if (choice === "stay") {
345611
- newSettings.minimumVersion = "1.34.0";
345607
+ newSettings.minimumVersion = "1.35.1";
345612
345608
  }
345613
345609
  updateSettingsForSource("userSettings", newSettings);
345614
345610
  setSettingsData((prev_27) => ({
@@ -353678,7 +353674,7 @@ function HelpV2(t0) {
353678
353674
  let t6;
353679
353675
  if ($3[31] !== tabs) {
353680
353676
  t6 = /* @__PURE__ */ jsx_dev_runtime204.jsxDEV(Tabs, {
353681
- title: `UR v${"1.34.0"}`,
353677
+ title: `UR v${"1.35.1"}`,
353682
353678
  color: "professionalBlue",
353683
353679
  defaultTab: "general",
353684
353680
  children: tabs
@@ -354424,7 +354420,7 @@ function buildToolUseContext(tools, readFileStateCache) {
354424
354420
  async function handleInitialize(options2) {
354425
354421
  return {
354426
354422
  name: "ur-agent",
354427
- version: "1.34.0",
354423
+ version: "1.35.1",
354428
354424
  protocolVersion: "0.1.0",
354429
354425
  workspaceRoot: options2.cwd,
354430
354426
  capabilities: {
@@ -374548,7 +374544,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
374548
374544
  return [];
374549
374545
  }
374550
374546
  }
374551
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.34.0") {
374547
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.35.1") {
374552
374548
  if (process.env.USER_TYPE === "ant") {
374553
374549
  const changelog = "";
374554
374550
  if (changelog) {
@@ -374575,7 +374571,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.34.0")
374575
374571
  releaseNotes
374576
374572
  };
374577
374573
  }
374578
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.34.0") {
374574
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.35.1") {
374579
374575
  if (process.env.USER_TYPE === "ant") {
374580
374576
  const changelog = "";
374581
374577
  if (changelog) {
@@ -375745,7 +375741,7 @@ function getRecentActivitySync() {
375745
375741
  return cachedActivity;
375746
375742
  }
375747
375743
  function getLogoDisplayData() {
375748
- const version2 = process.env.DEMO_VERSION ?? "1.34.0";
375744
+ const version2 = process.env.DEMO_VERSION ?? "1.35.1";
375749
375745
  const serverUrl = getDirectConnectServerUrl();
375750
375746
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd2());
375751
375747
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -376534,7 +376530,7 @@ function LogoV2() {
376534
376530
  if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
376535
376531
  t2 = () => {
376536
376532
  const currentConfig = getGlobalConfig();
376537
- if (currentConfig.lastReleaseNotesSeen === "1.34.0") {
376533
+ if (currentConfig.lastReleaseNotesSeen === "1.35.1") {
376538
376534
  return;
376539
376535
  }
376540
376536
  saveGlobalConfig(_temp326);
@@ -377219,12 +377215,12 @@ function LogoV2() {
377219
377215
  return t41;
377220
377216
  }
377221
377217
  function _temp326(current) {
377222
- if (current.lastReleaseNotesSeen === "1.34.0") {
377218
+ if (current.lastReleaseNotesSeen === "1.35.1") {
377223
377219
  return current;
377224
377220
  }
377225
377221
  return {
377226
377222
  ...current,
377227
- lastReleaseNotesSeen: "1.34.0"
377223
+ lastReleaseNotesSeen: "1.35.1"
377228
377224
  };
377229
377225
  }
377230
377226
  function _temp243(s_0) {
@@ -394457,10 +394453,9 @@ async function connectProvider(provider, keyFlag) {
394457
394453
  if (alias === "provider") {
394458
394454
  return `No official login is configured for ${provider}.`;
394459
394455
  }
394460
- const enabled = enableExternalBridge(provider);
394461
394456
  const result = await launchProviderAuth(alias);
394462
394457
  return `${result.message}
394463
- ${enabled.message} It will run via the official ${def2.displayName} CLI.`;
394458
+ Once logged in, ${def2.displayName} runs via its official CLI. Select it with /model.`;
394464
394459
  }
394465
394460
  if (def2.envKey) {
394466
394461
  const key = keyFlag ?? await readStdinKey();
@@ -407586,7 +407581,7 @@ var init_code_index2 = __esm(() => {
407586
407581
 
407587
407582
  // node_modules/typescript/lib/typescript.js
407588
407583
  var require_typescript2 = __commonJS((exports, module) => {
407589
- 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";
407584
+ 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";
407590
407585
  /*! *****************************************************************************
407591
407586
  Copyright (c) Microsoft Corporation. All rights reserved.
407592
407587
  Licensed under the Apache License, Version 2.0 (the "License"); you may not use
@@ -593120,7 +593115,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
593120
593115
  smapsRollup,
593121
593116
  platform: process.platform,
593122
593117
  nodeVersion: process.version,
593123
- ccVersion: "1.34.0"
593118
+ ccVersion: "1.35.1"
593124
593119
  };
593125
593120
  }
593126
593121
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -593706,7 +593701,7 @@ var init_bridge_kick = __esm(() => {
593706
593701
  var call137 = async () => {
593707
593702
  return {
593708
593703
  type: "text",
593709
- value: "1.34.0"
593704
+ value: "1.35.1"
593710
593705
  };
593711
593706
  }, version2, version_default;
593712
593707
  var init_version = __esm(() => {
@@ -597558,7 +597553,7 @@ function ProviderPicker({
597558
597553
  if (!result.ok) {
597559
597554
  return;
597560
597555
  }
597561
- const saved = getActiveProviderSettings(getSettingsForSource("userSettings") ?? {});
597556
+ const saved = getActiveProviderSettings(getInitialSettings());
597562
597557
  setAppState((prev) => ({
597563
597558
  ...prev,
597564
597559
  provider: {
@@ -603776,7 +603771,7 @@ function generateHtmlReport(data, insights) {
603776
603771
  </html>`;
603777
603772
  }
603778
603773
  function buildExportData(data, insights, facets, remoteStats) {
603779
- const version3 = typeof MACRO !== "undefined" ? "1.34.0" : "unknown";
603774
+ const version3 = typeof MACRO !== "undefined" ? "1.35.1" : "unknown";
603780
603775
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
603781
603776
  const facets_summary = {
603782
603777
  total: facets.size,
@@ -608056,7 +608051,7 @@ var init_sessionStorage = __esm(() => {
608056
608051
  init_settings2();
608057
608052
  init_slowOperations();
608058
608053
  init_uuid();
608059
- VERSION5 = typeof MACRO !== "undefined" ? "1.34.0" : "unknown";
608054
+ VERSION5 = typeof MACRO !== "undefined" ? "1.35.1" : "unknown";
608060
608055
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
608061
608056
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
608062
608057
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -609261,7 +609256,7 @@ var init_filesystem = __esm(() => {
609261
609256
  });
609262
609257
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
609263
609258
  const nonce = randomBytes18(16).toString("hex");
609264
- return join200(getURTempDir(), "bundled-skills", "1.34.0", nonce);
609259
+ return join200(getURTempDir(), "bundled-skills", "1.35.1", nonce);
609265
609260
  });
609266
609261
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
609267
609262
  });
@@ -615550,7 +615545,7 @@ function computeFingerprint(messageText2, version3) {
615550
615545
  }
615551
615546
  function computeFingerprintFromMessages(messages) {
615552
615547
  const firstMessageText = extractFirstMessageText(messages);
615553
- return computeFingerprint(firstMessageText, "1.34.0");
615548
+ return computeFingerprint(firstMessageText, "1.35.1");
615554
615549
  }
615555
615550
  var FINGERPRINT_SALT = "59cf53e54c78";
615556
615551
  var init_fingerprint = () => {};
@@ -617417,7 +617412,7 @@ async function sideQuery(opts) {
617417
617412
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
617418
617413
  }
617419
617414
  const messageText2 = extractFirstUserMessageText(messages);
617420
- const fingerprint = computeFingerprint(messageText2, "1.34.0");
617415
+ const fingerprint = computeFingerprint(messageText2, "1.35.1");
617421
617416
  const attributionHeader = getAttributionHeader(fingerprint);
617422
617417
  const systemBlocks = [
617423
617418
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -621315,11 +621310,11 @@ function onChangeAppState({
621315
621310
  notifyPermissionModeChanged(newMode);
621316
621311
  }
621317
621312
  if (newState.mainLoopModel !== oldState.mainLoopModel && newState.mainLoopModel === null) {
621318
- updateSettingsForSource("userSettings", { model: undefined });
621313
+ updateSettingsForSource("localSettings", { model: undefined });
621319
621314
  setMainLoopModelOverride(null);
621320
621315
  }
621321
621316
  if (newState.mainLoopModel !== oldState.mainLoopModel && newState.mainLoopModel !== null) {
621322
- updateSettingsForSource("userSettings", { model: newState.mainLoopModel });
621317
+ updateSettingsForSource("localSettings", { model: newState.mainLoopModel });
621323
621318
  setMainLoopModelOverride(newState.mainLoopModel);
621324
621319
  }
621325
621320
  if (newState.expandedView !== oldState.expandedView) {
@@ -622154,7 +622149,7 @@ function buildSystemInitMessage(inputs) {
622154
622149
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
622155
622150
  apiKeySource: getURHQApiKeyWithSource().source,
622156
622151
  betas: getSdkBetas(),
622157
- ur_version: "1.34.0",
622152
+ ur_version: "1.35.1",
622158
622153
  output_style: outputStyle2,
622159
622154
  agents: inputs.agents.map((agent) => agent.agentType),
622160
622155
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -636782,7 +636777,7 @@ var init_useVoiceEnabled = __esm(() => {
636782
636777
  function getSemverPart(version3) {
636783
636778
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
636784
636779
  }
636785
- function useUpdateNotification(updatedVersion, initialVersion = "1.34.0") {
636780
+ function useUpdateNotification(updatedVersion, initialVersion = "1.35.1") {
636786
636781
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react226.useState(() => getSemverPart(initialVersion));
636787
636782
  if (!updatedVersion) {
636788
636783
  return null;
@@ -636831,7 +636826,7 @@ function AutoUpdater({
636831
636826
  return;
636832
636827
  }
636833
636828
  if (false) {}
636834
- const currentVersion = "1.34.0";
636829
+ const currentVersion = "1.35.1";
636835
636830
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
636836
636831
  let latestVersion = await getLatestVersion(channel);
636837
636832
  const isDisabled = isAutoUpdaterDisabled();
@@ -637060,12 +637055,12 @@ function NativeAutoUpdater({
637060
637055
  logEvent("tengu_native_auto_updater_start", {});
637061
637056
  try {
637062
637057
  const maxVersion = await getMaxVersion();
637063
- if (maxVersion && gt("1.34.0", maxVersion)) {
637058
+ if (maxVersion && gt("1.35.1", maxVersion)) {
637064
637059
  const msg = await getMaxVersionMessage();
637065
637060
  setMaxVersionIssue(msg ?? "affects your version");
637066
637061
  }
637067
637062
  const result = await installLatest(channel);
637068
- const currentVersion = "1.34.0";
637063
+ const currentVersion = "1.35.1";
637069
637064
  const latencyMs = Date.now() - startTime;
637070
637065
  if (result.lockFailed) {
637071
637066
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -637202,17 +637197,17 @@ function PackageManagerAutoUpdater(t0) {
637202
637197
  const maxVersion = await getMaxVersion();
637203
637198
  if (maxVersion && latest && gt(latest, maxVersion)) {
637204
637199
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
637205
- if (gte("1.34.0", maxVersion)) {
637206
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.34.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
637200
+ if (gte("1.35.1", maxVersion)) {
637201
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.35.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
637207
637202
  setUpdateAvailable(false);
637208
637203
  return;
637209
637204
  }
637210
637205
  latest = maxVersion;
637211
637206
  }
637212
- const hasUpdate = latest && !gte("1.34.0", latest) && !shouldSkipVersion(latest);
637207
+ const hasUpdate = latest && !gte("1.35.1", latest) && !shouldSkipVersion(latest);
637213
637208
  setUpdateAvailable(!!hasUpdate);
637214
637209
  if (hasUpdate) {
637215
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.34.0"} -> ${latest}`);
637210
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.35.1"} -> ${latest}`);
637216
637211
  }
637217
637212
  };
637218
637213
  $3[0] = t1;
@@ -637246,7 +637241,7 @@ function PackageManagerAutoUpdater(t0) {
637246
637241
  wrap: "truncate",
637247
637242
  children: [
637248
637243
  "currentVersion: ",
637249
- "1.34.0"
637244
+ "1.35.1"
637250
637245
  ]
637251
637246
  }, undefined, true, undefined, this);
637252
637247
  $3[3] = verbose;
@@ -649697,7 +649692,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
649697
649692
  project_dir: getOriginalCwd(),
649698
649693
  added_dirs: addedDirs
649699
649694
  },
649700
- version: "1.34.0",
649695
+ version: "1.35.1",
649701
649696
  output_style: {
649702
649697
  name: outputStyleName
649703
649698
  },
@@ -649780,7 +649775,7 @@ function StatusLineInner({
649780
649775
  const taskValues = Object.values(tasks2);
649781
649776
  const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
649782
649777
  const defaultStatusLineText = buildDefaultStatusBar({
649783
- version: "1.34.0",
649778
+ version: "1.35.1",
649784
649779
  providerLabel: providerRuntime.providerLabel,
649785
649780
  authMode: providerRuntime.authLabel,
649786
649781
  model: providerRuntime.model ?? renderModelName(mainLoopModel),
@@ -661268,7 +661263,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
661268
661263
  } catch {}
661269
661264
  const data = {
661270
661265
  trigger: trigger2,
661271
- version: "1.34.0",
661266
+ version: "1.35.1",
661272
661267
  platform: process.platform,
661273
661268
  transcript,
661274
661269
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -673152,7 +673147,7 @@ function WelcomeV2() {
673152
673147
  dimColor: true,
673153
673148
  children: [
673154
673149
  "v",
673155
- "1.34.0"
673150
+ "1.35.1"
673156
673151
  ]
673157
673152
  }, undefined, true, undefined, this)
673158
673153
  ]
@@ -674412,7 +674407,7 @@ function completeOnboarding() {
674412
674407
  saveGlobalConfig((current) => ({
674413
674408
  ...current,
674414
674409
  hasCompletedOnboarding: true,
674415
- lastOnboardingVersion: "1.34.0"
674410
+ lastOnboardingVersion: "1.35.1"
674416
674411
  }));
674417
674412
  }
674418
674413
  function showDialog(root2, renderer) {
@@ -679449,7 +679444,7 @@ function appendToLog(path24, message) {
679449
679444
  cwd: getFsImplementation().cwd(),
679450
679445
  userType: process.env.USER_TYPE,
679451
679446
  sessionId: getSessionId(),
679452
- version: "1.34.0"
679447
+ version: "1.35.1"
679453
679448
  };
679454
679449
  getLogWriter(path24).write(messageWithTimestamp);
679455
679450
  }
@@ -683543,8 +683538,8 @@ async function getEnvLessBridgeConfig() {
683543
683538
  }
683544
683539
  async function checkEnvLessBridgeMinVersion() {
683545
683540
  const cfg = await getEnvLessBridgeConfig();
683546
- if (cfg.min_version && lt("1.34.0", cfg.min_version)) {
683547
- return `Your version of UR (${"1.34.0"}) is too old for Remote Control.
683541
+ if (cfg.min_version && lt("1.35.1", cfg.min_version)) {
683542
+ return `Your version of UR (${"1.35.1"}) is too old for Remote Control.
683548
683543
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
683549
683544
  }
683550
683545
  return null;
@@ -684018,7 +684013,7 @@ async function initBridgeCore(params) {
684018
684013
  const rawApi = createBridgeApiClient({
684019
684014
  baseUrl,
684020
684015
  getAccessToken,
684021
- runnerVersion: "1.34.0",
684016
+ runnerVersion: "1.35.1",
684022
684017
  onDebug: logForDebugging,
684023
684018
  onAuth401,
684024
684019
  getTrustedDeviceToken
@@ -689700,7 +689695,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
689700
689695
  setCwd(cwd3);
689701
689696
  const server2 = new Server({
689702
689697
  name: "ur/tengu",
689703
- version: "1.34.0"
689698
+ version: "1.35.1"
689704
689699
  }, {
689705
689700
  capabilities: {
689706
689701
  tools: {}
@@ -691677,7 +691672,7 @@ async function update() {
691677
691672
  logEvent("tengu_update_check", {});
691678
691673
  const diagnostic = await getDoctorDiagnostic();
691679
691674
  const result = await checkUpgradeStatus({
691680
- currentVersion: "1.34.0",
691675
+ currentVersion: "1.35.1",
691681
691676
  packageName: UR_AGENT_PACKAGE_NAME,
691682
691677
  installationType: diagnostic.installationType,
691683
691678
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -692923,7 +692918,7 @@ ${customInstructions}` : customInstructions;
692923
692918
  }
692924
692919
  }
692925
692920
  logForDiagnosticsNoPII("info", "started", {
692926
- version: "1.34.0",
692921
+ version: "1.35.1",
692927
692922
  is_native_binary: isInBundledMode()
692928
692923
  });
692929
692924
  registerCleanup(async () => {
@@ -693709,7 +693704,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
693709
693704
  pendingHookMessages
693710
693705
  }, renderAndRun);
693711
693706
  }
693712
- }).version("1.34.0 (UR-AGENT)", "-v, --version", "Output the version number");
693707
+ }).version("1.35.1 (UR-AGENT)", "-v, --version", "Output the version number");
693713
693708
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
693714
693709
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
693715
693710
  if (canUserConfigureAdvisor()) {
@@ -693801,7 +693796,9 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
693801
693796
  if (false) {}
693802
693797
  if (false) {}
693803
693798
  const auth2 = program2.command("auth").description("Manage authentication").configureHelp(createSortedHelpConfig());
693804
- auth2.command("login").description("Sign in to your URHQ account").option("--email <email>", "Pre-populate email address on the login page").option("--sso", "Force SSO login flow").option("--console", "Use URHQ Console (API usage billing) instead of UR subscription").option("--urai", "Use UR subscription (default)").action(async ({
693799
+ auth2.command("login", {
693800
+ hidden: true
693801
+ }).description("Sign in to your URHQ account").option("--email <email>", "Pre-populate email address on the login page").option("--sso", "Force SSO login flow").option("--console", "Use URHQ Console (API usage billing) instead of UR subscription").option("--urai", "Use UR subscription (default)").action(async ({
693805
693802
  email: email3,
693806
693803
  sso,
693807
693804
  console: useConsole,
@@ -693823,7 +693820,9 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
693823
693820
  } = await Promise.resolve().then(() => (init_auth6(), exports_auth2));
693824
693821
  await authStatus2(opts);
693825
693822
  });
693826
- auth2.command("logout").description("Log out from your URHQ account").action(async () => {
693823
+ auth2.command("logout", {
693824
+ hidden: true
693825
+ }).description("Log out from your URHQ account").action(async () => {
693827
693826
  const {
693828
693827
  authLogout: authLogout2
693829
693828
  } = await Promise.resolve().then(() => (init_auth6(), exports_auth2));
@@ -693879,6 +693878,10 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
693879
693878
  } = await Promise.resolve().then(() => (init_providers2(), exports_providers));
693880
693879
  await configSetHandler2(key, value);
693881
693880
  });
693881
+ program2.command("connect [action] [provider]").description("Connect a provider account: subscription login (Codex, Claude, Gemini) or store an API key").option("--key <key>", "API key to store for an API provider").option("--json", "Output as JSON").action(async (action3, providerArg, opts) => {
693882
+ const args = [action3, providerArg, opts.key ? `--key ${quoteLocalCommandArg(opts.key)}` : undefined, opts.json ? "--json" : undefined].filter(Boolean).join(" ");
693883
+ await runLocalTextCommand(() => Promise.resolve().then(() => (init_connect(), exports_connect)), args);
693884
+ });
693882
693885
  const coworkOption = () => new Option("--cowork", "Use cowork_plugins directory").hideHelp();
693883
693886
  const pluginCmd = program2.command("plugin").alias("plugins").description("Manage UR plugins").configureHelp(createSortedHelpConfig());
693884
693887
  pluginCmd.command("validate <path>").description("Validate a plugin or marketplace manifest").addOption(coworkOption()).action(async (manifestPath5, options2) => {
@@ -693954,7 +693957,9 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
693954
693957
  } = await Promise.resolve().then(() => (init_plugins(), exports_plugins));
693955
693958
  await pluginUpdateHandler2(plugin2, options2);
693956
693959
  });
693957
- program2.command("setup-token").description("Set up a long-lived authentication token (requires UR subscription)").action(async () => {
693960
+ program2.command("setup-token", {
693961
+ hidden: true
693962
+ }).description("Set up a long-lived authentication token (requires UR subscription)").action(async () => {
693958
693963
  const [{
693959
693964
  setupTokenHandler: setupTokenHandler2
693960
693965
  }, {
@@ -694075,8 +694080,8 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
694075
694080
  const args = [action3, name, opts.objective ? `--objective ${quoteLocalCommandArg(opts.objective)}` : undefined, opts.workflow ? `--workflow ${quoteLocalCommandArg(opts.workflow)}` : undefined, opts.pattern ? `--pattern ${quoteLocalCommandArg(opts.pattern)}` : undefined, opts.note ? `--note ${quoteLocalCommandArg(opts.note)}` : undefined, opts.maxTurns ? `--max-turns ${opts.maxTurns}` : undefined, opts.dryRun ? "--dry-run" : undefined, opts.json ? "--json" : undefined].filter(Boolean).join(" ");
694076
694081
  await runLocalTextCommand(() => Promise.resolve().then(() => (init_goal(), exports_goal)), args);
694077
694082
  });
694078
- program2.command("spec [action] [name] [phase]").alias("specs").description("Spec-driven development: scaffold requirements/design/tasks in .ur/specs and drive execution task-by-task").option("--goal <text>", "Goal text for init").option("--all", "Run all open tasks, not just the next one").option("--dry-run", "Run offline without calling any model").option("--max-turns <n>", "Max agentic turns per task when running").option("--skip-permissions", "Pass --dangerously-skip-permissions to each task (sandboxes only)").option("--json", "Output as JSON").action(async (action3, name, phase, opts) => {
694079
- const args = [action3, name, phase, opts.goal ? `--goal ${quoteLocalCommandArg(opts.goal)}` : undefined, opts.all ? "--all" : undefined, opts.dryRun ? "--dry-run" : undefined, opts.maxTurns ? `--max-turns ${opts.maxTurns}` : undefined, opts.skipPermissions ? "--skip-permissions" : undefined, opts.json ? "--json" : undefined].filter(Boolean).join(" ");
694083
+ program2.command("spec [action] [name] [phase]").alias("specs").description("Spec-driven development: scaffold requirements/design/tasks in .ur/specs and drive execution task-by-task").option("--goal <text>", "Goal text for init").option("--all", "Run all open tasks, not just the next one").option("--dry-run", "Run offline without calling any model").option("--kernel", "Run tasks through the agent kernel loop").option("--max-turns <n>", "Max agentic turns per task when running").option("--skip-permissions", "Pass --dangerously-skip-permissions to each task (sandboxes only)").option("--json", "Output as JSON").action(async (action3, name, phase, opts) => {
694084
+ const args = [action3, name, phase, opts.goal ? `--goal ${quoteLocalCommandArg(opts.goal)}` : undefined, opts.all ? "--all" : undefined, opts.dryRun ? "--dry-run" : undefined, opts.kernel ? "--kernel" : undefined, opts.maxTurns ? `--max-turns ${opts.maxTurns}` : undefined, opts.skipPermissions ? "--skip-permissions" : undefined, opts.json ? "--json" : undefined].filter(Boolean).join(" ");
694080
694085
  await runLocalTextCommand(() => Promise.resolve().then(() => (init_spec2(), exports_spec2)), args);
694081
694086
  });
694082
694087
  program2.command("escalate [action] [task...]").description("Capability-aware local model escalation: run on a fast model and auto-escalate hard work to the oracle").option("--dry-run", "Run offline without calling any model").option("--force-oracle", "Start on the oracle regardless of difficulty").option("--fast <model>", "Pin the fast-tier model (policy)").option("--oracle <model>", "Pin the oracle-tier model (policy)").option("--auto <onoff>", "Enable/disable auto-escalation (policy): on|off").option("--max-turns <n>", "Max agentic turns when running").option("--skip-permissions", "Pass --dangerously-skip-permissions (sandboxes only)").option("--json", "Output as JSON").action(async (action3, task2 = [], opts) => {
@@ -694154,13 +694159,21 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
694154
694159
  await runLocalTextCommand(() => Promise.resolve().then(() => (init_repo_edit(), exports_repo_edit)), args);
694155
694160
  });
694156
694161
  program2.command("ide [action] [rest...]").description("Manage IDE integrations and inline diff bundles").option("--title <title>", "Title for captured inline diff bundle").option("--base <ref>", "Capture branch diff from this base ref").option("--staged", "Capture staged changes instead of unstaged changes").option("--feedback <text>", "Comment text for an IDE diff bundle").option("--file <path>", "File path for an inline diff comment").option("--line <line>", "Line number for an inline diff comment").option("--json", "Output as JSON").action(async (action3, rest = [], opts) => {
694157
- const {
694158
- runIdeDiffCommand: runIdeDiffCommand2
694159
- } = await Promise.resolve().then(() => (init_inlineDiffCommand(), exports_inlineDiffCommand));
694160
694162
  if (action3 === "open") {
694161
694163
  console.log("Use `/ide open` inside an interactive UR session, or use `ur ide diff ...` for inline diff bundles.");
694162
694164
  process.exit(0);
694163
694165
  }
694166
+ if (action3 === "status" || action3 === "doctor" || action3 === "config") {
694167
+ const {
694168
+ runIdeInfoCommand: runIdeInfoCommand2
694169
+ } = await Promise.resolve().then(() => (init_ideInfoCommand(), exports_ideInfoCommand));
694170
+ const args2 = [action3, ...rest, opts.json ? "--json" : undefined].filter(Boolean).join(" ");
694171
+ console.log(await runIdeInfoCommand2(args2));
694172
+ process.exit(0);
694173
+ }
694174
+ const {
694175
+ runIdeDiffCommand: runIdeDiffCommand2
694176
+ } = await Promise.resolve().then(() => (init_inlineDiffCommand(), exports_inlineDiffCommand));
694164
694177
  const command8 = action3 === "diff" || action3 === "diffs" ? [action3, ...rest] : ["diff", action3 ?? "list", ...rest];
694165
694178
  const args = [...command8, opts.title ? `--title ${quoteLocalCommandArg(opts.title)}` : undefined, opts.base ? `--base ${quoteLocalCommandArg(opts.base)}` : undefined, opts.staged ? "--staged" : undefined, opts.feedback ? `--feedback ${quoteLocalCommandArg(opts.feedback)}` : undefined, opts.file ? `--file ${quoteLocalCommandArg(opts.file)}` : undefined, opts.line ? `--line ${opts.line}` : undefined, opts.json ? "--json" : undefined].filter(Boolean).join(" ");
694166
694179
  console.log(await runIdeDiffCommand2(args));
@@ -694301,7 +694314,9 @@ ${describeClaims2(result.claims)}`);
694301
694314
  });
694302
694315
  if (false) {}
694303
694316
  if (false) {}
694304
- program2.command("install [target]").description("Install UR native build. Use [target] to specify version (stable, latest, or specific version)").option("--force", "Force installation even if already installed").action(async (target, options2) => {
694317
+ program2.command("install [target]", {
694318
+ hidden: true
694319
+ }).description("Install UR native build. Use [target] to specify version (stable, latest, or specific version)").option("--force", "Force installation even if already installed").action(async (target, options2) => {
694305
694320
  const {
694306
694321
  installHandler: installHandler2
694307
694322
  } = await Promise.resolve().then(() => (init_util4(), exports_util2));
@@ -694592,7 +694607,7 @@ if (false) {}
694592
694607
  async function main2() {
694593
694608
  const args = process.argv.slice(2);
694594
694609
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
694595
- console.log(`${"1.34.0"} (UR-AGENT)`);
694610
+ console.log(`${"1.35.1"} (UR-AGENT)`);
694596
694611
  return;
694597
694612
  }
694598
694613
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {