mindlore 0.6.6 → 0.6.8
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 +259 -259
- package/SCHEMA.md +292 -292
- package/dist/scripts/cc-memory-bulk-sync.d.ts.map +1 -1
- package/dist/scripts/cc-memory-bulk-sync.js +47 -42
- package/dist/scripts/cc-memory-bulk-sync.js.map +1 -1
- package/dist/scripts/cc-session-sync.d.ts.map +1 -1
- package/dist/scripts/cc-session-sync.js +58 -48
- package/dist/scripts/cc-session-sync.js.map +1 -1
- package/dist/scripts/init.js +8 -8
- package/dist/scripts/init.js.map +1 -1
- package/dist/scripts/lib/all-migrations.d.ts.map +1 -1
- package/dist/scripts/lib/all-migrations.js +7 -1
- package/dist/scripts/lib/all-migrations.js.map +1 -1
- package/dist/scripts/lib/consolidation.d.ts +4 -3
- package/dist/scripts/lib/consolidation.d.ts.map +1 -1
- package/dist/scripts/lib/consolidation.js +10 -10
- package/dist/scripts/lib/consolidation.js.map +1 -1
- package/dist/scripts/lib/constants.d.ts +1 -7
- package/dist/scripts/lib/constants.d.ts.map +1 -1
- package/dist/scripts/lib/constants.js +2 -9
- package/dist/scripts/lib/constants.js.map +1 -1
- package/dist/scripts/lib/db-helpers.d.ts +0 -15
- package/dist/scripts/lib/db-helpers.d.ts.map +1 -1
- package/dist/scripts/lib/db-helpers.js +1 -51
- package/dist/scripts/lib/db-helpers.js.map +1 -1
- package/dist/scripts/lib/decay.d.ts.map +1 -1
- package/dist/scripts/lib/decay.js +9 -9
- package/dist/scripts/lib/decay.js.map +1 -1
- package/dist/scripts/lib/episodes.js +23 -23
- package/dist/scripts/lib/migrations-v061.js +21 -21
- package/dist/scripts/lib/migrations-v062.js +11 -11
- package/dist/scripts/lib/migrations-v063.js +14 -14
- package/dist/scripts/lib/migrations-v067.d.ts +7 -0
- package/dist/scripts/lib/migrations-v067.d.ts.map +1 -0
- package/dist/scripts/lib/migrations-v067.js +50 -0
- package/dist/scripts/lib/migrations-v067.js.map +1 -0
- package/dist/scripts/lib/migrations-v068.d.ts +3 -0
- package/dist/scripts/lib/migrations-v068.d.ts.map +1 -0
- package/dist/scripts/lib/migrations-v068.js +37 -0
- package/dist/scripts/lib/migrations-v068.js.map +1 -0
- package/dist/scripts/lib/migrations.d.ts.map +1 -1
- package/dist/scripts/lib/migrations.js +0 -15
- package/dist/scripts/lib/migrations.js.map +1 -1
- package/dist/scripts/lib/schema-version.js +6 -6
- package/dist/scripts/lib/search-cache.js +11 -11
- package/dist/scripts/lib/session-payload.d.ts +9 -1
- package/dist/scripts/lib/session-payload.d.ts.map +1 -1
- package/dist/scripts/lib/session-payload.js +11 -10
- package/dist/scripts/lib/session-payload.js.map +1 -1
- package/dist/scripts/lib/triage.js +3 -3
- package/dist/scripts/mindlore-backup.js +9 -9
- package/dist/scripts/mindlore-fts5-index.d.ts +1 -2
- package/dist/scripts/mindlore-fts5-index.d.ts.map +1 -1
- package/dist/scripts/mindlore-fts5-index.js +12 -64
- package/dist/scripts/mindlore-fts5-index.js.map +1 -1
- package/dist/scripts/mindlore-health-check.d.ts.map +1 -1
- package/dist/scripts/mindlore-health-check.js +0 -11
- package/dist/scripts/mindlore-health-check.js.map +1 -1
- package/dist/tests/cc-memory-bulk-sync.test.js +23 -0
- package/dist/tests/cc-memory-bulk-sync.test.js.map +1 -1
- package/dist/tests/cc-session-sync.test.js +25 -0
- package/dist/tests/cc-session-sync.test.js.map +1 -1
- package/dist/tests/compaction-snapshot.test.js +2 -2
- package/dist/tests/consolidation.test.js +5 -5
- package/dist/tests/consolidation.test.js.map +1 -1
- package/dist/tests/decay.test.js +9 -9
- package/dist/tests/diary.test.js +4 -4
- package/dist/tests/episode-kind-constant.test.d.ts +2 -0
- package/dist/tests/episode-kind-constant.test.d.ts.map +1 -0
- package/dist/tests/episode-kind-constant.test.js +28 -0
- package/dist/tests/episode-kind-constant.test.js.map +1 -0
- package/dist/tests/episodes-inject.test.js +14 -14
- package/dist/tests/episodes-inject.test.js.map +1 -1
- package/dist/tests/fts5.test.js +66 -125
- package/dist/tests/fts5.test.js.map +1 -1
- package/dist/tests/globalSetup.d.ts +2 -0
- package/dist/tests/globalSetup.d.ts.map +1 -0
- package/dist/tests/globalSetup.js +36 -0
- package/dist/tests/globalSetup.js.map +1 -0
- package/dist/tests/helpers/db.d.ts +13 -5
- package/dist/tests/helpers/db.d.ts.map +1 -1
- package/dist/tests/helpers/db.js +61 -33
- package/dist/tests/helpers/db.js.map +1 -1
- package/dist/tests/lesson-graduation.test.d.ts +2 -0
- package/dist/tests/lesson-graduation.test.d.ts.map +1 -0
- package/dist/tests/lesson-graduation.test.js +83 -0
- package/dist/tests/lesson-graduation.test.js.map +1 -0
- package/dist/tests/migrations-v053.test.js +16 -16
- package/dist/tests/migrations-v061.test.js +10 -10
- package/dist/tests/migrations-v063.test.js +2 -2
- package/dist/tests/migrations-v067.test.d.ts +2 -0
- package/dist/tests/migrations-v067.test.d.ts.map +1 -0
- package/dist/tests/migrations-v067.test.js +115 -0
- package/dist/tests/migrations-v067.test.js.map +1 -0
- package/dist/tests/migrations-v068.test.d.ts +2 -0
- package/dist/tests/migrations-v068.test.d.ts.map +1 -0
- package/dist/tests/migrations-v068.test.js +53 -0
- package/dist/tests/migrations-v068.test.js.map +1 -0
- package/dist/tests/nomination-counts.test.d.ts +2 -0
- package/dist/tests/nomination-counts.test.d.ts.map +1 -0
- package/dist/tests/nomination-counts.test.js +51 -0
- package/dist/tests/nomination-counts.test.js.map +1 -0
- package/dist/tests/recall-telemetry.test.js +8 -8
- package/dist/tests/schema-version.test.js +3 -7
- package/dist/tests/schema-version.test.js.map +1 -1
- package/dist/tests/search-hook.test.js +2 -2
- package/dist/tests/sec-regression.test.js +0 -50
- package/dist/tests/sec-regression.test.js.map +1 -1
- package/dist/tests/session-end-cleanup.test.d.ts +2 -0
- package/dist/tests/session-end-cleanup.test.d.ts.map +1 -0
- package/dist/tests/session-end-cleanup.test.js +59 -0
- package/dist/tests/session-end-cleanup.test.js.map +1 -0
- package/dist/tests/session-focus.test.js +69 -10
- package/dist/tests/session-focus.test.js.map +1 -1
- package/dist/tests/session-payload.test.js +11 -11
- package/dist/tests/session-payload.test.js.map +1 -1
- package/dist/tests/session-summary.test.js +2 -2
- package/dist/tests/session-summary.test.js.map +1 -1
- package/hooks/lib/constants.cjs +15 -0
- package/hooks/lib/mindlore-common.cjs +974 -1004
- package/hooks/mindlore-cwd-changed.cjs +57 -57
- package/hooks/mindlore-decision-detector.cjs +54 -54
- package/hooks/mindlore-dont-repeat.cjs +222 -222
- package/hooks/mindlore-fts5-sync.cjs +97 -88
- package/hooks/mindlore-index.cjs +229 -229
- package/hooks/mindlore-model-router.cjs +54 -54
- package/hooks/mindlore-post-compact.cjs +69 -69
- package/hooks/mindlore-post-read.cjs +106 -106
- package/hooks/mindlore-pre-compact.cjs +154 -154
- package/hooks/mindlore-read-guard.cjs +105 -105
- package/hooks/mindlore-research-guard.cjs +176 -176
- package/hooks/mindlore-search.cjs +200 -200
- package/hooks/mindlore-session-end.cjs +509 -523
- package/hooks/mindlore-session-focus.cjs +256 -245
- package/package.json +75 -78
- package/plugin.json +1 -1
- package/skills/mindlore-diary/SKILL.md +85 -85
- package/skills/mindlore-evolve/SKILL.md +126 -126
- package/skills/mindlore-explore/SKILL.md +109 -109
- package/skills/mindlore-ingest/SKILL.md +195 -195
- package/skills/mindlore-maintain/SKILL.md +125 -125
- package/skills/mindlore-query/SKILL.md +151 -151
- package/skills/mindlore-reflect/SKILL.md +141 -131
- package/skills/mindlore-stats/SKILL.md +106 -106
- package/templates/INDEX.md +14 -14
- package/templates/SCHEMA.md +292 -292
- package/templates/config.json +1 -1
- package/templates/extraction/article.md +15 -15
- package/templates/extraction/changelog.md +15 -15
- package/templates/extraction/default.md +15 -15
- package/templates/extraction/docs.md +15 -15
- package/templates/extraction/github-repo.md +17 -17
- package/dist/scripts/lib/daemon.d.ts +0 -16
- package/dist/scripts/lib/daemon.d.ts.map +0 -1
- package/dist/scripts/lib/daemon.js +0 -133
- package/dist/scripts/lib/daemon.js.map +0 -1
- package/dist/scripts/lib/embedding.d.ts +0 -5
- package/dist/scripts/lib/embedding.d.ts.map +0 -1
- package/dist/scripts/lib/embedding.js +0 -44
- package/dist/scripts/lib/embedding.js.map +0 -1
- package/dist/scripts/mindlore-daemon.d.ts +0 -2
- package/dist/scripts/mindlore-daemon.d.ts.map +0 -1
- package/dist/scripts/mindlore-daemon.js +0 -117
- package/dist/scripts/mindlore-daemon.js.map +0 -1
- package/dist/tests/daemon-integration.test.d.ts +0 -2
- package/dist/tests/daemon-integration.test.d.ts.map +0 -1
- package/dist/tests/daemon-integration.test.js +0 -37
- package/dist/tests/daemon-integration.test.js.map +0 -1
- package/dist/tests/daemon.test.d.ts +0 -2
- package/dist/tests/daemon.test.d.ts.map +0 -1
- package/dist/tests/daemon.test.js +0 -187
- package/dist/tests/daemon.test.js.map +0 -1
- package/dist/tests/embedding-hf-integration.test.d.ts +0 -2
- package/dist/tests/embedding-hf-integration.test.d.ts.map +0 -1
- package/dist/tests/embedding-hf-integration.test.js +0 -52
- package/dist/tests/embedding-hf-integration.test.js.map +0 -1
- package/dist/tests/embedding.test.d.ts +0 -6
- package/dist/tests/embedding.test.d.ts.map +0 -1
- package/dist/tests/embedding.test.js +0 -71
- package/dist/tests/embedding.test.js.map +0 -1
- package/dist/tests/sqlite-vec-v12.test.d.ts +0 -2
- package/dist/tests/sqlite-vec-v12.test.d.ts.map +0 -1
- package/dist/tests/sqlite-vec-v12.test.js +0 -72
- package/dist/tests/sqlite-vec-v12.test.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../tests/helpers/db.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../tests/helpers/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lesson-graduation.test.d.ts","sourceRoot":"","sources":["../../tests/lesson-graduation.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const db_js_1 = require("./helpers/db.js");
|
|
4
|
+
const schema_version_js_1 = require("../scripts/lib/schema-version.js");
|
|
5
|
+
const migrations_v067_js_1 = require("../scripts/lib/migrations-v067.js");
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- require() returns any, narrowing to known CJS export shape
|
|
7
|
+
const { getNominationCounts } = require('../hooks/lib/mindlore-common.cjs');
|
|
8
|
+
function setupDb() {
|
|
9
|
+
const env = (0, db_js_1.createEpisodesTestEnvWithMigrations)('grad');
|
|
10
|
+
(0, schema_version_js_1.runMigrations)(env.db, migrations_v067_js_1.V067_MIGRATIONS);
|
|
11
|
+
return env;
|
|
12
|
+
}
|
|
13
|
+
describe('Q1 — auto reflect trigger', () => {
|
|
14
|
+
let env;
|
|
15
|
+
beforeEach(() => { env = setupDb(); });
|
|
16
|
+
afterEach(() => { (0, db_js_1.destroyEpisodesTestEnv)(env); });
|
|
17
|
+
it('returns staged count below threshold', () => {
|
|
18
|
+
env.db.prepare("INSERT INTO episodes (id, kind, project, summary, status, created_at) VALUES (?, ?, ?, ?, ?, ?)").run('n1', 'nomination', 'test', 'test nom', 'staged', new Date().toISOString());
|
|
19
|
+
expect(getNominationCounts(env.db, 'test').staged).toBe(1);
|
|
20
|
+
});
|
|
21
|
+
it('returns staged count at threshold', () => {
|
|
22
|
+
const now = new Date().toISOString();
|
|
23
|
+
for (let i = 1; i <= 5; i++) {
|
|
24
|
+
env.db.prepare("INSERT INTO episodes (id, kind, project, summary, status, created_at) VALUES (?, ?, ?, ?, ?, ?)").run(`n${i}`, 'nomination', 'test', `nom ${i}`, 'staged', now);
|
|
25
|
+
}
|
|
26
|
+
const counts = getNominationCounts(env.db, 'test');
|
|
27
|
+
expect(counts.staged).toBe(5);
|
|
28
|
+
expect(counts.graduated).toBe(0);
|
|
29
|
+
});
|
|
30
|
+
it('ignores non-staged nominations', () => {
|
|
31
|
+
const now = new Date().toISOString();
|
|
32
|
+
for (let i = 1; i <= 5; i++) {
|
|
33
|
+
env.db.prepare("INSERT INTO episodes (id, kind, project, summary, status, created_at) VALUES (?, ?, ?, ?, ?, ?)").run(`n${i}`, 'nomination', 'test', `nom ${i}`, i <= 3 ? 'staged' : 'approved', now);
|
|
34
|
+
}
|
|
35
|
+
expect(getNominationCounts(env.db, 'test').staged).toBe(3);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('Q2 — graduation tracking', () => {
|
|
39
|
+
let env;
|
|
40
|
+
beforeEach(() => { env = setupDb(); });
|
|
41
|
+
afterEach(() => { (0, db_js_1.destroyEpisodesTestEnv)(env); });
|
|
42
|
+
it('can set graduated_at on a nomination', () => {
|
|
43
|
+
const now = new Date().toISOString();
|
|
44
|
+
env.db.prepare("INSERT INTO episodes (id, kind, project, summary, status, created_at) VALUES (?, ?, ?, ?, ?, ?)").run('n1', 'nomination', 'test', 'test nom', 'staged', now);
|
|
45
|
+
env.db.prepare("UPDATE episodes SET status = 'approved', graduated_at = ? WHERE id = 'n1'").run(now);
|
|
46
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- better-sqlite3 .get() returns unknown
|
|
47
|
+
const row = env.db.prepare("SELECT status, graduated_at FROM episodes WHERE id = 'n1'").get();
|
|
48
|
+
expect(row.status).toBe('approved');
|
|
49
|
+
expect(row.graduated_at).toBe(now);
|
|
50
|
+
});
|
|
51
|
+
it('can set rejected_at and rejection_reason', () => {
|
|
52
|
+
const now = new Date().toISOString();
|
|
53
|
+
env.db.prepare("INSERT INTO episodes (id, kind, project, summary, status, created_at) VALUES (?, ?, ?, ?, ?, ?)").run('n1', 'nomination', 'test', 'test nom', 'staged', now);
|
|
54
|
+
env.db.prepare("UPDATE episodes SET status = 'rejected', rejected_at = ?, rejection_reason = ? WHERE id = 'n1'").run(now, 'Too vague');
|
|
55
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- better-sqlite3 .get() returns unknown
|
|
56
|
+
const row = env.db.prepare("SELECT status, rejected_at, rejection_reason FROM episodes WHERE id = 'n1'").get();
|
|
57
|
+
expect(row.status).toBe('rejected');
|
|
58
|
+
expect(row.rejected_at).toBe(now);
|
|
59
|
+
expect(row.rejection_reason).toBe('Too vague');
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
describe('Q3 — graduated lesson count', () => {
|
|
63
|
+
let env;
|
|
64
|
+
beforeEach(() => { env = setupDb(); });
|
|
65
|
+
afterEach(() => { (0, db_js_1.destroyEpisodesTestEnv)(env); });
|
|
66
|
+
it('returns 0 when no graduated lessons', () => {
|
|
67
|
+
expect(getNominationCounts(env.db, 'test').graduated).toBe(0);
|
|
68
|
+
});
|
|
69
|
+
it('counts graduated lessons correctly', () => {
|
|
70
|
+
const now = new Date().toISOString();
|
|
71
|
+
env.db.prepare("INSERT INTO episodes (id, kind, project, summary, status, graduated_at, created_at) VALUES (?, ?, ?, ?, ?, ?, ?)").run('n1', 'nomination', 'test', 'Always run build before test', 'approved', now, now);
|
|
72
|
+
env.db.prepare("INSERT INTO episodes (id, kind, project, summary, status, graduated_at, created_at) VALUES (?, ?, ?, ?, ?, ?, ?)").run('n2', 'nomination', 'test', 'Check CI after push', 'approved', now, now);
|
|
73
|
+
env.db.prepare("INSERT INTO episodes (id, kind, project, summary, status, created_at) VALUES (?, ?, ?, ?, ?, ?)").run('n3', 'nomination', 'test', 'Not graduated', 'staged', now);
|
|
74
|
+
expect(getNominationCounts(env.db, 'test').graduated).toBe(2);
|
|
75
|
+
});
|
|
76
|
+
it('ignores rejected nominations', () => {
|
|
77
|
+
const now = new Date().toISOString();
|
|
78
|
+
env.db.prepare("INSERT INTO episodes (id, kind, project, summary, status, graduated_at, created_at) VALUES (?, ?, ?, ?, ?, ?, ?)").run('n1', 'nomination', 'test', 'Good lesson', 'approved', now, now);
|
|
79
|
+
env.db.prepare("INSERT INTO episodes (id, kind, project, summary, status, rejected_at, rejection_reason, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)").run('n2', 'nomination', 'test', 'Bad lesson', 'rejected', now, 'Too vague', now);
|
|
80
|
+
expect(getNominationCounts(env.db, 'test').graduated).toBe(1);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=lesson-graduation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lesson-graduation.test.js","sourceRoot":"","sources":["../../tests/lesson-graduation.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,27 +17,27 @@ function createBaseDb(dbPath) {
|
|
|
17
17
|
const db = new better_sqlite3_1.default(dbPath);
|
|
18
18
|
db.pragma('journal_mode = WAL');
|
|
19
19
|
db.exec(SQL_FTS_CREATE);
|
|
20
|
-
db.exec(`
|
|
21
|
-
CREATE TABLE IF NOT EXISTS file_hashes (
|
|
22
|
-
path TEXT PRIMARY KEY,
|
|
23
|
-
content_hash TEXT NOT NULL,
|
|
24
|
-
last_indexed TEXT NOT NULL
|
|
25
|
-
);
|
|
20
|
+
db.exec(`
|
|
21
|
+
CREATE TABLE IF NOT EXISTS file_hashes (
|
|
22
|
+
path TEXT PRIMARY KEY,
|
|
23
|
+
content_hash TEXT NOT NULL,
|
|
24
|
+
last_indexed TEXT NOT NULL
|
|
25
|
+
);
|
|
26
26
|
`);
|
|
27
27
|
(0, schema_version_js_1.ensureSchemaTable)(db);
|
|
28
28
|
return db;
|
|
29
29
|
}
|
|
30
30
|
function addEpisodesTable(db) {
|
|
31
|
-
db.exec(`
|
|
32
|
-
CREATE TABLE IF NOT EXISTS episodes (
|
|
33
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
34
|
-
session_id TEXT NOT NULL,
|
|
35
|
-
timestamp TEXT NOT NULL,
|
|
36
|
-
summary TEXT NOT NULL,
|
|
37
|
-
project TEXT,
|
|
38
|
-
tags TEXT,
|
|
39
|
-
quality REAL DEFAULT 0.5
|
|
40
|
-
);
|
|
31
|
+
db.exec(`
|
|
32
|
+
CREATE TABLE IF NOT EXISTS episodes (
|
|
33
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
34
|
+
session_id TEXT NOT NULL,
|
|
35
|
+
timestamp TEXT NOT NULL,
|
|
36
|
+
summary TEXT NOT NULL,
|
|
37
|
+
project TEXT,
|
|
38
|
+
tags TEXT,
|
|
39
|
+
quality REAL DEFAULT 0.5
|
|
40
|
+
);
|
|
41
41
|
`);
|
|
42
42
|
}
|
|
43
43
|
describe('v0.5.3 Migrations', () => {
|
|
@@ -11,16 +11,16 @@ const migrations_v052_js_1 = require("../scripts/lib/migrations-v052.js");
|
|
|
11
11
|
const migrations_v053_js_1 = require("../scripts/lib/migrations-v053.js");
|
|
12
12
|
function setupDb() {
|
|
13
13
|
const db = new better_sqlite3_1.default(':memory:');
|
|
14
|
-
db.exec(`
|
|
15
|
-
CREATE VIRTUAL TABLE mindlore_fts USING fts5(
|
|
16
|
-
path, slug, description, type, category, title, content, tags,
|
|
17
|
-
quality, date_captured, project
|
|
18
|
-
);
|
|
19
|
-
CREATE TABLE IF NOT EXISTS file_hashes (
|
|
20
|
-
path TEXT PRIMARY KEY, content_hash TEXT, last_indexed TEXT,
|
|
21
|
-
recall_count INTEGER DEFAULT 0, last_recalled_at TEXT,
|
|
22
|
-
archived_at TEXT, importance REAL DEFAULT 1.0
|
|
23
|
-
);
|
|
14
|
+
db.exec(`
|
|
15
|
+
CREATE VIRTUAL TABLE mindlore_fts USING fts5(
|
|
16
|
+
path, slug, description, type, category, title, content, tags,
|
|
17
|
+
quality, date_captured, project
|
|
18
|
+
);
|
|
19
|
+
CREATE TABLE IF NOT EXISTS file_hashes (
|
|
20
|
+
path TEXT PRIMARY KEY, content_hash TEXT, last_indexed TEXT,
|
|
21
|
+
recall_count INTEGER DEFAULT 0, last_recalled_at TEXT,
|
|
22
|
+
archived_at TEXT, importance REAL DEFAULT 1.0
|
|
23
|
+
);
|
|
24
24
|
`);
|
|
25
25
|
(0, schema_version_js_1.ensureSchemaTable)(db);
|
|
26
26
|
const allPrior = [...migrations_js_1.V050_MIGRATIONS, ...migrations_js_1.V051_MIGRATIONS, ...migrations_v052_js_1.V052_MIGRATIONS, ...migrations_v053_js_1.V053_MIGRATIONS];
|
|
@@ -64,11 +64,11 @@ describe('v0.6.3 migrations', () => {
|
|
|
64
64
|
expect(trigramCount).toBe(1);
|
|
65
65
|
cleanup(dir, db);
|
|
66
66
|
});
|
|
67
|
-
test('schema version is
|
|
67
|
+
test('schema version is 19 after migration', () => {
|
|
68
68
|
const dir = makeTmpDir();
|
|
69
69
|
const db = (0, db_js_1.createTestDbWithMigrations)(path_1.default.join(dir, 'mindlore.db'));
|
|
70
70
|
const row = db.prepare('SELECT MAX(version) as v FROM schema_versions').get();
|
|
71
|
-
expect(row.v).toBe(
|
|
71
|
+
expect(row.v).toBe(19);
|
|
72
72
|
cleanup(dir, db);
|
|
73
73
|
});
|
|
74
74
|
test('vocabulary table accepts inserts and dedup', () => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations-v067.test.d.ts","sourceRoot":"","sources":["../../tests/migrations-v067.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const path_1 = __importDefault(require("path"));
|
|
7
|
+
const os_1 = __importDefault(require("os"));
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const schema_version_js_1 = require("../scripts/lib/schema-version.js");
|
|
10
|
+
const migrations_js_1 = require("../scripts/lib/migrations.js");
|
|
11
|
+
const migrations_v052_js_1 = require("../scripts/lib/migrations-v052.js");
|
|
12
|
+
const migrations_v053_js_1 = require("../scripts/lib/migrations-v053.js");
|
|
13
|
+
const migrations_v062_js_1 = require("../scripts/lib/migrations-v062.js");
|
|
14
|
+
const migrations_v063_js_1 = require("../scripts/lib/migrations-v063.js");
|
|
15
|
+
const migrations_v066_js_1 = require("../scripts/lib/migrations-v066.js");
|
|
16
|
+
const migrations_v067_js_1 = require("../scripts/lib/migrations-v067.js");
|
|
17
|
+
const db_js_1 = require("./helpers/db.js");
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- require() returns any
|
|
19
|
+
const { ensureEpisodesTable } = require('../hooks/lib/mindlore-common.cjs');
|
|
20
|
+
const PRE_V067_MIGRATIONS = [
|
|
21
|
+
...migrations_js_1.V050_MIGRATIONS, ...migrations_js_1.V051_MIGRATIONS, ...migrations_v052_js_1.V052_MIGRATIONS,
|
|
22
|
+
...migrations_v053_js_1.V053_MIGRATIONS, ...migrations_v062_js_1.V062_MIGRATIONS, ...migrations_v063_js_1.V063_MIGRATIONS,
|
|
23
|
+
...migrations_v066_js_1.V066_MIGRATIONS,
|
|
24
|
+
];
|
|
25
|
+
function setupPreV067Db() {
|
|
26
|
+
const tmpDir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'mig067-'));
|
|
27
|
+
const dbPath = path_1.default.join(tmpDir, 'test.db');
|
|
28
|
+
const db = (0, db_js_1.createTestDb)(dbPath);
|
|
29
|
+
ensureEpisodesTable(db);
|
|
30
|
+
(0, schema_version_js_1.ensureSchemaTable)(db);
|
|
31
|
+
(0, schema_version_js_1.runMigrations)(db, PRE_V067_MIGRATIONS);
|
|
32
|
+
return { db, tmpDir };
|
|
33
|
+
}
|
|
34
|
+
let testDb;
|
|
35
|
+
let tmpDir;
|
|
36
|
+
beforeEach(() => {
|
|
37
|
+
const env = setupPreV067Db();
|
|
38
|
+
testDb = env.db;
|
|
39
|
+
tmpDir = env.tmpDir;
|
|
40
|
+
});
|
|
41
|
+
afterEach(() => {
|
|
42
|
+
testDb.close();
|
|
43
|
+
fs_1.default.rmSync(tmpDir, { recursive: true, force: true });
|
|
44
|
+
});
|
|
45
|
+
describe('v0.6.7 migrations', () => {
|
|
46
|
+
it('starts at schema version 14 before v067 migrations', () => {
|
|
47
|
+
expect((0, schema_version_js_1.getSchemaVersion)(testDb)).toBe(14);
|
|
48
|
+
});
|
|
49
|
+
describe('v15 — graduation columns', () => {
|
|
50
|
+
it('adds graduated_at, rejected_at, rejection_reason to episodes', () => {
|
|
51
|
+
(0, schema_version_js_1.runMigrations)(testDb, migrations_v067_js_1.V067_MIGRATIONS);
|
|
52
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- better-sqlite3 .all() returns unknown[]
|
|
53
|
+
const cols = testDb.prepare("PRAGMA table_info('episodes')").all();
|
|
54
|
+
const colNames = cols.map(c => c.name);
|
|
55
|
+
expect(colNames).toContain('graduated_at');
|
|
56
|
+
expect(colNames).toContain('rejected_at');
|
|
57
|
+
expect(colNames).toContain('rejection_reason');
|
|
58
|
+
});
|
|
59
|
+
it('defaults are null', () => {
|
|
60
|
+
(0, schema_version_js_1.runMigrations)(testDb, migrations_v067_js_1.V067_MIGRATIONS);
|
|
61
|
+
testDb.prepare("INSERT INTO episodes (id, kind, project, summary, created_at) VALUES ('e1', 'nomination', 'test', 'test nomination', '2026-05-02')").run();
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- better-sqlite3 .get() returns unknown
|
|
63
|
+
const row = testDb.prepare("SELECT graduated_at, rejected_at, rejection_reason FROM episodes WHERE id = 'e1'").get();
|
|
64
|
+
expect(row.graduated_at).toBeNull();
|
|
65
|
+
expect(row.rejected_at).toBeNull();
|
|
66
|
+
expect(row.rejection_reason).toBeNull();
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
describe('v16 — episode_inject_log INTEGER fix', () => {
|
|
70
|
+
it('episode_id column is TEXT before migration', () => {
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- better-sqlite3 .all() returns unknown[]
|
|
72
|
+
const cols = testDb.prepare("PRAGMA table_info('episode_inject_log')").all();
|
|
73
|
+
const epCol = cols.find(c => c.name === 'episode_id');
|
|
74
|
+
expect(epCol?.type).toBe('TEXT');
|
|
75
|
+
});
|
|
76
|
+
it('episode_id column becomes INTEGER after migration', () => {
|
|
77
|
+
testDb.prepare("INSERT INTO episode_inject_log (session_id, episode_id, injected_at) VALUES ('s1', '42', '2026-05-01')").run();
|
|
78
|
+
(0, schema_version_js_1.runMigrations)(testDb, migrations_v067_js_1.V067_MIGRATIONS);
|
|
79
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- better-sqlite3 .all() returns unknown[]
|
|
80
|
+
const cols = testDb.prepare("PRAGMA table_info('episode_inject_log')").all();
|
|
81
|
+
const epCol = cols.find(c => c.name === 'episode_id');
|
|
82
|
+
expect(epCol?.type).toBe('INTEGER');
|
|
83
|
+
});
|
|
84
|
+
it('preserves and converts TEXT data to INTEGER after migration', () => {
|
|
85
|
+
testDb.prepare("INSERT INTO episode_inject_log (session_id, episode_id, injected_at) VALUES ('s1', '42', '2026-05-01')").run();
|
|
86
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- better-sqlite3 .get() returns unknown
|
|
87
|
+
const before = testDb.prepare("SELECT typeof(episode_id) as t FROM episode_inject_log WHERE session_id = 's1'").get();
|
|
88
|
+
expect(before.t).toBe('text');
|
|
89
|
+
(0, schema_version_js_1.runMigrations)(testDb, migrations_v067_js_1.V067_MIGRATIONS);
|
|
90
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- better-sqlite3 .get() returns unknown
|
|
91
|
+
const after = testDb.prepare("SELECT episode_id, typeof(episode_id) as t FROM episode_inject_log WHERE session_id = 's1'").get();
|
|
92
|
+
expect(after.episode_id).toBe(42);
|
|
93
|
+
expect(after.t).toBe('integer');
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
describe('v17 — inject log TTL cleanup', () => {
|
|
97
|
+
it('cleanupExpiredInjectLog deletes rows older than 30 days', () => {
|
|
98
|
+
(0, schema_version_js_1.runMigrations)(testDb, migrations_v067_js_1.V067_MIGRATIONS);
|
|
99
|
+
const old = new Date(Date.now() - 31 * 24 * 60 * 60 * 1000).toISOString();
|
|
100
|
+
const recent = new Date().toISOString();
|
|
101
|
+
testDb.prepare("INSERT INTO episode_inject_log (session_id, episode_id, injected_at) VALUES (?, ?, ?)").run('old-s', 1, old);
|
|
102
|
+
testDb.prepare("INSERT INTO episode_inject_log (session_id, episode_id, injected_at) VALUES (?, ?, ?)").run('new-s', 2, recent);
|
|
103
|
+
const deleted = (0, migrations_v067_js_1.cleanupExpiredInjectLog)(testDb);
|
|
104
|
+
expect(deleted).toBe(1);
|
|
105
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- better-sqlite3 .get() returns unknown
|
|
106
|
+
const remaining = testDb.prepare("SELECT COUNT(*) as cnt FROM episode_inject_log").get();
|
|
107
|
+
expect(remaining.cnt).toBe(1);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
it('schema version reaches 17', () => {
|
|
111
|
+
(0, schema_version_js_1.runMigrations)(testDb, migrations_v067_js_1.V067_MIGRATIONS);
|
|
112
|
+
expect((0, schema_version_js_1.getSchemaVersion)(testDb)).toBe(17);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
//# sourceMappingURL=migrations-v067.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations-v067.test.js","sourceRoot":"","sources":["../../tests/migrations-v067.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations-v068.test.d.ts","sourceRoot":"","sources":["../../tests/migrations-v068.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-unsafe-type-assertion */
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const os_1 = __importDefault(require("os"));
|
|
9
|
+
const fs_1 = __importDefault(require("fs"));
|
|
10
|
+
const db_js_1 = require("./helpers/db.js");
|
|
11
|
+
const migrations_v068_js_1 = require("../scripts/lib/migrations-v068.js");
|
|
12
|
+
const schema_version_js_1 = require("../scripts/lib/schema-version.js");
|
|
13
|
+
describe('V068 Migrations', () => {
|
|
14
|
+
let db;
|
|
15
|
+
const dbPath = path_1.default.join(os_1.default.tmpdir(), `mindlore-v068-test-${Date.now()}.db`);
|
|
16
|
+
beforeEach(() => {
|
|
17
|
+
db = (0, db_js_1.createTestDbWithMigrations)(dbPath);
|
|
18
|
+
});
|
|
19
|
+
afterEach(() => {
|
|
20
|
+
db.close();
|
|
21
|
+
fs_1.default.unlinkSync(dbPath);
|
|
22
|
+
});
|
|
23
|
+
test('v18: creates injected_at index', () => {
|
|
24
|
+
(0, schema_version_js_1.runMigrations)(db, migrations_v068_js_1.V068_MIGRATIONS);
|
|
25
|
+
const indexes = db.prepare("SELECT name FROM sqlite_master WHERE type='index' AND tbl_name='episode_inject_log'").all();
|
|
26
|
+
expect(indexes.some(i => i.name === 'idx_inject_log_injected_at')).toBe(true);
|
|
27
|
+
});
|
|
28
|
+
test('v18: is idempotent', () => {
|
|
29
|
+
(0, schema_version_js_1.runMigrations)(db, migrations_v068_js_1.V068_MIGRATIONS);
|
|
30
|
+
expect(() => (0, schema_version_js_1.runMigrations)(db, migrations_v068_js_1.V068_MIGRATIONS)).not.toThrow();
|
|
31
|
+
});
|
|
32
|
+
test('v19: drops all documents_vec shadow tables', () => {
|
|
33
|
+
// Reset schema version to before v19 so migration actually runs
|
|
34
|
+
db.exec("DELETE FROM schema_versions WHERE version >= 19");
|
|
35
|
+
const vecTables = [
|
|
36
|
+
'documents_vec_info', 'documents_vec_chunks',
|
|
37
|
+
'documents_vec_rowids', 'documents_vec_vector_chunks00',
|
|
38
|
+
'documents_vec_metadatachunks00', 'documents_vec_metadatatext00',
|
|
39
|
+
'documents_vec_auxiliary',
|
|
40
|
+
];
|
|
41
|
+
for (const table of vecTables) {
|
|
42
|
+
db.exec(`CREATE TABLE IF NOT EXISTS "${table}" (id INTEGER PRIMARY KEY)`);
|
|
43
|
+
}
|
|
44
|
+
(0, schema_version_js_1.runMigrations)(db, migrations_v068_js_1.V068_MIGRATIONS);
|
|
45
|
+
const remaining = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name LIKE 'documents_vec%'").all();
|
|
46
|
+
expect(remaining).toHaveLength(0);
|
|
47
|
+
});
|
|
48
|
+
test('v19: is idempotent (no tables to drop)', () => {
|
|
49
|
+
(0, schema_version_js_1.runMigrations)(db, migrations_v068_js_1.V068_MIGRATIONS);
|
|
50
|
+
expect(() => (0, schema_version_js_1.runMigrations)(db, migrations_v068_js_1.V068_MIGRATIONS)).not.toThrow();
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=migrations-v068.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations-v068.test.js","sourceRoot":"","sources":["../../tests/migrations-v068.test.ts"],"names":[],"mappings":";AAAA,gEAAgE;;;;;AAGhE,gDAAwB;AACxB,4CAAoB;AACpB,4CAAoB;AACpB,2CAA6D;AAC7D,0EAAoE;AACpE,wEAAiE;AAEjE,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,EAAqB,CAAC;IAC1B,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,sBAAsB,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAE7E,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,GAAG,IAAA,kCAA0B,EAAC,MAAM,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC1C,IAAA,iCAAa,EAAC,EAAE,EAAE,oCAAe,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CACxB,qFAAqF,CACtF,CAAC,GAAG,EAA6B,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,4BAA4B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC9B,IAAA,iCAAa,EAAC,EAAE,EAAE,oCAAe,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,iCAAa,EAAC,EAAE,EAAE,oCAAe,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACtD,gEAAgE;QAChE,EAAE,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG;YAChB,oBAAoB,EAAE,sBAAsB;YAC5C,sBAAsB,EAAE,+BAA+B;YACvD,gCAAgC,EAAE,8BAA8B;YAChE,yBAAyB;SAC1B,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,EAAE,CAAC,IAAI,CAAC,+BAA+B,KAAK,4BAA4B,CAAC,CAAC;QAC5E,CAAC;QACD,IAAA,iCAAa,EAAC,EAAE,EAAE,oCAAe,CAAC,CAAC;QACnC,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAC1B,kFAAkF,CACnF,CAAC,GAAG,EAA6B,CAAC;QACnC,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAClD,IAAA,iCAAa,EAAC,EAAE,EAAE,oCAAe,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,iCAAa,EAAC,EAAE,EAAE,oCAAe,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nomination-counts.test.d.ts","sourceRoot":"","sources":["../../tests/nomination-counts.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const path_1 = __importDefault(require("path"));
|
|
7
|
+
const os_1 = __importDefault(require("os"));
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const db_js_1 = require("./helpers/db.js");
|
|
10
|
+
// NOT: createTestDbWithMigrations kullanılıyor (createTestDbWithFullSchema değil)
|
|
11
|
+
// çünkü bu test v18 migration'a bağımlı değil. R5 (Task 16) sonrası
|
|
12
|
+
// createTestDbWithFullSchema'ya geçiş opsiyonel.
|
|
13
|
+
const { getNominationCounts } = require('../hooks/lib/mindlore-common.cjs');
|
|
14
|
+
describe('getNominationCounts', () => {
|
|
15
|
+
let db;
|
|
16
|
+
const dbPath = path_1.default.join(os_1.default.tmpdir(), `mindlore-nom-counts-${Date.now()}.db`);
|
|
17
|
+
beforeEach(() => {
|
|
18
|
+
db = (0, db_js_1.createTestDbWithMigrations)(dbPath);
|
|
19
|
+
});
|
|
20
|
+
afterEach(() => {
|
|
21
|
+
db.close();
|
|
22
|
+
try {
|
|
23
|
+
fs_1.default.unlinkSync(dbPath);
|
|
24
|
+
}
|
|
25
|
+
catch { }
|
|
26
|
+
});
|
|
27
|
+
test('returns zero counts on empty table', () => {
|
|
28
|
+
const result = getNominationCounts(db, 'test-project');
|
|
29
|
+
expect(result).toEqual({ staged: 0, graduated: 0 });
|
|
30
|
+
});
|
|
31
|
+
test('counts staged nominations', () => {
|
|
32
|
+
(0, db_js_1.insertEpisode)(db, { kind: 'nomination', status: 'staged', project: 'proj1' });
|
|
33
|
+
(0, db_js_1.insertEpisode)(db, { kind: 'nomination', status: 'staged', project: 'proj1' });
|
|
34
|
+
(0, db_js_1.insertEpisode)(db, { kind: 'nomination', status: 'approved', project: 'proj1' });
|
|
35
|
+
const result = getNominationCounts(db, 'proj1');
|
|
36
|
+
expect(result.staged).toBe(2);
|
|
37
|
+
});
|
|
38
|
+
test('counts graduated nominations', () => {
|
|
39
|
+
(0, db_js_1.insertEpisode)(db, { kind: 'nomination', status: 'approved', project: 'proj1', graduated_at: '2026-01-01' });
|
|
40
|
+
(0, db_js_1.insertEpisode)(db, { kind: 'nomination', status: 'approved', project: 'proj1', graduated_at: null });
|
|
41
|
+
const result = getNominationCounts(db, 'proj1');
|
|
42
|
+
expect(result.graduated).toBe(1);
|
|
43
|
+
});
|
|
44
|
+
test('filters by project', () => {
|
|
45
|
+
(0, db_js_1.insertEpisode)(db, { kind: 'nomination', status: 'staged', project: 'proj1' });
|
|
46
|
+
(0, db_js_1.insertEpisode)(db, { kind: 'nomination', status: 'staged', project: 'proj2' });
|
|
47
|
+
const result = getNominationCounts(db, 'proj1');
|
|
48
|
+
expect(result.staged).toBe(1);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=nomination-counts.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nomination-counts.test.js","sourceRoot":"","sources":["../../tests/nomination-counts.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,17 +17,17 @@ describe('Recall Telemetry', () => {
|
|
|
17
17
|
beforeEach(() => {
|
|
18
18
|
fs_1.default.mkdirSync(tmpDir, { recursive: true });
|
|
19
19
|
const db = new better_sqlite3_1.default(dbPath);
|
|
20
|
-
db.exec(`
|
|
21
|
-
CREATE TABLE IF NOT EXISTS file_hashes (path TEXT PRIMARY KEY, hash TEXT, last_indexed TEXT);
|
|
22
|
-
CREATE VIRTUAL TABLE IF NOT EXISTS mindlore_fts USING fts5(
|
|
23
|
-
path, slug, description, type, category, title, content, tags, quality, date_captured, project
|
|
24
|
-
);
|
|
20
|
+
db.exec(`
|
|
21
|
+
CREATE TABLE IF NOT EXISTS file_hashes (path TEXT PRIMARY KEY, hash TEXT, last_indexed TEXT);
|
|
22
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS mindlore_fts USING fts5(
|
|
23
|
+
path, slug, description, type, category, title, content, tags, quality, date_captured, project
|
|
24
|
+
);
|
|
25
25
|
`);
|
|
26
26
|
(0, schema_version_js_1.ensureSchemaTable)(db);
|
|
27
27
|
(0, schema_version_js_1.runMigrations)(db, [...migrations_js_1.V050_MIGRATIONS, ...migrations_js_1.V051_MIGRATIONS, ...migrations_v052_js_1.V052_MIGRATIONS, ...migrations_v053_js_1.V053_MIGRATIONS]);
|
|
28
|
-
db.exec(`
|
|
29
|
-
INSERT INTO file_hashes (path, hash, last_indexed, recall_count, last_recalled_at)
|
|
30
|
-
VALUES ('/test/file.md', 'abc123', '2026-01-01', 0, NULL);
|
|
28
|
+
db.exec(`
|
|
29
|
+
INSERT INTO file_hashes (path, hash, last_indexed, recall_count, last_recalled_at)
|
|
30
|
+
VALUES ('/test/file.md', 'abc123', '2026-01-01', 0, NULL);
|
|
31
31
|
`);
|
|
32
32
|
db.close();
|
|
33
33
|
});
|
|
@@ -65,27 +65,23 @@ describe('Schema Version', () => {
|
|
|
65
65
|
});
|
|
66
66
|
});
|
|
67
67
|
describe('v0.5.0 Migrations', () => {
|
|
68
|
-
test('should create documents_vec table via migration', () => {
|
|
68
|
+
test('should not create documents_vec table via migration', () => {
|
|
69
69
|
const { ensureSchemaTable, runMigrations, getSchemaVersion } = require('../scripts/lib/schema-version.js');
|
|
70
70
|
const { V050_MIGRATIONS } = require('../scripts/lib/migrations.js');
|
|
71
|
-
const { loadSqliteVec } = require('../scripts/lib/db-helpers.js');
|
|
72
71
|
const db = new better_sqlite3_1.default(DB_PATH);
|
|
73
|
-
loadSqliteVec(db);
|
|
74
72
|
ensureSchemaTable(db);
|
|
75
73
|
runMigrations(db, V050_MIGRATIONS);
|
|
76
74
|
expect(getSchemaVersion(db)).toBe(1);
|
|
77
|
-
// Verify vec table
|
|
75
|
+
// Verify vec table does not exist
|
|
78
76
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- test: better-sqlite3 .get() returns unknown
|
|
79
77
|
const row = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='documents_vec'").get();
|
|
80
|
-
expect(row
|
|
78
|
+
expect(row).toBeUndefined();
|
|
81
79
|
db.close();
|
|
82
80
|
});
|
|
83
81
|
test('should add created_at and updated_at to FTS metadata tracking', () => {
|
|
84
82
|
const { ensureSchemaTable, runMigrations } = require('../scripts/lib/schema-version.js');
|
|
85
83
|
const { V050_MIGRATIONS } = require('../scripts/lib/migrations.js');
|
|
86
|
-
const { loadSqliteVec } = require('../scripts/lib/db-helpers.js');
|
|
87
84
|
const db = new better_sqlite3_1.default(DB_PATH);
|
|
88
|
-
loadSqliteVec(db);
|
|
89
85
|
ensureSchemaTable(db);
|
|
90
86
|
runMigrations(db, V050_MIGRATIONS);
|
|
91
87
|
// file_hashes should now have created_at column
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-version.test.js","sourceRoot":"","sources":["../../tests/schema-version.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema-version.test.js","sourceRoot":"","sources":["../../tests/schema-version.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -78,8 +78,8 @@ describe('Search Hook — FTS5 Query', () => {
|
|
|
78
78
|
function queryFts(query) {
|
|
79
79
|
const db = new better_sqlite3_1.default(DB_PATH, { readonly: true });
|
|
80
80
|
try {
|
|
81
|
-
return (0, db_helpers_js_1.dbAll)(db, `SELECT path, rank FROM mindlore_fts
|
|
82
|
-
WHERE mindlore_fts MATCH ?
|
|
81
|
+
return (0, db_helpers_js_1.dbAll)(db, `SELECT path, rank FROM mindlore_fts
|
|
82
|
+
WHERE mindlore_fts MATCH ?
|
|
83
83
|
ORDER BY rank LIMIT 3`, query);
|
|
84
84
|
}
|
|
85
85
|
finally {
|