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 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 Slicing** - "Zoom in" on specific modules (`devmind context`)
22
- - **Multi-Database Support** - PostgreSQL, MySQL, SQLite, MongoDB, Firebase
23
- - **Memory System** - Checkpoints, `LEARN.md`, session history
24
- - **Evolution Tracking** - Track both schema and codebase changes over time
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
- │ ├── schema-evolution.md
129
- │ ├── codebase-evolution.md
130
- └── session-history.md
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.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(learn);
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
- return ((ts.getCombinedModifierFlags(node) & ts.ModifierFlags.Export) !== 0 ||
33
- (!!node.parent && node.parent.kind === ts.SyntaxKind.SourceFile));
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":"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"}
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/codebase/parsers/typescript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface AuditOptions {
2
+ output?: string;
3
+ path?: string;
4
+ json?: boolean;
5
+ }
6
+ export declare function audit(options: AuditOptions): Promise<void>;
7
+ export {};
@@ -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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"}