@skillsmith/core 0.6.0 → 0.6.1
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/CHANGELOG.md +5 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/db/migration-runner.d.ts.map +1 -1
- package/dist/src/db/migration-runner.js +7 -1
- package/dist/src/db/migration-runner.js.map +1 -1
- package/dist/src/db/migrations/v17-curated-trust-tier.d.ts +44 -0
- package/dist/src/db/migrations/v17-curated-trust-tier.d.ts.map +1 -0
- package/dist/src/db/migrations/v17-curated-trust-tier.js +89 -0
- package/dist/src/db/migrations/v17-curated-trust-tier.js.map +1 -0
- package/dist/src/db/schema-sql.d.ts +1 -1
- package/dist/src/db/schema-sql.d.ts.map +1 -1
- package/dist/src/db/schema-sql.js +1 -1
- package/dist/src/db/schema.d.ts +1 -1
- package/dist/src/db/schema.d.ts.map +1 -1
- package/dist/src/db/schema.js +2 -1
- package/dist/src/db/schema.js.map +1 -1
- package/dist/src/exports/services.d.ts +1 -1
- package/dist/src/exports/services.d.ts.map +1 -1
- package/dist/src/exports/services.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/indexer/SkillParser.d.ts +7 -70
- package/dist/src/indexer/SkillParser.d.ts.map +1 -1
- package/dist/src/indexer/SkillParser.helpers.d.ts +13 -0
- package/dist/src/indexer/SkillParser.helpers.d.ts.map +1 -0
- package/dist/src/indexer/SkillParser.helpers.js +90 -0
- package/dist/src/indexer/SkillParser.helpers.js.map +1 -0
- package/dist/src/indexer/SkillParser.js +5 -82
- package/dist/src/indexer/SkillParser.js.map +1 -1
- package/dist/src/indexer/SkillParser.types.d.ts +78 -0
- package/dist/src/indexer/SkillParser.types.d.ts.map +1 -0
- package/dist/src/indexer/SkillParser.types.js +9 -0
- package/dist/src/indexer/SkillParser.types.js.map +1 -0
- package/dist/src/services/skill-installation.errors.d.ts +53 -0
- package/dist/src/services/skill-installation.errors.d.ts.map +1 -0
- package/dist/src/services/skill-installation.errors.js +63 -0
- package/dist/src/services/skill-installation.errors.js.map +1 -0
- package/dist/src/services/skill-installation.service.d.ts.map +1 -1
- package/dist/src/services/skill-installation.service.js +29 -33
- package/dist/src/services/skill-installation.service.js.map +1 -1
- package/dist/src/services/skill-installation.types.d.ts +16 -0
- package/dist/src/services/skill-installation.types.d.ts.map +1 -1
- package/dist/src/services/skill-installation.types.js.map +1 -1
- package/dist/src/types/skill.d.ts +3 -3
- package/dist/tests/unit/migrations/migration-v16.test.js +7 -2
- package/dist/tests/unit/migrations/migration-v16.test.js.map +1 -1
- package/dist/tests/unit/migrations/migration-v17.test.d.ts +16 -0
- package/dist/tests/unit/migrations/migration-v17.test.d.ts.map +1 -0
- package/dist/tests/unit/migrations/migration-v17.test.js +256 -0
- package/dist/tests/unit/migrations/migration-v17.test.js.map +1 -0
- package/dist/tests/unit/services/skill-installation.service.test.js +112 -0
- package/dist/tests/unit/services/skill-installation.service.test.js.map +1 -1
- package/package.json +10 -10
|
@@ -54,6 +54,16 @@ export interface OptimizationInfo {
|
|
|
54
54
|
/** Optimized line count */
|
|
55
55
|
optimizedLines?: number;
|
|
56
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* SMI-4795: Coarse error-code taxonomy for failed install events.
|
|
59
|
+
*
|
|
60
|
+
* Each code maps to a specific `success: false` return path inside
|
|
61
|
+
* SkillInstallationService.install(). The taxonomy is intentionally narrow —
|
|
62
|
+
* it should be cardinality-bounded enough for telemetry funnel analysis and
|
|
63
|
+
* stable across releases. Adding a new code requires (a) a real new failure
|
|
64
|
+
* return path and (b) updating downstream funnel queries.
|
|
65
|
+
*/
|
|
66
|
+
export type InstallErrorCode = 'REGISTRY_LOOKUP_UNAVAILABLE' | 'REGISTRY_SKILL_NOT_FOUND' | 'QUARANTINED' | 'ALREADY_INSTALLED' | 'FETCH_FAILED' | 'VALIDATION_FAILED' | 'SKIP_SCAN_FORBIDDEN' | 'SCAN_REJECTED' | 'CONFIRMATION_REQUIRED' | 'UNKNOWN';
|
|
57
67
|
/** Result of an install operation */
|
|
58
68
|
export interface InstallResult {
|
|
59
69
|
success: boolean;
|
|
@@ -62,6 +72,12 @@ export interface InstallResult {
|
|
|
62
72
|
securityReport?: ScanReport;
|
|
63
73
|
tips?: string[];
|
|
64
74
|
error?: string;
|
|
75
|
+
/**
|
|
76
|
+
* SMI-4795: Coarse machine-readable failure code, populated at every
|
|
77
|
+
* `success: false` return path. Always undefined when `success: true`.
|
|
78
|
+
* Used by install-telemetry funnel; see {@link InstallErrorCode}.
|
|
79
|
+
*/
|
|
80
|
+
errorCode?: InstallErrorCode;
|
|
65
81
|
/** Trust tier used for security scanning */
|
|
66
82
|
trustTier?: TrustTier;
|
|
67
83
|
/** Optimization info (Skillsmith Optimization Layer) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-installation.types.d.ts","sourceRoot":"","sources":["../../../src/services/skill-installation.types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skill-installation.types.d.ts","sourceRoot":"","sources":["../../../src/services/skill-installation.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-installation.types.js","sourceRoot":"","sources":["../../../src/services/skill-installation.types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"skill-installation.types.js","sourceRoot":"","sources":["../../../src/services/skill-installation.types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA6NH,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,iDAAiD;AACjD,MAAM,CAAC,MAAM,0BAA0B,GAAsC;IAC3E,QAAQ,EAAE;QACR,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,SAAS;KAC5B;IACD,OAAO,EAAE;QACP,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,SAAS;KAC5B;IACD,SAAS,EAAE;QACT,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,SAAS;KAC5B;IACD,KAAK,EAAE;QACL,aAAa,EAAE,GAAG;QAClB,gBAAgB,EAAE,UAAU;KAC7B;IACD,YAAY,EAAE;QACZ,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,OAAO;KAC1B;IACD,OAAO,EAAE;QACP,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,OAAO;KAC1B;CACF,CAAA"}
|
|
@@ -7,9 +7,9 @@ import type { DependencyDeclaration } from './dependencies.js';
|
|
|
7
7
|
* SMI-4665: 'local' is now a first-class DB-backed tier — the skills.trust_tier
|
|
8
8
|
* CHECK constraint allows 'local' (migration v16) so filesystem-imported skills
|
|
9
9
|
* surface distinctly in search rather than being conflated with 'unknown'.
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* SMI-2381 / SMI-4917: 'curated' (third-party publishers manually opted into the
|
|
11
|
+
* registry) is a first-class DB-backed tier — the skills.trust_tier CHECK
|
|
12
|
+
* constraint allows 'curated' (migration v17).
|
|
13
13
|
*/
|
|
14
14
|
export type TrustTier = 'verified' | 'curated' | 'community' | 'experimental' | 'unknown' | 'local';
|
|
15
15
|
/**
|
|
@@ -116,8 +116,13 @@ describe('Migration v16: source column + trust_tier=local', () => {
|
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
|
-
|
|
120
|
-
|
|
119
|
+
// A broken v16 must not stamp version 16. Assert on row 16 specifically —
|
|
120
|
+
// not getSchemaVersion() (MAX), since later migrations (v17, SMI-4917) can
|
|
121
|
+
// legitimately succeed and advance the MAX past 16.
|
|
122
|
+
const v16Stamped = db
|
|
123
|
+
.prepare('SELECT 1 AS hit FROM schema_version WHERE version = 16')
|
|
124
|
+
.get();
|
|
125
|
+
expect(v16Stamped).toBeUndefined();
|
|
121
126
|
expect(stamped).toBeGreaterThanOrEqual(0);
|
|
122
127
|
});
|
|
123
128
|
it('runMigrationsSafe lifts a v13-shaped DB to v16 cleanly when no failure occurs', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration-v16.test.js","sourceRoot":"","sources":["../../../../tests/unit/migrations/migration-v16.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"migration-v16.test.js","sourceRoot":"","sources":["../../../../tests/unit/migrations/migration-v16.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Tests for migration v17 — widen `trust_tier` CHECK to allow `'curated'`
|
|
3
|
+
* @see SMI-4917: First-time-install bug fixes
|
|
4
|
+
*
|
|
5
|
+
* Coverage targets (from plan-review § Tests):
|
|
6
|
+
* - H4: v13→v17 and v16→v17 fixture-DB upgrades reach v17 cleanly with FTS
|
|
7
|
+
* triggers intact (the only safety net for a client-side migration).
|
|
8
|
+
* - A `'curated'` row inserts successfully after v17.
|
|
9
|
+
* - Idempotent re-run of v17 is a no-op.
|
|
10
|
+
* - H1: the `skills` column set is byte-identical pre/post-v17.
|
|
11
|
+
* - H3: a fixture DB carrying inbound-FK rows (skill_categories) upgrades
|
|
12
|
+
* through v17 without error.
|
|
13
|
+
* - H2: fresh-install convergence — v1 base → migrations → v17, no double-apply.
|
|
14
|
+
*/
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=migration-v17.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-v17.test.d.ts","sourceRoot":"","sources":["../../../../tests/unit/migrations/migration-v17.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Tests for migration v17 — widen `trust_tier` CHECK to allow `'curated'`
|
|
3
|
+
* @see SMI-4917: First-time-install bug fixes
|
|
4
|
+
*
|
|
5
|
+
* Coverage targets (from plan-review § Tests):
|
|
6
|
+
* - H4: v13→v17 and v16→v17 fixture-DB upgrades reach v17 cleanly with FTS
|
|
7
|
+
* triggers intact (the only safety net for a client-side migration).
|
|
8
|
+
* - A `'curated'` row inserts successfully after v17.
|
|
9
|
+
* - Idempotent re-run of v17 is a no-op.
|
|
10
|
+
* - H1: the `skills` column set is byte-identical pre/post-v17.
|
|
11
|
+
* - H3: a fixture DB carrying inbound-FK rows (skill_categories) upgrades
|
|
12
|
+
* through v17 without error.
|
|
13
|
+
* - H2: fresh-install convergence — v1 base → migrations → v17, no double-apply.
|
|
14
|
+
*/
|
|
15
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
16
|
+
import { createTestDatabase, closeDatabase } from '../../helpers/database.js';
|
|
17
|
+
import { getSchemaVersion, SCHEMA_VERSION, runMigrations, runMigrationsSafe, MIGRATIONS, createDatabaseAsync, initializeSchema, SCHEMA_SQL, } from '../../../src/db/schema.js';
|
|
18
|
+
import { applyMigrationV17 } from '../../../src/db/migrations/v17-curated-trust-tier.js';
|
|
19
|
+
// The BARE factory (creates no tables) — needed to build a pristine fixture DB
|
|
20
|
+
// whose schema_version table starts empty. createDatabaseAsync from schema.js
|
|
21
|
+
// calls initializeSchema and would pre-stamp the current SCHEMA_VERSION.
|
|
22
|
+
import { createDatabaseAsync as createBareDatabaseAsync } from '../../../src/db/createDatabase.js';
|
|
23
|
+
/**
|
|
24
|
+
* The genuine pre-v17 `skills` table DDL (the v16 shape — CHECK omits 'curated').
|
|
25
|
+
* Copied verbatim from `v16-skill-source.ts` so the fixture faithfully reproduces
|
|
26
|
+
* a real pre-fix v16 DB even though the current `SCHEMA_SQL` base is already
|
|
27
|
+
* widened. Without this, a fresh-install fixture built from `SCHEMA_SQL` would
|
|
28
|
+
* already admit 'curated' and the v17 migration would be untestable.
|
|
29
|
+
*/
|
|
30
|
+
const V16_SKILLS_DDL = `
|
|
31
|
+
DROP TRIGGER IF EXISTS skills_ai;
|
|
32
|
+
DROP TRIGGER IF EXISTS skills_ad;
|
|
33
|
+
DROP TRIGGER IF EXISTS skills_au;
|
|
34
|
+
DROP TABLE skills;
|
|
35
|
+
CREATE TABLE skills (
|
|
36
|
+
id TEXT PRIMARY KEY,
|
|
37
|
+
name TEXT NOT NULL,
|
|
38
|
+
description TEXT,
|
|
39
|
+
author TEXT,
|
|
40
|
+
repo_url TEXT UNIQUE,
|
|
41
|
+
quality_score REAL CHECK(quality_score IS NULL OR (quality_score >= 0 AND quality_score <= 1)),
|
|
42
|
+
trust_tier TEXT CHECK(trust_tier IN ('verified', 'community', 'experimental', 'unknown', 'local')) DEFAULT 'unknown',
|
|
43
|
+
tags TEXT DEFAULT '[]',
|
|
44
|
+
risk_score INTEGER CHECK(risk_score IS NULL OR (risk_score >= 0 AND risk_score <= 100)),
|
|
45
|
+
security_findings_count INTEGER DEFAULT 0,
|
|
46
|
+
security_scanned_at TEXT,
|
|
47
|
+
security_passed INTEGER,
|
|
48
|
+
compatibility TEXT DEFAULT '[]',
|
|
49
|
+
content_hash TEXT,
|
|
50
|
+
visibility TEXT NOT NULL DEFAULT 'public',
|
|
51
|
+
team_id TEXT,
|
|
52
|
+
source TEXT NOT NULL DEFAULT 'registry' CHECK (source IN ('registry', 'local')),
|
|
53
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
54
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
55
|
+
);
|
|
56
|
+
CREATE INDEX IF NOT EXISTS idx_skills_author ON skills(author);
|
|
57
|
+
CREATE INDEX IF NOT EXISTS idx_skills_trust_tier ON skills(trust_tier);
|
|
58
|
+
CREATE INDEX IF NOT EXISTS idx_skills_source ON skills(source);
|
|
59
|
+
CREATE TRIGGER IF NOT EXISTS skills_ai AFTER INSERT ON skills BEGIN
|
|
60
|
+
INSERT INTO skills_fts(rowid, name, description, tags, author)
|
|
61
|
+
VALUES (NEW.rowid, NEW.name, NEW.description, NEW.tags, NEW.author);
|
|
62
|
+
END;
|
|
63
|
+
CREATE TRIGGER IF NOT EXISTS skills_ad AFTER DELETE ON skills BEGIN
|
|
64
|
+
INSERT INTO skills_fts(skills_fts, rowid, name, description, tags, author)
|
|
65
|
+
VALUES ('delete', OLD.rowid, OLD.name, OLD.description, OLD.tags, OLD.author);
|
|
66
|
+
END;
|
|
67
|
+
CREATE TRIGGER IF NOT EXISTS skills_au AFTER UPDATE ON skills BEGIN
|
|
68
|
+
INSERT INTO skills_fts(skills_fts, rowid, name, description, tags, author)
|
|
69
|
+
VALUES ('delete', OLD.rowid, OLD.name, OLD.description, OLD.tags, OLD.author);
|
|
70
|
+
INSERT INTO skills_fts(rowid, name, description, tags, author)
|
|
71
|
+
VALUES (NEW.rowid, NEW.name, NEW.description, NEW.tags, NEW.author);
|
|
72
|
+
END;
|
|
73
|
+
`;
|
|
74
|
+
/**
|
|
75
|
+
* Build a fixture DB whose schema is stamped at exactly `targetVersion` by
|
|
76
|
+
* running the canonical base schema then every migration up to (and including)
|
|
77
|
+
* `targetVersion`. The `skills` table is then forced to the genuine pre-v17 v16
|
|
78
|
+
* shape so the v17 migration is genuinely "pending" and exercised by the runner.
|
|
79
|
+
*/
|
|
80
|
+
async function fixtureAtVersion(targetVersion) {
|
|
81
|
+
// Bare factory — no tables created. SCHEMA_SQL then builds the v1 base schema
|
|
82
|
+
// with an empty schema_version table, and migrations are applied up to target.
|
|
83
|
+
const db = (await createBareDatabaseAsync(':memory:'));
|
|
84
|
+
db.exec(SCHEMA_SQL);
|
|
85
|
+
for (const migration of MIGRATIONS) {
|
|
86
|
+
if (migration.version === 1 || migration.version > targetVersion)
|
|
87
|
+
continue;
|
|
88
|
+
try {
|
|
89
|
+
if (migration.apply) {
|
|
90
|
+
migration.apply(db);
|
|
91
|
+
}
|
|
92
|
+
else if (migration.sql !== undefined) {
|
|
93
|
+
db.exec(migration.sql);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
98
|
+
if (!msg.includes('duplicate column'))
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
// Some migration SQL stamps its own schema_version row — use INSERT OR
|
|
102
|
+
// IGNORE so this fixture helper never double-stamps.
|
|
103
|
+
db.prepare('INSERT OR IGNORE INTO schema_version (version) VALUES (?)').run(migration.version);
|
|
104
|
+
}
|
|
105
|
+
// Force the `skills` table to the genuine pre-v17 (v16) CHECK shape — the
|
|
106
|
+
// current SCHEMA_SQL base is already widened, so without this the fixture
|
|
107
|
+
// would already admit 'curated'.
|
|
108
|
+
db.exec(V16_SKILLS_DDL);
|
|
109
|
+
return db;
|
|
110
|
+
}
|
|
111
|
+
function skillsColumns(db) {
|
|
112
|
+
return db.prepare('PRAGMA table_info(skills)').all()
|
|
113
|
+
.map((c) => c.name)
|
|
114
|
+
.sort();
|
|
115
|
+
}
|
|
116
|
+
function triggerNames(db) {
|
|
117
|
+
return db
|
|
118
|
+
.prepare("SELECT name FROM sqlite_master WHERE type='trigger' AND tbl_name='skills'")
|
|
119
|
+
.all()
|
|
120
|
+
.map((t) => t.name)
|
|
121
|
+
.sort();
|
|
122
|
+
}
|
|
123
|
+
describe('Migration v17: widen trust_tier CHECK to allow curated', () => {
|
|
124
|
+
let db;
|
|
125
|
+
beforeEach(async () => {
|
|
126
|
+
db = await createTestDatabase();
|
|
127
|
+
});
|
|
128
|
+
afterEach(() => {
|
|
129
|
+
closeDatabase(db);
|
|
130
|
+
});
|
|
131
|
+
it('SCHEMA_VERSION is at least 17', () => {
|
|
132
|
+
expect(SCHEMA_VERSION).toBeGreaterThanOrEqual(17);
|
|
133
|
+
});
|
|
134
|
+
it('fresh DB accepts insert with trust_tier=curated', () => {
|
|
135
|
+
const insert = db.prepare(`
|
|
136
|
+
INSERT INTO skills (id, name, description, trust_tier, quality_score, source)
|
|
137
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
138
|
+
`);
|
|
139
|
+
expect(() => insert.run('curated-1', 'a-curated-skill', 'A curated registry skill', 'curated', 0.8, 'registry')).not.toThrow();
|
|
140
|
+
const row = db.prepare('SELECT trust_tier FROM skills WHERE id = ?').get('curated-1');
|
|
141
|
+
expect(row.trust_tier).toBe('curated');
|
|
142
|
+
});
|
|
143
|
+
it('still accepts every pre-existing trust_tier value', () => {
|
|
144
|
+
const insert = db.prepare("INSERT INTO skills (id, name, trust_tier, source) VALUES (?, ?, ?, 'registry')");
|
|
145
|
+
for (const tier of ['verified', 'community', 'experimental', 'unknown', 'local']) {
|
|
146
|
+
expect(() => insert.run(`tier-${tier}`, tier, tier)).not.toThrow();
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
it('rejects trust_tier values outside the widened set', () => {
|
|
150
|
+
const insert = db.prepare("INSERT INTO skills (id, name, trust_tier, source) VALUES (?, ?, ?, 'registry')");
|
|
151
|
+
expect(() => insert.run('bad-tier', 'bad', 'made-up')).toThrow(/CHECK constraint failed/);
|
|
152
|
+
});
|
|
153
|
+
it('applyMigrationV17 is idempotent — running twice is a no-op', () => {
|
|
154
|
+
expect(() => applyMigrationV17(db)).not.toThrow();
|
|
155
|
+
const colsAfterFirst = skillsColumns(db);
|
|
156
|
+
expect(() => applyMigrationV17(db)).not.toThrow();
|
|
157
|
+
expect(skillsColumns(db)).toEqual(colsAfterFirst);
|
|
158
|
+
});
|
|
159
|
+
it('v16→v17: a v16 fixture DB upgrades to v17 cleanly', async () => {
|
|
160
|
+
const v16 = await fixtureAtVersion(16);
|
|
161
|
+
expect(getSchemaVersion(v16)).toBe(16);
|
|
162
|
+
// A v16 DB rejects curated before the upgrade.
|
|
163
|
+
expect(() => v16
|
|
164
|
+
.prepare("INSERT INTO skills (id, name, trust_tier, source) VALUES ('pre', 'p', 'curated', 'registry')")
|
|
165
|
+
.run()).toThrow(/CHECK constraint failed/);
|
|
166
|
+
const ran = runMigrations(v16);
|
|
167
|
+
expect(ran).toBeGreaterThanOrEqual(1);
|
|
168
|
+
expect(getSchemaVersion(v16)).toBe(SCHEMA_VERSION);
|
|
169
|
+
// After v17 the curated insert succeeds.
|
|
170
|
+
expect(() => v16
|
|
171
|
+
.prepare("INSERT INTO skills (id, name, trust_tier, source) VALUES ('post', 'p', 'curated', 'registry')")
|
|
172
|
+
.run()).not.toThrow();
|
|
173
|
+
expect(triggerNames(v16)).toEqual(['skills_ad', 'skills_ai', 'skills_au']);
|
|
174
|
+
closeDatabase(v16);
|
|
175
|
+
});
|
|
176
|
+
it('v13→v17: a v13 fixture DB upgrades through every migration to v17 cleanly', async () => {
|
|
177
|
+
const v13 = await fixtureAtVersion(13);
|
|
178
|
+
expect(getSchemaVersion(v13)).toBe(13);
|
|
179
|
+
const ran = runMigrations(v13);
|
|
180
|
+
expect(ran).toBeGreaterThanOrEqual(2); // at minimum v16 + v17
|
|
181
|
+
expect(getSchemaVersion(v13)).toBe(SCHEMA_VERSION);
|
|
182
|
+
expect(() => v13
|
|
183
|
+
.prepare("INSERT INTO skills (id, name, trust_tier, source) VALUES ('c', 'c', 'curated', 'registry')")
|
|
184
|
+
.run()).not.toThrow();
|
|
185
|
+
expect(triggerNames(v13)).toEqual(['skills_ad', 'skills_ai', 'skills_au']);
|
|
186
|
+
closeDatabase(v13);
|
|
187
|
+
});
|
|
188
|
+
it('v16→v17 preserves all existing skill rows', async () => {
|
|
189
|
+
const v16 = await fixtureAtVersion(16);
|
|
190
|
+
const insert = v16.prepare('INSERT INTO skills (id, name, trust_tier, source) VALUES (?, ?, ?, ?)');
|
|
191
|
+
insert.run('keep-1', 'verified-skill', 'verified', 'registry');
|
|
192
|
+
insert.run('keep-2', 'local-skill', 'local', 'local');
|
|
193
|
+
runMigrations(v16);
|
|
194
|
+
const rows = v16
|
|
195
|
+
.prepare('SELECT id, trust_tier, source FROM skills ORDER BY id')
|
|
196
|
+
.all();
|
|
197
|
+
expect(rows).toEqual([
|
|
198
|
+
{ id: 'keep-1', trust_tier: 'verified', source: 'registry' },
|
|
199
|
+
{ id: 'keep-2', trust_tier: 'local', source: 'local' },
|
|
200
|
+
]);
|
|
201
|
+
closeDatabase(v16);
|
|
202
|
+
});
|
|
203
|
+
it('H1: the skills column set is byte-identical before and after v17', async () => {
|
|
204
|
+
const v16 = await fixtureAtVersion(16);
|
|
205
|
+
const colsBefore = skillsColumns(v16);
|
|
206
|
+
applyMigrationV17(v16);
|
|
207
|
+
const colsAfter = skillsColumns(v16);
|
|
208
|
+
expect(colsAfter).toEqual(colsBefore);
|
|
209
|
+
closeDatabase(v16);
|
|
210
|
+
});
|
|
211
|
+
it('H3: a v16 DB carrying inbound-FK rows upgrades through v17 without error', async () => {
|
|
212
|
+
const v16 = await fixtureAtVersion(16);
|
|
213
|
+
// A skill row referenced by skill_categories (FK skill_categories.skill_id → skills.id).
|
|
214
|
+
v16
|
|
215
|
+
.prepare("INSERT INTO skills (id, name, trust_tier, source) VALUES ('fk-skill', 'fk', 'community', 'registry')")
|
|
216
|
+
.run();
|
|
217
|
+
v16.prepare("INSERT INTO categories (id, name) VALUES ('cat-1', 'testing')").run();
|
|
218
|
+
v16
|
|
219
|
+
.prepare("INSERT INTO skill_categories (skill_id, category_id) VALUES ('fk-skill', 'cat-1')")
|
|
220
|
+
.run();
|
|
221
|
+
// The v17 recreate drops & renames `skills` inside one transaction — with
|
|
222
|
+
// inbound FK rows present this must not error (mirrors v16 exactly, no
|
|
223
|
+
// `PRAGMA foreign_keys` toggle). This is the R1/H3 regression guard.
|
|
224
|
+
expect(() => applyMigrationV17(v16)).not.toThrow();
|
|
225
|
+
// The skill row itself survives the recreate in the new (widened) table.
|
|
226
|
+
const skill = v16.prepare("SELECT id FROM skills WHERE id = 'fk-skill'").get();
|
|
227
|
+
expect(skill?.id).toBe('fk-skill');
|
|
228
|
+
// Note: `skill_categories` rows are cascade-deleted by `DROP TABLE skills`
|
|
229
|
+
// because `foreign_keys` is ON (the driver default) and `skill_categories`
|
|
230
|
+
// declares `ON DELETE CASCADE`. This is pre-existing v16 behavior — v16
|
|
231
|
+
// performs the identical `DROP TABLE skills` — and is intentionally NOT a
|
|
232
|
+
// v17 regression. The CLI rebuilds category links on the next `sync`.
|
|
233
|
+
closeDatabase(v16);
|
|
234
|
+
});
|
|
235
|
+
it('H2: fresh-install convergence — base schema → migrations → v17, no double-apply', async () => {
|
|
236
|
+
const fresh = await createDatabaseAsync(':memory:');
|
|
237
|
+
initializeSchema(fresh);
|
|
238
|
+
// initializeSchema stamps SCHEMA_VERSION directly; the v17 probe must no-op.
|
|
239
|
+
expect(getSchemaVersion(fresh)).toBe(SCHEMA_VERSION);
|
|
240
|
+
expect(() => applyMigrationV17(fresh)).not.toThrow();
|
|
241
|
+
// runMigrations sees a current version → 0 pending.
|
|
242
|
+
expect(runMigrations(fresh)).toBe(0);
|
|
243
|
+
// Fresh base schema already admits 'curated'.
|
|
244
|
+
expect(() => fresh
|
|
245
|
+
.prepare("INSERT INTO skills (id, name, trust_tier, source) VALUES ('fresh-c', 'c', 'curated', 'registry')")
|
|
246
|
+
.run()).not.toThrow();
|
|
247
|
+
closeDatabase(fresh);
|
|
248
|
+
});
|
|
249
|
+
it('runMigrationsSafe is a no-op on a DB already at v17', () => {
|
|
250
|
+
const before = getSchemaVersion(db);
|
|
251
|
+
expect(runMigrationsSafe(db)).toBe(0);
|
|
252
|
+
expect(getSchemaVersion(db)).toBe(before);
|
|
253
|
+
expect(getSchemaVersion(db)).toBeGreaterThanOrEqual(17);
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
//# sourceMappingURL=migration-v17.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-v17.test.js","sourceRoot":"","sources":["../../../../tests/unit/migrations/migration-v17.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -338,5 +338,117 @@ describe('SMI-3483: SkillInstallationService', () => {
|
|
|
338
338
|
expect(forceResult.warning).toContain('not in the manifest');
|
|
339
339
|
});
|
|
340
340
|
});
|
|
341
|
+
// ==========================================================================
|
|
342
|
+
// SMI-4795: errorCode taxonomy on install failures
|
|
343
|
+
//
|
|
344
|
+
// Each failing return path inside install() must populate `errorCode` with
|
|
345
|
+
// a code from InstallErrorCode. Telemetry (emitInstallEvent) reads this
|
|
346
|
+
// field; without it the install funnel cannot classify failures.
|
|
347
|
+
// ==========================================================================
|
|
348
|
+
describe('SMI-4795: install failures populate errorCode', () => {
|
|
349
|
+
beforeEach(() => {
|
|
350
|
+
vi.stubGlobal('fetch', vi.fn());
|
|
351
|
+
});
|
|
352
|
+
it('REGISTRY_LOOKUP_UNAVAILABLE when registry id supplied without lookup adapter', async () => {
|
|
353
|
+
const service = createService(db); // no registryLookup
|
|
354
|
+
const result = await service.install('author/some-skill');
|
|
355
|
+
expect(result.success).toBe(false);
|
|
356
|
+
expect(result.errorCode).toBe('REGISTRY_LOOKUP_UNAVAILABLE');
|
|
357
|
+
});
|
|
358
|
+
it('REGISTRY_SKILL_NOT_FOUND when registry returns null', async () => {
|
|
359
|
+
const service = createService(db, {
|
|
360
|
+
registryLookup: createMockRegistryLookup({}), // empty registry
|
|
361
|
+
});
|
|
362
|
+
const result = await service.install('author/missing-skill');
|
|
363
|
+
expect(result.success).toBe(false);
|
|
364
|
+
expect(result.errorCode).toBe('REGISTRY_SKILL_NOT_FOUND');
|
|
365
|
+
});
|
|
366
|
+
it('QUARANTINED when registry flags the skill', async () => {
|
|
367
|
+
const service = createService(db, {
|
|
368
|
+
registryLookup: createMockRegistryLookup({
|
|
369
|
+
'author/quarantined-skill': {
|
|
370
|
+
repoUrl: 'https://github.com/author/quarantined-skill',
|
|
371
|
+
name: 'quarantined-skill',
|
|
372
|
+
quarantined: true,
|
|
373
|
+
trustTier: 'community',
|
|
374
|
+
},
|
|
375
|
+
}),
|
|
376
|
+
});
|
|
377
|
+
const result = await service.install('author/quarantined-skill');
|
|
378
|
+
expect(result.success).toBe(false);
|
|
379
|
+
expect(result.errorCode).toBe('QUARANTINED');
|
|
380
|
+
expect(result.trustTier).toBe('community');
|
|
381
|
+
});
|
|
382
|
+
it('FETCH_FAILED when SKILL.md is unreachable', async () => {
|
|
383
|
+
const mockFetch = vi.mocked(fetch);
|
|
384
|
+
mockFetch.mockResolvedValue(new Response('Not found', { status: 404 }));
|
|
385
|
+
const service = createService(db);
|
|
386
|
+
const result = await service.install('https://github.com/owner/missing-repo');
|
|
387
|
+
expect(result.success).toBe(false);
|
|
388
|
+
expect(result.errorCode).toBe('FETCH_FAILED');
|
|
389
|
+
});
|
|
390
|
+
it('VALIDATION_FAILED when SKILL.md is malformed/short', async () => {
|
|
391
|
+
const mockFetch = vi.mocked(fetch);
|
|
392
|
+
mockFetch.mockImplementation(async (url) => {
|
|
393
|
+
const urlStr = typeof url === 'string' ? url : url.toString();
|
|
394
|
+
if (urlStr.includes('SKILL.md')) {
|
|
395
|
+
return new Response(SHORT_SKILL_MD, { status: 200 });
|
|
396
|
+
}
|
|
397
|
+
return new Response('Not found', { status: 404 });
|
|
398
|
+
});
|
|
399
|
+
const service = createService(db);
|
|
400
|
+
const result = await service.install('https://github.com/owner/short-repo');
|
|
401
|
+
expect(result.success).toBe(false);
|
|
402
|
+
expect(result.errorCode).toBe('VALIDATION_FAILED');
|
|
403
|
+
});
|
|
404
|
+
it('ALREADY_INSTALLED on repeat install without force', async () => {
|
|
405
|
+
const mockFetch = vi.mocked(fetch);
|
|
406
|
+
mockFetch.mockImplementation(async (url) => {
|
|
407
|
+
const urlStr = typeof url === 'string' ? url : url.toString();
|
|
408
|
+
if (urlStr.includes('SKILL.md')) {
|
|
409
|
+
return new Response(VALID_SKILL_MD, { status: 200 });
|
|
410
|
+
}
|
|
411
|
+
return new Response('Not found', { status: 404 });
|
|
412
|
+
});
|
|
413
|
+
const service = createService(db);
|
|
414
|
+
const first = await service.install('https://github.com/owner/dup-repo');
|
|
415
|
+
expect(first.success).toBe(true);
|
|
416
|
+
const second = await service.install('https://github.com/owner/dup-repo');
|
|
417
|
+
expect(second.success).toBe(false);
|
|
418
|
+
expect(second.errorCode).toBe('ALREADY_INSTALLED');
|
|
419
|
+
});
|
|
420
|
+
it('SKIP_SCAN_FORBIDDEN when skipScan requested on unknown tier', async () => {
|
|
421
|
+
const mockFetch = vi.mocked(fetch);
|
|
422
|
+
mockFetch.mockImplementation(async (url) => {
|
|
423
|
+
const urlStr = typeof url === 'string' ? url : url.toString();
|
|
424
|
+
if (urlStr.includes('SKILL.md')) {
|
|
425
|
+
return new Response(VALID_SKILL_MD, { status: 200 });
|
|
426
|
+
}
|
|
427
|
+
return new Response('Not found', { status: 404 });
|
|
428
|
+
});
|
|
429
|
+
// Direct GitHub URL → trust tier defaults to 'unknown', skipScan disallowed
|
|
430
|
+
const service = createService(db);
|
|
431
|
+
const result = await service.install('https://github.com/owner/skip-repo', {
|
|
432
|
+
skipScan: true,
|
|
433
|
+
});
|
|
434
|
+
expect(result.success).toBe(false);
|
|
435
|
+
expect(result.errorCode).toBe('SKIP_SCAN_FORBIDDEN');
|
|
436
|
+
expect(result.trustTier).toBe('unknown');
|
|
437
|
+
});
|
|
438
|
+
it('successful install does NOT carry errorCode', async () => {
|
|
439
|
+
const mockFetch = vi.mocked(fetch);
|
|
440
|
+
mockFetch.mockImplementation(async (url) => {
|
|
441
|
+
const urlStr = typeof url === 'string' ? url : url.toString();
|
|
442
|
+
if (urlStr.includes('SKILL.md')) {
|
|
443
|
+
return new Response(VALID_SKILL_MD, { status: 200 });
|
|
444
|
+
}
|
|
445
|
+
return new Response('Not found', { status: 404 });
|
|
446
|
+
});
|
|
447
|
+
const service = createService(db);
|
|
448
|
+
const result = await service.install('https://github.com/owner/ok-repo');
|
|
449
|
+
expect(result.success).toBe(true);
|
|
450
|
+
expect(result.errorCode).toBeUndefined();
|
|
451
|
+
});
|
|
452
|
+
});
|
|
341
453
|
});
|
|
342
454
|
//# sourceMappingURL=skill-installation.service.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-installation.service.test.js","sourceRoot":"","sources":["../../../../tests/unit/services/skill-installation.service.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skill-installation.service.test.js","sourceRoot":"","sources":["../../../../tests/unit/services/skill-installation.service.test.ts"],"names":[],"mappings":"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"}
|