fraim-framework 2.0.38 → 2.0.41
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 -0
- package/dist/src/ai-manager/ai-manager.js +162 -0
- package/dist/src/cli/setup/auto-mcp-setup.js +1 -1
- package/dist/src/cli/setup/ide-detector.js +6 -4
- package/dist/src/cli/setup/mcp-config-generator.js +30 -1
- package/dist/src/fraim-mcp-server.js +198 -0
- package/dist/tests/test-ai-manager.js +113 -0
- package/dist/tests/test-complete-setup-flow.js +1 -1
- package/dist/tests/test-ide-detector.js +2 -2
- package/dist/tests/test-improved-setup.js +2 -2
- package/dist/tests/test-mcp-config-generator.js +31 -2
- package/package.json +2 -1
- package/registry/scripts/code-quality-check.sh +566 -559
- package/registry/scripts/prep-issue.sh +7 -0
- package/registry/scripts/verify-pr-comments.sh +74 -70
- /package/registry/stubs/workflows/{convert-to-pdf.md → marketing/convert-to-pdf.md} +0 -0
|
@@ -15,12 +15,36 @@ const testGithubToken = 'ghp_test123456789';
|
|
|
15
15
|
(0, node_assert_1.default)(config.mcpServers.git, 'Should have git server');
|
|
16
16
|
(0, node_assert_1.default)(config.mcpServers.github, 'Should have github server');
|
|
17
17
|
(0, node_assert_1.default)(config.mcpServers.playwright, 'Should have playwright server');
|
|
18
|
-
// Check fraim server config
|
|
18
|
+
// Check fraim server config (standard uses serverUrl, no type)
|
|
19
19
|
node_assert_1.default.strictEqual(config.mcpServers.fraim.serverUrl, 'https://fraim.wellnessatwork.me');
|
|
20
20
|
node_assert_1.default.strictEqual(config.mcpServers.fraim.headers['x-api-key'], testFraimKey);
|
|
21
|
-
|
|
21
|
+
node_assert_1.default.strictEqual(config.mcpServers.fraim.type, undefined);
|
|
22
|
+
// Check github server config (standard uses serverUrl, no type)
|
|
22
23
|
node_assert_1.default.strictEqual(config.mcpServers.github.serverUrl, 'https://api.githubcopilot.com/mcp/');
|
|
23
24
|
node_assert_1.default.strictEqual(config.mcpServers.github.headers.Authorization, `Bearer ${testGithubToken}`);
|
|
25
|
+
node_assert_1.default.strictEqual(config.mcpServers.github.type, undefined);
|
|
26
|
+
// Check command-based servers don't have type field
|
|
27
|
+
node_assert_1.default.strictEqual(config.mcpServers.git.type, undefined);
|
|
28
|
+
node_assert_1.default.strictEqual(config.mcpServers.playwright.type, undefined);
|
|
29
|
+
});
|
|
30
|
+
(0, node_test_1.test)('generateClaudeMCPServers should create correct config', () => {
|
|
31
|
+
const config = (0, mcp_config_generator_1.generateClaudeMCPServers)(testFraimKey, testGithubToken);
|
|
32
|
+
(0, node_assert_1.default)(config.mcpServers, 'Should have mcpServers property');
|
|
33
|
+
(0, node_assert_1.default)(config.mcpServers.fraim, 'Should have fraim server');
|
|
34
|
+
(0, node_assert_1.default)(config.mcpServers.git, 'Should have git server');
|
|
35
|
+
(0, node_assert_1.default)(config.mcpServers.github, 'Should have github server');
|
|
36
|
+
(0, node_assert_1.default)(config.mcpServers.playwright, 'Should have playwright server');
|
|
37
|
+
// Check fraim server config (Claude uses url and type)
|
|
38
|
+
node_assert_1.default.strictEqual(config.mcpServers.fraim.type, 'http');
|
|
39
|
+
node_assert_1.default.strictEqual(config.mcpServers.fraim.url, 'https://fraim.wellnessatwork.me');
|
|
40
|
+
node_assert_1.default.strictEqual(config.mcpServers.fraim.headers['x-api-key'], testFraimKey);
|
|
41
|
+
// Check github server config (Claude uses url and type)
|
|
42
|
+
node_assert_1.default.strictEqual(config.mcpServers.github.type, 'http');
|
|
43
|
+
node_assert_1.default.strictEqual(config.mcpServers.github.url, 'https://api.githubcopilot.com/mcp/');
|
|
44
|
+
node_assert_1.default.strictEqual(config.mcpServers.github.headers.Authorization, `Bearer ${testGithubToken}`);
|
|
45
|
+
// Check command-based servers don't have type field
|
|
46
|
+
node_assert_1.default.strictEqual(config.mcpServers.git.type, undefined);
|
|
47
|
+
node_assert_1.default.strictEqual(config.mcpServers.playwright.type, undefined);
|
|
24
48
|
});
|
|
25
49
|
(0, node_test_1.test)('generateKiroMCPServers should create correct config', () => {
|
|
26
50
|
const config = (0, mcp_config_generator_1.generateKiroMCPServers)(testFraimKey, testGithubToken);
|
|
@@ -30,6 +54,9 @@ const testGithubToken = 'ghp_test123456789';
|
|
|
30
54
|
(0, node_assert_1.default)(config.mcpServers.github.url, 'GitHub should use url property');
|
|
31
55
|
(0, node_assert_1.default)(!config.mcpServers.fraim.serverUrl, 'Fraim should not have serverUrl property');
|
|
32
56
|
(0, node_assert_1.default)(!config.mcpServers.github.serverUrl, 'GitHub should not have serverUrl property');
|
|
57
|
+
// Check that Kiro HTTP servers don't have type field
|
|
58
|
+
node_assert_1.default.strictEqual(config.mcpServers.fraim.type, undefined);
|
|
59
|
+
node_assert_1.default.strictEqual(config.mcpServers.github.type, undefined);
|
|
33
60
|
node_assert_1.default.strictEqual(config.mcpServers.fraim.url, 'https://fraim.wellnessatwork.me');
|
|
34
61
|
node_assert_1.default.strictEqual(config.mcpServers.github.url, 'https://api.githubcopilot.com/mcp/');
|
|
35
62
|
});
|
|
@@ -55,10 +82,12 @@ const testGithubToken = 'ghp_test123456789';
|
|
|
55
82
|
});
|
|
56
83
|
(0, node_test_1.test)('generateMCPConfig should route to correct generator', () => {
|
|
57
84
|
const standardConfig = (0, mcp_config_generator_1.generateMCPConfig)('standard', testFraimKey, testGithubToken);
|
|
85
|
+
const claudeConfig = (0, mcp_config_generator_1.generateMCPConfig)('claude', testFraimKey, testGithubToken);
|
|
58
86
|
const kiroConfig = (0, mcp_config_generator_1.generateMCPConfig)('kiro', testFraimKey, testGithubToken);
|
|
59
87
|
const codexConfig = (0, mcp_config_generator_1.generateMCPConfig)('codex', testFraimKey, testGithubToken);
|
|
60
88
|
const windsurfConfig = (0, mcp_config_generator_1.generateMCPConfig)('windsurf', testFraimKey, testGithubToken);
|
|
61
89
|
(0, node_assert_1.default)(standardConfig.mcpServers.fraim.serverUrl, 'Standard should use serverUrl');
|
|
90
|
+
(0, node_assert_1.default)(claudeConfig.mcpServers.fraim.url, 'Claude should use url');
|
|
62
91
|
(0, node_assert_1.default)(kiroConfig.mcpServers.fraim.url, 'Kiro should use url');
|
|
63
92
|
(0, node_assert_1.default)(typeof codexConfig === 'string', 'Codex should return TOML string');
|
|
64
93
|
(0, node_assert_1.default)(windsurfConfig.mcpServers.fraim.command, 'Windsurf should use command');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fraim-framework",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.41",
|
|
4
4
|
"description": "FRAIM v2: Framework for Rigor-based AI Management - Transform from solo developer to AI manager orchestrating production-ready code with enterprise-grade discipline",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -86,6 +86,7 @@
|
|
|
86
86
|
"cors": "^2.8.5",
|
|
87
87
|
"dotenv": "^16.4.7",
|
|
88
88
|
"express": "^5.2.1",
|
|
89
|
+
"fraim-framework": "^2.0.38",
|
|
89
90
|
"markdown-it": "^14.1.0",
|
|
90
91
|
"markdown-it-highlightjs": "^4.2.0",
|
|
91
92
|
"mongodb": "^7.0.0",
|