mcp-coordinator 0.5.0 → 0.6.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/README.md +938 -860
- package/dashboard/Dockerfile +19 -19
- package/dashboard/public/index.html +1201 -1201
- package/dist/src/agent-activity.js +6 -6
- package/dist/src/agent-registry.js +6 -6
- package/dist/src/consultation.js +20 -20
- package/dist/src/database.js +165 -165
- package/dist/src/dependency-map.js +3 -3
- package/dist/src/file-tracker.js +12 -12
- package/dist/src/http/handle-rest.js +24 -9
- package/dist/src/impact-scorer.js +15 -15
- package/dist/src/introspection.js +1 -1
- package/dist/src/working-files-tracker.js +7 -7
- package/package.json +100 -100
|
@@ -28,10 +28,10 @@ export class WorkingFilesTracker {
|
|
|
28
28
|
const db = getDb();
|
|
29
29
|
const existing = db.prepare("SELECT 1 FROM working_files WHERE agent_id = ? AND file_path = ?")
|
|
30
30
|
.get(agentId, filePath);
|
|
31
|
-
db.prepare(`INSERT INTO working_files (agent_id, file_path, started_at, last_activity_at, claim_until)
|
|
32
|
-
VALUES (?, ?, strftime('%Y-%m-%dT%H:%M:%SZ', 'now'), strftime('%Y-%m-%dT%H:%M:%SZ', 'now'), strftime('%Y-%m-%dT%H:%M:%SZ', 'now', '+' || CAST(? AS TEXT) || ' minutes'))
|
|
33
|
-
ON CONFLICT(agent_id, file_path) DO UPDATE SET
|
|
34
|
-
last_activity_at = strftime('%Y-%m-%dT%H:%M:%SZ', 'now'),
|
|
31
|
+
db.prepare(`INSERT INTO working_files (agent_id, file_path, started_at, last_activity_at, claim_until)
|
|
32
|
+
VALUES (?, ?, strftime('%Y-%m-%dT%H:%M:%SZ', 'now'), strftime('%Y-%m-%dT%H:%M:%SZ', 'now'), strftime('%Y-%m-%dT%H:%M:%SZ', 'now', '+' || CAST(? AS TEXT) || ' minutes'))
|
|
33
|
+
ON CONFLICT(agent_id, file_path) DO UPDATE SET
|
|
34
|
+
last_activity_at = strftime('%Y-%m-%dT%H:%M:%SZ', 'now'),
|
|
35
35
|
claim_until = strftime('%Y-%m-%dT%H:%M:%SZ', 'now', '+' || CAST(? AS TEXT) || ' minutes')`).run(agentId, filePath, ttlMinutes, ttlMinutes);
|
|
36
36
|
this.metrics?.workingFilesStarts.inc({ result: existing ? "updated" : "inserted" });
|
|
37
37
|
}
|
|
@@ -94,9 +94,9 @@ export class WorkingFilesTracker {
|
|
|
94
94
|
return index;
|
|
95
95
|
const db = getDb();
|
|
96
96
|
const placeholders = filePaths.map(() => "?").join(",");
|
|
97
|
-
const rows = db.prepare(`SELECT DISTINCT file_path, agent_id FROM working_files
|
|
98
|
-
WHERE file_path IN (${placeholders})
|
|
99
|
-
AND agent_id != ?
|
|
97
|
+
const rows = db.prepare(`SELECT DISTINCT file_path, agent_id FROM working_files
|
|
98
|
+
WHERE file_path IN (${placeholders})
|
|
99
|
+
AND agent_id != ?
|
|
100
100
|
AND claim_until > strftime('%Y-%m-%dT%H:%M:%SZ', 'now')`).all(...filePaths, excludeAgentId);
|
|
101
101
|
for (const r of rows) {
|
|
102
102
|
let set = index.get(r.file_path);
|
package/package.json
CHANGED
|
@@ -1,100 +1,100 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "mcp-coordinator",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"mcpName": "io.github.swoofer/mcp-coordinator",
|
|
5
|
-
"description": "Embedded MQTT broker + MCP server for multi-agent coordination",
|
|
6
|
-
"type": "module",
|
|
7
|
-
"license": "MIT",
|
|
8
|
-
"author": "Maxime Gagnon",
|
|
9
|
-
"repository": {
|
|
10
|
-
"type": "git",
|
|
11
|
-
"url": "git+https://github.com/swoofer/mcp-coordinator.git"
|
|
12
|
-
},
|
|
13
|
-
"homepage": "https://swoofer.github.io/mcp-coordinator",
|
|
14
|
-
"bugs": {
|
|
15
|
-
"url": "https://github.com/swoofer/mcp-coordinator/issues"
|
|
16
|
-
},
|
|
17
|
-
"keywords": [
|
|
18
|
-
"mcp",
|
|
19
|
-
"mqtt",
|
|
20
|
-
"broker",
|
|
21
|
-
"multi-agent",
|
|
22
|
-
"coordination",
|
|
23
|
-
"claude",
|
|
24
|
-
"anthropic"
|
|
25
|
-
],
|
|
26
|
-
"main": "./dist/src/index.js",
|
|
27
|
-
"types": "./dist/src/index.d.ts",
|
|
28
|
-
"exports": {
|
|
29
|
-
".": {
|
|
30
|
-
"types": "./dist/src/index.d.ts",
|
|
31
|
-
"default": "./dist/src/index.js"
|
|
32
|
-
},
|
|
33
|
-
"./types": {
|
|
34
|
-
"types": "./dist/src/types.d.ts",
|
|
35
|
-
"default": "./dist/src/types.js"
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
"bin": {
|
|
39
|
-
"mcp-coordinator": "./dist/cli/index.js"
|
|
40
|
-
},
|
|
41
|
-
"files": [
|
|
42
|
-
"dist/src/",
|
|
43
|
-
"dist/cli/",
|
|
44
|
-
"dashboard/",
|
|
45
|
-
"LICENSE",
|
|
46
|
-
"README.md"
|
|
47
|
-
],
|
|
48
|
-
"scripts": {
|
|
49
|
-
"build": "tsc",
|
|
50
|
-
"test": "vitest run",
|
|
51
|
-
"test:watch": "vitest",
|
|
52
|
-
"cli": "tsx cli/index.ts",
|
|
53
|
-
"start": "node dist/src/serve-http.js",
|
|
54
|
-
"dev": "tsx src/serve-http.ts",
|
|
55
|
-
"dev:stdio": "tsx src/index.ts",
|
|
56
|
-
"prepublishOnly": "npm run build && npm test"
|
|
57
|
-
},
|
|
58
|
-
"dependencies": {
|
|
59
|
-
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
60
|
-
"aedes": "^1.0.2",
|
|
61
|
-
"better-sqlite3": "^12.8.0",
|
|
62
|
-
"commander": "^14.0.3",
|
|
63
|
-
"jose": "^6.2.2",
|
|
64
|
-
"mqtt": "^5.15.0",
|
|
65
|
-
"pino": "^10.3.1",
|
|
66
|
-
"prom-client": "^15.1.3",
|
|
67
|
-
"tar": "^7.4.3",
|
|
68
|
-
"ws": "^8.20.0",
|
|
69
|
-
"zod": "^3.23.0"
|
|
70
|
-
},
|
|
71
|
-
"devDependencies": {
|
|
72
|
-
"@types/better-sqlite3": "^7.6.13",
|
|
73
|
-
"@types/node": "^22.0.0",
|
|
74
|
-
"@types/ws": "^8.18.1",
|
|
75
|
-
"pino-pretty": "^13.1.3",
|
|
76
|
-
"tsx": "^4.19.0",
|
|
77
|
-
"typescript": "^5.7.0",
|
|
78
|
-
"vitest": "^4.1.0"
|
|
79
|
-
},
|
|
80
|
-
"optionalDependencies": {
|
|
81
|
-
"tree-sitter": "^0.21.1",
|
|
82
|
-
"tree-sitter-typescript": "^0.21.2",
|
|
83
|
-
"tree-sitter-javascript": "^0.21.4",
|
|
84
|
-
"tree-sitter-python": "^0.21.0",
|
|
85
|
-
"tree-sitter-go": "^0.21.0",
|
|
86
|
-
"tree-sitter-rust": "^0.21.2",
|
|
87
|
-
"tree-sitter-java": "^0.21.0",
|
|
88
|
-
"tree-sitter-c-sharp": "^0.21.3",
|
|
89
|
-
"tree-sitter-c": "^0.21.0",
|
|
90
|
-
"tree-sitter-cpp": "^0.22.0",
|
|
91
|
-
"tree-sitter-ruby": "^0.21.0",
|
|
92
|
-
"tree-sitter-php": "^0.22.0",
|
|
93
|
-
"tree-sitter-kotlin": "^0.3.0",
|
|
94
|
-
"tree-sitter-swift": "^0.6.0",
|
|
95
|
-
"tree-sitter-bash": "^0.21.0"
|
|
96
|
-
},
|
|
97
|
-
"engines": {
|
|
98
|
-
"node": ">=20"
|
|
99
|
-
}
|
|
100
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "mcp-coordinator",
|
|
3
|
+
"version": "0.6.0",
|
|
4
|
+
"mcpName": "io.github.swoofer/mcp-coordinator",
|
|
5
|
+
"description": "Embedded MQTT broker + MCP server for multi-agent coordination",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"author": "Maxime Gagnon",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/swoofer/mcp-coordinator.git"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://swoofer.github.io/mcp-coordinator",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/swoofer/mcp-coordinator/issues"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"mcp",
|
|
19
|
+
"mqtt",
|
|
20
|
+
"broker",
|
|
21
|
+
"multi-agent",
|
|
22
|
+
"coordination",
|
|
23
|
+
"claude",
|
|
24
|
+
"anthropic"
|
|
25
|
+
],
|
|
26
|
+
"main": "./dist/src/index.js",
|
|
27
|
+
"types": "./dist/src/index.d.ts",
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"types": "./dist/src/index.d.ts",
|
|
31
|
+
"default": "./dist/src/index.js"
|
|
32
|
+
},
|
|
33
|
+
"./types": {
|
|
34
|
+
"types": "./dist/src/types.d.ts",
|
|
35
|
+
"default": "./dist/src/types.js"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"bin": {
|
|
39
|
+
"mcp-coordinator": "./dist/cli/index.js"
|
|
40
|
+
},
|
|
41
|
+
"files": [
|
|
42
|
+
"dist/src/",
|
|
43
|
+
"dist/cli/",
|
|
44
|
+
"dashboard/",
|
|
45
|
+
"LICENSE",
|
|
46
|
+
"README.md"
|
|
47
|
+
],
|
|
48
|
+
"scripts": {
|
|
49
|
+
"build": "tsc",
|
|
50
|
+
"test": "vitest run",
|
|
51
|
+
"test:watch": "vitest",
|
|
52
|
+
"cli": "tsx cli/index.ts",
|
|
53
|
+
"start": "node dist/src/serve-http.js",
|
|
54
|
+
"dev": "tsx src/serve-http.ts",
|
|
55
|
+
"dev:stdio": "tsx src/index.ts",
|
|
56
|
+
"prepublishOnly": "npm run build && npm test"
|
|
57
|
+
},
|
|
58
|
+
"dependencies": {
|
|
59
|
+
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
60
|
+
"aedes": "^1.0.2",
|
|
61
|
+
"better-sqlite3": "^12.8.0",
|
|
62
|
+
"commander": "^14.0.3",
|
|
63
|
+
"jose": "^6.2.2",
|
|
64
|
+
"mqtt": "^5.15.0",
|
|
65
|
+
"pino": "^10.3.1",
|
|
66
|
+
"prom-client": "^15.1.3",
|
|
67
|
+
"tar": "^7.4.3",
|
|
68
|
+
"ws": "^8.20.0",
|
|
69
|
+
"zod": "^3.23.0"
|
|
70
|
+
},
|
|
71
|
+
"devDependencies": {
|
|
72
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
73
|
+
"@types/node": "^22.0.0",
|
|
74
|
+
"@types/ws": "^8.18.1",
|
|
75
|
+
"pino-pretty": "^13.1.3",
|
|
76
|
+
"tsx": "^4.19.0",
|
|
77
|
+
"typescript": "^5.7.0",
|
|
78
|
+
"vitest": "^4.1.0"
|
|
79
|
+
},
|
|
80
|
+
"optionalDependencies": {
|
|
81
|
+
"tree-sitter": "^0.21.1",
|
|
82
|
+
"tree-sitter-typescript": "^0.21.2",
|
|
83
|
+
"tree-sitter-javascript": "^0.21.4",
|
|
84
|
+
"tree-sitter-python": "^0.21.0",
|
|
85
|
+
"tree-sitter-go": "^0.21.0",
|
|
86
|
+
"tree-sitter-rust": "^0.21.2",
|
|
87
|
+
"tree-sitter-java": "^0.21.0",
|
|
88
|
+
"tree-sitter-c-sharp": "^0.21.3",
|
|
89
|
+
"tree-sitter-c": "^0.21.0",
|
|
90
|
+
"tree-sitter-cpp": "^0.22.0",
|
|
91
|
+
"tree-sitter-ruby": "^0.21.0",
|
|
92
|
+
"tree-sitter-php": "^0.22.0",
|
|
93
|
+
"tree-sitter-kotlin": "^0.3.0",
|
|
94
|
+
"tree-sitter-swift": "^0.6.0",
|
|
95
|
+
"tree-sitter-bash": "^0.21.0"
|
|
96
|
+
},
|
|
97
|
+
"engines": {
|
|
98
|
+
"node": ">=20"
|
|
99
|
+
}
|
|
100
|
+
}
|