ghagga-core 2.6.0 → 2.8.0
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/dist/agents/consensus.d.ts +2 -0
- package/dist/agents/consensus.d.ts.map +1 -1
- package/dist/agents/consensus.js +1 -0
- package/dist/agents/consensus.js.map +1 -1
- package/dist/agents/diagnostic.d.ts +2 -0
- package/dist/agents/diagnostic.d.ts.map +1 -1
- package/dist/agents/diagnostic.js +1 -0
- package/dist/agents/diagnostic.js.map +1 -1
- package/dist/agents/fan-out-lenses.d.ts +92 -0
- package/dist/agents/fan-out-lenses.d.ts.map +1 -0
- package/dist/agents/fan-out-lenses.js +424 -0
- package/dist/agents/fan-out-lenses.js.map +1 -0
- package/dist/agents/simple.d.ts +2 -0
- package/dist/agents/simple.d.ts.map +1 -1
- package/dist/agents/simple.js +1 -0
- package/dist/agents/simple.js.map +1 -1
- package/dist/agents/workflow.d.ts +2 -0
- package/dist/agents/workflow.d.ts.map +1 -1
- package/dist/agents/workflow.js +2 -1
- package/dist/agents/workflow.js.map +1 -1
- package/dist/checklist/config.d.ts +22 -0
- package/dist/checklist/config.d.ts.map +1 -0
- package/dist/checklist/config.js +85 -0
- package/dist/checklist/config.js.map +1 -0
- package/dist/checklist/context.d.ts +22 -0
- package/dist/checklist/context.d.ts.map +1 -0
- package/dist/checklist/context.js +76 -0
- package/dist/checklist/context.js.map +1 -0
- package/dist/checklist/defaults.d.ts +12 -0
- package/dist/checklist/defaults.d.ts.map +1 -0
- package/dist/checklist/defaults.js +172 -0
- package/dist/checklist/defaults.js.map +1 -0
- package/dist/checklist/index.d.ts +14 -0
- package/dist/checklist/index.d.ts.map +1 -0
- package/dist/checklist/index.js +15 -0
- package/dist/checklist/index.js.map +1 -0
- package/dist/checklist/scorer.d.ts +58 -0
- package/dist/checklist/scorer.d.ts.map +1 -0
- package/dist/checklist/scorer.js +142 -0
- package/dist/checklist/scorer.js.map +1 -0
- package/dist/checklist/types.d.ts +39 -0
- package/dist/checklist/types.d.ts.map +1 -0
- package/dist/checklist/types.js +17 -0
- package/dist/checklist/types.js.map +1 -0
- package/dist/exploitability/analyzer.d.ts +75 -0
- package/dist/exploitability/analyzer.d.ts.map +1 -0
- package/dist/exploitability/analyzer.js +299 -0
- package/dist/exploitability/analyzer.js.map +1 -0
- package/dist/exploitability/index.d.ts +10 -0
- package/dist/exploitability/index.d.ts.map +1 -0
- package/dist/exploitability/index.js +10 -0
- package/dist/exploitability/index.js.map +1 -0
- package/dist/exploitability/types.d.ts +32 -0
- package/dist/exploitability/types.d.ts.map +1 -0
- package/dist/exploitability/types.js +9 -0
- package/dist/exploitability/types.js.map +1 -0
- package/dist/index.d.ts +15 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/memory/context.d.ts +2 -0
- package/dist/memory/context.d.ts.map +1 -1
- package/dist/memory/context.js +2 -1
- package/dist/memory/context.js.map +1 -1
- package/dist/memory/contradiction.d.ts +46 -0
- package/dist/memory/contradiction.d.ts.map +1 -0
- package/dist/memory/contradiction.js +110 -0
- package/dist/memory/contradiction.js.map +1 -0
- package/dist/memory/decay.d.ts +25 -0
- package/dist/memory/decay.d.ts.map +1 -0
- package/dist/memory/decay.js +51 -0
- package/dist/memory/decay.js.map +1 -0
- package/dist/memory/search.d.ts.map +1 -1
- package/dist/memory/search.js +1 -0
- package/dist/memory/search.js.map +1 -1
- package/dist/memory/sqlite.d.ts +21 -0
- package/dist/memory/sqlite.d.ts.map +1 -1
- package/dist/memory/sqlite.js +82 -7
- package/dist/memory/sqlite.js.map +1 -1
- package/dist/memory/versioning.d.ts +94 -0
- package/dist/memory/versioning.d.ts.map +1 -0
- package/dist/memory/versioning.js +350 -0
- package/dist/memory/versioning.js.map +1 -0
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +117 -0
- package/dist/pipeline.js.map +1 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +7 -2
- package/dist/providers/index.js.map +1 -1
- package/dist/recursive/index.d.ts +45 -0
- package/dist/recursive/index.d.ts.map +1 -0
- package/dist/recursive/index.js +159 -0
- package/dist/recursive/index.js.map +1 -0
- package/dist/recursive/patch-extractor.d.ts +49 -0
- package/dist/recursive/patch-extractor.d.ts.map +1 -0
- package/dist/recursive/patch-extractor.js +133 -0
- package/dist/recursive/patch-extractor.js.map +1 -0
- package/dist/recursive/re-reviewer.d.ts +31 -0
- package/dist/recursive/re-reviewer.d.ts.map +1 -0
- package/dist/recursive/re-reviewer.js +66 -0
- package/dist/recursive/re-reviewer.js.map +1 -0
- package/dist/recursive/types.d.ts +62 -0
- package/dist/recursive/types.d.ts.map +1 -0
- package/dist/recursive/types.js +11 -0
- package/dist/recursive/types.js.map +1 -0
- package/dist/scope/context-builder.d.ts +37 -0
- package/dist/scope/context-builder.d.ts.map +1 -0
- package/dist/scope/context-builder.js +108 -0
- package/dist/scope/context-builder.js.map +1 -0
- package/dist/scope/diff-mapper.d.ts +29 -0
- package/dist/scope/diff-mapper.d.ts.map +1 -0
- package/dist/scope/diff-mapper.js +76 -0
- package/dist/scope/diff-mapper.js.map +1 -0
- package/dist/scope/extractor.d.ts +25 -0
- package/dist/scope/extractor.d.ts.map +1 -0
- package/dist/scope/extractor.js +264 -0
- package/dist/scope/extractor.js.map +1 -0
- package/dist/scope/index.d.ts +13 -0
- package/dist/scope/index.d.ts.map +1 -0
- package/dist/scope/index.js +16 -0
- package/dist/scope/index.js.map +1 -0
- package/dist/scope/parser.d.ts +47 -0
- package/dist/scope/parser.d.ts.map +1 -0
- package/dist/scope/parser.js +97 -0
- package/dist/scope/parser.js.map +1 -0
- package/dist/scope/queries.d.ts +23 -0
- package/dist/scope/queries.d.ts.map +1 -0
- package/dist/scope/queries.js +134 -0
- package/dist/scope/queries.js.map +1 -0
- package/dist/scope/types.d.ts +55 -0
- package/dist/scope/types.d.ts.map +1 -0
- package/dist/scope/types.js +8 -0
- package/dist/scope/types.js.map +1 -0
- package/dist/tools/execution.d.ts.map +1 -1
- package/dist/tools/execution.js +2 -0
- package/dist/tools/execution.js.map +1 -1
- package/dist/tools/plugins/index.d.ts +1 -0
- package/dist/tools/plugins/index.d.ts.map +1 -1
- package/dist/tools/plugins/index.js +6 -5
- package/dist/tools/plugins/index.js.map +1 -1
- package/dist/tools/plugins/sonarqube.d.ts +54 -0
- package/dist/tools/plugins/sonarqube.d.ts.map +1 -0
- package/dist/tools/plugins/sonarqube.js +145 -0
- package/dist/tools/plugins/sonarqube.js.map +1 -0
- package/dist/tools/plugins/trivy.js +1 -1
- package/dist/tools/plugins/trivy.js.map +1 -1
- package/dist/tools/types.d.ts +7 -1
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/types.d.ts +80 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -1
- package/package.json +3 -1
package/dist/memory/sqlite.js
CHANGED
|
@@ -8,7 +8,13 @@
|
|
|
8
8
|
import { createHash } from 'node:crypto';
|
|
9
9
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
10
10
|
import { dirname } from 'node:path';
|
|
11
|
-
import
|
|
11
|
+
import initSqlJsModule from 'fts5-sql-bundle';
|
|
12
|
+
// CJS/ESM interop: default import of CJS module may be the module object, not the function
|
|
13
|
+
const initSqlJs = typeof initSqlJsModule === 'function'
|
|
14
|
+
? initSqlJsModule
|
|
15
|
+
: initSqlJsModule.initSqlJs;
|
|
16
|
+
import { DEFAULT_DECAY_CONFIG } from '../types.js';
|
|
17
|
+
import { computeStrength } from './decay.js';
|
|
12
18
|
const SCHEMA_SQL = `
|
|
13
19
|
CREATE TABLE IF NOT EXISTS memory_sessions (
|
|
14
20
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
@@ -32,12 +38,14 @@ const SCHEMA_SQL = `
|
|
|
32
38
|
content_hash TEXT,
|
|
33
39
|
revision_count INTEGER NOT NULL DEFAULT 1,
|
|
34
40
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
35
|
-
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
41
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
42
|
+
last_accessed_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
36
43
|
);
|
|
37
44
|
|
|
38
45
|
CREATE INDEX IF NOT EXISTS idx_obs_project ON memory_observations(project);
|
|
39
46
|
CREATE INDEX IF NOT EXISTS idx_obs_topic_key ON memory_observations(topic_key);
|
|
40
47
|
CREATE INDEX IF NOT EXISTS idx_obs_content_hash ON memory_observations(content_hash);
|
|
48
|
+
CREATE INDEX IF NOT EXISTS idx_obs_last_accessed ON memory_observations(last_accessed_at);
|
|
41
49
|
|
|
42
50
|
CREATE VIRTUAL TABLE IF NOT EXISTS memory_observations_fts
|
|
43
51
|
USING fts5(title, content, content='memory_observations', content_rowid='id');
|
|
@@ -58,16 +66,51 @@ const SCHEMA_SQL = `
|
|
|
58
66
|
INSERT INTO memory_observations_fts(memory_observations_fts, rowid, title, content)
|
|
59
67
|
VALUES ('delete', old.id, old.title, old.content);
|
|
60
68
|
END;
|
|
69
|
+
|
|
70
|
+
-- ── Versioning tables ────────────────────────────────────────────
|
|
71
|
+
|
|
72
|
+
CREATE TABLE IF NOT EXISTS memory_branches (
|
|
73
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
74
|
+
name TEXT NOT NULL UNIQUE,
|
|
75
|
+
parent_id INTEGER REFERENCES memory_branches(id) ON DELETE SET NULL,
|
|
76
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
CREATE TABLE IF NOT EXISTS memory_snapshots (
|
|
80
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
81
|
+
name TEXT NOT NULL UNIQUE,
|
|
82
|
+
branch_id INTEGER NOT NULL REFERENCES memory_branches(id) ON DELETE CASCADE,
|
|
83
|
+
observation_ids TEXT NOT NULL DEFAULT '[]',
|
|
84
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
CREATE TABLE IF NOT EXISTS memory_branch_observations (
|
|
88
|
+
branch_id INTEGER NOT NULL REFERENCES memory_branches(id) ON DELETE CASCADE,
|
|
89
|
+
observation_id INTEGER NOT NULL REFERENCES memory_observations(id) ON DELETE CASCADE,
|
|
90
|
+
PRIMARY KEY (branch_id, observation_id)
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
-- Seed the default "main" branch (idempotent via INSERT OR IGNORE)
|
|
94
|
+
INSERT OR IGNORE INTO memory_branches (id, name, parent_id) VALUES (1, 'main', NULL);
|
|
61
95
|
`;
|
|
62
96
|
const DEFAULT_DEDUP_WINDOW_MINUTES = 15;
|
|
63
97
|
export class SqliteMemoryStorage {
|
|
64
98
|
db;
|
|
65
99
|
filePath;
|
|
66
100
|
dedupWindowMinutes;
|
|
101
|
+
decayConfig;
|
|
67
102
|
constructor(db, filePath, options = {}) {
|
|
68
103
|
this.db = db;
|
|
69
104
|
this.filePath = filePath;
|
|
70
105
|
this.dedupWindowMinutes = options.dedupWindowMinutes ?? DEFAULT_DEDUP_WINDOW_MINUTES;
|
|
106
|
+
this.decayConfig = options.decayConfig ?? DEFAULT_DECAY_CONFIG;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Expose the underlying database for the versioning layer.
|
|
110
|
+
* Only used by MemoryVersioning — not part of the MemoryStorage interface.
|
|
111
|
+
*/
|
|
112
|
+
getDatabase() {
|
|
113
|
+
return this.db;
|
|
71
114
|
}
|
|
72
115
|
/**
|
|
73
116
|
* Async factory — handles WASM initialization and file loading.
|
|
@@ -91,6 +134,15 @@ export class SqliteMemoryStorage {
|
|
|
91
134
|
catch {
|
|
92
135
|
// Column already exists — idempotent migration
|
|
93
136
|
}
|
|
137
|
+
// Migration: add last_accessed_at column for decay tracking
|
|
138
|
+
try {
|
|
139
|
+
db.run("ALTER TABLE memory_observations ADD COLUMN last_accessed_at TEXT NOT NULL DEFAULT (datetime('now'))");
|
|
140
|
+
// Backfill: set last_accessed_at = updated_at for existing rows
|
|
141
|
+
db.run('UPDATE memory_observations SET last_accessed_at = updated_at WHERE last_accessed_at IS NULL OR last_accessed_at = ""');
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// Column already exists — idempotent migration
|
|
145
|
+
}
|
|
94
146
|
return new SqliteMemoryStorage(db, filePath, options);
|
|
95
147
|
}
|
|
96
148
|
async searchObservations(project, query, options = {}) {
|
|
@@ -104,8 +156,10 @@ export class SqliteMemoryStorage {
|
|
|
104
156
|
.join(' OR ');
|
|
105
157
|
if (!ftsQuery)
|
|
106
158
|
return [];
|
|
159
|
+
// Fetch more than limit to account for decay filtering
|
|
160
|
+
const fetchLimit = limit * 3;
|
|
107
161
|
let sql = `
|
|
108
|
-
SELECT o.id, o.type, o.title, o.content, o.file_paths, o.severity
|
|
162
|
+
SELECT o.id, o.type, o.title, o.content, o.file_paths, o.severity, o.last_accessed_at
|
|
109
163
|
FROM memory_observations o
|
|
110
164
|
JOIN memory_observations_fts fts ON fts.rowid = o.id
|
|
111
165
|
WHERE memory_observations_fts MATCH ?
|
|
@@ -117,22 +171,39 @@ export class SqliteMemoryStorage {
|
|
|
117
171
|
params.push(type);
|
|
118
172
|
}
|
|
119
173
|
sql += ' ORDER BY bm25(memory_observations_fts) LIMIT ?';
|
|
120
|
-
params.push(
|
|
174
|
+
params.push(fetchLimit);
|
|
121
175
|
const stmt = this.db.prepare(sql);
|
|
122
176
|
stmt.bind(params);
|
|
177
|
+
const now = new Date();
|
|
123
178
|
const rows = [];
|
|
179
|
+
const accessedIds = [];
|
|
124
180
|
while (stmt.step()) {
|
|
125
181
|
const row = stmt.getAsObject();
|
|
182
|
+
const lastAccessed = row.last_accessed_at ? new Date(row.last_accessed_at) : now;
|
|
183
|
+
const strength = computeStrength(lastAccessed, now, this.decayConfig);
|
|
184
|
+
// Filter by minimum strength
|
|
185
|
+
if (strength < this.decayConfig.minStrength)
|
|
186
|
+
continue;
|
|
187
|
+
const id = row.id;
|
|
188
|
+
accessedIds.push(id);
|
|
126
189
|
rows.push({
|
|
127
|
-
id
|
|
190
|
+
id,
|
|
128
191
|
type: row.type,
|
|
129
192
|
title: row.title,
|
|
130
193
|
content: row.content,
|
|
131
194
|
filePaths: row.file_paths ? JSON.parse(row.file_paths) : null,
|
|
132
195
|
severity: row.severity ?? null,
|
|
196
|
+
strength,
|
|
133
197
|
});
|
|
198
|
+
if (rows.length >= limit)
|
|
199
|
+
break;
|
|
134
200
|
}
|
|
135
201
|
stmt.free();
|
|
202
|
+
// Update last_accessed_at for returned observations
|
|
203
|
+
if (accessedIds.length > 0) {
|
|
204
|
+
const placeholders = accessedIds.map(() => '?').join(',');
|
|
205
|
+
this.db.run(`UPDATE memory_observations SET last_accessed_at = datetime('now') WHERE id IN (${placeholders})`, accessedIds);
|
|
206
|
+
}
|
|
136
207
|
return rows;
|
|
137
208
|
}
|
|
138
209
|
async saveObservation(data) {
|
|
@@ -183,7 +254,8 @@ export class SqliteMemoryStorage {
|
|
|
183
254
|
SET content = ?, title = ?, content_hash = ?, file_paths = ?,
|
|
184
255
|
severity = ?,
|
|
185
256
|
revision_count = revision_count + 1,
|
|
186
|
-
updated_at = datetime('now')
|
|
257
|
+
updated_at = datetime('now'),
|
|
258
|
+
last_accessed_at = datetime('now')
|
|
187
259
|
WHERE id = ?
|
|
188
260
|
RETURNING id, type, title, content, file_paths, severity
|
|
189
261
|
`, [data.content, data.title, contentHash, filePathsJson, data.severity ?? null, existingId]);
|
|
@@ -221,8 +293,11 @@ export class SqliteMemoryStorage {
|
|
|
221
293
|
const row = inserted[0]?.values[0];
|
|
222
294
|
if (!row)
|
|
223
295
|
throw new Error('Unexpected empty row after insert');
|
|
296
|
+
const newId = row[0];
|
|
297
|
+
// Link new observation to the default "main" branch
|
|
298
|
+
this.db.run('INSERT OR IGNORE INTO memory_branch_observations (branch_id, observation_id) VALUES (1, ?)', [newId]);
|
|
224
299
|
return {
|
|
225
|
-
id:
|
|
300
|
+
id: newId,
|
|
226
301
|
type: row[1],
|
|
227
302
|
title: row[2],
|
|
228
303
|
content: row[3],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/memory/sqlite.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/memory/sqlite.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git-style versioning for review memory.
|
|
3
|
+
*
|
|
4
|
+
* Provides branch, snapshot, merge, and rollback operations on top of
|
|
5
|
+
* the existing SQLite memory storage. Uses composition — wraps a
|
|
6
|
+
* SqliteMemoryStorage instance and operates on the versioning tables
|
|
7
|
+
* (memory_branches, memory_snapshots, memory_branch_observations).
|
|
8
|
+
*
|
|
9
|
+
* The default branch is "main" (id=1). All observations created via
|
|
10
|
+
* the standard MemoryStorage interface are automatically linked to main.
|
|
11
|
+
*/
|
|
12
|
+
import type { MemoryBranch, MemorySnapshot, MergeResult, VersioningConfig } from '../types.js';
|
|
13
|
+
import type { SqliteMemoryStorage } from './sqlite.js';
|
|
14
|
+
export declare class SnapshotExistsError extends Error {
|
|
15
|
+
constructor(name: string);
|
|
16
|
+
}
|
|
17
|
+
export declare class SnapshotNotFoundError extends Error {
|
|
18
|
+
constructor(name: string);
|
|
19
|
+
}
|
|
20
|
+
export declare class BranchExistsError extends Error {
|
|
21
|
+
constructor(name: string);
|
|
22
|
+
}
|
|
23
|
+
export declare class BranchNotFoundError extends Error {
|
|
24
|
+
constructor(name: string);
|
|
25
|
+
}
|
|
26
|
+
export declare class ProtectedBranchError extends Error {
|
|
27
|
+
constructor(name: string);
|
|
28
|
+
}
|
|
29
|
+
export declare class MemoryVersioning {
|
|
30
|
+
private db;
|
|
31
|
+
private config;
|
|
32
|
+
constructor(storage: SqliteMemoryStorage, config?: VersioningConfig);
|
|
33
|
+
/**
|
|
34
|
+
* List all branches.
|
|
35
|
+
*/
|
|
36
|
+
listBranches(): MemoryBranch[];
|
|
37
|
+
/**
|
|
38
|
+
* Get a branch by name. Returns null if not found.
|
|
39
|
+
*/
|
|
40
|
+
getBranch(name: string): MemoryBranch | null;
|
|
41
|
+
/**
|
|
42
|
+
* Create a new branch from an existing parent branch.
|
|
43
|
+
* Copies all observation links from the parent to the new branch.
|
|
44
|
+
*
|
|
45
|
+
* @param name - Unique branch name
|
|
46
|
+
* @param parentName - Parent branch to fork from (default: "main")
|
|
47
|
+
* @throws BranchExistsError if name is taken
|
|
48
|
+
* @throws BranchNotFoundError if parent doesn't exist
|
|
49
|
+
*/
|
|
50
|
+
createBranch(name: string, parentName?: string): MemoryBranch;
|
|
51
|
+
/**
|
|
52
|
+
* Delete a branch and its exclusive observations.
|
|
53
|
+
* Observations shared with other branches are preserved.
|
|
54
|
+
*
|
|
55
|
+
* @throws ProtectedBranchError if trying to delete "main"
|
|
56
|
+
* @throws BranchNotFoundError if branch doesn't exist
|
|
57
|
+
*/
|
|
58
|
+
deleteBranch(name: string): void;
|
|
59
|
+
/**
|
|
60
|
+
* Get observation IDs linked to a branch.
|
|
61
|
+
*/
|
|
62
|
+
getBranchObservationIds(branchName: string): number[];
|
|
63
|
+
/**
|
|
64
|
+
* Get full observation rows for a branch.
|
|
65
|
+
*/
|
|
66
|
+
private getBranchObservations;
|
|
67
|
+
/**
|
|
68
|
+
* Create a named snapshot of a branch's current state.
|
|
69
|
+
*
|
|
70
|
+
* @throws SnapshotExistsError if name is taken
|
|
71
|
+
* @throws BranchNotFoundError if branch doesn't exist
|
|
72
|
+
*/
|
|
73
|
+
createSnapshot(name: string, branchName?: string): MemorySnapshot;
|
|
74
|
+
/**
|
|
75
|
+
* List all snapshots, optionally filtered by branch.
|
|
76
|
+
*/
|
|
77
|
+
listSnapshots(branchName?: string): MemorySnapshot[];
|
|
78
|
+
/**
|
|
79
|
+
* Merge observations from source branch into target branch.
|
|
80
|
+
* Detects contradictions but does NOT auto-resolve them — both
|
|
81
|
+
* observations end up on the target branch.
|
|
82
|
+
*
|
|
83
|
+
* @throws BranchNotFoundError if either branch doesn't exist
|
|
84
|
+
*/
|
|
85
|
+
mergeBranch(sourceName: string, targetName: string): MergeResult;
|
|
86
|
+
/**
|
|
87
|
+
* Rollback a branch to a named snapshot.
|
|
88
|
+
* Removes observations added after the snapshot was taken.
|
|
89
|
+
*
|
|
90
|
+
* @throws SnapshotNotFoundError if snapshot doesn't exist
|
|
91
|
+
*/
|
|
92
|
+
rollback(snapshotName: string): void;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=versioning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versioning.d.ts","sourceRoot":"","sources":["../../src/memory/versioning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,YAAY,EAEZ,cAAc,EACd,WAAW,EACX,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIvD,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,IAAI,EAAE,MAAM;CAIzB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,IAAI,EAAE,MAAM;CAIzB;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,IAAI,EAAE,MAAM;CAIzB;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,IAAI,EAAE,MAAM;CAIzB;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,IAAI,EAAE,MAAM;CAIzB;AAyBD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,EAAE,CAAqB;IAC/B,OAAO,CAAC,MAAM,CAAmB;gBAErB,OAAO,EAAE,mBAAmB,EAAE,MAAM,GAAE,gBAA4C;IAO9F;;OAEG;IACH,YAAY,IAAI,YAAY,EAAE;IAoB9B;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAqB5C;;;;;;;;OAQG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,SAAS,GAAG,YAAY;IAoC7D;;;;;;OAMG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAgChC;;OAEG;IACH,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IAkBrD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA+B7B;;;;;OAKG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,SAAS,GAAG,cAAc;IAoCjE;;OAEG;IACH,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE;IAiCpD;;;;;;OAMG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW;IA+ChE;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;CAqDrC"}
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git-style versioning for review memory.
|
|
3
|
+
*
|
|
4
|
+
* Provides branch, snapshot, merge, and rollback operations on top of
|
|
5
|
+
* the existing SQLite memory storage. Uses composition — wraps a
|
|
6
|
+
* SqliteMemoryStorage instance and operates on the versioning tables
|
|
7
|
+
* (memory_branches, memory_snapshots, memory_branch_observations).
|
|
8
|
+
*
|
|
9
|
+
* The default branch is "main" (id=1). All observations created via
|
|
10
|
+
* the standard MemoryStorage interface are automatically linked to main.
|
|
11
|
+
*/
|
|
12
|
+
import { DEFAULT_VERSIONING_CONFIG } from '../types.js';
|
|
13
|
+
import { detectContradictions } from './contradiction.js';
|
|
14
|
+
// ─── Error Types ───────────────────────────────────────────────
|
|
15
|
+
export class SnapshotExistsError extends Error {
|
|
16
|
+
constructor(name) {
|
|
17
|
+
super(`Snapshot "${name}" already exists`);
|
|
18
|
+
this.name = 'SnapshotExistsError';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export class SnapshotNotFoundError extends Error {
|
|
22
|
+
constructor(name) {
|
|
23
|
+
super(`Snapshot "${name}" not found`);
|
|
24
|
+
this.name = 'SnapshotNotFoundError';
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export class BranchExistsError extends Error {
|
|
28
|
+
constructor(name) {
|
|
29
|
+
super(`Branch "${name}" already exists`);
|
|
30
|
+
this.name = 'BranchExistsError';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export class BranchNotFoundError extends Error {
|
|
34
|
+
constructor(name) {
|
|
35
|
+
super(`Branch "${name}" not found`);
|
|
36
|
+
this.name = 'BranchNotFoundError';
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export class ProtectedBranchError extends Error {
|
|
40
|
+
constructor(name) {
|
|
41
|
+
super(`Branch "${name}" is protected and cannot be deleted`);
|
|
42
|
+
this.name = 'ProtectedBranchError';
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// ─── Main Class ────────────────────────────────────────────────
|
|
46
|
+
export class MemoryVersioning {
|
|
47
|
+
db;
|
|
48
|
+
config;
|
|
49
|
+
constructor(storage, config = DEFAULT_VERSIONING_CONFIG) {
|
|
50
|
+
this.db = storage.getDatabase();
|
|
51
|
+
this.config = config;
|
|
52
|
+
}
|
|
53
|
+
// ── Branch Operations ──────────────────────────────────────────
|
|
54
|
+
/**
|
|
55
|
+
* List all branches.
|
|
56
|
+
*/
|
|
57
|
+
listBranches() {
|
|
58
|
+
const stmt = this.db.prepare('SELECT id, name, parent_id, created_at FROM memory_branches ORDER BY id');
|
|
59
|
+
stmt.bind([]);
|
|
60
|
+
const branches = [];
|
|
61
|
+
while (stmt.step()) {
|
|
62
|
+
const row = stmt.getAsObject();
|
|
63
|
+
branches.push({
|
|
64
|
+
id: row.id,
|
|
65
|
+
name: row.name,
|
|
66
|
+
parentId: row.parent_id ?? null,
|
|
67
|
+
createdAt: row.created_at,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
stmt.free();
|
|
71
|
+
return branches;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get a branch by name. Returns null if not found.
|
|
75
|
+
*/
|
|
76
|
+
getBranch(name) {
|
|
77
|
+
const stmt = this.db.prepare('SELECT id, name, parent_id, created_at FROM memory_branches WHERE name = ?');
|
|
78
|
+
stmt.bind([name]);
|
|
79
|
+
if (!stmt.step()) {
|
|
80
|
+
stmt.free();
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
const row = stmt.getAsObject();
|
|
84
|
+
stmt.free();
|
|
85
|
+
return {
|
|
86
|
+
id: row.id,
|
|
87
|
+
name: row.name,
|
|
88
|
+
parentId: row.parent_id ?? null,
|
|
89
|
+
createdAt: row.created_at,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Create a new branch from an existing parent branch.
|
|
94
|
+
* Copies all observation links from the parent to the new branch.
|
|
95
|
+
*
|
|
96
|
+
* @param name - Unique branch name
|
|
97
|
+
* @param parentName - Parent branch to fork from (default: "main")
|
|
98
|
+
* @throws BranchExistsError if name is taken
|
|
99
|
+
* @throws BranchNotFoundError if parent doesn't exist
|
|
100
|
+
*/
|
|
101
|
+
createBranch(name, parentName = 'main') {
|
|
102
|
+
// Check if name is taken
|
|
103
|
+
const existing = this.getBranch(name);
|
|
104
|
+
if (existing)
|
|
105
|
+
throw new BranchExistsError(name);
|
|
106
|
+
// Find parent
|
|
107
|
+
const parent = this.getBranch(parentName);
|
|
108
|
+
if (!parent)
|
|
109
|
+
throw new BranchNotFoundError(parentName);
|
|
110
|
+
// Create branch
|
|
111
|
+
const result = this.db.exec(`INSERT INTO memory_branches (name, parent_id) VALUES (?, ?)
|
|
112
|
+
RETURNING id, name, parent_id, created_at`, [name, parent.id]);
|
|
113
|
+
const row = result[0]?.values[0];
|
|
114
|
+
if (!row)
|
|
115
|
+
throw new Error('Failed to create branch');
|
|
116
|
+
const branchId = row[0];
|
|
117
|
+
// Copy observation links from parent
|
|
118
|
+
this.db.run(`INSERT OR IGNORE INTO memory_branch_observations (branch_id, observation_id)
|
|
119
|
+
SELECT ?, observation_id FROM memory_branch_observations WHERE branch_id = ?`, [branchId, parent.id]);
|
|
120
|
+
return {
|
|
121
|
+
id: branchId,
|
|
122
|
+
name: row[1],
|
|
123
|
+
parentId: row[2] ?? null,
|
|
124
|
+
createdAt: row[3],
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Delete a branch and its exclusive observations.
|
|
129
|
+
* Observations shared with other branches are preserved.
|
|
130
|
+
*
|
|
131
|
+
* @throws ProtectedBranchError if trying to delete "main"
|
|
132
|
+
* @throws BranchNotFoundError if branch doesn't exist
|
|
133
|
+
*/
|
|
134
|
+
deleteBranch(name) {
|
|
135
|
+
if (name === 'main')
|
|
136
|
+
throw new ProtectedBranchError(name);
|
|
137
|
+
const branch = this.getBranch(name);
|
|
138
|
+
if (!branch)
|
|
139
|
+
throw new BranchNotFoundError(name);
|
|
140
|
+
// Find observations exclusive to this branch (not linked to any other branch)
|
|
141
|
+
const exclusiveResult = this.db.exec(`SELECT bo.observation_id FROM memory_branch_observations bo
|
|
142
|
+
WHERE bo.branch_id = ?
|
|
143
|
+
AND NOT EXISTS (
|
|
144
|
+
SELECT 1 FROM memory_branch_observations bo2
|
|
145
|
+
WHERE bo2.observation_id = bo.observation_id
|
|
146
|
+
AND bo2.branch_id != ?
|
|
147
|
+
)`, [branch.id, branch.id]);
|
|
148
|
+
// Delete exclusive observations
|
|
149
|
+
if (exclusiveResult.length > 0 && exclusiveResult[0]?.values.length > 0) {
|
|
150
|
+
const ids = exclusiveResult[0].values.map((r) => r[0]);
|
|
151
|
+
const placeholders = ids.map(() => '?').join(',');
|
|
152
|
+
this.db.run(`DELETE FROM memory_observations WHERE id IN (${placeholders})`, ids);
|
|
153
|
+
}
|
|
154
|
+
// Delete branch (CASCADE removes branch_observations links and snapshots)
|
|
155
|
+
this.db.run('DELETE FROM memory_branches WHERE id = ?', [branch.id]);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Get observation IDs linked to a branch.
|
|
159
|
+
*/
|
|
160
|
+
getBranchObservationIds(branchName) {
|
|
161
|
+
const branch = this.getBranch(branchName);
|
|
162
|
+
if (!branch)
|
|
163
|
+
throw new BranchNotFoundError(branchName);
|
|
164
|
+
const stmt = this.db.prepare('SELECT observation_id FROM memory_branch_observations WHERE branch_id = ? ORDER BY observation_id');
|
|
165
|
+
stmt.bind([branch.id]);
|
|
166
|
+
const ids = [];
|
|
167
|
+
while (stmt.step()) {
|
|
168
|
+
const row = stmt.getAsObject();
|
|
169
|
+
ids.push(row.observation_id);
|
|
170
|
+
}
|
|
171
|
+
stmt.free();
|
|
172
|
+
return ids;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Get full observation rows for a branch.
|
|
176
|
+
*/
|
|
177
|
+
getBranchObservations(branchName) {
|
|
178
|
+
const branch = this.getBranch(branchName);
|
|
179
|
+
if (!branch)
|
|
180
|
+
throw new BranchNotFoundError(branchName);
|
|
181
|
+
const stmt = this.db.prepare(`SELECT o.id, o.type, o.title, o.content, o.file_paths, o.severity
|
|
182
|
+
FROM memory_observations o
|
|
183
|
+
JOIN memory_branch_observations bo ON bo.observation_id = o.id
|
|
184
|
+
WHERE bo.branch_id = ?
|
|
185
|
+
ORDER BY o.id`);
|
|
186
|
+
stmt.bind([branch.id]);
|
|
187
|
+
const rows = [];
|
|
188
|
+
while (stmt.step()) {
|
|
189
|
+
const row = stmt.getAsObject();
|
|
190
|
+
rows.push({
|
|
191
|
+
id: row.id,
|
|
192
|
+
type: row.type,
|
|
193
|
+
title: row.title,
|
|
194
|
+
content: row.content,
|
|
195
|
+
filePaths: row.file_paths ? JSON.parse(row.file_paths) : null,
|
|
196
|
+
severity: row.severity ?? null,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
stmt.free();
|
|
200
|
+
return rows;
|
|
201
|
+
}
|
|
202
|
+
// ── Snapshot Operations ────────────────────────────────────────
|
|
203
|
+
/**
|
|
204
|
+
* Create a named snapshot of a branch's current state.
|
|
205
|
+
*
|
|
206
|
+
* @throws SnapshotExistsError if name is taken
|
|
207
|
+
* @throws BranchNotFoundError if branch doesn't exist
|
|
208
|
+
*/
|
|
209
|
+
createSnapshot(name, branchName = 'main') {
|
|
210
|
+
// Check if name is taken
|
|
211
|
+
const existingStmt = this.db.prepare('SELECT id FROM memory_snapshots WHERE name = ?');
|
|
212
|
+
existingStmt.bind([name]);
|
|
213
|
+
const exists = existingStmt.step();
|
|
214
|
+
existingStmt.free();
|
|
215
|
+
if (exists)
|
|
216
|
+
throw new SnapshotExistsError(name);
|
|
217
|
+
const branch = this.getBranch(branchName);
|
|
218
|
+
if (!branch)
|
|
219
|
+
throw new BranchNotFoundError(branchName);
|
|
220
|
+
// Get current observation IDs
|
|
221
|
+
const observationIds = this.getBranchObservationIds(branchName);
|
|
222
|
+
const idsJson = JSON.stringify(observationIds);
|
|
223
|
+
const result = this.db.exec(`INSERT INTO memory_snapshots (name, branch_id, observation_ids)
|
|
224
|
+
VALUES (?, ?, ?)
|
|
225
|
+
RETURNING id, name, branch_id, observation_ids, created_at`, [name, branch.id, idsJson]);
|
|
226
|
+
const row = result[0]?.values[0];
|
|
227
|
+
if (!row)
|
|
228
|
+
throw new Error('Failed to create snapshot');
|
|
229
|
+
return {
|
|
230
|
+
id: row[0],
|
|
231
|
+
name: row[1],
|
|
232
|
+
branchId: row[2],
|
|
233
|
+
observationIds: JSON.parse(row[3]),
|
|
234
|
+
createdAt: row[4],
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* List all snapshots, optionally filtered by branch.
|
|
239
|
+
*/
|
|
240
|
+
listSnapshots(branchName) {
|
|
241
|
+
let sql = 'SELECT id, name, branch_id, observation_ids, created_at FROM memory_snapshots';
|
|
242
|
+
const params = [];
|
|
243
|
+
if (branchName) {
|
|
244
|
+
const branch = this.getBranch(branchName);
|
|
245
|
+
if (!branch)
|
|
246
|
+
throw new BranchNotFoundError(branchName);
|
|
247
|
+
sql += ' WHERE branch_id = ?';
|
|
248
|
+
params.push(branch.id);
|
|
249
|
+
}
|
|
250
|
+
sql += ' ORDER BY created_at DESC';
|
|
251
|
+
const stmt = this.db.prepare(sql);
|
|
252
|
+
stmt.bind(params);
|
|
253
|
+
const snapshots = [];
|
|
254
|
+
while (stmt.step()) {
|
|
255
|
+
const row = stmt.getAsObject();
|
|
256
|
+
snapshots.push({
|
|
257
|
+
id: row.id,
|
|
258
|
+
name: row.name,
|
|
259
|
+
branchId: row.branch_id,
|
|
260
|
+
observationIds: JSON.parse(row.observation_ids),
|
|
261
|
+
createdAt: row.created_at,
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
stmt.free();
|
|
265
|
+
return snapshots;
|
|
266
|
+
}
|
|
267
|
+
// ── Merge ──────────────────────────────────────────────────────
|
|
268
|
+
/**
|
|
269
|
+
* Merge observations from source branch into target branch.
|
|
270
|
+
* Detects contradictions but does NOT auto-resolve them — both
|
|
271
|
+
* observations end up on the target branch.
|
|
272
|
+
*
|
|
273
|
+
* @throws BranchNotFoundError if either branch doesn't exist
|
|
274
|
+
*/
|
|
275
|
+
mergeBranch(sourceName, targetName) {
|
|
276
|
+
const source = this.getBranch(sourceName);
|
|
277
|
+
if (!source)
|
|
278
|
+
throw new BranchNotFoundError(sourceName);
|
|
279
|
+
const target = this.getBranch(targetName);
|
|
280
|
+
if (!target)
|
|
281
|
+
throw new BranchNotFoundError(targetName);
|
|
282
|
+
// Find observation IDs exclusive to source (not already on target)
|
|
283
|
+
const exclusiveResult = this.db.exec(`SELECT bo.observation_id FROM memory_branch_observations bo
|
|
284
|
+
WHERE bo.branch_id = ?
|
|
285
|
+
AND NOT EXISTS (
|
|
286
|
+
SELECT 1 FROM memory_branch_observations bo2
|
|
287
|
+
WHERE bo2.observation_id = bo.observation_id
|
|
288
|
+
AND bo2.branch_id = ?
|
|
289
|
+
)`, [source.id, target.id]);
|
|
290
|
+
const mergedIds = [];
|
|
291
|
+
if (exclusiveResult.length > 0 && exclusiveResult[0]?.values.length > 0) {
|
|
292
|
+
for (const row of exclusiveResult[0].values) {
|
|
293
|
+
mergedIds.push(row[0]);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
// Detect contradictions before merging
|
|
297
|
+
const sourceObs = this.getBranchObservations(sourceName);
|
|
298
|
+
const targetObs = this.getBranchObservations(targetName);
|
|
299
|
+
// Only check source-exclusive obs against target
|
|
300
|
+
const sourceExclusiveObs = sourceObs.filter((o) => mergedIds.includes(o.id));
|
|
301
|
+
const contradictions = detectContradictions(sourceExclusiveObs, targetObs, this.config);
|
|
302
|
+
// Link source-exclusive observations to target branch
|
|
303
|
+
for (const id of mergedIds) {
|
|
304
|
+
this.db.run('INSERT OR IGNORE INTO memory_branch_observations (branch_id, observation_id) VALUES (?, ?)', [target.id, id]);
|
|
305
|
+
}
|
|
306
|
+
return { merged: mergedIds, contradictions };
|
|
307
|
+
}
|
|
308
|
+
// ── Rollback ───────────────────────────────────────────────────
|
|
309
|
+
/**
|
|
310
|
+
* Rollback a branch to a named snapshot.
|
|
311
|
+
* Removes observations added after the snapshot was taken.
|
|
312
|
+
*
|
|
313
|
+
* @throws SnapshotNotFoundError if snapshot doesn't exist
|
|
314
|
+
*/
|
|
315
|
+
rollback(snapshotName) {
|
|
316
|
+
const stmt = this.db.prepare('SELECT id, name, branch_id, observation_ids, created_at FROM memory_snapshots WHERE name = ?');
|
|
317
|
+
stmt.bind([snapshotName]);
|
|
318
|
+
if (!stmt.step()) {
|
|
319
|
+
stmt.free();
|
|
320
|
+
throw new SnapshotNotFoundError(snapshotName);
|
|
321
|
+
}
|
|
322
|
+
const row = stmt.getAsObject();
|
|
323
|
+
stmt.free();
|
|
324
|
+
const branchId = row.branch_id;
|
|
325
|
+
const snapshotIds = JSON.parse(row.observation_ids);
|
|
326
|
+
// Find observation IDs on this branch that are NOT in the snapshot
|
|
327
|
+
const currentIds = this.db.exec('SELECT observation_id FROM memory_branch_observations WHERE branch_id = ?', [branchId]);
|
|
328
|
+
const currentIdSet = new Set();
|
|
329
|
+
if (currentIds.length > 0 && currentIds[0]?.values.length > 0) {
|
|
330
|
+
for (const r of currentIds[0].values) {
|
|
331
|
+
currentIdSet.add(r[0]);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
const snapshotIdSet = new Set(snapshotIds);
|
|
335
|
+
const idsToRemove = [...currentIdSet].filter((id) => !snapshotIdSet.has(id));
|
|
336
|
+
if (idsToRemove.length === 0)
|
|
337
|
+
return;
|
|
338
|
+
// Remove branch links for post-snapshot observations
|
|
339
|
+
const placeholders = idsToRemove.map(() => '?').join(',');
|
|
340
|
+
this.db.run(`DELETE FROM memory_branch_observations
|
|
341
|
+
WHERE branch_id = ? AND observation_id IN (${placeholders})`, [branchId, ...idsToRemove]);
|
|
342
|
+
// Delete observations that are no longer linked to ANY branch
|
|
343
|
+
this.db.run(`DELETE FROM memory_observations
|
|
344
|
+
WHERE id IN (${placeholders})
|
|
345
|
+
AND NOT EXISTS (
|
|
346
|
+
SELECT 1 FROM memory_branch_observations WHERE observation_id = memory_observations.id
|
|
347
|
+
)`, idsToRemove);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
//# sourceMappingURL=versioning.js.map
|