@mcp-graph-workflow/mcp-graph 5.8.0 → 5.9.1
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/dist/core/code/code-types.d.ts +3 -3
- package/dist/core/integrations/integration-orchestrator.d.ts.map +1 -1
- package/dist/core/integrations/integration-orchestrator.js +2 -0
- package/dist/core/integrations/integration-orchestrator.js.map +1 -1
- package/dist/core/rag/entity-extractor.d.ts +30 -0
- package/dist/core/rag/entity-extractor.d.ts.map +1 -0
- package/dist/core/rag/entity-extractor.js +224 -0
- package/dist/core/rag/entity-extractor.js.map +1 -0
- package/dist/core/rag/entity-index-hook.d.ts +25 -0
- package/dist/core/rag/entity-index-hook.d.ts.map +1 -0
- package/dist/core/rag/entity-index-hook.js +75 -0
- package/dist/core/rag/entity-index-hook.js.map +1 -0
- package/dist/core/rag/entity-indexer.d.ts +33 -0
- package/dist/core/rag/entity-indexer.d.ts.map +1 -0
- package/dist/core/rag/entity-indexer.js +91 -0
- package/dist/core/rag/entity-indexer.js.map +1 -0
- package/dist/core/rag/entity-store.d.ts +91 -0
- package/dist/core/rag/entity-store.d.ts.map +1 -0
- package/dist/core/rag/entity-store.js +395 -0
- package/dist/core/rag/entity-store.js.map +1 -0
- package/dist/core/rag/multi-strategy-retrieval.d.ts.map +1 -1
- package/dist/core/rag/multi-strategy-retrieval.js +49 -3
- package/dist/core/rag/multi-strategy-retrieval.js.map +1 -1
- package/dist/core/rag/node-indexer.d.ts +26 -0
- package/dist/core/rag/node-indexer.d.ts.map +1 -0
- package/dist/core/rag/node-indexer.js +120 -0
- package/dist/core/rag/node-indexer.js.map +1 -0
- package/dist/core/rag/query-understanding.d.ts +23 -0
- package/dist/core/rag/query-understanding.d.ts.map +1 -1
- package/dist/core/rag/query-understanding.js +85 -0
- package/dist/core/rag/query-understanding.js.map +1 -1
- package/dist/core/store/migrations.d.ts.map +1 -1
- package/dist/core/store/migrations.js +51 -0
- package/dist/core/store/migrations.js.map +1 -1
- package/dist/mcp/tools/clone-node.d.ts.map +1 -1
- package/dist/mcp/tools/clone-node.js +5 -0
- package/dist/mcp/tools/clone-node.js.map +1 -1
- package/dist/mcp/tools/import-graph.d.ts.map +1 -1
- package/dist/mcp/tools/import-graph.js +23 -1
- package/dist/mcp/tools/import-graph.js.map +1 -1
- package/dist/mcp/tools/import-prd.d.ts.map +1 -1
- package/dist/mcp/tools/import-prd.js +2 -0
- package/dist/mcp/tools/import-prd.js.map +1 -1
- package/dist/mcp/tools/journey.d.ts.map +1 -1
- package/dist/mcp/tools/journey.js +2 -0
- package/dist/mcp/tools/journey.js.map +1 -1
- package/dist/mcp/tools/manage-skill.d.ts.map +1 -1
- package/dist/mcp/tools/manage-skill.js +3 -0
- package/dist/mcp/tools/manage-skill.js.map +1 -1
- package/dist/mcp/tools/memory.d.ts.map +1 -1
- package/dist/mcp/tools/memory.js +2 -0
- package/dist/mcp/tools/memory.js.map +1 -1
- package/dist/mcp/tools/node.d.ts.map +1 -1
- package/dist/mcp/tools/node.js +5 -0
- package/dist/mcp/tools/node.js.map +1 -1
- package/dist/mcp/tools/plan-sprint.d.ts.map +1 -1
- package/dist/mcp/tools/plan-sprint.js +3 -1
- package/dist/mcp/tools/plan-sprint.js.map +1 -1
- package/dist/mcp/tools/reindex-knowledge.d.ts.map +1 -1
- package/dist/mcp/tools/reindex-knowledge.js +43 -1
- package/dist/mcp/tools/reindex-knowledge.js.map +1 -1
- package/dist/mcp/tools/siebel-import-docs.d.ts.map +1 -1
- package/dist/mcp/tools/siebel-import-docs.js +3 -0
- package/dist/mcp/tools/siebel-import-docs.js.map +1 -1
- package/dist/mcp/tools/siebel-import-sif.d.ts.map +1 -1
- package/dist/mcp/tools/siebel-import-sif.js +2 -0
- package/dist/mcp/tools/siebel-import-sif.js.map +1 -1
- package/dist/mcp/tools/sync-stack-docs.d.ts.map +1 -1
- package/dist/mcp/tools/sync-stack-docs.js +2 -0
- package/dist/mcp/tools/sync-stack-docs.js.map +1 -1
- package/dist/mcp/tools/update-status.d.ts.map +1 -1
- package/dist/mcp/tools/update-status.js +2 -0
- package/dist/mcp/tools/update-status.js.map +1 -1
- package/dist/mcp/tools/validate.d.ts.map +1 -1
- package/dist/mcp/tools/validate.js +3 -0
- package/dist/mcp/tools/validate.js.map +1 -1
- package/dist/schemas/entity.schema.d.ts +80 -0
- package/dist/schemas/entity.schema.d.ts.map +1 -0
- package/dist/schemas/entity.schema.js +56 -0
- package/dist/schemas/entity.schema.js.map +1 -0
- package/dist/schemas/knowledge.schema.d.ts +2 -0
- package/dist/schemas/knowledge.schema.d.ts.map +1 -1
- package/dist/schemas/knowledge.schema.js +1 -1
- package/dist/schemas/knowledge.schema.js.map +1 -1
- package/dist/schemas/siebel.schema.d.ts +3 -3
- package/package.json +2 -2
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node Indexer — indexes graph nodes into the Knowledge Store
|
|
3
|
+
* so they become discoverable via RAG search.
|
|
4
|
+
*
|
|
5
|
+
* Converts node content (title, description, AC, tags) into
|
|
6
|
+
* knowledge documents with sourceType "graph_node".
|
|
7
|
+
*/
|
|
8
|
+
import { KnowledgeStore } from "../store/knowledge-store.js";
|
|
9
|
+
import { indexEntitiesForDoc } from "./entity-index-hook.js";
|
|
10
|
+
import { logger } from "../utils/logger.js";
|
|
11
|
+
/**
|
|
12
|
+
* Index a single graph node as a knowledge document.
|
|
13
|
+
* If a doc already exists for this node (same sourceId), it is replaced.
|
|
14
|
+
*/
|
|
15
|
+
export function indexNodeAsKnowledge(db, node) {
|
|
16
|
+
try {
|
|
17
|
+
const ks = new KnowledgeStore(db);
|
|
18
|
+
// Build rich content from node fields
|
|
19
|
+
const parts = [];
|
|
20
|
+
parts.push(`# ${node.title}`);
|
|
21
|
+
parts.push(`Type: ${node.type} | Status: ${node.status} | Priority: ${node.priority}`);
|
|
22
|
+
if (node.description) {
|
|
23
|
+
parts.push("", node.description);
|
|
24
|
+
}
|
|
25
|
+
if (node.acceptanceCriteria && node.acceptanceCriteria.length > 0) {
|
|
26
|
+
parts.push("", "## Acceptance Criteria");
|
|
27
|
+
for (const ac of node.acceptanceCriteria) {
|
|
28
|
+
parts.push(`- ${ac}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (node.tags && node.tags.length > 0) {
|
|
32
|
+
parts.push("", `Tags: ${node.tags.join(", ")}`);
|
|
33
|
+
}
|
|
34
|
+
const content = parts.join("\n");
|
|
35
|
+
// Remove existing doc for this node (update = delete + insert)
|
|
36
|
+
removeNodeFromKnowledge(db, node.id);
|
|
37
|
+
// Insert as knowledge document
|
|
38
|
+
const doc = ks.insert({
|
|
39
|
+
sourceType: "graph_node",
|
|
40
|
+
sourceId: node.id,
|
|
41
|
+
title: node.title,
|
|
42
|
+
content,
|
|
43
|
+
chunkIndex: 0,
|
|
44
|
+
metadata: {
|
|
45
|
+
nodeType: node.type,
|
|
46
|
+
status: node.status,
|
|
47
|
+
priority: node.priority,
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
// Extract entities from the node content
|
|
51
|
+
indexEntitiesForDoc(db, doc.id);
|
|
52
|
+
logger.debug("node-indexer:indexed", { nodeId: node.id, docId: doc.id });
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
logger.warn("node-indexer:index-failed", { nodeId: node.id, error: String(err) });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Remove a node's knowledge document.
|
|
60
|
+
*/
|
|
61
|
+
export function removeNodeFromKnowledge(db, nodeId) {
|
|
62
|
+
try {
|
|
63
|
+
const ks = new KnowledgeStore(db);
|
|
64
|
+
const docs = ks.getBySourceId(nodeId);
|
|
65
|
+
for (const doc of docs) {
|
|
66
|
+
// Clean up orphaned entity mentions before deleting the doc
|
|
67
|
+
try {
|
|
68
|
+
db.prepare("DELETE FROM kg_mentions WHERE doc_id = ?").run(doc.id);
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// kg_mentions table may not exist yet — safe to ignore
|
|
72
|
+
}
|
|
73
|
+
ks.delete(doc.id);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
logger.warn("node-indexer:remove-failed", { nodeId, error: String(err) });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Index all existing graph nodes into the Knowledge Store.
|
|
82
|
+
* Used by reindex_knowledge with source "graph".
|
|
83
|
+
*/
|
|
84
|
+
export function indexAllNodes(db, projectId) {
|
|
85
|
+
try {
|
|
86
|
+
const rows = projectId
|
|
87
|
+
? db.prepare("SELECT * FROM nodes WHERE project_id = ?").all(projectId)
|
|
88
|
+
: db.prepare("SELECT * FROM nodes").all();
|
|
89
|
+
let indexed = 0;
|
|
90
|
+
for (const row of rows) {
|
|
91
|
+
try {
|
|
92
|
+
const node = {
|
|
93
|
+
id: row.id,
|
|
94
|
+
type: row.type,
|
|
95
|
+
title: row.title,
|
|
96
|
+
description: row.description,
|
|
97
|
+
status: row.status,
|
|
98
|
+
priority: row.priority,
|
|
99
|
+
tags: row.tags ? JSON.parse(row.tags) : undefined,
|
|
100
|
+
acceptanceCriteria: row.acceptance_criteria ? JSON.parse(row.acceptance_criteria) : undefined,
|
|
101
|
+
parentId: row.parent_id,
|
|
102
|
+
createdAt: row.created_at,
|
|
103
|
+
updatedAt: row.updated_at,
|
|
104
|
+
};
|
|
105
|
+
indexNodeAsKnowledge(db, node);
|
|
106
|
+
indexed++;
|
|
107
|
+
}
|
|
108
|
+
catch (rowErr) {
|
|
109
|
+
logger.warn("node-indexer:row-parse-failed", { rowId: row.id, error: String(rowErr) });
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
logger.info("node-indexer:all-indexed", { indexed });
|
|
113
|
+
return { indexed };
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
logger.warn("node-indexer:index-all-failed", { error: String(err) });
|
|
117
|
+
return { indexed: 0 };
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=node-indexer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-indexer.js","sourceRoot":"","sources":["../../../src/core/rag/node-indexer.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* - Query expansion with related terms
|
|
9
9
|
* - Query rewriting for FTS5 optimization
|
|
10
10
|
*/
|
|
11
|
+
import type Database from "better-sqlite3";
|
|
11
12
|
export type QueryIntent = "search" | "how_to" | "status" | "debug" | "compare" | "history";
|
|
12
13
|
export interface UnderstandingResult {
|
|
13
14
|
originalQuery: string;
|
|
@@ -34,4 +35,26 @@ export declare function expandQuery(query: string): string[];
|
|
|
34
35
|
* Analyzes a natural language query and returns structured understanding.
|
|
35
36
|
*/
|
|
36
37
|
export declare function understandQuery(query: string): UnderstandingResult;
|
|
38
|
+
export interface EntityMatch {
|
|
39
|
+
entityId: string;
|
|
40
|
+
name: string;
|
|
41
|
+
type: string;
|
|
42
|
+
score: number;
|
|
43
|
+
}
|
|
44
|
+
export interface DecomposedQuery extends UnderstandingResult {
|
|
45
|
+
/** High-level keys: intent + abstract concepts (expanded terms) */
|
|
46
|
+
highLevelKeys: string[];
|
|
47
|
+
/** Low-level keys: specific entities and technical terms */
|
|
48
|
+
lowLevelKeys: string[];
|
|
49
|
+
/** Entities matched from the Knowledge Graph */
|
|
50
|
+
entityMatches: EntityMatch[];
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Decompose query into high/low level keys with KG entity matching.
|
|
54
|
+
* Extends understandQuery() — the original function is NOT modified.
|
|
55
|
+
*
|
|
56
|
+
* If the KG tables don't exist or are empty, entityMatches will be [].
|
|
57
|
+
* This ensures graceful degradation when KG is not populated.
|
|
58
|
+
*/
|
|
59
|
+
export declare function decomposeQuery(query: string, db: Database.Database): DecomposedQuery;
|
|
37
60
|
//# sourceMappingURL=query-understanding.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-understanding.d.ts","sourceRoot":"","sources":["../../../src/core/rag/query-understanding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"query-understanding.d.ts","sourceRoot":"","sources":["../../../src/core/rag/query-understanding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAO3C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAE3F,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAYD;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAKvD;AAiBD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ1D;AAmBD;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAYnD;AAUD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAuBlE;AAID,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,mEAAmE;IACnE,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gDAAgD;IAChD,aAAa,EAAE,WAAW,EAAE,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,eAAe,CAkFpF"}
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { tokenize } from "../search/tokenizer.js";
|
|
12
12
|
import { extractEntities } from "./enrichment-pipeline.js";
|
|
13
|
+
import { extractEntitiesFromText } from "./entity-extractor.js";
|
|
14
|
+
import { EntityStore } from "./entity-store.js";
|
|
13
15
|
import { logger } from "../utils/logger.js";
|
|
14
16
|
// ── Intent detection patterns ────────────────────────────
|
|
15
17
|
const INTENT_PATTERNS = [
|
|
@@ -120,4 +122,87 @@ export function understandQuery(query) {
|
|
|
120
122
|
sourceTypeFilter,
|
|
121
123
|
};
|
|
122
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Decompose query into high/low level keys with KG entity matching.
|
|
127
|
+
* Extends understandQuery() — the original function is NOT modified.
|
|
128
|
+
*
|
|
129
|
+
* If the KG tables don't exist or are empty, entityMatches will be [].
|
|
130
|
+
* This ensures graceful degradation when KG is not populated.
|
|
131
|
+
*/
|
|
132
|
+
export function decomposeQuery(query, db) {
|
|
133
|
+
const base = understandQuery(query);
|
|
134
|
+
// High-level keys: intent + expanded terms (abstract concepts)
|
|
135
|
+
const highLevelKeys = [base.intent, ...base.expandedTerms];
|
|
136
|
+
// Low-level keys: extracted entities from the query text (specific terms)
|
|
137
|
+
const queryEntities = extractEntitiesFromText(query);
|
|
138
|
+
const lowLevelKeys = [
|
|
139
|
+
...base.entities,
|
|
140
|
+
...queryEntities.map((e) => e.name),
|
|
141
|
+
];
|
|
142
|
+
// Deduplicate
|
|
143
|
+
const uniqueLowKeys = [...new Set(lowLevelKeys)];
|
|
144
|
+
// Match against Knowledge Graph entities
|
|
145
|
+
const entityMatches = [];
|
|
146
|
+
try {
|
|
147
|
+
const entityStore = new EntityStore(db);
|
|
148
|
+
if (entityStore.hasKgTables()) {
|
|
149
|
+
// Search KG for each extracted entity name
|
|
150
|
+
const searched = new Set();
|
|
151
|
+
for (const key of uniqueLowKeys) {
|
|
152
|
+
if (searched.has(key.toLowerCase()))
|
|
153
|
+
continue;
|
|
154
|
+
searched.add(key.toLowerCase());
|
|
155
|
+
const matches = entityStore.findByName(key, 3);
|
|
156
|
+
for (const match of matches) {
|
|
157
|
+
// Score: exact match = 1.0, partial = 0.6
|
|
158
|
+
const score = match.normalizedName === key.toLowerCase() ? 1.0 : 0.6;
|
|
159
|
+
entityMatches.push({
|
|
160
|
+
entityId: match.id,
|
|
161
|
+
name: match.name,
|
|
162
|
+
type: match.type,
|
|
163
|
+
score,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// Also try expanded terms against KG
|
|
168
|
+
for (const term of base.expandedTerms) {
|
|
169
|
+
if (searched.has(term.toLowerCase()))
|
|
170
|
+
continue;
|
|
171
|
+
searched.add(term.toLowerCase());
|
|
172
|
+
const matches = entityStore.findByName(term, 2);
|
|
173
|
+
for (const match of matches) {
|
|
174
|
+
entityMatches.push({
|
|
175
|
+
entityId: match.id,
|
|
176
|
+
name: match.name,
|
|
177
|
+
type: match.type,
|
|
178
|
+
score: 0.4, // Lower score for expanded term matches
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
// KG not available — graceful degradation
|
|
186
|
+
logger.debug("decomposeQuery: KG tables not available, skipping entity matching");
|
|
187
|
+
}
|
|
188
|
+
// Deduplicate entity matches by entityId, keeping highest score
|
|
189
|
+
const entityMap = new Map();
|
|
190
|
+
for (const em of entityMatches) {
|
|
191
|
+
const existing = entityMap.get(em.entityId);
|
|
192
|
+
if (!existing || em.score > existing.score) {
|
|
193
|
+
entityMap.set(em.entityId, em);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
logger.debug("Query decomposed", {
|
|
197
|
+
highLevelKeys: highLevelKeys.length,
|
|
198
|
+
lowLevelKeys: uniqueLowKeys.length,
|
|
199
|
+
entityMatches: entityMap.size,
|
|
200
|
+
});
|
|
201
|
+
return {
|
|
202
|
+
...base,
|
|
203
|
+
highLevelKeys,
|
|
204
|
+
lowLevelKeys: uniqueLowKeys,
|
|
205
|
+
entityMatches: Array.from(entityMap.values()).sort((a, b) => b.score - a.score),
|
|
206
|
+
};
|
|
207
|
+
}
|
|
123
208
|
//# sourceMappingURL=query-understanding.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-understanding.js","sourceRoot":"","sources":["../../../src/core/rag/query-understanding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"query-understanding.js","sourceRoot":"","sources":["../../../src/core/rag/query-understanding.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../../src/core/store/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../../src/core/store/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAsf3C,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CA6BzD;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAGvD"}
|
|
@@ -439,6 +439,57 @@ const migrations = [
|
|
|
439
439
|
CREATE INDEX IF NOT EXISTS idx_kusage_action ON knowledge_usage_log(action);
|
|
440
440
|
`,
|
|
441
441
|
},
|
|
442
|
+
{
|
|
443
|
+
version: 12,
|
|
444
|
+
description: "Knowledge Graph — entities, relations, mentions with FTS5 index",
|
|
445
|
+
sql: `
|
|
446
|
+
CREATE TABLE IF NOT EXISTS kg_entities (
|
|
447
|
+
id TEXT PRIMARY KEY,
|
|
448
|
+
name TEXT NOT NULL,
|
|
449
|
+
type TEXT NOT NULL,
|
|
450
|
+
normalized_name TEXT NOT NULL,
|
|
451
|
+
aliases TEXT DEFAULT '[]',
|
|
452
|
+
description TEXT,
|
|
453
|
+
metadata TEXT DEFAULT '{}',
|
|
454
|
+
mention_count INTEGER DEFAULT 0,
|
|
455
|
+
created_at TEXT NOT NULL,
|
|
456
|
+
updated_at TEXT NOT NULL
|
|
457
|
+
);
|
|
458
|
+
|
|
459
|
+
CREATE INDEX IF NOT EXISTS idx_kg_entities_type ON kg_entities(type);
|
|
460
|
+
CREATE INDEX IF NOT EXISTS idx_kg_entities_normalized ON kg_entities(normalized_name);
|
|
461
|
+
|
|
462
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS kg_entities_fts USING fts5(
|
|
463
|
+
name, aliases, description
|
|
464
|
+
);
|
|
465
|
+
|
|
466
|
+
CREATE TABLE IF NOT EXISTS kg_relations (
|
|
467
|
+
id TEXT PRIMARY KEY,
|
|
468
|
+
from_entity_id TEXT NOT NULL REFERENCES kg_entities(id),
|
|
469
|
+
to_entity_id TEXT NOT NULL REFERENCES kg_entities(id),
|
|
470
|
+
relation_type TEXT NOT NULL,
|
|
471
|
+
weight REAL DEFAULT 1.0,
|
|
472
|
+
source_doc_id TEXT,
|
|
473
|
+
created_at TEXT NOT NULL,
|
|
474
|
+
UNIQUE(from_entity_id, to_entity_id, relation_type)
|
|
475
|
+
);
|
|
476
|
+
|
|
477
|
+
CREATE INDEX IF NOT EXISTS idx_kg_relations_from ON kg_relations(from_entity_id);
|
|
478
|
+
CREATE INDEX IF NOT EXISTS idx_kg_relations_to ON kg_relations(to_entity_id);
|
|
479
|
+
|
|
480
|
+
CREATE TABLE IF NOT EXISTS kg_mentions (
|
|
481
|
+
id TEXT PRIMARY KEY,
|
|
482
|
+
entity_id TEXT NOT NULL REFERENCES kg_entities(id),
|
|
483
|
+
doc_id TEXT NOT NULL,
|
|
484
|
+
context TEXT,
|
|
485
|
+
position INTEGER DEFAULT 0,
|
|
486
|
+
created_at TEXT NOT NULL
|
|
487
|
+
);
|
|
488
|
+
|
|
489
|
+
CREATE INDEX IF NOT EXISTS idx_kg_mentions_entity ON kg_mentions(entity_id);
|
|
490
|
+
CREATE INDEX IF NOT EXISTS idx_kg_mentions_doc ON kg_mentions(doc_id);
|
|
491
|
+
`,
|
|
492
|
+
},
|
|
442
493
|
];
|
|
443
494
|
export function runMigrations(db) {
|
|
444
495
|
// Create migrations tracking table
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../../src/core/store/migrations.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../../src/core/store/migrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone-node.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/clone-node.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"clone-node.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/clone-node.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AA2EpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CA4C7E"}
|
|
@@ -4,6 +4,7 @@ import { generateId } from "../../core/utils/id.js";
|
|
|
4
4
|
import { now } from "../../core/utils/time.js";
|
|
5
5
|
import { logger } from "../../core/utils/logger.js";
|
|
6
6
|
import { mcpText, mcpError } from "../response-helpers.js";
|
|
7
|
+
import { indexNodeAsKnowledge } from "../../core/rag/node-indexer.js";
|
|
7
8
|
function cloneSingle(store, source, parentId, timestamp) {
|
|
8
9
|
const clone = {
|
|
9
10
|
id: generateId("node"),
|
|
@@ -77,10 +78,14 @@ export function registerCloneNode(server, store) {
|
|
|
77
78
|
if (deep) {
|
|
78
79
|
const cloned = [];
|
|
79
80
|
cloneDeep(store, id, parentForClone, timestamp, cloned);
|
|
81
|
+
for (const c of cloned) {
|
|
82
|
+
indexNodeAsKnowledge(store.getDb(), c);
|
|
83
|
+
}
|
|
80
84
|
logger.info("tool:clone_node:ok", { sourceId: id, deep: true, clonedCount: cloned.length });
|
|
81
85
|
return mcpText({ ok: true, clonedCount: cloned.length, nodes: cloned });
|
|
82
86
|
}
|
|
83
87
|
const clone = cloneSingle(store, source, parentForClone, timestamp);
|
|
88
|
+
indexNodeAsKnowledge(store.getDb(), clone);
|
|
84
89
|
logger.info("tool:clone_node:ok", { sourceId: id, deep: false, cloneId: clone.id });
|
|
85
90
|
return mcpText({ ok: true, node: clone });
|
|
86
91
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone-node.js","sourceRoot":"","sources":["../../../src/mcp/tools/clone-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAI3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"clone-node.js","sourceRoot":"","sources":["../../../src/mcp/tools/clone-node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-graph.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/import-graph.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"import-graph.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/import-graph.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAQpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAuG/E"}
|
|
@@ -3,6 +3,8 @@ import { readFileSync } from "node:fs";
|
|
|
3
3
|
import { mergeGraph } from "../../core/importer/import-graph.js";
|
|
4
4
|
import { logger } from "../../core/utils/logger.js";
|
|
5
5
|
import { mcpText, mcpError } from "../response-helpers.js";
|
|
6
|
+
import { indexEntitiesForSource } from "../../core/rag/entity-index-hook.js";
|
|
7
|
+
import { indexNodeAsKnowledge } from "../../core/rag/node-indexer.js";
|
|
6
8
|
export function registerImportGraph(server, store) {
|
|
7
9
|
server.tool("import_graph", "Import and merge an exported graph JSON into the local graph without overriding existing data. " +
|
|
8
10
|
"Nodes that already exist locally are kept (local wins). New nodes and edges are added. " +
|
|
@@ -47,9 +49,29 @@ export function registerImportGraph(server, store) {
|
|
|
47
49
|
catch {
|
|
48
50
|
return mcpError("Invalid JSON: failed to parse the graph document.");
|
|
49
51
|
}
|
|
50
|
-
// 3.
|
|
52
|
+
// 3. Capture existing node IDs before merge (to skip re-indexing)
|
|
53
|
+
const activeProject = store.getActiveProject();
|
|
54
|
+
const existingNodeIds = new Set((activeProject?.id
|
|
55
|
+
? store.getDb().prepare("SELECT id FROM nodes WHERE project_id = ?").all(activeProject.id)
|
|
56
|
+
: store.getDb().prepare("SELECT id FROM nodes").all()).map((r) => r.id));
|
|
57
|
+
// 4. Merge
|
|
51
58
|
try {
|
|
52
59
|
const result = mergeGraph(store, parsed, { dryRun: dry_run });
|
|
60
|
+
// Index only newly inserted nodes into Knowledge Store + KG (skip on dry_run)
|
|
61
|
+
if (!dry_run && result.nodesInserted > 0) {
|
|
62
|
+
try {
|
|
63
|
+
for (const node of parsed.nodes) {
|
|
64
|
+
// Only index nodes that were actually inserted (not pre-existing)
|
|
65
|
+
if (!existingNodeIds.has(node.id)) {
|
|
66
|
+
indexNodeAsKnowledge(store.getDb(), node);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
indexEntitiesForSource(store.getDb(), "graph_node");
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
logger.warn("import_graph:indexing-failed");
|
|
73
|
+
}
|
|
74
|
+
}
|
|
53
75
|
logger.info("tool:import_graph:ok", {
|
|
54
76
|
sourceProject: result.sourceProject,
|
|
55
77
|
nodesInserted: result.nodesInserted,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-graph.js","sourceRoot":"","sources":["../../../src/mcp/tools/import-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAEjE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"import-graph.js","sourceRoot":"","sources":["../../../src/mcp/tools/import-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-prd.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/import-prd.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"import-prd.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/import-prd.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAUpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAiF7E"}
|
|
@@ -5,6 +5,7 @@ import { extractEntities } from "../../core/parser/extract.js";
|
|
|
5
5
|
import { convertToGraph } from "../../core/importer/prd-to-graph.js";
|
|
6
6
|
import { KnowledgeStore } from "../../core/store/knowledge-store.js";
|
|
7
7
|
import { indexPrdContent } from "../../core/rag/prd-indexer.js";
|
|
8
|
+
import { indexEntitiesForSource } from "../../core/rag/entity-index-hook.js";
|
|
8
9
|
import { logger } from "../../core/utils/logger.js";
|
|
9
10
|
import { mcpText, mcpError } from "../response-helpers.js";
|
|
10
11
|
export function registerImportPrd(server, store) {
|
|
@@ -46,6 +47,7 @@ export function registerImportPrd(server, store) {
|
|
|
46
47
|
const knowledgeStore = new KnowledgeStore(store.getDb());
|
|
47
48
|
const indexResult = indexPrdContent(knowledgeStore, content, sourceFileName, "ANALYZE");
|
|
48
49
|
knowledgeDocsIndexed = indexResult.documentsIndexed;
|
|
50
|
+
indexEntitiesForSource(store.getDb(), "prd");
|
|
49
51
|
}
|
|
50
52
|
catch (err) {
|
|
51
53
|
logger.warn("tool:import_prd:knowledge_index_failed", { error: String(err) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-prd.js","sourceRoot":"","sources":["../../../src/mcp/tools/import-prd.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAG3B,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,KAAkB;IACrE,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,2IAA2I,EAC3I;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAC1D,KAAK,EAAE,CAAC;aACL,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CAAC,kFAAkF,CAAC;KAChG,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;QAC5B,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,oBAAoB;QACpB,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;QACzE,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAEnD,+BAA+B;QAC/B,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACxD,IAAI,eAAe,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,OAAO,QAAQ,CAAC,SAAS,cAAc,6GAA6G,CAAC,CAAC;QACxJ,CAAC;QAED,8CAA8C;QAC9C,IAAI,OAAO,GAA0D,IAAI,CAAC;QAC1E,IAAI,eAAe,IAAI,KAAK,EAAE,CAAC;YAC7B,OAAO,GAAG,KAAK,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;QACrD,CAAC;QAED,sBAAsB;QACtB,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAE5C,sBAAsB;QACtB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAC3E,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAExF,sCAAsC;QACtC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE/B,mBAAmB;QACnB,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QAE3E,6DAA6D;QAC7D,IAAI,oBAAoB,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YACzD,MAAM,WAAW,GAAG,eAAe,CAAC,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;YACxF,oBAAoB,GAAG,WAAW,CAAC,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"import-prd.js","sourceRoot":"","sources":["../../../src/mcp/tools/import-prd.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journey.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/journey.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"journey.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/journey.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAcpE,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAoK3E"}
|
|
@@ -2,6 +2,7 @@ import { z } from "zod/v4";
|
|
|
2
2
|
import { JourneyStore } from "../../core/journey/journey-store.js";
|
|
3
3
|
import { KnowledgeStore } from "../../core/store/knowledge-store.js";
|
|
4
4
|
import { indexJourneyMaps } from "../../core/rag/journey-indexer.js";
|
|
5
|
+
import { indexEntitiesForSource } from "../../core/rag/entity-index-hook.js";
|
|
5
6
|
import { logger } from "../../core/utils/logger.js";
|
|
6
7
|
import { mcpText, mcpError } from "../response-helpers.js";
|
|
7
8
|
function getJourneyStore(store) {
|
|
@@ -140,6 +141,7 @@ export function registerJourney(server, store) {
|
|
|
140
141
|
case "index": {
|
|
141
142
|
const knowledgeStore = new KnowledgeStore(store.getDb());
|
|
142
143
|
const result = indexJourneyMaps(knowledgeStore, journeyStore);
|
|
144
|
+
indexEntitiesForSource(store.getDb(), "journey");
|
|
143
145
|
logger.info("tool:journey:index", { mapsIndexed: result.mapsIndexed, documentsIndexed: result.documentsIndexed });
|
|
144
146
|
return mcpText({
|
|
145
147
|
action: "index",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journey.js","sourceRoot":"","sources":["../../../src/mcp/tools/journey.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"journey.js","sourceRoot":"","sources":["../../../src/mcp/tools/journey.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manage-skill.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/manage-skill.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"manage-skill.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/manage-skill.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAiBpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAuJ/E"}
|
|
@@ -8,6 +8,7 @@ import { getBuiltInSkills, getSkillsByPhase, getSkillByName } from "../../core/s
|
|
|
8
8
|
import { CustomSkillInputSchema } from "../../schemas/skill.schema.js";
|
|
9
9
|
import { logger } from "../../core/utils/logger.js";
|
|
10
10
|
import { mcpText, mcpError } from "../response-helpers.js";
|
|
11
|
+
import { indexEntitiesForSource } from "../../core/rag/entity-index-hook.js";
|
|
11
12
|
export function registerManageSkill(server, store) {
|
|
12
13
|
server.tool("manage_skill", "Manage skills: list built-in skills, enable/disable, CRUD custom skills.", {
|
|
13
14
|
action: z
|
|
@@ -94,6 +95,7 @@ export function registerManageSkill(server, store) {
|
|
|
94
95
|
return mcpError(`Validation failed: ${JSON.stringify(parsed.error.issues)}`);
|
|
95
96
|
}
|
|
96
97
|
const created = createCustomSkill(db, projectId, parsed.data);
|
|
98
|
+
indexEntitiesForSource(db, "skill");
|
|
97
99
|
logger.info("tool:manage_skill:created", { id: created.id, name: created.name });
|
|
98
100
|
return mcpText(created);
|
|
99
101
|
}
|
|
@@ -102,6 +104,7 @@ export function registerManageSkill(server, store) {
|
|
|
102
104
|
return mcpError("skillId and data required for update");
|
|
103
105
|
}
|
|
104
106
|
const updated = updateCustomSkill(db, projectId, skillId, data);
|
|
107
|
+
indexEntitiesForSource(db, "skill");
|
|
105
108
|
return mcpText(updated);
|
|
106
109
|
}
|
|
107
110
|
case "delete": {
|