@skillsmith/core 0.1.2 → 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 (684) hide show
  1. package/README.md +235 -4
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/analysis/CodebaseAnalyzer.d.ts +4 -134
  4. package/dist/src/analysis/CodebaseAnalyzer.d.ts.map +1 -1
  5. package/dist/src/analysis/CodebaseAnalyzer.js +7 -315
  6. package/dist/src/analysis/CodebaseAnalyzer.js.map +1 -1
  7. package/dist/src/analysis/__tests__/incremental.test.d.ts +13 -0
  8. package/dist/src/analysis/__tests__/incremental.test.d.ts.map +1 -0
  9. package/dist/src/analysis/__tests__/incremental.test.js +515 -0
  10. package/dist/src/analysis/__tests__/incremental.test.js.map +1 -0
  11. package/dist/src/analysis/__tests__/integration.test.d.ts +14 -0
  12. package/dist/src/analysis/__tests__/integration.test.d.ts.map +1 -0
  13. package/dist/src/analysis/__tests__/integration.test.js +1059 -0
  14. package/dist/src/analysis/__tests__/integration.test.js.map +1 -0
  15. package/dist/src/analysis/__tests__/metrics.test.d.ts +9 -0
  16. package/dist/src/analysis/__tests__/metrics.test.d.ts.map +1 -0
  17. package/dist/src/analysis/__tests__/metrics.test.js +369 -0
  18. package/dist/src/analysis/__tests__/metrics.test.js.map +1 -0
  19. package/dist/src/analysis/__tests__/performance.test.d.ts +15 -0
  20. package/dist/src/analysis/__tests__/performance.test.d.ts.map +1 -0
  21. package/dist/src/analysis/__tests__/performance.test.js +402 -0
  22. package/dist/src/analysis/__tests__/performance.test.js.map +1 -0
  23. package/dist/src/analysis/adapters/__tests__/go.test.d.ts +12 -0
  24. package/dist/src/analysis/adapters/__tests__/go.test.d.ts.map +1 -0
  25. package/dist/src/analysis/adapters/__tests__/go.test.js +561 -0
  26. package/dist/src/analysis/adapters/__tests__/go.test.js.map +1 -0
  27. package/dist/src/analysis/adapters/__tests__/python.test.d.ts +11 -0
  28. package/dist/src/analysis/adapters/__tests__/python.test.d.ts.map +1 -0
  29. package/dist/src/analysis/adapters/__tests__/python.test.js +669 -0
  30. package/dist/src/analysis/adapters/__tests__/python.test.js.map +1 -0
  31. package/dist/src/analysis/adapters/__tests__/rust.test.d.ts +12 -0
  32. package/dist/src/analysis/adapters/__tests__/rust.test.d.ts.map +1 -0
  33. package/dist/src/analysis/adapters/__tests__/rust.test.js +676 -0
  34. package/dist/src/analysis/adapters/__tests__/rust.test.js.map +1 -0
  35. package/dist/src/analysis/adapters/__tests__/typescript.test.d.ts +14 -0
  36. package/dist/src/analysis/adapters/__tests__/typescript.test.d.ts.map +1 -0
  37. package/dist/src/analysis/adapters/__tests__/typescript.test.js +381 -0
  38. package/dist/src/analysis/adapters/__tests__/typescript.test.js.map +1 -0
  39. package/dist/src/analysis/adapters/base.d.ts +83 -0
  40. package/dist/src/analysis/adapters/base.d.ts.map +1 -0
  41. package/dist/src/analysis/adapters/base.js +40 -0
  42. package/dist/src/analysis/adapters/base.js.map +1 -0
  43. package/dist/src/analysis/adapters/factory.d.ts +150 -0
  44. package/dist/src/analysis/adapters/factory.d.ts.map +1 -0
  45. package/dist/src/analysis/adapters/factory.js +244 -0
  46. package/dist/src/analysis/adapters/factory.js.map +1 -0
  47. package/dist/src/analysis/adapters/go.d.ts +131 -0
  48. package/dist/src/analysis/adapters/go.d.ts.map +1 -0
  49. package/dist/src/analysis/adapters/go.js +414 -0
  50. package/dist/src/analysis/adapters/go.js.map +1 -0
  51. package/dist/src/analysis/adapters/index.d.ts +20 -0
  52. package/dist/src/analysis/adapters/index.d.ts.map +1 -0
  53. package/dist/src/analysis/adapters/index.js +23 -0
  54. package/dist/src/analysis/adapters/index.js.map +1 -0
  55. package/dist/src/analysis/adapters/java.d.ts +154 -0
  56. package/dist/src/analysis/adapters/java.d.ts.map +1 -0
  57. package/dist/src/analysis/adapters/java.js +407 -0
  58. package/dist/src/analysis/adapters/java.js.map +1 -0
  59. package/dist/src/analysis/adapters/python.d.ts +165 -0
  60. package/dist/src/analysis/adapters/python.d.ts.map +1 -0
  61. package/dist/src/analysis/adapters/python.js +475 -0
  62. package/dist/src/analysis/adapters/python.js.map +1 -0
  63. package/dist/src/analysis/adapters/rust.d.ts +116 -0
  64. package/dist/src/analysis/adapters/rust.d.ts.map +1 -0
  65. package/dist/src/analysis/adapters/rust.js +476 -0
  66. package/dist/src/analysis/adapters/rust.js.map +1 -0
  67. package/dist/src/analysis/adapters/typescript.d.ts +68 -0
  68. package/dist/src/analysis/adapters/typescript.d.ts.map +1 -0
  69. package/dist/src/analysis/adapters/typescript.js +79 -0
  70. package/dist/src/analysis/adapters/typescript.js.map +1 -0
  71. package/dist/src/analysis/aggregator.d.ts +193 -0
  72. package/dist/src/analysis/aggregator.d.ts.map +1 -0
  73. package/dist/src/analysis/aggregator.js +283 -0
  74. package/dist/src/analysis/aggregator.js.map +1 -0
  75. package/dist/src/analysis/cache.d.ts +180 -0
  76. package/dist/src/analysis/cache.d.ts.map +1 -0
  77. package/dist/src/analysis/cache.js +279 -0
  78. package/dist/src/analysis/cache.js.map +1 -0
  79. package/dist/src/analysis/file-streamer.d.ts +136 -0
  80. package/dist/src/analysis/file-streamer.d.ts.map +1 -0
  81. package/dist/src/analysis/file-streamer.js +291 -0
  82. package/dist/src/analysis/file-streamer.js.map +1 -0
  83. package/dist/src/analysis/framework-detector.d.ts +47 -0
  84. package/dist/src/analysis/framework-detector.d.ts.map +1 -0
  85. package/dist/src/analysis/framework-detector.js +151 -0
  86. package/dist/src/analysis/framework-detector.js.map +1 -0
  87. package/dist/src/analysis/incremental-parser.d.ts +186 -0
  88. package/dist/src/analysis/incremental-parser.d.ts.map +1 -0
  89. package/dist/src/analysis/incremental-parser.js +291 -0
  90. package/dist/src/analysis/incremental-parser.js.map +1 -0
  91. package/dist/src/analysis/incremental.d.ts +186 -0
  92. package/dist/src/analysis/incremental.d.ts.map +1 -0
  93. package/dist/src/analysis/incremental.js +247 -0
  94. package/dist/src/analysis/incremental.js.map +1 -0
  95. package/dist/src/analysis/index.d.ts +29 -2
  96. package/dist/src/analysis/index.d.ts.map +1 -1
  97. package/dist/src/analysis/index.js +53 -2
  98. package/dist/src/analysis/index.js.map +1 -1
  99. package/dist/src/analysis/language-detector.d.ts +92 -0
  100. package/dist/src/analysis/language-detector.d.ts.map +1 -0
  101. package/dist/src/analysis/language-detector.js +602 -0
  102. package/dist/src/analysis/language-detector.js.map +1 -0
  103. package/dist/src/analysis/memory-monitor.d.ts +199 -0
  104. package/dist/src/analysis/memory-monitor.d.ts.map +1 -0
  105. package/dist/src/analysis/memory-monitor.js +271 -0
  106. package/dist/src/analysis/memory-monitor.js.map +1 -0
  107. package/dist/src/analysis/metrics.d.ts +300 -0
  108. package/dist/src/analysis/metrics.d.ts.map +1 -0
  109. package/dist/src/analysis/metrics.js +537 -0
  110. package/dist/src/analysis/metrics.js.map +1 -0
  111. package/dist/src/analysis/parsers.d.ts +43 -0
  112. package/dist/src/analysis/parsers.d.ts.map +1 -0
  113. package/dist/src/analysis/parsers.js +219 -0
  114. package/dist/src/analysis/parsers.js.map +1 -0
  115. package/dist/src/analysis/router.d.ts +264 -0
  116. package/dist/src/analysis/router.d.ts.map +1 -0
  117. package/dist/src/analysis/router.js +398 -0
  118. package/dist/src/analysis/router.js.map +1 -0
  119. package/dist/src/analysis/tree-cache.d.ts +208 -0
  120. package/dist/src/analysis/tree-cache.d.ts.map +1 -0
  121. package/dist/src/analysis/tree-cache.js +288 -0
  122. package/dist/src/analysis/tree-cache.js.map +1 -0
  123. package/dist/src/analysis/tree-sitter/manager.d.ts +141 -0
  124. package/dist/src/analysis/tree-sitter/manager.d.ts.map +1 -0
  125. package/dist/src/analysis/tree-sitter/manager.js +239 -0
  126. package/dist/src/analysis/tree-sitter/manager.js.map +1 -0
  127. package/dist/src/analysis/types.d.ts +203 -0
  128. package/dist/src/analysis/types.d.ts.map +1 -0
  129. package/dist/src/analysis/types.js +58 -0
  130. package/dist/src/analysis/types.js.map +1 -0
  131. package/dist/src/analysis/worker-pool.d.ts +141 -0
  132. package/dist/src/analysis/worker-pool.d.ts.map +1 -0
  133. package/dist/src/analysis/worker-pool.js +418 -0
  134. package/dist/src/analysis/worker-pool.js.map +1 -0
  135. package/dist/src/analytics/AnalyticsRepository.d.ts +4 -0
  136. package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
  137. package/dist/src/analytics/AnalyticsRepository.js +30 -48
  138. package/dist/src/analytics/AnalyticsRepository.js.map +1 -1
  139. package/dist/src/analytics/schema.d.ts +1 -1
  140. package/dist/src/analytics/schema.d.ts.map +1 -1
  141. package/dist/src/analytics/schema.js +140 -0
  142. package/dist/src/analytics/schema.js.map +1 -1
  143. package/dist/src/api/cache.d.ts +131 -0
  144. package/dist/src/api/cache.d.ts.map +1 -0
  145. package/dist/src/api/cache.js +264 -0
  146. package/dist/src/api/cache.js.map +1 -0
  147. package/dist/src/api/client.d.ts +286 -0
  148. package/dist/src/api/client.d.ts.map +1 -0
  149. package/dist/src/api/client.js +422 -0
  150. package/dist/src/api/client.js.map +1 -0
  151. package/dist/src/api/index.d.ts +12 -0
  152. package/dist/src/api/index.d.ts.map +1 -0
  153. package/dist/src/api/index.js +17 -0
  154. package/dist/src/api/index.js.map +1 -0
  155. package/dist/src/api/types.d.ts +251 -0
  156. package/dist/src/api/types.d.ts.map +1 -0
  157. package/dist/src/api/types.js +9 -0
  158. package/dist/src/api/types.js.map +1 -0
  159. package/dist/src/benchmarks/BenchmarkRunner.d.ts +6 -175
  160. package/dist/src/benchmarks/BenchmarkRunner.d.ts.map +1 -1
  161. package/dist/src/benchmarks/BenchmarkRunner.js +6 -123
  162. package/dist/src/benchmarks/BenchmarkRunner.js.map +1 -1
  163. package/dist/src/benchmarks/MemoryProfiler.d.ts +4 -262
  164. package/dist/src/benchmarks/MemoryProfiler.d.ts.map +1 -1
  165. package/dist/src/benchmarks/MemoryProfiler.js +4 -400
  166. package/dist/src/benchmarks/MemoryProfiler.js.map +1 -1
  167. package/dist/src/benchmarks/comparator.d.ts +38 -0
  168. package/dist/src/benchmarks/comparator.d.ts.map +1 -0
  169. package/dist/src/benchmarks/comparator.js +81 -0
  170. package/dist/src/benchmarks/comparator.js.map +1 -0
  171. package/dist/src/benchmarks/formatters.d.ts +30 -0
  172. package/dist/src/benchmarks/formatters.d.ts.map +1 -0
  173. package/dist/src/benchmarks/formatters.js +88 -0
  174. package/dist/src/benchmarks/formatters.js.map +1 -0
  175. package/dist/src/benchmarks/index.d.ts +5 -1
  176. package/dist/src/benchmarks/index.d.ts.map +1 -1
  177. package/dist/src/benchmarks/index.js +9 -2
  178. package/dist/src/benchmarks/index.js.map +1 -1
  179. package/dist/src/benchmarks/memory/MemoryProfiler.d.ts +165 -0
  180. package/dist/src/benchmarks/memory/MemoryProfiler.d.ts.map +1 -0
  181. package/dist/src/benchmarks/memory/MemoryProfiler.js +312 -0
  182. package/dist/src/benchmarks/memory/MemoryProfiler.js.map +1 -0
  183. package/dist/src/benchmarks/memory/baseline-manager.d.ts +64 -0
  184. package/dist/src/benchmarks/memory/baseline-manager.d.ts.map +1 -0
  185. package/dist/src/benchmarks/memory/baseline-manager.js +95 -0
  186. package/dist/src/benchmarks/memory/baseline-manager.js.map +1 -0
  187. package/dist/src/benchmarks/memory/index.d.ts +12 -0
  188. package/dist/src/benchmarks/memory/index.d.ts.map +1 -0
  189. package/dist/src/benchmarks/memory/index.js +12 -0
  190. package/dist/src/benchmarks/memory/index.js.map +1 -0
  191. package/dist/src/benchmarks/memory/leak-detector.d.ts +23 -0
  192. package/dist/src/benchmarks/memory/leak-detector.d.ts.map +1 -0
  193. package/dist/src/benchmarks/memory/leak-detector.js +46 -0
  194. package/dist/src/benchmarks/memory/leak-detector.js.map +1 -0
  195. package/dist/src/benchmarks/memory/regression-detector.d.ts +17 -0
  196. package/dist/src/benchmarks/memory/regression-detector.d.ts.map +1 -0
  197. package/dist/src/benchmarks/memory/regression-detector.js +56 -0
  198. package/dist/src/benchmarks/memory/regression-detector.js.map +1 -0
  199. package/dist/src/benchmarks/memory/types.d.ts +111 -0
  200. package/dist/src/benchmarks/memory/types.d.ts.map +1 -0
  201. package/dist/src/benchmarks/memory/types.js +7 -0
  202. package/dist/src/benchmarks/memory/types.js.map +1 -0
  203. package/dist/src/benchmarks/memory/utils.d.ts +17 -0
  204. package/dist/src/benchmarks/memory/utils.d.ts.map +1 -0
  205. package/dist/src/benchmarks/memory/utils.js +29 -0
  206. package/dist/src/benchmarks/memory/utils.js.map +1 -0
  207. package/dist/src/benchmarks/types.d.ts +175 -0
  208. package/dist/src/benchmarks/types.d.ts.map +1 -0
  209. package/dist/src/benchmarks/types.js +20 -0
  210. package/dist/src/benchmarks/types.js.map +1 -0
  211. package/dist/src/billing/BillingService.d.ts +139 -0
  212. package/dist/src/billing/BillingService.d.ts.map +1 -0
  213. package/dist/src/billing/BillingService.js +393 -0
  214. package/dist/src/billing/BillingService.js.map +1 -0
  215. package/dist/src/billing/GDPRComplianceService.d.ts +176 -0
  216. package/dist/src/billing/GDPRComplianceService.d.ts.map +1 -0
  217. package/dist/src/billing/GDPRComplianceService.js +361 -0
  218. package/dist/src/billing/GDPRComplianceService.js.map +1 -0
  219. package/dist/src/billing/StripeClient.d.ts +177 -0
  220. package/dist/src/billing/StripeClient.d.ts.map +1 -0
  221. package/dist/src/billing/StripeClient.js +462 -0
  222. package/dist/src/billing/StripeClient.js.map +1 -0
  223. package/dist/src/billing/StripeReconciliationJob.d.ts +95 -0
  224. package/dist/src/billing/StripeReconciliationJob.d.ts.map +1 -0
  225. package/dist/src/billing/StripeReconciliationJob.js +405 -0
  226. package/dist/src/billing/StripeReconciliationJob.js.map +1 -0
  227. package/dist/src/billing/StripeWebhookHandler.d.ts +92 -0
  228. package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -0
  229. package/dist/src/billing/StripeWebhookHandler.js +409 -0
  230. package/dist/src/billing/StripeWebhookHandler.js.map +1 -0
  231. package/dist/src/billing/index.d.ts +18 -0
  232. package/dist/src/billing/index.d.ts.map +1 -0
  233. package/dist/src/billing/index.js +19 -0
  234. package/dist/src/billing/index.js.map +1 -0
  235. package/dist/src/billing/types.d.ts +266 -0
  236. package/dist/src/billing/types.d.ts.map +1 -0
  237. package/dist/src/billing/types.js +23 -0
  238. package/dist/src/billing/types.js.map +1 -0
  239. package/dist/src/db/schema.d.ts +1 -1
  240. package/dist/src/db/schema.d.ts.map +1 -1
  241. package/dist/src/db/schema.js +41 -1
  242. package/dist/src/db/schema.js.map +1 -1
  243. package/dist/src/embeddings/hnsw-store.d.ts +568 -0
  244. package/dist/src/embeddings/hnsw-store.d.ts.map +1 -0
  245. package/dist/src/embeddings/hnsw-store.js +805 -0
  246. package/dist/src/embeddings/hnsw-store.js.map +1 -0
  247. package/dist/src/embeddings/index.d.ts +2 -0
  248. package/dist/src/embeddings/index.d.ts.map +1 -1
  249. package/dist/src/embeddings/index.js +2 -0
  250. package/dist/src/embeddings/index.js.map +1 -1
  251. package/dist/src/errors.d.ts +1 -0
  252. package/dist/src/errors.d.ts.map +1 -1
  253. package/dist/src/errors.js +1 -0
  254. package/dist/src/errors.js.map +1 -1
  255. package/dist/src/index.d.ts +7 -3
  256. package/dist/src/index.d.ts.map +1 -1
  257. package/dist/src/index.js +12 -4
  258. package/dist/src/index.js.map +1 -1
  259. package/dist/src/learning/PatternStore.d.ts +457 -0
  260. package/dist/src/learning/PatternStore.d.ts.map +1 -0
  261. package/dist/src/learning/PatternStore.js +893 -0
  262. package/dist/src/learning/PatternStore.js.map +1 -0
  263. package/dist/src/learning/ReasoningBankIntegration.d.ts +403 -0
  264. package/dist/src/learning/ReasoningBankIntegration.d.ts.map +1 -0
  265. package/dist/src/learning/ReasoningBankIntegration.js +627 -0
  266. package/dist/src/learning/ReasoningBankIntegration.js.map +1 -0
  267. package/dist/src/learning/index.d.ts +15 -0
  268. package/dist/src/learning/index.d.ts.map +1 -0
  269. package/dist/src/learning/index.js +15 -0
  270. package/dist/src/learning/index.js.map +1 -0
  271. package/dist/src/repositories/IndexerRepository.d.ts.map +1 -1
  272. package/dist/src/repositories/IndexerRepository.js +1 -0
  273. package/dist/src/repositories/IndexerRepository.js.map +1 -1
  274. package/dist/src/repositories/QuarantineRepository.d.ts +4 -251
  275. package/dist/src/repositories/QuarantineRepository.d.ts.map +1 -1
  276. package/dist/src/repositories/QuarantineRepository.js +4 -441
  277. package/dist/src/repositories/QuarantineRepository.js.map +1 -1
  278. package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
  279. package/dist/src/repositories/SkillRepository.js +1 -0
  280. package/dist/src/repositories/SkillRepository.js.map +1 -1
  281. package/dist/src/repositories/SyncConfigRepository.d.ts +91 -0
  282. package/dist/src/repositories/SyncConfigRepository.d.ts.map +1 -0
  283. package/dist/src/repositories/SyncConfigRepository.js +202 -0
  284. package/dist/src/repositories/SyncConfigRepository.js.map +1 -0
  285. package/dist/src/repositories/SyncHistoryRepository.d.ts +104 -0
  286. package/dist/src/repositories/SyncHistoryRepository.d.ts.map +1 -0
  287. package/dist/src/repositories/SyncHistoryRepository.js +235 -0
  288. package/dist/src/repositories/SyncHistoryRepository.js.map +1 -0
  289. package/dist/src/repositories/quarantine/QuarantineRepository.d.ts +168 -0
  290. package/dist/src/repositories/quarantine/QuarantineRepository.d.ts.map +1 -0
  291. package/dist/src/repositories/quarantine/QuarantineRepository.js +341 -0
  292. package/dist/src/repositories/quarantine/QuarantineRepository.js.map +1 -0
  293. package/dist/src/repositories/quarantine/index.d.ts +10 -0
  294. package/dist/src/repositories/quarantine/index.d.ts.map +1 -0
  295. package/dist/src/repositories/quarantine/index.js +10 -0
  296. package/dist/src/repositories/quarantine/index.js.map +1 -0
  297. package/dist/src/repositories/quarantine/queries.d.ts +58 -0
  298. package/dist/src/repositories/quarantine/queries.d.ts.map +1 -0
  299. package/dist/src/repositories/quarantine/queries.js +88 -0
  300. package/dist/src/repositories/quarantine/queries.js.map +1 -0
  301. package/dist/src/repositories/quarantine/query-builder.d.ts +44 -0
  302. package/dist/src/repositories/quarantine/query-builder.d.ts.map +1 -0
  303. package/dist/src/repositories/quarantine/query-builder.js +87 -0
  304. package/dist/src/repositories/quarantine/query-builder.js.map +1 -0
  305. package/dist/src/repositories/quarantine/types.d.ts +155 -0
  306. package/dist/src/repositories/quarantine/types.d.ts.map +1 -0
  307. package/dist/src/repositories/quarantine/types.js +13 -0
  308. package/dist/src/repositories/quarantine/types.js.map +1 -0
  309. package/dist/src/routing/SONARouter.d.ts +154 -0
  310. package/dist/src/routing/SONARouter.d.ts.map +1 -0
  311. package/dist/src/routing/SONARouter.js +679 -0
  312. package/dist/src/routing/SONARouter.js.map +1 -0
  313. package/dist/src/routing/index.d.ts +9 -0
  314. package/dist/src/routing/index.d.ts.map +1 -0
  315. package/dist/src/routing/index.js +10 -0
  316. package/dist/src/routing/index.js.map +1 -0
  317. package/dist/src/routing/types.d.ts +331 -0
  318. package/dist/src/routing/types.d.ts.map +1 -0
  319. package/dist/src/routing/types.js +203 -0
  320. package/dist/src/routing/types.js.map +1 -0
  321. package/dist/src/scripts/__tests__/scan-imported-skills.test.d.ts +1 -0
  322. package/dist/src/scripts/__tests__/scan-imported-skills.test.d.ts.map +1 -1
  323. package/dist/src/scripts/__tests__/scan-imported-skills.test.js +12 -43
  324. package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
  325. package/dist/src/scripts/github-import/checkpoint.d.ts +21 -0
  326. package/dist/src/scripts/github-import/checkpoint.d.ts.map +1 -0
  327. package/dist/src/scripts/github-import/checkpoint.js +52 -0
  328. package/dist/src/scripts/github-import/checkpoint.js.map +1 -0
  329. package/dist/src/scripts/github-import/deduplication.d.ts +15 -0
  330. package/dist/src/scripts/github-import/deduplication.d.ts.map +1 -0
  331. package/dist/src/scripts/github-import/deduplication.js +33 -0
  332. package/dist/src/scripts/github-import/deduplication.js.map +1 -0
  333. package/dist/src/scripts/github-import/github-client.d.ts +57 -0
  334. package/dist/src/scripts/github-import/github-client.d.ts.map +1 -0
  335. package/dist/src/scripts/github-import/github-client.js +473 -0
  336. package/dist/src/scripts/github-import/github-client.js.map +1 -0
  337. package/dist/src/scripts/github-import/index.d.ts +29 -0
  338. package/dist/src/scripts/github-import/index.d.ts.map +1 -0
  339. package/dist/src/scripts/github-import/index.js +191 -0
  340. package/dist/src/scripts/github-import/index.js.map +1 -0
  341. package/dist/src/scripts/github-import/output.d.ts +12 -0
  342. package/dist/src/scripts/github-import/output.d.ts.map +1 -0
  343. package/dist/src/scripts/github-import/output.js +34 -0
  344. package/dist/src/scripts/github-import/output.js.map +1 -0
  345. package/dist/src/scripts/github-import/types.d.ts +114 -0
  346. package/dist/src/scripts/github-import/types.d.ts.map +1 -0
  347. package/dist/src/scripts/github-import/types.js +47 -0
  348. package/dist/src/scripts/github-import/types.js.map +1 -0
  349. package/dist/src/scripts/github-import/utils.d.ts +13 -0
  350. package/dist/src/scripts/github-import/utils.d.ts.map +1 -0
  351. package/dist/src/scripts/github-import/utils.js +28 -0
  352. package/dist/src/scripts/github-import/utils.js.map +1 -0
  353. package/dist/src/scripts/import-github-skills.d.ts +3 -12
  354. package/dist/src/scripts/import-github-skills.d.ts.map +1 -1
  355. package/dist/src/scripts/import-github-skills.js +27 -402
  356. package/dist/src/scripts/import-github-skills.js.map +1 -1
  357. package/dist/src/scripts/merge-skills.d.ts +56 -0
  358. package/dist/src/scripts/merge-skills.d.ts.map +1 -0
  359. package/dist/src/scripts/merge-skills.js +411 -0
  360. package/dist/src/scripts/merge-skills.js.map +1 -0
  361. package/dist/src/scripts/scan-imported-skills.d.ts +7 -7
  362. package/dist/src/scripts/scan-imported-skills.d.ts.map +1 -1
  363. package/dist/src/scripts/scan-imported-skills.js +8 -397
  364. package/dist/src/scripts/scan-imported-skills.js.map +1 -1
  365. package/dist/src/scripts/skill-scanner/categorizer.d.ts +43 -0
  366. package/dist/src/scripts/skill-scanner/categorizer.d.ts.map +1 -0
  367. package/dist/src/scripts/skill-scanner/categorizer.js +61 -0
  368. package/dist/src/scripts/skill-scanner/categorizer.js.map +1 -0
  369. package/dist/src/scripts/skill-scanner/file-scanner.d.ts +43 -0
  370. package/dist/src/scripts/skill-scanner/file-scanner.d.ts.map +1 -0
  371. package/dist/src/scripts/skill-scanner/file-scanner.js +90 -0
  372. package/dist/src/scripts/skill-scanner/file-scanner.js.map +1 -0
  373. package/dist/src/scripts/skill-scanner/index.d.ts +29 -0
  374. package/dist/src/scripts/skill-scanner/index.d.ts.map +1 -0
  375. package/dist/src/scripts/skill-scanner/index.js +134 -0
  376. package/dist/src/scripts/skill-scanner/index.js.map +1 -0
  377. package/dist/src/scripts/skill-scanner/logger.d.ts +110 -0
  378. package/dist/src/scripts/skill-scanner/logger.d.ts.map +1 -0
  379. package/dist/src/scripts/skill-scanner/logger.js +358 -0
  380. package/dist/src/scripts/skill-scanner/logger.js.map +1 -0
  381. package/dist/src/scripts/skill-scanner/reporter.d.ts +56 -0
  382. package/dist/src/scripts/skill-scanner/reporter.d.ts.map +1 -0
  383. package/dist/src/scripts/skill-scanner/reporter.js +218 -0
  384. package/dist/src/scripts/skill-scanner/reporter.js.map +1 -0
  385. package/dist/src/scripts/skill-scanner/scanner.d.ts +47 -0
  386. package/dist/src/scripts/skill-scanner/scanner.d.ts.map +1 -0
  387. package/dist/src/scripts/skill-scanner/scanner.js +257 -0
  388. package/dist/src/scripts/skill-scanner/scanner.js.map +1 -0
  389. package/dist/src/scripts/skill-scanner/trust-scorer.d.ts +59 -0
  390. package/dist/src/scripts/skill-scanner/trust-scorer.d.ts.map +1 -0
  391. package/dist/src/scripts/skill-scanner/trust-scorer.js +62 -0
  392. package/dist/src/scripts/skill-scanner/trust-scorer.js.map +1 -0
  393. package/dist/src/scripts/skill-scanner/types.d.ts +142 -0
  394. package/dist/src/scripts/skill-scanner/types.d.ts.map +1 -0
  395. package/dist/src/scripts/skill-scanner/types.js +7 -0
  396. package/dist/src/scripts/skill-scanner/types.js.map +1 -0
  397. package/dist/src/scripts/validate-skills.d.ts +3 -172
  398. package/dist/src/scripts/validate-skills.d.ts.map +1 -1
  399. package/dist/src/scripts/validate-skills.js +6 -519
  400. package/dist/src/scripts/validate-skills.js.map +1 -1
  401. package/dist/src/scripts/validation/deduplication.d.ts +23 -0
  402. package/dist/src/scripts/validation/deduplication.d.ts.map +1 -0
  403. package/dist/src/scripts/validation/deduplication.js +127 -0
  404. package/dist/src/scripts/validation/deduplication.js.map +1 -0
  405. package/dist/src/scripts/validation/field-validators.d.ts +9 -0
  406. package/dist/src/scripts/validation/field-validators.d.ts.map +1 -0
  407. package/dist/src/scripts/validation/field-validators.js +135 -0
  408. package/dist/src/scripts/validation/field-validators.js.map +1 -0
  409. package/dist/src/scripts/validation/index.d.ts +29 -0
  410. package/dist/src/scripts/validation/index.d.ts.map +1 -0
  411. package/dist/src/scripts/validation/index.js +83 -0
  412. package/dist/src/scripts/validation/index.js.map +1 -0
  413. package/dist/src/scripts/validation/normalizers.d.ts +29 -0
  414. package/dist/src/scripts/validation/normalizers.d.ts.map +1 -0
  415. package/dist/src/scripts/validation/normalizers.js +79 -0
  416. package/dist/src/scripts/validation/normalizers.js.map +1 -0
  417. package/dist/src/scripts/validation/pipeline.d.ts +13 -0
  418. package/dist/src/scripts/validation/pipeline.d.ts.map +1 -0
  419. package/dist/src/scripts/validation/pipeline.js +126 -0
  420. package/dist/src/scripts/validation/pipeline.js.map +1 -0
  421. package/dist/src/scripts/validation/types.d.ts +128 -0
  422. package/dist/src/scripts/validation/types.d.ts.map +1 -0
  423. package/dist/src/scripts/validation/types.js +43 -0
  424. package/dist/src/scripts/validation/types.js.map +1 -0
  425. package/dist/src/security/SkillSandbox.d.ts +156 -0
  426. package/dist/src/security/SkillSandbox.d.ts.map +1 -0
  427. package/dist/src/security/SkillSandbox.js +303 -0
  428. package/dist/src/security/SkillSandbox.js.map +1 -0
  429. package/dist/src/security/index.d.ts +8 -5
  430. package/dist/src/security/index.d.ts.map +1 -1
  431. package/dist/src/security/index.js +13 -3
  432. package/dist/src/security/index.js.map +1 -1
  433. package/dist/src/security/rate-limiter/RateLimiter.d.ts +86 -0
  434. package/dist/src/security/rate-limiter/RateLimiter.d.ts.map +1 -0
  435. package/dist/src/security/rate-limiter/RateLimiter.js +260 -0
  436. package/dist/src/security/rate-limiter/RateLimiter.js.map +1 -0
  437. package/dist/src/security/rate-limiter/constants.d.ts +15 -0
  438. package/dist/src/security/rate-limiter/constants.d.ts.map +1 -0
  439. package/dist/src/security/rate-limiter/constants.js +15 -0
  440. package/dist/src/security/rate-limiter/constants.js.map +1 -0
  441. package/dist/src/security/rate-limiter/errors.d.ts +22 -0
  442. package/dist/src/security/rate-limiter/errors.d.ts.map +1 -0
  443. package/dist/src/security/rate-limiter/errors.js +32 -0
  444. package/dist/src/security/rate-limiter/errors.js.map +1 -0
  445. package/dist/src/security/rate-limiter/index.d.ts +12 -0
  446. package/dist/src/security/rate-limiter/index.d.ts.map +1 -0
  447. package/dist/src/security/rate-limiter/index.js +16 -0
  448. package/dist/src/security/rate-limiter/index.js.map +1 -0
  449. package/dist/src/security/rate-limiter/metrics-manager.d.ts +55 -0
  450. package/dist/src/security/rate-limiter/metrics-manager.d.ts.map +1 -0
  451. package/dist/src/security/rate-limiter/metrics-manager.js +144 -0
  452. package/dist/src/security/rate-limiter/metrics-manager.js.map +1 -0
  453. package/dist/src/security/rate-limiter/presets.d.ts +64 -0
  454. package/dist/src/security/rate-limiter/presets.d.ts.map +1 -0
  455. package/dist/src/security/rate-limiter/presets.js +65 -0
  456. package/dist/src/security/rate-limiter/presets.js.map +1 -0
  457. package/dist/src/security/rate-limiter/queue-manager.d.ts +59 -0
  458. package/dist/src/security/rate-limiter/queue-manager.d.ts.map +1 -0
  459. package/dist/src/security/rate-limiter/queue-manager.js +189 -0
  460. package/dist/src/security/rate-limiter/queue-manager.js.map +1 -0
  461. package/dist/src/security/rate-limiter/storage.d.ts +34 -0
  462. package/dist/src/security/rate-limiter/storage.d.ts.map +1 -0
  463. package/dist/src/security/rate-limiter/storage.js +80 -0
  464. package/dist/src/security/rate-limiter/storage.js.map +1 -0
  465. package/dist/src/security/rate-limiter/token-bucket.d.ts +44 -0
  466. package/dist/src/security/rate-limiter/token-bucket.d.ts.map +1 -0
  467. package/dist/src/security/rate-limiter/token-bucket.js +99 -0
  468. package/dist/src/security/rate-limiter/token-bucket.js.map +1 -0
  469. package/dist/src/security/rate-limiter/types.d.ts +104 -0
  470. package/dist/src/security/rate-limiter/types.d.ts.map +1 -0
  471. package/dist/src/security/rate-limiter/types.js +7 -0
  472. package/dist/src/security/rate-limiter/types.js.map +1 -0
  473. package/dist/src/security/sanitization.d.ts +85 -0
  474. package/dist/src/security/sanitization.d.ts.map +1 -1
  475. package/dist/src/security/sanitization.js +133 -0
  476. package/dist/src/security/sanitization.js.map +1 -1
  477. package/dist/src/security/{scanner.d.ts → scanner/SecurityScanner.d.ts} +28 -62
  478. package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -0
  479. package/dist/src/security/{scanner.js → scanner/SecurityScanner.js} +230 -222
  480. package/dist/src/security/scanner/SecurityScanner.js.map +1 -0
  481. package/dist/src/security/scanner/index.d.ts +11 -0
  482. package/dist/src/security/scanner/index.d.ts.map +1 -0
  483. package/dist/src/security/scanner/index.js +14 -0
  484. package/dist/src/security/scanner/index.js.map +1 -0
  485. package/dist/src/security/scanner/patterns.d.ts +27 -0
  486. package/dist/src/security/scanner/patterns.d.ts.map +1 -0
  487. package/dist/src/security/scanner/patterns.js +198 -0
  488. package/dist/src/security/scanner/patterns.js.map +1 -0
  489. package/dist/src/security/scanner/regex-utils.d.ts +33 -0
  490. package/dist/src/security/scanner/regex-utils.d.ts.map +1 -0
  491. package/dist/src/security/scanner/regex-utils.js +41 -0
  492. package/dist/src/security/scanner/regex-utils.js.map +1 -0
  493. package/dist/src/security/scanner/types.d.ts +75 -0
  494. package/dist/src/security/scanner/types.d.ts.map +1 -0
  495. package/dist/src/security/scanner/types.js +7 -0
  496. package/dist/src/security/scanner/types.js.map +1 -0
  497. package/dist/src/security/scanner/weights.d.ts +15 -0
  498. package/dist/src/security/scanner/weights.d.ts.map +1 -0
  499. package/dist/src/security/scanner/weights.js +29 -0
  500. package/dist/src/security/scanner/weights.js.map +1 -0
  501. package/dist/src/services/SearchService.d.ts.map +1 -1
  502. package/dist/src/services/SearchService.js +1 -0
  503. package/dist/src/services/SearchService.js.map +1 -1
  504. package/dist/src/session/SessionHealthMonitor.d.ts +5 -168
  505. package/dist/src/session/SessionHealthMonitor.d.ts.map +1 -1
  506. package/dist/src/session/SessionHealthMonitor.js +22 -91
  507. package/dist/src/session/SessionHealthMonitor.js.map +1 -1
  508. package/dist/src/session/SessionManager.d.ts +7 -0
  509. package/dist/src/session/SessionManager.d.ts.map +1 -1
  510. package/dist/src/session/SessionManager.js +117 -10
  511. package/dist/src/session/SessionManager.js.map +1 -1
  512. package/dist/src/session/health-checks.d.ts +37 -0
  513. package/dist/src/session/health-checks.d.ts.map +1 -0
  514. package/dist/src/session/health-checks.js +64 -0
  515. package/dist/src/session/health-checks.js.map +1 -0
  516. package/dist/src/session/health-types.d.ts +78 -0
  517. package/dist/src/session/health-types.d.ts.map +1 -0
  518. package/dist/src/session/health-types.js +16 -0
  519. package/dist/src/session/health-types.js.map +1 -0
  520. package/dist/src/session/index.d.ts +5 -1
  521. package/dist/src/session/index.d.ts.map +1 -1
  522. package/dist/src/session/index.js +9 -0
  523. package/dist/src/session/index.js.map +1 -1
  524. package/dist/src/session/metrics-collector.d.ts +23 -0
  525. package/dist/src/session/metrics-collector.d.ts.map +1 -0
  526. package/dist/src/session/metrics-collector.js +44 -0
  527. package/dist/src/session/metrics-collector.js.map +1 -0
  528. package/dist/src/session/typed-event-emitter.d.ts +70 -0
  529. package/dist/src/session/typed-event-emitter.d.ts.map +1 -0
  530. package/dist/src/session/typed-event-emitter.js +79 -0
  531. package/dist/src/session/typed-event-emitter.js.map +1 -0
  532. package/dist/src/sources/BaseSourceAdapter.d.ts +1 -1
  533. package/dist/src/sources/BaseSourceAdapter.d.ts.map +1 -1
  534. package/dist/src/sources/BaseSourceAdapter.js +2 -2
  535. package/dist/src/sources/BaseSourceAdapter.js.map +1 -1
  536. package/dist/src/sync/BackgroundSyncService.d.ts +90 -0
  537. package/dist/src/sync/BackgroundSyncService.d.ts.map +1 -0
  538. package/dist/src/sync/BackgroundSyncService.js +214 -0
  539. package/dist/src/sync/BackgroundSyncService.js.map +1 -0
  540. package/dist/src/sync/SyncEngine.d.ts +76 -0
  541. package/dist/src/sync/SyncEngine.d.ts.map +1 -0
  542. package/dist/src/sync/SyncEngine.js +292 -0
  543. package/dist/src/sync/SyncEngine.js.map +1 -0
  544. package/dist/src/sync/index.d.ts +11 -0
  545. package/dist/src/sync/index.d.ts.map +1 -0
  546. package/dist/src/sync/index.js +14 -0
  547. package/dist/src/sync/index.js.map +1 -0
  548. package/dist/src/telemetry/index.d.ts +1 -0
  549. package/dist/src/telemetry/index.d.ts.map +1 -1
  550. package/dist/src/telemetry/index.js +2 -0
  551. package/dist/src/telemetry/index.js.map +1 -1
  552. package/dist/src/telemetry/posthog.d.ts +147 -0
  553. package/dist/src/telemetry/posthog.d.ts.map +1 -0
  554. package/dist/src/telemetry/posthog.js +213 -0
  555. package/dist/src/telemetry/posthog.js.map +1 -0
  556. package/dist/src/testing/MultiLLMProvider.d.ts +374 -0
  557. package/dist/src/testing/MultiLLMProvider.d.ts.map +1 -0
  558. package/dist/src/testing/MultiLLMProvider.js +720 -0
  559. package/dist/src/testing/MultiLLMProvider.js.map +1 -0
  560. package/dist/src/testing/index.d.ts +8 -0
  561. package/dist/src/testing/index.d.ts.map +1 -0
  562. package/dist/src/testing/index.js +9 -0
  563. package/dist/src/testing/index.js.map +1 -0
  564. package/dist/src/types/skill.d.ts +3 -0
  565. package/dist/src/types/skill.d.ts.map +1 -1
  566. package/dist/src/types.d.ts +5 -1
  567. package/dist/src/types.d.ts.map +1 -1
  568. package/dist/src/types.js +2 -2
  569. package/dist/src/types.js.map +1 -1
  570. package/dist/tests/RateLimiter.test.js +4 -4
  571. package/dist/tests/RateLimiter.test.js.map +1 -1
  572. package/dist/tests/SecurityScanner.test.js +337 -1
  573. package/dist/tests/SecurityScanner.test.js.map +1 -1
  574. package/dist/tests/adapters-factory.test.d.ts +13 -0
  575. package/dist/tests/adapters-factory.test.d.ts.map +1 -0
  576. package/dist/tests/adapters-factory.test.js +308 -0
  577. package/dist/tests/adapters-factory.test.js.map +1 -0
  578. package/dist/tests/adapters-java.test.d.ts +13 -0
  579. package/dist/tests/adapters-java.test.d.ts.map +1 -0
  580. package/dist/tests/adapters-java.test.js +925 -0
  581. package/dist/tests/adapters-java.test.js.map +1 -0
  582. package/dist/tests/api/client.validation.test.d.ts +7 -0
  583. package/dist/tests/api/client.validation.test.d.ts.map +1 -0
  584. package/dist/tests/api/client.validation.test.js +183 -0
  585. package/dist/tests/api/client.validation.test.js.map +1 -0
  586. package/dist/tests/billing/BillingService.test.d.ts +7 -0
  587. package/dist/tests/billing/BillingService.test.d.ts.map +1 -0
  588. package/dist/tests/billing/BillingService.test.js +168 -0
  589. package/dist/tests/billing/BillingService.test.js.map +1 -0
  590. package/dist/tests/billing/GDPRCompliance.test.d.ts +7 -0
  591. package/dist/tests/billing/GDPRCompliance.test.d.ts.map +1 -0
  592. package/dist/tests/billing/GDPRCompliance.test.js +195 -0
  593. package/dist/tests/billing/GDPRCompliance.test.js.map +1 -0
  594. package/dist/tests/billing/StripeReconciliation.test.d.ts +7 -0
  595. package/dist/tests/billing/StripeReconciliation.test.d.ts.map +1 -0
  596. package/dist/tests/billing/StripeReconciliation.test.js +266 -0
  597. package/dist/tests/billing/StripeReconciliation.test.js.map +1 -0
  598. package/dist/tests/billing/stripe-validators.test.d.ts +7 -0
  599. package/dist/tests/billing/stripe-validators.test.d.ts.map +1 -0
  600. package/dist/tests/billing/stripe-validators.test.js +107 -0
  601. package/dist/tests/billing/stripe-validators.test.js.map +1 -0
  602. package/dist/tests/e2e/security/security.e2e.test.js +3 -3
  603. package/dist/tests/e2e/security/security.e2e.test.js.map +1 -1
  604. package/dist/tests/embeddings/hnsw-store.test.d.ts +7 -0
  605. package/dist/tests/embeddings/hnsw-store.test.d.ts.map +1 -0
  606. package/dist/tests/embeddings/hnsw-store.test.js +295 -0
  607. package/dist/tests/embeddings/hnsw-store.test.js.map +1 -0
  608. package/dist/tests/integration/neural/e2e-learning.test.d.ts +17 -0
  609. package/dist/tests/integration/neural/e2e-learning.test.d.ts.map +1 -0
  610. package/dist/tests/integration/neural/e2e-learning.test.js +238 -0
  611. package/dist/tests/integration/neural/e2e-learning.test.js.map +1 -0
  612. package/dist/tests/integration/neural/helpers.d.ts +132 -0
  613. package/dist/tests/integration/neural/helpers.d.ts.map +1 -0
  614. package/dist/tests/integration/neural/helpers.js +287 -0
  615. package/dist/tests/integration/neural/helpers.js.map +1 -0
  616. package/dist/tests/integration/neural/personalization.test.d.ts +21 -0
  617. package/dist/tests/integration/neural/personalization.test.d.ts.map +1 -0
  618. package/dist/tests/integration/neural/personalization.test.js +304 -0
  619. package/dist/tests/integration/neural/personalization.test.js.map +1 -0
  620. package/dist/tests/integration/neural/preference-learner.test.d.ts +23 -0
  621. package/dist/tests/integration/neural/preference-learner.test.d.ts.map +1 -0
  622. package/dist/tests/integration/neural/preference-learner.test.js +289 -0
  623. package/dist/tests/integration/neural/preference-learner.test.js.map +1 -0
  624. package/dist/tests/integration/neural/privacy.test.d.ts +19 -0
  625. package/dist/tests/integration/neural/privacy.test.d.ts.map +1 -0
  626. package/dist/tests/integration/neural/privacy.test.js +249 -0
  627. package/dist/tests/integration/neural/privacy.test.js.map +1 -0
  628. package/dist/tests/integration/neural/setup.d.ts +175 -0
  629. package/dist/tests/integration/neural/setup.d.ts.map +1 -0
  630. package/dist/tests/integration/neural/setup.js +487 -0
  631. package/dist/tests/integration/neural/setup.js.map +1 -0
  632. package/dist/tests/integration/neural/signal-collection.test.d.ts +21 -0
  633. package/dist/tests/integration/neural/signal-collection.test.d.ts.map +1 -0
  634. package/dist/tests/integration/neural/signal-collection.test.js +232 -0
  635. package/dist/tests/integration/neural/signal-collection.test.js.map +1 -0
  636. package/dist/tests/language-detector.test.d.ts +13 -0
  637. package/dist/tests/language-detector.test.d.ts.map +1 -0
  638. package/dist/tests/language-detector.test.js +674 -0
  639. package/dist/tests/language-detector.test.js.map +1 -0
  640. package/dist/tests/learning/PatternStore.test.d.ts +8 -0
  641. package/dist/tests/learning/PatternStore.test.d.ts.map +1 -0
  642. package/dist/tests/learning/PatternStore.test.js +589 -0
  643. package/dist/tests/learning/PatternStore.test.js.map +1 -0
  644. package/dist/tests/learning/ReasoningBankIntegration.test.d.ts +8 -0
  645. package/dist/tests/learning/ReasoningBankIntegration.test.d.ts.map +1 -0
  646. package/dist/tests/learning/ReasoningBankIntegration.test.js +269 -0
  647. package/dist/tests/learning/ReasoningBankIntegration.test.js.map +1 -0
  648. package/dist/tests/routing/SONARouter.test.d.ts +8 -0
  649. package/dist/tests/routing/SONARouter.test.d.ts.map +1 -0
  650. package/dist/tests/routing/SONARouter.test.js +400 -0
  651. package/dist/tests/routing/SONARouter.test.js.map +1 -0
  652. package/dist/tests/security/ContinuousSecurity.test.js +10 -12
  653. package/dist/tests/security/ContinuousSecurity.test.js.map +1 -1
  654. package/dist/tests/security/SkillSandbox.test.d.ts +8 -0
  655. package/dist/tests/security/SkillSandbox.test.d.ts.map +1 -0
  656. package/dist/tests/security/SkillSandbox.test.js +321 -0
  657. package/dist/tests/security/SkillSandbox.test.js.map +1 -0
  658. package/dist/tests/sync/SyncConfigRepository.test.d.ts +7 -0
  659. package/dist/tests/sync/SyncConfigRepository.test.d.ts.map +1 -0
  660. package/dist/tests/sync/SyncConfigRepository.test.js +154 -0
  661. package/dist/tests/sync/SyncConfigRepository.test.js.map +1 -0
  662. package/dist/tests/sync/SyncEngine.test.d.ts +7 -0
  663. package/dist/tests/sync/SyncEngine.test.d.ts.map +1 -0
  664. package/dist/tests/sync/SyncEngine.test.js +300 -0
  665. package/dist/tests/sync/SyncEngine.test.js.map +1 -0
  666. package/dist/tests/sync/SyncHistoryRepository.test.d.ts +7 -0
  667. package/dist/tests/sync/SyncHistoryRepository.test.d.ts.map +1 -0
  668. package/dist/tests/sync/SyncHistoryRepository.test.js +220 -0
  669. package/dist/tests/sync/SyncHistoryRepository.test.js.map +1 -0
  670. package/dist/tests/telemetry/posthog.test.d.ts +13 -0
  671. package/dist/tests/telemetry/posthog.test.d.ts.map +1 -0
  672. package/dist/tests/telemetry/posthog.test.js +600 -0
  673. package/dist/tests/telemetry/posthog.test.js.map +1 -0
  674. package/dist/tests/testing/MultiLLMProvider.test.d.ts +14 -0
  675. package/dist/tests/testing/MultiLLMProvider.test.d.ts.map +1 -0
  676. package/dist/tests/testing/MultiLLMProvider.test.js +438 -0
  677. package/dist/tests/testing/MultiLLMProvider.test.js.map +1 -0
  678. package/package.json +20 -5
  679. package/dist/src/security/RateLimiter.d.ts +0 -337
  680. package/dist/src/security/RateLimiter.d.ts.map +0 -1
  681. package/dist/src/security/RateLimiter.js +0 -782
  682. package/dist/src/security/RateLimiter.js.map +0 -1
  683. package/dist/src/security/scanner.d.ts.map +0 -1
  684. package/dist/src/security/scanner.js.map +0 -1
@@ -0,0 +1,287 @@
1
+ /**
2
+ * SMI-1535: Neural Test Infrastructure - Helpers
3
+ *
4
+ * Provides signal generation utilities and test data factories
5
+ * for the Recommendation Learning Loop integration tests.
6
+ *
7
+ * @see packages/core/src/learning/interfaces.ts
8
+ * @see packages/core/src/learning/types.ts
9
+ */
10
+ import { randomUUID } from 'node:crypto';
11
+ import { SignalType, DismissReason, SkillCategory, } from '../../../src/learning/types.js';
12
+ /**
13
+ * Generate a single signal event with sensible defaults
14
+ */
15
+ export function generateSignal(options = {}) {
16
+ const type = options.type ?? SignalType.ACCEPT;
17
+ const skillId = options.skillId ?? `skill-${randomUUID().slice(0, 8)}`;
18
+ const timestamp = options.timestamp ?? Date.now();
19
+ const context = {
20
+ installed_skills: options.installedSkills ?? [],
21
+ original_score: options.originalScore ?? Math.random(),
22
+ category: options.category,
23
+ trust_tier: options.trustTier,
24
+ };
25
+ return {
26
+ id: randomUUID(),
27
+ type,
28
+ skill_id: skillId,
29
+ timestamp,
30
+ context,
31
+ metadata: options.metadata,
32
+ dismiss_reason: options.dismissReason,
33
+ };
34
+ }
35
+ /**
36
+ * Generate multiple signal events in a batch
37
+ */
38
+ export function generateSignalBatch(count, options = {}) {
39
+ const signals = [];
40
+ const baseTimestamp = options.timestamp ?? Date.now();
41
+ for (let i = 0; i < count; i++) {
42
+ signals.push(generateSignal({
43
+ ...options,
44
+ timestamp: baseTimestamp - i * 1000, // 1 second apart
45
+ }));
46
+ }
47
+ return signals;
48
+ }
49
+ /**
50
+ * Generate a sequence of signals simulating realistic user behavior
51
+ * Returns signals in chronological order
52
+ */
53
+ export function generateUserJourney(skillId, outcome, category) {
54
+ const now = Date.now();
55
+ const signals = [];
56
+ // Day 0: Skill recommended and accepted
57
+ signals.push(generateSignal({
58
+ type: SignalType.ACCEPT,
59
+ skillId,
60
+ category,
61
+ trustTier: 'community',
62
+ originalScore: 0.85,
63
+ timestamp: now - 30 * 24 * 60 * 60 * 1000, // 30 days ago
64
+ }));
65
+ switch (outcome) {
66
+ case 'successful':
67
+ // Day 1: First usage
68
+ signals.push(generateSignal({
69
+ type: SignalType.USAGE_DAILY,
70
+ skillId,
71
+ category,
72
+ timestamp: now - 29 * 24 * 60 * 60 * 1000,
73
+ }));
74
+ // Week 1-4: Regular usage
75
+ for (let week = 1; week <= 4; week++) {
76
+ signals.push(generateSignal({
77
+ type: SignalType.USAGE_WEEKLY,
78
+ skillId,
79
+ category,
80
+ timestamp: now - (30 - week * 7) * 24 * 60 * 60 * 1000,
81
+ }));
82
+ }
83
+ break;
84
+ case 'abandoned':
85
+ // No usage signals - skill was installed but never used
86
+ // Day 30: Marked as abandoned
87
+ signals.push(generateSignal({
88
+ type: SignalType.ABANDONED,
89
+ skillId,
90
+ category,
91
+ timestamp: now,
92
+ metadata: { extra: { days_since_install: 30 } },
93
+ }));
94
+ break;
95
+ case 'uninstalled':
96
+ // Day 1: Brief usage
97
+ signals.push(generateSignal({
98
+ type: SignalType.USAGE_DAILY,
99
+ skillId,
100
+ category,
101
+ timestamp: now - 29 * 24 * 60 * 60 * 1000,
102
+ }));
103
+ // Day 15: Uninstalled
104
+ signals.push(generateSignal({
105
+ type: SignalType.UNINSTALL,
106
+ skillId,
107
+ category,
108
+ timestamp: now - 15 * 24 * 60 * 60 * 1000,
109
+ metadata: { extra: { days_since_install: 15 } },
110
+ }));
111
+ break;
112
+ }
113
+ // Sort by timestamp ascending (chronological)
114
+ return signals.sort((a, b) => a.timestamp - b.timestamp);
115
+ }
116
+ /**
117
+ * Generate signals representing a mix of user interactions across categories
118
+ */
119
+ export function generateMixedCategorySignals(signalsPerCategory) {
120
+ const result = new Map();
121
+ const categories = Object.values(SkillCategory);
122
+ for (const category of categories) {
123
+ const signals = [];
124
+ const now = Date.now();
125
+ for (let i = 0; i < signalsPerCategory; i++) {
126
+ // Mix of signal types: 60% accept, 20% dismiss, 20% usage
127
+ const rand = Math.random();
128
+ let type;
129
+ if (rand < 0.6) {
130
+ type = SignalType.ACCEPT;
131
+ }
132
+ else if (rand < 0.8) {
133
+ type = SignalType.DISMISS;
134
+ }
135
+ else {
136
+ type = Math.random() < 0.5 ? SignalType.USAGE_DAILY : SignalType.USAGE_WEEKLY;
137
+ }
138
+ signals.push(generateSignal({
139
+ type,
140
+ category,
141
+ skillId: `${category}-skill-${i}`,
142
+ timestamp: now - i * 60 * 60 * 1000, // 1 hour apart
143
+ }));
144
+ }
145
+ result.set(category, signals);
146
+ }
147
+ return result;
148
+ }
149
+ /**
150
+ * Generate dismiss signals with various reasons
151
+ */
152
+ export function generateDismissSignals(count, category) {
153
+ const reasons = Object.values(DismissReason);
154
+ const signals = [];
155
+ const now = Date.now();
156
+ for (let i = 0; i < count; i++) {
157
+ const reason = reasons[i % reasons.length];
158
+ signals.push(generateSignal({
159
+ type: SignalType.DISMISS,
160
+ category,
161
+ skillId: `dismissed-skill-${i}`,
162
+ dismissReason: reason,
163
+ timestamp: now - i * 1000,
164
+ }));
165
+ }
166
+ return signals;
167
+ }
168
+ /**
169
+ * Create a timestamp offset by a number of days from now.
170
+ * Returns a Unix timestamp (milliseconds) representing a point in the past.
171
+ *
172
+ * @param days - Number of days in the past (must be non-negative)
173
+ * @returns Unix timestamp in milliseconds
174
+ * @throws {RangeError} If days is negative
175
+ * @example
176
+ * const thirtyDaysAgo = daysAgo(30) // timestamp 30 days before now
177
+ */
178
+ export function daysAgo(days) {
179
+ if (days < 0) {
180
+ throw new RangeError(`daysAgo() requires a non-negative value, got ${days}`);
181
+ }
182
+ return Date.now() - days * 24 * 60 * 60 * 1000;
183
+ }
184
+ /**
185
+ * Create a timestamp offset by a number of hours from now.
186
+ * Returns a Unix timestamp (milliseconds) representing a point in the past.
187
+ *
188
+ * @param hours - Number of hours in the past (must be non-negative)
189
+ * @returns Unix timestamp in milliseconds
190
+ * @throws {RangeError} If hours is negative
191
+ * @example
192
+ * const twoHoursAgo = hoursAgo(2) // timestamp 2 hours before now
193
+ */
194
+ export function hoursAgo(hours) {
195
+ if (hours < 0) {
196
+ throw new RangeError(`hoursAgo() requires a non-negative value, got ${hours}`);
197
+ }
198
+ return Date.now() - hours * 60 * 60 * 1000;
199
+ }
200
+ /**
201
+ * Create a timestamp offset by a number of minutes from now.
202
+ * Returns a Unix timestamp (milliseconds) representing a point in the past.
203
+ *
204
+ * @param minutes - Number of minutes in the past (must be non-negative)
205
+ * @returns Unix timestamp in milliseconds
206
+ * @throws {RangeError} If minutes is negative
207
+ * @example
208
+ * const fiveMinutesAgo = minutesAgo(5) // timestamp 5 minutes before now
209
+ */
210
+ export function minutesAgo(minutes) {
211
+ if (minutes < 0) {
212
+ throw new RangeError(`minutesAgo() requires a non-negative value, got ${minutes}`);
213
+ }
214
+ return Date.now() - minutes * 60 * 1000;
215
+ }
216
+ /**
217
+ * Generate a recommendation context for testing
218
+ */
219
+ export function generateContext(options = {}) {
220
+ return {
221
+ installed_skills: options.installedSkills ?? ['existing-skill-1', 'existing-skill-2'],
222
+ original_score: options.originalScore ?? 0.75,
223
+ category: options.category,
224
+ trust_tier: options.trustTier ?? 'community',
225
+ project_context: options.projectContext,
226
+ };
227
+ }
228
+ /**
229
+ * Generate metadata for signal events
230
+ */
231
+ export function generateMetadata(options = {}) {
232
+ return {
233
+ time_to_action: options.timeToAction ?? Math.floor(Math.random() * 10000) + 1000,
234
+ suggestion_count: options.suggestionCount ?? Math.floor(Math.random() * 5) + 1,
235
+ extra: options.extra,
236
+ };
237
+ }
238
+ /**
239
+ * Generate test skill data for personalization testing
240
+ */
241
+ export function generateSkillData(id, options = {}) {
242
+ return {
243
+ id,
244
+ category: options.category ?? SkillCategory.TESTING,
245
+ trustTier: options.trustTier ?? 'community',
246
+ keywords: options.keywords ?? ['test', 'helper'],
247
+ triggerPhrases: options.triggerPhrases ?? ['run tests', 'test this'],
248
+ };
249
+ }
250
+ /**
251
+ * Generate a set of skills with varied categories for recommendation testing
252
+ */
253
+ export function generateSkillSet(count) {
254
+ const categories = Object.values(SkillCategory);
255
+ const trustTiers = ['verified', 'community', 'experimental', 'unknown'];
256
+ const skills = [];
257
+ for (let i = 0; i < count; i++) {
258
+ skills.push({
259
+ skill_id: `skill-${i}`,
260
+ base_score: 0.5 + Math.random() * 0.5, // 0.5 to 1.0
261
+ skill_data: {
262
+ category: categories[i % categories.length],
263
+ trustTier: trustTiers[i % trustTiers.length],
264
+ keywords: [`keyword-${i}`, 'common'],
265
+ },
266
+ });
267
+ }
268
+ return skills;
269
+ }
270
+ /**
271
+ * Assert that signals are in chronological order
272
+ */
273
+ export function assertChronological(signals) {
274
+ for (let i = 1; i < signals.length; i++) {
275
+ if (signals[i].timestamp < signals[i - 1].timestamp) {
276
+ throw new Error(`Signals not in chronological order at index ${i}: ` +
277
+ `${signals[i - 1].timestamp} > ${signals[i].timestamp}`);
278
+ }
279
+ }
280
+ }
281
+ /**
282
+ * Wait for a specified number of milliseconds
283
+ */
284
+ export function delay(ms) {
285
+ return new Promise((resolve) => setTimeout(resolve, ms));
286
+ }
287
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../tests/integration/neural/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * SMI-1535: Personalization Engine Integration Tests
3
+ *
4
+ * Tests the IPersonalizationEngine interface for applying learned
5
+ * preferences to recommendation results in the Recommendation Learning Loop.
6
+ *
7
+ * Test Cases:
8
+ * 1. shouldPersonalize() returns false with <5 signals
9
+ * 2. shouldPersonalize() returns true with 5+ signals
10
+ * 3. personalizeRecommendations() re-ranks by learned scores
11
+ * 4. Category weight boosts preferred categories
12
+ * 5. Dismiss patterns reduce scores for related skills
13
+ * 6. Uninstall patterns have strongest negative effect
14
+ * 7. Score breakdown shows contributing factors
15
+ * 8. Personalization disabled by user preference
16
+ *
17
+ * @see packages/core/src/learning/interfaces.ts
18
+ * @see docs/execution/phase5-testing-execution.md
19
+ */
20
+ export {};
21
+ //# sourceMappingURL=personalization.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personalization.test.d.ts","sourceRoot":"","sources":["../../../../tests/integration/neural/personalization.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG"}
@@ -0,0 +1,304 @@
1
+ /**
2
+ * SMI-1535: Personalization Engine Integration Tests
3
+ *
4
+ * Tests the IPersonalizationEngine interface for applying learned
5
+ * preferences to recommendation results in the Recommendation Learning Loop.
6
+ *
7
+ * Test Cases:
8
+ * 1. shouldPersonalize() returns false with <5 signals
9
+ * 2. shouldPersonalize() returns true with 5+ signals
10
+ * 3. personalizeRecommendations() re-ranks by learned scores
11
+ * 4. Category weight boosts preferred categories
12
+ * 5. Dismiss patterns reduce scores for related skills
13
+ * 6. Uninstall patterns have strongest negative effect
14
+ * 7. Score breakdown shows contributing factors
15
+ * 8. Personalization disabled by user preference
16
+ *
17
+ * @see packages/core/src/learning/interfaces.ts
18
+ * @see docs/execution/phase5-testing-execution.md
19
+ */
20
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
21
+ import { createNeuralTestContext, cleanupNeuralTestContext, createDefaultProfile, } from './setup.js';
22
+ import { generateContext } from './helpers.js';
23
+ import { SkillCategory } from '../../../src/learning/types.js';
24
+ describe('PersonalizationEngine Integration', () => {
25
+ let ctx;
26
+ beforeEach(() => {
27
+ ctx = createNeuralTestContext();
28
+ });
29
+ afterEach(async () => {
30
+ await cleanupNeuralTestContext(ctx);
31
+ });
32
+ describe('Personalization Threshold', () => {
33
+ it('should return false for shouldPersonalize with <5 signals', async () => {
34
+ // Add only 4 signals
35
+ for (let i = 0; i < 4; i++) {
36
+ await ctx.signalCollector.recordAccept(`skill-${i}`, generateContext());
37
+ }
38
+ const shouldPersonalize = await ctx.personalizationEngine.shouldPersonalize();
39
+ expect(shouldPersonalize).toBe(false);
40
+ });
41
+ it('should return true for shouldPersonalize with 5+ signals', async () => {
42
+ // Add exactly 5 signals (threshold)
43
+ for (let i = 0; i < 5; i++) {
44
+ await ctx.signalCollector.recordAccept(`skill-${i}`, generateContext());
45
+ }
46
+ const shouldPersonalize = await ctx.personalizationEngine.shouldPersonalize();
47
+ expect(shouldPersonalize).toBe(true);
48
+ });
49
+ it('should return true with many signals', async () => {
50
+ // Add 20 signals
51
+ for (let i = 0; i < 20; i++) {
52
+ await ctx.signalCollector.recordAccept(`skill-${i}`, generateContext());
53
+ }
54
+ const shouldPersonalize = await ctx.personalizationEngine.shouldPersonalize();
55
+ expect(shouldPersonalize).toBe(true);
56
+ });
57
+ });
58
+ describe('Recommendation Re-ranking', () => {
59
+ it('should re-rank recommendations by learned scores', async () => {
60
+ // Build up preference for testing category
61
+ for (let i = 0; i < 10; i++) {
62
+ await ctx.signalCollector.recordAccept(`testing-skill-${i}`, generateContext({ category: SkillCategory.TESTING }));
63
+ }
64
+ // Train the profile
65
+ let profile = createDefaultProfile();
66
+ const signals = await ctx.signalCollector.getSignals({});
67
+ profile = await ctx.preferenceLearner.batchUpdateProfile(profile, signals);
68
+ await ctx.profileRepository.saveProfile(profile);
69
+ // Create recommendations with testing skill having lower base score
70
+ const recommendations = [
71
+ {
72
+ skill_id: 'devops-skill',
73
+ base_score: 0.9,
74
+ skill_data: { category: SkillCategory.DEVOPS, trustTier: 'community' },
75
+ },
76
+ {
77
+ skill_id: 'testing-skill',
78
+ base_score: 0.7, // Lower base score
79
+ skill_data: { category: SkillCategory.TESTING, trustTier: 'community' },
80
+ },
81
+ {
82
+ skill_id: 'frontend-skill',
83
+ base_score: 0.8,
84
+ skill_data: { category: SkillCategory.FRONTEND, trustTier: 'community' },
85
+ },
86
+ ];
87
+ const personalized = await ctx.personalizationEngine.personalizeRecommendations(recommendations);
88
+ // Results should be sorted by personalized_score descending
89
+ for (let i = 1; i < personalized.length; i++) {
90
+ expect(personalized[i - 1].personalized_score).toBeGreaterThanOrEqual(personalized[i].personalized_score);
91
+ }
92
+ });
93
+ });
94
+ describe('Category Weight Boosting', () => {
95
+ it('should boost scores for preferred categories', async () => {
96
+ // Build strong preference for TESTING
97
+ for (let i = 0; i < 15; i++) {
98
+ await ctx.signalCollector.recordAccept(`testing-skill-${i}`, generateContext({ category: SkillCategory.TESTING }));
99
+ await ctx.signalCollector.recordUsage(`testing-skill-${i}`, 'daily');
100
+ }
101
+ // Train profile
102
+ let profile = createDefaultProfile();
103
+ const signals = await ctx.signalCollector.getSignals({});
104
+ profile = await ctx.preferenceLearner.batchUpdateProfile(profile, signals);
105
+ await ctx.profileRepository.saveProfile(profile);
106
+ // Test single skill personalization
107
+ const recommendations = [
108
+ {
109
+ skill_id: 'preferred-skill',
110
+ base_score: 0.5,
111
+ skill_data: { category: SkillCategory.TESTING, trustTier: 'community' },
112
+ },
113
+ ];
114
+ const [result] = await ctx.personalizationEngine.personalizeRecommendations(recommendations);
115
+ // Category boost should be positive
116
+ expect(result.score_breakdown.category_boost).toBeGreaterThan(0);
117
+ expect(result.personalization_applied).toBe(true);
118
+ });
119
+ });
120
+ describe('Dismiss Pattern Effects', () => {
121
+ it('should reduce scores for skills matching dismiss patterns', async () => {
122
+ // Dismiss multiple skills to establish negative patterns
123
+ const dismissedSkills = ['skill-a', 'skill-b', 'skill-c', 'skill-d', 'skill-e'];
124
+ for (const skillId of dismissedSkills) {
125
+ await ctx.signalCollector.recordDismiss(skillId, generateContext());
126
+ }
127
+ // Train profile with dismissals
128
+ let profile = createDefaultProfile();
129
+ const signals = await ctx.signalCollector.getSignals({});
130
+ profile = await ctx.preferenceLearner.batchUpdateProfile(profile, signals);
131
+ await ctx.profileRepository.saveProfile(profile);
132
+ // Try to recommend a dismissed skill
133
+ const recommendations = [
134
+ {
135
+ skill_id: 'skill-a', // Previously dismissed
136
+ base_score: 0.9,
137
+ skill_data: { category: SkillCategory.GIT, trustTier: 'verified' },
138
+ },
139
+ {
140
+ skill_id: 'new-skill', // Never seen before
141
+ base_score: 0.7,
142
+ skill_data: { category: SkillCategory.GIT, trustTier: 'verified' },
143
+ },
144
+ ];
145
+ const personalized = await ctx.personalizationEngine.personalizeRecommendations(recommendations);
146
+ // Find results
147
+ const dismissedResult = personalized.find((r) => r.skill_id === 'skill-a');
148
+ const newResult = personalized.find((r) => r.skill_id === 'new-skill');
149
+ // Dismissed skill should have anti-penalty
150
+ expect(dismissedResult.score_breakdown.anti_penalty).toBeLessThan(0);
151
+ // New skill should have no anti-penalty
152
+ expect(newResult.score_breakdown.anti_penalty).toBe(0);
153
+ });
154
+ });
155
+ describe('Uninstall Impact', () => {
156
+ it('should apply strongest negative effect for uninstalled skills', async () => {
157
+ // Uninstall some skills (strongest negative signal)
158
+ const uninstalledSkills = ['uninstalled-1', 'uninstalled-2'];
159
+ for (const skillId of uninstalledSkills) {
160
+ await ctx.signalCollector.recordAccept(skillId, generateContext());
161
+ await ctx.signalCollector.recordUninstall(skillId, 7);
162
+ }
163
+ // Also dismiss some (weaker negative)
164
+ await ctx.signalCollector.recordDismiss('dismissed-1', generateContext());
165
+ // Train profile
166
+ let profile = createDefaultProfile();
167
+ const signals = await ctx.signalCollector.getSignals({});
168
+ profile = await ctx.preferenceLearner.batchUpdateProfile(profile, signals);
169
+ await ctx.profileRepository.saveProfile(profile);
170
+ // Both uninstalled and dismissed should be in negative patterns
171
+ expect(profile.negative_patterns.skill_ids).toContain('uninstalled-1');
172
+ expect(profile.negative_patterns.skill_ids).toContain('dismissed-1');
173
+ // Try to recommend
174
+ const recommendations = [
175
+ {
176
+ skill_id: 'uninstalled-1',
177
+ base_score: 0.9,
178
+ skill_data: { category: SkillCategory.BACKEND },
179
+ },
180
+ {
181
+ skill_id: 'dismissed-1',
182
+ base_score: 0.9,
183
+ skill_data: { category: SkillCategory.BACKEND },
184
+ },
185
+ ];
186
+ const personalized = await ctx.personalizationEngine.personalizeRecommendations(recommendations);
187
+ // Both should have anti-penalty
188
+ for (const result of personalized) {
189
+ expect(result.score_breakdown.anti_penalty).toBeLessThan(0);
190
+ }
191
+ });
192
+ });
193
+ describe('Score Breakdown', () => {
194
+ it('should show contributing factors in score breakdown', async () => {
195
+ // Build mixed preferences
196
+ for (let i = 0; i < 8; i++) {
197
+ await ctx.signalCollector.recordAccept(`skill-${i}`, generateContext({
198
+ category: SkillCategory.TESTING,
199
+ trustTier: 'verified',
200
+ }));
201
+ }
202
+ let profile = createDefaultProfile();
203
+ const signals = await ctx.signalCollector.getSignals({});
204
+ profile = await ctx.preferenceLearner.batchUpdateProfile(profile, signals);
205
+ await ctx.profileRepository.saveProfile(profile);
206
+ const recommendations = [
207
+ {
208
+ skill_id: 'new-testing-skill',
209
+ base_score: 0.75,
210
+ skill_data: {
211
+ category: SkillCategory.TESTING,
212
+ trustTier: 'verified',
213
+ keywords: ['unit', 'integration'],
214
+ },
215
+ },
216
+ ];
217
+ const [result] = await ctx.personalizationEngine.personalizeRecommendations(recommendations);
218
+ // Score breakdown should contain all components
219
+ expect(result.score_breakdown).toHaveProperty('category_boost');
220
+ expect(result.score_breakdown).toHaveProperty('trust_boost');
221
+ expect(result.score_breakdown).toHaveProperty('keyword_boost');
222
+ expect(result.score_breakdown).toHaveProperty('anti_penalty');
223
+ // For this profile, we should see positive category and trust boosts
224
+ expect(result.score_breakdown.category_boost).toBeGreaterThan(0);
225
+ expect(result.score_breakdown.trust_boost).toBeGreaterThan(0);
226
+ expect(result.score_breakdown.anti_penalty).toBe(0); // Not a dismissed skill
227
+ });
228
+ });
229
+ describe('Personalization Control', () => {
230
+ it('should not apply personalization when below threshold', async () => {
231
+ // Only 3 signals (below threshold of 5)
232
+ for (let i = 0; i < 3; i++) {
233
+ await ctx.signalCollector.recordAccept(`skill-${i}`, generateContext({ category: SkillCategory.GIT }));
234
+ }
235
+ // Even with profile data, personalization shouldn't apply
236
+ let profile = createDefaultProfile();
237
+ const signals = await ctx.signalCollector.getSignals({});
238
+ profile = await ctx.preferenceLearner.batchUpdateProfile(profile, signals);
239
+ await ctx.profileRepository.saveProfile(profile);
240
+ const recommendations = [
241
+ {
242
+ skill_id: 'some-skill',
243
+ base_score: 0.8,
244
+ skill_data: { category: SkillCategory.GIT },
245
+ },
246
+ ];
247
+ const [result] = await ctx.personalizationEngine.personalizeRecommendations(recommendations);
248
+ // Personalization should not be applied
249
+ expect(result.personalization_applied).toBe(false);
250
+ // Score should equal base score when not personalized
251
+ expect(result.personalized_score).toBe(0.8);
252
+ });
253
+ it('should reset to default when requested', async () => {
254
+ // Build some preferences
255
+ for (let i = 0; i < 10; i++) {
256
+ await ctx.signalCollector.recordAccept(`skill-${i}`, generateContext());
257
+ }
258
+ let profile = createDefaultProfile();
259
+ const signals = await ctx.signalCollector.getSignals({});
260
+ profile = await ctx.preferenceLearner.batchUpdateProfile(profile, signals);
261
+ await ctx.profileRepository.saveProfile(profile, 'user-1');
262
+ // Verify profile exists
263
+ expect(await ctx.profileRepository.exists('user-1')).toBe(true);
264
+ // Reset
265
+ await ctx.personalizationEngine.resetToDefault('user-1');
266
+ // Profile should be deleted
267
+ expect(await ctx.profileRepository.exists('user-1')).toBe(false);
268
+ });
269
+ });
270
+ describe('Edge Cases', () => {
271
+ it('should handle empty recommendations list', async () => {
272
+ const personalized = await ctx.personalizationEngine.personalizeRecommendations([]);
273
+ expect(personalized).toEqual([]);
274
+ });
275
+ it('should handle skills without category', async () => {
276
+ // Add signals to meet threshold
277
+ for (let i = 0; i < 5; i++) {
278
+ await ctx.signalCollector.recordAccept(`skill-${i}`, generateContext());
279
+ }
280
+ const recommendations = [
281
+ {
282
+ skill_id: 'no-category-skill',
283
+ base_score: 0.7,
284
+ skill_data: { trustTier: 'community' }, // No category
285
+ },
286
+ ];
287
+ const [result] = await ctx.personalizationEngine.personalizeRecommendations(recommendations);
288
+ expect(result.skill_id).toBe('no-category-skill');
289
+ expect(result.score_breakdown.category_boost).toBe(0);
290
+ });
291
+ it('should handle user with no profile', async () => {
292
+ // Add signals to meet threshold
293
+ for (let i = 0; i < 5; i++) {
294
+ await ctx.signalCollector.recordAccept(`skill-${i}`, generateContext());
295
+ }
296
+ // No profile saved for 'new-user'
297
+ const profile = await ctx.personalizationEngine.getUserProfile('new-user');
298
+ // Should return default profile
299
+ expect(profile.signal_count).toBe(0);
300
+ expect(profile.version).toBe(1);
301
+ });
302
+ });
303
+ });
304
+ //# sourceMappingURL=personalization.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personalization.test.js","sourceRoot":"","sources":["../../../../tests/integration/neural/personalization.test.ts"],"names":[],"mappings":"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"}