@skillsmith/core 0.4.14 → 0.4.16

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 (287) hide show
  1. package/README.md +2 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/analysis/DependencyMerger.d.ts +39 -0
  4. package/dist/src/analysis/DependencyMerger.d.ts.map +1 -0
  5. package/dist/src/analysis/DependencyMerger.js +191 -0
  6. package/dist/src/analysis/DependencyMerger.js.map +1 -0
  7. package/dist/src/analysis/DependencyMerger.test.d.ts +2 -0
  8. package/dist/src/analysis/DependencyMerger.test.d.ts.map +1 -0
  9. package/dist/src/analysis/DependencyMerger.test.js +258 -0
  10. package/dist/src/analysis/DependencyMerger.test.js.map +1 -0
  11. package/dist/src/analysis/McpReferenceExtractor.d.ts +42 -0
  12. package/dist/src/analysis/McpReferenceExtractor.d.ts.map +1 -0
  13. package/dist/src/analysis/McpReferenceExtractor.js +92 -0
  14. package/dist/src/analysis/McpReferenceExtractor.js.map +1 -0
  15. package/dist/src/analysis/McpReferenceExtractor.test.d.ts +2 -0
  16. package/dist/src/analysis/McpReferenceExtractor.test.d.ts.map +1 -0
  17. package/dist/src/analysis/McpReferenceExtractor.test.js +262 -0
  18. package/dist/src/analysis/McpReferenceExtractor.test.js.map +1 -0
  19. package/dist/src/api/client.d.ts +1 -0
  20. package/dist/src/api/client.d.ts.map +1 -1
  21. package/dist/src/api/client.health.d.ts +26 -0
  22. package/dist/src/api/client.health.d.ts.map +1 -0
  23. package/dist/src/api/client.health.js +74 -0
  24. package/dist/src/api/client.health.js.map +1 -0
  25. package/dist/src/api/client.js +3 -51
  26. package/dist/src/api/client.js.map +1 -1
  27. package/dist/src/api/schemas.d.ts +4 -4
  28. package/dist/src/db/createDatabase.d.ts +9 -1
  29. package/dist/src/db/createDatabase.d.ts.map +1 -1
  30. package/dist/src/db/createDatabase.js +9 -1
  31. package/dist/src/db/createDatabase.js.map +1 -1
  32. package/dist/src/db/drivers/sqljsDriver.d.ts.map +1 -1
  33. package/dist/src/db/drivers/sqljsDriver.js +7 -8
  34. package/dist/src/db/drivers/sqljsDriver.js.map +1 -1
  35. package/dist/src/db/migrations/v10-dependencies.d.ts +18 -0
  36. package/dist/src/db/migrations/v10-dependencies.d.ts.map +1 -0
  37. package/dist/src/db/migrations/v10-dependencies.js +50 -0
  38. package/dist/src/db/migrations/v10-dependencies.js.map +1 -0
  39. package/dist/src/db/migrations/v2-phase5-columns.d.ts +7 -0
  40. package/dist/src/db/migrations/v2-phase5-columns.d.ts.map +1 -0
  41. package/dist/src/db/migrations/v2-phase5-columns.js +16 -0
  42. package/dist/src/db/migrations/v2-phase5-columns.js.map +1 -0
  43. package/dist/src/db/migrations/v3-sync-tables.d.ts +6 -0
  44. package/dist/src/db/migrations/v3-sync-tables.d.ts.map +1 -0
  45. package/dist/src/db/migrations/v3-sync-tables.js +41 -0
  46. package/dist/src/db/migrations/v3-sync-tables.js.map +1 -0
  47. package/dist/src/db/migrations/v4-security-columns.d.ts +7 -0
  48. package/dist/src/db/migrations/v4-security-columns.d.ts.map +1 -0
  49. package/dist/src/db/migrations/v4-security-columns.js +17 -0
  50. package/dist/src/db/migrations/v4-security-columns.js.map +1 -0
  51. package/dist/src/db/migrations/v5b-change-type.d.ts +19 -0
  52. package/dist/src/db/migrations/v5b-change-type.d.ts.map +1 -0
  53. package/dist/src/db/migrations/v5b-change-type.js +22 -0
  54. package/dist/src/db/migrations/v5b-change-type.js.map +1 -0
  55. package/dist/src/db/migrations/v6-advisories.d.ts +32 -0
  56. package/dist/src/db/migrations/v6-advisories.d.ts.map +1 -0
  57. package/dist/src/db/migrations/v6-advisories.js +53 -0
  58. package/dist/src/db/migrations/v6-advisories.js.map +1 -0
  59. package/dist/src/db/migrations/v7-compatibility.d.ts +21 -0
  60. package/dist/src/db/migrations/v7-compatibility.d.ts.map +1 -0
  61. package/dist/src/db/migrations/v7-compatibility.js +23 -0
  62. package/dist/src/db/migrations/v7-compatibility.js.map +1 -0
  63. package/dist/src/db/migrations/v8-co-installs.d.ts +21 -0
  64. package/dist/src/db/migrations/v8-co-installs.d.ts.map +1 -0
  65. package/dist/src/db/migrations/v8-co-installs.js +33 -0
  66. package/dist/src/db/migrations/v8-co-installs.js.map +1 -0
  67. package/dist/src/db/schema.d.ts +5 -16
  68. package/dist/src/db/schema.d.ts.map +1 -1
  69. package/dist/src/db/schema.js +50 -79
  70. package/dist/src/db/schema.js.map +1 -1
  71. package/dist/src/exports/repositories.d.ts +6 -0
  72. package/dist/src/exports/repositories.d.ts.map +1 -1
  73. package/dist/src/exports/repositories.js +21 -0
  74. package/dist/src/exports/repositories.js.map +1 -1
  75. package/dist/src/exports/services.d.ts +2 -0
  76. package/dist/src/exports/services.d.ts.map +1 -1
  77. package/dist/src/exports/services.js +5 -0
  78. package/dist/src/exports/services.js.map +1 -1
  79. package/dist/src/exports/types.d.ts +2 -1
  80. package/dist/src/exports/types.d.ts.map +1 -1
  81. package/dist/src/exports/types.js.map +1 -1
  82. package/dist/src/indexer/GitHubIndexer.d.ts +3 -1
  83. package/dist/src/indexer/GitHubIndexer.d.ts.map +1 -1
  84. package/dist/src/indexer/GitHubIndexer.js.map +1 -1
  85. package/dist/src/indexer/SkillParser.d.ts +22 -9
  86. package/dist/src/indexer/SkillParser.d.ts.map +1 -1
  87. package/dist/src/indexer/SkillParser.js +17 -10
  88. package/dist/src/indexer/SkillParser.js.map +1 -1
  89. package/dist/src/learning/PatternStore.d.ts +0 -2
  90. package/dist/src/learning/PatternStore.d.ts.map +1 -1
  91. package/dist/src/learning/PatternStore.helpers.d.ts +19 -1
  92. package/dist/src/learning/PatternStore.helpers.d.ts.map +1 -1
  93. package/dist/src/learning/PatternStore.helpers.js +51 -0
  94. package/dist/src/learning/PatternStore.helpers.js.map +1 -1
  95. package/dist/src/learning/PatternStore.js +5 -37
  96. package/dist/src/learning/PatternStore.js.map +1 -1
  97. package/dist/src/repositories/AdvisoryRepository.d.ts +80 -0
  98. package/dist/src/repositories/AdvisoryRepository.d.ts.map +1 -0
  99. package/dist/src/repositories/AdvisoryRepository.js +128 -0
  100. package/dist/src/repositories/AdvisoryRepository.js.map +1 -0
  101. package/dist/src/repositories/AdvisoryRepository.test.d.ts +6 -0
  102. package/dist/src/repositories/AdvisoryRepository.test.d.ts.map +1 -0
  103. package/dist/src/repositories/AdvisoryRepository.test.js +149 -0
  104. package/dist/src/repositories/AdvisoryRepository.test.js.map +1 -0
  105. package/dist/src/repositories/CoInstallRepository.d.ts +68 -0
  106. package/dist/src/repositories/CoInstallRepository.d.ts.map +1 -0
  107. package/dist/src/repositories/CoInstallRepository.js +122 -0
  108. package/dist/src/repositories/CoInstallRepository.js.map +1 -0
  109. package/dist/src/repositories/IndexerRepository.d.ts.map +1 -1
  110. package/dist/src/repositories/IndexerRepository.js +5 -1
  111. package/dist/src/repositories/IndexerRepository.js.map +1 -1
  112. package/dist/src/repositories/SkillDependencyRepository.d.ts +73 -0
  113. package/dist/src/repositories/SkillDependencyRepository.d.ts.map +1 -0
  114. package/dist/src/repositories/SkillDependencyRepository.js +199 -0
  115. package/dist/src/repositories/SkillDependencyRepository.js.map +1 -0
  116. package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
  117. package/dist/src/repositories/SkillRepository.js +16 -5
  118. package/dist/src/repositories/SkillRepository.js.map +1 -1
  119. package/dist/src/scripts/validation/types.d.ts +2 -2
  120. package/dist/src/services/SearchService.helpers.d.ts.map +1 -1
  121. package/dist/src/services/SearchService.helpers.js +4 -0
  122. package/dist/src/services/SearchService.helpers.js.map +1 -1
  123. package/dist/src/services/SearchService.types.d.ts +1 -0
  124. package/dist/src/services/SearchService.types.d.ts.map +1 -1
  125. package/dist/src/services/TaskRunner.d.ts +5 -81
  126. package/dist/src/services/TaskRunner.d.ts.map +1 -1
  127. package/dist/src/services/TaskRunner.js +7 -68
  128. package/dist/src/services/TaskRunner.js.map +1 -1
  129. package/dist/src/services/TaskRunner.process.d.ts +33 -0
  130. package/dist/src/services/TaskRunner.process.d.ts.map +1 -0
  131. package/dist/src/services/TaskRunner.process.js +70 -0
  132. package/dist/src/services/TaskRunner.process.js.map +1 -0
  133. package/dist/src/services/TaskRunner.types.d.ts +76 -0
  134. package/dist/src/services/TaskRunner.types.d.ts.map +1 -0
  135. package/dist/src/services/TaskRunner.types.js +22 -0
  136. package/dist/src/services/TaskRunner.types.js.map +1 -0
  137. package/dist/src/services/__tests__/TaskRunner.process.test.d.ts +13 -0
  138. package/dist/src/services/__tests__/TaskRunner.process.test.d.ts.map +1 -0
  139. package/dist/src/services/__tests__/TaskRunner.process.test.js +91 -0
  140. package/dist/src/services/__tests__/TaskRunner.process.test.js.map +1 -0
  141. package/dist/src/services/quarantine/QuarantineService.d.ts +3 -24
  142. package/dist/src/services/quarantine/QuarantineService.d.ts.map +1 -1
  143. package/dist/src/services/quarantine/QuarantineService.js +8 -205
  144. package/dist/src/services/quarantine/QuarantineService.js.map +1 -1
  145. package/dist/src/services/quarantine/QuarantineService.multiapproval.d.ts +57 -0
  146. package/dist/src/services/quarantine/QuarantineService.multiapproval.d.ts.map +1 -0
  147. package/dist/src/services/quarantine/QuarantineService.multiapproval.js +211 -0
  148. package/dist/src/services/quarantine/QuarantineService.multiapproval.js.map +1 -0
  149. package/dist/src/session/SessionManager.d.ts +2 -33
  150. package/dist/src/session/SessionManager.d.ts.map +1 -1
  151. package/dist/src/session/SessionManager.js +14 -238
  152. package/dist/src/session/SessionManager.js.map +1 -1
  153. package/dist/src/session/SessionManager.memory.d.ts +67 -0
  154. package/dist/src/session/SessionManager.memory.d.ts.map +1 -0
  155. package/dist/src/session/SessionManager.memory.js +262 -0
  156. package/dist/src/session/SessionManager.memory.js.map +1 -0
  157. package/dist/src/sources/SourceIndexer.d.ts +3 -1
  158. package/dist/src/sources/SourceIndexer.d.ts.map +1 -1
  159. package/dist/src/sources/SourceIndexer.js.map +1 -1
  160. package/dist/src/sync/SyncEngine.d.ts +13 -1
  161. package/dist/src/sync/SyncEngine.d.ts.map +1 -1
  162. package/dist/src/sync/SyncEngine.js +50 -1
  163. package/dist/src/sync/SyncEngine.js.map +1 -1
  164. package/dist/src/testing/MultiLLMProvider.d.ts +5 -6
  165. package/dist/src/testing/MultiLLMProvider.d.ts.map +1 -1
  166. package/dist/src/testing/MultiLLMProvider.js +18 -130
  167. package/dist/src/testing/MultiLLMProvider.js.map +1 -1
  168. package/dist/src/testing/MultiLLMProvider.metrics.d.ts +33 -0
  169. package/dist/src/testing/MultiLLMProvider.metrics.d.ts.map +1 -0
  170. package/dist/src/testing/MultiLLMProvider.metrics.js +87 -0
  171. package/dist/src/testing/MultiLLMProvider.metrics.js.map +1 -0
  172. package/dist/src/testing/MultiLLMProvider.selection.d.ts +77 -0
  173. package/dist/src/testing/MultiLLMProvider.selection.d.ts.map +1 -0
  174. package/dist/src/testing/MultiLLMProvider.selection.js +151 -0
  175. package/dist/src/testing/MultiLLMProvider.selection.js.map +1 -0
  176. package/dist/src/types/dependencies.d.ts +85 -0
  177. package/dist/src/types/dependencies.d.ts.map +1 -0
  178. package/dist/src/types/dependencies.js +11 -0
  179. package/dist/src/types/dependencies.js.map +1 -0
  180. package/dist/src/types/skill.d.ts +13 -0
  181. package/dist/src/types/skill.d.ts.map +1 -1
  182. package/dist/src/types/skill.js.map +1 -1
  183. package/dist/src/types.d.ts +32 -0
  184. package/dist/src/types.d.ts.map +1 -1
  185. package/dist/src/versioning/change-classifier.d.ts +38 -0
  186. package/dist/src/versioning/change-classifier.d.ts.map +1 -0
  187. package/dist/src/versioning/change-classifier.js +187 -0
  188. package/dist/src/versioning/change-classifier.js.map +1 -0
  189. package/dist/src/versioning/change-classifier.test.d.ts +6 -0
  190. package/dist/src/versioning/change-classifier.test.d.ts.map +1 -0
  191. package/dist/src/versioning/change-classifier.test.js +275 -0
  192. package/dist/src/versioning/change-classifier.test.js.map +1 -0
  193. package/dist/src/versioning/update-risk.d.ts +50 -0
  194. package/dist/src/versioning/update-risk.d.ts.map +1 -0
  195. package/dist/src/versioning/update-risk.js +80 -0
  196. package/dist/src/versioning/update-risk.js.map +1 -0
  197. package/dist/src/versioning/update-risk.test.d.ts +6 -0
  198. package/dist/src/versioning/update-risk.test.d.ts.map +1 -0
  199. package/dist/src/versioning/update-risk.test.js +200 -0
  200. package/dist/src/versioning/update-risk.test.js.map +1 -0
  201. package/dist/tests/AuditLogger.edge-cases.test.d.ts +10 -0
  202. package/dist/tests/AuditLogger.edge-cases.test.d.ts.map +1 -0
  203. package/dist/tests/AuditLogger.edge-cases.test.js +183 -0
  204. package/dist/tests/AuditLogger.edge-cases.test.js.map +1 -0
  205. package/dist/tests/CacheManager.test.d.ts +9 -0
  206. package/dist/tests/CacheManager.test.d.ts.map +1 -0
  207. package/dist/tests/CacheManager.test.js +163 -0
  208. package/dist/tests/CacheManager.test.js.map +1 -0
  209. package/dist/tests/DailyIndexPipeline.test.js +3 -3
  210. package/dist/tests/DailyIndexPipeline.test.js.map +1 -1
  211. package/dist/tests/GitHubIndexer.edge-cases.test.d.ts +10 -0
  212. package/dist/tests/GitHubIndexer.edge-cases.test.d.ts.map +1 -0
  213. package/dist/tests/GitHubIndexer.edge-cases.test.js +255 -0
  214. package/dist/tests/GitHubIndexer.edge-cases.test.js.map +1 -0
  215. package/dist/tests/GitHubIndexer.test.js +4 -2
  216. package/dist/tests/GitHubIndexer.test.js.map +1 -1
  217. package/dist/tests/SearchService.test.js +71 -0
  218. package/dist/tests/SearchService.test.js.map +1 -1
  219. package/dist/tests/SkillVersionRepository.test.d.ts +0 -11
  220. package/dist/tests/SkillVersionRepository.test.d.ts.map +1 -1
  221. package/dist/tests/SkillVersionRepository.test.js +131 -194
  222. package/dist/tests/SkillVersionRepository.test.js.map +1 -1
  223. package/dist/tests/api/client.health.test.d.ts +15 -0
  224. package/dist/tests/api/client.health.test.d.ts.map +1 -0
  225. package/dist/tests/api/client.health.test.js +111 -0
  226. package/dist/tests/api/client.health.test.js.map +1 -0
  227. package/dist/tests/db/betterSqlite3Driver.test.d.ts +8 -0
  228. package/dist/tests/db/betterSqlite3Driver.test.d.ts.map +1 -0
  229. package/dist/tests/db/betterSqlite3Driver.test.js +88 -0
  230. package/dist/tests/db/betterSqlite3Driver.test.js.map +1 -0
  231. package/dist/tests/db/database-abstraction.test.js +12 -0
  232. package/dist/tests/db/database-abstraction.test.js.map +1 -1
  233. package/dist/tests/db/schema-migrations.test.d.ts +10 -0
  234. package/dist/tests/db/schema-migrations.test.d.ts.map +1 -0
  235. package/dist/tests/db/schema-migrations.test.js +134 -0
  236. package/dist/tests/db/schema-migrations.test.js.map +1 -0
  237. package/dist/tests/db/sqljsDriver.test.d.ts +9 -0
  238. package/dist/tests/db/sqljsDriver.test.d.ts.map +1 -0
  239. package/dist/tests/db/sqljsDriver.test.js +75 -0
  240. package/dist/tests/db/sqljsDriver.test.js.map +1 -0
  241. package/dist/tests/edge-cases/EdgeCases.test.js +4 -1
  242. package/dist/tests/edge-cases/EdgeCases.test.js.map +1 -1
  243. package/dist/tests/helpers/database.d.ts +32 -0
  244. package/dist/tests/helpers/database.d.ts.map +1 -0
  245. package/dist/tests/helpers/database.js +54 -0
  246. package/dist/tests/helpers/database.js.map +1 -0
  247. package/dist/tests/learning/PatternStore.helpers.test.d.ts +17 -0
  248. package/dist/tests/learning/PatternStore.helpers.test.d.ts.map +1 -0
  249. package/dist/tests/learning/PatternStore.helpers.test.js +301 -0
  250. package/dist/tests/learning/PatternStore.helpers.test.js.map +1 -0
  251. package/dist/tests/repositories/CoInstallRepository.test.d.ts +9 -0
  252. package/dist/tests/repositories/CoInstallRepository.test.d.ts.map +1 -0
  253. package/dist/tests/repositories/CoInstallRepository.test.js +126 -0
  254. package/dist/tests/repositories/CoInstallRepository.test.js.map +1 -0
  255. package/dist/tests/repositories/SkillDependencyRepository.test.d.ts +10 -0
  256. package/dist/tests/repositories/SkillDependencyRepository.test.d.ts.map +1 -0
  257. package/dist/tests/repositories/SkillDependencyRepository.test.js +336 -0
  258. package/dist/tests/repositories/SkillDependencyRepository.test.js.map +1 -0
  259. package/dist/tests/routing/LanguageRouter.test.d.ts +9 -0
  260. package/dist/tests/routing/LanguageRouter.test.d.ts.map +1 -0
  261. package/dist/tests/routing/LanguageRouter.test.js +150 -0
  262. package/dist/tests/routing/LanguageRouter.test.js.map +1 -0
  263. package/dist/tests/session/SessionManager.memory.test.d.ts +11 -0
  264. package/dist/tests/session/SessionManager.memory.test.d.ts.map +1 -0
  265. package/dist/tests/session/SessionManager.memory.test.js +219 -0
  266. package/dist/tests/session/SessionManager.memory.test.js.map +1 -0
  267. package/dist/tests/sources.test.js +1 -1
  268. package/dist/tests/sources.test.js.map +1 -1
  269. package/dist/tests/sync/SyncEngine.test.js +32 -18
  270. package/dist/tests/sync/SyncEngine.test.js.map +1 -1
  271. package/dist/tests/testing/MultiLLMProvider.metrics.test.d.ts +13 -0
  272. package/dist/tests/testing/MultiLLMProvider.metrics.test.d.ts.map +1 -0
  273. package/dist/tests/testing/MultiLLMProvider.metrics.test.js +149 -0
  274. package/dist/tests/testing/MultiLLMProvider.metrics.test.js.map +1 -0
  275. package/dist/tests/testing/MultiLLMProvider.selection.test.d.ts +15 -0
  276. package/dist/tests/testing/MultiLLMProvider.selection.test.d.ts.map +1 -0
  277. package/dist/tests/testing/MultiLLMProvider.selection.test.js +249 -0
  278. package/dist/tests/testing/MultiLLMProvider.selection.test.js.map +1 -0
  279. package/dist/tests/unit/migrations/v10-dependencies.test.d.ts +6 -0
  280. package/dist/tests/unit/migrations/v10-dependencies.test.d.ts.map +1 -0
  281. package/dist/tests/unit/migrations/v10-dependencies.test.js +166 -0
  282. package/dist/tests/unit/migrations/v10-dependencies.test.js.map +1 -0
  283. package/dist/tests/unit/quarantine-query-builder.test.d.ts +10 -0
  284. package/dist/tests/unit/quarantine-query-builder.test.d.ts.map +1 -0
  285. package/dist/tests/unit/quarantine-query-builder.test.js +157 -0
  286. package/dist/tests/unit/quarantine-query-builder.test.js.map +1 -0
  287. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdvisoryRepository.js","sourceRoot":"","sources":["../../../src/repositories/AdvisoryRepository.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAyDH,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACrB,EAAE,CAAc;IAExB,YAAY,EAAgB;QAC1B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,CAAC;IAED,6EAA6E;IAC7E,kBAAkB;IAClB,6EAA6E;IAErE,aAAa,CAAC,GAAgB;QACpC,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,OAAO,EAAE,GAAG,CAAC,QAAQ;YACrB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,gBAAgB,EAAE,GAAG,CAAC,iBAAiB,IAAI,SAAS;YACpD,eAAe,EAAE,GAAG,CAAC,gBAAgB,IAAI,SAAS;YAClD,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;YAChC,YAAY,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;YAC5C,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;YAC1C,SAAS,EAAE,GAAG,CAAC,UAAU;SAC1B,CAAA;IACH,CAAC;IAED,6EAA6E;IAC7E,SAAS;IACT,6EAA6E;IAE7E;;;;;;OAMG;IACH,cAAc,CAAC,QAAuB;QACpC,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;kDAI0C,CAC3C;aACA,GAAG,CACF,QAAQ,CAAC,EAAE,EACX,QAAQ,CAAC,OAAO,EAChB,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,WAAW,EACpB,QAAQ,CAAC,gBAAgB,IAAI,IAAI,EACjC,QAAQ,CAAC,eAAe,IAAI,IAAI,EAChC,QAAQ,CAAC,MAAM,IAAI,IAAI,EACvB,QAAQ,CAAC,YAAY,IAAI,IAAI,EAC7B,QAAQ,CAAC,WAAW,EACpB,QAAQ,CAAC,WAAW,IAAI,IAAI,CAC7B,CAAA;IACL,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,EAAU;QACzB,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;uBAEe,CAChB;aACA,GAAG,CAAC,EAAE,CAAC,CAAA;IACZ,CAAC;IAED,6EAA6E;IAC7E,QAAQ;IACR,6EAA6E;IAE7E;;;;;OAKG;IACH,qBAAqB,CAAC,OAAe;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;;;;;;qCAM6B,CAC9B;aACA,GAAG,CAAC,OAAO,CAAkB,CAAA;QAEhC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/C,CAAC;IAED;;;;;OAKG;IACH,mBAAmB,CAAC,QAAiD;QACnE,IAAI,IAAmB,CAAA;QAEvB,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,GAAG,IAAI,CAAC,EAAE;iBACX,OAAO,CACN;;;;;;uCAM6B,CAC9B;iBACA,GAAG,CAAC,QAAQ,CAAkB,CAAA;QACnC,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,IAAI,CAAC,EAAE;iBACX,OAAO,CACN;;;;;uCAK6B,CAC9B;iBACA,GAAG,EAAmB,CAAA;QAC3B,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/C,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @fileoverview Unit tests for AdvisoryRepository
3
+ * @see SMI-skill-version-tracking Wave 3
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=AdvisoryRepository.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdvisoryRepository.test.d.ts","sourceRoot":"","sources":["../../../src/repositories/AdvisoryRepository.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * @fileoverview Unit tests for AdvisoryRepository
3
+ * @see SMI-skill-version-tracking Wave 3
4
+ */
5
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
6
+ import { createTestDatabase, closeDatabase } from '../../tests/helpers/database.js';
7
+ import { AdvisoryRepository } from './AdvisoryRepository.js';
8
+ // ============================================================================
9
+ // Test helpers
10
+ // ============================================================================
11
+ function makeAdvisory(overrides = {}) {
12
+ return {
13
+ id: 'SSA-2026-001',
14
+ skillId: 'community/commit-helper',
15
+ severity: 'high',
16
+ title: 'Prompt injection in commit-helper',
17
+ description: 'Maliciously crafted commit messages can inject arbitrary prompts.',
18
+ publishedAt: '2026-01-15T00:00:00Z',
19
+ ...overrides,
20
+ };
21
+ }
22
+ // ============================================================================
23
+ // Tests
24
+ // ============================================================================
25
+ describe('AdvisoryRepository', () => {
26
+ let db;
27
+ let repo;
28
+ beforeEach(() => {
29
+ db = createTestDatabase();
30
+ repo = new AdvisoryRepository(db);
31
+ });
32
+ afterEach(() => {
33
+ closeDatabase(db);
34
+ });
35
+ // --------------------------------------------------------------------------
36
+ // upsertAdvisory
37
+ // --------------------------------------------------------------------------
38
+ describe('upsertAdvisory', () => {
39
+ it('creates a new advisory record', () => {
40
+ const advisory = makeAdvisory();
41
+ repo.upsertAdvisory(advisory);
42
+ const results = repo.getAdvisoriesForSkill('community/commit-helper');
43
+ expect(results).toHaveLength(1);
44
+ expect(results[0].id).toBe('SSA-2026-001');
45
+ expect(results[0].severity).toBe('high');
46
+ expect(results[0].title).toBe('Prompt injection in commit-helper');
47
+ });
48
+ it('replaces an existing advisory on re-upsert (idempotent)', () => {
49
+ repo.upsertAdvisory(makeAdvisory({ title: 'Original title' }));
50
+ repo.upsertAdvisory(makeAdvisory({ title: 'Updated title' }));
51
+ const results = repo.getAdvisoriesForSkill('community/commit-helper');
52
+ expect(results).toHaveLength(1);
53
+ expect(results[0].title).toBe('Updated title');
54
+ });
55
+ it('stores optional JSON fields correctly', () => {
56
+ const advisory = makeAdvisory({
57
+ affectedVersions: '["<1.2.0"]',
58
+ patchedVersions: '[">=1.2.0"]',
59
+ cweIds: '["CWE-77"]',
60
+ advisoryRefs: '["https://example.com/advisory"]',
61
+ });
62
+ repo.upsertAdvisory(advisory);
63
+ const results = repo.getAdvisoriesForSkill('community/commit-helper');
64
+ expect(results[0].affectedVersions).toBe('["<1.2.0"]');
65
+ expect(results[0].patchedVersions).toBe('[">=1.2.0"]');
66
+ expect(results[0].cweIds).toBe('["CWE-77"]');
67
+ expect(results[0].advisoryRefs).toBe('["https://example.com/advisory"]');
68
+ });
69
+ });
70
+ // --------------------------------------------------------------------------
71
+ // getAdvisoriesForSkill
72
+ // --------------------------------------------------------------------------
73
+ describe('getAdvisoriesForSkill', () => {
74
+ it('returns only active (non-withdrawn) advisories for the given skill', () => {
75
+ repo.upsertAdvisory(makeAdvisory({ id: 'SSA-2026-001', skillId: 'community/commit-helper' }));
76
+ repo.upsertAdvisory(makeAdvisory({ id: 'SSA-2026-002', skillId: 'community/commit-helper' }));
77
+ repo.upsertAdvisory(makeAdvisory({ id: 'SSA-2026-003', skillId: 'community/other-skill' }));
78
+ // Withdraw SSA-2026-001
79
+ repo.withdrawAdvisory('SSA-2026-001');
80
+ const results = repo.getAdvisoriesForSkill('community/commit-helper');
81
+ expect(results).toHaveLength(1);
82
+ expect(results[0].id).toBe('SSA-2026-002');
83
+ });
84
+ it('returns empty array when skill has no advisories', () => {
85
+ const results = repo.getAdvisoriesForSkill('community/nonexistent');
86
+ expect(results).toHaveLength(0);
87
+ });
88
+ it('does not return advisories for other skills', () => {
89
+ repo.upsertAdvisory(makeAdvisory({ id: 'SSA-2026-004', skillId: 'community/other-skill' }));
90
+ const results = repo.getAdvisoriesForSkill('community/commit-helper');
91
+ expect(results).toHaveLength(0);
92
+ });
93
+ });
94
+ // --------------------------------------------------------------------------
95
+ // getActiveAdvisories
96
+ // --------------------------------------------------------------------------
97
+ describe('getActiveAdvisories', () => {
98
+ beforeEach(() => {
99
+ repo.upsertAdvisory(makeAdvisory({ id: 'SSA-2026-010', severity: 'critical', skillId: 'community/skill-a' }));
100
+ repo.upsertAdvisory(makeAdvisory({ id: 'SSA-2026-011', severity: 'high', skillId: 'community/skill-b' }));
101
+ repo.upsertAdvisory(makeAdvisory({ id: 'SSA-2026-012', severity: 'medium', skillId: 'community/skill-c' }));
102
+ repo.upsertAdvisory(makeAdvisory({ id: 'SSA-2026-013', severity: 'low', skillId: 'community/skill-d' }));
103
+ repo.upsertAdvisory(makeAdvisory({ id: 'SSA-2026-014', severity: 'high', skillId: 'community/skill-e' }));
104
+ // Withdraw one of the high advisories
105
+ repo.withdrawAdvisory('SSA-2026-014');
106
+ });
107
+ it('returns all active advisories when no severity filter', () => {
108
+ const results = repo.getActiveAdvisories();
109
+ // 4 active (SSA-2026-010 through SSA-2026-013), SSA-2026-014 is withdrawn
110
+ expect(results).toHaveLength(4);
111
+ });
112
+ it('filters by severity when provided', () => {
113
+ const highs = repo.getActiveAdvisories('high');
114
+ expect(highs).toHaveLength(1);
115
+ expect(highs[0].id).toBe('SSA-2026-011');
116
+ });
117
+ it('returns active advisories for the given severity', () => {
118
+ const results = repo.getActiveAdvisories('critical');
119
+ // SSA-2026-010 is still active
120
+ expect(results).toHaveLength(1);
121
+ expect(results[0].id).toBe('SSA-2026-010');
122
+ });
123
+ it('does not return withdrawn advisories in unfiltered results', () => {
124
+ const results = repo.getActiveAdvisories();
125
+ const ids = results.map((r) => r.id);
126
+ expect(ids).not.toContain('SSA-2026-014');
127
+ });
128
+ });
129
+ // --------------------------------------------------------------------------
130
+ // withdrawAdvisory
131
+ // --------------------------------------------------------------------------
132
+ describe('withdrawAdvisory', () => {
133
+ it('sets withdrawn_at on the advisory', () => {
134
+ repo.upsertAdvisory(makeAdvisory({ id: 'SSA-2026-020' }));
135
+ // Advisory should be active before withdrawal
136
+ const before = repo.getAdvisoriesForSkill('community/commit-helper');
137
+ expect(before).toHaveLength(1);
138
+ repo.withdrawAdvisory('SSA-2026-020');
139
+ // Advisory should no longer appear in active queries
140
+ const after = repo.getAdvisoriesForSkill('community/commit-helper');
141
+ expect(after).toHaveLength(0);
142
+ });
143
+ it('is a no-op for non-existent advisory id', () => {
144
+ // Should not throw
145
+ expect(() => repo.withdrawAdvisory('SSA-9999-999')).not.toThrow();
146
+ });
147
+ });
148
+ });
149
+ //# sourceMappingURL=AdvisoryRepository.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdvisoryRepository.test.js","sourceRoot":"","sources":["../../../src/repositories/AdvisoryRepository.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * @fileoverview CoInstallRepository — session-scoped co-install tracking
3
+ * @module @skillsmith/core/repositories/CoInstallRepository
4
+ * @see SMI-2761: Co-install recommendations
5
+ *
6
+ * Records pairs of skills installed together in the same session.
7
+ * Symmetric: installing (A, B) always creates both (A,B) and (B,A) rows.
8
+ * Surfacing threshold: install_count >= 5 before including in responses.
9
+ */
10
+ import type { Database as DatabaseType } from '../db/database-interface.js';
11
+ /** A skill summary returned in co-install recommendations */
12
+ export interface CoInstallSummary {
13
+ /** Skill ID (e.g. "anthropic/commit") */
14
+ skillId: string;
15
+ /** Human-readable skill name */
16
+ name: string;
17
+ /** Short description */
18
+ description?: string;
19
+ /** Author slug */
20
+ author?: string;
21
+ /** Number of times installed together with the queried skill */
22
+ installCount: number;
23
+ }
24
+ /**
25
+ * Repository for reading and writing skill co-install records.
26
+ *
27
+ * Gracefully handles databases where the skill_co_installs table has not been
28
+ * created yet (returns empty results instead of throwing). This allows
29
+ * test contexts that use createDatabase() directly (without running all
30
+ * migrations) to work without errors.
31
+ */
32
+ export declare class CoInstallRepository {
33
+ private db;
34
+ constructor(db: DatabaseType);
35
+ /**
36
+ * Record a co-install between two skills (both orderings).
37
+ *
38
+ * Uses INSERT OR REPLACE with incremented count so repeated co-installs
39
+ * accumulate. Both (A→B) and (B→A) are written for symmetric queries.
40
+ *
41
+ * @param skillIdA - First skill ID
42
+ * @param skillIdB - Second skill ID
43
+ */
44
+ recordCoInstall(skillIdA: string, skillIdB: string): void;
45
+ /**
46
+ * Record co-installs for all pairs in a set of skills installed together.
47
+ *
48
+ * For N skills, records N*(N-1) rows (each pair in both orderings).
49
+ * No-op when fewer than 2 skill IDs provided.
50
+ *
51
+ * @param skillIds - Array of skill IDs installed in the same session
52
+ */
53
+ recordSessionCoInstalls(skillIds: string[]): void;
54
+ /**
55
+ * Get the top skills co-installed with a given skill.
56
+ *
57
+ * Joins against the skills table to include name/description/author.
58
+ * Only returns skills with install_count >= minCount (default 5).
59
+ * Returns an empty array when the table does not exist or has no results.
60
+ *
61
+ * @param skillId - The skill to look up co-installs for
62
+ * @param limit - Maximum results to return (default 5)
63
+ * @param minCount - Minimum co-install count to include (default 5)
64
+ * @returns Array of co-installed skill summaries, ordered by count desc
65
+ */
66
+ getTopCoInstalls(skillId: string, limit?: number, minCount?: number): CoInstallSummary[];
67
+ }
68
+ //# sourceMappingURL=CoInstallRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoInstallRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/CoInstallRepository.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAM3E,6DAA6D;AAC7D,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAA;CACrB;AAMD;;;;;;;GAOG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,EAAE,CAAc;gBAEZ,EAAE,EAAE,YAAY;IAI5B;;;;;;;;OAQG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAsBzD;;;;;;;OAOG;IACH,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IASjD;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAI,EAAE,QAAQ,SAAI,GAAG,gBAAgB,EAAE;CAyC/E"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * @fileoverview CoInstallRepository — session-scoped co-install tracking
3
+ * @module @skillsmith/core/repositories/CoInstallRepository
4
+ * @see SMI-2761: Co-install recommendations
5
+ *
6
+ * Records pairs of skills installed together in the same session.
7
+ * Symmetric: installing (A, B) always creates both (A,B) and (B,A) rows.
8
+ * Surfacing threshold: install_count >= 5 before including in responses.
9
+ */
10
+ // ============================================================================
11
+ // Repository
12
+ // ============================================================================
13
+ /**
14
+ * Repository for reading and writing skill co-install records.
15
+ *
16
+ * Gracefully handles databases where the skill_co_installs table has not been
17
+ * created yet (returns empty results instead of throwing). This allows
18
+ * test contexts that use createDatabase() directly (without running all
19
+ * migrations) to work without errors.
20
+ */
21
+ export class CoInstallRepository {
22
+ db;
23
+ constructor(db) {
24
+ this.db = db;
25
+ }
26
+ /**
27
+ * Record a co-install between two skills (both orderings).
28
+ *
29
+ * Uses INSERT OR REPLACE with incremented count so repeated co-installs
30
+ * accumulate. Both (A→B) and (B→A) are written for symmetric queries.
31
+ *
32
+ * @param skillIdA - First skill ID
33
+ * @param skillIdB - Second skill ID
34
+ */
35
+ recordCoInstall(skillIdA, skillIdB) {
36
+ if (skillIdA === skillIdB)
37
+ return;
38
+ try {
39
+ const upsert = this.db.prepare(`
40
+ INSERT INTO skill_co_installs (skill_id_a, skill_id_b, install_count, last_updated_at)
41
+ VALUES (?, ?, 1, datetime('now'))
42
+ ON CONFLICT(skill_id_a, skill_id_b)
43
+ DO UPDATE SET
44
+ install_count = install_count + 1,
45
+ last_updated_at = datetime('now')
46
+ `);
47
+ upsert.run(skillIdA, skillIdB);
48
+ upsert.run(skillIdB, skillIdA);
49
+ }
50
+ catch (error) {
51
+ const msg = error instanceof Error ? error.message : String(error);
52
+ // Gracefully handle missing table (pre-migration contexts)
53
+ if (msg.includes('no such table'))
54
+ return;
55
+ throw error;
56
+ }
57
+ }
58
+ /**
59
+ * Record co-installs for all pairs in a set of skills installed together.
60
+ *
61
+ * For N skills, records N*(N-1) rows (each pair in both orderings).
62
+ * No-op when fewer than 2 skill IDs provided.
63
+ *
64
+ * @param skillIds - Array of skill IDs installed in the same session
65
+ */
66
+ recordSessionCoInstalls(skillIds) {
67
+ if (skillIds.length < 2)
68
+ return;
69
+ for (let i = 0; i < skillIds.length; i++) {
70
+ for (let j = i + 1; j < skillIds.length; j++) {
71
+ this.recordCoInstall(skillIds[i], skillIds[j]);
72
+ }
73
+ }
74
+ }
75
+ /**
76
+ * Get the top skills co-installed with a given skill.
77
+ *
78
+ * Joins against the skills table to include name/description/author.
79
+ * Only returns skills with install_count >= minCount (default 5).
80
+ * Returns an empty array when the table does not exist or has no results.
81
+ *
82
+ * @param skillId - The skill to look up co-installs for
83
+ * @param limit - Maximum results to return (default 5)
84
+ * @param minCount - Minimum co-install count to include (default 5)
85
+ * @returns Array of co-installed skill summaries, ordered by count desc
86
+ */
87
+ getTopCoInstalls(skillId, limit = 5, minCount = 5) {
88
+ try {
89
+ const rows = this.db
90
+ .prepare(`
91
+ SELECT
92
+ c.skill_id_b AS skillId,
93
+ s.name AS name,
94
+ s.description AS description,
95
+ s.author AS author,
96
+ c.install_count AS installCount
97
+ FROM skill_co_installs c
98
+ LEFT JOIN skills s ON s.id = c.skill_id_b
99
+ WHERE c.skill_id_a = ?
100
+ AND c.install_count >= ?
101
+ ORDER BY c.install_count DESC
102
+ LIMIT ?
103
+ `)
104
+ .all(skillId, minCount, limit);
105
+ return rows.map((row) => ({
106
+ skillId: row.skillId,
107
+ name: row.name ?? row.skillId,
108
+ description: row.description ?? undefined,
109
+ author: row.author ?? undefined,
110
+ installCount: row.installCount,
111
+ }));
112
+ }
113
+ catch (error) {
114
+ const msg = error instanceof Error ? error.message : String(error);
115
+ // Gracefully handle missing table (pre-migration contexts)
116
+ if (msg.includes('no such table'))
117
+ return [];
118
+ throw error;
119
+ }
120
+ }
121
+ }
122
+ //# sourceMappingURL=CoInstallRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoInstallRepository.js","sourceRoot":"","sources":["../../../src/repositories/CoInstallRepository.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAsBH,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E;;;;;;;GAOG;AACH,MAAM,OAAO,mBAAmB;IACtB,EAAE,CAAc;IAExB,YAAY,EAAgB;QAC1B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,CAAC;IAED;;;;;;;;OAQG;IACH,eAAe,CAAC,QAAgB,EAAE,QAAgB;QAChD,IAAI,QAAQ,KAAK,QAAQ;YAAE,OAAM;QAEjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;OAO9B,CAAC,CAAA;YACF,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YAC9B,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAClE,2DAA2D;YAC3D,IAAI,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAAE,OAAM;YACzC,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,uBAAuB,CAAC,QAAkB;QACxC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAM;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;YAChD,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,OAAe,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;iBACjB,OAAO,CACN;;;;;;;;;;;;;OAaH,CACE;iBACA,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAM7B,CAAA;YAEF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACxB,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO;gBAC7B,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;gBACzC,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,SAAS;gBAC/B,YAAY,EAAE,GAAG,CAAC,YAAY;aAC/B,CAAC,CAAC,CAAA;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAClE,2DAA2D;YAC3D,IAAI,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAAE,OAAO,EAAE,CAAA;YAC5C,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"IndexerRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/IndexerRepository.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAa,MAAM,6BAA6B,CAAA;AAEtF,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAEhE;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,KAAK;IACzC;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAExB;;OAEG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAE7B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAA;IAEjB;;OAEG;IACH,KAAK,EAAE,YAAY,CAAA;IAEnB;;OAEG;IACH,cAAc,EAAE,OAAO,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAClD;AAyBD;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,EAAE,CAAc;IACxB,OAAO,CAAC,gBAAgB,CAAQ;gBAEpB,EAAE,EAAE,YAAY;IAM5B,OAAO,CAAC,KAAK,CAQZ;IAED;;OAEG;IACH,OAAO,CAAC,eAAe;IAiCvB,OAAO,CAAC,iBAAiB;IA2DzB;;;OAGG;IACH,OAAO,CAAC,UAAU;IAyBlB;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,YAAY;IAgEhF;;OAEG;IACH,uBAAuB,CAAC,YAAY,EAAE,aAAa,EAAE,GAAG,iBAAiB;IAkCzE;;OAEG;IACH,kBAAkB,CAAC,SAAS,GAAE,MAAkB,EAAE,KAAK,SAAM,GAAG,YAAY,EAAE;IAK9E;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAKnD;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAK3C;;OAEG;IACH,cAAc,CAAC,KAAK,SAAK,EAAE,MAAM,SAAI,GAAG,YAAY,EAAE;IAKtD;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAuC9B;AAED,eAAe,iBAAiB,CAAA"}
1
+ {"version":3,"file":"IndexerRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/IndexerRepository.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAa,MAAM,6BAA6B,CAAA;AAEtF,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAEhE;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,KAAK;IACzC;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAExB;;OAEG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAE7B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAA;IAEjB;;OAEG;IACH,KAAK,EAAE,YAAY,CAAA;IAEnB;;OAEG;IACH,cAAc,EAAE,OAAO,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAClD;AAyBD;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,EAAE,CAAc;IACxB,OAAO,CAAC,gBAAgB,CAAQ;gBAEpB,EAAE,EAAE,YAAY;IAM5B,OAAO,CAAC,KAAK,CAQZ;IAED;;OAEG;IACH,OAAO,CAAC,eAAe;IAiCvB,OAAO,CAAC,iBAAiB;IA2DzB;;;OAGG;IACH,OAAO,CAAC,UAAU;IAyBlB;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,YAAY;IAgEhF;;OAEG;IACH,uBAAuB,CAAC,YAAY,EAAE,aAAa,EAAE,GAAG,iBAAiB;IAkCzE;;OAEG;IACH,kBAAkB,CAAC,SAAS,GAAE,MAAkB,EAAE,KAAK,SAAM,GAAG,YAAY,EAAE;IAK9E;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAKnD;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAK3C;;OAEG;IACH,cAAc,CAAC,KAAK,SAAK,EAAE,MAAM,SAAI,GAAG,YAAY,EAAE;IAKtD;;OAEG;IACH,OAAO,CAAC,qBAAqB;CA8C9B;AAED,eAAe,iBAAiB,CAAA"}
@@ -259,7 +259,11 @@ export class IndexerRepository {
259
259
  if (metadata.license)
260
260
  score += 10;
261
261
  // Has dependencies (10 points)
262
- if (metadata.dependencies.length > 0)
262
+ if (metadata.dependencies &&
263
+ (metadata.dependencies.skills?.length ||
264
+ metadata.dependencies.platform ||
265
+ metadata.dependencies.models ||
266
+ metadata.dependencies.environment))
263
267
  score += 10;
264
268
  // Has category (10 points)
265
269
  if (metadata.category)
@@ -1 +1 @@
1
- {"version":3,"file":"IndexerRepository.js","sourceRoot":"","sources":["../../../src/repositories/IndexerRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IndexerRepository.js","sourceRoot":"","sources":["../../../src/repositories/IndexerRepository.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAsGnC;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACpB,EAAE,CAAc;IAChB,gBAAgB,GAAG,KAAK,CAAA;IAEhC,YAAY,EAAgB;QAC1B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC,eAAe,EAAE,CAAA;QACtB,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAC1B,CAAC;IAEO,KAAK,CAQZ;IAED;;OAEG;IACK,eAAe;QACrB,IAAI,IAAI,CAAC,gBAAgB;YAAE,OAAM;QAEjC,yBAAyB;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAA4B,CAAA;QAC/E,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAE9C,sBAAsB;QACtB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAA;QACpE,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAA;QAC/D,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAA;QACrE,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;QAChE,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;KAGZ,CAAC,CAAA;QAEF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;IAC9B,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,KAAK,GAAG;YACX,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;OAEhC,CAAC;YAEF,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;OAE5B,CAAC;YAEF,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;OAU9B,CAAC;YAEF,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;OAc9B,CAAC;YAEF,oBAAoB,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;OAMrC,CAAC;YAEF,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;OAK1B,CAAC;YAEF,iBAAiB,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;OAElC,CAAC;SACH,CAAA;IACH,CAAC;IAED;;;OAGG;IACK,UAAU,CAAC,GAAoB;QACrC,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO,EAAE,GAAG,CAAC,QAAQ;YACrB,YAAY,EAAE,GAAG,CAAC,aAAa;YAC/B,SAAS,EAAE,GAAG,CAAC,UAAuB;YACtC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;YAClC,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,KAAK;YACrC,gCAAgC;YAChC,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,qBAAqB,EAAE,GAAG,CAAC,uBAAuB,IAAI,CAAC;YACvD,iBAAiB,EAAE,GAAG,CAAC,mBAAmB;YAC1C,cAAc,EAAE,GAAG,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC;YAC/E,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,aAAa,EAAE,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,UAAU;YACpD,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,cAAc,EAAE,GAAG,CAAC,gBAAgB;YACpC,UAAU,EAAE,GAAG,CAAC,WAAW;SAC5B,CAAA;IACH,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,QAAuB,EAAE,SAAqB;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAgC,CAAA;QAEhG,IAAI,QAAQ,EAAE,CAAC;YACb,2BAA2B;YAC3B,IAAI,QAAQ,CAAC,UAAU,KAAK,QAAQ,CAAC,GAAG,EAAE,CAAC;gBACzC,4BAA4B;gBAC5B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;gBAC7C,OAAO;oBACL,QAAQ,EAAE,KAAK;oBACf,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,QAAQ,EAAE,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;oBAClF,cAAc,EAAE,KAAK;iBACtB,CAAA;YACH,CAAC;YAED,0BAA0B;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YAC1C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAC1B,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,WAAW,EACpB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,KAAK,EACjC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EACpC,SAAS,IAAI,SAAS,EACtB,IAAI,EACJ,QAAQ,CAAC,GAAG,EACZ,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,OAAO,CACjB,CAAA;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAoB,CAAA;YACnF,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC/B,cAAc,EAAE,IAAI;aACrB,CAAA;QACH,CAAC;QAED,mBAAmB;QACnB,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAE1C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAC1B,EAAE,EACF,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,WAAW,EACpB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,KAAK,EACjC,QAAQ,CAAC,OAAO,EAChB,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EACpC,SAAS,IAAI,SAAS,EACtB,IAAI,EACJ,QAAQ,CAAC,GAAG,EACZ,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,UAAU,CACpB,CAAA;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAoB,CAAA;QACpF,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAChC,cAAc,EAAE,IAAI;SACrB,CAAA;IACH,CAAC;IAED;;OAEG;IACH,uBAAuB,CAAC,YAA6B;QACnD,MAAM,MAAM,GAAsB;YAChC,KAAK,EAAE,YAAY,CAAC,MAAM;YAC1B,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,CAAC;YACZ,MAAM,EAAE,EAAE;SACX,CAAA;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,KAAsB,EAAE,EAAE;YACjE,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACH,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;oBAEtD,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;wBAC1B,MAAM,CAAC,QAAQ,EAAE,CAAA;oBACnB,CAAC;yBAAM,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC;wBACvC,MAAM,CAAC,OAAO,EAAE,CAAA;oBAClB,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,SAAS,EAAE,CAAA;oBACpB,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;wBACjB,OAAO,EAAE,QAAQ,CAAC,OAAO;wBACzB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;qBAC9D,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,WAAW,CAAC,YAAY,CAAC,CAAA;QACzB,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,YAAoB,SAAS,EAAE,KAAK,GAAG,GAAG;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAsB,CAAA;QACvF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;IAChD,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAe;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAgC,CAAA;QAClF,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC1C,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,GAAW;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAgC,CAAA;QAC1E,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC1C,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAsB,CAAA;QACzE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;IAChD,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,QAAuB;QACnD,IAAI,KAAK,GAAG,CAAC,CAAA;QAEb,8BAA8B;QAC9B,IAAI,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5D,KAAK,IAAI,EAAE,CAAA;YACX,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG;gBAAE,KAAK,IAAI,EAAE,CAAA;QACpD,CAAC;QAED,uBAAuB;QACvB,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,KAAK,IAAI,CAAC,CAAA;YACV,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAA;YACzC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAA;QAC3C,CAAC;QAED,0BAA0B;QAC1B,IAAI,QAAQ,CAAC,OAAO;YAAE,KAAK,IAAI,EAAE,CAAA;QAEjC,yBAAyB;QACzB,IAAI,QAAQ,CAAC,MAAM;YAAE,KAAK,IAAI,EAAE,CAAA;QAEhC,0BAA0B;QAC1B,IAAI,QAAQ,CAAC,OAAO;YAAE,KAAK,IAAI,EAAE,CAAA;QAEjC,+BAA+B;QAC/B,IACE,QAAQ,CAAC,YAAY;YACrB,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM;gBACnC,QAAQ,CAAC,YAAY,CAAC,QAAQ;gBAC9B,QAAQ,CAAC,YAAY,CAAC,MAAM;gBAC5B,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC;YAEpC,KAAK,IAAI,EAAE,CAAA;QAEb,2BAA2B;QAC3B,IAAI,QAAQ,CAAC,QAAQ;YAAE,KAAK,IAAI,EAAE,CAAA;QAElC,gCAAgC;QAChC,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACrC,KAAK,IAAI,EAAE,CAAA;YACX,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI;gBAAE,KAAK,IAAI,CAAC,CAAA;QACnD,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,CAAA;IACnC,CAAC;CACF;AAED,eAAe,iBAAiB,CAAA"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * @fileoverview SkillDependencyRepository — CRUD for skill_dependencies table
3
+ * @module @skillsmith/core/repositories/SkillDependencyRepository
4
+ * @see SMI-3143: Create SkillDependencyRepository CRUD
5
+ *
6
+ * Reads and writes dependency records from the skill_dependencies table
7
+ * (migration v10). Follows the CoInstallRepository pattern: constructor
8
+ * takes a DatabaseType, and all methods gracefully handle a missing table
9
+ * by returning empty results instead of throwing.
10
+ */
11
+ import type { Database as DatabaseType } from '../db/database-interface.js';
12
+ import type { SkillDependencyRow, DepSource } from '../types/dependencies.js';
13
+ /**
14
+ * Repository for reading and writing skill dependency records.
15
+ *
16
+ * Gracefully handles databases where the skill_dependencies table has not
17
+ * been created yet (returns empty results instead of throwing). This allows
18
+ * test contexts that use createDatabase() directly (without running all
19
+ * migrations) to work without errors.
20
+ */
21
+ export declare class SkillDependencyRepository {
22
+ private db;
23
+ constructor(db: DatabaseType);
24
+ /**
25
+ * Set (upsert) dependencies for a skill from a given source.
26
+ *
27
+ * Uses INSERT OR REPLACE on the unique index
28
+ * (skill_id, dep_type, dep_target, dep_source) so repeated calls
29
+ * with the same key are idempotent.
30
+ *
31
+ * @param skillId - The skill these dependencies belong to
32
+ * @param deps - Array of dependency rows to upsert
33
+ * @param source - The dep_source value to stamp on each row
34
+ */
35
+ setDependencies(skillId: string, deps: SkillDependencyRow[], source: DepSource): void;
36
+ /**
37
+ * Get all dependencies for a skill, ordered by dep_type.
38
+ *
39
+ * @param skillId - The skill to look up dependencies for
40
+ * @returns Array of dependency rows, or empty array if table missing
41
+ */
42
+ getDependencies(skillId: string): SkillDependencyRow[];
43
+ /**
44
+ * Get dependencies for a skill filtered by source.
45
+ *
46
+ * @param skillId - The skill to look up dependencies for
47
+ * @param source - Filter by dep_source value
48
+ * @returns Array of dependency rows matching the source
49
+ */
50
+ getDependenciesBySource(skillId: string, source: DepSource): SkillDependencyRow[];
51
+ /**
52
+ * Reverse lookup: find all skills that depend on a given target.
53
+ *
54
+ * @param depTarget - The dependency target to search for
55
+ * @param depType - Optional dep_type filter
56
+ * @returns Array of dependency rows where dep_target matches
57
+ */
58
+ getDependents(depTarget: string, depType?: string): SkillDependencyRow[];
59
+ /**
60
+ * Delete only inferred dependencies for a skill.
61
+ * Preserves declared dependencies.
62
+ *
63
+ * @param skillId - The skill to clear inferred deps for
64
+ */
65
+ clearInferred(skillId: string): void;
66
+ /**
67
+ * Delete all dependencies for a skill.
68
+ *
69
+ * @param skillId - The skill to clear all deps for
70
+ */
71
+ clearAll(skillId: string): void;
72
+ }
73
+ //# sourceMappingURL=SkillDependencyRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillDependencyRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/SkillDependencyRepository.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC3E,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAM7E;;;;;;;GAOG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,EAAE,CAAc;gBAEZ,EAAE,EAAE,YAAY;IAI5B;;;;;;;;;;OAUG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI;IAsCrF;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAoBtD;;;;;;OAMG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,kBAAkB,EAAE;IAoBjF;;;;;;OAMG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAkCxE;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAiBpC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAgBhC"}