@phmotad/fire-code 0.2.9 → 0.3.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/cli/commands/index-cmd.d.ts +2 -0
- package/dist/cli/commands/index-cmd.d.ts.map +1 -1
- package/dist/cli/commands/index-cmd.js +26 -20
- package/dist/cli/commands/index-cmd.js.map +1 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +12 -0
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/index.js +10 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/db/DatabaseManager.d.ts +3 -2
- package/dist/db/DatabaseManager.d.ts.map +1 -1
- package/dist/db/DatabaseManager.js +38 -26
- package/dist/db/DatabaseManager.js.map +1 -1
- package/dist/db/SqlJsAdapter.d.ts +32 -0
- package/dist/db/SqlJsAdapter.d.ts.map +1 -0
- package/dist/db/SqlJsAdapter.js +130 -0
- package/dist/db/SqlJsAdapter.js.map +1 -0
- package/dist/db/schema.d.ts +1 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +14 -48
- package/dist/db/schema.js.map +1 -1
- package/dist/graph/SQLiteGraphStore.d.ts +4 -2
- package/dist/graph/SQLiteGraphStore.d.ts.map +1 -1
- package/dist/graph/SQLiteGraphStore.js +16 -0
- package/dist/graph/SQLiteGraphStore.js.map +1 -1
- package/dist/indexing/Indexer.d.ts.map +1 -1
- package/dist/indexing/Indexer.js +6 -3
- package/dist/indexing/Indexer.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +2 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/utils/gitHooks.d.ts +7 -0
- package/dist/utils/gitHooks.d.ts.map +1 -0
- package/dist/utils/gitHooks.js +77 -0
- package/dist/utils/gitHooks.js.map +1 -0
- package/dist/vector/SQLiteVectorStore.d.ts +2 -2
- package/dist/vector/SQLiteVectorStore.d.ts.map +1 -1
- package/dist/vector/SQLiteVectorStore.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SqlJsDatabase = exports.SqlJsStatement = void 0;
|
|
4
|
+
exports.initSqlJs = initSqlJs;
|
|
5
|
+
exports.getSqlJsSync = getSqlJsSync;
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
8
|
+
const _initSqlJs = require('sql.js');
|
|
9
|
+
let _sqlJs = null;
|
|
10
|
+
async function initSqlJs() {
|
|
11
|
+
if (_sqlJs)
|
|
12
|
+
return;
|
|
13
|
+
// require('sql.js') → dist/sql-wasm.js. The Emscripten loader locates
|
|
14
|
+
// sql-wasm.wasm from __dirname (same dist/ folder) automatically in Node.js.
|
|
15
|
+
_sqlJs = await _initSqlJs();
|
|
16
|
+
}
|
|
17
|
+
function getSqlJsSync() {
|
|
18
|
+
if (!_sqlJs)
|
|
19
|
+
throw new Error('sql.js WASM not initialised — call initSqlJs() at startup');
|
|
20
|
+
return _sqlJs;
|
|
21
|
+
}
|
|
22
|
+
// ── Statement wrapper ────────────────────────────────────────────────────────
|
|
23
|
+
// Statements are NOT auto-freed — callers may reuse them across multiple run()
|
|
24
|
+
// calls. Memory is reclaimed when the database is closed.
|
|
25
|
+
class SqlJsStatement {
|
|
26
|
+
raw;
|
|
27
|
+
owner;
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
29
|
+
constructor(raw, owner) {
|
|
30
|
+
this.raw = raw;
|
|
31
|
+
this.owner = owner;
|
|
32
|
+
}
|
|
33
|
+
// Return types intentionally match better-sqlite3: unknown allows callers to cast
|
|
34
|
+
get(...params) {
|
|
35
|
+
if (params.length > 0)
|
|
36
|
+
this.raw.bind(params);
|
|
37
|
+
const found = this.raw.step();
|
|
38
|
+
const row = found ? this.raw.getAsObject() : null;
|
|
39
|
+
this.raw.reset();
|
|
40
|
+
return row;
|
|
41
|
+
}
|
|
42
|
+
all(...params) {
|
|
43
|
+
if (params.length > 0)
|
|
44
|
+
this.raw.bind(params);
|
|
45
|
+
const rows = [];
|
|
46
|
+
while (this.raw.step()) {
|
|
47
|
+
rows.push(this.raw.getAsObject());
|
|
48
|
+
}
|
|
49
|
+
this.raw.reset();
|
|
50
|
+
return rows;
|
|
51
|
+
}
|
|
52
|
+
run(...params) {
|
|
53
|
+
// sql.js Statement.run() binds params, steps once, and resets internally —
|
|
54
|
+
// the statement is ready to be reused after this call.
|
|
55
|
+
this.raw.run(params.length > 0 ? params : undefined);
|
|
56
|
+
this.owner.markDirty();
|
|
57
|
+
const lastId = (this.owner._scalar('SELECT last_insert_rowid()') ?? 0);
|
|
58
|
+
const chg = (this.owner._scalar('SELECT changes()') ?? 0);
|
|
59
|
+
return { lastInsertRowid: lastId, changes: chg };
|
|
60
|
+
}
|
|
61
|
+
free() {
|
|
62
|
+
this.raw.free();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.SqlJsStatement = SqlJsStatement;
|
|
66
|
+
// ── Database wrapper ─────────────────────────────────────────────────────────
|
|
67
|
+
class SqlJsDatabase {
|
|
68
|
+
db;
|
|
69
|
+
filePath;
|
|
70
|
+
dirty = false;
|
|
71
|
+
constructor(db, filePath) {
|
|
72
|
+
this.db = db;
|
|
73
|
+
this.filePath = filePath;
|
|
74
|
+
}
|
|
75
|
+
static openSync(sqlJs, filePath) {
|
|
76
|
+
const db = (0, fs_1.existsSync)(filePath)
|
|
77
|
+
? new sqlJs.Database((0, fs_1.readFileSync)(filePath))
|
|
78
|
+
: new sqlJs.Database();
|
|
79
|
+
return new SqlJsDatabase(db, filePath);
|
|
80
|
+
}
|
|
81
|
+
prepare(sql) {
|
|
82
|
+
return new SqlJsStatement(this.db.prepare(sql), this);
|
|
83
|
+
}
|
|
84
|
+
/** Execute one or more SQL statements (DDL, schema init). */
|
|
85
|
+
exec(sql) {
|
|
86
|
+
// sql.js db.exec() handles multiple statements and is the correct way
|
|
87
|
+
// to run schema SQL that contains triggers with BEGIN...END blocks.
|
|
88
|
+
this.db.exec(sql);
|
|
89
|
+
this.dirty = true;
|
|
90
|
+
}
|
|
91
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
92
|
+
transaction(fn) {
|
|
93
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
94
|
+
const self = this;
|
|
95
|
+
return function (arg) {
|
|
96
|
+
self.db.run('BEGIN');
|
|
97
|
+
try {
|
|
98
|
+
fn(arg);
|
|
99
|
+
self.db.run('COMMIT');
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
try {
|
|
103
|
+
self.db.run('ROLLBACK');
|
|
104
|
+
}
|
|
105
|
+
catch { /* ignore */ }
|
|
106
|
+
throw err;
|
|
107
|
+
}
|
|
108
|
+
self.flush();
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
markDirty() {
|
|
112
|
+
this.dirty = true;
|
|
113
|
+
}
|
|
114
|
+
_scalar(sql) {
|
|
115
|
+
return this.db.exec(sql)[0]?.values?.[0]?.[0];
|
|
116
|
+
}
|
|
117
|
+
flush() {
|
|
118
|
+
if (!this.dirty)
|
|
119
|
+
return;
|
|
120
|
+
const data = this.db.export();
|
|
121
|
+
(0, fs_1.writeFileSync)(this.filePath, Buffer.from(data));
|
|
122
|
+
this.dirty = false;
|
|
123
|
+
}
|
|
124
|
+
close() {
|
|
125
|
+
this.flush();
|
|
126
|
+
this.db.close();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
exports.SqlJsDatabase = SqlJsDatabase;
|
|
130
|
+
//# sourceMappingURL=SqlJsAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SqlJsAdapter.js","sourceRoot":"","sources":["../../src/db/SqlJsAdapter.ts"],"names":[],"mappings":"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"}
|
package/dist/db/schema.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const SCHEMA_SQL = "\nPRAGMA
|
|
1
|
+
export declare const SCHEMA_SQL = "\nPRAGMA foreign_keys=ON;\n\nCREATE TABLE IF NOT EXISTS sessions (\n id TEXT PRIMARY KEY,\n project TEXT NOT NULL,\n cwd TEXT NOT NULL,\n started_at INTEGER NOT NULL,\n ended_at INTEGER,\n status TEXT NOT NULL DEFAULT 'active'\n);\n\nCREATE TABLE IF NOT EXISTS observations (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n session_id TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,\n project TEXT NOT NULL,\n type TEXT NOT NULL DEFAULT 'change',\n tool TEXT,\n file_path TEXT,\n summary TEXT NOT NULL,\n detail TEXT,\n created_at INTEGER NOT NULL DEFAULT (unixepoch())\n);\n\nCREATE TABLE IF NOT EXISTS summaries (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n session_id TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,\n project TEXT NOT NULL,\n content TEXT NOT NULL,\n created_at INTEGER NOT NULL DEFAULT (unixepoch())\n);\n\nCREATE TABLE IF NOT EXISTS file_index (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n project TEXT NOT NULL,\n file_path TEXT NOT NULL,\n functions TEXT,\n classes TEXT,\n imports TEXT,\n indexed_at INTEGER NOT NULL DEFAULT (unixepoch()),\n UNIQUE(project, file_path)\n);\n\nCREATE INDEX IF NOT EXISTS idx_obs_project ON observations(project);\nCREATE INDEX IF NOT EXISTS idx_obs_type ON observations(type);\nCREATE INDEX IF NOT EXISTS idx_obs_session ON observations(session_id);\nCREATE INDEX IF NOT EXISTS idx_obs_created ON observations(created_at DESC);\nCREATE INDEX IF NOT EXISTS idx_obs_file ON observations(file_path);\nCREATE INDEX IF NOT EXISTS idx_sessions_proj ON sessions(project);\nCREATE INDEX IF NOT EXISTS idx_file_index ON file_index(project, file_path);\n\nCREATE TABLE IF NOT EXISTS corpus (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n project TEXT NOT NULL,\n title TEXT NOT NULL,\n content TEXT NOT NULL,\n source TEXT,\n tags TEXT,\n private INTEGER NOT NULL DEFAULT 0,\n created_at INTEGER NOT NULL DEFAULT (unixepoch()),\n updated_at INTEGER NOT NULL DEFAULT (unixepoch()),\n UNIQUE(project, title)\n);\n\nCREATE INDEX IF NOT EXISTS idx_corpus_project ON corpus(project);\nCREATE INDEX IF NOT EXISTS idx_corpus_private ON corpus(project, private);\n\nCREATE TABLE IF NOT EXISTS graph_nodes (\n id TEXT NOT NULL,\n project TEXT NOT NULL,\n type TEXT NOT NULL,\n label TEXT NOT NULL,\n data TEXT NOT NULL,\n PRIMARY KEY (project, id)\n);\n\nCREATE TABLE IF NOT EXISTS graph_edges (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n project TEXT NOT NULL,\n from_id TEXT NOT NULL,\n to_id TEXT NOT NULL,\n type TEXT NOT NULL,\n label TEXT,\n UNIQUE(project, from_id, to_id, type)\n);\n\nCREATE INDEX IF NOT EXISTS idx_gnodes_project ON graph_nodes(project, type);\nCREATE INDEX IF NOT EXISTS idx_gedges_from ON graph_edges(project, from_id);\nCREATE INDEX IF NOT EXISTS idx_gedges_to ON graph_edges(project, to_id);\n\nCREATE TABLE IF NOT EXISTS vector_chunks (\n id TEXT NOT NULL,\n project TEXT NOT NULL,\n text TEXT NOT NULL,\n metadata TEXT NOT NULL,\n embedding TEXT,\n PRIMARY KEY (project, id)\n);\n\nCREATE INDEX IF NOT EXISTS idx_vchunks_project ON vector_chunks(project);\n\nCREATE TABLE IF NOT EXISTS project_metadata (\n project TEXT NOT NULL,\n key TEXT NOT NULL,\n value TEXT NOT NULL,\n PRIMARY KEY (project, key)\n);\n";
|
|
2
2
|
//# sourceMappingURL=schema.d.ts.map
|
package/dist/db/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,UAAU,k+GA2GtB,CAAC"}
|
package/dist/db/schema.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SCHEMA_SQL = void 0;
|
|
4
|
+
// FTS5 is not compiled into sql.js — text search uses LIKE queries instead.
|
|
4
5
|
exports.SCHEMA_SQL = `
|
|
5
|
-
PRAGMA journal_mode=WAL;
|
|
6
6
|
PRAGMA foreign_keys=ON;
|
|
7
7
|
|
|
8
8
|
CREATE TABLE IF NOT EXISTS sessions (
|
|
@@ -11,14 +11,14 @@ CREATE TABLE IF NOT EXISTS sessions (
|
|
|
11
11
|
cwd TEXT NOT NULL,
|
|
12
12
|
started_at INTEGER NOT NULL,
|
|
13
13
|
ended_at INTEGER,
|
|
14
|
-
status TEXT NOT NULL DEFAULT 'active'
|
|
14
|
+
status TEXT NOT NULL DEFAULT 'active'
|
|
15
15
|
);
|
|
16
16
|
|
|
17
17
|
CREATE TABLE IF NOT EXISTS observations (
|
|
18
18
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
19
19
|
session_id TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,
|
|
20
20
|
project TEXT NOT NULL,
|
|
21
|
-
type TEXT NOT NULL DEFAULT 'change',
|
|
21
|
+
type TEXT NOT NULL DEFAULT 'change',
|
|
22
22
|
tool TEXT,
|
|
23
23
|
file_path TEXT,
|
|
24
24
|
summary TEXT NOT NULL,
|
|
@@ -38,30 +38,13 @@ CREATE TABLE IF NOT EXISTS file_index (
|
|
|
38
38
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
39
39
|
project TEXT NOT NULL,
|
|
40
40
|
file_path TEXT NOT NULL,
|
|
41
|
-
functions TEXT,
|
|
42
|
-
classes TEXT,
|
|
43
|
-
imports TEXT,
|
|
41
|
+
functions TEXT,
|
|
42
|
+
classes TEXT,
|
|
43
|
+
imports TEXT,
|
|
44
44
|
indexed_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
45
45
|
UNIQUE(project, file_path)
|
|
46
46
|
);
|
|
47
47
|
|
|
48
|
-
-- Full-text search on observations
|
|
49
|
-
CREATE VIRTUAL TABLE IF NOT EXISTS observations_fts USING fts5(
|
|
50
|
-
summary, detail, file_path, type,
|
|
51
|
-
content=observations,
|
|
52
|
-
content_rowid=id
|
|
53
|
-
);
|
|
54
|
-
|
|
55
|
-
CREATE TRIGGER IF NOT EXISTS obs_fts_insert AFTER INSERT ON observations BEGIN
|
|
56
|
-
INSERT INTO observations_fts(rowid, summary, detail, file_path, type)
|
|
57
|
-
VALUES (new.id, new.summary, new.detail, new.file_path, new.type);
|
|
58
|
-
END;
|
|
59
|
-
|
|
60
|
-
CREATE TRIGGER IF NOT EXISTS obs_fts_delete AFTER DELETE ON observations BEGIN
|
|
61
|
-
INSERT INTO observations_fts(observations_fts, rowid, summary, detail, file_path, type)
|
|
62
|
-
VALUES ('delete', old.id, old.summary, old.detail, old.file_path, old.type);
|
|
63
|
-
END;
|
|
64
|
-
|
|
65
48
|
CREATE INDEX IF NOT EXISTS idx_obs_project ON observations(project);
|
|
66
49
|
CREATE INDEX IF NOT EXISTS idx_obs_type ON observations(type);
|
|
67
50
|
CREATE INDEX IF NOT EXISTS idx_obs_session ON observations(session_id);
|
|
@@ -70,43 +53,28 @@ CREATE INDEX IF NOT EXISTS idx_obs_file ON observations(file_path);
|
|
|
70
53
|
CREATE INDEX IF NOT EXISTS idx_sessions_proj ON sessions(project);
|
|
71
54
|
CREATE INDEX IF NOT EXISTS idx_file_index ON file_index(project, file_path);
|
|
72
55
|
|
|
73
|
-
-- Knowledge Corpus
|
|
74
56
|
CREATE TABLE IF NOT EXISTS corpus (
|
|
75
57
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
76
58
|
project TEXT NOT NULL,
|
|
77
59
|
title TEXT NOT NULL,
|
|
78
60
|
content TEXT NOT NULL,
|
|
79
|
-
source TEXT,
|
|
80
|
-
tags TEXT,
|
|
81
|
-
private INTEGER NOT NULL DEFAULT 0,
|
|
61
|
+
source TEXT,
|
|
62
|
+
tags TEXT,
|
|
63
|
+
private INTEGER NOT NULL DEFAULT 0,
|
|
82
64
|
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
83
65
|
updated_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
84
66
|
UNIQUE(project, title)
|
|
85
67
|
);
|
|
86
68
|
|
|
87
|
-
CREATE VIRTUAL TABLE IF NOT EXISTS corpus_fts USING fts5(
|
|
88
|
-
title, content, tags,
|
|
89
|
-
content=corpus,
|
|
90
|
-
content_rowid=id
|
|
91
|
-
);
|
|
92
|
-
|
|
93
|
-
CREATE TRIGGER IF NOT EXISTS corpus_fts_insert AFTER INSERT ON corpus BEGIN
|
|
94
|
-
INSERT INTO corpus_fts(rowid, title, content, tags) VALUES (new.id, new.title, new.content, new.tags);
|
|
95
|
-
END;
|
|
96
|
-
CREATE TRIGGER IF NOT EXISTS corpus_fts_delete AFTER DELETE ON corpus BEGIN
|
|
97
|
-
INSERT INTO corpus_fts(corpus_fts, rowid, title, content, tags) VALUES ('delete', old.id, old.title, old.content, old.tags);
|
|
98
|
-
END;
|
|
99
|
-
|
|
100
69
|
CREATE INDEX IF NOT EXISTS idx_corpus_project ON corpus(project);
|
|
101
70
|
CREATE INDEX IF NOT EXISTS idx_corpus_private ON corpus(project, private);
|
|
102
71
|
|
|
103
|
-
-- Dependency Graph
|
|
104
72
|
CREATE TABLE IF NOT EXISTS graph_nodes (
|
|
105
73
|
id TEXT NOT NULL,
|
|
106
74
|
project TEXT NOT NULL,
|
|
107
|
-
type TEXT NOT NULL,
|
|
75
|
+
type TEXT NOT NULL,
|
|
108
76
|
label TEXT NOT NULL,
|
|
109
|
-
data TEXT NOT NULL,
|
|
77
|
+
data TEXT NOT NULL,
|
|
110
78
|
PRIMARY KEY (project, id)
|
|
111
79
|
);
|
|
112
80
|
|
|
@@ -115,7 +83,7 @@ CREATE TABLE IF NOT EXISTS graph_edges (
|
|
|
115
83
|
project TEXT NOT NULL,
|
|
116
84
|
from_id TEXT NOT NULL,
|
|
117
85
|
to_id TEXT NOT NULL,
|
|
118
|
-
type TEXT NOT NULL,
|
|
86
|
+
type TEXT NOT NULL,
|
|
119
87
|
label TEXT,
|
|
120
88
|
UNIQUE(project, from_id, to_id, type)
|
|
121
89
|
);
|
|
@@ -124,19 +92,17 @@ CREATE INDEX IF NOT EXISTS idx_gnodes_project ON graph_nodes(project, type);
|
|
|
124
92
|
CREATE INDEX IF NOT EXISTS idx_gedges_from ON graph_edges(project, from_id);
|
|
125
93
|
CREATE INDEX IF NOT EXISTS idx_gedges_to ON graph_edges(project, to_id);
|
|
126
94
|
|
|
127
|
-
-- Vector Embeddings (persistent, replaces in-memory MemoryVectorStore)
|
|
128
95
|
CREATE TABLE IF NOT EXISTS vector_chunks (
|
|
129
96
|
id TEXT NOT NULL,
|
|
130
97
|
project TEXT NOT NULL,
|
|
131
98
|
text TEXT NOT NULL,
|
|
132
|
-
metadata TEXT NOT NULL,
|
|
133
|
-
embedding TEXT,
|
|
99
|
+
metadata TEXT NOT NULL,
|
|
100
|
+
embedding TEXT,
|
|
134
101
|
PRIMARY KEY (project, id)
|
|
135
102
|
);
|
|
136
103
|
|
|
137
104
|
CREATE INDEX IF NOT EXISTS idx_vchunks_project ON vector_chunks(project);
|
|
138
105
|
|
|
139
|
-
-- Project-level key-value metadata (index hash, timestamps, etc.)
|
|
140
106
|
CREATE TABLE IF NOT EXISTS project_metadata (
|
|
141
107
|
project TEXT NOT NULL,
|
|
142
108
|
key TEXT NOT NULL,
|
package/dist/db/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":";;;AAAA,4EAA4E;AAC/D,QAAA,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2GzB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { SqlJsDatabase } from '../db/SqlJsAdapter.js';
|
|
2
2
|
import type { GraphNode, DependencyEdge, GraphQueryFilter, GraphStats, GraphStore } from './GraphStore.js';
|
|
3
3
|
/**
|
|
4
4
|
* Graph store backed by SQLite for persistence + graphology for algorithms.
|
|
@@ -10,7 +10,7 @@ export declare class SQLiteGraphStore implements GraphStore {
|
|
|
10
10
|
private db;
|
|
11
11
|
private project;
|
|
12
12
|
private g;
|
|
13
|
-
constructor(db:
|
|
13
|
+
constructor(db: SqlJsDatabase, project: string);
|
|
14
14
|
private load;
|
|
15
15
|
addNode(node: GraphNode): void;
|
|
16
16
|
addEdge(edge: DependencyEdge): void;
|
|
@@ -26,6 +26,8 @@ export declare class SQLiteGraphStore implements GraphStore {
|
|
|
26
26
|
dependantsOf(targetId: string): GraphNode[];
|
|
27
27
|
/** Clear all graph data for this project */
|
|
28
28
|
clear(): void;
|
|
29
|
+
/** Wrap a bulk-insert callback in a single SQLite transaction + disk flush. */
|
|
30
|
+
runBatch(fn: () => void): void;
|
|
29
31
|
serialize(): string;
|
|
30
32
|
}
|
|
31
33
|
//# sourceMappingURL=SQLiteGraphStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLiteGraphStore.d.ts","sourceRoot":"","sources":["../../src/graph/SQLiteGraphStore.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"SQLiteGraphStore.d.ts","sourceRoot":"","sources":["../../src/graph/SQLiteGraphStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAKtD,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,UAAU,EACX,MAAM,iBAAiB,CAAC;AAEzB;;;;;GAKG;AACH,qBAAa,gBAAiB,YAAW,UAAU;IAIrC,OAAO,CAAC,EAAE;IAAiB,OAAO,CAAC,OAAO;IAFtD,OAAO,CAAC,CAAC,CAA+B;gBAEpB,EAAE,EAAE,aAAa,EAAU,OAAO,EAAE,MAAM;IAQ9D,OAAO,CAAC,IAAI;IA2BZ,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAe9B,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAcnC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAO1C,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE;IAWrC,KAAK,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,EAAE;IA+B5C,QAAQ,IAAI,UAAU;IAsBtB,gEAAgE;IAChE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,MAAM,EAAE;IAW5C,iEAAiE;IACjE,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,SAAS,EAAE;IAKzD,8DAA8D;IAC9D,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE;IAM3C,4CAA4C;IAC5C,KAAK,IAAI,IAAI;IAOb,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAc9B,SAAS,IAAI,MAAM;CAIpB"}
|
|
@@ -154,6 +154,22 @@ class SQLiteGraphStore {
|
|
|
154
154
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
155
155
|
this.g = new DirectedGraph();
|
|
156
156
|
}
|
|
157
|
+
/** Wrap a bulk-insert callback in a single SQLite transaction + disk flush. */
|
|
158
|
+
runBatch(fn) {
|
|
159
|
+
this.db.exec('BEGIN');
|
|
160
|
+
try {
|
|
161
|
+
fn();
|
|
162
|
+
this.db.exec('COMMIT');
|
|
163
|
+
}
|
|
164
|
+
catch (err) {
|
|
165
|
+
try {
|
|
166
|
+
this.db.exec('ROLLBACK');
|
|
167
|
+
}
|
|
168
|
+
catch { /* ignore */ }
|
|
169
|
+
throw err;
|
|
170
|
+
}
|
|
171
|
+
this.db.flush();
|
|
172
|
+
}
|
|
157
173
|
// ── Legacy compat (serialize returns a summary, not full JSON) ───────────
|
|
158
174
|
serialize() {
|
|
159
175
|
const stats = this.getStats();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLiteGraphStore.js","sourceRoot":"","sources":["../../src/graph/SQLiteGraphStore.ts"],"names":[],"mappings":";;;AACA,iEAAiE;AACjE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,YAAY,CAAgC,CAAC;AAC/E,+DAAmD;AAUnD;;;;;GAKG;AACH,MAAa,gBAAgB;IAIP;
|
|
1
|
+
{"version":3,"file":"SQLiteGraphStore.js","sourceRoot":"","sources":["../../src/graph/SQLiteGraphStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Indexer.d.ts","sourceRoot":"","sources":["../../src/indexing/Indexer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAQ5D,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAUD,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,gBAAgB,EAC5B,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"Indexer.d.ts","sourceRoot":"","sources":["../../src/indexing/Indexer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAQ5D,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAUD,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,gBAAgB,EAC5B,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,WAAW,CAAC,CAyEtB"}
|
package/dist/indexing/Indexer.js
CHANGED
|
@@ -35,9 +35,11 @@ async function indexProject(cwd, config, graphStore, vectorStore) {
|
|
|
35
35
|
const parsed = (0, ASTParser_js_1.parseFiles)(files);
|
|
36
36
|
const functionsFound = parsed.reduce((acc, f) => acc + f.functions.length + f.classes.reduce((s, cls) => s + cls.methods.length, 0), 0);
|
|
37
37
|
logger_js_1.logger.info({ files: parsed.length, functions: functionsFound }, 'AST parsed');
|
|
38
|
-
// 3. Build graph
|
|
39
|
-
graphStore.
|
|
40
|
-
|
|
38
|
+
// 3. Build graph — wrapped in one transaction so we flush only once
|
|
39
|
+
graphStore.runBatch(() => {
|
|
40
|
+
graphStore.clear();
|
|
41
|
+
(0, GraphBuilder_js_1.buildGraphFromParsed)(parsed, graphStore);
|
|
42
|
+
});
|
|
41
43
|
// 4. Index git history (CommitNodes + commit→file edges)
|
|
42
44
|
const commitsIndexed = await (0, GitIndexer_js_1.indexGitHistory)(cwd, config.git, graphStore);
|
|
43
45
|
if (commitsIndexed > 0) {
|
|
@@ -70,6 +72,7 @@ async function indexProject(cwd, config, graphStore, vectorStore) {
|
|
|
70
72
|
db.setProjectMeta(project, 'indexed_at_hash', headHash);
|
|
71
73
|
db.setProjectMeta(project, 'indexed_at', Date.now().toString());
|
|
72
74
|
}
|
|
75
|
+
db.flush(); // persist all accumulated writes (metadata + any non-transacted ops)
|
|
73
76
|
}
|
|
74
77
|
catch { /* non-fatal */ }
|
|
75
78
|
// 8. Bootstrap log
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Indexer.js","sourceRoot":"","sources":["../../src/indexing/Indexer.ts"],"names":[],"mappings":";;AAkCA,
|
|
1
|
+
{"version":3,"file":"Indexer.js","sourceRoot":"","sources":["../../src/indexing/Indexer.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAsBA,wBAAsB,cAAc,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmK/E"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -18,7 +18,9 @@ const find_similar_js_1 = require("./tools/find_similar.js");
|
|
|
18
18
|
const logger_js_1 = require("../utils/logger.js");
|
|
19
19
|
const errors_js_1 = require("../utils/errors.js");
|
|
20
20
|
const zodToJsonSchema_js_1 = require("../utils/zodToJsonSchema.js");
|
|
21
|
+
const SqlJsAdapter_js_1 = require("../db/SqlJsAdapter.js");
|
|
21
22
|
async function startMcpServer(cwd = process.cwd()) {
|
|
23
|
+
await (0, SqlJsAdapter_js_1.initSqlJs)();
|
|
22
24
|
const config = await (0, loader_js_1.loadConfig)(cwd);
|
|
23
25
|
const provider = (0, ProviderFactory_js_1.createProvider)(config.llm);
|
|
24
26
|
const server = new index_js_1.Server({ name: 'fire-code', version: '0.1.0' }, { capabilities: { tools: {} } });
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type HookInstallResult = 'installed' | 'updated' | 'already_set' | 'no_git';
|
|
2
|
+
/** Install (or merge) the post-checkout hook in the project's .git/hooks/. */
|
|
3
|
+
export declare function installPostCheckoutHook(cwd: string): HookInstallResult;
|
|
4
|
+
/** Remove the Fire Code block from the post-checkout hook. */
|
|
5
|
+
export declare function removePostCheckoutHook(cwd: string): boolean;
|
|
6
|
+
export declare function hasPostCheckoutHook(cwd: string): boolean;
|
|
7
|
+
//# sourceMappingURL=gitHooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitHooks.d.ts","sourceRoot":"","sources":["../../src/utils/gitHooks.ts"],"names":[],"mappings":"AAwBA,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,SAAS,GAAG,aAAa,GAAG,QAAQ,CAAC;AAEnF,8EAA8E;AAC9E,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAmBtE;AAED,8DAA8D;AAC9D,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAiB3D;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIxD"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.installPostCheckoutHook = installPostCheckoutHook;
|
|
4
|
+
exports.removePostCheckoutHook = removePostCheckoutHook;
|
|
5
|
+
exports.hasPostCheckoutHook = hasPostCheckoutHook;
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const BEGIN_MARKER = '# BEGIN fire-code';
|
|
9
|
+
const END_MARKER = '# END fire-code';
|
|
10
|
+
// The hook runs after every `git checkout`. It re-indexes silently in the
|
|
11
|
+
// background only when switching branches and the index exists.
|
|
12
|
+
function buildHookContent() {
|
|
13
|
+
return `${BEGIN_MARKER}
|
|
14
|
+
# Fire Code — post-checkout hook (auto re-index on branch switch)
|
|
15
|
+
_prev="$1"
|
|
16
|
+
_new="$2"
|
|
17
|
+
_branch="$3"
|
|
18
|
+
if [ "$_branch" = "1" ] && [ "$_prev" != "$_new" ] && [ -d ".firecode" ]; then
|
|
19
|
+
if command -v fire-code > /dev/null 2>&1; then
|
|
20
|
+
fire-code index --silent > /dev/null 2>&1 &
|
|
21
|
+
elif command -v npx > /dev/null 2>&1; then
|
|
22
|
+
npx --yes @phmotad/fire-code index --silent > /dev/null 2>&1 &
|
|
23
|
+
fi
|
|
24
|
+
fi
|
|
25
|
+
${END_MARKER}`;
|
|
26
|
+
}
|
|
27
|
+
/** Install (or merge) the post-checkout hook in the project's .git/hooks/. */
|
|
28
|
+
function installPostCheckoutHook(cwd) {
|
|
29
|
+
const hooksDir = (0, path_1.join)(cwd, '.git', 'hooks');
|
|
30
|
+
if (!(0, fs_1.existsSync)(hooksDir))
|
|
31
|
+
return 'no_git';
|
|
32
|
+
const hookPath = (0, path_1.join)(hooksDir, 'post-checkout');
|
|
33
|
+
const block = buildHookContent();
|
|
34
|
+
if ((0, fs_1.existsSync)(hookPath)) {
|
|
35
|
+
const existing = (0, fs_1.readFileSync)(hookPath, 'utf8');
|
|
36
|
+
if (existing.includes(BEGIN_MARKER))
|
|
37
|
+
return 'already_set';
|
|
38
|
+
// Append our block to an existing hook (e.g., husky or lefthook)
|
|
39
|
+
(0, fs_1.writeFileSync)(hookPath, existing.trimEnd() + '\n\n' + block + '\n', 'utf8');
|
|
40
|
+
tryChmod(hookPath);
|
|
41
|
+
return 'updated';
|
|
42
|
+
}
|
|
43
|
+
(0, fs_1.writeFileSync)(hookPath, `#!/bin/sh\n${block}\n`, 'utf8');
|
|
44
|
+
tryChmod(hookPath);
|
|
45
|
+
return 'installed';
|
|
46
|
+
}
|
|
47
|
+
/** Remove the Fire Code block from the post-checkout hook. */
|
|
48
|
+
function removePostCheckoutHook(cwd) {
|
|
49
|
+
const hookPath = (0, path_1.join)(cwd, '.git', 'hooks', 'post-checkout');
|
|
50
|
+
if (!(0, fs_1.existsSync)(hookPath))
|
|
51
|
+
return false;
|
|
52
|
+
const content = (0, fs_1.readFileSync)(hookPath, 'utf8');
|
|
53
|
+
if (!content.includes(BEGIN_MARKER))
|
|
54
|
+
return false;
|
|
55
|
+
const beginIdx = content.indexOf(BEGIN_MARKER);
|
|
56
|
+
const endIdx = content.indexOf(END_MARKER);
|
|
57
|
+
if (endIdx === -1)
|
|
58
|
+
return false;
|
|
59
|
+
const before = content.slice(0, beginIdx).trimEnd();
|
|
60
|
+
const after = content.slice(endIdx + END_MARKER.length).trimStart();
|
|
61
|
+
const merged = [before, after].filter(Boolean).join('\n').trimEnd();
|
|
62
|
+
(0, fs_1.writeFileSync)(hookPath, merged ? merged + '\n' : '#!/bin/sh\n', 'utf8');
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
function hasPostCheckoutHook(cwd) {
|
|
66
|
+
const hookPath = (0, path_1.join)(cwd, '.git', 'hooks', 'post-checkout');
|
|
67
|
+
if (!(0, fs_1.existsSync)(hookPath))
|
|
68
|
+
return false;
|
|
69
|
+
return (0, fs_1.readFileSync)(hookPath, 'utf8').includes(BEGIN_MARKER);
|
|
70
|
+
}
|
|
71
|
+
function tryChmod(path) {
|
|
72
|
+
try {
|
|
73
|
+
(0, fs_1.chmodSync)(path, 0o755);
|
|
74
|
+
}
|
|
75
|
+
catch { /* Windows: chmod is no-op */ }
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=gitHooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitHooks.js","sourceRoot":"","sources":["../../src/utils/gitHooks.ts"],"names":[],"mappings":";;AA2BA,0DAmBC;AAGD,wDAiBC;AAED,kDAIC;AAxED,2BAAwE;AACxE,+BAA4B;AAE5B,MAAM,YAAY,GAAG,mBAAmB,CAAC;AACzC,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAErC,0EAA0E;AAC1E,gEAAgE;AAChE,SAAS,gBAAgB;IACvB,OAAO,GAAG,YAAY;;;;;;;;;;;;EAYtB,UAAU,EAAE,CAAC;AACf,CAAC;AAID,8EAA8E;AAC9E,SAAgB,uBAAuB,CAAC,GAAW;IACjD,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE3C,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IAEjC,IAAI,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChD,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,OAAO,aAAa,CAAC;QAC1D,iEAAiE;QACjE,IAAA,kBAAa,EAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5E,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAA,kBAAa,EAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,EAAE,MAAM,CAAC,CAAC;IACzD,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnB,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,8DAA8D;AAC9D,SAAgB,sBAAsB,CAAC,GAAW;IAChD,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IAC7D,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAExC,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC;IAElD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAEhC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;IACpE,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IAEpE,IAAA,kBAAa,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACxE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,mBAAmB,CAAC,GAAW;IAC7C,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IAC7D,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,IAAA,iBAAY,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,CAAC;QAAC,IAAA,cAAS,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,6BAA6B,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { SqlJsDatabase } from '../db/SqlJsAdapter.js';
|
|
2
2
|
import type { Document, ScoredDocument, VectorStore } from './VectorStore.js';
|
|
3
3
|
export declare class SQLiteVectorStore implements VectorStore {
|
|
4
4
|
private db;
|
|
5
5
|
private project;
|
|
6
|
-
constructor(db:
|
|
6
|
+
constructor(db: SqlJsDatabase, project: string);
|
|
7
7
|
add(documents: Document[]): Promise<void>;
|
|
8
8
|
search(query: string, k?: number): Promise<ScoredDocument[]>;
|
|
9
9
|
delete(ids: string[]): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLiteVectorStore.d.ts","sourceRoot":"","sources":["../../src/vector/SQLiteVectorStore.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"SQLiteVectorStore.d.ts","sourceRoot":"","sources":["../../src/vector/SQLiteVectorStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAwC9E,qBAAa,iBAAkB,YAAW,WAAW;IACvC,OAAO,CAAC,EAAE;IAAiB,OAAO,CAAC,OAAO;gBAAlC,EAAE,EAAE,aAAa,EAAU,OAAO,EAAE,MAAM;IAExD,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBzC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,SAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA+CvD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,IAAI,IAAI,MAAM;CAKf"}
|