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,172 @@
1
+ /**
2
+ * Directory structure analyzer.
3
+ * @module learn/analyzers/structure
4
+ */
5
+ import { readdir, stat } from "node:fs/promises";
6
+ import { join, extname } from "node:path";
7
+ /** Directories to skip during analysis */
8
+ const SKIP_DIRS = new Set([
9
+ "node_modules",
10
+ ".git",
11
+ ".next",
12
+ ".nuxt",
13
+ "dist",
14
+ "build",
15
+ "out",
16
+ "coverage",
17
+ ".cache",
18
+ "__pycache__",
19
+ ".venv",
20
+ "venv",
21
+ ]);
22
+ /** Known source directory names */
23
+ const SOURCE_DIRS = new Set([
24
+ "src",
25
+ "lib",
26
+ "app",
27
+ "source",
28
+ "packages",
29
+ "modules",
30
+ ]);
31
+ /** Known test directory names */
32
+ const TEST_DIRS = new Set([
33
+ "test",
34
+ "tests",
35
+ "__tests__",
36
+ "spec",
37
+ "specs",
38
+ "e2e",
39
+ "integration",
40
+ ]);
41
+ /** Known config file patterns */
42
+ const CONFIG_PATTERNS = [
43
+ /^tsconfig.*\.json$/,
44
+ /^\.eslintrc/,
45
+ /^\.prettierrc/,
46
+ /^vite\.config\./,
47
+ /^webpack\.config\./,
48
+ /^next\.config\./,
49
+ /^tailwind\.config\./,
50
+ /^jest\.config\./,
51
+ /^vitest\.config\./,
52
+ /^\.env/,
53
+ /^docker-compose/,
54
+ /^Dockerfile/,
55
+ ];
56
+ /** Known entry point patterns */
57
+ const ENTRY_PATTERNS = [
58
+ /^index\.[jt]sx?$/,
59
+ /^main\.[jt]sx?$/,
60
+ /^app\.[jt]sx?$/,
61
+ /^server\.[jt]sx?$/,
62
+ /^cli\.[jt]sx?$/,
63
+ ];
64
+ /**
65
+ * Analyze directory structure of a project.
66
+ *
67
+ * @param projectPath - Project root directory
68
+ * @param maxDepth - Maximum depth to scan (default: 4)
69
+ * @returns Structure analysis
70
+ */
71
+ export async function analyzeStructure(projectPath, maxDepth = 4) {
72
+ const result = {
73
+ sourceDirectories: [],
74
+ testDirectories: [],
75
+ configFiles: [],
76
+ entryPoints: [],
77
+ totalFiles: 0,
78
+ fileTypes: {},
79
+ topLevelDirs: [],
80
+ };
81
+ await scanDirectory(projectPath, result, 0, maxDepth, "");
82
+ return result;
83
+ }
84
+ /**
85
+ * Recursively scan a directory.
86
+ * @internal
87
+ */
88
+ async function scanDirectory(dir, result, depth, maxDepth, relativePath) {
89
+ if (depth > maxDepth)
90
+ return;
91
+ let entries;
92
+ try {
93
+ entries = await readdir(dir);
94
+ }
95
+ catch {
96
+ return; // Can't read directory
97
+ }
98
+ for (const entry of entries) {
99
+ if (SKIP_DIRS.has(entry))
100
+ continue;
101
+ const fullPath = join(dir, entry);
102
+ const relPath = relativePath ? `${relativePath}/${entry}` : entry;
103
+ let entryStat;
104
+ try {
105
+ entryStat = await stat(fullPath);
106
+ }
107
+ catch {
108
+ continue; // Can't stat entry
109
+ }
110
+ if (entryStat.isDirectory()) {
111
+ // Track top-level directories
112
+ if (depth === 0) {
113
+ result.topLevelDirs.push(entry);
114
+ }
115
+ // Identify source/test directories
116
+ if (SOURCE_DIRS.has(entry.toLowerCase())) {
117
+ result.sourceDirectories.push(relPath);
118
+ }
119
+ if (TEST_DIRS.has(entry.toLowerCase())) {
120
+ result.testDirectories.push(relPath);
121
+ }
122
+ // Recurse
123
+ await scanDirectory(fullPath, result, depth + 1, maxDepth, relPath);
124
+ }
125
+ else {
126
+ // Track file
127
+ result.totalFiles++;
128
+ // Track file types
129
+ const ext = extname(entry).toLowerCase() || "(no ext)";
130
+ result.fileTypes[ext] = (result.fileTypes[ext] || 0) + 1;
131
+ // Check for config files (only at root or config dirs)
132
+ if (depth <= 1 && CONFIG_PATTERNS.some((p) => p.test(entry))) {
133
+ result.configFiles.push(relPath);
134
+ }
135
+ // Check for entry points
136
+ if (ENTRY_PATTERNS.some((p) => p.test(entry))) {
137
+ // Prioritize entry points in source directories
138
+ const inSource = result.sourceDirectories.some((sd) => relPath.startsWith(sd + "/") || relativePath === sd);
139
+ if (inSource || depth <= 1) {
140
+ result.entryPoints.push(relPath);
141
+ }
142
+ }
143
+ }
144
+ }
145
+ }
146
+ /**
147
+ * Get a summary of the project structure.
148
+ *
149
+ * @param analysis - Structure analysis result
150
+ * @returns Human-readable structure summary
151
+ */
152
+ export function getStructureSummary(analysis) {
153
+ const parts = [];
154
+ if (analysis.sourceDirectories.length > 0) {
155
+ parts.push(`Source: ${analysis.sourceDirectories.join(", ")}`);
156
+ }
157
+ if (analysis.testDirectories.length > 0) {
158
+ parts.push(`Tests: ${analysis.testDirectories.join(", ")}`);
159
+ }
160
+ // Top file types
161
+ const topTypes = Object.entries(analysis.fileTypes)
162
+ .sort((a, b) => b[1] - a[1])
163
+ .slice(0, 5)
164
+ .map(([ext, count]) => `${ext}(${count})`)
165
+ .join(", ");
166
+ if (topTypes) {
167
+ parts.push(`Files: ${topTypes}`);
168
+ }
169
+ parts.push(`Total: ${analysis.totalFiles} files`);
170
+ return parts.join("; ");
171
+ }
172
+ //# sourceMappingURL=structure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structure.js","sourceRoot":"","sources":["../../../src/learn/analyzers/structure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Fact extraction from analysis results.
3
+ * @module learn/extractor
4
+ */
5
+ import type { ExtractedFact } from "../types.js";
6
+ import type { ReadmeAnalysis } from "./analyzers/readme.js";
7
+ import type { PackageAnalysis } from "./analyzers/package.js";
8
+ import type { StructureAnalysis } from "./analyzers/structure.js";
9
+ import type { GitAnalysis } from "./analyzers/git.js";
10
+ import type { SourceAnalysis } from "./analyzers/source.js";
11
+ /**
12
+ * Combined analysis results for fact extraction.
13
+ */
14
+ export interface AnalysisResults {
15
+ readme?: ReadmeAnalysis | null;
16
+ package?: PackageAnalysis | null;
17
+ structure?: StructureAnalysis | null;
18
+ git?: GitAnalysis | null;
19
+ source?: SourceAnalysis | null;
20
+ }
21
+ /**
22
+ * Fact extractor interface.
23
+ */
24
+ export interface FactExtractor {
25
+ /**
26
+ * Extract facts from analysis results.
27
+ *
28
+ * @param analysis - Combined analysis results
29
+ * @returns Array of extracted facts
30
+ */
31
+ extractFacts(analysis: AnalysisResults): ExtractedFact[];
32
+ }
33
+ /**
34
+ * Default fact extractor implementation.
35
+ *
36
+ * Converts analysis results into structured facts for storage in Hindsight.
37
+ */
38
+ export declare class DefaultFactExtractor implements FactExtractor {
39
+ /**
40
+ * Extract facts from analysis results.
41
+ *
42
+ * @param analysis - Combined analysis results
43
+ * @returns Array of extracted facts
44
+ */
45
+ extractFacts(analysis: AnalysisResults): ExtractedFact[];
46
+ /**
47
+ * Extract facts from README analysis.
48
+ * @internal
49
+ */
50
+ private extractFromReadme;
51
+ /**
52
+ * Extract facts from package.json analysis.
53
+ * @internal
54
+ */
55
+ private extractFromPackage;
56
+ /**
57
+ * Extract facts from structure analysis.
58
+ * @internal
59
+ */
60
+ private extractFromStructure;
61
+ /**
62
+ * Extract facts from git history analysis.
63
+ * @internal
64
+ */
65
+ private extractFromGit;
66
+ /**
67
+ * Extract facts from source code analysis.
68
+ * @internal
69
+ */
70
+ private extractFromSource;
71
+ }
72
+ /**
73
+ * Create a default fact extractor.
74
+ */
75
+ export declare function createFactExtractor(): FactExtractor;
76
+ //# sourceMappingURL=extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../src/learn/extractor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACrC,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,aAAa,EAAE,CAAC;CAC1D;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,aAAa;IACxD;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,aAAa,EAAE;IA+BxD;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAiCzB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAoG1B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAoD5B;;;OAGG;IACH,OAAO,CAAC,cAAc;IA2CtB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;CAyC1B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CAEnD"}
@@ -0,0 +1,302 @@
1
+ /**
2
+ * Fact extraction from analysis results.
3
+ * @module learn/extractor
4
+ */
5
+ /**
6
+ * Default fact extractor implementation.
7
+ *
8
+ * Converts analysis results into structured facts for storage in Hindsight.
9
+ */
10
+ export class DefaultFactExtractor {
11
+ /**
12
+ * Extract facts from analysis results.
13
+ *
14
+ * @param analysis - Combined analysis results
15
+ * @returns Array of extracted facts
16
+ */
17
+ extractFacts(analysis) {
18
+ const facts = [];
19
+ // Extract from README
20
+ if (analysis.readme) {
21
+ facts.push(...this.extractFromReadme(analysis.readme));
22
+ }
23
+ // Extract from package.json
24
+ if (analysis.package) {
25
+ facts.push(...this.extractFromPackage(analysis.package));
26
+ }
27
+ // Extract from structure
28
+ if (analysis.structure) {
29
+ facts.push(...this.extractFromStructure(analysis.structure));
30
+ }
31
+ // Extract from git history
32
+ if (analysis.git) {
33
+ facts.push(...this.extractFromGit(analysis.git));
34
+ }
35
+ // Extract from source analysis
36
+ if (analysis.source) {
37
+ facts.push(...this.extractFromSource(analysis.source));
38
+ }
39
+ return facts;
40
+ }
41
+ /**
42
+ * Extract facts from README analysis.
43
+ * @internal
44
+ */
45
+ extractFromReadme(readme) {
46
+ const facts = [];
47
+ // Project description
48
+ if (readme.projectDescription) {
49
+ facts.push({
50
+ content: `Project description: ${readme.projectDescription}`,
51
+ context: "Extracted from README.md",
52
+ category: "decisions",
53
+ });
54
+ }
55
+ // Features
56
+ if (readme.features.length > 0) {
57
+ facts.push({
58
+ content: `Key features: ${readme.features.slice(0, 5).join("; ")}`,
59
+ context: "Extracted from README.md features section",
60
+ category: "decisions",
61
+ });
62
+ }
63
+ // Setup instructions
64
+ if (readme.setupInstructions.length > 0) {
65
+ facts.push({
66
+ content: `Setup commands: ${readme.setupInstructions.slice(0, 3).join(", ")}`,
67
+ context: "Extracted from README.md installation section",
68
+ category: "decisions",
69
+ });
70
+ }
71
+ return facts;
72
+ }
73
+ /**
74
+ * Extract facts from package.json analysis.
75
+ * @internal
76
+ */
77
+ extractFromPackage(pkg) {
78
+ const facts = [];
79
+ // Project identity
80
+ if (pkg.description) {
81
+ facts.push({
82
+ content: `Package ${pkg.name}: ${pkg.description}`,
83
+ context: "From package.json",
84
+ category: "decisions",
85
+ });
86
+ }
87
+ // Tech stack - frameworks
88
+ const frameworks = pkg.dependencies.filter((d) => d.category === "framework");
89
+ if (frameworks.length > 0) {
90
+ facts.push({
91
+ content: `Framework stack: ${frameworks.map((f) => f.name).join(", ")}`,
92
+ context: "From package.json dependencies",
93
+ category: "stack",
94
+ });
95
+ }
96
+ // Tech stack - UI
97
+ const ui = pkg.dependencies.filter((d) => d.category === "ui");
98
+ if (ui.length > 0) {
99
+ facts.push({
100
+ content: `UI libraries: ${ui.map((u) => u.name).join(", ")}`,
101
+ context: "From package.json dependencies",
102
+ category: "stack",
103
+ });
104
+ }
105
+ // Tech stack - state management
106
+ const state = pkg.dependencies.filter((d) => d.category === "state");
107
+ if (state.length > 0) {
108
+ facts.push({
109
+ content: `State management: ${state.map((s) => s.name).join(", ")}`,
110
+ context: "From package.json dependencies",
111
+ category: "stack",
112
+ });
113
+ }
114
+ // Tech stack - database
115
+ const db = pkg.dependencies.filter((d) => d.category === "database");
116
+ if (db.length > 0) {
117
+ facts.push({
118
+ content: `Database/ORM: ${db.map((d) => d.name).join(", ")}`,
119
+ context: "From package.json dependencies",
120
+ category: "stack",
121
+ });
122
+ }
123
+ // Development tools
124
+ const build = pkg.devDependencies.filter((d) => d.category === "build");
125
+ if (build.length > 0) {
126
+ facts.push({
127
+ content: `Build tools: ${build.map((b) => b.name).join(", ")}`,
128
+ context: "From package.json devDependencies",
129
+ category: "stack",
130
+ });
131
+ }
132
+ // Testing tools
133
+ const testing = pkg.devDependencies.filter((d) => d.category === "testing");
134
+ if (testing.length > 0) {
135
+ facts.push({
136
+ content: `Testing tools: ${testing.map((t) => t.name).join(", ")}`,
137
+ context: "From package.json devDependencies",
138
+ category: "stack",
139
+ });
140
+ }
141
+ // Key scripts
142
+ const importantScripts = ["test", "build", "dev", "start", "lint"];
143
+ const scripts = Object.entries(pkg.scripts)
144
+ .filter(([name]) => importantScripts.includes(name))
145
+ .map(([name, cmd]) => `${name}: ${cmd}`);
146
+ if (scripts.length > 0) {
147
+ facts.push({
148
+ content: `NPM scripts: ${scripts.join("; ")}`,
149
+ context: "From package.json scripts",
150
+ category: "decisions",
151
+ });
152
+ }
153
+ // TypeScript detection
154
+ const hasTS = pkg.devDependencies.some((d) => d.name === "typescript") ||
155
+ pkg.dependencies.some((d) => d.name === "typescript");
156
+ if (hasTS) {
157
+ facts.push({
158
+ content: "Language: TypeScript",
159
+ context: "TypeScript found in dependencies",
160
+ category: "stack",
161
+ });
162
+ }
163
+ return facts;
164
+ }
165
+ /**
166
+ * Extract facts from structure analysis.
167
+ * @internal
168
+ */
169
+ extractFromStructure(structure) {
170
+ const facts = [];
171
+ // Project structure
172
+ if (structure.sourceDirectories.length > 0 || structure.testDirectories.length > 0) {
173
+ const parts = [];
174
+ if (structure.sourceDirectories.length > 0) {
175
+ parts.push(`source in ${structure.sourceDirectories.join(", ")}`);
176
+ }
177
+ if (structure.testDirectories.length > 0) {
178
+ parts.push(`tests in ${structure.testDirectories.join(", ")}`);
179
+ }
180
+ facts.push({
181
+ content: `Project structure: ${parts.join("; ")}`,
182
+ context: "Analyzed directory structure",
183
+ category: "structure",
184
+ });
185
+ }
186
+ // Entry points
187
+ if (structure.entryPoints.length > 0) {
188
+ facts.push({
189
+ content: `Entry points: ${structure.entryPoints.slice(0, 5).join(", ")}`,
190
+ context: "Identified from file naming patterns",
191
+ category: "structure",
192
+ });
193
+ }
194
+ // Config files
195
+ if (structure.configFiles.length > 0) {
196
+ facts.push({
197
+ content: `Configuration files: ${structure.configFiles.slice(0, 10).join(", ")}`,
198
+ context: "Found in project root",
199
+ category: "structure",
200
+ });
201
+ }
202
+ // File type distribution
203
+ const topTypes = Object.entries(structure.fileTypes)
204
+ .sort((a, b) => b[1] - a[1])
205
+ .slice(0, 5);
206
+ if (topTypes.length > 0) {
207
+ facts.push({
208
+ content: `File types: ${topTypes.map(([ext, count]) => `${ext}(${count})`).join(", ")}`,
209
+ context: "From file extension analysis",
210
+ category: "structure",
211
+ });
212
+ }
213
+ return facts;
214
+ }
215
+ /**
216
+ * Extract facts from git history analysis.
217
+ * @internal
218
+ */
219
+ extractFromGit(git) {
220
+ const facts = [];
221
+ // Team size
222
+ if (git.contributors.length > 0) {
223
+ facts.push({
224
+ content: `Team: ${git.contributors.length} contributors (${git.contributors.slice(0, 5).join(", ")})`,
225
+ context: "From git history",
226
+ category: "history",
227
+ });
228
+ }
229
+ // Commit convention
230
+ if (git.commitPatterns.messageConvention) {
231
+ facts.push({
232
+ content: `Commit convention: ${git.commitPatterns.messageConvention}`,
233
+ context: "Detected from commit messages",
234
+ category: "patterns",
235
+ });
236
+ }
237
+ // Significant commits (decisions)
238
+ for (const commit of git.significantCommits.slice(0, 5)) {
239
+ facts.push({
240
+ content: `Historical decision: ${commit.message}`,
241
+ context: `From git commit ${commit.hash} on ${commit.date}`,
242
+ category: "history",
243
+ });
244
+ }
245
+ // File hotspots
246
+ if (git.hotspots.length > 0) {
247
+ const topHotspots = git.hotspots.slice(0, 5);
248
+ facts.push({
249
+ content: `Most active files: ${topHotspots.map((h) => h.file).join(", ")}`,
250
+ context: "Based on git commit frequency",
251
+ category: "patterns",
252
+ });
253
+ }
254
+ return facts;
255
+ }
256
+ /**
257
+ * Extract facts from source code analysis.
258
+ * @internal
259
+ */
260
+ extractFromSource(source) {
261
+ const facts = [];
262
+ // Coding conventions
263
+ facts.push({
264
+ content: `Naming convention: ${source.conventions.namingStyle}`,
265
+ context: "Detected from source code analysis",
266
+ category: "patterns",
267
+ });
268
+ facts.push({
269
+ content: `Import style: ${source.conventions.importStyle} imports preferred`,
270
+ context: "Detected from source code analysis",
271
+ category: "patterns",
272
+ });
273
+ facts.push({
274
+ content: `Error handling: ${source.conventions.errorHandling}`,
275
+ context: "Detected from source code analysis",
276
+ category: "patterns",
277
+ });
278
+ if (source.conventions.prefersAsync) {
279
+ facts.push({
280
+ content: "Async/await is preferred over raw Promises",
281
+ context: "Detected from source code analysis",
282
+ category: "patterns",
283
+ });
284
+ }
285
+ // Code patterns
286
+ for (const pattern of source.patterns) {
287
+ facts.push({
288
+ content: `Code pattern: ${pattern.description}`,
289
+ context: `Found in: ${pattern.examples.slice(0, 3).join(", ")}`,
290
+ category: "patterns",
291
+ });
292
+ }
293
+ return facts;
294
+ }
295
+ }
296
+ /**
297
+ * Create a default fact extractor.
298
+ */
299
+ export function createFactExtractor() {
300
+ return new DefaultFactExtractor();
301
+ }
302
+ //# sourceMappingURL=extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../src/learn/extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Learn operation - bootstrap memory from existing codebase.
3
+ * @module learn
4
+ */
5
+ import type { HindsightClient } from "../client.js";
6
+ import type { LearnOptions, LearnResult } from "../types.js";
7
+ /**
8
+ * Bootstrap memory from an existing codebase.
9
+ *
10
+ * This operation analyzes the project and stores facts in Hindsight,
11
+ * solving the cold start problem when adopting claude-cognitive.
12
+ *
13
+ * @param client - HindsightClient instance
14
+ * @param bankId - Memory bank ID
15
+ * @param projectPath - Project root directory
16
+ * @param options - Learn options
17
+ * @returns Learn result with summary and stats
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const result = await learn(client, 'my-project', '/path/to/project', {
22
+ * depth: 'full',
23
+ * includeGitHistory: true
24
+ * });
25
+ *
26
+ * console.log(result.summary);
27
+ * // "Learned 47 world facts from 123 files, formed 5 opinions"
28
+ * ```
29
+ */
30
+ export declare function learn(client: HindsightClient, bankId: string, projectPath: string, options?: LearnOptions): Promise<LearnResult>;
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/learn/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAU,YAAY,EAAE,WAAW,EAAW,MAAM,aAAa,CAAC;AAoB9E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,KAAK,CACzB,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CAmEtB"}