neuronlayer 0.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/CONTRIBUTING.md +127 -0
- package/LICENSE +21 -0
- package/README.md +305 -0
- package/dist/index.js +38016 -0
- package/esbuild.config.js +26 -0
- package/package.json +63 -0
- package/src/cli/commands.ts +382 -0
- package/src/core/adr-exporter.ts +253 -0
- package/src/core/architecture/architecture-enforcement.ts +228 -0
- package/src/core/architecture/duplicate-detector.ts +288 -0
- package/src/core/architecture/index.ts +6 -0
- package/src/core/architecture/pattern-learner.ts +306 -0
- package/src/core/architecture/pattern-library.ts +403 -0
- package/src/core/architecture/pattern-validator.ts +324 -0
- package/src/core/change-intelligence/bug-correlator.ts +444 -0
- package/src/core/change-intelligence/change-intelligence.ts +221 -0
- package/src/core/change-intelligence/change-tracker.ts +334 -0
- package/src/core/change-intelligence/fix-suggester.ts +340 -0
- package/src/core/change-intelligence/index.ts +5 -0
- package/src/core/code-verifier.ts +843 -0
- package/src/core/confidence/confidence-scorer.ts +251 -0
- package/src/core/confidence/conflict-checker.ts +289 -0
- package/src/core/confidence/index.ts +5 -0
- package/src/core/confidence/source-tracker.ts +263 -0
- package/src/core/confidence/warning-detector.ts +241 -0
- package/src/core/context-rot/compaction.ts +284 -0
- package/src/core/context-rot/context-health.ts +243 -0
- package/src/core/context-rot/context-rot-prevention.ts +213 -0
- package/src/core/context-rot/critical-context.ts +221 -0
- package/src/core/context-rot/drift-detector.ts +255 -0
- package/src/core/context-rot/index.ts +7 -0
- package/src/core/context.ts +263 -0
- package/src/core/decision-extractor.ts +339 -0
- package/src/core/decisions.ts +69 -0
- package/src/core/deja-vu.ts +421 -0
- package/src/core/engine.ts +1455 -0
- package/src/core/feature-context.ts +726 -0
- package/src/core/ghost-mode.ts +412 -0
- package/src/core/learning.ts +485 -0
- package/src/core/living-docs/activity-tracker.ts +296 -0
- package/src/core/living-docs/architecture-generator.ts +428 -0
- package/src/core/living-docs/changelog-generator.ts +348 -0
- package/src/core/living-docs/component-generator.ts +230 -0
- package/src/core/living-docs/doc-engine.ts +110 -0
- package/src/core/living-docs/doc-validator.ts +282 -0
- package/src/core/living-docs/index.ts +8 -0
- package/src/core/project-manager.ts +297 -0
- package/src/core/summarizer.ts +267 -0
- package/src/core/test-awareness/change-validator.ts +499 -0
- package/src/core/test-awareness/index.ts +5 -0
- package/src/index.ts +49 -0
- package/src/indexing/ast.ts +563 -0
- package/src/indexing/embeddings.ts +85 -0
- package/src/indexing/indexer.ts +245 -0
- package/src/indexing/watcher.ts +78 -0
- package/src/server/gateways/aggregator.ts +374 -0
- package/src/server/gateways/index.ts +473 -0
- package/src/server/gateways/memory-ghost.ts +343 -0
- package/src/server/gateways/memory-query.ts +452 -0
- package/src/server/gateways/memory-record.ts +346 -0
- package/src/server/gateways/memory-review.ts +410 -0
- package/src/server/gateways/memory-status.ts +517 -0
- package/src/server/gateways/memory-verify.ts +392 -0
- package/src/server/gateways/router.ts +434 -0
- package/src/server/gateways/types.ts +610 -0
- package/src/server/mcp.ts +154 -0
- package/src/server/resources.ts +85 -0
- package/src/server/tools.ts +2261 -0
- package/src/storage/database.ts +262 -0
- package/src/storage/tier1.ts +135 -0
- package/src/storage/tier2.ts +764 -0
- package/src/storage/tier3.ts +123 -0
- package/src/types/documentation.ts +619 -0
- package/src/types/index.ts +222 -0
- package/src/utils/config.ts +193 -0
- package/src/utils/files.ts +117 -0
- package/src/utils/time.ts +37 -0
- package/src/utils/tokens.ts +52 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
|
|
3
|
+
interface ArchivedSession {
|
|
4
|
+
id: string;
|
|
5
|
+
startTime: number;
|
|
6
|
+
endTime: number | null;
|
|
7
|
+
filesViewed: string[];
|
|
8
|
+
summary: string | null;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface ArchiveSearchResult {
|
|
12
|
+
type: 'session';
|
|
13
|
+
summary: string;
|
|
14
|
+
relevance: number;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export class Tier3Storage {
|
|
18
|
+
private db: Database.Database;
|
|
19
|
+
|
|
20
|
+
constructor(db: Database.Database) {
|
|
21
|
+
this.db = db;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Archive a session
|
|
25
|
+
archiveSession(
|
|
26
|
+
id: string,
|
|
27
|
+
startTime: Date,
|
|
28
|
+
endTime: Date | null,
|
|
29
|
+
filesViewed: string[],
|
|
30
|
+
summary: string | null
|
|
31
|
+
): void {
|
|
32
|
+
const stmt = this.db.prepare(`
|
|
33
|
+
INSERT INTO sessions (id, start_time, end_time, files_viewed, summary)
|
|
34
|
+
VALUES (?, ?, ?, ?, ?)
|
|
35
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
36
|
+
end_time = excluded.end_time,
|
|
37
|
+
files_viewed = excluded.files_viewed,
|
|
38
|
+
summary = excluded.summary
|
|
39
|
+
`);
|
|
40
|
+
stmt.run(
|
|
41
|
+
id,
|
|
42
|
+
Math.floor(startTime.getTime() / 1000),
|
|
43
|
+
endTime ? Math.floor(endTime.getTime() / 1000) : null,
|
|
44
|
+
JSON.stringify(filesViewed),
|
|
45
|
+
summary
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Get recent sessions
|
|
50
|
+
getRecentSessions(limit: number = 10): ArchivedSession[] {
|
|
51
|
+
const stmt = this.db.prepare(`
|
|
52
|
+
SELECT id, start_time, end_time, files_viewed, summary
|
|
53
|
+
FROM sessions
|
|
54
|
+
ORDER BY start_time DESC
|
|
55
|
+
LIMIT ?
|
|
56
|
+
`);
|
|
57
|
+
const rows = stmt.all(limit) as Array<{
|
|
58
|
+
id: string;
|
|
59
|
+
start_time: number;
|
|
60
|
+
end_time: number | null;
|
|
61
|
+
files_viewed: string;
|
|
62
|
+
summary: string | null;
|
|
63
|
+
}>;
|
|
64
|
+
|
|
65
|
+
return rows.map(row => ({
|
|
66
|
+
id: row.id,
|
|
67
|
+
startTime: row.start_time,
|
|
68
|
+
endTime: row.end_time,
|
|
69
|
+
filesViewed: JSON.parse(row.files_viewed || '[]'),
|
|
70
|
+
summary: row.summary
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Search archived content (basic keyword search for now)
|
|
75
|
+
searchRelevant(query: string, limit: number = 3): ArchiveSearchResult[] {
|
|
76
|
+
// Simple keyword search in session summaries
|
|
77
|
+
const keywords = query.toLowerCase().split(/\s+/).filter(k => k.length > 2);
|
|
78
|
+
|
|
79
|
+
if (keywords.length === 0) {
|
|
80
|
+
return [];
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const sessions = this.getRecentSessions(50);
|
|
84
|
+
const results: ArchiveSearchResult[] = [];
|
|
85
|
+
|
|
86
|
+
for (const session of sessions) {
|
|
87
|
+
if (!session.summary) continue;
|
|
88
|
+
|
|
89
|
+
const summaryLower = session.summary.toLowerCase();
|
|
90
|
+
let matchCount = 0;
|
|
91
|
+
|
|
92
|
+
for (const keyword of keywords) {
|
|
93
|
+
if (summaryLower.includes(keyword)) {
|
|
94
|
+
matchCount++;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (matchCount > 0) {
|
|
99
|
+
results.push({
|
|
100
|
+
type: 'session',
|
|
101
|
+
summary: session.summary,
|
|
102
|
+
relevance: matchCount / keywords.length
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Sort by relevance and return top results
|
|
108
|
+
results.sort((a, b) => b.relevance - a.relevance);
|
|
109
|
+
return results.slice(0, limit);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Clean up old sessions (keep last N)
|
|
113
|
+
cleanup(keepCount: number = 100): number {
|
|
114
|
+
const stmt = this.db.prepare(`
|
|
115
|
+
DELETE FROM sessions
|
|
116
|
+
WHERE id NOT IN (
|
|
117
|
+
SELECT id FROM sessions ORDER BY start_time DESC LIMIT ?
|
|
118
|
+
)
|
|
119
|
+
`);
|
|
120
|
+
const result = stmt.run(keepCount);
|
|
121
|
+
return result.changes;
|
|
122
|
+
}
|
|
123
|
+
}
|