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.
Files changed (78) hide show
  1. package/CONTRIBUTING.md +127 -0
  2. package/LICENSE +21 -0
  3. package/README.md +305 -0
  4. package/dist/index.js +38016 -0
  5. package/esbuild.config.js +26 -0
  6. package/package.json +63 -0
  7. package/src/cli/commands.ts +382 -0
  8. package/src/core/adr-exporter.ts +253 -0
  9. package/src/core/architecture/architecture-enforcement.ts +228 -0
  10. package/src/core/architecture/duplicate-detector.ts +288 -0
  11. package/src/core/architecture/index.ts +6 -0
  12. package/src/core/architecture/pattern-learner.ts +306 -0
  13. package/src/core/architecture/pattern-library.ts +403 -0
  14. package/src/core/architecture/pattern-validator.ts +324 -0
  15. package/src/core/change-intelligence/bug-correlator.ts +444 -0
  16. package/src/core/change-intelligence/change-intelligence.ts +221 -0
  17. package/src/core/change-intelligence/change-tracker.ts +334 -0
  18. package/src/core/change-intelligence/fix-suggester.ts +340 -0
  19. package/src/core/change-intelligence/index.ts +5 -0
  20. package/src/core/code-verifier.ts +843 -0
  21. package/src/core/confidence/confidence-scorer.ts +251 -0
  22. package/src/core/confidence/conflict-checker.ts +289 -0
  23. package/src/core/confidence/index.ts +5 -0
  24. package/src/core/confidence/source-tracker.ts +263 -0
  25. package/src/core/confidence/warning-detector.ts +241 -0
  26. package/src/core/context-rot/compaction.ts +284 -0
  27. package/src/core/context-rot/context-health.ts +243 -0
  28. package/src/core/context-rot/context-rot-prevention.ts +213 -0
  29. package/src/core/context-rot/critical-context.ts +221 -0
  30. package/src/core/context-rot/drift-detector.ts +255 -0
  31. package/src/core/context-rot/index.ts +7 -0
  32. package/src/core/context.ts +263 -0
  33. package/src/core/decision-extractor.ts +339 -0
  34. package/src/core/decisions.ts +69 -0
  35. package/src/core/deja-vu.ts +421 -0
  36. package/src/core/engine.ts +1455 -0
  37. package/src/core/feature-context.ts +726 -0
  38. package/src/core/ghost-mode.ts +412 -0
  39. package/src/core/learning.ts +485 -0
  40. package/src/core/living-docs/activity-tracker.ts +296 -0
  41. package/src/core/living-docs/architecture-generator.ts +428 -0
  42. package/src/core/living-docs/changelog-generator.ts +348 -0
  43. package/src/core/living-docs/component-generator.ts +230 -0
  44. package/src/core/living-docs/doc-engine.ts +110 -0
  45. package/src/core/living-docs/doc-validator.ts +282 -0
  46. package/src/core/living-docs/index.ts +8 -0
  47. package/src/core/project-manager.ts +297 -0
  48. package/src/core/summarizer.ts +267 -0
  49. package/src/core/test-awareness/change-validator.ts +499 -0
  50. package/src/core/test-awareness/index.ts +5 -0
  51. package/src/index.ts +49 -0
  52. package/src/indexing/ast.ts +563 -0
  53. package/src/indexing/embeddings.ts +85 -0
  54. package/src/indexing/indexer.ts +245 -0
  55. package/src/indexing/watcher.ts +78 -0
  56. package/src/server/gateways/aggregator.ts +374 -0
  57. package/src/server/gateways/index.ts +473 -0
  58. package/src/server/gateways/memory-ghost.ts +343 -0
  59. package/src/server/gateways/memory-query.ts +452 -0
  60. package/src/server/gateways/memory-record.ts +346 -0
  61. package/src/server/gateways/memory-review.ts +410 -0
  62. package/src/server/gateways/memory-status.ts +517 -0
  63. package/src/server/gateways/memory-verify.ts +392 -0
  64. package/src/server/gateways/router.ts +434 -0
  65. package/src/server/gateways/types.ts +610 -0
  66. package/src/server/mcp.ts +154 -0
  67. package/src/server/resources.ts +85 -0
  68. package/src/server/tools.ts +2261 -0
  69. package/src/storage/database.ts +262 -0
  70. package/src/storage/tier1.ts +135 -0
  71. package/src/storage/tier2.ts +764 -0
  72. package/src/storage/tier3.ts +123 -0
  73. package/src/types/documentation.ts +619 -0
  74. package/src/types/index.ts +222 -0
  75. package/src/utils/config.ts +193 -0
  76. package/src/utils/files.ts +117 -0
  77. package/src/utils/time.ts +37 -0
  78. 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
+ }