@skillsmith/core 0.4.13 → 0.4.15
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/analytics/storage.d.ts +8 -2
- package/dist/src/analytics/storage.d.ts.map +1 -1
- package/dist/src/analytics/storage.js +16 -5
- package/dist/src/analytics/storage.js.map +1 -1
- package/dist/src/analytics/usage-tracker.d.ts +8 -2
- package/dist/src/analytics/usage-tracker.d.ts.map +1 -1
- package/dist/src/analytics/usage-tracker.js +24 -11
- package/dist/src/analytics/usage-tracker.js.map +1 -1
- 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/benchmarks/IndexBenchmark.js +2 -2
- package/dist/src/benchmarks/IndexBenchmark.js.map +1 -1
- package/dist/src/benchmarks/SearchBenchmark.js +2 -2
- package/dist/src/benchmarks/SearchBenchmark.js.map +1 -1
- package/dist/src/benchmarks/cacheBenchmark.js +2 -2
- package/dist/src/benchmarks/cacheBenchmark.js.map +1 -1
- package/dist/src/benchmarks/embeddingBenchmark.js +1 -1
- package/dist/src/benchmarks/embeddingBenchmark.js.map +1 -1
- package/dist/src/cache/CacheManager.d.ts +13 -2
- package/dist/src/cache/CacheManager.d.ts.map +1 -1
- package/dist/src/cache/CacheManager.js +27 -6
- package/dist/src/cache/CacheManager.js.map +1 -1
- package/dist/src/cache/TieredCache.d.ts +15 -2
- package/dist/src/cache/TieredCache.d.ts.map +1 -1
- package/dist/src/cache/TieredCache.js +52 -70
- package/dist/src/cache/TieredCache.js.map +1 -1
- package/dist/src/cache/index.d.ts +12 -0
- package/dist/src/cache/index.d.ts.map +1 -1
- package/dist/src/cache/index.js +20 -1
- package/dist/src/cache/index.js.map +1 -1
- package/dist/src/cache/sqlite.d.ts +15 -1
- package/dist/src/cache/sqlite.d.ts.map +1 -1
- package/dist/src/cache/sqlite.js +22 -4
- package/dist/src/cache/sqlite.js.map +1 -1
- 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 +21 -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 +5 -2
- package/dist/src/db/drivers/sqljsDriver.js.map +1 -1
- package/dist/src/db/migrations/v5-skill-versions.d.ts +30 -0
- package/dist/src/db/migrations/v5-skill-versions.d.ts.map +1 -0
- package/dist/src/db/migrations/v5-skill-versions.js +45 -0
- package/dist/src/db/migrations/v5-skill-versions.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 +6 -11
- package/dist/src/db/schema.d.ts.map +1 -1
- package/dist/src/db/schema.js +38 -17
- package/dist/src/db/schema.js.map +1 -1
- package/dist/src/embeddings/hnsw-store.d.ts +14 -0
- package/dist/src/embeddings/hnsw-store.d.ts.map +1 -1
- package/dist/src/embeddings/hnsw-store.helpers.d.ts +4 -4
- package/dist/src/embeddings/hnsw-store.helpers.d.ts.map +1 -1
- package/dist/src/embeddings/hnsw-store.helpers.js +5 -5
- package/dist/src/embeddings/hnsw-store.helpers.js.map +1 -1
- package/dist/src/embeddings/hnsw-store.js +32 -4
- package/dist/src/embeddings/hnsw-store.js.map +1 -1
- package/dist/src/embeddings/index.d.ts +15 -1
- package/dist/src/embeddings/index.d.ts.map +1 -1
- package/dist/src/embeddings/index.js +24 -4
- package/dist/src/embeddings/index.js.map +1 -1
- package/dist/src/exports/repositories.d.ts +5 -0
- package/dist/src/exports/repositories.d.ts.map +1 -1
- package/dist/src/exports/repositories.js +17 -0
- package/dist/src/exports/repositories.js.map +1 -1
- package/dist/src/exports/types.d.ts +1 -1
- package/dist/src/exports/types.d.ts.map +1 -1
- package/dist/src/exports/types.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/indexer/SkillParser.d.ts +2 -0
- package/dist/src/indexer/SkillParser.d.ts.map +1 -1
- package/dist/src/indexer/SkillParser.js.map +1 -1
- package/dist/src/learning/PatternStore.d.ts +8 -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 +19 -39
- 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/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/repositories/SkillVersionRepository.d.ts +82 -0
- package/dist/src/repositories/SkillVersionRepository.d.ts.map +1 -0
- package/dist/src/repositories/SkillVersionRepository.js +118 -0
- package/dist/src/repositories/SkillVersionRepository.js.map +1 -0
- package/dist/src/search/hybrid.d.ts +15 -4
- package/dist/src/search/hybrid.d.ts.map +1 -1
- package/dist/src/search/hybrid.js +25 -9
- package/dist/src/search/hybrid.js.map +1 -1
- 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/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/skill.d.ts +10 -0
- package/dist/src/types/skill.d.ts.map +1 -1
- package/dist/src/types.d.ts +34 -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/AnalyticsStorage.test.js +2 -2
- package/dist/tests/AnalyticsStorage.test.js.map +1 -1
- 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/CacheSecurity.test.js +4 -4
- package/dist/tests/CacheSecurity.test.js.map +1 -1
- package/dist/tests/EmbeddingService.test.js +11 -12
- package/dist/tests/EmbeddingService.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/HybridSearch.test.d.ts +8 -0
- package/dist/tests/HybridSearch.test.d.ts.map +1 -0
- package/dist/tests/HybridSearch.test.js +48 -0
- package/dist/tests/HybridSearch.test.js.map +1 -0
- package/dist/tests/SearchService.test.js +71 -0
- package/dist/tests/SearchService.test.js.map +1 -1
- package/dist/tests/SkillVersionRepository.test.d.ts +2 -0
- package/dist/tests/SkillVersionRepository.test.d.ts.map +1 -0
- package/dist/tests/SkillVersionRepository.test.js +168 -0
- package/dist/tests/SkillVersionRepository.test.js.map +1 -0
- package/dist/tests/TieredCache.test.js +10 -10
- package/dist/tests/TieredCache.test.js.map +1 -1
- package/dist/tests/UsageTracker.test.js +6 -6
- package/dist/tests/UsageTracker.test.js.map +1 -1
- package/dist/tests/analytics/usage-tracker.test.js +8 -8
- package/dist/tests/analytics/usage-tracker.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/cache.test.js +7 -9
- package/dist/tests/cache.test.js.map +1 -1
- 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 +48 -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/embeddings/hnsw-store.test.js +27 -24
- package/dist/tests/embeddings/hnsw-store.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/learning/PatternStore.test.js +9 -0
- package/dist/tests/learning/PatternStore.test.js.map +1 -1
- 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/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/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/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 -3
package/dist/src/cache/sqlite.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SMI-585: L2 SQLite Persistent Cache
|
|
3
3
|
* Persistent cache layer with configurable TTL
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { createDatabaseAsync } from '../db/createDatabase.js';
|
|
6
6
|
import { isValidCacheKey } from './CacheEntry.js';
|
|
7
7
|
export class L2Cache {
|
|
8
8
|
db;
|
|
@@ -12,11 +12,29 @@ export class L2Cache {
|
|
|
12
12
|
// Prepared statements (created once, reused for performance)
|
|
13
13
|
// Type parameter represents the return type of get()/all() queries
|
|
14
14
|
stmts;
|
|
15
|
+
/**
|
|
16
|
+
* @deprecated Use L2Cache.create(options) — async factory with WASM fallback.
|
|
17
|
+
* The dbPath passed to this constructor throws to prevent silent data loss.
|
|
18
|
+
*/
|
|
15
19
|
constructor(options) {
|
|
16
|
-
this.db = createDatabaseSync(options.dbPath);
|
|
17
20
|
this.ttlSeconds = options.ttlSeconds ?? 3600; // 1 hour default
|
|
18
|
-
|
|
19
|
-
|
|
21
|
+
if ('dbPath' in options) {
|
|
22
|
+
throw new Error('[L2Cache] Cannot open a database file in the sync constructor. ' +
|
|
23
|
+
'Use await L2Cache.create(options) instead.');
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Async factory — supports both native and WASM SQLite.
|
|
28
|
+
*
|
|
29
|
+
* @param options - Cache options including dbPath
|
|
30
|
+
* @returns Fully initialised L2Cache instance
|
|
31
|
+
*/
|
|
32
|
+
static async create(options) {
|
|
33
|
+
const instance = new L2Cache({ ttlSeconds: options.ttlSeconds });
|
|
34
|
+
instance.db = await createDatabaseAsync(options.dbPath);
|
|
35
|
+
instance.initTable();
|
|
36
|
+
instance.stmts = instance.prepareStatements();
|
|
37
|
+
return instance;
|
|
20
38
|
}
|
|
21
39
|
initTable() {
|
|
22
40
|
this.db.exec(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../src/cache/sqlite.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../src/cache/sqlite.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,8 +61,16 @@ export declare function createDatabaseSync(path?: string, options?: DatabaseOpti
|
|
|
61
61
|
*
|
|
62
62
|
* @param path - Path to database file, or ':memory:' for in-memory
|
|
63
63
|
* @param options - Database connection options
|
|
64
|
-
* @returns Promise resolving to Database instance
|
|
64
|
+
* @returns Promise resolving to Database instance (bare connection — caller must call initializeSchema)
|
|
65
65
|
* @throws Error if no database driver is available
|
|
66
|
+
*
|
|
67
|
+
* @important This factory returns a **bare connection with no schema tables**. Unlike the
|
|
68
|
+
* sync path, no schema initialization happens automatically. Always call `initializeSchema(db)`
|
|
69
|
+
* immediately after for new/application databases:
|
|
70
|
+
* ```typescript
|
|
71
|
+
* const db = await createDatabaseAsync(path)
|
|
72
|
+
* initializeSchema(db) // required — creates tables if they don't exist
|
|
73
|
+
* ```
|
|
66
74
|
*/
|
|
67
75
|
export declare function createDatabaseAsync(path?: string, options?: DatabaseOptions): Promise<Database>;
|
|
68
76
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createDatabase.d.ts","sourceRoot":"","sources":["../../../src/db/createDatabase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAOxE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,QAAQ,CAAA;AAEpD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,UAAU,EAAE,CA0BrD;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,UAAU,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"createDatabase.d.ts","sourceRoot":"","sources":["../../../src/db/createDatabase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAOxE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,QAAQ,CAAA;AAEpD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,UAAU,EAAE,CA0BrD;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,UAAU,GAAG,IAAI,CAiBjD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,MAAmB,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,QAAQ,CAgBjG;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,GAAE,MAAmB,EACzB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,QAAQ,CAAC,CA+BnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,2BAAqB,CAAA"}
|
|
@@ -53,6 +53,10 @@ export function detectAvailableDrivers() {
|
|
|
53
53
|
* @returns The driver type to use, or null if none available
|
|
54
54
|
*/
|
|
55
55
|
export function getBestDriver() {
|
|
56
|
+
// Allow env var override for testing WASM path in Docker
|
|
57
|
+
if (process.env.SKILLSMITH_FORCE_WASM === 'true') {
|
|
58
|
+
return isSqlJsAvailable() ? 'sql.js' : null;
|
|
59
|
+
}
|
|
56
60
|
// Prefer native for performance
|
|
57
61
|
if (isBetterSqlite3Available()) {
|
|
58
62
|
return 'better-sqlite3';
|
|
@@ -98,10 +102,26 @@ export function createDatabaseSync(path = ':memory:', options) {
|
|
|
98
102
|
*
|
|
99
103
|
* @param path - Path to database file, or ':memory:' for in-memory
|
|
100
104
|
* @param options - Database connection options
|
|
101
|
-
* @returns Promise resolving to Database instance
|
|
105
|
+
* @returns Promise resolving to Database instance (bare connection — caller must call initializeSchema)
|
|
102
106
|
* @throws Error if no database driver is available
|
|
107
|
+
*
|
|
108
|
+
* @important This factory returns a **bare connection with no schema tables**. Unlike the
|
|
109
|
+
* sync path, no schema initialization happens automatically. Always call `initializeSchema(db)`
|
|
110
|
+
* immediately after for new/application databases:
|
|
111
|
+
* ```typescript
|
|
112
|
+
* const db = await createDatabaseAsync(path)
|
|
113
|
+
* initializeSchema(db) // required — creates tables if they don't exist
|
|
114
|
+
* ```
|
|
103
115
|
*/
|
|
104
116
|
export async function createDatabaseAsync(path = ':memory:', options) {
|
|
117
|
+
// Allow env var override for testing WASM path in Docker
|
|
118
|
+
if (process.env.SKILLSMITH_FORCE_WASM === 'true') {
|
|
119
|
+
if (isSqlJsAvailable()) {
|
|
120
|
+
return await createSqlJsDatabase(path, options);
|
|
121
|
+
}
|
|
122
|
+
throw new Error('[Skillsmith] SKILLSMITH_FORCE_WASM is set but sql.js (WASM) is not available.\n\n' +
|
|
123
|
+
'Install sql.js: npm install sql.js');
|
|
124
|
+
}
|
|
105
125
|
// Try native first
|
|
106
126
|
if (isBetterSqlite3Available()) {
|
|
107
127
|
return createBetterSqlite3Database(path, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createDatabase.js","sourceRoot":"","sources":["../../../src/db/createDatabase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAgBhF;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,OAAO,GAAiB,EAAE,CAAA;IAEhC,uBAAuB;IACvB,IAAI,wBAAwB,EAAE,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,uEAAuE;SAChF,CAAC,CAAA;IACJ,CAAC;IAED,oDAAoD;IACpD,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACnD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,8BAA8B;SACvC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,gCAAgC;IAChC,IAAI,wBAAwB,EAAE,EAAE,CAAC;QAC/B,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED,2BAA2B;IAC3B,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACvB,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe,UAAU,EAAE,OAAyB;IACrF,IAAI,CAAC,wBAAwB,EAAE,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,uEAAuE;YACrE,uBAAuB;YACvB,iEAAiE;YACjE,gCAAgC;YAChC,oCAAoC;YACpC,cAAc;YACd,yDAAyD;YACzD,yDAAyD;YACzD,2DAA2D,CAC9D,CAAA;IACH,CAAC;IAED,OAAO,2BAA2B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACnD,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"createDatabase.js","sourceRoot":"","sources":["../../../src/db/createDatabase.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqljsDriver.d.ts","sourceRoot":"","sources":["../../../../src/db/drivers/sqljsDriver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAa,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAY/F,UAAU,aAAa;IACrB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;IACpC,MAAM,IAAI,UAAU,CAAA;IACpB,KAAK,IAAI,IAAI,CAAA;CACd;AAED,UAAU,cAAc;IACtB,IAAI,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAA;IACvC,IAAI,IAAI,OAAO,CAAA;IACf,GAAG,IAAI,UAAU,EAAE,CAAA;IACnB,cAAc,IAAI,MAAM,EAAE,CAAA;IAC1B,KAAK,IAAI,IAAI,CAAA;IACb,IAAI,IAAI,IAAI,CAAA;CACb;AAGD,KAAK,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,UAAU,CAAA;AACrD,KAAK,eAAe,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"sqljsDriver.d.ts","sourceRoot":"","sources":["../../../../src/db/drivers/sqljsDriver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAa,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAY/F,UAAU,aAAa;IACrB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;IACpC,MAAM,IAAI,UAAU,CAAA;IACpB,KAAK,IAAI,IAAI,CAAA;CACd;AAED,UAAU,cAAc;IACtB,IAAI,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAA;IACvC,IAAI,IAAI,OAAO,CAAA;IACf,GAAG,IAAI,UAAU,EAAE,CAAA;IACnB,cAAc,IAAI,MAAM,EAAE,CAAA;IAC1B,KAAK,IAAI,IAAI,CAAA;IACb,IAAI,IAAI,IAAI,CAAA;CACb;AAGD,KAAK,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,UAAU,CAAA;AACrD,KAAK,eAAe,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AAgLhE;;GAEG;AACH,qBAAa,oBAAqB,YAAW,QAAQ;IAQjD,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAR3B,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,OAAO,CAAC,iBAAiB,CAAI;gBAGV,EAAE,EAAE,aAAa,EACjB,QAAQ,EAAE,MAAM,EACjC,OAAO,CAAC,EAAE,eAAe;IAM3B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvB,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAI/C,WAAW,CAAC,CAAC,EAAE,IAAI,SAAS,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC;IAuC3F,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAsB/B,KAAK,IAAI,IAAI;IAYb;;OAEG;IACH,OAAO,IAAI,IAAI;IAOf;;;OAGG;IACH,MAAM,IAAI,UAAU;IAIpB,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;OAGG;IACH,IAAI,MAAM,IAAI,aAAa,CAE1B;CACF;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,GAAE,MAAmB,EACzB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,oBAAoB,CAAC,CAqB/B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAO1C"}
|
|
@@ -31,14 +31,17 @@ async function loadSqlJs() {
|
|
|
31
31
|
try {
|
|
32
32
|
// Dynamic import to avoid loading at module evaluation time
|
|
33
33
|
// Using fts5-sql-bundle for FTS5 full-text search support
|
|
34
|
-
// Handle both ESM and CJS module formats
|
|
35
|
-
//
|
|
34
|
+
// Handle both ESM and CJS module formats. fts5-sql-bundle's declared types
|
|
35
|
+
// don't fully reflect its runtime export shapes, so we cast through unknown.
|
|
36
36
|
const module = (await import('fts5-sql-bundle'));
|
|
37
37
|
// Extract initSqlJs function from various export shapes:
|
|
38
38
|
// - ESM named export: module.initSqlJs
|
|
39
39
|
// - ESM default with named: module.default.initSqlJs
|
|
40
40
|
// - CJS interop: module.default.default
|
|
41
41
|
const initSqlJs = module.initSqlJs || module.default?.initSqlJs || module.default?.default || module.default;
|
|
42
|
+
if (!initSqlJs) {
|
|
43
|
+
throw new Error('[Skillsmith] fts5-sql-bundle: could not locate initSqlJs export');
|
|
44
|
+
}
|
|
42
45
|
// Initialize with bundled WASM - fts5-sql-bundle has a built-in locateFile
|
|
43
46
|
// that correctly resolves the WASM file in its dist/ directory
|
|
44
47
|
sqlJsModule = (await initSqlJs());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqljsDriver.js","sourceRoot":"","sources":["../../../../src/db/drivers/sqljsDriver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEjE,oDAAoD;AACpD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"sqljsDriver.js","sourceRoot":"","sources":["../../../../src/db/drivers/sqljsDriver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Migration v5 — skill_versions table
|
|
3
|
+
* @module @skillsmith/core/db/migrations/v5-skill-versions
|
|
4
|
+
* @see SMI-skill-version-tracking Wave 1
|
|
5
|
+
*
|
|
6
|
+
* Creates the skill_versions table for persistent content-hash-based
|
|
7
|
+
* version tracking. Deliberately uses no FK constraint on skill_id so
|
|
8
|
+
* that version history is preserved even when a skill is removed from
|
|
9
|
+
* the registry (soft reference by design).
|
|
10
|
+
*
|
|
11
|
+
* No change_type column in this migration — deferred to Wave 2 per plan.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* SQL for the skill_versions migration (v5).
|
|
15
|
+
*
|
|
16
|
+
* Table columns:
|
|
17
|
+
* - id AUTOINCREMENT surrogate key
|
|
18
|
+
* - skill_id Registry skill identifier (TEXT, not FK)
|
|
19
|
+
* - content_hash SHA-256 hex digest of skill content proxy
|
|
20
|
+
* - recorded_at Unix epoch seconds (DEFAULT unixepoch())
|
|
21
|
+
* - semver Optional semver string from skill metadata
|
|
22
|
+
* - metadata Optional JSON blob for future extension
|
|
23
|
+
*
|
|
24
|
+
* Indexes:
|
|
25
|
+
* - UNIQUE (skill_id, content_hash) — makes recordVersion idempotent
|
|
26
|
+
* via INSERT OR IGNORE
|
|
27
|
+
* - (skill_id, recorded_at DESC) — efficient "latest version" queries
|
|
28
|
+
*/
|
|
29
|
+
export declare const MIGRATION_V5_SQL = "\nCREATE TABLE IF NOT EXISTS skill_versions (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n skill_id TEXT NOT NULL,\n content_hash TEXT NOT NULL,\n recorded_at INTEGER NOT NULL DEFAULT (unixepoch()),\n semver TEXT,\n metadata TEXT\n);\n\nCREATE UNIQUE INDEX IF NOT EXISTS idx_skill_versions_skill_hash\n ON skill_versions(skill_id, content_hash);\n\nCREATE INDEX IF NOT EXISTS idx_skill_versions_skill_recorded\n ON skill_versions(skill_id, recorded_at DESC);\n";
|
|
30
|
+
//# sourceMappingURL=v5-skill-versions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v5-skill-versions.d.ts","sourceRoot":"","sources":["../../../../src/db/migrations/v5-skill-versions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB,qfAe5B,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Migration v5 — skill_versions table
|
|
3
|
+
* @module @skillsmith/core/db/migrations/v5-skill-versions
|
|
4
|
+
* @see SMI-skill-version-tracking Wave 1
|
|
5
|
+
*
|
|
6
|
+
* Creates the skill_versions table for persistent content-hash-based
|
|
7
|
+
* version tracking. Deliberately uses no FK constraint on skill_id so
|
|
8
|
+
* that version history is preserved even when a skill is removed from
|
|
9
|
+
* the registry (soft reference by design).
|
|
10
|
+
*
|
|
11
|
+
* No change_type column in this migration — deferred to Wave 2 per plan.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* SQL for the skill_versions migration (v5).
|
|
15
|
+
*
|
|
16
|
+
* Table columns:
|
|
17
|
+
* - id AUTOINCREMENT surrogate key
|
|
18
|
+
* - skill_id Registry skill identifier (TEXT, not FK)
|
|
19
|
+
* - content_hash SHA-256 hex digest of skill content proxy
|
|
20
|
+
* - recorded_at Unix epoch seconds (DEFAULT unixepoch())
|
|
21
|
+
* - semver Optional semver string from skill metadata
|
|
22
|
+
* - metadata Optional JSON blob for future extension
|
|
23
|
+
*
|
|
24
|
+
* Indexes:
|
|
25
|
+
* - UNIQUE (skill_id, content_hash) — makes recordVersion idempotent
|
|
26
|
+
* via INSERT OR IGNORE
|
|
27
|
+
* - (skill_id, recorded_at DESC) — efficient "latest version" queries
|
|
28
|
+
*/
|
|
29
|
+
export const MIGRATION_V5_SQL = `
|
|
30
|
+
CREATE TABLE IF NOT EXISTS skill_versions (
|
|
31
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
32
|
+
skill_id TEXT NOT NULL,
|
|
33
|
+
content_hash TEXT NOT NULL,
|
|
34
|
+
recorded_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
35
|
+
semver TEXT,
|
|
36
|
+
metadata TEXT
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_skill_versions_skill_hash
|
|
40
|
+
ON skill_versions(skill_id, content_hash);
|
|
41
|
+
|
|
42
|
+
CREATE INDEX IF NOT EXISTS idx_skill_versions_skill_recorded
|
|
43
|
+
ON skill_versions(skill_id, recorded_at DESC);
|
|
44
|
+
`;
|
|
45
|
+
//# sourceMappingURL=v5-skill-versions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v5-skill-versions.js","sourceRoot":"","sources":["../../../../src/db/migrations/v5-skill-versions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;CAe/B,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Migration v5b — add change_type column to skill_versions
|
|
3
|
+
* @module @skillsmith/core/db/migrations/v5b-change-type
|
|
4
|
+
* @see SMI-skill-version-tracking Wave 2
|
|
5
|
+
*
|
|
6
|
+
* Additive ALTER TABLE on skill_versions; does not increment SCHEMA_VERSION
|
|
7
|
+
* (stays at 5) because the migration system handles duplicate-column errors
|
|
8
|
+
* gracefully and the new column is nullable with no FK implications.
|
|
9
|
+
*
|
|
10
|
+
* Valid change_type values: 'major' | 'minor' | 'patch' | 'unknown'
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* SQL for the skill_versions change_type migration (v5b).
|
|
14
|
+
*
|
|
15
|
+
* Adds a TEXT column constrained to the four valid change-classification
|
|
16
|
+
* values. NULL is allowed so that existing rows are unaffected.
|
|
17
|
+
*/
|
|
18
|
+
export declare const MIGRATION_V5B_SQL = "\nALTER TABLE skill_versions ADD COLUMN change_type TEXT\n CHECK(change_type IN ('major', 'minor', 'patch', 'unknown'));\n";
|
|
19
|
+
//# sourceMappingURL=v5b-change-type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v5b-change-type.d.ts","sourceRoot":"","sources":["../../../../src/db/migrations/v5b-change-type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,gIAG7B,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Migration v5b — add change_type column to skill_versions
|
|
3
|
+
* @module @skillsmith/core/db/migrations/v5b-change-type
|
|
4
|
+
* @see SMI-skill-version-tracking Wave 2
|
|
5
|
+
*
|
|
6
|
+
* Additive ALTER TABLE on skill_versions; does not increment SCHEMA_VERSION
|
|
7
|
+
* (stays at 5) because the migration system handles duplicate-column errors
|
|
8
|
+
* gracefully and the new column is nullable with no FK implications.
|
|
9
|
+
*
|
|
10
|
+
* Valid change_type values: 'major' | 'minor' | 'patch' | 'unknown'
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* SQL for the skill_versions change_type migration (v5b).
|
|
14
|
+
*
|
|
15
|
+
* Adds a TEXT column constrained to the four valid change-classification
|
|
16
|
+
* values. NULL is allowed so that existing rows are unaffected.
|
|
17
|
+
*/
|
|
18
|
+
export const MIGRATION_V5B_SQL = `
|
|
19
|
+
ALTER TABLE skill_versions ADD COLUMN change_type TEXT
|
|
20
|
+
CHECK(change_type IN ('major', 'minor', 'patch', 'unknown'));
|
|
21
|
+
`;
|
|
22
|
+
//# sourceMappingURL=v5b-change-type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v5b-change-type.js","sourceRoot":"","sources":["../../../../src/db/migrations/v5b-change-type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;CAGhC,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Migration v6 — skill_advisories table
|
|
3
|
+
* @module @skillsmith/core/db/migrations/v6-advisories
|
|
4
|
+
* @see SMI-skill-version-tracking Wave 3
|
|
5
|
+
*
|
|
6
|
+
* Creates the skill_advisories table for vulnerability advisory infrastructure.
|
|
7
|
+
* skill_id is a soft reference — no FK to skills(id), same pattern as skill_versions,
|
|
8
|
+
* so advisory history survives skill removal from the registry.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* SQL for the skill_advisories migration (v6).
|
|
12
|
+
*
|
|
13
|
+
* Table columns:
|
|
14
|
+
* - id SSA-YYYY-NNN format advisory identifier (TEXT PK)
|
|
15
|
+
* - skill_id Registry skill identifier (TEXT, not FK — soft reference)
|
|
16
|
+
* - severity Advisory severity level (low|medium|high|critical)
|
|
17
|
+
* - title Short advisory title
|
|
18
|
+
* - description Full advisory description
|
|
19
|
+
* - affected_versions JSON array of affected version ranges
|
|
20
|
+
* - patched_versions JSON array of patched version ranges
|
|
21
|
+
* - cwe_ids JSON array of CWE identifiers
|
|
22
|
+
* - references JSON array of reference URLs
|
|
23
|
+
* - published_at ISO datetime when advisory was published
|
|
24
|
+
* - withdrawn_at ISO datetime if advisory was retracted (NULL = still active)
|
|
25
|
+
* - created_at Row creation timestamp
|
|
26
|
+
*
|
|
27
|
+
* Indexes:
|
|
28
|
+
* - (skill_id) — efficient per-skill advisory queries
|
|
29
|
+
* - (severity) — efficient severity-filtered queries
|
|
30
|
+
*/
|
|
31
|
+
export declare const MIGRATION_V6_SQL = "\nCREATE TABLE IF NOT EXISTS skill_advisories (\n id TEXT PRIMARY KEY,\n skill_id TEXT NOT NULL,\n severity TEXT NOT NULL CHECK(severity IN ('low', 'medium', 'high', 'critical')),\n title TEXT NOT NULL,\n description TEXT NOT NULL,\n affected_versions TEXT,\n patched_versions TEXT,\n cwe_ids TEXT,\n advisory_refs TEXT,\n published_at TEXT NOT NULL,\n withdrawn_at TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE INDEX IF NOT EXISTS idx_skill_advisories_skill_id\n ON skill_advisories(skill_id);\n\nCREATE INDEX IF NOT EXISTS idx_skill_advisories_severity\n ON skill_advisories(severity);\n";
|
|
32
|
+
//# sourceMappingURL=v6-advisories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v6-advisories.d.ts","sourceRoot":"","sources":["../../../../src/db/migrations/v6-advisories.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,gBAAgB,muBAqB5B,CAAA"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Migration v6 — skill_advisories table
|
|
3
|
+
* @module @skillsmith/core/db/migrations/v6-advisories
|
|
4
|
+
* @see SMI-skill-version-tracking Wave 3
|
|
5
|
+
*
|
|
6
|
+
* Creates the skill_advisories table for vulnerability advisory infrastructure.
|
|
7
|
+
* skill_id is a soft reference — no FK to skills(id), same pattern as skill_versions,
|
|
8
|
+
* so advisory history survives skill removal from the registry.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* SQL for the skill_advisories migration (v6).
|
|
12
|
+
*
|
|
13
|
+
* Table columns:
|
|
14
|
+
* - id SSA-YYYY-NNN format advisory identifier (TEXT PK)
|
|
15
|
+
* - skill_id Registry skill identifier (TEXT, not FK — soft reference)
|
|
16
|
+
* - severity Advisory severity level (low|medium|high|critical)
|
|
17
|
+
* - title Short advisory title
|
|
18
|
+
* - description Full advisory description
|
|
19
|
+
* - affected_versions JSON array of affected version ranges
|
|
20
|
+
* - patched_versions JSON array of patched version ranges
|
|
21
|
+
* - cwe_ids JSON array of CWE identifiers
|
|
22
|
+
* - references JSON array of reference URLs
|
|
23
|
+
* - published_at ISO datetime when advisory was published
|
|
24
|
+
* - withdrawn_at ISO datetime if advisory was retracted (NULL = still active)
|
|
25
|
+
* - created_at Row creation timestamp
|
|
26
|
+
*
|
|
27
|
+
* Indexes:
|
|
28
|
+
* - (skill_id) — efficient per-skill advisory queries
|
|
29
|
+
* - (severity) — efficient severity-filtered queries
|
|
30
|
+
*/
|
|
31
|
+
export const MIGRATION_V6_SQL = `
|
|
32
|
+
CREATE TABLE IF NOT EXISTS skill_advisories (
|
|
33
|
+
id TEXT PRIMARY KEY,
|
|
34
|
+
skill_id TEXT NOT NULL,
|
|
35
|
+
severity TEXT NOT NULL CHECK(severity IN ('low', 'medium', 'high', 'critical')),
|
|
36
|
+
title TEXT NOT NULL,
|
|
37
|
+
description TEXT NOT NULL,
|
|
38
|
+
affected_versions TEXT,
|
|
39
|
+
patched_versions TEXT,
|
|
40
|
+
cwe_ids TEXT,
|
|
41
|
+
advisory_refs TEXT,
|
|
42
|
+
published_at TEXT NOT NULL,
|
|
43
|
+
withdrawn_at TEXT,
|
|
44
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
CREATE INDEX IF NOT EXISTS idx_skill_advisories_skill_id
|
|
48
|
+
ON skill_advisories(skill_id);
|
|
49
|
+
|
|
50
|
+
CREATE INDEX IF NOT EXISTS idx_skill_advisories_severity
|
|
51
|
+
ON skill_advisories(severity);
|
|
52
|
+
`;
|
|
53
|
+
//# sourceMappingURL=v6-advisories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v6-advisories.js","sourceRoot":"","sources":["../../../../src/db/migrations/v6-advisories.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;CAqB/B,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Migration v7 — compatibility column on skills table
|
|
3
|
+
* @module @skillsmith/core/db/migrations/v7-compatibility
|
|
4
|
+
* @see SMI-2760: Compatibility tags
|
|
5
|
+
*
|
|
6
|
+
* Adds the compatibility column to the skills table for IDE, LLM, and
|
|
7
|
+
* platform compatibility tags. Stored as a JSON array in SQLite TEXT;
|
|
8
|
+
* the companion Supabase migration uses JSONB with a GIN index.
|
|
9
|
+
*
|
|
10
|
+
* JSON shape: ["claude-code", "cursor", "claude", "gpt-4o"]
|
|
11
|
+
* A flat array is used for simpler SQLite json_each queries vs a nested
|
|
12
|
+
* { ides: [...], llms: [...] } object. The MCP search filter accepts
|
|
13
|
+
* the structured form and flattens it for DB comparison.
|
|
14
|
+
*
|
|
15
|
+
* Index:
|
|
16
|
+
* - None added here (SQLite does not support GIN). The Supabase Postgres
|
|
17
|
+
* migration adds: CREATE INDEX idx_skills_compatibility_gin ON skills
|
|
18
|
+
* USING gin(compatibility);
|
|
19
|
+
*/
|
|
20
|
+
export declare const MIGRATION_V7_SQL = "\nALTER TABLE skills ADD COLUMN compatibility TEXT DEFAULT '[]';\n";
|
|
21
|
+
//# sourceMappingURL=v7-compatibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v7-compatibility.d.ts","sourceRoot":"","sources":["../../../../src/db/migrations/v7-compatibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,gBAAgB,uEAE5B,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Migration v7 — compatibility column on skills table
|
|
3
|
+
* @module @skillsmith/core/db/migrations/v7-compatibility
|
|
4
|
+
* @see SMI-2760: Compatibility tags
|
|
5
|
+
*
|
|
6
|
+
* Adds the compatibility column to the skills table for IDE, LLM, and
|
|
7
|
+
* platform compatibility tags. Stored as a JSON array in SQLite TEXT;
|
|
8
|
+
* the companion Supabase migration uses JSONB with a GIN index.
|
|
9
|
+
*
|
|
10
|
+
* JSON shape: ["claude-code", "cursor", "claude", "gpt-4o"]
|
|
11
|
+
* A flat array is used for simpler SQLite json_each queries vs a nested
|
|
12
|
+
* { ides: [...], llms: [...] } object. The MCP search filter accepts
|
|
13
|
+
* the structured form and flattens it for DB comparison.
|
|
14
|
+
*
|
|
15
|
+
* Index:
|
|
16
|
+
* - None added here (SQLite does not support GIN). The Supabase Postgres
|
|
17
|
+
* migration adds: CREATE INDEX idx_skills_compatibility_gin ON skills
|
|
18
|
+
* USING gin(compatibility);
|
|
19
|
+
*/
|
|
20
|
+
export const MIGRATION_V7_SQL = `
|
|
21
|
+
ALTER TABLE skills ADD COLUMN compatibility TEXT DEFAULT '[]';
|
|
22
|
+
`;
|
|
23
|
+
//# sourceMappingURL=v7-compatibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v7-compatibility.js","sourceRoot":"","sources":["../../../../src/db/migrations/v7-compatibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;CAE/B,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Migration v8 — skill_co_installs table
|
|
3
|
+
* @module @skillsmith/core/db/migrations/v8-co-installs
|
|
4
|
+
* @see SMI-2761: Co-install recommendations
|
|
5
|
+
*
|
|
6
|
+
* Session-scoped co-install tracking: when a user installs multiple skills
|
|
7
|
+
* in the same MCP session, all installed-together pairs are recorded.
|
|
8
|
+
*
|
|
9
|
+
* Design notes:
|
|
10
|
+
* - (skill_id_a, skill_id_b) is always stored in both orderings for
|
|
11
|
+
* symmetric queries — INSERT (A,B) and INSERT (B,A) together.
|
|
12
|
+
* - install_count is incremented on conflict (upsert pattern).
|
|
13
|
+
* - no_self_install constraint prevents (X, X) rows.
|
|
14
|
+
* - Surfacing threshold: install_count >= 5 before including in response.
|
|
15
|
+
*
|
|
16
|
+
* Indexes:
|
|
17
|
+
* - idx_co_installs_a: efficient "what did users also install?" queries
|
|
18
|
+
* sorted by frequency descending.
|
|
19
|
+
*/
|
|
20
|
+
export declare const MIGRATION_V8_SQL = "\nCREATE TABLE IF NOT EXISTS skill_co_installs (\n skill_id_a TEXT NOT NULL,\n skill_id_b TEXT NOT NULL,\n install_count INTEGER NOT NULL DEFAULT 1 CHECK (install_count >= 1),\n last_updated_at TEXT NOT NULL DEFAULT (datetime('now')),\n PRIMARY KEY (skill_id_a, skill_id_b),\n CONSTRAINT no_self_install CHECK (skill_id_a != skill_id_b)\n);\n\nCREATE INDEX IF NOT EXISTS idx_co_installs_a\n ON skill_co_installs(skill_id_a, install_count DESC);\n";
|
|
21
|
+
//# sourceMappingURL=v8-co-installs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v8-co-installs.d.ts","sourceRoot":"","sources":["../../../../src/db/migrations/v8-co-installs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,gBAAgB,0cAY5B,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Migration v8 — skill_co_installs table
|
|
3
|
+
* @module @skillsmith/core/db/migrations/v8-co-installs
|
|
4
|
+
* @see SMI-2761: Co-install recommendations
|
|
5
|
+
*
|
|
6
|
+
* Session-scoped co-install tracking: when a user installs multiple skills
|
|
7
|
+
* in the same MCP session, all installed-together pairs are recorded.
|
|
8
|
+
*
|
|
9
|
+
* Design notes:
|
|
10
|
+
* - (skill_id_a, skill_id_b) is always stored in both orderings for
|
|
11
|
+
* symmetric queries — INSERT (A,B) and INSERT (B,A) together.
|
|
12
|
+
* - install_count is incremented on conflict (upsert pattern).
|
|
13
|
+
* - no_self_install constraint prevents (X, X) rows.
|
|
14
|
+
* - Surfacing threshold: install_count >= 5 before including in response.
|
|
15
|
+
*
|
|
16
|
+
* Indexes:
|
|
17
|
+
* - idx_co_installs_a: efficient "what did users also install?" queries
|
|
18
|
+
* sorted by frequency descending.
|
|
19
|
+
*/
|
|
20
|
+
export const MIGRATION_V8_SQL = `
|
|
21
|
+
CREATE TABLE IF NOT EXISTS skill_co_installs (
|
|
22
|
+
skill_id_a TEXT NOT NULL,
|
|
23
|
+
skill_id_b TEXT NOT NULL,
|
|
24
|
+
install_count INTEGER NOT NULL DEFAULT 1 CHECK (install_count >= 1),
|
|
25
|
+
last_updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
26
|
+
PRIMARY KEY (skill_id_a, skill_id_b),
|
|
27
|
+
CONSTRAINT no_self_install CHECK (skill_id_a != skill_id_b)
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
CREATE INDEX IF NOT EXISTS idx_co_installs_a
|
|
31
|
+
ON skill_co_installs(skill_id_a, install_count DESC);
|
|
32
|
+
`;
|
|
33
|
+
//# sourceMappingURL=v8-co-installs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v8-co-installs.js","sourceRoot":"","sources":["../../../../src/db/migrations/v8-co-installs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;CAY/B,CAAA"}
|