@skillsmith/core 0.2.0 → 2.0.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 (233) hide show
  1. package/README.md +233 -2
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/analysis/__tests__/incremental.test.d.ts +13 -0
  4. package/dist/src/analysis/__tests__/incremental.test.d.ts.map +1 -0
  5. package/dist/src/analysis/__tests__/incremental.test.js +515 -0
  6. package/dist/src/analysis/__tests__/incremental.test.js.map +1 -0
  7. package/dist/src/analysis/__tests__/integration.test.d.ts +14 -0
  8. package/dist/src/analysis/__tests__/integration.test.d.ts.map +1 -0
  9. package/dist/src/analysis/__tests__/integration.test.js +1059 -0
  10. package/dist/src/analysis/__tests__/integration.test.js.map +1 -0
  11. package/dist/src/analysis/__tests__/metrics.test.d.ts +9 -0
  12. package/dist/src/analysis/__tests__/metrics.test.d.ts.map +1 -0
  13. package/dist/src/analysis/__tests__/metrics.test.js +369 -0
  14. package/dist/src/analysis/__tests__/metrics.test.js.map +1 -0
  15. package/dist/src/analysis/__tests__/performance.test.d.ts +15 -0
  16. package/dist/src/analysis/__tests__/performance.test.d.ts.map +1 -0
  17. package/dist/src/analysis/__tests__/performance.test.js +402 -0
  18. package/dist/src/analysis/__tests__/performance.test.js.map +1 -0
  19. package/dist/src/analysis/adapters/__tests__/go.test.d.ts +12 -0
  20. package/dist/src/analysis/adapters/__tests__/go.test.d.ts.map +1 -0
  21. package/dist/src/analysis/adapters/__tests__/go.test.js +561 -0
  22. package/dist/src/analysis/adapters/__tests__/go.test.js.map +1 -0
  23. package/dist/src/analysis/adapters/__tests__/python.test.d.ts +11 -0
  24. package/dist/src/analysis/adapters/__tests__/python.test.d.ts.map +1 -0
  25. package/dist/src/analysis/adapters/__tests__/python.test.js +669 -0
  26. package/dist/src/analysis/adapters/__tests__/python.test.js.map +1 -0
  27. package/dist/src/analysis/adapters/__tests__/rust.test.d.ts +12 -0
  28. package/dist/src/analysis/adapters/__tests__/rust.test.d.ts.map +1 -0
  29. package/dist/src/analysis/adapters/__tests__/rust.test.js +676 -0
  30. package/dist/src/analysis/adapters/__tests__/rust.test.js.map +1 -0
  31. package/dist/src/analysis/adapters/__tests__/typescript.test.d.ts +14 -0
  32. package/dist/src/analysis/adapters/__tests__/typescript.test.d.ts.map +1 -0
  33. package/dist/src/analysis/adapters/__tests__/typescript.test.js +381 -0
  34. package/dist/src/analysis/adapters/__tests__/typescript.test.js.map +1 -0
  35. package/dist/src/analysis/adapters/base.d.ts +83 -0
  36. package/dist/src/analysis/adapters/base.d.ts.map +1 -0
  37. package/dist/src/analysis/adapters/base.js +40 -0
  38. package/dist/src/analysis/adapters/base.js.map +1 -0
  39. package/dist/src/analysis/adapters/factory.d.ts +150 -0
  40. package/dist/src/analysis/adapters/factory.d.ts.map +1 -0
  41. package/dist/src/analysis/adapters/factory.js +244 -0
  42. package/dist/src/analysis/adapters/factory.js.map +1 -0
  43. package/dist/src/analysis/adapters/go.d.ts +131 -0
  44. package/dist/src/analysis/adapters/go.d.ts.map +1 -0
  45. package/dist/src/analysis/adapters/go.js +414 -0
  46. package/dist/src/analysis/adapters/go.js.map +1 -0
  47. package/dist/src/analysis/adapters/index.d.ts +20 -0
  48. package/dist/src/analysis/adapters/index.d.ts.map +1 -0
  49. package/dist/src/analysis/adapters/index.js +23 -0
  50. package/dist/src/analysis/adapters/index.js.map +1 -0
  51. package/dist/src/analysis/adapters/java.d.ts +154 -0
  52. package/dist/src/analysis/adapters/java.d.ts.map +1 -0
  53. package/dist/src/analysis/adapters/java.js +407 -0
  54. package/dist/src/analysis/adapters/java.js.map +1 -0
  55. package/dist/src/analysis/adapters/python.d.ts +165 -0
  56. package/dist/src/analysis/adapters/python.d.ts.map +1 -0
  57. package/dist/src/analysis/adapters/python.js +475 -0
  58. package/dist/src/analysis/adapters/python.js.map +1 -0
  59. package/dist/src/analysis/adapters/rust.d.ts +116 -0
  60. package/dist/src/analysis/adapters/rust.d.ts.map +1 -0
  61. package/dist/src/analysis/adapters/rust.js +476 -0
  62. package/dist/src/analysis/adapters/rust.js.map +1 -0
  63. package/dist/src/analysis/adapters/typescript.d.ts +68 -0
  64. package/dist/src/analysis/adapters/typescript.d.ts.map +1 -0
  65. package/dist/src/analysis/adapters/typescript.js +79 -0
  66. package/dist/src/analysis/adapters/typescript.js.map +1 -0
  67. package/dist/src/analysis/aggregator.d.ts +193 -0
  68. package/dist/src/analysis/aggregator.d.ts.map +1 -0
  69. package/dist/src/analysis/aggregator.js +283 -0
  70. package/dist/src/analysis/aggregator.js.map +1 -0
  71. package/dist/src/analysis/cache.d.ts +180 -0
  72. package/dist/src/analysis/cache.d.ts.map +1 -0
  73. package/dist/src/analysis/cache.js +279 -0
  74. package/dist/src/analysis/cache.js.map +1 -0
  75. package/dist/src/analysis/file-streamer.d.ts +136 -0
  76. package/dist/src/analysis/file-streamer.d.ts.map +1 -0
  77. package/dist/src/analysis/file-streamer.js +291 -0
  78. package/dist/src/analysis/file-streamer.js.map +1 -0
  79. package/dist/src/analysis/incremental-parser.d.ts +186 -0
  80. package/dist/src/analysis/incremental-parser.d.ts.map +1 -0
  81. package/dist/src/analysis/incremental-parser.js +291 -0
  82. package/dist/src/analysis/incremental-parser.js.map +1 -0
  83. package/dist/src/analysis/incremental.d.ts +186 -0
  84. package/dist/src/analysis/incremental.d.ts.map +1 -0
  85. package/dist/src/analysis/incremental.js +247 -0
  86. package/dist/src/analysis/incremental.js.map +1 -0
  87. package/dist/src/analysis/index.d.ts +25 -3
  88. package/dist/src/analysis/index.d.ts.map +1 -1
  89. package/dist/src/analysis/index.js +45 -3
  90. package/dist/src/analysis/index.js.map +1 -1
  91. package/dist/src/analysis/language-detector.d.ts +92 -0
  92. package/dist/src/analysis/language-detector.d.ts.map +1 -0
  93. package/dist/src/analysis/language-detector.js +602 -0
  94. package/dist/src/analysis/language-detector.js.map +1 -0
  95. package/dist/src/analysis/memory-monitor.d.ts +199 -0
  96. package/dist/src/analysis/memory-monitor.d.ts.map +1 -0
  97. package/dist/src/analysis/memory-monitor.js +271 -0
  98. package/dist/src/analysis/memory-monitor.js.map +1 -0
  99. package/dist/src/analysis/metrics.d.ts +300 -0
  100. package/dist/src/analysis/metrics.d.ts.map +1 -0
  101. package/dist/src/analysis/metrics.js +537 -0
  102. package/dist/src/analysis/metrics.js.map +1 -0
  103. package/dist/src/analysis/router.d.ts +264 -0
  104. package/dist/src/analysis/router.d.ts.map +1 -0
  105. package/dist/src/analysis/router.js +398 -0
  106. package/dist/src/analysis/router.js.map +1 -0
  107. package/dist/src/analysis/tree-cache.d.ts +208 -0
  108. package/dist/src/analysis/tree-cache.d.ts.map +1 -0
  109. package/dist/src/analysis/tree-cache.js +288 -0
  110. package/dist/src/analysis/tree-cache.js.map +1 -0
  111. package/dist/src/analysis/tree-sitter/manager.d.ts +141 -0
  112. package/dist/src/analysis/tree-sitter/manager.d.ts.map +1 -0
  113. package/dist/src/analysis/tree-sitter/manager.js +239 -0
  114. package/dist/src/analysis/tree-sitter/manager.js.map +1 -0
  115. package/dist/src/analysis/types.d.ts +69 -6
  116. package/dist/src/analysis/types.d.ts.map +1 -1
  117. package/dist/src/analysis/types.js +23 -2
  118. package/dist/src/analysis/types.js.map +1 -1
  119. package/dist/src/analysis/worker-pool.d.ts +141 -0
  120. package/dist/src/analysis/worker-pool.d.ts.map +1 -0
  121. package/dist/src/analysis/worker-pool.js +418 -0
  122. package/dist/src/analysis/worker-pool.js.map +1 -0
  123. package/dist/src/analytics/schema.d.ts +1 -1
  124. package/dist/src/analytics/schema.d.ts.map +1 -1
  125. package/dist/src/analytics/schema.js +72 -0
  126. package/dist/src/analytics/schema.js.map +1 -1
  127. package/dist/src/api/cache.d.ts +24 -1
  128. package/dist/src/api/cache.d.ts.map +1 -1
  129. package/dist/src/api/cache.js +50 -2
  130. package/dist/src/api/cache.js.map +1 -1
  131. package/dist/src/api/client.d.ts +132 -2
  132. package/dist/src/api/client.d.ts.map +1 -1
  133. package/dist/src/api/client.js +214 -18
  134. package/dist/src/api/client.js.map +1 -1
  135. package/dist/src/api/index.d.ts +2 -0
  136. package/dist/src/api/index.d.ts.map +1 -1
  137. package/dist/src/api/index.js +7 -0
  138. package/dist/src/api/index.js.map +1 -1
  139. package/dist/src/api/types.d.ts +251 -0
  140. package/dist/src/api/types.d.ts.map +1 -0
  141. package/dist/src/api/types.js +9 -0
  142. package/dist/src/api/types.js.map +1 -0
  143. package/dist/src/benchmarks/memory/MemoryProfiler.d.ts.map +1 -1
  144. package/dist/src/benchmarks/memory/MemoryProfiler.js.map +1 -1
  145. package/dist/src/embeddings/index.d.ts.map +1 -1
  146. package/dist/src/embeddings/index.js.map +1 -1
  147. package/dist/src/errors.d.ts +1 -0
  148. package/dist/src/errors.d.ts.map +1 -1
  149. package/dist/src/errors.js +1 -0
  150. package/dist/src/errors.js.map +1 -1
  151. package/dist/src/index.d.ts +3 -3
  152. package/dist/src/index.d.ts.map +1 -1
  153. package/dist/src/index.js +4 -4
  154. package/dist/src/index.js.map +1 -1
  155. package/dist/src/repositories/IndexerRepository.d.ts.map +1 -1
  156. package/dist/src/repositories/IndexerRepository.js +1 -0
  157. package/dist/src/repositories/IndexerRepository.js.map +1 -1
  158. package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
  159. package/dist/src/repositories/SkillRepository.js +1 -0
  160. package/dist/src/repositories/SkillRepository.js.map +1 -1
  161. package/dist/src/repositories/quarantine/QuarantineRepository.d.ts.map +1 -1
  162. package/dist/src/repositories/quarantine/QuarantineRepository.js.map +1 -1
  163. package/dist/src/repositories/quarantine/query-builder.d.ts.map +1 -1
  164. package/dist/src/repositories/quarantine/query-builder.js +1 -1
  165. package/dist/src/repositories/quarantine/query-builder.js.map +1 -1
  166. package/dist/src/scripts/__tests__/scan-imported-skills.test.js +3 -3
  167. package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
  168. package/dist/src/scripts/github-import/index.js.map +1 -1
  169. package/dist/src/scripts/import-github-skills.js +1 -1
  170. package/dist/src/scripts/import-github-skills.js.map +1 -1
  171. package/dist/src/scripts/skill-scanner/reporter.d.ts.map +1 -1
  172. package/dist/src/scripts/skill-scanner/reporter.js.map +1 -1
  173. package/dist/src/scripts/skill-scanner/scanner.d.ts.map +1 -1
  174. package/dist/src/scripts/skill-scanner/scanner.js.map +1 -1
  175. package/dist/src/scripts/skill-scanner/trust-scorer.d.ts.map +1 -1
  176. package/dist/src/scripts/skill-scanner/trust-scorer.js.map +1 -1
  177. package/dist/src/scripts/validation/index.js +1 -2
  178. package/dist/src/scripts/validation/index.js.map +1 -1
  179. package/dist/src/scripts/validation/pipeline.d.ts.map +1 -1
  180. package/dist/src/scripts/validation/pipeline.js.map +1 -1
  181. package/dist/src/scripts/validation/types.d.ts +2 -2
  182. package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
  183. package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
  184. package/dist/src/services/SearchService.d.ts.map +1 -1
  185. package/dist/src/services/SearchService.js +1 -0
  186. package/dist/src/services/SearchService.js.map +1 -1
  187. package/dist/src/session/SessionHealthMonitor.d.ts +1 -1
  188. package/dist/src/session/SessionHealthMonitor.d.ts.map +1 -1
  189. package/dist/src/session/SessionHealthMonitor.js +1 -1
  190. package/dist/src/session/SessionHealthMonitor.js.map +1 -1
  191. package/dist/src/telemetry/index.d.ts +1 -1
  192. package/dist/src/telemetry/index.d.ts.map +1 -1
  193. package/dist/src/telemetry/index.js +2 -2
  194. package/dist/src/telemetry/index.js.map +1 -1
  195. package/dist/src/telemetry/posthog.d.ts +27 -5
  196. package/dist/src/telemetry/posthog.d.ts.map +1 -1
  197. package/dist/src/telemetry/posthog.js +20 -5
  198. package/dist/src/telemetry/posthog.js.map +1 -1
  199. package/dist/src/types/skill.d.ts +3 -0
  200. package/dist/src/types/skill.d.ts.map +1 -1
  201. package/dist/src/types.d.ts +2 -1
  202. package/dist/src/types.d.ts.map +1 -1
  203. package/dist/src/types.js +2 -2
  204. package/dist/src/types.js.map +1 -1
  205. package/dist/tests/adapters-factory.test.d.ts +13 -0
  206. package/dist/tests/adapters-factory.test.d.ts.map +1 -0
  207. package/dist/tests/adapters-factory.test.js +308 -0
  208. package/dist/tests/adapters-factory.test.js.map +1 -0
  209. package/dist/tests/adapters-java.test.d.ts +13 -0
  210. package/dist/tests/adapters-java.test.d.ts.map +1 -0
  211. package/dist/tests/adapters-java.test.js +925 -0
  212. package/dist/tests/adapters-java.test.js.map +1 -0
  213. package/dist/tests/api/client.validation.test.d.ts +7 -0
  214. package/dist/tests/api/client.validation.test.d.ts.map +1 -0
  215. package/dist/tests/api/client.validation.test.js +183 -0
  216. package/dist/tests/api/client.validation.test.js.map +1 -0
  217. package/dist/tests/language-detector.test.d.ts +13 -0
  218. package/dist/tests/language-detector.test.d.ts.map +1 -0
  219. package/dist/tests/language-detector.test.js +674 -0
  220. package/dist/tests/language-detector.test.js.map +1 -0
  221. package/dist/tests/telemetry/posthog.test.d.ts +13 -0
  222. package/dist/tests/telemetry/posthog.test.d.ts.map +1 -0
  223. package/dist/tests/telemetry/posthog.test.js +600 -0
  224. package/dist/tests/telemetry/posthog.test.js.map +1 -0
  225. package/package.json +5 -6
  226. package/dist/src/security/RateLimiter.d.ts +0 -337
  227. package/dist/src/security/RateLimiter.d.ts.map +0 -1
  228. package/dist/src/security/RateLimiter.js +0 -782
  229. package/dist/src/security/RateLimiter.js.map +0 -1
  230. package/dist/src/security/scanner.d.ts +0 -151
  231. package/dist/src/security/scanner.d.ts.map +0 -1
  232. package/dist/src/security/scanner.js +0 -599
  233. package/dist/src/security/scanner.js.map +0 -1
@@ -0,0 +1,300 @@
1
+ /**
2
+ * SMI-1337: Analysis Pipeline Metrics and Telemetry
3
+ *
4
+ * Provides metrics collection for the multi-language analysis pipeline:
5
+ * - Files parsed per language (counter)
6
+ * - Parse duration by language (histogram)
7
+ * - Cache hit/miss rates (gauge)
8
+ * - Worker pool utilization (gauge)
9
+ * - Memory usage (gauge)
10
+ * - Error counts by type (counter)
11
+ *
12
+ * Configuration:
13
+ * - SKILLSMITH_TELEMETRY_ENABLED: Master switch for all telemetry (default: auto)
14
+ * - SKILLSMITH_ANALYSIS_METRICS_ENABLED: Enable/disable analysis metrics (default: true)
15
+ *
16
+ * Graceful Fallback:
17
+ * - If OpenTelemetry packages are not installed, uses in-memory implementations
18
+ * - Metrics APIs remain functional for local statistics
19
+ *
20
+ * @see docs/architecture/multi-language-analysis.md
21
+ * @module analysis/metrics
22
+ */
23
+ import type { Counter, Histogram, Gauge, MetricLabels } from '../telemetry/metrics.js';
24
+ import type { SupportedLanguage } from './types.js';
25
+ /**
26
+ * Analysis metrics configuration
27
+ */
28
+ export interface AnalysisMetricsConfig {
29
+ /** Whether to enable metrics collection (default: true) */
30
+ enabled?: boolean;
31
+ /** Prefix for all metric names (default: skillsmith.analysis) */
32
+ metricPrefix?: string;
33
+ }
34
+ /**
35
+ * In-memory counter implementation
36
+ */
37
+ declare class InMemoryCounter implements Counter {
38
+ private values;
39
+ add(value: number, labels?: MetricLabels): void;
40
+ increment(labels?: MetricLabels): void;
41
+ getValues(): Map<string, number>;
42
+ getTotal(): number;
43
+ reset(): void;
44
+ }
45
+ /**
46
+ * In-memory histogram implementation
47
+ */
48
+ declare class InMemoryHistogram implements Histogram {
49
+ private values;
50
+ private labeledValues;
51
+ record(value: number, labels?: MetricLabels): void;
52
+ getStats(): {
53
+ count: number;
54
+ sum: number;
55
+ mean: number;
56
+ p50: number;
57
+ p95: number;
58
+ p99: number;
59
+ };
60
+ getStatsByLabel(labels: MetricLabels): ReturnType<typeof this.getStats>;
61
+ reset(): void;
62
+ }
63
+ /**
64
+ * In-memory gauge implementation
65
+ */
66
+ declare class InMemoryGauge implements Gauge {
67
+ private values;
68
+ set(value: number, labels?: MetricLabels): void;
69
+ getValue(labels?: MetricLabels): number;
70
+ getAllValues(): Map<string, number>;
71
+ reset(): void;
72
+ }
73
+ /**
74
+ * Analysis metrics snapshot for export
75
+ */
76
+ export interface AnalysisMetricsSnapshot {
77
+ timestamp: string;
78
+ filesParsed: {
79
+ total: number;
80
+ byLanguage: Record<string, number>;
81
+ };
82
+ parseDuration: {
83
+ stats: {
84
+ count: number;
85
+ sum: number;
86
+ mean: number;
87
+ p50: number;
88
+ p95: number;
89
+ p99: number;
90
+ };
91
+ byLanguage: Record<string, {
92
+ count: number;
93
+ sum: number;
94
+ mean: number;
95
+ p50: number;
96
+ p95: number;
97
+ p99: number;
98
+ }>;
99
+ };
100
+ cache: {
101
+ hits: number;
102
+ misses: number;
103
+ hitRate: number;
104
+ size: number;
105
+ };
106
+ workerPool: {
107
+ activeWorkers: number;
108
+ queuedTasks: number;
109
+ utilization: number;
110
+ };
111
+ memory: {
112
+ heapUsed: number;
113
+ heapTotal: number;
114
+ rss: number;
115
+ };
116
+ errors: {
117
+ total: number;
118
+ byType: Record<string, number>;
119
+ };
120
+ aggregator: {
121
+ filesProcessed: number;
122
+ totalImports: number;
123
+ totalExports: number;
124
+ totalFunctions: number;
125
+ };
126
+ }
127
+ /**
128
+ * Analysis Pipeline Metrics Collector
129
+ *
130
+ * Provides comprehensive metrics collection for the multi-language
131
+ * analysis pipeline with graceful fallback when telemetry is unavailable.
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * const metrics = new AnalysisMetrics()
136
+ *
137
+ * // Record file parse
138
+ * metrics.recordFileParsed('typescript')
139
+ *
140
+ * // Record parse duration
141
+ * metrics.recordParseDuration('typescript', 15.5)
142
+ *
143
+ * // Record cache operations
144
+ * metrics.recordCacheHit()
145
+ * metrics.recordCacheMiss()
146
+ *
147
+ * // Get snapshot
148
+ * const snapshot = metrics.getSnapshot()
149
+ * console.log(`Parse p95: ${snapshot.parseDuration.stats.p95}ms`)
150
+ * ```
151
+ */
152
+ export declare class AnalysisMetrics {
153
+ private readonly enabled;
154
+ private readonly prefix;
155
+ readonly filesParsed: InMemoryCounter;
156
+ readonly parseDuration: InMemoryHistogram;
157
+ readonly cacheHits: InMemoryCounter;
158
+ readonly cacheMisses: InMemoryCounter;
159
+ readonly cacheSize: InMemoryGauge;
160
+ readonly workerPoolActive: InMemoryGauge;
161
+ readonly workerPoolQueued: InMemoryGauge;
162
+ readonly workerPoolUtilization: InMemoryGauge;
163
+ readonly memoryHeapUsed: InMemoryGauge;
164
+ readonly memoryHeapTotal: InMemoryGauge;
165
+ readonly memoryRss: InMemoryGauge;
166
+ readonly errorCount: InMemoryCounter;
167
+ readonly aggregatorFilesProcessed: InMemoryGauge;
168
+ readonly aggregatorImports: InMemoryGauge;
169
+ readonly aggregatorExports: InMemoryGauge;
170
+ readonly aggregatorFunctions: InMemoryGauge;
171
+ constructor(config?: AnalysisMetricsConfig);
172
+ /**
173
+ * Check if metrics collection is enabled
174
+ */
175
+ isEnabled(): boolean;
176
+ /**
177
+ * Record a file being parsed
178
+ *
179
+ * @param language - The language of the parsed file
180
+ */
181
+ recordFileParsed(language: SupportedLanguage | string): void;
182
+ /**
183
+ * Record parse duration for a file
184
+ *
185
+ * @param language - The language of the parsed file
186
+ * @param durationMs - Parse duration in milliseconds
187
+ */
188
+ recordParseDuration(language: SupportedLanguage | string, durationMs: number): void;
189
+ /**
190
+ * Record a cache hit
191
+ *
192
+ * @param language - Optional language for the cache hit
193
+ */
194
+ recordCacheHit(language?: SupportedLanguage | string): void;
195
+ /**
196
+ * Record a cache miss
197
+ *
198
+ * @param language - Optional language for the cache miss
199
+ */
200
+ recordCacheMiss(language?: SupportedLanguage | string): void;
201
+ /**
202
+ * Update cache size
203
+ *
204
+ * @param size - Current cache size in bytes
205
+ * @param entries - Current number of cache entries
206
+ */
207
+ updateCacheSize(size: number, entries?: number): void;
208
+ /**
209
+ * Update worker pool metrics
210
+ *
211
+ * @param activeWorkers - Number of currently active workers
212
+ * @param queuedTasks - Number of tasks waiting in queue
213
+ * @param poolSize - Total pool size for utilization calculation
214
+ */
215
+ updateWorkerPool(activeWorkers: number, queuedTasks: number, poolSize?: number): void;
216
+ /**
217
+ * Update memory usage metrics
218
+ *
219
+ * Records current Node.js memory usage stats.
220
+ */
221
+ updateMemoryUsage(): void;
222
+ /**
223
+ * Record an error
224
+ *
225
+ * @param errorType - Type/category of the error
226
+ * @param language - Optional language context
227
+ */
228
+ recordError(errorType: string, language?: SupportedLanguage | string): void;
229
+ /**
230
+ * Update aggregator metrics
231
+ *
232
+ * @param filesProcessed - Number of files processed
233
+ * @param imports - Total imports found
234
+ * @param exports - Total exports found
235
+ * @param functions - Total functions found
236
+ */
237
+ updateAggregatorStats(filesProcessed: number, imports: number, exports: number, functions: number): void;
238
+ /**
239
+ * Get cache hit rate
240
+ *
241
+ * @returns Cache hit rate as a decimal (0-1)
242
+ */
243
+ getCacheHitRate(): number;
244
+ /**
245
+ * Get files parsed by language
246
+ *
247
+ * @returns Map of language to count
248
+ */
249
+ getFilesByLanguage(): Record<string, number>;
250
+ /**
251
+ * Get parse duration stats by language
252
+ *
253
+ * @param language - Language to get stats for
254
+ * @returns Duration statistics
255
+ */
256
+ getParseDurationByLanguage(language: SupportedLanguage | string): ReturnType<InMemoryHistogram['getStats']>;
257
+ /**
258
+ * Get complete metrics snapshot
259
+ *
260
+ * @returns Snapshot of all current metrics
261
+ */
262
+ getSnapshot(): AnalysisMetricsSnapshot;
263
+ /**
264
+ * Reset all metrics
265
+ */
266
+ reset(): void;
267
+ }
268
+ /**
269
+ * Get the default analysis metrics instance
270
+ *
271
+ * @returns The shared AnalysisMetrics instance
272
+ */
273
+ export declare function getAnalysisMetrics(): AnalysisMetrics;
274
+ /**
275
+ * Initialize the default analysis metrics instance
276
+ *
277
+ * @param config - Optional configuration
278
+ * @returns The initialized AnalysisMetrics instance
279
+ */
280
+ export declare function initializeAnalysisMetrics(config?: AnalysisMetricsConfig): AnalysisMetrics;
281
+ /**
282
+ * Helper: Time an async operation and record to analysis metrics
283
+ *
284
+ * @param language - Language being parsed
285
+ * @param fn - Async function to time
286
+ * @param metrics - Optional metrics instance (uses default if not provided)
287
+ * @returns Result of the function
288
+ */
289
+ export declare function timeParseAsync<T>(language: SupportedLanguage | string, fn: () => Promise<T>, metrics?: AnalysisMetrics): Promise<T>;
290
+ /**
291
+ * Helper: Time a sync operation and record to analysis metrics
292
+ *
293
+ * @param language - Language being parsed
294
+ * @param fn - Function to time
295
+ * @param metrics - Optional metrics instance (uses default if not provided)
296
+ * @returns Result of the function
297
+ */
298
+ export declare function timeParseSync<T>(language: SupportedLanguage | string, fn: () => T, metrics?: AnalysisMetrics): T;
299
+ export {};
300
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/analysis/metrics.ts"],"names":[],"mappings":"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"}