@verboo/code 0.8.1 → 0.8.2
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 +152 -128
- 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:01:49.271Z").getTime();
|
|
390115
390139
|
if (isNaN(buildTime))
|
|
390116
390140
|
return;
|
|
390117
390141
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -410023,7 +410047,7 @@ var init_projectOnboardingState = __esm(() => {
|
|
|
410023
410047
|
|
|
410024
410048
|
// src/utils/appleTerminalBackup.ts
|
|
410025
410049
|
import { stat as stat38 } from "fs/promises";
|
|
410026
|
-
import { homedir as
|
|
410050
|
+
import { homedir as homedir25 } from "os";
|
|
410027
410051
|
import { join as join97 } from "path";
|
|
410028
410052
|
function markTerminalSetupInProgress(backupPath) {
|
|
410029
410053
|
saveGlobalConfig((current) => ({
|
|
@@ -410046,7 +410070,7 @@ function getTerminalRecoveryInfo() {
|
|
|
410046
410070
|
};
|
|
410047
410071
|
}
|
|
410048
410072
|
function getTerminalPlistPath() {
|
|
410049
|
-
return join97(
|
|
410073
|
+
return join97(homedir25(), "Library", "Preferences", "com.apple.Terminal.plist");
|
|
410050
410074
|
}
|
|
410051
410075
|
async function backupTerminalPreferences() {
|
|
410052
410076
|
const terminalPlistPath = getTerminalPlistPath();
|
|
@@ -410117,11 +410141,11 @@ var init_appleTerminalBackup = __esm(() => {
|
|
|
410117
410141
|
});
|
|
410118
410142
|
|
|
410119
410143
|
// src/utils/completionCache.ts
|
|
410120
|
-
import { homedir as
|
|
410144
|
+
import { homedir as homedir26 } from "os";
|
|
410121
410145
|
import { dirname as dirname44, join as join98 } from "path";
|
|
410122
410146
|
function detectShell() {
|
|
410123
410147
|
const shell = process.env.SHELL || "";
|
|
410124
|
-
const home =
|
|
410148
|
+
const home = homedir26();
|
|
410125
410149
|
const claudeDir = join98(home, ".claude");
|
|
410126
410150
|
if (shell.endsWith("/zsh") || shell.endsWith("/zsh.exe")) {
|
|
410127
410151
|
const cacheFile = join98(claudeDir, "completion.zsh");
|
|
@@ -410197,7 +410221,7 @@ __export(exports_terminalSetup, {
|
|
|
410197
410221
|
});
|
|
410198
410222
|
import { randomBytes as randomBytes13 } from "crypto";
|
|
410199
410223
|
import { copyFile as copyFile8, mkdir as mkdir28, readFile as readFile33, writeFile as writeFile30 } from "fs/promises";
|
|
410200
|
-
import { homedir as
|
|
410224
|
+
import { homedir as homedir27, platform as platform4 } from "os";
|
|
410201
410225
|
import { dirname as dirname45, join as join99 } from "path";
|
|
410202
410226
|
import { pathToFileURL as pathToFileURL7 } from "url";
|
|
410203
410227
|
function isVSCodeRemoteSSH() {
|
|
@@ -410333,7 +410357,7 @@ async function installBindingsForVSCodeTerminal(editor = "VSCode", theme) {
|
|
|
410333
410357
|
]`)}${EOL5}`;
|
|
410334
410358
|
}
|
|
410335
410359
|
const editorDir = editor === "VSCode" ? "Code" : editor;
|
|
410336
|
-
const userDirPath = join99(
|
|
410360
|
+
const userDirPath = join99(homedir27(), platform4() === "win32" ? join99("AppData", "Roaming", editorDir, "User") : platform4() === "darwin" ? join99("Library", "Application Support", editorDir, "User") : join99(".config", editorDir, "User"));
|
|
410337
410361
|
const keybindingsPath = join99(userDirPath, "keybindings.json");
|
|
410338
410362
|
try {
|
|
410339
410363
|
await mkdir28(userDirPath, {
|
|
@@ -410477,7 +410501,7 @@ chars = "\\u001B\\r"`;
|
|
|
410477
410501
|
if (xdgConfigHome) {
|
|
410478
410502
|
configPaths.push(join99(xdgConfigHome, "alacritty", "alacritty.toml"));
|
|
410479
410503
|
} else {
|
|
410480
|
-
configPaths.push(join99(
|
|
410504
|
+
configPaths.push(join99(homedir27(), ".config", "alacritty", "alacritty.toml"));
|
|
410481
410505
|
}
|
|
410482
410506
|
if (platform4() === "win32") {
|
|
410483
410507
|
const appData = process.env.APPDATA;
|
|
@@ -410543,7 +410567,7 @@ chars = "\\u001B\\r"`;
|
|
|
410543
410567
|
}
|
|
410544
410568
|
}
|
|
410545
410569
|
async function installBindingsForZed(theme) {
|
|
410546
|
-
const zedDir = join99(
|
|
410570
|
+
const zedDir = join99(homedir27(), ".config", "zed");
|
|
410547
410571
|
const keymapPath = join99(zedDir, "keymap.json");
|
|
410548
410572
|
try {
|
|
410549
410573
|
await mkdir28(zedDir, {
|
|
@@ -415385,7 +415409,7 @@ var init_file_index = __esm(() => {
|
|
|
415385
415409
|
});
|
|
415386
415410
|
|
|
415387
415411
|
// src/hooks/fileSuggestions.ts
|
|
415388
|
-
import { statSync as
|
|
415412
|
+
import { statSync as statSync8 } from "fs";
|
|
415389
415413
|
import * as path17 from "path";
|
|
415390
415414
|
function getFileIndex() {
|
|
415391
415415
|
if (!fileIndex) {
|
|
@@ -415433,7 +415457,7 @@ function getGitIndexMtime() {
|
|
|
415433
415457
|
if (!repoRoot)
|
|
415434
415458
|
return null;
|
|
415435
415459
|
try {
|
|
415436
|
-
return
|
|
415460
|
+
return statSync8(path17.join(repoRoot, ".git", "index")).mtimeMs;
|
|
415437
415461
|
} catch {
|
|
415438
415462
|
return null;
|
|
415439
415463
|
}
|
|
@@ -418233,7 +418257,7 @@ function buildPrimarySection() {
|
|
|
418233
418257
|
}, undefined, false, undefined, this);
|
|
418234
418258
|
return [{
|
|
418235
418259
|
label: "Version",
|
|
418236
|
-
value: "0.8.
|
|
418260
|
+
value: "0.8.2"
|
|
418237
418261
|
}, {
|
|
418238
418262
|
label: "Session name",
|
|
418239
418263
|
value: nameValue
|
|
@@ -432133,10 +432157,10 @@ var init_MemoryFileSelector = __esm(() => {
|
|
|
432133
432157
|
});
|
|
432134
432158
|
|
|
432135
432159
|
// src/components/memory/MemoryUpdateNotification.tsx
|
|
432136
|
-
import { homedir as
|
|
432160
|
+
import { homedir as homedir28 } from "os";
|
|
432137
432161
|
import { relative as relative24 } from "path";
|
|
432138
432162
|
function getRelativeMemoryPath(path18) {
|
|
432139
|
-
const homeDir =
|
|
432163
|
+
const homeDir = homedir28();
|
|
432140
432164
|
const cwd2 = getCwd();
|
|
432141
432165
|
const relativeToHome = path18.startsWith(homeDir) ? "~" + path18.slice(homeDir.length) : null;
|
|
432142
432166
|
const relativeToCwd = path18.startsWith(cwd2) ? "./" + relative24(cwd2, path18) : null;
|
|
@@ -432528,7 +432552,7 @@ function getReleaseTagUrl(version2 = publicBuildVersion) {
|
|
|
432528
432552
|
return `${VERBOO_RELEASES_URL}/tag/v${normalizePublicVersion(version2)}`;
|
|
432529
432553
|
}
|
|
432530
432554
|
function getPublicBuildVersion() {
|
|
432531
|
-
return "0.8.
|
|
432555
|
+
return "0.8.2";
|
|
432532
432556
|
}
|
|
432533
432557
|
var import_semver10, VERBOO_RELEASES_URL = "https://github.com/verbeux-ai/code/releases", fallbackBuildVersion, publicBuildVersion;
|
|
432534
432558
|
var init_version = __esm(() => {
|
|
@@ -445031,7 +445055,7 @@ var init_mcp = __esm(() => {
|
|
|
445031
445055
|
});
|
|
445032
445056
|
|
|
445033
445057
|
// src/utils/plugins/parseMarketplaceInput.ts
|
|
445034
|
-
import { homedir as
|
|
445058
|
+
import { homedir as homedir29 } from "os";
|
|
445035
445059
|
import { resolve as resolve38 } from "path";
|
|
445036
445060
|
async function parseMarketplaceInput(input) {
|
|
445037
445061
|
const trimmed = input.trim();
|
|
@@ -445067,7 +445091,7 @@ async function parseMarketplaceInput(input) {
|
|
|
445067
445091
|
const isWindows2 = process.platform === "win32";
|
|
445068
445092
|
const isWindowsPath = isWindows2 && (trimmed.startsWith(".\\") || trimmed.startsWith("..\\") || /^[a-zA-Z]:[/\\]/.test(trimmed));
|
|
445069
445093
|
if (trimmed.startsWith("./") || trimmed.startsWith("../") || trimmed.startsWith("/") || trimmed.startsWith("~") || isWindowsPath) {
|
|
445070
|
-
const resolvedPath = resolve38(trimmed.startsWith("~") ? trimmed.replace(/^~/,
|
|
445094
|
+
const resolvedPath = resolve38(trimmed.startsWith("~") ? trimmed.replace(/^~/, homedir29()) : trimmed);
|
|
445071
445095
|
let stats;
|
|
445072
445096
|
try {
|
|
445073
445097
|
stats = await fs3.stat(resolvedPath);
|
|
@@ -487624,7 +487648,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
487624
487648
|
var call62 = async () => {
|
|
487625
487649
|
return {
|
|
487626
487650
|
type: "text",
|
|
487627
|
-
value: `${"99.0.0"} (built ${"2026-05-
|
|
487651
|
+
value: `${"99.0.0"} (built ${"2026-05-08T20:01:49.271Z"})`
|
|
487628
487652
|
};
|
|
487629
487653
|
}, version2, version_default;
|
|
487630
487654
|
var init_version2 = __esm(() => {
|
|
@@ -489439,7 +489463,7 @@ var init_setupPortable = __esm(() => {
|
|
|
489439
489463
|
|
|
489440
489464
|
// src/utils/claudeInChrome/setup.ts
|
|
489441
489465
|
import { chmod as chmod10, mkdir as mkdir38, readFile as readFile46, writeFile as writeFile44 } from "fs/promises";
|
|
489442
|
-
import { homedir as
|
|
489466
|
+
import { homedir as homedir30 } from "os";
|
|
489443
489467
|
import { join as join128 } from "path";
|
|
489444
489468
|
import { fileURLToPath as fileURLToPath6 } from "url";
|
|
489445
489469
|
function shouldEnableClaudeInChrome(chromeFlag) {
|
|
@@ -489519,7 +489543,7 @@ function setupClaudeInChrome() {
|
|
|
489519
489543
|
function getNativeMessagingHostsDirs() {
|
|
489520
489544
|
const platform5 = getPlatform();
|
|
489521
489545
|
if (platform5 === "windows") {
|
|
489522
|
-
const home =
|
|
489546
|
+
const home = homedir30();
|
|
489523
489547
|
const appData = process.env.APPDATA || join128(home, "AppData", "Local");
|
|
489524
489548
|
return [join128(appData, "Claude Code", "ChromeNativeHost")];
|
|
489525
489549
|
}
|
|
@@ -499220,7 +499244,7 @@ import {
|
|
|
499220
499244
|
writeFile as writeFile47
|
|
499221
499245
|
} from "fs/promises";
|
|
499222
499246
|
import { basename as basename45, dirname as dirname55, join as join136 } from "path";
|
|
499223
|
-
import { homedir as
|
|
499247
|
+
import { homedir as homedir31 } from "os";
|
|
499224
499248
|
function isTranscriptMessage(entry) {
|
|
499225
499249
|
return entry.type === "user" || entry.type === "assistant" || entry.type === "attachment" || entry.type === "system";
|
|
499226
499250
|
}
|
|
@@ -499237,7 +499261,7 @@ function getProjectsDir2() {
|
|
|
499237
499261
|
if (process.env.VERBOO_PROJECTS_DIR) {
|
|
499238
499262
|
return process.env.VERBOO_PROJECTS_DIR;
|
|
499239
499263
|
}
|
|
499240
|
-
return join136(
|
|
499264
|
+
return join136(homedir31(), ".claude", "projects");
|
|
499241
499265
|
}
|
|
499242
499266
|
function getTranscriptPath() {
|
|
499243
499267
|
const projectDir = getSessionProjectDir() ?? getProjectDir3(getOriginalCwd());
|
|
@@ -502691,7 +502715,7 @@ var init_agentMemory = __esm(() => {
|
|
|
502691
502715
|
|
|
502692
502716
|
// src/utils/permissions/filesystem.ts
|
|
502693
502717
|
import { randomBytes as randomBytes17 } from "crypto";
|
|
502694
|
-
import { homedir as
|
|
502718
|
+
import { homedir as homedir32, tmpdir as tmpdir9 } from "os";
|
|
502695
502719
|
import { join as join138, normalize as normalize14, posix as posix8, sep as sep33 } from "path";
|
|
502696
502720
|
function normalizeCaseForComparison(path21) {
|
|
502697
502721
|
return path21.toLowerCase();
|
|
@@ -503019,7 +503043,7 @@ function patternWithRoot(pattern, source) {
|
|
|
503019
503043
|
} else if (pattern.startsWith(`~${DIR_SEP}`)) {
|
|
503020
503044
|
return {
|
|
503021
503045
|
relativePattern: pattern.slice(1),
|
|
503022
|
-
root:
|
|
503046
|
+
root: homedir32().normalize("NFC")
|
|
503023
503047
|
};
|
|
503024
503048
|
} else if (pattern.startsWith(DIR_SEP)) {
|
|
503025
503049
|
return {
|
|
@@ -504803,7 +504827,7 @@ __export(exports_hookChains, {
|
|
|
504803
504827
|
dispatchHookChainsForEvent: () => dispatchHookChainsForEvent
|
|
504804
504828
|
});
|
|
504805
504829
|
import { createHash as createHash20 } from "crypto";
|
|
504806
|
-
import { statSync as
|
|
504830
|
+
import { statSync as statSync9 } from "fs";
|
|
504807
504831
|
import { join as join140, resolve as resolve41 } from "path";
|
|
504808
504832
|
function asAnalyticsString(value) {
|
|
504809
504833
|
return value;
|
|
@@ -504944,7 +504968,7 @@ function loadHookChainsConfig(options2) {
|
|
|
504944
504968
|
}
|
|
504945
504969
|
let stats2;
|
|
504946
504970
|
try {
|
|
504947
|
-
const stat49 =
|
|
504971
|
+
const stat49 = statSync9(path21);
|
|
504948
504972
|
stats2 = {
|
|
504949
504973
|
mtimeMs: stat49.mtimeMs,
|
|
504950
504974
|
size: stat49.size
|
|
@@ -514651,7 +514675,7 @@ __export(exports_upstreamproxy, {
|
|
|
514651
514675
|
SESSION_TOKEN_PATH: () => SESSION_TOKEN_PATH
|
|
514652
514676
|
});
|
|
514653
514677
|
import { mkdir as mkdir45, readFile as readFile50, unlink as unlink23, writeFile as writeFile48 } from "fs/promises";
|
|
514654
|
-
import { homedir as
|
|
514678
|
+
import { homedir as homedir33 } from "os";
|
|
514655
514679
|
import { join as join142 } from "path";
|
|
514656
514680
|
async function initUpstreamProxy(opts) {
|
|
514657
514681
|
if (!isEnvTruthy(process.env.CLAUDE_CODE_REMOTE)) {
|
|
@@ -514673,7 +514697,7 @@ async function initUpstreamProxy(opts) {
|
|
|
514673
514697
|
}
|
|
514674
514698
|
setNonDumpable();
|
|
514675
514699
|
const baseUrl = "https://code.verboo.ai/router";
|
|
514676
|
-
const caBundlePath = opts?.caBundlePath ?? join142(
|
|
514700
|
+
const caBundlePath = opts?.caBundlePath ?? join142(homedir33(), ".ccr", "ca-bundle.crt");
|
|
514677
514701
|
const caOk = await downloadCaBundle(baseUrl, opts?.systemCaPath ?? SYSTEM_CA_BUNDLE, caBundlePath);
|
|
514678
514702
|
if (!caOk)
|
|
514679
514703
|
return state2;
|
|
@@ -517212,7 +517236,7 @@ var init_types15 = __esm(() => {
|
|
|
517212
517236
|
});
|
|
517213
517237
|
|
|
517214
517238
|
// src/utils/settings/mdm/constants.ts
|
|
517215
|
-
import { homedir as
|
|
517239
|
+
import { homedir as homedir34, userInfo as userInfo3 } from "os";
|
|
517216
517240
|
import { join as join144 } from "path";
|
|
517217
517241
|
function getMacOSPlistPaths() {
|
|
517218
517242
|
let username = "";
|
|
@@ -517232,7 +517256,7 @@ function getMacOSPlistPaths() {
|
|
|
517232
517256
|
});
|
|
517233
517257
|
if (process.env.USER_TYPE === "ant") {
|
|
517234
517258
|
paths2.push({
|
|
517235
|
-
path: join144(
|
|
517259
|
+
path: join144(homedir34(), "Library", "Preferences", `${MACOS_PREFERENCE_DOMAIN}.plist`),
|
|
517236
517260
|
label: "user preferences (internal-only)"
|
|
517237
517261
|
});
|
|
517238
517262
|
}
|
|
@@ -518045,7 +518069,7 @@ var init_settings2 = __esm(() => {
|
|
|
518045
518069
|
});
|
|
518046
518070
|
|
|
518047
518071
|
// src/memdir/paths.ts
|
|
518048
|
-
import { homedir as
|
|
518072
|
+
import { homedir as homedir35 } from "os";
|
|
518049
518073
|
import { isAbsolute as isAbsolute25, join as join147, normalize as normalize15, sep as sep34 } from "path";
|
|
518050
518074
|
function isAutoMemoryEnabled() {
|
|
518051
518075
|
const envVal = process.env.CLAUDE_CODE_DISABLE_AUTO_MEMORY;
|
|
@@ -518090,7 +518114,7 @@ function validateMemoryPath(raw, expandTilde3) {
|
|
|
518090
518114
|
if (restNorm === "." || restNorm === "..") {
|
|
518091
518115
|
return;
|
|
518092
518116
|
}
|
|
518093
|
-
candidate = join147(
|
|
518117
|
+
candidate = join147(homedir35(), rest);
|
|
518094
518118
|
}
|
|
518095
518119
|
const normalized = normalize15(candidate).replace(/[/\\]+$/, "");
|
|
518096
518120
|
if (!isAbsolute25(normalized) || normalized.length < 3 || /^[A-Za-z]:$/.test(normalized) || normalized.startsWith("\\\\") || normalized.startsWith("//") || normalized.includes("\x00")) {
|
|
@@ -519276,7 +519300,7 @@ import {
|
|
|
519276
519300
|
unlink as unlink25
|
|
519277
519301
|
} from "fs/promises";
|
|
519278
519302
|
import { createServer as createServer6 } from "net";
|
|
519279
|
-
import { homedir as
|
|
519303
|
+
import { homedir as homedir36, platform as platform5 } from "os";
|
|
519280
519304
|
import { join as join149 } from "path";
|
|
519281
519305
|
function log(message, ...args) {
|
|
519282
519306
|
if (LOG_FILE) {
|
|
@@ -519615,7 +519639,7 @@ var init_chromeNativeHost = __esm(() => {
|
|
|
519615
519639
|
init_slowOperations();
|
|
519616
519640
|
init_common2();
|
|
519617
519641
|
MAX_MESSAGE_SIZE = 1024 * 1024;
|
|
519618
|
-
LOG_FILE = process.env.USER_TYPE === "ant" ? join149(
|
|
519642
|
+
LOG_FILE = process.env.USER_TYPE === "ant" ? join149(homedir36(), ".claude", "debug", "chrome-native-host.txt") : undefined;
|
|
519619
519643
|
messageSchema = lazySchema(() => exports_external2.object({
|
|
519620
519644
|
type: exports_external2.string()
|
|
519621
519645
|
}).passthrough());
|
|
@@ -519781,7 +519805,7 @@ function printStartupScreen(modelOverride) {
|
|
|
519781
519805
|
const home = process.env.HOME || process.env.USERPROFILE || "";
|
|
519782
519806
|
const cwd2 = process.cwd();
|
|
519783
519807
|
const displayCwd = home && cwd2.startsWith(home) ? `~${cwd2.slice(home.length)}` : cwd2;
|
|
519784
|
-
const version3 = "0.8.
|
|
519808
|
+
const version3 = "0.8.2";
|
|
519785
519809
|
const bold2 = `${ESC3}1m`;
|
|
519786
519810
|
const PURPLE = rgb3(...ACCENT);
|
|
519787
519811
|
const SOFT = rgb3(...CREAM);
|
|
@@ -529068,7 +529092,7 @@ var init_ShowInIDEPrompt = __esm(() => {
|
|
|
529068
529092
|
});
|
|
529069
529093
|
|
|
529070
529094
|
// src/components/permissions/FilePermissionDialog/permissionOptions.tsx
|
|
529071
|
-
import { homedir as
|
|
529095
|
+
import { homedir as homedir37 } from "os";
|
|
529072
529096
|
import { basename as basename52, join as join150, sep as sep35 } from "path";
|
|
529073
529097
|
function isInClaudeFolder(filePath) {
|
|
529074
529098
|
const absolutePath = expandPath(filePath);
|
|
@@ -529079,7 +529103,7 @@ function isInClaudeFolder(filePath) {
|
|
|
529079
529103
|
}
|
|
529080
529104
|
function isInGlobalClaudeFolder(filePath) {
|
|
529081
529105
|
const absolutePath = expandPath(filePath);
|
|
529082
|
-
const globalClaudeFolderPath = join150(
|
|
529106
|
+
const globalClaudeFolderPath = join150(homedir37(), ".claude");
|
|
529083
529107
|
const normalizedAbsolutePath = normalizeCaseForComparison(absolutePath);
|
|
529084
529108
|
const normalizedGlobalClaudeFolderPath = normalizeCaseForComparison(globalClaudeFolderPath);
|
|
529085
529109
|
return normalizedAbsolutePath.startsWith(normalizedGlobalClaudeFolderPath + sep35.toLowerCase()) || normalizedAbsolutePath.startsWith(normalizedGlobalClaudeFolderPath + "/");
|
|
@@ -538055,7 +538079,7 @@ function AutoUpdater({
|
|
|
538055
538079
|
return;
|
|
538056
538080
|
}
|
|
538057
538081
|
if (false) {}
|
|
538058
|
-
const currentVersion = "0.8.
|
|
538082
|
+
const currentVersion = "0.8.2";
|
|
538059
538083
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
538060
538084
|
let latestVersion = await getLatestVersion(channel);
|
|
538061
538085
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -538408,17 +538432,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
538408
538432
|
const maxVersion = await getMaxVersion();
|
|
538409
538433
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
538410
538434
|
logForDebugging2(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
538411
|
-
if (gte("0.8.
|
|
538412
|
-
logForDebugging2(`PackageManagerAutoUpdater: current version ${"0.8.
|
|
538435
|
+
if (gte("0.8.2", maxVersion)) {
|
|
538436
|
+
logForDebugging2(`PackageManagerAutoUpdater: current version ${"0.8.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
538413
538437
|
setUpdateAvailable(false);
|
|
538414
538438
|
return;
|
|
538415
538439
|
}
|
|
538416
538440
|
latest = maxVersion;
|
|
538417
538441
|
}
|
|
538418
|
-
const hasUpdate = latest && !gte("0.8.
|
|
538442
|
+
const hasUpdate = latest && !gte("0.8.2", latest) && !shouldSkipVersion(latest);
|
|
538419
538443
|
setUpdateAvailable(!!hasUpdate);
|
|
538420
538444
|
if (hasUpdate) {
|
|
538421
|
-
logForDebugging2(`PackageManagerAutoUpdater: Update available ${"0.8.
|
|
538445
|
+
logForDebugging2(`PackageManagerAutoUpdater: Update available ${"0.8.2"} -> ${latest}`);
|
|
538422
538446
|
}
|
|
538423
538447
|
};
|
|
538424
538448
|
$2[0] = t1;
|
|
@@ -538452,7 +538476,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
538452
538476
|
wrap: "truncate",
|
|
538453
538477
|
children: [
|
|
538454
538478
|
"currentVersion: ",
|
|
538455
|
-
"0.8.
|
|
538479
|
+
"0.8.2"
|
|
538456
538480
|
]
|
|
538457
538481
|
}, undefined, true, undefined, this);
|
|
538458
538482
|
$2[3] = verbose;
|
|
@@ -553815,7 +553839,7 @@ var init_cacache = __esm(() => {
|
|
|
553815
553839
|
|
|
553816
553840
|
// src/utils/cleanup.ts
|
|
553817
553841
|
import * as fs4 from "fs/promises";
|
|
553818
|
-
import { homedir as
|
|
553842
|
+
import { homedir as homedir38 } from "os";
|
|
553819
553843
|
import { join as join151 } from "path";
|
|
553820
553844
|
function getCutoffDate() {
|
|
553821
553845
|
const settings = getSettings_DEPRECATED() || {};
|
|
@@ -554116,7 +554140,7 @@ async function cleanupNpmCacheForAnthropicPackages() {
|
|
|
554116
554140
|
return;
|
|
554117
554141
|
}
|
|
554118
554142
|
logForDebugging2("npm cache cleanup: starting");
|
|
554119
|
-
const npmCachePath = join151(
|
|
554143
|
+
const npmCachePath = join151(homedir38(), ".npm", "_cacache");
|
|
554120
554144
|
const NPM_CACHE_RETENTION_COUNT = 5;
|
|
554121
554145
|
const startTime = Date.now();
|
|
554122
554146
|
try {
|
|
@@ -570865,7 +570889,7 @@ function WelcomeV2() {
|
|
|
570865
570889
|
dimColor: true,
|
|
570866
570890
|
children: [
|
|
570867
570891
|
"v",
|
|
570868
|
-
"0.8.
|
|
570892
|
+
"0.8.2",
|
|
570869
570893
|
" "
|
|
570870
570894
|
]
|
|
570871
570895
|
}, undefined, true, undefined, this)
|
|
@@ -571052,7 +571076,7 @@ function WelcomeV2() {
|
|
|
571052
571076
|
dimColor: true,
|
|
571053
571077
|
children: [
|
|
571054
571078
|
"v",
|
|
571055
|
-
"0.8.
|
|
571079
|
+
"0.8.2",
|
|
571056
571080
|
" "
|
|
571057
571081
|
]
|
|
571058
571082
|
}, undefined, true, undefined, this)
|
|
@@ -571268,7 +571292,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
571268
571292
|
dimColor: true,
|
|
571269
571293
|
children: [
|
|
571270
571294
|
"v",
|
|
571271
|
-
"0.8.
|
|
571295
|
+
"0.8.2",
|
|
571272
571296
|
" "
|
|
571273
571297
|
]
|
|
571274
571298
|
}, undefined, true, undefined, this);
|
|
@@ -571477,7 +571501,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
571477
571501
|
dimColor: true,
|
|
571478
571502
|
children: [
|
|
571479
571503
|
"v",
|
|
571480
|
-
"0.8.
|
|
571504
|
+
"0.8.2",
|
|
571481
571505
|
" "
|
|
571482
571506
|
]
|
|
571483
571507
|
}, undefined, true, undefined, this);
|
|
@@ -572283,7 +572307,7 @@ var exports_TrustDialog = {};
|
|
|
572283
572307
|
__export(exports_TrustDialog, {
|
|
572284
572308
|
TrustDialog: () => TrustDialog
|
|
572285
572309
|
});
|
|
572286
|
-
import { homedir as
|
|
572310
|
+
import { homedir as homedir39 } from "os";
|
|
572287
572311
|
function TrustDialog(t0) {
|
|
572288
572312
|
const $2 = import_react_compiler_runtime363.c(33);
|
|
572289
572313
|
const {
|
|
@@ -572394,7 +572418,7 @@ function TrustDialog(t0) {
|
|
|
572394
572418
|
let t13;
|
|
572395
572419
|
if ($2[13] !== hasAnyBashExecution) {
|
|
572396
572420
|
t12 = () => {
|
|
572397
|
-
const isHomeDir =
|
|
572421
|
+
const isHomeDir = homedir39() === getCwd();
|
|
572398
572422
|
logEvent("tengu_trust_dialog_shown", {
|
|
572399
572423
|
isHomeDir,
|
|
572400
572424
|
hasMcpServers,
|
|
@@ -572423,7 +572447,7 @@ function TrustDialog(t0) {
|
|
|
572423
572447
|
gracefulShutdownSync(1);
|
|
572424
572448
|
return;
|
|
572425
572449
|
}
|
|
572426
|
-
const isHomeDir_0 =
|
|
572450
|
+
const isHomeDir_0 = homedir39() === getCwd();
|
|
572427
572451
|
logEvent("tengu_trust_dialog_accept", {
|
|
572428
572452
|
isHomeDir: isHomeDir_0,
|
|
572429
572453
|
hasMcpServers,
|
|
@@ -577667,7 +577691,7 @@ var init_sessionMemory = __esm(() => {
|
|
|
577667
577691
|
|
|
577668
577692
|
// src/utils/iTermBackup.ts
|
|
577669
577693
|
import { copyFile as copyFile10, stat as stat54 } from "fs/promises";
|
|
577670
|
-
import { homedir as
|
|
577694
|
+
import { homedir as homedir40 } from "os";
|
|
577671
577695
|
import { join as join157 } from "path";
|
|
577672
577696
|
function markITerm2SetupComplete() {
|
|
577673
577697
|
saveGlobalConfig((current) => ({
|
|
@@ -577683,7 +577707,7 @@ function getIterm2RecoveryInfo() {
|
|
|
577683
577707
|
};
|
|
577684
577708
|
}
|
|
577685
577709
|
function getITerm2PlistPath() {
|
|
577686
|
-
return join157(
|
|
577710
|
+
return join157(homedir40(), "Library", "Preferences", "com.googlecode.iterm2.plist");
|
|
577687
577711
|
}
|
|
577688
577712
|
async function checkAndRestoreITerm2Backup() {
|
|
577689
577713
|
const { inProgress, backupPath } = getIterm2RecoveryInfo();
|
|
@@ -578566,7 +578590,7 @@ __export(exports_claudeDesktop, {
|
|
|
578566
578590
|
getClaudeDesktopConfigPath: () => getClaudeDesktopConfigPath
|
|
578567
578591
|
});
|
|
578568
578592
|
import { readdir as readdir34, readFile as readFile52, stat as stat55 } from "fs/promises";
|
|
578569
|
-
import { homedir as
|
|
578593
|
+
import { homedir as homedir41 } from "os";
|
|
578570
578594
|
import { join as join158 } from "path";
|
|
578571
578595
|
async function getClaudeDesktopConfigPath() {
|
|
578572
578596
|
const platform6 = getPlatform();
|
|
@@ -578574,7 +578598,7 @@ async function getClaudeDesktopConfigPath() {
|
|
|
578574
578598
|
throw new Error(`Unsupported platform: ${platform6} - Verboo Desktop integration only works on macOS and WSL.`);
|
|
578575
578599
|
}
|
|
578576
578600
|
if (platform6 === "macos") {
|
|
578577
|
-
return join158(
|
|
578601
|
+
return join158(homedir41(), "Library", "Application Support", "Claude", "claude_desktop_config.json");
|
|
578578
578602
|
}
|
|
578579
578603
|
const windowsHome = process.env.USERPROFILE ? process.env.USERPROFILE.replace(/\\/g, "/") : null;
|
|
578580
578604
|
if (windowsHome) {
|
|
@@ -588183,11 +588207,11 @@ __export(exports_install, {
|
|
|
588183
588207
|
install: () => install,
|
|
588184
588208
|
getInstallationPath: () => getInstallationPath2
|
|
588185
588209
|
});
|
|
588186
|
-
import { homedir as
|
|
588210
|
+
import { homedir as homedir42 } from "node:os";
|
|
588187
588211
|
import { join as join162 } from "node:path";
|
|
588188
588212
|
function getInstallationPath2() {
|
|
588189
588213
|
const isWindows2 = env2.platform === "win32";
|
|
588190
|
-
const homeDir =
|
|
588214
|
+
const homeDir = homedir42();
|
|
588191
588215
|
if (isWindows2) {
|
|
588192
588216
|
const windowsPath = join162(homeDir, ".local", "bin", "verboo.exe");
|
|
588193
588217
|
return windowsPath.replace(/\//g, "\\");
|
|
@@ -588848,7 +588872,7 @@ __export(exports_update, {
|
|
|
588848
588872
|
async function update() {
|
|
588849
588873
|
if (getAPIProvider() !== "firstParty") {
|
|
588850
588874
|
writeToStdout(source_default.yellow(`Auto-update is not available for third-party provider builds.
|
|
588851
|
-
`) + `Current version: ${"0.8.
|
|
588875
|
+
`) + `Current version: ${"0.8.2"}
|
|
588852
588876
|
|
|
588853
588877
|
` + `To update, reinstall from npm:
|
|
588854
588878
|
` + source_default.bold(` npm install -g ${"@verboo/code"}@latest`) + `
|
|
@@ -588859,7 +588883,7 @@ async function update() {
|
|
|
588859
588883
|
await gracefulShutdown(0);
|
|
588860
588884
|
}
|
|
588861
588885
|
logEvent("tengu_update_check", {});
|
|
588862
|
-
writeToStdout(`Current version: ${"0.8.
|
|
588886
|
+
writeToStdout(`Current version: ${"0.8.2"}
|
|
588863
588887
|
`);
|
|
588864
588888
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
588865
588889
|
writeToStdout(`Checking for updates to ${channel} version...
|
|
@@ -588944,8 +588968,8 @@ async function update() {
|
|
|
588944
588968
|
writeToStdout(`Verboo Code is managed by Homebrew.
|
|
588945
588969
|
`);
|
|
588946
588970
|
const latest = await getLatestVersion(channel);
|
|
588947
|
-
if (latest && !gte("0.8.
|
|
588948
|
-
writeToStdout(`Update available: ${"0.8.
|
|
588971
|
+
if (latest && !gte("0.8.2", latest)) {
|
|
588972
|
+
writeToStdout(`Update available: ${"0.8.2"} → ${latest}
|
|
588949
588973
|
`);
|
|
588950
588974
|
writeToStdout(`
|
|
588951
588975
|
`);
|
|
@@ -588961,8 +588985,8 @@ async function update() {
|
|
|
588961
588985
|
writeToStdout(`Verboo Code is managed by winget.
|
|
588962
588986
|
`);
|
|
588963
588987
|
const latest = await getLatestVersion(channel);
|
|
588964
|
-
if (latest && !gte("0.8.
|
|
588965
|
-
writeToStdout(`Update available: ${"0.8.
|
|
588988
|
+
if (latest && !gte("0.8.2", latest)) {
|
|
588989
|
+
writeToStdout(`Update available: ${"0.8.2"} → ${latest}
|
|
588966
588990
|
`);
|
|
588967
588991
|
writeToStdout(`
|
|
588968
588992
|
`);
|
|
@@ -588978,8 +589002,8 @@ async function update() {
|
|
|
588978
589002
|
writeToStdout(`Verboo Code is managed by apk.
|
|
588979
589003
|
`);
|
|
588980
589004
|
const latest = await getLatestVersion(channel);
|
|
588981
|
-
if (latest && !gte("0.8.
|
|
588982
|
-
writeToStdout(`Update available: ${"0.8.
|
|
589005
|
+
if (latest && !gte("0.8.2", latest)) {
|
|
589006
|
+
writeToStdout(`Update available: ${"0.8.2"} → ${latest}
|
|
588983
589007
|
`);
|
|
588984
589008
|
writeToStdout(`
|
|
588985
589009
|
`);
|
|
@@ -589044,11 +589068,11 @@ async function update() {
|
|
|
589044
589068
|
`);
|
|
589045
589069
|
await gracefulShutdown(1);
|
|
589046
589070
|
}
|
|
589047
|
-
if (result.latestVersion === "0.8.
|
|
589048
|
-
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.8.
|
|
589071
|
+
if (result.latestVersion === "0.8.2") {
|
|
589072
|
+
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.8.2"})`) + `
|
|
589049
589073
|
`);
|
|
589050
589074
|
} else {
|
|
589051
|
-
writeToStdout(source_default.green(`Successfully updated from ${"0.8.
|
|
589075
|
+
writeToStdout(source_default.green(`Successfully updated from ${"0.8.2"} to version ${result.latestVersion}`) + `
|
|
589052
589076
|
`);
|
|
589053
589077
|
await regenerateCompletionCache();
|
|
589054
589078
|
}
|
|
@@ -589108,12 +589132,12 @@ async function update() {
|
|
|
589108
589132
|
`);
|
|
589109
589133
|
await gracefulShutdown(1);
|
|
589110
589134
|
}
|
|
589111
|
-
if (latestVersion === "0.8.
|
|
589112
|
-
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.8.
|
|
589135
|
+
if (latestVersion === "0.8.2") {
|
|
589136
|
+
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.8.2"})`) + `
|
|
589113
589137
|
`);
|
|
589114
589138
|
await gracefulShutdown(0);
|
|
589115
589139
|
}
|
|
589116
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"0.8.
|
|
589140
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"0.8.2"})
|
|
589117
589141
|
`);
|
|
589118
589142
|
writeToStdout(`Installing update...
|
|
589119
589143
|
`);
|
|
@@ -589158,7 +589182,7 @@ async function update() {
|
|
|
589158
589182
|
logForDebugging2(`update: Installation status: ${status2}`);
|
|
589159
589183
|
switch (status2) {
|
|
589160
589184
|
case "success":
|
|
589161
|
-
writeToStdout(source_default.green(`Successfully updated from ${"0.8.
|
|
589185
|
+
writeToStdout(source_default.green(`Successfully updated from ${"0.8.2"} to version ${latestVersion}`) + `
|
|
589162
589186
|
`);
|
|
589163
589187
|
await regenerateCompletionCache();
|
|
589164
589188
|
break;
|
|
@@ -590418,7 +590442,7 @@ ${customInstructions}` : customInstructions;
|
|
|
590418
590442
|
is_native_binary: isInBundledMode()
|
|
590419
590443
|
});
|
|
590420
590444
|
logMemoryDiagnostics("start", {
|
|
590421
|
-
version: "0.8.
|
|
590445
|
+
version: "0.8.2",
|
|
590422
590446
|
debug: debug2,
|
|
590423
590447
|
debugToStderr,
|
|
590424
590448
|
print: print ?? false,
|
|
@@ -591224,7 +591248,7 @@ Usage: verboo --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
591224
591248
|
pendingHookMessages
|
|
591225
591249
|
}, renderAndRun);
|
|
591226
591250
|
}
|
|
591227
|
-
}).version(`0.8.
|
|
591251
|
+
}).version(`0.8.2 (${cliDesc})`, "-v, --version", "Output the version number");
|
|
591228
591252
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
591229
591253
|
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
591254
|
if (canUserConfigureAdvisor()) {
|
|
@@ -591798,7 +591822,7 @@ if (false) {}
|
|
|
591798
591822
|
async function main2() {
|
|
591799
591823
|
const args = process.argv.slice(2);
|
|
591800
591824
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
591801
|
-
console.log(`${"0.8.
|
|
591825
|
+
console.log(`${"0.8.2"} (Verboo Code)`);
|
|
591802
591826
|
return;
|
|
591803
591827
|
}
|
|
591804
591828
|
if (!IS_VERBOO_CLI && args.includes("--provider")) {
|
|
@@ -591963,4 +591987,4 @@ async function main2() {
|
|
|
591963
591987
|
}
|
|
591964
591988
|
main2();
|
|
591965
591989
|
|
|
591966
|
-
//# debugId=
|
|
591990
|
+
//# debugId=A258B2DC565153D564756E2164756E21
|