@verboo/code 0.8.1 → 0.8.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.
Files changed (2) hide show
  1. package/dist/cli.mjs +154 -131
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -674,6 +674,11 @@ function resolveClaudeConfigHomeDir(options) {
674
674
  function getTeamsDir() {
675
675
  return join(getClaudeConfigHomeDir(), "teams");
676
676
  }
677
+ function getLegacyClaudeConfigHomeDir() {
678
+ if (process.env.VERBOO_CONFIG_DIR)
679
+ return null;
680
+ return join(homedir(), ".claude").normalize("NFC");
681
+ }
677
682
  function hasNodeOption(flag) {
678
683
  const nodeOptions = process.env.NODE_OPTIONS;
679
684
  if (!nodeOptions) {
@@ -157532,8 +157537,9 @@ var init_pathValidation = __esm(() => {
157532
157537
  });
157533
157538
 
157534
157539
  // src/utils/plugins/pluginDirectories.ts
157535
- import { mkdirSync as mkdirSync4 } from "fs";
157540
+ import { mkdirSync as mkdirSync4, statSync as statSync6 } from "fs";
157536
157541
  import { readdir as readdir7, rm, stat as stat13 } from "fs/promises";
157542
+ import { homedir as homedir13 } from "os";
157537
157543
  import { delimiter, join as join29 } from "path";
157538
157544
  function getPluginsDirectoryName() {
157539
157545
  if (getUseCoworkPlugins()) {
@@ -157553,9 +157559,20 @@ function getPluginsDirectory() {
157553
157559
  }
157554
157560
  function getPluginSeedDirs() {
157555
157561
  const raw = process.env.CLAUDE_CODE_PLUGIN_SEED_DIR;
157556
- if (!raw)
157562
+ if (raw) {
157563
+ return raw.split(delimiter).filter(Boolean).map(expandTilde);
157564
+ }
157565
+ if (process.env.VERBOO_CONFIG_DIR)
157566
+ return [];
157567
+ const legacy = join29(homedir13(), ".claude", "plugins");
157568
+ if (legacy === getPluginsDirectory())
157557
157569
  return [];
157558
- return raw.split(delimiter).filter(Boolean).map(expandTilde);
157570
+ try {
157571
+ statSync6(legacy);
157572
+ return [legacy];
157573
+ } catch {
157574
+ return [];
157575
+ }
157559
157576
  }
157560
157577
  function sanitizePluginId(pluginId) {
157561
157578
  return pluginId.replace(/[^a-zA-Z0-9\-_]/g, "-");
@@ -160552,11 +160569,11 @@ var init_zip = __esm(() => {
160552
160569
  });
160553
160570
 
160554
160571
  // src/utils/systemDirectories.ts
160555
- import { homedir as homedir13 } from "os";
160572
+ import { homedir as homedir14 } from "os";
160556
160573
  import { join as join30 } from "path";
160557
160574
  function getSystemDirectories(options) {
160558
160575
  const platform2 = options?.platform ?? getPlatform();
160559
- const homeDir = options?.homedir ?? homedir13();
160576
+ const homeDir = options?.homedir ?? homedir14();
160560
160577
  const env4 = options?.env ?? process.env;
160561
160578
  const defaults2 = {
160562
160579
  HOME: homeDir,
@@ -170296,7 +170313,7 @@ var init_contextAnalysis = __esm(() => {
170296
170313
  });
170297
170314
 
170298
170315
  // src/utils/memoryDiagnostics.ts
170299
- import { existsSync as existsSync6, readFileSync as readFileSync8, readdirSync as readdirSync2, statSync as statSync6 } from "fs";
170316
+ import { existsSync as existsSync6, readFileSync as readFileSync8, readdirSync as readdirSync2, statSync as statSync7 } from "fs";
170300
170317
  import { getHeapSpaceStatistics, getHeapStatistics } from "v8";
170301
170318
  function parseCgroupMemoryValue(raw) {
170302
170319
  const value = raw?.trim();
@@ -170394,7 +170411,7 @@ function getTaskDiagnostics(task) {
170394
170411
  try {
170395
170412
  const outputPath = getTaskOutputPath(task.id);
170396
170413
  if (existsSync6(outputPath)) {
170397
- const stat14 = statSync6(outputPath);
170414
+ const stat14 = statSync7(outputPath);
170398
170415
  base2.outputFileSize = stat14.size;
170399
170416
  }
170400
170417
  } catch {}
@@ -231555,7 +231572,7 @@ var init_sedValidation = __esm(() => {
231555
231572
  });
231556
231573
 
231557
231574
  // src/tools/BashTool/pathValidation.ts
231558
- import { homedir as homedir14 } from "os";
231575
+ import { homedir as homedir15 } from "os";
231559
231576
  import { isAbsolute as isAbsolute9, resolve as resolve17 } from "path";
231560
231577
  function checkDangerousRemovalPaths(command, args, cwd2) {
231561
231578
  const extractor = PATH_EXTRACTORS[command];
@@ -232004,7 +232021,7 @@ var init_pathValidation2 = __esm(() => {
232004
232021
  init_bashPermissions();
232005
232022
  init_sedValidation();
232006
232023
  PATH_EXTRACTORS = {
232007
- cd: (args) => args.length === 0 ? [homedir14()] : [args.join(" ")],
232024
+ cd: (args) => args.length === 0 ? [homedir15()] : [args.join(" ")],
232008
232025
  ls: (args) => {
232009
232026
  const paths2 = filterOutFlags(args);
232010
232027
  return paths2.length > 0 ? paths2 : ["."];
@@ -256766,11 +256783,11 @@ var init_oauthPort = __esm(() => {
256766
256783
  // src/utils/claudeInChrome/common.ts
256767
256784
  import { readdirSync as readdirSync3 } from "fs";
256768
256785
  import { stat as stat17 } from "fs/promises";
256769
- import { homedir as homedir15, platform as platform2, tmpdir as tmpdir3, userInfo as userInfo2 } from "os";
256786
+ import { homedir as homedir16, platform as platform2, tmpdir as tmpdir3, userInfo as userInfo2 } from "os";
256770
256787
  import { join as join42 } from "path";
256771
256788
  function getAllBrowserDataPaths() {
256772
256789
  const platform3 = getPlatform();
256773
- const home = homedir15();
256790
+ const home = homedir16();
256774
256791
  const paths2 = [];
256775
256792
  for (const browserId of BROWSER_DETECTION_ORDER) {
256776
256793
  const config2 = CHROMIUM_BROWSERS[browserId];
@@ -256805,7 +256822,7 @@ function getAllBrowserDataPaths() {
256805
256822
  }
256806
256823
  function getAllNativeMessagingHostsDirs() {
256807
256824
  const platform3 = getPlatform();
256808
- const home = homedir15();
256825
+ const home = homedir16();
256809
256826
  const paths2 = [];
256810
256827
  for (const browserId of BROWSER_DETECTION_ORDER) {
256811
256828
  const config2 = CHROMIUM_BROWSERS[browserId];
@@ -256876,7 +256893,7 @@ async function detectAvailableBrowser() {
256876
256893
  break;
256877
256894
  }
256878
256895
  case "windows": {
256879
- const home = homedir15();
256896
+ const home = homedir16();
256880
256897
  if (config2.windows.dataPath.length > 0) {
256881
256898
  const appDataBase = config2.windows.useRoaming ? join42(home, "AppData", "Roaming") : join42(home, "AppData", "Local");
256882
256899
  const dataPath = join42(appDataBase, ...config2.windows.dataPath);
@@ -261372,10 +261389,10 @@ var init_capitalize = __esm(() => {
261372
261389
  });
261373
261390
 
261374
261391
  // src/utils/jetbrains.ts
261375
- import { homedir as homedir16, platform as platform3 } from "os";
261392
+ import { homedir as homedir17, platform as platform3 } from "os";
261376
261393
  import { join as join48 } from "path";
261377
261394
  function buildCommonPluginDirectoryPaths(ideName) {
261378
- const homeDir = homedir16();
261395
+ const homeDir = homedir17();
261379
261396
  const directories = [];
261380
261397
  const idePatterns = ideNameToDirMap[ideName.toLowerCase()];
261381
261398
  if (!idePatterns) {
@@ -280520,7 +280537,7 @@ var init_shellConfig = __esm(() => {
280520
280537
  // src/utils/autoUpdater.ts
280521
280538
  import { constants as fsConstants2 } from "fs";
280522
280539
  import { access as access2, writeFile as writeFile12 } from "fs/promises";
280523
- import { homedir as homedir18 } from "os";
280540
+ import { homedir as homedir19 } from "os";
280524
280541
  import { join as join57 } from "path";
280525
280542
  async function assertMinVersion() {
280526
280543
  if (false) {}
@@ -280660,10 +280677,10 @@ async function getInstallationPrefix() {
280660
280677
  let prefixResult = null;
280661
280678
  if (isBun) {
280662
280679
  prefixResult = await execFileNoThrowWithCwd("bun", ["pm", "bin", "-g"], {
280663
- cwd: homedir18()
280680
+ cwd: homedir19()
280664
280681
  });
280665
280682
  } else {
280666
- prefixResult = await execFileNoThrowWithCwd("npm", ["-g", "config", "get", "prefix"], { cwd: homedir18() });
280683
+ prefixResult = await execFileNoThrowWithCwd("npm", ["-g", "config", "get", "prefix"], { cwd: homedir19() });
280667
280684
  }
280668
280685
  if (prefixResult.code !== 0) {
280669
280686
  logError2(new Error(`Failed to check ${isBun ? "bun" : "npm"} permissions`));
@@ -280691,7 +280708,7 @@ async function checkGlobalInstallPermissions() {
280691
280708
  }
280692
280709
  async function getLatestVersion(channel) {
280693
280710
  const npmTag = channel === "stable" ? "stable" : "latest";
280694
- const result = await execFileNoThrowWithCwd("npm", ["view", `${"@verboo/code"}@${npmTag}`, "version", "--prefer-online"], { abortSignal: AbortSignal.timeout(5000), cwd: homedir18() });
280711
+ const result = await execFileNoThrowWithCwd("npm", ["view", `${"@verboo/code"}@${npmTag}`, "version", "--prefer-online"], { abortSignal: AbortSignal.timeout(5000), cwd: homedir19() });
280695
280712
  if (result.code !== 0) {
280696
280713
  logForDebugging2(`npm view failed with code ${result.code}`);
280697
280714
  if (result.stderr) {
@@ -280707,7 +280724,7 @@ async function getLatestVersion(channel) {
280707
280724
  return result.stdout.trim();
280708
280725
  }
280709
280726
  async function getNpmDistTags() {
280710
- const result = await execFileNoThrowWithCwd("npm", ["view", "@verboo/code", "dist-tags", "--json", "--prefer-online"], { abortSignal: AbortSignal.timeout(5000), cwd: homedir18() });
280727
+ const result = await execFileNoThrowWithCwd("npm", ["view", "@verboo/code", "dist-tags", "--json", "--prefer-online"], { abortSignal: AbortSignal.timeout(5000), cwd: homedir19() });
280711
280728
  if (result.code !== 0) {
280712
280729
  logForDebugging2(`npm view dist-tags failed with code ${result.code}`);
280713
280730
  return { latest: null, stable: null };
@@ -280777,7 +280794,7 @@ To fix this issue:
280777
280794
  }
280778
280795
  const packageSpec = specificVersion ? `${"@verboo/code"}@${specificVersion}` : "@verboo/code";
280779
280796
  const packageManager = env2.isRunningWithBun() ? "bun" : "npm";
280780
- const installResult = await execFileNoThrowWithCwd(packageManager, ["install", "-g", packageSpec], { cwd: homedir18() });
280797
+ const installResult = await execFileNoThrowWithCwd(packageManager, ["install", "-g", packageSpec], { cwd: homedir19() });
280781
280798
  if (installResult.code !== 0) {
280782
280799
  const error42 = new AutoUpdaterError(`Failed to install new version of claude: ${installResult.stdout} ${installResult.stderr}`);
280783
280800
  logError2(error42);
@@ -281014,7 +281031,7 @@ var init_packageManagers = __esm(() => {
281014
281031
 
281015
281032
  // src/utils/doctorDiagnostic.ts
281016
281033
  import { readFile as readFile13, realpath as realpath7 } from "fs/promises";
281017
- import { homedir as homedir19 } from "os";
281034
+ import { homedir as homedir20 } from "os";
281018
281035
  import { delimiter as delimiter2, join as join58, posix as posix3, win32 } from "path";
281019
281036
  function getCliBinaryName() {
281020
281037
  if (false) {}
@@ -281088,7 +281105,7 @@ async function getInstallationPath() {
281088
281105
  }
281089
281106
  } catch {}
281090
281107
  try {
281091
- const nativeBinaryPath = join58(homedir19(), ".local", "bin", getCliBinaryName());
281108
+ const nativeBinaryPath = join58(homedir20(), ".local", "bin", getCliBinaryName());
281092
281109
  await getFsImplementation2().stat(nativeBinaryPath);
281093
281110
  return nativeBinaryPath;
281094
281111
  } catch {}
@@ -281160,14 +281177,14 @@ async function detectMultipleInstallations() {
281160
281177
  }
281161
281178
  }
281162
281179
  }
281163
- const nativeBinPath = join58(homedir19(), ".local", "bin", getCliBinaryName());
281180
+ const nativeBinPath = join58(homedir20(), ".local", "bin", getCliBinaryName());
281164
281181
  try {
281165
281182
  await fs2.stat(nativeBinPath);
281166
281183
  installations.push({ type: "native", path: nativeBinPath });
281167
281184
  } catch {}
281168
281185
  const config2 = getGlobalConfig();
281169
281186
  if (config2.installMethod === "native") {
281170
- const nativeDataPath = join58(homedir19(), ".local", "share", getNativeDataDirName());
281187
+ const nativeDataPath = join58(homedir20(), ".local", "share", getNativeDataDirName());
281171
281188
  try {
281172
281189
  await fs2.stat(nativeDataPath);
281173
281190
  if (!installations.some((i3) => i3.type === "native")) {
@@ -281207,7 +281224,7 @@ async function detectConfigurationIssues(type) {
281207
281224
  if (type === "native") {
281208
281225
  const path12 = process.env.PATH || "";
281209
281226
  const pathDirectories = path12.split(delimiter2);
281210
- const homeDir = homedir19();
281227
+ const homeDir = homedir20();
281211
281228
  const localBinPath = join58(homeDir, ".local", "bin");
281212
281229
  let normalizedLocalBinPath = localBinPath;
281213
281230
  if (getPlatform() === "windows") {
@@ -281234,7 +281251,7 @@ async function detectConfigurationIssues(type) {
281234
281251
  const shellType = getShellType();
281235
281252
  const configPaths = getShellConfigPaths();
281236
281253
  const configFile = configPaths[shellType];
281237
- const displayPath = configFile ? configFile.replace(homedir19(), "~") : "your shell config file";
281254
+ const displayPath = configFile ? configFile.replace(homedir20(), "~") : "your shell config file";
281238
281255
  warnings.push({
281239
281256
  issue: "Native installation exists but ~/.local/bin is not in your PATH",
281240
281257
  fix: `Run: echo 'export PATH="$HOME/.local/bin:$PATH"' >> ${displayPath} then open a new terminal or run: source ${displayPath}`
@@ -281979,7 +281996,7 @@ import {
281979
281996
  unlink as unlink7,
281980
281997
  writeFile as writeFile14
281981
281998
  } from "fs/promises";
281982
- import { homedir as homedir20 } from "os";
281999
+ import { homedir as homedir21 } from "os";
281983
282000
  import { basename as basename13, delimiter as delimiter3, dirname as dirname26, join as join62, resolve as resolve20 } from "path";
281984
282001
  function getPlatform2() {
281985
282002
  const os4 = env2.platform;
@@ -282516,7 +282533,7 @@ fish_add_path ~/.local/bin`,
282516
282533
  } else {
282517
282534
  const configPaths = getShellConfigPaths();
282518
282535
  const configFile = configPaths[shellType];
282519
- const displayPath = configFile ? configFile.replace(homedir20(), "~") : "your shell config file";
282536
+ const displayPath = configFile ? configFile.replace(homedir21(), "~") : "your shell config file";
282520
282537
  messages.push({
282521
282538
  message: `Native installation exists but ~/.local/bin is not in your PATH. Run:
282522
282539
 
@@ -293002,7 +293019,7 @@ var init_InProcessBackend = __esm(() => {
293002
293019
  });
293003
293020
 
293004
293021
  // src/utils/swarm/backends/it2Setup.ts
293005
- import { homedir as homedir21 } from "os";
293022
+ import { homedir as homedir22 } from "os";
293006
293023
  async function detectPythonPackageManager() {
293007
293024
  const uvResult = await execFileNoThrow("which", ["uv"]);
293008
293025
  if (uvResult.code === 0) {
@@ -293037,18 +293054,18 @@ async function installIt2(packageManager) {
293037
293054
  switch (packageManager) {
293038
293055
  case "uvx":
293039
293056
  result = await execFileNoThrowWithCwd("uv", ["tool", "install", "it2"], {
293040
- cwd: homedir21()
293057
+ cwd: homedir22()
293041
293058
  });
293042
293059
  break;
293043
293060
  case "pipx":
293044
293061
  result = await execFileNoThrowWithCwd("pipx", ["install", "it2"], {
293045
- cwd: homedir21()
293062
+ cwd: homedir22()
293046
293063
  });
293047
293064
  break;
293048
293065
  case "pip":
293049
- result = await execFileNoThrowWithCwd("pip", ["install", "--user", "it2"], { cwd: homedir21() });
293066
+ result = await execFileNoThrowWithCwd("pip", ["install", "--user", "it2"], { cwd: homedir22() });
293050
293067
  if (result.code !== 0) {
293051
- result = await execFileNoThrowWithCwd("pip3", ["install", "--user", "it2"], { cwd: homedir21() });
293068
+ result = await execFileNoThrowWithCwd("pip3", ["install", "--user", "it2"], { cwd: homedir22() });
293052
293069
  }
293053
293070
  break;
293054
293071
  }
@@ -324754,7 +324771,7 @@ var init_modeValidation = __esm(() => {
324754
324771
  });
324755
324772
 
324756
324773
  // src/tools/PowerShellTool/pathValidation.ts
324757
- import { homedir as homedir23 } from "os";
324774
+ import { homedir as homedir24 } from "os";
324758
324775
  import { isAbsolute as isAbsolute15, resolve as resolve26 } from "path";
324759
324776
  function matchesParam(paramLower, paramList) {
324760
324777
  for (const p of paramList) {
@@ -324777,7 +324794,7 @@ function formatDirectoryList2(directories) {
324777
324794
  }
324778
324795
  function expandTilde2(filePath) {
324779
324796
  if (filePath === "~" || filePath.startsWith("~/") || filePath.startsWith("~\\")) {
324780
- return homedir23() + filePath.slice(1);
324797
+ return homedir24() + filePath.slice(1);
324781
324798
  }
324782
324799
  return filePath;
324783
324800
  }
@@ -329207,17 +329224,19 @@ async function discoverSkillDirsForPaths(filePaths, cwd2) {
329207
329224
  for (const filePath of filePaths) {
329208
329225
  let currentDir = dirname29(filePath);
329209
329226
  while (currentDir.startsWith(resolvedCwd + pathSep)) {
329210
- const skillDir = join75(currentDir, ".verboo", "skills");
329211
- if (!dynamicSkillDirs.has(skillDir)) {
329212
- dynamicSkillDirs.add(skillDir);
329213
- try {
329214
- await fs3.stat(skillDir);
329215
- if (await isPathGitignored(currentDir, resolvedCwd)) {
329216
- logForDebugging2(`[skills] Skipped gitignored skills dir: ${skillDir}`);
329217
- continue;
329218
- }
329219
- newDirs.push(skillDir);
329220
- } catch {}
329227
+ for (const configDirName of PROJECT_CONFIG_DIR_NAMES) {
329228
+ const skillDir = join75(currentDir, configDirName, "skills");
329229
+ if (!dynamicSkillDirs.has(skillDir)) {
329230
+ dynamicSkillDirs.add(skillDir);
329231
+ try {
329232
+ await fs3.stat(skillDir);
329233
+ if (await isPathGitignored(currentDir, resolvedCwd)) {
329234
+ logForDebugging2(`[skills] Skipped gitignored skills dir: ${skillDir}`);
329235
+ continue;
329236
+ }
329237
+ newDirs.push(skillDir);
329238
+ } catch {}
329239
+ }
329221
329240
  }
329222
329241
  const parent = dirname29(currentDir);
329223
329242
  if (parent === currentDir)
@@ -329330,9 +329349,11 @@ var init_loadSkillsDir = __esm(() => {
329330
329349
  import_ignore2 = __toESM(require_ignore(), 1);
329331
329350
  getSkillDirCommands = memoize_default(async (cwd2) => {
329332
329351
  const userSkillsDir = join75(getClaudeConfigHomeDir(), "skills");
329352
+ const legacyClaudeHome = getLegacyClaudeConfigHomeDir();
329353
+ const legacyUserSkillsDir = legacyClaudeHome ? join75(legacyClaudeHome, "skills") : null;
329333
329354
  const managedSkillsDir = join75(getManagedFilePath(), ".verboo", "skills");
329334
329355
  const projectSkillsDirs = getProjectDirsUpToHome("skills", cwd2);
329335
- logForDebugging2(`Loading skills from: managed=${managedSkillsDir}, user=${userSkillsDir}, project=[${projectSkillsDirs.join(", ")}]`);
329356
+ logForDebugging2(`Loading skills from: managed=${managedSkillsDir}, user=${userSkillsDir}, legacyUser=${legacyUserSkillsDir ?? "disabled"}, project=[${projectSkillsDirs.join(", ")}]`);
329336
329357
  const additionalDirs = getAdditionalDirectoriesForClaudeMd();
329337
329358
  const skillsLocked = isRestrictedToPluginOnly("skills");
329338
329359
  const projectSettingsEnabled = isSettingSourceEnabled("projectSettings") && !skillsLocked;
@@ -329341,25 +329362,28 @@ var init_loadSkillsDir = __esm(() => {
329341
329362
  logForDebugging2(`[bare] Skipping skill dir discovery (${additionalDirs.length === 0 ? "no --add-dir" : "projectSettings disabled or skillsLocked"})`);
329342
329363
  return [];
329343
329364
  }
329344
- const additionalSkillsNested2 = await Promise.all(additionalDirs.map((dir) => loadSkillsFromSkillsDir(join75(dir, ".verboo", "skills"), "projectSettings")));
329365
+ const additionalSkillsNested2 = await Promise.all(additionalDirs.flatMap((dir) => PROJECT_CONFIG_DIR_NAMES.map((configDirName) => loadSkillsFromSkillsDir(join75(dir, configDirName, "skills"), "projectSettings"))));
329345
329366
  return additionalSkillsNested2.flat().map((s) => s.skill);
329346
329367
  }
329347
329368
  const [
329348
329369
  managedSkills,
329349
329370
  userSkills,
329371
+ legacyUserSkills,
329350
329372
  projectSkillsNested,
329351
329373
  additionalSkillsNested,
329352
329374
  legacyCommands
329353
329375
  ] = await Promise.all([
329354
329376
  isEnvTruthy(process.env.CLAUDE_CODE_DISABLE_POLICY_SKILLS) ? Promise.resolve([]) : loadSkillsFromSkillsDir(managedSkillsDir, "policySettings"),
329355
329377
  isSettingSourceEnabled("userSettings") && !skillsLocked ? loadSkillsFromSkillsDir(userSkillsDir, "userSettings") : Promise.resolve([]),
329378
+ legacyUserSkillsDir && isSettingSourceEnabled("userSettings") && !skillsLocked && legacyUserSkillsDir !== userSkillsDir ? loadSkillsFromSkillsDir(legacyUserSkillsDir, "userSettings") : Promise.resolve([]),
329356
329379
  projectSettingsEnabled ? Promise.all(projectSkillsDirs.map((dir) => loadSkillsFromSkillsDir(dir, "projectSettings"))) : Promise.resolve([]),
329357
- projectSettingsEnabled ? Promise.all(additionalDirs.map((dir) => loadSkillsFromSkillsDir(join75(dir, ".verboo", "skills"), "projectSettings"))) : Promise.resolve([]),
329380
+ projectSettingsEnabled ? Promise.all(additionalDirs.flatMap((dir) => PROJECT_CONFIG_DIR_NAMES.map((configDirName) => loadSkillsFromSkillsDir(join75(dir, configDirName, "skills"), "projectSettings")))) : Promise.resolve([]),
329358
329381
  skillsLocked ? Promise.resolve([]) : loadSkillsFromCommandsDir(cwd2)
329359
329382
  ]);
329360
329383
  const allSkillsWithPaths = [
329361
329384
  ...managedSkills,
329362
329385
  ...userSkills,
329386
+ ...legacyUserSkills,
329363
329387
  ...projectSkillsNested.flat(),
329364
329388
  ...additionalSkillsNested.flat(),
329365
329389
  ...legacyCommands
@@ -329404,7 +329428,7 @@ var init_loadSkillsDir = __esm(() => {
329404
329428
  if (newConditionalSkills.length > 0) {
329405
329429
  logForDebugging2(`[skills] ${newConditionalSkills.length} conditional skills stored (activated when matching files are touched)`);
329406
329430
  }
329407
- logForDebugging2(`Loaded ${deduplicatedSkills.length} unique skills (${unconditionalSkills.length} unconditional, ${newConditionalSkills.length} conditional, managed: ${managedSkills.length}, user: ${userSkills.length}, project: ${projectSkillsNested.flat().length}, additional: ${additionalSkillsNested.flat().length}, legacy commands: ${legacyCommands.length})`);
329431
+ logForDebugging2(`Loaded ${deduplicatedSkills.length} unique skills (${unconditionalSkills.length} unconditional, ${newConditionalSkills.length} conditional, managed: ${managedSkills.length}, user: ${userSkills.length}, legacyUser: ${legacyUserSkills.length}, project: ${projectSkillsNested.flat().length}, additional: ${additionalSkillsNested.flat().length}, legacy commands: ${legacyCommands.length})`);
329408
329432
  return unconditionalSkills;
329409
329433
  });
329410
329434
  dynamicSkillDirs = new Set;
@@ -390111,7 +390135,7 @@ function getAnthropicEnvMetadata() {
390111
390135
  function getBuildAgeMinutes() {
390112
390136
  if (false)
390113
390137
  ;
390114
- const buildTime = new Date("2026-05-08T16:31:20.862Z").getTime();
390138
+ const buildTime = new Date("2026-05-08T20:52:25.803Z").getTime();
390115
390139
  if (isNaN(buildTime))
390116
390140
  return;
390117
390141
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -402549,11 +402573,11 @@ function cachePluginSettings(plugins) {
402549
402573
  }
402550
402574
  }
402551
402575
  function areExternalPluginsDisabledForVerboo() {
402552
- return isVerbooMode() && !isEnvTruthy(process.env.VERBOO_ENABLE_PLUGINS);
402576
+ return isEnvTruthy(process.env.VERBOO_DISABLE_PLUGINS);
402553
402577
  }
402554
402578
  function getEmptyPluginLoadResultForVerboo() {
402555
402579
  cachePluginSettings([]);
402556
- logForDebugging2("Verboo mode: external plugins disabled (set VERBOO_ENABLE_PLUGINS=1 to opt in)");
402580
+ logForDebugging2("External plugins disabled via VERBOO_DISABLE_PLUGINS=1");
402557
402581
  return { enabled: [], disabled: [], errors: [] };
402558
402582
  }
402559
402583
  function isRecord2(value) {
@@ -402563,7 +402587,6 @@ var PluginSettingsSchema, loadAllPlugins, loadAllPluginsCacheOnly;
402563
402587
  var init_pluginLoader = __esm(() => {
402564
402588
  init_memoize();
402565
402589
  init_state();
402566
- init_oauth();
402567
402590
  init_builtinPlugins();
402568
402591
  init_debug();
402569
402592
  init_envUtils();
@@ -410023,7 +410046,7 @@ var init_projectOnboardingState = __esm(() => {
410023
410046
 
410024
410047
  // src/utils/appleTerminalBackup.ts
410025
410048
  import { stat as stat38 } from "fs/promises";
410026
- import { homedir as homedir24 } from "os";
410049
+ import { homedir as homedir25 } from "os";
410027
410050
  import { join as join97 } from "path";
410028
410051
  function markTerminalSetupInProgress(backupPath) {
410029
410052
  saveGlobalConfig((current) => ({
@@ -410046,7 +410069,7 @@ function getTerminalRecoveryInfo() {
410046
410069
  };
410047
410070
  }
410048
410071
  function getTerminalPlistPath() {
410049
- return join97(homedir24(), "Library", "Preferences", "com.apple.Terminal.plist");
410072
+ return join97(homedir25(), "Library", "Preferences", "com.apple.Terminal.plist");
410050
410073
  }
410051
410074
  async function backupTerminalPreferences() {
410052
410075
  const terminalPlistPath = getTerminalPlistPath();
@@ -410117,11 +410140,11 @@ var init_appleTerminalBackup = __esm(() => {
410117
410140
  });
410118
410141
 
410119
410142
  // src/utils/completionCache.ts
410120
- import { homedir as homedir25 } from "os";
410143
+ import { homedir as homedir26 } from "os";
410121
410144
  import { dirname as dirname44, join as join98 } from "path";
410122
410145
  function detectShell() {
410123
410146
  const shell = process.env.SHELL || "";
410124
- const home = homedir25();
410147
+ const home = homedir26();
410125
410148
  const claudeDir = join98(home, ".claude");
410126
410149
  if (shell.endsWith("/zsh") || shell.endsWith("/zsh.exe")) {
410127
410150
  const cacheFile = join98(claudeDir, "completion.zsh");
@@ -410197,7 +410220,7 @@ __export(exports_terminalSetup, {
410197
410220
  });
410198
410221
  import { randomBytes as randomBytes13 } from "crypto";
410199
410222
  import { copyFile as copyFile8, mkdir as mkdir28, readFile as readFile33, writeFile as writeFile30 } from "fs/promises";
410200
- import { homedir as homedir26, platform as platform4 } from "os";
410223
+ import { homedir as homedir27, platform as platform4 } from "os";
410201
410224
  import { dirname as dirname45, join as join99 } from "path";
410202
410225
  import { pathToFileURL as pathToFileURL7 } from "url";
410203
410226
  function isVSCodeRemoteSSH() {
@@ -410333,7 +410356,7 @@ async function installBindingsForVSCodeTerminal(editor = "VSCode", theme) {
410333
410356
  ]`)}${EOL5}`;
410334
410357
  }
410335
410358
  const editorDir = editor === "VSCode" ? "Code" : editor;
410336
- const userDirPath = join99(homedir26(), platform4() === "win32" ? join99("AppData", "Roaming", editorDir, "User") : platform4() === "darwin" ? join99("Library", "Application Support", editorDir, "User") : join99(".config", editorDir, "User"));
410359
+ const userDirPath = join99(homedir27(), platform4() === "win32" ? join99("AppData", "Roaming", editorDir, "User") : platform4() === "darwin" ? join99("Library", "Application Support", editorDir, "User") : join99(".config", editorDir, "User"));
410337
410360
  const keybindingsPath = join99(userDirPath, "keybindings.json");
410338
410361
  try {
410339
410362
  await mkdir28(userDirPath, {
@@ -410477,7 +410500,7 @@ chars = "\\u001B\\r"`;
410477
410500
  if (xdgConfigHome) {
410478
410501
  configPaths.push(join99(xdgConfigHome, "alacritty", "alacritty.toml"));
410479
410502
  } else {
410480
- configPaths.push(join99(homedir26(), ".config", "alacritty", "alacritty.toml"));
410503
+ configPaths.push(join99(homedir27(), ".config", "alacritty", "alacritty.toml"));
410481
410504
  }
410482
410505
  if (platform4() === "win32") {
410483
410506
  const appData = process.env.APPDATA;
@@ -410543,7 +410566,7 @@ chars = "\\u001B\\r"`;
410543
410566
  }
410544
410567
  }
410545
410568
  async function installBindingsForZed(theme) {
410546
- const zedDir = join99(homedir26(), ".config", "zed");
410569
+ const zedDir = join99(homedir27(), ".config", "zed");
410547
410570
  const keymapPath = join99(zedDir, "keymap.json");
410548
410571
  try {
410549
410572
  await mkdir28(zedDir, {
@@ -415385,7 +415408,7 @@ var init_file_index = __esm(() => {
415385
415408
  });
415386
415409
 
415387
415410
  // src/hooks/fileSuggestions.ts
415388
- import { statSync as statSync7 } from "fs";
415411
+ import { statSync as statSync8 } from "fs";
415389
415412
  import * as path17 from "path";
415390
415413
  function getFileIndex() {
415391
415414
  if (!fileIndex) {
@@ -415433,7 +415456,7 @@ function getGitIndexMtime() {
415433
415456
  if (!repoRoot)
415434
415457
  return null;
415435
415458
  try {
415436
- return statSync7(path17.join(repoRoot, ".git", "index")).mtimeMs;
415459
+ return statSync8(path17.join(repoRoot, ".git", "index")).mtimeMs;
415437
415460
  } catch {
415438
415461
  return null;
415439
415462
  }
@@ -418233,7 +418256,7 @@ function buildPrimarySection() {
418233
418256
  }, undefined, false, undefined, this);
418234
418257
  return [{
418235
418258
  label: "Version",
418236
- value: "0.8.1"
418259
+ value: "0.8.3"
418237
418260
  }, {
418238
418261
  label: "Session name",
418239
418262
  value: nameValue
@@ -432133,10 +432156,10 @@ var init_MemoryFileSelector = __esm(() => {
432133
432156
  });
432134
432157
 
432135
432158
  // src/components/memory/MemoryUpdateNotification.tsx
432136
- import { homedir as homedir27 } from "os";
432159
+ import { homedir as homedir28 } from "os";
432137
432160
  import { relative as relative24 } from "path";
432138
432161
  function getRelativeMemoryPath(path18) {
432139
- const homeDir = homedir27();
432162
+ const homeDir = homedir28();
432140
432163
  const cwd2 = getCwd();
432141
432164
  const relativeToHome = path18.startsWith(homeDir) ? "~" + path18.slice(homeDir.length) : null;
432142
432165
  const relativeToCwd = path18.startsWith(cwd2) ? "./" + relative24(cwd2, path18) : null;
@@ -432528,7 +432551,7 @@ function getReleaseTagUrl(version2 = publicBuildVersion) {
432528
432551
  return `${VERBOO_RELEASES_URL}/tag/v${normalizePublicVersion(version2)}`;
432529
432552
  }
432530
432553
  function getPublicBuildVersion() {
432531
- return "0.8.1";
432554
+ return "0.8.3";
432532
432555
  }
432533
432556
  var import_semver10, VERBOO_RELEASES_URL = "https://github.com/verbeux-ai/code/releases", fallbackBuildVersion, publicBuildVersion;
432534
432557
  var init_version = __esm(() => {
@@ -445031,7 +445054,7 @@ var init_mcp = __esm(() => {
445031
445054
  });
445032
445055
 
445033
445056
  // src/utils/plugins/parseMarketplaceInput.ts
445034
- import { homedir as homedir28 } from "os";
445057
+ import { homedir as homedir29 } from "os";
445035
445058
  import { resolve as resolve38 } from "path";
445036
445059
  async function parseMarketplaceInput(input) {
445037
445060
  const trimmed = input.trim();
@@ -445067,7 +445090,7 @@ async function parseMarketplaceInput(input) {
445067
445090
  const isWindows2 = process.platform === "win32";
445068
445091
  const isWindowsPath = isWindows2 && (trimmed.startsWith(".\\") || trimmed.startsWith("..\\") || /^[a-zA-Z]:[/\\]/.test(trimmed));
445069
445092
  if (trimmed.startsWith("./") || trimmed.startsWith("../") || trimmed.startsWith("/") || trimmed.startsWith("~") || isWindowsPath) {
445070
- const resolvedPath = resolve38(trimmed.startsWith("~") ? trimmed.replace(/^~/, homedir28()) : trimmed);
445093
+ const resolvedPath = resolve38(trimmed.startsWith("~") ? trimmed.replace(/^~/, homedir29()) : trimmed);
445071
445094
  let stats;
445072
445095
  try {
445073
445096
  stats = await fs3.stat(resolvedPath);
@@ -487624,7 +487647,7 @@ var init_bridge_kick = __esm(() => {
487624
487647
  var call62 = async () => {
487625
487648
  return {
487626
487649
  type: "text",
487627
- value: `${"99.0.0"} (built ${"2026-05-08T16:31:20.862Z"})`
487650
+ value: `${"99.0.0"} (built ${"2026-05-08T20:52:25.803Z"})`
487628
487651
  };
487629
487652
  }, version2, version_default;
487630
487653
  var init_version2 = __esm(() => {
@@ -489439,7 +489462,7 @@ var init_setupPortable = __esm(() => {
489439
489462
 
489440
489463
  // src/utils/claudeInChrome/setup.ts
489441
489464
  import { chmod as chmod10, mkdir as mkdir38, readFile as readFile46, writeFile as writeFile44 } from "fs/promises";
489442
- import { homedir as homedir29 } from "os";
489465
+ import { homedir as homedir30 } from "os";
489443
489466
  import { join as join128 } from "path";
489444
489467
  import { fileURLToPath as fileURLToPath6 } from "url";
489445
489468
  function shouldEnableClaudeInChrome(chromeFlag) {
@@ -489519,7 +489542,7 @@ function setupClaudeInChrome() {
489519
489542
  function getNativeMessagingHostsDirs() {
489520
489543
  const platform5 = getPlatform();
489521
489544
  if (platform5 === "windows") {
489522
- const home = homedir29();
489545
+ const home = homedir30();
489523
489546
  const appData = process.env.APPDATA || join128(home, "AppData", "Local");
489524
489547
  return [join128(appData, "Claude Code", "ChromeNativeHost")];
489525
489548
  }
@@ -499220,7 +499243,7 @@ import {
499220
499243
  writeFile as writeFile47
499221
499244
  } from "fs/promises";
499222
499245
  import { basename as basename45, dirname as dirname55, join as join136 } from "path";
499223
- import { homedir as homedir30 } from "os";
499246
+ import { homedir as homedir31 } from "os";
499224
499247
  function isTranscriptMessage(entry) {
499225
499248
  return entry.type === "user" || entry.type === "assistant" || entry.type === "attachment" || entry.type === "system";
499226
499249
  }
@@ -499237,7 +499260,7 @@ function getProjectsDir2() {
499237
499260
  if (process.env.VERBOO_PROJECTS_DIR) {
499238
499261
  return process.env.VERBOO_PROJECTS_DIR;
499239
499262
  }
499240
- return join136(homedir30(), ".claude", "projects");
499263
+ return join136(homedir31(), ".claude", "projects");
499241
499264
  }
499242
499265
  function getTranscriptPath() {
499243
499266
  const projectDir = getSessionProjectDir() ?? getProjectDir3(getOriginalCwd());
@@ -502691,7 +502714,7 @@ var init_agentMemory = __esm(() => {
502691
502714
 
502692
502715
  // src/utils/permissions/filesystem.ts
502693
502716
  import { randomBytes as randomBytes17 } from "crypto";
502694
- import { homedir as homedir31, tmpdir as tmpdir9 } from "os";
502717
+ import { homedir as homedir32, tmpdir as tmpdir9 } from "os";
502695
502718
  import { join as join138, normalize as normalize14, posix as posix8, sep as sep33 } from "path";
502696
502719
  function normalizeCaseForComparison(path21) {
502697
502720
  return path21.toLowerCase();
@@ -503019,7 +503042,7 @@ function patternWithRoot(pattern, source) {
503019
503042
  } else if (pattern.startsWith(`~${DIR_SEP}`)) {
503020
503043
  return {
503021
503044
  relativePattern: pattern.slice(1),
503022
- root: homedir31().normalize("NFC")
503045
+ root: homedir32().normalize("NFC")
503023
503046
  };
503024
503047
  } else if (pattern.startsWith(DIR_SEP)) {
503025
503048
  return {
@@ -504803,7 +504826,7 @@ __export(exports_hookChains, {
504803
504826
  dispatchHookChainsForEvent: () => dispatchHookChainsForEvent
504804
504827
  });
504805
504828
  import { createHash as createHash20 } from "crypto";
504806
- import { statSync as statSync8 } from "fs";
504829
+ import { statSync as statSync9 } from "fs";
504807
504830
  import { join as join140, resolve as resolve41 } from "path";
504808
504831
  function asAnalyticsString(value) {
504809
504832
  return value;
@@ -504944,7 +504967,7 @@ function loadHookChainsConfig(options2) {
504944
504967
  }
504945
504968
  let stats2;
504946
504969
  try {
504947
- const stat49 = statSync8(path21);
504970
+ const stat49 = statSync9(path21);
504948
504971
  stats2 = {
504949
504972
  mtimeMs: stat49.mtimeMs,
504950
504973
  size: stat49.size
@@ -514651,7 +514674,7 @@ __export(exports_upstreamproxy, {
514651
514674
  SESSION_TOKEN_PATH: () => SESSION_TOKEN_PATH
514652
514675
  });
514653
514676
  import { mkdir as mkdir45, readFile as readFile50, unlink as unlink23, writeFile as writeFile48 } from "fs/promises";
514654
- import { homedir as homedir32 } from "os";
514677
+ import { homedir as homedir33 } from "os";
514655
514678
  import { join as join142 } from "path";
514656
514679
  async function initUpstreamProxy(opts) {
514657
514680
  if (!isEnvTruthy(process.env.CLAUDE_CODE_REMOTE)) {
@@ -514673,7 +514696,7 @@ async function initUpstreamProxy(opts) {
514673
514696
  }
514674
514697
  setNonDumpable();
514675
514698
  const baseUrl = "https://code.verboo.ai/router";
514676
- const caBundlePath = opts?.caBundlePath ?? join142(homedir32(), ".ccr", "ca-bundle.crt");
514699
+ const caBundlePath = opts?.caBundlePath ?? join142(homedir33(), ".ccr", "ca-bundle.crt");
514677
514700
  const caOk = await downloadCaBundle(baseUrl, opts?.systemCaPath ?? SYSTEM_CA_BUNDLE, caBundlePath);
514678
514701
  if (!caOk)
514679
514702
  return state2;
@@ -517212,7 +517235,7 @@ var init_types15 = __esm(() => {
517212
517235
  });
517213
517236
 
517214
517237
  // src/utils/settings/mdm/constants.ts
517215
- import { homedir as homedir33, userInfo as userInfo3 } from "os";
517238
+ import { homedir as homedir34, userInfo as userInfo3 } from "os";
517216
517239
  import { join as join144 } from "path";
517217
517240
  function getMacOSPlistPaths() {
517218
517241
  let username = "";
@@ -517232,7 +517255,7 @@ function getMacOSPlistPaths() {
517232
517255
  });
517233
517256
  if (process.env.USER_TYPE === "ant") {
517234
517257
  paths2.push({
517235
- path: join144(homedir33(), "Library", "Preferences", `${MACOS_PREFERENCE_DOMAIN}.plist`),
517258
+ path: join144(homedir34(), "Library", "Preferences", `${MACOS_PREFERENCE_DOMAIN}.plist`),
517236
517259
  label: "user preferences (internal-only)"
517237
517260
  });
517238
517261
  }
@@ -518045,7 +518068,7 @@ var init_settings2 = __esm(() => {
518045
518068
  });
518046
518069
 
518047
518070
  // src/memdir/paths.ts
518048
- import { homedir as homedir34 } from "os";
518071
+ import { homedir as homedir35 } from "os";
518049
518072
  import { isAbsolute as isAbsolute25, join as join147, normalize as normalize15, sep as sep34 } from "path";
518050
518073
  function isAutoMemoryEnabled() {
518051
518074
  const envVal = process.env.CLAUDE_CODE_DISABLE_AUTO_MEMORY;
@@ -518090,7 +518113,7 @@ function validateMemoryPath(raw, expandTilde3) {
518090
518113
  if (restNorm === "." || restNorm === "..") {
518091
518114
  return;
518092
518115
  }
518093
- candidate = join147(homedir34(), rest);
518116
+ candidate = join147(homedir35(), rest);
518094
518117
  }
518095
518118
  const normalized = normalize15(candidate).replace(/[/\\]+$/, "");
518096
518119
  if (!isAbsolute25(normalized) || normalized.length < 3 || /^[A-Za-z]:$/.test(normalized) || normalized.startsWith("\\\\") || normalized.startsWith("//") || normalized.includes("\x00")) {
@@ -519276,7 +519299,7 @@ import {
519276
519299
  unlink as unlink25
519277
519300
  } from "fs/promises";
519278
519301
  import { createServer as createServer6 } from "net";
519279
- import { homedir as homedir35, platform as platform5 } from "os";
519302
+ import { homedir as homedir36, platform as platform5 } from "os";
519280
519303
  import { join as join149 } from "path";
519281
519304
  function log(message, ...args) {
519282
519305
  if (LOG_FILE) {
@@ -519615,7 +519638,7 @@ var init_chromeNativeHost = __esm(() => {
519615
519638
  init_slowOperations();
519616
519639
  init_common2();
519617
519640
  MAX_MESSAGE_SIZE = 1024 * 1024;
519618
- LOG_FILE = process.env.USER_TYPE === "ant" ? join149(homedir35(), ".claude", "debug", "chrome-native-host.txt") : undefined;
519641
+ LOG_FILE = process.env.USER_TYPE === "ant" ? join149(homedir36(), ".claude", "debug", "chrome-native-host.txt") : undefined;
519619
519642
  messageSchema = lazySchema(() => exports_external2.object({
519620
519643
  type: exports_external2.string()
519621
519644
  }).passthrough());
@@ -519781,7 +519804,7 @@ function printStartupScreen(modelOverride) {
519781
519804
  const home = process.env.HOME || process.env.USERPROFILE || "";
519782
519805
  const cwd2 = process.cwd();
519783
519806
  const displayCwd = home && cwd2.startsWith(home) ? `~${cwd2.slice(home.length)}` : cwd2;
519784
- const version3 = "0.8.1";
519807
+ const version3 = "0.8.3";
519785
519808
  const bold2 = `${ESC3}1m`;
519786
519809
  const PURPLE = rgb3(...ACCENT);
519787
519810
  const SOFT = rgb3(...CREAM);
@@ -529068,7 +529091,7 @@ var init_ShowInIDEPrompt = __esm(() => {
529068
529091
  });
529069
529092
 
529070
529093
  // src/components/permissions/FilePermissionDialog/permissionOptions.tsx
529071
- import { homedir as homedir36 } from "os";
529094
+ import { homedir as homedir37 } from "os";
529072
529095
  import { basename as basename52, join as join150, sep as sep35 } from "path";
529073
529096
  function isInClaudeFolder(filePath) {
529074
529097
  const absolutePath = expandPath(filePath);
@@ -529079,7 +529102,7 @@ function isInClaudeFolder(filePath) {
529079
529102
  }
529080
529103
  function isInGlobalClaudeFolder(filePath) {
529081
529104
  const absolutePath = expandPath(filePath);
529082
- const globalClaudeFolderPath = join150(homedir36(), ".claude");
529105
+ const globalClaudeFolderPath = join150(homedir37(), ".claude");
529083
529106
  const normalizedAbsolutePath = normalizeCaseForComparison(absolutePath);
529084
529107
  const normalizedGlobalClaudeFolderPath = normalizeCaseForComparison(globalClaudeFolderPath);
529085
529108
  return normalizedAbsolutePath.startsWith(normalizedGlobalClaudeFolderPath + sep35.toLowerCase()) || normalizedAbsolutePath.startsWith(normalizedGlobalClaudeFolderPath + "/");
@@ -538055,7 +538078,7 @@ function AutoUpdater({
538055
538078
  return;
538056
538079
  }
538057
538080
  if (false) {}
538058
- const currentVersion = "0.8.1";
538081
+ const currentVersion = "0.8.3";
538059
538082
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
538060
538083
  let latestVersion = await getLatestVersion(channel);
538061
538084
  const isDisabled = isAutoUpdaterDisabled();
@@ -538408,17 +538431,17 @@ function PackageManagerAutoUpdater(t0) {
538408
538431
  const maxVersion = await getMaxVersion();
538409
538432
  if (maxVersion && latest && gt(latest, maxVersion)) {
538410
538433
  logForDebugging2(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
538411
- if (gte("0.8.1", maxVersion)) {
538412
- logForDebugging2(`PackageManagerAutoUpdater: current version ${"0.8.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
538434
+ if (gte("0.8.3", maxVersion)) {
538435
+ logForDebugging2(`PackageManagerAutoUpdater: current version ${"0.8.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
538413
538436
  setUpdateAvailable(false);
538414
538437
  return;
538415
538438
  }
538416
538439
  latest = maxVersion;
538417
538440
  }
538418
- const hasUpdate = latest && !gte("0.8.1", latest) && !shouldSkipVersion(latest);
538441
+ const hasUpdate = latest && !gte("0.8.3", latest) && !shouldSkipVersion(latest);
538419
538442
  setUpdateAvailable(!!hasUpdate);
538420
538443
  if (hasUpdate) {
538421
- logForDebugging2(`PackageManagerAutoUpdater: Update available ${"0.8.1"} -> ${latest}`);
538444
+ logForDebugging2(`PackageManagerAutoUpdater: Update available ${"0.8.3"} -> ${latest}`);
538422
538445
  }
538423
538446
  };
538424
538447
  $2[0] = t1;
@@ -538452,7 +538475,7 @@ function PackageManagerAutoUpdater(t0) {
538452
538475
  wrap: "truncate",
538453
538476
  children: [
538454
538477
  "currentVersion: ",
538455
- "0.8.1"
538478
+ "0.8.3"
538456
538479
  ]
538457
538480
  }, undefined, true, undefined, this);
538458
538481
  $2[3] = verbose;
@@ -553815,7 +553838,7 @@ var init_cacache = __esm(() => {
553815
553838
 
553816
553839
  // src/utils/cleanup.ts
553817
553840
  import * as fs4 from "fs/promises";
553818
- import { homedir as homedir37 } from "os";
553841
+ import { homedir as homedir38 } from "os";
553819
553842
  import { join as join151 } from "path";
553820
553843
  function getCutoffDate() {
553821
553844
  const settings = getSettings_DEPRECATED() || {};
@@ -554116,7 +554139,7 @@ async function cleanupNpmCacheForAnthropicPackages() {
554116
554139
  return;
554117
554140
  }
554118
554141
  logForDebugging2("npm cache cleanup: starting");
554119
- const npmCachePath = join151(homedir37(), ".npm", "_cacache");
554142
+ const npmCachePath = join151(homedir38(), ".npm", "_cacache");
554120
554143
  const NPM_CACHE_RETENTION_COUNT = 5;
554121
554144
  const startTime = Date.now();
554122
554145
  try {
@@ -570865,7 +570888,7 @@ function WelcomeV2() {
570865
570888
  dimColor: true,
570866
570889
  children: [
570867
570890
  "v",
570868
- "0.8.1",
570891
+ "0.8.3",
570869
570892
  " "
570870
570893
  ]
570871
570894
  }, undefined, true, undefined, this)
@@ -571052,7 +571075,7 @@ function WelcomeV2() {
571052
571075
  dimColor: true,
571053
571076
  children: [
571054
571077
  "v",
571055
- "0.8.1",
571078
+ "0.8.3",
571056
571079
  " "
571057
571080
  ]
571058
571081
  }, undefined, true, undefined, this)
@@ -571268,7 +571291,7 @@ function AppleTerminalWelcomeV2(t0) {
571268
571291
  dimColor: true,
571269
571292
  children: [
571270
571293
  "v",
571271
- "0.8.1",
571294
+ "0.8.3",
571272
571295
  " "
571273
571296
  ]
571274
571297
  }, undefined, true, undefined, this);
@@ -571477,7 +571500,7 @@ function AppleTerminalWelcomeV2(t0) {
571477
571500
  dimColor: true,
571478
571501
  children: [
571479
571502
  "v",
571480
- "0.8.1",
571503
+ "0.8.3",
571481
571504
  " "
571482
571505
  ]
571483
571506
  }, undefined, true, undefined, this);
@@ -572283,7 +572306,7 @@ var exports_TrustDialog = {};
572283
572306
  __export(exports_TrustDialog, {
572284
572307
  TrustDialog: () => TrustDialog
572285
572308
  });
572286
- import { homedir as homedir38 } from "os";
572309
+ import { homedir as homedir39 } from "os";
572287
572310
  function TrustDialog(t0) {
572288
572311
  const $2 = import_react_compiler_runtime363.c(33);
572289
572312
  const {
@@ -572394,7 +572417,7 @@ function TrustDialog(t0) {
572394
572417
  let t13;
572395
572418
  if ($2[13] !== hasAnyBashExecution) {
572396
572419
  t12 = () => {
572397
- const isHomeDir = homedir38() === getCwd();
572420
+ const isHomeDir = homedir39() === getCwd();
572398
572421
  logEvent("tengu_trust_dialog_shown", {
572399
572422
  isHomeDir,
572400
572423
  hasMcpServers,
@@ -572423,7 +572446,7 @@ function TrustDialog(t0) {
572423
572446
  gracefulShutdownSync(1);
572424
572447
  return;
572425
572448
  }
572426
- const isHomeDir_0 = homedir38() === getCwd();
572449
+ const isHomeDir_0 = homedir39() === getCwd();
572427
572450
  logEvent("tengu_trust_dialog_accept", {
572428
572451
  isHomeDir: isHomeDir_0,
572429
572452
  hasMcpServers,
@@ -577667,7 +577690,7 @@ var init_sessionMemory = __esm(() => {
577667
577690
 
577668
577691
  // src/utils/iTermBackup.ts
577669
577692
  import { copyFile as copyFile10, stat as stat54 } from "fs/promises";
577670
- import { homedir as homedir39 } from "os";
577693
+ import { homedir as homedir40 } from "os";
577671
577694
  import { join as join157 } from "path";
577672
577695
  function markITerm2SetupComplete() {
577673
577696
  saveGlobalConfig((current) => ({
@@ -577683,7 +577706,7 @@ function getIterm2RecoveryInfo() {
577683
577706
  };
577684
577707
  }
577685
577708
  function getITerm2PlistPath() {
577686
- return join157(homedir39(), "Library", "Preferences", "com.googlecode.iterm2.plist");
577709
+ return join157(homedir40(), "Library", "Preferences", "com.googlecode.iterm2.plist");
577687
577710
  }
577688
577711
  async function checkAndRestoreITerm2Backup() {
577689
577712
  const { inProgress, backupPath } = getIterm2RecoveryInfo();
@@ -578566,7 +578589,7 @@ __export(exports_claudeDesktop, {
578566
578589
  getClaudeDesktopConfigPath: () => getClaudeDesktopConfigPath
578567
578590
  });
578568
578591
  import { readdir as readdir34, readFile as readFile52, stat as stat55 } from "fs/promises";
578569
- import { homedir as homedir40 } from "os";
578592
+ import { homedir as homedir41 } from "os";
578570
578593
  import { join as join158 } from "path";
578571
578594
  async function getClaudeDesktopConfigPath() {
578572
578595
  const platform6 = getPlatform();
@@ -578574,7 +578597,7 @@ async function getClaudeDesktopConfigPath() {
578574
578597
  throw new Error(`Unsupported platform: ${platform6} - Verboo Desktop integration only works on macOS and WSL.`);
578575
578598
  }
578576
578599
  if (platform6 === "macos") {
578577
- return join158(homedir40(), "Library", "Application Support", "Claude", "claude_desktop_config.json");
578600
+ return join158(homedir41(), "Library", "Application Support", "Claude", "claude_desktop_config.json");
578578
578601
  }
578579
578602
  const windowsHome = process.env.USERPROFILE ? process.env.USERPROFILE.replace(/\\/g, "/") : null;
578580
578603
  if (windowsHome) {
@@ -588183,11 +588206,11 @@ __export(exports_install, {
588183
588206
  install: () => install,
588184
588207
  getInstallationPath: () => getInstallationPath2
588185
588208
  });
588186
- import { homedir as homedir41 } from "node:os";
588209
+ import { homedir as homedir42 } from "node:os";
588187
588210
  import { join as join162 } from "node:path";
588188
588211
  function getInstallationPath2() {
588189
588212
  const isWindows2 = env2.platform === "win32";
588190
- const homeDir = homedir41();
588213
+ const homeDir = homedir42();
588191
588214
  if (isWindows2) {
588192
588215
  const windowsPath = join162(homeDir, ".local", "bin", "verboo.exe");
588193
588216
  return windowsPath.replace(/\//g, "\\");
@@ -588848,7 +588871,7 @@ __export(exports_update, {
588848
588871
  async function update() {
588849
588872
  if (getAPIProvider() !== "firstParty") {
588850
588873
  writeToStdout(source_default.yellow(`Auto-update is not available for third-party provider builds.
588851
- `) + `Current version: ${"0.8.1"}
588874
+ `) + `Current version: ${"0.8.3"}
588852
588875
 
588853
588876
  ` + `To update, reinstall from npm:
588854
588877
  ` + source_default.bold(` npm install -g ${"@verboo/code"}@latest`) + `
@@ -588859,7 +588882,7 @@ async function update() {
588859
588882
  await gracefulShutdown(0);
588860
588883
  }
588861
588884
  logEvent("tengu_update_check", {});
588862
- writeToStdout(`Current version: ${"0.8.1"}
588885
+ writeToStdout(`Current version: ${"0.8.3"}
588863
588886
  `);
588864
588887
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
588865
588888
  writeToStdout(`Checking for updates to ${channel} version...
@@ -588944,8 +588967,8 @@ async function update() {
588944
588967
  writeToStdout(`Verboo Code is managed by Homebrew.
588945
588968
  `);
588946
588969
  const latest = await getLatestVersion(channel);
588947
- if (latest && !gte("0.8.1", latest)) {
588948
- writeToStdout(`Update available: ${"0.8.1"} → ${latest}
588970
+ if (latest && !gte("0.8.3", latest)) {
588971
+ writeToStdout(`Update available: ${"0.8.3"} → ${latest}
588949
588972
  `);
588950
588973
  writeToStdout(`
588951
588974
  `);
@@ -588961,8 +588984,8 @@ async function update() {
588961
588984
  writeToStdout(`Verboo Code is managed by winget.
588962
588985
  `);
588963
588986
  const latest = await getLatestVersion(channel);
588964
- if (latest && !gte("0.8.1", latest)) {
588965
- writeToStdout(`Update available: ${"0.8.1"} → ${latest}
588987
+ if (latest && !gte("0.8.3", latest)) {
588988
+ writeToStdout(`Update available: ${"0.8.3"} → ${latest}
588966
588989
  `);
588967
588990
  writeToStdout(`
588968
588991
  `);
@@ -588978,8 +589001,8 @@ async function update() {
588978
589001
  writeToStdout(`Verboo Code is managed by apk.
588979
589002
  `);
588980
589003
  const latest = await getLatestVersion(channel);
588981
- if (latest && !gte("0.8.1", latest)) {
588982
- writeToStdout(`Update available: ${"0.8.1"} → ${latest}
589004
+ if (latest && !gte("0.8.3", latest)) {
589005
+ writeToStdout(`Update available: ${"0.8.3"} → ${latest}
588983
589006
  `);
588984
589007
  writeToStdout(`
588985
589008
  `);
@@ -589044,11 +589067,11 @@ async function update() {
589044
589067
  `);
589045
589068
  await gracefulShutdown(1);
589046
589069
  }
589047
- if (result.latestVersion === "0.8.1") {
589048
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.8.1"})`) + `
589070
+ if (result.latestVersion === "0.8.3") {
589071
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.8.3"})`) + `
589049
589072
  `);
589050
589073
  } else {
589051
- writeToStdout(source_default.green(`Successfully updated from ${"0.8.1"} to version ${result.latestVersion}`) + `
589074
+ writeToStdout(source_default.green(`Successfully updated from ${"0.8.3"} to version ${result.latestVersion}`) + `
589052
589075
  `);
589053
589076
  await regenerateCompletionCache();
589054
589077
  }
@@ -589108,12 +589131,12 @@ async function update() {
589108
589131
  `);
589109
589132
  await gracefulShutdown(1);
589110
589133
  }
589111
- if (latestVersion === "0.8.1") {
589112
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.8.1"})`) + `
589134
+ if (latestVersion === "0.8.3") {
589135
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.8.3"})`) + `
589113
589136
  `);
589114
589137
  await gracefulShutdown(0);
589115
589138
  }
589116
- writeToStdout(`New version available: ${latestVersion} (current: ${"0.8.1"})
589139
+ writeToStdout(`New version available: ${latestVersion} (current: ${"0.8.3"})
589117
589140
  `);
589118
589141
  writeToStdout(`Installing update...
589119
589142
  `);
@@ -589158,7 +589181,7 @@ async function update() {
589158
589181
  logForDebugging2(`update: Installation status: ${status2}`);
589159
589182
  switch (status2) {
589160
589183
  case "success":
589161
- writeToStdout(source_default.green(`Successfully updated from ${"0.8.1"} to version ${latestVersion}`) + `
589184
+ writeToStdout(source_default.green(`Successfully updated from ${"0.8.3"} to version ${latestVersion}`) + `
589162
589185
  `);
589163
589186
  await regenerateCompletionCache();
589164
589187
  break;
@@ -590418,7 +590441,7 @@ ${customInstructions}` : customInstructions;
590418
590441
  is_native_binary: isInBundledMode()
590419
590442
  });
590420
590443
  logMemoryDiagnostics("start", {
590421
- version: "0.8.1",
590444
+ version: "0.8.3",
590422
590445
  debug: debug2,
590423
590446
  debugToStderr,
590424
590447
  print: print ?? false,
@@ -591224,7 +591247,7 @@ Usage: verboo --remote "your task description"`, () => gracefulShutdown(1));
591224
591247
  pendingHookMessages
591225
591248
  }, renderAndRun);
591226
591249
  }
591227
- }).version(`0.8.1 (${cliDesc})`, "-v, --version", "Output the version number");
591250
+ }).version(`0.8.3 (${cliDesc})`, "-v, --version", "Output the version number");
591228
591251
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
591229
591252
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
591230
591253
  if (canUserConfigureAdvisor()) {
@@ -591798,7 +591821,7 @@ if (false) {}
591798
591821
  async function main2() {
591799
591822
  const args = process.argv.slice(2);
591800
591823
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
591801
- console.log(`${"0.8.1"} (Verboo Code)`);
591824
+ console.log(`${"0.8.3"} (Verboo Code)`);
591802
591825
  return;
591803
591826
  }
591804
591827
  if (!IS_VERBOO_CLI && args.includes("--provider")) {
@@ -591963,4 +591986,4 @@ async function main2() {
591963
591986
  }
591964
591987
  main2();
591965
591988
 
591966
- //# debugId=03D6B4CDFBA5D7B464756E2164756E21
591989
+ //# debugId=32F7474D8133300364756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verboo/code",
3
- "version": "0.8.1",
3
+ "version": "0.8.3",
4
4
  "description": "Verboo Code — coding agent for the Verboo platform",
5
5
  "type": "module",
6
6
  "bin": {