@contextgit/store 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/branch-merge.test.d.ts +2 -0
  2. package/dist/branch-merge.test.d.ts.map +1 -0
  3. package/dist/branch-merge.test.js +101 -0
  4. package/dist/branch-merge.test.js.map +1 -0
  5. package/dist/engine-integration.test.d.ts +2 -0
  6. package/dist/engine-integration.test.d.ts.map +1 -0
  7. package/dist/engine-integration.test.js +77 -0
  8. package/dist/engine-integration.test.js.map +1 -0
  9. package/dist/index.d.ts +4 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +3 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/interface.d.ts +30 -0
  14. package/dist/interface.d.ts.map +1 -0
  15. package/dist/interface.js +2 -0
  16. package/dist/interface.js.map +1 -0
  17. package/dist/local/claims.test.d.ts +2 -0
  18. package/dist/local/claims.test.d.ts.map +1 -0
  19. package/dist/local/claims.test.js +151 -0
  20. package/dist/local/claims.test.js.map +1 -0
  21. package/dist/local/index.d.ts +39 -0
  22. package/dist/local/index.d.ts.map +1 -0
  23. package/dist/local/index.js +319 -0
  24. package/dist/local/index.js.map +1 -0
  25. package/dist/local/local-store.test.d.ts +2 -0
  26. package/dist/local/local-store.test.d.ts.map +1 -0
  27. package/dist/local/local-store.test.js +141 -0
  28. package/dist/local/local-store.test.js.map +1 -0
  29. package/dist/local/migrations.d.ts +3 -0
  30. package/dist/local/migrations.d.ts.map +1 -0
  31. package/dist/local/migrations.js +78 -0
  32. package/dist/local/migrations.js.map +1 -0
  33. package/dist/local/queries.d.ts +44 -0
  34. package/dist/local/queries.d.ts.map +1 -0
  35. package/dist/local/queries.js +527 -0
  36. package/dist/local/queries.js.map +1 -0
  37. package/dist/local/schema.d.ts +15 -0
  38. package/dist/local/schema.d.ts.map +1 -0
  39. package/dist/local/schema.js +144 -0
  40. package/dist/local/schema.js.map +1 -0
  41. package/dist/remote/index.d.ts +39 -0
  42. package/dist/remote/index.d.ts.map +1 -0
  43. package/dist/remote/index.js +216 -0
  44. package/dist/remote/index.js.map +1 -0
  45. package/package.json +31 -0
@@ -0,0 +1,319 @@
1
+ // LocalStore — better-sqlite3 + sqlite-vec implementation of ContextStore.
2
+ //
3
+ // Key invariants:
4
+ // • All SQLite calls are synchronous (better-sqlite3).
5
+ // • The ContextStore interface returns Promises, so we wrap at the boundary
6
+ // with Promise.resolve() / Promise.reject().
7
+ // • IDs are nanoid() TEXT — never auto-increment integers.
8
+ // • DB path: ~/.contextgit/projects/<projectId>.db
9
+ import { homedir } from 'os';
10
+ import { mkdirSync } from 'fs';
11
+ import { join } from 'path';
12
+ import { createRequire } from 'module';
13
+ import Database from 'better-sqlite3';
14
+ import { nanoid } from 'nanoid';
15
+ const require = createRequire(import.meta.url);
16
+ import { SnapshotFormatter } from '@contextgit/core';
17
+ import { runMigrations } from './migrations.js';
18
+ import { Queries } from './queries.js';
19
+ const snapshotFormatter = new SnapshotFormatter();
20
+ // ─── LocalStore ───────────────────────────────────────────────────────────────
21
+ export class LocalStore {
22
+ db;
23
+ q;
24
+ /**
25
+ * @param projectId Used to derive the DB file path.
26
+ * Pass ':memory:' for tests.
27
+ */
28
+ constructor(projectId) {
29
+ let dbPath;
30
+ if (projectId === ':memory:') {
31
+ dbPath = ':memory:';
32
+ }
33
+ else {
34
+ const dir = join(homedir(), '.contextgit', 'projects');
35
+ mkdirSync(dir, { recursive: true });
36
+ dbPath = join(dir, `${projectId}.db`);
37
+ }
38
+ this.db = new Database(dbPath);
39
+ this.db.pragma('journal_mode = WAL');
40
+ this.db.pragma('busy_timeout = 5000');
41
+ this.db.pragma('foreign_keys = ON');
42
+ // Attempt to load sqlite-vec extension — graceful failure if not available
43
+ try {
44
+ const sqliteVec = require('sqlite-vec');
45
+ sqliteVec.load(this.db);
46
+ }
47
+ catch {
48
+ // sqlite-vec not installed or ABI mismatch — semantic search disabled
49
+ }
50
+ runMigrations(this.db);
51
+ this.q = new Queries(this.db);
52
+ }
53
+ // ─── Projects ─────────────────────────────────────────────────────────────
54
+ createProject(project) {
55
+ try {
56
+ return Promise.resolve(this.q.insertProject({ id: project.id ?? nanoid(), ...project }));
57
+ }
58
+ catch (e) {
59
+ return Promise.reject(e);
60
+ }
61
+ }
62
+ getProject(id) {
63
+ try {
64
+ return Promise.resolve(this.q.getProject(id));
65
+ }
66
+ catch (e) {
67
+ return Promise.reject(e);
68
+ }
69
+ }
70
+ // ─── Branches ─────────────────────────────────────────────────────────────
71
+ createBranch(branch) {
72
+ try {
73
+ const id = branch.id ?? nanoid();
74
+ // Idempotent: if caller supplied an ID and it already exists, return existing
75
+ if (branch.id) {
76
+ const existing = this.q.getBranch(branch.id);
77
+ if (existing)
78
+ return Promise.resolve(existing);
79
+ }
80
+ return Promise.resolve(this.q.insertBranch({ ...branch, id }));
81
+ }
82
+ catch (e) {
83
+ return Promise.reject(e);
84
+ }
85
+ }
86
+ getBranch(id) {
87
+ try {
88
+ return Promise.resolve(this.q.getBranch(id));
89
+ }
90
+ catch (e) {
91
+ return Promise.reject(e);
92
+ }
93
+ }
94
+ getBranchByGitName(projectId, gitBranch) {
95
+ try {
96
+ return Promise.resolve(this.q.getBranchByGitName(projectId, gitBranch));
97
+ }
98
+ catch (e) {
99
+ return Promise.reject(e);
100
+ }
101
+ }
102
+ listBranches(projectId) {
103
+ try {
104
+ return Promise.resolve(this.q.listBranches(projectId));
105
+ }
106
+ catch (e) {
107
+ return Promise.reject(e);
108
+ }
109
+ }
110
+ updateBranchHead(branchId, commitId) {
111
+ try {
112
+ this.q.updateBranchHead(branchId, commitId);
113
+ return Promise.resolve();
114
+ }
115
+ catch (e) {
116
+ return Promise.reject(e);
117
+ }
118
+ }
119
+ mergeBranch(sourceBranchId, targetBranchId, summary) {
120
+ try {
121
+ const result = this.db.transaction(() => {
122
+ const sourceBranch = this.q.getBranch(sourceBranchId);
123
+ if (!sourceBranch)
124
+ throw new Error(`Source branch not found: ${sourceBranchId}`);
125
+ const targetBranch = this.q.getBranch(targetBranchId);
126
+ if (!targetBranch)
127
+ throw new Error(`Target branch not found: ${targetBranchId}`);
128
+ const mergeCommitInput = {
129
+ branchId: targetBranchId,
130
+ parentId: targetBranch.headCommitId,
131
+ agentId: 'system',
132
+ agentRole: 'orchestrator',
133
+ tool: 'contextgit',
134
+ workflowType: 'interactive',
135
+ message: `Merge ${sourceBranch.name} into ${targetBranch.name}`,
136
+ content: summary,
137
+ summary,
138
+ commitType: 'merge',
139
+ };
140
+ const mergeCommit = this.q.insertCommit(nanoid(), mergeCommitInput, targetBranch.headCommitId ?? null, sourceBranchId);
141
+ // Update target branch HEAD
142
+ this.q.updateBranchHead(targetBranchId, mergeCommit.id);
143
+ // Mark source branch as merged
144
+ this.q.markBranchMerged(sourceBranchId);
145
+ // Carry open threads from source branch to target branch
146
+ this.q.reassignOpenThreads(sourceBranchId, targetBranchId);
147
+ return mergeCommit;
148
+ })();
149
+ return Promise.resolve(result);
150
+ }
151
+ catch (e) {
152
+ return Promise.reject(e);
153
+ }
154
+ }
155
+ // ─── Commits ──────────────────────────────────────────────────────────────
156
+ createCommit(input) {
157
+ try {
158
+ // Idempotent: if caller supplied an ID and it already exists, return existing
159
+ if (input.id) {
160
+ const existing = this.q.getCommit(input.id);
161
+ if (existing)
162
+ return Promise.resolve(existing);
163
+ }
164
+ const result = this.db.transaction(() => {
165
+ const branch = this.q.getBranch(input.branchId);
166
+ if (!branch)
167
+ throw new Error(`Branch not found: ${input.branchId}`);
168
+ const commitId = input.id ?? nanoid();
169
+ const parentId = input.parentId ?? branch.headCommitId ?? null;
170
+ const commit = this.q.insertCommit(commitId, input, parentId);
171
+ // Handle thread operations
172
+ if (input.threads?.open?.length) {
173
+ for (const description of input.threads.open) {
174
+ this.q.insertThread(nanoid(), description, branch.projectId, input.branchId, commitId, input.workflowType ?? null);
175
+ }
176
+ }
177
+ if (input.threads?.close?.length) {
178
+ for (const { id, note } of input.threads.close) {
179
+ this.q.closeThread(id, commitId, note);
180
+ }
181
+ }
182
+ // Update branch HEAD
183
+ this.q.updateBranchHead(input.branchId, commitId);
184
+ // Update agent stats
185
+ this.q.incrementAgentCommits(input.agentId);
186
+ // Auto-release this agent's claims on this branch (branch-scoped)
187
+ this.q.releaseClaimsByAgent(input.agentId, input.branchId);
188
+ return commit;
189
+ })();
190
+ return Promise.resolve(result);
191
+ }
192
+ catch (e) {
193
+ return Promise.reject(e);
194
+ }
195
+ }
196
+ getCommit(id) {
197
+ try {
198
+ return Promise.resolve(this.q.getCommit(id));
199
+ }
200
+ catch (e) {
201
+ return Promise.reject(e);
202
+ }
203
+ }
204
+ listCommits(branchId, pagination) {
205
+ try {
206
+ return Promise.resolve(this.q.listCommits(branchId, pagination));
207
+ }
208
+ catch (e) {
209
+ return Promise.reject(e);
210
+ }
211
+ }
212
+ // ─── Snapshots ────────────────────────────────────────────────────────────
213
+ getSessionSnapshot(projectId, branchId, options) {
214
+ try {
215
+ return Promise.resolve(this.q.getSessionSnapshot(projectId, branchId, options));
216
+ }
217
+ catch (e) {
218
+ return Promise.reject(e);
219
+ }
220
+ }
221
+ getFormattedSnapshot(projectId, branchId, format) {
222
+ try {
223
+ const snapshot = this.q.getSessionSnapshot(projectId, branchId);
224
+ return Promise.resolve(snapshotFormatter.format(snapshot, format));
225
+ }
226
+ catch (e) {
227
+ return Promise.reject(e);
228
+ }
229
+ }
230
+ // ─── Threads ──────────────────────────────────────────────────────────────
231
+ listOpenThreads(projectId) {
232
+ try {
233
+ return Promise.resolve(this.q.listOpenThreads(projectId));
234
+ }
235
+ catch (e) {
236
+ return Promise.reject(e);
237
+ }
238
+ }
239
+ listOpenThreadsByBranch(branchId) {
240
+ try {
241
+ return Promise.resolve(this.q.listOpenThreadsByBranch(branchId));
242
+ }
243
+ catch (e) {
244
+ return Promise.reject(e);
245
+ }
246
+ }
247
+ syncThread(thread) {
248
+ try {
249
+ return Promise.resolve(this.q.syncThread(thread));
250
+ }
251
+ catch (e) {
252
+ return Promise.reject(e);
253
+ }
254
+ }
255
+ // ─── Search ───────────────────────────────────────────────────────────────
256
+ indexEmbedding(commitId, vector) {
257
+ this.q.insertEmbedding(this.db, commitId, vector);
258
+ return Promise.resolve();
259
+ }
260
+ semanticSearch(vector, projectId, limit) {
261
+ return Promise.resolve(this.q.semanticSearch(this.db, vector, projectId, limit));
262
+ }
263
+ fullTextSearch(query, projectId) {
264
+ try {
265
+ return Promise.resolve(this.q.fullTextSearch(this.db, query, projectId));
266
+ }
267
+ catch (e) {
268
+ return Promise.reject(e);
269
+ }
270
+ }
271
+ // ─── Agents ───────────────────────────────────────────────────────────────
272
+ upsertAgent(agent) {
273
+ try {
274
+ return Promise.resolve(this.q.upsertAgent(agent));
275
+ }
276
+ catch (e) {
277
+ return Promise.reject(e);
278
+ }
279
+ }
280
+ listAgents(projectId) {
281
+ try {
282
+ return Promise.resolve(this.q.listAgents(projectId));
283
+ }
284
+ catch (e) {
285
+ return Promise.reject(e);
286
+ }
287
+ }
288
+ // ─── Claims ───────────────────────────────────────────────────────────────
289
+ claimTask(projectId, branchId, input) {
290
+ try {
291
+ return Promise.resolve(this.q.insertClaim(nanoid(), projectId, branchId, input));
292
+ }
293
+ catch (e) {
294
+ return Promise.reject(e);
295
+ }
296
+ }
297
+ unclaimTask(claimId) {
298
+ try {
299
+ this.q.updateClaimStatus(claimId, 'released', Date.now());
300
+ return Promise.resolve();
301
+ }
302
+ catch (e) {
303
+ return Promise.reject(e);
304
+ }
305
+ }
306
+ listActiveClaims(projectId) {
307
+ try {
308
+ return Promise.resolve(this.q.listActiveClaims(projectId));
309
+ }
310
+ catch (e) {
311
+ return Promise.reject(e);
312
+ }
313
+ }
314
+ // ─── Lifecycle ────────────────────────────────────────────────────────────
315
+ close() {
316
+ this.db.close();
317
+ }
318
+ }
319
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/local/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=local-store.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-store.test.d.ts","sourceRoot":"","sources":["../../src/local/local-store.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,141 @@
1
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
+ import { LocalStore } from './index.js';
3
+ describe('LocalStore (in-memory)', () => {
4
+ let store;
5
+ beforeEach(() => {
6
+ store = new LocalStore(':memory:');
7
+ });
8
+ afterEach(() => {
9
+ store.close();
10
+ });
11
+ it('creates and retrieves a project', async () => {
12
+ const project = await store.createProject({ name: 'test-project', description: 'A test' });
13
+ expect(project.id).toBeTruthy();
14
+ expect(project.name).toBe('test-project');
15
+ const fetched = await store.getProject(project.id);
16
+ expect(fetched).toBeTruthy();
17
+ expect(fetched.name).toBe('test-project');
18
+ });
19
+ it('creates and retrieves a branch', async () => {
20
+ const project = await store.createProject({ name: 'p' });
21
+ const branch = await store.createBranch({
22
+ projectId: project.id,
23
+ name: 'main',
24
+ gitBranch: 'main',
25
+ });
26
+ expect(branch.id).toBeTruthy();
27
+ expect(branch.gitBranch).toBe('main');
28
+ const byGit = await store.getBranchByGitName(project.id, 'main');
29
+ expect(byGit.id).toBe(branch.id);
30
+ });
31
+ it('creates a commit, opens a thread, closes it', async () => {
32
+ const project = await store.createProject({ name: 'p' });
33
+ const branch = await store.createBranch({ projectId: project.id, name: 'main', gitBranch: 'main' });
34
+ // Upsert agent first (required for commit attribution)
35
+ await store.upsertAgent({
36
+ id: 'agent-1',
37
+ projectId: project.id,
38
+ role: 'dev',
39
+ tool: 'claude-code',
40
+ workflowType: 'interactive',
41
+ });
42
+ const commit1 = await store.createCommit({
43
+ branchId: branch.id,
44
+ agentId: 'agent-1',
45
+ agentRole: 'dev',
46
+ tool: 'claude-code',
47
+ workflowType: 'interactive',
48
+ message: 'Initial commit',
49
+ content: 'Set up project structure',
50
+ summary: 'Project scaffolded',
51
+ commitType: 'manual',
52
+ threads: { open: ['Authentication approach not decided'] },
53
+ });
54
+ expect(commit1.id).toBeTruthy();
55
+ expect(commit1.message).toBe('Initial commit');
56
+ // Thread should be open
57
+ const openThreads = await store.listOpenThreads(project.id);
58
+ expect(openThreads).toHaveLength(1);
59
+ expect(openThreads[0].description).toBe('Authentication approach not decided');
60
+ const threadId = openThreads[0].id;
61
+ // Second commit closes the thread
62
+ const commit2 = await store.createCommit({
63
+ branchId: branch.id,
64
+ agentId: 'agent-1',
65
+ agentRole: 'dev',
66
+ tool: 'claude-code',
67
+ workflowType: 'interactive',
68
+ message: 'Choose JWT auth',
69
+ content: 'Implemented JWT RS256',
70
+ summary: 'JWT RS256 chosen, implemented',
71
+ commitType: 'manual',
72
+ threads: { close: [{ id: threadId, note: 'Using JWT RS256' }] },
73
+ });
74
+ expect(commit2.id).toBeTruthy();
75
+ const stillOpen = await store.listOpenThreads(project.id);
76
+ expect(stillOpen).toHaveLength(0);
77
+ });
78
+ it('getSessionSnapshot returns project/branch summaries and threads', async () => {
79
+ const project = await store.createProject({ name: 'snap-test' });
80
+ const main = await store.createBranch({ projectId: project.id, name: 'main', gitBranch: 'main' });
81
+ const feature = await store.createBranch({
82
+ projectId: project.id,
83
+ name: 'feature/auth',
84
+ gitBranch: 'feature/auth',
85
+ parentBranchId: main.id,
86
+ });
87
+ await store.upsertAgent({ id: 'ag', projectId: project.id, role: 'dev', tool: 'cli', workflowType: 'interactive' });
88
+ await store.createCommit({
89
+ branchId: main.id, agentId: 'ag', agentRole: 'dev', tool: 'cli',
90
+ workflowType: 'interactive', message: 'main commit', content: 'content',
91
+ summary: 'Main branch summary', commitType: 'manual',
92
+ });
93
+ await store.createCommit({
94
+ branchId: feature.id, agentId: 'ag', agentRole: 'dev', tool: 'cli',
95
+ workflowType: 'interactive', message: 'feature commit', content: 'feature content',
96
+ summary: 'Feature branch summary', commitType: 'manual',
97
+ threads: { open: ['Open thread on feature'] },
98
+ });
99
+ const snapshot = await store.getSessionSnapshot(project.id, feature.id);
100
+ expect(snapshot.projectSummary).toBe('Main branch summary');
101
+ expect(snapshot.branchSummary).toBe('Feature branch summary');
102
+ expect(snapshot.branchName).toBe('feature/auth');
103
+ expect(snapshot.recentCommits).toHaveLength(1);
104
+ expect(snapshot.openThreads).toHaveLength(1);
105
+ expect(snapshot.openThreads[0].description).toBe('Open thread on feature');
106
+ });
107
+ it('getFormattedSnapshot returns text format', async () => {
108
+ const project = await store.createProject({ name: 'fmt-test' });
109
+ const branch = await store.createBranch({ projectId: project.id, name: 'main', gitBranch: 'main' });
110
+ const text = await store.getFormattedSnapshot(project.id, branch.id, 'text');
111
+ expect(text).toContain('=== PROJECT STATE ===');
112
+ expect(text).toContain('=== CURRENT BRANCH: main ===');
113
+ expect(text).toContain('=== OPEN THREADS ===');
114
+ });
115
+ it('mergeBranch carries open threads to target and marks source merged', async () => {
116
+ const project = await store.createProject({ name: 'merge-test' });
117
+ const main = await store.createBranch({ projectId: project.id, name: 'main', gitBranch: 'main' });
118
+ const feat = await store.createBranch({ projectId: project.id, name: 'feat', gitBranch: 'feat', parentBranchId: main.id });
119
+ await store.upsertAgent({ id: 'ag', projectId: project.id, role: 'dev', tool: 'cli', workflowType: 'interactive' });
120
+ await store.createCommit({
121
+ branchId: main.id, agentId: 'ag', agentRole: 'dev', tool: 'cli',
122
+ workflowType: 'interactive', message: 'main init', content: 'c', summary: 's', commitType: 'branch-init',
123
+ });
124
+ await store.createCommit({
125
+ branchId: feat.id, agentId: 'ag', agentRole: 'dev', tool: 'cli',
126
+ workflowType: 'interactive', message: 'feat work', content: 'c', summary: 's', commitType: 'manual',
127
+ threads: { open: ['Thread from feat'] },
128
+ });
129
+ const mergeCommit = await store.mergeBranch(feat.id, main.id, 'Merged feat into main');
130
+ expect(mergeCommit.commitType).toBe('merge');
131
+ expect(mergeCommit.branchId).toBe(main.id);
132
+ // Source branch is merged
133
+ const updatedFeat = await store.getBranch(feat.id);
134
+ expect(updatedFeat.status).toBe('merged');
135
+ // Thread carried to main
136
+ const mainThreads = await store.listOpenThreadsByBranch(main.id);
137
+ expect(mainThreads).toHaveLength(1);
138
+ expect(mainThreads[0].description).toBe('Thread from feat');
139
+ });
140
+ });
141
+ //# sourceMappingURL=local-store.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-store.test.js","sourceRoot":"","sources":["../../src/local/local-store.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Database } from 'better-sqlite3';
2
+ export declare function runMigrations(db: Database): void;
3
+ //# sourceMappingURL=migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/local/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AA6E9C,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAqBhD"}
@@ -0,0 +1,78 @@
1
+ import { SCHEMA_V1_DDL, SCHEMA_V2_DDL, SCHEMA_V3_DDL, SCHEMA_V4_DDL, CREATE_COMMIT_EMBEDDINGS } from './schema.js';
2
+ const MIGRATIONS_TABLE = `
3
+ CREATE TABLE IF NOT EXISTS _migrations (
4
+ version INTEGER PRIMARY KEY,
5
+ name TEXT NOT NULL,
6
+ applied_at INTEGER NOT NULL
7
+ )
8
+ `;
9
+ const MIGRATIONS = [
10
+ {
11
+ version: 1,
12
+ name: 'initial_schema',
13
+ run(db) {
14
+ for (const sql of SCHEMA_V1_DDL) {
15
+ db.exec(sql);
16
+ }
17
+ },
18
+ },
19
+ {
20
+ version: 2,
21
+ name: 'fts5_and_vectors',
22
+ run(db) {
23
+ // FTS5 full-text index
24
+ for (const sql of SCHEMA_V2_DDL) {
25
+ db.exec(sql);
26
+ }
27
+ // sqlite-vec virtual table — optional, skipped if extension not loaded
28
+ try {
29
+ db.exec(CREATE_COMMIT_EMBEDDINGS);
30
+ }
31
+ catch {
32
+ // sqlite-vec not loaded; semantic search will return empty results
33
+ }
34
+ },
35
+ },
36
+ {
37
+ version: 3,
38
+ name: 'fts_trigger',
39
+ run(db) {
40
+ // Add INSERT trigger to keep commits_fts in sync with commits table.
41
+ // Then rebuild the index to pick up any rows inserted before this migration.
42
+ for (const sql of SCHEMA_V3_DDL) {
43
+ db.exec(sql);
44
+ }
45
+ try {
46
+ db.exec(`INSERT INTO commits_fts(commits_fts) VALUES('rebuild')`);
47
+ }
48
+ catch {
49
+ // FTS5 table not available — skip rebuild
50
+ }
51
+ },
52
+ },
53
+ {
54
+ version: 4,
55
+ name: 'claims_table',
56
+ run(db) {
57
+ for (const sql of SCHEMA_V4_DDL) {
58
+ db.exec(sql);
59
+ }
60
+ },
61
+ },
62
+ ];
63
+ export function runMigrations(db) {
64
+ // Ensure migrations table exists
65
+ db.exec(MIGRATIONS_TABLE);
66
+ const getApplied = db.prepare('SELECT version, name, applied_at FROM _migrations ORDER BY version');
67
+ const insertMigration = db.prepare('INSERT INTO _migrations (version, name, applied_at) VALUES (?, ?, ?)');
68
+ const applied = new Set(getApplied.all().map((r) => r.version));
69
+ for (const migration of MIGRATIONS) {
70
+ if (applied.has(migration.version))
71
+ continue;
72
+ db.transaction(() => {
73
+ migration.run(db);
74
+ insertMigration.run(migration.version, migration.name, Date.now());
75
+ })();
76
+ }
77
+ }
78
+ //# sourceMappingURL=migrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/local/migrations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAQlH,MAAM,gBAAgB,GAAG;;;;;;CAMxB,CAAA;AAQD,MAAM,UAAU,GAAgB;IAC9B;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,gBAAgB;QACtB,GAAG,CAAC,EAAE;YACJ,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;gBAChC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACd,CAAC;QACH,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,kBAAkB;QACxB,GAAG,CAAC,EAAE;YACJ,uBAAuB;YACvB,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;gBAChC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACd,CAAC;YAED,uEAAuE;YACvE,IAAI,CAAC;gBACH,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;YACnC,CAAC;YAAC,MAAM,CAAC;gBACP,mEAAmE;YACrE,CAAC;QACH,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,aAAa;QACnB,GAAG,CAAC,EAAE;YACJ,qEAAqE;YACrE,6EAA6E;YAC7E,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;gBAChC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACd,CAAC;YACD,IAAI,CAAC;gBACH,EAAE,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAA;YACnE,CAAC;YAAC,MAAM,CAAC;gBACP,0CAA0C;YAC5C,CAAC;QACH,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,cAAc;QACpB,GAAG,CAAC,EAAE;YACJ,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;gBAChC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACd,CAAC;QACH,CAAC;KACF;CACF,CAAA;AAED,MAAM,UAAU,aAAa,CAAC,EAAY;IACxC,iCAAiC;IACjC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAEzB,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAC3B,oEAAoE,CACrE,CAAA;IACD,MAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAChC,sEAAsE,CACvE,CAAA;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;IAE/D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;YAAE,SAAQ;QAE5C,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACjB,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QACpE,CAAC,CAAC,EAAE,CAAA;IACN,CAAC;AACH,CAAC"}
@@ -0,0 +1,44 @@
1
+ import type { Database } from 'better-sqlite3';
2
+ import type { Agent, AgentInput, Branch, BranchInput, Claim, ClaimInput, Commit, CommitInput, Pagination, Project, ProjectInput, SearchResult, SessionSnapshot, Thread } from '@contextgit/core';
3
+ export declare class Queries {
4
+ private readonly db;
5
+ private readonly stmts;
6
+ constructor(db: Database);
7
+ insertProject(input: ProjectInput & {
8
+ id: string;
9
+ }): Project;
10
+ getProject(id: string): Project | null;
11
+ insertBranch(input: BranchInput & {
12
+ id: string;
13
+ }): Branch;
14
+ getBranch(id: string): Branch | null;
15
+ getBranchByGitName(projectId: string, gitBranch: string): Branch | null;
16
+ listBranches(projectId: string): Branch[];
17
+ updateBranchHead(branchId: string, commitId: string): void;
18
+ markBranchMerged(branchId: string): void;
19
+ insertCommit(id: string, input: CommitInput, parentId: string | null, mergeSourceBranchId?: string | null): Commit;
20
+ getCommit(id: string): Commit | null;
21
+ listCommits(branchId: string, pagination: Pagination): Commit[];
22
+ getLastCommit(branchId: string): Commit | null;
23
+ insertThread(id: string, description: string, projectId: string, branchId: string, openedInCommit: string, workflowType: string | null): Thread;
24
+ syncThread(thread: Thread): Thread;
25
+ closeThread(threadId: string, closedInCommit: string, note: string): void;
26
+ listOpenThreads(projectId: string): Thread[];
27
+ listOpenThreadsByBranch(branchId: string): Thread[];
28
+ /** Move open threads from source branch to target (called during merge). */
29
+ reassignOpenThreads(fromBranchId: string, toBranchId: string): void;
30
+ upsertAgent(input: AgentInput): Agent;
31
+ incrementAgentCommits(agentId: string): void;
32
+ listAgents(projectId: string): Agent[];
33
+ insertClaim(id: string, projectId: string, branchId: string, input: ClaimInput): Claim;
34
+ listActiveClaims(projectId: string): Claim[];
35
+ updateClaimStatus(id: string, status: string, releasedAt?: number | null): void;
36
+ releaseClaimsByAgent(agentId: string, branchId: string): void;
37
+ getSessionSnapshot(projectId: string, branchId: string, options?: {
38
+ agentRole?: string;
39
+ }): SessionSnapshot;
40
+ semanticSearch(db: Database, embeddingVector: Float32Array, projectId: string, limit: number): SearchResult[];
41
+ fullTextSearch(db: Database, query: string, projectId: string): SearchResult[];
42
+ insertEmbedding(db: Database, commitId: string, embedding: Float32Array): void;
43
+ }
44
+ //# sourceMappingURL=queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/local/queries.ts"],"names":[],"mappings":"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"}