@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.
- package/dist/cli.mjs +154 -131
- 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 (
|
|
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
|
-
|
|
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
|
|
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 ??
|
|
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
|
|
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 =
|
|
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
|
|
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 ? [
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
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:
|
|
280680
|
+
cwd: homedir19()
|
|
280664
280681
|
});
|
|
280665
280682
|
} else {
|
|
280666
|
-
prefixResult = await execFileNoThrowWithCwd("npm", ["-g", "config", "get", "prefix"], { cwd:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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 =
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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:
|
|
293057
|
+
cwd: homedir22()
|
|
293041
293058
|
});
|
|
293042
293059
|
break;
|
|
293043
293060
|
case "pipx":
|
|
293044
293061
|
result = await execFileNoThrowWithCwd("pipx", ["install", "it2"], {
|
|
293045
|
-
cwd:
|
|
293062
|
+
cwd: homedir22()
|
|
293046
293063
|
});
|
|
293047
293064
|
break;
|
|
293048
293065
|
case "pip":
|
|
293049
|
-
result = await execFileNoThrowWithCwd("pip", ["install", "--user", "it2"], { cwd:
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
329211
|
-
|
|
329212
|
-
dynamicSkillDirs.
|
|
329213
|
-
|
|
329214
|
-
|
|
329215
|
-
|
|
329216
|
-
|
|
329217
|
-
|
|
329218
|
-
|
|
329219
|
-
|
|
329220
|
-
|
|
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.
|
|
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.
|
|
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-
|
|
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
|
|
402576
|
+
return isEnvTruthy(process.env.VERBOO_DISABLE_PLUGINS);
|
|
402553
402577
|
}
|
|
402554
402578
|
function getEmptyPluginLoadResultForVerboo() {
|
|
402555
402579
|
cachePluginSettings([]);
|
|
402556
|
-
logForDebugging2("
|
|
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
|
|
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(
|
|
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
|
|
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 =
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
432159
|
+
import { homedir as homedir28 } from "os";
|
|
432137
432160
|
import { relative as relative24 } from "path";
|
|
432138
432161
|
function getRelativeMemoryPath(path18) {
|
|
432139
|
-
const homeDir =
|
|
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.
|
|
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
|
|
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(/^~/,
|
|
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-
|
|
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
|
|
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 =
|
|
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
|
|
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(
|
|
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
|
|
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:
|
|
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
|
|
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 =
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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.
|
|
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
|
|
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(
|
|
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.
|
|
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.
|
|
538412
|
-
logForDebugging2(`PackageManagerAutoUpdater: current version ${"0.8.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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(
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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 =
|
|
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.
|
|
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.
|
|
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.
|
|
588948
|
-
writeToStdout(`Update available: ${"0.8.
|
|
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.
|
|
588965
|
-
writeToStdout(`Update available: ${"0.8.
|
|
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.
|
|
588982
|
-
writeToStdout(`Update available: ${"0.8.
|
|
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.
|
|
589048
|
-
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.8.
|
|
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.
|
|
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.
|
|
589112
|
-
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.8.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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=
|
|
591989
|
+
//# debugId=32F7474D8133300364756E2164756E21
|