@ai-agent-context/core 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 (236) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +285 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/adapters/filesystem/fs-adapter.d.ts +50 -0
  5. package/dist/adapters/filesystem/fs-adapter.d.ts.map +1 -0
  6. package/dist/adapters/filesystem/fs-adapter.js +168 -0
  7. package/dist/adapters/filesystem/fs-adapter.js.map +1 -0
  8. package/dist/adapters/filesystem/sensitive.d.ts +26 -0
  9. package/dist/adapters/filesystem/sensitive.d.ts.map +1 -0
  10. package/dist/adapters/filesystem/sensitive.js +67 -0
  11. package/dist/adapters/filesystem/sensitive.js.map +1 -0
  12. package/dist/adapters/git/git-adapter.d.ts +47 -0
  13. package/dist/adapters/git/git-adapter.d.ts.map +1 -0
  14. package/dist/adapters/git/git-adapter.js +109 -0
  15. package/dist/adapters/git/git-adapter.js.map +1 -0
  16. package/dist/adapters/language/json/adapter.d.ts +24 -0
  17. package/dist/adapters/language/json/adapter.d.ts.map +1 -0
  18. package/dist/adapters/language/json/adapter.js +54 -0
  19. package/dist/adapters/language/json/adapter.js.map +1 -0
  20. package/dist/adapters/language/markdown/adapter.d.ts +41 -0
  21. package/dist/adapters/language/markdown/adapter.d.ts.map +1 -0
  22. package/dist/adapters/language/markdown/adapter.js +124 -0
  23. package/dist/adapters/language/markdown/adapter.js.map +1 -0
  24. package/dist/adapters/language/package-json/adapter.d.ts +47 -0
  25. package/dist/adapters/language/package-json/adapter.d.ts.map +1 -0
  26. package/dist/adapters/language/package-json/adapter.js +153 -0
  27. package/dist/adapters/language/package-json/adapter.js.map +1 -0
  28. package/dist/adapters/language/registry.d.ts +35 -0
  29. package/dist/adapters/language/registry.d.ts.map +1 -0
  30. package/dist/adapters/language/registry.js +79 -0
  31. package/dist/adapters/language/registry.js.map +1 -0
  32. package/dist/adapters/language/ts-js/adapter.d.ts +14 -0
  33. package/dist/adapters/language/ts-js/adapter.d.ts.map +1 -0
  34. package/dist/adapters/language/ts-js/adapter.js +59 -0
  35. package/dist/adapters/language/ts-js/adapter.js.map +1 -0
  36. package/dist/adapters/language/ts-js/extractor.d.ts +21 -0
  37. package/dist/adapters/language/ts-js/extractor.d.ts.map +1 -0
  38. package/dist/adapters/language/ts-js/extractor.js +779 -0
  39. package/dist/adapters/language/ts-js/extractor.js.map +1 -0
  40. package/dist/adapters/language/ts-js/lexer.d.ts +30 -0
  41. package/dist/adapters/language/ts-js/lexer.d.ts.map +1 -0
  42. package/dist/adapters/language/ts-js/lexer.js +446 -0
  43. package/dist/adapters/language/ts-js/lexer.js.map +1 -0
  44. package/dist/adapters/language/ts-js/package-signals.d.ts +5 -0
  45. package/dist/adapters/language/ts-js/package-signals.d.ts.map +1 -0
  46. package/dist/adapters/language/ts-js/package-signals.js +113 -0
  47. package/dist/adapters/language/ts-js/package-signals.js.map +1 -0
  48. package/dist/adapters/language/tsconfig/adapter.d.ts +38 -0
  49. package/dist/adapters/language/tsconfig/adapter.d.ts.map +1 -0
  50. package/dist/adapters/language/tsconfig/adapter.js +130 -0
  51. package/dist/adapters/language/tsconfig/adapter.js.map +1 -0
  52. package/dist/adapters/language/types.d.ts +152 -0
  53. package/dist/adapters/language/types.d.ts.map +1 -0
  54. package/dist/adapters/language/types.js +51 -0
  55. package/dist/adapters/language/types.js.map +1 -0
  56. package/dist/agent-context.d.ts +122 -0
  57. package/dist/agent-context.d.ts.map +1 -0
  58. package/dist/agent-context.js +243 -0
  59. package/dist/agent-context.js.map +1 -0
  60. package/dist/config/defaults.d.ts +13 -0
  61. package/dist/config/defaults.d.ts.map +1 -0
  62. package/dist/config/defaults.js +98 -0
  63. package/dist/config/defaults.js.map +1 -0
  64. package/dist/config/load.d.ts +25 -0
  65. package/dist/config/load.d.ts.map +1 -0
  66. package/dist/config/load.js +106 -0
  67. package/dist/config/load.js.map +1 -0
  68. package/dist/config/types.d.ts +95 -0
  69. package/dist/config/types.d.ts.map +1 -0
  70. package/dist/config/types.js +8 -0
  71. package/dist/config/types.js.map +1 -0
  72. package/dist/config/validate.d.ts +15 -0
  73. package/dist/config/validate.d.ts.map +1 -0
  74. package/dist/config/validate.js +202 -0
  75. package/dist/config/validate.js.map +1 -0
  76. package/dist/core/architecture/detector.d.ts +10 -0
  77. package/dist/core/architecture/detector.d.ts.map +1 -0
  78. package/dist/core/architecture/detector.js +37 -0
  79. package/dist/core/architecture/detector.js.map +1 -0
  80. package/dist/core/architecture/entry-points.d.ts +20 -0
  81. package/dist/core/architecture/entry-points.d.ts.map +1 -0
  82. package/dist/core/architecture/entry-points.js +190 -0
  83. package/dist/core/architecture/entry-points.js.map +1 -0
  84. package/dist/core/architecture/role-detector.d.ts +32 -0
  85. package/dist/core/architecture/role-detector.d.ts.map +1 -0
  86. package/dist/core/architecture/role-detector.js +240 -0
  87. package/dist/core/architecture/role-detector.js.map +1 -0
  88. package/dist/core/context/explain.d.ts +36 -0
  89. package/dist/core/context/explain.d.ts.map +1 -0
  90. package/dist/core/context/explain.js +199 -0
  91. package/dist/core/context/explain.js.map +1 -0
  92. package/dist/core/context/repository-context.d.ts +16 -0
  93. package/dist/core/context/repository-context.d.ts.map +1 -0
  94. package/dist/core/context/repository-context.js +134 -0
  95. package/dist/core/context/repository-context.js.map +1 -0
  96. package/dist/core/context/types.d.ts +94 -0
  97. package/dist/core/context/types.d.ts.map +1 -0
  98. package/dist/core/context/types.js +2 -0
  99. package/dist/core/context/types.js.map +1 -0
  100. package/dist/core/conventions/detector.d.ts +55 -0
  101. package/dist/core/conventions/detector.d.ts.map +1 -0
  102. package/dist/core/conventions/detector.js +438 -0
  103. package/dist/core/conventions/detector.js.map +1 -0
  104. package/dist/core/conventions/renderer.d.ts +16 -0
  105. package/dist/core/conventions/renderer.d.ts.map +1 -0
  106. package/dist/core/conventions/renderer.js +42 -0
  107. package/dist/core/conventions/renderer.js.map +1 -0
  108. package/dist/core/decisions/detector.d.ts +45 -0
  109. package/dist/core/decisions/detector.d.ts.map +1 -0
  110. package/dist/core/decisions/detector.js +256 -0
  111. package/dist/core/decisions/detector.js.map +1 -0
  112. package/dist/core/diff/differ.d.ts +26 -0
  113. package/dist/core/diff/differ.d.ts.map +1 -0
  114. package/dist/core/diff/differ.js +159 -0
  115. package/dist/core/diff/differ.js.map +1 -0
  116. package/dist/core/git-analysis/activity.d.ts +35 -0
  117. package/dist/core/git-analysis/activity.d.ts.map +1 -0
  118. package/dist/core/git-analysis/activity.js +123 -0
  119. package/dist/core/git-analysis/activity.js.map +1 -0
  120. package/dist/core/graph/aliases.d.ts +20 -0
  121. package/dist/core/graph/aliases.d.ts.map +1 -0
  122. package/dist/core/graph/aliases.js +99 -0
  123. package/dist/core/graph/aliases.js.map +1 -0
  124. package/dist/core/graph/knowledge-graph.d.ts +91 -0
  125. package/dist/core/graph/knowledge-graph.d.ts.map +1 -0
  126. package/dist/core/graph/knowledge-graph.js +572 -0
  127. package/dist/core/graph/knowledge-graph.js.map +1 -0
  128. package/dist/core/graph/modules.d.ts +28 -0
  129. package/dist/core/graph/modules.d.ts.map +1 -0
  130. package/dist/core/graph/modules.js +139 -0
  131. package/dist/core/graph/modules.js.map +1 -0
  132. package/dist/core/graph/resolver.d.ts +50 -0
  133. package/dist/core/graph/resolver.d.ts.map +1 -0
  134. package/dist/core/graph/resolver.js +180 -0
  135. package/dist/core/graph/resolver.js.map +1 -0
  136. package/dist/core/scanner/cache.d.ts +49 -0
  137. package/dist/core/scanner/cache.d.ts.map +1 -0
  138. package/dist/core/scanner/cache.js +101 -0
  139. package/dist/core/scanner/cache.js.map +1 -0
  140. package/dist/core/scanner/scanner.d.ts +60 -0
  141. package/dist/core/scanner/scanner.d.ts.map +1 -0
  142. package/dist/core/scanner/scanner.js +304 -0
  143. package/dist/core/scanner/scanner.js.map +1 -0
  144. package/dist/core/scanner/types.d.ts +47 -0
  145. package/dist/core/scanner/types.d.ts.map +1 -0
  146. package/dist/core/scanner/types.js +18 -0
  147. package/dist/core/scanner/types.js.map +1 -0
  148. package/dist/core/search/analyzer.d.ts +16 -0
  149. package/dist/core/search/analyzer.d.ts.map +1 -0
  150. package/dist/core/search/analyzer.js +165 -0
  151. package/dist/core/search/analyzer.js.map +1 -0
  152. package/dist/core/search/bm25.d.ts +21 -0
  153. package/dist/core/search/bm25.d.ts.map +1 -0
  154. package/dist/core/search/bm25.js +108 -0
  155. package/dist/core/search/bm25.js.map +1 -0
  156. package/dist/core/search/documents.d.ts +20 -0
  157. package/dist/core/search/documents.d.ts.map +1 -0
  158. package/dist/core/search/documents.js +106 -0
  159. package/dist/core/search/documents.js.map +1 -0
  160. package/dist/core/search/service.d.ts +30 -0
  161. package/dist/core/search/service.d.ts.map +1 -0
  162. package/dist/core/search/service.js +54 -0
  163. package/dist/core/search/service.js.map +1 -0
  164. package/dist/core/search/types.d.ts +44 -0
  165. package/dist/core/search/types.d.ts.map +1 -0
  166. package/dist/core/search/types.js +2 -0
  167. package/dist/core/search/types.js.map +1 -0
  168. package/dist/core/serialization/documents.d.ts +26 -0
  169. package/dist/core/serialization/documents.d.ts.map +1 -0
  170. package/dist/core/serialization/documents.js +224 -0
  171. package/dist/core/serialization/documents.js.map +1 -0
  172. package/dist/core/serialization/reader.d.ts +22 -0
  173. package/dist/core/serialization/reader.d.ts.map +1 -0
  174. package/dist/core/serialization/reader.js +65 -0
  175. package/dist/core/serialization/reader.js.map +1 -0
  176. package/dist/core/serialization/types.d.ts +184 -0
  177. package/dist/core/serialization/types.d.ts.map +1 -0
  178. package/dist/core/serialization/types.js +2 -0
  179. package/dist/core/serialization/types.js.map +1 -0
  180. package/dist/core/serialization/writer.d.ts +17 -0
  181. package/dist/core/serialization/writer.d.ts.map +1 -0
  182. package/dist/core/serialization/writer.js +64 -0
  183. package/dist/core/serialization/writer.js.map +1 -0
  184. package/dist/core/workspace/package-facts.d.ts +12 -0
  185. package/dist/core/workspace/package-facts.d.ts.map +1 -0
  186. package/dist/core/workspace/package-facts.js +50 -0
  187. package/dist/core/workspace/package-facts.js.map +1 -0
  188. package/dist/core/workspace/workspace.d.ts +32 -0
  189. package/dist/core/workspace/workspace.d.ts.map +1 -0
  190. package/dist/core/workspace/workspace.js +167 -0
  191. package/dist/core/workspace/workspace.js.map +1 -0
  192. package/dist/errors.d.ts +50 -0
  193. package/dist/errors.d.ts.map +1 -0
  194. package/dist/errors.js +64 -0
  195. package/dist/errors.js.map +1 -0
  196. package/dist/index.d.ts +80 -0
  197. package/dist/index.d.ts.map +1 -0
  198. package/dist/index.js +66 -0
  199. package/dist/index.js.map +1 -0
  200. package/dist/logging/diagnostics.d.ts +64 -0
  201. package/dist/logging/diagnostics.d.ts.map +1 -0
  202. package/dist/logging/diagnostics.js +92 -0
  203. package/dist/logging/diagnostics.js.map +1 -0
  204. package/dist/model/canonical.d.ts +24 -0
  205. package/dist/model/canonical.d.ts.map +1 -0
  206. package/dist/model/canonical.js +69 -0
  207. package/dist/model/canonical.js.map +1 -0
  208. package/dist/model/schema.d.ts +37 -0
  209. package/dist/model/schema.d.ts.map +1 -0
  210. package/dist/model/schema.js +42 -0
  211. package/dist/model/schema.js.map +1 -0
  212. package/dist/model/types.d.ts +402 -0
  213. package/dist/model/types.d.ts.map +1 -0
  214. package/dist/model/types.js +10 -0
  215. package/dist/model/types.js.map +1 -0
  216. package/dist/pipeline/scan-pipeline.d.ts +69 -0
  217. package/dist/pipeline/scan-pipeline.d.ts.map +1 -0
  218. package/dist/pipeline/scan-pipeline.js +270 -0
  219. package/dist/pipeline/scan-pipeline.js.map +1 -0
  220. package/dist/util/concurrency.d.ts +17 -0
  221. package/dist/util/concurrency.d.ts.map +1 -0
  222. package/dist/util/concurrency.js +46 -0
  223. package/dist/util/concurrency.js.map +1 -0
  224. package/dist/util/glob.d.ts +26 -0
  225. package/dist/util/glob.d.ts.map +1 -0
  226. package/dist/util/glob.js +198 -0
  227. package/dist/util/glob.js.map +1 -0
  228. package/dist/util/paths.d.ts +23 -0
  229. package/dist/util/paths.d.ts.map +1 -0
  230. package/dist/util/paths.js +115 -0
  231. package/dist/util/paths.js.map +1 -0
  232. package/dist/util/text.d.ts +22 -0
  233. package/dist/util/text.d.ts.map +1 -0
  234. package/dist/util/text.js +66 -0
  235. package/dist/util/text.js.map +1 -0
  236. package/package.json +52 -0
@@ -0,0 +1,134 @@
1
+ import { compareStrings } from "../../model/canonical.js";
2
+ import { GENERATOR_NAME, SCHEMA_VERSION } from "../../model/schema.js";
3
+ const COMMAND_PATTERN = /^(start|dev|serve|build|test|lint|typecheck|check|format|migrate|seed|generate|clean)$/;
4
+ const COMMAND_ORDER = ['start', 'dev', 'build', 'test', 'lint', 'typecheck', 'format'];
5
+ /** Collects the runnable commands declared by the repository (documented facts). */
6
+ export function collectCommands(graph) {
7
+ const commands = [];
8
+ const manager = graph.repository.workspace.packageManager === 'unknown' ? 'npm' : graph.repository.workspace.packageManager;
9
+ for (const entry of [...graph.repository.workspace.packages].sort((a, b) => compareStrings(a.path, b.path))) {
10
+ for (const [name, script] of Object.entries(entry.scripts).sort((a, b) => compareStrings(a[0], b[0]))) {
11
+ if (!COMMAND_PATTERN.test(name) && !name.startsWith('test:'))
12
+ continue;
13
+ commands.push({
14
+ name,
15
+ command: `${manager} run ${name}${entry.path.length > 0 ? ` --workspace ${entry.name}` : ''}`,
16
+ script,
17
+ scope: entry.path.length === 0 ? 'root' : entry.name,
18
+ });
19
+ }
20
+ }
21
+ return commands.sort((a, b) => {
22
+ const indexA = COMMAND_ORDER.indexOf(a.name);
23
+ const indexB = COMMAND_ORDER.indexOf(b.name);
24
+ const rankA = indexA === -1 ? COMMAND_ORDER.length : indexA;
25
+ const rankB = indexB === -1 ? COMMAND_ORDER.length : indexB;
26
+ if (rankA !== rankB)
27
+ return rankA - rankB;
28
+ return compareStrings(`${a.scope}|${a.name}`, `${b.scope}|${b.name}`);
29
+ });
30
+ }
31
+ /** Builds the repository context payload. */
32
+ export function buildRepositoryContext(graph, parsed) {
33
+ const repository = graph.repository;
34
+ const modulesByImportance = [...repository.modules]
35
+ .sort((a, b) => {
36
+ const scoreA = a.usedBy.length * 10 + a.files.length;
37
+ const scoreB = b.usedBy.length * 10 + b.files.length;
38
+ if (scoreA !== scoreB)
39
+ return scoreB - scoreA;
40
+ return compareStrings(a.id, b.id);
41
+ })
42
+ .slice(0, 25);
43
+ const entryPoints = [...repository.entryPoints]
44
+ .sort((a, b) => (b.confidence === a.confidence ? compareStrings(a.path, b.path) : b.confidence - a.confidence))
45
+ .slice(0, 30);
46
+ const importanceRank = { infrastructure: 3, framework: 2, tooling: 1, utility: 0 };
47
+ const externalDependencies = [...repository.externalDependencies]
48
+ .sort((a, b) => {
49
+ const rankA = importanceRank[a.importance.value] * 1000 + a.importedByModules;
50
+ const rankB = importanceRank[b.importance.value] * 1000 + b.importedByModules;
51
+ if (rankA !== rankB)
52
+ return rankB - rankA;
53
+ return compareStrings(a.name, b.name);
54
+ })
55
+ .slice(0, 25);
56
+ return {
57
+ schemaVersion: SCHEMA_VERSION,
58
+ generatedBy: GENERATOR_NAME,
59
+ repository: {
60
+ name: repository.name,
61
+ languages: repository.languages,
62
+ fileCount: repository.files.length,
63
+ sourceFileCount: repository.files.filter((file) => file.kind === 'source').length,
64
+ testFileCount: repository.files.filter((file) => file.kind === 'test').length,
65
+ moduleCount: repository.modules.length,
66
+ symbolCount: repository.symbols.length,
67
+ dependencyCount: repository.dependencies.length,
68
+ entryPointCount: repository.entryPoints.length,
69
+ },
70
+ workspace: {
71
+ isMonorepo: repository.workspace.isMonorepo,
72
+ model: repository.workspace.workspaceModel,
73
+ packageManager: repository.workspace.packageManager,
74
+ packageManagerEvidence: repository.workspace.packageManagerEvidence,
75
+ lockfiles: repository.workspace.lockfiles,
76
+ packages: repository.workspace.packages.map((entry) => ({
77
+ name: entry.name,
78
+ path: entry.path,
79
+ version: entry.version,
80
+ private: entry.private,
81
+ runtimeDependencies: entry.runtimeDependencies.length,
82
+ developmentDependencies: entry.developmentDependencies.length,
83
+ })),
84
+ },
85
+ commands: collectCommands(graph),
86
+ modules: modulesByImportance.map((module) => ({
87
+ id: module.id,
88
+ path: module.path,
89
+ basis: module.basis,
90
+ files: module.files.length,
91
+ roles: module.roles,
92
+ dependsOn: module.dependsOn,
93
+ usedBy: module.usedBy,
94
+ entryPoints: module.entryPoints.map((entry) => entry.path).slice(0, 5),
95
+ publicExports: module.publicExports.map((entry) => entry.name).slice(0, 10),
96
+ git: module.git,
97
+ })),
98
+ entryPoints,
99
+ externalDependencies,
100
+ conventions: repository.conventions.map((convention) => ({
101
+ id: convention.id,
102
+ category: convention.category,
103
+ statement: convention.statement,
104
+ confidence: convention.confidence,
105
+ })),
106
+ decisions: repository.decisions.map((decision) => ({
107
+ id: decision.id,
108
+ title: decision.title,
109
+ status: decision.status,
110
+ origin: decision.origin,
111
+ source: decision.source,
112
+ })),
113
+ cycles: repository.cycles,
114
+ diagnostics: {
115
+ parsedFiles: parsed.size,
116
+ sensitiveSkipped: repository.files.filter((file) => file.sensitive).length,
117
+ partialParses: repository.files
118
+ .filter((file) => file.parseStatus === 'partial')
119
+ .map((file) => file.path)
120
+ .slice(0, 20),
121
+ failedParses: repository.files
122
+ .filter((file) => file.parseStatus === 'failed')
123
+ .map((file) => file.path)
124
+ .slice(0, 20),
125
+ unresolvedImports: graph.unresolved.slice(0, 20),
126
+ },
127
+ notes: [
128
+ 'Roles carrying a confidence value are heuristics derived from file names, paths and import signals; they are not authoritative statements about the architecture.',
129
+ 'Conventions and decisions carry their evidence; entries with origin "inferred" were derived by heuristics rather than authored by humans.',
130
+ 'All analysis is local: no repository content leaves the machine and no LLM is involved.',
131
+ ],
132
+ };
133
+ }
134
+ //# sourceMappingURL=repository-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository-context.js","sourceRoot":"","sources":["../../../src/core/context/repository-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /** Payload shapes of the context projections (canonical, serializable). */
2
+ import type { Detection, EntryPoint, GitModuleSignals, ModuleBasis, ModuleRole } from '../../model/types.ts';
3
+ export interface ContextCommand {
4
+ name: string;
5
+ /** Ready to paste command line. */
6
+ command: string;
7
+ /** The raw npm script body. */
8
+ script: string;
9
+ /** `root` or the workspace package name. */
10
+ scope: string;
11
+ }
12
+ export interface RepositoryContextPayload {
13
+ schemaVersion: number;
14
+ generatedBy: string;
15
+ repository: {
16
+ name: string;
17
+ languages: string[];
18
+ fileCount: number;
19
+ sourceFileCount: number;
20
+ testFileCount: number;
21
+ moduleCount: number;
22
+ symbolCount: number;
23
+ dependencyCount: number;
24
+ entryPointCount: number;
25
+ };
26
+ workspace: {
27
+ isMonorepo: boolean;
28
+ model: string;
29
+ packageManager: string;
30
+ packageManagerEvidence: Array<{
31
+ source: string;
32
+ detail: string;
33
+ }>;
34
+ lockfiles: string[];
35
+ packages: Array<{
36
+ name: string;
37
+ path: string;
38
+ version: string | null;
39
+ private: boolean;
40
+ runtimeDependencies: number;
41
+ developmentDependencies: number;
42
+ }>;
43
+ };
44
+ commands: ContextCommand[];
45
+ modules: Array<{
46
+ id: string;
47
+ path: string;
48
+ basis: ModuleBasis;
49
+ files: number;
50
+ roles: Detection<ModuleRole>[];
51
+ dependsOn: string[];
52
+ usedBy: string[];
53
+ entryPoints: string[];
54
+ publicExports: string[];
55
+ git: GitModuleSignals | null;
56
+ }>;
57
+ entryPoints: EntryPoint[];
58
+ externalDependencies: Array<{
59
+ name: string;
60
+ scope: string;
61
+ declaredBy: string[];
62
+ importedByModules: number;
63
+ importance: Detection;
64
+ }>;
65
+ conventions: Array<{
66
+ id: string;
67
+ category: string;
68
+ statement: string;
69
+ confidence: number;
70
+ }>;
71
+ decisions: Array<{
72
+ id: string;
73
+ title: string;
74
+ status: string;
75
+ origin: string;
76
+ source: string;
77
+ }>;
78
+ cycles: string[][];
79
+ diagnostics: {
80
+ parsedFiles: number;
81
+ sensitiveSkipped: number;
82
+ partialParses: string[];
83
+ failedParses: string[];
84
+ unresolvedImports: Array<{
85
+ file: string;
86
+ specifier: string;
87
+ attempts: string[];
88
+ }>;
89
+ };
90
+ notes: string[];
91
+ }
92
+ /** Short alias used by the public API. */
93
+ export type RepositoryContext = RepositoryContextPayload;
94
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/context/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/context/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Observable convention detection.
3
+ *
4
+ * Guarantee: no convention is invented. Every statement comes from a counted
5
+ * observation with counts and example files attached as evidence; small samples
6
+ * get low confidence or are not reported at all.
7
+ *
8
+ * Categories: Naming, Imports, Tests, Error handling, Exports, Structure,
9
+ * Toolchain, Documentation, Languages.
10
+ */
11
+ import type { Convention, Evidence, Repository } from '../../model/types.ts';
12
+ import type { ParsedFile } from '../../adapters/language/types.ts';
13
+ import type { AliasEntry } from '../graph/resolver.ts';
14
+ /** Minimum sample sizes below which a convention is not reported. */
15
+ export declare const MIN_SAMPLE: {
16
+ readonly fileNaming: 6;
17
+ readonly symbols: 4;
18
+ readonly imports: 4;
19
+ readonly tests: 2;
20
+ readonly exports: 4;
21
+ };
22
+ export interface ConventionDetectionInput {
23
+ repository: Repository;
24
+ parsed: Map<string, ParsedFile>;
25
+ aliases: AliasEntry[];
26
+ }
27
+ export declare function makeConvention(category: string, statement: string, confidence: number, evidence: Evidence[], origin?: Convention['origin']): Convention;
28
+ export declare function detectFileNaming(conventions: Convention[], repository: Repository): void;
29
+ export declare function detectSymbolNaming(conventions: Convention[], repository: Repository): void;
30
+ interface ImportStatistics {
31
+ filesWithImports: number;
32
+ relative: number;
33
+ alias: number;
34
+ workspace: number;
35
+ external: number;
36
+ requireCalls: number;
37
+ typeOnlyFiles: number;
38
+ explicitJsExtensions: number;
39
+ externalFirstFiles: number;
40
+ orderedFiles: number;
41
+ }
42
+ /** Counts import styles across the repository. */
43
+ export declare function collectImportStatistics(parsed: Map<string, ParsedFile>, aliases: AliasEntry[]): ImportStatistics;
44
+ export declare function detectImportConventions(conventions: Convention[], repository: Repository, parsed: Map<string, ParsedFile>, aliases: AliasEntry[]): void;
45
+ export declare function detectTestConventions(conventions: Convention[], repository: Repository, parsed: Map<string, ParsedFile>): void;
46
+ export declare function detectErrorConventions(conventions: Convention[], repository: Repository): void;
47
+ export declare function detectExportConventions(conventions: Convention[], repository: Repository): void;
48
+ export declare function detectStructureConventions(conventions: Convention[], repository: Repository): void;
49
+ export declare function detectToolchainConventions(conventions: Convention[], repository: Repository, parsed: Map<string, ParsedFile>): void;
50
+ export declare function detectDocumentationConventions(conventions: Convention[], repository: Repository, parsed: Map<string, ParsedFile>): void;
51
+ export declare function detectLanguageConventions(conventions: Convention[], repository: Repository): void;
52
+ /** Runs every convention detector and returns a deterministic, ordered list. */
53
+ export declare function detectConventions(input: ConventionDetectionInput): Convention[];
54
+ export {};
55
+ //# sourceMappingURL=detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../../src/core/conventions/detector.ts"],"names":[],"mappings":"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"}