@romandp/context-memory-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.
Files changed (91) hide show
  1. package/README.md +454 -0
  2. package/bin/mcp-memory.js +306 -0
  3. package/dist/config/paths.d.ts +10 -0
  4. package/dist/config/paths.d.ts.map +1 -0
  5. package/dist/config/paths.js +41 -0
  6. package/dist/config/paths.js.map +1 -0
  7. package/dist/db/init.d.ts +6 -0
  8. package/dist/db/init.d.ts.map +1 -0
  9. package/dist/db/init.js +37 -0
  10. package/dist/db/init.js.map +1 -0
  11. package/dist/db/migrations/runner.d.ts +9 -0
  12. package/dist/db/migrations/runner.d.ts.map +1 -0
  13. package/dist/db/migrations/runner.js +285 -0
  14. package/dist/db/migrations/runner.js.map +1 -0
  15. package/dist/db/schema.d.ts +51 -0
  16. package/dist/db/schema.d.ts.map +1 -0
  17. package/dist/db/schema.js +496 -0
  18. package/dist/db/schema.js.map +1 -0
  19. package/dist/http/routes.d.ts +3 -0
  20. package/dist/http/routes.d.ts.map +1 -0
  21. package/dist/http/routes.js +968 -0
  22. package/dist/http/routes.js.map +1 -0
  23. package/dist/http/server.d.ts +5 -0
  24. package/dist/http/server.d.ts.map +1 -0
  25. package/dist/http/server.js +45 -0
  26. package/dist/http/server.js.map +1 -0
  27. package/dist/http/swagger.d.ts +2 -0
  28. package/dist/http/swagger.d.ts.map +1 -0
  29. package/dist/http/swagger.js +101 -0
  30. package/dist/http/swagger.js.map +1 -0
  31. package/dist/index.d.ts +2 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +139 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/memory/budget.d.ts +22 -0
  36. package/dist/memory/budget.d.ts.map +1 -0
  37. package/dist/memory/budget.js +51 -0
  38. package/dist/memory/budget.js.map +1 -0
  39. package/dist/memory/facts.d.ts +3 -0
  40. package/dist/memory/facts.d.ts.map +1 -0
  41. package/dist/memory/facts.js +63 -0
  42. package/dist/memory/facts.js.map +1 -0
  43. package/dist/memory/rebuild.d.ts +4 -0
  44. package/dist/memory/rebuild.d.ts.map +1 -0
  45. package/dist/memory/rebuild.js +31 -0
  46. package/dist/memory/rebuild.js.map +1 -0
  47. package/dist/memory/response.d.ts +11 -0
  48. package/dist/memory/response.d.ts.map +1 -0
  49. package/dist/memory/response.js +20 -0
  50. package/dist/memory/response.js.map +1 -0
  51. package/dist/memory/summary.d.ts +3 -0
  52. package/dist/memory/summary.d.ts.map +1 -0
  53. package/dist/memory/summary.js +67 -0
  54. package/dist/memory/summary.js.map +1 -0
  55. package/dist/memory/toon.d.ts +20 -0
  56. package/dist/memory/toon.d.ts.map +1 -0
  57. package/dist/memory/toon.js +102 -0
  58. package/dist/memory/toon.js.map +1 -0
  59. package/dist/memory/view.d.ts +4 -0
  60. package/dist/memory/view.d.ts.map +1 -0
  61. package/dist/memory/view.js +7 -0
  62. package/dist/memory/view.js.map +1 -0
  63. package/dist/server/setup.d.ts +9 -0
  64. package/dist/server/setup.d.ts.map +1 -0
  65. package/dist/server/setup.js +291 -0
  66. package/dist/server/setup.js.map +1 -0
  67. package/dist/tools/audit.d.ts +2 -0
  68. package/dist/tools/audit.d.ts.map +1 -0
  69. package/dist/tools/audit.js +22 -0
  70. package/dist/tools/audit.js.map +1 -0
  71. package/dist/tools/context.d.ts +5 -0
  72. package/dist/tools/context.d.ts.map +1 -0
  73. package/dist/tools/context.js +104 -0
  74. package/dist/tools/context.js.map +1 -0
  75. package/dist/tools/entry.d.ts +9 -0
  76. package/dist/tools/entry.d.ts.map +1 -0
  77. package/dist/tools/entry.js +214 -0
  78. package/dist/tools/entry.js.map +1 -0
  79. package/dist/tools/project.d.ts +4 -0
  80. package/dist/tools/project.d.ts.map +1 -0
  81. package/dist/tools/project.js +54 -0
  82. package/dist/tools/project.js.map +1 -0
  83. package/dist/tools/task.d.ts +4 -0
  84. package/dist/tools/task.d.ts.map +1 -0
  85. package/dist/tools/task.js +49 -0
  86. package/dist/tools/task.js.map +1 -0
  87. package/dist/types/context.d.ts +139 -0
  88. package/dist/types/context.d.ts.map +1 -0
  89. package/dist/types/context.js +2 -0
  90. package/dist/types/context.js.map +1 -0
  91. package/package.json +68 -0
@@ -0,0 +1,139 @@
1
+ export type ProjectStatus = 'active' | 'archived' | 'completed';
2
+ export type SddSection = 'plan' | 'design' | 'tasks' | 'general';
3
+ export type EntryStatus = 'draft' | 'review' | 'done';
4
+ export type TaskStatus = 'pending' | 'in_progress' | 'completed' | 'cancelled';
5
+ export type TaskPriority = 'low' | 'medium' | 'high' | 'critical';
6
+ export type ClassifiableType = 'project' | 'entry' | 'task';
7
+ export type AuditAction = 'created' | 'updated' | 'deleted';
8
+ export type AuditEntityType = 'entry' | 'task';
9
+ export interface Project {
10
+ id: string;
11
+ name: string;
12
+ description?: string;
13
+ status: ProjectStatus;
14
+ created_at: string;
15
+ updated_at: string;
16
+ }
17
+ export interface SddEntry {
18
+ id: string;
19
+ project_id: string;
20
+ section: SddSection;
21
+ title: string;
22
+ content: string;
23
+ status: EntryStatus;
24
+ parent_id?: string;
25
+ metadata?: Record<string, unknown>;
26
+ created_at: string;
27
+ updated_at: string;
28
+ }
29
+ export interface Task {
30
+ id: string;
31
+ project_id: string;
32
+ sdd_entry_id?: string;
33
+ title: string;
34
+ description?: string;
35
+ status: TaskStatus;
36
+ priority: TaskPriority;
37
+ created_at: string;
38
+ updated_at: string;
39
+ }
40
+ export interface Classification {
41
+ id: string;
42
+ classifiable_type: ClassifiableType;
43
+ classifiable_id: string;
44
+ tag: string;
45
+ confidence: number;
46
+ created_at: string;
47
+ }
48
+ export interface AuditLogEntry {
49
+ id: string;
50
+ entity_type: AuditEntityType;
51
+ entity_id: string;
52
+ action: AuditAction;
53
+ changes: string;
54
+ project_id: string;
55
+ timestamp: string;
56
+ }
57
+ export type RelationshipType = 'depends_on' | 'implements' | 'related_to' | 'supersedes';
58
+ export type ResponseView = 'full' | 'summary' | 'compact';
59
+ export type ResponseFormat = 'json' | 'toon-r' | 'toon-d';
60
+ export interface DesignDecision {
61
+ id: string;
62
+ entry_id: string;
63
+ decision: string;
64
+ rationale: string;
65
+ alternatives_considered?: string;
66
+ created_at: string;
67
+ }
68
+ export interface EntryRelationship {
69
+ id: string;
70
+ source_entry_id: string;
71
+ target_entry_id: string;
72
+ relationship_type: RelationshipType;
73
+ created_at: string;
74
+ }
75
+ export interface EntryContext {
76
+ entry: SddEntry;
77
+ decisions: DesignDecision[];
78
+ relationships: EntryRelationship[];
79
+ }
80
+ export interface EntrySummary {
81
+ entry_id: string;
82
+ summary_short: string;
83
+ summary_dense: string;
84
+ keywords: string[];
85
+ source_hash: string;
86
+ version: number;
87
+ updated_at: string;
88
+ }
89
+ export interface MemoryFact {
90
+ id: string;
91
+ project_id: string;
92
+ entry_id?: string;
93
+ kind: string;
94
+ subject: string;
95
+ predicate: string;
96
+ object: string;
97
+ weight: number;
98
+ source: string;
99
+ created_at: string;
100
+ }
101
+ export interface CompactEntry {
102
+ id: string;
103
+ project_id: string;
104
+ section: SddSection;
105
+ status: EntryStatus;
106
+ title: string;
107
+ summary_short: string;
108
+ summary_dense: string;
109
+ keywords: string[];
110
+ }
111
+ export interface CompactTask {
112
+ id: string;
113
+ project_id: string;
114
+ sdd_entry_id?: string;
115
+ title: string;
116
+ status: TaskStatus;
117
+ priority: TaskPriority;
118
+ }
119
+ export interface CompactEntryContext {
120
+ entry: CompactEntry;
121
+ decisions: DesignDecision[];
122
+ relationships: EntryRelationship[];
123
+ facts: MemoryFact[];
124
+ }
125
+ export interface ProjectCompact {
126
+ project: Project;
127
+ entries: CompactEntry[];
128
+ tasks: CompactTask[];
129
+ classifications: Classification[];
130
+ }
131
+ export interface PaginationParams {
132
+ page?: number;
133
+ limit?: number;
134
+ }
135
+ export interface PaginatedResult<T> {
136
+ data: T[];
137
+ total: number;
138
+ }
139
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/types/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/types/context.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "@romandp/context-memory-mcp",
3
+ "version": "1.0.0",
4
+ "description": "Local SQLite-backed MCP server for AI memory and project context.",
5
+ "main": "dist/index.js",
6
+ "type": "module",
7
+ "files": [
8
+ "dist",
9
+ "bin",
10
+ "README.md"
11
+ ],
12
+ "bin": {
13
+ "mcp-memory": "./bin/mcp-memory.js"
14
+ },
15
+ "scripts": {
16
+ "build": "tsc",
17
+ "start": "node dist/index.js",
18
+ "start:bg": "node bin/mcp-memory.js start",
19
+ "stop": "node bin/mcp-memory.js stop",
20
+ "status": "node bin/mcp-memory.js status",
21
+ "restart": "node bin/mcp-memory.js restart",
22
+ "dev": "ts-node src/index.ts",
23
+ "type-check": "tsc --noEmit",
24
+ "lint": "eslint src/ tests/",
25
+ "lint:fix": "eslint src/ tests/ --fix",
26
+ "format": "prettier --check src/ tests/",
27
+ "format:fix": "prettier --write src/ tests/",
28
+ "test": "vitest run",
29
+ "test:watch": "vitest",
30
+ "prepack": "npm run build"
31
+ },
32
+ "keywords": [
33
+ "mcp",
34
+ "model-context-protocol",
35
+ "sqlite",
36
+ "ai-context",
37
+ "memory-server"
38
+ ],
39
+ "author": "",
40
+ "license": "MIT",
41
+ "dependencies": {
42
+ "@modelcontextprotocol/sdk": "^1.29.0",
43
+ "better-sqlite3": "^9.2.0",
44
+ "dotenv": "^16.4.5",
45
+ "express": "^5.2.1",
46
+ "swagger-jsdoc": "^6.3.0",
47
+ "swagger-ui-express": "^5.0.1",
48
+ "zod": "^4.0.0"
49
+ },
50
+ "devDependencies": {
51
+ "@eslint/js": "^10.0.1",
52
+ "@types/better-sqlite3": "^7.6.8",
53
+ "@types/express": "^5.0.6",
54
+ "@types/node": "^20.10.6",
55
+ "@types/supertest": "^7.2.0",
56
+ "@types/swagger-jsdoc": "^6.0.4",
57
+ "@types/swagger-ui-express": "^4.1.8",
58
+ "eslint": "^10.4.0",
59
+ "eslint-config-prettier": "^10.1.8",
60
+ "globals": "^17.6.0",
61
+ "prettier": "^3.8.3",
62
+ "supertest": "^7.2.2",
63
+ "ts-node": "^10.9.2",
64
+ "typescript": "^5.3.3",
65
+ "typescript-eslint": "^8.59.3",
66
+ "vitest": "^4.1.6"
67
+ }
68
+ }