ur-agent 1.25.0 → 1.25.3

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
@@ -66884,7 +66884,7 @@ var init_auth = __esm(() => {
66884
66884
 
66885
66885
  // src/utils/userAgent.ts
66886
66886
  function getURCodeUserAgent() {
66887
- return `ur/${"1.25.0"}`;
66887
+ return `ur/${"1.25.3"}`;
66888
66888
  }
66889
66889
 
66890
66890
  // src/utils/workloadContext.ts
@@ -66906,7 +66906,7 @@ function getUserAgent() {
66906
66906
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
66907
66907
  const workload = getWorkload();
66908
66908
  const workloadSuffix = workload ? `, workload/${workload}` : "";
66909
- return `ur-cli/${"1.25.0"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
66909
+ return `ur-cli/${"1.25.3"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
66910
66910
  }
66911
66911
  function getMCPUserAgent() {
66912
66912
  const parts = [];
@@ -66920,7 +66920,7 @@ function getMCPUserAgent() {
66920
66920
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
66921
66921
  }
66922
66922
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
66923
- return `ur/${"1.25.0"}${suffix}`;
66923
+ return `ur/${"1.25.3"}${suffix}`;
66924
66924
  }
66925
66925
  function getWebFetchUserAgent() {
66926
66926
  return `UR-User (${getURCodeUserAgent()})`;
@@ -67058,7 +67058,7 @@ var init_user = __esm(() => {
67058
67058
  deviceId,
67059
67059
  sessionId: getSessionId(),
67060
67060
  email: getEmail(),
67061
- appVersion: "1.25.0",
67061
+ appVersion: "1.25.3",
67062
67062
  platform: getHostPlatformForAnalytics(),
67063
67063
  organizationUuid,
67064
67064
  accountUuid,
@@ -73575,7 +73575,7 @@ var init_metadata = __esm(() => {
73575
73575
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
73576
73576
  WHITESPACE_REGEX = /\s+/;
73577
73577
  getVersionBase = memoize_default(() => {
73578
- const match = "1.25.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
73578
+ const match = "1.25.3".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
73579
73579
  return match ? match[0] : undefined;
73580
73580
  });
73581
73581
  buildEnvContext = memoize_default(async () => {
@@ -73615,7 +73615,7 @@ var init_metadata = __esm(() => {
73615
73615
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
73616
73616
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
73617
73617
  isURAiAuth: isURAISubscriber2(),
73618
- version: "1.25.0",
73618
+ version: "1.25.3",
73619
73619
  versionBase: getVersionBase(),
73620
73620
  buildTime: "",
73621
73621
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -74285,7 +74285,7 @@ function initialize1PEventLogging() {
74285
74285
  const platform2 = getPlatform();
74286
74286
  const attributes = {
74287
74287
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
74288
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.25.0"
74288
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.25.3"
74289
74289
  };
74290
74290
  if (platform2 === "wsl") {
74291
74291
  const wslVersion = getWslVersion();
@@ -74312,7 +74312,7 @@ function initialize1PEventLogging() {
74312
74312
  })
74313
74313
  ]
74314
74314
  });
74315
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.25.0");
74315
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.25.3");
74316
74316
  }
74317
74317
  async function reinitialize1PEventLoggingIfConfigChanged() {
74318
74318
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -79578,7 +79578,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
79578
79578
  function formatA2AAgentCard(options = {}, pretty = true) {
79579
79579
  return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
79580
79580
  }
79581
- var urVersion = "1.25.0", coverage, priorityRoadmap;
79581
+ var urVersion = "1.25.3", coverage, priorityRoadmap;
79582
79582
  var init_trends = __esm(() => {
79583
79583
  coverage = [
79584
79584
  {
@@ -81570,7 +81570,7 @@ function getAttributionHeader(fingerprint) {
81570
81570
  if (!isAttributionHeaderEnabled()) {
81571
81571
  return "";
81572
81572
  }
81573
- const version2 = `${"1.25.0"}.${fingerprint}`;
81573
+ const version2 = `${"1.25.3"}.${fingerprint}`;
81574
81574
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
81575
81575
  const cch = "";
81576
81576
  const workload = getWorkload();
@@ -128897,7 +128897,7 @@ How to use the statusLine command:
128897
128897
  "project_dir": "string", // Project root directory path
128898
128898
  "added_dirs": ["string"] // Directories added via /add-dir
128899
128899
  },
128900
- "version": "string", // UR-AGENT app version (e.g., "1.25.0")
128900
+ "version": "string", // UR-AGENT app version (e.g., "1.25.3")
128901
128901
  "output_style": {
128902
128902
  "name": "string", // Output style name (e.g., "default", "Explanatory", "Learning")
128903
128903
  },
@@ -189239,7 +189239,7 @@ function getTelemetryAttributes() {
189239
189239
  attributes["session.id"] = sessionId;
189240
189240
  }
189241
189241
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
189242
- attributes["app.version"] = "1.25.0";
189242
+ attributes["app.version"] = "1.25.3";
189243
189243
  }
189244
189244
  const oauthAccount = getOauthAccountInfo();
189245
189245
  if (oauthAccount) {
@@ -224233,9 +224233,10 @@ var init_IdeOnboardingDialog = __esm(() => {
224233
224233
  });
224234
224234
 
224235
224235
  // src/utils/ide.ts
224236
+ import { writeFileSync as writeFileSync10 } from "fs";
224236
224237
  import { createConnection } from "net";
224237
224238
  import * as os3 from "os";
224238
- import { basename as basename12, join as join64, sep as pathSeparator, resolve as resolve19 } from "path";
224239
+ import { basename as basename12, dirname as dirname29, join as join64, sep as pathSeparator, resolve as resolve19 } from "path";
224239
224240
  function isProcessRunning2(pid) {
224240
224241
  try {
224241
224242
  process.kill(pid, 0);
@@ -224622,12 +224623,7 @@ async function installIDEExtension(ideType) {
224622
224623
  let version2 = await getInstalledVSCodeExtensionVersion(command);
224623
224624
  if (!version2 || lt(version2, getURCodeVersion())) {
224624
224625
  await sleep(500);
224625
- const result = await execFileNoThrowWithCwd(command, ["--force", "--install-extension", "urhq.ur"], {
224626
- env: getInstallationEnv()
224627
- });
224628
- if (result.code !== 0) {
224629
- throw new Error(`${result.code}: ${result.error} ${result.stderr}`);
224630
- }
224626
+ await installBundledVSCodeExtension(command);
224631
224627
  version2 = getURCodeVersion();
224632
224628
  }
224633
224629
  return version2;
@@ -224645,7 +224641,7 @@ function getInstallationEnv() {
224645
224641
  return;
224646
224642
  }
224647
224643
  function getURCodeVersion() {
224648
- return "1.25.0";
224644
+ return "1.25.3";
224649
224645
  }
224650
224646
  async function getInstalledVSCodeExtensionVersion(command) {
224651
224647
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -224655,12 +224651,122 @@ async function getInstalledVSCodeExtensionVersion(command) {
224655
224651
  `) || [];
224656
224652
  for (const line of lines) {
224657
224653
  const [extensionId, version2] = line.split("@");
224658
- if (extensionId === "urhq.ur" && version2) {
224654
+ if (extensionId === EXTENSION_ID && version2) {
224659
224655
  return version2;
224660
224656
  }
224661
224657
  }
224662
224658
  return null;
224663
224659
  }
224660
+ function findBundledVSCodeExtensionDir(invokedPath = process.argv[1] ?? "") {
224661
+ const fs3 = getFsImplementation();
224662
+ const starts = [
224663
+ invokedPath ? dirname29(resolve19(invokedPath)) : null,
224664
+ process.cwd()
224665
+ ].filter((value) => Boolean(value));
224666
+ for (const start of starts) {
224667
+ let current = start;
224668
+ for (let depth = 0;depth < 12; depth++) {
224669
+ const candidate = join64(current, BUNDLED_EXTENSION_RELATIVE_PATH);
224670
+ if (fs3.existsSync(join64(candidate, "package.json"))) {
224671
+ return candidate;
224672
+ }
224673
+ const parent = dirname29(current);
224674
+ if (parent === current)
224675
+ break;
224676
+ current = parent;
224677
+ }
224678
+ }
224679
+ return null;
224680
+ }
224681
+ function escapeXml2(value) {
224682
+ return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");
224683
+ }
224684
+ function buildContentTypesXml() {
224685
+ return `<?xml version="1.0" encoding="utf-8"?>
224686
+ <Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
224687
+ <Default Extension="json" ContentType="application/json"/>
224688
+ <Default Extension="js" ContentType="application/javascript"/>
224689
+ <Default Extension="svg" ContentType="image/svg+xml"/>
224690
+ <Default Extension="vsixmanifest" ContentType="text/xml"/>
224691
+ </Types>
224692
+ `;
224693
+ }
224694
+ function buildVsixManifest(manifest) {
224695
+ const categories = manifest.categories?.join(",") || "Other";
224696
+ const engine = manifest.engines?.vscode || "^1.92.0";
224697
+ return `<?xml version="1.0" encoding="utf-8"?>
224698
+ <PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011">
224699
+ <Metadata>
224700
+ <Identity Language="en-US" Id="${escapeXml2(manifest.name)}" Version="${escapeXml2(manifest.version)}" Publisher="${escapeXml2(manifest.publisher)}"/>
224701
+ <DisplayName>${escapeXml2(manifest.displayName ?? manifest.name)}</DisplayName>
224702
+ <Description xml:space="preserve">${escapeXml2(manifest.description ?? manifest.name)}</Description>
224703
+ <Categories>${escapeXml2(categories)}</Categories>
224704
+ <Properties>
224705
+ <Property Id="Microsoft.VisualStudio.Code.Engine" Value="${escapeXml2(engine)}"/>
224706
+ </Properties>
224707
+ </Metadata>
224708
+ <Installation>
224709
+ <InstallationTarget Id="Microsoft.VisualStudio.Code"/>
224710
+ </Installation>
224711
+ <Dependencies/>
224712
+ <Assets>
224713
+ <Asset Type="Microsoft.VisualStudio.Code.Manifest" Path="extension/package.json" Addressable="true"/>
224714
+ </Assets>
224715
+ </PackageManifest>
224716
+ `;
224717
+ }
224718
+ function collectExtensionFiles(dir, prefix = "") {
224719
+ const fs3 = getFsImplementation();
224720
+ const files = {};
224721
+ for (const entry of fs3.readdirSync(dir)) {
224722
+ if (entry.name === "node_modules" || entry.name === ".git")
224723
+ continue;
224724
+ const fullPath = join64(dir, entry.name);
224725
+ const relativePath = prefix ? `${prefix}/${entry.name}` : entry.name;
224726
+ if (entry.isDirectory()) {
224727
+ Object.assign(files, collectExtensionFiles(fullPath, relativePath));
224728
+ } else if (entry.isFile()) {
224729
+ files[`extension/${relativePath}`] = fs3.readFileBytesSync(fullPath);
224730
+ }
224731
+ }
224732
+ return files;
224733
+ }
224734
+ async function createBundledVSCodeExtensionVsix() {
224735
+ const extensionDir = findBundledVSCodeExtensionDir();
224736
+ if (!extensionDir) {
224737
+ throw new Error(`Bundled VS Code extension not found at ${BUNDLED_EXTENSION_RELATIVE_PATH}.`);
224738
+ }
224739
+ const fs3 = getFsImplementation();
224740
+ const manifestPath3 = join64(extensionDir, "package.json");
224741
+ const manifest = jsonParse(fs3.readFileSync(manifestPath3, { encoding: "utf8" }));
224742
+ if (!manifest?.name || !manifest.version || !manifest.publisher) {
224743
+ throw new Error(`Invalid VS Code extension manifest at ${manifestPath3}.`);
224744
+ }
224745
+ const { zipSync: zipSync2 } = await Promise.resolve().then(() => (init_esm8(), exports_esm));
224746
+ const encoder = new TextEncoder;
224747
+ const files = collectExtensionFiles(extensionDir);
224748
+ files["extension.vsixmanifest"] = encoder.encode(buildVsixManifest(manifest));
224749
+ files["[Content_Types].xml"] = encoder.encode(buildContentTypesXml());
224750
+ const tempVsixPath = join64(os3.tmpdir(), `ur-agent-${manifest.name}-${manifest.version}-${Date.now()}.vsix`);
224751
+ writeFileSync10(tempVsixPath, Buffer.from(zipSync2(files, { level: 6 })));
224752
+ return tempVsixPath;
224753
+ }
224754
+ async function installBundledVSCodeExtension(command) {
224755
+ const tempVsixPath = await createBundledVSCodeExtensionVsix();
224756
+ try {
224757
+ await sleep(500);
224758
+ const result = await execFileNoThrowWithCwd(command, ["--force", "--install-extension", tempVsixPath], {
224759
+ env: getInstallationEnv()
224760
+ });
224761
+ if (result.code !== 0) {
224762
+ throw new Error(`${result.code}: ${result.error} ${result.stderr}`);
224763
+ }
224764
+ } finally {
224765
+ try {
224766
+ await getFsImplementation().unlink(tempVsixPath);
224767
+ } catch {}
224768
+ }
224769
+ }
224664
224770
  function getVSCodeIDECommandByParentProcess() {
224665
224771
  try {
224666
224772
  const platform4 = getPlatform();
@@ -224942,7 +225048,7 @@ async function installFromArtifactory(command) {
224942
225048
  throw error40;
224943
225049
  }
224944
225050
  }
224945
- var ideOnboardingDialog = () => (init_IdeOnboardingDialog(), __toCommonJS(exports_IdeOnboardingDialog)), supportedIdeConfigs, isSupportedVSCodeTerminal, isSupportedJetBrainsTerminal, isSupportedTerminal, getWindowsUserProfile, currentIDESearch = null, EXTENSION_ID, cachedRunningIDEs = null, EDITOR_DISPLAY_NAMES, detectHostIP;
225051
+ var ideOnboardingDialog = () => (init_IdeOnboardingDialog(), __toCommonJS(exports_IdeOnboardingDialog)), supportedIdeConfigs, isSupportedVSCodeTerminal, isSupportedJetBrainsTerminal, isSupportedTerminal, getWindowsUserProfile, currentIDESearch = null, PUBLIC_EXTENSION_ID = "ur-agent.ur-inline-diffs", INTERNAL_EXTENSION_ID = "urhq.ur-internal", BUNDLED_EXTENSION_RELATIVE_PATH, EXTENSION_ID, cachedRunningIDEs = null, EDITOR_DISPLAY_NAMES, detectHostIP;
224946
225052
  var init_ide = __esm(() => {
224947
225053
  init_axios2();
224948
225054
  init_execa();
@@ -225117,7 +225223,8 @@ var init_ide = __esm(() => {
225117
225223
  logForDebugging("Unable to get Windows USERPROFILE via PowerShell - IDE detection may be incomplete");
225118
225224
  return;
225119
225225
  });
225120
- EXTENSION_ID = process.env.USER_TYPE === "ant" ? "urhq.ur-internal" : "urhq.ur";
225226
+ BUNDLED_EXTENSION_RELATIVE_PATH = join64("extensions", "vscode-ur-inline-diffs");
225227
+ EXTENSION_ID = process.env.USER_TYPE === "ant" ? INTERNAL_EXTENSION_ID : PUBLIC_EXTENSION_ID;
225121
225228
  EDITOR_DISPLAY_NAMES = {
225122
225229
  code: "VS Code",
225123
225230
  cursor: "Cursor",
@@ -226530,7 +226637,7 @@ function createLinkedTransportPair() {
226530
226637
 
226531
226638
  // src/services/mcp/client.ts
226532
226639
  import { mkdir as mkdir9, readFile as readFile11, unlink as unlink4, writeFile as writeFile7 } from "fs/promises";
226533
- import { dirname as dirname29, join as join65 } from "path";
226640
+ import { dirname as dirname30, join as join65 } from "path";
226534
226641
  function isMcpSessionExpiredError(error40) {
226535
226642
  const httpStatus = "code" in error40 ? error40.code : undefined;
226536
226643
  if (httpStatus !== 404) {
@@ -226563,7 +226670,7 @@ function setMcpAuthCacheEntry(serverId) {
226563
226670
  const cache3 = await getMcpAuthCache();
226564
226671
  cache3[serverId] = { timestamp: Date.now() };
226565
226672
  const cachePath = getMcpAuthCachePath();
226566
- await mkdir9(dirname29(cachePath), { recursive: true });
226673
+ await mkdir9(dirname30(cachePath), { recursive: true });
226567
226674
  await writeFile7(cachePath, jsonStringify(cache3));
226568
226675
  authCachePromise = null;
226569
226676
  }).catch(() => {});
@@ -227373,8 +227480,8 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
227373
227480
  const client2 = new Client({
227374
227481
  name: "ur",
227375
227482
  title: "UR",
227376
- version: "1.25.0",
227377
- description: "URHQ's agentic coding tool",
227483
+ version: "1.25.3",
227484
+ description: "UR-AGENT autonomous engineering workflow engine",
227378
227485
  websiteUrl: PRODUCT_URL
227379
227486
  }, {
227380
227487
  capabilities: {}
@@ -227727,8 +227834,8 @@ var init_client5 = __esm(() => {
227727
227834
  const client2 = new Client({
227728
227835
  name: "ur",
227729
227836
  title: "UR",
227730
- version: "1.25.0",
227731
- description: "URHQ's agentic coding tool",
227837
+ version: "1.25.3",
227838
+ description: "UR-AGENT autonomous engineering workflow engine",
227732
227839
  websiteUrl: PRODUCT_URL
227733
227840
  }, {
227734
227841
  capabilities: {
@@ -237540,9 +237647,9 @@ async function assertMinVersion() {
237540
237647
  if (false) {}
237541
237648
  try {
237542
237649
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
237543
- if (versionConfig.minVersion && lt("1.25.0", versionConfig.minVersion)) {
237650
+ if (versionConfig.minVersion && lt("1.25.3", versionConfig.minVersion)) {
237544
237651
  console.error(`
237545
- It looks like your version of UR (${"1.25.0"}) needs an update.
237652
+ It looks like your version of UR (${"1.25.3"}) needs an update.
237546
237653
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
237547
237654
 
237548
237655
  To update, please run:
@@ -237758,7 +237865,7 @@ async function installGlobalPackage(specificVersion) {
237758
237865
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
237759
237866
  logEvent("tengu_auto_updater_lock_contention", {
237760
237867
  pid: process.pid,
237761
- currentVersion: "1.25.0"
237868
+ currentVersion: "1.25.3"
237762
237869
  });
237763
237870
  return "in_progress";
237764
237871
  }
@@ -237767,7 +237874,7 @@ async function installGlobalPackage(specificVersion) {
237767
237874
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
237768
237875
  logError2(new Error("Windows NPM detected in WSL environment"));
237769
237876
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
237770
- currentVersion: "1.25.0"
237877
+ currentVersion: "1.25.3"
237771
237878
  });
237772
237879
  console.error(`
237773
237880
  Error: Windows NPM detected in WSL
@@ -238302,7 +238409,7 @@ function detectLinuxGlobPatternWarnings() {
238302
238409
  }
238303
238410
  async function getDoctorDiagnostic() {
238304
238411
  const installationType = await getCurrentInstallationType();
238305
- const version2 = typeof MACRO !== "undefined" ? "1.25.0" : "unknown";
238412
+ const version2 = typeof MACRO !== "undefined" ? "1.25.3" : "unknown";
238306
238413
  const installationPath = await getInstallationPath();
238307
238414
  const invokedBinary = getInvokedBinary();
238308
238415
  const multipleInstallations = await detectMultipleInstallations();
@@ -238974,7 +239081,7 @@ import {
238974
239081
  writeFile as writeFile13
238975
239082
  } from "fs/promises";
238976
239083
  import { homedir as homedir20 } from "os";
238977
- import { basename as basename15, delimiter as delimiter4, dirname as dirname30, join as join76, resolve as resolve21 } from "path";
239084
+ import { basename as basename15, delimiter as delimiter4, dirname as dirname31, join as join76, resolve as resolve21 } from "path";
238978
239085
  function getPlatform2() {
238979
239086
  const os4 = env2.platform;
238980
239087
  const arch = process.arch === "x64" ? "x64" : process.arch === "arm64" ? "arm64" : null;
@@ -239017,7 +239124,7 @@ async function getVersionPaths(version2) {
239017
239124
  const dirs = getBaseDirectories();
239018
239125
  const dirsToCreate = [dirs.versions, dirs.staging, dirs.locks];
239019
239126
  await Promise.all(dirsToCreate.map((dir) => mkdir11(dir, { recursive: true })));
239020
- const executableParentDir = dirname30(dirs.executable);
239127
+ const executableParentDir = dirname31(dirs.executable);
239021
239128
  await mkdir11(executableParentDir, { recursive: true });
239022
239129
  const installPath = join76(dirs.versions, version2);
239023
239130
  try {
@@ -239111,7 +239218,7 @@ async function tryWithVersionLock(versionFilePath, callback, retries = 0) {
239111
239218
  }
239112
239219
  }
239113
239220
  async function atomicMoveToInstallPath(stagedBinaryPath, installPath) {
239114
- await mkdir11(dirname30(installPath), { recursive: true });
239221
+ await mkdir11(dirname31(installPath), { recursive: true });
239115
239222
  const tempInstallPath = `${installPath}.tmp.${process.pid}.${Date.now()}`;
239116
239223
  try {
239117
239224
  await copyFile2(stagedBinaryPath, tempInstallPath);
@@ -239237,8 +239344,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
239237
239344
  const maxVersion = await getMaxVersion();
239238
239345
  if (maxVersion && gt(version2, maxVersion)) {
239239
239346
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
239240
- if (gte("1.25.0", maxVersion)) {
239241
- logForDebugging(`Native installer: current version ${"1.25.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
239347
+ if (gte("1.25.3", maxVersion)) {
239348
+ logForDebugging(`Native installer: current version ${"1.25.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
239242
239349
  logEvent("tengu_native_update_skipped_max_version", {
239243
239350
  latency_ms: Date.now() - startTime,
239244
239351
  max_version: maxVersion,
@@ -239249,7 +239356,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
239249
239356
  version2 = maxVersion;
239250
239357
  }
239251
239358
  }
239252
- if (!forceReinstall && version2 === "1.25.0" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
239359
+ if (!forceReinstall && version2 === "1.25.3" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
239253
239360
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
239254
239361
  logEvent("tengu_native_update_complete", {
239255
239362
  latency_ms: Date.now() - startTime,
@@ -239325,7 +239432,7 @@ async function updateSymlink(symlinkPath, targetPath) {
239325
239432
  const isWindows2 = platform4.startsWith("win32");
239326
239433
  if (isWindows2) {
239327
239434
  try {
239328
- const parentDir2 = dirname30(symlinkPath);
239435
+ const parentDir2 = dirname31(symlinkPath);
239329
239436
  await mkdir11(parentDir2, { recursive: true });
239330
239437
  let existingStats;
239331
239438
  try {
@@ -239371,7 +239478,7 @@ async function updateSymlink(symlinkPath, targetPath) {
239371
239478
  return false;
239372
239479
  }
239373
239480
  }
239374
- const parentDir = dirname30(symlinkPath);
239481
+ const parentDir = dirname31(symlinkPath);
239375
239482
  try {
239376
239483
  await mkdir11(parentDir, { recursive: true });
239377
239484
  logForDebugging(`Created directory ${parentDir} for symlink`);
@@ -239388,7 +239495,7 @@ async function updateSymlink(symlinkPath, targetPath) {
239388
239495
  if (symlinkExists) {
239389
239496
  try {
239390
239497
  const currentTarget = await readlink(symlinkPath);
239391
- const resolvedCurrentTarget = resolve21(dirname30(symlinkPath), currentTarget);
239498
+ const resolvedCurrentTarget = resolve21(dirname31(symlinkPath), currentTarget);
239392
239499
  const resolvedTargetPath = resolve21(targetPath);
239393
239500
  if (resolvedCurrentTarget === resolvedTargetPath) {
239394
239501
  return false;
@@ -239428,7 +239535,7 @@ async function checkInstall(force = false) {
239428
239535
  }
239429
239536
  const dirs = getBaseDirectories();
239430
239537
  const messages = [];
239431
- const localBinDir = dirname30(dirs.executable);
239538
+ const localBinDir = dirname31(dirs.executable);
239432
239539
  const resolvedLocalBinPath = resolve21(localBinDir);
239433
239540
  const platform4 = getPlatform2();
239434
239541
  const isWindows2 = platform4.startsWith("win32");
@@ -239452,7 +239559,7 @@ async function checkInstall(force = false) {
239452
239559
  } else {
239453
239560
  try {
239454
239561
  const target = await readlink(dirs.executable);
239455
- const absoluteTarget = resolve21(dirname30(dirs.executable), target);
239562
+ const absoluteTarget = resolve21(dirname31(dirs.executable), target);
239456
239563
  if (!await isPossibleURBinary(absoluteTarget)) {
239457
239564
  messages.push({
239458
239565
  message: `UR symlink points to missing or invalid binary: ${target}`,
@@ -239559,7 +239666,7 @@ async function installLatestImpl(channelOrVersion, forceReinstall = false) {
239559
239666
  async function getVersionFromSymlink(symlinkPath) {
239560
239667
  try {
239561
239668
  const target = await readlink(symlinkPath);
239562
- const absoluteTarget = resolve21(dirname30(symlinkPath), target);
239669
+ const absoluteTarget = resolve21(dirname31(symlinkPath), target);
239563
239670
  if (await isPossibleURBinary(absoluteTarget)) {
239564
239671
  return absoluteTarget;
239565
239672
  }
@@ -239654,7 +239761,7 @@ async function cleanupOldVersions() {
239654
239761
  const dirs = getBaseDirectories();
239655
239762
  const oneHourAgo = Date.now() - 3600000;
239656
239763
  if (getPlatform2().startsWith("win32")) {
239657
- const executableDir = dirname30(dirs.executable);
239764
+ const executableDir = dirname31(dirs.executable);
239658
239765
  try {
239659
239766
  const files = await readdir9(executableDir);
239660
239767
  let cleanedCount = 0;
@@ -247579,7 +247686,7 @@ __export(exports_teamHelpers, {
247579
247686
  cleanupSessionTeams: () => cleanupSessionTeams,
247580
247687
  addHiddenPaneId: () => addHiddenPaneId
247581
247688
  });
247582
- import { mkdirSync as mkdirSync11, readFileSync as readFileSync18, writeFileSync as writeFileSync10 } from "fs";
247689
+ import { mkdirSync as mkdirSync11, readFileSync as readFileSync18, writeFileSync as writeFileSync11 } from "fs";
247583
247690
  import { mkdir as mkdir14, readFile as readFile17, rm as rm4, writeFile as writeFile16 } from "fs/promises";
247584
247691
  import { join as join79 } from "path";
247585
247692
  function sanitizeName(name) {
@@ -247619,7 +247726,7 @@ async function readTeamFileAsync(teamName) {
247619
247726
  function writeTeamFile(teamName, teamFile) {
247620
247727
  const teamDir = getTeamDir(teamName);
247621
247728
  mkdirSync11(teamDir, { recursive: true });
247622
- writeFileSync10(getTeamFilePath(teamName), jsonStringify(teamFile, null, 2));
247729
+ writeFileSync11(getTeamFilePath(teamName), jsonStringify(teamFile, null, 2));
247623
247730
  }
247624
247731
  async function writeTeamFileAsync(teamName, teamFile) {
247625
247732
  const teamDir = getTeamDir(teamName);
@@ -262769,7 +262876,7 @@ import {
262769
262876
  stat as stat21,
262770
262877
  unlink as unlink10
262771
262878
  } from "fs/promises";
262772
- import { dirname as dirname31, isAbsolute as isAbsolute14, join as join80, relative as relative12 } from "path";
262879
+ import { dirname as dirname32, isAbsolute as isAbsolute14, join as join80, relative as relative12 } from "path";
262773
262880
  import { inspect as inspect3 } from "util";
262774
262881
  function fileHistoryEnabled() {
262775
262882
  if (getIsNonInteractiveSession()) {
@@ -263210,7 +263317,7 @@ async function createBackup(filePath, version2) {
263210
263317
  } catch (e) {
263211
263318
  if (!isENOENT(e))
263212
263319
  throw e;
263213
- await mkdir15(dirname31(backupPath), { recursive: true });
263320
+ await mkdir15(dirname32(backupPath), { recursive: true });
263214
263321
  await copyFile3(filePath, backupPath);
263215
263322
  }
263216
263323
  await chmod6(backupPath, srcStats.mode);
@@ -263242,7 +263349,7 @@ async function restoreBackup(filePath, backupFileName) {
263242
263349
  } catch (e) {
263243
263350
  if (!isENOENT(e))
263244
263351
  throw e;
263245
- await mkdir15(dirname31(filePath), { recursive: true });
263352
+ await mkdir15(dirname32(filePath), { recursive: true });
263246
263353
  await copyFile3(backupPath, filePath);
263247
263354
  }
263248
263355
  await chmod6(filePath, backupStats.mode);
@@ -281556,7 +281663,7 @@ var builders = null;
281556
281663
  import { realpath as realpath10 } from "fs/promises";
281557
281664
  import {
281558
281665
  basename as basename22,
281559
- dirname as dirname33,
281666
+ dirname as dirname34,
281560
281667
  isAbsolute as isAbsolute18,
281561
281668
  join as join89,
281562
281669
  sep as pathSep,
@@ -281779,7 +281886,7 @@ function isSkillFile(filePath) {
281779
281886
  function transformSkillFiles(files) {
281780
281887
  const filesByDir = new Map;
281781
281888
  for (const file2 of files) {
281782
- const dir = dirname33(file2.filePath);
281889
+ const dir = dirname34(file2.filePath);
281783
281890
  const dirFiles = filesByDir.get(dir) ?? [];
281784
281891
  dirFiles.push(file2);
281785
281892
  filesByDir.set(dir, dirFiles);
@@ -281808,15 +281915,15 @@ function buildNamespace(targetDir, baseDir) {
281808
281915
  return relativePath ? relativePath.split(pathSep).join(":") : "";
281809
281916
  }
281810
281917
  function getSkillCommandName(filePath, baseDir) {
281811
- const skillDirectory = dirname33(filePath);
281812
- const parentOfSkillDir = dirname33(skillDirectory);
281918
+ const skillDirectory = dirname34(filePath);
281919
+ const parentOfSkillDir = dirname34(skillDirectory);
281813
281920
  const commandBaseName = basename22(skillDirectory);
281814
281921
  const namespace = buildNamespace(parentOfSkillDir, baseDir);
281815
281922
  return namespace ? `${namespace}:${commandBaseName}` : commandBaseName;
281816
281923
  }
281817
281924
  function getRegularCommandName(filePath, baseDir) {
281818
281925
  const fileName = basename22(filePath);
281819
- const fileDirectory = dirname33(filePath);
281926
+ const fileDirectory = dirname34(filePath);
281820
281927
  const commandBaseName = fileName.replace(/\.md$/, "");
281821
281928
  const namespace = buildNamespace(fileDirectory, baseDir);
281822
281929
  return namespace ? `${namespace}:${commandBaseName}` : commandBaseName;
@@ -281839,7 +281946,7 @@ async function loadSkillsFromCommandsDir(cwd2) {
281839
281946
  } of processedFiles) {
281840
281947
  try {
281841
281948
  const isSkillFormat = isSkillFile(filePath);
281842
- const skillDirectory = isSkillFormat ? dirname33(filePath) : undefined;
281949
+ const skillDirectory = isSkillFormat ? dirname34(filePath) : undefined;
281843
281950
  const cmdName = getCommandName2({
281844
281951
  baseDir,
281845
281952
  filePath,
@@ -281891,7 +281998,7 @@ async function discoverSkillDirsForPaths(filePaths, cwd2) {
281891
281998
  const resolvedCwd = cwd2.endsWith(pathSep) ? cwd2.slice(0, -1) : cwd2;
281892
281999
  const newDirs = [];
281893
282000
  for (const filePath of filePaths) {
281894
- let currentDir = dirname33(filePath);
282001
+ let currentDir = dirname34(filePath);
281895
282002
  while (currentDir.startsWith(resolvedCwd + pathSep)) {
281896
282003
  const skillDir = join89(currentDir, ".ur", "skills");
281897
282004
  if (!dynamicSkillDirs.has(skillDir)) {
@@ -281905,7 +282012,7 @@ async function discoverSkillDirsForPaths(filePaths, cwd2) {
281905
282012
  newDirs.push(skillDir);
281906
282013
  } catch {}
281907
282014
  }
281908
- const parent = dirname33(currentDir);
282015
+ const parent = dirname34(currentDir);
281909
282016
  if (parent === currentDir)
281910
282017
  break;
281911
282018
  currentDir = parent;
@@ -282409,7 +282516,7 @@ var init_fileOperationAnalytics = __esm(() => {
282409
282516
 
282410
282517
  // src/utils/gitDiff.ts
282411
282518
  import { access as access5, readFile as readFile23 } from "fs/promises";
282412
- import { dirname as dirname34, join as join90, relative as relative16, sep as sep16 } from "path";
282519
+ import { dirname as dirname35, join as join90, relative as relative16, sep as sep16 } from "path";
282413
282520
  async function fetchGitDiff() {
282414
282521
  const isGit = await getIsGit();
282415
282522
  if (!isGit)
@@ -282593,7 +282700,7 @@ function parseShortstat(stdout) {
282593
282700
  };
282594
282701
  }
282595
282702
  async function fetchSingleFileGitDiff(absoluteFilePath) {
282596
- const gitRoot = findGitRoot(dirname34(absoluteFilePath));
282703
+ const gitRoot = findGitRoot(dirname35(absoluteFilePath));
282597
282704
  if (!gitRoot)
282598
282705
  return null;
282599
282706
  const gitPath = relative16(gitRoot, absoluteFilePath).split(sep16).join("/");
@@ -285716,7 +285823,7 @@ var init_UI8 = __esm(() => {
285716
285823
  });
285717
285824
 
285718
285825
  // src/tools/FileEditTool/FileEditTool.ts
285719
- import { dirname as dirname35, isAbsolute as isAbsolute19, sep as sep17 } from "path";
285826
+ import { dirname as dirname36, isAbsolute as isAbsolute19, sep as sep17 } from "path";
285720
285827
  function readFileForEdit(absoluteFilePath) {
285721
285828
  try {
285722
285829
  const meta = readFileSyncWithMetadata(absoluteFilePath);
@@ -286020,7 +286127,7 @@ String: ${old_string}`,
286020
286127
  activateConditionalSkillsForPaths([absoluteFilePath], cwd2);
286021
286128
  }
286022
286129
  await diagnosticTracker.beforeFileEdited(absoluteFilePath);
286023
- await fs4.mkdir(dirname35(absoluteFilePath));
286130
+ await fs4.mkdir(dirname36(absoluteFilePath));
286024
286131
  if (fileHistoryEnabled()) {
286025
286132
  await fileHistoryTrackEdit(updateFileHistoryState, absoluteFilePath, parentMessage?.uuid ?? "");
286026
286133
  }
@@ -286611,7 +286718,7 @@ var init_UI9 = __esm(() => {
286611
286718
  });
286612
286719
 
286613
286720
  // src/tools/FileWriteTool/FileWriteTool.ts
286614
- import { dirname as dirname36, sep as sep18 } from "path";
286721
+ import { dirname as dirname37, sep as sep18 } from "path";
286615
286722
  var inputSchema13, outputSchema10, FileWriteTool;
286616
286723
  var init_FileWriteTool = __esm(() => {
286617
286724
  init_analytics();
@@ -286751,7 +286858,7 @@ var init_FileWriteTool = __esm(() => {
286751
286858
  },
286752
286859
  async call({ file_path, content }, { readFileState, updateFileHistoryState, dynamicSkillDirTriggers }, _, parentMessage) {
286753
286860
  const fullFilePath = expandPath(file_path);
286754
- const dir = dirname36(fullFilePath);
286861
+ const dir = dirname37(fullFilePath);
286755
286862
  const cwd2 = getCwd2();
286756
286863
  const newSkillDirs = await discoverSkillDirsForPaths([fullFilePath], cwd2);
286757
286864
  if (newSkillDirs.length > 0) {
@@ -286893,7 +287000,7 @@ var init_FileWriteTool = __esm(() => {
286893
287000
  });
286894
287001
 
286895
287002
  // src/utils/plugins/orphanedPluginFilter.ts
286896
- import { dirname as dirname37, isAbsolute as isAbsolute21, join as join91, normalize as normalize11, relative as relative19, sep as sep19 } from "path";
287003
+ import { dirname as dirname38, isAbsolute as isAbsolute21, join as join91, normalize as normalize11, relative as relative19, sep as sep19 } from "path";
286897
287004
  async function getGlobExclusionsForPluginCache(searchPath) {
286898
287005
  const cachePath = normalize11(join91(getPluginsDirectory(), "cache"));
286899
287006
  if (searchPath && !pathsOverlap(searchPath, cachePath)) {
@@ -286913,7 +287020,7 @@ async function getGlobExclusionsForPluginCache(searchPath) {
286913
287020
  ORPHANED_AT_FILENAME
286914
287021
  ], cachePath, new AbortController().signal);
286915
287022
  cachedExclusions = markers.map((markerPath) => {
286916
- const versionDir = dirname37(markerPath);
287023
+ const versionDir = dirname38(markerPath);
286917
287024
  const rel = isAbsolute21(versionDir) ? relative19(cachePath, versionDir) : versionDir;
286918
287025
  const posixRelative = rel.replace(/\\/g, "/");
286919
287026
  return `!**/${posixRelative}/**`;
@@ -286943,12 +287050,12 @@ var init_orphanedPluginFilter = __esm(() => {
286943
287050
  });
286944
287051
 
286945
287052
  // src/utils/glob.ts
286946
- import { basename as basename24, dirname as dirname38, isAbsolute as isAbsolute22, join as join92, sep as sep20 } from "path";
287053
+ import { basename as basename24, dirname as dirname39, isAbsolute as isAbsolute22, join as join92, sep as sep20 } from "path";
286947
287054
  function extractGlobBaseDirectory(pattern) {
286948
287055
  const globChars = /[*?[{]/;
286949
287056
  const match = pattern.match(globChars);
286950
287057
  if (!match || match.index === undefined) {
286951
- const dir = dirname38(pattern);
287058
+ const dir = dirname39(pattern);
286952
287059
  const file2 = basename24(pattern);
286953
287060
  return { baseDir: dir, relativePattern: file2 };
286954
287061
  }
@@ -292810,7 +292917,7 @@ var init_embeddings = __esm(() => {
292810
292917
  // src/utils/codeIndex/store.ts
292811
292918
  import { createHash as createHash18 } from "crypto";
292812
292919
  import { mkdir as mkdir21, readFile as readFile25, writeFile as writeFile22 } from "fs/promises";
292813
- import { dirname as dirname39, join as join96 } from "path";
292920
+ import { dirname as dirname40, join as join96 } from "path";
292814
292921
  function codeIndexDir(root2) {
292815
292922
  return join96(root2, ".ur", "code-index");
292816
292923
  }
@@ -292858,7 +292965,7 @@ async function loadIndex(root2) {
292858
292965
  }
292859
292966
  async function saveIndex(root2, index2) {
292860
292967
  const path13 = indexPath(root2);
292861
- await mkdir21(dirname39(path13), { recursive: true });
292968
+ await mkdir21(dirname40(path13), { recursive: true });
292862
292969
  await writeFile22(path13, JSON.stringify(index2), { encoding: "utf-8" });
292863
292970
  }
292864
292971
  var init_store = () => {};
@@ -293159,7 +293266,7 @@ var init_indexer = __esm(() => {
293159
293266
  });
293160
293267
 
293161
293268
  // src/utils/codeIndex/graph.ts
293162
- import { existsSync as existsSync15, mkdirSync as mkdirSync12, readFileSync as readFileSync21, writeFileSync as writeFileSync11 } from "fs";
293269
+ import { existsSync as existsSync15, mkdirSync as mkdirSync12, readFileSync as readFileSync21, writeFileSync as writeFileSync12 } from "fs";
293163
293270
  import { posix as posix6, resolve as resolve32 } from "path";
293164
293271
  import { join as join97 } from "path";
293165
293272
  function matchAll2(text, regexes) {
@@ -293317,7 +293424,7 @@ async function buildCodeGraph(options2) {
293317
293424
  }
293318
293425
  const graph = buildGraphFromFiles(sources);
293319
293426
  mkdirSync12(join97(options2.root, ".ur", "code-index"), { recursive: true });
293320
- writeFileSync11(graphPath(options2.root), `${JSON.stringify(graph, null, 2)}
293427
+ writeFileSync12(graphPath(options2.root), `${JSON.stringify(graph, null, 2)}
293321
293428
  `);
293322
293429
  return graph;
293323
293430
  }
@@ -293368,7 +293475,7 @@ var init_graph = __esm(() => {
293368
293475
 
293369
293476
  // src/utils/codeIndex/repoIndex.ts
293370
293477
  import { createHash as createHash19 } from "crypto";
293371
- import { existsSync as existsSync16, mkdirSync as mkdirSync13, readFileSync as readFileSync22, writeFileSync as writeFileSync12 } from "fs";
293478
+ import { existsSync as existsSync16, mkdirSync as mkdirSync13, readFileSync as readFileSync22, writeFileSync as writeFileSync13 } from "fs";
293372
293479
  import { join as join98, posix as posix7 } from "path";
293373
293480
  function sha12(content) {
293374
293481
  return createHash19("sha1").update(content).digest("hex");
@@ -293681,17 +293788,17 @@ async function buildRepoIndex(options2) {
293681
293788
  const docs = { version: 1, builtAt: now5, docs: docEntries };
293682
293789
  const configs = { version: 1, builtAt: now5, configs: configEntries };
293683
293790
  mkdirSync13(repoIndexDir(options2.root), { recursive: true });
293684
- writeFileSync12(repoIndexPath(options2.root), `${JSON.stringify(repo, null, 2)}
293791
+ writeFileSync13(repoIndexPath(options2.root), `${JSON.stringify(repo, null, 2)}
293685
293792
  `);
293686
- writeFileSync12(symbolIndexPath(options2.root), `${JSON.stringify(symbols, null, 2)}
293793
+ writeFileSync13(symbolIndexPath(options2.root), `${JSON.stringify(symbols, null, 2)}
293687
293794
  `);
293688
- writeFileSync12(callIndexPath(options2.root), `${JSON.stringify(calls, null, 2)}
293795
+ writeFileSync13(callIndexPath(options2.root), `${JSON.stringify(calls, null, 2)}
293689
293796
  `);
293690
- writeFileSync12(testIndexPath(options2.root), `${JSON.stringify(tests, null, 2)}
293797
+ writeFileSync13(testIndexPath(options2.root), `${JSON.stringify(tests, null, 2)}
293691
293798
  `);
293692
- writeFileSync12(docIndexPath(options2.root), `${JSON.stringify(docs, null, 2)}
293799
+ writeFileSync13(docIndexPath(options2.root), `${JSON.stringify(docs, null, 2)}
293693
293800
  `);
293694
- writeFileSync12(configIndexPath(options2.root), `${JSON.stringify(configs, null, 2)}
293801
+ writeFileSync13(configIndexPath(options2.root), `${JSON.stringify(configs, null, 2)}
293695
293802
  `);
293696
293803
  return { repo, symbols, calls, tests, docs, configs };
293697
293804
  }
@@ -294112,7 +294219,7 @@ function normalizeQuestionOptionInput(value) {
294112
294219
  const option = objectValue3(value);
294113
294220
  if (!option)
294114
294221
  return value;
294115
- const label = typeof option.label === "string" && option.label.trim() ? option.label.trim() : typeof option.value === "string" && option.value.trim() ? option.value.trim() : "";
294222
+ const label = typeof option.label === "string" && option.label.trim() ? option.label.trim() : typeof option.value === "string" && option.value.trim() ? option.value.trim() : typeof option.description === "string" && option.description.trim() ? option.description.trim() : "";
294116
294223
  const description = typeof option.description === "string" && option.description.trim() ? option.description.trim() : label;
294117
294224
  if (!label || !description)
294118
294225
  return value;
@@ -308403,7 +308510,7 @@ var init_rootcause = __esm(() => {
308403
308510
 
308404
308511
  // src/stability/ledger.ts
308405
308512
  import { appendFileSync as appendFileSync4, existsSync as existsSync17, mkdirSync as mkdirSync14, readFileSync as readFileSync23 } from "fs";
308406
- import { dirname as dirname40, join as join100 } from "path";
308513
+ import { dirname as dirname41, join as join100 } from "path";
308407
308514
  function ledgerPath(cwd2) {
308408
308515
  return join100(cwd2, ".ur", "actions.jsonl");
308409
308516
  }
@@ -308431,7 +308538,7 @@ function filesFromArgs(args) {
308431
308538
  function recordAction(cwd2, record3) {
308432
308539
  try {
308433
308540
  const file2 = ledgerPath(cwd2);
308434
- mkdirSync14(dirname40(file2), { recursive: true });
308541
+ mkdirSync14(dirname41(file2), { recursive: true });
308435
308542
  appendFileSync4(file2, JSON.stringify(record3) + `
308436
308543
  `);
308437
308544
  } catch {}
@@ -316106,7 +316213,7 @@ var init_toolSearch = __esm(() => {
316106
316213
  // src/services/vcr.ts
316107
316214
  import { createHash as createHash21, randomUUID as randomUUID24 } from "crypto";
316108
316215
  import { mkdir as mkdir23, readFile as readFile31, writeFile as writeFile24 } from "fs/promises";
316109
- import { dirname as dirname41, join as join103 } from "path";
316216
+ import { dirname as dirname42, join as join103 } from "path";
316110
316217
  function shouldUseVCR() {
316111
316218
  if (false) {}
316112
316219
  if (process.env.USER_TYPE === "ant" && isEnvTruthy(process.env.FORCE_VCR)) {
@@ -316133,7 +316240,7 @@ async function withFixture(input, fixtureName, f) {
316133
316240
  throw new Error(`Fixture missing: ${filename}. Re-run tests with VCR_RECORD=1, then commit the result.`);
316134
316241
  }
316135
316242
  const result = await f();
316136
- await mkdir23(dirname41(filename), { recursive: true });
316243
+ await mkdir23(dirname42(filename), { recursive: true });
316137
316244
  await writeFile24(filename, jsonStringify(result, null, 2), {
316138
316245
  encoding: "utf8"
316139
316246
  });
@@ -316172,7 +316279,7 @@ ${jsonStringify(dehydratedInput, null, 2)}`);
316172
316279
  if (env2.isCI && !isEnvTruthy(process.env.VCR_RECORD)) {
316173
316280
  return results;
316174
316281
  }
316175
- await mkdir23(dirname41(filename), { recursive: true });
316282
+ await mkdir23(dirname42(filename), { recursive: true });
316176
316283
  await writeFile24(filename, jsonStringify({
316177
316284
  input: dehydratedInput,
316178
316285
  output: results.map((message, index2) => mapMessage(message, dehydrateValue, index2))
@@ -318246,7 +318353,7 @@ var init_findRelevantMemories = __esm(() => {
318246
318353
 
318247
318354
  // src/utils/attachments.ts
318248
318355
  import { readdir as readdir18, stat as stat32 } from "fs/promises";
318249
- import { dirname as dirname42, parse as parse12, relative as relative23, resolve as resolve33 } from "path";
318356
+ import { dirname as dirname43, parse as parse12, relative as relative23, resolve as resolve33 } from "path";
318250
318357
  import { randomUUID as randomUUID26 } from "crypto";
318251
318358
  async function getAttachments(input, toolUseContext, ideSelection, queuedCommands, messages, querySource, options2) {
318252
318359
  if (isEnvTruthy(process.env.UR_CODE_DISABLE_ATTACHMENTS) || isEnvTruthy(process.env.UR_CODE_SIMPLE)) {
@@ -318622,21 +318729,21 @@ async function getSelectedLinesFromIDE(ideSelection, toolUseContext) {
318622
318729
  ];
318623
318730
  }
318624
318731
  function getDirectoriesToProcess(targetPath, originalCwd) {
318625
- const targetDir = dirname42(resolve33(targetPath));
318732
+ const targetDir = dirname43(resolve33(targetPath));
318626
318733
  const nestedDirs = [];
318627
318734
  let currentDir = targetDir;
318628
318735
  while (currentDir !== originalCwd && currentDir !== parse12(currentDir).root) {
318629
318736
  if (currentDir.startsWith(originalCwd)) {
318630
318737
  nestedDirs.push(currentDir);
318631
318738
  }
318632
- currentDir = dirname42(currentDir);
318739
+ currentDir = dirname43(currentDir);
318633
318740
  }
318634
318741
  nestedDirs.reverse();
318635
318742
  const cwdLevelDirs = [];
318636
318743
  currentDir = originalCwd;
318637
318744
  while (currentDir !== parse12(currentDir).root) {
318638
318745
  cwdLevelDirs.push(currentDir);
318639
- currentDir = dirname42(currentDir);
318746
+ currentDir = dirname43(currentDir);
318640
318747
  }
318641
318748
  cwdLevelDirs.reverse();
318642
318749
  return { nestedDirs, cwdLevelDirs };
@@ -319882,21 +319989,21 @@ var init_attachments2 = __esm(() => {
319882
319989
  });
319883
319990
 
319884
319991
  // src/utils/plugins/loadPluginCommands.ts
319885
- import { basename as basename28, dirname as dirname43, join as join106 } from "path";
319992
+ import { basename as basename28, dirname as dirname44, join as join106 } from "path";
319886
319993
  function isSkillFile2(filePath) {
319887
319994
  return /^skill\.md$/i.test(basename28(filePath));
319888
319995
  }
319889
319996
  function getCommandNameFromFile(filePath, baseDir, pluginName) {
319890
319997
  const isSkill = isSkillFile2(filePath);
319891
319998
  if (isSkill) {
319892
- const skillDirectory = dirname43(filePath);
319893
- const parentOfSkillDir = dirname43(skillDirectory);
319999
+ const skillDirectory = dirname44(filePath);
320000
+ const parentOfSkillDir = dirname44(skillDirectory);
319894
320001
  const commandBaseName = basename28(skillDirectory);
319895
320002
  const relativePath = parentOfSkillDir.startsWith(baseDir) ? parentOfSkillDir.slice(baseDir.length).replace(/^\//, "") : "";
319896
320003
  const namespace = relativePath ? relativePath.split("/").join(":") : "";
319897
320004
  return namespace ? `${pluginName}:${namespace}:${commandBaseName}` : `${pluginName}:${commandBaseName}`;
319898
320005
  } else {
319899
- const fileDirectory = dirname43(filePath);
320006
+ const fileDirectory = dirname44(filePath);
319900
320007
  const commandBaseName = basename28(filePath).replace(/\.md$/, "");
319901
320008
  const relativePath = fileDirectory.startsWith(baseDir) ? fileDirectory.slice(baseDir.length).replace(/^\//, "") : "";
319902
320009
  const namespace = relativePath ? relativePath.split("/").join(":") : "";
@@ -319923,7 +320030,7 @@ async function collectMarkdownFiles(dirPath, baseDir, loadedPaths) {
319923
320030
  function transformPluginSkillFiles(files) {
319924
320031
  const filesByDir = new Map;
319925
320032
  for (const file2 of files) {
319926
- const dir = dirname43(file2.filePath);
320033
+ const dir = dirname44(file2.filePath);
319927
320034
  const dirFiles = filesByDir.get(dir) ?? [];
319928
320035
  dirFiles.push(file2);
319929
320036
  filesByDir.set(dir, dirFiles);
@@ -320012,7 +320119,7 @@ function createPluginCommand(commandName, file2, sourceName, pluginManifest, plu
320012
320119
  return displayName || commandName;
320013
320120
  },
320014
320121
  async getPromptForCommand(args, context3) {
320015
- let finalContent = config2.isSkillMode ? `Base directory for this skill: ${dirname43(file2.filePath)}
320122
+ let finalContent = config2.isSkillMode ? `Base directory for this skill: ${dirname44(file2.filePath)}
320016
320123
 
320017
320124
  ${content}` : content;
320018
320125
  finalContent = substituteArguments(finalContent, args, true, argumentNames);
@@ -320024,7 +320131,7 @@ ${content}` : content;
320024
320131
  finalContent = substituteUserConfigInContent(finalContent, loadPluginOptions(sourceName), pluginManifest.userConfig);
320025
320132
  }
320026
320133
  if (config2.isSkillMode) {
320027
- const rawSkillDir = dirname43(file2.filePath);
320134
+ const rawSkillDir = dirname44(file2.filePath);
320028
320135
  const skillDir = process.platform === "win32" ? rawSkillDir.replace(/\\/g, "/") : rawSkillDir;
320029
320136
  finalContent = finalContent.replace(/\$\{UR_SKILL_DIR\}/g, skillDir);
320030
320137
  }
@@ -320084,7 +320191,7 @@ async function loadSkillsFromDirectory(skillsPath, pluginName, sourceName, plugi
320084
320191
  const skillName = `${pluginName}:${basename28(skillsPath)}`;
320085
320192
  const file2 = {
320086
320193
  filePath: directSkillPath,
320087
- baseDir: dirname43(directSkillPath),
320194
+ baseDir: dirname44(directSkillPath),
320088
320195
  frontmatter,
320089
320196
  content: markdownContent
320090
320197
  };
@@ -320133,7 +320240,7 @@ async function loadSkillsFromDirectory(skillsPath, pluginName, sourceName, plugi
320133
320240
  const skillName = `${pluginName}:${entry.name}`;
320134
320241
  const file2 = {
320135
320242
  filePath: skillFilePath,
320136
- baseDir: dirname43(skillFilePath),
320243
+ baseDir: dirname44(skillFilePath),
320137
320244
  frontmatter,
320138
320245
  content: markdownContent
320139
320246
  };
@@ -320246,7 +320353,7 @@ var init_loadPluginCommands = __esm(() => {
320246
320353
  } : frontmatter;
320247
320354
  const file2 = {
320248
320355
  filePath: commandPath,
320249
- baseDir: dirname43(commandPath),
320356
+ baseDir: dirname44(commandPath),
320250
320357
  frontmatter: finalFrontmatter,
320251
320358
  content: markdownContent
320252
320359
  };
@@ -320509,7 +320616,7 @@ import {
320509
320616
  writeFile as writeFile25
320510
320617
  } from "fs/promises";
320511
320618
  import { tmpdir as tmpdir8 } from "os";
320512
- import { basename as basename30, dirname as dirname45, join as join108 } from "path";
320619
+ import { basename as basename30, dirname as dirname46, join as join108 } from "path";
320513
320620
  function isPluginZipCacheEnabled() {
320514
320621
  return isEnvTruthy(process.env.UR_CODE_PLUGIN_USE_ZIP_CACHE);
320515
320622
  }
@@ -320572,7 +320679,7 @@ async function cleanupSessionPluginCache() {
320572
320679
  }
320573
320680
  }
320574
320681
  async function atomicWriteToZipCache(targetPath, data) {
320575
- const dir = dirname45(targetPath);
320682
+ const dir = dirname46(targetPath);
320576
320683
  await getFsImplementation().mkdir(dir);
320577
320684
  const tmpName = `.${basename30(targetPath)}.tmp.${randomBytes11(4).toString("hex")}`;
320578
320685
  const tmpPath = join108(dir, tmpName);
@@ -320669,7 +320776,7 @@ async function extractZipToDirectory(zipPath, targetDir) {
320669
320776
  continue;
320670
320777
  }
320671
320778
  const fullPath = join108(targetDir, relPath);
320672
- await getFsImplementation().mkdir(dirname45(fullPath));
320779
+ await getFsImplementation().mkdir(dirname46(fullPath));
320673
320780
  await writeFile25(fullPath, data);
320674
320781
  const mode = modes[relPath];
320675
320782
  if (mode && mode & 73) {
@@ -321165,7 +321272,7 @@ var init_marketplaceHelpers = __esm(() => {
321165
321272
 
321166
321273
  // src/utils/plugins/officialMarketplaceGcs.ts
321167
321274
  import { chmod as chmod9, mkdir as mkdir25, readFile as readFile34, rename as rename4, rm as rm7, writeFile as writeFile27 } from "fs/promises";
321168
- import { dirname as dirname46, join as join110, resolve as resolve34, sep as sep22 } from "path";
321275
+ import { dirname as dirname47, join as join110, resolve as resolve34, sep as sep22 } from "path";
321169
321276
  async function fetchOfficialMarketplaceFromGcs(installLocation, marketplacesCacheDir) {
321170
321277
  if (!GCS_BASE) {
321171
321278
  return null;
@@ -321215,7 +321322,7 @@ async function fetchOfficialMarketplaceFromGcs(installLocation, marketplacesCach
321215
321322
  if (!rel || rel.endsWith("/"))
321216
321323
  continue;
321217
321324
  const dest = join110(staging, rel);
321218
- await mkdir25(dirname46(dest), { recursive: true });
321325
+ await mkdir25(dirname47(dest), { recursive: true });
321219
321326
  await writeFile27(dest, data);
321220
321327
  const mode = modes[arcPath];
321221
321328
  if (mode && mode & 73) {
@@ -321294,7 +321401,7 @@ var init_officialMarketplaceGcs = __esm(() => {
321294
321401
 
321295
321402
  // src/utils/plugins/marketplaceManager.ts
321296
321403
  import { writeFile as writeFile28 } from "fs/promises";
321297
- import { basename as basename31, dirname as dirname47, isAbsolute as isAbsolute25, join as join111, resolve as resolve35, sep as sep23 } from "path";
321404
+ import { basename as basename31, dirname as dirname48, isAbsolute as isAbsolute25, join as join111, resolve as resolve35, sep as sep23 } from "path";
321298
321405
  function getKnownMarketplacesFile() {
321299
321406
  return join111(getPluginsDirectory(), "known_marketplaces.json");
321300
321407
  }
@@ -321974,7 +322081,7 @@ async function loadAndCacheMarketplace(source, onProgress) {
321974
322081
  case "file": {
321975
322082
  const absPath = resolve35(source.path);
321976
322083
  marketplacePath = absPath;
321977
- temporaryCachePath = dirname47(dirname47(absPath));
322084
+ temporaryCachePath = dirname48(dirname48(absPath));
321978
322085
  cleanupNeeded = false;
321979
322086
  break;
321980
322087
  }
@@ -321989,7 +322096,7 @@ async function loadAndCacheMarketplace(source, onProgress) {
321989
322096
  temporaryCachePath = join111(cacheDir, source.name);
321990
322097
  marketplacePath = join111(temporaryCachePath, ".ur-plugin", "marketplace.json");
321991
322098
  cleanupNeeded = false;
321992
- await fs4.mkdir(dirname47(marketplacePath));
322099
+ await fs4.mkdir(dirname48(marketplacePath));
321993
322100
  await writeFile28(marketplacePath, jsonStringify({
321994
322101
  name: source.name,
321995
322102
  owner: source.owner ?? { name: "settings" },
@@ -322484,7 +322591,7 @@ var init_marketplaceManager = __esm(() => {
322484
322591
  });
322485
322592
 
322486
322593
  // src/utils/plugins/installedPluginsManager.ts
322487
- import { dirname as dirname48, join as join112 } from "path";
322594
+ import { dirname as dirname49, join as join112 } from "path";
322488
322595
  function getInstalledPluginsFilePath() {
322489
322596
  return join112(getPluginsDirectory(), "installed_plugins.json");
322490
322597
  }
@@ -323050,7 +323157,7 @@ var init_pluginVersioning = __esm(() => {
323050
323157
  // src/utils/plugins/pluginInstallationHelpers.ts
323051
323158
  import { randomBytes as randomBytes12 } from "crypto";
323052
323159
  import { rename as rename5, rm as rm8 } from "fs/promises";
323053
- import { dirname as dirname49, join as join113, resolve as resolve36, sep as sep24 } from "path";
323160
+ import { dirname as dirname50, join as join113, resolve as resolve36, sep as sep24 } from "path";
323054
323161
  function getCurrentTimestamp() {
323055
323162
  return new Date().toISOString();
323056
323163
  }
@@ -323074,14 +323181,14 @@ async function cacheAndRegisterPlugin(pluginId, entry, scope = "user", projectPa
323074
323181
  const versionedPath = getVersionedCachePath(pluginId, version2);
323075
323182
  let finalPath = cacheResult.path;
323076
323183
  if (cacheResult.path !== versionedPath) {
323077
- await getFsImplementation().mkdir(dirname49(versionedPath));
323184
+ await getFsImplementation().mkdir(dirname50(versionedPath));
323078
323185
  await rm8(versionedPath, { recursive: true, force: true });
323079
323186
  const normalizedCachePath = cacheResult.path.endsWith(sep24) ? cacheResult.path : cacheResult.path + sep24;
323080
323187
  const isSubdirectory = versionedPath.startsWith(normalizedCachePath);
323081
323188
  if (isSubdirectory) {
323082
- const tempPath = join113(dirname49(cacheResult.path), `.ur-plugin-temp-${Date.now()}-${randomBytes12(4).toString("hex")}`);
323189
+ const tempPath = join113(dirname50(cacheResult.path), `.ur-plugin-temp-${Date.now()}-${randomBytes12(4).toString("hex")}`);
323083
323190
  await rename5(cacheResult.path, tempPath);
323084
- await getFsImplementation().mkdir(dirname49(versionedPath));
323191
+ await getFsImplementation().mkdir(dirname50(versionedPath));
323085
323192
  await rename5(tempPath, versionedPath);
323086
323193
  } else {
323087
323194
  await rename5(cacheResult.path, versionedPath);
@@ -323310,7 +323417,7 @@ import {
323310
323417
  stat as stat35,
323311
323418
  symlink as symlink3
323312
323419
  } from "fs/promises";
323313
- import { basename as basename32, dirname as dirname50, join as join114, relative as relative24, resolve as resolve37, sep as sep25 } from "path";
323420
+ import { basename as basename32, dirname as dirname51, join as join114, relative as relative24, resolve as resolve37, sep as sep25 } from "path";
323314
323421
  function getPluginCachePath() {
323315
323422
  return join114(getPluginsDirectory(), "cache");
323316
323423
  }
@@ -323340,7 +323447,7 @@ async function probeSeedCache(pluginId, version2) {
323340
323447
  }
323341
323448
  async function probeSeedCacheAnyVersion(pluginId) {
323342
323449
  for (const seedDir of getPluginSeedDirs()) {
323343
- const pluginDir = dirname50(getVersionedCachePathIn(seedDir, pluginId, "_"));
323450
+ const pluginDir = dirname51(getVersionedCachePathIn(seedDir, pluginId, "_"));
323344
323451
  try {
323345
323452
  const versions2 = await readdir21(pluginDir);
323346
323453
  if (versions2.length !== 1)
@@ -323382,7 +323489,7 @@ async function copyDir(src, dest) {
323382
323489
  if (resolvedTarget.startsWith(srcPrefix) || resolvedTarget === resolvedSrc) {
323383
323490
  const targetRelativeToSrc = relative24(resolvedSrc, resolvedTarget);
323384
323491
  const destTargetPath = join114(dest, targetRelativeToSrc);
323385
- const relativeLinkPath = relative24(dirname50(destPath), destTargetPath);
323492
+ const relativeLinkPath = relative24(dirname51(destPath), destTargetPath);
323386
323493
  await symlink3(relativeLinkPath, destPath);
323387
323494
  } else {
323388
323495
  await symlink3(resolvedTarget, destPath);
@@ -323413,7 +323520,7 @@ async function copyPluginToVersionedCache(sourcePath, pluginId, version2, entry,
323413
323520
  logForDebugging(`Using seed cache for ${pluginId}@${version2} at ${seedPath}`);
323414
323521
  return seedPath;
323415
323522
  }
323416
- await getFsImplementation().mkdir(dirname50(cachePath));
323523
+ await getFsImplementation().mkdir(dirname51(cachePath));
323417
323524
  if (entry && typeof entry.source === "string" && marketplaceDir) {
323418
323525
  const sourceDir = validatePathWithinBase(marketplaceDir, entry.source);
323419
323526
  logForDebugging(`Copying source directory ${entry.source} for plugin ${pluginId}`);
@@ -331711,7 +331818,7 @@ __export(exports_terminalSetup, {
331711
331818
  import { randomBytes as randomBytes14 } from "crypto";
331712
331819
  import { copyFile as copyFile8, mkdir as mkdir26, readFile as readFile36, writeFile as writeFile29 } from "fs/promises";
331713
331820
  import { homedir as homedir25, platform as platform4 } from "os";
331714
- import { dirname as dirname51, join as join117 } from "path";
331821
+ import { dirname as dirname52, join as join117 } from "path";
331715
331822
  import { pathToFileURL as pathToFileURL7 } from "url";
331716
331823
  function isVSCodeRemoteSSH() {
331717
331824
  const askpassMain = process.env.VSCODE_GIT_ASKPASS_MAIN ?? "";
@@ -332033,7 +332140,7 @@ chars = "\\u001B\\r"`;
332033
332140
  return `${color("warning", theme)("Error backing up existing Alacritty config. Bailing out.")}${EOL5}${source_default.dim(`See ${formatPathLink(configPath)}`)}${EOL5}${source_default.dim(`Backup path: ${formatPathLink(backupPath)}`)}${EOL5}`;
332034
332141
  }
332035
332142
  } else {
332036
- await mkdir26(dirname51(configPath), {
332143
+ await mkdir26(dirname52(configPath), {
332037
332144
  recursive: true
332038
332145
  });
332039
332146
  }
@@ -334476,7 +334583,7 @@ var init_TextInput = __esm(() => {
334476
334583
  });
334477
334584
 
334478
334585
  // src/utils/suggestions/directoryCompletion.ts
334479
- import { basename as basename36, dirname as dirname52, join as join120, sep as sep26 } from "path";
334586
+ import { basename as basename36, dirname as dirname53, join as join120, sep as sep26 } from "path";
334480
334587
  function parsePartialPath(partialPath, basePath) {
334481
334588
  if (!partialPath) {
334482
334589
  const directory2 = basePath || getCwd2();
@@ -334486,7 +334593,7 @@ function parsePartialPath(partialPath, basePath) {
334486
334593
  if (partialPath.endsWith("/") || partialPath.endsWith(sep26)) {
334487
334594
  return { directory: resolved, prefix: "" };
334488
334595
  }
334489
- const directory = dirname52(resolved);
334596
+ const directory = dirname53(resolved);
334490
334597
  const prefix = basename36(partialPath);
334491
334598
  return { directory, prefix };
334492
334599
  }
@@ -336161,7 +336268,7 @@ function Feedback({
336161
336268
  platform: env2.platform,
336162
336269
  gitRepo: envInfo.isGit,
336163
336270
  terminal: env2.terminal,
336164
- version: "1.25.0",
336271
+ version: "1.25.3",
336165
336272
  transcript: normalizeMessagesForAPI(messages),
336166
336273
  errors: sanitizedErrors,
336167
336274
  lastApiRequest: getLastAPIRequest(),
@@ -336353,7 +336460,7 @@ function Feedback({
336353
336460
  ", ",
336354
336461
  env2.terminal,
336355
336462
  ", v",
336356
- "1.25.0"
336463
+ "1.25.3"
336357
336464
  ]
336358
336465
  }, undefined, true, undefined, this)
336359
336466
  ]
@@ -336459,7 +336566,7 @@ ${sanitizedDescription}
336459
336566
  ` + `**Environment Info**
336460
336567
  ` + `- Platform: ${env2.platform}
336461
336568
  ` + `- Terminal: ${env2.terminal}
336462
- ` + `- Version: ${"1.25.0"}
336569
+ ` + `- Version: ${"1.25.3"}
336463
336570
  ` + `- Feedback ID: ${feedbackId}
336464
336571
  ` + `
336465
336572
  **Errors**
@@ -339570,7 +339677,7 @@ function buildPrimarySection() {
339570
339677
  }, undefined, false, undefined, this);
339571
339678
  return [{
339572
339679
  label: "Version",
339573
- value: "1.25.0"
339680
+ value: "1.25.3"
339574
339681
  }, {
339575
339682
  label: "Session name",
339576
339683
  value: nameValue
@@ -342848,7 +342955,7 @@ function Config({
342848
342955
  }
342849
342956
  }, undefined, false, undefined, this)
342850
342957
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime177.jsxDEV(ChannelDowngradeDialog, {
342851
- currentVersion: "1.25.0",
342958
+ currentVersion: "1.25.3",
342852
342959
  onChoice: (choice) => {
342853
342960
  setShowSubmenu(null);
342854
342961
  setTabsHidden(false);
@@ -342860,7 +342967,7 @@ function Config({
342860
342967
  autoUpdatesChannel: "stable"
342861
342968
  };
342862
342969
  if (choice === "stay") {
342863
- newSettings.minimumVersion = "1.25.0";
342970
+ newSettings.minimumVersion = "1.25.3";
342864
342971
  }
342865
342972
  updateSettingsForSource("userSettings", newSettings);
342866
342973
  setSettingsData((prev_27) => ({
@@ -350930,7 +351037,7 @@ function HelpV2(t0) {
350930
351037
  let t6;
350931
351038
  if ($3[31] !== tabs) {
350932
351039
  t6 = /* @__PURE__ */ jsx_dev_runtime204.jsxDEV(Tabs, {
350933
- title: `UR v${"1.25.0"}`,
351040
+ title: `UR v${"1.25.3"}`,
350934
351041
  color: "professionalBlue",
350935
351042
  defaultTab: "general",
350936
351043
  children: tabs
@@ -351244,7 +351351,7 @@ var init_IdeAutoConnectDialog = __esm(() => {
351244
351351
  });
351245
351352
 
351246
351353
  // src/services/agents/ideDiffs.ts
351247
- import { existsSync as existsSync18, mkdirSync as mkdirSync15, readFileSync as readFileSync24, rmSync as rmSync3, writeFileSync as writeFileSync13 } from "fs";
351354
+ import { existsSync as existsSync18, mkdirSync as mkdirSync15, readFileSync as readFileSync24, rmSync as rmSync3, writeFileSync as writeFileSync14 } from "fs";
351248
351355
  import { join as join127 } from "path";
351249
351356
  function ideDir(cwd2) {
351250
351357
  return join127(cwd2, ".ur", "ide");
@@ -351277,7 +351384,7 @@ function loadManifest2(cwd2) {
351277
351384
  }
351278
351385
  function saveManifest2(cwd2, manifest) {
351279
351386
  ensureDirs2(cwd2);
351280
- writeFileSync13(manifestPath3(cwd2), `${JSON.stringify(manifest, null, 2)}
351387
+ writeFileSync14(manifestPath3(cwd2), `${JSON.stringify(manifest, null, 2)}
351281
351388
  `);
351282
351389
  }
351283
351390
  function nextId(manifest) {
@@ -351372,8 +351479,8 @@ async function createIdeDiffBundle(cwd2, options2 = {}) {
351372
351479
  createdAt,
351373
351480
  updatedAt: createdAt
351374
351481
  };
351375
- writeFileSync13(join127(ideDiffsDir(cwd2), patchFile), captured.diff);
351376
- writeFileSync13(join127(ideDiffsDir(cwd2), metadataFile), `${JSON.stringify(bundle, null, 2)}
351482
+ writeFileSync14(join127(ideDiffsDir(cwd2), patchFile), captured.diff);
351483
+ writeFileSync14(join127(ideDiffsDir(cwd2), metadataFile), `${JSON.stringify(bundle, null, 2)}
351377
351484
  `);
351378
351485
  manifest.diffs.push(bundle);
351379
351486
  saveManifest2(cwd2, manifest);
@@ -351400,7 +351507,7 @@ function mutate(cwd2, id, fn) {
351400
351507
  fn(bundle);
351401
351508
  bundle.updatedAt = now5();
351402
351509
  ensureDirs2(cwd2);
351403
- writeFileSync13(join127(ideDiffsDir(cwd2), bundle.metadataFile), `${JSON.stringify(bundle, null, 2)}
351510
+ writeFileSync14(join127(ideDiffsDir(cwd2), bundle.metadataFile), `${JSON.stringify(bundle, null, 2)}
351404
351511
  `);
351405
351512
  saveManifest2(cwd2, manifest);
351406
351513
  return bundle;
@@ -352675,7 +352782,7 @@ __export(exports_keybindings, {
352675
352782
  call: () => call24
352676
352783
  });
352677
352784
  import { mkdir as mkdir31, writeFile as writeFile34 } from "fs/promises";
352678
- import { dirname as dirname54 } from "path";
352785
+ import { dirname as dirname55 } from "path";
352679
352786
  async function call24() {
352680
352787
  if (!isKeybindingCustomizationEnabled()) {
352681
352788
  return {
@@ -352685,7 +352792,7 @@ async function call24() {
352685
352792
  }
352686
352793
  const keybindingsPath = getKeybindingsPath();
352687
352794
  let fileExists = false;
352688
- await mkdir31(dirname54(keybindingsPath), { recursive: true });
352795
+ await mkdir31(dirname55(keybindingsPath), { recursive: true });
352689
352796
  try {
352690
352797
  await writeFile34(keybindingsPath, generateKeybindingsTemplate(), {
352691
352798
  encoding: "utf-8",
@@ -363597,7 +363704,7 @@ var init_DiscoverPlugins = __esm(() => {
363597
363704
  });
363598
363705
 
363599
363706
  // src/services/plugins/pluginOperations.ts
363600
- import { dirname as dirname55, join as join130 } from "path";
363707
+ import { dirname as dirname56, join as join130 } from "path";
363601
363708
  function assertInstallableScope(scope) {
363602
363709
  if (!VALID_INSTALLABLE_SCOPES.includes(scope)) {
363603
363710
  throw new Error(`Invalid scope "${scope}". Must be one of: ${VALID_INSTALLABLE_SCOPES.join(", ")}`);
@@ -364074,7 +364181,7 @@ async function performPluginUpdate({
364074
364181
  }
364075
364182
  throw e;
364076
364183
  }
364077
- const marketplaceDir = marketplaceStats.isDirectory() ? marketplaceInstallLocation : dirname55(marketplaceInstallLocation);
364184
+ const marketplaceDir = marketplaceStats.isDirectory() ? marketplaceInstallLocation : dirname56(marketplaceInstallLocation);
364078
364185
  sourcePath = join130(marketplaceDir, entry.source);
364079
364186
  try {
364080
364187
  await fs4.stat(sourcePath);
@@ -370912,7 +371019,7 @@ ${args ? "Additional user input: " + args : ""}
370912
371019
 
370913
371020
  // src/utils/releaseNotes.ts
370914
371021
  import { mkdir as mkdir32, readFile as readFile43, writeFile as writeFile37 } from "fs/promises";
370915
- import { dirname as dirname57, join as join134 } from "path";
371022
+ import { dirname as dirname58, join as join134 } from "path";
370916
371023
  function getChangelogCachePath() {
370917
371024
  return join134(getURConfigHomeDir(), "cache", "changelog.md");
370918
371025
  }
@@ -370923,7 +371030,7 @@ async function migrateChangelogFromConfig() {
370923
371030
  }
370924
371031
  const cachePath = getChangelogCachePath();
370925
371032
  try {
370926
- await mkdir32(dirname57(cachePath), { recursive: true });
371033
+ await mkdir32(dirname58(cachePath), { recursive: true });
370927
371034
  await writeFile37(cachePath, config3.cachedChangelog, {
370928
371035
  encoding: "utf-8",
370929
371036
  flag: "wx"
@@ -370945,7 +371052,7 @@ async function fetchAndStoreChangelog() {
370945
371052
  return;
370946
371053
  }
370947
371054
  const cachePath = getChangelogCachePath();
370948
- await mkdir32(dirname57(cachePath), { recursive: true });
371055
+ await mkdir32(dirname58(cachePath), { recursive: true });
370949
371056
  await writeFile37(cachePath, changelogContent, { encoding: "utf-8" });
370950
371057
  changelogMemoryCache = changelogContent;
370951
371058
  const changelogLastFetched = Date.now();
@@ -371032,7 +371139,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
371032
371139
  return [];
371033
371140
  }
371034
371141
  }
371035
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.25.0") {
371142
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.25.3") {
371036
371143
  if (process.env.USER_TYPE === "ant") {
371037
371144
  const changelog = "";
371038
371145
  if (changelog) {
@@ -371059,7 +371166,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.25.0")
371059
371166
  releaseNotes
371060
371167
  };
371061
371168
  }
371062
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.25.0") {
371169
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.25.3") {
371063
371170
  if (process.env.USER_TYPE === "ant") {
371064
371171
  const changelog = "";
371065
371172
  if (changelog) {
@@ -372229,7 +372336,7 @@ function getRecentActivitySync() {
372229
372336
  return cachedActivity;
372230
372337
  }
372231
372338
  function getLogoDisplayData() {
372232
- const version2 = process.env.DEMO_VERSION ?? "1.25.0";
372339
+ const version2 = process.env.DEMO_VERSION ?? "1.25.3";
372233
372340
  const serverUrl = getDirectConnectServerUrl();
372234
372341
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd2());
372235
372342
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -373018,7 +373125,7 @@ function LogoV2() {
373018
373125
  if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
373019
373126
  t2 = () => {
373020
373127
  const currentConfig = getGlobalConfig();
373021
- if (currentConfig.lastReleaseNotesSeen === "1.25.0") {
373128
+ if (currentConfig.lastReleaseNotesSeen === "1.25.3") {
373022
373129
  return;
373023
373130
  }
373024
373131
  saveGlobalConfig(_temp326);
@@ -373703,12 +373810,12 @@ function LogoV2() {
373703
373810
  return t41;
373704
373811
  }
373705
373812
  function _temp326(current) {
373706
- if (current.lastReleaseNotesSeen === "1.25.0") {
373813
+ if (current.lastReleaseNotesSeen === "1.25.3") {
373707
373814
  return current;
373708
373815
  }
373709
373816
  return {
373710
373817
  ...current,
373711
- lastReleaseNotesSeen: "1.25.0"
373818
+ lastReleaseNotesSeen: "1.25.3"
373712
373819
  };
373713
373820
  }
373714
373821
  function _temp243(s_0) {
@@ -387094,7 +387201,7 @@ var init_attackSurface = __esm(() => {
387094
387201
 
387095
387202
  // src/security/findings.ts
387096
387203
  import * as fs7 from "fs";
387097
- import { dirname as dirname58, join as join138 } from "path";
387204
+ import { dirname as dirname59, join as join138 } from "path";
387098
387205
  function severityRank(s) {
387099
387206
  return ORDER.indexOf(s);
387100
387207
  }
@@ -387112,7 +387219,7 @@ class FindingStore {
387112
387219
  }
387113
387220
  }
387114
387221
  persist() {
387115
- fs7.mkdirSync(dirname58(this.file), { recursive: true });
387222
+ fs7.mkdirSync(dirname59(this.file), { recursive: true });
387116
387223
  fs7.writeFileSync(this.file, JSON.stringify(this.findings, null, 2));
387117
387224
  }
387118
387225
  add(items) {
@@ -388708,18 +388815,18 @@ var init_actions2 = __esm(() => {
388708
388815
  });
388709
388816
 
388710
388817
  // src/services/agents/featureScaffolds.ts
388711
- import { existsSync as existsSync21, mkdirSync as mkdirSync20, writeFileSync as writeFileSync18 } from "fs";
388712
- import { dirname as dirname59, join as join143 } from "path";
388818
+ import { existsSync as existsSync21, mkdirSync as mkdirSync20, writeFileSync as writeFileSync19 } from "fs";
388819
+ import { dirname as dirname60, join as join143 } from "path";
388713
388820
  function writeSeedFile(root2, file2, result, force) {
388714
- const baseRoot = file2.root === "project" ? dirname59(root2) : root2;
388821
+ const baseRoot = file2.root === "project" ? dirname60(root2) : root2;
388715
388822
  const fullPath = join143(baseRoot, file2.path);
388716
388823
  const displayPath = file2.path;
388717
- mkdirSync20(dirname59(fullPath), { recursive: true });
388824
+ mkdirSync20(dirname60(fullPath), { recursive: true });
388718
388825
  if (!force && existsSync21(fullPath)) {
388719
388826
  result.skipped.push(displayPath);
388720
388827
  return;
388721
388828
  }
388722
- writeFileSync18(fullPath, file2.content);
388829
+ writeFileSync19(fullPath, file2.content);
388723
388830
  result.created.push(displayPath);
388724
388831
  }
388725
388832
  function renderAgentTemplate(template) {
@@ -389714,7 +389821,7 @@ import {
389714
389821
  mkdirSync as mkdirSync21,
389715
389822
  readFileSync as readFileSync31,
389716
389823
  readdirSync as readdirSync8,
389717
- writeFileSync as writeFileSync19
389824
+ writeFileSync as writeFileSync20
389718
389825
  } from "fs";
389719
389826
  import { join as join144 } from "path";
389720
389827
  function detectPii(text, kinds = "all") {
@@ -389937,7 +390044,7 @@ function scaffoldGuardrails(cwd2, options2 = {}) {
389937
390044
  const path22 = join144(dir, "default.json");
389938
390045
  if (existsSync22(path22) && options2.force !== true)
389939
390046
  return { path: path22, created: false };
389940
- writeFileSync19(path22, `${JSON.stringify(defaultGuardrails(), null, 2)}
390047
+ writeFileSync20(path22, `${JSON.stringify(defaultGuardrails(), null, 2)}
389941
390048
  `);
389942
390049
  return { path: path22, created: true };
389943
390050
  }
@@ -390697,7 +390804,7 @@ function buildToolUseContext(tools, readFileStateCache) {
390697
390804
  async function handleInitialize() {
390698
390805
  return {
390699
390806
  name: "ur-agent",
390700
- version: "1.25.0",
390807
+ version: "1.25.3",
390701
390808
  protocolVersion: "0.1.0"
390702
390809
  };
390703
390810
  }
@@ -391110,7 +391217,7 @@ var init_acp2 = __esm(() => {
391110
391217
 
391111
391218
  // src/services/agents/scheduler.ts
391112
391219
  import { createHash as createHash24 } from "crypto";
391113
- import { existsSync as existsSync23, mkdirSync as mkdirSync22, unlinkSync as unlinkSync3, writeFileSync as writeFileSync20 } from "fs";
391220
+ import { existsSync as existsSync23, mkdirSync as mkdirSync22, unlinkSync as unlinkSync3, writeFileSync as writeFileSync21 } from "fs";
391114
391221
  import { homedir as homedir28 } from "os";
391115
391222
  import { join as join145 } from "path";
391116
391223
  function defaultBin() {
@@ -391141,7 +391248,7 @@ function buildLaunchdPlist(config3) {
391141
391248
  const label = schedulerLabel(config3.cwd);
391142
391249
  const interval = config3.intervalSec ?? 60;
391143
391250
  const args = runDueArgs(config3);
391144
- const programArgs = args.map((arg) => ` <string>${escapeXml2(arg)}</string>`).join(`
391251
+ const programArgs = args.map((arg) => ` <string>${escapeXml3(arg)}</string>`).join(`
391145
391252
  `);
391146
391253
  const logPath = join145(config3.cwd, ".ur", "automations", "scheduler.log");
391147
391254
  return `<?xml version="1.0" encoding="UTF-8"?>
@@ -391155,20 +391262,20 @@ function buildLaunchdPlist(config3) {
391155
391262
  ${programArgs}
391156
391263
  </array>
391157
391264
  <key>WorkingDirectory</key>
391158
- <string>${escapeXml2(config3.cwd)}</string>
391265
+ <string>${escapeXml3(config3.cwd)}</string>
391159
391266
  <key>StartInterval</key>
391160
391267
  <integer>${interval}</integer>
391161
391268
  <key>RunAtLoad</key>
391162
391269
  <true/>
391163
391270
  <key>StandardOutPath</key>
391164
- <string>${escapeXml2(logPath)}</string>
391271
+ <string>${escapeXml3(logPath)}</string>
391165
391272
  <key>StandardErrorPath</key>
391166
- <string>${escapeXml2(logPath)}</string>
391273
+ <string>${escapeXml3(logPath)}</string>
391167
391274
  </dict>
391168
391275
  </plist>
391169
391276
  `;
391170
391277
  }
391171
- function escapeXml2(value) {
391278
+ function escapeXml3(value) {
391172
391279
  return value.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
391173
391280
  }
391174
391281
  function systemdUnitDir() {
@@ -391218,7 +391325,7 @@ function installScheduler(config3, platform5 = detectPlatform()) {
391218
391325
  if (platform5 === "launchd") {
391219
391326
  const path22 = launchdPlistPath(config3.cwd);
391220
391327
  mkdirSync22(launchAgentsDir(), { recursive: true });
391221
- writeFileSync20(path22, buildLaunchdPlist(config3));
391328
+ writeFileSync21(path22, buildLaunchdPlist(config3));
391222
391329
  return {
391223
391330
  platform: platform5,
391224
391331
  installed: true,
@@ -391235,8 +391342,8 @@ function installScheduler(config3, platform5 = detectPlatform()) {
391235
391342
  mkdirSync22(dir, { recursive: true });
391236
391343
  const servicePath = join145(dir, systemdServiceName(config3.cwd));
391237
391344
  const timerPath = join145(dir, systemdTimerName(config3.cwd));
391238
- writeFileSync20(servicePath, buildSystemdService(config3));
391239
- writeFileSync20(timerPath, buildSystemdTimer(config3));
391345
+ writeFileSync21(servicePath, buildSystemdService(config3));
391346
+ writeFileSync21(timerPath, buildSystemdTimer(config3));
391240
391347
  return {
391241
391348
  platform: platform5,
391242
391349
  installed: true,
@@ -391352,7 +391459,7 @@ import {
391352
391459
  readdirSync as readdirSync9,
391353
391460
  readFileSync as readFileSync33,
391354
391461
  unlinkSync as unlinkSync4,
391355
- writeFileSync as writeFileSync21
391462
+ writeFileSync as writeFileSync22
391356
391463
  } from "fs";
391357
391464
  import { join as join146 } from "path";
391358
391465
  function automationsDir() {
@@ -391406,7 +391513,7 @@ function listSpecs() {
391406
391513
  }
391407
391514
  function writeSpec(spec) {
391408
391515
  mkdirSync23(automationsDir(), { recursive: true });
391409
- writeFileSync21(automationPath(spec.name), `${JSON.stringify(spec, null, 2)}
391516
+ writeFileSync22(automationPath(spec.name), `${JSON.stringify(spec, null, 2)}
391410
391517
  `);
391411
391518
  }
391412
391519
  function toMs(value) {
@@ -391738,7 +391845,7 @@ __export(exports_exec, {
391738
391845
  execCommandForPrompt: () => execCommandForPrompt,
391739
391846
  call: () => call59
391740
391847
  });
391741
- import { mkdirSync as mkdirSync24, writeFileSync as writeFileSync22 } from "fs";
391848
+ import { mkdirSync as mkdirSync24, writeFileSync as writeFileSync23 } from "fs";
391742
391849
  import { join as join147 } from "path";
391743
391850
  function option6(tokens, name) {
391744
391851
  const index2 = tokens.indexOf(name);
@@ -391872,7 +391979,7 @@ async function runExecPool(prompts, opts) {
391872
391979
  function writeOutputFile(outputDir, prompt, content) {
391873
391980
  mkdirSync24(outputDir, { recursive: true });
391874
391981
  const slug2 = prompt.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 40) || "task";
391875
- writeFileSync22(join147(outputDir, `${slug2}.txt`), content);
391982
+ writeFileSync23(join147(outputDir, `${slug2}.txt`), content);
391876
391983
  }
391877
391984
  var call59 = async (args) => {
391878
391985
  const tokens = parseArguments2(args);
@@ -392051,7 +392158,7 @@ var exports_claim_ledger = {};
392051
392158
  __export(exports_claim_ledger, {
392052
392159
  call: () => call61
392053
392160
  });
392054
- import { existsSync as existsSync26, mkdirSync as mkdirSync25, readFileSync as readFileSync35, writeFileSync as writeFileSync23 } from "fs";
392161
+ import { existsSync as existsSync26, mkdirSync as mkdirSync25, readFileSync as readFileSync35, writeFileSync as writeFileSync24 } from "fs";
392055
392162
  import { join as join149 } from "path";
392056
392163
  function ledgerPath2() {
392057
392164
  return join149(getCwd2(), ".ur", "evidence", "claims.json");
@@ -392068,7 +392175,7 @@ function loadLedger() {
392068
392175
  }
392069
392176
  function saveLedger(ledger) {
392070
392177
  mkdirSync25(join149(getCwd2(), ".ur", "evidence"), { recursive: true });
392071
- writeFileSync23(ledgerPath2(), `${JSON.stringify(ledger, null, 2)}
392178
+ writeFileSync24(ledgerPath2(), `${JSON.stringify(ledger, null, 2)}
392072
392179
  `);
392073
392180
  }
392074
392181
  function parseSource(value) {
@@ -392160,7 +392267,7 @@ import {
392160
392267
  mkdirSync as mkdirSync26,
392161
392268
  readFileSync as readFileSync36,
392162
392269
  readdirSync as readdirSync11,
392163
- writeFileSync as writeFileSync24
392270
+ writeFileSync as writeFileSync25
392164
392271
  } from "fs";
392165
392272
  import { join as join150 } from "path";
392166
392273
  function slugifyWorkflowName(name) {
@@ -392362,7 +392469,7 @@ function saveWorkflow(cwd2, spec, options2 = {}) {
392362
392469
  if (existsSync27(path22) && options2.force !== true) {
392363
392470
  return { path: path22, created: false };
392364
392471
  }
392365
- writeFileSync24(path22, `${import_yaml3.stringify(spec)}`);
392472
+ writeFileSync25(path22, `${import_yaml3.stringify(spec)}`);
392366
392473
  return { path: path22, created: true };
392367
392474
  }
392368
392475
  function loadRunState(cwd2, name) {
@@ -392386,14 +392493,14 @@ function markStepComplete(cwd2, name, stepId) {
392386
392493
  state.completed.push(stepId);
392387
392494
  state.updatedAt = now7;
392388
392495
  mkdirSync26(stateDir(cwd2), { recursive: true });
392389
- writeFileSync24(statePath(cwd2, name), `${JSON.stringify(state, null, 2)}
392496
+ writeFileSync25(statePath(cwd2, name), `${JSON.stringify(state, null, 2)}
392390
392497
  `);
392391
392498
  return state;
392392
392499
  }
392393
392500
  function resetRunState(cwd2, name) {
392394
392501
  const path22 = statePath(cwd2, name);
392395
392502
  if (existsSync27(path22)) {
392396
- writeFileSync24(path22, `${JSON.stringify({
392503
+ writeFileSync25(path22, `${JSON.stringify({
392397
392504
  version: 1,
392398
392505
  name: slugifyWorkflowName(name),
392399
392506
  startedAt: new Date().toISOString(),
@@ -392517,7 +392624,7 @@ var init_workflows = __esm(() => {
392517
392624
  });
392518
392625
 
392519
392626
  // src/services/agents/patterns.ts
392520
- import { existsSync as existsSync28, mkdirSync as mkdirSync27, writeFileSync as writeFileSync25 } from "fs";
392627
+ import { existsSync as existsSync28, mkdirSync as mkdirSync27, writeFileSync as writeFileSync26 } from "fs";
392521
392628
  import { join as join151 } from "path";
392522
392629
  function listPatterns() {
392523
392630
  return AGENT_PATTERNS;
@@ -392597,7 +392704,7 @@ function scaffoldPattern(cwd2, id, options2 = {}) {
392597
392704
  if (!force && existsSync28(specPath)) {
392598
392705
  result.skipped.push(`patterns/${pattern.id}.json`);
392599
392706
  } else {
392600
- writeFileSync25(specPath, `${JSON.stringify(pattern, null, 2)}
392707
+ writeFileSync26(specPath, `${JSON.stringify(pattern, null, 2)}
392601
392708
  `);
392602
392709
  result.created.push(`patterns/${pattern.id}.json`);
392603
392710
  }
@@ -393933,7 +394040,7 @@ var init_workflow2 = __esm(() => {
393933
394040
  });
393934
394041
 
393935
394042
  // src/skills/skillSpec.ts
393936
- import { existsSync as existsSync29, mkdirSync as mkdirSync28, readFileSync as readFileSync37, readdirSync as readdirSync12, writeFileSync as writeFileSync26 } from "fs";
394043
+ import { existsSync as existsSync29, mkdirSync as mkdirSync28, readFileSync as readFileSync37, readdirSync as readdirSync12, writeFileSync as writeFileSync27 } from "fs";
393937
394044
  import { join as join152 } from "path";
393938
394045
  function readTextFile(path22) {
393939
394046
  try {
@@ -394192,16 +394299,16 @@ function initSkillDir(dir, name) {
394192
394299
  }
394193
394300
  ]
394194
394301
  };
394195
- writeFileSync26(join152(dir, SKILL_YAML_FILE), stringifySkillYaml(spec));
394196
- writeFileSync26(join152(dir, SKILL_INSTRUCTIONS_FILE), `# ${name}
394302
+ writeFileSync27(join152(dir, SKILL_YAML_FILE), stringifySkillYaml(spec));
394303
+ writeFileSync27(join152(dir, SKILL_INSTRUCTIONS_FILE), `# ${name}
394197
394304
 
394198
394305
  Executable skill for ${name}.
394199
394306
  `);
394200
- writeFileSync26(join152(dir, "checklists", "default.md"), `# Default checklist
394307
+ writeFileSync27(join152(dir, "checklists", "default.md"), `# Default checklist
394201
394308
 
394202
394309
  - [ ] Step completed successfully
394203
394310
  `);
394204
- writeFileSync26(join152(dir, "templates", "output.md"), `# Output template
394311
+ writeFileSync27(join152(dir, "templates", "output.md"), `# Output template
394205
394312
 
394206
394313
  ## Summary
394207
394314
 
@@ -394947,7 +395054,7 @@ import {
394947
395054
  readFileSync as readFileSync39,
394948
395055
  readdirSync as readdirSync13,
394949
395056
  statSync as statSync10,
394950
- writeFileSync as writeFileSync27
395057
+ writeFileSync as writeFileSync28
394951
395058
  } from "fs";
394952
395059
  import { basename as basename41, join as join154, relative as relative33, resolve as resolve44 } from "path";
394953
395060
  function knowledgeDir(cwd2) {
@@ -394971,7 +395078,7 @@ function loadSources(cwd2) {
394971
395078
  }
394972
395079
  function saveSources(cwd2, sources) {
394973
395080
  mkdirSync29(knowledgeDir(cwd2), { recursive: true });
394974
- writeFileSync27(sourcesPath(cwd2), `${JSON.stringify(sources, null, 2)}
395081
+ writeFileSync28(sourcesPath(cwd2), `${JSON.stringify(sources, null, 2)}
394975
395082
  `);
394976
395083
  }
394977
395084
  function makeSourceId(kind, ref) {
@@ -395145,7 +395252,7 @@ async function buildIndex(cwd2, options2 = {}) {
395145
395252
  chunks
395146
395253
  };
395147
395254
  mkdirSync29(join154(knowledgeDir(cwd2), "index"), { recursive: true });
395148
- writeFileSync27(indexPath2(cwd2), `${JSON.stringify(index2, null, 2)}
395255
+ writeFileSync28(indexPath2(cwd2), `${JSON.stringify(index2, null, 2)}
395149
395256
  `);
395150
395257
  return index2;
395151
395258
  }
@@ -395194,7 +395301,7 @@ function pruneKnowledge(cwd2, options2) {
395194
395301
  removedChunks = before - index2.chunks.length;
395195
395302
  index2.builtAt = new Date().toISOString();
395196
395303
  mkdirSync29(join154(knowledgeDir(cwd2), "index"), { recursive: true });
395197
- writeFileSync27(indexPath2(cwd2), `${JSON.stringify(index2, null, 2)}
395304
+ writeFileSync28(indexPath2(cwd2), `${JSON.stringify(index2, null, 2)}
395198
395305
  `);
395199
395306
  }
395200
395307
  return { removedSources, removedChunks };
@@ -395382,7 +395489,7 @@ var init_knowledge3 = __esm(() => {
395382
395489
  });
395383
395490
 
395384
395491
  // src/services/agents/crew.ts
395385
- import { existsSync as existsSync32, mkdirSync as mkdirSync30, readdirSync as readdirSync14, readFileSync as readFileSync40, unlinkSync as unlinkSync5, writeFileSync as writeFileSync28 } from "fs";
395492
+ import { existsSync as existsSync32, mkdirSync as mkdirSync30, readdirSync as readdirSync14, readFileSync as readFileSync40, unlinkSync as unlinkSync5, writeFileSync as writeFileSync29 } from "fs";
395386
395493
  import { join as join155 } from "path";
395387
395494
  function crewDir(cwd2) {
395388
395495
  return join155(cwd2, ".ur", "crew");
@@ -395411,7 +395518,7 @@ function loadCrew(cwd2, name) {
395411
395518
  }
395412
395519
  function saveCrew(cwd2, spec) {
395413
395520
  mkdirSync30(crewDir(cwd2), { recursive: true });
395414
- writeFileSync28(crewPath(cwd2, spec.name), `${JSON.stringify(spec, null, 2)}
395521
+ writeFileSync29(crewPath(cwd2, spec.name), `${JSON.stringify(spec, null, 2)}
395415
395522
  `);
395416
395523
  }
395417
395524
  function deleteCrew(cwd2, name) {
@@ -395989,7 +396096,7 @@ var init_crew3 = __esm(() => {
395989
396096
  });
395990
396097
 
395991
396098
  // src/services/agents/goals.ts
395992
- import { existsSync as existsSync33, mkdirSync as mkdirSync31, readdirSync as readdirSync15, readFileSync as readFileSync41, unlinkSync as unlinkSync6, writeFileSync as writeFileSync29 } from "fs";
396099
+ import { existsSync as existsSync33, mkdirSync as mkdirSync31, readdirSync as readdirSync15, readFileSync as readFileSync41, unlinkSync as unlinkSync6, writeFileSync as writeFileSync30 } from "fs";
395993
396100
  import { join as join156 } from "path";
395994
396101
  function goalsDir(cwd2) {
395995
396102
  return join156(cwd2, ".ur", "goals");
@@ -396018,7 +396125,7 @@ function loadGoal(cwd2, name) {
396018
396125
  }
396019
396126
  function saveGoal(cwd2, spec) {
396020
396127
  mkdirSync31(goalsDir(cwd2), { recursive: true });
396021
- writeFileSync29(goalPath(cwd2, spec.name), `${JSON.stringify(spec, null, 2)}
396128
+ writeFileSync30(goalPath(cwd2, spec.name), `${JSON.stringify(spec, null, 2)}
396022
396129
  `);
396023
396130
  }
396024
396131
  function createGoal(cwd2, name, objective, options2 = {}) {
@@ -396746,7 +396853,7 @@ import {
396746
396853
  readdirSync as readdirSync16,
396747
396854
  readFileSync as readFileSync43,
396748
396855
  rmSync as rmSync5,
396749
- writeFileSync as writeFileSync30
396856
+ writeFileSync as writeFileSync31
396750
396857
  } from "fs";
396751
396858
  import { join as join158 } from "path";
396752
396859
  function specsDir(cwd2) {
@@ -396779,7 +396886,7 @@ function loadSpec(cwd2, name) {
396779
396886
  }
396780
396887
  function saveMeta(cwd2, meta) {
396781
396888
  mkdirSync32(specDir(cwd2, meta.name), { recursive: true });
396782
- writeFileSync30(metaPath(cwd2, meta.name), `${JSON.stringify(meta, null, 2)}
396889
+ writeFileSync31(metaPath(cwd2, meta.name), `${JSON.stringify(meta, null, 2)}
396783
396890
  `);
396784
396891
  }
396785
396892
  function readPhase(cwd2, name, phase) {
@@ -396788,7 +396895,7 @@ function readPhase(cwd2, name, phase) {
396788
396895
  }
396789
396896
  function writePhase(cwd2, name, phase, body) {
396790
396897
  mkdirSync32(specDir(cwd2, name), { recursive: true });
396791
- writeFileSync30(join158(specDir(cwd2, name), phaseFile(phase)), body.endsWith(`
396898
+ writeFileSync31(join158(specDir(cwd2, name), phaseFile(phase)), body.endsWith(`
396792
396899
  `) ? body : `${body}
396793
396900
  `);
396794
396901
  }
@@ -397045,7 +397152,7 @@ var init_spec = __esm(() => {
397045
397152
  });
397046
397153
 
397047
397154
  // src/services/agents/specVerifier.ts
397048
- import { existsSync as existsSync36, mkdirSync as mkdirSync33, readFileSync as readFileSync44, writeFileSync as writeFileSync31 } from "fs";
397155
+ import { existsSync as existsSync36, mkdirSync as mkdirSync33, readFileSync as readFileSync44, writeFileSync as writeFileSync32 } from "fs";
397049
397156
  import { join as join159 } from "path";
397050
397157
  function recordPath(cwd2, name) {
397051
397158
  return join159(cwd2, ".ur", "specs", name, RECORD_FILE);
@@ -397072,7 +397179,7 @@ function listVerificationRecords(cwd2, name) {
397072
397179
  function saveVerificationRecord(cwd2, name, record3) {
397073
397180
  const path22 = recordPath(cwd2, name);
397074
397181
  mkdirSync33(join159(cwd2, ".ur", "specs", name), { recursive: true });
397075
- writeFileSync31(path22, `${JSON.stringify(record3, null, 2)}
397182
+ writeFileSync32(path22, `${JSON.stringify(record3, null, 2)}
397076
397183
  `);
397077
397184
  }
397078
397185
  function writeVerificationReport(cwd2, name, result) {
@@ -397098,7 +397205,7 @@ function writeVerificationReport(cwd2, name, result) {
397098
397205
  "```",
397099
397206
  ""
397100
397207
  ];
397101
- writeFileSync31(reportPath(cwd2, name), lines.join(`
397208
+ writeFileSync32(reportPath(cwd2, name), lines.join(`
397102
397209
  `));
397103
397210
  }
397104
397211
  async function captureDiff(cwd2) {
@@ -397524,7 +397631,7 @@ var init_spec3 = __esm(() => {
397524
397631
  });
397525
397632
 
397526
397633
  // src/services/agents/escalation.ts
397527
- import { existsSync as existsSync37, mkdirSync as mkdirSync34, readFileSync as readFileSync45, writeFileSync as writeFileSync32 } from "fs";
397634
+ import { existsSync as existsSync37, mkdirSync as mkdirSync34, readFileSync as readFileSync45, writeFileSync as writeFileSync33 } from "fs";
397528
397635
  import { join as join160 } from "path";
397529
397636
  function scoreOracle(model) {
397530
397637
  let score = (model.contextLength ?? 0) / 1000;
@@ -397706,7 +397813,7 @@ function loadPolicy(cwd2) {
397706
397813
  }
397707
397814
  function savePolicy(cwd2, policy) {
397708
397815
  mkdirSync34(join160(cwd2, ".ur"), { recursive: true });
397709
- writeFileSync32(policyPath(cwd2), `${JSON.stringify(policy, null, 2)}
397816
+ writeFileSync33(policyPath(cwd2), `${JSON.stringify(policy, null, 2)}
397710
397817
  `);
397711
397818
  }
397712
397819
  function formatPlan(plan, json2) {
@@ -397758,7 +397865,7 @@ import {
397758
397865
  mkdirSync as mkdirSync35,
397759
397866
  readFileSync as readFileSync46,
397760
397867
  rmSync as rmSync6,
397761
- writeFileSync as writeFileSync33
397868
+ writeFileSync as writeFileSync34
397762
397869
  } from "fs";
397763
397870
  import { join as join161 } from "path";
397764
397871
  function artifactsDir(cwd2) {
@@ -397776,7 +397883,7 @@ function loadManifest3(cwd2) {
397776
397883
  }
397777
397884
  function saveManifest3(cwd2, manifest) {
397778
397885
  mkdirSync35(artifactsDir(cwd2), { recursive: true });
397779
- writeFileSync33(manifestPath4(cwd2), `${JSON.stringify(manifest, null, 2)}
397886
+ writeFileSync34(manifestPath4(cwd2), `${JSON.stringify(manifest, null, 2)}
397780
397887
  `);
397781
397888
  }
397782
397889
  function nextId2(manifest) {
@@ -397795,7 +397902,7 @@ function recordArtifact(cwd2, input) {
397795
397902
  const dir = join161(artifactsDir(cwd2), "files");
397796
397903
  mkdirSync35(dir, { recursive: true });
397797
397904
  const rel = join161("files", `${id}-${slug2(input.title)}.${EXT[input.kind]}`);
397798
- writeFileSync33(join161(artifactsDir(cwd2), rel), input.body);
397905
+ writeFileSync34(join161(artifactsDir(cwd2), rel), input.body);
397799
397906
  file2 = rel;
397800
397907
  }
397801
397908
  const artifact = {
@@ -397944,7 +398051,7 @@ var init_artifacts = __esm(() => {
397944
398051
  });
397945
398052
 
397946
398053
  // src/services/agents/learning.ts
397947
- import { existsSync as existsSync39, mkdirSync as mkdirSync36, readFileSync as readFileSync47, writeFileSync as writeFileSync34 } from "fs";
398054
+ import { existsSync as existsSync39, mkdirSync as mkdirSync36, readFileSync as readFileSync47, writeFileSync as writeFileSync35 } from "fs";
397948
398055
  import { join as join162 } from "path";
397949
398056
  function emptyStats() {
397950
398057
  return {
@@ -398070,7 +398177,7 @@ function loadStats(cwd2) {
398070
398177
  }
398071
398178
  function saveStats(cwd2, stats) {
398072
398179
  mkdirSync36(learningDir(cwd2), { recursive: true });
398073
- writeFileSync34(statsPath(cwd2), `${JSON.stringify(stats, null, 2)}
398180
+ writeFileSync35(statsPath(cwd2), `${JSON.stringify(stats, null, 2)}
398074
398181
  `);
398075
398182
  }
398076
398183
  async function reflectOnFailures(input) {
@@ -398505,7 +398612,7 @@ var init_guardrails3 = __esm(() => {
398505
398612
  });
398506
398613
 
398507
398614
  // src/services/agents/execTarget.ts
398508
- import { existsSync as existsSync41, mkdirSync as mkdirSync37, readFileSync as readFileSync49, writeFileSync as writeFileSync35 } from "fs";
398615
+ import { existsSync as existsSync41, mkdirSync as mkdirSync37, readFileSync as readFileSync49, writeFileSync as writeFileSync36 } from "fs";
398509
398616
  import { join as join163 } from "path";
398510
398617
  function isContainerized(config3) {
398511
398618
  return config3.kind !== "local";
@@ -398576,7 +398683,7 @@ function scaffoldExecTarget(cwd2, options2 = {}) {
398576
398683
  mkdirSync37(join163(cwd2, ".ur"), { recursive: true });
398577
398684
  if (existsSync41(path22) && options2.force !== true)
398578
398685
  return { path: path22, created: false };
398579
- writeFileSync35(path22, `${JSON.stringify(defaultExecTargetConfig(options2.image), null, 2)}
398686
+ writeFileSync36(path22, `${JSON.stringify(defaultExecTargetConfig(options2.image), null, 2)}
398580
398687
  `);
398581
398688
  return { path: path22, created: true };
398582
398689
  }
@@ -398706,7 +398813,7 @@ import {
398706
398813
  existsSync as existsSync42,
398707
398814
  mkdirSync as mkdirSync38,
398708
398815
  rmSync as rmSync7,
398709
- writeFileSync as writeFileSync36
398816
+ writeFileSync as writeFileSync37
398710
398817
  } from "fs";
398711
398818
  import { join as join164 } from "path";
398712
398819
  function countChangedLines(diff3) {
@@ -398840,7 +398947,7 @@ Implement this fully and correctly. Make focused changes. End your reply with VE
398840
398947
  if (options2.apply && winner && winner.diff.trim() && !options2.dryRun) {
398841
398948
  const patch = join164(cwd2, ".ur", "arena", `${runId}-winner.patch`);
398842
398949
  mkdirSync38(join164(cwd2, ".ur", "arena"), { recursive: true });
398843
- writeFileSync36(patch, winner.diff);
398950
+ writeFileSync37(patch, winner.diff);
398844
398951
  const result = await git4(cwd2, ["apply", "--3way", patch]);
398845
398952
  applied = result.code === 0;
398846
398953
  if (applied)
@@ -399473,9 +399580,9 @@ var init_ci_loop2 = __esm(() => {
399473
399580
  import {
399474
399581
  mkdirSync as mkdirSync39,
399475
399582
  readFileSync as readFileSync51,
399476
- writeFileSync as writeFileSync37
399583
+ writeFileSync as writeFileSync38
399477
399584
  } from "fs";
399478
- import { dirname as dirname60, join as join165, relative as relative34 } from "path";
399585
+ import { dirname as dirname61, join as join165, relative as relative34 } from "path";
399479
399586
  function defaultTraceDir(cwd2) {
399480
399587
  return join165(cwd2, ".ur", "test-first", "traces");
399481
399588
  }
@@ -399504,7 +399611,7 @@ function writeFailureTrace(cwd2, traceDir, run, result, now7) {
399504
399611
  ""
399505
399612
  ].join(`
399506
399613
  `);
399507
- writeFileSync37(file2, body);
399614
+ writeFileSync38(file2, body);
399508
399615
  return relative34(cwd2, file2);
399509
399616
  }
399510
399617
  function readExistingVerifyConfig(path22) {
@@ -399528,7 +399635,7 @@ function mergeStringArray(existing2, additions) {
399528
399635
  }
399529
399636
  function installTestFirstGates(cwd2, stack = detectTestFirstStack(cwd2)) {
399530
399637
  const path22 = join165(cwd2, ".ur", "verify.json");
399531
- mkdirSync39(dirname60(path22), { recursive: true });
399638
+ mkdirSync39(dirname61(path22), { recursive: true });
399532
399639
  const commands = stack.commands.map((command5) => command5.command);
399533
399640
  const existing2 = readExistingVerifyConfig(path22);
399534
399641
  const next = {
@@ -399536,7 +399643,7 @@ function installTestFirstGates(cwd2, stack = detectTestFirstStack(cwd2)) {
399536
399643
  afterEdit: mergeStringArray(existing2.afterEdit, commands),
399537
399644
  timeoutMs: typeof existing2.timeoutMs === "number" && existing2.timeoutMs > 0 ? existing2.timeoutMs : 600000
399538
399645
  };
399539
- writeFileSync37(path22, `${JSON.stringify(next, null, 2)}
399646
+ writeFileSync38(path22, `${JSON.stringify(next, null, 2)}
399540
399647
  `);
399541
399648
  return { path: relative34(cwd2, path22), commands };
399542
399649
  }
@@ -400648,7 +400755,7 @@ var exports_sdk = {};
400648
400755
  __export(exports_sdk, {
400649
400756
  call: () => call85
400650
400757
  });
400651
- import { existsSync as existsSync45, mkdirSync as mkdirSync40, writeFileSync as writeFileSync38 } from "fs";
400758
+ import { existsSync as existsSync45, mkdirSync as mkdirSync40, writeFileSync as writeFileSync39 } from "fs";
400652
400759
  import { join as join166 } from "path";
400653
400760
  function infoText() {
400654
400761
  return [
@@ -400744,7 +400851,7 @@ A2A server: \`ur a2a serve\`.
400744
400851
  skipped.push(name);
400745
400852
  continue;
400746
400853
  }
400747
- writeFileSync38(path22, content);
400854
+ writeFileSync39(path22, content);
400748
400855
  created.push(name);
400749
400856
  }
400750
400857
  return {
@@ -400821,7 +400928,7 @@ import {
400821
400928
  readFileSync as readFileSync53,
400822
400929
  readdirSync as readdirSync17,
400823
400930
  rmSync as rmSync8,
400824
- writeFileSync as writeFileSync39
400931
+ writeFileSync as writeFileSync40
400825
400932
  } from "fs";
400826
400933
  import { join as join167 } from "path";
400827
400934
  function hasAnyExpectation(expect) {
@@ -401510,7 +401617,7 @@ function loadAllReliability(cwd2) {
401510
401617
  function saveReliabilityReport(cwd2, report) {
401511
401618
  mkdirSync41(resultsDir(cwd2), { recursive: true });
401512
401619
  const path22 = join167(resultsDir(cwd2), `reliability-${suiteSlug(report.name)}.json`);
401513
- writeFileSync39(path22, `${JSON.stringify(report, null, 2)}
401620
+ writeFileSync40(path22, `${JSON.stringify(report, null, 2)}
401514
401621
  `);
401515
401622
  return path22;
401516
401623
  }
@@ -401518,7 +401625,7 @@ function writeDashboard(cwd2) {
401518
401625
  const html3 = buildDashboardHtml(loadAllReports(cwd2), loadAllReliability(cwd2));
401519
401626
  mkdirSync41(evalsDir(cwd2), { recursive: true });
401520
401627
  const path22 = join167(evalsDir(cwd2), "dashboard.html");
401521
- writeFileSync39(path22, html3);
401628
+ writeFileSync40(path22, html3);
401522
401629
  return path22;
401523
401630
  }
401524
401631
  function buildLeaderboard(cwd2, reports, options2 = {}) {
@@ -401529,7 +401636,7 @@ function buildLeaderboard(cwd2, reports, options2 = {}) {
401529
401636
  const dir2 = resultsDir(cwd2);
401530
401637
  mkdirSync41(dir2, { recursive: true });
401531
401638
  const path23 = join167(dir2, "leaderboard.json");
401532
- writeFileSync39(path23, JSON.stringify({ title, generatedAt: new Date().toISOString(), reports }, null, 2) + `
401639
+ writeFileSync40(path23, JSON.stringify({ title, generatedAt: new Date().toISOString(), reports }, null, 2) + `
401533
401640
  `);
401534
401641
  if (runId) {
401535
401642
  addRunArtifact(cwd2, runId, { kind: "leaderboard", path: path23, title });
@@ -401540,7 +401647,7 @@ function buildLeaderboard(cwd2, reports, options2 = {}) {
401540
401647
  const dir2 = resultsDir(cwd2);
401541
401648
  mkdirSync41(dir2, { recursive: true });
401542
401649
  const path23 = join167(dir2, "leaderboard.md");
401543
- writeFileSync39(path23, formatLeaderboardMarkdown(title, reports));
401650
+ writeFileSync40(path23, formatLeaderboardMarkdown(title, reports));
401544
401651
  if (runId) {
401545
401652
  addRunArtifact(cwd2, runId, { kind: "leaderboard", path: path23, title });
401546
401653
  }
@@ -401550,7 +401657,7 @@ function buildLeaderboard(cwd2, reports, options2 = {}) {
401550
401657
  mkdirSync41(dir, { recursive: true });
401551
401658
  const path22 = join167(dir, "leaderboard.html");
401552
401659
  const html3 = buildDashboardHtml(reports, []);
401553
- writeFileSync39(path22, html3.replace("<title>UR Eval Dashboard</title>", `<title>${escapeHtml(title)}</title>`).replace("<h1>UR Eval Dashboard</h1>", `<h1>${escapeHtml(title)}</h1>`));
401660
+ writeFileSync40(path22, html3.replace("<title>UR Eval Dashboard</title>", `<title>${escapeHtml(title)}</title>`).replace("<h1>UR Eval Dashboard</h1>", `<h1>${escapeHtml(title)}</h1>`));
401554
401661
  if (runId) {
401555
401662
  addRunArtifact(cwd2, runId, { kind: "leaderboard", path: path22, title });
401556
401663
  }
@@ -401578,7 +401685,7 @@ function writeRunMetrics(cwd2, suiteName, caseId, metrics) {
401578
401685
  const dir = runsDir(cwd2, suiteName);
401579
401686
  mkdirSync41(dir, { recursive: true });
401580
401687
  const path22 = join167(dir, `${caseId}.json`);
401581
- writeFileSync39(path22, `${JSON.stringify(metrics, null, 2)}
401688
+ writeFileSync40(path22, `${JSON.stringify(metrics, null, 2)}
401582
401689
  `);
401583
401690
  return path22;
401584
401691
  }
@@ -401662,7 +401769,7 @@ function saveSuite(cwd2, suite, options2 = {}) {
401662
401769
  if (existsSync46(path22) && options2.force !== true) {
401663
401770
  return { path: path22, created: false };
401664
401771
  }
401665
- writeFileSync39(path22, `${JSON.stringify(suite, null, 2)}
401772
+ writeFileSync40(path22, `${JSON.stringify(suite, null, 2)}
401666
401773
  `);
401667
401774
  return { path: path22, created: true };
401668
401775
  }
@@ -401820,7 +401927,7 @@ function importBenchmarkSuite(cwd2, adapter2, file2, options2 = {}) {
401820
401927
  function saveReport(cwd2, report, options2 = {}) {
401821
401928
  mkdirSync41(resultsDir(cwd2), { recursive: true });
401822
401929
  const path22 = join167(resultsDir(cwd2), `${suiteSlug(report.name)}.json`);
401823
- writeFileSync39(path22, `${JSON.stringify(report, null, 2)}
401930
+ writeFileSync40(path22, `${JSON.stringify(report, null, 2)}
401824
401931
  `);
401825
401932
  if (options2.runId) {
401826
401933
  addRunArtifact(cwd2, options2.runId, {
@@ -401891,7 +401998,7 @@ function scaffoldEvals(cwd2, options2 = {}) {
401891
401998
  if (existsSync46(readmePath) && options2.force !== true) {
401892
401999
  result.skipped.push("evals/README.md");
401893
402000
  } else {
401894
- writeFileSync39(readmePath, EVALS_README);
402001
+ writeFileSync40(readmePath, EVALS_README);
401895
402002
  result.created.push("evals/README.md");
401896
402003
  }
401897
402004
  const saved = saveSuite(cwd2, defaultEvalSuite(), { force: options2.force });
@@ -402260,7 +402367,7 @@ var exports_eval = {};
402260
402367
  __export(exports_eval, {
402261
402368
  call: () => call86
402262
402369
  });
402263
- import { mkdirSync as mkdirSync42, writeFileSync as writeFileSync40 } from "fs";
402370
+ import { mkdirSync as mkdirSync42, writeFileSync as writeFileSync41 } from "fs";
402264
402371
  import { join as join169 } from "path";
402265
402372
  function optionValue7(tokens, flag) {
402266
402373
  const index2 = tokens.indexOf(flag);
@@ -402392,7 +402499,7 @@ Run: ur eval run ${suite2.name}`
402392
402499
  const dir = join169(evalsDir(cwd2), ".dashboards");
402393
402500
  mkdirSync42(dir, { recursive: true });
402394
402501
  const path22 = join169(dir, `${suiteSlug(report.name)}.html`);
402395
- writeFileSync40(path22, html3);
402502
+ writeFileSync41(path22, html3);
402396
402503
  return { type: "text", value: `Wrote single-suite dashboard to ${path22}` };
402397
402504
  }
402398
402505
  return { type: "text", value: formatEvalReport(report, json2) };
@@ -403194,8 +403301,8 @@ var init_project2 = __esm(() => {
403194
403301
  });
403195
403302
 
403196
403303
  // src/ur/notes.ts
403197
- import { appendFileSync as appendFileSync5, existsSync as existsSync49, mkdirSync as mkdirSync43, readFileSync as readFileSync55, writeFileSync as writeFileSync41 } from "fs";
403198
- import { dirname as dirname61, join as join171 } from "path";
403304
+ import { appendFileSync as appendFileSync5, existsSync as existsSync49, mkdirSync as mkdirSync43, readFileSync as readFileSync55, writeFileSync as writeFileSync42 } from "fs";
403305
+ import { dirname as dirname62, join as join171 } from "path";
403199
403306
  function readJsonl(file2) {
403200
403307
  if (!existsSync49(file2))
403201
403308
  return [];
@@ -403210,7 +403317,7 @@ function readJsonl(file2) {
403210
403317
  }
403211
403318
  function append2(file2, rec) {
403212
403319
  try {
403213
- mkdirSync43(dirname61(file2), { recursive: true });
403320
+ mkdirSync43(dirname62(file2), { recursive: true });
403214
403321
  appendFileSync5(file2, JSON.stringify(rec) + `
403215
403322
  `);
403216
403323
  } catch {}
@@ -403228,8 +403335,8 @@ function forget(cwd2, needle) {
403228
403335
  const removed = all4.length - kept.length;
403229
403336
  if (removed > 0) {
403230
403337
  try {
403231
- mkdirSync43(dirname61(file2), { recursive: true });
403232
- writeFileSync41(file2, kept.map((n2) => JSON.stringify(n2)).join(`
403338
+ mkdirSync43(dirname62(file2), { recursive: true });
403339
+ writeFileSync42(file2, kept.map((n2) => JSON.stringify(n2)).join(`
403233
403340
  `) + (kept.length ? `
403234
403341
  ` : ""));
403235
403342
  } catch {}
@@ -403285,9 +403392,9 @@ import {
403285
403392
  mkdirSync as mkdirSync44,
403286
403393
  readFileSync as readFileSync56,
403287
403394
  readdirSync as readdirSync19,
403288
- writeFileSync as writeFileSync42
403395
+ writeFileSync as writeFileSync43
403289
403396
  } from "fs";
403290
- import { dirname as dirname62, join as join172 } from "path";
403397
+ import { dirname as dirname63, join as join172 } from "path";
403291
403398
  function memoryDir(cwd2) {
403292
403399
  return join172(cwd2, ".ur", "memory");
403293
403400
  }
@@ -403322,8 +403429,8 @@ function saveMemoryRetentionPolicy(cwd2, patch) {
403322
403429
  decayDays: patch.decayDays === undefined ? current.decayDays : validPositive(patch.decayDays),
403323
403430
  updatedAt: new Date().toISOString()
403324
403431
  };
403325
- mkdirSync44(dirname62(policyPath2(cwd2)), { recursive: true });
403326
- writeFileSync42(policyPath2(cwd2), `${JSON.stringify(next, null, 2)}
403432
+ mkdirSync44(dirname63(policyPath2(cwd2)), { recursive: true });
403433
+ writeFileSync43(policyPath2(cwd2), `${JSON.stringify(next, null, 2)}
403327
403434
  `);
403328
403435
  return next;
403329
403436
  }
@@ -403353,7 +403460,7 @@ function readJsonl2(file2) {
403353
403460
  return records;
403354
403461
  }
403355
403462
  function writeJsonl(file2, records) {
403356
- writeFileSync42(file2, records.map((r) => JSON.stringify(r)).join(`
403463
+ writeFileSync43(file2, records.map((r) => JSON.stringify(r)).join(`
403357
403464
  `) + (records.length ? `
403358
403465
  ` : ""));
403359
403466
  }
@@ -403504,7 +403611,7 @@ var exports_semantic_memory = {};
403504
403611
  __export(exports_semantic_memory, {
403505
403612
  call: () => call94
403506
403613
  });
403507
- import { existsSync as existsSync51, mkdirSync as mkdirSync45, readdirSync as readdirSync20, readFileSync as readFileSync57, statSync as statSync11, writeFileSync as writeFileSync43 } from "fs";
403614
+ import { existsSync as existsSync51, mkdirSync as mkdirSync45, readdirSync as readdirSync20, readFileSync as readFileSync57, statSync as statSync11, writeFileSync as writeFileSync44 } from "fs";
403508
403615
  import { basename as basename42, join as join173 } from "path";
403509
403616
  function indexPath3() {
403510
403617
  return join173(getCwd2(), ".ur", "semantic-memory", "index", "index.json");
@@ -403549,7 +403656,7 @@ function buildIndex2() {
403549
403656
  entries
403550
403657
  };
403551
403658
  mkdirSync45(join173(getCwd2(), ".ur", "semantic-memory", "index"), { recursive: true });
403552
- writeFileSync43(indexPath3(), `${JSON.stringify(index2, null, 2)}
403659
+ writeFileSync44(indexPath3(), `${JSON.stringify(index2, null, 2)}
403553
403660
  `);
403554
403661
  return index2;
403555
403662
  }
@@ -572898,9 +573005,9 @@ import {
572898
573005
  readFileSync as readFileSync58,
572899
573006
  readdirSync as readdirSync21,
572900
573007
  statSync as statSync12,
572901
- writeFileSync as writeFileSync44
573008
+ writeFileSync as writeFileSync45
572902
573009
  } from "fs";
572903
- import { dirname as dirname63, extname as extname17, isAbsolute as isAbsolute27, join as join174, relative as relative36, resolve as resolve45 } from "path";
573010
+ import { dirname as dirname64, extname as extname17, isAbsolute as isAbsolute27, join as join174, relative as relative36, resolve as resolve45 } from "path";
572904
573011
  import { promisify as promisify4 } from "util";
572905
573012
  function repoEditIndexPath(root2) {
572906
573013
  return join174(root2, ".ur", "repo-edit", "index.json");
@@ -573040,8 +573147,8 @@ ${content}`),
573040
573147
  builtAt: new Date().toISOString(),
573041
573148
  files
573042
573149
  };
573043
- mkdirSync46(dirname63(repoEditIndexPath(root2)), { recursive: true });
573044
- writeFileSync44(repoEditIndexPath(root2), `${JSON.stringify(index2, null, 2)}
573150
+ mkdirSync46(dirname64(repoEditIndexPath(root2)), { recursive: true });
573151
+ writeFileSync45(repoEditIndexPath(root2), `${JSON.stringify(index2, null, 2)}
573045
573152
  `);
573046
573153
  return index2;
573047
573154
  }
@@ -573189,7 +573296,7 @@ async function runCheck(command5, cwd2) {
573189
573296
  }
573190
573297
  function rollback(root2, snapshots) {
573191
573298
  for (const [file2, content] of snapshots) {
573192
- writeFileSync44(join174(root2, file2), content);
573299
+ writeFileSync45(join174(root2, file2), content);
573193
573300
  }
573194
573301
  }
573195
573302
  async function applyRename(root2, from, to, options2 = {}) {
@@ -573202,7 +573309,7 @@ async function applyRename(root2, from, to, options2 = {}) {
573202
573309
  try {
573203
573310
  for (const file2 of plan.files) {
573204
573311
  snapshots.set(file2.file, file2.oldContent);
573205
- writeFileSync44(join174(root2, file2.file), file2.newContent);
573312
+ writeFileSync45(join174(root2, file2.file), file2.newContent);
573206
573313
  writtenFiles.push(file2.file);
573207
573314
  }
573208
573315
  const syntax = plan.files.flatMap((file2) => syntaxErrors(file2.file, file2.newContent));
@@ -573717,8 +573824,8 @@ var init_diagnostics = __esm(() => {
573717
573824
  });
573718
573825
 
573719
573826
  // src/services/repoEditing/ast/workspaceEdit.ts
573720
- import { dirname as dirname64, join as join176 } from "path";
573721
- import { existsSync as existsSync53, mkdirSync as mkdirSync47, readFileSync as readFileSync59, writeFileSync as writeFileSync45 } from "fs";
573827
+ import { dirname as dirname65, join as join176 } from "path";
573828
+ import { existsSync as existsSync53, mkdirSync as mkdirSync47, readFileSync as readFileSync59, writeFileSync as writeFileSync46 } from "fs";
573722
573829
  function groupByFile2(edits) {
573723
573830
  const groups = new Map;
573724
573831
  for (const edit2 of edits) {
@@ -573757,16 +573864,16 @@ function applyWorkspaceEdit(root2, edit2) {
573757
573864
  const newContent = applyFileEdits(oldContent, edits);
573758
573865
  snapshots.set(file2, oldContent);
573759
573866
  if (!existsSync53(abs)) {
573760
- mkdirSync47(dirname64(abs), { recursive: true });
573867
+ mkdirSync47(dirname65(abs), { recursive: true });
573761
573868
  }
573762
- writeFileSync45(abs, newContent);
573869
+ writeFileSync46(abs, newContent);
573763
573870
  writtenFiles.push(file2);
573764
573871
  }
573765
573872
  return { writtenFiles, snapshots };
573766
573873
  }
573767
573874
  function rollbackWorkspaceEdit(root2, snapshots) {
573768
573875
  for (const [file2, content] of snapshots) {
573769
- writeFileSync45(join176(root2, file2), content);
573876
+ writeFileSync46(join176(root2, file2), content);
573770
573877
  }
573771
573878
  }
573772
573879
  function formatWorkspaceEditAsPatch(root2, edit2) {
@@ -573912,7 +574019,7 @@ var init_lspEditEngine = __esm(() => {
573912
574019
  });
573913
574020
 
573914
574021
  // src/services/repoEditing/ast/typescriptEngine.ts
573915
- import { dirname as dirname65, join as join177, relative as relative37 } from "path";
574022
+ import { dirname as dirname66, join as join177, relative as relative37 } from "path";
573916
574023
  function loadProgram(root2, files) {
573917
574024
  const configPath2 = import_typescript3.default.findConfigFile(root2, import_typescript3.default.sys.fileExists, "tsconfig.json");
573918
574025
  let program;
@@ -574160,11 +574267,11 @@ function normalizePath2(value) {
574160
574267
  function resolveRelativeImport(importingFileRel, specifier) {
574161
574268
  if (!specifier.startsWith("."))
574162
574269
  return;
574163
- const base2 = normalizePath2(join177(dirname65(importingFileRel), specifier));
574270
+ const base2 = normalizePath2(join177(dirname66(importingFileRel), specifier));
574164
574271
  return stripKnownExtension(base2);
574165
574272
  }
574166
574273
  function moduleSpecifierBetween(importingFileRel, targetFileRel) {
574167
- let specifier = normalizePath2(relative37(dirname65(importingFileRel), stripKnownExtension(targetFileRel)));
574274
+ let specifier = normalizePath2(relative37(dirname66(importingFileRel), stripKnownExtension(targetFileRel)));
574168
574275
  if (!specifier.startsWith("."))
574169
574276
  specifier = `./${specifier}`;
574170
574277
  return specifier;
@@ -575135,7 +575242,7 @@ var init_cite2 = __esm(() => {
575135
575242
  });
575136
575243
 
575137
575244
  // src/ur/fileops.ts
575138
- import { existsSync as existsSync54, mkdirSync as mkdirSync48, readdirSync as readdirSync22, readFileSync as readFileSync62, statSync as statSync13, writeFileSync as writeFileSync46 } from "fs";
575245
+ import { existsSync as existsSync54, mkdirSync as mkdirSync48, readdirSync as readdirSync22, readFileSync as readFileSync62, statSync as statSync13, writeFileSync as writeFileSync47 } from "fs";
575139
575246
  import { extname as extname19, isAbsolute as isAbsolute28, join as join178, relative as relative38, resolve as resolve46 } from "path";
575140
575247
  function readFileSafe2(cwd2, target, maxBytes = 64000) {
575141
575248
  const abs = isAbsolute28(target) ? target : resolve46(cwd2, target);
@@ -575208,7 +575315,7 @@ function indexWorkspace(cwd2) {
575208
575315
  const files = [...walk(cwd2, cwd2)];
575209
575316
  try {
575210
575317
  mkdirSync48(join178(cwd2, ".ur", "index"), { recursive: true });
575211
- writeFileSync46(join178(cwd2, ".ur", "index", "files.txt"), files.join(`
575318
+ writeFileSync47(join178(cwd2, ".ur", "index", "files.txt"), files.join(`
575212
575319
  `) + `
575213
575320
  `);
575214
575321
  } catch {}
@@ -575633,7 +575740,7 @@ var exports_mode = {};
575633
575740
  __export(exports_mode, {
575634
575741
  call: () => call110
575635
575742
  });
575636
- import { existsSync as existsSync57, mkdirSync as mkdirSync49, readFileSync as readFileSync63, writeFileSync as writeFileSync47 } from "fs";
575743
+ import { existsSync as existsSync57, mkdirSync as mkdirSync49, readFileSync as readFileSync63, writeFileSync as writeFileSync48 } from "fs";
575637
575744
  import { join as join179 } from "path";
575638
575745
  var MODES, SECURITY_MODES2, file2 = (cwd2) => join179(cwd2, ".ur", "mode"), call110 = async (args) => {
575639
575746
  const want = (args ?? "").trim().toLowerCase();
@@ -575654,7 +575761,7 @@ security: ${SECURITY_MODES2.join(", ")}` };
575654
575761
  }
575655
575762
  try {
575656
575763
  mkdirSync49(join179(getCwd2(), ".ur"), { recursive: true });
575657
- writeFileSync47(f, want + `
575764
+ writeFileSync48(f, want + `
575658
575765
  `);
575659
575766
  } catch {}
575660
575767
  return { type: "text", value: `mode \u2192 ${want} (UR will favor ${want}-oriented behavior; persisted to .ur/mode)` };
@@ -575776,7 +575883,7 @@ var exports_role_mode = {};
575776
575883
  __export(exports_role_mode, {
575777
575884
  call: () => call111
575778
575885
  });
575779
- import { existsSync as existsSync58, mkdirSync as mkdirSync50, writeFileSync as writeFileSync48 } from "fs";
575886
+ import { existsSync as existsSync58, mkdirSync as mkdirSync50, writeFileSync as writeFileSync49 } from "fs";
575780
575887
  import { join as join180 } from "path";
575781
575888
  function formatList() {
575782
575889
  const lines = ["Built-in role modes:", ""];
@@ -575841,7 +575948,7 @@ var call111 = async (args) => {
575841
575948
  skipped.push(`${mode2.name} (exists; use --force to overwrite)`);
575842
575949
  continue;
575843
575950
  }
575844
- writeFileSync48(path22, renderModeAgent(mode2), { encoding: "utf-8" });
575951
+ writeFileSync49(path22, renderModeAgent(mode2), { encoding: "utf-8" });
575845
575952
  created.push(path22);
575846
575953
  }
575847
575954
  if (json2) {
@@ -575888,14 +575995,14 @@ var init_role_mode2 = __esm(() => {
575888
575995
 
575889
575996
  // src/ur/researchGraph.ts
575890
575997
  import { appendFileSync as appendFileSync6, existsSync as existsSync59, mkdirSync as mkdirSync51, readFileSync as readFileSync64 } from "fs";
575891
- import { dirname as dirname66, join as join181 } from "path";
575998
+ import { dirname as dirname67, join as join181 } from "path";
575892
575999
  function isEntity(s) {
575893
576000
  return ENTITIES.includes(s);
575894
576001
  }
575895
576002
  function addEntity(cwd2, entity, text) {
575896
576003
  try {
575897
576004
  const f = file3(cwd2, entity);
575898
- mkdirSync51(dirname66(f), { recursive: true });
576005
+ mkdirSync51(dirname67(f), { recursive: true });
575899
576006
  appendFileSync6(f, JSON.stringify({ ts: new Date().toISOString(), text }) + `
575900
576007
  `);
575901
576008
  } catch {}
@@ -575988,7 +576095,7 @@ var exports_toolsmith = {};
575988
576095
  __export(exports_toolsmith, {
575989
576096
  call: () => call113
575990
576097
  });
575991
- import { existsSync as existsSync60, mkdirSync as mkdirSync52, readdirSync as readdirSync23, writeFileSync as writeFileSync49 } from "fs";
576098
+ import { existsSync as existsSync60, mkdirSync as mkdirSync52, readdirSync as readdirSync23, writeFileSync as writeFileSync50 } from "fs";
575992
576099
  import { join as join182 } from "path";
575993
576100
  var TEMPLATES, call113 = async (args) => {
575994
576101
  const [name, langArg] = (args ?? "").trim().split(/\s+/).filter(Boolean);
@@ -576008,7 +576115,7 @@ var TEMPLATES, call113 = async (args) => {
576008
576115
  const file4 = join182(dir, `${name}.${tpl.ext}`);
576009
576116
  if (existsSync60(file4))
576010
576117
  return { type: "text", value: `already exists: .ur/tools/${name}.${tpl.ext}` };
576011
- writeFileSync49(file4, tpl.body);
576118
+ writeFileSync50(file4, tpl.body);
576012
576119
  return { type: "text", value: `created .ur/tools/${name}.${tpl.ext}
576013
576120
  Ask UR to run it \u2014 it will request approval before executing, and you can keep it as a plugin if useful.` };
576014
576121
  };
@@ -576131,7 +576238,7 @@ var init_ur_doctor2 = __esm(() => {
576131
576238
  });
576132
576239
 
576133
576240
  // src/utils/urAssets.ts
576134
- import { existsSync as existsSync62, mkdirSync as mkdirSync53, writeFileSync as writeFileSync50 } from "fs";
576241
+ import { existsSync as existsSync62, mkdirSync as mkdirSync53, writeFileSync as writeFileSync51 } from "fs";
576135
576242
  import { join as join184 } from "path";
576136
576243
  function scaffoldUrAssets(cwd2) {
576137
576244
  const root2 = join184(cwd2, ".ur");
@@ -576146,7 +576253,7 @@ function scaffoldUrAssets(cwd2) {
576146
576253
  skipped.push(file4.path);
576147
576254
  continue;
576148
576255
  }
576149
- writeFileSync50(full, file4.content);
576256
+ writeFileSync51(full, file4.content);
576150
576257
  created.push(file4.path);
576151
576258
  }
576152
576259
  return { root: root2, created, skipped };
@@ -589599,7 +589706,7 @@ var init_rewind = __esm(() => {
589599
589706
  });
589600
589707
 
589601
589708
  // src/utils/heapDumpService.ts
589602
- import { createWriteStream as createWriteStream3, writeFileSync as writeFileSync51 } from "fs";
589709
+ import { createWriteStream as createWriteStream3, writeFileSync as writeFileSync52 } from "fs";
589603
589710
  import { readdir as readdir27, readFile as readFile47, writeFile as writeFile40 } from "fs/promises";
589604
589711
  import { join as join188 } from "path";
589605
589712
  import { pipeline as pipeline2 } from "stream/promises";
@@ -589691,7 +589798,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
589691
589798
  smapsRollup,
589692
589799
  platform: process.platform,
589693
589800
  nodeVersion: process.version,
589694
- ccVersion: "1.25.0"
589801
+ ccVersion: "1.25.3"
589695
589802
  };
589696
589803
  }
589697
589804
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -589738,7 +589845,7 @@ async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
589738
589845
  }
589739
589846
  async function writeHeapSnapshot(filepath) {
589740
589847
  if (typeof Bun !== "undefined") {
589741
- writeFileSync51(filepath, Bun.generateHeapSnapshot("v8", "arraybuffer"), {
589848
+ writeFileSync52(filepath, Bun.generateHeapSnapshot("v8", "arraybuffer"), {
589742
589849
  mode: 384
589743
589850
  });
589744
589851
  Bun.gc(true);
@@ -590277,7 +590384,7 @@ var init_bridge_kick = __esm(() => {
590277
590384
  var call136 = async () => {
590278
590385
  return {
590279
590386
  type: "text",
590280
- value: "1.25.0"
590387
+ value: "1.25.3"
590281
590388
  };
590282
590389
  }, version2, version_default;
590283
590390
  var init_version = __esm(() => {
@@ -592333,7 +592440,7 @@ var init_advisor2 = __esm(() => {
592333
592440
  // src/skills/bundledSkills.ts
592334
592441
  import { constants as fsConstants5 } from "fs";
592335
592442
  import { mkdir as mkdir37, open as open13 } from "fs/promises";
592336
- import { dirname as dirname67, isAbsolute as isAbsolute31, join as join191, normalize as normalize13, sep as pathSep3 } from "path";
592443
+ import { dirname as dirname68, isAbsolute as isAbsolute31, join as join191, normalize as normalize13, sep as pathSep3 } from "path";
592337
592444
  function registerBundledSkill(definition) {
592338
592445
  const { files: files2 } = definition;
592339
592446
  let skillRoot;
@@ -592397,7 +592504,7 @@ async function writeSkillFiles(dir, files2) {
592397
592504
  const byParent = new Map;
592398
592505
  for (const [relPath, content] of Object.entries(files2)) {
592399
592506
  const target = resolveSkillFilePath(dir, relPath);
592400
- const parent2 = dirname67(target);
592507
+ const parent2 = dirname68(target);
592401
592508
  const entry = [target, content];
592402
592509
  const group = byParent.get(parent2);
592403
592510
  if (group)
@@ -599369,7 +599476,7 @@ function generateHtmlReport(data, insights) {
599369
599476
  </html>`;
599370
599477
  }
599371
599478
  function buildExportData(data, insights, facets, remoteStats) {
599372
- const version3 = typeof MACRO !== "undefined" ? "1.25.0" : "unknown";
599479
+ const version3 = typeof MACRO !== "undefined" ? "1.25.3" : "unknown";
599373
599480
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
599374
599481
  const facets_summary = {
599375
599482
  total: facets.size,
@@ -600815,7 +600922,7 @@ import {
600815
600922
  unlink as unlink22,
600816
600923
  writeFile as writeFile44
600817
600924
  } from "fs/promises";
600818
- import { basename as basename44, dirname as dirname69, join as join198 } from "path";
600925
+ import { basename as basename44, dirname as dirname70, join as join198 } from "path";
600819
600926
  function isTranscriptMessage(entry) {
600820
600927
  const t = entry.type;
600821
600928
  return t === "user" || t === "assistant" || t === "attachment" || t === "system";
@@ -600861,7 +600968,7 @@ function getAgentMetadataPath(agentId) {
600861
600968
  }
600862
600969
  async function writeAgentMetadata(agentId, metadata) {
600863
600970
  const path22 = getAgentMetadataPath(agentId);
600864
- await mkdir40(dirname69(path22), { recursive: true });
600971
+ await mkdir40(dirname70(path22), { recursive: true });
600865
600972
  await writeFile44(path22, JSON.stringify(metadata));
600866
600973
  }
600867
600974
  async function readAgentMetadata(agentId) {
@@ -600884,7 +600991,7 @@ function getRemoteAgentMetadataPath(taskId) {
600884
600991
  }
600885
600992
  async function writeRemoteAgentMetadata(taskId, metadata) {
600886
600993
  const path22 = getRemoteAgentMetadataPath(taskId);
600887
- await mkdir40(dirname69(path22), { recursive: true });
600994
+ await mkdir40(dirname70(path22), { recursive: true });
600888
600995
  await writeFile44(path22, JSON.stringify(metadata));
600889
600996
  }
600890
600997
  async function readRemoteAgentMetadata(taskId) {
@@ -601073,7 +601180,7 @@ class Project {
601073
601180
  try {
601074
601181
  await fsAppendFile(filePath, data, { mode: 384 });
601075
601182
  } catch {
601076
- await mkdir40(dirname69(filePath), { recursive: true, mode: 448 });
601183
+ await mkdir40(dirname70(filePath), { recursive: true, mode: 448 });
601077
601184
  await fsAppendFile(filePath, data, { mode: 384 });
601078
601185
  }
601079
601186
  }
@@ -601673,7 +601780,7 @@ async function hydrateFromCCRv2InternalEvents(sessionId) {
601673
601780
  }
601674
601781
  for (const [agentId, entries] of byAgent) {
601675
601782
  const agentFile = getAgentTranscriptPath(asAgentId(agentId));
601676
- await mkdir40(dirname69(agentFile), { recursive: true, mode: 448 });
601783
+ await mkdir40(dirname70(agentFile), { recursive: true, mode: 448 });
601677
601784
  const agentContent = entries.map((p2) => jsonStringify(p2) + `
601678
601785
  `).join("");
601679
601786
  await writeFile44(agentFile, agentContent, {
@@ -602210,7 +602317,7 @@ function appendEntryToFile(fullPath, entry) {
602210
602317
  try {
602211
602318
  fs12.appendFileSync(fullPath, line, { mode: 384 });
602212
602319
  } catch {
602213
- fs12.mkdirSync(dirname69(fullPath), { mode: 448 });
602320
+ fs12.mkdirSync(dirname70(fullPath), { mode: 448 });
602214
602321
  fs12.appendFileSync(fullPath, line, { mode: 384 });
602215
602322
  }
602216
602323
  }
@@ -603644,7 +603751,7 @@ var init_sessionStorage = __esm(() => {
603644
603751
  init_settings2();
603645
603752
  init_slowOperations();
603646
603753
  init_uuid();
603647
- VERSION5 = typeof MACRO !== "undefined" ? "1.25.0" : "unknown";
603754
+ VERSION5 = typeof MACRO !== "undefined" ? "1.25.3" : "unknown";
603648
603755
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
603649
603756
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
603650
603757
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -604849,7 +604956,7 @@ var init_filesystem = __esm(() => {
604849
604956
  });
604850
604957
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
604851
604958
  const nonce = randomBytes18(16).toString("hex");
604852
- return join200(getURTempDir(), "bundled-skills", "1.25.0", nonce);
604959
+ return join200(getURTempDir(), "bundled-skills", "1.25.3", nonce);
604853
604960
  });
604854
604961
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
604855
604962
  });
@@ -609400,7 +609507,7 @@ import {
609400
609507
  symlink as symlink5,
609401
609508
  utimes as utimes2
609402
609509
  } from "fs/promises";
609403
- import { basename as basename46, dirname as dirname70, join as join202 } from "path";
609510
+ import { basename as basename46, dirname as dirname71, join as join202 } from "path";
609404
609511
  function validateWorktreeSlug(slug4) {
609405
609512
  if (slug4.length > MAX_WORKTREE_SLUG_LENGTH) {
609406
609513
  throw new Error(`Invalid worktree name: must be ${MAX_WORKTREE_SLUG_LENGTH} characters or fewer (got ${slug4.length})`);
@@ -609596,7 +609703,7 @@ async function copyWorktreeIncludeFiles(repoRoot, worktreePath) {
609596
609703
  const srcPath = join202(repoRoot, relativePath3);
609597
609704
  const destPath = join202(worktreePath, relativePath3);
609598
609705
  try {
609599
- await mkdir42(dirname70(destPath), { recursive: true });
609706
+ await mkdir42(dirname71(destPath), { recursive: true });
609600
609707
  await copyFile10(srcPath, destPath);
609601
609708
  copied.push(relativePath3);
609602
609709
  } catch (e) {
@@ -609613,7 +609720,7 @@ async function performPostCreationSetup(repoRoot, worktreePath) {
609613
609720
  const sourceSettingsLocal = join202(repoRoot, localSettingsRelativePath);
609614
609721
  try {
609615
609722
  const destSettingsLocal = join202(worktreePath, localSettingsRelativePath);
609616
- await mkdirRecursive(dirname70(destSettingsLocal));
609723
+ await mkdirRecursive(dirname71(destSettingsLocal));
609617
609724
  await copyFile10(sourceSettingsLocal, destSettingsLocal);
609618
609725
  logForDebugging(`Copied settings.local.json to worktree: ${destSettingsLocal}`);
609619
609726
  } catch (e) {
@@ -610400,7 +610507,7 @@ function getSessionSpecificGuidanceSection(enabledTools, skillToolCommands) {
610400
610507
  const hasAgentTool = enabledTools.has(AGENT_TOOL_NAME);
610401
610508
  const searchTools = hasEmbeddedSearchTools() ? `\`find\` or \`grep\` via the ${BASH_TOOL_NAME} tool` : `the ${GLOB_TOOL_NAME} or ${GREP_TOOL_NAME}`;
610402
610509
  const items = [
610403
- hasAskUserQuestionTool ? `When a request is ambiguous, underspecified, or could reasonably be done more than one way, ask with ${ASK_USER_QUESTION_TOOL_NAME} BEFORE doing significant or hard-to-reverse work, and use it the same way to confirm direction at key planning decisions. ALWAYS call the ${ASK_USER_QUESTION_TOOL_NAME} tool to ask such questions \u2014 NEVER write the questions and choices as plain prose in your reply, because the user can only pick options when you call the tool. Offer 2-4 concrete options per question (put any recommendation first and suffix it "(Recommended)"); the user picks with arrow keys and can always choose "Other" to type a custom answer. Don't ask what you can determine yourself, and ask no more than necessary. Also use it if you don't understand why the user denied a tool call.` : null,
610510
+ hasAskUserQuestionTool ? `When a request is ambiguous, underspecified, or could reasonably be done more than one way, ask with ${ASK_USER_QUESTION_TOOL_NAME} BEFORE doing significant or hard-to-reverse work, and use it the same way to confirm direction at key planning decisions. ALWAYS call the ${ASK_USER_QUESTION_TOOL_NAME} tool to ask such questions \u2014 NEVER write the questions and choices as plain prose in your reply, because the user can only pick options when you call the tool. Offer 2-8 concrete options per question (put any recommendation first and suffix it "(Recommended)"); the user picks with arrow keys and can always choose "Other" to type a custom answer. Don't ask what you can determine yourself, and ask no more than necessary. Also use it if you don't understand why the user denied a tool call.` : null,
610404
610511
  getIsNonInteractiveSession() ? null : `If you need the user to run a shell command themselves (e.g., an interactive login like \`gcloud auth login\`), suggest they type \`! <command>\` in the prompt \u2014 the \`!\` prefix runs the command in this session so its output lands directly in the conversation.`,
610405
610512
  hasAgentTool ? getAgentToolSection() : null,
610406
610513
  ...hasAgentTool && areExplorePlanAgentsEnabled() && !isForkSubagentEnabled() ? [
@@ -611139,7 +611246,7 @@ function computeFingerprint(messageText, version3) {
611139
611246
  }
611140
611247
  function computeFingerprintFromMessages(messages) {
611141
611248
  const firstMessageText = extractFirstMessageText(messages);
611142
- return computeFingerprint(firstMessageText, "1.25.0");
611249
+ return computeFingerprint(firstMessageText, "1.25.3");
611143
611250
  }
611144
611251
  var FINGERPRINT_SALT = "59cf53e54c78";
611145
611252
  var init_fingerprint = () => {};
@@ -613005,7 +613112,7 @@ async function sideQuery(opts) {
613005
613112
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
613006
613113
  }
613007
613114
  const messageText = extractFirstUserMessageText(messages);
613008
- const fingerprint = computeFingerprint(messageText, "1.25.0");
613115
+ const fingerprint = computeFingerprint(messageText, "1.25.3");
613009
613116
  const attributionHeader = getAttributionHeader(fingerprint);
613010
613117
  const systemBlocks = [
613011
613118
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -617742,7 +617849,7 @@ function buildSystemInitMessage(inputs) {
617742
617849
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
617743
617850
  apiKeySource: getURHQApiKeyWithSource().source,
617744
617851
  betas: getSdkBetas(),
617745
- ur_version: "1.25.0",
617852
+ ur_version: "1.25.3",
617746
617853
  output_style: outputStyle2,
617747
617854
  agents: inputs.agents.map((agent) => agent.agentType),
617748
617855
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -632370,7 +632477,7 @@ var init_useVoiceEnabled = __esm(() => {
632370
632477
  function getSemverPart(version3) {
632371
632478
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
632372
632479
  }
632373
- function useUpdateNotification(updatedVersion, initialVersion = "1.25.0") {
632480
+ function useUpdateNotification(updatedVersion, initialVersion = "1.25.3") {
632374
632481
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react224.useState(() => getSemverPart(initialVersion));
632375
632482
  if (!updatedVersion) {
632376
632483
  return null;
@@ -632419,7 +632526,7 @@ function AutoUpdater({
632419
632526
  return;
632420
632527
  }
632421
632528
  if (false) {}
632422
- const currentVersion = "1.25.0";
632529
+ const currentVersion = "1.25.3";
632423
632530
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
632424
632531
  let latestVersion = await getLatestVersion(channel);
632425
632532
  const isDisabled = isAutoUpdaterDisabled();
@@ -632648,12 +632755,12 @@ function NativeAutoUpdater({
632648
632755
  logEvent("tengu_native_auto_updater_start", {});
632649
632756
  try {
632650
632757
  const maxVersion = await getMaxVersion();
632651
- if (maxVersion && gt("1.25.0", maxVersion)) {
632758
+ if (maxVersion && gt("1.25.3", maxVersion)) {
632652
632759
  const msg = await getMaxVersionMessage();
632653
632760
  setMaxVersionIssue(msg ?? "affects your version");
632654
632761
  }
632655
632762
  const result = await installLatest(channel);
632656
- const currentVersion = "1.25.0";
632763
+ const currentVersion = "1.25.3";
632657
632764
  const latencyMs = Date.now() - startTime;
632658
632765
  if (result.lockFailed) {
632659
632766
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -632790,17 +632897,17 @@ function PackageManagerAutoUpdater(t0) {
632790
632897
  const maxVersion = await getMaxVersion();
632791
632898
  if (maxVersion && latest && gt(latest, maxVersion)) {
632792
632899
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
632793
- if (gte("1.25.0", maxVersion)) {
632794
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.25.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
632900
+ if (gte("1.25.3", maxVersion)) {
632901
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.25.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
632795
632902
  setUpdateAvailable(false);
632796
632903
  return;
632797
632904
  }
632798
632905
  latest = maxVersion;
632799
632906
  }
632800
- const hasUpdate = latest && !gte("1.25.0", latest) && !shouldSkipVersion(latest);
632907
+ const hasUpdate = latest && !gte("1.25.3", latest) && !shouldSkipVersion(latest);
632801
632908
  setUpdateAvailable(!!hasUpdate);
632802
632909
  if (hasUpdate) {
632803
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.25.0"} -> ${latest}`);
632910
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.25.3"} -> ${latest}`);
632804
632911
  }
632805
632912
  };
632806
632913
  $3[0] = t1;
@@ -632834,7 +632941,7 @@ function PackageManagerAutoUpdater(t0) {
632834
632941
  wrap: "truncate",
632835
632942
  children: [
632836
632943
  "currentVersion: ",
632837
- "1.25.0"
632944
+ "1.25.3"
632838
632945
  ]
632839
632946
  }, undefined, true, undefined, this);
632840
632947
  $3[3] = verbose;
@@ -645149,21 +645256,35 @@ var init_VimTextInput = __esm(() => {
645149
645256
 
645150
645257
  // src/services/providers/providerRegistry.ts
645151
645258
  import { spawn as spawn12 } from "child_process";
645259
+ function normalizeProviderInput(value) {
645260
+ return value.trim().toLowerCase().replace(/[_\s]+/g, "-");
645261
+ }
645152
645262
  function isProviderId(value) {
645153
645263
  return PROVIDER_IDS.includes(value);
645154
645264
  }
645265
+ function resolveProviderId(value) {
645266
+ const normalized = normalizeProviderInput(value);
645267
+ if (isProviderId(normalized)) {
645268
+ return normalized;
645269
+ }
645270
+ return PROVIDER_ALIASES[normalized] ?? null;
645271
+ }
645272
+ function providerAliasesFor(id) {
645273
+ return PROVIDER_ALIAS_ENTRIES.find((entry) => entry.canonical === id)?.aliases ?? [];
645274
+ }
645155
645275
  function getProviderDefinition(id) {
645156
645276
  return PROVIDERS[id];
645157
645277
  }
645158
645278
  function getActiveProviderSettings(settings = getInitialSettings()) {
645159
645279
  const configured = settings.provider ?? {};
645160
- const active = configured.active && isProviderId(configured.active) ? configured.active : "ollama";
645280
+ const active = configured.active ? resolveProviderId(configured.active) ?? "ollama" : "ollama";
645281
+ const fallback = configured.fallback === "disabled" ? "disabled" : configured.fallback ? resolveProviderId(configured.fallback) ?? undefined : undefined;
645161
645282
  return {
645162
645283
  active,
645163
645284
  model: configured.model ?? settings.model,
645164
645285
  baseUrl: configured.baseUrl,
645165
645286
  commandPath: configured.commandPath,
645166
- fallback: configured.fallback
645287
+ fallback
645167
645288
  };
645168
645289
  }
645169
645290
  function getProviderRuntimeInfo(settings = getInitialSettings()) {
@@ -645235,21 +645356,23 @@ function setSafeProviderConfig(key, value) {
645235
645356
  let settings;
645236
645357
  try {
645237
645358
  if (key === "provider") {
645238
- if (!isProviderId(trimmed)) {
645359
+ const provider = resolveProviderId(trimmed);
645360
+ if (!provider) {
645239
645361
  return {
645240
645362
  ok: false,
645241
645363
  message: `Unknown provider "${trimmed}". Run: ur provider list`
645242
645364
  };
645243
645365
  }
645244
- settings = { provider: { active: trimmed } };
645366
+ settings = { provider: { active: provider } };
645245
645367
  } else if (key === "provider.fallback") {
645246
- if (trimmed !== "disabled" && !isProviderId(trimmed)) {
645368
+ const fallback = trimmed === "disabled" ? "disabled" : resolveProviderId(trimmed);
645369
+ if (!fallback) {
645247
645370
  return {
645248
645371
  ok: false,
645249
645372
  message: `Unknown fallback provider "${trimmed}". Run: ur provider list`
645250
645373
  };
645251
645374
  }
645252
- settings = { provider: { fallback: trimmed } };
645375
+ settings = { provider: { fallback } };
645253
645376
  } else if (key === "provider.command_path") {
645254
645377
  settings = { provider: { commandPath: trimmed } };
645255
645378
  } else if (key === "model") {
@@ -645270,7 +645393,8 @@ function setSafeProviderConfig(key, value) {
645270
645393
  message: `Failed to write UR-AGENT settings: ${result.error.message}`
645271
645394
  };
645272
645395
  }
645273
- return { ok: true, message: `Set ${key} to ${trimmed}.` };
645396
+ const savedValue = key === "provider" || key === "provider.fallback" ? key === "provider.fallback" && trimmed === "disabled" ? "disabled" : resolveProviderId(trimmed) ?? trimmed : trimmed;
645397
+ return { ok: true, message: `Set ${key} to ${savedValue}.` };
645274
645398
  }
645275
645399
  function outputText(result) {
645276
645400
  return `${result.stdout}
@@ -645389,11 +645513,11 @@ async function checkEndpoint(definition, settings, adapters, result) {
645389
645513
  async function checkSubscriptionProvider(definition, settings, adapters, result) {
645390
645514
  const commandPath = await resolveCommand(definition, settings, adapters);
645391
645515
  if (!commandPath) {
645392
- const command8 = definition.commandCandidates?.[0] ?? definition.id;
645516
+ const commands = definition.commandCandidates?.join(", ") ?? definition.id;
645393
645517
  result.checks.push({
645394
645518
  name: "cli",
645395
645519
  status: "fail",
645396
- message: `${command8} is not installed or not on PATH.`
645520
+ message: `No official CLI command found on PATH. Tried: ${commands}.`
645397
645521
  });
645398
645522
  addFailure(result, "CLI missing", `Install the official ${definition.displayName} CLI, then run ur auth ${authAliasForProvider(definition.id)}.`);
645399
645523
  return;
@@ -645614,12 +645738,14 @@ async function launchProviderAuth(alias2, options2 = {}) {
645614
645738
  }
645615
645739
  const commandPath = await resolveCommand(getProviderDefinition(provider), {}, {});
645616
645740
  if (!commandPath) {
645741
+ const commands = getProviderDefinition(provider).commandCandidates?.join(", ") ?? provider;
645617
645742
  return {
645618
645743
  ok: false,
645619
- message: `${authCommand.command} is not installed. Install the official CLI first.`
645744
+ message: `No official ${getProviderDefinition(provider).displayName} CLI command found. Tried: ${commands}. Install the official CLI first.`
645620
645745
  };
645621
645746
  }
645622
- const printable = [authCommand.command, ...authCommand.args].join(" ");
645747
+ const printableCommand = commandPath.split(/[\\/]/).pop() ?? authCommand.command;
645748
+ const printable = [printableCommand, ...authCommand.args].join(" ");
645623
645749
  if (options2.dryRun || !process.stdin.isTTY || !process.stdout.isTTY) {
645624
645750
  return {
645625
645751
  ok: true,
@@ -645647,6 +645773,7 @@ function formatProviderList(json2 = false) {
645647
645773
  const providers = listProviders().map((provider) => ({
645648
645774
  id: provider.id,
645649
645775
  name: provider.displayName,
645776
+ aliases: providerAliasesFor(provider.id),
645650
645777
  accessType: provider.accessType,
645651
645778
  authMode: provider.authMode,
645652
645779
  legalPath: provider.legalPath
@@ -645655,9 +645782,9 @@ function formatProviderList(json2 = false) {
645655
645782
  return JSON.stringify(providers, null, 2);
645656
645783
  }
645657
645784
  return [
645658
- "Provider Access type Legal path",
645659
- "---------------------------------------------------------",
645660
- ...providers.map((provider) => `${provider.name.padEnd(20)} ${provider.accessType.padEnd(17)} ${provider.legalPath}`)
645785
+ "Provider | ID | Aliases | Access type | Legal path",
645786
+ "--- | --- | --- | --- | ---",
645787
+ ...providers.map((provider) => `${provider.name} | ${provider.id} | ${provider.aliases.slice(0, 3).join(", ") || "-"} | ${provider.accessType} | ${provider.legalPath}`)
645661
645788
  ].join(`
645662
645789
  `);
645663
645790
  }
@@ -645697,7 +645824,7 @@ Suggested fix: ${result.suggestedFix}` : "";
645697
645824
  Auth mode: ${authModeLabel(result.authMode)}
645698
645825
  Ready: ${result.ok ? "yes" : "no"}${failure}${fix}`;
645699
645826
  }
645700
- var PROVIDER_IDS, LOCALHOST_RE, PROVIDERS;
645827
+ var PROVIDER_IDS, LOCALHOST_RE, PROVIDERS, PROVIDER_ALIAS_ENTRIES, PROVIDER_ALIASES;
645701
645828
  var init_providerRegistry = __esm(() => {
645702
645829
  init_execFileNoThrow();
645703
645830
  init_settings2();
@@ -645763,7 +645890,7 @@ var init_providerRegistry = __esm(() => {
645763
645890
  accessType: "subscription",
645764
645891
  authMode: "personal-login",
645765
645892
  legalPath: "official Antigravity CLI login, where supported",
645766
- commandCandidates: ["antigravity", "google-antigravity", "ag"],
645893
+ commandCandidates: ["agy", "antigravity", "google-antigravity", "ag"],
645767
645894
  versionArgs: ["--version"],
645768
645895
  loginArgs: []
645769
645896
  },
@@ -645854,6 +645981,65 @@ var init_providerRegistry = __esm(() => {
645854
645981
  endpointKind: "openai-compatible"
645855
645982
  }
645856
645983
  };
645984
+ PROVIDER_ALIAS_ENTRIES = [
645985
+ {
645986
+ canonical: "codex-cli",
645987
+ aliases: ["chatgpt", "codex", "codex cli", "openai codex", "chatgpt codex"]
645988
+ },
645989
+ {
645990
+ canonical: "claude-code-cli",
645991
+ aliases: ["claude", "claude code", "claude cli", "anthropic claude"]
645992
+ },
645993
+ {
645994
+ canonical: "gemini-cli",
645995
+ aliases: ["gemini", "gemini cli", "gemini code assist", "google gemini cli"]
645996
+ },
645997
+ {
645998
+ canonical: "antigravity-cli",
645999
+ aliases: ["antigravity", "antigravity cli", "agy", "ag", "google antigravity"]
646000
+ },
646001
+ {
646002
+ canonical: "openai-api",
646003
+ aliases: ["openai", "openai api"]
646004
+ },
646005
+ {
646006
+ canonical: "anthropic-api",
646007
+ aliases: ["anthropic", "anthropic claude api", "claude api"]
646008
+ },
646009
+ {
646010
+ canonical: "gemini-api",
646011
+ aliases: ["gemini api", "google gemini api"]
646012
+ },
646013
+ {
646014
+ canonical: "openrouter",
646015
+ aliases: ["openrouter api"]
646016
+ },
646017
+ {
646018
+ canonical: "openai-compatible",
646019
+ aliases: ["compatible", "openai compatible", "openai compatible api"]
646020
+ },
646021
+ {
646022
+ canonical: "ollama",
646023
+ aliases: ["ollama local"]
646024
+ },
646025
+ {
646026
+ canonical: "lmstudio",
646027
+ aliases: ["lm studio", "lm-studio"]
646028
+ },
646029
+ {
646030
+ canonical: "llama.cpp",
646031
+ aliases: ["llama cpp", "llamacpp", "llama-cpp"]
646032
+ },
646033
+ {
646034
+ canonical: "vllm",
646035
+ aliases: ["vllm server"]
646036
+ }
646037
+ ];
646038
+ PROVIDER_ALIASES = Object.fromEntries(PROVIDER_ALIAS_ENTRIES.flatMap((entry) => [
646039
+ [normalizeProviderInput(entry.canonical), entry.canonical],
646040
+ [entry.canonical, entry.canonical],
646041
+ ...entry.aliases.map((alias2) => [normalizeProviderInput(alias2), entry.canonical])
646042
+ ]));
645857
646043
  });
645858
646044
 
645859
646045
  // src/utils/statusBar.ts
@@ -645989,7 +646175,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
645989
646175
  project_dir: getOriginalCwd(),
645990
646176
  added_dirs: addedDirs
645991
646177
  },
645992
- version: "1.25.0",
646178
+ version: "1.25.3",
645993
646179
  output_style: {
645994
646180
  name: outputStyleName
645995
646181
  },
@@ -646064,7 +646250,7 @@ function StatusLineInner({
646064
646250
  const taskValues = Object.values(tasks2);
646065
646251
  const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
646066
646252
  const defaultStatusLineText = buildDefaultStatusBar({
646067
- version: "1.25.0",
646253
+ version: "1.25.3",
646068
646254
  providerLabel: providerRuntime.providerLabel,
646069
646255
  authMode: providerRuntime.authLabel,
646070
646256
  model: providerRuntime.model ?? renderModelName(mainLoopModel),
@@ -655904,7 +656090,7 @@ __export(exports_asciicast, {
655904
656090
  _resetRecordingStateForTesting: () => _resetRecordingStateForTesting
655905
656091
  });
655906
656092
  import { appendFile as appendFile7, rename as rename10 } from "fs/promises";
655907
- import { basename as basename59, dirname as dirname71, join as join208 } from "path";
656093
+ import { basename as basename59, dirname as dirname72, join as join208 } from "path";
655908
656094
  function getRecordFilePath() {
655909
656095
  if (recordingState.filePath !== null) {
655910
656096
  return recordingState.filePath;
@@ -655986,7 +656172,7 @@ function installAsciicastRecorder() {
655986
656172
  }
655987
656173
  });
655988
656174
  try {
655989
- getFsImplementation().mkdirSync(dirname71(filePath));
656175
+ getFsImplementation().mkdirSync(dirname72(filePath));
655990
656176
  } catch {}
655991
656177
  getFsImplementation().appendFileSync(filePath, header + `
655992
656178
  `, { mode: 384 });
@@ -656055,7 +656241,7 @@ var init_asciicast = __esm(() => {
656055
656241
  });
656056
656242
 
656057
656243
  // src/utils/sessionRestore.ts
656058
- import { dirname as dirname72 } from "path";
656244
+ import { dirname as dirname73 } from "path";
656059
656245
  function extractTodosFromTranscript(messages) {
656060
656246
  for (let i3 = messages.length - 1;i3 >= 0; i3--) {
656061
656247
  const msg = messages[i3];
@@ -656180,7 +656366,7 @@ async function processResumedConversation(result, opts, context4) {
656180
656366
  if (!opts.forkSession) {
656181
656367
  const sid = opts.sessionIdOverride ?? result.sessionId;
656182
656368
  if (sid) {
656183
- switchSession(asSessionId(sid), opts.transcriptPath ? dirname72(opts.transcriptPath) : null);
656369
+ switchSession(asSessionId(sid), opts.transcriptPath ? dirname73(opts.transcriptPath) : null);
656184
656370
  await renameRecordingForSession();
656185
656371
  await resetSessionFilePointer();
656186
656372
  restoreCostStateForSession(sid);
@@ -657550,7 +657736,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
657550
657736
  } catch {}
657551
657737
  const data = {
657552
657738
  trigger: trigger2,
657553
- version: "1.25.0",
657739
+ version: "1.25.3",
657554
657740
  platform: process.platform,
657555
657741
  transcript,
657556
657742
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -664809,7 +664995,7 @@ var exports_REPL = {};
664809
664995
  __export(exports_REPL, {
664810
664996
  REPL: () => REPL
664811
664997
  });
664812
- import { dirname as dirname73, join as join211 } from "path";
664998
+ import { dirname as dirname74, join as join211 } from "path";
664813
664999
  import { tmpdir as tmpdir13 } from "os";
664814
665000
  import { writeFile as writeFile47 } from "fs/promises";
664815
665001
  import { randomUUID as randomUUID51 } from "crypto";
@@ -665749,7 +665935,7 @@ function REPL({
665749
665935
  const targetSessionCosts = getStoredSessionCosts(sessionId);
665750
665936
  saveCurrentSessionCosts();
665751
665937
  resetCostState();
665752
- switchSession(asSessionId(sessionId), log2.fullPath ? dirname73(log2.fullPath) : null);
665938
+ switchSession(asSessionId(sessionId), log2.fullPath ? dirname74(log2.fullPath) : null);
665753
665939
  const {
665754
665940
  renameRecordingForSession: renameRecordingForSession2
665755
665941
  } = await Promise.resolve().then(() => (init_asciicast(), exports_asciicast));
@@ -669432,7 +669618,7 @@ function WelcomeV2() {
669432
669618
  dimColor: true,
669433
669619
  children: [
669434
669620
  "v",
669435
- "1.25.0"
669621
+ "1.25.3"
669436
669622
  ]
669437
669623
  }, undefined, true, undefined, this)
669438
669624
  ]
@@ -670692,7 +670878,7 @@ function completeOnboarding() {
670692
670878
  saveGlobalConfig((current) => ({
670693
670879
  ...current,
670694
670880
  hasCompletedOnboarding: true,
670695
- lastOnboardingVersion: "1.25.0"
670881
+ lastOnboardingVersion: "1.25.3"
670696
670882
  }));
670697
670883
  }
670698
670884
  function showDialog(root2, renderer) {
@@ -671836,7 +672022,7 @@ var exports_ResumeConversation = {};
671836
672022
  __export(exports_ResumeConversation, {
671837
672023
  ResumeConversation: () => ResumeConversation
671838
672024
  });
671839
- import { dirname as dirname74 } from "path";
672025
+ import { dirname as dirname75 } from "path";
671840
672026
  function parsePrIdentifier(value) {
671841
672027
  const directNumber = parseInt(value, 10);
671842
672028
  if (!isNaN(directNumber) && directNumber > 0) {
@@ -671968,7 +672154,7 @@ function ResumeConversation({
671968
672154
  }
671969
672155
  if (false) {}
671970
672156
  if (result_3.sessionId && !forkSession) {
671971
- switchSession(asSessionId(result_3.sessionId), log_0.fullPath ? dirname74(log_0.fullPath) : null);
672157
+ switchSession(asSessionId(result_3.sessionId), log_0.fullPath ? dirname75(log_0.fullPath) : null);
671972
672158
  await renameRecordingForSession();
671973
672159
  await resetSessionFilePointer();
671974
672160
  restoreCostStateForSession(result_3.sessionId);
@@ -675744,7 +675930,7 @@ var init_createDirectConnectSession = __esm(() => {
675744
675930
  });
675745
675931
 
675746
675932
  // src/utils/errorLogSink.ts
675747
- import { dirname as dirname75, join as join212 } from "path";
675933
+ import { dirname as dirname76, join as join212 } from "path";
675748
675934
  function getErrorsPath() {
675749
675935
  return join212(CACHE_PATHS.errors(), DATE + ".jsonl");
675750
675936
  }
@@ -675765,7 +675951,7 @@ function createJsonlWriter(options2) {
675765
675951
  function getLogWriter(path24) {
675766
675952
  let writer = logWriters.get(path24);
675767
675953
  if (!writer) {
675768
- const dir = dirname75(path24);
675954
+ const dir = dirname76(path24);
675769
675955
  writer = createJsonlWriter({
675770
675956
  writeFn: (content) => {
675771
675957
  try {
@@ -675793,7 +675979,7 @@ function appendToLog(path24, message) {
675793
675979
  cwd: getFsImplementation().cwd(),
675794
675980
  userType: process.env.USER_TYPE,
675795
675981
  sessionId: getSessionId(),
675796
- version: "1.25.0"
675982
+ version: "1.25.3"
675797
675983
  };
675798
675984
  getLogWriter(path24).write(messageWithTimestamp);
675799
675985
  }
@@ -679887,8 +680073,8 @@ async function getEnvLessBridgeConfig() {
679887
680073
  }
679888
680074
  async function checkEnvLessBridgeMinVersion() {
679889
680075
  const cfg = await getEnvLessBridgeConfig();
679890
- if (cfg.min_version && lt("1.25.0", cfg.min_version)) {
679891
- return `Your version of UR (${"1.25.0"}) is too old for Remote Control.
680076
+ if (cfg.min_version && lt("1.25.3", cfg.min_version)) {
680077
+ return `Your version of UR (${"1.25.3"}) is too old for Remote Control.
679892
680078
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
679893
680079
  }
679894
680080
  return null;
@@ -680216,14 +680402,14 @@ __export(exports_bridgePointer, {
680216
680402
  BRIDGE_POINTER_TTL_MS: () => BRIDGE_POINTER_TTL_MS
680217
680403
  });
680218
680404
  import { mkdir as mkdir46, readFile as readFile55, stat as stat50, unlink as unlink26, writeFile as writeFile50 } from "fs/promises";
680219
- import { dirname as dirname76, join as join216 } from "path";
680405
+ import { dirname as dirname77, join as join216 } from "path";
680220
680406
  function getBridgePointerPath(dir) {
680221
680407
  return join216(getProjectsDir(), sanitizePath2(dir), "bridge-pointer.json");
680222
680408
  }
680223
680409
  async function writeBridgePointer(dir, pointer) {
680224
680410
  const path24 = getBridgePointerPath(dir);
680225
680411
  try {
680226
- await mkdir46(dirname76(path24), { recursive: true });
680412
+ await mkdir46(dirname77(path24), { recursive: true });
680227
680413
  await writeFile50(path24, jsonStringify(pointer), "utf8");
680228
680414
  logForDebugging(`[bridge:pointer] wrote ${path24}`);
680229
680415
  } catch (err2) {
@@ -680362,7 +680548,7 @@ async function initBridgeCore(params) {
680362
680548
  const rawApi = createBridgeApiClient({
680363
680549
  baseUrl,
680364
680550
  getAccessToken,
680365
- runnerVersion: "1.25.0",
680551
+ runnerVersion: "1.25.3",
680366
680552
  onDebug: logForDebugging,
680367
680553
  onAuth401,
680368
680554
  getTrustedDeviceToken
@@ -682227,7 +682413,7 @@ __export(exports_print, {
682227
682413
  canBatchWith: () => canBatchWith
682228
682414
  });
682229
682415
  import { readFile as readFile56, stat as stat51, writeFile as writeFile51 } from "fs/promises";
682230
- import { dirname as dirname77 } from "path";
682416
+ import { dirname as dirname78 } from "path";
682231
682417
  import { cwd as cwd2 } from "process";
682232
682418
  import { randomUUID as randomUUID57 } from "crypto";
682233
682419
  function trackReceivedMessageUuid(uuid3) {
@@ -684680,7 +684866,7 @@ async function loadInitialMessages(setAppState, options2) {
684680
684866
  if (false) {}
684681
684867
  if (!options2.forkSession) {
684682
684868
  if (result.sessionId) {
684683
- switchSession(asSessionId(result.sessionId), result.fullPath ? dirname77(result.fullPath) : null);
684869
+ switchSession(asSessionId(result.sessionId), result.fullPath ? dirname78(result.fullPath) : null);
684684
684870
  if (persistSession) {
684685
684871
  await resetSessionFilePointer();
684686
684872
  }
@@ -684778,7 +684964,7 @@ async function loadInitialMessages(setAppState, options2) {
684778
684964
  }
684779
684965
  if (false) {}
684780
684966
  if (!options2.forkSession && result.sessionId) {
684781
- switchSession(asSessionId(result.sessionId), result.fullPath ? dirname77(result.fullPath) : null);
684967
+ switchSession(asSessionId(result.sessionId), result.fullPath ? dirname78(result.fullPath) : null);
684782
684968
  if (persistSession) {
684783
684969
  await resetSessionFilePointer();
684784
684970
  }
@@ -686043,7 +686229,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
686043
686229
  setCwd(cwd3);
686044
686230
  const server2 = new Server({
686045
686231
  name: "ur/tengu",
686046
- version: "1.25.0"
686232
+ version: "1.25.3"
686047
686233
  }, {
686048
686234
  capabilities: {
686049
686235
  tools: {}
@@ -686612,11 +686798,12 @@ async function providerStatusHandler(options2 = {}) {
686612
686798
  async function providerDoctorHandler(providerArg, options2 = {}) {
686613
686799
  let provider;
686614
686800
  if (providerArg) {
686615
- if (!isProviderId(providerArg)) {
686801
+ const resolved = resolveProviderId(providerArg);
686802
+ if (!resolved) {
686616
686803
  writeError(`Unknown provider "${providerArg}". Run: ur provider list`);
686617
686804
  process.exit(1);
686618
686805
  }
686619
- provider = providerArg;
686806
+ provider = resolved;
686620
686807
  }
686621
686808
  const settings = getInitialSettings();
686622
686809
  const active = getActiveProviderSettings(settings).active ?? "ollama";
@@ -686675,7 +686862,7 @@ __export(exports_plugins, {
686675
686862
  VALID_UPDATE_SCOPES: () => VALID_UPDATE_SCOPES,
686676
686863
  VALID_INSTALLABLE_SCOPES: () => VALID_INSTALLABLE_SCOPES
686677
686864
  });
686678
- import { basename as basename61, dirname as dirname78 } from "path";
686865
+ import { basename as basename61, dirname as dirname79 } from "path";
686679
686866
  function handleMarketplaceError(error40, action3) {
686680
686867
  logError2(error40);
686681
686868
  cliError(`${figures_default.cross} Failed to ${action3}: ${errorMessage2(error40)}`);
@@ -686708,9 +686895,9 @@ async function pluginValidateHandler(manifestPath5, options2) {
686708
686895
  printValidationResult(result);
686709
686896
  let contentResults = [];
686710
686897
  if (result.fileType === "plugin") {
686711
- const manifestDir = dirname78(result.filePath);
686898
+ const manifestDir = dirname79(result.filePath);
686712
686899
  if (basename61(manifestDir) === ".ur-plugin") {
686713
- contentResults = await validatePluginContents(dirname78(manifestDir));
686900
+ contentResults = await validatePluginContents(dirname79(manifestDir));
686714
686901
  for (const r of contentResults) {
686715
686902
  console.log(`Validating ${r.fileType}: ${r.filePath}
686716
686903
  `);
@@ -687824,7 +688011,7 @@ async function update() {
687824
688011
  logEvent("tengu_update_check", {});
687825
688012
  const diagnostic = await getDoctorDiagnostic();
687826
688013
  const result = await checkUpgradeStatus({
687827
- currentVersion: "1.25.0",
688014
+ currentVersion: "1.25.3",
687828
688015
  packageName: UR_AGENT_PACKAGE_NAME,
687829
688016
  installationType: diagnostic.installationType,
687830
688017
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -689070,7 +689257,7 @@ ${customInstructions}` : customInstructions;
689070
689257
  }
689071
689258
  }
689072
689259
  logForDiagnosticsNoPII("info", "started", {
689073
- version: "1.25.0",
689260
+ version: "1.25.3",
689074
689261
  is_native_binary: isInBundledMode()
689075
689262
  });
689076
689263
  registerCleanup(async () => {
@@ -689854,7 +690041,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
689854
690041
  pendingHookMessages
689855
690042
  }, renderAndRun);
689856
690043
  }
689857
- }).version("1.25.0 (UR-AGENT)", "-v, --version", "Output the version number");
690044
+ }).version("1.25.3 (UR-AGENT)", "-v, --version", "Output the version number");
689858
690045
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
689859
690046
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
689860
690047
  if (canUserConfigureAdvisor()) {
@@ -690731,7 +690918,7 @@ if (false) {}
690731
690918
  async function main2() {
690732
690919
  const args = process.argv.slice(2);
690733
690920
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
690734
- console.log(`${"1.25.0"} (UR-AGENT)`);
690921
+ console.log(`${"1.25.3"} (UR-AGENT)`);
690735
690922
  return;
690736
690923
  }
690737
690924
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {