devmind 1.1.0 → 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 (55) hide show
  1. package/README.md +13 -1
  2. package/dist/cli/handlers.js +1 -1
  3. package/dist/cli/handlers.js.map +1 -1
  4. package/dist/cli/register-database.js +4 -0
  5. package/dist/cli/register-database.js.map +1 -1
  6. package/dist/codebase/generators/architecture-extractor.d.ts +41 -0
  7. package/dist/codebase/generators/architecture-extractor.js +388 -0
  8. package/dist/codebase/generators/architecture-extractor.js.map +1 -0
  9. package/dist/codebase/generators/architecture.d.ts +2 -4
  10. package/dist/codebase/generators/architecture.js +123 -30
  11. package/dist/codebase/generators/architecture.js.map +1 -1
  12. package/dist/codebase/generators/modules.js +8 -8
  13. package/dist/codebase/generators/overview.js +24 -24
  14. package/dist/codebase/index.js +1 -1
  15. package/dist/codebase/index.js.map +1 -1
  16. package/dist/codebase/parsers/typescript.js +9 -0
  17. package/dist/codebase/parsers/typescript.js.map +1 -1
  18. package/dist/codebase/scanners/filesystem.js +1 -4
  19. package/dist/codebase/scanners/filesystem.js.map +1 -1
  20. package/dist/commands/analyze.js +7 -1
  21. package/dist/commands/analyze.js.map +1 -1
  22. package/dist/commands/audit-design.js.map +1 -1
  23. package/dist/commands/audit-report.js.map +1 -1
  24. package/dist/commands/audit-source.js +3 -1
  25. package/dist/commands/audit-source.js.map +1 -1
  26. package/dist/commands/audit.js.map +1 -1
  27. package/dist/commands/claude-plugin.js.map +1 -1
  28. package/dist/commands/codex-plugin.js.map +1 -1
  29. package/dist/commands/design-system.js.map +1 -1
  30. package/dist/commands/extract.js +4 -1
  31. package/dist/commands/extract.js.map +1 -1
  32. package/dist/commands/retrieve.js +6 -2
  33. package/dist/commands/retrieve.js.map +1 -1
  34. package/dist/commands/status.js.map +1 -1
  35. package/dist/core/source-file-cache.js +4 -1
  36. package/dist/core/source-file-cache.js.map +1 -1
  37. package/dist/database/cli/register-database.js +4 -0
  38. package/dist/database/cli/register-database.js.map +1 -1
  39. package/dist/database/commands/generate.d.ts +1 -0
  40. package/dist/database/commands/generate.js +23 -14
  41. package/dist/database/commands/generate.js.map +1 -1
  42. package/dist/database/commands/handoff.js +123 -123
  43. package/dist/database/commands/handoff.js.map +1 -1
  44. package/dist/database/commands/learn.js +5 -1
  45. package/dist/database/commands/learn.js.map +1 -1
  46. package/dist/database/commands/memory.js +113 -113
  47. package/dist/database/commands/watch.js +1 -1
  48. package/dist/database/commands/watch.js.map +1 -1
  49. package/dist/database/extractors/mysql.js +45 -45
  50. package/dist/database/extractors/postgres.js +54 -54
  51. package/dist/database/extractors/sqlite.js +8 -8
  52. package/dist/database/generators/templates.js +520 -520
  53. package/dist/generators/unified.js +4 -3
  54. package/dist/generators/unified.js.map +1 -1
  55. package/package.json +85 -77
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # DevMind
2
2
 
3
3
  > Deterministic context and memory layer for AI coding agents.
4
- Let Agent remember your design system, general context, and database.
4
+ > Let Agent remember your design system, general context, and database.
5
5
 
6
6
  ## Install
7
7
 
@@ -77,6 +77,18 @@ devmind status --json
77
77
 
78
78
  You are ready when `.devmind/AGENTS.md` and `.devmind/index.json` exist.
79
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:
86
+
87
+ ```bash
88
+ git tag v1.1.1
89
+ git push origin v1.1.1
90
+ ```
91
+
80
92
  ## Canonical Flow
81
93
 
82
94
  1. Design system
@@ -1,5 +1,5 @@
1
1
  import * as path from 'path';
2
- import { logger, ensureDir, writeJSON, createProfiler, failCommand, } from '../core/index.js';
2
+ import { logger, ensureDir, writeJSON, createProfiler, failCommand } from '../core/index.js';
3
3
  import { generate as generateDatabase, MemoryInfrastructure } from '../database/index.js';
4
4
  import { scanCodebase, saveScanResult, calculateCodebaseHash, getCodebaseStats, } from '../codebase/index.js';
5
5
  import { generateUnifiedDocs } from '../generators/unified.js';
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/cli/handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/cli/handlers.ts"],"names":[],"mappings":"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"}
@@ -17,8 +17,12 @@ export function registerDatabaseCommands(program) {
17
17
  .option('--sqlite <path>', 'Use SQLite extractor with file path')
18
18
  .option('--prisma [path]', 'Use Prisma extractor (optional path)')
19
19
  .option('--drizzle [path]', 'Use Drizzle extractor (optional path)')
20
+ .option('--mongodb <url>', 'Use MongoDB extractor with connection URL')
21
+ .option('--firebase-project <id>', 'Use Firebase extractor with project ID')
22
+ .option('--firebase-key <path>', 'Path to Firebase service account JSON key')
20
23
  .option('-o, --output <dir>', 'Output directory', '.devmind')
21
24
  .option('--format <format>', 'Output format (markdown, json)', 'markdown')
25
+ .option('--json', 'Output as JSON')
22
26
  .option('--all', 'Generate all contexts (database and codebase)')
23
27
  .option('--code', 'Generate codebase context only')
24
28
  .option('--db', 'Generate database context only (default)')
@@ -1 +1 @@
1
- {"version":3,"file":"register-database.js","sourceRoot":"","sources":["../../src/cli/register-database.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;SACpD,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,CAAC;SACzD,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAE9C,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;SACpD,MAAM,CAAC,aAAa,EAAE,4BAA4B,CAAC;SACnD,MAAM,CAAC,SAAS,EAAE,qBAAqB,CAAC;SACxC,MAAM,CAAC,iBAAiB,EAAE,qCAAqC,CAAC;SAChE,MAAM,CAAC,iBAAiB,EAAE,sCAAsC,CAAC;SACjE,MAAM,CAAC,kBAAkB,EAAE,uCAAuC,CAAC;SACnE,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,UAAU,CAAC;SAC5D,MAAM,CAAC,mBAAmB,EAAE,gCAAgC,EAAE,UAAU,CAAC;SACzE,MAAM,CAAC,OAAO,EAAE,+CAA+C,CAAC;SAChE,MAAM,CAAC,QAAQ,EAAE,gCAAgC,CAAC;SAClD,MAAM,CAAC,MAAM,EAAE,0CAA0C,CAAC;SAC1D,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,EAAE,GAAG,CAAC;SAC/D,MAAM,CAAC,WAAW,EAAE,6BAA6B,CAAC;SAClD,MAAM,CAAC,oBAAoB,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEhE,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,UAAU,EAAE,wBAAwB,CAAC;SAC5C,MAAM,CAAC,oBAAoB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEtD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAEhD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,uBAAuB,EAAE,eAAe,EAAE,UAAU,CAAC;SAC5D,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"register-database.js","sourceRoot":"","sources":["../../src/cli/register-database.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;SACpD,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,CAAC;SACzD,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAE9C,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;SACpD,MAAM,CAAC,aAAa,EAAE,4BAA4B,CAAC;SACnD,MAAM,CAAC,SAAS,EAAE,qBAAqB,CAAC;SACxC,MAAM,CAAC,iBAAiB,EAAE,qCAAqC,CAAC;SAChE,MAAM,CAAC,iBAAiB,EAAE,sCAAsC,CAAC;SACjE,MAAM,CAAC,kBAAkB,EAAE,uCAAuC,CAAC;SACnE,MAAM,CAAC,iBAAiB,EAAE,2CAA2C,CAAC;SACtE,MAAM,CAAC,yBAAyB,EAAE,wCAAwC,CAAC;SAC3E,MAAM,CAAC,uBAAuB,EAAE,2CAA2C,CAAC;SAC5E,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,UAAU,CAAC;SAC5D,MAAM,CAAC,mBAAmB,EAAE,gCAAgC,EAAE,UAAU,CAAC;SACzE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,OAAO,EAAE,+CAA+C,CAAC;SAChE,MAAM,CAAC,QAAQ,EAAE,gCAAgC,CAAC;SAClD,MAAM,CAAC,MAAM,EAAE,0CAA0C,CAAC;SAC1D,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,EAAE,GAAG,CAAC;SAC/D,MAAM,CAAC,WAAW,EAAE,6BAA6B,CAAC;SAClD,MAAM,CAAC,oBAAoB,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEhE,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,UAAU,EAAE,wBAAwB,CAAC;SAC5C,MAAM,CAAC,oBAAoB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEtD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAEhD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,uBAAuB,EAAE,eAAe,EAAE,UAAU,CAAC;SAC5D,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,41 @@
1
+ export interface RouteSignal {
2
+ method: string;
3
+ path: string;
4
+ file: string;
5
+ line: number;
6
+ source: 'express' | 'next' | 'react-router';
7
+ }
8
+ export interface ApiCallSignal {
9
+ client: string;
10
+ url: string;
11
+ file: string;
12
+ line: number;
13
+ method?: string;
14
+ }
15
+ export interface WebSocketSignal {
16
+ library: 'WebSocket' | 'socket.io' | 'ws';
17
+ file: string;
18
+ line: number;
19
+ detail: string;
20
+ }
21
+ export interface SocketEventSignal {
22
+ action: 'emit' | 'on';
23
+ event: string;
24
+ file: string;
25
+ line: number;
26
+ }
27
+ export interface HookSignal {
28
+ name: string;
29
+ kind: 'react' | 'custom';
30
+ file: string;
31
+ line: number;
32
+ }
33
+ export interface ArchitectureSignals {
34
+ routes: RouteSignal[];
35
+ apiCalls: ApiCallSignal[];
36
+ websockets: WebSocketSignal[];
37
+ socketEvents: SocketEventSignal[];
38
+ hooks: HookSignal[];
39
+ }
40
+ export declare function extractArchitectureSignals(rootPath: string): ArchitectureSignals;
41
+ export declare function renderArchitectureSignalsMarkdown(signals: ArchitectureSignals): string;
@@ -0,0 +1,388 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ const SOURCE_EXTENSIONS = new Set(['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs']);
4
+ const IGNORED_DIRS = new Set([
5
+ 'node_modules',
6
+ '.git',
7
+ '.devmind',
8
+ 'dist',
9
+ 'build',
10
+ 'coverage',
11
+ '.pnpm-store',
12
+ '.npm-cache',
13
+ 'tests',
14
+ 'memory',
15
+ ]);
16
+ function normalizeRelPath(filePath) {
17
+ return filePath.replace(/\\/g, '/');
18
+ }
19
+ function lineFromIndex(content, index) {
20
+ if (index <= 0)
21
+ return 1;
22
+ let line = 1;
23
+ for (let i = 0; i < index; i += 1) {
24
+ if (content.charCodeAt(i) === 10)
25
+ line += 1;
26
+ }
27
+ return line;
28
+ }
29
+ function collectSourceFiles(rootPath) {
30
+ const files = [];
31
+ const stack = [rootPath];
32
+ while (stack.length > 0) {
33
+ const current = stack.pop();
34
+ if (!current)
35
+ break;
36
+ let entries;
37
+ try {
38
+ entries = fs.readdirSync(current, { withFileTypes: true });
39
+ }
40
+ catch {
41
+ continue;
42
+ }
43
+ for (const entry of entries) {
44
+ if (entry.name.startsWith('.') && entry.name !== '.github') {
45
+ if (entry.isDirectory())
46
+ continue;
47
+ }
48
+ const fullPath = path.join(current, entry.name);
49
+ if (entry.isDirectory()) {
50
+ if (IGNORED_DIRS.has(entry.name))
51
+ continue;
52
+ stack.push(fullPath);
53
+ continue;
54
+ }
55
+ if (!entry.isFile())
56
+ continue;
57
+ if (!SOURCE_EXTENSIONS.has(path.extname(entry.name).toLowerCase()))
58
+ continue;
59
+ files.push(fullPath);
60
+ }
61
+ }
62
+ files.sort((a, b) => a.localeCompare(b));
63
+ return files;
64
+ }
65
+ function addUnique(target, seen, key, value) {
66
+ if (seen.has(key))
67
+ return;
68
+ seen.add(key);
69
+ target.push(value);
70
+ }
71
+ function cleanNextSegment(segment) {
72
+ if (segment.startsWith('(') && segment.endsWith(')'))
73
+ return '';
74
+ if (segment.startsWith('[') && segment.endsWith(']'))
75
+ return `:${segment.slice(1, -1)}`;
76
+ return segment;
77
+ }
78
+ function toRoutePathFromNextFile(relPath) {
79
+ const noExt = relPath.replace(/\.[^.]+$/, '');
80
+ const normalized = normalizeRelPath(noExt);
81
+ if (normalized.startsWith('pages/')) {
82
+ const routePart = normalized.slice('pages'.length);
83
+ const apiAdjusted = routePart.replace(/^\/index$/, '/');
84
+ return apiAdjusted.replace(/\/index$/g, '') || '/';
85
+ }
86
+ if (normalized.startsWith('app/') && /\/route$/.test(normalized)) {
87
+ const withoutPrefix = normalized.slice('app/'.length);
88
+ const dir = withoutPrefix.replace(/\/route$/, '');
89
+ const segments = dir.split('/').map(cleanNextSegment).filter(Boolean);
90
+ return `/${segments.join('/')}`.replace(/\/+/g, '/') || '/';
91
+ }
92
+ return null;
93
+ }
94
+ function extractRoutes(relPath, content, routes, seen) {
95
+ const expressRegex = /\b(?:app|router)\.(get|post|put|patch|delete|options|head|all)\(\s*['"`]([^'"`]+)['"`]/g;
96
+ let match;
97
+ while ((match = expressRegex.exec(content)) !== null) {
98
+ const method = match[1].toUpperCase();
99
+ const routePath = match[2];
100
+ const line = lineFromIndex(content, match.index);
101
+ addUnique(routes, seen, `${method}|${routePath}|${relPath}|${line}|express`, {
102
+ method,
103
+ path: routePath,
104
+ file: relPath,
105
+ line,
106
+ source: 'express',
107
+ });
108
+ }
109
+ const nextRoutePath = toRoutePathFromNextFile(relPath);
110
+ if (nextRoutePath) {
111
+ if (normalizeRelPath(relPath).startsWith('app/') &&
112
+ /\/route\.[^.]+$/.test(normalizeRelPath(relPath))) {
113
+ const methodRegex = /\bexport\s+(?:async\s+)?function\s+(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD)\b/g;
114
+ const methods = [];
115
+ while ((match = methodRegex.exec(content)) !== null) {
116
+ methods.push({ method: match[1], index: match.index });
117
+ }
118
+ if (methods.length === 0) {
119
+ addUnique(routes, seen, `ANY|${nextRoutePath}|${relPath}|1|next`, {
120
+ method: 'ANY',
121
+ path: nextRoutePath,
122
+ file: relPath,
123
+ line: 1,
124
+ source: 'next',
125
+ });
126
+ }
127
+ else {
128
+ for (const entry of methods) {
129
+ const line = lineFromIndex(content, entry.index);
130
+ addUnique(routes, seen, `${entry.method}|${nextRoutePath}|${relPath}|${line}|next`, {
131
+ method: entry.method,
132
+ path: nextRoutePath,
133
+ file: relPath,
134
+ line,
135
+ source: 'next',
136
+ });
137
+ }
138
+ }
139
+ }
140
+ else {
141
+ addUnique(routes, seen, `ANY|${nextRoutePath}|${relPath}|1|next`, {
142
+ method: 'ANY',
143
+ path: nextRoutePath,
144
+ file: relPath,
145
+ line: 1,
146
+ source: 'next',
147
+ });
148
+ }
149
+ }
150
+ const jsxRouteRegex = /<Route\b[^>]*\bpath\s*=\s*["'`]([^"'`]+)["'`][^>]*>/g;
151
+ while ((match = jsxRouteRegex.exec(content)) !== null) {
152
+ const line = lineFromIndex(content, match.index);
153
+ addUnique(routes, seen, `ROUTE|${match[1]}|${relPath}|${line}|react-router`, {
154
+ method: 'ROUTE',
155
+ path: match[1],
156
+ file: relPath,
157
+ line,
158
+ source: 'react-router',
159
+ });
160
+ }
161
+ if (content.includes('createBrowserRouter') || content.includes('createRoutesFromElements')) {
162
+ const objPathRegex = /\bpath\s*:\s*['"`]([^'"`]+)['"`]/g;
163
+ while ((match = objPathRegex.exec(content)) !== null) {
164
+ const line = lineFromIndex(content, match.index);
165
+ addUnique(routes, seen, `ROUTE|${match[1]}|${relPath}|${line}|react-router`, {
166
+ method: 'ROUTE',
167
+ path: match[1],
168
+ file: relPath,
169
+ line,
170
+ source: 'react-router',
171
+ });
172
+ }
173
+ }
174
+ }
175
+ function extractApiCalls(relPath, content, apiCalls, seen) {
176
+ let match;
177
+ const fetchRegex = /\bfetch\(\s*(['"`])([^'"`]+)\1/g;
178
+ while ((match = fetchRegex.exec(content)) !== null) {
179
+ const line = lineFromIndex(content, match.index);
180
+ addUnique(apiCalls, seen, `fetch|${match[2]}|${relPath}|${line}`, {
181
+ client: 'fetch',
182
+ url: match[2],
183
+ file: relPath,
184
+ line,
185
+ });
186
+ }
187
+ const axiosMethodRegex = /\baxios\.(get|post|put|patch|delete|request)\(\s*(['"`])([^'"`]+)\2/g;
188
+ while ((match = axiosMethodRegex.exec(content)) !== null) {
189
+ const line = lineFromIndex(content, match.index);
190
+ addUnique(apiCalls, seen, `axios|${match[3]}|${relPath}|${line}|${match[1]}`, {
191
+ client: 'axios',
192
+ method: match[1].toUpperCase(),
193
+ url: match[3],
194
+ file: relPath,
195
+ line,
196
+ });
197
+ }
198
+ const axiosConfigRegex = /\baxios\s*\(\s*\{[\s\S]{0,300}?\burl\s*:\s*(['"`])([^'"`]+)\1[\s\S]{0,300}?\}\s*\)/g;
199
+ while ((match = axiosConfigRegex.exec(content)) !== null) {
200
+ const line = lineFromIndex(content, match.index);
201
+ addUnique(apiCalls, seen, `axios|${match[2]}|${relPath}|${line}|config`, {
202
+ client: 'axios',
203
+ url: match[2],
204
+ file: relPath,
205
+ line,
206
+ });
207
+ }
208
+ const customClientRegex = /\b([A-Za-z_$][\w$]*(?:Client|Api|API|http|request|sdk))\.(get|post|put|patch|delete|request)\(\s*(['"`])([^'"`]+)\3/g;
209
+ while ((match = customClientRegex.exec(content)) !== null) {
210
+ const client = match[1];
211
+ const method = match[2].toUpperCase();
212
+ const line = lineFromIndex(content, match.index);
213
+ addUnique(apiCalls, seen, `${client}|${match[4]}|${relPath}|${line}|${method}`, {
214
+ client,
215
+ method,
216
+ url: match[4],
217
+ file: relPath,
218
+ line,
219
+ });
220
+ }
221
+ }
222
+ function extractWebSockets(relPath, content, websockets, seen) {
223
+ let match;
224
+ const wsCtorRegex = /\bnew\s+WebSocket\s*\(/g;
225
+ while ((match = wsCtorRegex.exec(content)) !== null) {
226
+ const line = lineFromIndex(content, match.index);
227
+ addUnique(websockets, seen, `WebSocket|${relPath}|${line}`, {
228
+ library: 'WebSocket',
229
+ file: relPath,
230
+ line,
231
+ detail: 'new WebSocket(...)',
232
+ });
233
+ }
234
+ if (/from\s+['"]socket\.io(?:-client)?['"]/.test(content) ||
235
+ /require\(['"]socket\.io(?:-client)?['"]\)/.test(content)) {
236
+ const ioRegex = /\bio\s*\(/g;
237
+ while ((match = ioRegex.exec(content)) !== null) {
238
+ const line = lineFromIndex(content, match.index);
239
+ addUnique(websockets, seen, `socket.io|${relPath}|${line}`, {
240
+ library: 'socket.io',
241
+ file: relPath,
242
+ line,
243
+ detail: 'io(...)',
244
+ });
245
+ }
246
+ }
247
+ if (/from\s+['"]ws['"]/.test(content) || /require\(['"]ws['"]\)/.test(content)) {
248
+ const wsServerRegex = /\bnew\s+(?:WebSocketServer|Server)\s*\(/g;
249
+ while ((match = wsServerRegex.exec(content)) !== null) {
250
+ const line = lineFromIndex(content, match.index);
251
+ addUnique(websockets, seen, `ws|${relPath}|${line}`, {
252
+ library: 'ws',
253
+ file: relPath,
254
+ line,
255
+ detail: 'ws server initialization',
256
+ });
257
+ }
258
+ }
259
+ }
260
+ function extractSocketEvents(relPath, content, socketEvents, seen) {
261
+ const eventRegex = /\.(emit|on)\(\s*(['"`])([^'"`]+)\2/g;
262
+ let match;
263
+ while ((match = eventRegex.exec(content)) !== null) {
264
+ const action = match[1];
265
+ const event = match[3];
266
+ const line = lineFromIndex(content, match.index);
267
+ addUnique(socketEvents, seen, `${action}|${event}|${relPath}|${line}`, {
268
+ action,
269
+ event,
270
+ file: relPath,
271
+ line,
272
+ });
273
+ }
274
+ }
275
+ function extractHooks(relPath, content, hooks, seen) {
276
+ const reactHookRegex = /\b(useState|useEffect|useMemo|useCallback|useReducer|useRef|useContext|useLayoutEffect|useImperativeHandle|useDeferredValue|useTransition|useId|useSyncExternalStore|useInsertionEffect)\b/g;
277
+ let match;
278
+ while ((match = reactHookRegex.exec(content)) !== null) {
279
+ const line = lineFromIndex(content, match.index);
280
+ addUnique(hooks, seen, `react|${match[1]}|${relPath}|${line}`, {
281
+ name: match[1],
282
+ kind: 'react',
283
+ file: relPath,
284
+ line,
285
+ });
286
+ }
287
+ const customHookRegex = /\b(?:export\s+)?function\s+(use[A-Z][A-Za-z0-9_]*)\s*\(|\b(?:export\s+)?const\s+(use[A-Z][A-Za-z0-9_]*)\s*=\s*\(/g;
288
+ while ((match = customHookRegex.exec(content)) !== null) {
289
+ const name = match[1] || match[2];
290
+ if (!name)
291
+ continue;
292
+ const line = lineFromIndex(content, match.index);
293
+ addUnique(hooks, seen, `custom|${name}|${relPath}|${line}`, {
294
+ name,
295
+ kind: 'custom',
296
+ file: relPath,
297
+ line,
298
+ });
299
+ }
300
+ }
301
+ function parseFileSignals(rootPath, absPath, target) {
302
+ let content = '';
303
+ try {
304
+ content = fs.readFileSync(absPath, 'utf-8');
305
+ }
306
+ catch {
307
+ return;
308
+ }
309
+ const relPath = normalizeRelPath(path.relative(rootPath, absPath));
310
+ if (/(^|\/)(architecture-extractor|devmind-arch-extractor)\.ts$/.test(relPath)) {
311
+ return;
312
+ }
313
+ extractRoutes(relPath, content, target.routes, target.__routesSeen);
314
+ extractApiCalls(relPath, content, target.apiCalls, target.__apiSeen);
315
+ extractWebSockets(relPath, content, target.websockets, target.__wsSeen);
316
+ extractSocketEvents(relPath, content, target.socketEvents, target.__socketSeen);
317
+ extractHooks(relPath, content, target.hooks, target.__hooksSeen);
318
+ }
319
+ function sorted(items) {
320
+ return items.sort((a, b) => a.file.localeCompare(b.file) || a.line - b.line);
321
+ }
322
+ export function extractArchitectureSignals(rootPath) {
323
+ const target = {
324
+ routes: [],
325
+ apiCalls: [],
326
+ websockets: [],
327
+ socketEvents: [],
328
+ hooks: [],
329
+ __routesSeen: new Set(),
330
+ __apiSeen: new Set(),
331
+ __wsSeen: new Set(),
332
+ __socketSeen: new Set(),
333
+ __hooksSeen: new Set(),
334
+ };
335
+ const files = collectSourceFiles(rootPath);
336
+ for (const file of files) {
337
+ parseFileSignals(rootPath, file, target);
338
+ }
339
+ const result = {
340
+ routes: sorted(target.routes),
341
+ apiCalls: sorted(target.apiCalls),
342
+ websockets: sorted(target.websockets),
343
+ socketEvents: sorted(target.socketEvents),
344
+ hooks: sorted(target.hooks),
345
+ };
346
+ return result;
347
+ }
348
+ function tableOrFallback(header, columns, rows) {
349
+ if (rows.length === 0)
350
+ return `${header}\n\n_No items detected._\n`;
351
+ const head = `| ${columns.join(' | ')} |`;
352
+ const sep = `| ${columns.map(() => '---').join(' | ')} |`;
353
+ const body = rows.map((row) => `| ${row.join(' | ')} |`).join('\n');
354
+ return `${header}\n\n${head}\n${sep}\n${body}\n`;
355
+ }
356
+ export function renderArchitectureSignalsMarkdown(signals) {
357
+ const routeRows = signals.routes.map((route) => [
358
+ route.method,
359
+ route.path,
360
+ `${route.file}:${route.line}`,
361
+ route.source,
362
+ ]);
363
+ const apiRows = signals.apiCalls.map((call) => [
364
+ call.client,
365
+ call.method || 'N/A',
366
+ call.url,
367
+ `${call.file}:${call.line}`,
368
+ ]);
369
+ const wsRows = signals.websockets.map((item) => [
370
+ item.library,
371
+ item.detail,
372
+ `${item.file}:${item.line}`,
373
+ ]);
374
+ const socketRows = signals.socketEvents.map((event) => [
375
+ event.action,
376
+ event.event,
377
+ `${event.file}:${event.line}`,
378
+ ]);
379
+ const hookRows = signals.hooks.map((hook) => [hook.kind, hook.name, `${hook.file}:${hook.line}`]);
380
+ return [
381
+ tableOrFallback('## Routes', ['Method', 'Path', 'File', 'Source'], routeRows),
382
+ tableOrFallback('## API Calls', ['Client', 'Method', 'URL', 'File'], apiRows),
383
+ tableOrFallback('## WebSockets', ['Library', 'Detail', 'File'], wsRows),
384
+ tableOrFallback('## Socket Events', ['Action', 'Event', 'File'], socketRows),
385
+ tableOrFallback('## Hooks', ['Kind', 'Name', 'File'], hookRows),
386
+ ].join('\n');
387
+ }
388
+ //# sourceMappingURL=architecture-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architecture-extractor.js","sourceRoot":"","sources":["../../../src/codebase/generators/architecture-extractor.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,2 @@
1
- /**
2
- * Generate architecture documentation template
3
- */
4
- export declare function generateArchitecture(): string;
1
+ import type { FileNode } from '../scanners/filesystem.js';
2
+ export declare function generateArchitecture(structure: FileNode, projectRoot: string): string;