@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.
- package/README.md +2 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/analysis/DependencyMerger.d.ts +39 -0
- package/dist/src/analysis/DependencyMerger.d.ts.map +1 -0
- package/dist/src/analysis/DependencyMerger.js +191 -0
- package/dist/src/analysis/DependencyMerger.js.map +1 -0
- package/dist/src/analysis/DependencyMerger.test.d.ts +2 -0
- package/dist/src/analysis/DependencyMerger.test.d.ts.map +1 -0
- package/dist/src/analysis/DependencyMerger.test.js +258 -0
- package/dist/src/analysis/DependencyMerger.test.js.map +1 -0
- package/dist/src/analysis/McpReferenceExtractor.d.ts +42 -0
- package/dist/src/analysis/McpReferenceExtractor.d.ts.map +1 -0
- package/dist/src/analysis/McpReferenceExtractor.js +92 -0
- package/dist/src/analysis/McpReferenceExtractor.js.map +1 -0
- package/dist/src/analysis/McpReferenceExtractor.test.d.ts +2 -0
- package/dist/src/analysis/McpReferenceExtractor.test.d.ts.map +1 -0
- package/dist/src/analysis/McpReferenceExtractor.test.js +262 -0
- package/dist/src/analysis/McpReferenceExtractor.test.js.map +1 -0
- package/dist/src/api/client.d.ts +1 -0
- package/dist/src/api/client.d.ts.map +1 -1
- package/dist/src/api/client.health.d.ts +26 -0
- package/dist/src/api/client.health.d.ts.map +1 -0
- package/dist/src/api/client.health.js +74 -0
- package/dist/src/api/client.health.js.map +1 -0
- package/dist/src/api/client.js +3 -51
- package/dist/src/api/client.js.map +1 -1
- package/dist/src/api/schemas.d.ts +4 -4
- package/dist/src/db/createDatabase.d.ts +9 -1
- package/dist/src/db/createDatabase.d.ts.map +1 -1
- package/dist/src/db/createDatabase.js +9 -1
- package/dist/src/db/createDatabase.js.map +1 -1
- package/dist/src/db/drivers/sqljsDriver.d.ts.map +1 -1
- package/dist/src/db/drivers/sqljsDriver.js +7 -8
- package/dist/src/db/drivers/sqljsDriver.js.map +1 -1
- package/dist/src/db/migrations/v10-dependencies.d.ts +18 -0
- package/dist/src/db/migrations/v10-dependencies.d.ts.map +1 -0
- package/dist/src/db/migrations/v10-dependencies.js +50 -0
- package/dist/src/db/migrations/v10-dependencies.js.map +1 -0
- package/dist/src/db/migrations/v2-phase5-columns.d.ts +7 -0
- package/dist/src/db/migrations/v2-phase5-columns.d.ts.map +1 -0
- package/dist/src/db/migrations/v2-phase5-columns.js +16 -0
- package/dist/src/db/migrations/v2-phase5-columns.js.map +1 -0
- package/dist/src/db/migrations/v3-sync-tables.d.ts +6 -0
- package/dist/src/db/migrations/v3-sync-tables.d.ts.map +1 -0
- package/dist/src/db/migrations/v3-sync-tables.js +41 -0
- package/dist/src/db/migrations/v3-sync-tables.js.map +1 -0
- package/dist/src/db/migrations/v4-security-columns.d.ts +7 -0
- package/dist/src/db/migrations/v4-security-columns.d.ts.map +1 -0
- package/dist/src/db/migrations/v4-security-columns.js +17 -0
- package/dist/src/db/migrations/v4-security-columns.js.map +1 -0
- package/dist/src/db/migrations/v5b-change-type.d.ts +19 -0
- package/dist/src/db/migrations/v5b-change-type.d.ts.map +1 -0
- package/dist/src/db/migrations/v5b-change-type.js +22 -0
- package/dist/src/db/migrations/v5b-change-type.js.map +1 -0
- package/dist/src/db/migrations/v6-advisories.d.ts +32 -0
- package/dist/src/db/migrations/v6-advisories.d.ts.map +1 -0
- package/dist/src/db/migrations/v6-advisories.js +53 -0
- package/dist/src/db/migrations/v6-advisories.js.map +1 -0
- package/dist/src/db/migrations/v7-compatibility.d.ts +21 -0
- package/dist/src/db/migrations/v7-compatibility.d.ts.map +1 -0
- package/dist/src/db/migrations/v7-compatibility.js +23 -0
- package/dist/src/db/migrations/v7-compatibility.js.map +1 -0
- package/dist/src/db/migrations/v8-co-installs.d.ts +21 -0
- package/dist/src/db/migrations/v8-co-installs.d.ts.map +1 -0
- package/dist/src/db/migrations/v8-co-installs.js +33 -0
- package/dist/src/db/migrations/v8-co-installs.js.map +1 -0
- package/dist/src/db/schema.d.ts +5 -16
- package/dist/src/db/schema.d.ts.map +1 -1
- package/dist/src/db/schema.js +50 -79
- package/dist/src/db/schema.js.map +1 -1
- package/dist/src/exports/repositories.d.ts +6 -0
- package/dist/src/exports/repositories.d.ts.map +1 -1
- package/dist/src/exports/repositories.js +21 -0
- package/dist/src/exports/repositories.js.map +1 -1
- package/dist/src/exports/services.d.ts +2 -0
- package/dist/src/exports/services.d.ts.map +1 -1
- package/dist/src/exports/services.js +5 -0
- package/dist/src/exports/services.js.map +1 -1
- package/dist/src/exports/types.d.ts +2 -1
- package/dist/src/exports/types.d.ts.map +1 -1
- package/dist/src/exports/types.js.map +1 -1
- package/dist/src/indexer/GitHubIndexer.d.ts +3 -1
- package/dist/src/indexer/GitHubIndexer.d.ts.map +1 -1
- package/dist/src/indexer/GitHubIndexer.js.map +1 -1
- package/dist/src/indexer/SkillParser.d.ts +22 -9
- package/dist/src/indexer/SkillParser.d.ts.map +1 -1
- package/dist/src/indexer/SkillParser.js +17 -10
- package/dist/src/indexer/SkillParser.js.map +1 -1
- package/dist/src/learning/PatternStore.d.ts +0 -2
- package/dist/src/learning/PatternStore.d.ts.map +1 -1
- package/dist/src/learning/PatternStore.helpers.d.ts +19 -1
- package/dist/src/learning/PatternStore.helpers.d.ts.map +1 -1
- package/dist/src/learning/PatternStore.helpers.js +51 -0
- package/dist/src/learning/PatternStore.helpers.js.map +1 -1
- package/dist/src/learning/PatternStore.js +5 -37
- package/dist/src/learning/PatternStore.js.map +1 -1
- package/dist/src/repositories/AdvisoryRepository.d.ts +80 -0
- package/dist/src/repositories/AdvisoryRepository.d.ts.map +1 -0
- package/dist/src/repositories/AdvisoryRepository.js +128 -0
- package/dist/src/repositories/AdvisoryRepository.js.map +1 -0
- package/dist/src/repositories/AdvisoryRepository.test.d.ts +6 -0
- package/dist/src/repositories/AdvisoryRepository.test.d.ts.map +1 -0
- package/dist/src/repositories/AdvisoryRepository.test.js +149 -0
- package/dist/src/repositories/AdvisoryRepository.test.js.map +1 -0
- package/dist/src/repositories/CoInstallRepository.d.ts +68 -0
- package/dist/src/repositories/CoInstallRepository.d.ts.map +1 -0
- package/dist/src/repositories/CoInstallRepository.js +122 -0
- package/dist/src/repositories/CoInstallRepository.js.map +1 -0
- package/dist/src/repositories/IndexerRepository.d.ts.map +1 -1
- package/dist/src/repositories/IndexerRepository.js +5 -1
- package/dist/src/repositories/IndexerRepository.js.map +1 -1
- package/dist/src/repositories/SkillDependencyRepository.d.ts +73 -0
- package/dist/src/repositories/SkillDependencyRepository.d.ts.map +1 -0
- package/dist/src/repositories/SkillDependencyRepository.js +199 -0
- package/dist/src/repositories/SkillDependencyRepository.js.map +1 -0
- package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
- package/dist/src/repositories/SkillRepository.js +16 -5
- package/dist/src/repositories/SkillRepository.js.map +1 -1
- package/dist/src/scripts/validation/types.d.ts +2 -2
- package/dist/src/services/SearchService.helpers.d.ts.map +1 -1
- package/dist/src/services/SearchService.helpers.js +4 -0
- package/dist/src/services/SearchService.helpers.js.map +1 -1
- package/dist/src/services/SearchService.types.d.ts +1 -0
- package/dist/src/services/SearchService.types.d.ts.map +1 -1
- package/dist/src/services/TaskRunner.d.ts +5 -81
- package/dist/src/services/TaskRunner.d.ts.map +1 -1
- package/dist/src/services/TaskRunner.js +7 -68
- package/dist/src/services/TaskRunner.js.map +1 -1
- package/dist/src/services/TaskRunner.process.d.ts +33 -0
- package/dist/src/services/TaskRunner.process.d.ts.map +1 -0
- package/dist/src/services/TaskRunner.process.js +70 -0
- package/dist/src/services/TaskRunner.process.js.map +1 -0
- package/dist/src/services/TaskRunner.types.d.ts +76 -0
- package/dist/src/services/TaskRunner.types.d.ts.map +1 -0
- package/dist/src/services/TaskRunner.types.js +22 -0
- package/dist/src/services/TaskRunner.types.js.map +1 -0
- package/dist/src/services/__tests__/TaskRunner.process.test.d.ts +13 -0
- package/dist/src/services/__tests__/TaskRunner.process.test.d.ts.map +1 -0
- package/dist/src/services/__tests__/TaskRunner.process.test.js +91 -0
- package/dist/src/services/__tests__/TaskRunner.process.test.js.map +1 -0
- package/dist/src/services/quarantine/QuarantineService.d.ts +3 -24
- package/dist/src/services/quarantine/QuarantineService.d.ts.map +1 -1
- package/dist/src/services/quarantine/QuarantineService.js +8 -205
- package/dist/src/services/quarantine/QuarantineService.js.map +1 -1
- package/dist/src/services/quarantine/QuarantineService.multiapproval.d.ts +57 -0
- package/dist/src/services/quarantine/QuarantineService.multiapproval.d.ts.map +1 -0
- package/dist/src/services/quarantine/QuarantineService.multiapproval.js +211 -0
- package/dist/src/services/quarantine/QuarantineService.multiapproval.js.map +1 -0
- package/dist/src/session/SessionManager.d.ts +2 -33
- package/dist/src/session/SessionManager.d.ts.map +1 -1
- package/dist/src/session/SessionManager.js +14 -238
- package/dist/src/session/SessionManager.js.map +1 -1
- package/dist/src/session/SessionManager.memory.d.ts +67 -0
- package/dist/src/session/SessionManager.memory.d.ts.map +1 -0
- package/dist/src/session/SessionManager.memory.js +262 -0
- package/dist/src/session/SessionManager.memory.js.map +1 -0
- package/dist/src/sources/SourceIndexer.d.ts +3 -1
- package/dist/src/sources/SourceIndexer.d.ts.map +1 -1
- package/dist/src/sources/SourceIndexer.js.map +1 -1
- package/dist/src/sync/SyncEngine.d.ts +13 -1
- package/dist/src/sync/SyncEngine.d.ts.map +1 -1
- package/dist/src/sync/SyncEngine.js +50 -1
- package/dist/src/sync/SyncEngine.js.map +1 -1
- package/dist/src/testing/MultiLLMProvider.d.ts +5 -6
- package/dist/src/testing/MultiLLMProvider.d.ts.map +1 -1
- package/dist/src/testing/MultiLLMProvider.js +18 -130
- package/dist/src/testing/MultiLLMProvider.js.map +1 -1
- package/dist/src/testing/MultiLLMProvider.metrics.d.ts +33 -0
- package/dist/src/testing/MultiLLMProvider.metrics.d.ts.map +1 -0
- package/dist/src/testing/MultiLLMProvider.metrics.js +87 -0
- package/dist/src/testing/MultiLLMProvider.metrics.js.map +1 -0
- package/dist/src/testing/MultiLLMProvider.selection.d.ts +77 -0
- package/dist/src/testing/MultiLLMProvider.selection.d.ts.map +1 -0
- package/dist/src/testing/MultiLLMProvider.selection.js +151 -0
- package/dist/src/testing/MultiLLMProvider.selection.js.map +1 -0
- package/dist/src/types/dependencies.d.ts +85 -0
- package/dist/src/types/dependencies.d.ts.map +1 -0
- package/dist/src/types/dependencies.js +11 -0
- package/dist/src/types/dependencies.js.map +1 -0
- package/dist/src/types/skill.d.ts +13 -0
- package/dist/src/types/skill.d.ts.map +1 -1
- package/dist/src/types/skill.js.map +1 -1
- package/dist/src/types.d.ts +32 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/versioning/change-classifier.d.ts +38 -0
- package/dist/src/versioning/change-classifier.d.ts.map +1 -0
- package/dist/src/versioning/change-classifier.js +187 -0
- package/dist/src/versioning/change-classifier.js.map +1 -0
- package/dist/src/versioning/change-classifier.test.d.ts +6 -0
- package/dist/src/versioning/change-classifier.test.d.ts.map +1 -0
- package/dist/src/versioning/change-classifier.test.js +275 -0
- package/dist/src/versioning/change-classifier.test.js.map +1 -0
- package/dist/src/versioning/update-risk.d.ts +50 -0
- package/dist/src/versioning/update-risk.d.ts.map +1 -0
- package/dist/src/versioning/update-risk.js +80 -0
- package/dist/src/versioning/update-risk.js.map +1 -0
- package/dist/src/versioning/update-risk.test.d.ts +6 -0
- package/dist/src/versioning/update-risk.test.d.ts.map +1 -0
- package/dist/src/versioning/update-risk.test.js +200 -0
- package/dist/src/versioning/update-risk.test.js.map +1 -0
- package/dist/tests/AuditLogger.edge-cases.test.d.ts +10 -0
- package/dist/tests/AuditLogger.edge-cases.test.d.ts.map +1 -0
- package/dist/tests/AuditLogger.edge-cases.test.js +183 -0
- package/dist/tests/AuditLogger.edge-cases.test.js.map +1 -0
- package/dist/tests/CacheManager.test.d.ts +9 -0
- package/dist/tests/CacheManager.test.d.ts.map +1 -0
- package/dist/tests/CacheManager.test.js +163 -0
- package/dist/tests/CacheManager.test.js.map +1 -0
- package/dist/tests/DailyIndexPipeline.test.js +3 -3
- package/dist/tests/DailyIndexPipeline.test.js.map +1 -1
- package/dist/tests/GitHubIndexer.edge-cases.test.d.ts +10 -0
- package/dist/tests/GitHubIndexer.edge-cases.test.d.ts.map +1 -0
- package/dist/tests/GitHubIndexer.edge-cases.test.js +255 -0
- package/dist/tests/GitHubIndexer.edge-cases.test.js.map +1 -0
- package/dist/tests/GitHubIndexer.test.js +4 -2
- package/dist/tests/GitHubIndexer.test.js.map +1 -1
- package/dist/tests/SearchService.test.js +71 -0
- package/dist/tests/SearchService.test.js.map +1 -1
- package/dist/tests/SkillVersionRepository.test.d.ts +0 -11
- package/dist/tests/SkillVersionRepository.test.d.ts.map +1 -1
- package/dist/tests/SkillVersionRepository.test.js +131 -194
- package/dist/tests/SkillVersionRepository.test.js.map +1 -1
- package/dist/tests/api/client.health.test.d.ts +15 -0
- package/dist/tests/api/client.health.test.d.ts.map +1 -0
- package/dist/tests/api/client.health.test.js +111 -0
- package/dist/tests/api/client.health.test.js.map +1 -0
- package/dist/tests/db/betterSqlite3Driver.test.d.ts +8 -0
- package/dist/tests/db/betterSqlite3Driver.test.d.ts.map +1 -0
- package/dist/tests/db/betterSqlite3Driver.test.js +88 -0
- package/dist/tests/db/betterSqlite3Driver.test.js.map +1 -0
- package/dist/tests/db/database-abstraction.test.js +12 -0
- package/dist/tests/db/database-abstraction.test.js.map +1 -1
- package/dist/tests/db/schema-migrations.test.d.ts +10 -0
- package/dist/tests/db/schema-migrations.test.d.ts.map +1 -0
- package/dist/tests/db/schema-migrations.test.js +134 -0
- package/dist/tests/db/schema-migrations.test.js.map +1 -0
- package/dist/tests/db/sqljsDriver.test.d.ts +9 -0
- package/dist/tests/db/sqljsDriver.test.d.ts.map +1 -0
- package/dist/tests/db/sqljsDriver.test.js +75 -0
- package/dist/tests/db/sqljsDriver.test.js.map +1 -0
- package/dist/tests/edge-cases/EdgeCases.test.js +4 -1
- package/dist/tests/edge-cases/EdgeCases.test.js.map +1 -1
- package/dist/tests/helpers/database.d.ts +32 -0
- package/dist/tests/helpers/database.d.ts.map +1 -0
- package/dist/tests/helpers/database.js +54 -0
- package/dist/tests/helpers/database.js.map +1 -0
- package/dist/tests/learning/PatternStore.helpers.test.d.ts +17 -0
- package/dist/tests/learning/PatternStore.helpers.test.d.ts.map +1 -0
- package/dist/tests/learning/PatternStore.helpers.test.js +301 -0
- package/dist/tests/learning/PatternStore.helpers.test.js.map +1 -0
- package/dist/tests/repositories/CoInstallRepository.test.d.ts +9 -0
- package/dist/tests/repositories/CoInstallRepository.test.d.ts.map +1 -0
- package/dist/tests/repositories/CoInstallRepository.test.js +126 -0
- package/dist/tests/repositories/CoInstallRepository.test.js.map +1 -0
- package/dist/tests/repositories/SkillDependencyRepository.test.d.ts +10 -0
- package/dist/tests/repositories/SkillDependencyRepository.test.d.ts.map +1 -0
- package/dist/tests/repositories/SkillDependencyRepository.test.js +336 -0
- package/dist/tests/repositories/SkillDependencyRepository.test.js.map +1 -0
- package/dist/tests/routing/LanguageRouter.test.d.ts +9 -0
- package/dist/tests/routing/LanguageRouter.test.d.ts.map +1 -0
- package/dist/tests/routing/LanguageRouter.test.js +150 -0
- package/dist/tests/routing/LanguageRouter.test.js.map +1 -0
- package/dist/tests/session/SessionManager.memory.test.d.ts +11 -0
- package/dist/tests/session/SessionManager.memory.test.d.ts.map +1 -0
- package/dist/tests/session/SessionManager.memory.test.js +219 -0
- package/dist/tests/session/SessionManager.memory.test.js.map +1 -0
- package/dist/tests/sources.test.js +1 -1
- package/dist/tests/sources.test.js.map +1 -1
- package/dist/tests/sync/SyncEngine.test.js +32 -18
- package/dist/tests/sync/SyncEngine.test.js.map +1 -1
- package/dist/tests/testing/MultiLLMProvider.metrics.test.d.ts +13 -0
- package/dist/tests/testing/MultiLLMProvider.metrics.test.d.ts.map +1 -0
- package/dist/tests/testing/MultiLLMProvider.metrics.test.js +149 -0
- package/dist/tests/testing/MultiLLMProvider.metrics.test.js.map +1 -0
- package/dist/tests/testing/MultiLLMProvider.selection.test.d.ts +15 -0
- package/dist/tests/testing/MultiLLMProvider.selection.test.d.ts.map +1 -0
- package/dist/tests/testing/MultiLLMProvider.selection.test.js +249 -0
- package/dist/tests/testing/MultiLLMProvider.selection.test.js.map +1 -0
- package/dist/tests/unit/migrations/v10-dependencies.test.d.ts +6 -0
- package/dist/tests/unit/migrations/v10-dependencies.test.d.ts.map +1 -0
- package/dist/tests/unit/migrations/v10-dependencies.test.js +166 -0
- package/dist/tests/unit/migrations/v10-dependencies.test.js.map +1 -0
- package/dist/tests/unit/quarantine-query-builder.test.d.ts +10 -0
- package/dist/tests/unit/quarantine-query-builder.test.d.ts.map +1 -0
- package/dist/tests/unit/quarantine-query-builder.test.js +157 -0
- package/dist/tests/unit/quarantine-query-builder.test.js.map +1 -0
- 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 @@
|
|
|
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;
|
|
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
|
|
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":"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"}
|
|
@@ -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"}
|