claude-autopm 1.12.2 → 1.13.0
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/.github/workflows/test.yml +50 -0
- package/README.md +139 -3
- package/autopm/.claude/config.json +2 -0
- package/autopm/.claude/providers/azure/issue-show.js +1 -293
- package/bin/autopm.js +20 -0
- package/bin/commands/mcp.js +175 -0
- package/install/install.js +17 -0
- package/package.json +5 -5
- package/scripts/mcp-handler.js +1019 -1
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Command for autopm CLI
|
|
3
|
+
* Manages Model Context Protocol servers, agents, and configuration
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
const path = require('path');
|
|
7
|
+
const MCPHandler = require('../../scripts/mcp-handler.js');
|
|
8
|
+
|
|
9
|
+
module.exports = {
|
|
10
|
+
command: 'mcp <action> [options]',
|
|
11
|
+
describe: 'Manage MCP (Model Context Protocol) servers and configuration',
|
|
12
|
+
|
|
13
|
+
builder: (yargs) => {
|
|
14
|
+
return yargs
|
|
15
|
+
.positional('action', {
|
|
16
|
+
describe: 'MCP action to perform',
|
|
17
|
+
type: 'string',
|
|
18
|
+
choices: [
|
|
19
|
+
'list', 'add', 'remove', 'enable', 'disable', 'sync', 'validate', 'info',
|
|
20
|
+
'agents', 'agent', 'usage', 'setup', 'check', 'diagnose', 'test', 'tree', 'status'
|
|
21
|
+
]
|
|
22
|
+
})
|
|
23
|
+
.option('server', {
|
|
24
|
+
alias: 's',
|
|
25
|
+
describe: 'Server name',
|
|
26
|
+
type: 'string'
|
|
27
|
+
})
|
|
28
|
+
.option('agent', {
|
|
29
|
+
alias: 'a',
|
|
30
|
+
describe: 'Agent name',
|
|
31
|
+
type: 'string'
|
|
32
|
+
})
|
|
33
|
+
.option('by-server', {
|
|
34
|
+
describe: 'Group agents by MCP server',
|
|
35
|
+
type: 'boolean',
|
|
36
|
+
default: false
|
|
37
|
+
})
|
|
38
|
+
.example('autopm mcp list', 'List all available MCP servers')
|
|
39
|
+
.example('autopm mcp enable context7-docs', 'Enable context7 documentation server')
|
|
40
|
+
.example('autopm mcp agents', 'List all agents using MCP')
|
|
41
|
+
.example('autopm mcp agent react-frontend-engineer', 'Show MCP config for specific agent')
|
|
42
|
+
.example('autopm mcp usage', 'Show MCP usage statistics')
|
|
43
|
+
.example('autopm mcp setup', 'Interactive API key setup')
|
|
44
|
+
.example('autopm mcp check', 'Quick MCP configuration check')
|
|
45
|
+
.example('autopm mcp diagnose', 'Run MCP diagnostics')
|
|
46
|
+
.example('autopm mcp test context7-docs', 'Test MCP server connection')
|
|
47
|
+
.example('autopm mcp tree', 'Show agent-MCP dependency tree')
|
|
48
|
+
.example('autopm mcp status', 'Show MCP servers status');
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
handler: async (argv) => {
|
|
52
|
+
const handler = new MCPHandler();
|
|
53
|
+
const action = argv.action;
|
|
54
|
+
|
|
55
|
+
try {
|
|
56
|
+
switch (action) {
|
|
57
|
+
// Basic commands
|
|
58
|
+
case 'list':
|
|
59
|
+
handler.list();
|
|
60
|
+
break;
|
|
61
|
+
|
|
62
|
+
case 'add':
|
|
63
|
+
await handler.add();
|
|
64
|
+
break;
|
|
65
|
+
|
|
66
|
+
case 'remove':
|
|
67
|
+
if (!argv.server && !argv._[2]) {
|
|
68
|
+
console.error('❌ Please specify a server name: autopm mcp remove <server-name>');
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
handler.remove(argv.server || argv._[2]);
|
|
72
|
+
break;
|
|
73
|
+
|
|
74
|
+
case 'enable':
|
|
75
|
+
if (!argv.server && !argv._[2]) {
|
|
76
|
+
console.error('❌ Please specify a server name: autopm mcp enable <server-name>');
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
handler.enable(argv.server || argv._[2]);
|
|
80
|
+
break;
|
|
81
|
+
|
|
82
|
+
case 'disable':
|
|
83
|
+
if (!argv.server && !argv._[2]) {
|
|
84
|
+
console.error('❌ Please specify a server name: autopm mcp disable <server-name>');
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
handler.disable(argv.server || argv._[2]);
|
|
88
|
+
break;
|
|
89
|
+
|
|
90
|
+
case 'sync':
|
|
91
|
+
handler.sync();
|
|
92
|
+
break;
|
|
93
|
+
|
|
94
|
+
case 'validate':
|
|
95
|
+
handler.validate();
|
|
96
|
+
break;
|
|
97
|
+
|
|
98
|
+
case 'info':
|
|
99
|
+
if (!argv.server && !argv._[2]) {
|
|
100
|
+
console.error('❌ Please specify a server name: autopm mcp info <server-name>');
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
handler.info(argv.server || argv._[2]);
|
|
104
|
+
break;
|
|
105
|
+
|
|
106
|
+
// Agent analysis commands
|
|
107
|
+
case 'agents':
|
|
108
|
+
handler.mcpAgents(argv.byServer ? { groupBy: 'server' } : {});
|
|
109
|
+
break;
|
|
110
|
+
|
|
111
|
+
case 'agent':
|
|
112
|
+
if (!argv.agent && !argv._[2]) {
|
|
113
|
+
console.error('❌ Please specify an agent name: autopm mcp agent <agent-name>');
|
|
114
|
+
process.exit(1);
|
|
115
|
+
}
|
|
116
|
+
handler.mcpAgent(argv.agent || argv._[2]);
|
|
117
|
+
break;
|
|
118
|
+
|
|
119
|
+
case 'usage':
|
|
120
|
+
handler.mcpUsage();
|
|
121
|
+
break;
|
|
122
|
+
|
|
123
|
+
// Configuration commands
|
|
124
|
+
case 'setup':
|
|
125
|
+
await handler.setupWizard();
|
|
126
|
+
break;
|
|
127
|
+
|
|
128
|
+
case 'check':
|
|
129
|
+
handler.check();
|
|
130
|
+
break;
|
|
131
|
+
|
|
132
|
+
case 'diagnose':
|
|
133
|
+
handler.diagnose();
|
|
134
|
+
break;
|
|
135
|
+
|
|
136
|
+
case 'test':
|
|
137
|
+
if (!argv.server && !argv._[2]) {
|
|
138
|
+
console.error('❌ Please specify a server name: autopm mcp test <server-name>');
|
|
139
|
+
process.exit(1);
|
|
140
|
+
}
|
|
141
|
+
const result = await handler.testServer(argv.server || argv._[2]);
|
|
142
|
+
if (result.success) {
|
|
143
|
+
console.log(`✅ ${result.message}`);
|
|
144
|
+
} else {
|
|
145
|
+
console.error(`❌ ${result.message}`);
|
|
146
|
+
process.exit(1);
|
|
147
|
+
}
|
|
148
|
+
break;
|
|
149
|
+
|
|
150
|
+
// Visualization commands
|
|
151
|
+
case 'tree':
|
|
152
|
+
handler.showTree();
|
|
153
|
+
break;
|
|
154
|
+
|
|
155
|
+
case 'status':
|
|
156
|
+
handler.showStatus();
|
|
157
|
+
break;
|
|
158
|
+
|
|
159
|
+
default:
|
|
160
|
+
console.error(`❌ Unknown action: ${action}`);
|
|
161
|
+
console.log('\nAvailable actions:');
|
|
162
|
+
console.log(' list, add, remove, enable, disable, sync, validate, info');
|
|
163
|
+
console.log(' agents, agent, usage, setup, check, diagnose, test, tree, status');
|
|
164
|
+
console.log('\nUse "autopm mcp --help" for more information');
|
|
165
|
+
process.exit(1);
|
|
166
|
+
}
|
|
167
|
+
} catch (error) {
|
|
168
|
+
console.error(`❌ Error: ${error.message}`);
|
|
169
|
+
if (argv.debug) {
|
|
170
|
+
console.error(error.stack);
|
|
171
|
+
}
|
|
172
|
+
process.exit(1);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
};
|
package/install/install.js
CHANGED
|
@@ -514,8 +514,19 @@ ${this.colors.BOLD}Select installation scenario:${this.colors.NC}
|
|
|
514
514
|
}
|
|
515
515
|
|
|
516
516
|
generateConfig(scenario) {
|
|
517
|
+
// Get version from package.json
|
|
518
|
+
let version = 'unknown';
|
|
519
|
+
try {
|
|
520
|
+
const packageJson = JSON.parse(fs.readFileSync(path.join(this.baseDir, 'package.json'), 'utf-8'));
|
|
521
|
+
version = packageJson.version;
|
|
522
|
+
} catch (error) {
|
|
523
|
+
// Fallback to unknown if package.json can't be read
|
|
524
|
+
}
|
|
525
|
+
|
|
517
526
|
const configs = {
|
|
518
527
|
minimal: {
|
|
528
|
+
version: version,
|
|
529
|
+
installed: new Date().toISOString(),
|
|
519
530
|
execution_strategy: 'sequential',
|
|
520
531
|
tools: {
|
|
521
532
|
docker: { enabled: false },
|
|
@@ -523,6 +534,8 @@ ${this.colors.BOLD}Select installation scenario:${this.colors.NC}
|
|
|
523
534
|
}
|
|
524
535
|
},
|
|
525
536
|
docker: {
|
|
537
|
+
version: version,
|
|
538
|
+
installed: new Date().toISOString(),
|
|
526
539
|
execution_strategy: 'adaptive',
|
|
527
540
|
tools: {
|
|
528
541
|
docker: { enabled: true, first: false },
|
|
@@ -530,6 +543,8 @@ ${this.colors.BOLD}Select installation scenario:${this.colors.NC}
|
|
|
530
543
|
}
|
|
531
544
|
},
|
|
532
545
|
full: {
|
|
546
|
+
version: version,
|
|
547
|
+
installed: new Date().toISOString(),
|
|
533
548
|
execution_strategy: 'adaptive',
|
|
534
549
|
tools: {
|
|
535
550
|
docker: { enabled: true, first: true },
|
|
@@ -537,6 +552,8 @@ ${this.colors.BOLD}Select installation scenario:${this.colors.NC}
|
|
|
537
552
|
}
|
|
538
553
|
},
|
|
539
554
|
performance: {
|
|
555
|
+
version: version,
|
|
556
|
+
installed: new Date().toISOString(),
|
|
540
557
|
execution_strategy: 'hybrid',
|
|
541
558
|
parallel_limit: 5,
|
|
542
559
|
tools: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-autopm",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.13.0",
|
|
4
4
|
"description": "Autonomous Project Management Framework for Claude Code - Advanced AI-powered development automation",
|
|
5
5
|
"main": "bin/autopm.js",
|
|
6
6
|
"bin": {
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
"scripts": {
|
|
10
10
|
"postinstall": "echo '🎉 ClaudeAutoPM installed! Run: autopm --help'",
|
|
11
11
|
"test:old": "node scripts/test.js",
|
|
12
|
-
"test": "jest --config jest.config.
|
|
13
|
-
"test:full": "jest",
|
|
12
|
+
"test": "jest --config jest.config.quick.js --forceExit",
|
|
13
|
+
"test:full": "jest --config jest.config.clean.js --forceExit",
|
|
14
14
|
"test:watch": "jest --watch",
|
|
15
15
|
"test:coverage": "c8 npm test",
|
|
16
16
|
"test:clean": "jest --config jest.config.clean.js",
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"test:comprehensive:quick": "TEST_TIMEOUT=30000 node test/run-all-tests.js",
|
|
49
49
|
"test:comprehensive:ci": "CI=true CI_TEST_TIMEOUT=600000 node test/run-all-tests.js",
|
|
50
50
|
"test:azure": "node --test test/providers/azure/*.test.js",
|
|
51
|
-
"test:unit": "node --test test/unit
|
|
52
|
-
"test:unit:coverage": "c8 node --test test/unit
|
|
51
|
+
"test:unit": "node --test $(find test/unit -name '*.test.js' ! -name '*-jest.test.js')",
|
|
52
|
+
"test:unit:coverage": "c8 node --test $(find test/unit -name '*.test.js' ! -name '*-jest.test.js')",
|
|
53
53
|
"test:e2e": "jest test/e2e",
|
|
54
54
|
"test:e2e:legacy": "node --test test/e2e/*.test.js",
|
|
55
55
|
"setup:hooks": "bash scripts/setup-hooks.sh",
|