@brookmind/ai-toolkit 1.2.1 → 1.2.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/README.md +8 -12
- package/dist/__tests__/index.test.js +4 -3
- package/dist/__tests__/index.test.js.map +1 -1
- package/dist/__tests__/integration/installer.test.js +64 -39
- package/dist/__tests__/integration/installer.test.js.map +1 -1
- package/dist/__tests__/services/installers.test.js +52 -24
- package/dist/__tests__/services/installers.test.js.map +1 -1
- package/dist/__tests__/ui/categorize.test.js +43 -12
- package/dist/__tests__/ui/categorize.test.js.map +1 -1
- package/dist/__tests__/ui/choices.test.js +78 -35
- package/dist/__tests__/ui/choices.test.js.map +1 -1
- package/dist/__tests__/ui/display.test.js +20 -24
- package/dist/__tests__/ui/display.test.js.map +1 -1
- package/dist/__tests__/utils/fs.test.js +166 -7
- package/dist/__tests__/utils/fs.test.js.map +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +2 -0
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -29
- package/dist/index.js.map +1 -1
- package/dist/services/installers.d.ts +1 -1
- package/dist/services/installers.d.ts.map +1 -1
- package/dist/services/installers.js +21 -14
- package/dist/services/installers.js.map +1 -1
- package/dist/types.d.ts +15 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +28 -1
- package/dist/types.js.map +1 -1
- package/dist/ui/categorize.d.ts +1 -0
- package/dist/ui/categorize.d.ts.map +1 -1
- package/dist/ui/categorize.js +15 -3
- package/dist/ui/categorize.js.map +1 -1
- package/dist/ui/choices.d.ts +1 -0
- package/dist/ui/choices.d.ts.map +1 -1
- package/dist/ui/choices.js +14 -3
- package/dist/ui/choices.js.map +1 -1
- package/dist/ui/display.d.ts +1 -2
- package/dist/ui/display.d.ts.map +1 -1
- package/dist/ui/display.js +11 -16
- package/dist/ui/display.js.map +1 -1
- package/dist/utils/fs.d.ts +14 -0
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js +72 -2
- package/dist/utils/fs.js.map +1 -1
- package/package.json +2 -2
package/dist/ui/categorize.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { join } from 'path';
|
|
2
2
|
import { MCP_DISPLAY_NAMES, OPENCODE_DIR, TOOLS_DIR } from '../constants.js';
|
|
3
|
-
import { exists,
|
|
4
|
-
import { getInstalledMcps } from '../services/installers.js';
|
|
3
|
+
import { exists, readMcpConfig } from '../utils/fs.js';
|
|
4
|
+
import { getInstalledMcps, isThemeInstalled } from '../services/installers.js';
|
|
5
5
|
export async function categorizeAgents(agents) {
|
|
6
6
|
const result = { new: [], update: [] };
|
|
7
7
|
for (const agent of agents) {
|
|
@@ -45,7 +45,7 @@ export async function categorizeMcps(mcps) {
|
|
|
45
45
|
const installedMcps = await getInstalledMcps();
|
|
46
46
|
const result = { new: [], update: [] };
|
|
47
47
|
for (const mcp of mcps) {
|
|
48
|
-
const mcpConfig = await
|
|
48
|
+
const mcpConfig = await readMcpConfig(join(TOOLS_DIR, 'mcps', mcp, '.mcp.json'));
|
|
49
49
|
const servers = mcpConfig.mcpServers;
|
|
50
50
|
const displayName = MCP_DISPLAY_NAMES[mcp] ?? mcp;
|
|
51
51
|
let isInstalled = false;
|
|
@@ -66,4 +66,16 @@ export async function categorizeMcps(mcps) {
|
|
|
66
66
|
}
|
|
67
67
|
return result;
|
|
68
68
|
}
|
|
69
|
+
export async function categorizeThemes(themes) {
|
|
70
|
+
const result = { new: [], update: [] };
|
|
71
|
+
for (const theme of themes) {
|
|
72
|
+
if (await isThemeInstalled(theme)) {
|
|
73
|
+
result.update.push(theme);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
result.new.push(theme);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return result;
|
|
80
|
+
}
|
|
69
81
|
//# sourceMappingURL=categorize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"categorize.js","sourceRoot":"","sources":["../../src/ui/categorize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE7E,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"categorize.js","sourceRoot":"","sources":["../../src/ui/categorize.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/choices.d.ts
CHANGED
|
@@ -3,4 +3,5 @@ export declare function buildAgentChoices(agents: string[]): Promise<CheckboxCho
|
|
|
3
3
|
export declare function buildSkillChoices(skills: string[]): Promise<CheckboxChoice[]>;
|
|
4
4
|
export declare function buildCommandChoices(commands: string[]): Promise<CheckboxChoice[]>;
|
|
5
5
|
export declare function buildMcpChoices(mcps: string[]): Promise<CheckboxChoice[]>;
|
|
6
|
+
export declare function buildThemeChoices(themes: string[]): Promise<CheckboxChoice[]>;
|
|
6
7
|
//# sourceMappingURL=choices.d.ts.map
|
package/dist/ui/choices.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"choices.d.ts","sourceRoot":"","sources":["../../src/ui/choices.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAUlD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAWnF;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAWnF;AAED,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAWvF;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA0B/E"}
|
|
1
|
+
{"version":3,"file":"choices.d.ts","sourceRoot":"","sources":["../../src/ui/choices.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAUlD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAWnF;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAWnF;AAED,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAWvF;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA0B/E;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAUnF"}
|
package/dist/ui/choices.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { join } from 'path';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import { getDescription, MCP_DISPLAY_NAMES, OPENCODE_DIR, TOOLS_DIR } from '../constants.js';
|
|
4
|
-
import { exists,
|
|
5
|
-
import { getInstalledMcps } from '../services/installers.js';
|
|
4
|
+
import { exists, readMcpConfig } from '../utils/fs.js';
|
|
5
|
+
import { getInstalledMcps, isThemeInstalled } from '../services/installers.js';
|
|
6
6
|
function formatChoiceLabel(name, description, isInstalled) {
|
|
7
7
|
const installedTag = isInstalled ? chalk.yellow(' (installed)') : '';
|
|
8
8
|
const descText = description ? chalk.dim(` - ${description}`) : '';
|
|
@@ -48,7 +48,7 @@ export async function buildMcpChoices(mcps) {
|
|
|
48
48
|
const installedMcps = await getInstalledMcps();
|
|
49
49
|
const choices = [];
|
|
50
50
|
for (const mcp of mcps) {
|
|
51
|
-
const mcpConfig = await
|
|
51
|
+
const mcpConfig = await readMcpConfig(join(TOOLS_DIR, 'mcps', mcp, '.mcp.json'));
|
|
52
52
|
const servers = mcpConfig.mcpServers;
|
|
53
53
|
let isInstalled = false;
|
|
54
54
|
if (servers) {
|
|
@@ -67,4 +67,15 @@ export async function buildMcpChoices(mcps) {
|
|
|
67
67
|
}
|
|
68
68
|
return choices;
|
|
69
69
|
}
|
|
70
|
+
export async function buildThemeChoices(themes) {
|
|
71
|
+
const choices = [];
|
|
72
|
+
for (const theme of themes) {
|
|
73
|
+
const installed = await isThemeInstalled(theme);
|
|
74
|
+
choices.push({
|
|
75
|
+
name: formatChoiceLabel(theme, getDescription(theme), installed),
|
|
76
|
+
value: theme,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return choices;
|
|
80
|
+
}
|
|
70
81
|
//# sourceMappingURL=choices.js.map
|
package/dist/ui/choices.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"choices.js","sourceRoot":"","sources":["../../src/ui/choices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE7F,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"choices.js","sourceRoot":"","sources":["../../src/ui/choices.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/display.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { CategorizedItems } from '../types.js';
|
|
2
2
|
export declare function displayHeader(): Promise<void>;
|
|
3
3
|
export declare function formatCategorized(cat: CategorizedItems): string;
|
|
4
|
-
export declare function formatTheme(installThemeChoice: boolean, themeIsUpdate: boolean): string;
|
|
5
4
|
export declare function showSelectionResult(count: number, label: string): void;
|
|
6
5
|
export declare function getSeparator(): string;
|
|
7
|
-
export declare function displaySummary(agentsCat: CategorizedItems, skillsCat: CategorizedItems, commandsCat: CategorizedItems, mcpsCat: CategorizedItems,
|
|
6
|
+
export declare function displaySummary(agentsCat: CategorizedItems, skillsCat: CategorizedItems, commandsCat: CategorizedItems, mcpsCat: CategorizedItems, themesCat: CategorizedItems): void;
|
|
8
7
|
//# sourceMappingURL=display.d.ts.map
|
package/dist/ui/display.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/ui/display.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAyBnD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAS/D;AAED,wBAAgB,
|
|
1
|
+
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/ui/display.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAyBnD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAS/D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAMtE;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,cAAc,CAC5B,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,gBAAgB,EAC3B,WAAW,EAAE,gBAAgB,EAC7B,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,gBAAgB,GAC1B,IAAI,CAsCN"}
|
package/dist/ui/display.js
CHANGED
|
@@ -2,25 +2,25 @@ import chalk from 'chalk';
|
|
|
2
2
|
import boxen from 'boxen';
|
|
3
3
|
import { join } from 'path';
|
|
4
4
|
import { ROOT_DIR, UI_PANEL_WIDTH } from '../constants.js';
|
|
5
|
-
import {
|
|
5
|
+
import { readPackageJson } from '../utils/fs.js';
|
|
6
6
|
import { clearScreen } from '../utils/terminal.js';
|
|
7
7
|
export async function displayHeader() {
|
|
8
|
-
const pkg = await
|
|
9
|
-
const version = pkg.version;
|
|
8
|
+
const pkg = await readPackageJson(join(ROOT_DIR, 'package.json'));
|
|
9
|
+
const version = pkg.version ?? 'unknown';
|
|
10
10
|
const logo = [
|
|
11
|
-
chalk.cyanBright('
|
|
11
|
+
chalk.cyanBright(' ███████╗██╗ ██╗██╗ ██╗'),
|
|
12
12
|
chalk.cyanBright(' ██╔════╝██║ ██╔╝██║ ██║'),
|
|
13
13
|
chalk.cyanBright(' ██║ █████╔╝ ██║ █╗ ██║'),
|
|
14
14
|
chalk.cyanBright(' ██║ ██╔═██╗ ██║███╗██║'),
|
|
15
|
-
chalk.cyanBright('
|
|
16
|
-
chalk.cyanBright('
|
|
15
|
+
chalk.cyanBright(' ███████╗██║ ██╗╚███╔███╔╝'),
|
|
16
|
+
chalk.cyanBright(' ╚══════╝╚═╝ ╚═╝ ╚══╝╚══╝') + chalk.green(' ●'),
|
|
17
17
|
].join('\n');
|
|
18
18
|
clearScreen();
|
|
19
19
|
console.log(boxen(logo, {
|
|
20
20
|
padding: { top: 1, bottom: 1, left: 16, right: 16 },
|
|
21
21
|
borderStyle: 'round',
|
|
22
22
|
borderColor: 'green',
|
|
23
|
-
title: chalk.white(`
|
|
23
|
+
title: chalk.white(`SWE AI Toolkit v${version}`),
|
|
24
24
|
titleAlignment: 'left',
|
|
25
25
|
width: UI_PANEL_WIDTH,
|
|
26
26
|
}));
|
|
@@ -36,11 +36,6 @@ export function formatCategorized(cat) {
|
|
|
36
36
|
}
|
|
37
37
|
return parts.length > 0 ? parts.join(' ') : chalk.dim('none');
|
|
38
38
|
}
|
|
39
|
-
export function formatTheme(installThemeChoice, themeIsUpdate) {
|
|
40
|
-
if (!installThemeChoice)
|
|
41
|
-
return chalk.dim('none');
|
|
42
|
-
return themeIsUpdate ? chalk.yellow('↻ claude-vivid') : chalk.green('+ claude-vivid');
|
|
43
|
-
}
|
|
44
39
|
export function showSelectionResult(count, label) {
|
|
45
40
|
if (count > 0) {
|
|
46
41
|
console.log(chalk.green(`✓ ${count} ${label} selected`));
|
|
@@ -52,17 +47,17 @@ export function showSelectionResult(count, label) {
|
|
|
52
47
|
export function getSeparator() {
|
|
53
48
|
return chalk.dim('─'.repeat(50));
|
|
54
49
|
}
|
|
55
|
-
export function displaySummary(agentsCat, skillsCat, commandsCat, mcpsCat,
|
|
50
|
+
export function displaySummary(agentsCat, skillsCat, commandsCat, mcpsCat, themesCat) {
|
|
56
51
|
const totalNew = agentsCat.new.length +
|
|
57
52
|
skillsCat.new.length +
|
|
58
53
|
commandsCat.new.length +
|
|
59
54
|
mcpsCat.new.length +
|
|
60
|
-
|
|
55
|
+
themesCat.new.length;
|
|
61
56
|
const totalUpdate = agentsCat.update.length +
|
|
62
57
|
skillsCat.update.length +
|
|
63
58
|
commandsCat.update.length +
|
|
64
59
|
mcpsCat.update.length +
|
|
65
|
-
|
|
60
|
+
themesCat.update.length;
|
|
66
61
|
const summaryLines = [
|
|
67
62
|
chalk.dim('(+ new ↻ update)'),
|
|
68
63
|
'',
|
|
@@ -70,7 +65,7 @@ export function displaySummary(agentsCat, skillsCat, commandsCat, mcpsCat, insta
|
|
|
70
65
|
`Skills: ${formatCategorized(skillsCat)}`,
|
|
71
66
|
`Commands: ${formatCategorized(commandsCat)}`,
|
|
72
67
|
`MCPs: ${formatCategorized(mcpsCat)}`,
|
|
73
|
-
`
|
|
68
|
+
`Themes: ${formatCategorized(themesCat)}`,
|
|
74
69
|
'',
|
|
75
70
|
chalk.white(`Total: ${chalk.green(`${totalNew} new`)}, ${chalk.yellow(`${totalUpdate} updates`)}`),
|
|
76
71
|
].join('\n');
|
package/dist/ui/display.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/ui/display.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/ui/display.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/fs.d.ts
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
|
+
import { type McpConfig, type OpencodeConfig, type PackageJson } from '../types.js';
|
|
2
|
+
export declare class JsonParseError extends Error {
|
|
3
|
+
readonly filePath: string;
|
|
4
|
+
readonly cause: Error;
|
|
5
|
+
constructor(filePath: string, cause: Error);
|
|
6
|
+
}
|
|
7
|
+
export declare class JsonValidationError extends Error {
|
|
8
|
+
readonly filePath: string;
|
|
9
|
+
readonly expectedType: string;
|
|
10
|
+
constructor(filePath: string, expectedType: string);
|
|
11
|
+
}
|
|
1
12
|
export declare function exists(path: string): Promise<boolean>;
|
|
2
13
|
export declare function getDirectories(path: string): Promise<string[]>;
|
|
3
14
|
export declare function getFiles(path: string, extension: string): Promise<string[]>;
|
|
15
|
+
export declare function readOpencodeConfig(path: string): Promise<OpencodeConfig>;
|
|
16
|
+
export declare function readMcpConfig(path: string): Promise<McpConfig>;
|
|
17
|
+
export declare function readPackageJson(path: string): Promise<PackageJson>;
|
|
4
18
|
export declare function readJsonConfig(path: string): Promise<Record<string, unknown>>;
|
|
5
19
|
//# sourceMappingURL=fs.d.ts.map
|
package/dist/utils/fs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAErB,qBAAa,cAAe,SAAQ,KAAK;aAErB,QAAQ,EAAE,MAAM;aAChB,KAAK,EAAE,KAAK;gBADZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK;CAK/B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,QAAQ,EAAE,MAAM;aAChB,YAAY,EAAE,MAAM;gBADpB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM;CAKvC;AAMD,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3D;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAOpE;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CASjF;AAiBD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAS9E;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CASpE;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CASxE;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CASnF"}
|
package/dist/utils/fs.js
CHANGED
|
@@ -1,4 +1,28 @@
|
|
|
1
1
|
import { access, readdir, readFile } from 'fs/promises';
|
|
2
|
+
import { isRecord, isMcpConfig, isOpencodeConfig, isPackageJson, } from '../types.js';
|
|
3
|
+
export class JsonParseError extends Error {
|
|
4
|
+
filePath;
|
|
5
|
+
cause;
|
|
6
|
+
constructor(filePath, cause) {
|
|
7
|
+
super(`Failed to parse JSON at ${filePath}: ${cause.message}`);
|
|
8
|
+
this.filePath = filePath;
|
|
9
|
+
this.cause = cause;
|
|
10
|
+
this.name = 'JsonParseError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class JsonValidationError extends Error {
|
|
14
|
+
filePath;
|
|
15
|
+
expectedType;
|
|
16
|
+
constructor(filePath, expectedType) {
|
|
17
|
+
super(`Invalid JSON structure at ${filePath}: expected ${expectedType}`);
|
|
18
|
+
this.filePath = filePath;
|
|
19
|
+
this.expectedType = expectedType;
|
|
20
|
+
this.name = 'JsonValidationError';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function isNodeError(error) {
|
|
24
|
+
return error instanceof Error && 'code' in error;
|
|
25
|
+
}
|
|
2
26
|
export async function exists(path) {
|
|
3
27
|
try {
|
|
4
28
|
await access(path);
|
|
@@ -28,13 +52,59 @@ export async function getFiles(path, extension) {
|
|
|
28
52
|
return [];
|
|
29
53
|
}
|
|
30
54
|
}
|
|
31
|
-
|
|
55
|
+
async function readAndParseJson(path) {
|
|
32
56
|
try {
|
|
33
57
|
const content = await readFile(path, 'utf-8');
|
|
34
58
|
return JSON.parse(content);
|
|
35
59
|
}
|
|
36
|
-
catch {
|
|
60
|
+
catch (error) {
|
|
61
|
+
if (isNodeError(error) && error.code === 'ENOENT') {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
if (error instanceof SyntaxError) {
|
|
65
|
+
throw new JsonParseError(path, error);
|
|
66
|
+
}
|
|
67
|
+
throw error;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export async function readOpencodeConfig(path) {
|
|
71
|
+
const data = await readAndParseJson(path);
|
|
72
|
+
if (data === null) {
|
|
37
73
|
return {};
|
|
38
74
|
}
|
|
75
|
+
if (!isOpencodeConfig(data)) {
|
|
76
|
+
throw new JsonValidationError(path, 'OpencodeConfig');
|
|
77
|
+
}
|
|
78
|
+
return data;
|
|
79
|
+
}
|
|
80
|
+
export async function readMcpConfig(path) {
|
|
81
|
+
const data = await readAndParseJson(path);
|
|
82
|
+
if (data === null) {
|
|
83
|
+
return {};
|
|
84
|
+
}
|
|
85
|
+
if (!isMcpConfig(data)) {
|
|
86
|
+
throw new JsonValidationError(path, 'McpConfig');
|
|
87
|
+
}
|
|
88
|
+
return data;
|
|
89
|
+
}
|
|
90
|
+
export async function readPackageJson(path) {
|
|
91
|
+
const data = await readAndParseJson(path);
|
|
92
|
+
if (data === null) {
|
|
93
|
+
return {};
|
|
94
|
+
}
|
|
95
|
+
if (!isPackageJson(data)) {
|
|
96
|
+
throw new JsonValidationError(path, 'PackageJson');
|
|
97
|
+
}
|
|
98
|
+
return data;
|
|
99
|
+
}
|
|
100
|
+
export async function readJsonConfig(path) {
|
|
101
|
+
const data = await readAndParseJson(path);
|
|
102
|
+
if (data === null) {
|
|
103
|
+
return {};
|
|
104
|
+
}
|
|
105
|
+
if (!isRecord(data)) {
|
|
106
|
+
throw new JsonValidationError(path, 'Record<string, unknown>');
|
|
107
|
+
}
|
|
108
|
+
return data;
|
|
39
109
|
}
|
|
40
110
|
//# sourceMappingURL=fs.js.map
|
package/dist/utils/fs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brookmind/ai-toolkit",
|
|
3
|
-
"version": "1.2.
|
|
4
|
-
"description": "AI Toolkit
|
|
3
|
+
"version": "1.2.2",
|
|
4
|
+
"description": "SWE AI Toolkit - agents, skills, commands, MCPs, and themes for AI coding assistants",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|