@skillsmith/core 0.2.0 → 0.4.1

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 (690) hide show
  1. package/README.md +235 -4
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/analysis/CodebaseAnalyzer.d.ts.map +1 -1
  4. package/dist/src/analysis/CodebaseAnalyzer.js.map +1 -1
  5. package/dist/src/analysis/__tests__/incremental.test.d.ts +13 -0
  6. package/dist/src/analysis/__tests__/incremental.test.d.ts.map +1 -0
  7. package/dist/src/analysis/__tests__/incremental.test.js +515 -0
  8. package/dist/src/analysis/__tests__/incremental.test.js.map +1 -0
  9. package/dist/src/analysis/__tests__/integration.test.d.ts +14 -0
  10. package/dist/src/analysis/__tests__/integration.test.d.ts.map +1 -0
  11. package/dist/src/analysis/__tests__/integration.test.js +1059 -0
  12. package/dist/src/analysis/__tests__/integration.test.js.map +1 -0
  13. package/dist/src/analysis/__tests__/metrics.test.d.ts +9 -0
  14. package/dist/src/analysis/__tests__/metrics.test.d.ts.map +1 -0
  15. package/dist/src/analysis/__tests__/metrics.test.js +369 -0
  16. package/dist/src/analysis/__tests__/metrics.test.js.map +1 -0
  17. package/dist/src/analysis/__tests__/performance.test.d.ts +15 -0
  18. package/dist/src/analysis/__tests__/performance.test.d.ts.map +1 -0
  19. package/dist/src/analysis/__tests__/performance.test.js +402 -0
  20. package/dist/src/analysis/__tests__/performance.test.js.map +1 -0
  21. package/dist/src/analysis/adapters/__tests__/go.test.d.ts +12 -0
  22. package/dist/src/analysis/adapters/__tests__/go.test.d.ts.map +1 -0
  23. package/dist/src/analysis/adapters/__tests__/go.test.js +561 -0
  24. package/dist/src/analysis/adapters/__tests__/go.test.js.map +1 -0
  25. package/dist/src/analysis/adapters/__tests__/python.test.d.ts +11 -0
  26. package/dist/src/analysis/adapters/__tests__/python.test.d.ts.map +1 -0
  27. package/dist/src/analysis/adapters/__tests__/python.test.js +669 -0
  28. package/dist/src/analysis/adapters/__tests__/python.test.js.map +1 -0
  29. package/dist/src/analysis/adapters/__tests__/rust.test.d.ts +12 -0
  30. package/dist/src/analysis/adapters/__tests__/rust.test.d.ts.map +1 -0
  31. package/dist/src/analysis/adapters/__tests__/rust.test.js +676 -0
  32. package/dist/src/analysis/adapters/__tests__/rust.test.js.map +1 -0
  33. package/dist/src/analysis/adapters/__tests__/typescript.test.d.ts +14 -0
  34. package/dist/src/analysis/adapters/__tests__/typescript.test.d.ts.map +1 -0
  35. package/dist/src/analysis/adapters/__tests__/typescript.test.js +381 -0
  36. package/dist/src/analysis/adapters/__tests__/typescript.test.js.map +1 -0
  37. package/dist/src/analysis/adapters/base.d.ts +83 -0
  38. package/dist/src/analysis/adapters/base.d.ts.map +1 -0
  39. package/dist/src/analysis/adapters/base.js +40 -0
  40. package/dist/src/analysis/adapters/base.js.map +1 -0
  41. package/dist/src/analysis/adapters/factory.d.ts +150 -0
  42. package/dist/src/analysis/adapters/factory.d.ts.map +1 -0
  43. package/dist/src/analysis/adapters/factory.js +244 -0
  44. package/dist/src/analysis/adapters/factory.js.map +1 -0
  45. package/dist/src/analysis/adapters/go.d.ts +131 -0
  46. package/dist/src/analysis/adapters/go.d.ts.map +1 -0
  47. package/dist/src/analysis/adapters/go.js +414 -0
  48. package/dist/src/analysis/adapters/go.js.map +1 -0
  49. package/dist/src/analysis/adapters/index.d.ts +20 -0
  50. package/dist/src/analysis/adapters/index.d.ts.map +1 -0
  51. package/dist/src/analysis/adapters/index.js +23 -0
  52. package/dist/src/analysis/adapters/index.js.map +1 -0
  53. package/dist/src/analysis/adapters/java.d.ts +154 -0
  54. package/dist/src/analysis/adapters/java.d.ts.map +1 -0
  55. package/dist/src/analysis/adapters/java.js +407 -0
  56. package/dist/src/analysis/adapters/java.js.map +1 -0
  57. package/dist/src/analysis/adapters/python.d.ts +165 -0
  58. package/dist/src/analysis/adapters/python.d.ts.map +1 -0
  59. package/dist/src/analysis/adapters/python.js +475 -0
  60. package/dist/src/analysis/adapters/python.js.map +1 -0
  61. package/dist/src/analysis/adapters/rust.d.ts +116 -0
  62. package/dist/src/analysis/adapters/rust.d.ts.map +1 -0
  63. package/dist/src/analysis/adapters/rust.js +476 -0
  64. package/dist/src/analysis/adapters/rust.js.map +1 -0
  65. package/dist/src/analysis/adapters/typescript.d.ts +68 -0
  66. package/dist/src/analysis/adapters/typescript.d.ts.map +1 -0
  67. package/dist/src/analysis/adapters/typescript.js +79 -0
  68. package/dist/src/analysis/adapters/typescript.js.map +1 -0
  69. package/dist/src/analysis/aggregator.d.ts +193 -0
  70. package/dist/src/analysis/aggregator.d.ts.map +1 -0
  71. package/dist/src/analysis/aggregator.js +283 -0
  72. package/dist/src/analysis/aggregator.js.map +1 -0
  73. package/dist/src/analysis/cache.d.ts +180 -0
  74. package/dist/src/analysis/cache.d.ts.map +1 -0
  75. package/dist/src/analysis/cache.js +279 -0
  76. package/dist/src/analysis/cache.js.map +1 -0
  77. package/dist/src/analysis/file-streamer.d.ts +136 -0
  78. package/dist/src/analysis/file-streamer.d.ts.map +1 -0
  79. package/dist/src/analysis/file-streamer.js +291 -0
  80. package/dist/src/analysis/file-streamer.js.map +1 -0
  81. package/dist/src/analysis/incremental-parser.d.ts +186 -0
  82. package/dist/src/analysis/incremental-parser.d.ts.map +1 -0
  83. package/dist/src/analysis/incremental-parser.js +291 -0
  84. package/dist/src/analysis/incremental-parser.js.map +1 -0
  85. package/dist/src/analysis/incremental.d.ts +186 -0
  86. package/dist/src/analysis/incremental.d.ts.map +1 -0
  87. package/dist/src/analysis/incremental.js +247 -0
  88. package/dist/src/analysis/incremental.js.map +1 -0
  89. package/dist/src/analysis/index.d.ts +25 -3
  90. package/dist/src/analysis/index.d.ts.map +1 -1
  91. package/dist/src/analysis/index.js +45 -3
  92. package/dist/src/analysis/index.js.map +1 -1
  93. package/dist/src/analysis/language-detector.d.ts +76 -0
  94. package/dist/src/analysis/language-detector.d.ts.map +1 -0
  95. package/dist/src/analysis/language-detector.js +205 -0
  96. package/dist/src/analysis/language-detector.js.map +1 -0
  97. package/dist/src/analysis/language-detector.patterns.d.ts +17 -0
  98. package/dist/src/analysis/language-detector.patterns.d.ts.map +1 -0
  99. package/dist/src/analysis/language-detector.patterns.js +413 -0
  100. package/dist/src/analysis/language-detector.patterns.js.map +1 -0
  101. package/dist/src/analysis/language-detector.types.d.ts +48 -0
  102. package/dist/src/analysis/language-detector.types.d.ts.map +1 -0
  103. package/dist/src/analysis/language-detector.types.js +6 -0
  104. package/dist/src/analysis/language-detector.types.js.map +1 -0
  105. package/dist/src/analysis/memory-monitor.d.ts +199 -0
  106. package/dist/src/analysis/memory-monitor.d.ts.map +1 -0
  107. package/dist/src/analysis/memory-monitor.js +271 -0
  108. package/dist/src/analysis/memory-monitor.js.map +1 -0
  109. package/dist/src/analysis/metrics.d.ts +103 -0
  110. package/dist/src/analysis/metrics.d.ts.map +1 -0
  111. package/dist/src/analysis/metrics.implementations.d.ts +39 -0
  112. package/dist/src/analysis/metrics.implementations.d.ts.map +1 -0
  113. package/dist/src/analysis/metrics.implementations.js +114 -0
  114. package/dist/src/analysis/metrics.implementations.js.map +1 -0
  115. package/dist/src/analysis/metrics.js +334 -0
  116. package/dist/src/analysis/metrics.js.map +1 -0
  117. package/dist/src/analysis/metrics.types.d.ts +79 -0
  118. package/dist/src/analysis/metrics.types.d.ts.map +1 -0
  119. package/dist/src/analysis/metrics.types.js +6 -0
  120. package/dist/src/analysis/metrics.types.js.map +1 -0
  121. package/dist/src/analysis/router.d.ts +264 -0
  122. package/dist/src/analysis/router.d.ts.map +1 -0
  123. package/dist/src/analysis/router.js +398 -0
  124. package/dist/src/analysis/router.js.map +1 -0
  125. package/dist/src/analysis/tree-cache.d.ts +208 -0
  126. package/dist/src/analysis/tree-cache.d.ts.map +1 -0
  127. package/dist/src/analysis/tree-cache.js +288 -0
  128. package/dist/src/analysis/tree-cache.js.map +1 -0
  129. package/dist/src/analysis/tree-sitter/manager.d.ts +141 -0
  130. package/dist/src/analysis/tree-sitter/manager.d.ts.map +1 -0
  131. package/dist/src/analysis/tree-sitter/manager.js +239 -0
  132. package/dist/src/analysis/tree-sitter/manager.js.map +1 -0
  133. package/dist/src/analysis/types.d.ts +71 -6
  134. package/dist/src/analysis/types.d.ts.map +1 -1
  135. package/dist/src/analysis/types.js +36 -3
  136. package/dist/src/analysis/types.js.map +1 -1
  137. package/dist/src/analysis/worker-pool.d.ts +141 -0
  138. package/dist/src/analysis/worker-pool.d.ts.map +1 -0
  139. package/dist/src/analysis/worker-pool.js +418 -0
  140. package/dist/src/analysis/worker-pool.js.map +1 -0
  141. package/dist/src/analytics/AnalyticsRepository.d.ts +4 -0
  142. package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
  143. package/dist/src/analytics/AnalyticsRepository.js +26 -44
  144. package/dist/src/analytics/AnalyticsRepository.js.map +1 -1
  145. package/dist/src/analytics/ROIDashboardService.js +4 -2
  146. package/dist/src/analytics/ROIDashboardService.js.map +1 -1
  147. package/dist/src/analytics/schema.d.ts +1 -1
  148. package/dist/src/analytics/schema.d.ts.map +1 -1
  149. package/dist/src/analytics/schema.js +140 -0
  150. package/dist/src/analytics/schema.js.map +1 -1
  151. package/dist/src/api/cache.d.ts +24 -1
  152. package/dist/src/api/cache.d.ts.map +1 -1
  153. package/dist/src/api/cache.js +50 -2
  154. package/dist/src/api/cache.js.map +1 -1
  155. package/dist/src/api/client.d.ts +141 -6
  156. package/dist/src/api/client.d.ts.map +1 -1
  157. package/dist/src/api/client.js +238 -23
  158. package/dist/src/api/client.js.map +1 -1
  159. package/dist/src/api/index.d.ts +2 -0
  160. package/dist/src/api/index.d.ts.map +1 -1
  161. package/dist/src/api/index.js +7 -0
  162. package/dist/src/api/index.js.map +1 -1
  163. package/dist/src/api/types.d.ts +251 -0
  164. package/dist/src/api/types.d.ts.map +1 -0
  165. package/dist/src/api/types.js +9 -0
  166. package/dist/src/api/types.js.map +1 -0
  167. package/dist/src/benchmarks/BenchmarkRunner.d.ts.map +1 -1
  168. package/dist/src/benchmarks/BenchmarkRunner.js +1 -1
  169. package/dist/src/benchmarks/BenchmarkRunner.js.map +1 -1
  170. package/dist/src/benchmarks/memory/MemoryProfiler.d.ts.map +1 -1
  171. package/dist/src/benchmarks/memory/MemoryProfiler.js.map +1 -1
  172. package/dist/src/billing/BillingService.d.ts +101 -0
  173. package/dist/src/billing/BillingService.d.ts.map +1 -0
  174. package/dist/src/billing/BillingService.helpers.d.ts +15 -0
  175. package/dist/src/billing/BillingService.helpers.d.ts.map +1 -0
  176. package/dist/src/billing/BillingService.helpers.js +45 -0
  177. package/dist/src/billing/BillingService.helpers.js.map +1 -0
  178. package/dist/src/billing/BillingService.js +263 -0
  179. package/dist/src/billing/BillingService.js.map +1 -0
  180. package/dist/src/billing/BillingService.types.d.ts +52 -0
  181. package/dist/src/billing/BillingService.types.d.ts.map +1 -0
  182. package/dist/src/billing/BillingService.types.js +6 -0
  183. package/dist/src/billing/BillingService.types.js.map +1 -0
  184. package/dist/src/billing/GDPRComplianceService.d.ts +176 -0
  185. package/dist/src/billing/GDPRComplianceService.d.ts.map +1 -0
  186. package/dist/src/billing/GDPRComplianceService.js +361 -0
  187. package/dist/src/billing/GDPRComplianceService.js.map +1 -0
  188. package/dist/src/billing/StripeClient.d.ts +178 -0
  189. package/dist/src/billing/StripeClient.d.ts.map +1 -0
  190. package/dist/src/billing/StripeClient.js +463 -0
  191. package/dist/src/billing/StripeClient.js.map +1 -0
  192. package/dist/src/billing/StripeReconciliationJob.d.ts +95 -0
  193. package/dist/src/billing/StripeReconciliationJob.d.ts.map +1 -0
  194. package/dist/src/billing/StripeReconciliationJob.js +405 -0
  195. package/dist/src/billing/StripeReconciliationJob.js.map +1 -0
  196. package/dist/src/billing/StripeWebhookHandler.d.ts +105 -0
  197. package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -0
  198. package/dist/src/billing/StripeWebhookHandler.js +452 -0
  199. package/dist/src/billing/StripeWebhookHandler.js.map +1 -0
  200. package/dist/src/billing/index.d.ts +18 -0
  201. package/dist/src/billing/index.d.ts.map +1 -0
  202. package/dist/src/billing/index.js +19 -0
  203. package/dist/src/billing/index.js.map +1 -0
  204. package/dist/src/billing/types.d.ts +266 -0
  205. package/dist/src/billing/types.d.ts.map +1 -0
  206. package/dist/src/billing/types.js +23 -0
  207. package/dist/src/billing/types.js.map +1 -0
  208. package/dist/src/db/migration.d.ts +129 -0
  209. package/dist/src/db/migration.d.ts.map +1 -0
  210. package/dist/src/db/migration.js +289 -0
  211. package/dist/src/db/migration.js.map +1 -0
  212. package/dist/src/db/schema.d.ts +2 -2
  213. package/dist/src/db/schema.d.ts.map +1 -1
  214. package/dist/src/db/schema.js +63 -1
  215. package/dist/src/db/schema.js.map +1 -1
  216. package/dist/src/embeddings/hnsw-store.d.ts +58 -0
  217. package/dist/src/embeddings/hnsw-store.d.ts.map +1 -0
  218. package/dist/src/embeddings/hnsw-store.helpers.d.ts +83 -0
  219. package/dist/src/embeddings/hnsw-store.helpers.d.ts.map +1 -0
  220. package/dist/src/embeddings/hnsw-store.helpers.js +147 -0
  221. package/dist/src/embeddings/hnsw-store.helpers.js.map +1 -0
  222. package/dist/src/embeddings/hnsw-store.js +354 -0
  223. package/dist/src/embeddings/hnsw-store.js.map +1 -0
  224. package/dist/src/embeddings/hnsw-store.types.d.ts +154 -0
  225. package/dist/src/embeddings/hnsw-store.types.d.ts.map +1 -0
  226. package/dist/src/embeddings/hnsw-store.types.js +26 -0
  227. package/dist/src/embeddings/hnsw-store.types.js.map +1 -0
  228. package/dist/src/embeddings/index.d.ts +2 -0
  229. package/dist/src/embeddings/index.d.ts.map +1 -1
  230. package/dist/src/embeddings/index.js +2 -0
  231. package/dist/src/embeddings/index.js.map +1 -1
  232. package/dist/src/errors.d.ts +1 -0
  233. package/dist/src/errors.d.ts.map +1 -1
  234. package/dist/src/errors.js +2 -1
  235. package/dist/src/errors.js.map +1 -1
  236. package/dist/src/index.d.ts +13 -4
  237. package/dist/src/index.d.ts.map +1 -1
  238. package/dist/src/index.js +26 -4
  239. package/dist/src/index.js.map +1 -1
  240. package/dist/src/indexer/GitHubIndexer.d.ts.map +1 -1
  241. package/dist/src/indexer/GitHubIndexer.js +17 -4
  242. package/dist/src/indexer/GitHubIndexer.js.map +1 -1
  243. package/dist/src/indexer/SwarmIndexer.d.ts.map +1 -1
  244. package/dist/src/indexer/SwarmIndexer.js +1 -1
  245. package/dist/src/indexer/SwarmIndexer.js.map +1 -1
  246. package/dist/src/learning/PatternStore.d.ts +37 -0
  247. package/dist/src/learning/PatternStore.d.ts.map +1 -0
  248. package/dist/src/learning/PatternStore.helpers.d.ts +88 -0
  249. package/dist/src/learning/PatternStore.helpers.d.ts.map +1 -0
  250. package/dist/src/learning/PatternStore.helpers.js +286 -0
  251. package/dist/src/learning/PatternStore.helpers.js.map +1 -0
  252. package/dist/src/learning/PatternStore.js +347 -0
  253. package/dist/src/learning/PatternStore.js.map +1 -0
  254. package/dist/src/learning/PatternStore.queries.d.ts +83 -0
  255. package/dist/src/learning/PatternStore.queries.d.ts.map +1 -0
  256. package/dist/src/learning/PatternStore.queries.js +189 -0
  257. package/dist/src/learning/PatternStore.queries.js.map +1 -0
  258. package/dist/src/learning/PatternStore.types.d.ts +308 -0
  259. package/dist/src/learning/PatternStore.types.d.ts.map +1 -0
  260. package/dist/src/learning/PatternStore.types.js +44 -0
  261. package/dist/src/learning/PatternStore.types.js.map +1 -0
  262. package/dist/src/learning/ReasoningBankIntegration.d.ts +63 -0
  263. package/dist/src/learning/ReasoningBankIntegration.d.ts.map +1 -0
  264. package/dist/src/learning/ReasoningBankIntegration.helpers.d.ts +49 -0
  265. package/dist/src/learning/ReasoningBankIntegration.helpers.d.ts.map +1 -0
  266. package/dist/src/learning/ReasoningBankIntegration.helpers.js +180 -0
  267. package/dist/src/learning/ReasoningBankIntegration.helpers.js.map +1 -0
  268. package/dist/src/learning/ReasoningBankIntegration.js +258 -0
  269. package/dist/src/learning/ReasoningBankIntegration.js.map +1 -0
  270. package/dist/src/learning/ReasoningBankIntegration.types.d.ts +167 -0
  271. package/dist/src/learning/ReasoningBankIntegration.types.d.ts.map +1 -0
  272. package/dist/src/learning/ReasoningBankIntegration.types.js +51 -0
  273. package/dist/src/learning/ReasoningBankIntegration.types.js.map +1 -0
  274. package/dist/src/learning/index.d.ts +15 -0
  275. package/dist/src/learning/index.d.ts.map +1 -0
  276. package/dist/src/learning/index.js +15 -0
  277. package/dist/src/learning/index.js.map +1 -0
  278. package/dist/src/learning/interfaces.d.ts.map +1 -1
  279. package/dist/src/pipeline/DailyIndexPipeline.js +1 -1
  280. package/dist/src/pipeline/DailyIndexPipeline.js.map +1 -1
  281. package/dist/src/repositories/IndexerRepository.d.ts +1 -0
  282. package/dist/src/repositories/IndexerRepository.d.ts.map +1 -1
  283. package/dist/src/repositories/IndexerRepository.js +7 -0
  284. package/dist/src/repositories/IndexerRepository.js.map +1 -1
  285. package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
  286. package/dist/src/repositories/SkillRepository.js +21 -5
  287. package/dist/src/repositories/SkillRepository.js.map +1 -1
  288. package/dist/src/repositories/SyncConfigRepository.d.ts +91 -0
  289. package/dist/src/repositories/SyncConfigRepository.d.ts.map +1 -0
  290. package/dist/src/repositories/SyncConfigRepository.js +202 -0
  291. package/dist/src/repositories/SyncConfigRepository.js.map +1 -0
  292. package/dist/src/repositories/SyncHistoryRepository.d.ts +104 -0
  293. package/dist/src/repositories/SyncHistoryRepository.d.ts.map +1 -0
  294. package/dist/src/repositories/SyncHistoryRepository.js +235 -0
  295. package/dist/src/repositories/SyncHistoryRepository.js.map +1 -0
  296. package/dist/src/repositories/quarantine/QuarantineRepository.d.ts.map +1 -1
  297. package/dist/src/repositories/quarantine/QuarantineRepository.js.map +1 -1
  298. package/dist/src/repositories/quarantine/query-builder.d.ts.map +1 -1
  299. package/dist/src/repositories/quarantine/query-builder.js +1 -1
  300. package/dist/src/repositories/quarantine/query-builder.js.map +1 -1
  301. package/dist/src/routing/SONARouter.d.ts +56 -0
  302. package/dist/src/routing/SONARouter.d.ts.map +1 -0
  303. package/dist/src/routing/SONARouter.helpers.d.ts +112 -0
  304. package/dist/src/routing/SONARouter.helpers.d.ts.map +1 -0
  305. package/dist/src/routing/SONARouter.helpers.js +184 -0
  306. package/dist/src/routing/SONARouter.helpers.js.map +1 -0
  307. package/dist/src/routing/SONARouter.js +377 -0
  308. package/dist/src/routing/SONARouter.js.map +1 -0
  309. package/dist/src/routing/index.d.ts +9 -0
  310. package/dist/src/routing/index.d.ts.map +1 -0
  311. package/dist/src/routing/index.js +10 -0
  312. package/dist/src/routing/index.js.map +1 -0
  313. package/dist/src/routing/types.d.ts +331 -0
  314. package/dist/src/routing/types.d.ts.map +1 -0
  315. package/dist/src/routing/types.js +203 -0
  316. package/dist/src/routing/types.js.map +1 -0
  317. package/dist/src/scripts/__tests__/scan-imported-skills.test.js +8 -3
  318. package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
  319. package/dist/src/scripts/github-import/github-client.d.ts +30 -2
  320. package/dist/src/scripts/github-import/github-client.d.ts.map +1 -1
  321. package/dist/src/scripts/github-import/github-client.js +292 -4
  322. package/dist/src/scripts/github-import/github-client.js.map +1 -1
  323. package/dist/src/scripts/github-import/index.js +3 -10
  324. package/dist/src/scripts/github-import/index.js.map +1 -1
  325. package/dist/src/scripts/github-import/types.d.ts +6 -0
  326. package/dist/src/scripts/github-import/types.d.ts.map +1 -1
  327. package/dist/src/scripts/github-import/types.js +3 -0
  328. package/dist/src/scripts/github-import/types.js.map +1 -1
  329. package/dist/src/scripts/import-github-skills.js +10 -5
  330. package/dist/src/scripts/import-github-skills.js.map +1 -1
  331. package/dist/src/scripts/ingest-lenny-skills.d.ts +40 -0
  332. package/dist/src/scripts/ingest-lenny-skills.d.ts.map +1 -0
  333. package/dist/src/scripts/ingest-lenny-skills.js +346 -0
  334. package/dist/src/scripts/ingest-lenny-skills.js.map +1 -0
  335. package/dist/src/scripts/merge-skills.d.ts +56 -0
  336. package/dist/src/scripts/merge-skills.d.ts.map +1 -0
  337. package/dist/src/scripts/merge-skills.js +411 -0
  338. package/dist/src/scripts/merge-skills.js.map +1 -0
  339. package/dist/src/scripts/review-lenny-skills.d.ts +25 -0
  340. package/dist/src/scripts/review-lenny-skills.d.ts.map +1 -0
  341. package/dist/src/scripts/review-lenny-skills.js +520 -0
  342. package/dist/src/scripts/review-lenny-skills.js.map +1 -0
  343. package/dist/src/scripts/skill-scanner/index.d.ts +9 -2
  344. package/dist/src/scripts/skill-scanner/index.d.ts.map +1 -1
  345. package/dist/src/scripts/skill-scanner/index.js +98 -7
  346. package/dist/src/scripts/skill-scanner/index.js.map +1 -1
  347. package/dist/src/scripts/skill-scanner/logger.d.ts +51 -0
  348. package/dist/src/scripts/skill-scanner/logger.d.ts.map +1 -1
  349. package/dist/src/scripts/skill-scanner/logger.js +255 -1
  350. package/dist/src/scripts/skill-scanner/logger.js.map +1 -1
  351. package/dist/src/scripts/skill-scanner/reporter.d.ts +1 -1
  352. package/dist/src/scripts/skill-scanner/reporter.d.ts.map +1 -1
  353. package/dist/src/scripts/skill-scanner/reporter.js +67 -15
  354. package/dist/src/scripts/skill-scanner/reporter.js.map +1 -1
  355. package/dist/src/scripts/skill-scanner/scanner.d.ts +5 -2
  356. package/dist/src/scripts/skill-scanner/scanner.d.ts.map +1 -1
  357. package/dist/src/scripts/skill-scanner/scanner.js +156 -39
  358. package/dist/src/scripts/skill-scanner/scanner.js.map +1 -1
  359. package/dist/src/scripts/skill-scanner/trust-scorer.d.ts.map +1 -1
  360. package/dist/src/scripts/skill-scanner/trust-scorer.js.map +1 -1
  361. package/dist/src/scripts/skill-scanner/types.d.ts +44 -0
  362. package/dist/src/scripts/skill-scanner/types.d.ts.map +1 -1
  363. package/dist/src/scripts/sync-to-supabase.d.ts +10 -0
  364. package/dist/src/scripts/sync-to-supabase.d.ts.map +1 -0
  365. package/dist/src/scripts/sync-to-supabase.js +93 -0
  366. package/dist/src/scripts/sync-to-supabase.js.map +1 -0
  367. package/dist/src/scripts/validation/index.js +1 -2
  368. package/dist/src/scripts/validation/index.js.map +1 -1
  369. package/dist/src/scripts/validation/pipeline.d.ts.map +1 -1
  370. package/dist/src/scripts/validation/pipeline.js.map +1 -1
  371. package/dist/src/scripts/validation/types.d.ts +2 -2
  372. package/dist/src/security/AuditLogger.js +1 -1
  373. package/dist/src/security/AuditLogger.js.map +1 -1
  374. package/dist/src/security/SkillSandbox.d.ts +156 -0
  375. package/dist/src/security/SkillSandbox.d.ts.map +1 -0
  376. package/dist/src/security/SkillSandbox.js +303 -0
  377. package/dist/src/security/SkillSandbox.js.map +1 -0
  378. package/dist/src/security/__tests__/pathValidation.test.js.map +1 -1
  379. package/dist/src/security/index.d.ts +3 -1
  380. package/dist/src/security/index.d.ts.map +1 -1
  381. package/dist/src/security/index.js +5 -1
  382. package/dist/src/security/index.js.map +1 -1
  383. package/dist/src/security/rate-limiter/presets.d.ts +12 -0
  384. package/dist/src/security/rate-limiter/presets.d.ts.map +1 -1
  385. package/dist/src/security/rate-limiter/presets.js +12 -0
  386. package/dist/src/security/rate-limiter/presets.js.map +1 -1
  387. package/dist/src/security/sanitization.d.ts +85 -0
  388. package/dist/src/security/sanitization.d.ts.map +1 -1
  389. package/dist/src/security/sanitization.js +133 -0
  390. package/dist/src/security/sanitization.js.map +1 -1
  391. package/dist/src/security/scanner/SecurityScanner.d.ts +13 -66
  392. package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
  393. package/dist/src/security/scanner/SecurityScanner.formatters.d.ts +49 -0
  394. package/dist/src/security/scanner/SecurityScanner.formatters.d.ts.map +1 -0
  395. package/dist/src/security/scanner/SecurityScanner.formatters.js +139 -0
  396. package/dist/src/security/scanner/SecurityScanner.formatters.js.map +1 -0
  397. package/dist/src/security/scanner/SecurityScanner.helpers.d.ts +40 -0
  398. package/dist/src/security/scanner/SecurityScanner.helpers.d.ts.map +1 -0
  399. package/dist/src/security/scanner/SecurityScanner.helpers.js +142 -0
  400. package/dist/src/security/scanner/SecurityScanner.helpers.js.map +1 -0
  401. package/dist/src/security/scanner/SecurityScanner.js +141 -166
  402. package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
  403. package/dist/src/security/scanner/patterns.d.ts +13 -0
  404. package/dist/src/security/scanner/patterns.d.ts.map +1 -1
  405. package/dist/src/security/scanner/patterns.js +51 -0
  406. package/dist/src/security/scanner/patterns.js.map +1 -1
  407. package/dist/src/security/scanner/types.d.ts +13 -1
  408. package/dist/src/security/scanner/types.d.ts.map +1 -1
  409. package/dist/src/security/scanner/weights.d.ts.map +1 -1
  410. package/dist/src/security/scanner/weights.js +1 -0
  411. package/dist/src/security/scanner/weights.js.map +1 -1
  412. package/dist/src/services/SearchService.d.ts +5 -0
  413. package/dist/src/services/SearchService.d.ts.map +1 -1
  414. package/dist/src/services/SearchService.js +144 -11
  415. package/dist/src/services/SearchService.js.map +1 -1
  416. package/dist/src/services/SkillAnalyzer.d.ts +117 -0
  417. package/dist/src/services/SkillAnalyzer.d.ts.map +1 -0
  418. package/dist/src/services/SkillAnalyzer.js +421 -0
  419. package/dist/src/services/SkillAnalyzer.js.map +1 -0
  420. package/dist/src/services/SkillDecomposer.d.ts +103 -0
  421. package/dist/src/services/SkillDecomposer.d.ts.map +1 -0
  422. package/dist/src/services/SkillDecomposer.js +359 -0
  423. package/dist/src/services/SkillDecomposer.js.map +1 -0
  424. package/dist/src/services/SubagentGenerator.d.ts +68 -0
  425. package/dist/src/services/SubagentGenerator.d.ts.map +1 -0
  426. package/dist/src/services/SubagentGenerator.js +319 -0
  427. package/dist/src/services/SubagentGenerator.js.map +1 -0
  428. package/dist/src/services/TransformationService.d.ts +163 -0
  429. package/dist/src/services/TransformationService.d.ts.map +1 -0
  430. package/dist/src/services/TransformationService.js +291 -0
  431. package/dist/src/services/TransformationService.js.map +1 -0
  432. package/dist/src/services/__tests__/SkillAnalyzer.test.d.ts +6 -0
  433. package/dist/src/services/__tests__/SkillAnalyzer.test.d.ts.map +1 -0
  434. package/dist/src/services/__tests__/SkillAnalyzer.test.js +177 -0
  435. package/dist/src/services/__tests__/SkillAnalyzer.test.js.map +1 -0
  436. package/dist/src/services/__tests__/SkillDecomposer.test.d.ts +6 -0
  437. package/dist/src/services/__tests__/SkillDecomposer.test.d.ts.map +1 -0
  438. package/dist/src/services/__tests__/SkillDecomposer.test.js +235 -0
  439. package/dist/src/services/__tests__/SkillDecomposer.test.js.map +1 -0
  440. package/dist/src/services/__tests__/SubagentGenerator.test.d.ts +6 -0
  441. package/dist/src/services/__tests__/SubagentGenerator.test.d.ts.map +1 -0
  442. package/dist/src/services/__tests__/SubagentGenerator.test.js +174 -0
  443. package/dist/src/services/__tests__/SubagentGenerator.test.js.map +1 -0
  444. package/dist/src/services/__tests__/TransformationService.test.d.ts +6 -0
  445. package/dist/src/services/__tests__/TransformationService.test.d.ts.map +1 -0
  446. package/dist/src/services/__tests__/TransformationService.test.js +242 -0
  447. package/dist/src/services/__tests__/TransformationService.test.js.map +1 -0
  448. package/dist/src/session/SessionContext.js +1 -1
  449. package/dist/src/session/SessionContext.js.map +1 -1
  450. package/dist/src/session/SessionHealthMonitor.d.ts +1 -1
  451. package/dist/src/session/SessionHealthMonitor.d.ts.map +1 -1
  452. package/dist/src/session/SessionHealthMonitor.js +1 -1
  453. package/dist/src/session/SessionHealthMonitor.js.map +1 -1
  454. package/dist/src/session/SessionManager.d.ts +9 -66
  455. package/dist/src/session/SessionManager.d.ts.map +1 -1
  456. package/dist/src/session/SessionManager.helpers.d.ts +68 -0
  457. package/dist/src/session/SessionManager.helpers.d.ts.map +1 -0
  458. package/dist/src/session/SessionManager.helpers.js +152 -0
  459. package/dist/src/session/SessionManager.helpers.js.map +1 -0
  460. package/dist/src/session/SessionManager.js +113 -111
  461. package/dist/src/session/SessionManager.js.map +1 -1
  462. package/dist/src/session/SessionManager.types.d.ts +88 -0
  463. package/dist/src/session/SessionManager.types.d.ts.map +1 -0
  464. package/dist/src/session/SessionManager.types.js +27 -0
  465. package/dist/src/session/SessionManager.types.js.map +1 -0
  466. package/dist/src/session/SessionRecovery.d.ts.map +1 -1
  467. package/dist/src/session/SessionRecovery.js +3 -2
  468. package/dist/src/session/SessionRecovery.js.map +1 -1
  469. package/dist/src/sources/RawUrlSourceAdapter.js.map +1 -1
  470. package/dist/src/sources/SourceAdapterRegistry.js +1 -1
  471. package/dist/src/sources/SourceAdapterRegistry.js.map +1 -1
  472. package/dist/src/sync/BackgroundSyncService.d.ts +90 -0
  473. package/dist/src/sync/BackgroundSyncService.d.ts.map +1 -0
  474. package/dist/src/sync/BackgroundSyncService.js +214 -0
  475. package/dist/src/sync/BackgroundSyncService.js.map +1 -0
  476. package/dist/src/sync/SyncEngine.d.ts +76 -0
  477. package/dist/src/sync/SyncEngine.d.ts.map +1 -0
  478. package/dist/src/sync/SyncEngine.js +292 -0
  479. package/dist/src/sync/SyncEngine.js.map +1 -0
  480. package/dist/src/sync/index.d.ts +11 -0
  481. package/dist/src/sync/index.d.ts.map +1 -0
  482. package/dist/src/sync/index.js +14 -0
  483. package/dist/src/sync/index.js.map +1 -0
  484. package/dist/src/telemetry/index.d.ts +1 -1
  485. package/dist/src/telemetry/index.d.ts.map +1 -1
  486. package/dist/src/telemetry/index.js +2 -2
  487. package/dist/src/telemetry/index.js.map +1 -1
  488. package/dist/src/telemetry/posthog.d.ts +27 -5
  489. package/dist/src/telemetry/posthog.d.ts.map +1 -1
  490. package/dist/src/telemetry/posthog.js +20 -5
  491. package/dist/src/telemetry/posthog.js.map +1 -1
  492. package/dist/src/telemetry/tracer.d.ts.map +1 -1
  493. package/dist/src/telemetry/tracer.js +2 -3
  494. package/dist/src/telemetry/tracer.js.map +1 -1
  495. package/dist/src/testing/MultiLLMProvider.d.ts +98 -0
  496. package/dist/src/testing/MultiLLMProvider.d.ts.map +1 -0
  497. package/dist/src/testing/MultiLLMProvider.helpers.d.ts +54 -0
  498. package/dist/src/testing/MultiLLMProvider.helpers.d.ts.map +1 -0
  499. package/dist/src/testing/MultiLLMProvider.helpers.js +126 -0
  500. package/dist/src/testing/MultiLLMProvider.helpers.js.map +1 -0
  501. package/dist/src/testing/MultiLLMProvider.js +447 -0
  502. package/dist/src/testing/MultiLLMProvider.js.map +1 -0
  503. package/dist/src/testing/MultiLLMProvider.types.d.ts +253 -0
  504. package/dist/src/testing/MultiLLMProvider.types.d.ts.map +1 -0
  505. package/dist/src/testing/MultiLLMProvider.types.js +111 -0
  506. package/dist/src/testing/MultiLLMProvider.types.js.map +1 -0
  507. package/dist/src/testing/index.d.ts +8 -0
  508. package/dist/src/testing/index.d.ts.map +1 -0
  509. package/dist/src/testing/index.js +9 -0
  510. package/dist/src/testing/index.js.map +1 -0
  511. package/dist/src/triggers/__tests__/TriggerDetector.test.js +1 -1
  512. package/dist/src/triggers/__tests__/TriggerDetector.test.js.map +1 -1
  513. package/dist/src/types/skill.d.ts +32 -0
  514. package/dist/src/types/skill.d.ts.map +1 -1
  515. package/dist/src/types/skill.js +11 -1
  516. package/dist/src/types/skill.js.map +1 -1
  517. package/dist/src/types.d.ts +27 -1
  518. package/dist/src/types.d.ts.map +1 -1
  519. package/dist/src/types.js +2 -2
  520. package/dist/src/types.js.map +1 -1
  521. package/dist/src/utils/retry.js +2 -2
  522. package/dist/src/utils/retry.js.map +1 -1
  523. package/dist/src/validation/index.js +2 -2
  524. package/dist/src/validation/index.js.map +1 -1
  525. package/dist/src/webhooks/WebhookHandler.d.ts.map +1 -1
  526. package/dist/src/webhooks/WebhookHandler.js.map +1 -1
  527. package/dist/src/webhooks/WebhookPayload.js +1 -1
  528. package/dist/src/webhooks/WebhookPayload.js.map +1 -1
  529. package/dist/tests/Analytics.integration.test.js +2 -2
  530. package/dist/tests/Analytics.integration.test.js.map +1 -1
  531. package/dist/tests/AnalyticsRepository.test.js +3 -5
  532. package/dist/tests/AnalyticsRepository.test.js.map +1 -1
  533. package/dist/tests/AnalyticsStorage.test.js.map +1 -1
  534. package/dist/tests/ApiPartialResponses.test.d.ts +12 -0
  535. package/dist/tests/ApiPartialResponses.test.d.ts.map +1 -0
  536. package/dist/tests/ApiPartialResponses.test.js +202 -0
  537. package/dist/tests/ApiPartialResponses.test.js.map +1 -0
  538. package/dist/tests/AuditLogger.test.js.map +1 -1
  539. package/dist/tests/BenchmarkRunner.test.js +6 -6
  540. package/dist/tests/BenchmarkRunner.test.js.map +1 -1
  541. package/dist/tests/CacheSecurity.test.js.map +1 -1
  542. package/dist/tests/CodebaseAnalyzer.test.js.map +1 -1
  543. package/dist/tests/DailyIndexPipeline.test.js.map +1 -1
  544. package/dist/tests/EmbeddingService.test.js.map +1 -1
  545. package/dist/tests/GitHubIndexer.test.js +4 -3
  546. package/dist/tests/GitHubIndexer.test.js.map +1 -1
  547. package/dist/tests/MemoryProfiler.test.js +3 -3
  548. package/dist/tests/MemoryProfiler.test.js.map +1 -1
  549. package/dist/tests/QualityScorer.test.js.map +1 -1
  550. package/dist/tests/RateLimiter.test.js.map +1 -1
  551. package/dist/tests/ScraperAdapters.test.js.map +1 -1
  552. package/dist/tests/SecurityScanner.test.js +337 -1
  553. package/dist/tests/SecurityScanner.test.js.map +1 -1
  554. package/dist/tests/SessionManager.security.test.js +1 -1
  555. package/dist/tests/SessionManager.security.test.js.map +1 -1
  556. package/dist/tests/SessionManager.test.js +4 -4
  557. package/dist/tests/SessionManager.test.js.map +1 -1
  558. package/dist/tests/SwarmIndexer.test.js +1 -1
  559. package/dist/tests/SwarmIndexer.test.js.map +1 -1
  560. package/dist/tests/TieredCache.test.js +2 -11
  561. package/dist/tests/TieredCache.test.js.map +1 -1
  562. package/dist/tests/WebhookHandler.test.js.map +1 -1
  563. package/dist/tests/adapters-factory.test.d.ts +13 -0
  564. package/dist/tests/adapters-factory.test.d.ts.map +1 -0
  565. package/dist/tests/adapters-factory.test.js +308 -0
  566. package/dist/tests/adapters-factory.test.js.map +1 -0
  567. package/dist/tests/adapters-java.test.d.ts +13 -0
  568. package/dist/tests/adapters-java.test.d.ts.map +1 -0
  569. package/dist/tests/adapters-java.test.js +925 -0
  570. package/dist/tests/adapters-java.test.js.map +1 -0
  571. package/dist/tests/api/client.validation.test.d.ts +7 -0
  572. package/dist/tests/api/client.validation.test.d.ts.map +1 -0
  573. package/dist/tests/api/client.validation.test.js +183 -0
  574. package/dist/tests/api/client.validation.test.js.map +1 -0
  575. package/dist/tests/billing/BillingService.test.d.ts +7 -0
  576. package/dist/tests/billing/BillingService.test.d.ts.map +1 -0
  577. package/dist/tests/billing/BillingService.test.js +168 -0
  578. package/dist/tests/billing/BillingService.test.js.map +1 -0
  579. package/dist/tests/billing/GDPRCompliance.test.d.ts +7 -0
  580. package/dist/tests/billing/GDPRCompliance.test.d.ts.map +1 -0
  581. package/dist/tests/billing/GDPRCompliance.test.js +195 -0
  582. package/dist/tests/billing/GDPRCompliance.test.js.map +1 -0
  583. package/dist/tests/billing/StripeReconciliation.test.d.ts +7 -0
  584. package/dist/tests/billing/StripeReconciliation.test.d.ts.map +1 -0
  585. package/dist/tests/billing/StripeReconciliation.test.js +266 -0
  586. package/dist/tests/billing/StripeReconciliation.test.js.map +1 -0
  587. package/dist/tests/billing/stripe-validators.test.d.ts +7 -0
  588. package/dist/tests/billing/stripe-validators.test.d.ts.map +1 -0
  589. package/dist/tests/billing/stripe-validators.test.js +107 -0
  590. package/dist/tests/billing/stripe-validators.test.js.map +1 -0
  591. package/dist/tests/embeddings/hnsw-store.test.d.ts +7 -0
  592. package/dist/tests/embeddings/hnsw-store.test.d.ts.map +1 -0
  593. package/dist/tests/embeddings/hnsw-store.test.js +295 -0
  594. package/dist/tests/embeddings/hnsw-store.test.js.map +1 -0
  595. package/dist/tests/fixtures/api-responses/index.d.ts +119 -0
  596. package/dist/tests/fixtures/api-responses/index.d.ts.map +1 -0
  597. package/dist/tests/fixtures/api-responses/index.js +419 -0
  598. package/dist/tests/fixtures/api-responses/index.js.map +1 -0
  599. package/dist/tests/integration/neural/e2e-learning.test.d.ts +17 -0
  600. package/dist/tests/integration/neural/e2e-learning.test.d.ts.map +1 -0
  601. package/dist/tests/integration/neural/e2e-learning.test.js +238 -0
  602. package/dist/tests/integration/neural/e2e-learning.test.js.map +1 -0
  603. package/dist/tests/integration/neural/helpers.d.ts +132 -0
  604. package/dist/tests/integration/neural/helpers.d.ts.map +1 -0
  605. package/dist/tests/integration/neural/helpers.js +287 -0
  606. package/dist/tests/integration/neural/helpers.js.map +1 -0
  607. package/dist/tests/integration/neural/personalization.test.d.ts +21 -0
  608. package/dist/tests/integration/neural/personalization.test.d.ts.map +1 -0
  609. package/dist/tests/integration/neural/personalization.test.js +304 -0
  610. package/dist/tests/integration/neural/personalization.test.js.map +1 -0
  611. package/dist/tests/integration/neural/preference-learner.test.d.ts +23 -0
  612. package/dist/tests/integration/neural/preference-learner.test.d.ts.map +1 -0
  613. package/dist/tests/integration/neural/preference-learner.test.js +289 -0
  614. package/dist/tests/integration/neural/preference-learner.test.js.map +1 -0
  615. package/dist/tests/integration/neural/privacy.test.d.ts +19 -0
  616. package/dist/tests/integration/neural/privacy.test.d.ts.map +1 -0
  617. package/dist/tests/integration/neural/privacy.test.js +249 -0
  618. package/dist/tests/integration/neural/privacy.test.js.map +1 -0
  619. package/dist/tests/integration/neural/setup.d.ts +175 -0
  620. package/dist/tests/integration/neural/setup.d.ts.map +1 -0
  621. package/dist/tests/integration/neural/setup.js +487 -0
  622. package/dist/tests/integration/neural/setup.js.map +1 -0
  623. package/dist/tests/integration/neural/signal-collection.test.d.ts +21 -0
  624. package/dist/tests/integration/neural/signal-collection.test.d.ts.map +1 -0
  625. package/dist/tests/integration/neural/signal-collection.test.js +232 -0
  626. package/dist/tests/integration/neural/signal-collection.test.js.map +1 -0
  627. package/dist/tests/language-detector.test.d.ts +13 -0
  628. package/dist/tests/language-detector.test.d.ts.map +1 -0
  629. package/dist/tests/language-detector.test.js +674 -0
  630. package/dist/tests/language-detector.test.js.map +1 -0
  631. package/dist/tests/learning/PatternStore.test.d.ts +8 -0
  632. package/dist/tests/learning/PatternStore.test.d.ts.map +1 -0
  633. package/dist/tests/learning/PatternStore.test.js +589 -0
  634. package/dist/tests/learning/PatternStore.test.js.map +1 -0
  635. package/dist/tests/learning/ReasoningBankIntegration.test.d.ts +8 -0
  636. package/dist/tests/learning/ReasoningBankIntegration.test.d.ts.map +1 -0
  637. package/dist/tests/learning/ReasoningBankIntegration.test.js +269 -0
  638. package/dist/tests/learning/ReasoningBankIntegration.test.js.map +1 -0
  639. package/dist/tests/logger.test.js +1 -1
  640. package/dist/tests/logger.test.js.map +1 -1
  641. package/dist/tests/performance/LargeScalePerformance.test.js +1 -1
  642. package/dist/tests/performance/LargeScalePerformance.test.js.map +1 -1
  643. package/dist/tests/routing/SONARouter.test.d.ts +8 -0
  644. package/dist/tests/routing/SONARouter.test.d.ts.map +1 -0
  645. package/dist/tests/routing/SONARouter.test.js +400 -0
  646. package/dist/tests/routing/SONARouter.test.js.map +1 -0
  647. package/dist/tests/sanitization.test.js.map +1 -1
  648. package/dist/tests/security/ContinuousSecurity.test.js +10 -12
  649. package/dist/tests/security/ContinuousSecurity.test.js.map +1 -1
  650. package/dist/tests/security/SkillSandbox.test.d.ts +8 -0
  651. package/dist/tests/security/SkillSandbox.test.d.ts.map +1 -0
  652. package/dist/tests/security/SkillSandbox.test.js +321 -0
  653. package/dist/tests/security/SkillSandbox.test.js.map +1 -0
  654. package/dist/tests/session/SessionManager.helpers.test.d.ts +8 -0
  655. package/dist/tests/session/SessionManager.helpers.test.d.ts.map +1 -0
  656. package/dist/tests/session/SessionManager.helpers.test.js +105 -0
  657. package/dist/tests/session/SessionManager.helpers.test.js.map +1 -0
  658. package/dist/tests/sources.test.js.map +1 -1
  659. package/dist/tests/sync/SyncConfigRepository.test.d.ts +7 -0
  660. package/dist/tests/sync/SyncConfigRepository.test.d.ts.map +1 -0
  661. package/dist/tests/sync/SyncConfigRepository.test.js +154 -0
  662. package/dist/tests/sync/SyncConfigRepository.test.js.map +1 -0
  663. package/dist/tests/sync/SyncEngine.test.d.ts +7 -0
  664. package/dist/tests/sync/SyncEngine.test.d.ts.map +1 -0
  665. package/dist/tests/sync/SyncEngine.test.js +300 -0
  666. package/dist/tests/sync/SyncEngine.test.js.map +1 -0
  667. package/dist/tests/sync/SyncHistoryRepository.test.d.ts +7 -0
  668. package/dist/tests/sync/SyncHistoryRepository.test.d.ts.map +1 -0
  669. package/dist/tests/sync/SyncHistoryRepository.test.js +220 -0
  670. package/dist/tests/sync/SyncHistoryRepository.test.js.map +1 -0
  671. package/dist/tests/telemetry/posthog.test.d.ts +13 -0
  672. package/dist/tests/telemetry/posthog.test.d.ts.map +1 -0
  673. package/dist/tests/telemetry/posthog.test.js +600 -0
  674. package/dist/tests/telemetry/posthog.test.js.map +1 -0
  675. package/dist/tests/testing/MultiLLMProvider.test.d.ts +14 -0
  676. package/dist/tests/testing/MultiLLMProvider.test.d.ts.map +1 -0
  677. package/dist/tests/testing/MultiLLMProvider.test.js +438 -0
  678. package/dist/tests/testing/MultiLLMProvider.test.js.map +1 -0
  679. package/dist/tests/webhooks/WebhookHandler.idempotency.test.js +1 -1
  680. package/dist/tests/webhooks/WebhookHandler.idempotency.test.js.map +1 -1
  681. package/dist/tests/webhooks/WebhookPayload.security.test.js.map +1 -1
  682. package/package.json +27 -13
  683. package/dist/src/security/RateLimiter.d.ts +0 -337
  684. package/dist/src/security/RateLimiter.d.ts.map +0 -1
  685. package/dist/src/security/RateLimiter.js +0 -782
  686. package/dist/src/security/RateLimiter.js.map +0 -1
  687. package/dist/src/security/scanner.d.ts +0 -151
  688. package/dist/src/security/scanner.d.ts.map +0 -1
  689. package/dist/src/security/scanner.js +0 -599
  690. package/dist/src/security/scanner.js.map +0 -1
@@ -0,0 +1,247 @@
1
+ /**
2
+ * SMI-1309: Incremental Parsing Support
3
+ *
4
+ * Edit tracking utilities for multi-language AST analysis.
5
+ * Enables efficient incremental parsing by detecting minimal
6
+ * edit regions between old and new content.
7
+ *
8
+ * @see docs/architecture/multi-language-analysis.md
9
+ * @module analysis/incremental
10
+ */
11
+ /**
12
+ * Calculate file edit from content diff
13
+ *
14
+ * Converts a simple diff into the format required by
15
+ * tree-sitter's incremental parsing API.
16
+ *
17
+ * @param oldContent - Original file content
18
+ * @param newContent - Updated file content
19
+ * @param changeStart - Start index of the change
20
+ * @param changeEnd - End index in old content
21
+ * @param newText - Replacement text
22
+ * @returns FileEdit structure for tree-sitter
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const edit = calculateEdit(
27
+ * 'hello world',
28
+ * 'hello there world',
29
+ * 6, // after 'hello '
30
+ * 6, // no text removed
31
+ * 'there ' // inserted text
32
+ * )
33
+ * tree.edit(edit)
34
+ * ```
35
+ */
36
+ export function calculateEdit(oldContent, newContent, changeStart, changeEnd, newText) {
37
+ const startPosition = indexToPosition(oldContent, changeStart);
38
+ const oldEndPosition = indexToPosition(oldContent, changeEnd);
39
+ const newEndPosition = indexToPosition(newContent, changeStart + newText.length);
40
+ return {
41
+ startIndex: changeStart,
42
+ oldEndIndex: changeEnd,
43
+ newEndIndex: changeStart + newText.length,
44
+ startPosition,
45
+ oldEndPosition,
46
+ newEndPosition,
47
+ };
48
+ }
49
+ /**
50
+ * Convert byte index to row/column position
51
+ *
52
+ * Scans through content counting newlines to determine
53
+ * the row and column for a given byte offset.
54
+ *
55
+ * @param content - File content to scan
56
+ * @param index - Byte offset to convert
57
+ * @returns Position with row and column (both zero-based)
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * const pos = indexToPosition('hello\nworld', 8)
62
+ * // pos = { row: 1, column: 2 } (the 'r' in 'world')
63
+ * ```
64
+ */
65
+ export function indexToPosition(content, index) {
66
+ let row = 0;
67
+ let column = 0;
68
+ const limit = Math.min(index, content.length);
69
+ for (let i = 0; i < limit; i++) {
70
+ if (content[i] === '\n') {
71
+ row++;
72
+ column = 0;
73
+ }
74
+ else {
75
+ column++;
76
+ }
77
+ }
78
+ return { row, column };
79
+ }
80
+ /**
81
+ * Convert row/column position to byte index
82
+ *
83
+ * Scans through content to find the byte offset for
84
+ * a given row and column position.
85
+ *
86
+ * @param content - File content to scan
87
+ * @param position - Position to convert
88
+ * @returns Byte offset, or content length if position is past end
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * const index = positionToIndex('hello\nworld', { row: 1, column: 2 })
93
+ * // index = 8 (the 'r' in 'world')
94
+ * ```
95
+ */
96
+ export function positionToIndex(content, position) {
97
+ let currentRow = 0;
98
+ let currentColumn = 0;
99
+ for (let i = 0; i < content.length; i++) {
100
+ if (currentRow === position.row && currentColumn === position.column) {
101
+ return i;
102
+ }
103
+ if (content[i] === '\n') {
104
+ currentRow++;
105
+ currentColumn = 0;
106
+ }
107
+ else {
108
+ currentColumn++;
109
+ }
110
+ }
111
+ return content.length;
112
+ }
113
+ /**
114
+ * Find the minimal edit between two strings
115
+ *
116
+ * Uses a simple prefix/suffix matching algorithm to find
117
+ * the smallest region that changed between old and new content.
118
+ * Returns null if contents are identical.
119
+ *
120
+ * @param oldContent - Original string
121
+ * @param newContent - Modified string
122
+ * @returns EditDiff describing the change, or null if identical
123
+ *
124
+ * @example
125
+ * ```typescript
126
+ * const diff = findMinimalEdit('hello world', 'hello there world')
127
+ * // diff = { changeStart: 6, changeEnd: 6, newText: 'there ' }
128
+ *
129
+ * const same = findMinimalEdit('hello', 'hello')
130
+ * // same = null
131
+ * ```
132
+ */
133
+ export function findMinimalEdit(oldContent, newContent) {
134
+ if (oldContent === newContent) {
135
+ return null;
136
+ }
137
+ // Find common prefix length
138
+ let prefixLength = 0;
139
+ const minLength = Math.min(oldContent.length, newContent.length);
140
+ while (prefixLength < minLength && oldContent[prefixLength] === newContent[prefixLength]) {
141
+ prefixLength++;
142
+ }
143
+ // Find common suffix length (after prefix)
144
+ let oldSuffixStart = oldContent.length;
145
+ let newSuffixStart = newContent.length;
146
+ while (oldSuffixStart > prefixLength &&
147
+ newSuffixStart > prefixLength &&
148
+ oldContent[oldSuffixStart - 1] === newContent[newSuffixStart - 1]) {
149
+ oldSuffixStart--;
150
+ newSuffixStart--;
151
+ }
152
+ return {
153
+ changeStart: prefixLength,
154
+ changeEnd: oldSuffixStart,
155
+ newText: newContent.slice(prefixLength, newSuffixStart),
156
+ };
157
+ }
158
+ /**
159
+ * Merge multiple edits into a single encompassing edit
160
+ *
161
+ * Useful when multiple small edits occur and need to be
162
+ * applied as a single incremental update.
163
+ *
164
+ * Note: This is a simplistic merge that finds the bounding
165
+ * region. It may over-invalidate if edits are far apart.
166
+ *
167
+ * @param edits - Array of edits to merge
168
+ * @returns Single merged edit, or null if array is empty
169
+ *
170
+ * @example
171
+ * ```typescript
172
+ * const merged = batchEdits([
173
+ * { changeStart: 0, changeEnd: 5, newText: 'HELLO' },
174
+ * { changeStart: 10, changeEnd: 15, newText: 'WORLD' }
175
+ * ])
176
+ * // merged encompasses both edit regions
177
+ * ```
178
+ */
179
+ export function batchEdits(edits) {
180
+ if (edits.length === 0) {
181
+ return null;
182
+ }
183
+ if (edits.length === 1) {
184
+ return edits[0];
185
+ }
186
+ // Sort by start position
187
+ const sorted = [...edits].sort((a, b) => a.changeStart - b.changeStart);
188
+ // Find the bounding box of all edits
189
+ let minStart = sorted[0].changeStart;
190
+ let maxEnd = sorted[0].changeEnd;
191
+ let combinedNewText = '';
192
+ let lastEnd = sorted[0].changeStart;
193
+ for (const edit of sorted) {
194
+ // Check for gaps between edits
195
+ if (edit.changeStart > lastEnd) {
196
+ // Gap exists - this is a complex case
197
+ // For simplicity, we merge anyway and note it may over-invalidate
198
+ }
199
+ minStart = Math.min(minStart, edit.changeStart);
200
+ maxEnd = Math.max(maxEnd, edit.changeEnd);
201
+ combinedNewText += edit.newText;
202
+ lastEnd = edit.changeEnd;
203
+ }
204
+ return {
205
+ changeStart: minStart,
206
+ changeEnd: maxEnd,
207
+ newText: combinedNewText,
208
+ };
209
+ }
210
+ /**
211
+ * Check if an edit is a simple insertion (no deletion)
212
+ *
213
+ * @param edit - Edit to check
214
+ * @returns True if edit only inserts text
215
+ */
216
+ export function isInsertion(edit) {
217
+ return edit.changeStart === edit.changeEnd && edit.newText.length > 0;
218
+ }
219
+ /**
220
+ * Check if an edit is a simple deletion (no insertion)
221
+ *
222
+ * @param edit - Edit to check
223
+ * @returns True if edit only deletes text
224
+ */
225
+ export function isDeletion(edit) {
226
+ return edit.changeStart < edit.changeEnd && edit.newText.length === 0;
227
+ }
228
+ /**
229
+ * Check if an edit is a replacement (both deletion and insertion)
230
+ *
231
+ * @param edit - Edit to check
232
+ * @returns True if edit replaces text
233
+ */
234
+ export function isReplacement(edit) {
235
+ return edit.changeStart < edit.changeEnd && edit.newText.length > 0;
236
+ }
237
+ /**
238
+ * Calculate the size delta of an edit
239
+ *
240
+ * @param edit - Edit to analyze
241
+ * @returns Positive for growth, negative for shrinkage, zero for same size
242
+ */
243
+ export function editSizeDelta(edit) {
244
+ const deletedLength = edit.changeEnd - edit.changeStart;
245
+ return edit.newText.length - deletedLength;
246
+ }
247
+ //# sourceMappingURL=incremental.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incremental.js","sourceRoot":"","sources":["../../../src/analysis/incremental.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,37 @@
1
1
  /**
2
2
  * SMI-600: Codebase Analysis Module
3
3
  * SMI-1189: Updated to export from split modules
4
+ * SMI-1303: Extended with multi-language support
5
+ * SMI-1337: Added metrics and telemetry
4
6
  *
5
- * Provides tools for analyzing TypeScript/JavaScript codebases
7
+ * Provides tools for analyzing multi-language codebases
6
8
  * to extract context for skill recommendations.
7
9
  *
8
10
  * @see ADR-010: Codebase Analysis Scope
11
+ * @see docs/architecture/multi-language-analysis.md
9
12
  */
10
13
  export { CodebaseAnalyzer } from './CodebaseAnalyzer.js';
11
14
  export { default } from './CodebaseAnalyzer.js';
12
- export { SUPPORTED_EXTENSIONS, DEFAULT_EXCLUDE_DIRS, type ImportInfo, type ExportInfo, type FunctionInfo, type FrameworkInfo, type DependencyInfo, type CodebaseContext, type AnalyzeOptions, type ParseResult, } from './types.js';
15
+ export { SUPPORTED_EXTENSIONS, DEFAULT_EXCLUDE_DIRS, LANGUAGE_EXTENSIONS, type SupportedLanguage, type ImportInfo, type ExportInfo, type ExportKind, type FunctionInfo, type FrameworkInfo, type FrameworkRule, type DependencyInfo, type CodebaseContext, type AnalyzeOptions, type ParseResult, type CacheStats, } from './types.js';
13
16
  export { parseFile, extractImport, extractExport, extractFunction } from './parsers.js';
14
- export { detectFrameworks, hasFramework, getPrimaryFramework, FRAMEWORK_RULES, type FrameworkRule, } from './framework-detector.js';
17
+ export { detectFrameworks, hasFramework, getPrimaryFramework, FRAMEWORK_RULES, } from './framework-detector.js';
18
+ export { LanguageRouter, type LanguageRouterOptions } from './router.js';
19
+ export { AdapterFactory } from './adapters/factory.js';
20
+ export { LanguageDetector, detectLanguage, type LanguageDetectionResult, } from './language-detector.js';
21
+ export { ParseCache, type ParseCacheOptions } from './cache.js';
22
+ export { ResultAggregator, type AggregatorInput, type AggregatorMetadata, type AggregatorOptions, } from './aggregator.js';
23
+ export { AnalysisMetrics, getAnalysisMetrics, initializeAnalysisMetrics, timeParseAsync, timeParseSync, type AnalysisMetricsConfig, type AnalysisMetricsSnapshot, } from './metrics.js';
24
+ export { TreeSitterManager, type TreeSitterManagerOptions, type TreeSitterParser, type TreeSitterTree, type TreeSitterNode, type TreeSitterLanguage, } from './tree-sitter/manager.js';
25
+ export { LanguageAdapter, type LanguageInfo } from './adapters/base.js';
26
+ export { TypeScriptAdapter } from './adapters/typescript.js';
27
+ export { PythonAdapter } from './adapters/python.js';
28
+ export { GoAdapter, parseGoMod, type GoModInfo, type GoExportInfo, type GoFunctionInfo, } from './adapters/go.js';
29
+ export { RustAdapter, parseCargoToml, type RustExportInfo, type RustFunctionInfo, type CargoDependency, } from './adapters/rust.js';
30
+ export { JavaAdapter, parsePomXml, parseBuildGradle, type JavaExportInfo, type JavaFunctionInfo, type MavenDependency, } from './adapters/java.js';
31
+ export { ParserWorkerPool, type ParseTask, type WorkerResult, type WorkerPoolOptions, } from './worker-pool.js';
32
+ export { MemoryMonitor, type MemoryStats, type CleanupResult, type MemoryMonitorOptions, } from './memory-monitor.js';
33
+ export { streamFiles, batchReadFiles, readFilesAsMap, filterByExtension, getFileExtension, estimateMemoryUsage, type FileContent, type StreamOptions, type BatchReadOptions, } from './file-streamer.js';
34
+ export { calculateEdit, indexToPosition, positionToIndex, findMinimalEdit, batchEdits, isInsertion, isDeletion, isReplacement, editSizeDelta, type Point, type FileEdit, type EditDiff, } from './incremental.js';
35
+ export { TreeCache, type CachedTree, type TreeCacheStats, type TreeCacheOptions, } from './tree-cache.js';
36
+ export { IncrementalParser, type IncrementalParseResult, type IncrementalParserOptions, type IncrementalParserStats, } from './incremental-parser.js';
15
37
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/analysis/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAG/C,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,WAAW,GACjB,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAGvF,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,KAAK,aAAa,GACnB,MAAM,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/analysis/index.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,61 @@
1
1
  /**
2
2
  * SMI-600: Codebase Analysis Module
3
3
  * SMI-1189: Updated to export from split modules
4
+ * SMI-1303: Extended with multi-language support
5
+ * SMI-1337: Added metrics and telemetry
4
6
  *
5
- * Provides tools for analyzing TypeScript/JavaScript codebases
7
+ * Provides tools for analyzing multi-language codebases
6
8
  * to extract context for skill recommendations.
7
9
  *
8
10
  * @see ADR-010: Codebase Analysis Scope
11
+ * @see docs/architecture/multi-language-analysis.md
9
12
  */
10
13
  // Main analyzer class
11
14
  export { CodebaseAnalyzer } from './CodebaseAnalyzer.js';
12
15
  export { default } from './CodebaseAnalyzer.js';
13
- // Types and constants
14
- export { SUPPORTED_EXTENSIONS, DEFAULT_EXCLUDE_DIRS, } from './types.js';
16
+ // Types and constants (extended for multi-language support)
17
+ export {
18
+ // Constants
19
+ SUPPORTED_EXTENSIONS, DEFAULT_EXCLUDE_DIRS, LANGUAGE_EXTENSIONS, } from './types.js';
15
20
  // Parser functions
16
21
  export { parseFile, extractImport, extractExport, extractFunction } from './parsers.js';
17
22
  // Framework detection
18
23
  export { detectFrameworks, hasFramework, getPrimaryFramework, FRAMEWORK_RULES, } from './framework-detector.js';
24
+ // SMI-1303: Multi-language infrastructure
25
+ // Language router for dispatching to appropriate adapters
26
+ export { LanguageRouter } from './router.js';
27
+ // SMI-1339: Adapter Factory Pattern
28
+ export { AdapterFactory } from './adapters/factory.js';
29
+ // SMI-1340: Language Detection for extensionless files
30
+ export { LanguageDetector, detectLanguage, } from './language-detector.js';
31
+ // Parse result caching
32
+ export { ParseCache } from './cache.js';
33
+ // Result aggregation
34
+ export { ResultAggregator, } from './aggregator.js';
35
+ // SMI-1337: Analysis metrics and telemetry
36
+ export { AnalysisMetrics, getAnalysisMetrics, initializeAnalysisMetrics, timeParseAsync, timeParseSync, } from './metrics.js';
37
+ // Tree-sitter parser management
38
+ export { TreeSitterManager, } from './tree-sitter/manager.js';
39
+ // Language adapters
40
+ export { LanguageAdapter } from './adapters/base.js';
41
+ // Re-export specific adapters
42
+ export { TypeScriptAdapter } from './adapters/typescript.js';
43
+ export { PythonAdapter } from './adapters/python.js';
44
+ export { GoAdapter, parseGoMod, } from './adapters/go.js';
45
+ export { RustAdapter, parseCargoToml, } from './adapters/rust.js';
46
+ export { JavaAdapter, parsePomXml, parseBuildGradle, } from './adapters/java.js';
47
+ // SMI-1308: Performance optimization modules
48
+ // Worker thread pool for parallel file parsing
49
+ export { ParserWorkerPool, } from './worker-pool.js';
50
+ // Memory usage monitoring and cleanup
51
+ export { MemoryMonitor, } from './memory-monitor.js';
52
+ // Memory-efficient file streaming
53
+ export { streamFiles, batchReadFiles, readFilesAsMap, filterByExtension, getFileExtension, estimateMemoryUsage, } from './file-streamer.js';
54
+ // SMI-1309: Incremental Parsing & Tree Caching
55
+ // Edit tracking utilities
56
+ export { calculateEdit, indexToPosition, positionToIndex, findMinimalEdit, batchEdits, isInsertion, isDeletion, isReplacement, editSizeDelta, } from './incremental.js';
57
+ // Tree caching for incremental parsing
58
+ export { TreeCache, } from './tree-cache.js';
59
+ // Incremental parser coordinator
60
+ export { IncrementalParser, } from './incremental-parser.js';
19
61
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analysis/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,sBAAsB;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAE/C,sBAAsB;AACtB,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GASrB,MAAM,YAAY,CAAA;AAEnB,mBAAmB;AACnB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAEvF,sBAAsB;AACtB,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,eAAe,GAEhB,MAAM,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analysis/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,sBAAsB;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAE/C,4DAA4D;AAC5D,OAAO;AACL,YAAY;AACZ,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GAcpB,MAAM,YAAY,CAAA;AAEnB,mBAAmB;AACnB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAEvF,sBAAsB;AACtB,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,eAAe,GAChB,MAAM,yBAAyB,CAAA;AAEhC,0CAA0C;AAE1C,0DAA0D;AAC1D,OAAO,EAAE,cAAc,EAA8B,MAAM,aAAa,CAAA;AAExE,oCAAoC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD,uDAAuD;AACvD,OAAO,EACL,gBAAgB,EAChB,cAAc,GAEf,MAAM,wBAAwB,CAAA;AAE/B,uBAAuB;AACvB,OAAO,EAAE,UAAU,EAA0B,MAAM,YAAY,CAAA;AAE/D,qBAAqB;AACrB,OAAO,EACL,gBAAgB,GAIjB,MAAM,iBAAiB,CAAA;AAExB,2CAA2C;AAC3C,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,yBAAyB,EACzB,cAAc,EACd,aAAa,GAGd,MAAM,cAAc,CAAA;AAErB,gCAAgC;AAChC,OAAO,EACL,iBAAiB,GAMlB,MAAM,0BAA0B,CAAA;AAEjC,oBAAoB;AACpB,OAAO,EAAE,eAAe,EAAqB,MAAM,oBAAoB,CAAA;AAEvE,8BAA8B;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EACL,SAAS,EACT,UAAU,GAIX,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,WAAW,EACX,cAAc,GAIf,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,WAAW,EACX,WAAW,EACX,gBAAgB,GAIjB,MAAM,oBAAoB,CAAA;AAE3B,6CAA6C;AAE7C,+CAA+C;AAC/C,OAAO,EACL,gBAAgB,GAIjB,MAAM,kBAAkB,CAAA;AAEzB,sCAAsC;AACtC,OAAO,EACL,aAAa,GAId,MAAM,qBAAqB,CAAA;AAE5B,kCAAkC;AAClC,OAAO,EACL,WAAW,EACX,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GAIpB,MAAM,oBAAoB,CAAA;AAE3B,+CAA+C;AAE/C,0BAA0B;AAC1B,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,eAAe,EACf,UAAU,EACV,WAAW,EACX,UAAU,EACV,aAAa,EACb,aAAa,GAId,MAAM,kBAAkB,CAAA;AAEzB,uCAAuC;AACvC,OAAO,EACL,SAAS,GAIV,MAAM,iBAAiB,CAAA;AAExB,iCAAiC;AACjC,OAAO,EACL,iBAAiB,GAIlB,MAAM,yBAAyB,CAAA"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * SMI-1340: Language Detection Heuristics
3
+ *
4
+ * Detects programming language of files without extensions using:
5
+ * - Shebang analysis (#!/usr/bin/python, #!/bin/bash, etc.)
6
+ * - Content patterns (import statements, syntax markers)
7
+ * - Magic bytes detection
8
+ * - Statistical analysis of keywords
9
+ *
10
+ * @see docs/architecture/multi-language-analysis.md
11
+ * @module analysis/language-detector
12
+ */
13
+ import type { LanguageDetectionResult, LanguageDetectorOptions } from './language-detector.types.js';
14
+ export type { LanguageDetectionResult } from './language-detector.types.js';
15
+ /**
16
+ * Detects programming language from file content
17
+ *
18
+ * Uses multiple heuristics in order of reliability:
19
+ * 1. Shebang analysis (highest confidence)
20
+ * 2. Content patterns (high confidence)
21
+ * 3. Statistical keyword analysis (lower confidence)
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const detector = new LanguageDetector()
26
+ *
27
+ * // Detect from shebang
28
+ * const result1 = detector.detect('#!/usr/bin/env python3\nprint("hello")')
29
+ * // { language: 'python', confidence: 1.0, method: 'shebang', evidence: ['shebang: #!/usr/bin/env python3'] }
30
+ *
31
+ * // Detect from patterns
32
+ * const result2 = detector.detect('fn main() {\n println!("Hello");\n}')
33
+ * // { language: 'rust', confidence: 0.85, method: 'pattern', evidence: ['function definition'] }
34
+ * ```
35
+ */
36
+ export declare class LanguageDetector {
37
+ /** Minimum confidence threshold for detection */
38
+ private minConfidence;
39
+ constructor(options?: LanguageDetectorOptions);
40
+ /**
41
+ * Detect language from file content
42
+ *
43
+ * @param content - File content to analyze
44
+ * @returns Detection result with language, confidence, and evidence
45
+ */
46
+ detect(content: string): LanguageDetectionResult;
47
+ /**
48
+ * Detect language from shebang line
49
+ */
50
+ detectByShebang(content: string): LanguageDetectionResult;
51
+ /**
52
+ * Detect language from content patterns
53
+ */
54
+ detectByPatterns(content: string): LanguageDetectionResult;
55
+ /**
56
+ * Detect language by statistical keyword analysis
57
+ */
58
+ detectByStatistics(content: string): LanguageDetectionResult;
59
+ /**
60
+ * Get confidence threshold
61
+ */
62
+ getMinConfidence(): number;
63
+ /**
64
+ * Set confidence threshold
65
+ */
66
+ setMinConfidence(threshold: number): void;
67
+ }
68
+ /**
69
+ * Convenience function to detect language
70
+ *
71
+ * @param content - File content to analyze
72
+ * @param options - Detection options
73
+ * @returns Detection result
74
+ */
75
+ export declare function detectLanguage(content: string, options?: LanguageDetectorOptions): LanguageDetectionResult;
76
+ //# sourceMappingURL=language-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-detector.d.ts","sourceRoot":"","sources":["../../../src/analysis/language-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAUpG,YAAY,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAE3E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,gBAAgB;IAC3B,iDAAiD;IACjD,OAAO,CAAC,aAAa,CAAQ;gBAEjB,OAAO,GAAE,uBAA4B;IAIjD;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB;IA4BhD;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB;IAqBzD;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB;IA6C1D;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB;IA0D5D;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAG1C;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,uBAAuB,GAChC,uBAAuB,CAGzB"}
@@ -0,0 +1,205 @@
1
+ /**
2
+ * SMI-1340: Language Detection Heuristics
3
+ *
4
+ * Detects programming language of files without extensions using:
5
+ * - Shebang analysis (#!/usr/bin/python, #!/bin/bash, etc.)
6
+ * - Content patterns (import statements, syntax markers)
7
+ * - Magic bytes detection
8
+ * - Statistical analysis of keywords
9
+ *
10
+ * @see docs/architecture/multi-language-analysis.md
11
+ * @module analysis/language-detector
12
+ */
13
+ // Import patterns
14
+ import { SHEBANG_PATTERNS, CONTENT_PATTERNS, LANGUAGE_KEYWORDS, } from './language-detector.patterns.js';
15
+ /**
16
+ * Detects programming language from file content
17
+ *
18
+ * Uses multiple heuristics in order of reliability:
19
+ * 1. Shebang analysis (highest confidence)
20
+ * 2. Content patterns (high confidence)
21
+ * 3. Statistical keyword analysis (lower confidence)
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const detector = new LanguageDetector()
26
+ *
27
+ * // Detect from shebang
28
+ * const result1 = detector.detect('#!/usr/bin/env python3\nprint("hello")')
29
+ * // { language: 'python', confidence: 1.0, method: 'shebang', evidence: ['shebang: #!/usr/bin/env python3'] }
30
+ *
31
+ * // Detect from patterns
32
+ * const result2 = detector.detect('fn main() {\n println!("Hello");\n}')
33
+ * // { language: 'rust', confidence: 0.85, method: 'pattern', evidence: ['function definition'] }
34
+ * ```
35
+ */
36
+ export class LanguageDetector {
37
+ /** Minimum confidence threshold for detection */
38
+ minConfidence;
39
+ constructor(options = {}) {
40
+ this.minConfidence = options.minConfidence ?? 0.3;
41
+ }
42
+ /**
43
+ * Detect language from file content
44
+ *
45
+ * @param content - File content to analyze
46
+ * @returns Detection result with language, confidence, and evidence
47
+ */
48
+ detect(content) {
49
+ // Try shebang first (highest confidence)
50
+ const shebangResult = this.detectByShebang(content);
51
+ if (shebangResult.language && shebangResult.confidence >= this.minConfidence) {
52
+ return shebangResult;
53
+ }
54
+ // Try content patterns
55
+ const patternResult = this.detectByPatterns(content);
56
+ if (patternResult.language && patternResult.confidence >= this.minConfidence) {
57
+ return patternResult;
58
+ }
59
+ // Fall back to statistical analysis
60
+ const statisticalResult = this.detectByStatistics(content);
61
+ if (statisticalResult.language && statisticalResult.confidence >= this.minConfidence) {
62
+ return statisticalResult;
63
+ }
64
+ // No confident detection
65
+ return {
66
+ language: null,
67
+ confidence: 0,
68
+ method: 'none',
69
+ evidence: [],
70
+ };
71
+ }
72
+ /**
73
+ * Detect language from shebang line
74
+ */
75
+ detectByShebang(content) {
76
+ const firstLine = content.split('\n')[0]?.trim() ?? '';
77
+ if (!firstLine.startsWith('#!')) {
78
+ return { language: null, confidence: 0, method: 'shebang', evidence: [] };
79
+ }
80
+ for (const { pattern, language } of SHEBANG_PATTERNS) {
81
+ if (pattern.test(firstLine)) {
82
+ return {
83
+ language,
84
+ confidence: 1.0,
85
+ method: 'shebang',
86
+ evidence: [`shebang: ${firstLine}`],
87
+ };
88
+ }
89
+ }
90
+ return { language: null, confidence: 0, method: 'shebang', evidence: [] };
91
+ }
92
+ /**
93
+ * Detect language from content patterns
94
+ */
95
+ detectByPatterns(content) {
96
+ const scores = new Map();
97
+ for (const { pattern, language, weight, description } of CONTENT_PATTERNS) {
98
+ if (pattern.test(content)) {
99
+ const current = scores.get(language) ?? { score: 0, evidence: [] };
100
+ current.score += weight;
101
+ current.evidence.push(description);
102
+ scores.set(language, current);
103
+ }
104
+ }
105
+ // Find best match
106
+ let bestLanguage = null;
107
+ let bestScore = 0;
108
+ let bestEvidence = [];
109
+ for (const [language, { score, evidence }] of scores) {
110
+ if (score > bestScore) {
111
+ bestScore = score;
112
+ bestLanguage = language;
113
+ bestEvidence = evidence;
114
+ }
115
+ }
116
+ // Normalize confidence to 0-1 range (cap at 1.0)
117
+ const confidence = Math.min(bestScore / 3, 1.0);
118
+ // Upgrade JavaScript to TypeScript if TypeScript-specific patterns found
119
+ if (bestLanguage === 'javascript') {
120
+ const tsScore = scores.get('typescript')?.score ?? 0;
121
+ if (tsScore > 0) {
122
+ bestLanguage = 'typescript';
123
+ bestEvidence = [...bestEvidence, ...(scores.get('typescript')?.evidence ?? [])];
124
+ }
125
+ }
126
+ return {
127
+ language: bestLanguage,
128
+ confidence,
129
+ method: 'pattern',
130
+ evidence: bestEvidence.slice(0, 5), // Limit evidence
131
+ };
132
+ }
133
+ /**
134
+ * Detect language by statistical keyword analysis
135
+ */
136
+ detectByStatistics(content) {
137
+ const contentLower = content.toLowerCase();
138
+ const words = contentLower.split(/\W+/).filter((w) => w.length > 1);
139
+ const wordSet = new Set(words);
140
+ const wordCount = words.length;
141
+ if (wordCount === 0) {
142
+ return { language: null, confidence: 0, method: 'statistical', evidence: [] };
143
+ }
144
+ const scores = new Map();
145
+ for (const [language, keywords] of Object.entries(LANGUAGE_KEYWORDS)) {
146
+ const matchedKeywords = [];
147
+ for (const keyword of keywords) {
148
+ if (wordSet.has(keyword.toLowerCase())) {
149
+ matchedKeywords.push(keyword);
150
+ }
151
+ }
152
+ if (matchedKeywords.length > 0) {
153
+ scores.set(language, {
154
+ matches: matchedKeywords.length,
155
+ keywords: matchedKeywords,
156
+ });
157
+ }
158
+ }
159
+ // Find best match with highest keyword density
160
+ let bestLanguage = null;
161
+ let bestScore = 0;
162
+ let bestKeywords = [];
163
+ for (const [language, { matches, keywords }] of scores) {
164
+ // Normalize by total keyword count for fairness
165
+ const normalizedScore = matches / LANGUAGE_KEYWORDS[language].length;
166
+ if (normalizedScore > bestScore) {
167
+ bestScore = normalizedScore;
168
+ bestLanguage = language;
169
+ bestKeywords = keywords;
170
+ }
171
+ }
172
+ // Lower confidence for statistical method
173
+ const confidence = Math.min(bestScore * 2, 0.7);
174
+ return {
175
+ language: bestLanguage,
176
+ confidence,
177
+ method: 'statistical',
178
+ evidence: bestKeywords.slice(0, 5).map((k) => `keyword: ${k}`),
179
+ };
180
+ }
181
+ /**
182
+ * Get confidence threshold
183
+ */
184
+ getMinConfidence() {
185
+ return this.minConfidence;
186
+ }
187
+ /**
188
+ * Set confidence threshold
189
+ */
190
+ setMinConfidence(threshold) {
191
+ this.minConfidence = Math.max(0, Math.min(1, threshold));
192
+ }
193
+ }
194
+ /**
195
+ * Convenience function to detect language
196
+ *
197
+ * @param content - File content to analyze
198
+ * @param options - Detection options
199
+ * @returns Detection result
200
+ */
201
+ export function detectLanguage(content, options) {
202
+ const detector = new LanguageDetector(options);
203
+ return detector.detect(content);
204
+ }
205
+ //# sourceMappingURL=language-detector.js.map