devsmind-mcp 1.0.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 +21 -0
- package/README.md +280 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +105 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +1 -0
- package/dist/cli/init.js +626 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/prune.d.ts +3 -0
- package/dist/cli/prune.js +297 -0
- package/dist/cli/prune.js.map +1 -0
- package/dist/cli/rule.d.ts +3 -0
- package/dist/cli/rule.js +157 -0
- package/dist/cli/rule.js.map +1 -0
- package/dist/cli/view.d.ts +4 -0
- package/dist/cli/view.js +107 -0
- package/dist/cli/view.js.map +1 -0
- package/dist/db/database.d.ts +92 -0
- package/dist/db/database.js +479 -0
- package/dist/db/database.js.map +1 -0
- package/dist/db/indexer.d.ts +17 -0
- package/dist/db/indexer.js +103 -0
- package/dist/db/indexer.js.map +1 -0
- package/dist/db/schema.d.ts +23 -0
- package/dist/db/schema.js +38 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/mcp/server.d.ts +15 -0
- package/dist/mcp/server.js +1104 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/visualizer.d.ts +2 -0
- package/dist/mcp/visualizer.js +42 -0
- package/dist/mcp/visualizer.js.map +1 -0
- package/dist/mcp/visualizer_2d.html +635 -0
- package/dist/mcp/visualizer_3d.html +628 -0
- package/dist/utils/config.d.ts +43 -0
- package/dist/utils/config.js +91 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/scanner.d.ts +13 -0
- package/dist/utils/scanner.js +106 -0
- package/dist/utils/scanner.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.readScratchpad = readScratchpad;
|
|
37
|
+
exports.writeScratchpad = writeScratchpad;
|
|
38
|
+
exports.createScratchpad = createScratchpad;
|
|
39
|
+
exports.updateScratchpad = updateScratchpad;
|
|
40
|
+
exports.completeScratchpad = completeScratchpad;
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const SCRATCHPAD_FILE = 'index_scratchpad.json';
|
|
44
|
+
function scratchpadPath(devmindPath) {
|
|
45
|
+
return path.join(path.resolve(devmindPath), SCRATCHPAD_FILE);
|
|
46
|
+
}
|
|
47
|
+
function readScratchpad(devmindPath) {
|
|
48
|
+
const p = scratchpadPath(devmindPath);
|
|
49
|
+
if (!fs.existsSync(p))
|
|
50
|
+
return null;
|
|
51
|
+
try {
|
|
52
|
+
return JSON.parse(fs.readFileSync(p, 'utf-8'));
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function writeScratchpad(devmindPath, data) {
|
|
59
|
+
const p = scratchpadPath(devmindPath);
|
|
60
|
+
fs.writeFileSync(p, JSON.stringify(data, null, 2), 'utf-8');
|
|
61
|
+
}
|
|
62
|
+
function createScratchpad(devmindPath, filesTotal) {
|
|
63
|
+
const now = new Date().toISOString();
|
|
64
|
+
const pad = {
|
|
65
|
+
status: 'in_progress',
|
|
66
|
+
started_at: now,
|
|
67
|
+
updated_at: now,
|
|
68
|
+
files_done: 0,
|
|
69
|
+
files_total: filesTotal,
|
|
70
|
+
nodes_created: 0,
|
|
71
|
+
connections_created: 0,
|
|
72
|
+
last_file_indexed: null,
|
|
73
|
+
repos_done: [],
|
|
74
|
+
current_repo: null
|
|
75
|
+
};
|
|
76
|
+
writeScratchpad(devmindPath, pad);
|
|
77
|
+
return pad;
|
|
78
|
+
}
|
|
79
|
+
function updateScratchpad(devmindPath, patch) {
|
|
80
|
+
const existing = readScratchpad(devmindPath);
|
|
81
|
+
if (!existing)
|
|
82
|
+
throw new Error('No indexing session found. Call index_start first.');
|
|
83
|
+
const updated = {
|
|
84
|
+
...existing,
|
|
85
|
+
...patch,
|
|
86
|
+
updated_at: new Date().toISOString()
|
|
87
|
+
};
|
|
88
|
+
writeScratchpad(devmindPath, updated);
|
|
89
|
+
return updated;
|
|
90
|
+
}
|
|
91
|
+
function completeScratchpad(devmindPath) {
|
|
92
|
+
const existing = readScratchpad(devmindPath);
|
|
93
|
+
if (!existing)
|
|
94
|
+
throw new Error('No indexing session found. Call index_start first.');
|
|
95
|
+
const completed = {
|
|
96
|
+
...existing,
|
|
97
|
+
status: 'complete',
|
|
98
|
+
updated_at: new Date().toISOString()
|
|
99
|
+
};
|
|
100
|
+
writeScratchpad(devmindPath, completed);
|
|
101
|
+
return completed;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=indexer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../src/db/indexer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,wCAQC;AAED,0CAGC;AAED,4CAgBC;AAED,4CAaC;AAED,gDAUC;AAhFD,uCAAyB;AACzB,2CAA6B;AAe7B,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAEhD,SAAS,cAAc,CAAC,WAAmB;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,eAAe,CAAC,CAAC;AAC/D,CAAC;AAED,SAAgB,cAAc,CAAC,WAAmB;IAChD,MAAM,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAoB,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,eAAe,CAAC,WAAmB,EAAE,IAAqB;IACxE,MAAM,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IACtC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,SAAgB,gBAAgB,CAAC,WAAmB,EAAE,UAAkB;IACtE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,GAAG,GAAoB;QAC3B,MAAM,EAAE,aAAa;QACrB,UAAU,EAAE,GAAG;QACf,UAAU,EAAE,GAAG;QACf,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,UAAU;QACvB,aAAa,EAAE,CAAC;QAChB,mBAAmB,EAAE,CAAC;QACtB,iBAAiB,EAAE,IAAI;QACvB,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,IAAI;KACnB,CAAC;IACF,eAAe,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,gBAAgB,CAC9B,WAAmB,EACnB,KAA8D;IAE9D,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACrF,MAAM,OAAO,GAAoB;QAC/B,GAAG,QAAQ;QACX,GAAG,KAAK;QACR,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC;IACF,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,kBAAkB,CAAC,WAAmB;IACpD,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACrF,MAAM,SAAS,GAAoB;QACjC,GAAG,QAAQ;QACX,MAAM,EAAE,UAAU;QAClB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC;IACF,eAAe,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface DbNode {
|
|
2
|
+
id: string;
|
|
3
|
+
type: string;
|
|
4
|
+
name: string;
|
|
5
|
+
file_path: string;
|
|
6
|
+
signature: string | null;
|
|
7
|
+
deprecated: number;
|
|
8
|
+
created_at: string;
|
|
9
|
+
}
|
|
10
|
+
export interface DbConnection {
|
|
11
|
+
source_node_id: string;
|
|
12
|
+
target_node_id: string;
|
|
13
|
+
}
|
|
14
|
+
export interface DbHistory {
|
|
15
|
+
id: string;
|
|
16
|
+
node_id: string;
|
|
17
|
+
session_id: string;
|
|
18
|
+
created_at: string;
|
|
19
|
+
updated_at: string;
|
|
20
|
+
code_snapshot: string;
|
|
21
|
+
reasoning: string;
|
|
22
|
+
}
|
|
23
|
+
export declare const INIT_SCHEMA_SQL = "\nCREATE TABLE IF NOT EXISTS nodes (\n id TEXT PRIMARY KEY,\n type TEXT NOT NULL,\n name TEXT NOT NULL,\n file_path TEXT NOT NULL,\n signature TEXT,\n deprecated INTEGER DEFAULT 0,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP\n);\n\nCREATE TABLE IF NOT EXISTS node_connections (\n source_node_id TEXT,\n target_node_id TEXT,\n PRIMARY KEY (source_node_id, target_node_id),\n FOREIGN KEY (source_node_id) REFERENCES nodes (id) ON DELETE CASCADE,\n FOREIGN KEY (target_node_id) REFERENCES nodes (id) ON DELETE CASCADE\n);\n\nCREATE TABLE IF NOT EXISTS history (\n id TEXT PRIMARY KEY,\n node_id TEXT NOT NULL,\n session_id TEXT NOT NULL,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\n updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,\n code_snapshot TEXT NOT NULL,\n reasoning TEXT NOT NULL,\n FOREIGN KEY (node_id) REFERENCES nodes (id) ON DELETE CASCADE\n);\n\n-- Index for searching nodes by name and type\nCREATE INDEX IF NOT EXISTS idx_nodes_name ON nodes (name);\nCREATE INDEX IF NOT EXISTS idx_history_node_id ON history (node_id);\n";
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.INIT_SCHEMA_SQL = void 0;
|
|
4
|
+
exports.INIT_SCHEMA_SQL = `
|
|
5
|
+
CREATE TABLE IF NOT EXISTS nodes (
|
|
6
|
+
id TEXT PRIMARY KEY,
|
|
7
|
+
type TEXT NOT NULL,
|
|
8
|
+
name TEXT NOT NULL,
|
|
9
|
+
file_path TEXT NOT NULL,
|
|
10
|
+
signature TEXT,
|
|
11
|
+
deprecated INTEGER DEFAULT 0,
|
|
12
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
CREATE TABLE IF NOT EXISTS node_connections (
|
|
16
|
+
source_node_id TEXT,
|
|
17
|
+
target_node_id TEXT,
|
|
18
|
+
PRIMARY KEY (source_node_id, target_node_id),
|
|
19
|
+
FOREIGN KEY (source_node_id) REFERENCES nodes (id) ON DELETE CASCADE,
|
|
20
|
+
FOREIGN KEY (target_node_id) REFERENCES nodes (id) ON DELETE CASCADE
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
CREATE TABLE IF NOT EXISTS history (
|
|
24
|
+
id TEXT PRIMARY KEY,
|
|
25
|
+
node_id TEXT NOT NULL,
|
|
26
|
+
session_id TEXT NOT NULL,
|
|
27
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
28
|
+
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
29
|
+
code_snapshot TEXT NOT NULL,
|
|
30
|
+
reasoning TEXT NOT NULL,
|
|
31
|
+
FOREIGN KEY (node_id) REFERENCES nodes (id) ON DELETE CASCADE
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
-- Index for searching nodes by name and type
|
|
35
|
+
CREATE INDEX IF NOT EXISTS idx_nodes_name ON nodes (name);
|
|
36
|
+
CREATE INDEX IF NOT EXISTS idx_history_node_id ON history (node_id);
|
|
37
|
+
`;
|
|
38
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":";;;AAyBa,QAAA,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiC9B,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const DEVSMIND_PORT = 4513;
|
|
2
|
+
/**
|
|
3
|
+
* Start DevsMind as an HTTP MCP server on port 4500.
|
|
4
|
+
* IDEs connect via: http://localhost:4500/mcp
|
|
5
|
+
*
|
|
6
|
+
* Port mnemonic: devs→45 (D=4,E=5) + mind→13 (M=13) = 4513
|
|
7
|
+
*/
|
|
8
|
+
export declare function runHttpMcpServer(port?: number): Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Start DevsMind as a stdio MCP server.
|
|
11
|
+
* Used when an IDE manages the process directly (e.g. Cursor stdio plugin mode).
|
|
12
|
+
*/
|
|
13
|
+
export declare function runStdioMcpServer(): void;
|
|
14
|
+
/** @deprecated Use runHttpMcpServer() or runStdioMcpServer() directly */
|
|
15
|
+
export declare function runMcpServer(): void;
|