@danielmarbach/mnemonic-mcp 0.27.2 → 0.29.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.
Files changed (250) hide show
  1. package/CHANGELOG.md +30 -1
  2. package/README.md +7 -0
  3. package/build/auto-relate.d.ts.map +1 -1
  4. package/build/auto-relate.js +11 -5
  5. package/build/auto-relate.js.map +1 -1
  6. package/build/brands.d.ts +38 -0
  7. package/build/brands.d.ts.map +1 -0
  8. package/build/brands.js +51 -0
  9. package/build/brands.js.map +1 -0
  10. package/build/cache.d.ts.map +1 -1
  11. package/build/cache.js +10 -12
  12. package/build/cache.js.map +1 -1
  13. package/build/cli/import-claude-memory.d.ts +4 -0
  14. package/build/cli/import-claude-memory.d.ts.map +1 -0
  15. package/build/cli/import-claude-memory.js +146 -0
  16. package/build/cli/import-claude-memory.js.map +1 -0
  17. package/build/cli/migrate.d.ts +2 -0
  18. package/build/cli/migrate.d.ts.map +1 -0
  19. package/build/cli/migrate.js +104 -0
  20. package/build/cli/migrate.js.map +1 -0
  21. package/build/config.d.ts +2 -0
  22. package/build/config.d.ts.map +1 -1
  23. package/build/config.js +52 -23
  24. package/build/config.js.map +1 -1
  25. package/build/consolidate.d.ts +2 -1
  26. package/build/consolidate.d.ts.map +1 -1
  27. package/build/consolidate.js +3 -6
  28. package/build/consolidate.js.map +1 -1
  29. package/build/context.d.ts +5 -0
  30. package/build/context.d.ts.map +1 -0
  31. package/build/context.js +47 -0
  32. package/build/context.js.map +1 -0
  33. package/build/date-utils.d.ts +3 -0
  34. package/build/date-utils.d.ts.map +1 -0
  35. package/build/date-utils.js +10 -0
  36. package/build/date-utils.js.map +1 -0
  37. package/build/domain-errors.d.ts +49 -0
  38. package/build/domain-errors.d.ts.map +1 -0
  39. package/build/domain-errors.js +99 -0
  40. package/build/domain-errors.js.map +1 -0
  41. package/build/embeddings.d.ts +2 -1
  42. package/build/embeddings.d.ts.map +1 -1
  43. package/build/embeddings.js +39 -9
  44. package/build/embeddings.js.map +1 -1
  45. package/build/error-utils.d.ts +33 -0
  46. package/build/error-utils.d.ts.map +1 -0
  47. package/build/error-utils.js +65 -0
  48. package/build/error-utils.js.map +1 -0
  49. package/build/git-constants.d.ts +2 -0
  50. package/build/git-constants.d.ts.map +1 -0
  51. package/build/git-constants.js +2 -0
  52. package/build/git-constants.js.map +1 -0
  53. package/build/git.d.ts +27 -18
  54. package/build/git.d.ts.map +1 -1
  55. package/build/git.js +45 -24
  56. package/build/git.js.map +1 -1
  57. package/build/helpers/embed.d.ts +13 -0
  58. package/build/helpers/embed.d.ts.map +1 -0
  59. package/build/helpers/embed.js +68 -0
  60. package/build/helpers/embed.js.map +1 -0
  61. package/build/helpers/git-commit.d.ts +43 -0
  62. package/build/helpers/git-commit.d.ts.map +1 -0
  63. package/build/helpers/git-commit.js +129 -0
  64. package/build/helpers/git-commit.js.map +1 -0
  65. package/build/helpers/index.d.ts +19 -0
  66. package/build/helpers/index.d.ts.map +1 -0
  67. package/build/helpers/index.js +83 -0
  68. package/build/helpers/index.js.map +1 -0
  69. package/build/helpers/persistence.d.ts +34 -0
  70. package/build/helpers/persistence.d.ts.map +1 -0
  71. package/build/helpers/persistence.js +177 -0
  72. package/build/helpers/persistence.js.map +1 -0
  73. package/build/helpers/project.d.ts +21 -0
  74. package/build/helpers/project.d.ts.map +1 -0
  75. package/build/helpers/project.js +75 -0
  76. package/build/helpers/project.js.map +1 -0
  77. package/build/helpers/vault.d.ts +50 -0
  78. package/build/helpers/vault.d.ts.map +1 -0
  79. package/build/helpers/vault.js +196 -0
  80. package/build/helpers/vault.js.map +1 -0
  81. package/build/index.js +12 -5467
  82. package/build/index.js.map +1 -1
  83. package/build/lexical.d.ts +1 -1
  84. package/build/lexical.d.ts.map +1 -1
  85. package/build/lexical.js +2 -3
  86. package/build/lexical.js.map +1 -1
  87. package/build/markdown-ast.d.ts.map +1 -1
  88. package/build/markdown-ast.js +4 -2
  89. package/build/markdown-ast.js.map +1 -1
  90. package/build/migration.d.ts.map +1 -1
  91. package/build/migration.js +12 -8
  92. package/build/migration.js.map +1 -1
  93. package/build/project-introspection.d.ts +4 -4
  94. package/build/project-introspection.d.ts.map +1 -1
  95. package/build/project-introspection.js +71 -27
  96. package/build/project-introspection.js.map +1 -1
  97. package/build/project-memory-policy.d.ts.map +1 -1
  98. package/build/project-memory-policy.js +38 -3
  99. package/build/project-memory-policy.js.map +1 -1
  100. package/build/project.d.ts +2 -1
  101. package/build/project.d.ts.map +1 -1
  102. package/build/project.js +29 -41
  103. package/build/project.js.map +1 -1
  104. package/build/projections.d.ts.map +1 -1
  105. package/build/projections.js +3 -2
  106. package/build/projections.js.map +1 -1
  107. package/build/prompts.d.ts +3 -0
  108. package/build/prompts.d.ts.map +1 -0
  109. package/build/prompts.js +138 -0
  110. package/build/prompts.js.map +1 -0
  111. package/build/provenance.d.ts +9 -3
  112. package/build/provenance.d.ts.map +1 -1
  113. package/build/provenance.js +46 -15
  114. package/build/provenance.js.map +1 -1
  115. package/build/recall.d.ts +2 -1
  116. package/build/recall.d.ts.map +1 -1
  117. package/build/recall.js +30 -14
  118. package/build/recall.js.map +1 -1
  119. package/build/relationships.d.ts +2 -2
  120. package/build/relationships.d.ts.map +1 -1
  121. package/build/relationships.js +39 -43
  122. package/build/relationships.js.map +1 -1
  123. package/build/semantic-patch.d.ts.map +1 -1
  124. package/build/semantic-patch.js +16 -9
  125. package/build/semantic-patch.js.map +1 -1
  126. package/build/server-context.d.ts +18 -0
  127. package/build/server-context.d.ts.map +1 -0
  128. package/build/server-context.js +2 -0
  129. package/build/server-context.js.map +1 -0
  130. package/build/startup.d.ts +5 -0
  131. package/build/startup.d.ts.map +1 -0
  132. package/build/startup.js +37 -0
  133. package/build/startup.js.map +1 -0
  134. package/build/storage.d.ts +17 -15
  135. package/build/storage.d.ts.map +1 -1
  136. package/build/storage.js +67 -93
  137. package/build/storage.js.map +1 -1
  138. package/build/structured-content.d.ts +115 -74
  139. package/build/structured-content.d.ts.map +1 -1
  140. package/build/structured-content.js +41 -17
  141. package/build/structured-content.js.map +1 -1
  142. package/build/temporal-interpretation.d.ts +2 -1
  143. package/build/temporal-interpretation.d.ts.map +1 -1
  144. package/build/temporal-interpretation.js +15 -8
  145. package/build/temporal-interpretation.js.map +1 -1
  146. package/build/tools/consolidate-helpers.d.ts +55 -0
  147. package/build/tools/consolidate-helpers.d.ts.map +1 -0
  148. package/build/tools/consolidate-helpers.js +815 -0
  149. package/build/tools/consolidate-helpers.js.map +1 -0
  150. package/build/tools/consolidate.d.ts +4 -0
  151. package/build/tools/consolidate.d.ts.map +1 -0
  152. package/build/tools/consolidate.js +127 -0
  153. package/build/tools/consolidate.js.map +1 -0
  154. package/build/tools/detect-project.d.ts +6 -0
  155. package/build/tools/detect-project.d.ts.map +1 -0
  156. package/build/tools/detect-project.js +79 -0
  157. package/build/tools/detect-project.js.map +1 -0
  158. package/build/tools/discover-tags.d.ts +4 -0
  159. package/build/tools/discover-tags.d.ts.map +1 -0
  160. package/build/tools/discover-tags.js +236 -0
  161. package/build/tools/discover-tags.js.map +1 -0
  162. package/build/tools/forget.d.ts +4 -0
  163. package/build/tools/forget.d.ts.map +1 -0
  164. package/build/tools/forget.js +123 -0
  165. package/build/tools/forget.js.map +1 -0
  166. package/build/tools/get-project-identity.d.ts +4 -0
  167. package/build/tools/get-project-identity.d.ts.map +1 -0
  168. package/build/tools/get-project-identity.js +59 -0
  169. package/build/tools/get-project-identity.js.map +1 -0
  170. package/build/tools/get.d.ts +4 -0
  171. package/build/tools/get.d.ts.map +1 -0
  172. package/build/tools/get.js +115 -0
  173. package/build/tools/get.js.map +1 -0
  174. package/build/tools/index.d.ts +4 -0
  175. package/build/tools/index.d.ts.map +1 -0
  176. package/build/tools/index.js +47 -0
  177. package/build/tools/index.js.map +1 -0
  178. package/build/tools/list.d.ts +4 -0
  179. package/build/tools/list.d.ts.map +1 -0
  180. package/build/tools/list.js +95 -0
  181. package/build/tools/list.js.map +1 -0
  182. package/build/tools/memory-graph.d.ts +4 -0
  183. package/build/tools/memory-graph.d.ts.map +1 -0
  184. package/build/tools/memory-graph.js +84 -0
  185. package/build/tools/memory-graph.js.map +1 -0
  186. package/build/tools/migration.d.ts +5 -0
  187. package/build/tools/migration.d.ts.map +1 -0
  188. package/build/tools/migration.js +158 -0
  189. package/build/tools/migration.js.map +1 -0
  190. package/build/tools/move-memory.d.ts +4 -0
  191. package/build/tools/move-memory.d.ts.map +1 -0
  192. package/build/tools/move-memory.js +170 -0
  193. package/build/tools/move-memory.js.map +1 -0
  194. package/build/tools/policy.d.ts +5 -0
  195. package/build/tools/policy.d.ts.map +1 -0
  196. package/build/tools/policy.js +195 -0
  197. package/build/tools/policy.js.map +1 -0
  198. package/build/tools/project-memory-summary.d.ts +4 -0
  199. package/build/tools/project-memory-summary.d.ts.map +1 -0
  200. package/build/tools/project-memory-summary.js +477 -0
  201. package/build/tools/project-memory-summary.js.map +1 -0
  202. package/build/tools/recall-helpers.d.ts +40 -0
  203. package/build/tools/recall-helpers.d.ts.map +1 -0
  204. package/build/tools/recall-helpers.js +217 -0
  205. package/build/tools/recall-helpers.js.map +1 -0
  206. package/build/tools/recall.d.ts +4 -0
  207. package/build/tools/recall.d.ts.map +1 -0
  208. package/build/tools/recall.js +413 -0
  209. package/build/tools/recall.js.map +1 -0
  210. package/build/tools/recent-memories.d.ts +4 -0
  211. package/build/tools/recent-memories.d.ts.map +1 -0
  212. package/build/tools/recent-memories.js +79 -0
  213. package/build/tools/recent-memories.js.map +1 -0
  214. package/build/tools/relate.d.ts +4 -0
  215. package/build/tools/relate.d.ts.map +1 -0
  216. package/build/tools/relate.js +180 -0
  217. package/build/tools/relate.js.map +1 -0
  218. package/build/tools/remember.d.ts +4 -0
  219. package/build/tools/remember.d.ts.map +1 -0
  220. package/build/tools/remember.js +219 -0
  221. package/build/tools/remember.js.map +1 -0
  222. package/build/tools/set-project-identity.d.ts +4 -0
  223. package/build/tools/set-project-identity.d.ts.map +1 -0
  224. package/build/tools/set-project-identity.js +113 -0
  225. package/build/tools/set-project-identity.js.map +1 -0
  226. package/build/tools/sync.d.ts +4 -0
  227. package/build/tools/sync.d.ts.map +1 -0
  228. package/build/tools/sync.js +127 -0
  229. package/build/tools/sync.js.map +1 -0
  230. package/build/tools/unrelate.d.ts +4 -0
  231. package/build/tools/unrelate.d.ts.map +1 -0
  232. package/build/tools/unrelate.js +179 -0
  233. package/build/tools/unrelate.js.map +1 -0
  234. package/build/tools/update.d.ts +4 -0
  235. package/build/tools/update.d.ts.map +1 -0
  236. package/build/tools/update.js +364 -0
  237. package/build/tools/update.js.map +1 -0
  238. package/build/tools/where-is-memory.d.ts +4 -0
  239. package/build/tools/where-is-memory.d.ts.map +1 -0
  240. package/build/tools/where-is-memory.js +61 -0
  241. package/build/tools/where-is-memory.js.map +1 -0
  242. package/build/validation.d.ts +24 -0
  243. package/build/validation.d.ts.map +1 -0
  244. package/build/validation.js +62 -0
  245. package/build/validation.js.map +1 -0
  246. package/build/vault.d.ts.map +1 -1
  247. package/build/vault.js +38 -47
  248. package/build/vault.js.map +1 -1
  249. package/package.json +5 -2
  250. package/skills/mnemonic-rpi-workflow/SKILL.md +48 -17
@@ -1,5 +1,7 @@
1
1
  import type { NoteProjection } from "./structured-content.js";
2
- export type RelationshipType = "related-to" | "explains" | "example-of" | "supersedes" | "derives-from" | "follows";
2
+ import type { MemoryId, EmbeddingModelId, ISO8601DateString } from "./brands.js";
3
+ export declare const RELATIONSHIP_TYPES: readonly ["related-to", "explains", "example-of", "supersedes", "derives-from", "follows"];
4
+ export type RelationshipType = typeof RELATIONSHIP_TYPES[number];
3
5
  export type NoteLifecycle = "temporary" | "permanent";
4
6
  export type NoteRole = "summary" | "decision" | "plan" | "context" | "reference" | "research" | "review";
5
7
  export type NoteImportance = "high" | "normal" | "low";
@@ -7,11 +9,11 @@ export declare const NOTE_LIFECYCLES: readonly ["temporary", "permanent"];
7
9
  export declare const NOTE_ROLES: readonly ["summary", "decision", "plan", "context", "reference", "research", "review"];
8
10
  export declare const NOTE_IMPORTANCE_LEVELS: readonly ["high", "normal", "low"];
9
11
  export interface Relationship {
10
- id: string;
12
+ id: MemoryId;
11
13
  type: RelationshipType;
12
14
  }
13
15
  export interface Note {
14
- id: string;
16
+ id: MemoryId;
15
17
  title: string;
16
18
  content: string;
17
19
  tags: string[];
@@ -24,16 +26,16 @@ export interface Note {
24
26
  /** Human-readable project name for display */
25
27
  projectName?: string;
26
28
  relatedTo?: Relationship[];
27
- createdAt: string;
28
- updatedAt: string;
29
+ createdAt: ISO8601DateString;
30
+ updatedAt: ISO8601DateString;
29
31
  /** Schema version for forward compatibility (0 = pre-v0.2.0) */
30
32
  memoryVersion?: number;
31
33
  }
32
34
  export interface EmbeddingRecord {
33
- id: string;
34
- model: string;
35
+ id: MemoryId;
36
+ model: EmbeddingModelId;
35
37
  embedding: number[];
36
- updatedAt: string;
38
+ updatedAt: ISO8601DateString;
37
39
  }
38
40
  export declare class Storage {
39
41
  readonly vaultPath: string;
@@ -54,20 +56,20 @@ export declare class Storage {
54
56
  commitAtomicNotesWrite(): Promise<void>;
55
57
  rollbackAtomicNotesWrite(): Promise<void>;
56
58
  writeNote(note: Note): Promise<void>;
57
- readNote(id: string): Promise<Note | null>;
58
- deleteNote(id: string): Promise<boolean>;
59
+ readNote(id: MemoryId): Promise<Note | null>;
60
+ deleteNote(id: MemoryId): Promise<boolean>;
59
61
  listNotes(filter?: {
60
62
  project?: string | null;
61
63
  }): Promise<Note[]>;
62
64
  private serializeNote;
63
65
  writeEmbedding(record: EmbeddingRecord): Promise<void>;
64
- readEmbedding(id: string): Promise<EmbeddingRecord | null>;
66
+ readEmbedding(id: MemoryId): Promise<EmbeddingRecord | null>;
65
67
  listEmbeddings(): Promise<EmbeddingRecord[]>;
66
68
  writeProjection(projection: NoteProjection): Promise<void>;
67
- readProjection(id: string): Promise<NoteProjection | null>;
68
- notePath(id: string): string;
69
- embeddingPath(id: string): string;
70
- projectionPath(id: string): string;
69
+ readProjection(id: MemoryId): Promise<NoteProjection | null>;
70
+ notePath(id: MemoryId): string;
71
+ embeddingPath(id: MemoryId): string;
72
+ projectionPath(id: MemoryId): string;
71
73
  private stagedNotePath;
72
74
  private listNoteIds;
73
75
  private clearAtomicNotesWrite;
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
package/build/storage.js CHANGED
@@ -2,6 +2,11 @@ import fs from "fs/promises";
2
2
  import path from "path";
3
3
  import { randomUUID } from "crypto";
4
4
  import matter from "gray-matter";
5
+ import { validateEmbeddingRecord, validateNoteProjection, validateRelatedTo } from "./validation.js";
6
+ import { memoryId, isoDateString, isValidMemoryId } from "./brands.js";
7
+ import { attempt } from "./error-utils.js";
8
+ import { AtomicWriteInProgressError, MalformedNoteError, InvalidNoteIdError } from "./domain-errors.js";
9
+ export const RELATIONSHIP_TYPES = ["related-to", "explains", "example-of", "supersedes", "derives-from", "follows"];
5
10
  export const NOTE_LIFECYCLES = ["temporary", "permanent"];
6
11
  export const NOTE_ROLES = ["summary", "decision", "plan", "context", "reference", "research", "review"];
7
12
  export const NOTE_IMPORTANCE_LEVELS = ["high", "normal", "low"];
@@ -37,7 +42,7 @@ export class Storage {
37
42
  // ── Notes ──────────────────────────────────────────────────────────────────
38
43
  async beginAtomicNotesWrite() {
39
44
  if (this.stagedNotesDir) {
40
- throw new Error("Atomic notes write already in progress");
45
+ throw new AtomicWriteInProgressError();
41
46
  }
42
47
  this.stagedNotesDir = path.join(this.vaultPath, `.notes-staging-${randomUUID()}`);
43
48
  this.stagedDeletedNoteIds.clear();
@@ -49,20 +54,9 @@ export class Storage {
49
54
  }
50
55
  const stagedDir = this.stagedNotesDir;
51
56
  const stagedFiles = await fs.readdir(stagedDir).catch(() => []);
52
- for (const file of stagedFiles) {
53
- if (!file.endsWith(".md")) {
54
- continue;
55
- }
56
- await fs.rename(path.join(stagedDir, file), path.join(this.notesDir, file));
57
- }
58
- for (const noteId of this.stagedDeletedNoteIds) {
59
- try {
60
- await fs.unlink(this.notePath(noteId));
61
- }
62
- catch {
63
- // already absent
64
- }
65
- }
57
+ const mdFiles = stagedFiles.filter((f) => f.endsWith(".md"));
58
+ await Promise.all(mdFiles.map((file) => fs.rename(path.join(stagedDir, file), path.join(this.notesDir, file))));
59
+ await Promise.allSettled([...this.stagedDeletedNoteIds].map((noteId) => fs.unlink(this.notePath(memoryId(noteId)))));
66
60
  await this.clearAtomicNotesWrite();
67
61
  }
68
62
  async rollbackAtomicNotesWrite() {
@@ -85,51 +79,34 @@ export class Storage {
85
79
  }
86
80
  const stagedPath = this.stagedNotePath(id);
87
81
  if (stagedPath) {
88
- try {
82
+ const result = await attempt("storage:readNote", async () => {
89
83
  const raw = await fs.readFile(stagedPath, "utf-8");
90
84
  return this.parseNote(id, raw);
91
- }
92
- catch {
93
- // fall back to committed note
94
- }
85
+ });
86
+ if (result.ok)
87
+ return result.value;
95
88
  }
96
- try {
89
+ const result = await attempt("storage:readNote", async () => {
97
90
  const raw = await fs.readFile(this.notePath(id), "utf-8");
98
91
  return this.parseNote(id, raw);
99
- }
100
- catch {
101
- return null;
102
- }
92
+ });
93
+ return result.ok ? result.value : null;
103
94
  }
104
95
  async deleteNote(id) {
105
96
  if (this.stagedNotesDir) {
106
97
  this.stagedDeletedNoteIds.add(id);
107
98
  const stagedPath = this.stagedNotePath(id);
108
99
  if (stagedPath) {
109
- try {
110
- await fs.unlink(stagedPath);
111
- }
112
- catch {
113
- // ok
114
- }
100
+ await attempt("storage:deleteStaged", () => fs.unlink(stagedPath));
115
101
  }
116
102
  return true;
117
103
  }
118
- try {
119
- await fs.unlink(this.notePath(id));
120
- try {
121
- await fs.unlink(this.embeddingPath(id));
122
- }
123
- catch { /* ok */ }
124
- try {
125
- await fs.unlink(this.projectionPath(id));
126
- }
127
- catch { /* ok */ }
128
- return true;
129
- }
130
- catch {
131
- return false;
132
- }
104
+ const [noteResult] = await Promise.allSettled([
105
+ fs.unlink(this.notePath(id)),
106
+ fs.unlink(this.embeddingPath(id)),
107
+ fs.unlink(this.projectionPath(id)),
108
+ ]);
109
+ return noteResult.status === "fulfilled";
133
110
  }
134
111
  async listNotes(filter) {
135
112
  const ids = await this.listNoteIds();
@@ -187,87 +164,79 @@ export class Storage {
187
164
  await fs.writeFile(this.embeddingPath(record.id), JSON.stringify(record, null, 2), "utf-8");
188
165
  }
189
166
  async readEmbedding(id) {
190
- try {
191
- const raw = await fs.readFile(this.embeddingPath(id), "utf-8");
192
- return JSON.parse(raw);
193
- }
194
- catch {
167
+ const raw = await attempt("storage:readEmbedding", () => fs.readFile(this.embeddingPath(id), "utf-8"));
168
+ if (!raw.ok)
195
169
  return null;
196
- }
170
+ const parsed = await attempt("storage:readEmbedding", () => JSON.parse(raw.value));
171
+ if (!parsed.ok)
172
+ return null;
173
+ return validateEmbeddingRecord(parsed.value);
197
174
  }
198
175
  async listEmbeddings() {
199
- let files;
200
- try {
201
- files = await fs.readdir(this.embeddingsDir);
202
- }
203
- catch {
204
- return [];
205
- }
176
+ const filesResult = await attempt("storage:listEmbeddings", () => fs.readdir(this.embeddingsDir), []);
177
+ const files = filesResult.ok ? filesResult.value : [];
206
178
  const ids = files
207
179
  .filter((file) => file.endsWith(".json"))
208
- .map((file) => file.replace(/\.json$/, ""));
180
+ .map((file) => memoryId(file.replace(/\.json$/, "")));
209
181
  const records = await Promise.all(ids.map((id) => this.readEmbedding(id)));
210
182
  return records.filter((record) => record !== null);
211
183
  }
212
184
  // ── Projections ────────────────────────────────────────────────────────────
213
185
  async writeProjection(projection) {
214
186
  await fs.mkdir(this.projectionsDir, { recursive: true });
215
- await fs.writeFile(this.projectionPath(projection.noteId), JSON.stringify(projection, null, 2), "utf-8");
187
+ await fs.writeFile(this.projectionPath(memoryId(projection.noteId)), JSON.stringify(projection, null, 2), "utf-8");
216
188
  }
217
189
  async readProjection(id) {
218
- try {
219
- const raw = await fs.readFile(this.projectionPath(id), "utf-8");
220
- return JSON.parse(raw);
221
- }
222
- catch {
190
+ const raw = await attempt("storage:readProjection", () => fs.readFile(this.projectionPath(id), "utf-8"));
191
+ if (!raw.ok)
223
192
  return null;
224
- }
193
+ const parsed = await attempt("storage:readProjection", () => JSON.parse(raw.value));
194
+ if (!parsed.ok)
195
+ return null;
196
+ return validateNoteProjection(parsed.value);
225
197
  }
226
198
  // ── Helpers ────────────────────────────────────────────────────────────────
227
199
  notePath(id) {
200
+ validateNoteId(id);
228
201
  return path.join(this.notesDir, `${id}.md`);
229
202
  }
230
203
  embeddingPath(id) {
204
+ validateNoteId(id);
231
205
  return path.join(this.embeddingsDir, `${id}.json`);
232
206
  }
233
207
  projectionPath(id) {
208
+ validateNoteId(id);
234
209
  return path.join(this.projectionsDir, `${id}.json`);
235
210
  }
236
211
  stagedNotePath(id) {
212
+ validateNoteId(id);
237
213
  return this.stagedNotesDir
238
214
  ? path.join(this.stagedNotesDir, `${id}.md`)
239
215
  : undefined;
240
216
  }
241
217
  async listNoteIds() {
242
218
  const ids = new Set();
243
- try {
244
- const files = await fs.readdir(this.notesDir);
245
- for (const file of files) {
246
- if (file.endsWith(".md")) {
247
- ids.add(file.replace(/\.md$/, ""));
248
- }
219
+ const filesResult = await attempt("storage:listNoteIds", () => fs.readdir(this.notesDir), []);
220
+ const files = filesResult.ok ? filesResult.value : [];
221
+ for (const file of files) {
222
+ if (file.endsWith(".md")) {
223
+ ids.add(file.replace(/\.md$/, ""));
249
224
  }
250
225
  }
251
- catch {
252
- // treat as empty
253
- }
254
226
  if (this.stagedNotesDir) {
255
- try {
256
- const stagedFiles = await fs.readdir(this.stagedNotesDir);
257
- for (const file of stagedFiles) {
258
- if (file.endsWith(".md")) {
259
- ids.add(file.replace(/\.md$/, ""));
260
- }
227
+ const stagedDir = this.stagedNotesDir;
228
+ const stagedResult = await attempt("storage:listStagedNoteIds", () => fs.readdir(stagedDir), []);
229
+ const stagedFiles = stagedResult.ok ? stagedResult.value : [];
230
+ for (const file of stagedFiles) {
231
+ if (file.endsWith(".md")) {
232
+ ids.add(file.replace(/\.md$/, ""));
261
233
  }
262
234
  }
263
- catch {
264
- // treat as empty
265
- }
266
235
  }
267
236
  for (const deletedId of this.stagedDeletedNoteIds) {
268
237
  ids.delete(deletedId);
269
238
  }
270
- return [...ids].sort();
239
+ return [...ids].sort().map(memoryId);
271
240
  }
272
241
  async clearAtomicNotesWrite() {
273
242
  const stagedDir = this.stagedNotesDir;
@@ -279,7 +248,7 @@ export class Storage {
279
248
  }
280
249
  parseNote(id, raw) {
281
250
  if (!raw.trimStart().startsWith("---")) {
282
- throw new Error(`Malformed note '${id}': missing frontmatter`);
251
+ throw new MalformedNoteError(id);
283
252
  }
284
253
  const parsed = matter(raw);
285
254
  return {
@@ -291,9 +260,9 @@ export class Storage {
291
260
  role: normalizeRole(parsed.data["role"]),
292
261
  importance: normalizeImportance(parsed.data["importance"]),
293
262
  alwaysLoad: normalizeAlwaysLoad(parsed.data["alwaysLoad"]),
294
- project: parsed.data["project"],
295
- projectName: parsed.data["projectName"],
296
- relatedTo: parsed.data["relatedTo"],
263
+ project: typeof parsed.data["project"] === "string" ? parsed.data["project"] : undefined,
264
+ projectName: typeof parsed.data["projectName"] === "string" ? parsed.data["projectName"] : undefined,
265
+ relatedTo: validateRelatedTo(parsed.data["relatedTo"]),
297
266
  createdAt: toIsoString(parsed.data["createdAt"]),
298
267
  updatedAt: toIsoString(parsed.data["updatedAt"]),
299
268
  memoryVersion: normalizeMemoryVersion(parsed.data["memoryVersion"]),
@@ -324,11 +293,16 @@ function isNoteRole(value) {
324
293
  function isNoteImportance(value) {
325
294
  return typeof value === "string" && NOTE_IMPORTANCE_LEVELS.includes(value);
326
295
  }
296
+ function validateNoteId(id) {
297
+ if (!isValidMemoryId(id)) {
298
+ throw new InvalidNoteIdError(id);
299
+ }
300
+ }
327
301
  function toIsoString(value) {
328
302
  if (value instanceof Date)
329
- return value.toISOString();
303
+ return isoDateString(value.toISOString());
330
304
  if (typeof value === "string" && value)
331
- return value;
332
- return new Date().toISOString();
305
+ return isoDateString(value);
306
+ return isoDateString(new Date().toISOString());
333
307
  }
334
308
  //# sourceMappingURL=storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}