bobs-workshop 0.3.2 โ 3.1.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/LICENSE +2 -2
- package/README.md +199 -210
- package/bin/bobs-workshop.js +109 -0
- package/config/agents.json +27 -0
- package/dist/plugins/bobs-workshop.js +34 -0
- package/dist/tools/background-agent/cancel.d.ts +3 -0
- package/dist/tools/background-agent/cancel.d.ts.map +1 -0
- package/dist/tools/background-agent/cancel.js +52 -0
- package/dist/tools/background-agent/concurrency.d.ts +15 -0
- package/dist/tools/background-agent/concurrency.d.ts.map +1 -0
- package/dist/tools/background-agent/concurrency.js +61 -0
- package/dist/tools/background-agent/index.d.ts +8 -0
- package/dist/tools/background-agent/index.d.ts.map +1 -0
- package/dist/tools/background-agent/index.js +7 -0
- package/dist/tools/background-agent/launch.d.ts +6 -0
- package/dist/tools/background-agent/launch.d.ts.map +1 -0
- package/dist/tools/background-agent/launch.js +33 -0
- package/dist/tools/background-agent/list.d.ts +7 -0
- package/dist/tools/background-agent/list.d.ts.map +1 -0
- package/dist/tools/background-agent/list.js +40 -0
- package/dist/tools/background-agent/manager.d.ts +29 -0
- package/dist/tools/background-agent/manager.d.ts.map +1 -0
- package/dist/tools/background-agent/manager.js +377 -0
- package/dist/tools/background-agent/output.d.ts +3 -0
- package/dist/tools/background-agent/output.d.ts.map +1 -0
- package/dist/tools/background-agent/output.js +41 -0
- package/dist/tools/background-agent/types.d.ts +46 -0
- package/dist/tools/background-agent/types.d.ts.map +1 -0
- package/dist/tools/background-agent/types.js +1 -0
- package/dist/tools/index.d.ts +9 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/manual/index.d.ts +3 -0
- package/dist/tools/manual/index.d.ts.map +1 -0
- package/dist/tools/manual/index.js +2 -0
- package/dist/tools/manual/manual-update.d.ts +4 -0
- package/dist/tools/manual/manual-update.d.ts.map +1 -0
- package/dist/tools/manual/manual-update.js +190 -0
- package/dist/tools/manual/verify-manual.d.ts +4 -0
- package/dist/tools/manual/verify-manual.d.ts.map +1 -0
- package/dist/tools/manual/verify-manual.js +46 -0
- package/package.json +35 -67
- package/postinstall.js +190 -0
- package/src/agents/alice.md +466 -0
- package/src/agents/bob-rev.md +493 -0
- package/src/agents/bob-send.md +277 -0
- package/src/agents/bob.md +442 -0
- package/src/agents/trace.md +451 -0
- package/src/plugins/bobs-workshop.ts +45 -0
- package/src/skills/api-patterns/SKILL.md +376 -0
- package/src/skills/architecture/SKILL.md +271 -0
- package/src/skills/bobs-workshop/performance/icon.svg +3 -0
- package/src/skills/brainstorming/SKILL.md +210 -0
- package/src/skills/clean-code/SKILL.md +151 -0
- package/src/skills/code-review-checklist/SKILL.md +220 -0
- package/src/skills/database-design/SKILL.md +271 -0
- package/src/skills/exploration/SKILL.md +257 -0
- package/src/skills/frontend-ui-ux/SKILL.md +78 -0
- package/src/skills/git-master/SKILL.md +1105 -0
- package/src/skills/performance/SKILL.md +144 -0
- package/src/skills/performance/icon.svg +3 -0
- package/src/skills/plan-writing/SKILL.md +225 -0
- package/src/skills/security/SKILL.md +410 -0
- package/src/skills/simplification/SKILL.md +238 -0
- package/src/skills/systematic-debugging/SKILL.md +175 -0
- package/src/skills/testing-patterns/SKILL.md +305 -0
- package/src/skills/verification/SKILL.md +286 -0
- package/src/tools/background-agent/cancel.ts +67 -0
- package/src/tools/background-agent/concurrency.ts +71 -0
- package/src/tools/background-agent/index.ts +7 -0
- package/src/tools/background-agent/launch.ts +39 -0
- package/src/tools/background-agent/list.ts +50 -0
- package/src/tools/background-agent/manager.ts +455 -0
- package/src/tools/background-agent/output.ts +57 -0
- package/src/tools/background-agent/types.ts +55 -0
- package/src/tools/index.ts +8 -0
- package/src/tools/manual/index.ts +2 -0
- package/src/tools/manual/manual-update.ts +197 -0
- package/src/tools/manual/verify-manual.ts +55 -0
- package/uninstall.js +64 -0
- package/Claude.md +0 -162
- package/bin/bobs-mcp-server.js +0 -11
- package/bin/bobs-mcp.js +0 -130
- package/dist/api/taskLogger.js +0 -106
- package/dist/api/taskLogger.js.map +0 -1
- package/dist/cli/checker.js +0 -401
- package/dist/cli/checker.js.map +0 -1
- package/dist/cli/cleanup.js +0 -131
- package/dist/cli/cleanup.js.map +0 -1
- package/dist/cli/debug.js +0 -157
- package/dist/cli/debug.js.map +0 -1
- package/dist/cli/health.js +0 -97
- package/dist/cli/health.js.map +0 -1
- package/dist/cli/setup.js +0 -81
- package/dist/cli/setup.js.map +0 -1
- package/dist/cli/workshop.js +0 -42
- package/dist/cli/workshop.js.map +0 -1
- package/dist/dashboard/server.js +0 -1203
- package/dist/dashboard/server.js.map +0 -1
- package/dist/index.js +0 -960
- package/dist/index.js.map +0 -1
- package/dist/prompts/architect.js +0 -221
- package/dist/prompts/architect.js.map +0 -1
- package/dist/prompts/debugger.js +0 -257
- package/dist/prompts/debugger.js.map +0 -1
- package/dist/prompts/engineer.js +0 -249
- package/dist/prompts/engineer.js.map +0 -1
- package/dist/prompts/orchestrator.js +0 -304
- package/dist/prompts/orchestrator.js.map +0 -1
- package/dist/prompts/reviewer.js +0 -289
- package/dist/prompts/reviewer.js.map +0 -1
- package/dist/services/activitySummarizer.js +0 -388
- package/dist/services/activitySummarizer.js.map +0 -1
- package/dist/services/changeValidator.js +0 -396
- package/dist/services/changeValidator.js.map +0 -1
- package/dist/services/claudeOrchestrator.js +0 -343
- package/dist/services/claudeOrchestrator.js.map +0 -1
- package/dist/services/fileMonitor.js +0 -250
- package/dist/services/fileMonitor.js.map +0 -1
- package/dist/services/implementationSummarizer.js +0 -306
- package/dist/services/implementationSummarizer.js.map +0 -1
- package/dist/services/liveMonitor.js +0 -315
- package/dist/services/liveMonitor.js.map +0 -1
- package/dist/services/mcpAuditLogger.js +0 -104
- package/dist/services/mcpAuditLogger.js.map +0 -1
- package/dist/services/mcpLogger.js +0 -223
- package/dist/services/mcpLogger.js.map +0 -1
- package/dist/services/tmuxManager.js +0 -541
- package/dist/services/tmuxManager.js.map +0 -1
- package/dist/tools/approvalTools.js +0 -244
- package/dist/tools/approvalTools.js.map +0 -1
- package/dist/tools/autoDebugger.js +0 -147
- package/dist/tools/autoDebugger.js.map +0 -1
- package/dist/tools/cleanupService.js +0 -221
- package/dist/tools/cleanupService.js.map +0 -1
- package/dist/tools/dashboardTools.js +0 -342
- package/dist/tools/dashboardTools.js.map +0 -1
- package/dist/tools/developmentNudges.js +0 -336
- package/dist/tools/developmentNudges.js.map +0 -1
- package/dist/tools/gitTools.js +0 -741
- package/dist/tools/gitTools.js.map +0 -1
- package/dist/tools/orchestratorTools.js +0 -832
- package/dist/tools/orchestratorTools.js.map +0 -1
- package/dist/tools/searchCache.js +0 -64
- package/dist/tools/searchCache.js.map +0 -1
- package/dist/tools/searchTools.js +0 -1107
- package/dist/tools/searchTools.js.map +0 -1
- package/dist/tools/semgrep-patterns.js +0 -296
- package/dist/tools/semgrep-patterns.js.map +0 -1
- package/dist/tools/specTools.js +0 -332
- package/dist/tools/specTools.js.map +0 -1
- package/dist/tools/structural/__tests__/orchestrator.test.js +0 -61
- package/dist/tools/structural/__tests__/orchestrator.test.js.map +0 -1
- package/dist/tools/structural/cache.js +0 -226
- package/dist/tools/structural/cache.js.map +0 -1
- package/dist/tools/structural/engines/python/index.js +0 -118
- package/dist/tools/structural/engines/python/index.js.map +0 -1
- package/dist/tools/structural/engines/typescript/__tests__/typescript-engine.test.js +0 -97
- package/dist/tools/structural/engines/typescript/__tests__/typescript-engine.test.js.map +0 -1
- package/dist/tools/structural/engines/typescript/analyzer.js +0 -433
- package/dist/tools/structural/engines/typescript/analyzer.js.map +0 -1
- package/dist/tools/structural/engines/typescript/index.js +0 -381
- package/dist/tools/structural/engines/typescript/index.js.map +0 -1
- package/dist/tools/structural/engines/typescript/utils.js +0 -279
- package/dist/tools/structural/engines/typescript/utils.js.map +0 -1
- package/dist/tools/structural/index.js +0 -248
- package/dist/tools/structural/index.js.map +0 -1
- package/dist/tools/structural/types.js +0 -18
- package/dist/tools/structural/types.js.map +0 -1
- package/dist/tools/tmuxTools.js +0 -100
- package/dist/tools/tmuxTools.js.map +0 -1
- package/dist/tools/workRecorder.js +0 -215
- package/dist/tools/workRecorder.js.map +0 -1
- package/dist/tools/worktreeTools.js +0 -705
- package/dist/tools/worktreeTools.js.map +0 -1
- package/dist/utils/__tests__/integration.test.js +0 -57
- package/dist/utils/__tests__/integration.test.js.map +0 -1
- package/dist/utils/__tests__/serverDetection.test.js +0 -151
- package/dist/utils/__tests__/serverDetection.test.js.map +0 -1
- package/dist/utils/errorHandling.js +0 -336
- package/dist/utils/errorHandling.js.map +0 -1
- package/dist/utils/processManager.js +0 -172
- package/dist/utils/processManager.js.map +0 -1
- package/dist/utils/reliability.js +0 -263
- package/dist/utils/reliability.js.map +0 -1
- package/dist/utils/responseFormatter.js +0 -250
- package/dist/utils/responseFormatter.js.map +0 -1
- package/dist/utils/serverDetection.js +0 -133
- package/dist/utils/serverDetection.js.map +0 -1
- package/dist/utils/specMigration.js +0 -105
- package/dist/utils/specMigration.js.map +0 -1
- package/dist/validation/schemas.js +0 -299
- package/dist/validation/schemas.js.map +0 -1
- package/public/.well-known/mcp/manifest.json +0 -473
- package/public/index.html +0 -3157
- package/public/index.html.backup +0 -2805
- package/public/index.html.backup2 +0 -1292
- package/scripts/cleanup-system-logs.ts +0 -121
- package/scripts/init-workspace.js +0 -63
- package/scripts/install-search-tools.js +0 -116
package/dist/api/taskLogger.js
DELETED
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
// src/api/taskLogger.ts
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
import { v4 as uuidv4 } from "uuid";
|
|
4
|
-
export const TaskCreateSchema = z.object({
|
|
5
|
-
name: z.string().min(1, "Task name is required").max(100, "Task name too long"),
|
|
6
|
-
priority: z.enum(['low', 'medium', 'high', 'critical']),
|
|
7
|
-
timestamp: z.string().datetime().optional(),
|
|
8
|
-
status: z.enum(['pending', 'in_progress', 'completed']).default('pending')
|
|
9
|
-
});
|
|
10
|
-
export const TaskUpdateSchema = z.object({
|
|
11
|
-
name: z.string().min(1).max(100).optional(),
|
|
12
|
-
priority: z.enum(['low', 'medium', 'high', 'critical']).optional(),
|
|
13
|
-
timestamp: z.string().datetime().optional(),
|
|
14
|
-
status: z.enum(['pending', 'in_progress', 'completed']).optional()
|
|
15
|
-
});
|
|
16
|
-
class TaskService {
|
|
17
|
-
constructor() {
|
|
18
|
-
this.tasks = new Map();
|
|
19
|
-
}
|
|
20
|
-
createTask(input) {
|
|
21
|
-
const validated = TaskCreateSchema.parse(input);
|
|
22
|
-
const now = new Date().toISOString();
|
|
23
|
-
const task = {
|
|
24
|
-
id: uuidv4(),
|
|
25
|
-
name: validated.name,
|
|
26
|
-
priority: validated.priority,
|
|
27
|
-
timestamp: validated.timestamp || now,
|
|
28
|
-
status: validated.status,
|
|
29
|
-
created_at: now,
|
|
30
|
-
updated_at: now
|
|
31
|
-
};
|
|
32
|
-
this.tasks.set(task.id, task);
|
|
33
|
-
console.log(`[TaskLogger] Created task ${task.id}: ${task.name}`);
|
|
34
|
-
return task;
|
|
35
|
-
}
|
|
36
|
-
getAllTasks() {
|
|
37
|
-
return Array.from(this.tasks.values()).sort((a, b) => new Date(b.created_at).getTime() - new Date(a.created_at).getTime());
|
|
38
|
-
}
|
|
39
|
-
getTaskById(id) {
|
|
40
|
-
return this.tasks.get(id) || null;
|
|
41
|
-
}
|
|
42
|
-
updateTask(id, input) {
|
|
43
|
-
const existingTask = this.tasks.get(id);
|
|
44
|
-
if (!existingTask) {
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
const validated = TaskUpdateSchema.parse(input);
|
|
48
|
-
const updatedTask = {
|
|
49
|
-
...existingTask,
|
|
50
|
-
...validated,
|
|
51
|
-
updated_at: new Date().toISOString()
|
|
52
|
-
};
|
|
53
|
-
this.tasks.set(id, updatedTask);
|
|
54
|
-
console.log(`[TaskLogger] Updated task ${id}: ${updatedTask.name}`);
|
|
55
|
-
return updatedTask;
|
|
56
|
-
}
|
|
57
|
-
deleteTask(id) {
|
|
58
|
-
const existed = this.tasks.has(id);
|
|
59
|
-
this.tasks.delete(id);
|
|
60
|
-
if (existed) {
|
|
61
|
-
console.log(`[TaskLogger] Deleted task ${id}`);
|
|
62
|
-
}
|
|
63
|
-
return existed;
|
|
64
|
-
}
|
|
65
|
-
getTaskCount() {
|
|
66
|
-
return this.tasks.size;
|
|
67
|
-
}
|
|
68
|
-
clearAllTasks() {
|
|
69
|
-
const count = this.tasks.size;
|
|
70
|
-
this.tasks.clear();
|
|
71
|
-
console.log(`[TaskLogger] Cleared ${count} tasks`);
|
|
72
|
-
return count;
|
|
73
|
-
}
|
|
74
|
-
// Filter and search methods
|
|
75
|
-
getTasksByPriority(priority) {
|
|
76
|
-
return this.getAllTasks().filter(task => task.priority === priority);
|
|
77
|
-
}
|
|
78
|
-
getTasksByStatus(status) {
|
|
79
|
-
return this.getAllTasks().filter(task => task.status === status);
|
|
80
|
-
}
|
|
81
|
-
searchTasks(query) {
|
|
82
|
-
const lowerQuery = query.toLowerCase();
|
|
83
|
-
return this.getAllTasks().filter(task => task.name.toLowerCase().includes(lowerQuery));
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
// Singleton instance for in-memory storage
|
|
87
|
-
export const taskService = new TaskService();
|
|
88
|
-
// Helper function for API error responses
|
|
89
|
-
export function createErrorResponse(message, statusCode = 400) {
|
|
90
|
-
return {
|
|
91
|
-
error: true,
|
|
92
|
-
message,
|
|
93
|
-
statusCode,
|
|
94
|
-
timestamp: new Date().toISOString()
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
// Helper function for API success responses
|
|
98
|
-
export function createSuccessResponse(data, message) {
|
|
99
|
-
return {
|
|
100
|
-
success: true,
|
|
101
|
-
data,
|
|
102
|
-
message,
|
|
103
|
-
timestamp: new Date().toISOString()
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=taskLogger.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"taskLogger.js","sourceRoot":"","sources":["../../src/api/taskLogger.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/checker.js
DELETED
|
@@ -1,401 +0,0 @@
|
|
|
1
|
-
// src/cli/checker.ts
|
|
2
|
-
import { exec } from 'child_process';
|
|
3
|
-
import { promisify } from 'util';
|
|
4
|
-
import { existsSync } from 'fs';
|
|
5
|
-
import path from 'path';
|
|
6
|
-
import { fileURLToPath } from 'url';
|
|
7
|
-
import fs from 'fs-extra';
|
|
8
|
-
const execAsync = promisify(exec);
|
|
9
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
10
|
-
export async function runInstallationCheck() {
|
|
11
|
-
console.log('๐ง Bob\'s MCP Installation Check\n');
|
|
12
|
-
console.log('โ'.repeat(50));
|
|
13
|
-
const results = [];
|
|
14
|
-
// Run all checks
|
|
15
|
-
results.push(await checkNodeVersion());
|
|
16
|
-
results.push(await checkNpmRegistry());
|
|
17
|
-
results.push(await checkNpxCompatibility());
|
|
18
|
-
results.push(await checkDependencies());
|
|
19
|
-
results.push(await checkSearchTools());
|
|
20
|
-
results.push(await checkMcpServer());
|
|
21
|
-
results.push(await checkDashboard());
|
|
22
|
-
results.push(await checkSpecSystem());
|
|
23
|
-
// Display results
|
|
24
|
-
console.log('\n๐ Installation Check Results:\n');
|
|
25
|
-
let passCount = 0;
|
|
26
|
-
let failCount = 0;
|
|
27
|
-
let warningCount = 0;
|
|
28
|
-
for (const result of results) {
|
|
29
|
-
const icon = result.status === 'pass' ? 'โ
' : result.status === 'fail' ? 'โ' : 'โ ๏ธ';
|
|
30
|
-
console.log(`${icon} ${result.name}: ${result.message}`);
|
|
31
|
-
if (result.details) {
|
|
32
|
-
console.log(` ${result.details}`);
|
|
33
|
-
}
|
|
34
|
-
if (result.actionable) {
|
|
35
|
-
console.log(` ๐ก Action: ${result.actionable}`);
|
|
36
|
-
}
|
|
37
|
-
if (result.status === 'pass')
|
|
38
|
-
passCount++;
|
|
39
|
-
else if (result.status === 'fail')
|
|
40
|
-
failCount++;
|
|
41
|
-
else
|
|
42
|
-
warningCount++;
|
|
43
|
-
console.log('');
|
|
44
|
-
}
|
|
45
|
-
// Summary
|
|
46
|
-
console.log('โ'.repeat(50));
|
|
47
|
-
console.log(`๐ Summary: ${passCount} passed, ${warningCount} warnings, ${failCount} failed\n`);
|
|
48
|
-
if (failCount === 0) {
|
|
49
|
-
console.log('๐ Bob\'s MCP is ready to use!');
|
|
50
|
-
console.log('\nNext steps:');
|
|
51
|
-
console.log('โข Add Bob\'s MCP to your Claude Code configuration');
|
|
52
|
-
console.log('โข Run "npx bobs-mcp --setup" for guided configuration');
|
|
53
|
-
console.log('โข Start using: npm run dev or npm start');
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
console.log('๐ง Some issues need attention before Bob\'s MCP will work properly.');
|
|
57
|
-
console.log('\nRun "npx bobs-mcp --setup" for automatic fixes, or address the issues above.');
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
async function checkNodeVersion() {
|
|
61
|
-
try {
|
|
62
|
-
const { stdout } = await execAsync('node --version');
|
|
63
|
-
const version = stdout.trim();
|
|
64
|
-
const majorVersion = parseInt(version.slice(1).split('.')[0]);
|
|
65
|
-
if (majorVersion >= 18) {
|
|
66
|
-
return {
|
|
67
|
-
name: 'Node.js Version',
|
|
68
|
-
status: 'pass',
|
|
69
|
-
message: `${version} (compatible)`,
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
return {
|
|
74
|
-
name: 'Node.js Version',
|
|
75
|
-
status: 'fail',
|
|
76
|
-
message: `${version} (requires Node.js 18+)`,
|
|
77
|
-
actionable: 'Update to Node.js 18 or later'
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
catch (error) {
|
|
82
|
-
return {
|
|
83
|
-
name: 'Node.js Version',
|
|
84
|
-
status: 'fail',
|
|
85
|
-
message: 'Node.js not found',
|
|
86
|
-
actionable: 'Install Node.js 18 or later'
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
async function checkNpmRegistry() {
|
|
91
|
-
try {
|
|
92
|
-
await execAsync('npm --version');
|
|
93
|
-
return {
|
|
94
|
-
name: 'npm Registry',
|
|
95
|
-
status: 'pass',
|
|
96
|
-
message: 'npm available',
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
catch (error) {
|
|
100
|
-
return {
|
|
101
|
-
name: 'npm Registry',
|
|
102
|
-
status: 'fail',
|
|
103
|
-
message: 'npm not available',
|
|
104
|
-
actionable: 'Install npm or use yarn'
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
async function checkNpxCompatibility() {
|
|
109
|
-
try {
|
|
110
|
-
// Check if npx is available and can execute bobs-mcp
|
|
111
|
-
await execAsync('npx --version');
|
|
112
|
-
try {
|
|
113
|
-
// Test if bobs-mcp can be found and executed via npx
|
|
114
|
-
const { stdout } = await execAsync('npx bobs-mcp --version', { timeout: 10000 });
|
|
115
|
-
if (stdout.includes('Bob\'s MCP')) {
|
|
116
|
-
return {
|
|
117
|
-
name: 'npx Compatibility',
|
|
118
|
-
status: 'pass',
|
|
119
|
-
message: 'bobs-mcp accessible via npx',
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
return {
|
|
124
|
-
name: 'npx Compatibility',
|
|
125
|
-
status: 'warning',
|
|
126
|
-
message: 'npx works but bobs-mcp version check failed',
|
|
127
|
-
details: 'The package may be installed but not properly configured',
|
|
128
|
-
actionable: 'Try: npm install -g bobs-mcp'
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
catch (error) {
|
|
133
|
-
// Check if package is globally installed
|
|
134
|
-
try {
|
|
135
|
-
await execAsync('npm list -g bobs-mcp');
|
|
136
|
-
return {
|
|
137
|
-
name: 'npx Compatibility',
|
|
138
|
-
status: 'pass',
|
|
139
|
-
message: 'bobs-mcp globally installed (npx should work)',
|
|
140
|
-
details: 'Package found in global npm packages'
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
catch {
|
|
144
|
-
return {
|
|
145
|
-
name: 'npx Compatibility',
|
|
146
|
-
status: 'warning',
|
|
147
|
-
message: 'npx available but bobs-mcp not found',
|
|
148
|
-
details: 'Package may need to be installed globally or locally',
|
|
149
|
-
actionable: 'Try: npm install -g bobs-mcp or install locally in your project'
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
catch (error) {
|
|
155
|
-
return {
|
|
156
|
-
name: 'npx Compatibility',
|
|
157
|
-
status: 'fail',
|
|
158
|
-
message: 'npx not available',
|
|
159
|
-
actionable: 'Install npm 5.2+ which includes npx, or install npx separately'
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
async function checkDependencies() {
|
|
164
|
-
try {
|
|
165
|
-
const projectRoot = path.resolve(__dirname, '../..');
|
|
166
|
-
const nodeModulesPath = path.join(projectRoot, 'node_modules');
|
|
167
|
-
if (!existsSync(nodeModulesPath)) {
|
|
168
|
-
return {
|
|
169
|
-
name: 'Dependencies',
|
|
170
|
-
status: 'fail',
|
|
171
|
-
message: 'node_modules not found',
|
|
172
|
-
actionable: 'Run "npm install" to install dependencies'
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
// Check critical dependencies
|
|
176
|
-
const criticalDeps = ['@modelcontextprotocol/sdk', 'express', 'chokidar'];
|
|
177
|
-
const missing = [];
|
|
178
|
-
for (const dep of criticalDeps) {
|
|
179
|
-
const depPath = path.join(nodeModulesPath, dep);
|
|
180
|
-
if (!existsSync(depPath)) {
|
|
181
|
-
missing.push(dep);
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
if (missing.length > 0) {
|
|
185
|
-
return {
|
|
186
|
-
name: 'Dependencies',
|
|
187
|
-
status: 'fail',
|
|
188
|
-
message: `Missing: ${missing.join(', ')}`,
|
|
189
|
-
actionable: 'Run "npm install" to install missing dependencies'
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
return {
|
|
193
|
-
name: 'Dependencies',
|
|
194
|
-
status: 'pass',
|
|
195
|
-
message: 'All critical dependencies installed',
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
catch (error) {
|
|
199
|
-
return {
|
|
200
|
-
name: 'Dependencies',
|
|
201
|
-
status: 'fail',
|
|
202
|
-
message: 'Error checking dependencies',
|
|
203
|
-
details: error instanceof Error ? error.message : String(error),
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
async function checkSearchTools() {
|
|
208
|
-
const issues = [];
|
|
209
|
-
const warnings = [];
|
|
210
|
-
// Check semgrep
|
|
211
|
-
try {
|
|
212
|
-
await execAsync('semgrep --version');
|
|
213
|
-
}
|
|
214
|
-
catch (error) {
|
|
215
|
-
issues.push('semgrep not found');
|
|
216
|
-
}
|
|
217
|
-
// Check ripgrep
|
|
218
|
-
const projectRoot = path.resolve(__dirname, '../..');
|
|
219
|
-
const ripgrepPkgPath = path.join(projectRoot, 'node_modules/@lvce-editor/ripgrep');
|
|
220
|
-
let ripgrepOk = false;
|
|
221
|
-
if (existsSync(ripgrepPkgPath)) {
|
|
222
|
-
ripgrepOk = true;
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
try {
|
|
226
|
-
await execAsync('rg --version');
|
|
227
|
-
ripgrepOk = true;
|
|
228
|
-
}
|
|
229
|
-
catch (error) {
|
|
230
|
-
issues.push('ripgrep not found');
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
if (issues.length === 0) {
|
|
234
|
-
return {
|
|
235
|
-
name: 'Search Tools',
|
|
236
|
-
status: 'pass',
|
|
237
|
-
message: 'semgrep and ripgrep available',
|
|
238
|
-
};
|
|
239
|
-
}
|
|
240
|
-
else if (issues.length === 1) {
|
|
241
|
-
return {
|
|
242
|
-
name: 'Search Tools',
|
|
243
|
-
status: 'warning',
|
|
244
|
-
message: `${issues[0]} (limited functionality)`,
|
|
245
|
-
actionable: 'Run "npm run install-search-tools" to install missing tools'
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
else {
|
|
249
|
-
return {
|
|
250
|
-
name: 'Search Tools',
|
|
251
|
-
status: 'fail',
|
|
252
|
-
message: 'Both semgrep and ripgrep missing',
|
|
253
|
-
actionable: 'Run "npm run install-search-tools" to install search tools'
|
|
254
|
-
};
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
async function checkMcpServer() {
|
|
258
|
-
try {
|
|
259
|
-
const projectRoot = path.resolve(__dirname, '../..');
|
|
260
|
-
const distPath = path.join(projectRoot, 'dist');
|
|
261
|
-
const mainFile = path.join(distPath, 'index.js');
|
|
262
|
-
if (!existsSync(distPath)) {
|
|
263
|
-
return {
|
|
264
|
-
name: 'MCP Server',
|
|
265
|
-
status: 'fail',
|
|
266
|
-
message: 'Project not built',
|
|
267
|
-
actionable: 'Run "npm run build" to compile TypeScript'
|
|
268
|
-
};
|
|
269
|
-
}
|
|
270
|
-
if (!existsSync(mainFile)) {
|
|
271
|
-
return {
|
|
272
|
-
name: 'MCP Server',
|
|
273
|
-
status: 'fail',
|
|
274
|
-
message: 'Main server file missing',
|
|
275
|
-
actionable: 'Run "npm run build" to compile TypeScript'
|
|
276
|
-
};
|
|
277
|
-
}
|
|
278
|
-
// Quick syntax check without starting server
|
|
279
|
-
try {
|
|
280
|
-
await execAsync(`node -c "${mainFile}"`);
|
|
281
|
-
return {
|
|
282
|
-
name: 'MCP Server',
|
|
283
|
-
status: 'pass',
|
|
284
|
-
message: 'Server files compiled and ready',
|
|
285
|
-
};
|
|
286
|
-
}
|
|
287
|
-
catch (error) {
|
|
288
|
-
return {
|
|
289
|
-
name: 'MCP Server',
|
|
290
|
-
status: 'fail',
|
|
291
|
-
message: 'Server files have syntax errors',
|
|
292
|
-
details: error instanceof Error ? error.message : String(error),
|
|
293
|
-
actionable: 'Run "npm run build" to recompile'
|
|
294
|
-
};
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
catch (error) {
|
|
298
|
-
return {
|
|
299
|
-
name: 'MCP Server',
|
|
300
|
-
status: 'fail',
|
|
301
|
-
message: 'Error checking server files',
|
|
302
|
-
details: error instanceof Error ? error.message : String(error),
|
|
303
|
-
};
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
async function checkDashboard() {
|
|
307
|
-
try {
|
|
308
|
-
const projectRoot = path.resolve(__dirname, '../..');
|
|
309
|
-
const dashboardFile = path.join(projectRoot, 'dist/dashboard/server.js');
|
|
310
|
-
if (!existsSync(dashboardFile)) {
|
|
311
|
-
return {
|
|
312
|
-
name: 'Dashboard',
|
|
313
|
-
status: 'fail',
|
|
314
|
-
message: 'Dashboard not built',
|
|
315
|
-
actionable: 'Run "npm run build" to compile dashboard'
|
|
316
|
-
};
|
|
317
|
-
}
|
|
318
|
-
// Quick syntax check
|
|
319
|
-
try {
|
|
320
|
-
await execAsync(`node -c "${dashboardFile}"`);
|
|
321
|
-
return {
|
|
322
|
-
name: 'Dashboard',
|
|
323
|
-
status: 'pass',
|
|
324
|
-
message: 'Dashboard ready',
|
|
325
|
-
};
|
|
326
|
-
}
|
|
327
|
-
catch (error) {
|
|
328
|
-
return {
|
|
329
|
-
name: 'Dashboard',
|
|
330
|
-
status: 'fail',
|
|
331
|
-
message: 'Dashboard has syntax errors',
|
|
332
|
-
details: error instanceof Error ? error.message : String(error),
|
|
333
|
-
actionable: 'Run "npm run build" to recompile'
|
|
334
|
-
};
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
catch (error) {
|
|
338
|
-
return {
|
|
339
|
-
name: 'Dashboard',
|
|
340
|
-
status: 'fail',
|
|
341
|
-
message: 'Error checking dashboard',
|
|
342
|
-
details: error instanceof Error ? error.message : String(error),
|
|
343
|
-
};
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
async function checkSpecSystem() {
|
|
347
|
-
try {
|
|
348
|
-
const projectRoot = path.resolve(__dirname, '../..');
|
|
349
|
-
const bobDir = path.join(projectRoot, '.bob');
|
|
350
|
-
if (!existsSync(bobDir)) {
|
|
351
|
-
// Create .bob directory if it doesn't exist
|
|
352
|
-
try {
|
|
353
|
-
await fs.ensureDir(path.join(bobDir, 'specs'));
|
|
354
|
-
await fs.writeJson(path.join(bobDir, 'specs', 'index.json'), { specs: [] });
|
|
355
|
-
return {
|
|
356
|
-
name: 'SPEC System',
|
|
357
|
-
status: 'pass',
|
|
358
|
-
message: 'SPEC directory initialized',
|
|
359
|
-
};
|
|
360
|
-
}
|
|
361
|
-
catch (error) {
|
|
362
|
-
return {
|
|
363
|
-
name: 'SPEC System',
|
|
364
|
-
status: 'fail',
|
|
365
|
-
message: 'Cannot create SPEC directory',
|
|
366
|
-
details: error instanceof Error ? error.message : String(error),
|
|
367
|
-
actionable: 'Check file system permissions'
|
|
368
|
-
};
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
const specsDir = path.join(bobDir, 'specs');
|
|
372
|
-
const indexFile = path.join(specsDir, 'index.json');
|
|
373
|
-
if (!existsSync(indexFile)) {
|
|
374
|
-
try {
|
|
375
|
-
await fs.writeJson(indexFile, { specs: [] });
|
|
376
|
-
}
|
|
377
|
-
catch (error) {
|
|
378
|
-
return {
|
|
379
|
-
name: 'SPEC System',
|
|
380
|
-
status: 'warning',
|
|
381
|
-
message: 'SPEC index needs initialization',
|
|
382
|
-
actionable: 'SPEC system will initialize on first use'
|
|
383
|
-
};
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
return {
|
|
387
|
-
name: 'SPEC System',
|
|
388
|
-
status: 'pass',
|
|
389
|
-
message: 'SPEC directory ready',
|
|
390
|
-
};
|
|
391
|
-
}
|
|
392
|
-
catch (error) {
|
|
393
|
-
return {
|
|
394
|
-
name: 'SPEC System',
|
|
395
|
-
status: 'fail',
|
|
396
|
-
message: 'Error checking SPEC system',
|
|
397
|
-
details: error instanceof Error ? error.message : String(error),
|
|
398
|
-
};
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
//# sourceMappingURL=checker.js.map
|
package/dist/cli/checker.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"checker.js","sourceRoot":"","sources":["../../src/cli/checker.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/cleanup.js
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
// src/cli/cleanup.ts
|
|
2
|
-
import { cleanupService } from '../tools/cleanupService.js';
|
|
3
|
-
export async function runCleanup(options = {}) {
|
|
4
|
-
if (options.stats) {
|
|
5
|
-
await showCleanupStats();
|
|
6
|
-
}
|
|
7
|
-
else {
|
|
8
|
-
await performCleanup(options);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
async function showCleanupStats() {
|
|
12
|
-
console.log('๐งน Bob\'s Workshop Cleanup Statistics\n');
|
|
13
|
-
console.log('โ'.repeat(50));
|
|
14
|
-
try {
|
|
15
|
-
const stats = await cleanupService.getCleanupStats();
|
|
16
|
-
console.log('\n๐ System Resource Statistics:\n');
|
|
17
|
-
// Display stats in a user-friendly format
|
|
18
|
-
console.log('๐ณ Worktrees:');
|
|
19
|
-
console.log(` Total: ${stats.totalWorktrees || 0}`);
|
|
20
|
-
console.log(` Stale: ${stats.staleWorktrees || 0}`);
|
|
21
|
-
console.log(` Recent: ${(stats.totalWorktrees || 0) - (stats.staleWorktrees || 0)}`);
|
|
22
|
-
console.log('');
|
|
23
|
-
console.log('๐บ Work Recorders:');
|
|
24
|
-
console.log(` Active: ${stats.activeRecorders || 0}`);
|
|
25
|
-
console.log('');
|
|
26
|
-
// Recommendations
|
|
27
|
-
console.log('๐ก Cleanup Recommendations:');
|
|
28
|
-
if (stats.recommendations && stats.recommendations.length > 0) {
|
|
29
|
-
stats.recommendations.forEach(rec => {
|
|
30
|
-
console.log(` โข ${rec}`);
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
console.log(' โ
System is clean - no cleanup needed');
|
|
35
|
-
}
|
|
36
|
-
if (stats.recommendations && stats.recommendations.length > 0) {
|
|
37
|
-
console.log('\nRun "bobs cleanup" to clean up the above items.');
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
catch (error) {
|
|
41
|
-
console.log('โ Failed to get cleanup statistics:');
|
|
42
|
-
console.log(` Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
async function performCleanup(options) {
|
|
46
|
-
console.log('๐งน Bob\'s Workshop System Cleanup\n');
|
|
47
|
-
console.log('โ'.repeat(50));
|
|
48
|
-
const cleanupOptions = {
|
|
49
|
-
maxWorktreeAge: options.maxAge || 7,
|
|
50
|
-
cleanTempFiles: options.cleanTemp !== false,
|
|
51
|
-
stopOrphanedRecorders: options.stopRecorders !== false,
|
|
52
|
-
forceCleanup: options.force || false
|
|
53
|
-
};
|
|
54
|
-
console.log('\n๐ง Cleanup Configuration:');
|
|
55
|
-
console.log(` Max worktree age: ${cleanupOptions.maxWorktreeAge} days`);
|
|
56
|
-
console.log(` Clean temp files: ${cleanupOptions.cleanTempFiles ? 'Yes' : 'No'}`);
|
|
57
|
-
console.log(` Stop orphaned recorders: ${cleanupOptions.stopOrphanedRecorders ? 'Yes' : 'No'}`);
|
|
58
|
-
console.log(` Force cleanup: ${cleanupOptions.forceCleanup ? 'Yes' : 'No'}`);
|
|
59
|
-
console.log('');
|
|
60
|
-
try {
|
|
61
|
-
console.log('๐ Starting cleanup...\n');
|
|
62
|
-
const result = await cleanupService.performCleanup(cleanupOptions);
|
|
63
|
-
console.log('๐ Cleanup Results:\n');
|
|
64
|
-
// Display results in a user-friendly format
|
|
65
|
-
if (result.staleWorktrees !== undefined) {
|
|
66
|
-
const icon = result.staleWorktrees > 0 ? '๐ณ' : 'โ
';
|
|
67
|
-
console.log(`${icon} Worktrees: ${result.staleWorktrees} cleaned`);
|
|
68
|
-
}
|
|
69
|
-
if (result.tempFilesCleared !== undefined) {
|
|
70
|
-
const icon = result.tempFilesCleared > 0 ? '๐' : 'โ
';
|
|
71
|
-
console.log(`${icon} Temp Files: ${result.tempFilesCleared} cleaned`);
|
|
72
|
-
}
|
|
73
|
-
if (result.orphanedRecorders !== undefined) {
|
|
74
|
-
const icon = result.orphanedRecorders > 0 ? '๐บ' : 'โ
';
|
|
75
|
-
console.log(`${icon} Work Recorders: ${result.orphanedRecorders} stopped`);
|
|
76
|
-
}
|
|
77
|
-
if (result.errors && result.errors.length > 0) {
|
|
78
|
-
console.log('\nโ ๏ธ Cleanup Warnings:');
|
|
79
|
-
result.errors.forEach(error => {
|
|
80
|
-
console.log(` โข ${error}`);
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
console.log('\nโ'.repeat(50));
|
|
84
|
-
console.log('๐ Cleanup completed successfully!');
|
|
85
|
-
}
|
|
86
|
-
catch (error) {
|
|
87
|
-
console.log('โ Cleanup failed:');
|
|
88
|
-
console.log(` Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
89
|
-
console.log('\nSome cleanup operations may have partially completed.');
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
function formatBytes(bytes) {
|
|
93
|
-
if (bytes === 0)
|
|
94
|
-
return '0 B';
|
|
95
|
-
const k = 1024;
|
|
96
|
-
const sizes = ['B', 'KB', 'MB', 'GB'];
|
|
97
|
-
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
98
|
-
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
|
|
99
|
-
}
|
|
100
|
-
export function parseCleanupArgs(args) {
|
|
101
|
-
const options = {};
|
|
102
|
-
for (let i = 0; i < args.length; i++) {
|
|
103
|
-
const arg = args[i];
|
|
104
|
-
switch (arg) {
|
|
105
|
-
case '--stats':
|
|
106
|
-
case '-s':
|
|
107
|
-
options.stats = true;
|
|
108
|
-
break;
|
|
109
|
-
case '--max-age':
|
|
110
|
-
case '-a':
|
|
111
|
-
const ageValue = args[i + 1];
|
|
112
|
-
if (ageValue && !isNaN(parseInt(ageValue))) {
|
|
113
|
-
options.maxAge = parseInt(ageValue);
|
|
114
|
-
i++; // Skip next arg since we consumed it
|
|
115
|
-
}
|
|
116
|
-
break;
|
|
117
|
-
case '--no-temp':
|
|
118
|
-
options.cleanTemp = false;
|
|
119
|
-
break;
|
|
120
|
-
case '--no-recorders':
|
|
121
|
-
options.stopRecorders = false;
|
|
122
|
-
break;
|
|
123
|
-
case '--force':
|
|
124
|
-
case '-f':
|
|
125
|
-
options.force = true;
|
|
126
|
-
break;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
return options;
|
|
130
|
-
}
|
|
131
|
-
//# sourceMappingURL=cleanup.js.map
|
package/dist/cli/cleanup.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/cli/cleanup.ts"],"names":[],"mappings":"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"}
|