@skillsmith/core 0.2.0 → 0.4.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 (469) hide show
  1. package/README.md +235 -4
  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 +71 -6
  116. package/dist/src/analysis/types.d.ts.map +1 -1
  117. package/dist/src/analysis/types.js +36 -3
  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/AnalyticsRepository.d.ts +4 -0
  124. package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
  125. package/dist/src/analytics/AnalyticsRepository.js +26 -44
  126. package/dist/src/analytics/AnalyticsRepository.js.map +1 -1
  127. package/dist/src/analytics/schema.d.ts +1 -1
  128. package/dist/src/analytics/schema.d.ts.map +1 -1
  129. package/dist/src/analytics/schema.js +140 -0
  130. package/dist/src/analytics/schema.js.map +1 -1
  131. package/dist/src/api/cache.d.ts +24 -1
  132. package/dist/src/api/cache.d.ts.map +1 -1
  133. package/dist/src/api/cache.js +50 -2
  134. package/dist/src/api/cache.js.map +1 -1
  135. package/dist/src/api/client.d.ts +140 -6
  136. package/dist/src/api/client.d.ts.map +1 -1
  137. package/dist/src/api/client.js +222 -21
  138. package/dist/src/api/client.js.map +1 -1
  139. package/dist/src/api/index.d.ts +2 -0
  140. package/dist/src/api/index.d.ts.map +1 -1
  141. package/dist/src/api/index.js +7 -0
  142. package/dist/src/api/index.js.map +1 -1
  143. package/dist/src/api/types.d.ts +251 -0
  144. package/dist/src/api/types.d.ts.map +1 -0
  145. package/dist/src/api/types.js +9 -0
  146. package/dist/src/api/types.js.map +1 -0
  147. package/dist/src/benchmarks/memory/MemoryProfiler.d.ts.map +1 -1
  148. package/dist/src/benchmarks/memory/MemoryProfiler.js.map +1 -1
  149. package/dist/src/billing/BillingService.d.ts +139 -0
  150. package/dist/src/billing/BillingService.d.ts.map +1 -0
  151. package/dist/src/billing/BillingService.js +393 -0
  152. package/dist/src/billing/BillingService.js.map +1 -0
  153. package/dist/src/billing/GDPRComplianceService.d.ts +176 -0
  154. package/dist/src/billing/GDPRComplianceService.d.ts.map +1 -0
  155. package/dist/src/billing/GDPRComplianceService.js +361 -0
  156. package/dist/src/billing/GDPRComplianceService.js.map +1 -0
  157. package/dist/src/billing/StripeClient.d.ts +177 -0
  158. package/dist/src/billing/StripeClient.d.ts.map +1 -0
  159. package/dist/src/billing/StripeClient.js +462 -0
  160. package/dist/src/billing/StripeClient.js.map +1 -0
  161. package/dist/src/billing/StripeReconciliationJob.d.ts +95 -0
  162. package/dist/src/billing/StripeReconciliationJob.d.ts.map +1 -0
  163. package/dist/src/billing/StripeReconciliationJob.js +405 -0
  164. package/dist/src/billing/StripeReconciliationJob.js.map +1 -0
  165. package/dist/src/billing/StripeWebhookHandler.d.ts +92 -0
  166. package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -0
  167. package/dist/src/billing/StripeWebhookHandler.js +409 -0
  168. package/dist/src/billing/StripeWebhookHandler.js.map +1 -0
  169. package/dist/src/billing/index.d.ts +18 -0
  170. package/dist/src/billing/index.d.ts.map +1 -0
  171. package/dist/src/billing/index.js +19 -0
  172. package/dist/src/billing/index.js.map +1 -0
  173. package/dist/src/billing/types.d.ts +266 -0
  174. package/dist/src/billing/types.d.ts.map +1 -0
  175. package/dist/src/billing/types.js +23 -0
  176. package/dist/src/billing/types.js.map +1 -0
  177. package/dist/src/db/schema.d.ts +1 -1
  178. package/dist/src/db/schema.d.ts.map +1 -1
  179. package/dist/src/db/schema.js +41 -1
  180. package/dist/src/db/schema.js.map +1 -1
  181. package/dist/src/embeddings/hnsw-store.d.ts +568 -0
  182. package/dist/src/embeddings/hnsw-store.d.ts.map +1 -0
  183. package/dist/src/embeddings/hnsw-store.js +805 -0
  184. package/dist/src/embeddings/hnsw-store.js.map +1 -0
  185. package/dist/src/embeddings/index.d.ts +2 -0
  186. package/dist/src/embeddings/index.d.ts.map +1 -1
  187. package/dist/src/embeddings/index.js +2 -0
  188. package/dist/src/embeddings/index.js.map +1 -1
  189. package/dist/src/errors.d.ts +1 -0
  190. package/dist/src/errors.d.ts.map +1 -1
  191. package/dist/src/errors.js +1 -0
  192. package/dist/src/errors.js.map +1 -1
  193. package/dist/src/index.d.ts +5 -3
  194. package/dist/src/index.d.ts.map +1 -1
  195. package/dist/src/index.js +8 -4
  196. package/dist/src/index.js.map +1 -1
  197. package/dist/src/learning/PatternStore.d.ts +457 -0
  198. package/dist/src/learning/PatternStore.d.ts.map +1 -0
  199. package/dist/src/learning/PatternStore.js +893 -0
  200. package/dist/src/learning/PatternStore.js.map +1 -0
  201. package/dist/src/learning/ReasoningBankIntegration.d.ts +403 -0
  202. package/dist/src/learning/ReasoningBankIntegration.d.ts.map +1 -0
  203. package/dist/src/learning/ReasoningBankIntegration.js +627 -0
  204. package/dist/src/learning/ReasoningBankIntegration.js.map +1 -0
  205. package/dist/src/learning/index.d.ts +15 -0
  206. package/dist/src/learning/index.d.ts.map +1 -0
  207. package/dist/src/learning/index.js +15 -0
  208. package/dist/src/learning/index.js.map +1 -0
  209. package/dist/src/repositories/IndexerRepository.d.ts.map +1 -1
  210. package/dist/src/repositories/IndexerRepository.js +1 -0
  211. package/dist/src/repositories/IndexerRepository.js.map +1 -1
  212. package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
  213. package/dist/src/repositories/SkillRepository.js +1 -0
  214. package/dist/src/repositories/SkillRepository.js.map +1 -1
  215. package/dist/src/repositories/SyncConfigRepository.d.ts +91 -0
  216. package/dist/src/repositories/SyncConfigRepository.d.ts.map +1 -0
  217. package/dist/src/repositories/SyncConfigRepository.js +202 -0
  218. package/dist/src/repositories/SyncConfigRepository.js.map +1 -0
  219. package/dist/src/repositories/SyncHistoryRepository.d.ts +104 -0
  220. package/dist/src/repositories/SyncHistoryRepository.d.ts.map +1 -0
  221. package/dist/src/repositories/SyncHistoryRepository.js +235 -0
  222. package/dist/src/repositories/SyncHistoryRepository.js.map +1 -0
  223. package/dist/src/repositories/quarantine/QuarantineRepository.d.ts.map +1 -1
  224. package/dist/src/repositories/quarantine/QuarantineRepository.js.map +1 -1
  225. package/dist/src/repositories/quarantine/query-builder.d.ts.map +1 -1
  226. package/dist/src/repositories/quarantine/query-builder.js +1 -1
  227. package/dist/src/repositories/quarantine/query-builder.js.map +1 -1
  228. package/dist/src/routing/SONARouter.d.ts +154 -0
  229. package/dist/src/routing/SONARouter.d.ts.map +1 -0
  230. package/dist/src/routing/SONARouter.js +679 -0
  231. package/dist/src/routing/SONARouter.js.map +1 -0
  232. package/dist/src/routing/index.d.ts +9 -0
  233. package/dist/src/routing/index.d.ts.map +1 -0
  234. package/dist/src/routing/index.js +10 -0
  235. package/dist/src/routing/index.js.map +1 -0
  236. package/dist/src/routing/types.d.ts +331 -0
  237. package/dist/src/routing/types.d.ts.map +1 -0
  238. package/dist/src/routing/types.js +203 -0
  239. package/dist/src/routing/types.js.map +1 -0
  240. package/dist/src/scripts/__tests__/scan-imported-skills.test.js +8 -3
  241. package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
  242. package/dist/src/scripts/github-import/github-client.d.ts +30 -2
  243. package/dist/src/scripts/github-import/github-client.d.ts.map +1 -1
  244. package/dist/src/scripts/github-import/github-client.js +293 -4
  245. package/dist/src/scripts/github-import/github-client.js.map +1 -1
  246. package/dist/src/scripts/github-import/index.js +3 -10
  247. package/dist/src/scripts/github-import/index.js.map +1 -1
  248. package/dist/src/scripts/github-import/types.d.ts +6 -0
  249. package/dist/src/scripts/github-import/types.d.ts.map +1 -1
  250. package/dist/src/scripts/github-import/types.js +3 -0
  251. package/dist/src/scripts/github-import/types.js.map +1 -1
  252. package/dist/src/scripts/import-github-skills.js +10 -5
  253. package/dist/src/scripts/import-github-skills.js.map +1 -1
  254. package/dist/src/scripts/merge-skills.d.ts +56 -0
  255. package/dist/src/scripts/merge-skills.d.ts.map +1 -0
  256. package/dist/src/scripts/merge-skills.js +411 -0
  257. package/dist/src/scripts/merge-skills.js.map +1 -0
  258. package/dist/src/scripts/skill-scanner/index.d.ts +9 -2
  259. package/dist/src/scripts/skill-scanner/index.d.ts.map +1 -1
  260. package/dist/src/scripts/skill-scanner/index.js +98 -7
  261. package/dist/src/scripts/skill-scanner/index.js.map +1 -1
  262. package/dist/src/scripts/skill-scanner/logger.d.ts +51 -0
  263. package/dist/src/scripts/skill-scanner/logger.d.ts.map +1 -1
  264. package/dist/src/scripts/skill-scanner/logger.js +255 -1
  265. package/dist/src/scripts/skill-scanner/logger.js.map +1 -1
  266. package/dist/src/scripts/skill-scanner/reporter.d.ts +1 -1
  267. package/dist/src/scripts/skill-scanner/reporter.d.ts.map +1 -1
  268. package/dist/src/scripts/skill-scanner/reporter.js +67 -15
  269. package/dist/src/scripts/skill-scanner/reporter.js.map +1 -1
  270. package/dist/src/scripts/skill-scanner/scanner.d.ts +5 -2
  271. package/dist/src/scripts/skill-scanner/scanner.d.ts.map +1 -1
  272. package/dist/src/scripts/skill-scanner/scanner.js +156 -39
  273. package/dist/src/scripts/skill-scanner/scanner.js.map +1 -1
  274. package/dist/src/scripts/skill-scanner/trust-scorer.d.ts.map +1 -1
  275. package/dist/src/scripts/skill-scanner/trust-scorer.js.map +1 -1
  276. package/dist/src/scripts/skill-scanner/types.d.ts +44 -0
  277. package/dist/src/scripts/skill-scanner/types.d.ts.map +1 -1
  278. package/dist/src/scripts/validation/index.js +1 -2
  279. package/dist/src/scripts/validation/index.js.map +1 -1
  280. package/dist/src/scripts/validation/pipeline.d.ts.map +1 -1
  281. package/dist/src/scripts/validation/pipeline.js.map +1 -1
  282. package/dist/src/scripts/validation/types.d.ts +2 -2
  283. package/dist/src/security/SkillSandbox.d.ts +156 -0
  284. package/dist/src/security/SkillSandbox.d.ts.map +1 -0
  285. package/dist/src/security/SkillSandbox.js +303 -0
  286. package/dist/src/security/SkillSandbox.js.map +1 -0
  287. package/dist/src/security/index.d.ts +3 -1
  288. package/dist/src/security/index.d.ts.map +1 -1
  289. package/dist/src/security/index.js +5 -1
  290. package/dist/src/security/index.js.map +1 -1
  291. package/dist/src/security/rate-limiter/presets.d.ts +12 -0
  292. package/dist/src/security/rate-limiter/presets.d.ts.map +1 -1
  293. package/dist/src/security/rate-limiter/presets.js +12 -0
  294. package/dist/src/security/rate-limiter/presets.js.map +1 -1
  295. package/dist/src/security/sanitization.d.ts +85 -0
  296. package/dist/src/security/sanitization.d.ts.map +1 -1
  297. package/dist/src/security/sanitization.js +133 -0
  298. package/dist/src/security/sanitization.js.map +1 -1
  299. package/dist/src/security/scanner/SecurityScanner.d.ts +23 -0
  300. package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
  301. package/dist/src/security/scanner/SecurityScanner.js +232 -28
  302. package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
  303. package/dist/src/security/scanner/patterns.d.ts +13 -0
  304. package/dist/src/security/scanner/patterns.d.ts.map +1 -1
  305. package/dist/src/security/scanner/patterns.js +51 -0
  306. package/dist/src/security/scanner/patterns.js.map +1 -1
  307. package/dist/src/security/scanner/types.d.ts +13 -1
  308. package/dist/src/security/scanner/types.d.ts.map +1 -1
  309. package/dist/src/security/scanner/weights.d.ts.map +1 -1
  310. package/dist/src/security/scanner/weights.js +1 -0
  311. package/dist/src/security/scanner/weights.js.map +1 -1
  312. package/dist/src/services/SearchService.d.ts.map +1 -1
  313. package/dist/src/services/SearchService.js +1 -0
  314. package/dist/src/services/SearchService.js.map +1 -1
  315. package/dist/src/session/SessionHealthMonitor.d.ts +1 -1
  316. package/dist/src/session/SessionHealthMonitor.d.ts.map +1 -1
  317. package/dist/src/session/SessionHealthMonitor.js +1 -1
  318. package/dist/src/session/SessionHealthMonitor.js.map +1 -1
  319. package/dist/src/session/SessionManager.d.ts +7 -0
  320. package/dist/src/session/SessionManager.d.ts.map +1 -1
  321. package/dist/src/session/SessionManager.js +117 -10
  322. package/dist/src/session/SessionManager.js.map +1 -1
  323. package/dist/src/sync/BackgroundSyncService.d.ts +90 -0
  324. package/dist/src/sync/BackgroundSyncService.d.ts.map +1 -0
  325. package/dist/src/sync/BackgroundSyncService.js +214 -0
  326. package/dist/src/sync/BackgroundSyncService.js.map +1 -0
  327. package/dist/src/sync/SyncEngine.d.ts +76 -0
  328. package/dist/src/sync/SyncEngine.d.ts.map +1 -0
  329. package/dist/src/sync/SyncEngine.js +292 -0
  330. package/dist/src/sync/SyncEngine.js.map +1 -0
  331. package/dist/src/sync/index.d.ts +11 -0
  332. package/dist/src/sync/index.d.ts.map +1 -0
  333. package/dist/src/sync/index.js +14 -0
  334. package/dist/src/sync/index.js.map +1 -0
  335. package/dist/src/telemetry/index.d.ts +1 -1
  336. package/dist/src/telemetry/index.d.ts.map +1 -1
  337. package/dist/src/telemetry/index.js +2 -2
  338. package/dist/src/telemetry/index.js.map +1 -1
  339. package/dist/src/telemetry/posthog.d.ts +27 -5
  340. package/dist/src/telemetry/posthog.d.ts.map +1 -1
  341. package/dist/src/telemetry/posthog.js +20 -5
  342. package/dist/src/telemetry/posthog.js.map +1 -1
  343. package/dist/src/testing/MultiLLMProvider.d.ts +374 -0
  344. package/dist/src/testing/MultiLLMProvider.d.ts.map +1 -0
  345. package/dist/src/testing/MultiLLMProvider.js +720 -0
  346. package/dist/src/testing/MultiLLMProvider.js.map +1 -0
  347. package/dist/src/testing/index.d.ts +8 -0
  348. package/dist/src/testing/index.d.ts.map +1 -0
  349. package/dist/src/testing/index.js +9 -0
  350. package/dist/src/testing/index.js.map +1 -0
  351. package/dist/src/types/skill.d.ts +3 -0
  352. package/dist/src/types/skill.d.ts.map +1 -1
  353. package/dist/src/types.d.ts +5 -1
  354. package/dist/src/types.d.ts.map +1 -1
  355. package/dist/src/types.js +2 -2
  356. package/dist/src/types.js.map +1 -1
  357. package/dist/tests/SecurityScanner.test.js +337 -1
  358. package/dist/tests/SecurityScanner.test.js.map +1 -1
  359. package/dist/tests/adapters-factory.test.d.ts +13 -0
  360. package/dist/tests/adapters-factory.test.d.ts.map +1 -0
  361. package/dist/tests/adapters-factory.test.js +308 -0
  362. package/dist/tests/adapters-factory.test.js.map +1 -0
  363. package/dist/tests/adapters-java.test.d.ts +13 -0
  364. package/dist/tests/adapters-java.test.d.ts.map +1 -0
  365. package/dist/tests/adapters-java.test.js +925 -0
  366. package/dist/tests/adapters-java.test.js.map +1 -0
  367. package/dist/tests/api/client.validation.test.d.ts +7 -0
  368. package/dist/tests/api/client.validation.test.d.ts.map +1 -0
  369. package/dist/tests/api/client.validation.test.js +183 -0
  370. package/dist/tests/api/client.validation.test.js.map +1 -0
  371. package/dist/tests/billing/BillingService.test.d.ts +7 -0
  372. package/dist/tests/billing/BillingService.test.d.ts.map +1 -0
  373. package/dist/tests/billing/BillingService.test.js +168 -0
  374. package/dist/tests/billing/BillingService.test.js.map +1 -0
  375. package/dist/tests/billing/GDPRCompliance.test.d.ts +7 -0
  376. package/dist/tests/billing/GDPRCompliance.test.d.ts.map +1 -0
  377. package/dist/tests/billing/GDPRCompliance.test.js +195 -0
  378. package/dist/tests/billing/GDPRCompliance.test.js.map +1 -0
  379. package/dist/tests/billing/StripeReconciliation.test.d.ts +7 -0
  380. package/dist/tests/billing/StripeReconciliation.test.d.ts.map +1 -0
  381. package/dist/tests/billing/StripeReconciliation.test.js +266 -0
  382. package/dist/tests/billing/StripeReconciliation.test.js.map +1 -0
  383. package/dist/tests/billing/stripe-validators.test.d.ts +7 -0
  384. package/dist/tests/billing/stripe-validators.test.d.ts.map +1 -0
  385. package/dist/tests/billing/stripe-validators.test.js +107 -0
  386. package/dist/tests/billing/stripe-validators.test.js.map +1 -0
  387. package/dist/tests/embeddings/hnsw-store.test.d.ts +7 -0
  388. package/dist/tests/embeddings/hnsw-store.test.d.ts.map +1 -0
  389. package/dist/tests/embeddings/hnsw-store.test.js +295 -0
  390. package/dist/tests/embeddings/hnsw-store.test.js.map +1 -0
  391. package/dist/tests/integration/neural/e2e-learning.test.d.ts +17 -0
  392. package/dist/tests/integration/neural/e2e-learning.test.d.ts.map +1 -0
  393. package/dist/tests/integration/neural/e2e-learning.test.js +238 -0
  394. package/dist/tests/integration/neural/e2e-learning.test.js.map +1 -0
  395. package/dist/tests/integration/neural/helpers.d.ts +132 -0
  396. package/dist/tests/integration/neural/helpers.d.ts.map +1 -0
  397. package/dist/tests/integration/neural/helpers.js +287 -0
  398. package/dist/tests/integration/neural/helpers.js.map +1 -0
  399. package/dist/tests/integration/neural/personalization.test.d.ts +21 -0
  400. package/dist/tests/integration/neural/personalization.test.d.ts.map +1 -0
  401. package/dist/tests/integration/neural/personalization.test.js +304 -0
  402. package/dist/tests/integration/neural/personalization.test.js.map +1 -0
  403. package/dist/tests/integration/neural/preference-learner.test.d.ts +23 -0
  404. package/dist/tests/integration/neural/preference-learner.test.d.ts.map +1 -0
  405. package/dist/tests/integration/neural/preference-learner.test.js +289 -0
  406. package/dist/tests/integration/neural/preference-learner.test.js.map +1 -0
  407. package/dist/tests/integration/neural/privacy.test.d.ts +19 -0
  408. package/dist/tests/integration/neural/privacy.test.d.ts.map +1 -0
  409. package/dist/tests/integration/neural/privacy.test.js +249 -0
  410. package/dist/tests/integration/neural/privacy.test.js.map +1 -0
  411. package/dist/tests/integration/neural/setup.d.ts +175 -0
  412. package/dist/tests/integration/neural/setup.d.ts.map +1 -0
  413. package/dist/tests/integration/neural/setup.js +487 -0
  414. package/dist/tests/integration/neural/setup.js.map +1 -0
  415. package/dist/tests/integration/neural/signal-collection.test.d.ts +21 -0
  416. package/dist/tests/integration/neural/signal-collection.test.d.ts.map +1 -0
  417. package/dist/tests/integration/neural/signal-collection.test.js +232 -0
  418. package/dist/tests/integration/neural/signal-collection.test.js.map +1 -0
  419. package/dist/tests/language-detector.test.d.ts +13 -0
  420. package/dist/tests/language-detector.test.d.ts.map +1 -0
  421. package/dist/tests/language-detector.test.js +674 -0
  422. package/dist/tests/language-detector.test.js.map +1 -0
  423. package/dist/tests/learning/PatternStore.test.d.ts +8 -0
  424. package/dist/tests/learning/PatternStore.test.d.ts.map +1 -0
  425. package/dist/tests/learning/PatternStore.test.js +589 -0
  426. package/dist/tests/learning/PatternStore.test.js.map +1 -0
  427. package/dist/tests/learning/ReasoningBankIntegration.test.d.ts +8 -0
  428. package/dist/tests/learning/ReasoningBankIntegration.test.d.ts.map +1 -0
  429. package/dist/tests/learning/ReasoningBankIntegration.test.js +269 -0
  430. package/dist/tests/learning/ReasoningBankIntegration.test.js.map +1 -0
  431. package/dist/tests/routing/SONARouter.test.d.ts +8 -0
  432. package/dist/tests/routing/SONARouter.test.d.ts.map +1 -0
  433. package/dist/tests/routing/SONARouter.test.js +400 -0
  434. package/dist/tests/routing/SONARouter.test.js.map +1 -0
  435. package/dist/tests/security/ContinuousSecurity.test.js +10 -12
  436. package/dist/tests/security/ContinuousSecurity.test.js.map +1 -1
  437. package/dist/tests/security/SkillSandbox.test.d.ts +8 -0
  438. package/dist/tests/security/SkillSandbox.test.d.ts.map +1 -0
  439. package/dist/tests/security/SkillSandbox.test.js +321 -0
  440. package/dist/tests/security/SkillSandbox.test.js.map +1 -0
  441. package/dist/tests/sync/SyncConfigRepository.test.d.ts +7 -0
  442. package/dist/tests/sync/SyncConfigRepository.test.d.ts.map +1 -0
  443. package/dist/tests/sync/SyncConfigRepository.test.js +154 -0
  444. package/dist/tests/sync/SyncConfigRepository.test.js.map +1 -0
  445. package/dist/tests/sync/SyncEngine.test.d.ts +7 -0
  446. package/dist/tests/sync/SyncEngine.test.d.ts.map +1 -0
  447. package/dist/tests/sync/SyncEngine.test.js +300 -0
  448. package/dist/tests/sync/SyncEngine.test.js.map +1 -0
  449. package/dist/tests/sync/SyncHistoryRepository.test.d.ts +7 -0
  450. package/dist/tests/sync/SyncHistoryRepository.test.d.ts.map +1 -0
  451. package/dist/tests/sync/SyncHistoryRepository.test.js +220 -0
  452. package/dist/tests/sync/SyncHistoryRepository.test.js.map +1 -0
  453. package/dist/tests/telemetry/posthog.test.d.ts +13 -0
  454. package/dist/tests/telemetry/posthog.test.d.ts.map +1 -0
  455. package/dist/tests/telemetry/posthog.test.js +600 -0
  456. package/dist/tests/telemetry/posthog.test.js.map +1 -0
  457. package/dist/tests/testing/MultiLLMProvider.test.d.ts +14 -0
  458. package/dist/tests/testing/MultiLLMProvider.test.d.ts.map +1 -0
  459. package/dist/tests/testing/MultiLLMProvider.test.js +438 -0
  460. package/dist/tests/testing/MultiLLMProvider.test.js.map +1 -0
  461. package/package.json +20 -6
  462. package/dist/src/security/RateLimiter.d.ts +0 -337
  463. package/dist/src/security/RateLimiter.d.ts.map +0 -1
  464. package/dist/src/security/RateLimiter.js +0 -782
  465. package/dist/src/security/RateLimiter.js.map +0 -1
  466. package/dist/src/security/scanner.d.ts +0 -151
  467. package/dist/src/security/scanner.d.ts.map +0 -1
  468. package/dist/src/security/scanner.js +0 -599
  469. package/dist/src/security/scanner.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-detector.test.js","sourceRoot":"","sources":["../../tests/language-detector.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * SMI-1522: PatternStore with EWC++ Tests
3
+ *
4
+ * Tests for the PatternStore class that implements Elastic Weight
5
+ * Consolidation++ for catastrophic forgetting prevention.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=PatternStore.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PatternStore.test.d.ts","sourceRoot":"","sources":["../../../tests/learning/PatternStore.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,589 @@
1
+ /**
2
+ * SMI-1522: PatternStore with EWC++ Tests
3
+ *
4
+ * Tests for the PatternStore class that implements Elastic Weight
5
+ * Consolidation++ for catastrophic forgetting prevention.
6
+ */
7
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
8
+ import { PatternStore, createPatternStore, FisherInformationMatrix, DEFAULT_EWC_CONFIG, PATTERN_REWARDS, } from '../../src/learning/PatternStore.js';
9
+ describe('PatternStore', () => {
10
+ let store;
11
+ const mockContext = {
12
+ installedSkills: ['anthropic/commit', 'anthropic/review-pr'],
13
+ frameworks: ['react', 'typescript'],
14
+ keywords: ['testing', 'jest'],
15
+ timeOfDay: 'afternoon',
16
+ dayType: 'weekday',
17
+ };
18
+ const mockSkill = {
19
+ skillId: 'community/jest-helper',
20
+ category: 'testing',
21
+ trustTier: 'community',
22
+ keywords: ['jest', 'testing', 'unit-test'],
23
+ qualityScore: 85,
24
+ installCount: 500,
25
+ };
26
+ const mockPattern = {
27
+ context: mockContext,
28
+ skill: mockSkill,
29
+ originalScore: 0.85,
30
+ source: 'recommend',
31
+ };
32
+ const acceptOutcome = {
33
+ type: 'accept',
34
+ reward: 1.0,
35
+ confidence: 1.0,
36
+ };
37
+ const dismissOutcome = {
38
+ type: 'dismiss',
39
+ reward: -0.5,
40
+ };
41
+ beforeEach(async () => {
42
+ store = await createPatternStore({
43
+ autoConsolidate: false, // Manual consolidation in tests
44
+ ewc: {
45
+ consolidationThreshold: 0.05,
46
+ maxPatterns: 100,
47
+ },
48
+ });
49
+ });
50
+ afterEach(() => {
51
+ store.close();
52
+ });
53
+ describe('initialization', () => {
54
+ it('should create instance with default config', async () => {
55
+ const instance = new PatternStore();
56
+ await instance.initialize();
57
+ expect(instance).toBeInstanceOf(PatternStore);
58
+ instance.close();
59
+ });
60
+ it('should create initialized instance via factory', async () => {
61
+ const instance = await createPatternStore();
62
+ expect(instance).toBeInstanceOf(PatternStore);
63
+ instance.close();
64
+ });
65
+ it('should throw if methods called before initialization', async () => {
66
+ const uninitialized = new PatternStore();
67
+ await expect(uninitialized.storePattern(mockPattern, acceptOutcome)).rejects.toThrow('not initialized');
68
+ });
69
+ it('should persist configuration', async () => {
70
+ const instance = await createPatternStore({
71
+ dimensions: 256,
72
+ ewc: {
73
+ lambda: 10.0,
74
+ fisherDecay: 0.9,
75
+ },
76
+ });
77
+ // No direct config accessor, but creation should succeed
78
+ expect(instance).toBeInstanceOf(PatternStore);
79
+ instance.close();
80
+ });
81
+ });
82
+ describe('storePattern', () => {
83
+ it('should store a new pattern and return ID', async () => {
84
+ const patternId = await store.storePattern(mockPattern, acceptOutcome);
85
+ expect(patternId).toBeDefined();
86
+ expect(typeof patternId).toBe('string');
87
+ expect(patternId.length).toBeGreaterThan(0);
88
+ });
89
+ it('should store pattern with custom ID', async () => {
90
+ const customPattern = {
91
+ ...mockPattern,
92
+ id: 'custom-pattern-id',
93
+ };
94
+ const patternId = await store.storePattern(customPattern, acceptOutcome);
95
+ expect(patternId).toBe('custom-pattern-id');
96
+ });
97
+ it('should calculate initial importance from outcome reward', async () => {
98
+ const patternId = await store.storePattern(mockPattern, acceptOutcome);
99
+ const importance = store.getPatternImportance(patternId);
100
+ expect(importance).toBeGreaterThan(0);
101
+ });
102
+ it('should give higher importance to positive outcomes', async () => {
103
+ const positiveId = await store.storePattern(mockPattern, acceptOutcome);
104
+ const negativeId = await store.storePattern({ ...mockPattern, skill: { ...mockSkill, skillId: 'other/skill' } }, dismissOutcome);
105
+ const positiveImportance = store.getPatternImportance(positiveId);
106
+ const negativeImportance = store.getPatternImportance(negativeId);
107
+ // Positive outcomes get 1.5x boost
108
+ expect(positiveImportance).toBeGreaterThan(negativeImportance);
109
+ });
110
+ it('should update existing pattern if very similar', async () => {
111
+ const firstId = await store.storePattern(mockPattern, acceptOutcome);
112
+ // Store nearly identical pattern
113
+ const samePatternAgain = await store.storePattern(mockPattern, {
114
+ type: 'usage',
115
+ reward: 0.3,
116
+ });
117
+ // Should return same ID since patterns are very similar
118
+ expect(samePatternAgain).toBe(firstId);
119
+ });
120
+ it('should store different patterns separately', async () => {
121
+ const firstId = await store.storePattern(mockPattern, acceptOutcome);
122
+ // Store different pattern
123
+ const differentPattern = {
124
+ context: {
125
+ installedSkills: ['other/skill'],
126
+ frameworks: ['vue', 'python'],
127
+ keywords: ['different', 'keywords'],
128
+ },
129
+ skill: { skillId: 'other/different-skill', category: 'devops' },
130
+ originalScore: 0.6,
131
+ source: 'search',
132
+ };
133
+ const secondId = await store.storePattern(differentPattern, acceptOutcome);
134
+ expect(secondId).not.toBe(firstId);
135
+ });
136
+ });
137
+ describe('findSimilarPatterns', () => {
138
+ beforeEach(async () => {
139
+ // Seed some patterns
140
+ await store.storePattern(mockPattern, acceptOutcome);
141
+ await store.storePattern({
142
+ context: { ...mockContext, frameworks: ['vue'] },
143
+ skill: { ...mockSkill, skillId: 'community/vue-helper' },
144
+ originalScore: 0.75,
145
+ source: 'recommend',
146
+ }, acceptOutcome);
147
+ await store.storePattern({
148
+ context: { ...mockContext, keywords: ['python'] },
149
+ skill: { ...mockSkill, skillId: 'community/pytest-helper' },
150
+ originalScore: 0.65,
151
+ source: 'search',
152
+ }, dismissOutcome);
153
+ });
154
+ it('should find similar patterns by context', async () => {
155
+ const results = await store.findSimilarPatterns({
156
+ context: mockContext,
157
+ });
158
+ expect(results.length).toBeGreaterThan(0);
159
+ expect(results[0].similarity).toBeGreaterThan(0);
160
+ expect(results[0].weightedSimilarity).toBeGreaterThan(0);
161
+ });
162
+ it('should return patterns sorted by weighted similarity', async () => {
163
+ const results = await store.findSimilarPatterns({
164
+ context: mockContext,
165
+ });
166
+ for (let i = 1; i < results.length; i++) {
167
+ expect(results[i - 1].weightedSimilarity).toBeGreaterThanOrEqual(results[i].weightedSimilarity);
168
+ }
169
+ });
170
+ it('should assign correct ranks', async () => {
171
+ const results = await store.findSimilarPatterns({
172
+ context: mockContext,
173
+ });
174
+ for (let i = 0; i < results.length; i++) {
175
+ expect(results[i].rank).toBe(i + 1);
176
+ }
177
+ });
178
+ it('should filter by skillId', async () => {
179
+ const results = await store.findSimilarPatterns({
180
+ context: mockContext,
181
+ skillId: 'community/jest-helper',
182
+ });
183
+ expect(results.length).toBeGreaterThan(0);
184
+ for (const result of results) {
185
+ expect(result.pattern.skill.skillId).toBe('community/jest-helper');
186
+ }
187
+ });
188
+ it('should filter by category', async () => {
189
+ const results = await store.findSimilarPatterns({
190
+ context: mockContext,
191
+ category: 'testing',
192
+ });
193
+ for (const result of results) {
194
+ expect(result.pattern.skill.category).toBe('testing');
195
+ }
196
+ });
197
+ it('should filter by minimum importance', async () => {
198
+ const results = await store.findSimilarPatterns({
199
+ context: mockContext,
200
+ minImportance: 0.05,
201
+ });
202
+ for (const result of results) {
203
+ expect(result.pattern.importance).toBeGreaterThanOrEqual(0.05);
204
+ }
205
+ });
206
+ it('should filter by positiveOnly', async () => {
207
+ const results = await store.findSimilarPatterns({
208
+ context: mockContext,
209
+ positiveOnly: true,
210
+ });
211
+ for (const result of results) {
212
+ expect(result.pattern.outcome.reward).toBeGreaterThan(0);
213
+ }
214
+ });
215
+ it('should respect limit parameter', async () => {
216
+ const results = await store.findSimilarPatterns({ context: mockContext }, 2);
217
+ expect(results.length).toBeLessThanOrEqual(2);
218
+ });
219
+ });
220
+ describe('consolidate', () => {
221
+ it('should skip consolidation if threshold not reached', async () => {
222
+ // Store many patterns first to establish baseline
223
+ for (let i = 0; i < 20; i++) {
224
+ await store.storePattern({
225
+ context: { ...mockContext, keywords: [`baseline-${i}`] },
226
+ skill: { ...mockSkill, skillId: `baseline/skill-${i}` },
227
+ originalScore: 0.8,
228
+ source: 'recommend',
229
+ }, acceptOutcome);
230
+ }
231
+ // Force consolidation to reset the counter
232
+ await store.consolidate();
233
+ // Now add just one pattern (well below 5% threshold)
234
+ await store.storePattern({ ...mockPattern, skill: { ...mockSkill, skillId: 'single/new' } }, acceptOutcome);
235
+ const result = await store.consolidate();
236
+ expect(result.consolidated).toBe(false);
237
+ expect(result.patternsProcessed).toBe(0);
238
+ });
239
+ it('should consolidate when threshold is reached', async () => {
240
+ // Store enough patterns to trigger consolidation
241
+ for (let i = 0; i < 20; i++) {
242
+ await store.storePattern({
243
+ context: { ...mockContext, keywords: [`keyword-${i}`] },
244
+ skill: { ...mockSkill, skillId: `skill/skill-${i}` },
245
+ originalScore: 0.5 + Math.random() * 0.5,
246
+ source: 'recommend',
247
+ }, Math.random() > 0.3 ? acceptOutcome : dismissOutcome);
248
+ }
249
+ const result = await store.consolidate();
250
+ expect(result.consolidated).toBe(true);
251
+ expect(result.patternsProcessed).toBeGreaterThan(0);
252
+ });
253
+ it('should achieve >= 95% preservation rate', async () => {
254
+ // Store patterns with varying importance
255
+ for (let i = 0; i < 30; i++) {
256
+ await store.storePattern({
257
+ context: { ...mockContext, keywords: [`keyword-${i}`] },
258
+ skill: { ...mockSkill, skillId: `skill/skill-${i}` },
259
+ originalScore: 0.5 + Math.random() * 0.5,
260
+ source: 'recommend',
261
+ }, acceptOutcome);
262
+ }
263
+ const result = await store.consolidate();
264
+ if (result.consolidated) {
265
+ expect(result.preservationRate).toBeGreaterThanOrEqual(0.95);
266
+ }
267
+ });
268
+ it('should prune low-importance patterns', async () => {
269
+ // Store many patterns
270
+ for (let i = 0; i < 50; i++) {
271
+ await store.storePattern({
272
+ context: { ...mockContext, keywords: [`keyword-${i}`] },
273
+ skill: { ...mockSkill, skillId: `skill/skill-${i}` },
274
+ originalScore: 0.5 + Math.random() * 0.5,
275
+ source: 'recommend',
276
+ }, i % 5 === 0 ? dismissOutcome : acceptOutcome);
277
+ }
278
+ const result = await store.consolidate();
279
+ if (result.consolidated) {
280
+ expect(result.patternsPruned).toBeGreaterThanOrEqual(0);
281
+ }
282
+ });
283
+ it('should update average importance', async () => {
284
+ for (let i = 0; i < 25; i++) {
285
+ await store.storePattern({
286
+ context: { ...mockContext, keywords: [`keyword-${i}`] },
287
+ skill: { ...mockSkill, skillId: `skill/skill-${i}` },
288
+ originalScore: 0.5,
289
+ source: 'recommend',
290
+ }, acceptOutcome);
291
+ }
292
+ const result = await store.consolidate();
293
+ expect(result.averageImportance).toBeGreaterThanOrEqual(0);
294
+ });
295
+ });
296
+ describe('getMetrics', () => {
297
+ it('should return metrics for empty store', async () => {
298
+ const metrics = store.getMetrics();
299
+ expect(metrics.totalPatterns).toBe(0);
300
+ expect(metrics.averageImportance).toBe(0);
301
+ expect(metrics.consolidation.totalConsolidations).toBe(0);
302
+ });
303
+ it('should track patterns by outcome type', async () => {
304
+ await store.storePattern(mockPattern, acceptOutcome);
305
+ await store.storePattern({ ...mockPattern, skill: { ...mockSkill, skillId: 'skill/2' } }, dismissOutcome);
306
+ const metrics = store.getMetrics();
307
+ expect(metrics.patternsByOutcome.accept).toBeGreaterThanOrEqual(1);
308
+ expect(metrics.patternsByOutcome.dismiss).toBeGreaterThanOrEqual(1);
309
+ });
310
+ it('should track query performance', async () => {
311
+ await store.storePattern(mockPattern, acceptOutcome);
312
+ // Get initial query count (storePattern also uses findSimilarPatterns internally)
313
+ const initialMetrics = store.getMetrics();
314
+ const initialQueries = initialMetrics.queryPerformance.queriesPerformed;
315
+ // Perform additional queries
316
+ await store.findSimilarPatterns({ context: mockContext });
317
+ await store.findSimilarPatterns({ context: mockContext });
318
+ const metrics = store.getMetrics();
319
+ expect(metrics.queryPerformance.queriesPerformed).toBe(initialQueries + 2);
320
+ expect(metrics.queryPerformance.averageLatencyMs).toBeGreaterThanOrEqual(0);
321
+ });
322
+ it('should track consolidation history', async () => {
323
+ // Store patterns and force consolidation
324
+ for (let i = 0; i < 30; i++) {
325
+ await store.storePattern({
326
+ context: { ...mockContext, keywords: [`keyword-${i}`] },
327
+ skill: { ...mockSkill, skillId: `skill/skill-${i}` },
328
+ originalScore: 0.5,
329
+ source: 'recommend',
330
+ }, acceptOutcome);
331
+ }
332
+ await store.consolidate();
333
+ const metrics = store.getMetrics();
334
+ expect(metrics.consolidation.totalConsolidations).toBeGreaterThanOrEqual(1);
335
+ });
336
+ });
337
+ });
338
+ describe('FisherInformationMatrix', () => {
339
+ let matrix;
340
+ const dimensions = 384;
341
+ beforeEach(() => {
342
+ matrix = new FisherInformationMatrix(dimensions);
343
+ });
344
+ describe('initialization', () => {
345
+ it('should create with correct dimensions', () => {
346
+ const importanceVector = matrix.getImportanceVector();
347
+ expect(importanceVector.length).toBe(dimensions);
348
+ });
349
+ it('should start with zero importance', () => {
350
+ expect(matrix.getAverageImportance()).toBe(0);
351
+ expect(matrix.getImportance(0)).toBe(0);
352
+ expect(matrix.getImportance(dimensions - 1)).toBe(0);
353
+ });
354
+ });
355
+ describe('update', () => {
356
+ it('should update importance based on gradient', () => {
357
+ const gradient = new Float32Array(dimensions);
358
+ gradient.fill(0.5);
359
+ matrix.update(gradient);
360
+ expect(matrix.getAverageImportance()).toBeGreaterThan(0);
361
+ });
362
+ it('should accumulate importance over multiple updates', () => {
363
+ const gradient = new Float32Array(dimensions);
364
+ gradient.fill(0.5);
365
+ matrix.update(gradient);
366
+ matrix.getAverageImportance(); // First update
367
+ matrix.update(gradient);
368
+ const secondAvg = matrix.getAverageImportance();
369
+ // Running mean should stabilize
370
+ expect(secondAvg).toBeGreaterThan(0);
371
+ });
372
+ it('should track update count', () => {
373
+ const gradient = new Float32Array(dimensions);
374
+ gradient.fill(0.5);
375
+ expect(matrix.getUpdateCount()).toBe(0);
376
+ matrix.update(gradient);
377
+ expect(matrix.getUpdateCount()).toBe(1);
378
+ matrix.update(gradient);
379
+ expect(matrix.getUpdateCount()).toBe(2);
380
+ });
381
+ });
382
+ describe('decay', () => {
383
+ it('should reduce importance values', () => {
384
+ const gradient = new Float32Array(dimensions);
385
+ gradient.fill(1.0);
386
+ matrix.update(gradient);
387
+ const beforeDecay = matrix.getAverageImportance();
388
+ matrix.decay(0.5);
389
+ const afterDecay = matrix.getAverageImportance();
390
+ expect(afterDecay).toBeLessThan(beforeDecay);
391
+ });
392
+ it('should not affect zero importance', () => {
393
+ matrix.decay(0.5);
394
+ expect(matrix.getAverageImportance()).toBe(0);
395
+ });
396
+ });
397
+ describe('serialization', () => {
398
+ it('should serialize and deserialize correctly', () => {
399
+ const gradient = new Float32Array(dimensions);
400
+ gradient.fill(0.75);
401
+ matrix.update(gradient);
402
+ const originalAvg = matrix.getAverageImportance();
403
+ const originalCount = matrix.getUpdateCount();
404
+ const serialized = matrix.serialize();
405
+ const newMatrix = new FisherInformationMatrix(dimensions);
406
+ newMatrix.deserialize(serialized);
407
+ expect(newMatrix.getAverageImportance()).toBeCloseTo(originalAvg, 5);
408
+ expect(newMatrix.getUpdateCount()).toBe(originalCount);
409
+ });
410
+ it('should preserve dimension-level importance', () => {
411
+ const gradient = new Float32Array(dimensions);
412
+ for (let i = 0; i < dimensions; i++) {
413
+ gradient[i] = i / dimensions;
414
+ }
415
+ matrix.update(gradient);
416
+ const serialized = matrix.serialize();
417
+ const newMatrix = new FisherInformationMatrix(dimensions);
418
+ newMatrix.deserialize(serialized);
419
+ for (let i = 0; i < dimensions; i++) {
420
+ expect(newMatrix.getImportance(i)).toBeCloseTo(matrix.getImportance(i), 5);
421
+ }
422
+ });
423
+ });
424
+ describe('reset', () => {
425
+ it('should reset all values to zero', () => {
426
+ const gradient = new Float32Array(dimensions);
427
+ gradient.fill(1.0);
428
+ matrix.update(gradient);
429
+ expect(matrix.getAverageImportance()).toBeGreaterThan(0);
430
+ matrix.reset();
431
+ expect(matrix.getAverageImportance()).toBe(0);
432
+ expect(matrix.getUpdateCount()).toBe(0);
433
+ });
434
+ });
435
+ });
436
+ describe('Pattern Rewards', () => {
437
+ it('should have correct reward values', () => {
438
+ expect(PATTERN_REWARDS.accept).toBe(1.0);
439
+ expect(PATTERN_REWARDS.usage).toBe(0.3);
440
+ expect(PATTERN_REWARDS.frequent).toBe(0.5);
441
+ expect(PATTERN_REWARDS.dismiss).toBe(-0.5);
442
+ expect(PATTERN_REWARDS.abandonment).toBe(-0.3);
443
+ expect(PATTERN_REWARDS.uninstall).toBe(-0.7);
444
+ });
445
+ it('should align with ReasoningBank trajectory rewards', () => {
446
+ // These should match TRAJECTORY_REWARDS in ReasoningBankIntegration
447
+ expect(PATTERN_REWARDS.accept).toBeGreaterThan(0);
448
+ expect(PATTERN_REWARDS.dismiss).toBeLessThan(0);
449
+ expect(PATTERN_REWARDS.uninstall).toBeLessThan(PATTERN_REWARDS.dismiss);
450
+ });
451
+ });
452
+ describe('Default EWC Config', () => {
453
+ it('should have reasonable default values', () => {
454
+ expect(DEFAULT_EWC_CONFIG.lambda).toBe(5.0);
455
+ expect(DEFAULT_EWC_CONFIG.fisherDecay).toBe(0.95);
456
+ expect(DEFAULT_EWC_CONFIG.importanceThreshold).toBe(0.01);
457
+ expect(DEFAULT_EWC_CONFIG.fisherSampleSize).toBe(100);
458
+ expect(DEFAULT_EWC_CONFIG.consolidationThreshold).toBe(0.1);
459
+ expect(DEFAULT_EWC_CONFIG.maxPatterns).toBe(10000);
460
+ });
461
+ it('should have fisher decay in valid range', () => {
462
+ expect(DEFAULT_EWC_CONFIG.fisherDecay).toBeGreaterThan(0.8);
463
+ expect(DEFAULT_EWC_CONFIG.fisherDecay).toBeLessThanOrEqual(1.0);
464
+ });
465
+ });
466
+ describe('EWC++ Catastrophic Forgetting Prevention', () => {
467
+ let store;
468
+ const importantContext = {
469
+ installedSkills: ['anthropic/commit'],
470
+ frameworks: ['react', 'typescript'],
471
+ keywords: ['testing', 'jest'],
472
+ };
473
+ const importantPattern = {
474
+ context: importantContext,
475
+ skill: { skillId: 'community/jest-helper', category: 'testing' },
476
+ originalScore: 0.95,
477
+ source: 'recommend',
478
+ };
479
+ beforeEach(async () => {
480
+ store = await createPatternStore({
481
+ autoConsolidate: false,
482
+ ewc: {
483
+ consolidationThreshold: 0.05,
484
+ maxPatterns: 100,
485
+ },
486
+ });
487
+ });
488
+ afterEach(() => {
489
+ store.close();
490
+ });
491
+ it('should preserve important patterns across many new insertions', async () => {
492
+ // Store the important pattern
493
+ await store.storePattern(importantPattern, {
494
+ type: 'accept',
495
+ reward: 1.0,
496
+ });
497
+ // Access it multiple times to increase importance
498
+ for (let i = 0; i < 10; i++) {
499
+ await store.findSimilarPatterns({
500
+ context: importantContext,
501
+ skillId: 'community/jest-helper',
502
+ });
503
+ }
504
+ // Store many new patterns
505
+ for (let i = 0; i < 50; i++) {
506
+ await store.storePattern({
507
+ context: {
508
+ installedSkills: ['other/skill'],
509
+ frameworks: ['vue', 'python'],
510
+ keywords: [`keyword-${i}`],
511
+ },
512
+ skill: { skillId: `new-skill-${i}`, category: 'testing' },
513
+ originalScore: 0.5,
514
+ source: 'recommend',
515
+ }, {
516
+ type: 'accept',
517
+ reward: 0.8,
518
+ });
519
+ }
520
+ // Consolidate
521
+ const result = await store.consolidate();
522
+ // Verify important pattern was preserved
523
+ const preserved = await store.findSimilarPatterns({
524
+ context: importantContext,
525
+ skillId: 'community/jest-helper',
526
+ minImportance: 0.01,
527
+ });
528
+ expect(preserved.length).toBeGreaterThan(0);
529
+ expect(result.preservationRate).toBeGreaterThanOrEqual(0.95);
530
+ });
531
+ it('should allow low-importance patterns to be overwritten', async () => {
532
+ // Store a low-importance pattern
533
+ await store.storePattern({
534
+ context: { installedSkills: [] },
535
+ skill: { skillId: 'low/importance' },
536
+ originalScore: 0.1,
537
+ source: 'search',
538
+ }, {
539
+ type: 'dismiss',
540
+ reward: -0.5,
541
+ confidence: 0.3,
542
+ });
543
+ // Store many patterns and consolidate
544
+ for (let i = 0; i < 50; i++) {
545
+ await store.storePattern({
546
+ context: { installedSkills: [], keywords: [`key-${i}`] },
547
+ skill: { skillId: `skill-${i}` },
548
+ originalScore: 0.8,
549
+ source: 'recommend',
550
+ }, { type: 'accept', reward: 1.0 });
551
+ }
552
+ const result = await store.consolidate();
553
+ // Low importance patterns may be pruned
554
+ expect(result.consolidated).toBe(true);
555
+ });
556
+ it('should maintain 95% preservation after multiple consolidation cycles', async () => {
557
+ // Seed initial important patterns
558
+ for (let i = 0; i < 20; i++) {
559
+ await store.storePattern({
560
+ context: { ...importantContext, keywords: [`important-${i}`] },
561
+ skill: { skillId: `important/skill-${i}`, category: 'testing' },
562
+ originalScore: 0.9,
563
+ source: 'recommend',
564
+ }, { type: 'accept', reward: 1.0 });
565
+ }
566
+ // Run multiple consolidation cycles
567
+ const preservationRates = [];
568
+ for (let cycle = 0; cycle < 3; cycle++) {
569
+ // Add new patterns each cycle
570
+ for (let i = 0; i < 15; i++) {
571
+ await store.storePattern({
572
+ context: { installedSkills: [], keywords: [`cycle-${cycle}-${i}`] },
573
+ skill: { skillId: `cycle-${cycle}-skill-${i}` },
574
+ originalScore: 0.5,
575
+ source: 'search',
576
+ }, { type: 'accept', reward: 0.7 });
577
+ }
578
+ const result = await store.consolidate();
579
+ if (result.consolidated) {
580
+ preservationRates.push(result.preservationRate);
581
+ }
582
+ }
583
+ // All consolidation cycles should maintain high preservation
584
+ for (const rate of preservationRates) {
585
+ expect(rate).toBeGreaterThanOrEqual(0.9);
586
+ }
587
+ });
588
+ });
589
+ //# sourceMappingURL=PatternStore.test.js.map