ai-first-cli 1.1.0

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 (173) hide show
  1. package/.netlify/netlify.toml +25 -0
  2. package/.netlify/state.json +3 -0
  3. package/CHANGELOG.md +192 -0
  4. package/CONTRIBUTING.md +89 -0
  5. package/FLOW.md +129 -0
  6. package/README.es.md +350 -0
  7. package/README.md +439 -0
  8. package/ai/ai_context.md +123 -0
  9. package/ai/ai_rules.md +52 -0
  10. package/ai/architecture.md +100 -0
  11. package/ai/cache.json +301 -0
  12. package/ai/context/analyzers.Symbol.json +19 -0
  13. package/ai/context/analyzers.extractSymbols.json +19 -0
  14. package/ai/conventions.md +52 -0
  15. package/ai/dependencies.json +1282 -0
  16. package/ai/embeddings.json +23828 -0
  17. package/ai/entrypoints.md +32 -0
  18. package/ai/files.json +1061 -0
  19. package/ai/graph/module-graph.json +115 -0
  20. package/ai/graph/symbol-graph.json +50310 -0
  21. package/ai/graph/symbol-references.json +1723 -0
  22. package/ai/hierarchy.json +28 -0
  23. package/ai/index-state.json +276 -0
  24. package/ai/index.db +0 -0
  25. package/ai/modules.json +69 -0
  26. package/ai/repo-map.json +769 -0
  27. package/ai/repo_map.json +769 -0
  28. package/ai/repo_map.md +197 -0
  29. package/ai/summary.md +23 -0
  30. package/ai/symbols.json +20287 -0
  31. package/ai/tech_stack.md +39 -0
  32. package/dist/analyzers/aiRules.d.ts +15 -0
  33. package/dist/analyzers/aiRules.d.ts.map +1 -0
  34. package/dist/analyzers/aiRules.js +123 -0
  35. package/dist/analyzers/aiRules.js.map +1 -0
  36. package/dist/analyzers/architecture.d.ts +22 -0
  37. package/dist/analyzers/architecture.d.ts.map +1 -0
  38. package/dist/analyzers/architecture.js +239 -0
  39. package/dist/analyzers/architecture.js.map +1 -0
  40. package/dist/analyzers/conventions.d.ts +46 -0
  41. package/dist/analyzers/conventions.d.ts.map +1 -0
  42. package/dist/analyzers/conventions.js +159 -0
  43. package/dist/analyzers/conventions.js.map +1 -0
  44. package/dist/analyzers/dependencies.d.ts +21 -0
  45. package/dist/analyzers/dependencies.d.ts.map +1 -0
  46. package/dist/analyzers/dependencies.js +255 -0
  47. package/dist/analyzers/dependencies.js.map +1 -0
  48. package/dist/analyzers/entrypoints.d.ts +11 -0
  49. package/dist/analyzers/entrypoints.d.ts.map +1 -0
  50. package/dist/analyzers/entrypoints.js +81 -0
  51. package/dist/analyzers/entrypoints.js.map +1 -0
  52. package/dist/analyzers/symbols.d.ts +29 -0
  53. package/dist/analyzers/symbols.d.ts.map +1 -0
  54. package/dist/analyzers/symbols.js +333 -0
  55. package/dist/analyzers/symbols.js.map +1 -0
  56. package/dist/analyzers/techStack.d.ts +21 -0
  57. package/dist/analyzers/techStack.d.ts.map +1 -0
  58. package/dist/analyzers/techStack.js +302 -0
  59. package/dist/analyzers/techStack.js.map +1 -0
  60. package/dist/commands/ai-first.d.ts +16 -0
  61. package/dist/commands/ai-first.d.ts.map +1 -0
  62. package/dist/commands/ai-first.js +988 -0
  63. package/dist/commands/ai-first.js.map +1 -0
  64. package/dist/commands/doctor.d.ts +13 -0
  65. package/dist/commands/doctor.d.ts.map +1 -0
  66. package/dist/commands/doctor.js +60 -0
  67. package/dist/commands/doctor.js.map +1 -0
  68. package/dist/commands/explore.d.ts +9 -0
  69. package/dist/commands/explore.d.ts.map +1 -0
  70. package/dist/commands/explore.js +69 -0
  71. package/dist/commands/explore.js.map +1 -0
  72. package/dist/core/aiContextGenerator.d.ts +20 -0
  73. package/dist/core/aiContextGenerator.d.ts.map +1 -0
  74. package/dist/core/aiContextGenerator.js +829 -0
  75. package/dist/core/aiContextGenerator.js.map +1 -0
  76. package/dist/core/chunker.d.ts +23 -0
  77. package/dist/core/chunker.d.ts.map +1 -0
  78. package/dist/core/chunker.js +291 -0
  79. package/dist/core/chunker.js.map +1 -0
  80. package/dist/core/contextGenerator.d.ts +12 -0
  81. package/dist/core/contextGenerator.d.ts.map +1 -0
  82. package/dist/core/contextGenerator.js +257 -0
  83. package/dist/core/contextGenerator.js.map +1 -0
  84. package/dist/core/contextPacket.d.ts +63 -0
  85. package/dist/core/contextPacket.d.ts.map +1 -0
  86. package/dist/core/contextPacket.js +350 -0
  87. package/dist/core/contextPacket.js.map +1 -0
  88. package/dist/core/embeddings.d.ts +50 -0
  89. package/dist/core/embeddings.d.ts.map +1 -0
  90. package/dist/core/embeddings.js +119 -0
  91. package/dist/core/embeddings.js.map +1 -0
  92. package/dist/core/hierarchyGenerator.d.ts +22 -0
  93. package/dist/core/hierarchyGenerator.d.ts.map +1 -0
  94. package/dist/core/hierarchyGenerator.js +327 -0
  95. package/dist/core/hierarchyGenerator.js.map +1 -0
  96. package/dist/core/indexState.d.ts +47 -0
  97. package/dist/core/indexState.d.ts.map +1 -0
  98. package/dist/core/indexState.js +158 -0
  99. package/dist/core/indexState.js.map +1 -0
  100. package/dist/core/indexer.d.ts +105 -0
  101. package/dist/core/indexer.d.ts.map +1 -0
  102. package/dist/core/indexer.js +642 -0
  103. package/dist/core/indexer.js.map +1 -0
  104. package/dist/core/moduleGraph.d.ts +24 -0
  105. package/dist/core/moduleGraph.d.ts.map +1 -0
  106. package/dist/core/moduleGraph.js +156 -0
  107. package/dist/core/moduleGraph.js.map +1 -0
  108. package/dist/core/repoMapper.d.ts +19 -0
  109. package/dist/core/repoMapper.d.ts.map +1 -0
  110. package/dist/core/repoMapper.js +125 -0
  111. package/dist/core/repoMapper.js.map +1 -0
  112. package/dist/core/repoScanner.d.ts +25 -0
  113. package/dist/core/repoScanner.d.ts.map +1 -0
  114. package/dist/core/repoScanner.js +72 -0
  115. package/dist/core/repoScanner.js.map +1 -0
  116. package/dist/core/symbolGraph.d.ts +58 -0
  117. package/dist/core/symbolGraph.d.ts.map +1 -0
  118. package/dist/core/symbolGraph.js +503 -0
  119. package/dist/core/symbolGraph.js.map +1 -0
  120. package/dist/index.d.ts +8 -0
  121. package/dist/index.d.ts.map +1 -0
  122. package/dist/index.js +8 -0
  123. package/dist/index.js.map +1 -0
  124. package/dist/utils/fileUtils.d.ts +33 -0
  125. package/dist/utils/fileUtils.d.ts.map +1 -0
  126. package/dist/utils/fileUtils.js +120 -0
  127. package/dist/utils/fileUtils.js.map +1 -0
  128. package/docs/.vitepress/config.ts +125 -0
  129. package/docs/.vitepress/theme/custom.css +189 -0
  130. package/docs/.vitepress/theme/index.ts +9 -0
  131. package/docs/es/guide/getting-started.md +26 -0
  132. package/docs/es/index.md +128 -0
  133. package/docs/examples/express-api.md +133 -0
  134. package/docs/examples/index.md +26 -0
  135. package/docs/examples/python-django.md +105 -0
  136. package/docs/examples/react-app.md +116 -0
  137. package/docs/guide/architecture.md +212 -0
  138. package/docs/guide/getting-started.md +82 -0
  139. package/docs/guide/installation.md +98 -0
  140. package/docs/guide/quick-start.md +91 -0
  141. package/docs/index.md +139 -0
  142. package/docs/reference/commands.md +203 -0
  143. package/examples/01-express-api.md +133 -0
  144. package/examples/02-react-app.md +137 -0
  145. package/examples/03-python-django.md +136 -0
  146. package/examples/README.md +62 -0
  147. package/package.json +58 -0
  148. package/src/analyzers/aiRules.ts +156 -0
  149. package/src/analyzers/architecture.ts +302 -0
  150. package/src/analyzers/conventions.ts +181 -0
  151. package/src/analyzers/dependencies.ts +307 -0
  152. package/src/analyzers/entrypoints.ts +102 -0
  153. package/src/analyzers/symbols.ts +379 -0
  154. package/src/analyzers/techStack.ts +351 -0
  155. package/src/commands/ai-first.ts +1094 -0
  156. package/src/commands/doctor.ts +68 -0
  157. package/src/commands/explore.ts +50 -0
  158. package/src/core/aiContextGenerator.ts +982 -0
  159. package/src/core/chunker.ts +351 -0
  160. package/src/core/contextGenerator.ts +294 -0
  161. package/src/core/contextPacket.ts +517 -0
  162. package/src/core/embeddings.ts +175 -0
  163. package/src/core/hierarchyGenerator.ts +385 -0
  164. package/src/core/indexState.ts +197 -0
  165. package/src/core/indexer.ts +700 -0
  166. package/src/core/moduleGraph.ts +195 -0
  167. package/src/core/repoMapper.ts +172 -0
  168. package/src/core/repoScanner.ts +103 -0
  169. package/src/core/symbolGraph.ts +650 -0
  170. package/src/index.ts +7 -0
  171. package/src/types/sql.js.d.ts +19 -0
  172. package/src/utils/fileUtils.ts +134 -0
  173. package/tsconfig.json +20 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextPacket.js","sourceRoot":"","sources":["../../src/core/contextPacket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { Chunk } from "./chunker.js";
2
+ export interface Embedding {
3
+ id: string;
4
+ vector: number[];
5
+ metadata: {
6
+ chunkId: string;
7
+ filePath: string;
8
+ startLine: number;
9
+ endLine: number;
10
+ type: string;
11
+ language: string;
12
+ };
13
+ }
14
+ export interface EmbeddingsIndex {
15
+ version: string;
16
+ model: string;
17
+ dimensions: number;
18
+ generated: string;
19
+ embeddings: Embedding[];
20
+ }
21
+ /**
22
+ * Generate embeddings using local model (sentence-transformers)
23
+ * or fallback to simple embeddings
24
+ */
25
+ export declare function generateEmbeddings(chunks: Chunk[], options?: {
26
+ model?: string;
27
+ dimensions?: number;
28
+ useLocal?: boolean;
29
+ }): Promise<{
30
+ embeddings: Embedding[];
31
+ model: string;
32
+ }>;
33
+ /**
34
+ * Save embeddings to file
35
+ */
36
+ export declare function saveEmbeddings(embeddings: Embedding[], aiDir: string, model: string, dimensions: number): void;
37
+ /**
38
+ * Load embeddings from file
39
+ */
40
+ export declare function loadEmbeddings(aiDir: string): EmbeddingsIndex | null;
41
+ /**
42
+ * Search embeddings for similar chunks
43
+ */
44
+ export declare function searchEmbeddings(query: string, embeddingsIndex: EmbeddingsIndex, topK?: number): {
45
+ chunkId: string;
46
+ filePath: string;
47
+ score: number;
48
+ content: string;
49
+ }[];
50
+ //# sourceMappingURL=embeddings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../src/core/embeddings.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAuBD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,KAAK,EAAE,EACf,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACf,GACL,OAAO,CAAC;IAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA2BrD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,SAAS,EAAE,EACvB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,IAAI,CAYN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAapE;AAmBD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,eAAe,EAChC,IAAI,GAAE,MAAU,GACf;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAuBzE"}
@@ -0,0 +1,119 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import crypto from "crypto";
4
+ /**
5
+ * Generate a simple hash-based embedding (for testing/fallback)
6
+ * This creates a deterministic embedding based on content
7
+ */
8
+ function generateSimpleEmbedding(text, dimensions = 384) {
9
+ // Use MD5 hash to seed random-like but deterministic values
10
+ const hash = crypto.createHash("md5").update(text).digest();
11
+ const vector = [];
12
+ for (let i = 0; i < dimensions; i++) {
13
+ // Use hash bytes cyclically to generate values between -1 and 1
14
+ const byteIndex = i % hash.length;
15
+ const value = (hash[byteIndex] / 255) * 2 - 1;
16
+ vector.push(value);
17
+ }
18
+ // Normalize
19
+ const magnitude = Math.sqrt(vector.reduce((sum, v) => sum + v * v, 0));
20
+ return vector.map(v => v / magnitude);
21
+ }
22
+ /**
23
+ * Generate embeddings using local model (sentence-transformers)
24
+ * or fallback to simple embeddings
25
+ */
26
+ export async function generateEmbeddings(chunks, options = {}) {
27
+ const dimensions = options.dimensions || 384;
28
+ let model = options.model || "simple";
29
+ let embeddings = [];
30
+ // Use simple embeddings (for now)
31
+ // TODO: Add support for @xenova/transformers when available
32
+ model = "simple-fallback";
33
+ console.log(" Using simple embeddings (install @xenova/transformers for better results)");
34
+ for (const chunk of chunks) {
35
+ embeddings.push({
36
+ id: chunk.id,
37
+ vector: generateSimpleEmbedding(chunk.content, dimensions),
38
+ metadata: {
39
+ chunkId: chunk.id,
40
+ filePath: chunk.filePath,
41
+ startLine: chunk.startLine,
42
+ endLine: chunk.endLine,
43
+ type: chunk.type,
44
+ language: chunk.language
45
+ }
46
+ });
47
+ }
48
+ return { embeddings, model };
49
+ }
50
+ /**
51
+ * Save embeddings to file
52
+ */
53
+ export function saveEmbeddings(embeddings, aiDir, model, dimensions) {
54
+ const index = {
55
+ version: "1.0.0",
56
+ model,
57
+ dimensions,
58
+ generated: new Date().toISOString(),
59
+ embeddings
60
+ };
61
+ const embeddingsPath = path.join(aiDir, "embeddings.json");
62
+ fs.writeFileSync(embeddingsPath, JSON.stringify(index, null, 2));
63
+ console.log(` ✅ Saved ${embeddings.length} embeddings to ${embeddingsPath}`);
64
+ }
65
+ /**
66
+ * Load embeddings from file
67
+ */
68
+ export function loadEmbeddings(aiDir) {
69
+ const embeddingsPath = path.join(aiDir, "embeddings.json");
70
+ if (!fs.existsSync(embeddingsPath)) {
71
+ return null;
72
+ }
73
+ try {
74
+ const data = fs.readFileSync(embeddingsPath, "utf-8");
75
+ return JSON.parse(data);
76
+ }
77
+ catch {
78
+ return null;
79
+ }
80
+ }
81
+ /**
82
+ * Compute cosine similarity between two vectors
83
+ */
84
+ function cosineSimilarity(a, b) {
85
+ let dotProduct = 0;
86
+ let normA = 0;
87
+ let normB = 0;
88
+ for (let i = 0; i < a.length; i++) {
89
+ dotProduct += a[i] * b[i];
90
+ normA += a[i] * a[i];
91
+ normB += b[i] * b[i];
92
+ }
93
+ return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
94
+ }
95
+ /**
96
+ * Search embeddings for similar chunks
97
+ */
98
+ export function searchEmbeddings(query, embeddingsIndex, topK = 5) {
99
+ // Generate embedding for query
100
+ const queryEmbedding = generateSimpleEmbedding(query, embeddingsIndex.dimensions);
101
+ // Calculate similarities
102
+ const results = embeddingsIndex.embeddings.map(embedding => ({
103
+ chunkId: embedding.id,
104
+ filePath: embedding.metadata.filePath,
105
+ score: cosineSimilarity(queryEmbedding, embedding.vector),
106
+ startLine: embedding.metadata.startLine,
107
+ endLine: embedding.metadata.endLine,
108
+ type: embedding.metadata.type
109
+ }));
110
+ // Sort by score and return top K
111
+ results.sort((a, b) => b.score - a.score);
112
+ return results.slice(0, topK).map(r => ({
113
+ chunkId: r.chunkId,
114
+ filePath: r.filePath,
115
+ score: r.score,
116
+ content: `[${r.filePath}:${r.startLine}-${r.endLine}] (${r.type})`
117
+ }));
118
+ }
119
+ //# sourceMappingURL=embeddings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../src/core/embeddings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Hierarchy result
3
+ */
4
+ export interface HierarchyResult {
5
+ success: boolean;
6
+ outputPath: string;
7
+ summary: RepoSummary;
8
+ error?: string;
9
+ }
10
+ /**
11
+ * Repository summary
12
+ */
13
+ export interface RepoSummary {
14
+ repo: string;
15
+ folders: Record<string, string>;
16
+ files: Record<string, string>;
17
+ }
18
+ /**
19
+ * Generate hierarchical repository summary
20
+ */
21
+ export declare function generateHierarchy(rootDir: string, outputPath?: string): Promise<HierarchyResult>;
22
+ //# sourceMappingURL=hierarchyGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hierarchyGenerator.d.ts","sourceRoot":"","sources":["../../src/core/hierarchyGenerator.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAmRD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,MAA4B,GACvC,OAAO,CAAC,eAAe,CAAC,CAkF1B"}
@@ -0,0 +1,327 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { DEFAULT_EXCLUDE_PATTERNS, getAllFiles as scanFiles, getRelativePath } from "../utils/fileUtils.js";
4
+ /**
5
+ * Detect repository root purpose from README and package metadata
6
+ */
7
+ function detectRepoPurpose(rootDir) {
8
+ // Check package.json
9
+ const packagePath = path.join(rootDir, "package.json");
10
+ if (fs.existsSync(packagePath)) {
11
+ try {
12
+ const pkg = JSON.parse(fs.readFileSync(packagePath, "utf-8"));
13
+ if (pkg.name) {
14
+ return pkg.name;
15
+ }
16
+ if (pkg.description) {
17
+ return pkg.description;
18
+ }
19
+ }
20
+ catch { }
21
+ }
22
+ // Check README
23
+ const readmeNames = ["README.md", "README.mdx", "README", "readme.md"];
24
+ for (const name of readmeNames) {
25
+ const readmePath = path.join(rootDir, name);
26
+ if (fs.existsSync(readmePath)) {
27
+ try {
28
+ const content = fs.readFileSync(readmePath, "utf-8");
29
+ // Get first non-empty line that's not a comment
30
+ const lines = content.split("\n");
31
+ for (const line of lines) {
32
+ const trimmed = line.trim();
33
+ if (trimmed && !trimmed.startsWith("#")) {
34
+ // Return first substantial line (max 100 chars)
35
+ return trimmed.slice(0, 100);
36
+ }
37
+ if (trimmed.startsWith("# ")) {
38
+ return trimmed.slice(2).slice(0, 100);
39
+ }
40
+ }
41
+ }
42
+ catch { }
43
+ }
44
+ }
45
+ // Check for common project indicators
46
+ const indicators = [
47
+ { file: "Cargo.toml", type: "Rust" },
48
+ { file: "go.mod", type: "Go" },
49
+ { file: "pom.xml", type: "Java" },
50
+ { file: "build.gradle", type: "Gradle" },
51
+ { file: "requirements.txt", type: "Python" },
52
+ { file: "Gemfile", type: "Ruby" },
53
+ { file: "composer.json", type: "PHP" },
54
+ { file: "Swift Package.swift", type: "Swift" },
55
+ { file: "Project.swift", type: "Swift" },
56
+ { file: "*.csproj", type: "C#" },
57
+ ];
58
+ for (const ind of indicators) {
59
+ const files = fs.readdirSync(rootDir);
60
+ if (files.some(f => f === ind.file || f.endsWith(ind.file.replace("*", "")))) {
61
+ return `${ind.type} Project`;
62
+ }
63
+ }
64
+ // Default
65
+ return "Repository";
66
+ }
67
+ /**
68
+ * Get folder description based on common naming patterns
69
+ */
70
+ function getFolderDescription(folderName) {
71
+ const descriptions = {
72
+ src: "Source code",
73
+ lib: "Library code",
74
+ app: "Application code",
75
+ core: "Core functionality",
76
+ main: "Main entry point",
77
+ utils: "Utility functions",
78
+ helpers: "Helper modules",
79
+ common: "Common/shared code",
80
+ shared: "Shared modules",
81
+ components: "UI components",
82
+ pages: "Page components",
83
+ views: "View templates",
84
+ layouts: "Layout templates",
85
+ routes: "Route definitions",
86
+ router: "Router configuration",
87
+ api: "API endpoints",
88
+ controllers: "Request handlers",
89
+ services: "Business logic",
90
+ models: "Data models",
91
+ entities: "Domain entities",
92
+ repositories: "Data access layer",
93
+ middleware: "Middleware functions",
94
+ handlers: "Event handlers",
95
+ config: "Configuration",
96
+ configs: "Configuration files",
97
+ conf: "Configuration",
98
+ settings: "Settings",
99
+ scripts: "Build/run scripts",
100
+ tools: "Development tools",
101
+ bin: "Executable scripts",
102
+ cmd: "Command scripts",
103
+ test: "Test files",
104
+ tests: "Test files",
105
+ spec: "Test specifications",
106
+ __tests__: "Test suite",
107
+ e2e: "End-to-end tests",
108
+ integration: "Integration tests",
109
+ unit: "Unit tests",
110
+ fixtures: "Test fixtures",
111
+ mocks: "Mock data",
112
+ docs: "Documentation",
113
+ doc: "Documentation",
114
+ guide: "Guides",
115
+ examples: "Example code",
116
+ demo: "Demo application",
117
+ public: "Static assets",
118
+ static: "Static files",
119
+ assets: "Media files",
120
+ images: "Image assets",
121
+ styles: "Style files",
122
+ css: "CSS styles",
123
+ scss: "SCSS styles",
124
+ themes: "Theme files",
125
+ locales: "Internationalization",
126
+ i18n: "Translations",
127
+ messages: "Message files",
128
+ build: "Build output",
129
+ dist: "Distribution files",
130
+ target: "Build target",
131
+ coverage: "Test coverage",
132
+ node_modules: "Dependencies",
133
+ vendor: "Third-party code",
134
+ data: "Data files",
135
+ db: "Database files",
136
+ migrations: "Database migrations",
137
+ seeds: "Seed data",
138
+ hooks: "Git hooks",
139
+ workflows: "CI/CD workflows",
140
+ ".github": "GitHub configuration",
141
+ ".vscode": "VS Code settings"
142
+ };
143
+ const lower = folderName.toLowerCase();
144
+ return descriptions[lower] || `${folderName} module`;
145
+ }
146
+ /**
147
+ * Summarize a file based on heuristics
148
+ */
149
+ function summarizeFile(filePath, content) {
150
+ const fileName = path.basename(filePath);
151
+ const ext = path.extname(filePath);
152
+ const lines = content.split("\n");
153
+ // Check for exports/default
154
+ const exports = [];
155
+ const importMatches = content.matchAll(/(?:export|import)\s+/g);
156
+ for (const _ of importMatches) {
157
+ exports.push("imports");
158
+ }
159
+ // Look for class/function definitions
160
+ const classes = content.match(/class\s+\w+/g) || [];
161
+ const functions = content.match(/(?:function|def|fn|func)\s+\w+/g) || [];
162
+ const interfaces = content.match(/interface\s+\w+/g) || [];
163
+ // Look for JSDoc/doc comments
164
+ const commentMatch = content.match(/\/\*\*[\s\S]*?\*\//);
165
+ let comment = "";
166
+ if (commentMatch) {
167
+ // Get first sentence from comment
168
+ const firstLine = commentMatch[0].split("\n")[0];
169
+ const descMatch = firstLine.match(/\*?\s*([^.].+)/);
170
+ if (descMatch) {
171
+ comment = descMatch[1].trim().slice(0, 80);
172
+ }
173
+ }
174
+ // Build description
175
+ const parts = [];
176
+ // From comment
177
+ if (comment) {
178
+ parts.push(comment);
179
+ }
180
+ // From filename patterns
181
+ if (fileName.includes(".test.") || fileName.includes(".spec.") || fileName.startsWith("test_")) {
182
+ parts.push("test");
183
+ }
184
+ if (fileName === "index.ts" || fileName === "index.js") {
185
+ parts.push("entry point");
186
+ }
187
+ if (fileName === "types.ts" || fileName === "d.ts") {
188
+ parts.push("type definitions");
189
+ }
190
+ if (fileName === "constants.ts" || fileName === "config.ts") {
191
+ parts.push("constants");
192
+ }
193
+ if (fileName === "utils.ts" || fileName === "helpers.ts") {
194
+ parts.push("utilities");
195
+ }
196
+ if (fileName.includes("middleware")) {
197
+ parts.push("middleware");
198
+ }
199
+ if (fileName.includes("controller") || fileName.includes("handler")) {
200
+ parts.push("handler");
201
+ }
202
+ if (fileName.includes("service")) {
203
+ parts.push("service");
204
+ }
205
+ if (fileName.includes("model") || fileName.includes("entity")) {
206
+ parts.push("model");
207
+ }
208
+ if (fileName.includes("route")) {
209
+ parts.push("routes");
210
+ }
211
+ // From definitions
212
+ if (classes.length > 0) {
213
+ parts.push(`class${classes.length > 1 ? "es" : ""}: ${classes.slice(0, 3).join(", ")}`);
214
+ }
215
+ if (functions.length > 0) {
216
+ const fnNames = functions.slice(0, 3).map(f => f.split(/\s+/).pop());
217
+ parts.push(`function${functions.length > 1 ? "s" : ""}: ${fnNames.join(", ")}`);
218
+ }
219
+ if (interfaces.length > 0) {
220
+ parts.push(`interface${interfaces.length > 1 ? "s" : ""}: ${interfaces.slice(0, 3).join(", ")}`);
221
+ }
222
+ // If no description, infer from extension
223
+ if (parts.length === 0) {
224
+ const extDescriptions = {
225
+ ts: "TypeScript file",
226
+ tsx: "React component",
227
+ js: "JavaScript file",
228
+ jsx: "React component",
229
+ py: "Python module",
230
+ go: "Go source",
231
+ rs: "Rust source",
232
+ java: "Java class",
233
+ cs: "C# source",
234
+ rb: "Ruby script",
235
+ php: "PHP script",
236
+ swift: "Swift source",
237
+ kt: "Kotlin source",
238
+ sql: "SQL script",
239
+ json: "JSON data",
240
+ yaml: "YAML config",
241
+ yml: "YAML config",
242
+ md: "documentation",
243
+ css: "styles",
244
+ scss: "SCSS styles",
245
+ html: "HTML template",
246
+ };
247
+ parts.push(extDescriptions[ext.slice(1)] || "source file");
248
+ }
249
+ return parts.slice(0, 2).join(" | ");
250
+ }
251
+ /**
252
+ * Generate hierarchical repository summary
253
+ */
254
+ export async function generateHierarchy(rootDir, outputPath = "ai/hierarchy.json") {
255
+ try {
256
+ // Get all files
257
+ const allFiles = scanFiles(rootDir, [...DEFAULT_EXCLUDE_PATTERNS, "ai", "node_modules"]);
258
+ // Get files for analysis
259
+ const files = [];
260
+ for (const filePath of allFiles) {
261
+ const relativePath = getRelativePath(rootDir, filePath);
262
+ files.push({ path: filePath, relativePath });
263
+ }
264
+ // Detect repo purpose
265
+ const repoPurpose = detectRepoPurpose(rootDir);
266
+ // Generate folder summaries
267
+ const folderCounts = new Map();
268
+ const folderDescriptions = new Map();
269
+ for (const file of files) {
270
+ const parts = file.relativePath.split("/");
271
+ if (parts.length > 1) {
272
+ const folder = parts[0];
273
+ folderCounts.set(folder, (folderCounts.get(folder) || 0) + 1);
274
+ // Use first folder occurrence to set description
275
+ if (!folderDescriptions.has(folder)) {
276
+ folderDescriptions.set(folder, getFolderDescription(folder));
277
+ }
278
+ }
279
+ }
280
+ const folders = {};
281
+ for (const [folder, desc] of folderDescriptions) {
282
+ folders[folder] = desc;
283
+ }
284
+ // Generate file summaries (only for source files)
285
+ const sourceExtensions = [".ts", ".tsx", ".js", ".jsx", ".py", ".go", ".rs", ".java", ".cs", ".rb", ".php", ".swift", ".kt", ".scala"];
286
+ const filesSummaries = {};
287
+ for (const file of files) {
288
+ const ext = path.extname(file.path);
289
+ if (sourceExtensions.includes(ext)) {
290
+ try {
291
+ const content = fs.readFileSync(file.path, "utf-8");
292
+ const summary = summarizeFile(file.path, content);
293
+ filesSummaries[file.relativePath] = summary;
294
+ }
295
+ catch {
296
+ filesSummaries[file.relativePath] = "source file";
297
+ }
298
+ }
299
+ }
300
+ // Ensure output directory
301
+ const outputDir = path.dirname(outputPath);
302
+ if (!fs.existsSync(outputDir)) {
303
+ fs.mkdirSync(outputDir, { recursive: true });
304
+ }
305
+ const summary = {
306
+ repo: repoPurpose,
307
+ folders,
308
+ files: filesSummaries,
309
+ };
310
+ // Write output
311
+ fs.writeFileSync(outputPath, JSON.stringify(summary, null, 2), "utf-8");
312
+ return {
313
+ success: true,
314
+ outputPath,
315
+ summary,
316
+ };
317
+ }
318
+ catch (error) {
319
+ return {
320
+ success: false,
321
+ outputPath,
322
+ summary: { repo: "", folders: {}, files: {} },
323
+ error: error instanceof Error ? error.message : String(error),
324
+ };
325
+ }
326
+ }
327
+ //# sourceMappingURL=hierarchyGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hierarchyGenerator.js","sourceRoot":"","sources":["../../src/core/hierarchyGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ export interface FileState {
2
+ path: string;
3
+ hash: string;
4
+ mtime: number;
5
+ size: number;
6
+ indexedAt: string;
7
+ }
8
+ export interface IndexState {
9
+ version: string;
10
+ lastIndexed: string;
11
+ totalFiles: number;
12
+ files: Record<string, FileState>;
13
+ }
14
+ /**
15
+ * Load index state from file
16
+ */
17
+ export declare function loadIndexState(aiDir: string): IndexState | null;
18
+ /**
19
+ * Save index state to file
20
+ */
21
+ export declare function saveIndexState(aiDir: string, files: Map<string, FileState>): void;
22
+ /**
23
+ * Compute file hash (MD5 for speed)
24
+ */
25
+ export declare function computeFileHash(filePath: string): {
26
+ hash: string;
27
+ mtime: number;
28
+ size: number;
29
+ } | null;
30
+ /**
31
+ * Check if file needs re-indexing
32
+ */
33
+ export declare function needsReindex(filePath: string, currentState: IndexState): boolean;
34
+ /**
35
+ * Get list of files that need indexing
36
+ */
37
+ export declare function getFilesToIndex(allFiles: string[], rootDir: string, currentState: IndexState | null): {
38
+ toIndex: string[];
39
+ unchanged: number;
40
+ new: number;
41
+ deleted: number;
42
+ };
43
+ /**
44
+ * Create git-based change detector (optional enhancement)
45
+ */
46
+ export declare function getChangedFilesGit(rootDir: string): Promise<Set<string>>;
47
+ //# sourceMappingURL=indexState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexState.d.ts","sourceRoot":"","sources":["../../src/core/indexState.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAClC;AAID;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAsB/D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI,CAUjF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAatG;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,GAAG,OAAO,CA6BhF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,UAAU,GAAG,IAAI,GAC9B;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAiCxE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAoC9E"}