@pella-labs/pinakes 0.1.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/README.md +208 -0
- package/dist/cli/audit.d.ts +30 -0
- package/dist/cli/audit.d.ts.map +1 -0
- package/dist/cli/audit.js +49 -0
- package/dist/cli/audit.js.map +1 -0
- package/dist/cli/export.d.ts +32 -0
- package/dist/cli/export.d.ts.map +1 -0
- package/dist/cli/export.js +73 -0
- package/dist/cli/export.js.map +1 -0
- package/dist/cli/import.d.ts +24 -0
- package/dist/cli/import.d.ts.map +1 -0
- package/dist/cli/import.js +96 -0
- package/dist/cli/import.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +172 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/purge.d.ts +23 -0
- package/dist/cli/purge.d.ts.map +1 -0
- package/dist/cli/purge.js +57 -0
- package/dist/cli/purge.js.map +1 -0
- package/dist/cli/rebuild.d.ts +54 -0
- package/dist/cli/rebuild.d.ts.map +1 -0
- package/dist/cli/rebuild.js +113 -0
- package/dist/cli/rebuild.js.map +1 -0
- package/dist/cli/serve.d.ts +49 -0
- package/dist/cli/serve.d.ts.map +1 -0
- package/dist/cli/serve.js +296 -0
- package/dist/cli/serve.js.map +1 -0
- package/dist/cli/status.d.ts +39 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +108 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/db/client.d.ts +109 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +175 -0
- package/dist/db/client.js.map +1 -0
- package/dist/db/repository.d.ts +82 -0
- package/dist/db/repository.d.ts.map +1 -0
- package/dist/db/repository.js +173 -0
- package/dist/db/repository.js.map +1 -0
- package/dist/db/schema.d.ts +990 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +259 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/db/types.d.ts +28 -0
- package/dist/db/types.d.ts.map +1 -0
- package/dist/db/types.js +11 -0
- package/dist/db/types.js.map +1 -0
- package/dist/gaps/detector.d.ts +67 -0
- package/dist/gaps/detector.d.ts.map +1 -0
- package/dist/gaps/detector.js +160 -0
- package/dist/gaps/detector.js.map +1 -0
- package/dist/gate/budget.d.ts +90 -0
- package/dist/gate/budget.d.ts.map +1 -0
- package/dist/gate/budget.js +145 -0
- package/dist/gate/budget.js.map +1 -0
- package/dist/ingest/chokidar.d.ts +33 -0
- package/dist/ingest/chokidar.d.ts.map +1 -0
- package/dist/ingest/chokidar.js +152 -0
- package/dist/ingest/chokidar.js.map +1 -0
- package/dist/ingest/ingester.d.ts +117 -0
- package/dist/ingest/ingester.d.ts.map +1 -0
- package/dist/ingest/ingester.js +312 -0
- package/dist/ingest/ingester.js.map +1 -0
- package/dist/ingest/manifest.d.ts +87 -0
- package/dist/ingest/manifest.d.ts.map +1 -0
- package/dist/ingest/manifest.js +223 -0
- package/dist/ingest/manifest.js.map +1 -0
- package/dist/ingest/memory-store.d.ts +55 -0
- package/dist/ingest/memory-store.d.ts.map +1 -0
- package/dist/ingest/memory-store.js +94 -0
- package/dist/ingest/memory-store.js.map +1 -0
- package/dist/ingest/parse/chunk.d.ts +15 -0
- package/dist/ingest/parse/chunk.d.ts.map +1 -0
- package/dist/ingest/parse/chunk.js +88 -0
- package/dist/ingest/parse/chunk.js.map +1 -0
- package/dist/ingest/parse/markdown.d.ts +64 -0
- package/dist/ingest/parse/markdown.d.ts.map +1 -0
- package/dist/ingest/parse/markdown.js +152 -0
- package/dist/ingest/parse/markdown.js.map +1 -0
- package/dist/ingest/queue.d.ts +21 -0
- package/dist/ingest/queue.d.ts.map +1 -0
- package/dist/ingest/queue.js +24 -0
- package/dist/ingest/queue.js.map +1 -0
- package/dist/ingest/source.d.ts +42 -0
- package/dist/ingest/source.d.ts.map +1 -0
- package/dist/ingest/source.js +19 -0
- package/dist/ingest/source.js.map +1 -0
- package/dist/mcp/envelope.d.ts +73 -0
- package/dist/mcp/envelope.d.ts.map +1 -0
- package/dist/mcp/envelope.js +46 -0
- package/dist/mcp/envelope.js.map +1 -0
- package/dist/mcp/tools/execute.d.ts +55 -0
- package/dist/mcp/tools/execute.d.ts.map +1 -0
- package/dist/mcp/tools/execute.js +232 -0
- package/dist/mcp/tools/execute.js.map +1 -0
- package/dist/mcp/tools/search.d.ts +53 -0
- package/dist/mcp/tools/search.d.ts.map +1 -0
- package/dist/mcp/tools/search.js +114 -0
- package/dist/mcp/tools/search.js.map +1 -0
- package/dist/observability/audit.d.ts +25 -0
- package/dist/observability/audit.d.ts.map +1 -0
- package/dist/observability/audit.js +38 -0
- package/dist/observability/audit.js.map +1 -0
- package/dist/observability/logger.d.ts +4 -0
- package/dist/observability/logger.d.ts.map +1 -0
- package/dist/observability/logger.js +56 -0
- package/dist/observability/logger.js.map +1 -0
- package/dist/observability/metrics.d.ts +38 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/metrics.js +64 -0
- package/dist/observability/metrics.js.map +1 -0
- package/dist/retrieval/embedder.d.ts +130 -0
- package/dist/retrieval/embedder.d.ts.map +1 -0
- package/dist/retrieval/embedder.js +278 -0
- package/dist/retrieval/embedder.js.map +1 -0
- package/dist/retrieval/fts.d.ts +42 -0
- package/dist/retrieval/fts.d.ts.map +1 -0
- package/dist/retrieval/fts.js +46 -0
- package/dist/retrieval/fts.js.map +1 -0
- package/dist/retrieval/hybrid.d.ts +43 -0
- package/dist/retrieval/hybrid.d.ts.map +1 -0
- package/dist/retrieval/hybrid.js +120 -0
- package/dist/retrieval/hybrid.js.map +1 -0
- package/dist/retrieval/vec.d.ts +39 -0
- package/dist/retrieval/vec.d.ts.map +1 -0
- package/dist/retrieval/vec.js +50 -0
- package/dist/retrieval/vec.js.map +1 -0
- package/dist/sandbox/bindings/budget.d.ts +10 -0
- package/dist/sandbox/bindings/budget.d.ts.map +1 -0
- package/dist/sandbox/bindings/budget.js +44 -0
- package/dist/sandbox/bindings/budget.js.map +1 -0
- package/dist/sandbox/bindings/install.d.ts +23 -0
- package/dist/sandbox/bindings/install.d.ts.map +1 -0
- package/dist/sandbox/bindings/install.js +15 -0
- package/dist/sandbox/bindings/install.js.map +1 -0
- package/dist/sandbox/bindings/kg.d.ts +29 -0
- package/dist/sandbox/bindings/kg.d.ts.map +1 -0
- package/dist/sandbox/bindings/kg.js +323 -0
- package/dist/sandbox/bindings/kg.js.map +1 -0
- package/dist/sandbox/bindings/logger.d.ts +11 -0
- package/dist/sandbox/bindings/logger.d.ts.map +1 -0
- package/dist/sandbox/bindings/logger.js +33 -0
- package/dist/sandbox/bindings/logger.js.map +1 -0
- package/dist/sandbox/bindings/write.d.ts +34 -0
- package/dist/sandbox/bindings/write.d.ts.map +1 -0
- package/dist/sandbox/bindings/write.js +195 -0
- package/dist/sandbox/bindings/write.js.map +1 -0
- package/dist/sandbox/executor.d.ts +68 -0
- package/dist/sandbox/executor.d.ts.map +1 -0
- package/dist/sandbox/executor.js +280 -0
- package/dist/sandbox/executor.js.map +1 -0
- package/dist/sandbox/helpers.d.ts +26 -0
- package/dist/sandbox/helpers.d.ts.map +1 -0
- package/dist/sandbox/helpers.js +131 -0
- package/dist/sandbox/helpers.js.map +1 -0
- package/dist/sandbox/pool.d.ts +63 -0
- package/dist/sandbox/pool.d.ts.map +1 -0
- package/dist/sandbox/pool.js +98 -0
- package/dist/sandbox/pool.js.map +1 -0
- package/dist/sandbox/vendored-codemode.d.ts +99 -0
- package/dist/sandbox/vendored-codemode.d.ts.map +1 -0
- package/dist/sandbox/vendored-codemode.js +471 -0
- package/dist/sandbox/vendored-codemode.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +74 -0
- package/dist/server.js.map +1 -0
- package/dist/spike.d.ts +15 -0
- package/dist/spike.d.ts.map +1 -0
- package/dist/spike.js +90 -0
- package/dist/spike.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,990 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KG-MCP Drizzle schema (presearch.md §2.3, CLAUDE.md §Database Rules).
|
|
3
|
+
*
|
|
4
|
+
* 8 logical tables + `kg_meta` for schema versioning. Two of the eight are
|
|
5
|
+
* virtual tables (`kg_chunks_fts`, `kg_chunks_vec`) that drizzle-kit can't
|
|
6
|
+
* model — they're created via raw SQL appended to the initial migration in
|
|
7
|
+
* src/db/migrations. The drizzle code below covers the 7 regular tables
|
|
8
|
+
* plus kg_meta.
|
|
9
|
+
*
|
|
10
|
+
* Invariants this schema MUST preserve:
|
|
11
|
+
*
|
|
12
|
+
* - `kg_nodes.id` is `sha1(scope + ':' + source_uri + ':' + section_path)`,
|
|
13
|
+
* set by the ingester (NOT auto-generated). Re-ingesting the same
|
|
14
|
+
* markdown produces identical ids — Phase 2's idempotent upsert relies
|
|
15
|
+
* on this. The DB never sees the hashing logic; it just stores the value
|
|
16
|
+
* and enforces uniqueness via the PK.
|
|
17
|
+
*
|
|
18
|
+
* - `kg_chunks.id` is `sha1(node_id + ':' + chunk_index)`, same idea.
|
|
19
|
+
*
|
|
20
|
+
* - `chunk_sha = sha1(chunk_text)` is the LOAD-BEARING field for the
|
|
21
|
+
* per-chunk skip-unchanged optimization (CLAUDE.md §Database Rules #3,
|
|
22
|
+
* Loop 6.5 A4). On a Pharos wiki-updater whole-file rewrite we look up
|
|
23
|
+
* the existing chunk_shas for the file's nodes and only re-embed chunks
|
|
24
|
+
* whose sha changed. Without this, every turn re-embeds 60 chunks ×
|
|
25
|
+
* ~50ms = 3s of blocking work that competes with the active coding LLM
|
|
26
|
+
* for Ollama. Do not remove this column.
|
|
27
|
+
*
|
|
28
|
+
* - `last_accessed_at` on `kg_nodes` exists for the Phase 5 personal-KG
|
|
29
|
+
* LRU eviction (Loop 6.5 A2). Phase 2 just stamps it on insert/update.
|
|
30
|
+
*
|
|
31
|
+
* - `source_sha` on `kg_nodes` is the file-level hash; staleness detection
|
|
32
|
+
* on the query path compares this against the current on-disk hash.
|
|
33
|
+
*
|
|
34
|
+
* - All FK relationships use `ON DELETE CASCADE` so deleting a node cleans
|
|
35
|
+
* up its chunks and edges in one statement (verified by schema test #5).
|
|
36
|
+
* Foreign keys are enforced via PRAGMA foreign_keys=ON, mandatory on
|
|
37
|
+
* every connection in client.ts.
|
|
38
|
+
*/
|
|
39
|
+
/**
|
|
40
|
+
* Tiny key/value table holding `schema_version`, `last_full_rebuild`, and
|
|
41
|
+
* any other one-off bookkeeping. Sized for handfuls of rows.
|
|
42
|
+
*
|
|
43
|
+
* Stamped at first openDb() call by client.ts if absent. The schema_version
|
|
44
|
+
* value lets us detect drift on startup and either run new migrations or
|
|
45
|
+
* (in the worst case for sqlite-vec breaking changes) drop + rebuild the
|
|
46
|
+
* vec virtual table from markdown.
|
|
47
|
+
*/
|
|
48
|
+
export declare const kgMeta: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
|
|
49
|
+
name: "kg_meta";
|
|
50
|
+
schema: undefined;
|
|
51
|
+
columns: {
|
|
52
|
+
key: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
53
|
+
name: "key";
|
|
54
|
+
tableName: "kg_meta";
|
|
55
|
+
dataType: "string";
|
|
56
|
+
columnType: "SQLiteText";
|
|
57
|
+
data: string;
|
|
58
|
+
driverParam: string;
|
|
59
|
+
notNull: true;
|
|
60
|
+
hasDefault: false;
|
|
61
|
+
isPrimaryKey: true;
|
|
62
|
+
isAutoincrement: false;
|
|
63
|
+
hasRuntimeDefault: false;
|
|
64
|
+
enumValues: [string, ...string[]];
|
|
65
|
+
baseColumn: never;
|
|
66
|
+
identity: undefined;
|
|
67
|
+
generated: undefined;
|
|
68
|
+
}, {}, {
|
|
69
|
+
length: number | undefined;
|
|
70
|
+
}>;
|
|
71
|
+
value: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
72
|
+
name: "value";
|
|
73
|
+
tableName: "kg_meta";
|
|
74
|
+
dataType: "string";
|
|
75
|
+
columnType: "SQLiteText";
|
|
76
|
+
data: string;
|
|
77
|
+
driverParam: string;
|
|
78
|
+
notNull: false;
|
|
79
|
+
hasDefault: false;
|
|
80
|
+
isPrimaryKey: false;
|
|
81
|
+
isAutoincrement: false;
|
|
82
|
+
hasRuntimeDefault: false;
|
|
83
|
+
enumValues: [string, ...string[]];
|
|
84
|
+
baseColumn: never;
|
|
85
|
+
identity: undefined;
|
|
86
|
+
generated: undefined;
|
|
87
|
+
}, {}, {
|
|
88
|
+
length: number | undefined;
|
|
89
|
+
}>;
|
|
90
|
+
};
|
|
91
|
+
dialect: "sqlite";
|
|
92
|
+
}>;
|
|
93
|
+
/**
|
|
94
|
+
* One row per markdown section. The "primary unit" of the KG — chunks belong
|
|
95
|
+
* to nodes, edges connect nodes.
|
|
96
|
+
*
|
|
97
|
+
* `kind` is open-ended for forward compatibility:
|
|
98
|
+
* - `'section'` — the only kind Phase 2 writes; one per ATX heading
|
|
99
|
+
* - `'entity' | 'concept' | 'decision' | 'log_entry' | 'gap'` — Phase 4-6
|
|
100
|
+
*
|
|
101
|
+
* `section_path` is the ATX heading hierarchy joined by ` / ` (e.g.
|
|
102
|
+
* `"Authentication / Login flow"` for an `## Login flow` under `# Authentication`).
|
|
103
|
+
* Empty string for top-of-file content above any heading.
|
|
104
|
+
*
|
|
105
|
+
* `content` stores the full section markdown (heading + body). Chunks are
|
|
106
|
+
* derived from this and stored separately in kg_chunks. We keep both because
|
|
107
|
+
* `kg_execute` callers may want the whole section (`kg.get(node_id)`) instead
|
|
108
|
+
* of paragraph-sized chunks.
|
|
109
|
+
*/
|
|
110
|
+
export declare const kgNodes: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
|
|
111
|
+
name: "kg_nodes";
|
|
112
|
+
schema: undefined;
|
|
113
|
+
columns: {
|
|
114
|
+
id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
115
|
+
name: "id";
|
|
116
|
+
tableName: "kg_nodes";
|
|
117
|
+
dataType: "string";
|
|
118
|
+
columnType: "SQLiteText";
|
|
119
|
+
data: string;
|
|
120
|
+
driverParam: string;
|
|
121
|
+
notNull: true;
|
|
122
|
+
hasDefault: false;
|
|
123
|
+
isPrimaryKey: true;
|
|
124
|
+
isAutoincrement: false;
|
|
125
|
+
hasRuntimeDefault: false;
|
|
126
|
+
enumValues: [string, ...string[]];
|
|
127
|
+
baseColumn: never;
|
|
128
|
+
identity: undefined;
|
|
129
|
+
generated: undefined;
|
|
130
|
+
}, {}, {
|
|
131
|
+
length: number | undefined;
|
|
132
|
+
}>;
|
|
133
|
+
scope: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
134
|
+
name: "scope";
|
|
135
|
+
tableName: "kg_nodes";
|
|
136
|
+
dataType: "string";
|
|
137
|
+
columnType: "SQLiteText";
|
|
138
|
+
data: string;
|
|
139
|
+
driverParam: string;
|
|
140
|
+
notNull: true;
|
|
141
|
+
hasDefault: false;
|
|
142
|
+
isPrimaryKey: false;
|
|
143
|
+
isAutoincrement: false;
|
|
144
|
+
hasRuntimeDefault: false;
|
|
145
|
+
enumValues: [string, ...string[]];
|
|
146
|
+
baseColumn: never;
|
|
147
|
+
identity: undefined;
|
|
148
|
+
generated: undefined;
|
|
149
|
+
}, {}, {
|
|
150
|
+
length: number | undefined;
|
|
151
|
+
}>;
|
|
152
|
+
sourceUri: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
153
|
+
name: "source_uri";
|
|
154
|
+
tableName: "kg_nodes";
|
|
155
|
+
dataType: "string";
|
|
156
|
+
columnType: "SQLiteText";
|
|
157
|
+
data: string;
|
|
158
|
+
driverParam: string;
|
|
159
|
+
notNull: true;
|
|
160
|
+
hasDefault: false;
|
|
161
|
+
isPrimaryKey: false;
|
|
162
|
+
isAutoincrement: false;
|
|
163
|
+
hasRuntimeDefault: false;
|
|
164
|
+
enumValues: [string, ...string[]];
|
|
165
|
+
baseColumn: never;
|
|
166
|
+
identity: undefined;
|
|
167
|
+
generated: undefined;
|
|
168
|
+
}, {}, {
|
|
169
|
+
length: number | undefined;
|
|
170
|
+
}>;
|
|
171
|
+
sectionPath: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
172
|
+
name: "section_path";
|
|
173
|
+
tableName: "kg_nodes";
|
|
174
|
+
dataType: "string";
|
|
175
|
+
columnType: "SQLiteText";
|
|
176
|
+
data: string;
|
|
177
|
+
driverParam: string;
|
|
178
|
+
notNull: true;
|
|
179
|
+
hasDefault: false;
|
|
180
|
+
isPrimaryKey: false;
|
|
181
|
+
isAutoincrement: false;
|
|
182
|
+
hasRuntimeDefault: false;
|
|
183
|
+
enumValues: [string, ...string[]];
|
|
184
|
+
baseColumn: never;
|
|
185
|
+
identity: undefined;
|
|
186
|
+
generated: undefined;
|
|
187
|
+
}, {}, {
|
|
188
|
+
length: number | undefined;
|
|
189
|
+
}>;
|
|
190
|
+
kind: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
191
|
+
name: "kind";
|
|
192
|
+
tableName: "kg_nodes";
|
|
193
|
+
dataType: "string";
|
|
194
|
+
columnType: "SQLiteText";
|
|
195
|
+
data: string;
|
|
196
|
+
driverParam: string;
|
|
197
|
+
notNull: true;
|
|
198
|
+
hasDefault: true;
|
|
199
|
+
isPrimaryKey: false;
|
|
200
|
+
isAutoincrement: false;
|
|
201
|
+
hasRuntimeDefault: false;
|
|
202
|
+
enumValues: [string, ...string[]];
|
|
203
|
+
baseColumn: never;
|
|
204
|
+
identity: undefined;
|
|
205
|
+
generated: undefined;
|
|
206
|
+
}, {}, {
|
|
207
|
+
length: number | undefined;
|
|
208
|
+
}>;
|
|
209
|
+
title: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
210
|
+
name: "title";
|
|
211
|
+
tableName: "kg_nodes";
|
|
212
|
+
dataType: "string";
|
|
213
|
+
columnType: "SQLiteText";
|
|
214
|
+
data: string;
|
|
215
|
+
driverParam: string;
|
|
216
|
+
notNull: false;
|
|
217
|
+
hasDefault: false;
|
|
218
|
+
isPrimaryKey: false;
|
|
219
|
+
isAutoincrement: false;
|
|
220
|
+
hasRuntimeDefault: false;
|
|
221
|
+
enumValues: [string, ...string[]];
|
|
222
|
+
baseColumn: never;
|
|
223
|
+
identity: undefined;
|
|
224
|
+
generated: undefined;
|
|
225
|
+
}, {}, {
|
|
226
|
+
length: number | undefined;
|
|
227
|
+
}>;
|
|
228
|
+
content: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
229
|
+
name: "content";
|
|
230
|
+
tableName: "kg_nodes";
|
|
231
|
+
dataType: "string";
|
|
232
|
+
columnType: "SQLiteText";
|
|
233
|
+
data: string;
|
|
234
|
+
driverParam: string;
|
|
235
|
+
notNull: true;
|
|
236
|
+
hasDefault: false;
|
|
237
|
+
isPrimaryKey: false;
|
|
238
|
+
isAutoincrement: false;
|
|
239
|
+
hasRuntimeDefault: false;
|
|
240
|
+
enumValues: [string, ...string[]];
|
|
241
|
+
baseColumn: never;
|
|
242
|
+
identity: undefined;
|
|
243
|
+
generated: undefined;
|
|
244
|
+
}, {}, {
|
|
245
|
+
length: number | undefined;
|
|
246
|
+
}>;
|
|
247
|
+
sourceSha: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
248
|
+
name: "source_sha";
|
|
249
|
+
tableName: "kg_nodes";
|
|
250
|
+
dataType: "string";
|
|
251
|
+
columnType: "SQLiteText";
|
|
252
|
+
data: string;
|
|
253
|
+
driverParam: string;
|
|
254
|
+
notNull: true;
|
|
255
|
+
hasDefault: false;
|
|
256
|
+
isPrimaryKey: false;
|
|
257
|
+
isAutoincrement: false;
|
|
258
|
+
hasRuntimeDefault: false;
|
|
259
|
+
enumValues: [string, ...string[]];
|
|
260
|
+
baseColumn: never;
|
|
261
|
+
identity: undefined;
|
|
262
|
+
generated: undefined;
|
|
263
|
+
}, {}, {
|
|
264
|
+
length: number | undefined;
|
|
265
|
+
}>;
|
|
266
|
+
tokenCount: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
267
|
+
name: "token_count";
|
|
268
|
+
tableName: "kg_nodes";
|
|
269
|
+
dataType: "number";
|
|
270
|
+
columnType: "SQLiteInteger";
|
|
271
|
+
data: number;
|
|
272
|
+
driverParam: number;
|
|
273
|
+
notNull: true;
|
|
274
|
+
hasDefault: false;
|
|
275
|
+
isPrimaryKey: false;
|
|
276
|
+
isAutoincrement: false;
|
|
277
|
+
hasRuntimeDefault: false;
|
|
278
|
+
enumValues: undefined;
|
|
279
|
+
baseColumn: never;
|
|
280
|
+
identity: undefined;
|
|
281
|
+
generated: undefined;
|
|
282
|
+
}, {}, {}>;
|
|
283
|
+
confidence: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
284
|
+
name: "confidence";
|
|
285
|
+
tableName: "kg_nodes";
|
|
286
|
+
dataType: "string";
|
|
287
|
+
columnType: "SQLiteText";
|
|
288
|
+
data: string;
|
|
289
|
+
driverParam: string;
|
|
290
|
+
notNull: true;
|
|
291
|
+
hasDefault: true;
|
|
292
|
+
isPrimaryKey: false;
|
|
293
|
+
isAutoincrement: false;
|
|
294
|
+
hasRuntimeDefault: false;
|
|
295
|
+
enumValues: [string, ...string[]];
|
|
296
|
+
baseColumn: never;
|
|
297
|
+
identity: undefined;
|
|
298
|
+
generated: undefined;
|
|
299
|
+
}, {}, {
|
|
300
|
+
length: number | undefined;
|
|
301
|
+
}>;
|
|
302
|
+
createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
303
|
+
name: "created_at";
|
|
304
|
+
tableName: "kg_nodes";
|
|
305
|
+
dataType: "number";
|
|
306
|
+
columnType: "SQLiteInteger";
|
|
307
|
+
data: number;
|
|
308
|
+
driverParam: number;
|
|
309
|
+
notNull: true;
|
|
310
|
+
hasDefault: false;
|
|
311
|
+
isPrimaryKey: false;
|
|
312
|
+
isAutoincrement: false;
|
|
313
|
+
hasRuntimeDefault: false;
|
|
314
|
+
enumValues: undefined;
|
|
315
|
+
baseColumn: never;
|
|
316
|
+
identity: undefined;
|
|
317
|
+
generated: undefined;
|
|
318
|
+
}, {}, {}>;
|
|
319
|
+
updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
320
|
+
name: "updated_at";
|
|
321
|
+
tableName: "kg_nodes";
|
|
322
|
+
dataType: "number";
|
|
323
|
+
columnType: "SQLiteInteger";
|
|
324
|
+
data: number;
|
|
325
|
+
driverParam: number;
|
|
326
|
+
notNull: true;
|
|
327
|
+
hasDefault: false;
|
|
328
|
+
isPrimaryKey: false;
|
|
329
|
+
isAutoincrement: false;
|
|
330
|
+
hasRuntimeDefault: false;
|
|
331
|
+
enumValues: undefined;
|
|
332
|
+
baseColumn: never;
|
|
333
|
+
identity: undefined;
|
|
334
|
+
generated: undefined;
|
|
335
|
+
}, {}, {}>;
|
|
336
|
+
lastAccessedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
337
|
+
name: "last_accessed_at";
|
|
338
|
+
tableName: "kg_nodes";
|
|
339
|
+
dataType: "number";
|
|
340
|
+
columnType: "SQLiteInteger";
|
|
341
|
+
data: number;
|
|
342
|
+
driverParam: number;
|
|
343
|
+
notNull: true;
|
|
344
|
+
hasDefault: false;
|
|
345
|
+
isPrimaryKey: false;
|
|
346
|
+
isAutoincrement: false;
|
|
347
|
+
hasRuntimeDefault: false;
|
|
348
|
+
enumValues: undefined;
|
|
349
|
+
baseColumn: never;
|
|
350
|
+
identity: undefined;
|
|
351
|
+
generated: undefined;
|
|
352
|
+
}, {}, {}>;
|
|
353
|
+
};
|
|
354
|
+
dialect: "sqlite";
|
|
355
|
+
}>;
|
|
356
|
+
/**
|
|
357
|
+
* Directed edges between nodes. Composite primary key on
|
|
358
|
+
* `(src_id, dst_id, edge_kind)` so the same pair can have multiple edge
|
|
359
|
+
* kinds (e.g. one node both `cites` and `supersedes` another).
|
|
360
|
+
*
|
|
361
|
+
* Phase 2 doesn't populate this table — Phase 4 extracts wikilinks during
|
|
362
|
+
* markdown parsing. The table exists now so the migration is complete and
|
|
363
|
+
* Phase 4 doesn't have to add it as a separate migration.
|
|
364
|
+
*/
|
|
365
|
+
export declare const kgEdges: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
|
|
366
|
+
name: "kg_edges";
|
|
367
|
+
schema: undefined;
|
|
368
|
+
columns: {
|
|
369
|
+
srcId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
370
|
+
name: "src_id";
|
|
371
|
+
tableName: "kg_edges";
|
|
372
|
+
dataType: "string";
|
|
373
|
+
columnType: "SQLiteText";
|
|
374
|
+
data: string;
|
|
375
|
+
driverParam: string;
|
|
376
|
+
notNull: true;
|
|
377
|
+
hasDefault: false;
|
|
378
|
+
isPrimaryKey: false;
|
|
379
|
+
isAutoincrement: false;
|
|
380
|
+
hasRuntimeDefault: false;
|
|
381
|
+
enumValues: [string, ...string[]];
|
|
382
|
+
baseColumn: never;
|
|
383
|
+
identity: undefined;
|
|
384
|
+
generated: undefined;
|
|
385
|
+
}, {}, {
|
|
386
|
+
length: number | undefined;
|
|
387
|
+
}>;
|
|
388
|
+
dstId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
389
|
+
name: "dst_id";
|
|
390
|
+
tableName: "kg_edges";
|
|
391
|
+
dataType: "string";
|
|
392
|
+
columnType: "SQLiteText";
|
|
393
|
+
data: string;
|
|
394
|
+
driverParam: string;
|
|
395
|
+
notNull: true;
|
|
396
|
+
hasDefault: false;
|
|
397
|
+
isPrimaryKey: false;
|
|
398
|
+
isAutoincrement: false;
|
|
399
|
+
hasRuntimeDefault: false;
|
|
400
|
+
enumValues: [string, ...string[]];
|
|
401
|
+
baseColumn: never;
|
|
402
|
+
identity: undefined;
|
|
403
|
+
generated: undefined;
|
|
404
|
+
}, {}, {
|
|
405
|
+
length: number | undefined;
|
|
406
|
+
}>;
|
|
407
|
+
edgeKind: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
408
|
+
name: "edge_kind";
|
|
409
|
+
tableName: "kg_edges";
|
|
410
|
+
dataType: "string";
|
|
411
|
+
columnType: "SQLiteText";
|
|
412
|
+
data: string;
|
|
413
|
+
driverParam: string;
|
|
414
|
+
notNull: true;
|
|
415
|
+
hasDefault: false;
|
|
416
|
+
isPrimaryKey: false;
|
|
417
|
+
isAutoincrement: false;
|
|
418
|
+
hasRuntimeDefault: false;
|
|
419
|
+
enumValues: [string, ...string[]];
|
|
420
|
+
baseColumn: never;
|
|
421
|
+
identity: undefined;
|
|
422
|
+
generated: undefined;
|
|
423
|
+
}, {}, {
|
|
424
|
+
length: number | undefined;
|
|
425
|
+
}>;
|
|
426
|
+
};
|
|
427
|
+
dialect: "sqlite";
|
|
428
|
+
}>;
|
|
429
|
+
/**
|
|
430
|
+
* One row per ~500-token chunk derived from a node's `content`. The
|
|
431
|
+
* chunker (src/ingest/parse/chunk.ts) splits on paragraph boundaries and
|
|
432
|
+
* accumulates until adding the next paragraph would exceed `target_tokens`.
|
|
433
|
+
*
|
|
434
|
+
* The implicit SQLite `rowid` (auto-assigned for tables without
|
|
435
|
+
* INTEGER PRIMARY KEY) is what FTS5 and sqlite-vec join on:
|
|
436
|
+
* - `kg_chunks_fts` is `content='kg_chunks', content_rowid='rowid'`
|
|
437
|
+
* - `kg_chunks_vec.rowid` matches `kg_chunks.rowid`
|
|
438
|
+
*
|
|
439
|
+
* `chunk_sha = sha1(text)` is the per-chunk skip-unchanged key. On a
|
|
440
|
+
* file rewrite, the ingester compares each new chunk's chunk_sha against
|
|
441
|
+
* the existing chunk_shas for the file's nodes; matching chunks reuse
|
|
442
|
+
* the existing embedding (no embedder call), only changed chunks get
|
|
443
|
+
* re-embedded. This is the load-bearing optimization for Pharos's
|
|
444
|
+
* whole-file-rewrite-per-turn pattern (CLAUDE.md §Database Rules #3).
|
|
445
|
+
*/
|
|
446
|
+
export declare const kgChunks: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
|
|
447
|
+
name: "kg_chunks";
|
|
448
|
+
schema: undefined;
|
|
449
|
+
columns: {
|
|
450
|
+
id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
451
|
+
name: "id";
|
|
452
|
+
tableName: "kg_chunks";
|
|
453
|
+
dataType: "string";
|
|
454
|
+
columnType: "SQLiteText";
|
|
455
|
+
data: string;
|
|
456
|
+
driverParam: string;
|
|
457
|
+
notNull: true;
|
|
458
|
+
hasDefault: false;
|
|
459
|
+
isPrimaryKey: true;
|
|
460
|
+
isAutoincrement: false;
|
|
461
|
+
hasRuntimeDefault: false;
|
|
462
|
+
enumValues: [string, ...string[]];
|
|
463
|
+
baseColumn: never;
|
|
464
|
+
identity: undefined;
|
|
465
|
+
generated: undefined;
|
|
466
|
+
}, {}, {
|
|
467
|
+
length: number | undefined;
|
|
468
|
+
}>;
|
|
469
|
+
nodeId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
470
|
+
name: "node_id";
|
|
471
|
+
tableName: "kg_chunks";
|
|
472
|
+
dataType: "string";
|
|
473
|
+
columnType: "SQLiteText";
|
|
474
|
+
data: string;
|
|
475
|
+
driverParam: string;
|
|
476
|
+
notNull: true;
|
|
477
|
+
hasDefault: false;
|
|
478
|
+
isPrimaryKey: false;
|
|
479
|
+
isAutoincrement: false;
|
|
480
|
+
hasRuntimeDefault: false;
|
|
481
|
+
enumValues: [string, ...string[]];
|
|
482
|
+
baseColumn: never;
|
|
483
|
+
identity: undefined;
|
|
484
|
+
generated: undefined;
|
|
485
|
+
}, {}, {
|
|
486
|
+
length: number | undefined;
|
|
487
|
+
}>;
|
|
488
|
+
chunkIndex: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
489
|
+
name: "chunk_index";
|
|
490
|
+
tableName: "kg_chunks";
|
|
491
|
+
dataType: "number";
|
|
492
|
+
columnType: "SQLiteInteger";
|
|
493
|
+
data: number;
|
|
494
|
+
driverParam: number;
|
|
495
|
+
notNull: true;
|
|
496
|
+
hasDefault: false;
|
|
497
|
+
isPrimaryKey: false;
|
|
498
|
+
isAutoincrement: false;
|
|
499
|
+
hasRuntimeDefault: false;
|
|
500
|
+
enumValues: undefined;
|
|
501
|
+
baseColumn: never;
|
|
502
|
+
identity: undefined;
|
|
503
|
+
generated: undefined;
|
|
504
|
+
}, {}, {}>;
|
|
505
|
+
text: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
506
|
+
name: "text";
|
|
507
|
+
tableName: "kg_chunks";
|
|
508
|
+
dataType: "string";
|
|
509
|
+
columnType: "SQLiteText";
|
|
510
|
+
data: string;
|
|
511
|
+
driverParam: string;
|
|
512
|
+
notNull: true;
|
|
513
|
+
hasDefault: false;
|
|
514
|
+
isPrimaryKey: false;
|
|
515
|
+
isAutoincrement: false;
|
|
516
|
+
hasRuntimeDefault: false;
|
|
517
|
+
enumValues: [string, ...string[]];
|
|
518
|
+
baseColumn: never;
|
|
519
|
+
identity: undefined;
|
|
520
|
+
generated: undefined;
|
|
521
|
+
}, {}, {
|
|
522
|
+
length: number | undefined;
|
|
523
|
+
}>;
|
|
524
|
+
chunkSha: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
525
|
+
name: "chunk_sha";
|
|
526
|
+
tableName: "kg_chunks";
|
|
527
|
+
dataType: "string";
|
|
528
|
+
columnType: "SQLiteText";
|
|
529
|
+
data: string;
|
|
530
|
+
driverParam: string;
|
|
531
|
+
notNull: true;
|
|
532
|
+
hasDefault: false;
|
|
533
|
+
isPrimaryKey: false;
|
|
534
|
+
isAutoincrement: false;
|
|
535
|
+
hasRuntimeDefault: false;
|
|
536
|
+
enumValues: [string, ...string[]];
|
|
537
|
+
baseColumn: never;
|
|
538
|
+
identity: undefined;
|
|
539
|
+
generated: undefined;
|
|
540
|
+
}, {}, {
|
|
541
|
+
length: number | undefined;
|
|
542
|
+
}>;
|
|
543
|
+
tokenCount: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
544
|
+
name: "token_count";
|
|
545
|
+
tableName: "kg_chunks";
|
|
546
|
+
dataType: "number";
|
|
547
|
+
columnType: "SQLiteInteger";
|
|
548
|
+
data: number;
|
|
549
|
+
driverParam: number;
|
|
550
|
+
notNull: true;
|
|
551
|
+
hasDefault: false;
|
|
552
|
+
isPrimaryKey: false;
|
|
553
|
+
isAutoincrement: false;
|
|
554
|
+
hasRuntimeDefault: false;
|
|
555
|
+
enumValues: undefined;
|
|
556
|
+
baseColumn: never;
|
|
557
|
+
identity: undefined;
|
|
558
|
+
generated: undefined;
|
|
559
|
+
}, {}, {}>;
|
|
560
|
+
createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
561
|
+
name: "created_at";
|
|
562
|
+
tableName: "kg_chunks";
|
|
563
|
+
dataType: "number";
|
|
564
|
+
columnType: "SQLiteInteger";
|
|
565
|
+
data: number;
|
|
566
|
+
driverParam: number;
|
|
567
|
+
notNull: true;
|
|
568
|
+
hasDefault: false;
|
|
569
|
+
isPrimaryKey: false;
|
|
570
|
+
isAutoincrement: false;
|
|
571
|
+
hasRuntimeDefault: false;
|
|
572
|
+
enumValues: undefined;
|
|
573
|
+
baseColumn: never;
|
|
574
|
+
identity: undefined;
|
|
575
|
+
generated: undefined;
|
|
576
|
+
}, {}, {}>;
|
|
577
|
+
};
|
|
578
|
+
dialect: "sqlite";
|
|
579
|
+
}>;
|
|
580
|
+
/**
|
|
581
|
+
* Append-only event stream. Phase 2 writes:
|
|
582
|
+
* - `'ingest:done'` — successful file ingest
|
|
583
|
+
* - `'ingest:error'` — failed file ingest
|
|
584
|
+
* - `'rebuild:start' | 'rebuild:done'` — full-rebuild markers
|
|
585
|
+
*
|
|
586
|
+
* `payload` is opaque JSON shaped per `kind`. The reader is the LLM via
|
|
587
|
+
* `kg.log.recent(n, opts)` in Phase 4+; Phase 2 just appends.
|
|
588
|
+
*/
|
|
589
|
+
export declare const kgLog: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
|
|
590
|
+
name: "kg_log";
|
|
591
|
+
schema: undefined;
|
|
592
|
+
columns: {
|
|
593
|
+
id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
594
|
+
name: "id";
|
|
595
|
+
tableName: "kg_log";
|
|
596
|
+
dataType: "number";
|
|
597
|
+
columnType: "SQLiteInteger";
|
|
598
|
+
data: number;
|
|
599
|
+
driverParam: number;
|
|
600
|
+
notNull: true;
|
|
601
|
+
hasDefault: true;
|
|
602
|
+
isPrimaryKey: true;
|
|
603
|
+
isAutoincrement: false;
|
|
604
|
+
hasRuntimeDefault: false;
|
|
605
|
+
enumValues: undefined;
|
|
606
|
+
baseColumn: never;
|
|
607
|
+
identity: undefined;
|
|
608
|
+
generated: undefined;
|
|
609
|
+
}, {}, {}>;
|
|
610
|
+
ts: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
611
|
+
name: "ts";
|
|
612
|
+
tableName: "kg_log";
|
|
613
|
+
dataType: "number";
|
|
614
|
+
columnType: "SQLiteInteger";
|
|
615
|
+
data: number;
|
|
616
|
+
driverParam: number;
|
|
617
|
+
notNull: true;
|
|
618
|
+
hasDefault: false;
|
|
619
|
+
isPrimaryKey: false;
|
|
620
|
+
isAutoincrement: false;
|
|
621
|
+
hasRuntimeDefault: false;
|
|
622
|
+
enumValues: undefined;
|
|
623
|
+
baseColumn: never;
|
|
624
|
+
identity: undefined;
|
|
625
|
+
generated: undefined;
|
|
626
|
+
}, {}, {}>;
|
|
627
|
+
scope: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
628
|
+
name: "scope";
|
|
629
|
+
tableName: "kg_log";
|
|
630
|
+
dataType: "string";
|
|
631
|
+
columnType: "SQLiteText";
|
|
632
|
+
data: string;
|
|
633
|
+
driverParam: string;
|
|
634
|
+
notNull: true;
|
|
635
|
+
hasDefault: false;
|
|
636
|
+
isPrimaryKey: false;
|
|
637
|
+
isAutoincrement: false;
|
|
638
|
+
hasRuntimeDefault: false;
|
|
639
|
+
enumValues: [string, ...string[]];
|
|
640
|
+
baseColumn: never;
|
|
641
|
+
identity: undefined;
|
|
642
|
+
generated: undefined;
|
|
643
|
+
}, {}, {
|
|
644
|
+
length: number | undefined;
|
|
645
|
+
}>;
|
|
646
|
+
kind: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
647
|
+
name: "kind";
|
|
648
|
+
tableName: "kg_log";
|
|
649
|
+
dataType: "string";
|
|
650
|
+
columnType: "SQLiteText";
|
|
651
|
+
data: string;
|
|
652
|
+
driverParam: string;
|
|
653
|
+
notNull: true;
|
|
654
|
+
hasDefault: false;
|
|
655
|
+
isPrimaryKey: false;
|
|
656
|
+
isAutoincrement: false;
|
|
657
|
+
hasRuntimeDefault: false;
|
|
658
|
+
enumValues: [string, ...string[]];
|
|
659
|
+
baseColumn: never;
|
|
660
|
+
identity: undefined;
|
|
661
|
+
generated: undefined;
|
|
662
|
+
}, {}, {
|
|
663
|
+
length: number | undefined;
|
|
664
|
+
}>;
|
|
665
|
+
sourceUri: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
666
|
+
name: "source_uri";
|
|
667
|
+
tableName: "kg_log";
|
|
668
|
+
dataType: "string";
|
|
669
|
+
columnType: "SQLiteText";
|
|
670
|
+
data: string;
|
|
671
|
+
driverParam: string;
|
|
672
|
+
notNull: false;
|
|
673
|
+
hasDefault: false;
|
|
674
|
+
isPrimaryKey: false;
|
|
675
|
+
isAutoincrement: false;
|
|
676
|
+
hasRuntimeDefault: false;
|
|
677
|
+
enumValues: [string, ...string[]];
|
|
678
|
+
baseColumn: never;
|
|
679
|
+
identity: undefined;
|
|
680
|
+
generated: undefined;
|
|
681
|
+
}, {}, {
|
|
682
|
+
length: number | undefined;
|
|
683
|
+
}>;
|
|
684
|
+
payload: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
685
|
+
name: "payload";
|
|
686
|
+
tableName: "kg_log";
|
|
687
|
+
dataType: "string";
|
|
688
|
+
columnType: "SQLiteText";
|
|
689
|
+
data: string;
|
|
690
|
+
driverParam: string;
|
|
691
|
+
notNull: false;
|
|
692
|
+
hasDefault: false;
|
|
693
|
+
isPrimaryKey: false;
|
|
694
|
+
isAutoincrement: false;
|
|
695
|
+
hasRuntimeDefault: false;
|
|
696
|
+
enumValues: [string, ...string[]];
|
|
697
|
+
baseColumn: never;
|
|
698
|
+
identity: undefined;
|
|
699
|
+
generated: undefined;
|
|
700
|
+
}, {}, {
|
|
701
|
+
length: number | undefined;
|
|
702
|
+
}>;
|
|
703
|
+
};
|
|
704
|
+
dialect: "sqlite";
|
|
705
|
+
}>;
|
|
706
|
+
/**
|
|
707
|
+
* Concept gaps detected by the Phase 6 gap-detection sub-agent. Phase 2
|
|
708
|
+
* creates the table; Phase 6 wires the writes.
|
|
709
|
+
*
|
|
710
|
+
* `mentions_count` lets the dashboard prioritize gaps that appear across
|
|
711
|
+
* multiple turns. `resolved_at` is set when a gap is closed (either by
|
|
712
|
+
* the LLM writing about the topic or by a manual dismissal).
|
|
713
|
+
*/
|
|
714
|
+
export declare const kgGaps: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
|
|
715
|
+
name: "kg_gaps";
|
|
716
|
+
schema: undefined;
|
|
717
|
+
columns: {
|
|
718
|
+
id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
719
|
+
name: "id";
|
|
720
|
+
tableName: "kg_gaps";
|
|
721
|
+
dataType: "number";
|
|
722
|
+
columnType: "SQLiteInteger";
|
|
723
|
+
data: number;
|
|
724
|
+
driverParam: number;
|
|
725
|
+
notNull: true;
|
|
726
|
+
hasDefault: true;
|
|
727
|
+
isPrimaryKey: true;
|
|
728
|
+
isAutoincrement: false;
|
|
729
|
+
hasRuntimeDefault: false;
|
|
730
|
+
enumValues: undefined;
|
|
731
|
+
baseColumn: never;
|
|
732
|
+
identity: undefined;
|
|
733
|
+
generated: undefined;
|
|
734
|
+
}, {}, {}>;
|
|
735
|
+
scope: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
736
|
+
name: "scope";
|
|
737
|
+
tableName: "kg_gaps";
|
|
738
|
+
dataType: "string";
|
|
739
|
+
columnType: "SQLiteText";
|
|
740
|
+
data: string;
|
|
741
|
+
driverParam: string;
|
|
742
|
+
notNull: true;
|
|
743
|
+
hasDefault: false;
|
|
744
|
+
isPrimaryKey: false;
|
|
745
|
+
isAutoincrement: false;
|
|
746
|
+
hasRuntimeDefault: false;
|
|
747
|
+
enumValues: [string, ...string[]];
|
|
748
|
+
baseColumn: never;
|
|
749
|
+
identity: undefined;
|
|
750
|
+
generated: undefined;
|
|
751
|
+
}, {}, {
|
|
752
|
+
length: number | undefined;
|
|
753
|
+
}>;
|
|
754
|
+
topic: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
755
|
+
name: "topic";
|
|
756
|
+
tableName: "kg_gaps";
|
|
757
|
+
dataType: "string";
|
|
758
|
+
columnType: "SQLiteText";
|
|
759
|
+
data: string;
|
|
760
|
+
driverParam: string;
|
|
761
|
+
notNull: true;
|
|
762
|
+
hasDefault: false;
|
|
763
|
+
isPrimaryKey: false;
|
|
764
|
+
isAutoincrement: false;
|
|
765
|
+
hasRuntimeDefault: false;
|
|
766
|
+
enumValues: [string, ...string[]];
|
|
767
|
+
baseColumn: never;
|
|
768
|
+
identity: undefined;
|
|
769
|
+
generated: undefined;
|
|
770
|
+
}, {}, {
|
|
771
|
+
length: number | undefined;
|
|
772
|
+
}>;
|
|
773
|
+
firstSeenAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
774
|
+
name: "first_seen_at";
|
|
775
|
+
tableName: "kg_gaps";
|
|
776
|
+
dataType: "number";
|
|
777
|
+
columnType: "SQLiteInteger";
|
|
778
|
+
data: number;
|
|
779
|
+
driverParam: number;
|
|
780
|
+
notNull: true;
|
|
781
|
+
hasDefault: false;
|
|
782
|
+
isPrimaryKey: false;
|
|
783
|
+
isAutoincrement: false;
|
|
784
|
+
hasRuntimeDefault: false;
|
|
785
|
+
enumValues: undefined;
|
|
786
|
+
baseColumn: never;
|
|
787
|
+
identity: undefined;
|
|
788
|
+
generated: undefined;
|
|
789
|
+
}, {}, {}>;
|
|
790
|
+
mentionsCount: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
791
|
+
name: "mentions_count";
|
|
792
|
+
tableName: "kg_gaps";
|
|
793
|
+
dataType: "number";
|
|
794
|
+
columnType: "SQLiteInteger";
|
|
795
|
+
data: number;
|
|
796
|
+
driverParam: number;
|
|
797
|
+
notNull: true;
|
|
798
|
+
hasDefault: true;
|
|
799
|
+
isPrimaryKey: false;
|
|
800
|
+
isAutoincrement: false;
|
|
801
|
+
hasRuntimeDefault: false;
|
|
802
|
+
enumValues: undefined;
|
|
803
|
+
baseColumn: never;
|
|
804
|
+
identity: undefined;
|
|
805
|
+
generated: undefined;
|
|
806
|
+
}, {}, {}>;
|
|
807
|
+
resolvedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
808
|
+
name: "resolved_at";
|
|
809
|
+
tableName: "kg_gaps";
|
|
810
|
+
dataType: "number";
|
|
811
|
+
columnType: "SQLiteInteger";
|
|
812
|
+
data: number;
|
|
813
|
+
driverParam: number;
|
|
814
|
+
notNull: false;
|
|
815
|
+
hasDefault: false;
|
|
816
|
+
isPrimaryKey: false;
|
|
817
|
+
isAutoincrement: false;
|
|
818
|
+
hasRuntimeDefault: false;
|
|
819
|
+
enumValues: undefined;
|
|
820
|
+
baseColumn: never;
|
|
821
|
+
identity: undefined;
|
|
822
|
+
generated: undefined;
|
|
823
|
+
}, {}, {}>;
|
|
824
|
+
};
|
|
825
|
+
dialect: "sqlite";
|
|
826
|
+
}>;
|
|
827
|
+
/**
|
|
828
|
+
* Audit log of every MCP tool call. Phase 5 wires the dispatcher to write
|
|
829
|
+
* one row per call as part of the privacy invariant verification surface
|
|
830
|
+
* (CLAUDE.md §Security #7). Phase 2 creates the table.
|
|
831
|
+
*
|
|
832
|
+
* NB: per CLAUDE.md §Security #7, the JSONL mirror path differs by scope —
|
|
833
|
+
* project rows mirror to `.pharos/kg-audit.jsonl` (in the repo, safe for
|
|
834
|
+
* `git add .`), personal/both rows mirror to `~/.pharos/profile/kg-audit.jsonl`.
|
|
835
|
+
* Personal-scope audit rows go to a separate kg_audit table in the personal
|
|
836
|
+
* DB, never the project DB. This split is enforced at the app layer.
|
|
837
|
+
*/
|
|
838
|
+
export declare const kgAudit: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
|
|
839
|
+
name: "kg_audit";
|
|
840
|
+
schema: undefined;
|
|
841
|
+
columns: {
|
|
842
|
+
id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
843
|
+
name: "id";
|
|
844
|
+
tableName: "kg_audit";
|
|
845
|
+
dataType: "number";
|
|
846
|
+
columnType: "SQLiteInteger";
|
|
847
|
+
data: number;
|
|
848
|
+
driverParam: number;
|
|
849
|
+
notNull: true;
|
|
850
|
+
hasDefault: true;
|
|
851
|
+
isPrimaryKey: true;
|
|
852
|
+
isAutoincrement: false;
|
|
853
|
+
hasRuntimeDefault: false;
|
|
854
|
+
enumValues: undefined;
|
|
855
|
+
baseColumn: never;
|
|
856
|
+
identity: undefined;
|
|
857
|
+
generated: undefined;
|
|
858
|
+
}, {}, {}>;
|
|
859
|
+
ts: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
860
|
+
name: "ts";
|
|
861
|
+
tableName: "kg_audit";
|
|
862
|
+
dataType: "number";
|
|
863
|
+
columnType: "SQLiteInteger";
|
|
864
|
+
data: number;
|
|
865
|
+
driverParam: number;
|
|
866
|
+
notNull: true;
|
|
867
|
+
hasDefault: false;
|
|
868
|
+
isPrimaryKey: false;
|
|
869
|
+
isAutoincrement: false;
|
|
870
|
+
hasRuntimeDefault: false;
|
|
871
|
+
enumValues: undefined;
|
|
872
|
+
baseColumn: never;
|
|
873
|
+
identity: undefined;
|
|
874
|
+
generated: undefined;
|
|
875
|
+
}, {}, {}>;
|
|
876
|
+
toolName: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
877
|
+
name: "tool_name";
|
|
878
|
+
tableName: "kg_audit";
|
|
879
|
+
dataType: "string";
|
|
880
|
+
columnType: "SQLiteText";
|
|
881
|
+
data: string;
|
|
882
|
+
driverParam: string;
|
|
883
|
+
notNull: true;
|
|
884
|
+
hasDefault: false;
|
|
885
|
+
isPrimaryKey: false;
|
|
886
|
+
isAutoincrement: false;
|
|
887
|
+
hasRuntimeDefault: false;
|
|
888
|
+
enumValues: [string, ...string[]];
|
|
889
|
+
baseColumn: never;
|
|
890
|
+
identity: undefined;
|
|
891
|
+
generated: undefined;
|
|
892
|
+
}, {}, {
|
|
893
|
+
length: number | undefined;
|
|
894
|
+
}>;
|
|
895
|
+
scopeRequested: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
896
|
+
name: "scope_requested";
|
|
897
|
+
tableName: "kg_audit";
|
|
898
|
+
dataType: "string";
|
|
899
|
+
columnType: "SQLiteText";
|
|
900
|
+
data: string;
|
|
901
|
+
driverParam: string;
|
|
902
|
+
notNull: true;
|
|
903
|
+
hasDefault: false;
|
|
904
|
+
isPrimaryKey: false;
|
|
905
|
+
isAutoincrement: false;
|
|
906
|
+
hasRuntimeDefault: false;
|
|
907
|
+
enumValues: [string, ...string[]];
|
|
908
|
+
baseColumn: never;
|
|
909
|
+
identity: undefined;
|
|
910
|
+
generated: undefined;
|
|
911
|
+
}, {}, {
|
|
912
|
+
length: number | undefined;
|
|
913
|
+
}>;
|
|
914
|
+
callerCtx: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
915
|
+
name: "caller_ctx";
|
|
916
|
+
tableName: "kg_audit";
|
|
917
|
+
dataType: "string";
|
|
918
|
+
columnType: "SQLiteText";
|
|
919
|
+
data: string;
|
|
920
|
+
driverParam: string;
|
|
921
|
+
notNull: false;
|
|
922
|
+
hasDefault: false;
|
|
923
|
+
isPrimaryKey: false;
|
|
924
|
+
isAutoincrement: false;
|
|
925
|
+
hasRuntimeDefault: false;
|
|
926
|
+
enumValues: [string, ...string[]];
|
|
927
|
+
baseColumn: never;
|
|
928
|
+
identity: undefined;
|
|
929
|
+
generated: undefined;
|
|
930
|
+
}, {}, {
|
|
931
|
+
length: number | undefined;
|
|
932
|
+
}>;
|
|
933
|
+
responseTokens: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
934
|
+
name: "response_tokens";
|
|
935
|
+
tableName: "kg_audit";
|
|
936
|
+
dataType: "number";
|
|
937
|
+
columnType: "SQLiteInteger";
|
|
938
|
+
data: number;
|
|
939
|
+
driverParam: number;
|
|
940
|
+
notNull: false;
|
|
941
|
+
hasDefault: false;
|
|
942
|
+
isPrimaryKey: false;
|
|
943
|
+
isAutoincrement: false;
|
|
944
|
+
hasRuntimeDefault: false;
|
|
945
|
+
enumValues: undefined;
|
|
946
|
+
baseColumn: never;
|
|
947
|
+
identity: undefined;
|
|
948
|
+
generated: undefined;
|
|
949
|
+
}, {}, {}>;
|
|
950
|
+
error: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
951
|
+
name: "error";
|
|
952
|
+
tableName: "kg_audit";
|
|
953
|
+
dataType: "string";
|
|
954
|
+
columnType: "SQLiteText";
|
|
955
|
+
data: string;
|
|
956
|
+
driverParam: string;
|
|
957
|
+
notNull: false;
|
|
958
|
+
hasDefault: false;
|
|
959
|
+
isPrimaryKey: false;
|
|
960
|
+
isAutoincrement: false;
|
|
961
|
+
hasRuntimeDefault: false;
|
|
962
|
+
enumValues: [string, ...string[]];
|
|
963
|
+
baseColumn: never;
|
|
964
|
+
identity: undefined;
|
|
965
|
+
generated: undefined;
|
|
966
|
+
}, {}, {
|
|
967
|
+
length: number | undefined;
|
|
968
|
+
}>;
|
|
969
|
+
};
|
|
970
|
+
dialect: "sqlite";
|
|
971
|
+
}>;
|
|
972
|
+
export type KgNode = typeof kgNodes.$inferSelect;
|
|
973
|
+
export type NewKgNode = typeof kgNodes.$inferInsert;
|
|
974
|
+
export type KgChunk = typeof kgChunks.$inferSelect;
|
|
975
|
+
export type NewKgChunk = typeof kgChunks.$inferInsert;
|
|
976
|
+
export type KgEdge = typeof kgEdges.$inferSelect;
|
|
977
|
+
export type NewKgEdge = typeof kgEdges.$inferInsert;
|
|
978
|
+
export type KgLogRow = typeof kgLog.$inferSelect;
|
|
979
|
+
export type NewKgLogRow = typeof kgLog.$inferInsert;
|
|
980
|
+
/**
|
|
981
|
+
* The list of all schema-managed tables, useful for the schema test that
|
|
982
|
+
* verifies the migration creates every expected table.
|
|
983
|
+
*/
|
|
984
|
+
export declare const KG_TABLES: readonly ["kg_meta", "kg_nodes", "kg_edges", "kg_chunks", "kg_log", "kg_gaps", "kg_audit"];
|
|
985
|
+
/**
|
|
986
|
+
* The two virtual tables created via raw SQL in the migration (drizzle-kit
|
|
987
|
+
* doesn't emit virtual table DDL). Schema test verifies they exist.
|
|
988
|
+
*/
|
|
989
|
+
export declare const KG_VIRTUAL_TABLES: readonly ["kg_chunks_fts", "kg_chunks_vec"];
|
|
990
|
+
//# sourceMappingURL=schema.d.ts.map
|