@skillsmith/core 0.4.1 → 0.4.2

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 (370) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/src/analysis/adapters/java-parsers.d.ts +64 -0
  3. package/dist/src/analysis/adapters/java-parsers.d.ts.map +1 -0
  4. package/dist/src/analysis/adapters/java-parsers.js +114 -0
  5. package/dist/src/analysis/adapters/java-parsers.js.map +1 -0
  6. package/dist/src/analysis/adapters/java.d.ts +1 -51
  7. package/dist/src/analysis/adapters/java.d.ts.map +1 -1
  8. package/dist/src/analysis/adapters/java.js +94 -205
  9. package/dist/src/analysis/adapters/java.js.map +1 -1
  10. package/dist/src/analysis/adapters/python-frameworks.d.ts +21 -0
  11. package/dist/src/analysis/adapters/python-frameworks.d.ts.map +1 -0
  12. package/dist/src/analysis/adapters/python-frameworks.js +86 -0
  13. package/dist/src/analysis/adapters/python-frameworks.js.map +1 -0
  14. package/dist/src/analysis/adapters/python.d.ts +0 -50
  15. package/dist/src/analysis/adapters/python.d.ts.map +1 -1
  16. package/dist/src/analysis/adapters/python.js +5 -120
  17. package/dist/src/analysis/adapters/python.js.map +1 -1
  18. package/dist/src/analysis/adapters/rust-parsers.d.ts +33 -0
  19. package/dist/src/analysis/adapters/rust-parsers.d.ts.map +1 -0
  20. package/dist/src/analysis/adapters/rust-parsers.js +94 -0
  21. package/dist/src/analysis/adapters/rust-parsers.js.map +1 -0
  22. package/dist/src/analysis/adapters/rust.d.ts +1 -43
  23. package/dist/src/analysis/adapters/rust.d.ts.map +1 -1
  24. package/dist/src/analysis/adapters/rust.js +74 -173
  25. package/dist/src/analysis/adapters/rust.js.map +1 -1
  26. package/dist/src/analysis/worker-pool.d.ts +25 -52
  27. package/dist/src/analysis/worker-pool.d.ts.map +1 -1
  28. package/dist/src/analysis/worker-pool.js +29 -181
  29. package/dist/src/analysis/worker-pool.js.map +1 -1
  30. package/dist/src/analysis/worker-types.d.ts +64 -0
  31. package/dist/src/analysis/worker-types.d.ts.map +1 -0
  32. package/dist/src/analysis/worker-types.js +11 -0
  33. package/dist/src/analysis/worker-types.js.map +1 -0
  34. package/dist/src/analysis/worker-utils.d.ts +49 -0
  35. package/dist/src/analysis/worker-utils.d.ts.map +1 -0
  36. package/dist/src/analysis/worker-utils.js +206 -0
  37. package/dist/src/analysis/worker-utils.js.map +1 -0
  38. package/dist/src/analytics/AnalyticsRepository.d.ts +1 -5
  39. package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
  40. package/dist/src/analytics/AnalyticsRepository.helpers.d.ts +28 -0
  41. package/dist/src/analytics/AnalyticsRepository.helpers.d.ts.map +1 -0
  42. package/dist/src/analytics/AnalyticsRepository.helpers.js +90 -0
  43. package/dist/src/analytics/AnalyticsRepository.helpers.js.map +1 -0
  44. package/dist/src/analytics/AnalyticsRepository.js +16 -129
  45. package/dist/src/analytics/AnalyticsRepository.js.map +1 -1
  46. package/dist/src/analytics/AnalyticsRepository.types.d.ts +82 -0
  47. package/dist/src/analytics/AnalyticsRepository.types.d.ts.map +1 -0
  48. package/dist/src/analytics/AnalyticsRepository.types.js +8 -0
  49. package/dist/src/analytics/AnalyticsRepository.types.js.map +1 -0
  50. package/dist/src/api/client.d.ts +5 -121
  51. package/dist/src/api/client.d.ts.map +1 -1
  52. package/dist/src/api/client.js +17 -131
  53. package/dist/src/api/client.js.map +1 -1
  54. package/dist/src/api/schemas.d.ts +122 -0
  55. package/dist/src/api/schemas.d.ts.map +1 -0
  56. package/dist/src/api/schemas.js +71 -0
  57. package/dist/src/api/schemas.js.map +1 -0
  58. package/dist/src/api/utils.d.ts +35 -0
  59. package/dist/src/api/utils.d.ts.map +1 -0
  60. package/dist/src/api/utils.js +86 -0
  61. package/dist/src/api/utils.js.map +1 -0
  62. package/dist/src/billing/GDPRComplianceService.d.ts +2 -97
  63. package/dist/src/billing/GDPRComplianceService.d.ts.map +1 -1
  64. package/dist/src/billing/GDPRComplianceService.js.map +1 -1
  65. package/dist/src/billing/StripeClient.d.ts +3 -62
  66. package/dist/src/billing/StripeClient.d.ts.map +1 -1
  67. package/dist/src/billing/StripeClient.js +10 -68
  68. package/dist/src/billing/StripeClient.js.map +1 -1
  69. package/dist/src/billing/StripeReconciliationJob.d.ts +2 -47
  70. package/dist/src/billing/StripeReconciliationJob.d.ts.map +1 -1
  71. package/dist/src/billing/StripeReconciliationJob.js +1 -41
  72. package/dist/src/billing/StripeReconciliationJob.js.map +1 -1
  73. package/dist/src/billing/StripeWebhookHandler.d.ts +3 -59
  74. package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -1
  75. package/dist/src/billing/StripeWebhookHandler.js +14 -304
  76. package/dist/src/billing/StripeWebhookHandler.js.map +1 -1
  77. package/dist/src/billing/gdpr-types.d.ts +103 -0
  78. package/dist/src/billing/gdpr-types.d.ts.map +1 -0
  79. package/dist/src/billing/gdpr-types.js +7 -0
  80. package/dist/src/billing/gdpr-types.js.map +1 -0
  81. package/dist/src/billing/reconciliation-helpers.d.ts +16 -0
  82. package/dist/src/billing/reconciliation-helpers.d.ts.map +1 -0
  83. package/dist/src/billing/reconciliation-helpers.js +53 -0
  84. package/dist/src/billing/reconciliation-helpers.js.map +1 -0
  85. package/dist/src/billing/reconciliation-types.d.ts +71 -0
  86. package/dist/src/billing/reconciliation-types.d.ts.map +1 -0
  87. package/dist/src/billing/reconciliation-types.js +7 -0
  88. package/dist/src/billing/reconciliation-types.js.map +1 -0
  89. package/dist/src/billing/stripe-client-types.d.ts +45 -0
  90. package/dist/src/billing/stripe-client-types.d.ts.map +1 -0
  91. package/dist/src/billing/stripe-client-types.js +7 -0
  92. package/dist/src/billing/stripe-client-types.js.map +1 -0
  93. package/dist/src/billing/stripe-helpers.d.ts +17 -0
  94. package/dist/src/billing/stripe-helpers.d.ts.map +1 -0
  95. package/dist/src/billing/stripe-helpers.js +50 -0
  96. package/dist/src/billing/stripe-helpers.js.map +1 -0
  97. package/dist/src/billing/webhook-handlers.d.ts +56 -0
  98. package/dist/src/billing/webhook-handlers.d.ts.map +1 -0
  99. package/dist/src/billing/webhook-handlers.js +303 -0
  100. package/dist/src/billing/webhook-handlers.js.map +1 -0
  101. package/dist/src/billing/webhook-types.d.ts +42 -0
  102. package/dist/src/billing/webhook-types.d.ts.map +1 -0
  103. package/dist/src/billing/webhook-types.js +7 -0
  104. package/dist/src/billing/webhook-types.js.map +1 -0
  105. package/dist/src/config/index.d.ts +118 -0
  106. package/dist/src/config/index.d.ts.map +1 -0
  107. package/dist/src/config/index.js +172 -0
  108. package/dist/src/config/index.js.map +1 -0
  109. package/dist/src/db/migration-types.d.ts +101 -0
  110. package/dist/src/db/migration-types.d.ts.map +1 -0
  111. package/dist/src/db/migration-types.js +6 -0
  112. package/dist/src/db/migration-types.js.map +1 -0
  113. package/dist/src/db/migration.d.ts +7 -104
  114. package/dist/src/db/migration.d.ts.map +1 -1
  115. package/dist/src/db/migration.js +15 -65
  116. package/dist/src/db/migration.js.map +1 -1
  117. package/dist/src/embeddings/embedding-types.d.ts +44 -0
  118. package/dist/src/embeddings/embedding-types.d.ts.map +1 -0
  119. package/dist/src/embeddings/embedding-types.js +6 -0
  120. package/dist/src/embeddings/embedding-types.js.map +1 -0
  121. package/dist/src/embeddings/embedding-utils.d.ts +42 -0
  122. package/dist/src/embeddings/embedding-utils.d.ts.map +1 -0
  123. package/dist/src/embeddings/embedding-utils.js +121 -0
  124. package/dist/src/embeddings/embedding-utils.js.map +1 -0
  125. package/dist/src/embeddings/index.d.ts +36 -112
  126. package/dist/src/embeddings/index.d.ts.map +1 -1
  127. package/dist/src/embeddings/index.js +37 -210
  128. package/dist/src/embeddings/index.js.map +1 -1
  129. package/dist/src/exports/repositories.d.ts +18 -0
  130. package/dist/src/exports/repositories.d.ts.map +1 -0
  131. package/dist/src/exports/repositories.js +30 -0
  132. package/dist/src/exports/repositories.js.map +1 -0
  133. package/dist/src/exports/services.d.ts +30 -0
  134. package/dist/src/exports/services.d.ts.map +1 -0
  135. package/dist/src/exports/services.js +70 -0
  136. package/dist/src/exports/services.js.map +1 -0
  137. package/dist/src/exports/types.d.ts +21 -0
  138. package/dist/src/exports/types.d.ts.map +1 -0
  139. package/dist/src/exports/types.js +12 -0
  140. package/dist/src/exports/types.js.map +1 -0
  141. package/dist/src/index.d.ts +10 -54
  142. package/dist/src/index.d.ts.map +1 -1
  143. package/dist/src/index.js +24 -59
  144. package/dist/src/index.js.map +1 -1
  145. package/dist/src/pipeline/DailyIndexPipeline.d.ts +4 -176
  146. package/dist/src/pipeline/DailyIndexPipeline.d.ts.map +1 -1
  147. package/dist/src/pipeline/DailyIndexPipeline.js +9 -83
  148. package/dist/src/pipeline/DailyIndexPipeline.js.map +1 -1
  149. package/dist/src/pipeline/pipeline-types.d.ts +132 -0
  150. package/dist/src/pipeline/pipeline-types.d.ts.map +1 -0
  151. package/dist/src/pipeline/pipeline-types.js +6 -0
  152. package/dist/src/pipeline/pipeline-types.js.map +1 -0
  153. package/dist/src/routing/expert-types.d.ts +109 -0
  154. package/dist/src/routing/expert-types.d.ts.map +1 -0
  155. package/dist/src/routing/expert-types.js +162 -0
  156. package/dist/src/routing/expert-types.js.map +1 -0
  157. package/dist/src/routing/request-types.d.ts +113 -0
  158. package/dist/src/routing/request-types.d.ts.map +1 -0
  159. package/dist/src/routing/request-types.js +9 -0
  160. package/dist/src/routing/request-types.js.map +1 -0
  161. package/dist/src/routing/types.d.ts +5 -207
  162. package/dist/src/routing/types.d.ts.map +1 -1
  163. package/dist/src/routing/types.js +3 -153
  164. package/dist/src/routing/types.js.map +1 -1
  165. package/dist/src/scripts/github-import/github-auth.d.ts +17 -0
  166. package/dist/src/scripts/github-import/github-auth.d.ts.map +1 -0
  167. package/dist/src/scripts/github-import/github-auth.js +201 -0
  168. package/dist/src/scripts/github-import/github-auth.js.map +1 -0
  169. package/dist/src/scripts/github-import/github-client.d.ts +5 -5
  170. package/dist/src/scripts/github-import/github-client.d.ts.map +1 -1
  171. package/dist/src/scripts/github-import/github-client.js +5 -203
  172. package/dist/src/scripts/github-import/github-client.js.map +1 -1
  173. package/dist/src/scripts/merge-skills.d.ts +5 -27
  174. package/dist/src/scripts/merge-skills.d.ts.map +1 -1
  175. package/dist/src/scripts/merge-skills.js +4 -144
  176. package/dist/src/scripts/merge-skills.js.map +1 -1
  177. package/dist/src/scripts/merge-types.d.ts +72 -0
  178. package/dist/src/scripts/merge-types.d.ts.map +1 -0
  179. package/dist/src/scripts/merge-types.js +7 -0
  180. package/dist/src/scripts/merge-types.js.map +1 -0
  181. package/dist/src/scripts/merge-utils.d.ts +23 -0
  182. package/dist/src/scripts/merge-utils.d.ts.map +1 -0
  183. package/dist/src/scripts/merge-utils.js +150 -0
  184. package/dist/src/scripts/merge-utils.js.map +1 -0
  185. package/dist/src/scripts/review-categories.d.ts +41 -0
  186. package/dist/src/scripts/review-categories.d.ts.map +1 -0
  187. package/dist/src/scripts/review-categories.js +316 -0
  188. package/dist/src/scripts/review-categories.js.map +1 -0
  189. package/dist/src/scripts/review-lenny-skills.d.ts +1 -0
  190. package/dist/src/scripts/review-lenny-skills.d.ts.map +1 -1
  191. package/dist/src/scripts/review-lenny-skills.js +5 -310
  192. package/dist/src/scripts/review-lenny-skills.js.map +1 -1
  193. package/dist/src/security/AuditLogger.d.ts +4 -75
  194. package/dist/src/security/AuditLogger.d.ts.map +1 -1
  195. package/dist/src/security/AuditLogger.js +2 -11
  196. package/dist/src/security/AuditLogger.js.map +1 -1
  197. package/dist/src/security/audit-types.d.ts +96 -0
  198. package/dist/src/security/audit-types.d.ts.map +1 -0
  199. package/dist/src/security/audit-types.js +15 -0
  200. package/dist/src/security/audit-types.js.map +1 -0
  201. package/dist/src/security/sanitization.d.ts +1 -85
  202. package/dist/src/security/sanitization.d.ts.map +1 -1
  203. package/dist/src/security/sanitization.js +2 -133
  204. package/dist/src/security/sanitization.js.map +1 -1
  205. package/dist/src/security/stripe-validators.d.ts +92 -0
  206. package/dist/src/security/stripe-validators.d.ts.map +1 -0
  207. package/dist/src/security/stripe-validators.js +139 -0
  208. package/dist/src/security/stripe-validators.js.map +1 -0
  209. package/dist/src/services/SearchService.d.ts +2 -31
  210. package/dist/src/services/SearchService.d.ts.map +1 -1
  211. package/dist/src/services/SearchService.helpers.d.ts +42 -0
  212. package/dist/src/services/SearchService.helpers.d.ts.map +1 -0
  213. package/dist/src/services/SearchService.helpers.js +128 -0
  214. package/dist/src/services/SearchService.helpers.js.map +1 -0
  215. package/dist/src/services/SearchService.js +14 -132
  216. package/dist/src/services/SearchService.js.map +1 -1
  217. package/dist/src/services/SearchService.types.d.ts +53 -0
  218. package/dist/src/services/SearchService.types.d.ts.map +1 -0
  219. package/dist/src/services/SearchService.types.js +7 -0
  220. package/dist/src/services/SearchService.types.js.map +1 -0
  221. package/dist/src/services/SkillAnalyzer.d.ts +6 -86
  222. package/dist/src/services/SkillAnalyzer.d.ts.map +1 -1
  223. package/dist/src/services/SkillAnalyzer.helpers.d.ts +103 -0
  224. package/dist/src/services/SkillAnalyzer.helpers.d.ts.map +1 -0
  225. package/dist/src/services/SkillAnalyzer.helpers.js +237 -0
  226. package/dist/src/services/SkillAnalyzer.helpers.js.map +1 -0
  227. package/dist/src/services/SkillAnalyzer.js +16 -167
  228. package/dist/src/services/SkillAnalyzer.js.map +1 -1
  229. package/dist/src/services/SkillAnalyzer.types.d.ts +110 -0
  230. package/dist/src/services/SkillAnalyzer.types.d.ts.map +1 -0
  231. package/dist/src/services/SkillAnalyzer.types.js +9 -0
  232. package/dist/src/services/SkillAnalyzer.types.js.map +1 -0
  233. package/dist/src/services/SkillDecomposer.d.ts +4 -70
  234. package/dist/src/services/SkillDecomposer.d.ts.map +1 -1
  235. package/dist/src/services/SkillDecomposer.helpers.d.ts +75 -0
  236. package/dist/src/services/SkillDecomposer.helpers.d.ts.map +1 -0
  237. package/dist/src/services/SkillDecomposer.helpers.js +277 -0
  238. package/dist/src/services/SkillDecomposer.helpers.js.map +1 -0
  239. package/dist/src/services/SkillDecomposer.js +6 -249
  240. package/dist/src/services/SkillDecomposer.js.map +1 -1
  241. package/dist/src/services/SkillDecomposer.types.d.ts +104 -0
  242. package/dist/src/services/SkillDecomposer.types.d.ts.map +1 -0
  243. package/dist/src/services/SkillDecomposer.types.js +9 -0
  244. package/dist/src/services/SkillDecomposer.types.js.map +1 -0
  245. package/dist/src/services/SubagentGenerator.d.ts +12 -3
  246. package/dist/src/services/SubagentGenerator.d.ts.map +1 -1
  247. package/dist/src/services/SubagentGenerator.js +43 -10
  248. package/dist/src/services/SubagentGenerator.js.map +1 -1
  249. package/dist/src/services/TaskRunner.d.ts +227 -0
  250. package/dist/src/services/TaskRunner.d.ts.map +1 -0
  251. package/dist/src/services/TaskRunner.js +423 -0
  252. package/dist/src/services/TaskRunner.js.map +1 -0
  253. package/dist/src/services/TransformationService.d.ts +8 -4
  254. package/dist/src/services/TransformationService.d.ts.map +1 -1
  255. package/dist/src/services/TransformationService.js +58 -34
  256. package/dist/src/services/TransformationService.js.map +1 -1
  257. package/dist/src/services/__tests__/TaskRunner.test.d.ts +7 -0
  258. package/dist/src/services/__tests__/TaskRunner.test.d.ts.map +1 -0
  259. package/dist/src/services/__tests__/TaskRunner.test.js +316 -0
  260. package/dist/src/services/__tests__/TaskRunner.test.js.map +1 -0
  261. package/dist/src/services/__tests__/TransformationService.test.js +12 -10
  262. package/dist/src/services/__tests__/TransformationService.test.js.map +1 -1
  263. package/dist/src/telemetry/metric-helpers.d.ts +47 -0
  264. package/dist/src/telemetry/metric-helpers.d.ts.map +1 -0
  265. package/dist/src/telemetry/metric-helpers.js +96 -0
  266. package/dist/src/telemetry/metric-helpers.js.map +1 -0
  267. package/dist/src/telemetry/metric-types.d.ts +73 -0
  268. package/dist/src/telemetry/metric-types.d.ts.map +1 -0
  269. package/dist/src/telemetry/metric-types.js +9 -0
  270. package/dist/src/telemetry/metric-types.js.map +1 -0
  271. package/dist/src/telemetry/metrics.d.ts +8 -119
  272. package/dist/src/telemetry/metrics.d.ts.map +1 -1
  273. package/dist/src/telemetry/metrics.js +20 -193
  274. package/dist/src/telemetry/metrics.js.map +1 -1
  275. package/dist/src/telemetry/span-utils.d.ts +30 -0
  276. package/dist/src/telemetry/span-utils.d.ts.map +1 -0
  277. package/dist/src/telemetry/span-utils.js +62 -0
  278. package/dist/src/telemetry/span-utils.js.map +1 -0
  279. package/dist/src/telemetry/tracer-types.d.ts +91 -0
  280. package/dist/src/telemetry/tracer-types.d.ts.map +1 -0
  281. package/dist/src/telemetry/tracer-types.js +6 -0
  282. package/dist/src/telemetry/tracer-types.js.map +1 -0
  283. package/dist/src/telemetry/tracer.d.ts +5 -122
  284. package/dist/src/telemetry/tracer.d.ts.map +1 -1
  285. package/dist/src/telemetry/tracer.js +23 -168
  286. package/dist/src/telemetry/tracer.js.map +1 -1
  287. package/dist/src/triggers/TriggerDetector.d.ts +6 -142
  288. package/dist/src/triggers/TriggerDetector.d.ts.map +1 -1
  289. package/dist/src/triggers/TriggerDetector.js +15 -247
  290. package/dist/src/triggers/TriggerDetector.js.map +1 -1
  291. package/dist/src/triggers/trigger-constants.d.ts +22 -0
  292. package/dist/src/triggers/trigger-constants.d.ts.map +1 -0
  293. package/dist/src/triggers/trigger-constants.js +185 -0
  294. package/dist/src/triggers/trigger-constants.js.map +1 -0
  295. package/dist/src/triggers/trigger-types.d.ts +90 -0
  296. package/dist/src/triggers/trigger-types.d.ts.map +1 -0
  297. package/dist/src/triggers/trigger-types.js +6 -0
  298. package/dist/src/triggers/trigger-types.js.map +1 -0
  299. package/dist/src/types/skill.d.ts +4 -1
  300. package/dist/src/types/skill.d.ts.map +1 -1
  301. package/dist/src/types/skill.js.map +1 -1
  302. package/dist/src/types.d.ts +6 -2
  303. package/dist/src/types.d.ts.map +1 -1
  304. package/dist/src/types.js +1 -0
  305. package/dist/src/types.js.map +1 -1
  306. package/dist/src/validation/index.d.ts +5 -105
  307. package/dist/src/validation/index.d.ts.map +1 -1
  308. package/dist/src/validation/index.js +9 -421
  309. package/dist/src/validation/index.js.map +1 -1
  310. package/dist/src/validation/input-validators.d.ts +68 -0
  311. package/dist/src/validation/input-validators.d.ts.map +1 -0
  312. package/dist/src/validation/input-validators.js +126 -0
  313. package/dist/src/validation/input-validators.js.map +1 -0
  314. package/dist/src/validation/path-validators.d.ts +23 -0
  315. package/dist/src/validation/path-validators.d.ts.map +1 -0
  316. package/dist/src/validation/path-validators.js +47 -0
  317. package/dist/src/validation/path-validators.js.map +1 -0
  318. package/dist/src/validation/url-validators.d.ts +55 -0
  319. package/dist/src/validation/url-validators.d.ts.map +1 -0
  320. package/dist/src/validation/url-validators.js +267 -0
  321. package/dist/src/validation/url-validators.js.map +1 -0
  322. package/dist/src/validation/validation-error.d.ts +14 -0
  323. package/dist/src/validation/validation-error.d.ts.map +1 -0
  324. package/dist/src/validation/validation-error.js +19 -0
  325. package/dist/src/validation/validation-error.js.map +1 -0
  326. package/dist/src/webhooks/WebhookPayload.d.ts +4 -215
  327. package/dist/src/webhooks/WebhookPayload.d.ts.map +1 -1
  328. package/dist/src/webhooks/WebhookPayload.js +1 -122
  329. package/dist/src/webhooks/WebhookPayload.js.map +1 -1
  330. package/dist/src/webhooks/WebhookQueue.d.ts +2 -140
  331. package/dist/src/webhooks/WebhookQueue.d.ts.map +1 -1
  332. package/dist/src/webhooks/WebhookQueue.js +4 -11
  333. package/dist/src/webhooks/WebhookQueue.js.map +1 -1
  334. package/dist/src/webhooks/WebhookQueue.types.d.ts +149 -0
  335. package/dist/src/webhooks/WebhookQueue.types.d.ts.map +1 -0
  336. package/dist/src/webhooks/WebhookQueue.types.js +10 -0
  337. package/dist/src/webhooks/WebhookQueue.types.js.map +1 -0
  338. package/dist/src/webhooks/WebhookQueue.utils.d.ts +44 -0
  339. package/dist/src/webhooks/WebhookQueue.utils.d.ts.map +1 -0
  340. package/dist/src/webhooks/WebhookQueue.utils.js +58 -0
  341. package/dist/src/webhooks/WebhookQueue.utils.js.map +1 -0
  342. package/dist/src/webhooks/webhook-schemas.d.ts +213 -0
  343. package/dist/src/webhooks/webhook-schemas.d.ts.map +1 -0
  344. package/dist/src/webhooks/webhook-schemas.js +132 -0
  345. package/dist/src/webhooks/webhook-schemas.js.map +1 -0
  346. package/dist/src/webhooks/webhook-types.d.ts +222 -0
  347. package/dist/src/webhooks/webhook-types.d.ts.map +1 -0
  348. package/dist/src/webhooks/webhook-types.js +10 -0
  349. package/dist/src/webhooks/webhook-types.js.map +1 -0
  350. package/dist/tests/integration/neural/neural-fixtures.d.ts +19 -0
  351. package/dist/tests/integration/neural/neural-fixtures.d.ts.map +1 -0
  352. package/dist/tests/integration/neural/neural-fixtures.js +49 -0
  353. package/dist/tests/integration/neural/neural-fixtures.js.map +1 -0
  354. package/dist/tests/integration/neural/neural-mocks-privacy.d.ts +78 -0
  355. package/dist/tests/integration/neural/neural-mocks-privacy.d.ts.map +1 -0
  356. package/dist/tests/integration/neural/neural-mocks-privacy.js +146 -0
  357. package/dist/tests/integration/neural/neural-mocks-privacy.js.map +1 -0
  358. package/dist/tests/integration/neural/neural-mocks.d.ts +90 -0
  359. package/dist/tests/integration/neural/neural-mocks.d.ts.map +1 -0
  360. package/dist/tests/integration/neural/neural-mocks.js +288 -0
  361. package/dist/tests/integration/neural/neural-mocks.js.map +1 -0
  362. package/dist/tests/integration/neural/neural-test-utils.d.ts +27 -0
  363. package/dist/tests/integration/neural/neural-test-utils.d.ts.map +1 -0
  364. package/dist/tests/integration/neural/neural-test-utils.js +35 -0
  365. package/dist/tests/integration/neural/neural-test-utils.js.map +1 -0
  366. package/dist/tests/integration/neural/setup.d.ts +6 -165
  367. package/dist/tests/integration/neural/setup.d.ts.map +1 -1
  368. package/dist/tests/integration/neural/setup.js +9 -477
  369. package/dist/tests/integration/neural/setup.js.map +1 -1
  370. package/package.json +4 -4
@@ -0,0 +1,288 @@
1
+ /**
2
+ * SMI-1535: Neural Test Infrastructure - Mock Implementations
3
+ *
4
+ * Mock implementations of learning interfaces for testing.
5
+ *
6
+ * @see packages/core/src/learning/interfaces.ts
7
+ * @see packages/core/src/learning/types.ts
8
+ */
9
+ import { randomUUID } from 'node:crypto';
10
+ import { SignalType, DEFAULT_LEARNING_CONFIG, SIGNAL_WEIGHTS, } from '../../../src/learning/types.js';
11
+ import { createDefaultProfile } from './neural-fixtures.js';
12
+ // Re-export privacy mocks
13
+ export { MockPrivacyManager, MockUserPreferenceRepository } from './neural-mocks-privacy.js';
14
+ /**
15
+ * Mock implementation of ISignalCollector for testing
16
+ */
17
+ export class MockSignalCollector {
18
+ signals = [];
19
+ async recordAccept(skillId, context, metadata) {
20
+ this.signals.push({
21
+ id: randomUUID(),
22
+ type: SignalType.ACCEPT,
23
+ skill_id: skillId,
24
+ timestamp: Date.now(),
25
+ context,
26
+ metadata,
27
+ });
28
+ }
29
+ async recordDismiss(skillId, context, reason) {
30
+ this.signals.push({
31
+ id: randomUUID(),
32
+ type: SignalType.DISMISS,
33
+ skill_id: skillId,
34
+ timestamp: Date.now(),
35
+ context,
36
+ dismiss_reason: reason,
37
+ });
38
+ }
39
+ async recordUsage(skillId, frequency) {
40
+ const type = frequency === 'daily' ? SignalType.USAGE_DAILY : SignalType.USAGE_WEEKLY;
41
+ this.signals.push({
42
+ id: randomUUID(),
43
+ type,
44
+ skill_id: skillId,
45
+ timestamp: Date.now(),
46
+ context: { installed_skills: [], original_score: 0 },
47
+ });
48
+ }
49
+ async recordAbandonment(skillId, daysSinceInstall) {
50
+ this.signals.push({
51
+ id: randomUUID(),
52
+ type: SignalType.ABANDONED,
53
+ skill_id: skillId,
54
+ timestamp: Date.now(),
55
+ context: { installed_skills: [], original_score: 0 },
56
+ metadata: { extra: { days_since_install: daysSinceInstall } },
57
+ });
58
+ }
59
+ async recordUninstall(skillId, daysSinceInstall) {
60
+ this.signals.push({
61
+ id: randomUUID(),
62
+ type: SignalType.UNINSTALL,
63
+ skill_id: skillId,
64
+ timestamp: Date.now(),
65
+ context: { installed_skills: [], original_score: 0 },
66
+ metadata: { extra: { days_since_install: daysSinceInstall } },
67
+ });
68
+ }
69
+ async getSignals(filter, limit) {
70
+ let result = [...this.signals];
71
+ if (filter.skill_id) {
72
+ result = result.filter((s) => s.skill_id === filter.skill_id);
73
+ }
74
+ if (filter.type) {
75
+ const types = Array.isArray(filter.type) ? filter.type : [filter.type];
76
+ result = result.filter((s) => types.includes(s.type));
77
+ }
78
+ if (filter.time_range) {
79
+ result = result.filter((s) => s.timestamp >= filter.time_range.start && s.timestamp <= filter.time_range.end);
80
+ }
81
+ if (filter.category) {
82
+ result = result.filter((s) => s.context.category === filter.category);
83
+ }
84
+ if (limit) {
85
+ result = result.slice(0, limit);
86
+ }
87
+ return result;
88
+ }
89
+ async getSignalCount() {
90
+ return this.signals.length;
91
+ }
92
+ async getSignalsForSkill(skillId) {
93
+ return this.signals.filter((s) => s.skill_id === skillId);
94
+ }
95
+ // Test helpers
96
+ clear() {
97
+ this.signals = [];
98
+ }
99
+ getAllSignals() {
100
+ return [...this.signals];
101
+ }
102
+ addSignal(signal) {
103
+ this.signals.push(signal);
104
+ }
105
+ removeOldSignals(cutoffTimestamp) {
106
+ const before = this.signals.length;
107
+ this.signals = this.signals.filter((s) => s.timestamp >= cutoffTimestamp);
108
+ return before - this.signals.length;
109
+ }
110
+ }
111
+ /**
112
+ * Mock implementation of IPreferenceLearner for testing
113
+ */
114
+ export class MockPreferenceLearner {
115
+ config = { ...DEFAULT_LEARNING_CONFIG };
116
+ async updateProfile(profile, signal) {
117
+ const weight = SIGNAL_WEIGHTS[signal.type];
118
+ const category = signal.context.category;
119
+ const trustTier = signal.context.trust_tier;
120
+ const updated = { ...profile };
121
+ updated.last_updated = Date.now();
122
+ updated.signal_count++;
123
+ // Update category weight
124
+ if (category) {
125
+ const currentWeight = updated.category_weights[category] ?? 0;
126
+ const newWeight = this.clampWeight(currentWeight + weight * this.config.learning_rate);
127
+ updated.category_weights = { ...updated.category_weights, [category]: newWeight };
128
+ }
129
+ // Update trust tier weight
130
+ if (trustTier) {
131
+ const currentWeight = updated.trust_tier_weights[trustTier] ?? 0;
132
+ const newWeight = this.clampWeight(currentWeight + weight * this.config.learning_rate);
133
+ updated.trust_tier_weights = { ...updated.trust_tier_weights, [trustTier]: newWeight };
134
+ }
135
+ // Track negative patterns for dismiss/uninstall
136
+ if (signal.type === SignalType.DISMISS || signal.type === SignalType.UNINSTALL) {
137
+ if (!updated.negative_patterns.skill_ids.includes(signal.skill_id)) {
138
+ updated.negative_patterns = {
139
+ ...updated.negative_patterns,
140
+ skill_ids: [...updated.negative_patterns.skill_ids, signal.skill_id],
141
+ };
142
+ }
143
+ }
144
+ return updated;
145
+ }
146
+ async batchUpdateProfile(profile, signals) {
147
+ let updated = profile;
148
+ for (const signal of signals) {
149
+ updated = await this.updateProfile(updated, signal);
150
+ }
151
+ return updated;
152
+ }
153
+ async decayWeights(profile, decayFactor) {
154
+ const factor = decayFactor ?? this.config.decay_factor;
155
+ const updated = { ...profile };
156
+ // Decay category weights
157
+ const newCategoryWeights = {};
158
+ for (const [cat, weight] of Object.entries(updated.category_weights)) {
159
+ newCategoryWeights[cat] = weight * factor;
160
+ }
161
+ updated.category_weights = newCategoryWeights;
162
+ // Decay trust tier weights
163
+ const newTrustWeights = {};
164
+ for (const [tier, weight] of Object.entries(updated.trust_tier_weights)) {
165
+ newTrustWeights[tier] = weight * factor;
166
+ }
167
+ updated.trust_tier_weights = newTrustWeights;
168
+ // Decay keyword weights
169
+ const newKeywordWeights = {};
170
+ for (const [keyword, weight] of Object.entries(updated.keyword_weights)) {
171
+ newKeywordWeights[keyword] = weight * factor;
172
+ }
173
+ updated.keyword_weights = newKeywordWeights;
174
+ updated.last_updated = Date.now();
175
+ return updated;
176
+ }
177
+ calculatePersonalizedScore(skillData, baseScore, profile) {
178
+ let categoryBoost = 0;
179
+ let trustBoost = 0;
180
+ let keywordBoost = 0;
181
+ let antiPenalty = 0;
182
+ // Category boost
183
+ if (skillData.category) {
184
+ categoryBoost = profile.category_weights[skillData.category] ?? 0;
185
+ }
186
+ // Trust tier boost
187
+ if (skillData.trustTier) {
188
+ trustBoost = profile.trust_tier_weights[skillData.trustTier] ?? 0;
189
+ }
190
+ // Keyword boost
191
+ if (skillData.keywords) {
192
+ for (const kw of skillData.keywords) {
193
+ keywordBoost += profile.keyword_weights[kw] ?? 0;
194
+ }
195
+ }
196
+ // Anti-penalty for skills in negative patterns
197
+ if (profile.negative_patterns.skill_ids.includes(skillData.id)) {
198
+ antiPenalty = -0.5; // Strong penalty
199
+ }
200
+ // Calculate personalized score, clamped to [0, 1]
201
+ const totalAdjustment = (categoryBoost + trustBoost + keywordBoost + antiPenalty) * 0.1;
202
+ const personalizedScore = Math.max(0, Math.min(1, baseScore + totalAdjustment));
203
+ return {
204
+ skill_id: skillData.id,
205
+ base_score: baseScore,
206
+ personalized_score: personalizedScore,
207
+ personalization_applied: profile.signal_count >= this.config.min_signals_threshold,
208
+ score_breakdown: {
209
+ category_boost: categoryBoost,
210
+ trust_boost: trustBoost,
211
+ keyword_boost: keywordBoost,
212
+ anti_penalty: antiPenalty,
213
+ },
214
+ };
215
+ }
216
+ getConfig() {
217
+ return { ...this.config };
218
+ }
219
+ setConfig(config) {
220
+ this.config = { ...this.config, ...config };
221
+ }
222
+ clampWeight(weight) {
223
+ return Math.max(this.config.weight_bounds.min, Math.min(this.config.weight_bounds.max, weight));
224
+ }
225
+ }
226
+ /**
227
+ * Mock implementation of IPersonalizationEngine for testing
228
+ */
229
+ export class MockPersonalizationEngine {
230
+ learner;
231
+ profileRepo;
232
+ signalCollector;
233
+ constructor(learner, profileRepo, signalCollector) {
234
+ this.learner = learner;
235
+ this.profileRepo = profileRepo;
236
+ this.signalCollector = signalCollector;
237
+ }
238
+ async personalizeRecommendations(baseRecommendations, userId) {
239
+ const profile = await this.getUserProfile(userId);
240
+ const shouldApply = await this.shouldPersonalize(userId);
241
+ const results = baseRecommendations.map((rec) => {
242
+ const result = this.learner.calculatePersonalizedScore({ id: rec.skill_id, ...rec.skill_data }, rec.base_score, profile);
243
+ // Only apply personalization if threshold met
244
+ if (!shouldApply) {
245
+ return {
246
+ ...result,
247
+ personalized_score: rec.base_score,
248
+ personalization_applied: false,
249
+ };
250
+ }
251
+ return result;
252
+ });
253
+ // Sort by personalized score descending
254
+ return results.sort((a, b) => b.personalized_score - a.personalized_score);
255
+ }
256
+ /**
257
+ * Determine if personalization should be applied.
258
+ *
259
+ * IMPORTANT: Mock Implementation Limitation
260
+ * -----------------------------------------
261
+ * This mock checks the GLOBAL signal count across all users, not the
262
+ * per-user signal count. This is a simplification for testing purposes.
263
+ *
264
+ * In a real implementation, shouldPersonalize should:
265
+ * 1. Look up the user's profile by userId
266
+ * 2. Check that user's individual signal_count against the threshold
267
+ * 3. Return true only if that specific user has enough signals
268
+ *
269
+ * The mock behavior works for single-user test scenarios but does not
270
+ * accurately model multi-user environments where each user has their
271
+ * own signal history and personalization threshold.
272
+ *
273
+ * @param _userId - User ID (ignored in mock - uses global count)
274
+ * @returns Promise<boolean> - True if global signal count meets threshold
275
+ */
276
+ async shouldPersonalize(_userId) {
277
+ const count = await this.signalCollector.getSignalCount();
278
+ return count >= this.learner.getConfig().min_signals_threshold;
279
+ }
280
+ async getUserProfile(userId) {
281
+ const profile = await this.profileRepo.getProfile(userId);
282
+ return profile ?? createDefaultProfile();
283
+ }
284
+ async resetToDefault(userId) {
285
+ await this.profileRepo.deleteProfile(userId);
286
+ }
287
+ }
288
+ //# sourceMappingURL=neural-mocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neural-mocks.js","sourceRoot":"","sources":["../../../../tests/integration/neural/neural-mocks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * SMI-1535: Neural Test Infrastructure - Test Utilities
3
+ *
4
+ * Utilities for creating and cleaning up neural test contexts.
5
+ *
6
+ * @see packages/core/src/learning/interfaces.ts
7
+ */
8
+ import { MockSignalCollector, MockPreferenceLearner, MockPersonalizationEngine, MockPrivacyManager, MockUserPreferenceRepository } from './neural-mocks.js';
9
+ /**
10
+ * Neural test context containing all mock service instances
11
+ */
12
+ export interface NeuralTestContext {
13
+ signalCollector: MockSignalCollector;
14
+ preferenceLearner: MockPreferenceLearner;
15
+ personalizationEngine: MockPersonalizationEngine;
16
+ privacyManager: MockPrivacyManager;
17
+ profileRepository: MockUserPreferenceRepository;
18
+ }
19
+ /**
20
+ * Create a fresh neural test context with all mock services
21
+ */
22
+ export declare function createNeuralTestContext(): NeuralTestContext;
23
+ /**
24
+ * Clean up a neural test context (release resources)
25
+ */
26
+ export declare function cleanupNeuralTestContext(ctx: NeuralTestContext): Promise<void>;
27
+ //# sourceMappingURL=neural-test-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neural-test-utils.d.ts","sourceRoot":"","sources":["../../../../tests/integration/neural/neural-test-utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,4BAA4B,EAC7B,MAAM,mBAAmB,CAAA;AAE1B;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,mBAAmB,CAAA;IACpC,iBAAiB,EAAE,qBAAqB,CAAA;IACxC,qBAAqB,EAAE,yBAAyB,CAAA;IAChD,cAAc,EAAE,kBAAkB,CAAA;IAClC,iBAAiB,EAAE,4BAA4B,CAAA;CAChD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,iBAAiB,CAkB3D;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKpF"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * SMI-1535: Neural Test Infrastructure - Test Utilities
3
+ *
4
+ * Utilities for creating and cleaning up neural test contexts.
5
+ *
6
+ * @see packages/core/src/learning/interfaces.ts
7
+ */
8
+ import { MockSignalCollector, MockPreferenceLearner, MockPersonalizationEngine, MockPrivacyManager, MockUserPreferenceRepository, } from './neural-mocks.js';
9
+ /**
10
+ * Create a fresh neural test context with all mock services
11
+ */
12
+ export function createNeuralTestContext() {
13
+ const profileRepository = new MockUserPreferenceRepository();
14
+ const signalCollector = new MockSignalCollector();
15
+ const preferenceLearner = new MockPreferenceLearner();
16
+ const personalizationEngine = new MockPersonalizationEngine(preferenceLearner, profileRepository, signalCollector);
17
+ const privacyManager = new MockPrivacyManager(signalCollector, profileRepository);
18
+ return {
19
+ signalCollector,
20
+ preferenceLearner,
21
+ personalizationEngine,
22
+ privacyManager,
23
+ profileRepository,
24
+ };
25
+ }
26
+ /**
27
+ * Clean up a neural test context (release resources)
28
+ */
29
+ export async function cleanupNeuralTestContext(ctx) {
30
+ // Clear all stored data
31
+ ctx.signalCollector.clear();
32
+ ctx.profileRepository.clear();
33
+ ctx.privacyManager.clearAuditLog();
34
+ }
35
+ //# sourceMappingURL=neural-test-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neural-test-utils.js","sourceRoot":"","sources":["../../../../tests/integration/neural/neural-test-utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,mBAAmB,CAAA;AAa1B;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,iBAAiB,GAAG,IAAI,4BAA4B,EAAE,CAAA;IAC5D,MAAM,eAAe,GAAG,IAAI,mBAAmB,EAAE,CAAA;IACjD,MAAM,iBAAiB,GAAG,IAAI,qBAAqB,EAAE,CAAA;IACrD,MAAM,qBAAqB,GAAG,IAAI,yBAAyB,CACzD,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,CAChB,CAAA;IACD,MAAM,cAAc,GAAG,IAAI,kBAAkB,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAA;IAEjF,OAAO;QACL,eAAe;QACf,iBAAiB;QACjB,qBAAqB;QACrB,cAAc;QACd,iBAAiB;KAClB,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,GAAsB;IACnE,wBAAwB;IACxB,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;IAC3B,GAAG,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAA;IAC7B,GAAG,CAAC,cAAc,CAAC,aAAa,EAAE,CAAA;AACpC,CAAC"}
@@ -4,172 +4,13 @@
4
4
  * Provides test context factory and mock implementations for
5
5
  * the Recommendation Learning Loop integration tests.
6
6
  *
7
+ * This file re-exports all neural test infrastructure from
8
+ * modular files for backwards compatibility.
9
+ *
7
10
  * @see packages/core/src/learning/interfaces.ts
8
11
  * @see packages/core/src/learning/types.ts
9
12
  */
10
- import type { ISignalCollector, IPreferenceLearner, IPersonalizationEngine, IPrivacyManager, IUserPreferenceRepository } from '../../../src/learning/interfaces.js';
11
- import { type SignalEvent, type SignalFilter, type RecommendationContext, type SignalMetadata, type DismissReason, type UserPreferenceProfile, type LearningConfig, type PersonalizedRecommendation, type UserDataExport, type AggregateStats } from '../../../src/learning/types.js';
12
- /**
13
- * Neural test context containing all mock service instances
14
- */
15
- export interface NeuralTestContext {
16
- signalCollector: MockSignalCollector;
17
- preferenceLearner: MockPreferenceLearner;
18
- personalizationEngine: MockPersonalizationEngine;
19
- privacyManager: MockPrivacyManager;
20
- profileRepository: MockUserPreferenceRepository;
21
- }
22
- /**
23
- * Create a fresh neural test context with all mock services
24
- */
25
- export declare function createNeuralTestContext(): NeuralTestContext;
26
- /**
27
- * Clean up a neural test context (release resources)
28
- */
29
- export declare function cleanupNeuralTestContext(ctx: NeuralTestContext): Promise<void>;
30
- /**
31
- * Create a default empty user preference profile
32
- *
33
- * Note: COLD_START_WEIGHTS only defines weights for a subset of SkillCategory values
34
- * (TESTING, GIT, DEVOPS, DOCUMENTATION, FRONTEND, BACKEND). Categories not in
35
- * COLD_START_WEIGHTS (DATABASE, SECURITY, PRODUCTIVITY, ANALYSIS) will have
36
- * undefined weights, which is handled gracefully by the learning algorithm
37
- * by defaulting to 0 when accessing missing keys.
38
- */
39
- export declare function createDefaultProfile(): UserPreferenceProfile;
40
- /**
41
- * Mock implementation of ISignalCollector for testing
42
- */
43
- export declare class MockSignalCollector implements ISignalCollector {
44
- private signals;
45
- recordAccept(skillId: string, context: RecommendationContext, metadata?: SignalMetadata): Promise<void>;
46
- recordDismiss(skillId: string, context: RecommendationContext, reason?: DismissReason): Promise<void>;
47
- recordUsage(skillId: string, frequency: 'daily' | 'weekly'): Promise<void>;
48
- recordAbandonment(skillId: string, daysSinceInstall: number): Promise<void>;
49
- recordUninstall(skillId: string, daysSinceInstall: number): Promise<void>;
50
- getSignals(filter: SignalFilter, limit?: number): Promise<SignalEvent[]>;
51
- getSignalCount(): Promise<number>;
52
- getSignalsForSkill(skillId: string): Promise<SignalEvent[]>;
53
- clear(): void;
54
- getAllSignals(): SignalEvent[];
55
- addSignal(signal: SignalEvent): void;
56
- removeOldSignals(cutoffTimestamp: number): number;
57
- }
58
- /**
59
- * Mock implementation of IPreferenceLearner for testing
60
- */
61
- export declare class MockPreferenceLearner implements IPreferenceLearner {
62
- private config;
63
- updateProfile(profile: UserPreferenceProfile, signal: SignalEvent): Promise<UserPreferenceProfile>;
64
- batchUpdateProfile(profile: UserPreferenceProfile, signals: SignalEvent[]): Promise<UserPreferenceProfile>;
65
- decayWeights(profile: UserPreferenceProfile, decayFactor?: number): Promise<UserPreferenceProfile>;
66
- calculatePersonalizedScore(skillData: {
67
- id: string;
68
- category?: string;
69
- trustTier?: string;
70
- keywords?: string[];
71
- triggerPhrases?: string[];
72
- }, baseScore: number, profile: UserPreferenceProfile): PersonalizedRecommendation;
73
- getConfig(): LearningConfig;
74
- setConfig(config: Partial<LearningConfig>): void;
75
- private clampWeight;
76
- }
77
- /**
78
- * Mock implementation of IPersonalizationEngine for testing
79
- */
80
- export declare class MockPersonalizationEngine implements IPersonalizationEngine {
81
- private learner;
82
- private profileRepo;
83
- private signalCollector;
84
- constructor(learner: MockPreferenceLearner, profileRepo: MockUserPreferenceRepository, signalCollector: MockSignalCollector);
85
- personalizeRecommendations(baseRecommendations: Array<{
86
- skill_id: string;
87
- base_score: number;
88
- skill_data: {
89
- category?: string;
90
- trustTier?: string;
91
- keywords?: string[];
92
- };
93
- }>, userId?: string): Promise<PersonalizedRecommendation[]>;
94
- /**
95
- * Determine if personalization should be applied.
96
- *
97
- * IMPORTANT: Mock Implementation Limitation
98
- * -----------------------------------------
99
- * This mock checks the GLOBAL signal count across all users, not the
100
- * per-user signal count. This is a simplification for testing purposes.
101
- *
102
- * In a real implementation, shouldPersonalize should:
103
- * 1. Look up the user's profile by userId
104
- * 2. Check that user's individual signal_count against the threshold
105
- * 3. Return true only if that specific user has enough signals
106
- *
107
- * The mock behavior works for single-user test scenarios but does not
108
- * accurately model multi-user environments where each user has their
109
- * own signal history and personalization threshold.
110
- *
111
- * @param _userId - User ID (ignored in mock - uses global count)
112
- * @returns Promise<boolean> - True if global signal count meets threshold
113
- */
114
- shouldPersonalize(_userId?: string): Promise<boolean>;
115
- getUserProfile(userId?: string): Promise<UserPreferenceProfile>;
116
- resetToDefault(userId?: string): Promise<void>;
117
- }
118
- /**
119
- * Mock implementation of IPrivacyManager for testing
120
- */
121
- export declare class MockPrivacyManager implements IPrivacyManager {
122
- private signalCollector;
123
- private profileRepo;
124
- private auditLog;
125
- constructor(signalCollector: MockSignalCollector, profileRepo: MockUserPreferenceRepository);
126
- purgeOldSignals(retentionDays: number): Promise<number>;
127
- exportUserData(): Promise<UserDataExport>;
128
- wipeAllData(): Promise<number>;
129
- anonymizeForAnalytics(): Promise<AggregateStats>;
130
- getStorageSize(): Promise<number>;
131
- /**
132
- * Verify that no PII (Personally Identifiable Information) is stored.
133
- *
134
- * Mock Implementation Details
135
- * ---------------------------
136
- * This mock always returns true because the test environment uses
137
- * controlled, synthetic data that never contains real PII.
138
- *
139
- * A real implementation should:
140
- * 1. Scan signal events for PII patterns (emails, names, IPs, etc.)
141
- * 2. Check that skill_id values don't contain user identifiers
142
- * 3. Verify context fields don't leak sensitive project paths
143
- * 4. Ensure keyword_weights don't contain personal identifiers
144
- * 5. Validate that exported data is properly anonymized
145
- *
146
- * The mock skips these checks since test data is constructed with
147
- * known-safe values (UUIDs, generic skill names, etc.).
148
- *
149
- * @returns Promise<boolean> - Always true in mock (no real PII checks)
150
- */
151
- verifyPrivacy(): Promise<boolean>;
152
- getAuditLog(): Array<{
153
- operation: string;
154
- timestamp: number;
155
- details?: string;
156
- }>;
157
- /**
158
- * Clear the audit log.
159
- * Used in test cleanup to reset state between tests.
160
- */
161
- clearAuditLog(): void;
162
- }
163
- /**
164
- * Mock implementation of IUserPreferenceRepository for testing
165
- */
166
- export declare class MockUserPreferenceRepository implements IUserPreferenceRepository {
167
- private profiles;
168
- private readonly defaultUserId;
169
- getProfile(userId?: string): Promise<UserPreferenceProfile | null>;
170
- saveProfile(profile: UserPreferenceProfile, userId?: string): Promise<void>;
171
- deleteProfile(userId?: string): Promise<void>;
172
- exists(userId?: string): Promise<boolean>;
173
- clear(): void;
174
- }
13
+ export { createDefaultProfile } from './neural-fixtures.js';
14
+ export { type NeuralTestContext, createNeuralTestContext, cleanupNeuralTestContext, } from './neural-test-utils.js';
15
+ export { MockSignalCollector, MockPreferenceLearner, MockPersonalizationEngine, MockPrivacyManager, MockUserPreferenceRepository, } from './neural-mocks.js';
175
16
  //# sourceMappingURL=setup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../../tests/integration/neural/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,yBAAyB,EAC1B,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,0BAA0B,EAC/B,KAAK,cAAc,EACnB,KAAK,cAAc,EAMpB,MAAM,gCAAgC,CAAA;AAEvC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,mBAAmB,CAAA;IACpC,iBAAiB,EAAE,qBAAqB,CAAA;IACxC,qBAAqB,EAAE,yBAAyB,CAAA;IAChD,cAAc,EAAE,kBAAkB,CAAA;IAClC,iBAAiB,EAAE,4BAA4B,CAAA;CAChD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,iBAAiB,CAkB3D;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKpF;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,IAAI,qBAAqB,CAgC5D;AAED;;GAEG;AACH,qBAAa,mBAAoB,YAAW,gBAAgB;IAC1D,OAAO,CAAC,OAAO,CAAoB;IAE7B,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,IAAI,CAAC;IAWV,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,qBAAqB,EAC9B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC;IAWV,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1E,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3E,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzE,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA6BxE,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAKjE,KAAK,IAAI,IAAI;IAIb,aAAa,IAAI,WAAW,EAAE;IAI9B,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAIpC,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM;CAKlD;AAED;;GAEG;AACH,qBAAa,qBAAsB,YAAW,kBAAkB;IAC9D,OAAO,CAAC,MAAM,CAAiD;IAEzD,aAAa,CACjB,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,qBAAqB,CAAC;IAoC3B,kBAAkB,CACtB,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,WAAW,EAAE,GACrB,OAAO,CAAC,qBAAqB,CAAC;IAQ3B,YAAY,CAChB,OAAO,EAAE,qBAAqB,EAC9B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,qBAAqB,CAAC;IA6BjC,0BAA0B,CACxB,SAAS,EAAE;QACT,EAAE,EAAE,MAAM,CAAA;QACV,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;QACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;KAC1B,EACD,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,qBAAqB,GAC7B,0BAA0B;IA8C7B,SAAS,IAAI,cAAc;IAI3B,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAIhD,OAAO,CAAC,WAAW;CAGpB;AAED;;GAEG;AACH,qBAAa,yBAA0B,YAAW,sBAAsB;IAEpE,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,eAAe;gBAFf,OAAO,EAAE,qBAAqB,EAC9B,WAAW,EAAE,4BAA4B,EACzC,eAAe,EAAE,mBAAmB;IAGxC,0BAA0B,CAC9B,mBAAmB,EAAE,KAAK,CAAC;QACzB,QAAQ,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,MAAM,CAAA;QAClB,UAAU,EAAE;YACV,QAAQ,CAAC,EAAE,MAAM,CAAA;YACjB,SAAS,CAAC,EAAE,MAAM,CAAA;YAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;SACpB,CAAA;KACF,CAAC,EACF,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAyBxC;;;;;;;;;;;;;;;;;;;OAmBG;IACG,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrD,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAK/D,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGrD;AAED;;GAEG;AACH,qBAAa,kBAAmB,YAAW,eAAe;IAItD,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,WAAW;IAJrB,OAAO,CAAC,QAAQ,CAAwE;gBAG9E,eAAe,EAAE,mBAAmB,EACpC,WAAW,EAAE,4BAA4B;IAG7C,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWvD,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC;IAkBzC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAc9B,qBAAqB,IAAI,OAAO,CAAC,cAAc,CAAC;IA+BhD,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAKvC;;;;;;;;;;;;;;;;;;;OAmBG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAKvC,WAAW,IAAI,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAIhF;;;OAGG;IACH,aAAa,IAAI,IAAI;CAGtB;AAED;;GAEG;AACH,qBAAa,4BAA6B,YAAW,yBAAyB;IAC5E,OAAO,CAAC,QAAQ,CAA2C;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAY;IAEpC,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAIlE,WAAW,CAAC,OAAO,EAAE,qBAAqB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3E,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK/C,KAAK,IAAI,IAAI;CAGd"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../../tests/integration/neural/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAG3D,OAAO,EACL,KAAK,iBAAiB,EACtB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,mBAAmB,CAAA"}