@pcircle/memesh 4.4.0 → 4.5.1

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 (198) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.mcp.json +1 -1
  4. package/README.de.md +32 -12
  5. package/README.es.md +13 -12
  6. package/README.fr.md +31 -11
  7. package/README.ja.md +13 -12
  8. package/README.ko.md +14 -13
  9. package/README.md +41 -16
  10. package/README.pt.md +30 -10
  11. package/README.th.md +16 -9
  12. package/README.vi.md +32 -12
  13. package/README.zh-CN.md +14 -13
  14. package/README.zh-TW.md +14 -13
  15. package/dashboard/dist/index.html +10 -10
  16. package/dist/cli/view-live.js +1 -1
  17. package/dist/cli/view.d.ts.map +1 -1
  18. package/dist/cli/view.js +2 -2
  19. package/dist/cli/view.js.map +1 -1
  20. package/dist/core/analytics.d.ts +7 -3
  21. package/dist/core/analytics.d.ts.map +1 -1
  22. package/dist/core/analytics.js +8 -8
  23. package/dist/core/analytics.js.map +1 -1
  24. package/dist/core/auto-tagger.d.ts.map +1 -1
  25. package/dist/core/auto-tagger.js.map +1 -1
  26. package/dist/core/config.d.ts +5 -3
  27. package/dist/core/config.d.ts.map +1 -1
  28. package/dist/core/config.js +30 -14
  29. package/dist/core/config.js.map +1 -1
  30. package/dist/core/demo.d.ts +2 -2
  31. package/dist/core/demo.d.ts.map +1 -1
  32. package/dist/core/demo.js.map +1 -1
  33. package/dist/core/digest-validator.d.ts.map +1 -1
  34. package/dist/core/digest-validator.js +3 -1
  35. package/dist/core/digest-validator.js.map +1 -1
  36. package/dist/core/doctor.d.ts +3 -0
  37. package/dist/core/doctor.d.ts.map +1 -1
  38. package/dist/core/doctor.js +255 -101
  39. package/dist/core/doctor.js.map +1 -1
  40. package/dist/core/dreamer.d.ts +35 -7
  41. package/dist/core/dreamer.d.ts.map +1 -1
  42. package/dist/core/dreamer.js +394 -41
  43. package/dist/core/dreamer.js.map +1 -1
  44. package/dist/core/embedder.d.ts +3 -5
  45. package/dist/core/embedder.d.ts.map +1 -1
  46. package/dist/core/embedder.js +26 -95
  47. package/dist/core/embedder.js.map +1 -1
  48. package/dist/core/extractor.d.ts.map +1 -1
  49. package/dist/core/extractor.js +2 -1
  50. package/dist/core/extractor.js.map +1 -1
  51. package/dist/core/failure-analyzer.d.ts.map +1 -1
  52. package/dist/core/failure-analyzer.js +2 -1
  53. package/dist/core/failure-analyzer.js.map +1 -1
  54. package/dist/core/graph.d.ts +4 -4
  55. package/dist/core/graph.d.ts.map +1 -1
  56. package/dist/core/graph.js.map +1 -1
  57. package/dist/core/install-hooks.d.ts +1 -0
  58. package/dist/core/install-hooks.d.ts.map +1 -1
  59. package/dist/core/install-hooks.js +0 -0
  60. package/dist/core/install-hooks.js.map +1 -1
  61. package/dist/core/kg-backfill.d.ts +4 -4
  62. package/dist/core/kg-backfill.d.ts.map +1 -1
  63. package/dist/core/kg-backfill.js +1 -1
  64. package/dist/core/kg-backfill.js.map +1 -1
  65. package/dist/core/lesson-engine.d.ts +1 -0
  66. package/dist/core/lesson-engine.d.ts.map +1 -1
  67. package/dist/core/lesson-engine.js +1 -0
  68. package/dist/core/lesson-engine.js.map +1 -1
  69. package/dist/core/lifecycle.d.ts +4 -4
  70. package/dist/core/lifecycle.d.ts.map +1 -1
  71. package/dist/core/lifecycle.js +1 -1
  72. package/dist/core/lifecycle.js.map +1 -1
  73. package/dist/core/llm-client.d.ts.map +1 -1
  74. package/dist/core/llm-client.js +3 -6
  75. package/dist/core/llm-client.js.map +1 -1
  76. package/dist/core/llm-telemetry.d.ts +4 -4
  77. package/dist/core/llm-telemetry.d.ts.map +1 -1
  78. package/dist/core/llm-telemetry.js +1 -1
  79. package/dist/core/llm-telemetry.js.map +1 -1
  80. package/dist/core/llm-validator.d.ts +1 -0
  81. package/dist/core/llm-validator.d.ts.map +1 -1
  82. package/dist/core/llm-validator.js +33 -10
  83. package/dist/core/llm-validator.js.map +1 -1
  84. package/dist/core/memory-tool.d.ts.map +1 -1
  85. package/dist/core/memory-tool.js +4 -0
  86. package/dist/core/memory-tool.js.map +1 -1
  87. package/dist/core/operations.d.ts.map +1 -1
  88. package/dist/core/operations.js +23 -8
  89. package/dist/core/operations.js.map +1 -1
  90. package/dist/core/output-language.d.ts +6 -0
  91. package/dist/core/output-language.d.ts.map +1 -0
  92. package/dist/core/output-language.js +25 -0
  93. package/dist/core/output-language.js.map +1 -0
  94. package/dist/core/paths.d.ts +3 -0
  95. package/dist/core/paths.d.ts.map +1 -1
  96. package/dist/core/paths.js +67 -1
  97. package/dist/core/paths.js.map +1 -1
  98. package/dist/core/patterns.d.ts +2 -3
  99. package/dist/core/patterns.d.ts.map +1 -1
  100. package/dist/core/patterns.js +1 -5
  101. package/dist/core/patterns.js.map +1 -1
  102. package/dist/core/project-tags.d.ts +3 -3
  103. package/dist/core/project-tags.d.ts.map +1 -1
  104. package/dist/core/project-tags.js.map +1 -1
  105. package/dist/core/projects.d.ts +2 -2
  106. package/dist/core/projects.d.ts.map +1 -1
  107. package/dist/core/projects.js.map +1 -1
  108. package/dist/core/schema-export.d.ts.map +1 -1
  109. package/dist/core/schema-export.js +0 -34
  110. package/dist/core/schema-export.js.map +1 -1
  111. package/dist/core/serializer.d.ts.map +1 -1
  112. package/dist/core/serializer.js +45 -4
  113. package/dist/core/serializer.js.map +1 -1
  114. package/dist/core/stats.d.ts +2 -2
  115. package/dist/core/stats.d.ts.map +1 -1
  116. package/dist/core/stats.js.map +1 -1
  117. package/dist/core/transcript-extractor.d.ts +88 -0
  118. package/dist/core/transcript-extractor.d.ts.map +1 -0
  119. package/dist/core/transcript-extractor.js +417 -0
  120. package/dist/core/transcript-extractor.js.map +1 -0
  121. package/dist/core/transcript-source.d.ts +21 -0
  122. package/dist/core/transcript-source.d.ts.map +1 -0
  123. package/dist/core/transcript-source.js +142 -0
  124. package/dist/core/transcript-source.js.map +1 -0
  125. package/dist/core/types.d.ts +17 -7
  126. package/dist/core/types.d.ts.map +1 -1
  127. package/dist/core/types.js +2 -0
  128. package/dist/core/types.js.map +1 -1
  129. package/dist/db.d.ts +5 -5
  130. package/dist/db.d.ts.map +1 -1
  131. package/dist/db.js +165 -17
  132. package/dist/db.js.map +1 -1
  133. package/dist/knowledge-graph.d.ts +3 -2
  134. package/dist/knowledge-graph.d.ts.map +1 -1
  135. package/dist/knowledge-graph.js +19 -10
  136. package/dist/knowledge-graph.js.map +1 -1
  137. package/dist/mcp/server.js +2 -1
  138. package/dist/mcp/server.js.map +1 -1
  139. package/dist/skills-manifest.json +28 -33
  140. package/dist/storage/conflicts.d.ts +3 -3
  141. package/dist/storage/conflicts.d.ts.map +1 -1
  142. package/dist/storage/conflicts.js.map +1 -1
  143. package/dist/storage/fts-index.d.ts +4 -4
  144. package/dist/storage/fts-index.d.ts.map +1 -1
  145. package/dist/storage/fts-index.js.map +1 -1
  146. package/dist/storage/sqlite.d.ts +20 -0
  147. package/dist/storage/sqlite.d.ts.map +1 -0
  148. package/dist/storage/sqlite.js +64 -0
  149. package/dist/storage/sqlite.js.map +1 -0
  150. package/dist/storage/vector-index.d.ts +3 -0
  151. package/dist/storage/vector-index.d.ts.map +1 -0
  152. package/dist/storage/vector-index.js +7 -0
  153. package/dist/storage/vector-index.js.map +1 -0
  154. package/dist/transports/cli/cli.d.ts.map +1 -1
  155. package/dist/transports/cli/cli.js +278 -91
  156. package/dist/transports/cli/cli.js.map +1 -1
  157. package/dist/transports/http/retired-routes.d.ts.map +1 -1
  158. package/dist/transports/http/retired-routes.js +1 -0
  159. package/dist/transports/http/retired-routes.js.map +1 -1
  160. package/dist/transports/http/server.d.ts +7 -0
  161. package/dist/transports/http/server.d.ts.map +1 -1
  162. package/dist/transports/http/server.js +165 -79
  163. package/dist/transports/http/server.js.map +1 -1
  164. package/dist/transports/mcp/handlers.d.ts +4 -96
  165. package/dist/transports/mcp/handlers.d.ts.map +1 -1
  166. package/dist/transports/mcp/handlers.js +26 -59
  167. package/dist/transports/mcp/handlers.js.map +1 -1
  168. package/dist/transports/schemas.d.ts +10 -30
  169. package/dist/transports/schemas.d.ts.map +1 -1
  170. package/dist/transports/schemas.js +5 -29
  171. package/dist/transports/schemas.js.map +1 -1
  172. package/hooks/hooks.json +0 -10
  173. package/package.json +6 -19
  174. package/scripts/hooks/_generated/core-paths.js +67 -1
  175. package/scripts/hooks/_generated/sqlite.js +71 -0
  176. package/scripts/hooks/_shared.js +286 -195
  177. package/scripts/hooks/post-commit.js +52 -10
  178. package/scripts/hooks/pre-compact.js +10 -7
  179. package/scripts/hooks/pre-edit-recall.js +4 -8
  180. package/scripts/hooks/session-start.js +95 -47
  181. package/scripts/hooks/session-summary.js +120 -52
  182. package/scripts/hooks/user-prompt-intent.js +3 -2
  183. package/skills/memesh/SKILL.md +3 -2
  184. package/dist/core/skill-usage-log.d.ts +0 -11
  185. package/dist/core/skill-usage-log.d.ts.map +0 -1
  186. package/dist/core/skill-usage-log.js +0 -125
  187. package/dist/core/skill-usage-log.js.map +0 -1
  188. package/dist/core/verifier.d.ts +0 -40
  189. package/dist/core/verifier.d.ts.map +0 -1
  190. package/dist/core/verifier.js +0 -206
  191. package/dist/core/verifier.js.map +0 -1
  192. package/dist/mcp/launcher.d.ts +0 -3
  193. package/dist/mcp/launcher.d.ts.map +0 -1
  194. package/dist/mcp/launcher.js +0 -37
  195. package/dist/mcp/launcher.js.map +0 -1
  196. package/scripts/hooks/pre-bash-orchestration-nudge.js +0 -155
  197. package/scripts/postinstall-rebuild.mjs +0 -41
  198. package/skills/agentic-orchestration/SKILL.md +0 -399
@@ -3,7 +3,9 @@ export declare const BEHAVIOURAL_RELATION_TYPES: {
3
3
  readonly contradicts: "flags both memories as a conflict every time either is recalled — use it when two memories cannot both be true";
4
4
  };
5
5
  export type BehaviouralRelationType = keyof typeof BEHAVIOURAL_RELATION_TYPES;
6
- export type Namespace = 'personal' | 'team' | 'global';
6
+ export declare const AUTO_CAPTURE_TAG = "source:auto-capture";
7
+ export declare const NAMESPACES: readonly ["personal", "team", "global"];
8
+ export type Namespace = (typeof NAMESPACES)[number];
7
9
  export type MergeStrategy = 'skip' | 'overwrite' | 'append';
8
10
  export type LessonSeverity = 'critical' | 'major' | 'minor';
9
11
  export type EntityStatus = 'active' | 'archived';
@@ -58,6 +60,7 @@ export interface RememberInput {
58
60
  namespace?: string;
59
61
  trustOverride?: 'trusted' | 'untrusted';
60
62
  provenanceOverride?: Record<string, unknown>;
63
+ sourceHost?: string;
61
64
  }
62
65
  export interface RecallInput {
63
66
  query?: string;
@@ -81,6 +84,11 @@ export interface RememberResult {
81
84
  relations: number;
82
85
  superseded?: string[];
83
86
  relationErrors?: string[];
87
+ relationsCreated?: Array<{
88
+ to: string;
89
+ type: string;
90
+ }>;
91
+ movedFromNamespace?: string;
84
92
  }
85
93
  export interface ForgetResult {
86
94
  archived?: boolean;
@@ -89,6 +97,7 @@ export interface ForgetResult {
89
97
  observation_removed?: boolean;
90
98
  observation?: string;
91
99
  remaining_observations?: number;
100
+ entity_found?: boolean;
92
101
  }
93
102
  export interface ExportInput {
94
103
  tag?: string;
@@ -128,13 +137,14 @@ export interface LearnInput {
128
137
  root_cause?: string;
129
138
  prevention?: string;
130
139
  severity?: LessonSeverity;
140
+ sourceHost?: string;
131
141
  }
132
142
  export interface LearnResult {
133
143
  learned: boolean;
134
144
  name: string;
135
145
  type: string;
136
146
  }
137
- export interface EntityRow {
147
+ export type EntityRow = {
138
148
  id: number;
139
149
  name: string;
140
150
  type: string;
@@ -145,18 +155,18 @@ export interface EntityRow {
145
155
  last_accessed_at: string | null;
146
156
  confidence: number;
147
157
  namespace: string;
148
- }
149
- export interface CountRow {
158
+ };
159
+ export type CountRow = {
150
160
  c: number;
151
- }
152
- export interface PragmaColumnRow {
161
+ };
162
+ export type PragmaColumnRow = {
153
163
  cid: number;
154
164
  name: string;
155
165
  type: string;
156
166
  notnull: number;
157
167
  dflt_value: string | null;
158
168
  pk: number;
159
- }
169
+ };
160
170
  export interface AnthropicResponse {
161
171
  content?: Array<{
162
172
  text?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,6 @@ export const BEHAVIOURAL_RELATION_TYPES = {
2
2
  supersedes: 'archives the target entity — use it when this memory replaces an older one',
3
3
  contradicts: 'flags both memories as a conflict every time either is recalled — use it when two memories cannot both be true',
4
4
  };
5
+ export const AUTO_CAPTURE_TAG = 'source:auto-capture';
6
+ export const NAMESPACES = ['personal', 'team', 'global'];
5
7
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAqCA,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,UAAU,EACR,4EAA4E;IAC9E,WAAW,EACT,gHAAgH;CAC1G,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAqCA,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,UAAU,EACR,4EAA4E;IAC9E,WAAW,EACT,gHAAgH;CAC1G,CAAC;AAgBX,MAAM,CAAC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAatD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAU,CAAC"}
package/dist/db.d.ts CHANGED
@@ -1,11 +1,11 @@
1
- import Database from 'better-sqlite3';
2
- export declare function openDatabase(dbPath?: string): Database.Database;
1
+ import { MemeshDatabase } from './storage/sqlite.js';
2
+ export declare function openDatabase(dbPath?: string): MemeshDatabase;
3
3
  export declare const FTS_SEGMENTATION_VERSION = 3;
4
- export declare function runOnceMigration(db: Database.Database, opts: {
4
+ export declare function runOnceMigration(db: MemeshDatabase, opts: {
5
5
  key: string;
6
6
  version: number;
7
7
  describe: string;
8
- migrate: (db: Database.Database, fromVersion: number) => void;
8
+ migrate: (db: MemeshDatabase, fromVersion: number) => void;
9
9
  }): boolean;
10
10
  export declare function reindexFts(): {
11
11
  entities: number;
@@ -18,6 +18,6 @@ export declare function getPendingReindexInfo(): {
18
18
  } | null;
19
19
  export declare function clearPendingReindexFlag(): void;
20
20
  export declare function closeDatabase(): void;
21
- export declare function getDatabase(): Database.Database;
21
+ export declare function getDatabase(): MemeshDatabase;
22
22
  export declare function isDatabaseOpen(): boolean;
23
23
  //# sourceMappingURL=db.d.ts.map
package/dist/db.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AA0FtC,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAmC/D;AA6JD,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAiE1C,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,EAAE;IACJ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/D,GACA,OAAO,CAoET;AA0GD,wBAAgB,UAAU,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAkCjD;AAsCD,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAChC,OAAO,CAAC,OAAO,CAAC,CAIlB;AAgJD,wBAAgB,qBAAqB,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAU9F;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAG9C;AAwLD,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED,wBAAgB,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAG/C;AAQD,wBAAgB,cAAc,IAAI,OAAO,CAExC"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAiOrD,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAmC5D;AA4OD,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAiE1C,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE;IACJ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5D,GACA,OAAO,CAoET;AA0GD,wBAAgB,UAAU,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAkCjD;AAsCD,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAChC,OAAO,CAAC,OAAO,CAAC,CAIlB;AAgJD,wBAAgB,qBAAqB,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAU9F;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAG9C;AAkOD,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED,wBAAgB,WAAW,IAAI,cAAc,CAG5C;AAQD,wBAAgB,cAAc,IAAI,OAAO,CAExC"}
package/dist/db.js CHANGED
@@ -1,4 +1,4 @@
1
- import Database from 'better-sqlite3';
1
+ import { MemeshDatabase } from './storage/sqlite.js';
2
2
  import * as sqliteVec from 'sqlite-vec';
3
3
  import path from 'path';
4
4
  import fs from 'fs';
@@ -46,13 +46,11 @@ CREATE TABLE IF NOT EXISTS tags (
46
46
 
47
47
  CREATE INDEX IF NOT EXISTS idx_tags_entity ON tags(entity_id);
48
48
  CREATE INDEX IF NOT EXISTS idx_tags_tag ON tags(tag);
49
- DELETE FROM tags
50
- WHERE id NOT IN (
51
- SELECT MIN(id)
52
- FROM tags
53
- GROUP BY entity_id, tag
54
- );
55
- CREATE UNIQUE INDEX IF NOT EXISTS idx_tags_entity_tag_unique ON tags(entity_id, tag);
49
+ -- The tags dedup DELETE + idx_tags_entity_tag_unique creation live in
50
+ -- ensureTagsUniqueIndex(), AFTER this exec — the DELETE is a one-time
51
+ -- migration, and a DML statement in this string made every open start a
52
+ -- write transaction even when it deleted nothing (same reader-breaking
53
+ -- pattern as the hook_runs_since note below).
56
54
  CREATE INDEX IF NOT EXISTS idx_observations_entity ON observations(entity_id);
57
55
  CREATE INDEX IF NOT EXISTS idx_relations_from ON relations(from_entity_id);
58
56
  CREATE INDEX IF NOT EXISTS idx_relations_to ON relations(to_entity_id);
@@ -71,6 +69,44 @@ CREATE TABLE IF NOT EXISTS memesh_metadata (
71
69
  key TEXT PRIMARY KEY,
72
70
  value TEXT NOT NULL
73
71
  );
72
+
73
+ -- Proof that a capture hook actually RAN. Nothing else in this schema can
74
+ -- give it: every other signal is "a row was written", and "the hook ran and
75
+ -- found nothing worth saving" is the healthy case that produces no row at
76
+ -- all. So a quiet day and a dead capture loop were byte-identical in the
77
+ -- database, and the one doctor message that had to cover both cried wolf on
78
+ -- the first and stayed silent on the second.
79
+ --
80
+ -- Written by the three hooks that hold a read-write handle (Stop, PreCompact,
81
+ -- PostToolUse), each calling recordHookRun() at its own SUCCESSFUL exit —
82
+ -- after capture, not at open. Stamping at open certified the wrong thing: a
83
+ -- hook that opened the database and then died mid-capture looked alive for a
84
+ -- day. "Successful" is precise: a completed capture, or a well-formed
85
+ -- payload the hook correctly decided not to capture (dedup, low-signal
86
+ -- session). A malformed payload (schema-flip shapes) and a write that did
87
+ -- not land both leave no stamp — either would make the heartbeat mask the
88
+ -- exact dropout it exists to expose. The recall-side hooks open read-only
89
+ -- and deliberately do not appear here: their liveness answers a different
90
+ -- question, and giving them a write handle would put a lock acquisition on
91
+ -- the SessionStart hot path.
92
+ --
93
+ -- One row per hook, upserted. It does not grow.
94
+ CREATE TABLE IF NOT EXISTS hook_runs (
95
+ hook TEXT PRIMARY KEY,
96
+ last_run_at TIMESTAMP NOT NULL,
97
+ run_count INTEGER NOT NULL DEFAULT 0
98
+ );
99
+
100
+ -- The 'hook_runs_since' metadata key (when this database first became able
101
+ -- to record hook runs) is stamped by ensureHookRunsSince() AFTER this exec,
102
+ -- NOT here. It used to be an INSERT OR IGNORE in this string, and that made
103
+ -- every open — including opens that only ever read — start a write
104
+ -- transaction: an INSERT statement takes the WAL writer lock even when
105
+ -- OR IGNORE ends up changing nothing. Two states regressed from "reads work"
106
+ -- to "open throws": a peer holding the writer lock past busy_timeout, and a
107
+ -- read-only database FILE (measured: "attempt to write a readonly database"
108
+ -- killed recall along with capture). The helper SELECTs first and writes
109
+ -- only when the key is genuinely absent — once per database lifetime.
74
110
  `;
75
111
  const FTS_SQL = `
76
112
  CREATE VIRTUAL TABLE IF NOT EXISTS entities_fts USING fts5(
@@ -83,6 +119,63 @@ CREATE VIRTUAL TABLE IF NOT EXISTS entities_fts USING fts5(
83
119
  -- which are the ones BM25 already scores near zero. See dropUbiquitousTerms().
84
120
  CREATE VIRTUAL TABLE IF NOT EXISTS fts_vocab USING fts5vocab(entities_fts, 'row');
85
121
  `;
122
+ function ensureTagsUniqueIndex(handle) {
123
+ try {
124
+ const present = handle
125
+ .prepare("SELECT 1 FROM sqlite_master WHERE type = 'index' AND name = 'idx_tags_entity_tag_unique'")
126
+ .get();
127
+ if (present)
128
+ return;
129
+ handle.exec('BEGIN IMMEDIATE; ' +
130
+ 'DELETE FROM tags WHERE id NOT IN (SELECT MIN(id) FROM tags GROUP BY entity_id, tag); ' +
131
+ 'CREATE UNIQUE INDEX IF NOT EXISTS idx_tags_entity_tag_unique ON tags(entity_id, tag); ' +
132
+ 'COMMIT;');
133
+ }
134
+ catch (err) {
135
+ try {
136
+ handle.exec('ROLLBACK');
137
+ }
138
+ catch { }
139
+ try {
140
+ process.stderr.write(`MeMesh: could not create the tags unique index (${err instanceof Error ? err.message : String(err)}). ` +
141
+ `Reads are unaffected; the next open retries the dedup and index together.\n`);
142
+ }
143
+ catch { }
144
+ }
145
+ }
146
+ function ensureHookRunsSince(handle) {
147
+ try {
148
+ const row = handle
149
+ .prepare("SELECT value FROM memesh_metadata WHERE key = 'hook_runs_since'")
150
+ .get();
151
+ if (row) {
152
+ const m = /^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2}):(\d{2})$/.exec(row.value ?? '');
153
+ if (m) {
154
+ const then = Date.UTC(+m[1], +m[2] - 1, +m[3], +m[4], +m[5], +m[6]);
155
+ const d = new Date(then);
156
+ const intact = Number.isFinite(then)
157
+ && d.getUTCFullYear() === +m[1] && d.getUTCMonth() === +m[2] - 1 && d.getUTCDate() === +m[3]
158
+ && d.getUTCHours() === +m[4] && d.getUTCMinutes() === +m[5] && d.getUTCSeconds() === +m[6];
159
+ if (intact && then <= Date.now() + 5 * 60 * 1000)
160
+ return;
161
+ }
162
+ handle
163
+ .prepare("UPDATE memesh_metadata SET value = datetime('now') WHERE key = 'hook_runs_since'")
164
+ .run();
165
+ return;
166
+ }
167
+ handle
168
+ .prepare("INSERT OR IGNORE INTO memesh_metadata (key, value) VALUES ('hook_runs_since', datetime('now'))")
169
+ .run();
170
+ }
171
+ catch (err) {
172
+ try {
173
+ process.stderr.write(`MeMesh: could not stamp hook_runs_since (${err instanceof Error ? err.message : String(err)}). ` +
174
+ `Reads are unaffected; doctor's hook-activity tracking starts once the database is writable.\n`);
175
+ }
176
+ catch { }
177
+ }
178
+ }
86
179
  export function openDatabase(dbPath) {
87
180
  if (db)
88
181
  return db;
@@ -93,7 +186,7 @@ export function openDatabase(dbPath) {
93
186
  fs.chmodSync(dir, 0o700);
94
187
  }
95
188
  catch { }
96
- const opening = new Database(resolvedPath);
189
+ const opening = new MemeshDatabase(resolvedPath, { allowExtension: true });
97
190
  try {
98
191
  initialiseDatabase(opening, resolvedPath);
99
192
  }
@@ -107,11 +200,32 @@ export function openDatabase(dbPath) {
107
200
  db = opening;
108
201
  return db;
109
202
  }
203
+ function isReadonlyDbError(err) {
204
+ const msg = err instanceof Error ? err.message : String(err);
205
+ return /readonly database|SQLITE_READONLY/i.test(msg);
206
+ }
110
207
  function initialiseDatabase(db, resolvedPath) {
111
208
  db.pragma('journal_mode = WAL');
112
209
  db.pragma('foreign_keys = ON');
210
+ try {
211
+ migrateToCurrentSchema(db, resolvedPath);
212
+ }
213
+ catch (err) {
214
+ if (!isReadonlyDbError(err))
215
+ throw err;
216
+ try {
217
+ process.stderr.write('MeMesh: the database file is read-only, so schema migration was skipped — ' +
218
+ 'opened for reads only. Capture and migrations resume when the file is writable.\n');
219
+ }
220
+ catch { }
221
+ }
222
+ return db;
223
+ }
224
+ function migrateToCurrentSchema(db, resolvedPath) {
113
225
  db.exec(SCHEMA_SQL);
114
226
  db.exec(FTS_SQL);
227
+ ensureTagsUniqueIndex(db);
228
+ ensureHookRunsSince(db);
115
229
  try {
116
230
  process.umask(0o077);
117
231
  }
@@ -160,10 +274,24 @@ function initialiseDatabase(db, resolvedPath) {
160
274
  ensureLlmTelemetryTable(db);
161
275
  runAutoTelemetryPrune(db);
162
276
  ensureFtsSegmentation(db);
163
- sqliteVec.load(db);
164
- const { dimension: targetDim, confident: dimensionKnown } = resolveEmbeddingDimension();
165
- ensureVecTable(db, resolvedPath, targetDim, dimensionKnown);
166
- return db;
277
+ let vectorIndexAvailable = true;
278
+ db.enableLoadExtension(true);
279
+ try {
280
+ sqliteVec.load(db);
281
+ }
282
+ catch (err) {
283
+ vectorIndexAvailable = false;
284
+ const detail = err instanceof Error ? err.message : String(err);
285
+ process.stderr.write(`MeMesh: sqlite-vec could not be loaded (${detail}).\n` +
286
+ 'MeMesh: recall will use FTS5 keyword search only. `memesh doctor` explains this row.\n');
287
+ }
288
+ finally {
289
+ db.enableLoadExtension(false);
290
+ }
291
+ if (vectorIndexAvailable) {
292
+ const { dimension: targetDim, confident: dimensionKnown } = resolveEmbeddingDimension();
293
+ ensureVecTable(db, resolvedPath, targetDim, dimensionKnown);
294
+ }
167
295
  }
168
296
  export const FTS_SEGMENTATION_VERSION = 3;
169
297
  const MIGRATION_RETRY_BACKOFF_MS = 24 * 60 * 60 * 1000;
@@ -342,6 +470,16 @@ function ensureDreamProposalsTable(db) {
342
470
  CREATE INDEX IF NOT EXISTS idx_dream_proposals_status ON dream_proposals(status);
343
471
  CREATE INDEX IF NOT EXISTS idx_dream_proposals_project ON dream_proposals(project);
344
472
  `);
473
+ const dpCols = db.prepare("PRAGMA table_info(dream_proposals)").all();
474
+ if (!dpCols.some((c) => c.name === 'source_kind')) {
475
+ try {
476
+ db.exec("ALTER TABLE dream_proposals ADD COLUMN source_kind TEXT NOT NULL DEFAULT 'entities'");
477
+ }
478
+ catch (err) {
479
+ if (!String(err.message).includes('duplicate column name'))
480
+ throw err;
481
+ }
482
+ }
345
483
  }
346
484
  function ensureLlmTelemetryTable(db) {
347
485
  db.exec(`
@@ -384,7 +522,7 @@ function runAutoTelemetryPrune(db) {
384
522
  db.prepare('INSERT OR REPLACE INTO memesh_metadata (key, value) VALUES (?, ?)').run(TELEMETRY_PRUNE_MARKER, new Date().toISOString());
385
523
  }
386
524
  function backfillSignalScores(db) {
387
- const MARKER = 'signal_score_backfill_v1';
525
+ const MARKER = 'signal_score_backfill_v2';
388
526
  const done = db.prepare("SELECT value FROM memesh_metadata WHERE key = ?").get(MARKER);
389
527
  if (done)
390
528
  return;
@@ -401,10 +539,20 @@ function backfillSignalScores(db) {
401
539
  let skipped = 0;
402
540
  for (const row of rows) {
403
541
  let metadata;
404
- try {
405
- metadata = row.metadata ? JSON.parse(row.metadata) : {};
542
+ if (row.metadata) {
543
+ try {
544
+ metadata = JSON.parse(row.metadata);
545
+ }
546
+ catch {
547
+ skipped++;
548
+ continue;
549
+ }
550
+ if (typeof metadata !== 'object' || metadata === null || Array.isArray(metadata)) {
551
+ skipped++;
552
+ continue;
553
+ }
406
554
  }
407
- catch {
555
+ else {
408
556
  metadata = {};
409
557
  }
410
558
  if (typeof metadata.signal_score === 'number') {
package/dist/db.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,SAAS,MAAM,YAAY,CAAC;AACxC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,IAAI,EAAE,GAA0B,IAAI,CAAC;AAErC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmGlB,CAAC;AAEF,MAAM,OAAO,GAAG;;;;;;;;;;CAUf,CAAC;AAcF,SAAS,qBAAqB,CAAC,MAAsB;IACnD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM;aACnB,OAAO,CAAC,0FAA0F,CAAC;aACnG,GAAG,EAAE,CAAC;QACT,IAAI,OAAO;YAAE,OAAO;QASpB,MAAM,CAAC,IAAI,CACT,mBAAmB;YACjB,uFAAuF;YACvF,wFAAwF;YACxF,SAAS,CACZ,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAA2B,CAAC;QACpE,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mDAAmD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;gBACtG,6EAA6E,CAChF,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC,CAAwC,CAAC;IACpD,CAAC;AACH,CAAC;AAkBD,SAAS,mBAAmB,CAAC,MAAsB;IACjD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM;aACf,OAAO,CAAC,iEAAiE,CAAC;aAC1E,GAAG,EAAmC,CAAC;QAC1C,IAAI,GAAG,EAAE,CAAC;YAQR,MAAM,CAAC,GAAG,sDAAsD,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACvF,IAAI,CAAC,EAAE,CAAC;gBACN,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpE,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;uBAC/B,CAAC,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;uBACzF,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7F,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI;oBAAE,OAAO;YAC3D,CAAC;YACD,MAAM;iBACH,OAAO,CAAC,kFAAkF,CAAC;iBAC3F,GAAG,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QACD,MAAM;aACH,OAAO,CAAC,gGAAgG,CAAC;aACzG,GAAG,EAAE,CAAC;IACX,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4CAA4C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;gBAC/F,+FAA+F,CAClG,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC,CAAwC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAe;IAC1C,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAElB,MAAM,YAAY,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC;IAE3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACvC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,IAAI,CAAC;QAAC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAiB,CAAC;IAmB3D,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,YAAY,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,IAAI,CAAC;QACH,kBAAkB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC;YAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAA4B,CAAC;QAC7D,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,EAAE,GAAG,OAAO,CAAC;IACb,OAAO,EAAE,CAAC;AACZ,CAAC;AAYD,SAAS,iBAAiB,CAAC,GAAY;IACrC,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7D,OAAO,oCAAoC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAkB,EAAE,YAAoB;IAClE,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAW/B,IAAI,CAAC;QACH,sBAAsB,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;YAAE,MAAM,GAAG,CAAC;QACvC,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4EAA4E;gBAC1E,mFAAmF,CACtF,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC,CAAmB,CAAC;IAC/B,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AASD,SAAS,sBAAsB,CAAC,EAAkB,EAAE,YAAoB;IACtE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjB,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAC1B,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAexB,IAAI,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAiB,CAAC;IACvD,KAAK,MAAM,MAAM,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC;YAAC,EAAE,CAAC,SAAS,CAAC,GAAG,YAAY,GAAG,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;QAAC,CAAC;QACxD,MAAM,CAAC,CAA+C,CAAC;IACzD,CAAC;IAaD,MAAM,SAAS,GAAG,CAAC,GAAW,EAAQ,EAAE;QACtC,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,MAAM,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,GAAG,EAAuB,CAAC;IACrF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC9C,SAAS,CAAC,uEAAuE,CAAC,CAAC;QACnF,EAAE,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IAChF,CAAC;IAGD,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,GAAG,EAAuB,CAAC;IACzF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,EAAE,CAAC;QACxD,SAAS,CAAC,gEAAgE,CAAC,CAAC;QAC5E,SAAS,CAAC,4DAA4D,CAAC,CAAC;QACxE,SAAS,CAAC,6DAA6D,CAAC,CAAC;QACzE,SAAS,CAAC,sDAAsD,CAAC,CAAC;QAClE,SAAS,CAAC,uDAAuD,CAAC,CAAC;IACrE,CAAC;IAGD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC;QACrD,SAAS,CAAC,mEAAmE,CAAC,CAAC;QAC/E,EAAE,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;IACtF,CAAC;IAGD,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,GAAG,EAAuB,CAAC;IACxF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,EAAE,CAAC;QACtD,SAAS,CAAC,+DAA+D,CAAC,CAAC;QAC3E,SAAS,CAAC,iEAAiE,CAAC,CAAC;IAC/E,CAAC;IAGD,YAAY,CAAC,EAAE,CAAC,CAAC;IAQjB,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAOzB,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAO9B,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAM5B,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAM1B,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAyB1B,IAAI,oBAAoB,GAAG,IAAI,CAAC;IAChC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC;QACH,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,oBAAoB,GAAG,KAAK,CAAC;QAC7B,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,2CAA2C,MAAM,MAAM;YACvD,wFAAwF,CACzF,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,oBAAoB,EAAE,CAAC;QAQzB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,yBAAyB,EAAE,CAAC;QACxF,cAAc,CAAC,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAyBD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAgB1C,MAAM,0BAA0B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAwCvD,SAAS,kBAAkB,CAAC,GAAY;IACtC,MAAM,IAAI,GAAI,GAAyB,EAAE,IAAI,IAAI,EAAE,CAAC;IACpD,MAAM,GAAG,GAAI,GAA4B,EAAE,OAAO,IAAI,EAAE,CAAC;IACzD,OAAO,CACL,2CAA2C,CAAC,IAAI,CAAC,IAAI,CAAC;QACtD,+DAA+D,CAAC,IAAI,CAAC,GAAG,CAAC,CAC1E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,EAAkB,EAClB,IAKC;IAED,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjD,MAAM,UAAU,GAAG,GAAG,GAAG,eAAe,CAAC;IAEzC,MAAM,UAAU,GAAG,CAAC,CAAS,EAAsB,EAAE,CAClD,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,CAAC,CAEtD,EAAE,KAAK,CAAC;IAKxB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,OAAO;QAAE,OAAO,KAAK,CAAC;IAE5D,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,GAAG,0BAA0B,EAAE,CAAC;QACvF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAGlB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,OAAO;gBAAE,OAAO;YAExD,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEjD,EAAE,CAAC,OAAO,CAAC,mEAAmE,CAAC,CAAC,GAAG,CACjF,GAAG,EACH,MAAM,CAAC,OAAO,CAAC,CAChB,CAAC;YACF,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QAOb,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,WAAW,QAAQ,cAAc,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;gBACpF,sEAAsE,CACzE,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QAKD,IAAI,CAAC;YACH,EAAE,CAAC,OAAO,CAAC,mEAAmE,CAAC,CAAC,GAAG,CACjF,UAAU,EACV,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CACnB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC,CAA4B,CAAC;QAEtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,WAAW,QAAQ,YAAY,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;YAClF,gEAAgE;YAChE,qEAAqE,CACxE,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,EAAkB;IAC/C,gBAAgB,CAAC,EAAE,EAAE;QACnB,GAAG,EAAE,0BAA0B;QAC/B,OAAO,EAAE,wBAAwB;QACjC,QAAQ,EAAE,sBAAsB;QAChC,OAAO,EAAE,eAAe;KACzB,CAAC,CAAC;AACL,CAAC;AAwBD,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC,SAAS,eAAe,CAAC,EAAkB;IA2BzC,EAAE,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAExE,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB;;;;;;cAMU,CACX,CAAC;IAEF,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,SAAS,CAAC;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,qBAAqB,CAIlD,CAAC;QACH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM;QAE7B,KAAK,MAAM,GAAG,IAAI,IAAI;YAAE,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACpE,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAEnC,IAAI,IAAI,CAAC,MAAM,GAAG,qBAAqB;YAAE,MAAM;IACjD,CAAC;AACH,CAAC;AAkBD,MAAM,UAAU,UAAU;IACxB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAmB/B,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;QACxB,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1B,QAAQ;aACL,OAAO,CAAC,mEAAmE,CAAC;aAC5E,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACrE,QAAQ,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAC/D,uCAAuC,CACxC,CAAC;IACJ,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAEf,MAAM,EAAE,CAAC,EAAE,GAAG,QAAQ;SACnB,OAAO,CAAC,4DAA4D,CAAC;SACrE,GAAG,EAAmB,CAAC;IAC1B,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AACzB,CAAC;AAeD,IAAI,uBAAuB,GAAkB,IAAI,CAAC;AAuBlD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAc,EACd,SAAiC;IAEjC,IAAI,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,uBAAuB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC;AAMD,SAAS,2BAA2B,CAAC,YAAoB;IACvD,MAAM,OAAO,GAAG,uBAAuB,CAAC;IACxC,uBAAuB,GAAG,IAAI,CAAC;IAC/B,OAAO,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACpE,CAAC;AAUD,SAAS,cAAc,CACrB,EAAkB,EAClB,YAAoB,EACpB,SAAiB,EACjB,cAAc,GAAG,IAAI;IAMrB,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,YAAY,CAAC,CAAC;IAEnE,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAC1B,qEAAqE,CACtE,CAAC,GAAG,EAAmC,CAAC;IAEzC,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjE,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAC1B,2EAA2E,CAC5E,CAAC,GAAG,EAAE,CAAC;IAER,IAAI,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IAeD,IAAI,SAAS,IAAI,CAAC,cAAc,EAAE,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kFAAkF;YAChF,YAAY,UAAU,4DAA4D;YAClF,kDAAkD,CACrD,CAAC;QACF,OAAO;IACT,CAAC;IA6BD,IACE,SAAS;QACT,UAAU,KAAK,CAAC;QAChB,UAAU,KAAK,SAAS;QACxB,CAAC,gBAAgB,EACjB,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,iCAAiC,UAAU,kCAAkC;YAC3E,0BAA0B,SAAS,6CAA6C;YAChF,sEAAsE;YACtE,+EAA+E;YAC/E,sDAAsD,SAAS,oBAAoB,CACtF,CAAC;QACF,OAAO;IACT,CAAC;IAQD,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QAClB,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wCAAwC,UAAU,MAAM,SAAS,+BAA+B;gBAChG,gGAAgG;gBAChG,2EAA2E,CAC5E,CAAC;YACF,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAGnC,EAAE,CAAC,OAAO,CACR,mFAAmF,CACpF,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QAClG,CAAC;QAED,EAAE,CAAC,IAAI,CAAC;;0BAEc,SAAS;;KAE9B,CAAC,CAAC;QAEH,EAAE,CAAC,OAAO,CACR,uFAAuF,CACxF,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CACpB,iEAAiE,CAClE,CAAC,GAAG,EAAmC,CAAC;QACzC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,IAAI,CAAC,EAAE;QAAE,OAAO;IAChB,EAAE,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC,GAAG,EAAE,CAAC;AAChF,CAAC;AAsBD,SAAS,yBAAyB,CAAC,EAAkB;IACnD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;GAgBP,CAAC,CAAC;IASH,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAAuB,CAAC;IAC3F,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC;QACjG,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YAGb,IAAI,CAAC,MAAM,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAAE,MAAM,GAAG,CAAC;QACnF,CAAC;IACH,CAAC;AACH,CAAC;AAiBD,SAAS,uBAAuB,CAAC,EAAkB;IACjD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;GAkBP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,2BAA2B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,4BAA4B,GAAG,GAAG,CAAC;AACzC,MAAM,sBAAsB,GAAG,yBAAyB,CAAC;AAczD,SAAS,qBAAqB,CAAC,EAAkB;IAE/C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB,iDAAiD,CAClD,CAAC,GAAG,CAAC,sBAAsB,CAAkC,CAAC;IAE/D,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5D,IAAI,OAAO,GAAG,2BAA2B;YAAE,OAAO;IACpD,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,IAAI,CACxB,IAAI,CAAC,GAAG,EAAE,GAAG,4BAA4B,GAAG,QAAQ,CACrD,CAAC,WAAW,EAAE,CAAC;IAChB,IAAI,CAAC;QACH,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO;IACT,CAAC;IAED,EAAE,CAAC,OAAO,CACR,mEAAmE,CACpE,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AAC1D,CAAC;AAmBD,SAAS,oBAAoB,CAAC,EAAkB;IAW9C,MAAM,MAAM,GAAG,0BAA0B,CAAC;IAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB,iDAAiD,CAClD,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACd,IAAI,IAAI;QAAE,OAAO;IAEjB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB,+CAA+C,CAChD,CAAC,GAAG,EAAgF,CAAC;IAEtF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,EAAE,CAAC,OAAO,CACR,mEAAmE,CACpE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC;IACnF,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC;IAE/E,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QAC7B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,QAAiC,CAAC;YACtC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAMjB,IAAI,CAAC;oBAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAA4B,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC;oBAAC,OAAO,EAAE,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBACtG,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAAC,OAAO,EAAE,CAAC;oBAAC,SAAS;gBAAC,CAAC;YAC5G,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,EAAE,CAAC;YAChB,CAAC;YACD,IAAI,OAAO,QAAQ,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;gBAC9C,OAAO,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YACD,MAAM,YAAY,GAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAgC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC7F,MAAM,IAAI,GAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAA4B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC7E,QAAQ,CAAC,YAAY,GAAG,kBAAkB,CAAC;gBACzC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,YAAY;gBACZ,IAAI;aACL,CAAC,CAAC;YACH,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACjD,MAAM,EAAE,CAAC;QACX,CAAC;QACD,EAAE,CAAC,OAAO,CACR,mEAAmE,CACpE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IACH,EAAE,EAAE,CAAC;AACP,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,IAAI,EAAE,EAAE,CAAC;QACP,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,EAAE,GAAG,IAAI,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAChD,OAAO,EAAE,CAAC;AACZ,CAAC;AAQD,MAAM,UAAU,cAAc;IAC5B,OAAO,EAAE,KAAK,IAAI,CAAC;AACrB,CAAC"}
@@ -1,9 +1,9 @@
1
- import Database from 'better-sqlite3';
1
+ import type { MemeshDatabase } from './storage/sqlite.js';
2
2
  export type { Entity, Relation, CreateEntityInput, SearchOptions } from './core/types.js';
3
3
  import type { Entity, Relation, CreateEntityInput, SearchOptions } from './core/types.js';
4
4
  export declare class KnowledgeGraph {
5
5
  private db;
6
- constructor(db: Database.Database);
6
+ constructor(db: MemeshDatabase);
7
7
  updateEntityMetadata(name: string, updater: (currentMetadata: Record<string, unknown>) => Record<string, unknown> | null | undefined): void;
8
8
  createEntity(name: string, type: string, opts?: {
9
9
  observations?: string[];
@@ -36,6 +36,7 @@ export declare class KnowledgeGraph {
36
36
  removeObservation(entityName: string, observationContent: string): {
37
37
  removed: boolean;
38
38
  remainingObservations: number;
39
+ entityFound: boolean;
39
40
  };
40
41
  deleteEntity(name: string): {
41
42
  deleted: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge-graph.d.ts","sourceRoot":"","sources":["../src/knowledge-graph.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAa,MAAM,iBAAiB,CAAC;AA0PrG,qBAAa,cAAc;IACb,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAEzC,oBAAoB,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GAChG,IAAI;IAcP,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,SAAS,CAAC,EAAE,MAAM,CAAC;QAUnB,aAAa,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;KACzC,GACA,MAAM;IA6HT,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,IAAI;IAcxD,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GACnB,IAAI;IA0BP,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAsCtC,gBAAgB,CACd,GAAG,EAAE,MAAM,EAAE,EACb,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GACrE,MAAM,EAAE;IAyGX,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE;IAkB5C,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,EAAE;IA4JtD,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAQtC,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAI9C,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IA6BnF,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAejG,OAAO,CAAC,eAAe;IAiCvB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAoBnC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE;IAgC1F,iBAAiB,CACf,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,GACzB;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,qBAAqB,EAAE,MAAM,CAAA;KAAE;IA6CtD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;IA+BhD,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,UAAU;CAcnB"}
1
+ {"version":3,"file":"knowledge-graph.d.ts","sourceRoot":"","sources":["../src/knowledge-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAa,MAAM,iBAAiB,CAAC;AA2PrG,qBAAa,cAAc;IACb,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc;IAEtC,oBAAoB,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GAChG,IAAI;IAcP,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,SAAS,CAAC,EAAE,MAAM,CAAC;QAUnB,aAAa,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;KACzC,GACA,MAAM;IAyJT,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,IAAI;IAcxD,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GACnB,IAAI;IA0BP,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAsCtC,gBAAgB,CACd,GAAG,EAAE,MAAM,EAAE,EACb,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GACrE,MAAM,EAAE;IAyGX,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE;IAkB5C,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,EAAE;IA4JtD,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAQtC,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAI9C,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IA6BnF,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAejG,OAAO,CAAC,eAAe;IAiCvB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAoBnC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE;IAkC1F,iBAAiB,CACf,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,GACzB;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,qBAAqB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE;IAkD5E,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;IA6BhD,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,UAAU;CAcnB"}
@@ -1,6 +1,7 @@
1
1
  import { findConflicts, trackAccess } from './storage/conflicts.js';
2
2
  import { insertFtsRow, removeFromFts, tokenizeQuery, renderMatchExpression, registerNfcFunction, SQL_NFC_FUNCTION, } from './storage/fts-index.js';
3
3
  import { computeSignalScore } from './core/signal-scorer.js';
4
+ import { hasVectorIndex } from './storage/vector-index.js';
4
5
  const MAX_QUERY_TERMS = 32;
5
6
  function buildMatchExpression(db, query) {
6
7
  const terms = tokenizeQuery(query);
@@ -85,9 +86,21 @@ export class KnowledgeGraph {
85
86
  .run(name, type, JSON.stringify(incomingMetadata), opts?.namespace ?? 'personal');
86
87
  const isNewEntity = insertResult.changes > 0;
87
88
  const row = this.db
88
- .prepare('SELECT id, status FROM entities WHERE name = ?')
89
+ .prepare('SELECT id, status, namespace FROM entities WHERE name = ?')
89
90
  .get(name);
90
91
  const entityId = row.id;
92
+ const previousNamespace = row.namespace ?? 'personal';
93
+ const requestedNamespace = opts?.namespace;
94
+ if (!isNewEntity && requestedNamespace !== undefined && requestedNamespace !== previousNamespace) {
95
+ this.db
96
+ .prepare('UPDATE entities SET namespace = ? WHERE id = ?')
97
+ .run(requestedNamespace, entityId);
98
+ this.updateEntityMetadata(name, (meta) => ({
99
+ ...meta,
100
+ previous_namespace: previousNamespace,
101
+ namespace_moved_at: new Date().toISOString(),
102
+ }));
103
+ }
91
104
  const wasArchived = !isNewEntity && row.status === 'archived';
92
105
  if (wasArchived) {
93
106
  this.db
@@ -458,13 +471,11 @@ export class KnowledgeGraph {
458
471
  .all(row.id);
459
472
  const obsText = allObs.map((o) => o.content).join(' ');
460
473
  removeFromFts(this.db, row.id, name, obsText);
461
- try {
474
+ if (hasVectorIndex(this.db)) {
462
475
  this.db
463
476
  .prepare('DELETE FROM entities_vec WHERE rowid = ?')
464
477
  .run(BigInt(row.id));
465
478
  }
466
- catch {
467
- }
468
479
  this.db
469
480
  .prepare("UPDATE entities SET status = 'archived' WHERE id = ?")
470
481
  .run(row.id);
@@ -475,7 +486,7 @@ export class KnowledgeGraph {
475
486
  .prepare('SELECT id FROM entities WHERE name = ?')
476
487
  .get(entityName);
477
488
  if (!row)
478
- return { removed: false, remainingObservations: 0 };
489
+ return { removed: false, remainingObservations: 0, entityFound: false };
479
490
  const prevObs = this.db
480
491
  .prepare('SELECT content FROM observations WHERE entity_id = ?')
481
492
  .all(row.id);
@@ -484,13 +495,13 @@ export class KnowledgeGraph {
484
495
  .prepare('DELETE FROM observations WHERE entity_id = ? AND content = ?')
485
496
  .run(row.id, observationContent);
486
497
  if (deleteResult.changes === 0) {
487
- return { removed: false, remainingObservations: prevObs.length };
498
+ return { removed: false, remainingObservations: prevObs.length, entityFound: true };
488
499
  }
489
500
  this.rebuildFts(row.id, entityName, prevObsText);
490
501
  const remaining = this.db
491
502
  .prepare('SELECT COUNT(*) as c FROM observations WHERE entity_id = ?')
492
503
  .get(row.id);
493
- return { removed: true, remainingObservations: remaining.c };
504
+ return { removed: true, remainingObservations: remaining.c, entityFound: true };
494
505
  }
495
506
  deleteEntity(name) {
496
507
  const row = this.db
@@ -503,13 +514,11 @@ export class KnowledgeGraph {
503
514
  .all(row.id);
504
515
  const obsText = allObs.map((o) => o.content).join(' ');
505
516
  removeFromFts(this.db, row.id, name, obsText);
506
- try {
517
+ if (hasVectorIndex(this.db)) {
507
518
  this.db
508
519
  .prepare('DELETE FROM entities_vec WHERE rowid = ?')
509
520
  .run(BigInt(row.id));
510
521
  }
511
- catch {
512
- }
513
522
  this.db.prepare('DELETE FROM entities WHERE id = ?').run(row.id);
514
523
  return { deleted: true };
515
524
  }