devmind 1.0.2 → 1.1.1

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 (134) hide show
  1. package/README.md +138 -162
  2. package/dist/cli/handlers.d.ts +2 -0
  3. package/dist/cli/handlers.js +140 -0
  4. package/dist/cli/handlers.js.map +1 -0
  5. package/dist/cli/register-all.d.ts +2 -0
  6. package/dist/cli/register-all.js +11 -0
  7. package/dist/cli/register-all.js.map +1 -0
  8. package/dist/cli/register-analysis.d.ts +2 -0
  9. package/dist/cli/register-analysis.js +137 -0
  10. package/dist/cli/register-analysis.js.map +1 -0
  11. package/dist/cli/register-codebase.d.ts +2 -0
  12. package/dist/cli/register-codebase.js +22 -0
  13. package/dist/cli/register-codebase.js.map +1 -0
  14. package/dist/cli/register-database.d.ts +2 -0
  15. package/dist/cli/register-database.js +48 -0
  16. package/dist/cli/register-database.js.map +1 -0
  17. package/dist/cli/register-memory.d.ts +2 -0
  18. package/dist/cli/register-memory.js +58 -0
  19. package/dist/cli/register-memory.js.map +1 -0
  20. package/dist/cli.js +9 -316
  21. package/dist/cli.js.map +1 -1
  22. package/dist/codebase/generators/architecture-extractor.d.ts +41 -0
  23. package/dist/codebase/generators/architecture-extractor.js +388 -0
  24. package/dist/codebase/generators/architecture-extractor.js.map +1 -0
  25. package/dist/codebase/generators/architecture.d.ts +2 -4
  26. package/dist/codebase/generators/architecture.js +123 -30
  27. package/dist/codebase/generators/architecture.js.map +1 -1
  28. package/dist/codebase/generators/modules.js +8 -8
  29. package/dist/codebase/generators/overview.js +24 -24
  30. package/dist/codebase/index.js +3 -3
  31. package/dist/codebase/index.js.map +1 -1
  32. package/dist/codebase/parsers/typescript.d.ts +1 -0
  33. package/dist/codebase/parsers/typescript.js +12 -0
  34. package/dist/codebase/parsers/typescript.js.map +1 -1
  35. package/dist/codebase/scanners/filesystem.d.ts +1 -0
  36. package/dist/codebase/scanners/filesystem.js +128 -4
  37. package/dist/codebase/scanners/filesystem.js.map +1 -1
  38. package/dist/commands/analyze.d.ts +1 -0
  39. package/dist/commands/analyze.js +172 -24
  40. package/dist/commands/analyze.js.map +1 -1
  41. package/dist/commands/audit-design.d.ts +8 -0
  42. package/dist/commands/audit-design.js +158 -0
  43. package/dist/commands/audit-design.js.map +1 -0
  44. package/dist/commands/audit-report.d.ts +18 -0
  45. package/dist/commands/audit-report.js +30 -0
  46. package/dist/commands/audit-report.js.map +1 -0
  47. package/dist/commands/audit-source.d.ts +21 -0
  48. package/dist/commands/audit-source.js +59 -0
  49. package/dist/commands/audit-source.js.map +1 -0
  50. package/dist/commands/audit.d.ts +1 -0
  51. package/dist/commands/audit.js +174 -73
  52. package/dist/commands/audit.js.map +1 -1
  53. package/dist/commands/claude-plugin.d.ts +8 -0
  54. package/dist/commands/claude-plugin.js +123 -0
  55. package/dist/commands/claude-plugin.js.map +1 -0
  56. package/dist/commands/codex-plugin.d.ts +9 -0
  57. package/dist/commands/codex-plugin.js +145 -0
  58. package/dist/commands/codex-plugin.js.map +1 -0
  59. package/dist/commands/context.js +66 -5
  60. package/dist/commands/context.js.map +1 -1
  61. package/dist/commands/design-system.d.ts +8 -0
  62. package/dist/commands/design-system.js +95 -0
  63. package/dist/commands/design-system.js.map +1 -0
  64. package/dist/commands/extract.d.ts +13 -0
  65. package/dist/commands/extract.js +83 -17
  66. package/dist/commands/extract.js.map +1 -1
  67. package/dist/commands/openclaw-plugin.d.ts +8 -0
  68. package/dist/commands/openclaw-plugin.js +103 -0
  69. package/dist/commands/openclaw-plugin.js.map +1 -0
  70. package/dist/commands/retrieve.d.ts +12 -0
  71. package/dist/commands/retrieve.js +234 -0
  72. package/dist/commands/retrieve.js.map +1 -0
  73. package/dist/commands/status.d.ts +1 -0
  74. package/dist/commands/status.js +54 -18
  75. package/dist/commands/status.js.map +1 -1
  76. package/dist/core/cache-json.d.ts +7 -0
  77. package/dist/core/cache-json.js +60 -0
  78. package/dist/core/cache-json.js.map +1 -0
  79. package/dist/core/errors.d.ts +2 -0
  80. package/dist/core/errors.js +49 -1
  81. package/dist/core/errors.js.map +1 -1
  82. package/dist/core/index.d.ts +4 -0
  83. package/dist/core/index.js +4 -0
  84. package/dist/core/index.js.map +1 -1
  85. package/dist/core/learning-parser.d.ts +6 -0
  86. package/dist/core/learning-parser.js +23 -0
  87. package/dist/core/learning-parser.js.map +1 -0
  88. package/dist/core/profile.d.ts +18 -0
  89. package/dist/core/profile.js +37 -0
  90. package/dist/core/profile.js.map +1 -0
  91. package/dist/core/source-file-cache.d.ts +13 -0
  92. package/dist/core/source-file-cache.js +88 -0
  93. package/dist/core/source-file-cache.js.map +1 -0
  94. package/dist/database/cli/register-all.d.ts +2 -0
  95. package/dist/database/cli/register-all.js +9 -0
  96. package/dist/database/cli/register-all.js.map +1 -0
  97. package/dist/database/cli/register-database.d.ts +2 -0
  98. package/dist/database/cli/register-database.js +48 -0
  99. package/dist/database/cli/register-database.js.map +1 -0
  100. package/dist/database/cli/register-interactive.d.ts +2 -0
  101. package/dist/database/cli/register-interactive.js +29 -0
  102. package/dist/database/cli/register-interactive.js.map +1 -0
  103. package/dist/database/cli/register-memory.d.ts +2 -0
  104. package/dist/database/cli/register-memory.js +47 -0
  105. package/dist/database/cli/register-memory.js.map +1 -0
  106. package/dist/database/cli.js +5 -112
  107. package/dist/database/cli.js.map +1 -1
  108. package/dist/database/commands/checkpoint.js +8 -10
  109. package/dist/database/commands/checkpoint.js.map +1 -1
  110. package/dist/database/commands/generate.d.ts +1 -0
  111. package/dist/database/commands/generate.js +28 -20
  112. package/dist/database/commands/generate.js.map +1 -1
  113. package/dist/database/commands/handoff.js +126 -125
  114. package/dist/database/commands/handoff.js.map +1 -1
  115. package/dist/database/commands/learn.d.ts +4 -0
  116. package/dist/database/commands/learn.js +249 -43
  117. package/dist/database/commands/learn.js.map +1 -1
  118. package/dist/database/commands/memory.js +114 -114
  119. package/dist/database/commands/validate.js +6 -4
  120. package/dist/database/commands/validate.js.map +1 -1
  121. package/dist/database/commands/watch.js +2 -2
  122. package/dist/database/commands/watch.js.map +1 -1
  123. package/dist/database/extractors/mysql.js +45 -45
  124. package/dist/database/extractors/postgres.js +54 -54
  125. package/dist/database/extractors/sqlite.js +8 -8
  126. package/dist/database/generators/templates.js +534 -534
  127. package/dist/database/generators/templates.js.map +1 -1
  128. package/dist/database/utils/json-output.d.ts +4 -0
  129. package/dist/database/utils/json-output.js +7 -0
  130. package/dist/database/utils/json-output.js.map +1 -1
  131. package/dist/generators/unified.d.ts +13 -0
  132. package/dist/generators/unified.js +391 -46
  133. package/dist/generators/unified.js.map +1 -1
  134. package/package.json +86 -78
package/README.md CHANGED
@@ -1,193 +1,169 @@
1
- # DevMind
2
-
3
- > AI Memory Layer for development - Complete project context (codebase + database + memory)
4
-
5
- [![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
6
-
7
- ## Overview
8
-
9
- **DevMind** provides AI assistants with complete understanding of your project by combining:
10
-
11
- - 🗂️ **Codebase Structure** - Hierarchical documentation of your code
12
- - 🗄️ **Database Schema** - Complete schema analysis with patterns
13
- - 🧠 **Persistent Memory** - Checkpoints, learnings, and evolution tracking
14
- - 🔍 **Context Slicing** - Focused context for optimized token usage
15
-
16
- A single workflow generates everything your AI needs to understand your project deeply.
17
-
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
29
- - **AI-Optimized Output** - Tailored for Claude, Cursor, Windsurf, and OpenClaw
30
-
31
- ## Quick Start
32
-
33
- ```bash
34
- # Install
35
- npm install -g devmind
36
-
37
- # Zero-Friction (auto-detect DB config and generate DB context)
38
- devmind generate
39
-
40
- # Full context (database + codebase)
41
- devmind generate --all
42
-
43
- # Or detailed setup
44
- devmind init
45
- ```
46
-
47
- ## Installation
48
-
49
- ```bash
50
- npm install -g devmind
51
- # or
52
- pnpm add -g devmind
53
- ```
54
-
55
- ## Usage
56
-
57
- ### ⚡ Zero-Friction Generation
58
-
59
- DevMind automatically detects your database configuration from `.env`, `prisma/schema.prisma`, `drizzle.config.ts`, or saved config.
60
-
61
- ```bash
62
- # Auto-detects DB and generates database context
63
- devmind generate
64
-
65
- # Generate full context (database + codebase)
66
- devmind generate --all
67
- ```
68
-
69
- If detection fails (or for first run):
70
-
71
- ```bash
72
- devmind init --url "postgres://..."
73
- ```
74
-
75
- ### Context Slicing (Token Efficient)
76
-
77
- ```bash
78
- # Get high-level map
79
- devmind context
80
-
81
- # Focus on specific module
82
- devmind context --focus src/database
83
- ```
84
-
85
- ### Memory Commands
86
-
87
- ```bash
88
- # Save architectural decision
89
- devmind learn "Services use dependency injection" --category architecture
90
-
91
- # Save checkpoint
92
- devmind checkpoint -m "Before refactoring auth"
93
-
94
- # View history
95
- devmind history --unified
96
- ```
97
-
98
- ### Analyze Code-to-Database Usage
1
+ # DevMind
2
+
3
+ > Deterministic context and memory layer for AI coding agents.
4
+ > Let Agent remember your design system, general context, and database.
5
+
6
+ ## Install
7
+
8
+ ```bash
9
+ npm install -g devmind
10
+ ```
11
+
12
+ ## Integrations
13
+
14
+ ### OpenClaw
15
+
16
+ ```bash
17
+ devmind openclaw-plugin --force
18
+ ```
19
+
20
+ Optional:
21
+
22
+ ```bash
23
+ devmind openclaw-plugin --project --force
24
+ ```
25
+
26
+ Default install target:
27
+
28
+ - `~/.openclaw/skills/devmind/SKILL.md`
29
+
30
+ ### Claude Code
99
31
 
100
32
  ```bash
101
- devmind analyze -p ./my-project
33
+ devmind claude-plugin --force
102
34
  ```
103
35
 
104
- ### Context Health and Drift Recommendations
36
+ This creates:
37
+
38
+ - `.claude-plugin/marketplace.json`
39
+ - `.claude-plugin/skills/devmind/SKILL.md`
40
+
41
+ Then install that local folder in Claude Code using your plugin installer flow.
42
+
43
+ ### Codex (CLI + App)
44
+
45
+ ```bash
46
+ devmind codex-plugin --force
47
+ ```
48
+
49
+ Optional:
50
+
51
+ ```bash
52
+ # Also install project-local skill
53
+ devmind codex-plugin --project --force
54
+
55
+ # Skip legacy mirror paths
56
+ devmind codex-plugin --no-legacy --force
57
+ ```
58
+
59
+ Default install targets:
60
+
61
+ - `~/.agents/skills/devmind/SKILL.md`
62
+ - `CODEX_HOME/skills/devmind/SKILL.md`
63
+ - `~/.codex/skills/devmind/SKILL.md`
64
+
65
+ ## Quick Start
105
66
 
106
67
  ```bash
107
- # Show context freshness + recommended next command
108
- devmind status
68
+ # 1) Design system policy first
69
+ devmind design-system --init
70
+
71
+ # 2) Build overall context
72
+ devmind generate --all
109
73
 
110
- # Machine-readable preflight
74
+ # 3) Validate freshness/recommendation
111
75
  devmind status --json
112
76
  ```
113
77
 
114
- ### Learning Quality Loop
78
+ You are ready when `.devmind/AGENTS.md` and `.devmind/index.json` exist.
79
+
80
+ ## CI and npm Publish
81
+
82
+ - CI runs on pushes to `main` and pull requests via `.github/workflows/ci.yml`.
83
+ - npm publishing runs via `.github/workflows/publish-npm.yml` on tags like `v1.2.3` or manual dispatch.
84
+ - Add repository secret `NPM_TOKEN` (npm automation token with publish permission).
85
+ - Release by bumping `package.json` version, pushing commit, then pushing a matching tag:
115
86
 
116
87
  ```bash
117
- # Audit codebase coverage against LEARN.md
118
- devmind audit
88
+ git tag v1.1.1
89
+ git push origin v1.1.1
90
+ ```
119
91
 
120
- # Extract learning candidates to report
121
- devmind extract
92
+ ## Canonical Flow
122
93
 
123
- # Extract and append learnings to memory/LEARN.md
124
- devmind extract --apply
94
+ 1. Design system
95
+ 2. Overall context
96
+ 3. Database checks
97
+
98
+ ## Quick Command Guide
99
+
100
+ ### Context lifecycle
101
+
102
+ ```bash
103
+ devmind generate --all
104
+ devmind scan
105
+ devmind status --json
106
+ ```
107
+
108
+ ### Focused context
109
+
110
+ ```bash
111
+ devmind context --focus src/features
112
+ devmind context --query runbook
113
+ devmind retrieve -q "auth middleware flow" --type architecture --json
125
114
  ```
126
115
 
127
- ### Crash-Safe Session Persistence
116
+ ### Learning loop
128
117
 
129
118
  ```bash
130
- # Persist session journal + context + extracted learnings
119
+ devmind audit
120
+ devmind extract
121
+ devmind extract --apply
131
122
  devmind autosave --source task-end
123
+ ```
132
124
 
133
- # Persist without extraction/apply
134
- devmind autosave --no-extract
125
+ ### Database validation
126
+
127
+ ```bash
128
+ devmind analyze
129
+ devmind validate --strict
135
130
  ```
136
131
 
137
- ### Agent-First Session Flow
132
+ ## Agent-First Runbook
138
133
 
139
134
  ```bash
140
135
  # 1) Preflight
141
136
  devmind status --json
142
137
 
143
- # 2) If stale/missing, run recommendedCommand from status output
144
- # 3) Re-check
145
- devmind status --json
138
+ # 2) If stale, run recommendedCommand
139
+
140
+ # 3) Execute with focused retrieval
141
+ devmind retrieve -q "<task query>" --json
146
142
 
147
- # 4) Do task, then autosave
143
+ # 4) Persist memory
148
144
  devmind autosave --source task-end
149
145
  ```
150
-
151
- ## Integration
152
-
153
- ### OpenClaw
154
-
155
- DevMind is optimized for OpenClaw agents.
156
- See [OpenClaw Integration Skill](integrations/openclaw/SKILL.md) for agent instructions.
157
-
158
- ### Cursor / Windsurf / Custom Agents
159
-
160
- 1. Run `devmind generate --all`
161
- 2. Point your AI to `.devmind/AGENTS.md`
162
- 3. See [AI Agent Integration Guide](docs/AI_INTEGRATION.md) for detailed patterns.
163
-
164
- ## Output Structure
165
-
166
- ```
146
+
147
+ ## Key Outputs
148
+
149
+ ```text
167
150
  .devmind/
168
- ├── codebase/
169
- │ ├── codebase-overview.md
170
- │ ├── architecture.md
171
- │ └── modules/
172
- ├── database/
173
- ├── schema-overview.md
174
- ├── schema.json
175
- └── ...
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
183
- ├── analysis/
184
- │ ├── CODE_DB_MAPPING.md
185
- │ └── UNUSED_TABLES.md
186
- ├── AGENTS.md # Unified context for AI
187
- ├── devmind-tools.json # Tool definitions for agents
188
- └── index.json
189
- ```
190
-
191
- ## License
192
-
193
- Apache 2.0 © Nyan Lin Maung
151
+ +-- AGENTS.md
152
+ +-- index.json
153
+ +-- design-system.json
154
+ +-- devmind-tools.json
155
+ +-- analysis/
156
+ | +-- AUDIT_REPORT.md
157
+ | +-- DESIGN_SYSTEM_AUDIT.md
158
+ | +-- CODE_DB_MAPPING.md
159
+ +-- memory/
160
+ | +-- LEARN.md
161
+ | +-- checkpoints/
162
+ | +-- SESSION_JOURNAL.md
163
+ +-- codebase/
164
+ +-- database/
165
+ ```
166
+
167
+ ## License
168
+
169
+ Apache 2.0 (c) Nyan Lin Maung
@@ -0,0 +1,2 @@
1
+ export declare function runGenerateCommand(options: Record<string, unknown>): Promise<void>;
2
+ export declare function runScanCommand(options: Record<string, unknown>): Promise<void>;
@@ -0,0 +1,140 @@
1
+ import * as path from 'path';
2
+ import { logger, ensureDir, writeJSON, createProfiler, failCommand } from '../core/index.js';
3
+ import { generate as generateDatabase, MemoryInfrastructure } from '../database/index.js';
4
+ import { scanCodebase, saveScanResult, calculateCodebaseHash, getCodebaseStats, } from '../codebase/index.js';
5
+ import { generateUnifiedDocs } from '../generators/unified.js';
6
+ async function updateCodebaseMemory(outputDir, structure, profiler) {
7
+ try {
8
+ const memory = new MemoryInfrastructure();
9
+ const codebaseHash = calculateCodebaseHash(structure);
10
+ const codebaseStats = getCodebaseStats(structure);
11
+ await profiler.section('memory.updateSessionContext', async () => memory.updateSessionContext(outputDir, {
12
+ codebaseHash,
13
+ codebaseStats,
14
+ }));
15
+ logger.info('Updated session context with codebase stats');
16
+ await profiler.section('memory.updateCodebaseEvolution', async () => memory.updateCodebaseEvolution(outputDir, codebaseHash, codebaseStats));
17
+ }
18
+ catch (error) {
19
+ logger.warn(`Failed to update session context: ${error.message}`);
20
+ }
21
+ }
22
+ export async function runGenerateCommand(options) {
23
+ try {
24
+ const profiler = createProfiler(!!options.profile);
25
+ const { loadConfig } = await import('../utils/config-loader.js');
26
+ const { detectDatabaseConfig } = await import('../utils/config-detector.js');
27
+ let savedConfig = await profiler.section('config.load', async () => loadConfig(process.cwd()));
28
+ const mergedOptions = { ...savedConfig, ...options };
29
+ let connectionString = options.url || process.env.DATABASE_URL || savedConfig.databaseUrl;
30
+ let configModified = false;
31
+ if (!connectionString &&
32
+ (options.db === true || options.all === true || (!options.code && !options.db))) {
33
+ const detectedUrl = await profiler.section('config.detect', async () => detectDatabaseConfig(process.cwd()));
34
+ if (detectedUrl) {
35
+ logger.info(`Auto-detected database URL: ${detectedUrl.replace(/:[^:@]*@/, ':****@')}`);
36
+ connectionString = detectedUrl;
37
+ savedConfig = { ...savedConfig, databaseUrl: detectedUrl };
38
+ configModified = true;
39
+ }
40
+ }
41
+ if (connectionString) {
42
+ mergedOptions.url = connectionString;
43
+ }
44
+ if (configModified) {
45
+ const configPath = path.join(process.cwd(), '.devmind', 'devmind.config.json');
46
+ await profiler.section('config.persist', async () => {
47
+ await ensureDir(path.dirname(configPath));
48
+ await writeJSON(configPath, savedConfig);
49
+ });
50
+ logger.info(`Saved configuration to ${configPath}`);
51
+ }
52
+ const outputDir = mergedOptions.output || '.devmind';
53
+ const runAll = mergedOptions.all === true;
54
+ const runCode = mergedOptions.code === true || runAll;
55
+ const runDb = mergedOptions.db === true || runAll || (!runCode && mergedOptions.db !== true);
56
+ if (runDb) {
57
+ logger.info('Starting Database Generation...');
58
+ const dbOutputDir = path.join(outputDir, 'database');
59
+ await profiler.section('db.ensureDir', async () => ensureDir(dbOutputDir));
60
+ await profiler.section('db.generate', async () => generateDatabase({ ...mergedOptions, output: dbOutputDir }));
61
+ }
62
+ if (runCode) {
63
+ logger.info('Starting Codebase Generation...');
64
+ const rootPath = path.resolve(mergedOptions.path || '.');
65
+ const codebaseOutputDir = path.join(outputDir, 'codebase');
66
+ await profiler.section('code.ensureDir', async () => ensureDir(codebaseOutputDir));
67
+ const result = await profiler.section('code.scan', async () => scanCodebase(rootPath, codebaseOutputDir));
68
+ await profiler.section('code.save', async () => saveScanResult(result, codebaseOutputDir));
69
+ await updateCodebaseMemory(outputDir, result.structure, profiler);
70
+ await profiler.section('docs.unified', async () => generateUnifiedDocs(outputDir));
71
+ logger.success('Codebase context generated!');
72
+ }
73
+ if (runAll) {
74
+ logger.success('Unified Generation Complete!');
75
+ logger.info(`Context available in ${outputDir}`);
76
+ logger.info('Session startup context:');
77
+ logger.info(` 1. Read ${outputDir}/AGENTS.md`);
78
+ logger.info(` 2. Read ${outputDir}/index.json`);
79
+ logger.info('Tip: run `devmind status` to verify freshness.');
80
+ }
81
+ const { runAutosave } = await import('../commands/autosave.js');
82
+ await profiler.section('autosave.run', async () => runAutosave({
83
+ output: outputDir,
84
+ path: mergedOptions.path || '.',
85
+ source: 'generate',
86
+ note: runAll ? 'Completed unified generation' : 'Completed generation',
87
+ silent: true,
88
+ }));
89
+ const profile = profiler.report();
90
+ if (profile) {
91
+ logger.info('Performance Profile');
92
+ logger.info(`Total: ${profile.totalMs.toFixed(1)}ms`);
93
+ for (const step of profile.steps) {
94
+ logger.info(`- ${step.name}: ${step.ms.toFixed(1)}ms`);
95
+ }
96
+ }
97
+ }
98
+ catch (error) {
99
+ failCommand('Generation failed', error);
100
+ }
101
+ }
102
+ export async function runScanCommand(options) {
103
+ try {
104
+ const profiler = createProfiler(!!options.profile);
105
+ const rootPath = path.resolve(options.path || '.');
106
+ const outputDir = options.output || '.devmind';
107
+ logger.info(`Scanning codebase: ${rootPath}`);
108
+ const codebaseOutputDir = path.join(outputDir, 'codebase');
109
+ await profiler.section('code.ensureDir', async () => ensureDir(codebaseOutputDir));
110
+ const result = await profiler.section('code.scan', async () => scanCodebase(rootPath, codebaseOutputDir));
111
+ await profiler.section('code.save', async () => saveScanResult(result, codebaseOutputDir));
112
+ await updateCodebaseMemory(outputDir, result.structure, profiler);
113
+ await profiler.section('docs.unified', async () => generateUnifiedDocs(outputDir));
114
+ logger.success('Scan complete!');
115
+ logger.info('Session startup context:');
116
+ logger.info(` 1. Read ${outputDir}/AGENTS.md`);
117
+ logger.info(` 2. Read ${outputDir}/index.json`);
118
+ logger.info('Tip: run `devmind status` to verify freshness.');
119
+ const { runAutosave } = await import('../commands/autosave.js');
120
+ await profiler.section('autosave.run', async () => runAutosave({
121
+ output: outputDir,
122
+ path: options.path || '.',
123
+ source: 'scan',
124
+ note: 'Completed codebase scan',
125
+ silent: true,
126
+ }));
127
+ const profile = profiler.report();
128
+ if (profile) {
129
+ logger.info('Performance Profile');
130
+ logger.info(`Total: ${profile.totalMs.toFixed(1)}ms`);
131
+ for (const step of profile.steps) {
132
+ logger.info(`- ${step.name}: ${step.ms.toFixed(1)}ms`);
133
+ }
134
+ }
135
+ }
136
+ catch (error) {
137
+ failCommand('Failed to scan codebase', error);
138
+ }
139
+ }
140
+ //# sourceMappingURL=handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/cli/handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerAllCommands(program: Command): void;
@@ -0,0 +1,11 @@
1
+ import { registerDatabaseCommands } from './register-database.js';
2
+ import { registerMemoryCommands } from './register-memory.js';
3
+ import { registerAnalysisCommands } from './register-analysis.js';
4
+ import { registerCodebaseCommands } from './register-codebase.js';
5
+ export function registerAllCommands(program) {
6
+ registerDatabaseCommands(program);
7
+ registerMemoryCommands(program);
8
+ registerAnalysisCommands(program);
9
+ registerCodebaseCommands(program);
10
+ }
11
+ //# sourceMappingURL=register-all.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-all.js","sourceRoot":"","sources":["../../src/cli/register-all.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerAnalysisCommands(program: Command): void;
@@ -0,0 +1,137 @@
1
+ import { withCliErrorHandling } from '../core/index.js';
2
+ export function registerAnalysisCommands(program) {
3
+ program
4
+ .command('analyze')
5
+ .description('Analyze code-to-database usage')
6
+ .option('-o, --output <dir>', 'Output directory', '.devmind')
7
+ .option('-p, --path <path>', 'Codebase path to scan', '.')
8
+ .option('--profile', 'Print command phase timings')
9
+ .action(withCliErrorHandling('analyze', async (options) => {
10
+ const { analyze } = await import('../commands/analyze.js');
11
+ await analyze(options);
12
+ const { runAutosave } = await import('../commands/autosave.js');
13
+ await runAutosave({
14
+ output: options.output || '.devmind',
15
+ path: options.path || '.',
16
+ source: 'analyze',
17
+ note: 'Completed code-to-database analysis',
18
+ silent: true,
19
+ });
20
+ }));
21
+ program
22
+ .command('status')
23
+ .description('Show context status, freshness, and recommended next command')
24
+ .option('-o, --output <dir>', 'Output directory', '.devmind')
25
+ .option('-p, --path <path>', 'Codebase path', '.')
26
+ .option('--json', 'Output as JSON')
27
+ .option('--profile', 'Include timing data')
28
+ .action(withCliErrorHandling('status', async (options) => {
29
+ const { status } = await import('../commands/status.js');
30
+ await status(options);
31
+ }));
32
+ program
33
+ .command('audit')
34
+ .description('Audit codebase coverage against recorded learnings')
35
+ .option('-o, --output <dir>', 'Output directory', '.devmind')
36
+ .option('-p, --path <path>', 'Codebase path', '.')
37
+ .option('--json', 'Output as JSON')
38
+ .option('--profile', 'Include timing data')
39
+ .action(withCliErrorHandling('audit', async (options) => {
40
+ const { audit } = await import('../commands/audit.js');
41
+ await audit(options);
42
+ const { runAutosave } = await import('../commands/autosave.js');
43
+ await runAutosave({
44
+ output: options.output || '.devmind',
45
+ path: options.path || '.',
46
+ source: 'audit',
47
+ note: 'Completed learning audit',
48
+ silent: true,
49
+ });
50
+ }));
51
+ program
52
+ .command('extract')
53
+ .description('Extract learning candidates from code and analysis artifacts')
54
+ .option('-o, --output <dir>', 'Output directory', '.devmind')
55
+ .option('-p, --path <path>', 'Codebase path', '.')
56
+ .option('--apply', 'Append extracted learnings to memory/LEARN.md')
57
+ .option('--json', 'Output as JSON')
58
+ .option('--profile', 'Include timing data')
59
+ .action(withCliErrorHandling('extract', async (options) => {
60
+ const { extract } = await import('../commands/extract.js');
61
+ await extract(options);
62
+ }));
63
+ program
64
+ .command('design-system')
65
+ .description('Manage design system profile for UI alignment checks')
66
+ .option('-o, --output <dir>', 'Output directory', '.devmind')
67
+ .option('--init', 'Create default design system profile')
68
+ .option('--force', 'Overwrite existing profile when used with --init')
69
+ .option('--json', 'Output as JSON')
70
+ .action(withCliErrorHandling('design-system', async (options) => {
71
+ const { designSystem } = await import('../commands/design-system.js');
72
+ await designSystem(options);
73
+ }));
74
+ program
75
+ .command('retrieve')
76
+ .description('Retrieve focused context using index metadata and AGENTS sections')
77
+ .requiredOption('-q, --query <query>', 'Retrieval query')
78
+ .option('-o, --output <dir>', 'Output directory', '.devmind')
79
+ .option('--type <type>', 'Section type filter (architecture, database, codebase, etc.)')
80
+ .option('--tags <tags>', 'Comma-separated tag filter')
81
+ .option('--limit <n>', 'Max sections to return', '6')
82
+ .option('--max-words <n>', 'Approximate max words in output', '1400')
83
+ .option('--json', 'Output as JSON')
84
+ .option('--profile', 'Include timing data')
85
+ .action(withCliErrorHandling('retrieve', async (options) => {
86
+ const { retrieve } = await import('../commands/retrieve.js');
87
+ await retrieve(options);
88
+ }));
89
+ program
90
+ .command('autosave')
91
+ .description('Persist session journal/context and auto-apply extracted learnings')
92
+ .option('-o, --output <dir>', 'Output directory', '.devmind')
93
+ .option('-p, --path <path>', 'Codebase path', '.')
94
+ .option('--source <source>', 'Autosave source label', 'manual')
95
+ .option('--note <note>', 'Autosave note')
96
+ .option('--no-extract', 'Skip extraction/apply step')
97
+ .option('--json', 'Output as JSON')
98
+ .action(withCliErrorHandling('autosave', async (options) => {
99
+ const { autosave } = await import('../commands/autosave.js');
100
+ await autosave(options);
101
+ }));
102
+ program
103
+ .command('claude-plugin')
104
+ .description('Generate a local Claude Code plugin package for DevMind skills')
105
+ .option('-o, --output <dir>', 'Plugin output directory', '.claude-plugin')
106
+ .option('--name <name>', 'Plugin name', 'devmind')
107
+ .option('--force', 'Overwrite existing plugin files')
108
+ .option('--json', 'Output as JSON')
109
+ .action(withCliErrorHandling('claude-plugin', async (options) => {
110
+ const { claudePlugin } = await import('../commands/claude-plugin.js');
111
+ await claudePlugin(options);
112
+ }));
113
+ program
114
+ .command('codex-plugin')
115
+ .description('Install DevMind skill for Codex CLI and Codex app')
116
+ .option('--name <name>', 'Skill directory name', 'devmind')
117
+ .option('--project', 'Also install a project-local skill under ./.agents/skills')
118
+ .option('--no-legacy', 'Skip compatibility mirror into CODEX_HOME/.codex skill paths')
119
+ .option('--force', 'Overwrite existing skill files')
120
+ .option('--json', 'Output as JSON')
121
+ .action(withCliErrorHandling('codex-plugin', async (options) => {
122
+ const { codexPlugin } = await import('../commands/codex-plugin.js');
123
+ await codexPlugin(options);
124
+ }));
125
+ program
126
+ .command('openclaw-plugin')
127
+ .description('Install DevMind skill for OpenClaw')
128
+ .option('--name <name>', 'Skill directory name', 'devmind')
129
+ .option('--project', 'Also install a project-local skill under ./.openclaw/skills')
130
+ .option('--force', 'Overwrite existing skill files')
131
+ .option('--json', 'Output as JSON')
132
+ .action(withCliErrorHandling('openclaw-plugin', async (options) => {
133
+ const { openclawPlugin } = await import('../commands/openclaw-plugin.js');
134
+ await openclawPlugin(options);
135
+ }));
136
+ }
137
+ //# sourceMappingURL=register-analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-analysis.js","sourceRoot":"","sources":["../../src/cli/register-analysis.ts"],"names":[],"mappings":"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"}