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.
- package/README.md +138 -162
- package/dist/cli/handlers.d.ts +2 -0
- package/dist/cli/handlers.js +140 -0
- package/dist/cli/handlers.js.map +1 -0
- package/dist/cli/register-all.d.ts +2 -0
- package/dist/cli/register-all.js +11 -0
- package/dist/cli/register-all.js.map +1 -0
- package/dist/cli/register-analysis.d.ts +2 -0
- package/dist/cli/register-analysis.js +137 -0
- package/dist/cli/register-analysis.js.map +1 -0
- package/dist/cli/register-codebase.d.ts +2 -0
- package/dist/cli/register-codebase.js +22 -0
- package/dist/cli/register-codebase.js.map +1 -0
- package/dist/cli/register-database.d.ts +2 -0
- package/dist/cli/register-database.js +48 -0
- package/dist/cli/register-database.js.map +1 -0
- package/dist/cli/register-memory.d.ts +2 -0
- package/dist/cli/register-memory.js +58 -0
- package/dist/cli/register-memory.js.map +1 -0
- package/dist/cli.js +9 -316
- package/dist/cli.js.map +1 -1
- package/dist/codebase/generators/architecture-extractor.d.ts +41 -0
- package/dist/codebase/generators/architecture-extractor.js +388 -0
- package/dist/codebase/generators/architecture-extractor.js.map +1 -0
- package/dist/codebase/generators/architecture.d.ts +2 -4
- package/dist/codebase/generators/architecture.js +123 -30
- package/dist/codebase/generators/architecture.js.map +1 -1
- package/dist/codebase/generators/modules.js +8 -8
- package/dist/codebase/generators/overview.js +24 -24
- package/dist/codebase/index.js +3 -3
- package/dist/codebase/index.js.map +1 -1
- package/dist/codebase/parsers/typescript.d.ts +1 -0
- package/dist/codebase/parsers/typescript.js +12 -0
- package/dist/codebase/parsers/typescript.js.map +1 -1
- package/dist/codebase/scanners/filesystem.d.ts +1 -0
- package/dist/codebase/scanners/filesystem.js +128 -4
- package/dist/codebase/scanners/filesystem.js.map +1 -1
- package/dist/commands/analyze.d.ts +1 -0
- package/dist/commands/analyze.js +172 -24
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/audit-design.d.ts +8 -0
- package/dist/commands/audit-design.js +158 -0
- package/dist/commands/audit-design.js.map +1 -0
- package/dist/commands/audit-report.d.ts +18 -0
- package/dist/commands/audit-report.js +30 -0
- package/dist/commands/audit-report.js.map +1 -0
- package/dist/commands/audit-source.d.ts +21 -0
- package/dist/commands/audit-source.js +59 -0
- package/dist/commands/audit-source.js.map +1 -0
- package/dist/commands/audit.d.ts +1 -0
- package/dist/commands/audit.js +174 -73
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/claude-plugin.d.ts +8 -0
- package/dist/commands/claude-plugin.js +123 -0
- package/dist/commands/claude-plugin.js.map +1 -0
- package/dist/commands/codex-plugin.d.ts +9 -0
- package/dist/commands/codex-plugin.js +145 -0
- package/dist/commands/codex-plugin.js.map +1 -0
- package/dist/commands/context.js +66 -5
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/design-system.d.ts +8 -0
- package/dist/commands/design-system.js +95 -0
- package/dist/commands/design-system.js.map +1 -0
- package/dist/commands/extract.d.ts +13 -0
- package/dist/commands/extract.js +83 -17
- package/dist/commands/extract.js.map +1 -1
- package/dist/commands/openclaw-plugin.d.ts +8 -0
- package/dist/commands/openclaw-plugin.js +103 -0
- package/dist/commands/openclaw-plugin.js.map +1 -0
- package/dist/commands/retrieve.d.ts +12 -0
- package/dist/commands/retrieve.js +234 -0
- package/dist/commands/retrieve.js.map +1 -0
- package/dist/commands/status.d.ts +1 -0
- package/dist/commands/status.js +54 -18
- package/dist/commands/status.js.map +1 -1
- package/dist/core/cache-json.d.ts +7 -0
- package/dist/core/cache-json.js +60 -0
- package/dist/core/cache-json.js.map +1 -0
- package/dist/core/errors.d.ts +2 -0
- package/dist/core/errors.js +49 -1
- package/dist/core/errors.js.map +1 -1
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.js +4 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/learning-parser.d.ts +6 -0
- package/dist/core/learning-parser.js +23 -0
- package/dist/core/learning-parser.js.map +1 -0
- package/dist/core/profile.d.ts +18 -0
- package/dist/core/profile.js +37 -0
- package/dist/core/profile.js.map +1 -0
- package/dist/core/source-file-cache.d.ts +13 -0
- package/dist/core/source-file-cache.js +88 -0
- package/dist/core/source-file-cache.js.map +1 -0
- package/dist/database/cli/register-all.d.ts +2 -0
- package/dist/database/cli/register-all.js +9 -0
- package/dist/database/cli/register-all.js.map +1 -0
- package/dist/database/cli/register-database.d.ts +2 -0
- package/dist/database/cli/register-database.js +48 -0
- package/dist/database/cli/register-database.js.map +1 -0
- package/dist/database/cli/register-interactive.d.ts +2 -0
- package/dist/database/cli/register-interactive.js +29 -0
- package/dist/database/cli/register-interactive.js.map +1 -0
- package/dist/database/cli/register-memory.d.ts +2 -0
- package/dist/database/cli/register-memory.js +47 -0
- package/dist/database/cli/register-memory.js.map +1 -0
- package/dist/database/cli.js +5 -112
- package/dist/database/cli.js.map +1 -1
- package/dist/database/commands/checkpoint.js +8 -10
- package/dist/database/commands/checkpoint.js.map +1 -1
- package/dist/database/commands/generate.d.ts +1 -0
- package/dist/database/commands/generate.js +28 -20
- package/dist/database/commands/generate.js.map +1 -1
- package/dist/database/commands/handoff.js +126 -125
- package/dist/database/commands/handoff.js.map +1 -1
- package/dist/database/commands/learn.d.ts +4 -0
- package/dist/database/commands/learn.js +249 -43
- package/dist/database/commands/learn.js.map +1 -1
- package/dist/database/commands/memory.js +114 -114
- package/dist/database/commands/validate.js +6 -4
- package/dist/database/commands/validate.js.map +1 -1
- package/dist/database/commands/watch.js +2 -2
- package/dist/database/commands/watch.js.map +1 -1
- package/dist/database/extractors/mysql.js +45 -45
- package/dist/database/extractors/postgres.js +54 -54
- package/dist/database/extractors/sqlite.js +8 -8
- package/dist/database/generators/templates.js +534 -534
- package/dist/database/generators/templates.js.map +1 -1
- package/dist/database/utils/json-output.d.ts +4 -0
- package/dist/database/utils/json-output.js +7 -0
- package/dist/database/utils/json-output.js.map +1 -1
- package/dist/generators/unified.d.ts +13 -0
- package/dist/generators/unified.js +391 -46
- package/dist/generators/unified.js.map +1 -1
- package/package.json +86 -78
package/README.md
CHANGED
|
@@ -1,193 +1,169 @@
|
|
|
1
|
-
# DevMind
|
|
2
|
-
|
|
3
|
-
>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
-
|
|
29
|
-
|
|
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
|
|
33
|
+
devmind claude-plugin --force
|
|
102
34
|
```
|
|
103
35
|
|
|
104
|
-
|
|
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
|
-
#
|
|
108
|
-
devmind
|
|
68
|
+
# 1) Design system policy first
|
|
69
|
+
devmind design-system --init
|
|
70
|
+
|
|
71
|
+
# 2) Build overall context
|
|
72
|
+
devmind generate --all
|
|
109
73
|
|
|
110
|
-
#
|
|
74
|
+
# 3) Validate freshness/recommendation
|
|
111
75
|
devmind status --json
|
|
112
76
|
```
|
|
113
77
|
|
|
114
|
-
|
|
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
|
-
|
|
118
|
-
|
|
88
|
+
git tag v1.1.1
|
|
89
|
+
git push origin v1.1.1
|
|
90
|
+
```
|
|
119
91
|
|
|
120
|
-
|
|
121
|
-
devmind extract
|
|
92
|
+
## Canonical Flow
|
|
122
93
|
|
|
123
|
-
|
|
124
|
-
|
|
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
|
-
###
|
|
116
|
+
### Learning loop
|
|
128
117
|
|
|
129
118
|
```bash
|
|
130
|
-
|
|
119
|
+
devmind audit
|
|
120
|
+
devmind extract
|
|
121
|
+
devmind extract --apply
|
|
131
122
|
devmind autosave --source task-end
|
|
123
|
+
```
|
|
132
124
|
|
|
133
|
-
|
|
134
|
-
|
|
125
|
+
### Database validation
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
devmind analyze
|
|
129
|
+
devmind validate --strict
|
|
135
130
|
```
|
|
136
131
|
|
|
137
|
-
|
|
132
|
+
## Agent-First Runbook
|
|
138
133
|
|
|
139
134
|
```bash
|
|
140
135
|
# 1) Preflight
|
|
141
136
|
devmind status --json
|
|
142
137
|
|
|
143
|
-
# 2) If stale
|
|
144
|
-
|
|
145
|
-
|
|
138
|
+
# 2) If stale, run recommendedCommand
|
|
139
|
+
|
|
140
|
+
# 3) Execute with focused retrieval
|
|
141
|
+
devmind retrieve -q "<task query>" --json
|
|
146
142
|
|
|
147
|
-
# 4)
|
|
143
|
+
# 4) Persist memory
|
|
148
144
|
devmind autosave --source task-end
|
|
149
145
|
```
|
|
150
|
-
|
|
151
|
-
##
|
|
152
|
-
|
|
153
|
-
|
|
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
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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,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,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,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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"}
|