cmp-memory-system 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.
- package/README.md +541 -0
- package/dist/analytics/index.d.ts +5 -0
- package/dist/analytics/index.d.ts.map +1 -0
- package/dist/analytics/index.js +5 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics/tracker.d.ts +107 -0
- package/dist/analytics/tracker.d.ts.map +1 -0
- package/dist/analytics/tracker.js +333 -0
- package/dist/analytics/tracker.js.map +1 -0
- package/dist/auto-improve/eslint-generator.d.ts +36 -0
- package/dist/auto-improve/eslint-generator.d.ts.map +1 -0
- package/dist/auto-improve/eslint-generator.js +280 -0
- package/dist/auto-improve/eslint-generator.js.map +1 -0
- package/dist/auto-improve/index.d.ts +6 -0
- package/dist/auto-improve/index.d.ts.map +1 -0
- package/dist/auto-improve/index.js +6 -0
- package/dist/auto-improve/index.js.map +1 -0
- package/dist/auto-improve/pattern-detector.d.ts +92 -0
- package/dist/auto-improve/pattern-detector.d.ts.map +1 -0
- package/dist/auto-improve/pattern-detector.js +231 -0
- package/dist/auto-improve/pattern-detector.js.map +1 -0
- package/dist/cli/index.d.ts +16 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +636 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/dashboard/index.d.ts +6 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +6 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/dashboard/server.d.ts +15 -0
- package/dist/dashboard/server.d.ts.map +1 -0
- package/dist/dashboard/server.js +373 -0
- package/dist/dashboard/server.js.map +1 -0
- package/dist/dashboard/ui.d.ts +9 -0
- package/dist/dashboard/ui.d.ts.map +1 -0
- package/dist/dashboard/ui.js +530 -0
- package/dist/dashboard/ui.js.map +1 -0
- package/dist/db/client.d.ts +66 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +159 -0
- package/dist/db/client.js.map +1 -0
- package/dist/db/drizzle-client.d.ts +302 -0
- package/dist/db/drizzle-client.d.ts.map +1 -0
- package/dist/db/drizzle-client.js +404 -0
- package/dist/db/drizzle-client.js.map +1 -0
- package/dist/db/index.d.ts +5 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +5 -0
- package/dist/db/index.js.map +1 -0
- package/dist/feedback/collector.d.ts +74 -0
- package/dist/feedback/collector.d.ts.map +1 -0
- package/dist/feedback/collector.js +231 -0
- package/dist/feedback/collector.js.map +1 -0
- package/dist/feedback/index.d.ts +5 -0
- package/dist/feedback/index.d.ts.map +1 -0
- package/dist/feedback/index.js +5 -0
- package/dist/feedback/index.js.map +1 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +8 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/memory-checkpoint.d.ts +43 -0
- package/dist/hooks/memory-checkpoint.d.ts.map +1 -0
- package/dist/hooks/memory-checkpoint.js +257 -0
- package/dist/hooks/memory-checkpoint.js.map +1 -0
- package/dist/hooks/post-tool-use.d.ts +61 -0
- package/dist/hooks/post-tool-use.d.ts.map +1 -0
- package/dist/hooks/post-tool-use.js +262 -0
- package/dist/hooks/post-tool-use.js.map +1 -0
- package/dist/hooks/pre-tool-use.d.ts +34 -0
- package/dist/hooks/pre-tool-use.d.ts.map +1 -0
- package/dist/hooks/pre-tool-use.js +358 -0
- package/dist/hooks/pre-tool-use.js.map +1 -0
- package/dist/hooks/session-start.d.ts +38 -0
- package/dist/hooks/session-start.d.ts.map +1 -0
- package/dist/hooks/session-start.js +274 -0
- package/dist/hooks/session-start.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/index.d.ts +5 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +5 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +42 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +599 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/registry/embeddings.d.ts +38 -0
- package/dist/registry/embeddings.d.ts.map +1 -0
- package/dist/registry/embeddings.js +110 -0
- package/dist/registry/embeddings.js.map +1 -0
- package/dist/registry/generator.d.ts +41 -0
- package/dist/registry/generator.d.ts.map +1 -0
- package/dist/registry/generator.js +323 -0
- package/dist/registry/generator.js.map +1 -0
- package/dist/registry/index.d.ts +6 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +6 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/services/IdeaCollector.d.ts +103 -0
- package/dist/services/IdeaCollector.d.ts.map +1 -0
- package/dist/services/IdeaCollector.js +371 -0
- package/dist/services/IdeaCollector.js.map +1 -0
- package/dist/services/TaskTracker.d.ts +89 -0
- package/dist/services/TaskTracker.d.ts.map +1 -0
- package/dist/services/TaskTracker.js +324 -0
- package/dist/services/TaskTracker.js.map +1 -0
- package/dist/services/WorkPlanManager.d.ts +107 -0
- package/dist/services/WorkPlanManager.d.ts.map +1 -0
- package/dist/services/WorkPlanManager.js +440 -0
- package/dist/services/WorkPlanManager.js.map +1 -0
- package/dist/services/auto-inject.d.ts +77 -0
- package/dist/services/auto-inject.d.ts.map +1 -0
- package/dist/services/auto-inject.js +289 -0
- package/dist/services/auto-inject.js.map +1 -0
- package/dist/services/auto-tag.d.ts +61 -0
- package/dist/services/auto-tag.d.ts.map +1 -0
- package/dist/services/auto-tag.js +203 -0
- package/dist/services/auto-tag.js.map +1 -0
- package/dist/services/cross-project-sync.d.ts +76 -0
- package/dist/services/cross-project-sync.d.ts.map +1 -0
- package/dist/services/cross-project-sync.js +235 -0
- package/dist/services/cross-project-sync.js.map +1 -0
- package/dist/services/index.d.ts +15 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +18 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/memory-consolidation.d.ts +77 -0
- package/dist/services/memory-consolidation.d.ts.map +1 -0
- package/dist/services/memory-consolidation.js +298 -0
- package/dist/services/memory-consolidation.js.map +1 -0
- package/dist/services/semantic-search.d.ts +93 -0
- package/dist/services/semantic-search.d.ts.map +1 -0
- package/dist/services/semantic-search.js +278 -0
- package/dist/services/semantic-search.js.map +1 -0
- package/dist/services/weekly-digest.d.ts +105 -0
- package/dist/services/weekly-digest.d.ts.map +1 -0
- package/dist/services/weekly-digest.js +292 -0
- package/dist/services/weekly-digest.js.map +1 -0
- package/dist/types/index.d.ts +274 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +84 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/config.d.ts +21 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +89 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/paths.d.ts +28 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +80 -0
- package/dist/utils/paths.js.map +1 -0
- package/package.json +89 -0
- package/templates/memory-config.json +82 -0
- package/templates/memory-config.schema.json +212 -0
- package/templates/settings.json +58 -0
package/README.md
ADDED
|
@@ -0,0 +1,541 @@
|
|
|
1
|
+
# cmp-memory-system
|
|
2
|
+
|
|
3
|
+
> Unified memory & workflow system for Claude Code projects
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Task Tracking** - Automatic task registration in database
|
|
8
|
+
- **Idea Capture** - Collect ideas and improvements during work
|
|
9
|
+
- **Work Plans** - Persistent work plans across sessions
|
|
10
|
+
- **Memory System** - Session context and memory management
|
|
11
|
+
- **Auto-Improvement** - Pattern detection → ESLint rule generation
|
|
12
|
+
- **Dashboard** - Web UI for visualization
|
|
13
|
+
- **MCP Server** - Model Context Protocol integration
|
|
14
|
+
- **Analytics** - Usage tracking and insights
|
|
15
|
+
|
|
16
|
+
## Installation
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install cmp-memory-system
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Quick Start
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# Initialize in project
|
|
26
|
+
cmp-memory init --system MYPROJECT --name "My Project"
|
|
27
|
+
|
|
28
|
+
# Check status
|
|
29
|
+
cmp-memory status
|
|
30
|
+
|
|
31
|
+
# Check status
|
|
32
|
+
claude-memory status
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## CLI Commands
|
|
36
|
+
|
|
37
|
+
### `claude-memory init`
|
|
38
|
+
|
|
39
|
+
Initialize memory system in current project.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
claude-memory init [options]
|
|
43
|
+
|
|
44
|
+
Options:
|
|
45
|
+
-s, --system <system> System identifier (SWARMSCALE, PANEL)
|
|
46
|
+
-n, --name <name> Project name
|
|
47
|
+
-f, --force Overwrite existing configuration
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### `claude-memory generate`
|
|
51
|
+
|
|
52
|
+
Generate embedding registry from documentation.
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
claude-memory generate [options]
|
|
56
|
+
|
|
57
|
+
Options:
|
|
58
|
+
-i, --incremental Only update changed files
|
|
59
|
+
--files <files> Specific files (comma-separated)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### `claude-memory scan`
|
|
63
|
+
|
|
64
|
+
Scan codebase for patterns.
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
claude-memory scan [options]
|
|
68
|
+
|
|
69
|
+
Options:
|
|
70
|
+
-d, --dir <directory> Directory to scan (default: src)
|
|
71
|
+
-t, --threshold <n> Pattern threshold (default: 3)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### `claude-memory improve`
|
|
75
|
+
|
|
76
|
+
Run auto-improvement for triggered patterns.
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
claude-memory improve [options]
|
|
80
|
+
|
|
81
|
+
Options:
|
|
82
|
+
--dry-run Show without making changes
|
|
83
|
+
-p, --pattern <id> Specific pattern to improve
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### `claude-memory status`
|
|
87
|
+
|
|
88
|
+
Show memory system status.
|
|
89
|
+
|
|
90
|
+
### `claude-memory dashboard`
|
|
91
|
+
|
|
92
|
+
Start the memory dashboard web UI.
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
claude-memory dashboard [options]
|
|
96
|
+
|
|
97
|
+
Options:
|
|
98
|
+
-p, --port <port> Port to run on (default: 3847)
|
|
99
|
+
--no-open Don't open browser automatically
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### `claude-memory analytics`
|
|
103
|
+
|
|
104
|
+
Show analytics and system health.
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
claude-memory analytics [options]
|
|
108
|
+
|
|
109
|
+
Options:
|
|
110
|
+
-p, --period <period> Time period (day, week, month)
|
|
111
|
+
--json Output as JSON
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### `claude-memory feedback`
|
|
115
|
+
|
|
116
|
+
View feedback statistics.
|
|
117
|
+
|
|
118
|
+
### `claude-memory mcp`
|
|
119
|
+
|
|
120
|
+
Start the MCP server for Claude integration.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Workflow Commands (NEW)
|
|
125
|
+
|
|
126
|
+
### `claude-memory tasks`
|
|
127
|
+
|
|
128
|
+
View and manage tasks.
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
claude-memory tasks [options]
|
|
132
|
+
|
|
133
|
+
Options:
|
|
134
|
+
-a, --all Show all tasks including completed
|
|
135
|
+
-l, --limit <number> Limit number of tasks (default: 10)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### `claude-memory ideas`
|
|
139
|
+
|
|
140
|
+
View captured ideas.
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
claude-memory ideas [options]
|
|
144
|
+
|
|
145
|
+
Options:
|
|
146
|
+
-c, --category <cat> Filter by category (feature, refactor, bug, optimization, documentation)
|
|
147
|
+
-p, --priority <pri> Filter by priority (high, medium, low)
|
|
148
|
+
-l, --limit <number> Limit number of ideas (default: 20)
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### `claude-memory improvements`
|
|
152
|
+
|
|
153
|
+
View suggested improvements.
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
claude-memory improvements [options]
|
|
157
|
+
|
|
158
|
+
Options:
|
|
159
|
+
-t, --type <type> Filter by type (code_quality, performance, security, ux, architecture)
|
|
160
|
+
-e, --effort <effort> Filter by effort (small, medium, large)
|
|
161
|
+
-l, --limit <number> Limit number (default: 20)
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### `claude-memory plan`
|
|
165
|
+
|
|
166
|
+
Manage work plans.
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
claude-memory plan [options]
|
|
170
|
+
|
|
171
|
+
Options:
|
|
172
|
+
-s, --status Show current plan status
|
|
173
|
+
-c, --complete Complete current task
|
|
174
|
+
-n, --next Move to next task
|
|
175
|
+
-h, --history Show plan history
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### `claude-memory capture <text>`
|
|
179
|
+
|
|
180
|
+
Quick capture an idea or improvement. Auto-categorizes based on content.
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
claude-memory capture "Consider adding caching to API calls"
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### `claude-memory export`
|
|
187
|
+
|
|
188
|
+
Export ideas and improvements as markdown.
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
claude-memory export [options]
|
|
192
|
+
|
|
193
|
+
Options:
|
|
194
|
+
-o, --output <file> Output file (default: IDEAS_AND_IMPROVEMENTS.md)
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## Architecture
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
@metanautical/claude-memory
|
|
203
|
+
├── src/
|
|
204
|
+
│ ├── hooks/
|
|
205
|
+
│ │ ├── session-start.ts # Context loader on session start
|
|
206
|
+
│ │ ├── pre-tool-use.ts # Guards + embedding injection
|
|
207
|
+
│ │ ├── post-tool-use.ts # Record changes after Edit/Write
|
|
208
|
+
│ │ └── memory-checkpoint.ts # Record learnings after changes
|
|
209
|
+
│ ├── registry/
|
|
210
|
+
│ │ ├── generator.ts # Parse docs → embeddings
|
|
211
|
+
│ │ └── embeddings.ts # OpenAI/Gemini embedding service
|
|
212
|
+
│ ├── auto-improve/
|
|
213
|
+
│ │ ├── pattern-detector.ts # Detect repeated violations
|
|
214
|
+
│ │ └── eslint-generator.ts # Generate ESLint rules
|
|
215
|
+
│ ├── db/
|
|
216
|
+
│ │ ├── client.ts # DEV_Items database client (mock)
|
|
217
|
+
│ │ └── drizzle-client.ts # Real Drizzle ORM client
|
|
218
|
+
│ ├── mcp/
|
|
219
|
+
│ │ └── server.ts # MCP server for Claude tools
|
|
220
|
+
│ ├── dashboard/
|
|
221
|
+
│ │ ├── server.ts # Express dashboard server
|
|
222
|
+
│ │ └── ui.ts # React UI generator
|
|
223
|
+
│ ├── feedback/
|
|
224
|
+
│ │ └── collector.ts # User feedback collection
|
|
225
|
+
│ ├── analytics/
|
|
226
|
+
│ │ └── tracker.ts # Usage analytics & insights
|
|
227
|
+
│ ├── utils/
|
|
228
|
+
│ │ ├── config.ts # Configuration management
|
|
229
|
+
│ │ └── paths.ts # Path utilities
|
|
230
|
+
│ ├── types/
|
|
231
|
+
│ │ └── index.ts # Type definitions
|
|
232
|
+
│ ├── cli/
|
|
233
|
+
│ │ └── index.ts # CLI commands
|
|
234
|
+
│ └── index.ts # Main exports
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
## Configuration
|
|
238
|
+
|
|
239
|
+
### `.claude/memory-config.json`
|
|
240
|
+
|
|
241
|
+
```json
|
|
242
|
+
{
|
|
243
|
+
"system": "SWARMSCALE",
|
|
244
|
+
"projectName": "SwarmScale",
|
|
245
|
+
"domains": ["video-studio", "avatars", "campaigns"],
|
|
246
|
+
"guards": {
|
|
247
|
+
"enabled": true,
|
|
248
|
+
"rules": [
|
|
249
|
+
{
|
|
250
|
+
"id": "schema-protection",
|
|
251
|
+
"type": "block",
|
|
252
|
+
"filePattern": "src/server/schema/auth.ts",
|
|
253
|
+
"message": "PANEL_* tables are READ-ONLY"
|
|
254
|
+
}
|
|
255
|
+
]
|
|
256
|
+
},
|
|
257
|
+
"embedding": {
|
|
258
|
+
"enabled": true,
|
|
259
|
+
"threshold": 0.60,
|
|
260
|
+
"maxSections": 3
|
|
261
|
+
},
|
|
262
|
+
"autoImprovement": {
|
|
263
|
+
"enabled": true,
|
|
264
|
+
"violationThreshold": 3,
|
|
265
|
+
"generateEslintRules": true
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### `.claude/settings.json`
|
|
271
|
+
|
|
272
|
+
```json
|
|
273
|
+
{
|
|
274
|
+
"hooks": {
|
|
275
|
+
"PreToolUse": [
|
|
276
|
+
{
|
|
277
|
+
"matcher": "Task",
|
|
278
|
+
"hooks": [{
|
|
279
|
+
"type": "command",
|
|
280
|
+
"command": "npx tsx node_modules/@metanautical/claude-memory/dist/hooks/pre-tool-use.js"
|
|
281
|
+
}]
|
|
282
|
+
}
|
|
283
|
+
],
|
|
284
|
+
"SessionStart": [
|
|
285
|
+
{
|
|
286
|
+
"matcher": "",
|
|
287
|
+
"hooks": [{
|
|
288
|
+
"type": "command",
|
|
289
|
+
"command": "npx tsx node_modules/@metanautical/claude-memory/dist/hooks/session-start.js"
|
|
290
|
+
}]
|
|
291
|
+
}
|
|
292
|
+
]
|
|
293
|
+
},
|
|
294
|
+
"plugins": {
|
|
295
|
+
"metanautical-memory": {
|
|
296
|
+
"version": "1.0.0",
|
|
297
|
+
"enabled": true
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
## Hooks
|
|
304
|
+
|
|
305
|
+
### SessionStart Hook
|
|
306
|
+
|
|
307
|
+
Executes on session start:
|
|
308
|
+
1. Detects module from `git diff` (last 24h)
|
|
309
|
+
2. Queries DEV_Items for relevant memories
|
|
310
|
+
3. Returns formatted context
|
|
311
|
+
|
|
312
|
+
```typescript
|
|
313
|
+
import { SessionStartHook } from '@metanautical/claude-memory/hooks'
|
|
314
|
+
|
|
315
|
+
const hook = new SessionStartHook()
|
|
316
|
+
const result = await hook.execute()
|
|
317
|
+
// result.context contains session context
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
### PreToolUse Hook
|
|
321
|
+
|
|
322
|
+
Executes before Edit/Write/Task tools:
|
|
323
|
+
1. **Edit/Write**: Validates against guard rules
|
|
324
|
+
2. **Task**: Injects relevant knowledge via embeddings
|
|
325
|
+
|
|
326
|
+
```typescript
|
|
327
|
+
import { PreToolUseHook } from '@metanautical/claude-memory/hooks'
|
|
328
|
+
|
|
329
|
+
const hook = new PreToolUseHook()
|
|
330
|
+
const result = await hook.execute({
|
|
331
|
+
tool_name: 'Edit',
|
|
332
|
+
parameters: { file_path: 'src/file.ts', new_string: '...' }
|
|
333
|
+
})
|
|
334
|
+
|
|
335
|
+
if (result.mode === 'block') {
|
|
336
|
+
// Guard violation - block operation
|
|
337
|
+
}
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
## Auto-Improvement
|
|
341
|
+
|
|
342
|
+
### Pattern Detection
|
|
343
|
+
|
|
344
|
+
Built-in patterns detected:
|
|
345
|
+
- `any-type` - Using `any` type
|
|
346
|
+
- `console-log` - Console.log in production
|
|
347
|
+
- `eslint-disable` - ESLint disable comments
|
|
348
|
+
- `hardcoded-string` - UI strings not using i18n
|
|
349
|
+
- `direct-db-query` - Database queries in components
|
|
350
|
+
- `inline-style` - Inline styles instead of Tailwind
|
|
351
|
+
|
|
352
|
+
### ESLint Rule Generation
|
|
353
|
+
|
|
354
|
+
When a pattern is detected 3+ times:
|
|
355
|
+
|
|
356
|
+
```bash
|
|
357
|
+
# Scan for patterns
|
|
358
|
+
claude-memory scan
|
|
359
|
+
|
|
360
|
+
# Output:
|
|
361
|
+
# 🔴 any-type [high]
|
|
362
|
+
# Count: 5, Files: 3
|
|
363
|
+
# ⚠️ Patterns ready for auto-improvement
|
|
364
|
+
|
|
365
|
+
# Generate ESLint rule
|
|
366
|
+
claude-memory improve
|
|
367
|
+
|
|
368
|
+
# Creates: eslint-plugin-charter/rules/no-any-type.js
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
## Programmatic Usage
|
|
372
|
+
|
|
373
|
+
```typescript
|
|
374
|
+
import {
|
|
375
|
+
loadConfig,
|
|
376
|
+
PatternDetector,
|
|
377
|
+
ESLintGenerator,
|
|
378
|
+
RegistryGenerator
|
|
379
|
+
} from '@metanautical/claude-memory'
|
|
380
|
+
|
|
381
|
+
// Load config
|
|
382
|
+
const config = await loadConfig(process.cwd())
|
|
383
|
+
|
|
384
|
+
// Detect patterns
|
|
385
|
+
const detector = new PatternDetector(config)
|
|
386
|
+
const patterns = detector.scan(fileContent, filePath)
|
|
387
|
+
const results = detector.getResults()
|
|
388
|
+
|
|
389
|
+
// Generate ESLint rules
|
|
390
|
+
const generator = new ESLintGenerator()
|
|
391
|
+
await generator.generateAllRules(results.triggered)
|
|
392
|
+
|
|
393
|
+
// Generate registry
|
|
394
|
+
const registry = new RegistryGenerator()
|
|
395
|
+
await registry.generate()
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
## System Isolation
|
|
399
|
+
|
|
400
|
+
Data is isolated by `system` field in DEV_Items:
|
|
401
|
+
|
|
402
|
+
| System | Project |
|
|
403
|
+
|--------|---------|
|
|
404
|
+
| `SWARMSCALE` | SwarmScale |
|
|
405
|
+
| `PANEL` | TheCharterPanel |
|
|
406
|
+
| `ECOSYSTEM` | Cross-project |
|
|
407
|
+
|
|
408
|
+
Always filter by system:
|
|
409
|
+
|
|
410
|
+
```typescript
|
|
411
|
+
// Correct
|
|
412
|
+
db.select().from(devItems).where(eq(devItems.system, 'SWARMSCALE'))
|
|
413
|
+
|
|
414
|
+
// Wrong - returns ALL projects' data
|
|
415
|
+
db.select().from(devItems)
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
## Environment Variables
|
|
419
|
+
|
|
420
|
+
```bash
|
|
421
|
+
# Required for embedding generation
|
|
422
|
+
OPENAI_API_KEY=sk-... # Preferred
|
|
423
|
+
GEMINI_API_KEY=... # Fallback
|
|
424
|
+
|
|
425
|
+
# Optional
|
|
426
|
+
MEMORY_DEBUG=true # Enable debug logging
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
## Development
|
|
430
|
+
|
|
431
|
+
```bash
|
|
432
|
+
# Install dependencies
|
|
433
|
+
npm install
|
|
434
|
+
|
|
435
|
+
# Build
|
|
436
|
+
npm run build
|
|
437
|
+
|
|
438
|
+
# Watch mode
|
|
439
|
+
npm run dev
|
|
440
|
+
|
|
441
|
+
# Run tests
|
|
442
|
+
npm test
|
|
443
|
+
|
|
444
|
+
# Link for local development
|
|
445
|
+
npm link
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
## MCP Server
|
|
449
|
+
|
|
450
|
+
The MCP (Model Context Protocol) server exposes memory tools that Claude can use directly:
|
|
451
|
+
|
|
452
|
+
```bash
|
|
453
|
+
# Start MCP server
|
|
454
|
+
claude-memory mcp
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
**Available Tools:**
|
|
458
|
+
- `memory_search` - Search memories by query
|
|
459
|
+
- `memory_write` - Write new memory/learning
|
|
460
|
+
- `memory_list` - List recent memories
|
|
461
|
+
- `pattern_check` - Check for detected patterns
|
|
462
|
+
- `pattern_report` - Report a new pattern occurrence
|
|
463
|
+
- `session_context` - Get current session context
|
|
464
|
+
- `feedback_submit` - Submit feedback on a memory
|
|
465
|
+
|
|
466
|
+
## Dashboard
|
|
467
|
+
|
|
468
|
+
Start the standalone web dashboard:
|
|
469
|
+
|
|
470
|
+
```bash
|
|
471
|
+
claude-memory dashboard
|
|
472
|
+
# Opens http://localhost:3847
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
**Features:**
|
|
476
|
+
- View all memories with search and filtering
|
|
477
|
+
- Browse detected patterns
|
|
478
|
+
- See session history
|
|
479
|
+
- Submit feedback on memories
|
|
480
|
+
- Create new memories
|
|
481
|
+
- View analytics and system health
|
|
482
|
+
|
|
483
|
+
## Feedback Loop
|
|
484
|
+
|
|
485
|
+
The feedback system adjusts memory relevance based on user feedback:
|
|
486
|
+
|
|
487
|
+
```typescript
|
|
488
|
+
import { createFeedbackCollector } from '@metanautical/claude-memory'
|
|
489
|
+
|
|
490
|
+
const collector = createFeedbackCollector('SWARMSCALE')
|
|
491
|
+
|
|
492
|
+
// Submit feedback
|
|
493
|
+
await collector.submitFeedback(memoryId, true, 'Very helpful!')
|
|
494
|
+
|
|
495
|
+
// Get feedback stats
|
|
496
|
+
const stats = await collector.getStats()
|
|
497
|
+
// { helpfulRate: 0.85, topHelpfulMemories: [...] }
|
|
498
|
+
|
|
499
|
+
// Get suggestions for deprecation
|
|
500
|
+
const deprecations = await collector.getSuggestedDeprecations()
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
## Analytics
|
|
504
|
+
|
|
505
|
+
Track usage and get insights:
|
|
506
|
+
|
|
507
|
+
```typescript
|
|
508
|
+
import { createAnalyticsTracker } from '@metanautical/claude-memory'
|
|
509
|
+
|
|
510
|
+
const tracker = createAnalyticsTracker('SWARMSCALE')
|
|
511
|
+
|
|
512
|
+
// Track an event
|
|
513
|
+
await tracker.track('memory_access', { memoryId: '...' })
|
|
514
|
+
|
|
515
|
+
// Get usage stats
|
|
516
|
+
const usage = await tracker.getUsageStats('week')
|
|
517
|
+
// { sessions: 12, memoriesCreated: 5, searchesPerformed: 23, ... }
|
|
518
|
+
|
|
519
|
+
// Get system health
|
|
520
|
+
const health = await tracker.getSystemHealth()
|
|
521
|
+
// { status: 'healthy', issues: [], recommendations: [...] }
|
|
522
|
+
|
|
523
|
+
// Generate full report
|
|
524
|
+
const report = await tracker.generateReport()
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
## Database Configuration
|
|
528
|
+
|
|
529
|
+
Set environment variables for database connection:
|
|
530
|
+
|
|
531
|
+
```bash
|
|
532
|
+
DATABASE_HOST=localhost
|
|
533
|
+
DATABASE_PORT=3306
|
|
534
|
+
DATABASE_USER=root
|
|
535
|
+
DATABASE_PASSWORD=your-password
|
|
536
|
+
DATABASE_NAME=metanautical
|
|
537
|
+
```
|
|
538
|
+
|
|
539
|
+
## License
|
|
540
|
+
|
|
541
|
+
MIT - MetaNautical Group
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analytics/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,YAAY,GAClB,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analytics/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GAMvB,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Analytics Tracker
|
|
3
|
+
*
|
|
4
|
+
* Tracks memory system usage and provides insights for optimization.
|
|
5
|
+
*/
|
|
6
|
+
import type { DevSystem } from '../types/index.js';
|
|
7
|
+
export interface AnalyticsEvent {
|
|
8
|
+
type: 'session_start' | 'memory_access' | 'memory_create' | 'pattern_detected' | 'feedback_given' | 'search_performed';
|
|
9
|
+
metadata: Record<string, unknown>;
|
|
10
|
+
timestamp: string;
|
|
11
|
+
}
|
|
12
|
+
export interface UsageStats {
|
|
13
|
+
period: 'day' | 'week' | 'month';
|
|
14
|
+
sessions: number;
|
|
15
|
+
memoriesCreated: number;
|
|
16
|
+
memoriesAccessed: number;
|
|
17
|
+
searchesPerformed: number;
|
|
18
|
+
patternsDetected: number;
|
|
19
|
+
feedbackGiven: number;
|
|
20
|
+
avgSessionDuration: number;
|
|
21
|
+
}
|
|
22
|
+
export interface MemoryInsights {
|
|
23
|
+
mostAccessedMemories: Array<{
|
|
24
|
+
id: string;
|
|
25
|
+
title: string;
|
|
26
|
+
accessCount: number;
|
|
27
|
+
}>;
|
|
28
|
+
leastUsedMemories: Array<{
|
|
29
|
+
id: string;
|
|
30
|
+
title: string;
|
|
31
|
+
daysSinceAccess: number;
|
|
32
|
+
}>;
|
|
33
|
+
domainDistribution: Record<string, number>;
|
|
34
|
+
sourceDistribution: Record<string, number>;
|
|
35
|
+
memoryGrowthTrend: Array<{
|
|
36
|
+
date: string;
|
|
37
|
+
count: number;
|
|
38
|
+
}>;
|
|
39
|
+
}
|
|
40
|
+
export interface PatternInsights {
|
|
41
|
+
mostFrequentPatterns: Array<{
|
|
42
|
+
patternId: string;
|
|
43
|
+
occurrences: number;
|
|
44
|
+
severity: string;
|
|
45
|
+
}>;
|
|
46
|
+
patternsOverTime: Array<{
|
|
47
|
+
date: string;
|
|
48
|
+
patternId: string;
|
|
49
|
+
count: number;
|
|
50
|
+
}>;
|
|
51
|
+
autoImprovementCandidates: Array<{
|
|
52
|
+
patternId: string;
|
|
53
|
+
occurrences: number;
|
|
54
|
+
files: number;
|
|
55
|
+
}>;
|
|
56
|
+
}
|
|
57
|
+
export interface SystemHealth {
|
|
58
|
+
status: 'healthy' | 'degraded' | 'critical';
|
|
59
|
+
metrics: {
|
|
60
|
+
totalMemories: number;
|
|
61
|
+
activePatterns: number;
|
|
62
|
+
triggeredPatterns: number;
|
|
63
|
+
recentSessions: number;
|
|
64
|
+
feedbackRate: number;
|
|
65
|
+
avgMemoryAge: number;
|
|
66
|
+
};
|
|
67
|
+
issues: string[];
|
|
68
|
+
recommendations: string[];
|
|
69
|
+
}
|
|
70
|
+
export declare class AnalyticsTracker {
|
|
71
|
+
private client;
|
|
72
|
+
private system;
|
|
73
|
+
constructor(system: DevSystem);
|
|
74
|
+
/**
|
|
75
|
+
* Track an analytics event
|
|
76
|
+
*/
|
|
77
|
+
track(type: AnalyticsEvent['type'], metadata?: Record<string, unknown>): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Get usage statistics for a time period
|
|
80
|
+
*/
|
|
81
|
+
getUsageStats(period?: UsageStats['period']): Promise<UsageStats>;
|
|
82
|
+
/**
|
|
83
|
+
* Get memory insights
|
|
84
|
+
*/
|
|
85
|
+
getMemoryInsights(): Promise<MemoryInsights>;
|
|
86
|
+
/**
|
|
87
|
+
* Get pattern insights
|
|
88
|
+
*/
|
|
89
|
+
getPatternInsights(): Promise<PatternInsights>;
|
|
90
|
+
/**
|
|
91
|
+
* Get system health status
|
|
92
|
+
*/
|
|
93
|
+
getSystemHealth(): Promise<SystemHealth>;
|
|
94
|
+
/**
|
|
95
|
+
* Generate a comprehensive analytics report
|
|
96
|
+
*/
|
|
97
|
+
generateReport(): Promise<{
|
|
98
|
+
generatedAt: string;
|
|
99
|
+
system: DevSystem;
|
|
100
|
+
health: SystemHealth;
|
|
101
|
+
usage: UsageStats;
|
|
102
|
+
memoryInsights: MemoryInsights;
|
|
103
|
+
patternInsights: PatternInsights;
|
|
104
|
+
}>;
|
|
105
|
+
}
|
|
106
|
+
export declare function createAnalyticsTracker(system: DevSystem): AnalyticsTracker;
|
|
107
|
+
//# sourceMappingURL=tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/analytics/tracker.ts"],"names":[],"mappings":"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"}
|