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
|
@@ -1,10 +1,111 @@
|
|
|
1
1
|
import * as path from 'path';
|
|
2
|
+
import * as fs from 'fs/promises';
|
|
3
|
+
import { createHash } from 'crypto';
|
|
2
4
|
import { readFileSafe, writeFileSafe, logger } from '../core/index.js';
|
|
3
5
|
const START_MARKER = '<!-- devmind:auto-context:start -->';
|
|
4
6
|
const END_MARKER = '<!-- devmind:auto-context:end -->';
|
|
7
|
+
const SECTION_START = '<!-- devmind:section';
|
|
8
|
+
const SECTION_END = '<!-- /devmind:section';
|
|
5
9
|
function toPosixPath(filePath) {
|
|
6
10
|
return filePath.replace(/\\/g, '/');
|
|
7
11
|
}
|
|
12
|
+
function hashContent(content) {
|
|
13
|
+
return createHash('sha256').update(content, 'utf8').digest('hex').slice(0, 16);
|
|
14
|
+
}
|
|
15
|
+
function serializeSectionMetadata(section) {
|
|
16
|
+
const tags = section.tags.join(',');
|
|
17
|
+
return `${SECTION_START} id=${section.id} type=${section.type} priority=${section.priority} source=${section.source} tags=${tags} -->`;
|
|
18
|
+
}
|
|
19
|
+
function renderSection(section) {
|
|
20
|
+
return [
|
|
21
|
+
serializeSectionMetadata(section),
|
|
22
|
+
`## ${section.title}`,
|
|
23
|
+
section.content.trim() || '(No context available)',
|
|
24
|
+
`${SECTION_END} id=${section.id} -->`,
|
|
25
|
+
].join('\n');
|
|
26
|
+
}
|
|
27
|
+
function parseSectionsFromAgentsContent(agentsContent) {
|
|
28
|
+
const lines = agentsContent.split('\n');
|
|
29
|
+
const parsed = [];
|
|
30
|
+
const idRegex = /id=([a-z0-9._-]+)/i;
|
|
31
|
+
let current = null;
|
|
32
|
+
lines.forEach((line, idx) => {
|
|
33
|
+
const lineNo = idx + 1;
|
|
34
|
+
if (line.startsWith(SECTION_START)) {
|
|
35
|
+
const idMatch = line.match(idRegex);
|
|
36
|
+
if (!idMatch)
|
|
37
|
+
return;
|
|
38
|
+
current = {
|
|
39
|
+
id: idMatch[1],
|
|
40
|
+
startLine: lineNo + 1,
|
|
41
|
+
contentLines: [],
|
|
42
|
+
};
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (line.startsWith(SECTION_END)) {
|
|
46
|
+
if (!current)
|
|
47
|
+
return;
|
|
48
|
+
parsed.push({
|
|
49
|
+
id: current.id,
|
|
50
|
+
startLine: current.startLine,
|
|
51
|
+
endLine: lineNo - 1,
|
|
52
|
+
content: current.contentLines.join('\n').trim(),
|
|
53
|
+
});
|
|
54
|
+
current = null;
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (current)
|
|
58
|
+
current.contentLines.push(line);
|
|
59
|
+
});
|
|
60
|
+
return parsed;
|
|
61
|
+
}
|
|
62
|
+
async function replaceFile(tempPath, targetPath) {
|
|
63
|
+
await fs.rm(targetPath, { force: true });
|
|
64
|
+
await fs.rename(tempPath, targetPath);
|
|
65
|
+
}
|
|
66
|
+
function buildIndexSections(declaredSections, parsedSections) {
|
|
67
|
+
const parsedById = new Map(parsedSections.map((section) => [section.id, section]));
|
|
68
|
+
return declaredSections.map((declared) => {
|
|
69
|
+
const parsed = parsedById.get(declared.id);
|
|
70
|
+
if (!parsed) {
|
|
71
|
+
throw new Error(`Missing section marker for id=${declared.id}`);
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
id: declared.id,
|
|
75
|
+
title: declared.title,
|
|
76
|
+
type: declared.type,
|
|
77
|
+
tags: declared.tags,
|
|
78
|
+
priority: declared.priority,
|
|
79
|
+
source: declared.source,
|
|
80
|
+
startLine: parsed.startLine,
|
|
81
|
+
endLine: parsed.endLine,
|
|
82
|
+
contentHash: hashContent(parsed.content),
|
|
83
|
+
};
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
function validateSectionSync(indexSections, parsedSections) {
|
|
87
|
+
const ids = new Set();
|
|
88
|
+
for (const section of indexSections) {
|
|
89
|
+
if (ids.has(section.id)) {
|
|
90
|
+
throw new Error(`Duplicate index section id=${section.id}`);
|
|
91
|
+
}
|
|
92
|
+
ids.add(section.id);
|
|
93
|
+
}
|
|
94
|
+
const parsedById = new Map(parsedSections.map((section) => [section.id, section]));
|
|
95
|
+
for (const indexSection of indexSections) {
|
|
96
|
+
const parsed = parsedById.get(indexSection.id);
|
|
97
|
+
if (!parsed) {
|
|
98
|
+
throw new Error(`Section not found in AGENTS.md: ${indexSection.id}`);
|
|
99
|
+
}
|
|
100
|
+
if (indexSection.startLine > indexSection.endLine) {
|
|
101
|
+
throw new Error(`Invalid section line range for ${indexSection.id}`);
|
|
102
|
+
}
|
|
103
|
+
const parsedHash = hashContent(parsed.content);
|
|
104
|
+
if (parsedHash !== indexSection.contentHash) {
|
|
105
|
+
throw new Error(`Hash mismatch for section ${indexSection.id}`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
8
109
|
function buildAutoContextBlock(outputDir) {
|
|
9
110
|
const workspaceRoot = process.cwd();
|
|
10
111
|
const agentsPath = toPosixPath(path.relative(workspaceRoot, path.join(outputDir, 'AGENTS.md')));
|
|
@@ -49,35 +150,29 @@ export async function generateUnifiedDocs(outputDir) {
|
|
|
49
150
|
const architecture = await readFileSafe(path.join(outputDir, 'codebase', 'architecture.md')).catch(() => '');
|
|
50
151
|
const businessLogic = await readFileSafe(path.join(outputDir, 'database', 'BUSINESS_LOGIC.md')).catch(() => '');
|
|
51
152
|
const learnings = await readFileSafe(path.join(memoryDir, 'LEARN.md')).catch(() => '');
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
## Agent Capabilities
|
|
76
|
-
|
|
77
|
-
<tools>
|
|
78
|
-
<tool name="devmind-scan">
|
|
79
|
-
<description>Scan codebase structure and generate QMD summary.</description>
|
|
80
|
-
</tool>
|
|
153
|
+
const designSystemRaw = await readFileSafe(path.join(outputDir, 'design-system.json')).catch(() => '');
|
|
154
|
+
let designSystemProfile = null;
|
|
155
|
+
if (designSystemRaw) {
|
|
156
|
+
try {
|
|
157
|
+
designSystemProfile = JSON.parse(designSystemRaw);
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
logger.warn(`Failed to parse design-system.json: ${error.message}`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
const sourceMap = {
|
|
164
|
+
architecture: 'codebase/architecture.md',
|
|
165
|
+
database: 'database/schema-overview.md',
|
|
166
|
+
businessLogic: 'database/BUSINESS_LOGIC.md',
|
|
167
|
+
codebase: 'codebase/codebase-overview.md',
|
|
168
|
+
designSystem: 'design-system.json',
|
|
169
|
+
learnings: 'memory/LEARN.md',
|
|
170
|
+
};
|
|
171
|
+
const capabilityContent = `
|
|
172
|
+
<tools>
|
|
173
|
+
<tool name="devmind-scan">
|
|
174
|
+
<description>Scan codebase structure and generate QMD summary.</description>
|
|
175
|
+
</tool>
|
|
81
176
|
<tool name="devmind-analyze">
|
|
82
177
|
<description>Analyze code-to-database usage patterns.</description>
|
|
83
178
|
</tool>
|
|
@@ -93,23 +188,40 @@ ${learnings || '(No learnings recorded)'}
|
|
|
93
188
|
<tool name="devmind-autosave">
|
|
94
189
|
<description>Persist session journal/context and auto-apply extracted learnings.</description>
|
|
95
190
|
</tool>
|
|
191
|
+
<tool name="devmind-retrieve">
|
|
192
|
+
<description>Retrieve focused context using index metadata filters and AGENTS section chunks.</description>
|
|
193
|
+
</tool>
|
|
194
|
+
<tool name="devmind-design-system">
|
|
195
|
+
<description>Initialize or inspect design-system.json used for UI alignment auditing and agent guidance.</description>
|
|
196
|
+
</tool>
|
|
96
197
|
<tool name="devmind-learn">
|
|
97
198
|
<description>Save a new technical learning, pattern, or architectural decision to LEARN.md.</description>
|
|
98
|
-
<arguments>
|
|
99
|
-
<arg name="learning">The knowledge to save</arg>
|
|
100
|
-
<arg name="category">Category (architecture, database, etc)</arg>
|
|
101
|
-
</arguments>
|
|
102
|
-
</tool>
|
|
103
|
-
<tool name="devmind-context">
|
|
104
|
-
<description>Get focused context for a specific directory or module.</description>
|
|
105
|
-
<arguments>
|
|
106
|
-
<arg name="focus">Path to focus on</arg>
|
|
107
|
-
</arguments>
|
|
108
|
-
</tool>
|
|
109
|
-
</tools>
|
|
110
|
-
|
|
111
|
-
|
|
199
|
+
<arguments>
|
|
200
|
+
<arg name="learning">The knowledge to save</arg>
|
|
201
|
+
<arg name="category">Category (architecture, database, etc)</arg>
|
|
202
|
+
</arguments>
|
|
203
|
+
</tool>
|
|
204
|
+
<tool name="devmind-context">
|
|
205
|
+
<description>Get focused context for a specific directory or module.</description>
|
|
206
|
+
<arguments>
|
|
207
|
+
<arg name="focus">Path to focus on</arg>
|
|
208
|
+
</arguments>
|
|
209
|
+
</tool>
|
|
210
|
+
</tools>
|
|
211
|
+
`.trim();
|
|
212
|
+
const designSystemContent = designSystemProfile
|
|
213
|
+
? `
|
|
214
|
+
Design system profile: \`${designSystemProfile.name || 'unnamed'}\` (v${designSystemProfile.version || 'n/a'})
|
|
112
215
|
|
|
216
|
+
- Allowed component imports: ${(designSystemProfile.allowedComponentImports || []).map((value) => `\`${value}\``).join(', ') || '(none configured)'}
|
|
217
|
+
- Token sources: ${(designSystemProfile.tokenSources || []).map((value) => `\`${value}\``).join(', ') || '(none configured)'}
|
|
218
|
+
- Required wrappers: ${(designSystemProfile.requiredWrappers || []).map((value) => `\`${value}\``).join(', ') || '(none configured)'}
|
|
219
|
+
- Banned rules: ${(designSystemProfile.bannedRegexRules || [])
|
|
220
|
+
.map((rule) => `\`${rule.id || 'rule'}\` (${rule.message || 'no message'})`)
|
|
221
|
+
.join('; ') || '(none configured)'}
|
|
222
|
+
`.trim()
|
|
223
|
+
: 'No design-system profile found. Run `devmind design-system --init` and customize `.devmind/design-system.json`.';
|
|
224
|
+
const runbookContent = `
|
|
113
225
|
### Agent Runbook (Auto Workflow, Recommendation Drift Control)
|
|
114
226
|
1. Automatically run \`devmind status --json\` at session start.
|
|
115
227
|
2. If context is stale/missing, automatically run the returned \`recommendedCommand\` (drift control remains recommendation-based).
|
|
@@ -124,24 +236,122 @@ ${learnings || '(No learnings recorded)'}
|
|
|
124
236
|
- **Database:** Run \`devmind analyze\` or \`devmind validate\` before risky schema changes.
|
|
125
237
|
- **Memory:** Use \`LEARN.md\` to keep decisions consistent across sessions.
|
|
126
238
|
`.trim();
|
|
127
|
-
|
|
239
|
+
const sections = [
|
|
240
|
+
{
|
|
241
|
+
id: 'architecture.overview',
|
|
242
|
+
title: 'Architecture',
|
|
243
|
+
type: 'architecture',
|
|
244
|
+
tags: ['architecture', 'layers', 'patterns'],
|
|
245
|
+
priority: 'high',
|
|
246
|
+
source: sourceMap.architecture,
|
|
247
|
+
content: architecture || '(No architecture context available)',
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
id: 'database.schema',
|
|
251
|
+
title: 'Database Schema',
|
|
252
|
+
type: 'database',
|
|
253
|
+
tags: ['database', 'schema', 'tables'],
|
|
254
|
+
priority: 'high',
|
|
255
|
+
source: sourceMap.database,
|
|
256
|
+
content: schemaContext
|
|
257
|
+
? 'See schema-overview.md for details.'
|
|
258
|
+
: '(No database context available)',
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
id: 'business.logic',
|
|
262
|
+
title: 'Business Logic',
|
|
263
|
+
type: 'business-logic',
|
|
264
|
+
tags: ['business', 'rules', 'domain'],
|
|
265
|
+
priority: 'medium',
|
|
266
|
+
source: sourceMap.businessLogic,
|
|
267
|
+
content: businessLogic || '(No business logic detected)',
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
id: 'codebase.overview',
|
|
271
|
+
title: 'Codebase Overview',
|
|
272
|
+
type: 'codebase',
|
|
273
|
+
tags: ['codebase', 'modules', 'entrypoints'],
|
|
274
|
+
priority: 'high',
|
|
275
|
+
source: sourceMap.codebase,
|
|
276
|
+
content: codebaseOverview || '(No codebase overview available)',
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
id: 'memory.learnings',
|
|
280
|
+
title: 'Project Learnings',
|
|
281
|
+
type: 'memory',
|
|
282
|
+
tags: ['memory', 'learnings', 'decisions'],
|
|
283
|
+
priority: 'medium',
|
|
284
|
+
source: sourceMap.learnings,
|
|
285
|
+
content: learnings || '(No learnings recorded)',
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
id: 'ui.design-system',
|
|
289
|
+
title: 'Design System',
|
|
290
|
+
type: 'design-system',
|
|
291
|
+
tags: ['ui', 'design-system', 'components', 'tokens'],
|
|
292
|
+
priority: 'high',
|
|
293
|
+
source: sourceMap.designSystem,
|
|
294
|
+
content: designSystemContent,
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
id: 'agent.capabilities',
|
|
298
|
+
title: 'Agent Capabilities',
|
|
299
|
+
type: 'capabilities',
|
|
300
|
+
tags: ['tools', 'capabilities', 'commands'],
|
|
301
|
+
priority: 'medium',
|
|
302
|
+
source: 'devmind-tools.json',
|
|
303
|
+
content: capabilityContent,
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
id: 'agent.runbook',
|
|
307
|
+
title: 'Instructions',
|
|
308
|
+
type: 'runbook',
|
|
309
|
+
tags: ['runbook', 'workflow', 'status', 'autosave'],
|
|
310
|
+
priority: 'high',
|
|
311
|
+
source: 'AGENTS.md',
|
|
312
|
+
content: runbookContent,
|
|
313
|
+
},
|
|
314
|
+
];
|
|
315
|
+
// Generate AGENTS.md (Consolidated Context in QMD Format)
|
|
316
|
+
const agentsContent = `
|
|
317
|
+
# Project Context
|
|
318
|
+
|
|
319
|
+
> Generated by DevMind for AI Agents (Claude, Cursor, Windsurf)
|
|
320
|
+
|
|
321
|
+
${sections.map((section) => renderSection(section)).join('\n\n')}
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
`.trim();
|
|
325
|
+
const parsedSections = parseSectionsFromAgentsContent(agentsContent);
|
|
326
|
+
const indexSections = buildIndexSections(sections, parsedSections);
|
|
327
|
+
validateSectionSync(indexSections, parsedSections);
|
|
128
328
|
// Generate unified index.json
|
|
129
329
|
const index = {
|
|
130
330
|
timestamp: new Date().toISOString(),
|
|
131
|
-
version: '1.0
|
|
331
|
+
version: '1.1.0',
|
|
132
332
|
contexts: {
|
|
133
333
|
agents: 'AGENTS.md',
|
|
134
334
|
schema: 'database/schema-overview.md',
|
|
135
335
|
codebase: 'codebase/codebase-overview.md',
|
|
136
336
|
architecture: 'codebase/architecture.md',
|
|
337
|
+
designSystem: 'design-system.json',
|
|
137
338
|
learnings: 'memory/LEARN.md',
|
|
138
339
|
},
|
|
139
340
|
metadata: {
|
|
140
341
|
hasDatabase: !!schemaContext,
|
|
141
342
|
hasCodebase: !!codebaseOverview,
|
|
343
|
+
hasDesignSystem: !!designSystemProfile,
|
|
142
344
|
},
|
|
345
|
+
sections: indexSections,
|
|
143
346
|
};
|
|
144
|
-
|
|
347
|
+
const agentsPath = path.join(outputDir, 'AGENTS.md');
|
|
348
|
+
const indexPath = path.join(outputDir, 'index.json');
|
|
349
|
+
const agentsTempPath = `${agentsPath}.tmp`;
|
|
350
|
+
const indexTempPath = `${indexPath}.tmp`;
|
|
351
|
+
await writeFileSafe(agentsTempPath, agentsContent);
|
|
352
|
+
await writeFileSafe(indexTempPath, JSON.stringify(index, null, 2));
|
|
353
|
+
await replaceFile(agentsTempPath, agentsPath);
|
|
354
|
+
await replaceFile(indexTempPath, indexPath);
|
|
145
355
|
logger.success('Unified documentation generated:');
|
|
146
356
|
logger.info(` - ${path.join(outputDir, 'AGENTS.md')}`);
|
|
147
357
|
// Generate devmind-tools.json (Tool Definitions for Agents)
|
|
@@ -172,6 +382,141 @@ ${learnings || '(No learnings recorded)'}
|
|
|
172
382
|
},
|
|
173
383
|
},
|
|
174
384
|
},
|
|
385
|
+
{
|
|
386
|
+
name: 'devmind_status',
|
|
387
|
+
description: 'Checks context freshness and returns a recommended next command when generated context is stale or missing.',
|
|
388
|
+
parameters: {
|
|
389
|
+
type: 'object',
|
|
390
|
+
properties: {
|
|
391
|
+
output: {
|
|
392
|
+
type: 'string',
|
|
393
|
+
description: 'Context output directory (default: .devmind)',
|
|
394
|
+
},
|
|
395
|
+
path: {
|
|
396
|
+
type: 'string',
|
|
397
|
+
description: 'Root path for source freshness checks (default: current directory)',
|
|
398
|
+
},
|
|
399
|
+
},
|
|
400
|
+
},
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
name: 'devmind_audit',
|
|
404
|
+
description: 'Audits codebase coverage against recorded learnings in memory/LEARN.md and writes an audit report.',
|
|
405
|
+
parameters: {
|
|
406
|
+
type: 'object',
|
|
407
|
+
properties: {
|
|
408
|
+
output: {
|
|
409
|
+
type: 'string',
|
|
410
|
+
description: 'Context output directory (default: .devmind)',
|
|
411
|
+
},
|
|
412
|
+
path: {
|
|
413
|
+
type: 'string',
|
|
414
|
+
description: 'Root path to audit (default: current directory)',
|
|
415
|
+
},
|
|
416
|
+
},
|
|
417
|
+
},
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
name: 'devmind_extract',
|
|
421
|
+
description: 'Extracts learning candidates from analysis artifacts and source comments, with optional apply to LEARN.md.',
|
|
422
|
+
parameters: {
|
|
423
|
+
type: 'object',
|
|
424
|
+
properties: {
|
|
425
|
+
output: {
|
|
426
|
+
type: 'string',
|
|
427
|
+
description: 'Context output directory (default: .devmind)',
|
|
428
|
+
},
|
|
429
|
+
path: {
|
|
430
|
+
type: 'string',
|
|
431
|
+
description: 'Root path to scan for comments (default: current directory)',
|
|
432
|
+
},
|
|
433
|
+
apply: {
|
|
434
|
+
type: 'boolean',
|
|
435
|
+
description: 'Append extracted learning candidates into memory/LEARN.md',
|
|
436
|
+
},
|
|
437
|
+
},
|
|
438
|
+
},
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
name: 'devmind_autosave',
|
|
442
|
+
description: 'Persists crash-safe session journal/context and auto-applies extracted learnings.',
|
|
443
|
+
parameters: {
|
|
444
|
+
type: 'object',
|
|
445
|
+
properties: {
|
|
446
|
+
output: {
|
|
447
|
+
type: 'string',
|
|
448
|
+
description: 'Context output directory (default: .devmind)',
|
|
449
|
+
},
|
|
450
|
+
path: {
|
|
451
|
+
type: 'string',
|
|
452
|
+
description: 'Root path for extraction (default: current directory)',
|
|
453
|
+
},
|
|
454
|
+
source: {
|
|
455
|
+
type: 'string',
|
|
456
|
+
description: 'Autosave source label (e.g., task-end, scan, generate)',
|
|
457
|
+
},
|
|
458
|
+
note: {
|
|
459
|
+
type: 'string',
|
|
460
|
+
description: 'Optional note attached to journal/context state',
|
|
461
|
+
},
|
|
462
|
+
},
|
|
463
|
+
},
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
name: 'devmind_retrieve',
|
|
467
|
+
description: 'Performs two-stage retrieval using index metadata as filter and AGENTS.md sections as content.',
|
|
468
|
+
parameters: {
|
|
469
|
+
type: 'object',
|
|
470
|
+
properties: {
|
|
471
|
+
query: {
|
|
472
|
+
type: 'string',
|
|
473
|
+
description: 'Retrieval query',
|
|
474
|
+
},
|
|
475
|
+
output: {
|
|
476
|
+
type: 'string',
|
|
477
|
+
description: 'Context output directory (default: .devmind)',
|
|
478
|
+
},
|
|
479
|
+
type: {
|
|
480
|
+
type: 'string',
|
|
481
|
+
description: 'Optional section type filter',
|
|
482
|
+
},
|
|
483
|
+
tags: {
|
|
484
|
+
type: 'string',
|
|
485
|
+
description: 'Optional comma-separated tags filter',
|
|
486
|
+
},
|
|
487
|
+
limit: {
|
|
488
|
+
type: 'number',
|
|
489
|
+
description: 'Max sections to return (default: 6)',
|
|
490
|
+
},
|
|
491
|
+
max_words: {
|
|
492
|
+
type: 'number',
|
|
493
|
+
description: 'Approximate max words in output (default: 1400)',
|
|
494
|
+
},
|
|
495
|
+
},
|
|
496
|
+
required: ['query'],
|
|
497
|
+
},
|
|
498
|
+
},
|
|
499
|
+
{
|
|
500
|
+
name: 'devmind_design_system',
|
|
501
|
+
description: 'Initializes or reads the design system profile used to keep UI code aligned with component/token policies.',
|
|
502
|
+
parameters: {
|
|
503
|
+
type: 'object',
|
|
504
|
+
properties: {
|
|
505
|
+
output: {
|
|
506
|
+
type: 'string',
|
|
507
|
+
description: 'Context output directory (default: .devmind)',
|
|
508
|
+
},
|
|
509
|
+
init: {
|
|
510
|
+
type: 'boolean',
|
|
511
|
+
description: 'Create default profile file if missing',
|
|
512
|
+
},
|
|
513
|
+
force: {
|
|
514
|
+
type: 'boolean',
|
|
515
|
+
description: 'Overwrite profile when used with init',
|
|
516
|
+
},
|
|
517
|
+
},
|
|
518
|
+
},
|
|
519
|
+
},
|
|
175
520
|
{
|
|
176
521
|
name: 'devmind_learn',
|
|
177
522
|
description: "Saves a new technical learning, pattern, or architectural decision to the project's persistent memory (LEARN.md). Use this when you discover something important that future agents should know.",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unified.js","sourceRoot":"","sources":["../../src/generators/unified.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"unified.js","sourceRoot":"","sources":["../../src/generators/unified.ts"],"names":[],"mappings":"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"}
|