fivocell 3.1.0 → 4.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/dist/__tests__/behavior-intelligence-bug.test.d.ts +2 -0
- package/dist/__tests__/behavior-intelligence-bug.test.d.ts.map +1 -0
- package/dist/__tests__/behavior-intelligence-bug.test.js +21 -0
- package/dist/__tests__/behavior-intelligence-bug.test.js.map +1 -0
- package/dist/__tests__/code-scanner-arrow-return-type.test.d.ts +2 -0
- package/dist/__tests__/code-scanner-arrow-return-type.test.d.ts.map +1 -0
- package/dist/__tests__/code-scanner-arrow-return-type.test.js +76 -0
- package/dist/__tests__/code-scanner-arrow-return-type.test.js.map +1 -0
- package/dist/__tests__/code-scanner-blindspot.test.d.ts +2 -0
- package/dist/__tests__/code-scanner-blindspot.test.d.ts.map +1 -0
- package/dist/__tests__/code-scanner-blindspot.test.js +18 -0
- package/dist/__tests__/code-scanner-blindspot.test.js.map +1 -0
- package/dist/__tests__/code-scanner-error-recovery.test.d.ts +2 -0
- package/dist/__tests__/code-scanner-error-recovery.test.d.ts.map +1 -0
- package/dist/__tests__/code-scanner-error-recovery.test.js +21 -0
- package/dist/__tests__/code-scanner-error-recovery.test.js.map +1 -0
- package/dist/__tests__/code-scanner-n1-detection.test.d.ts +2 -0
- package/dist/__tests__/code-scanner-n1-detection.test.d.ts.map +1 -0
- package/dist/__tests__/code-scanner-n1-detection.test.js +113 -0
- package/dist/__tests__/code-scanner-n1-detection.test.js.map +1 -0
- package/dist/__tests__/code-scanner-nesting.test.d.ts +2 -0
- package/dist/__tests__/code-scanner-nesting.test.d.ts.map +1 -0
- package/dist/__tests__/code-scanner-nesting.test.js +113 -0
- package/dist/__tests__/code-scanner-nesting.test.js.map +1 -0
- package/dist/__tests__/code-scanner-null-check.test.d.ts +2 -0
- package/dist/__tests__/code-scanner-null-check.test.d.ts.map +1 -0
- package/dist/__tests__/code-scanner-null-check.test.js +126 -0
- package/dist/__tests__/code-scanner-null-check.test.js.map +1 -0
- package/dist/__tests__/code-scanner-sql-fix.test.d.ts +2 -0
- package/dist/__tests__/code-scanner-sql-fix.test.d.ts.map +1 -0
- package/dist/__tests__/code-scanner-sql-fix.test.js +21 -0
- package/dist/__tests__/code-scanner-sql-fix.test.js.map +1 -0
- package/dist/__tests__/code-scanner-trust-score.test.d.ts +1 -0
- package/dist/__tests__/code-scanner-trust-score.test.d.ts.map +1 -0
- package/dist/__tests__/code-scanner-trust-score.test.js +39 -0
- package/dist/__tests__/code-scanner-trust-score.test.js.map +1 -0
- package/dist/__tests__/code-scanner-validation.test.d.ts +2 -0
- package/dist/__tests__/code-scanner-validation.test.d.ts.map +1 -0
- package/dist/__tests__/code-scanner-validation.test.js +131 -0
- package/dist/__tests__/code-scanner-validation.test.js.map +1 -0
- package/dist/__tests__/community-store.test.d.ts +2 -0
- package/dist/__tests__/community-store.test.d.ts.map +1 -0
- package/dist/__tests__/community-store.test.js +231 -0
- package/dist/__tests__/community-store.test.js.map +1 -0
- package/dist/__tests__/enhanced-blind-spots.test.d.ts +2 -0
- package/dist/__tests__/enhanced-blind-spots.test.d.ts.map +1 -0
- package/dist/__tests__/enhanced-blind-spots.test.js +302 -0
- package/dist/__tests__/enhanced-blind-spots.test.js.map +1 -0
- package/dist/__tests__/knowledge-graph-store.test.d.ts +2 -0
- package/dist/__tests__/knowledge-graph-store.test.d.ts.map +1 -0
- package/dist/__tests__/knowledge-graph-store.test.js +252 -0
- package/dist/__tests__/knowledge-graph-store.test.js.map +1 -0
- package/dist/__tests__/live-watcher.test.d.ts +2 -0
- package/dist/__tests__/live-watcher.test.d.ts.map +1 -0
- package/dist/__tests__/live-watcher.test.js +312 -0
- package/dist/__tests__/live-watcher.test.js.map +1 -0
- package/dist/__tests__/mcp-cell-tools.test.d.ts +2 -0
- package/dist/__tests__/mcp-cell-tools.test.d.ts.map +1 -0
- package/dist/__tests__/mcp-cell-tools.test.js +176 -0
- package/dist/__tests__/mcp-cell-tools.test.js.map +1 -0
- package/dist/__tests__/multi-project.test.d.ts +2 -0
- package/dist/__tests__/multi-project.test.d.ts.map +1 -0
- package/dist/__tests__/multi-project.test.js +145 -0
- package/dist/__tests__/multi-project.test.js.map +1 -0
- package/dist/__tests__/pc-scanner-paths.test.d.ts +2 -0
- package/dist/__tests__/pc-scanner-paths.test.d.ts.map +1 -0
- package/dist/__tests__/pc-scanner-paths.test.js +16 -0
- package/dist/__tests__/pc-scanner-paths.test.js.map +1 -0
- package/dist/__tests__/prompt-builder-realdata.test.d.ts +2 -0
- package/dist/__tests__/prompt-builder-realdata.test.d.ts.map +1 -0
- package/dist/__tests__/prompt-builder-realdata.test.js +94 -0
- package/dist/__tests__/prompt-builder-realdata.test.js.map +1 -0
- package/dist/__tests__/prompt-builder-sessions.test.d.ts +2 -0
- package/dist/__tests__/prompt-builder-sessions.test.d.ts.map +1 -0
- package/dist/__tests__/prompt-builder-sessions.test.js +124 -0
- package/dist/__tests__/prompt-builder-sessions.test.js.map +1 -0
- package/dist/__tests__/security.test.d.ts +1 -0
- package/dist/__tests__/security.test.d.ts.map +1 -0
- package/dist/__tests__/security.test.js +161 -0
- package/dist/__tests__/security.test.js.map +1 -0
- package/dist/__tests__/session-bridge.test.d.ts +2 -0
- package/dist/__tests__/session-bridge.test.d.ts.map +1 -0
- package/dist/__tests__/session-bridge.test.js +158 -0
- package/dist/__tests__/session-bridge.test.js.map +1 -0
- package/dist/__tests__/session-memory-tables.test.d.ts +2 -0
- package/dist/__tests__/session-memory-tables.test.d.ts.map +1 -0
- package/dist/__tests__/session-memory-tables.test.js +169 -0
- package/dist/__tests__/session-memory-tables.test.js.map +1 -0
- package/dist/__tests__/staleness-detection.test.d.ts +2 -0
- package/dist/__tests__/staleness-detection.test.d.ts.map +1 -0
- package/dist/__tests__/staleness-detection.test.js +105 -0
- package/dist/__tests__/staleness-detection.test.js.map +1 -0
- package/dist/__tests__/team-collaboration.test.d.ts +2 -0
- package/dist/__tests__/team-collaboration.test.d.ts.map +1 -0
- package/dist/__tests__/team-collaboration.test.js +224 -0
- package/dist/__tests__/team-collaboration.test.js.map +1 -0
- package/dist/__tests__/tool-specific-format.test.d.ts +2 -0
- package/dist/__tests__/tool-specific-format.test.d.ts.map +1 -0
- package/dist/__tests__/tool-specific-format.test.js +132 -0
- package/dist/__tests__/tool-specific-format.test.js.map +1 -0
- package/dist/__tests__/usage-intelligence-store.test.d.ts +2 -0
- package/dist/__tests__/usage-intelligence-store.test.d.ts.map +1 -0
- package/dist/__tests__/usage-intelligence-store.test.js +266 -0
- package/dist/__tests__/usage-intelligence-store.test.js.map +1 -0
- package/dist/ai-bridge.d.ts +20 -0
- package/dist/ai-bridge.d.ts.map +1 -0
- package/dist/ai-bridge.js +250 -0
- package/dist/ai-bridge.js.map +1 -0
- package/dist/behavior-intelligence.d.ts.map +1 -1
- package/dist/behavior-intelligence.js +12 -1
- package/dist/behavior-intelligence.js.map +1 -1
- package/dist/cli.js +501 -4
- package/dist/cli.js.map +1 -1
- package/dist/code-scanner.d.ts.map +1 -1
- package/dist/code-scanner.js +426 -69
- package/dist/code-scanner.js.map +1 -1
- package/dist/core/community-store.d.ts +128 -0
- package/dist/core/community-store.d.ts.map +1 -0
- package/dist/core/community-store.js +329 -0
- package/dist/core/community-store.js.map +1 -0
- package/dist/core/database.d.ts +0 -3
- package/dist/core/database.d.ts.map +1 -1
- package/dist/core/database.js +287 -15
- package/dist/core/database.js.map +1 -1
- package/dist/core/enhanced-blind-spots.d.ts +27 -0
- package/dist/core/enhanced-blind-spots.d.ts.map +1 -0
- package/dist/core/enhanced-blind-spots.js +591 -0
- package/dist/core/enhanced-blind-spots.js.map +1 -0
- package/dist/core/knowledge-graph-store.d.ts +69 -0
- package/dist/core/knowledge-graph-store.d.ts.map +1 -0
- package/dist/core/knowledge-graph-store.js +269 -0
- package/dist/core/knowledge-graph-store.js.map +1 -0
- package/dist/core/live-watcher.d.ts +52 -0
- package/dist/core/live-watcher.d.ts.map +1 -0
- package/dist/core/live-watcher.js +369 -0
- package/dist/core/live-watcher.js.map +1 -0
- package/dist/core/project-registry.d.ts +24 -0
- package/dist/core/project-registry.d.ts.map +1 -0
- package/dist/core/project-registry.js +70 -0
- package/dist/core/project-registry.js.map +1 -0
- package/dist/core/prompt-builder.d.ts +50 -0
- package/dist/core/prompt-builder.d.ts.map +1 -1
- package/dist/core/prompt-builder.js +533 -79
- package/dist/core/prompt-builder.js.map +1 -1
- package/dist/core/security.d.ts +23 -0
- package/dist/core/security.d.ts.map +1 -0
- package/dist/core/security.js +117 -0
- package/dist/core/security.js.map +1 -0
- package/dist/core/session-memory.d.ts +64 -0
- package/dist/core/session-memory.d.ts.map +1 -1
- package/dist/core/session-memory.js +111 -0
- package/dist/core/session-memory.js.map +1 -1
- package/dist/core/usage-intelligence-store.d.ts +126 -0
- package/dist/core/usage-intelligence-store.d.ts.map +1 -0
- package/dist/core/usage-intelligence-store.js +405 -0
- package/dist/core/usage-intelligence-store.js.map +1 -0
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +936 -17
- package/dist/daemon/server.js.map +1 -1
- package/dist/knowledge-graph-builder.d.ts +16 -0
- package/dist/knowledge-graph-builder.d.ts.map +1 -0
- package/dist/knowledge-graph-builder.js +186 -0
- package/dist/knowledge-graph-builder.js.map +1 -0
- package/dist/pc-scanner.d.ts +1 -0
- package/dist/pc-scanner.d.ts.map +1 -1
- package/dist/pc-scanner.js +58 -30
- package/dist/pc-scanner.js.map +1 -1
- package/dist/stack-detector.d.ts +34 -0
- package/dist/stack-detector.d.ts.map +1 -0
- package/dist/stack-detector.js +471 -0
- package/dist/stack-detector.js.map +1 -0
- package/dist/team-intel.d.ts +31 -0
- package/dist/team-intel.d.ts.map +1 -0
- package/dist/team-intel.js +310 -0
- package/dist/team-intel.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { KnowledgeGraph as FileGraph } from '../knowledge-graph-builder';
|
|
2
|
+
export interface PatternGraphNode {
|
|
3
|
+
id: string;
|
|
4
|
+
type: string;
|
|
5
|
+
label: string;
|
|
6
|
+
weight: number;
|
|
7
|
+
}
|
|
8
|
+
export interface PatternGraphEdge {
|
|
9
|
+
from: string;
|
|
10
|
+
to: string;
|
|
11
|
+
type: string;
|
|
12
|
+
weight: number;
|
|
13
|
+
}
|
|
14
|
+
export interface TechProficiency {
|
|
15
|
+
technology: string;
|
|
16
|
+
category: string;
|
|
17
|
+
signalsCount: number;
|
|
18
|
+
proficiencyScore: number;
|
|
19
|
+
lastSeen: string;
|
|
20
|
+
trend: 'up' | 'down' | 'stable';
|
|
21
|
+
}
|
|
22
|
+
export interface BlastRadius {
|
|
23
|
+
target: string;
|
|
24
|
+
riskScore: number;
|
|
25
|
+
dependents: string[];
|
|
26
|
+
totalFiles: number;
|
|
27
|
+
complexity: number;
|
|
28
|
+
recommendation: string;
|
|
29
|
+
}
|
|
30
|
+
export declare function saveFileKnowledgeGraph(project: string, dirPath: string): FileGraph;
|
|
31
|
+
export declare function getFileKnowledgeGraph(project: string): {
|
|
32
|
+
files: Array<{
|
|
33
|
+
file: string;
|
|
34
|
+
complexity: number;
|
|
35
|
+
importedBy: number;
|
|
36
|
+
isEntryPoint: boolean;
|
|
37
|
+
riskScore: number;
|
|
38
|
+
}>;
|
|
39
|
+
deps: Array<{
|
|
40
|
+
from: string;
|
|
41
|
+
to: string;
|
|
42
|
+
}>;
|
|
43
|
+
stats: {
|
|
44
|
+
totalFiles: number;
|
|
45
|
+
totalDeps: number;
|
|
46
|
+
avgComplexity: number;
|
|
47
|
+
highRiskCount: number;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
export declare function savePatternEntities(project: string, nodes: PatternGraphNode[]): number;
|
|
51
|
+
export declare function savePatternRelationships(project: string, edges: PatternGraphEdge[]): number;
|
|
52
|
+
export declare function getPatternGraphStats(project: string): {
|
|
53
|
+
totalNodes: number;
|
|
54
|
+
totalEdges: number;
|
|
55
|
+
byType: Record<string, number>;
|
|
56
|
+
byRelType: Record<string, number>;
|
|
57
|
+
};
|
|
58
|
+
export declare function saveTechProficiency(project: string, tech: TechProficiency): void;
|
|
59
|
+
export declare function getTechProficiency(project: string): TechProficiency[];
|
|
60
|
+
export declare function computeBlastRadius(project: string, targetFile: string): BlastRadius;
|
|
61
|
+
export declare function getTopBlastRadii(project: string, limit?: number): BlastRadius[];
|
|
62
|
+
export declare function getPredictiveInsights(project: string, limit?: number): Array<{
|
|
63
|
+
type: string;
|
|
64
|
+
target: string;
|
|
65
|
+
score: number;
|
|
66
|
+
recommendation: string;
|
|
67
|
+
createdAt: string;
|
|
68
|
+
}>;
|
|
69
|
+
//# sourceMappingURL=knowledge-graph-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge-graph-store.d.ts","sourceRoot":"","sources":["../../src/core/knowledge-graph-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,269 @@
|
|
|
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.saveFileKnowledgeGraph = saveFileKnowledgeGraph;
|
|
37
|
+
exports.getFileKnowledgeGraph = getFileKnowledgeGraph;
|
|
38
|
+
exports.savePatternEntities = savePatternEntities;
|
|
39
|
+
exports.savePatternRelationships = savePatternRelationships;
|
|
40
|
+
exports.getPatternGraphStats = getPatternGraphStats;
|
|
41
|
+
exports.saveTechProficiency = saveTechProficiency;
|
|
42
|
+
exports.getTechProficiency = getTechProficiency;
|
|
43
|
+
exports.computeBlastRadius = computeBlastRadius;
|
|
44
|
+
exports.getTopBlastRadii = getTopBlastRadii;
|
|
45
|
+
exports.getPredictiveInsights = getPredictiveInsights;
|
|
46
|
+
const database_1 = require("./database");
|
|
47
|
+
const knowledge_graph_builder_1 = require("../knowledge-graph-builder");
|
|
48
|
+
const path = __importStar(require("path"));
|
|
49
|
+
function ensureKGProjectDir(project) {
|
|
50
|
+
return project;
|
|
51
|
+
}
|
|
52
|
+
function saveFileKnowledgeGraph(project, dirPath) {
|
|
53
|
+
const db = (0, database_1.getDb)();
|
|
54
|
+
const graph = (0, knowledge_graph_builder_1.buildKnowledgeGraph)(dirPath);
|
|
55
|
+
db.prepare('DELETE FROM knowledge_graph_files WHERE project = ?').run(project);
|
|
56
|
+
db.prepare('DELETE FROM knowledge_graph_deps WHERE project = ?').run(project);
|
|
57
|
+
const insertFile = db.prepare(`
|
|
58
|
+
INSERT OR REPLACE INTO knowledge_graph_files
|
|
59
|
+
(project, file_path, complexity, import_count, imported_by_count, is_entry_point, risk_score, built_at)
|
|
60
|
+
VALUES (?, ?, ?, ?, ?, ?, 0, datetime('now'))
|
|
61
|
+
`);
|
|
62
|
+
const insertDep = db.prepare(`
|
|
63
|
+
INSERT OR IGNORE INTO knowledge_graph_deps (project, from_file, to_file, built_at)
|
|
64
|
+
VALUES (?, ?, ?, datetime('now'))
|
|
65
|
+
`);
|
|
66
|
+
const insertFiles = db.transaction((nodes) => {
|
|
67
|
+
for (const n of nodes) {
|
|
68
|
+
insertFile.run(project, n.file.split(path.sep).join('/'), n.complexity, n.imports.length, n.importedBy.length, n.isEntryPoint ? 1 : 0);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
const insertDeps = db.transaction((nodes) => {
|
|
72
|
+
for (const n of nodes) {
|
|
73
|
+
for (const dep of n.imports) {
|
|
74
|
+
insertDep.run(project, n.file.split(path.sep).join('/'), dep.split(path.sep).join('/'));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
insertFiles(graph.nodes);
|
|
79
|
+
insertDeps(graph.nodes);
|
|
80
|
+
// Compute risk score = complexity * (importedBy + 1)
|
|
81
|
+
for (const n of graph.nodes) {
|
|
82
|
+
const dependents = n.importedBy.length;
|
|
83
|
+
const risk = Math.min(100, Math.round(n.complexity * (dependents + 1) / 2));
|
|
84
|
+
db.prepare('UPDATE knowledge_graph_files SET risk_score = ? WHERE project = ? AND file_path = ?')
|
|
85
|
+
.run(risk, project, n.file.split(path.sep).join('/'));
|
|
86
|
+
}
|
|
87
|
+
return graph;
|
|
88
|
+
}
|
|
89
|
+
function getFileKnowledgeGraph(project) {
|
|
90
|
+
const db = (0, database_1.getDb)();
|
|
91
|
+
const files = db.prepare(`
|
|
92
|
+
SELECT file_path, complexity, imported_by_count, is_entry_point, risk_score
|
|
93
|
+
FROM knowledge_graph_files WHERE project = ? ORDER BY risk_score DESC, complexity DESC
|
|
94
|
+
`).all(project);
|
|
95
|
+
const deps = db.prepare(`
|
|
96
|
+
SELECT from_file, to_file FROM knowledge_graph_deps WHERE project = ?
|
|
97
|
+
`).all(project);
|
|
98
|
+
const totalComplexity = files.reduce((s, f) => s + f.complexity, 0);
|
|
99
|
+
const highRisk = files.filter(f => f.risk_score >= 50).length;
|
|
100
|
+
return {
|
|
101
|
+
files: files.map(f => ({
|
|
102
|
+
file: f.file_path,
|
|
103
|
+
complexity: f.complexity,
|
|
104
|
+
importedBy: f.imported_by_count,
|
|
105
|
+
isEntryPoint: f.is_entry_point === 1,
|
|
106
|
+
riskScore: f.risk_score,
|
|
107
|
+
})),
|
|
108
|
+
deps: deps.map(d => ({ from: d.from_file, to: d.to_file })),
|
|
109
|
+
stats: {
|
|
110
|
+
totalFiles: files.length,
|
|
111
|
+
totalDeps: deps.length,
|
|
112
|
+
avgComplexity: files.length > 0 ? Math.round(totalComplexity / files.length) : 0,
|
|
113
|
+
highRiskCount: highRisk,
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
function savePatternEntities(project, nodes) {
|
|
118
|
+
const db = (0, database_1.getDb)();
|
|
119
|
+
const stmt = db.prepare(`
|
|
120
|
+
INSERT OR REPLACE INTO graph_entities (entity_name, entity_type, pattern_id, weight, built_at)
|
|
121
|
+
VALUES (?, ?, ?, ?, datetime('now'))
|
|
122
|
+
`);
|
|
123
|
+
let count = 0;
|
|
124
|
+
const tx = db.transaction((ns) => {
|
|
125
|
+
for (const n of ns) {
|
|
126
|
+
stmt.run(n.id, n.type, n.id, n.weight);
|
|
127
|
+
count++;
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
tx(nodes);
|
|
131
|
+
return count;
|
|
132
|
+
}
|
|
133
|
+
function savePatternRelationships(project, edges) {
|
|
134
|
+
const db = (0, database_1.getDb)();
|
|
135
|
+
const stmt = db.prepare(`
|
|
136
|
+
INSERT OR REPLACE INTO graph_relationships (from_pattern, to_pattern, rel_type, strength, built_at)
|
|
137
|
+
VALUES (?, ?, ?, ?, datetime('now'))
|
|
138
|
+
`);
|
|
139
|
+
let count = 0;
|
|
140
|
+
const tx = db.transaction((es) => {
|
|
141
|
+
for (const e of es) {
|
|
142
|
+
stmt.run(e.from, e.to, e.type, e.weight);
|
|
143
|
+
count++;
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
tx(edges);
|
|
147
|
+
return count;
|
|
148
|
+
}
|
|
149
|
+
function getPatternGraphStats(project) {
|
|
150
|
+
const db = (0, database_1.getDb)();
|
|
151
|
+
const nodes = db.prepare('SELECT entity_type, COUNT(*) as c FROM graph_entities GROUP BY entity_type').all();
|
|
152
|
+
const edges = db.prepare('SELECT rel_type, COUNT(*) as c FROM graph_relationships GROUP BY rel_type').all();
|
|
153
|
+
return {
|
|
154
|
+
totalNodes: nodes.reduce((s, n) => s + n.c, 0),
|
|
155
|
+
totalEdges: edges.reduce((s, e) => s + e.c, 0),
|
|
156
|
+
byType: Object.fromEntries(nodes.map(n => [n.entity_type, n.c])),
|
|
157
|
+
byRelType: Object.fromEntries(edges.map(e => [e.rel_type, e.c])),
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
function saveTechProficiency(project, tech) {
|
|
161
|
+
const db = (0, database_1.getDb)();
|
|
162
|
+
db.prepare(`
|
|
163
|
+
INSERT INTO tech_proficiency (project, technology, category, signals_count, proficiency_score, last_seen, trend)
|
|
164
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
165
|
+
ON CONFLICT(project, technology) DO UPDATE SET
|
|
166
|
+
category = excluded.category,
|
|
167
|
+
signals_count = tech_proficiency.signals_count + excluded.signals_count,
|
|
168
|
+
proficiency_score = MAX(tech_proficiency.proficiency_score, excluded.proficiency_score),
|
|
169
|
+
last_seen = excluded.last_seen,
|
|
170
|
+
trend = excluded.trend
|
|
171
|
+
`).run(project, tech.technology, tech.category, tech.signalsCount, tech.proficiencyScore, tech.lastSeen, tech.trend);
|
|
172
|
+
}
|
|
173
|
+
function getTechProficiency(project) {
|
|
174
|
+
const db = (0, database_1.getDb)();
|
|
175
|
+
const rows = db.prepare(`
|
|
176
|
+
SELECT technology, category, signals_count, proficiency_score, last_seen, trend
|
|
177
|
+
FROM tech_proficiency WHERE project = ? ORDER BY proficiency_score DESC
|
|
178
|
+
`).all(project);
|
|
179
|
+
return rows.map(r => ({
|
|
180
|
+
technology: r.technology,
|
|
181
|
+
category: r.category,
|
|
182
|
+
signalsCount: r.signals_count,
|
|
183
|
+
proficiencyScore: r.proficiency_score,
|
|
184
|
+
lastSeen: r.last_seen,
|
|
185
|
+
trend: r.trend,
|
|
186
|
+
}));
|
|
187
|
+
}
|
|
188
|
+
// Phase 3.5: Blast radius — given a risky file, find all dependents
|
|
189
|
+
function computeBlastRadius(project, targetFile) {
|
|
190
|
+
const db = (0, database_1.getDb)();
|
|
191
|
+
const target = targetFile.split(path.sep).join('/');
|
|
192
|
+
// BFS to find all transitive dependents
|
|
193
|
+
const visited = new Set();
|
|
194
|
+
const queue = [target];
|
|
195
|
+
const dependents = new Set();
|
|
196
|
+
while (queue.length > 0) {
|
|
197
|
+
const current = queue.shift();
|
|
198
|
+
if (visited.has(current))
|
|
199
|
+
continue;
|
|
200
|
+
visited.add(current);
|
|
201
|
+
const rows = db.prepare(`
|
|
202
|
+
SELECT from_file FROM knowledge_graph_deps WHERE project = ? AND to_file = ?
|
|
203
|
+
`).all(project, current.split(path.sep).join('/'));
|
|
204
|
+
for (const r of rows) {
|
|
205
|
+
if (!visited.has(r.from_file)) {
|
|
206
|
+
dependents.add(r.from_file);
|
|
207
|
+
queue.push(r.from_file);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
const fileRow = db.prepare(`
|
|
212
|
+
SELECT complexity, risk_score FROM knowledge_graph_files WHERE project = ? AND file_path = ?
|
|
213
|
+
`).get(project, target);
|
|
214
|
+
const complexity = fileRow?.complexity || 0;
|
|
215
|
+
const totalDependents = dependents.size;
|
|
216
|
+
// Blast radius = complexity * log(dependents + 1), capped at 100
|
|
217
|
+
const blast = Math.min(100, Math.round(complexity * Math.log(totalDependents + 1)));
|
|
218
|
+
let recommendation = '';
|
|
219
|
+
if (blast >= 75) {
|
|
220
|
+
recommendation = `CRITICAL: changes to ${target} will impact ${totalDependents} files. Add regression tests before editing.`;
|
|
221
|
+
}
|
|
222
|
+
else if (blast >= 50) {
|
|
223
|
+
recommendation = `HIGH RISK: ${totalDependents} dependents. Test all of them after changes.`;
|
|
224
|
+
}
|
|
225
|
+
else if (blast >= 25) {
|
|
226
|
+
recommendation = `MODERATE: ${totalDependents} dependents. Spot-check related code.`;
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
recommendation = `LOW RISK: ${totalDependents} dependents. Safe to refactor.`;
|
|
230
|
+
}
|
|
231
|
+
// Save insight
|
|
232
|
+
db.prepare(`
|
|
233
|
+
INSERT INTO predictive_insights (project, insight_type, target, score, recommendation)
|
|
234
|
+
VALUES (?, 'blast_radius', ?, ?, ?)
|
|
235
|
+
`).run(project, target, blast, recommendation);
|
|
236
|
+
return {
|
|
237
|
+
target,
|
|
238
|
+
riskScore: blast,
|
|
239
|
+
dependents: Array.from(dependents).slice(0, 20),
|
|
240
|
+
totalFiles: totalDependents,
|
|
241
|
+
complexity,
|
|
242
|
+
recommendation,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
function getTopBlastRadii(project, limit = 5) {
|
|
246
|
+
const db = (0, database_1.getDb)();
|
|
247
|
+
const rows = db.prepare(`
|
|
248
|
+
SELECT file_path FROM knowledge_graph_files
|
|
249
|
+
WHERE project = ? AND risk_score >= 50
|
|
250
|
+
ORDER BY risk_score DESC LIMIT ?
|
|
251
|
+
`).all(project, limit);
|
|
252
|
+
return rows.map(r => computeBlastRadius(project, r.file_path));
|
|
253
|
+
}
|
|
254
|
+
function getPredictiveInsights(project, limit = 20) {
|
|
255
|
+
const db = (0, database_1.getDb)();
|
|
256
|
+
const rows = db.prepare(`
|
|
257
|
+
SELECT insight_type, target, score, recommendation, created_at
|
|
258
|
+
FROM predictive_insights WHERE project = ?
|
|
259
|
+
ORDER BY score DESC, created_at DESC LIMIT ?
|
|
260
|
+
`).all(project, limit);
|
|
261
|
+
return rows.map(r => ({
|
|
262
|
+
type: r.insight_type,
|
|
263
|
+
target: r.target,
|
|
264
|
+
score: r.score,
|
|
265
|
+
recommendation: r.recommendation,
|
|
266
|
+
createdAt: r.created_at,
|
|
267
|
+
}));
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=knowledge-graph-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge-graph-store.js","sourceRoot":"","sources":["../../src/core/knowledge-graph-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export type LiveEventType = 'file_save' | 'file_create' | 'file_delete' | 'file_rename' | 'git_commit' | 'package_change';
|
|
2
|
+
export interface LiveEvent {
|
|
3
|
+
id: number;
|
|
4
|
+
project: string;
|
|
5
|
+
eventType: LiveEventType;
|
|
6
|
+
filePath: string;
|
|
7
|
+
metadata: Record<string, unknown>;
|
|
8
|
+
createdAt: string;
|
|
9
|
+
}
|
|
10
|
+
export interface WatcherInfo {
|
|
11
|
+
project: string;
|
|
12
|
+
dirPath: string;
|
|
13
|
+
active: boolean;
|
|
14
|
+
eventCount: number;
|
|
15
|
+
lastEventAt: string;
|
|
16
|
+
startedAt: string;
|
|
17
|
+
}
|
|
18
|
+
export interface RefreshTrigger {
|
|
19
|
+
type: 'manual' | 'stale' | 'scheduled' | 'file_change' | 'package_change';
|
|
20
|
+
project: string;
|
|
21
|
+
success: boolean;
|
|
22
|
+
durationMs: number;
|
|
23
|
+
details: string;
|
|
24
|
+
createdAt: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function startWatcher(project: string, dirPath: string): {
|
|
27
|
+
started: boolean;
|
|
28
|
+
message: string;
|
|
29
|
+
};
|
|
30
|
+
export declare function stopWatcher(project: string): {
|
|
31
|
+
stopped: boolean;
|
|
32
|
+
message: string;
|
|
33
|
+
};
|
|
34
|
+
export declare function getWatcherStatus(project: string): WatcherInfo | null;
|
|
35
|
+
export declare function getActiveWatchers(): WatcherInfo[];
|
|
36
|
+
export declare function getLiveEvents(project: string, limit?: number, eventType?: LiveEventType): LiveEvent[];
|
|
37
|
+
export declare function logRefresh(trigger: RefreshTrigger): {
|
|
38
|
+
id: number;
|
|
39
|
+
};
|
|
40
|
+
export declare function getRefreshHistory(project: string, limit?: number): RefreshTrigger[];
|
|
41
|
+
export interface AutoRefreshCheck {
|
|
42
|
+
needsRefresh: boolean;
|
|
43
|
+
reason: string;
|
|
44
|
+
dataAge: string;
|
|
45
|
+
recommendedAction: 'none' | 're-evaluate' | 'full-rescan';
|
|
46
|
+
}
|
|
47
|
+
export declare function checkIfNeedsRefresh(project: string): AutoRefreshCheck;
|
|
48
|
+
export declare function performAutoRefresh(project: string, force?: boolean): RefreshTrigger;
|
|
49
|
+
export declare function cleanupOldEvents(project: string, keepCount?: number): {
|
|
50
|
+
deleted: number;
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=live-watcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-watcher.d.ts","sourceRoot":"","sources":["../../src/core/live-watcher.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,aAAa,GAAG,aAAa,GAAG,aAAa,GAAG,YAAY,GAAG,gBAAgB,CAAC;AAE1H,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,WAAW,GAAG,aAAa,GAAG,gBAAgB,CAAC;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAwED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAuFpG;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAoBlF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAepE;AAED,wBAAgB,iBAAiB,IAAI,WAAW,EAAE,CAcjD;AAID,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAK,EAAE,SAAS,CAAC,EAAE,aAAa,GAAG,SAAS,EAAE,CAmBjG;AASD,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAOlE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,cAAc,EAAE,CAc/E;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,GAAG,aAAa,GAAG,aAAa,CAAC;CAC3D;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAqBrE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,cAAc,CA0BjF;AAID,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAStF"}
|