@velvetmonkey/vault-core 1.27.28 → 1.27.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/CLAUDE.md +11 -0
  2. package/dist/entities.d.ts +0 -0
  3. package/dist/entities.d.ts.map +0 -0
  4. package/dist/entities.js +0 -0
  5. package/dist/entities.js.map +0 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +2 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/logging/index.d.ts +0 -0
  11. package/dist/logging/index.d.ts.map +0 -0
  12. package/dist/logging/index.js +0 -0
  13. package/dist/logging/index.js.map +0 -0
  14. package/dist/logging/operationLogger.d.ts +0 -0
  15. package/dist/logging/operationLogger.d.ts.map +0 -0
  16. package/dist/logging/operationLogger.js +0 -0
  17. package/dist/logging/operationLogger.js.map +0 -0
  18. package/dist/logging/sessionManager.d.ts +0 -0
  19. package/dist/logging/sessionManager.d.ts.map +0 -0
  20. package/dist/logging/sessionManager.js +0 -0
  21. package/dist/logging/sessionManager.js.map +0 -0
  22. package/dist/logging/types.d.ts +0 -0
  23. package/dist/logging/types.d.ts.map +0 -0
  24. package/dist/logging/types.js +0 -0
  25. package/dist/logging/types.js.map +0 -0
  26. package/dist/protectedZones.d.ts +0 -0
  27. package/dist/protectedZones.d.ts.map +0 -0
  28. package/dist/protectedZones.js +0 -0
  29. package/dist/protectedZones.js.map +0 -0
  30. package/dist/sqlite.d.ts +243 -0
  31. package/dist/sqlite.d.ts.map +1 -0
  32. package/dist/sqlite.js +751 -0
  33. package/dist/sqlite.js.map +1 -0
  34. package/dist/types.d.ts +0 -0
  35. package/dist/types.d.ts.map +0 -0
  36. package/dist/types.js +0 -0
  37. package/dist/types.js.map +0 -0
  38. package/dist/wikilinks.d.ts +0 -0
  39. package/dist/wikilinks.d.ts.map +1 -1
  40. package/dist/wikilinks.js +30 -3
  41. package/dist/wikilinks.js.map +1 -1
  42. package/package.json +5 -1
package/dist/CLAUDE.md ADDED
@@ -0,0 +1,11 @@
1
+ <claude-mem-context>
2
+ # Recent Activity
3
+
4
+ <!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
5
+
6
+ ### Feb 2, 2026
7
+
8
+ | ID | Time | T | Title | Read |
9
+ |----|------|---|-------|------|
10
+ | #5984 | 2:30 AM | 🟣 | Vault-Core SQLite StateDb Committed to Version Control | ~518 |
11
+ </claude-mem-context>
File without changes
File without changes
package/dist/entities.js CHANGED
File without changes
File without changes
package/dist/index.d.ts CHANGED
@@ -10,4 +10,6 @@ export { getProtectedZones, isInProtectedZone, rangeOverlapsProtectedZone, findF
10
10
  export { applyWikilinks, suggestWikilinks, detectImplicitEntities, processWikilinks, } from './wikilinks.js';
11
11
  export { OperationLogger, createLoggerFromConfig, generateSessionId, getSessionId, setSessionId, clearSession, createChildSession, getParentSession, isChildSession, DEFAULT_LOGGING_CONFIG, } from './logging/index.js';
12
12
  export type { OperationLogEntry, SessionMetrics, AggregatedMetrics, LoggingConfig, ProductId, } from './logging/index.js';
13
+ export { openStateDb, deleteStateDb, stateDbExists, getStateDbPath, searchEntities, searchEntitiesPrefix, getEntityByName, getAllEntitiesFromDb, getEntityIndexFromDb, getBacklinks, getOutlinks, replaceLinksFromSource, recordEntityMention, getEntityRecency, getAllRecency, setCrankState, getCrankState, deleteCrankState, getStateDbMetadata, isEntityDataStale, escapeFts5Query, migrateFromJsonToSqlite, getLegacyPaths, backupLegacyFiles, deleteLegacyFiles, SCHEMA_VERSION, STATE_DB_FILENAME, FLYWHEEL_DIR, } from './sqlite.js';
14
+ export type { StateDb, EntitySearchResult, NoteRow, LinkRow, RecencyRow, StateDbMetadata, MigrationResult, LegacyPaths, } from './sqlite.js';
13
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,MAAM,EACN,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,SAAS,GACV,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,MAAM,EACN,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,SAAS,GACV,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,WAAW,EACX,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,OAAO,EACP,kBAAkB,EAClB,OAAO,EACP,OAAO,EACP,UAAU,EACV,eAAe,EACf,eAAe,EACf,WAAW,GACZ,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -12,4 +12,6 @@ export { getProtectedZones, isInProtectedZone, rangeOverlapsProtectedZone, findF
12
12
  export { applyWikilinks, suggestWikilinks, detectImplicitEntities, processWikilinks, } from './wikilinks.js';
13
13
  // Logging (unified cross-product logging)
14
14
  export { OperationLogger, createLoggerFromConfig, generateSessionId, getSessionId, setSessionId, clearSession, createChildSession, getParentSession, isChildSession, DEFAULT_LOGGING_CONFIG, } from './logging/index.js';
15
+ // SQLite State Database
16
+ export { openStateDb, deleteStateDb, stateDbExists, getStateDbPath, searchEntities, searchEntitiesPrefix, getEntityByName, getAllEntitiesFromDb, getEntityIndexFromDb, getBacklinks, getOutlinks, replaceLinksFromSource, recordEntityMention, getEntityRecency, getAllRecency, setCrankState, getCrankState, deleteCrankState, getStateDbMetadata, isEntityDataStale, escapeFts5Query, migrateFromJsonToSqlite, getLegacyPaths, backupLegacyFiles, deleteLegacyFiles, SCHEMA_VERSION, STATE_DB_FILENAME, FLYWHEEL_DIR, } from './sqlite.js';
15
17
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmBH,kBAAkB;AAClB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,kBAAkB;AAClB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,YAAY;AACZ,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB,0CAA0C;AAC1C,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,sBAAsB,GACvB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmBH,kBAAkB;AAClB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,kBAAkB;AAClB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,YAAY;AACZ,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB,0CAA0C;AAC1C,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAU5B,wBAAwB;AACxB,OAAO,EACL,WAAW,EACX,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,YAAY,GACb,MAAM,aAAa,CAAC"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,243 @@
1
+ /**
2
+ * Shared SQLite State Management
3
+ *
4
+ * Consolidates scattered JSON files and in-memory state into a single
5
+ * SQLite database with FTS5 for entity search.
6
+ *
7
+ * Target performance:
8
+ * - Startup <100ms for 10k note vault
9
+ * - Entity search <10ms
10
+ * - Single .flywheel/state.db for backup
11
+ */
12
+ import Database from 'better-sqlite3';
13
+ import type { Statement, Transaction } from 'better-sqlite3';
14
+ import type { EntityCategory, EntityWithAliases, EntityIndex } from './types.js';
15
+ /** Search result from FTS5 entity search */
16
+ export interface EntitySearchResult {
17
+ id: number;
18
+ name: string;
19
+ nameLower: string;
20
+ path: string;
21
+ category: EntityCategory;
22
+ aliases: string[];
23
+ hubScore: number;
24
+ rank: number;
25
+ }
26
+ /** Note metadata stored in database */
27
+ export interface NoteRow {
28
+ id: number;
29
+ path: string;
30
+ title: string;
31
+ contentHash: string | null;
32
+ modifiedAt: number;
33
+ aliases: string[];
34
+ tags: string[];
35
+ }
36
+ /** Link between notes */
37
+ export interface LinkRow {
38
+ id: number;
39
+ sourcePath: string;
40
+ target: string;
41
+ targetPath: string | null;
42
+ lineNumber: number | null;
43
+ }
44
+ /** Recency tracking for entities */
45
+ export interface RecencyRow {
46
+ entityNameLower: string;
47
+ lastMentionedAt: number;
48
+ mentionCount: number;
49
+ }
50
+ /** Database state metadata */
51
+ export interface StateDbMetadata {
52
+ schemaVersion: number;
53
+ entitiesBuiltAt: string | null;
54
+ entityCount: number;
55
+ notesBuiltAt: string | null;
56
+ noteCount: number;
57
+ }
58
+ /** State database instance with prepared statements */
59
+ export interface StateDb {
60
+ db: Database.Database;
61
+ vaultPath: string;
62
+ dbPath: string;
63
+ insertEntity: Statement;
64
+ updateEntity: Statement;
65
+ deleteEntity: Statement;
66
+ getEntityByName: Statement;
67
+ getEntityById: Statement;
68
+ getAllEntities: Statement;
69
+ getEntitiesByCategory: Statement;
70
+ searchEntitiesFts: Statement;
71
+ clearEntities: Statement;
72
+ insertLink: Statement;
73
+ deleteLinksFromSource: Statement;
74
+ getBacklinks: Statement;
75
+ getOutlinks: Statement;
76
+ clearLinks: Statement;
77
+ upsertRecency: Statement;
78
+ getRecency: Statement;
79
+ getAllRecency: Statement;
80
+ clearRecency: Statement;
81
+ setCrankState: Statement;
82
+ getCrankState: Statement;
83
+ deleteCrankState: Statement;
84
+ insertNote: Statement;
85
+ updateNote: Statement;
86
+ deleteNote: Statement;
87
+ getNoteByPath: Statement;
88
+ getAllNotes: Statement;
89
+ clearNotes: Statement;
90
+ getMetadataValue: Statement;
91
+ setMetadataValue: Statement;
92
+ bulkInsertEntities: Transaction<(entities: EntityWithAliases[], category: EntityCategory) => number>;
93
+ bulkInsertLinks: Transaction<(links: Omit<LinkRow, 'id'>[]) => number>;
94
+ replaceAllEntities: Transaction<(index: EntityIndex) => number>;
95
+ close: () => void;
96
+ }
97
+ /** Current schema version - bump when schema changes */
98
+ export declare const SCHEMA_VERSION = 1;
99
+ /** State database filename */
100
+ export declare const STATE_DB_FILENAME = "state.db";
101
+ /** Directory for flywheel state */
102
+ export declare const FLYWHEEL_DIR = ".flywheel";
103
+ /**
104
+ * Get the database path for a vault
105
+ */
106
+ export declare function getStateDbPath(vaultPath: string): string;
107
+ /**
108
+ * Open or create the state database for a vault
109
+ *
110
+ * @param vaultPath - Absolute path to the vault root
111
+ * @returns StateDb instance with prepared statements
112
+ */
113
+ export declare function openStateDb(vaultPath: string): StateDb;
114
+ /**
115
+ * Search entities using FTS5 with porter stemming
116
+ *
117
+ * @param stateDb - State database instance
118
+ * @param query - Search query (supports FTS5 syntax)
119
+ * @param limit - Maximum results to return
120
+ * @returns Array of matching entities with relevance scores
121
+ */
122
+ export declare function searchEntities(stateDb: StateDb, query: string, limit?: number): EntitySearchResult[];
123
+ /**
124
+ * Search entities by prefix for autocomplete
125
+ *
126
+ * @param stateDb - State database instance
127
+ * @param prefix - Prefix to search for
128
+ * @param limit - Maximum results to return
129
+ */
130
+ export declare function searchEntitiesPrefix(stateDb: StateDb, prefix: string, limit?: number): EntitySearchResult[];
131
+ /**
132
+ * Get entity by exact name (case-insensitive)
133
+ */
134
+ export declare function getEntityByName(stateDb: StateDb, name: string): EntitySearchResult | null;
135
+ /**
136
+ * Get all entities from the database
137
+ */
138
+ export declare function getAllEntitiesFromDb(stateDb: StateDb): EntitySearchResult[];
139
+ /**
140
+ * Convert database entities back to EntityIndex format
141
+ */
142
+ export declare function getEntityIndexFromDb(stateDb: StateDb): EntityIndex;
143
+ /**
144
+ * Get all notes that link to a given path (backlinks)
145
+ */
146
+ export declare function getBacklinks(stateDb: StateDb, targetPath: string): LinkRow[];
147
+ /**
148
+ * Get all links from a given note (outlinks)
149
+ */
150
+ export declare function getOutlinks(stateDb: StateDb, sourcePath: string): LinkRow[];
151
+ /**
152
+ * Replace all links from a source note
153
+ */
154
+ export declare function replaceLinksFromSource(stateDb: StateDb, sourcePath: string, links: Omit<LinkRow, 'id' | 'sourcePath'>[]): void;
155
+ /**
156
+ * Record a mention of an entity
157
+ */
158
+ export declare function recordEntityMention(stateDb: StateDb, entityName: string, mentionedAt?: Date): void;
159
+ /**
160
+ * Get recency info for an entity
161
+ */
162
+ export declare function getEntityRecency(stateDb: StateDb, entityName: string): RecencyRow | null;
163
+ /**
164
+ * Get all recency data ordered by most recent
165
+ */
166
+ export declare function getAllRecency(stateDb: StateDb): RecencyRow[];
167
+ /**
168
+ * Set a crank state value
169
+ */
170
+ export declare function setCrankState(stateDb: StateDb, key: string, value: unknown): void;
171
+ /**
172
+ * Get a crank state value
173
+ */
174
+ export declare function getCrankState<T>(stateDb: StateDb, key: string): T | null;
175
+ /**
176
+ * Delete a crank state key
177
+ */
178
+ export declare function deleteCrankState(stateDb: StateDb, key: string): void;
179
+ /**
180
+ * Get database metadata
181
+ */
182
+ export declare function getStateDbMetadata(stateDb: StateDb): StateDbMetadata;
183
+ /**
184
+ * Check if entity data is stale (older than threshold)
185
+ */
186
+ export declare function isEntityDataStale(stateDb: StateDb, thresholdMs?: number): boolean;
187
+ /**
188
+ * Escape special FTS5 characters in a query
189
+ */
190
+ export declare function escapeFts5Query(query: string): string;
191
+ /**
192
+ * Check if the state database exists for a vault
193
+ */
194
+ export declare function stateDbExists(vaultPath: string): boolean;
195
+ /**
196
+ * Delete the state database (for testing or reset)
197
+ */
198
+ export declare function deleteStateDb(vaultPath: string): void;
199
+ /** Result of a migration operation */
200
+ export interface MigrationResult {
201
+ success: boolean;
202
+ entitiesMigrated: number;
203
+ recencyMigrated: number;
204
+ crankStateMigrated: number;
205
+ errors: string[];
206
+ }
207
+ /** Paths to legacy JSON files */
208
+ export interface LegacyPaths {
209
+ entities?: string;
210
+ recency?: string;
211
+ lastCommit?: string;
212
+ hints?: string;
213
+ }
214
+ /**
215
+ * Get default legacy file paths for a vault
216
+ */
217
+ export declare function getLegacyPaths(vaultPath: string): LegacyPaths;
218
+ /**
219
+ * Migrate legacy JSON files to SQLite state database
220
+ *
221
+ * This function reads existing JSON state files and imports them
222
+ * into the consolidated SQLite database. It does NOT delete the
223
+ * original JSON files - that should be done manually after verifying
224
+ * the migration was successful.
225
+ *
226
+ * @param stateDb - Open state database
227
+ * @param legacyPaths - Paths to legacy JSON files
228
+ * @returns Migration result with counts and any errors
229
+ */
230
+ export declare function migrateFromJsonToSqlite(stateDb: StateDb, legacyPaths: LegacyPaths): Promise<MigrationResult>;
231
+ /**
232
+ * Backup legacy JSON files before migration
233
+ *
234
+ * Creates .bak files alongside the originals
235
+ */
236
+ export declare function backupLegacyFiles(legacyPaths: LegacyPaths): string[];
237
+ /**
238
+ * Delete legacy JSON files after successful migration
239
+ *
240
+ * Only deletes files that have corresponding .bak backups
241
+ */
242
+ export declare function deleteLegacyFiles(legacyPaths: LegacyPaths): string[];
243
+ //# sourceMappingURL=sqlite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../src/sqlite.ts"],"names":[],"mappings":"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"}