devmind 1.0.0 → 1.0.2
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 +75 -30
- package/dist/cli.js +98 -2
- package/dist/cli.js.map +1 -1
- package/dist/codebase/parsers/typescript.js +7 -2
- package/dist/codebase/parsers/typescript.js.map +1 -1
- package/dist/commands/audit.d.ts +7 -0
- package/dist/commands/audit.js +165 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/autosave.d.ts +19 -0
- package/dist/commands/autosave.js +85 -0
- package/dist/commands/autosave.js.map +1 -0
- package/dist/commands/extract.d.ts +20 -0
- package/dist/commands/extract.js +168 -0
- package/dist/commands/extract.js.map +1 -0
- package/dist/commands/status.d.ts +7 -0
- package/dist/commands/status.js +112 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/database/cli.js +1 -1
- package/dist/database/cli.js.map +1 -1
- package/dist/database/commands/generate.js +13 -1
- package/dist/database/commands/generate.js.map +1 -1
- package/dist/database/commands/memory.js +1 -1
- package/dist/database/commands/validate.js +15 -6
- package/dist/database/commands/validate.js.map +1 -1
- package/dist/generators/unified.d.ts +1 -0
- package/dist/generators/unified.js +73 -16
- package/dist/generators/unified.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -15,13 +15,17 @@
|
|
|
15
15
|
|
|
16
16
|
A single workflow generates everything your AI needs to understand your project deeply.
|
|
17
17
|
|
|
18
|
-
## Features
|
|
19
|
-
|
|
20
|
-
- **Unified Context Generation** - Single command for complete project understanding
|
|
21
|
-
- **Context
|
|
22
|
-
- **
|
|
23
|
-
- **
|
|
24
|
-
- **
|
|
18
|
+
## Features
|
|
19
|
+
|
|
20
|
+
- **Unified Context Generation** - Single command for complete project understanding
|
|
21
|
+
- **Context Health Check** - `devmind status` reports freshness and recommends next action
|
|
22
|
+
- **Context Slicing** - "Zoom in" on specific modules (`devmind context`)
|
|
23
|
+
- **Learning Audit** - `devmind audit` checks code coverage against recorded learnings
|
|
24
|
+
- **Learning Extraction** - `devmind extract` discovers reusable patterns from code and reports
|
|
25
|
+
- **Crash-Safe Autosave** - `devmind autosave` journals session state and applies learnings
|
|
26
|
+
- **Multi-Database Support** - PostgreSQL, MySQL, SQLite, MongoDB, Firebase
|
|
27
|
+
- **Memory System** - Checkpoints, `LEARN.md`, session history
|
|
28
|
+
- **Evolution Tracking** - Track both schema and codebase changes over time
|
|
25
29
|
- **AI-Optimized Output** - Tailored for Claude, Cursor, Windsurf, and OpenClaw
|
|
26
30
|
|
|
27
31
|
## Quick Start
|
|
@@ -91,11 +95,58 @@ devmind checkpoint -m "Before refactoring auth"
|
|
|
91
95
|
devmind history --unified
|
|
92
96
|
```
|
|
93
97
|
|
|
94
|
-
### Analyze Code-to-Database Usage
|
|
95
|
-
|
|
96
|
-
```bash
|
|
97
|
-
devmind analyze -p ./my-project
|
|
98
|
-
```
|
|
98
|
+
### Analyze Code-to-Database Usage
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
devmind analyze -p ./my-project
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Context Health and Drift Recommendations
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# Show context freshness + recommended next command
|
|
108
|
+
devmind status
|
|
109
|
+
|
|
110
|
+
# Machine-readable preflight
|
|
111
|
+
devmind status --json
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Learning Quality Loop
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# Audit codebase coverage against LEARN.md
|
|
118
|
+
devmind audit
|
|
119
|
+
|
|
120
|
+
# Extract learning candidates to report
|
|
121
|
+
devmind extract
|
|
122
|
+
|
|
123
|
+
# Extract and append learnings to memory/LEARN.md
|
|
124
|
+
devmind extract --apply
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Crash-Safe Session Persistence
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
# Persist session journal + context + extracted learnings
|
|
131
|
+
devmind autosave --source task-end
|
|
132
|
+
|
|
133
|
+
# Persist without extraction/apply
|
|
134
|
+
devmind autosave --no-extract
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Agent-First Session Flow
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
# 1) Preflight
|
|
141
|
+
devmind status --json
|
|
142
|
+
|
|
143
|
+
# 2) If stale/missing, run recommendedCommand from status output
|
|
144
|
+
# 3) Re-check
|
|
145
|
+
devmind status --json
|
|
146
|
+
|
|
147
|
+
# 4) Do task, then autosave
|
|
148
|
+
devmind autosave --source task-end
|
|
149
|
+
```
|
|
99
150
|
|
|
100
151
|
## Integration
|
|
101
152
|
|
|
@@ -113,21 +164,22 @@ See [OpenClaw Integration Skill](integrations/openclaw/SKILL.md) for agent instr
|
|
|
113
164
|
## Output Structure
|
|
114
165
|
|
|
115
166
|
```
|
|
116
|
-
.devmind/
|
|
117
|
-
├── codebase/
|
|
118
|
-
│ ├── codebase-overview.md
|
|
119
|
-
│ ├── architecture.md
|
|
120
|
-
│ └── modules/
|
|
167
|
+
.devmind/
|
|
168
|
+
├── codebase/
|
|
169
|
+
│ ├── codebase-overview.md
|
|
170
|
+
│ ├── architecture.md
|
|
171
|
+
│ └── modules/
|
|
121
172
|
├── database/
|
|
122
173
|
│ ├── schema-overview.md
|
|
123
174
|
│ ├── schema.json
|
|
124
175
|
│ └── ...
|
|
125
|
-
├── memory/
|
|
126
|
-
│ ├── checkpoints/
|
|
127
|
-
│ ├── LEARN.md # Persistent accumulated knowledge
|
|
128
|
-
│ ├──
|
|
129
|
-
│ ├──
|
|
130
|
-
│
|
|
176
|
+
├── memory/
|
|
177
|
+
│ ├── checkpoints/
|
|
178
|
+
│ ├── LEARN.md # Persistent accumulated knowledge
|
|
179
|
+
│ ├── SESSION_JOURNAL.md # Incremental crash-safe journal
|
|
180
|
+
│ ├── schema-evolution.md
|
|
181
|
+
│ ├── codebase-evolution.md
|
|
182
|
+
│ └── session-history.md
|
|
131
183
|
├── analysis/
|
|
132
184
|
│ ├── CODE_DB_MAPPING.md
|
|
133
185
|
│ └── UNUSED_TABLES.md
|
|
@@ -136,13 +188,6 @@ See [OpenClaw Integration Skill](integrations/openclaw/SKILL.md) for agent instr
|
|
|
136
188
|
└── index.json
|
|
137
189
|
```
|
|
138
190
|
|
|
139
|
-
## Roadmap
|
|
140
|
-
|
|
141
|
-
- [x] Phase 1: Foundation (project setup)
|
|
142
|
-
- [x] Phase 2: Unified CLI + Memory Extension
|
|
143
|
-
- [x] Phase 3: Cross-context analysis & Context Slicing
|
|
144
|
-
- [x] Phase 4: Distribution & OpenClaw integration
|
|
145
|
-
|
|
146
191
|
## License
|
|
147
192
|
|
|
148
193
|
Apache 2.0 © Nyan Lin Maung
|
package/dist/cli.js
CHANGED
|
@@ -13,7 +13,7 @@ const program = new Command();
|
|
|
13
13
|
program
|
|
14
14
|
.name('devmind')
|
|
15
15
|
.description('Unified developer assistant for database and codebase context')
|
|
16
|
-
.version('1.0.
|
|
16
|
+
.version('1.0.2');
|
|
17
17
|
// Database Commands
|
|
18
18
|
program
|
|
19
19
|
.command('init')
|
|
@@ -107,7 +107,19 @@ program
|
|
|
107
107
|
if (runAll) {
|
|
108
108
|
logger.success('Unified Generation Complete!');
|
|
109
109
|
logger.info(`Context available in ${mergedOptions.output || '.devmind'}`);
|
|
110
|
+
logger.info('Session startup context:');
|
|
111
|
+
logger.info(` 1. Read ${(mergedOptions.output || '.devmind') + '/AGENTS.md'}`);
|
|
112
|
+
logger.info(` 2. Read ${(mergedOptions.output || '.devmind') + '/index.json'}`);
|
|
113
|
+
logger.info('Tip: run `devmind status` to verify freshness.');
|
|
110
114
|
}
|
|
115
|
+
const { runAutosave } = await import('./commands/autosave.js');
|
|
116
|
+
await runAutosave({
|
|
117
|
+
output: mergedOptions.output || '.devmind',
|
|
118
|
+
path: mergedOptions.path || '.',
|
|
119
|
+
source: 'generate',
|
|
120
|
+
note: runAll ? 'Completed unified generation' : 'Completed generation',
|
|
121
|
+
silent: true,
|
|
122
|
+
});
|
|
111
123
|
}
|
|
112
124
|
catch (error) {
|
|
113
125
|
logger.error('Generation failed', error);
|
|
@@ -156,7 +168,19 @@ program
|
|
|
156
168
|
.option('--category <category>', 'Learning category')
|
|
157
169
|
.option('-o, --output <dir>', 'Output directory', '.devmind')
|
|
158
170
|
.option('--json', 'Output as JSON')
|
|
159
|
-
.action(
|
|
171
|
+
.action(async (learning, options) => {
|
|
172
|
+
await learn(learning, options);
|
|
173
|
+
if (!options.list && learning) {
|
|
174
|
+
const { runAutosave } = await import('./commands/autosave.js');
|
|
175
|
+
await runAutosave({
|
|
176
|
+
output: options.output || '.devmind',
|
|
177
|
+
path: '.',
|
|
178
|
+
source: 'learn',
|
|
179
|
+
note: `Added learning (${options.category || 'general'})`,
|
|
180
|
+
silent: true,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
});
|
|
160
184
|
program
|
|
161
185
|
.command('history')
|
|
162
186
|
.description('View session history')
|
|
@@ -176,6 +200,66 @@ program
|
|
|
176
200
|
.action(async (options) => {
|
|
177
201
|
const { analyze } = await import('./commands/analyze.js');
|
|
178
202
|
await analyze(options);
|
|
203
|
+
const { runAutosave } = await import('./commands/autosave.js');
|
|
204
|
+
await runAutosave({
|
|
205
|
+
output: options.output || '.devmind',
|
|
206
|
+
path: options.path || '.',
|
|
207
|
+
source: 'analyze',
|
|
208
|
+
note: 'Completed code-to-database analysis',
|
|
209
|
+
silent: true,
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
program
|
|
213
|
+
.command('status')
|
|
214
|
+
.description('Show context status, freshness, and recommended next command')
|
|
215
|
+
.option('-o, --output <dir>', 'Output directory', '.devmind')
|
|
216
|
+
.option('-p, --path <path>', 'Codebase path', '.')
|
|
217
|
+
.option('--json', 'Output as JSON')
|
|
218
|
+
.action(async (options) => {
|
|
219
|
+
const { status } = await import('./commands/status.js');
|
|
220
|
+
await status(options);
|
|
221
|
+
});
|
|
222
|
+
program
|
|
223
|
+
.command('audit')
|
|
224
|
+
.description('Audit codebase coverage against recorded learnings')
|
|
225
|
+
.option('-o, --output <dir>', 'Output directory', '.devmind')
|
|
226
|
+
.option('-p, --path <path>', 'Codebase path', '.')
|
|
227
|
+
.option('--json', 'Output as JSON')
|
|
228
|
+
.action(async (options) => {
|
|
229
|
+
const { audit } = await import('./commands/audit.js');
|
|
230
|
+
await audit(options);
|
|
231
|
+
const { runAutosave } = await import('./commands/autosave.js');
|
|
232
|
+
await runAutosave({
|
|
233
|
+
output: options.output || '.devmind',
|
|
234
|
+
path: options.path || '.',
|
|
235
|
+
source: 'audit',
|
|
236
|
+
note: 'Completed learning audit',
|
|
237
|
+
silent: true,
|
|
238
|
+
});
|
|
239
|
+
});
|
|
240
|
+
program
|
|
241
|
+
.command('extract')
|
|
242
|
+
.description('Extract learning candidates from code and analysis artifacts')
|
|
243
|
+
.option('-o, --output <dir>', 'Output directory', '.devmind')
|
|
244
|
+
.option('-p, --path <path>', 'Codebase path', '.')
|
|
245
|
+
.option('--apply', 'Append extracted learnings to memory/LEARN.md')
|
|
246
|
+
.option('--json', 'Output as JSON')
|
|
247
|
+
.action(async (options) => {
|
|
248
|
+
const { extract } = await import('./commands/extract.js');
|
|
249
|
+
await extract(options);
|
|
250
|
+
});
|
|
251
|
+
program
|
|
252
|
+
.command('autosave')
|
|
253
|
+
.description('Persist session journal/context and auto-apply extracted learnings')
|
|
254
|
+
.option('-o, --output <dir>', 'Output directory', '.devmind')
|
|
255
|
+
.option('-p, --path <path>', 'Codebase path', '.')
|
|
256
|
+
.option('--source <source>', 'Autosave source label', 'manual')
|
|
257
|
+
.option('--note <note>', 'Autosave note')
|
|
258
|
+
.option('--no-extract', 'Skip extraction/apply step')
|
|
259
|
+
.option('--json', 'Output as JSON')
|
|
260
|
+
.action(async (options) => {
|
|
261
|
+
const { autosave } = await import('./commands/autosave.js');
|
|
262
|
+
await autosave(options);
|
|
179
263
|
});
|
|
180
264
|
// Codebase Commands
|
|
181
265
|
program
|
|
@@ -213,6 +297,18 @@ program
|
|
|
213
297
|
// Generate unified docs (CLAUDE.md, etc.)
|
|
214
298
|
await generateUnifiedDocs(outputDir);
|
|
215
299
|
logger.success('Scan complete!');
|
|
300
|
+
logger.info('Session startup context:');
|
|
301
|
+
logger.info(` 1. Read ${outputDir}/AGENTS.md`);
|
|
302
|
+
logger.info(` 2. Read ${outputDir}/index.json`);
|
|
303
|
+
logger.info('Tip: run `devmind status` to verify freshness.');
|
|
304
|
+
const { runAutosave } = await import('./commands/autosave.js');
|
|
305
|
+
await runAutosave({
|
|
306
|
+
output: outputDir,
|
|
307
|
+
path: options.path || '.',
|
|
308
|
+
source: 'scan',
|
|
309
|
+
note: 'Completed codebase scan',
|
|
310
|
+
silent: true,
|
|
311
|
+
});
|
|
216
312
|
}
|
|
217
313
|
catch (error) {
|
|
218
314
|
logger.error('Failed to scan codebase', error);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,8 +29,13 @@ export function parseFile(filePath) {
|
|
|
29
29
|
* Check if a node is exported
|
|
30
30
|
*/
|
|
31
31
|
function isExported(node) {
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
const explicitExport = (ts.getCombinedModifierFlags(node) & ts.ModifierFlags.Export) !== 0;
|
|
33
|
+
const defaultExport = ts.isExportAssignment(node) ||
|
|
34
|
+
(ts.isFunctionDeclaration(node) &&
|
|
35
|
+
!!node.modifiers?.some((m) => m.kind === ts.SyntaxKind.DefaultKeyword)) ||
|
|
36
|
+
(ts.isClassDeclaration(node) &&
|
|
37
|
+
!!node.modifiers?.some((m) => m.kind === ts.SyntaxKind.DefaultKeyword));
|
|
38
|
+
return explicitExport || defaultExport;
|
|
34
39
|
}
|
|
35
40
|
/**
|
|
36
41
|
* Extract details from an exported node
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/codebase/parsers/typescript.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAUzB;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,QAAgB;IACxC,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE5F,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;QACnC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACjD,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,IAAa;IAC/B,
|
|
1
|
+
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/codebase/parsers/typescript.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAUzB;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,QAAgB;IACxC,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE5F,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;QACnC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACjD,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,IAAa;IAC/B,MAAM,cAAc,GAClB,CAAC,EAAE,CAAC,wBAAwB,CAAC,IAAsB,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxF,MAAM,aAAa,GACjB,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAC3B,CAAC,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAC7B,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACzE,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAC1B,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;IAE5E,OAAO,cAAc,IAAI,aAAa,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CACrB,IAAa,EACb,UAAyB;IAEzB,+HAA+H;IAC/H,kEAAkE;IAElE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACvC,MAAM,QAAQ,GAAG,IAA8B,CAAC;YAChD,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS;gBACtC,SAAS,EAAE,oBAAoB,CAAC,QAAQ,EAAE,UAAU,CAAC;gBACrD,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC;aACxB,CAAC;QACJ,CAAC;QAED,KAAK,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACpC,MAAM,SAAS,GAAG,IAA2B,CAAC;YAC9C,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS;gBACvC,OAAO,EAAE,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC;gBAC/C,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC;aACzB,CAAC;QACJ,CAAC;QAED,KAAK,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC;YACxC,MAAM,aAAa,GAAG,IAA+B,CAAC;YACtD,OAAO;gBACL,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI;gBAC7B,SAAS,EAAE,aAAa,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE;gBACjD,GAAG,EAAE,QAAQ,CAAC,aAAa,CAAC;aAC7B,CAAC;QACJ,CAAC;QAED,KAAK,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,IAA+B,CAAC;YACjD,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI;gBACxB,SAAS,EAAE,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;gBACvC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC;aACxB,CAAC;QACJ,CAAC;QAED,KAAK,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACrC,MAAM,OAAO,GAAG,IAA4B,CAAC;YAC7C,MAAM,YAAY,GAAiB,EAAE,CAAC;YACtC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACpD,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC/B,YAAY,CAAC,IAAI,CAAC;wBAChB,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;wBACnC,SAAS,EAAE,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;wBACnD,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,qDAAqD;qBAC9E,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;YACH,OAAO,YAAY,CAAC;QACtB,CAAC;QAED;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,IAA4B,EAAE,UAAyB;IACnF,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC;IAE1C,OAAO,YAAY,IAAI,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAAyB,EAAE,UAAyB;IAC3E,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC9B,0CAA0C;QAC1C,MAAM,SAAS,GAAG,CAAC,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzF,MAAM,WAAW,GAAG,CAAC,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAE7F,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/B,IACE,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,iBAAiB;gBAC/C,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW,EACzC,CAAC;gBACD,MAAM,MAAM,GAAG,MAA0D,CAAC;gBAC1E,8EAA8E;gBAC9E,IAAI,IAAI,GAAG,aAAa,CAAC;gBACzB,IAAI,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;oBAClD,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACzC,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9E,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7E,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC;YAClD,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;gBAC7D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CAAC,IAAa;IAC7B,MAAM,KAAK,GAAI,IAAY,CAAC,KAAK,CAAC,CAAC,uEAAuE;IAC1G,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import { glob } from 'glob';
|
|
4
|
+
import { logger, ensureDir, readFileSafe, writeFileSafe } from '../core/index.js';
|
|
5
|
+
const STOPWORDS = new Set([
|
|
6
|
+
'with',
|
|
7
|
+
'from',
|
|
8
|
+
'that',
|
|
9
|
+
'this',
|
|
10
|
+
'always',
|
|
11
|
+
'never',
|
|
12
|
+
'should',
|
|
13
|
+
'would',
|
|
14
|
+
'could',
|
|
15
|
+
'must',
|
|
16
|
+
'using',
|
|
17
|
+
'across',
|
|
18
|
+
'before',
|
|
19
|
+
'after',
|
|
20
|
+
'where',
|
|
21
|
+
'when',
|
|
22
|
+
'then',
|
|
23
|
+
'they',
|
|
24
|
+
'them',
|
|
25
|
+
'into',
|
|
26
|
+
'your',
|
|
27
|
+
'ours',
|
|
28
|
+
'their',
|
|
29
|
+
'have',
|
|
30
|
+
'has',
|
|
31
|
+
'will',
|
|
32
|
+
'been',
|
|
33
|
+
'make',
|
|
34
|
+
'more',
|
|
35
|
+
'less',
|
|
36
|
+
]);
|
|
37
|
+
function parseLearnings(content) {
|
|
38
|
+
const sections = content
|
|
39
|
+
.split('\n---')
|
|
40
|
+
.map((section) => section.trim())
|
|
41
|
+
.filter((section) => section.startsWith('## '));
|
|
42
|
+
const parsed = [];
|
|
43
|
+
for (const section of sections) {
|
|
44
|
+
const lines = section.split('\n').filter((line) => line.trim().length > 0);
|
|
45
|
+
const header = lines[0].replace(/^##\s+/, '');
|
|
46
|
+
const match = header.match(/^(.+?)\s+-\s+(.+)$/);
|
|
47
|
+
if (!match)
|
|
48
|
+
continue;
|
|
49
|
+
parsed.push({
|
|
50
|
+
timestamp: match[1].trim(),
|
|
51
|
+
category: match[2].trim(),
|
|
52
|
+
content: lines.slice(1).join(' ').trim(),
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
return parsed;
|
|
56
|
+
}
|
|
57
|
+
function buildKeywords(text) {
|
|
58
|
+
const tokens = text
|
|
59
|
+
.toLowerCase()
|
|
60
|
+
.replace(/[^a-z0-9_\s-]/g, ' ')
|
|
61
|
+
.split(/\s+/)
|
|
62
|
+
.map((token) => token.trim())
|
|
63
|
+
.filter((token) => token.length >= 4 && !STOPWORDS.has(token));
|
|
64
|
+
return [...new Set(tokens)].slice(0, 6);
|
|
65
|
+
}
|
|
66
|
+
function hasKeywordCoverage(content, keywords) {
|
|
67
|
+
const lc = content.toLowerCase();
|
|
68
|
+
let hits = 0;
|
|
69
|
+
for (const keyword of keywords) {
|
|
70
|
+
if (lc.includes(keyword))
|
|
71
|
+
hits += 1;
|
|
72
|
+
if (hits >= 2)
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
export async function audit(options) {
|
|
78
|
+
const outputDir = options.output || '.devmind';
|
|
79
|
+
const rootPath = path.resolve(options.path || '.');
|
|
80
|
+
const learnPath = path.join(outputDir, 'memory', 'LEARN.md');
|
|
81
|
+
if (!fs.existsSync(learnPath)) {
|
|
82
|
+
logger.error(`Learning file not found: ${learnPath}`);
|
|
83
|
+
logger.info('Run: devmind learn "..." or devmind extract --apply');
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const learnContent = await readFileSafe(learnPath);
|
|
87
|
+
const learnings = parseLearnings(learnContent);
|
|
88
|
+
if (learnings.length === 0) {
|
|
89
|
+
logger.warn('No learnings found to audit.');
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const files = await glob('**/*.{ts,tsx,js,jsx,py,go,java,rb,php,rs}', {
|
|
93
|
+
cwd: rootPath,
|
|
94
|
+
ignore: ['node_modules/**', '.git/**', '.devmind/**', 'dist/**', 'build/**'],
|
|
95
|
+
nodir: true,
|
|
96
|
+
});
|
|
97
|
+
const fileContents = new Map();
|
|
98
|
+
for (const relPath of files) {
|
|
99
|
+
const absPath = path.join(rootPath, relPath);
|
|
100
|
+
try {
|
|
101
|
+
fileContents.set(relPath, fs.readFileSync(absPath, 'utf-8'));
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// Ignore unreadable files.
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
const results = [];
|
|
108
|
+
for (const learning of learnings) {
|
|
109
|
+
const keywords = buildKeywords(learning.content);
|
|
110
|
+
const matchedFiles = [];
|
|
111
|
+
if (keywords.length > 0) {
|
|
112
|
+
for (const [relPath, content] of fileContents.entries()) {
|
|
113
|
+
if (hasKeywordCoverage(content, keywords)) {
|
|
114
|
+
matchedFiles.push(relPath);
|
|
115
|
+
if (matchedFiles.length >= 5)
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
results.push({
|
|
121
|
+
learning,
|
|
122
|
+
status: matchedFiles.length > 0 ? 'covered' : 'needs-review',
|
|
123
|
+
matchedFiles,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
const covered = results.filter((r) => r.status === 'covered').length;
|
|
127
|
+
const needsReview = results.length - covered;
|
|
128
|
+
const reportPath = path.join(outputDir, 'analysis', 'AUDIT_REPORT.md');
|
|
129
|
+
await ensureDir(path.dirname(reportPath));
|
|
130
|
+
let report = '# Learning Audit Report\n\n';
|
|
131
|
+
report += `Generated: ${new Date().toISOString()}\n\n`;
|
|
132
|
+
report += `- Total learnings: ${results.length}\n`;
|
|
133
|
+
report += `- Covered: ${covered}\n`;
|
|
134
|
+
report += `- Needs review: ${needsReview}\n\n`;
|
|
135
|
+
for (const item of results) {
|
|
136
|
+
report += `## ${item.status === 'covered' ? 'Covered' : 'Needs Review'} - ${item.learning.category}\n\n`;
|
|
137
|
+
report += `${item.learning.content}\n\n`;
|
|
138
|
+
if (item.matchedFiles.length > 0) {
|
|
139
|
+
report += 'Matched files:\n';
|
|
140
|
+
for (const file of item.matchedFiles) {
|
|
141
|
+
report += `- \`${file}\`\n`;
|
|
142
|
+
}
|
|
143
|
+
report += '\n';
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
report += 'Matched files: none\n\n';
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
await writeFileSafe(reportPath, report);
|
|
150
|
+
if (options.json) {
|
|
151
|
+
console.log(JSON.stringify({
|
|
152
|
+
total: results.length,
|
|
153
|
+
covered,
|
|
154
|
+
needsReview,
|
|
155
|
+
report: reportPath,
|
|
156
|
+
}, null, 2));
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
logger.info('Learning audit complete.');
|
|
160
|
+
logger.info(`Total: ${results.length}`);
|
|
161
|
+
logger.info(`Covered: ${covered}`);
|
|
162
|
+
logger.info(`Needs review: ${needsReview}`);
|
|
163
|
+
logger.info(`Report: ${reportPath}`);
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
interface AutosaveOptions {
|
|
2
|
+
output?: string;
|
|
3
|
+
path?: string;
|
|
4
|
+
source?: string;
|
|
5
|
+
note?: string;
|
|
6
|
+
noExtract?: boolean;
|
|
7
|
+
extract?: boolean;
|
|
8
|
+
json?: boolean;
|
|
9
|
+
silent?: boolean;
|
|
10
|
+
}
|
|
11
|
+
interface AutosaveResult {
|
|
12
|
+
journalPath: string;
|
|
13
|
+
sessionContextPath: string;
|
|
14
|
+
extracted: number;
|
|
15
|
+
applied: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function runAutosave(options: AutosaveOptions): Promise<AutosaveResult>;
|
|
18
|
+
export declare function autosave(options: AutosaveOptions): Promise<void>;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import { ensureDir, readFileSafe, writeFileSafe, logger } from '../core/index.js';
|
|
3
|
+
import { runExtraction } from './extract.js';
|
|
4
|
+
function createSessionId() {
|
|
5
|
+
return `sess_${Date.now()}`;
|
|
6
|
+
}
|
|
7
|
+
async function appendJournal(outputDir, source, note) {
|
|
8
|
+
const journalPath = path.join(outputDir, 'memory', 'SESSION_JOURNAL.md');
|
|
9
|
+
await ensureDir(path.dirname(journalPath));
|
|
10
|
+
let existing = '';
|
|
11
|
+
try {
|
|
12
|
+
existing = await readFileSafe(journalPath);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
existing = '# Session Journal\n\n> Incremental execution journal for crash-safe recovery.\n\n';
|
|
16
|
+
}
|
|
17
|
+
const line = `- ${new Date().toISOString()} | ${source}${note ? ` | ${note}` : ''}\n`;
|
|
18
|
+
await writeFileSafe(journalPath, `${existing}${line}`);
|
|
19
|
+
return journalPath;
|
|
20
|
+
}
|
|
21
|
+
async function updateSessionContext(outputDir, source, note) {
|
|
22
|
+
const contextPath = path.join(outputDir, 'context', 'SESSION_CONTEXT.json');
|
|
23
|
+
await ensureDir(path.dirname(contextPath));
|
|
24
|
+
let context = {};
|
|
25
|
+
try {
|
|
26
|
+
const existing = await readFileSafe(contextPath);
|
|
27
|
+
context = JSON.parse(existing);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
context = {};
|
|
31
|
+
}
|
|
32
|
+
const now = new Date().toISOString();
|
|
33
|
+
context.session = {
|
|
34
|
+
id: context.session?.id || createSessionId(),
|
|
35
|
+
...context.session,
|
|
36
|
+
lastAutosaveAt: now,
|
|
37
|
+
lastAutosaveSource: source,
|
|
38
|
+
};
|
|
39
|
+
context.state = {
|
|
40
|
+
...context.state,
|
|
41
|
+
lastAction: note || source,
|
|
42
|
+
};
|
|
43
|
+
await writeFileSafe(contextPath, JSON.stringify(context, null, 2));
|
|
44
|
+
return contextPath;
|
|
45
|
+
}
|
|
46
|
+
export async function runAutosave(options) {
|
|
47
|
+
const outputDir = options.output || '.devmind';
|
|
48
|
+
const source = options.source || 'manual';
|
|
49
|
+
const skipExtract = options.noExtract || options.extract === false;
|
|
50
|
+
const journalPath = await appendJournal(outputDir, source, options.note);
|
|
51
|
+
const sessionContextPath = await updateSessionContext(outputDir, source, options.note);
|
|
52
|
+
let extracted = 0;
|
|
53
|
+
let applied = false;
|
|
54
|
+
if (!skipExtract) {
|
|
55
|
+
const extractResult = await runExtraction({
|
|
56
|
+
output: outputDir,
|
|
57
|
+
path: options.path || '.',
|
|
58
|
+
apply: true,
|
|
59
|
+
silent: true,
|
|
60
|
+
});
|
|
61
|
+
extracted = extractResult.extracted;
|
|
62
|
+
applied = extractResult.applied;
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
journalPath,
|
|
66
|
+
sessionContextPath,
|
|
67
|
+
extracted,
|
|
68
|
+
applied,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
export async function autosave(options) {
|
|
72
|
+
const result = await runAutosave(options);
|
|
73
|
+
if (options.json) {
|
|
74
|
+
console.log(JSON.stringify(result, null, 2));
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (!options.silent) {
|
|
78
|
+
logger.info('Autosave complete.');
|
|
79
|
+
logger.info(`Journal: ${result.journalPath}`);
|
|
80
|
+
logger.info(`Session context: ${result.sessionContextPath}`);
|
|
81
|
+
logger.info(`Learnings extracted: ${result.extracted}`);
|
|
82
|
+
logger.info(`Applied to LEARN.md: ${result.applied ? 'yes' : 'no'}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=autosave.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autosave.js","sourceRoot":"","sources":["../../src/commands/autosave.ts"],"names":[],"mappings":"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"}
|