claude-cognitive 0.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 (196) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +256 -0
  3. package/bin/claude-cognitive.js +9 -0
  4. package/dist/agents/context.d.ts +40 -0
  5. package/dist/agents/context.d.ts.map +1 -0
  6. package/dist/agents/context.js +144 -0
  7. package/dist/agents/context.js.map +1 -0
  8. package/dist/agents/index.d.ts +9 -0
  9. package/dist/agents/index.d.ts.map +1 -0
  10. package/dist/agents/index.js +11 -0
  11. package/dist/agents/index.js.map +1 -0
  12. package/dist/agents/loader.d.ts +48 -0
  13. package/dist/agents/loader.d.ts.map +1 -0
  14. package/dist/agents/loader.js +157 -0
  15. package/dist/agents/loader.js.map +1 -0
  16. package/dist/agents/templates.d.ts +51 -0
  17. package/dist/agents/templates.d.ts.map +1 -0
  18. package/dist/agents/templates.js +186 -0
  19. package/dist/agents/templates.js.map +1 -0
  20. package/dist/agents/types.d.ts +52 -0
  21. package/dist/agents/types.d.ts.map +1 -0
  22. package/dist/agents/types.js +6 -0
  23. package/dist/agents/types.js.map +1 -0
  24. package/dist/cli/commands/config.d.ts +10 -0
  25. package/dist/cli/commands/config.d.ts.map +1 -0
  26. package/dist/cli/commands/config.js +22 -0
  27. package/dist/cli/commands/config.js.map +1 -0
  28. package/dist/cli/commands/index.d.ts +17 -0
  29. package/dist/cli/commands/index.d.ts.map +1 -0
  30. package/dist/cli/commands/index.js +17 -0
  31. package/dist/cli/commands/index.js.map +1 -0
  32. package/dist/cli/commands/init.d.ts +10 -0
  33. package/dist/cli/commands/init.d.ts.map +1 -0
  34. package/dist/cli/commands/init.js +109 -0
  35. package/dist/cli/commands/init.js.map +1 -0
  36. package/dist/cli/commands/install.d.ts +10 -0
  37. package/dist/cli/commands/install.d.ts.map +1 -0
  38. package/dist/cli/commands/install.js +440 -0
  39. package/dist/cli/commands/install.js.map +1 -0
  40. package/dist/cli/commands/learn.d.ts +10 -0
  41. package/dist/cli/commands/learn.d.ts.map +1 -0
  42. package/dist/cli/commands/learn.js +33 -0
  43. package/dist/cli/commands/learn.js.map +1 -0
  44. package/dist/cli/commands/recall.d.ts +10 -0
  45. package/dist/cli/commands/recall.d.ts.map +1 -0
  46. package/dist/cli/commands/recall.js +52 -0
  47. package/dist/cli/commands/recall.js.map +1 -0
  48. package/dist/cli/commands/reflect.d.ts +10 -0
  49. package/dist/cli/commands/reflect.d.ts.map +1 -0
  50. package/dist/cli/commands/reflect.js +48 -0
  51. package/dist/cli/commands/reflect.js.map +1 -0
  52. package/dist/cli/commands/semantic.d.ts +10 -0
  53. package/dist/cli/commands/semantic.d.ts.map +1 -0
  54. package/dist/cli/commands/semantic.js +67 -0
  55. package/dist/cli/commands/semantic.js.map +1 -0
  56. package/dist/cli/commands/serve.d.ts +10 -0
  57. package/dist/cli/commands/serve.d.ts.map +1 -0
  58. package/dist/cli/commands/serve.js +61 -0
  59. package/dist/cli/commands/serve.js.map +1 -0
  60. package/dist/cli/commands/status.d.ts +10 -0
  61. package/dist/cli/commands/status.d.ts.map +1 -0
  62. package/dist/cli/commands/status.js +44 -0
  63. package/dist/cli/commands/status.js.map +1 -0
  64. package/dist/cli/commands/sync.d.ts +10 -0
  65. package/dist/cli/commands/sync.d.ts.map +1 -0
  66. package/dist/cli/commands/sync.js +260 -0
  67. package/dist/cli/commands/sync.js.map +1 -0
  68. package/dist/cli/commands/uninstall.d.ts +10 -0
  69. package/dist/cli/commands/uninstall.d.ts.map +1 -0
  70. package/dist/cli/commands/uninstall.js +205 -0
  71. package/dist/cli/commands/uninstall.js.map +1 -0
  72. package/dist/cli/commands/update-bank.d.ts +10 -0
  73. package/dist/cli/commands/update-bank.d.ts.map +1 -0
  74. package/dist/cli/commands/update-bank.js +129 -0
  75. package/dist/cli/commands/update-bank.js.map +1 -0
  76. package/dist/cli/index.d.ts +6 -0
  77. package/dist/cli/index.d.ts.map +1 -0
  78. package/dist/cli/index.js +56 -0
  79. package/dist/cli/index.js.map +1 -0
  80. package/dist/cli/utils/errors.d.ts +42 -0
  81. package/dist/cli/utils/errors.d.ts.map +1 -0
  82. package/dist/cli/utils/errors.js +78 -0
  83. package/dist/cli/utils/errors.js.map +1 -0
  84. package/dist/cli/utils/index.d.ts +9 -0
  85. package/dist/cli/utils/index.d.ts.map +1 -0
  86. package/dist/cli/utils/index.js +7 -0
  87. package/dist/cli/utils/index.js.map +1 -0
  88. package/dist/cli/utils/output.d.ts +90 -0
  89. package/dist/cli/utils/output.d.ts.map +1 -0
  90. package/dist/cli/utils/output.js +164 -0
  91. package/dist/cli/utils/output.js.map +1 -0
  92. package/dist/client.d.ts +200 -0
  93. package/dist/client.d.ts.map +1 -0
  94. package/dist/client.js +447 -0
  95. package/dist/client.js.map +1 -0
  96. package/dist/config.d.ts +44 -0
  97. package/dist/config.d.ts.map +1 -0
  98. package/dist/config.js +264 -0
  99. package/dist/config.js.map +1 -0
  100. package/dist/errors.d.ts +72 -0
  101. package/dist/errors.d.ts.map +1 -0
  102. package/dist/errors.js +188 -0
  103. package/dist/errors.js.map +1 -0
  104. package/dist/events.d.ts +148 -0
  105. package/dist/events.d.ts.map +1 -0
  106. package/dist/events.js +115 -0
  107. package/dist/events.js.map +1 -0
  108. package/dist/hooks/index.d.ts +7 -0
  109. package/dist/hooks/index.d.ts.map +1 -0
  110. package/dist/hooks/index.js +7 -0
  111. package/dist/hooks/index.js.map +1 -0
  112. package/dist/hooks/inject-context.d.ts +18 -0
  113. package/dist/hooks/inject-context.d.ts.map +1 -0
  114. package/dist/hooks/inject-context.js +57 -0
  115. package/dist/hooks/inject-context.js.map +1 -0
  116. package/dist/hooks/process-session.d.ts +18 -0
  117. package/dist/hooks/process-session.d.ts.map +1 -0
  118. package/dist/hooks/process-session.js +119 -0
  119. package/dist/hooks/process-session.js.map +1 -0
  120. package/dist/index.d.ts +63 -0
  121. package/dist/index.d.ts.map +1 -0
  122. package/dist/index.js +59 -0
  123. package/dist/index.js.map +1 -0
  124. package/dist/learn/analyzers/git.d.ts +62 -0
  125. package/dist/learn/analyzers/git.d.ts.map +1 -0
  126. package/dist/learn/analyzers/git.js +183 -0
  127. package/dist/learn/analyzers/git.js.map +1 -0
  128. package/dist/learn/analyzers/index.d.ts +15 -0
  129. package/dist/learn/analyzers/index.d.ts.map +1 -0
  130. package/dist/learn/analyzers/index.js +10 -0
  131. package/dist/learn/analyzers/index.js.map +1 -0
  132. package/dist/learn/analyzers/package.d.ts +57 -0
  133. package/dist/learn/analyzers/package.d.ts.map +1 -0
  134. package/dist/learn/analyzers/package.js +245 -0
  135. package/dist/learn/analyzers/package.js.map +1 -0
  136. package/dist/learn/analyzers/readme.d.ts +27 -0
  137. package/dist/learn/analyzers/readme.d.ts.map +1 -0
  138. package/dist/learn/analyzers/readme.js +163 -0
  139. package/dist/learn/analyzers/readme.js.map +1 -0
  140. package/dist/learn/analyzers/source.d.ts +70 -0
  141. package/dist/learn/analyzers/source.d.ts.map +1 -0
  142. package/dist/learn/analyzers/source.js +231 -0
  143. package/dist/learn/analyzers/source.js.map +1 -0
  144. package/dist/learn/analyzers/structure.d.ts +39 -0
  145. package/dist/learn/analyzers/structure.d.ts.map +1 -0
  146. package/dist/learn/analyzers/structure.js +172 -0
  147. package/dist/learn/analyzers/structure.js.map +1 -0
  148. package/dist/learn/extractor.d.ts +76 -0
  149. package/dist/learn/extractor.d.ts.map +1 -0
  150. package/dist/learn/extractor.js +302 -0
  151. package/dist/learn/extractor.js.map +1 -0
  152. package/dist/learn/index.d.ts +31 -0
  153. package/dist/learn/index.d.ts.map +1 -0
  154. package/dist/learn/index.js +165 -0
  155. package/dist/learn/index.js.map +1 -0
  156. package/dist/mcp/handlers.d.ts +23 -0
  157. package/dist/mcp/handlers.d.ts.map +1 -0
  158. package/dist/mcp/handlers.js +124 -0
  159. package/dist/mcp/handlers.js.map +1 -0
  160. package/dist/mcp/index.d.ts +32 -0
  161. package/dist/mcp/index.d.ts.map +1 -0
  162. package/dist/mcp/index.js +40 -0
  163. package/dist/mcp/index.js.map +1 -0
  164. package/dist/mcp/server.d.ts +79 -0
  165. package/dist/mcp/server.d.ts.map +1 -0
  166. package/dist/mcp/server.js +277 -0
  167. package/dist/mcp/server.js.map +1 -0
  168. package/dist/mcp/tools.d.ts +59 -0
  169. package/dist/mcp/tools.d.ts.map +1 -0
  170. package/dist/mcp/tools.js +43 -0
  171. package/dist/mcp/tools.js.map +1 -0
  172. package/dist/mcp/types.d.ts +65 -0
  173. package/dist/mcp/types.d.ts.map +1 -0
  174. package/dist/mcp/types.js +6 -0
  175. package/dist/mcp/types.js.map +1 -0
  176. package/dist/mind.d.ts +250 -0
  177. package/dist/mind.d.ts.map +1 -0
  178. package/dist/mind.js +637 -0
  179. package/dist/mind.js.map +1 -0
  180. package/dist/promotion.d.ts +112 -0
  181. package/dist/promotion.d.ts.map +1 -0
  182. package/dist/promotion.js +196 -0
  183. package/dist/promotion.js.map +1 -0
  184. package/dist/retry.d.ts +70 -0
  185. package/dist/retry.d.ts.map +1 -0
  186. package/dist/retry.js +122 -0
  187. package/dist/retry.js.map +1 -0
  188. package/dist/semantic.d.ts +202 -0
  189. package/dist/semantic.d.ts.map +1 -0
  190. package/dist/semantic.js +424 -0
  191. package/dist/semantic.js.map +1 -0
  192. package/dist/types.d.ts +363 -0
  193. package/dist/types.d.ts.map +1 -0
  194. package/dist/types.js +30 -0
  195. package/dist/types.js.map +1 -0
  196. package/package.json +70 -0
@@ -0,0 +1,163 @@
1
+ /**
2
+ * README file analyzer.
3
+ * @module learn/analyzers/readme
4
+ */
5
+ import { readFile } from "node:fs/promises";
6
+ import { join } from "node:path";
7
+ /** Possible README filenames to check */
8
+ const README_NAMES = [
9
+ "README.md",
10
+ "README",
11
+ "readme.md",
12
+ "readme",
13
+ "Readme.md",
14
+ ];
15
+ /**
16
+ * Analyze README file in a project.
17
+ *
18
+ * @param projectPath - Project root directory
19
+ * @returns README analysis, or null if no README found
20
+ */
21
+ export async function analyzeReadme(projectPath) {
22
+ // Find README file
23
+ let content = null;
24
+ for (const name of README_NAMES) {
25
+ try {
26
+ content = await readFile(join(projectPath, name), "utf-8");
27
+ break;
28
+ }
29
+ catch {
30
+ // Try next name
31
+ }
32
+ }
33
+ if (!content)
34
+ return null;
35
+ return {
36
+ projectDescription: extractDescription(content),
37
+ setupInstructions: extractSetupInstructions(content),
38
+ features: extractFeatures(content),
39
+ documentation: extractDocumentationLinks(content),
40
+ rawContent: content,
41
+ };
42
+ }
43
+ /**
44
+ * Extract project description from README.
45
+ * Usually the first paragraph after the title.
46
+ * @internal
47
+ */
48
+ function extractDescription(content) {
49
+ const lines = content.split("\n");
50
+ let foundTitle = false;
51
+ const descriptionLines = [];
52
+ for (const line of lines) {
53
+ // Skip title line
54
+ if (line.startsWith("# ") && !foundTitle) {
55
+ foundTitle = true;
56
+ continue;
57
+ }
58
+ // Skip badges (common after title)
59
+ if (line.includes("![") || line.includes("[![")) {
60
+ continue;
61
+ }
62
+ // Empty line after description ends it
63
+ if (foundTitle && descriptionLines.length > 0 && line.trim() === "") {
64
+ break;
65
+ }
66
+ // Skip empty lines before description
67
+ if (foundTitle && line.trim() === "") {
68
+ continue;
69
+ }
70
+ // Next heading ends description
71
+ if (foundTitle && line.startsWith("#")) {
72
+ break;
73
+ }
74
+ // Collect description lines
75
+ if (foundTitle && line.trim()) {
76
+ descriptionLines.push(line.trim());
77
+ }
78
+ }
79
+ return descriptionLines.join(" ");
80
+ }
81
+ /**
82
+ * Extract setup/installation instructions.
83
+ * @internal
84
+ */
85
+ function extractSetupInstructions(content) {
86
+ const instructions = [];
87
+ // Look for Installation, Setup, Getting Started sections
88
+ const sectionPatterns = [
89
+ /## (?:Installation|Setup|Getting Started|Quick Start)/i,
90
+ ];
91
+ const lines = content.split("\n");
92
+ let inSection = false;
93
+ for (const line of lines) {
94
+ // Check if entering a relevant section
95
+ if (sectionPatterns.some((p) => p.test(line))) {
96
+ inSection = true;
97
+ continue;
98
+ }
99
+ // Exit section on next heading
100
+ if (inSection && line.startsWith("##")) {
101
+ break;
102
+ }
103
+ // Collect code blocks and list items in section
104
+ if (inSection) {
105
+ if (line.includes("npm ") || line.includes("yarn ") || line.includes("npx ")) {
106
+ instructions.push(line.trim().replace(/^[\s$]+/, ""));
107
+ }
108
+ else if (line.trim().startsWith("-") || line.trim().startsWith("*")) {
109
+ instructions.push(line.trim().replace(/^[-*]\s*/, ""));
110
+ }
111
+ }
112
+ }
113
+ return instructions.slice(0, 10); // Limit to 10 instructions
114
+ }
115
+ /**
116
+ * Extract features list.
117
+ * @internal
118
+ */
119
+ function extractFeatures(content) {
120
+ const features = [];
121
+ // Look for Features section
122
+ const lines = content.split("\n");
123
+ let inSection = false;
124
+ for (const line of lines) {
125
+ if (/## (?:Features|Capabilities|What it does)/i.test(line)) {
126
+ inSection = true;
127
+ continue;
128
+ }
129
+ if (inSection && line.startsWith("##")) {
130
+ break;
131
+ }
132
+ if (inSection && (line.trim().startsWith("-") || line.trim().startsWith("*"))) {
133
+ features.push(line.trim().replace(/^[-*]\s*/, ""));
134
+ }
135
+ }
136
+ return features.slice(0, 15); // Limit to 15 features
137
+ }
138
+ /**
139
+ * Extract documentation links.
140
+ * @internal
141
+ */
142
+ function extractDocumentationLinks(content) {
143
+ const links = [];
144
+ // Find markdown links
145
+ const linkPattern = /\[([^\]]+)\]\(([^)]+)\)/g;
146
+ let match;
147
+ while ((match = linkPattern.exec(content)) !== null) {
148
+ const text = match[1];
149
+ const url = match[2];
150
+ // Filter for documentation-like links
151
+ if (text && url) {
152
+ if (url.includes("docs") ||
153
+ url.includes("wiki") ||
154
+ url.includes("guide") ||
155
+ text.toLowerCase().includes("doc") ||
156
+ text.toLowerCase().includes("api")) {
157
+ links.push(`${text}: ${url}`);
158
+ }
159
+ }
160
+ }
161
+ return links.slice(0, 10);
162
+ }
163
+ //# sourceMappingURL=readme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readme.js","sourceRoot":"","sources":["../../../src/learn/analyzers/readme.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Source code analyzer for full depth learning.
3
+ * @module learn/analyzers/source
4
+ */
5
+ /**
6
+ * Code pattern detected in source.
7
+ */
8
+ export interface CodePattern {
9
+ /** Pattern type identifier */
10
+ type: string;
11
+ /** Human-readable description */
12
+ description: string;
13
+ /** Example file paths where pattern was found */
14
+ examples: string[];
15
+ }
16
+ /**
17
+ * Module information.
18
+ */
19
+ export interface ModuleInfo {
20
+ /** Module name (typically filename without extension) */
21
+ name: string;
22
+ /** File path */
23
+ path: string;
24
+ /** Exported identifiers */
25
+ exports: string[];
26
+ /** Imported modules */
27
+ imports: string[];
28
+ }
29
+ /**
30
+ * Detected coding conventions.
31
+ */
32
+ export interface CodingConventions {
33
+ /** Naming style for variables/functions */
34
+ namingStyle: "camelCase" | "snake_case" | "PascalCase" | "mixed";
35
+ /** Import style preference */
36
+ importStyle: "named" | "default" | "mixed";
37
+ /** Error handling approach */
38
+ errorHandling: string;
39
+ /** Whether async/await is preferred */
40
+ prefersAsync: boolean;
41
+ }
42
+ /**
43
+ * Analysis result from source code.
44
+ */
45
+ export interface SourceAnalysis {
46
+ /** Detected code patterns */
47
+ patterns: CodePattern[];
48
+ /** Module information */
49
+ modules: ModuleInfo[];
50
+ /** Coding conventions */
51
+ conventions: CodingConventions;
52
+ /** Files analyzed */
53
+ filesAnalyzed: number;
54
+ }
55
+ /**
56
+ * Analyze source files in a project.
57
+ *
58
+ * @param projectPath - Project root directory
59
+ * @param filePaths - Paths to analyze (relative to project)
60
+ * @returns Source analysis
61
+ */
62
+ export declare function analyzeSource(projectPath: string, filePaths: string[]): Promise<SourceAnalysis>;
63
+ /**
64
+ * Get a summary of source analysis.
65
+ *
66
+ * @param analysis - Source analysis result
67
+ * @returns Human-readable source summary
68
+ */
69
+ export declare function getSourceSummary(analysis: SourceAnalysis): string;
70
+ //# sourceMappingURL=source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/learn/analyzers/source.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,uBAAuB;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,WAAW,EAAE,WAAW,GAAG,YAAY,GAAG,YAAY,GAAG,OAAO,CAAC;IACjE,8BAA8B;IAC9B,WAAW,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IAC3C,8BAA8B;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,uCAAuC;IACvC,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,yBAAyB;IACzB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,yBAAyB;IACzB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAkBD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,cAAc,CAAC,CAoEzB;AAiLD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAajE"}
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Source code analyzer for full depth learning.
3
+ * @module learn/analyzers/source
4
+ */
5
+ import { readFile } from "node:fs/promises";
6
+ import { extname } from "node:path";
7
+ /**
8
+ * Analyze source files in a project.
9
+ *
10
+ * @param projectPath - Project root directory
11
+ * @param filePaths - Paths to analyze (relative to project)
12
+ * @returns Source analysis
13
+ */
14
+ export async function analyzeSource(projectPath, filePaths) {
15
+ const patterns = [];
16
+ const modules = [];
17
+ const conventionStats = {
18
+ camelCase: 0,
19
+ snake_case: 0,
20
+ PascalCase: 0,
21
+ namedImports: 0,
22
+ defaultImports: 0,
23
+ tryCatch: 0,
24
+ errorCallbacks: 0,
25
+ asyncAwait: 0,
26
+ promiseCount: 0,
27
+ };
28
+ let filesAnalyzed = 0;
29
+ for (const filePath of filePaths) {
30
+ try {
31
+ const fullPath = `${projectPath}/${filePath}`;
32
+ const content = await readFile(fullPath, "utf-8");
33
+ const ext = extname(filePath).toLowerCase();
34
+ // Only analyze JS/TS files
35
+ if (![".js", ".ts", ".jsx", ".tsx", ".mjs", ".mts"].includes(ext)) {
36
+ continue;
37
+ }
38
+ filesAnalyzed++;
39
+ // Analyze the file
40
+ const analysis = analyzeFile(content, filePath);
41
+ // Collect module info
42
+ modules.push({
43
+ name: filePath.replace(/\.[^/.]+$/, ""),
44
+ path: filePath,
45
+ exports: analysis.exports,
46
+ imports: analysis.imports,
47
+ });
48
+ // Update convention stats
49
+ conventionStats.camelCase += analysis.camelCaseCount;
50
+ conventionStats.snake_case += analysis.snakeCaseCount;
51
+ conventionStats.PascalCase += analysis.pascalCaseCount;
52
+ conventionStats.namedImports += analysis.namedImportCount;
53
+ conventionStats.defaultImports += analysis.defaultImportCount;
54
+ conventionStats.tryCatch += analysis.tryCatchCount;
55
+ conventionStats.errorCallbacks += analysis.errorCallbackCount;
56
+ conventionStats.asyncAwait += analysis.asyncAwaitCount;
57
+ conventionStats.promiseCount += analysis.promiseCount;
58
+ }
59
+ catch {
60
+ // Skip files that can't be read
61
+ }
62
+ }
63
+ // Detect patterns from aggregated analysis
64
+ patterns.push(...detectPatterns(modules));
65
+ // Determine conventions
66
+ const conventions = determineConventions(conventionStats);
67
+ return {
68
+ patterns,
69
+ modules,
70
+ conventions,
71
+ filesAnalyzed,
72
+ };
73
+ }
74
+ /**
75
+ * Analyze a single file.
76
+ * @internal
77
+ */
78
+ function analyzeFile(content, _filePath) {
79
+ const result = {
80
+ exports: [],
81
+ imports: [],
82
+ camelCaseCount: 0,
83
+ snakeCaseCount: 0,
84
+ pascalCaseCount: 0,
85
+ namedImportCount: 0,
86
+ defaultImportCount: 0,
87
+ tryCatchCount: 0,
88
+ errorCallbackCount: 0,
89
+ asyncAwaitCount: 0,
90
+ promiseCount: 0,
91
+ };
92
+ // Extract exports
93
+ const exportMatches = content.matchAll(/export\s+(?:const|let|var|function|class|interface|type|enum)\s+(\w+)/g);
94
+ for (const match of exportMatches) {
95
+ if (match[1]) {
96
+ result.exports.push(match[1]);
97
+ }
98
+ }
99
+ // Extract export { ... }
100
+ const namedExportMatches = content.matchAll(/export\s*\{([^}]+)\}/g);
101
+ for (const match of namedExportMatches) {
102
+ if (match[1]) {
103
+ const names = match[1].split(",").map((n) => {
104
+ const parts = n.trim().split(" as ");
105
+ return parts[0]?.trim() ?? "";
106
+ });
107
+ result.exports.push(...names.filter(Boolean));
108
+ }
109
+ }
110
+ // Extract imports
111
+ const importMatches = content.matchAll(/import\s+.*?\s+from\s+['"]([^'"]+)['"]/g);
112
+ for (const match of importMatches) {
113
+ if (match[1]) {
114
+ result.imports.push(match[1]);
115
+ }
116
+ }
117
+ // Count naming conventions
118
+ const identifierMatches = content.matchAll(/\b([a-z][a-zA-Z0-9]*)\b/g);
119
+ for (const match of identifierMatches) {
120
+ const name = match[1];
121
+ if (name && name.length > 0) {
122
+ const firstChar = name[0];
123
+ if (name.includes("_")) {
124
+ result.snakeCaseCount++;
125
+ }
126
+ else if (firstChar && firstChar === firstChar.toUpperCase()) {
127
+ result.pascalCaseCount++;
128
+ }
129
+ else {
130
+ result.camelCaseCount++;
131
+ }
132
+ }
133
+ }
134
+ // Count import styles
135
+ result.namedImportCount = (content.match(/import\s*\{/g) || []).length;
136
+ result.defaultImportCount = (content.match(/import\s+\w+\s+from/g) || []).length;
137
+ // Count error handling
138
+ result.tryCatchCount = (content.match(/try\s*\{/g) || []).length;
139
+ result.errorCallbackCount = (content.match(/\.catch\s*\(/g) || []).length;
140
+ // Count async patterns
141
+ result.asyncAwaitCount = (content.match(/\basync\b/g) || []).length;
142
+ result.promiseCount = (content.match(/new\s+Promise/g) || []).length;
143
+ return result;
144
+ }
145
+ /**
146
+ * Detect patterns from module analysis.
147
+ * @internal
148
+ */
149
+ function detectPatterns(modules) {
150
+ const patterns = [];
151
+ // Detect barrel exports (index.ts that re-exports)
152
+ const barrelModules = modules.filter((m) => m.name.endsWith("index") && m.exports.length > 3);
153
+ if (barrelModules.length > 0) {
154
+ patterns.push({
155
+ type: "barrel-exports",
156
+ description: "Uses barrel exports (index files that re-export)",
157
+ examples: barrelModules.slice(0, 3).map((m) => m.path),
158
+ });
159
+ }
160
+ // Detect modular architecture
161
+ const hasMultipleModules = modules.length > 10;
162
+ const avgExports = modules.reduce((sum, m) => sum + m.exports.length, 0) / modules.length;
163
+ if (hasMultipleModules && avgExports < 10) {
164
+ patterns.push({
165
+ type: "modular-architecture",
166
+ description: "Follows modular architecture with small, focused modules",
167
+ examples: modules.slice(0, 3).map((m) => m.path),
168
+ });
169
+ }
170
+ return patterns;
171
+ }
172
+ /**
173
+ * Determine coding conventions from stats.
174
+ * @internal
175
+ */
176
+ function determineConventions(stats) {
177
+ // Determine naming style
178
+ let namingStyle = "mixed";
179
+ const totalNaming = stats.camelCase + stats.snake_case + stats.PascalCase;
180
+ if (stats.camelCase > totalNaming * 0.6) {
181
+ namingStyle = "camelCase";
182
+ }
183
+ else if (stats.snake_case > totalNaming * 0.6) {
184
+ namingStyle = "snake_case";
185
+ }
186
+ else if (stats.PascalCase > totalNaming * 0.6) {
187
+ namingStyle = "PascalCase";
188
+ }
189
+ // Determine import style
190
+ let importStyle = "mixed";
191
+ const totalImports = stats.namedImports + stats.defaultImports;
192
+ if (stats.namedImports > totalImports * 0.7) {
193
+ importStyle = "named";
194
+ }
195
+ else if (stats.defaultImports > totalImports * 0.7) {
196
+ importStyle = "default";
197
+ }
198
+ // Determine error handling
199
+ let errorHandling = "mixed";
200
+ if (stats.tryCatch > stats.errorCallbacks * 2) {
201
+ errorHandling = "try-catch blocks";
202
+ }
203
+ else if (stats.errorCallbacks > stats.tryCatch * 2) {
204
+ errorHandling = "promise .catch()";
205
+ }
206
+ // Determine async preference
207
+ const prefersAsync = stats.asyncAwait > stats.promiseCount;
208
+ return {
209
+ namingStyle,
210
+ importStyle,
211
+ errorHandling,
212
+ prefersAsync,
213
+ };
214
+ }
215
+ /**
216
+ * Get a summary of source analysis.
217
+ *
218
+ * @param analysis - Source analysis result
219
+ * @returns Human-readable source summary
220
+ */
221
+ export function getSourceSummary(analysis) {
222
+ const parts = [];
223
+ parts.push(`${analysis.filesAnalyzed} files analyzed`);
224
+ parts.push(`${analysis.modules.length} modules`);
225
+ if (analysis.patterns.length > 0) {
226
+ parts.push(`Patterns: ${analysis.patterns.map((p) => p.type).join(", ")}`);
227
+ }
228
+ parts.push(`Style: ${analysis.conventions.namingStyle}`);
229
+ return parts.join("; ");
230
+ }
231
+ //# sourceMappingURL=source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../../../src/learn/analyzers/source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Directory structure analyzer.
3
+ * @module learn/analyzers/structure
4
+ */
5
+ /**
6
+ * Analysis result from directory structure.
7
+ */
8
+ export interface StructureAnalysis {
9
+ /** Identified source directories */
10
+ sourceDirectories: string[];
11
+ /** Identified test directories */
12
+ testDirectories: string[];
13
+ /** Configuration files found */
14
+ configFiles: string[];
15
+ /** Likely entry points */
16
+ entryPoints: string[];
17
+ /** Total files analyzed */
18
+ totalFiles: number;
19
+ /** File types distribution (extension -> count) */
20
+ fileTypes: Record<string, number>;
21
+ /** Top-level directories */
22
+ topLevelDirs: string[];
23
+ }
24
+ /**
25
+ * Analyze directory structure of a project.
26
+ *
27
+ * @param projectPath - Project root directory
28
+ * @param maxDepth - Maximum depth to scan (default: 4)
29
+ * @returns Structure analysis
30
+ */
31
+ export declare function analyzeStructure(projectPath: string, maxDepth?: number): Promise<StructureAnalysis>;
32
+ /**
33
+ * Get a summary of the project structure.
34
+ *
35
+ * @param analysis - Structure analysis result
36
+ * @returns Human-readable structure summary
37
+ */
38
+ export declare function getStructureSummary(analysis: StructureAnalysis): string;
39
+ //# sourceMappingURL=structure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../../../src/learn/analyzers/structure.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,oCAAoC;IACpC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,kCAAkC;IAClC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gCAAgC;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,0BAA0B;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,4BAA4B;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAgED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,MAAU,GACnB,OAAO,CAAC,iBAAiB,CAAC,CAc5B;AA8ED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAwBvE"}