hippo-memory 0.2.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 (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +305 -0
  3. package/dist/autolearn.d.ts +34 -0
  4. package/dist/autolearn.d.ts.map +1 -0
  5. package/dist/autolearn.js +119 -0
  6. package/dist/autolearn.js.map +1 -0
  7. package/dist/cli.d.ts +21 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +956 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/config.d.ts +16 -0
  12. package/dist/config.d.ts.map +1 -0
  13. package/dist/config.js +35 -0
  14. package/dist/config.js.map +1 -0
  15. package/dist/consolidate.d.ts +24 -0
  16. package/dist/consolidate.d.ts.map +1 -0
  17. package/dist/consolidate.js +133 -0
  18. package/dist/consolidate.js.map +1 -0
  19. package/dist/embeddings.d.ts +39 -0
  20. package/dist/embeddings.d.ts.map +1 -0
  21. package/dist/embeddings.js +184 -0
  22. package/dist/embeddings.js.map +1 -0
  23. package/dist/index.d.ts +11 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +14 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/memory.d.ts +59 -0
  28. package/dist/memory.d.ts.map +1 -0
  29. package/dist/memory.js +118 -0
  30. package/dist/memory.js.map +1 -0
  31. package/dist/search.d.ts +51 -0
  32. package/dist/search.d.ts.map +1 -0
  33. package/dist/search.js +239 -0
  34. package/dist/search.js.map +1 -0
  35. package/dist/shared.d.ts +38 -0
  36. package/dist/shared.d.ts.map +1 -0
  37. package/dist/shared.js +111 -0
  38. package/dist/shared.js.map +1 -0
  39. package/dist/store.d.ts +70 -0
  40. package/dist/store.d.ts.map +1 -0
  41. package/dist/store.js +244 -0
  42. package/dist/store.js.map +1 -0
  43. package/dist/yaml.d.ts +14 -0
  44. package/dist/yaml.d.ts.map +1 -0
  45. package/dist/yaml.js +81 -0
  46. package/dist/yaml.js.map +1 -0
  47. package/package.json +58 -0
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Storage layer for Hippo.
3
+ * Reads/writes MemoryEntry as markdown + YAML frontmatter.
4
+ * Maintains a JSON index for fast lookups.
5
+ */
6
+ import { MemoryEntry, Layer } from './memory.js';
7
+ export interface IndexEntry {
8
+ id: string;
9
+ file: string;
10
+ layer: Layer;
11
+ strength: number;
12
+ tags: string[];
13
+ created: string;
14
+ last_retrieved: string;
15
+ pinned: boolean;
16
+ }
17
+ export interface HippoIndex {
18
+ version: number;
19
+ entries: Record<string, IndexEntry>;
20
+ last_retrieval_ids: string[];
21
+ }
22
+ export declare function getHippoRoot(cwd?: string): string;
23
+ export declare function isInitialized(hippoRoot: string): boolean;
24
+ export declare function initStore(hippoRoot: string): void;
25
+ export declare function loadIndex(hippoRoot: string): HippoIndex;
26
+ export declare function saveIndex(hippoRoot: string, index: HippoIndex): void;
27
+ /**
28
+ * Serialize a MemoryEntry to markdown with YAML frontmatter.
29
+ */
30
+ export declare function serializeEntry(entry: MemoryEntry): string;
31
+ /**
32
+ * Deserialize a markdown file to a MemoryEntry.
33
+ */
34
+ export declare function deserializeEntry(raw: string): MemoryEntry | null;
35
+ /**
36
+ * Write a memory entry to disk and update the index.
37
+ */
38
+ export declare function writeEntry(hippoRoot: string, entry: MemoryEntry): void;
39
+ /**
40
+ * Read a memory entry by ID.
41
+ */
42
+ export declare function readEntry(hippoRoot: string, id: string): MemoryEntry | null;
43
+ /**
44
+ * Delete an entry from disk and index.
45
+ */
46
+ export declare function deleteEntry(hippoRoot: string, id: string): boolean;
47
+ /**
48
+ * Load all entries from disk (for search, consolidation, etc.)
49
+ */
50
+ export declare function loadAllEntries(hippoRoot: string): MemoryEntry[];
51
+ /**
52
+ * Rebuild the index from all markdown files on disk.
53
+ */
54
+ export declare function rebuildIndex(hippoRoot: string): HippoIndex;
55
+ /**
56
+ * Update stats file.
57
+ */
58
+ export declare function updateStats(hippoRoot: string, delta: {
59
+ remembered?: number;
60
+ recalled?: number;
61
+ forgotten?: number;
62
+ }): void;
63
+ export declare function loadStats(hippoRoot: string): Record<string, unknown>;
64
+ export declare function appendConsolidationRun(hippoRoot: string, run: {
65
+ timestamp: string;
66
+ decayed: number;
67
+ merged: number;
68
+ removed: number;
69
+ }): void;
70
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,WAAW,EAAE,KAAK,EAAqB,MAAM,aAAa,CAAC;AAGpE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACpC,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAMD,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAEhE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CA+BjD;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAMvD;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAGpE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAkBzD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAsBhE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAoBtE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAU3E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAalE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,CAa/D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CA8B1D;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACpE,IAAI,CAaN;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIpE;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3E,IAAI,CAeN"}
package/dist/store.js ADDED
@@ -0,0 +1,244 @@
1
+ /**
2
+ * Storage layer for Hippo.
3
+ * Reads/writes MemoryEntry as markdown + YAML frontmatter.
4
+ * Maintains a JSON index for fast lookups.
5
+ */
6
+ import * as fs from 'fs';
7
+ import * as path from 'path';
8
+ import { Layer } from './memory.js';
9
+ import { dumpFrontmatter, parseFrontmatter } from './yaml.js';
10
+ function layerDir(root, layer) {
11
+ return path.join(root, layer);
12
+ }
13
+ export function getHippoRoot(cwd = process.cwd()) {
14
+ return path.join(cwd, '.hippo');
15
+ }
16
+ export function isInitialized(hippoRoot) {
17
+ return fs.existsSync(hippoRoot);
18
+ }
19
+ export function initStore(hippoRoot) {
20
+ const dirs = [
21
+ hippoRoot,
22
+ path.join(hippoRoot, 'buffer'),
23
+ path.join(hippoRoot, 'episodic'),
24
+ path.join(hippoRoot, 'semantic'),
25
+ path.join(hippoRoot, 'conflicts'),
26
+ ];
27
+ for (const dir of dirs) {
28
+ if (!fs.existsSync(dir)) {
29
+ fs.mkdirSync(dir, { recursive: true });
30
+ }
31
+ }
32
+ const indexPath = path.join(hippoRoot, 'index.json');
33
+ if (!fs.existsSync(indexPath)) {
34
+ const empty = { version: 1, entries: {}, last_retrieval_ids: [] };
35
+ fs.writeFileSync(indexPath, JSON.stringify(empty, null, 2), 'utf8');
36
+ }
37
+ const statsPath = path.join(hippoRoot, 'stats.json');
38
+ if (!fs.existsSync(statsPath)) {
39
+ const stats = {
40
+ total_remembered: 0,
41
+ total_recalled: 0,
42
+ total_forgotten: 0,
43
+ consolidation_runs: [],
44
+ };
45
+ fs.writeFileSync(statsPath, JSON.stringify(stats, null, 2), 'utf8');
46
+ }
47
+ }
48
+ export function loadIndex(hippoRoot) {
49
+ const indexPath = path.join(hippoRoot, 'index.json');
50
+ if (!fs.existsSync(indexPath)) {
51
+ return { version: 1, entries: {}, last_retrieval_ids: [] };
52
+ }
53
+ return JSON.parse(fs.readFileSync(indexPath, 'utf8'));
54
+ }
55
+ export function saveIndex(hippoRoot, index) {
56
+ const indexPath = path.join(hippoRoot, 'index.json');
57
+ fs.writeFileSync(indexPath, JSON.stringify(index, null, 2), 'utf8');
58
+ }
59
+ /**
60
+ * Serialize a MemoryEntry to markdown with YAML frontmatter.
61
+ */
62
+ export function serializeEntry(entry) {
63
+ const fm = dumpFrontmatter({
64
+ id: entry.id,
65
+ created: entry.created,
66
+ last_retrieved: entry.last_retrieved,
67
+ retrieval_count: entry.retrieval_count,
68
+ strength: Math.round(entry.strength * 10000) / 10000,
69
+ half_life_days: entry.half_life_days,
70
+ layer: entry.layer,
71
+ tags: entry.tags,
72
+ emotional_valence: entry.emotional_valence,
73
+ schema_fit: entry.schema_fit,
74
+ source: entry.source,
75
+ outcome_score: entry.outcome_score,
76
+ conflicts_with: entry.conflicts_with,
77
+ pinned: entry.pinned,
78
+ });
79
+ return `${fm}\n\n${entry.content}\n`;
80
+ }
81
+ /**
82
+ * Deserialize a markdown file to a MemoryEntry.
83
+ */
84
+ export function deserializeEntry(raw) {
85
+ const { data, content } = parseFrontmatter(raw);
86
+ if (!data['id'] || !data['layer'])
87
+ return null;
88
+ return {
89
+ id: String(data['id']),
90
+ created: String(data['created'] ?? new Date().toISOString()),
91
+ last_retrieved: String(data['last_retrieved'] ?? new Date().toISOString()),
92
+ retrieval_count: Number(data['retrieval_count'] ?? 0),
93
+ strength: Number(data['strength'] ?? 1.0),
94
+ half_life_days: Number(data['half_life_days'] ?? 7),
95
+ layer: data['layer'],
96
+ tags: data['tags'] ?? [],
97
+ emotional_valence: data['emotional_valence'] ?? 'neutral',
98
+ schema_fit: Number(data['schema_fit'] ?? 0.5),
99
+ source: String(data['source'] ?? 'cli'),
100
+ outcome_score: data['outcome_score'] === null ? null : Number(data['outcome_score']),
101
+ conflicts_with: data['conflicts_with'] ?? [],
102
+ pinned: Boolean(data['pinned'] ?? false),
103
+ content: content.trim(),
104
+ };
105
+ }
106
+ /**
107
+ * Write a memory entry to disk and update the index.
108
+ */
109
+ export function writeEntry(hippoRoot, entry) {
110
+ const dir = layerDir(hippoRoot, entry.layer);
111
+ const filename = `${entry.id}.md`;
112
+ const filepath = path.join(dir, filename);
113
+ fs.writeFileSync(filepath, serializeEntry(entry), 'utf8');
114
+ // Update index
115
+ const index = loadIndex(hippoRoot);
116
+ index.entries[entry.id] = {
117
+ id: entry.id,
118
+ file: path.join(entry.layer, filename),
119
+ layer: entry.layer,
120
+ strength: entry.strength,
121
+ tags: entry.tags,
122
+ created: entry.created,
123
+ last_retrieved: entry.last_retrieved,
124
+ pinned: entry.pinned,
125
+ };
126
+ saveIndex(hippoRoot, index);
127
+ }
128
+ /**
129
+ * Read a memory entry by ID.
130
+ */
131
+ export function readEntry(hippoRoot, id) {
132
+ const index = loadIndex(hippoRoot);
133
+ const ref = index.entries[id];
134
+ if (!ref)
135
+ return null;
136
+ const filepath = path.join(hippoRoot, ref.file);
137
+ if (!fs.existsSync(filepath))
138
+ return null;
139
+ const raw = fs.readFileSync(filepath, 'utf8');
140
+ return deserializeEntry(raw);
141
+ }
142
+ /**
143
+ * Delete an entry from disk and index.
144
+ */
145
+ export function deleteEntry(hippoRoot, id) {
146
+ const index = loadIndex(hippoRoot);
147
+ const ref = index.entries[id];
148
+ if (!ref)
149
+ return false;
150
+ const filepath = path.join(hippoRoot, ref.file);
151
+ if (fs.existsSync(filepath)) {
152
+ fs.unlinkSync(filepath);
153
+ }
154
+ delete index.entries[id];
155
+ saveIndex(hippoRoot, index);
156
+ return true;
157
+ }
158
+ /**
159
+ * Load all entries from disk (for search, consolidation, etc.)
160
+ */
161
+ export function loadAllEntries(hippoRoot) {
162
+ const index = loadIndex(hippoRoot);
163
+ const entries = [];
164
+ for (const ref of Object.values(index.entries)) {
165
+ const filepath = path.join(hippoRoot, ref.file);
166
+ if (!fs.existsSync(filepath))
167
+ continue;
168
+ const raw = fs.readFileSync(filepath, 'utf8');
169
+ const entry = deserializeEntry(raw);
170
+ if (entry)
171
+ entries.push(entry);
172
+ }
173
+ return entries;
174
+ }
175
+ /**
176
+ * Rebuild the index from all markdown files on disk.
177
+ */
178
+ export function rebuildIndex(hippoRoot) {
179
+ const index = { version: 1, entries: {}, last_retrieval_ids: [] };
180
+ const layers = [Layer.Buffer, Layer.Episodic, Layer.Semantic];
181
+ for (const layer of layers) {
182
+ const dir = layerDir(hippoRoot, layer);
183
+ if (!fs.existsSync(dir))
184
+ continue;
185
+ const files = fs.readdirSync(dir).filter((f) => f.endsWith('.md'));
186
+ for (const file of files) {
187
+ const filepath = path.join(dir, file);
188
+ const raw = fs.readFileSync(filepath, 'utf8');
189
+ const entry = deserializeEntry(raw);
190
+ if (!entry)
191
+ continue;
192
+ index.entries[entry.id] = {
193
+ id: entry.id,
194
+ file: path.join(layer, file),
195
+ layer: entry.layer,
196
+ strength: entry.strength,
197
+ tags: entry.tags,
198
+ created: entry.created,
199
+ last_retrieved: entry.last_retrieved,
200
+ pinned: entry.pinned,
201
+ };
202
+ }
203
+ }
204
+ saveIndex(hippoRoot, index);
205
+ return index;
206
+ }
207
+ /**
208
+ * Update stats file.
209
+ */
210
+ export function updateStats(hippoRoot, delta) {
211
+ const statsPath = path.join(hippoRoot, 'stats.json');
212
+ let stats = { total_remembered: 0, total_recalled: 0, total_forgotten: 0, consolidation_runs: [] };
213
+ if (fs.existsSync(statsPath)) {
214
+ stats = JSON.parse(fs.readFileSync(statsPath, 'utf8'));
215
+ }
216
+ if (delta.remembered)
217
+ stats.total_remembered += delta.remembered;
218
+ if (delta.recalled)
219
+ stats.total_recalled += delta.recalled;
220
+ if (delta.forgotten)
221
+ stats.total_forgotten += delta.forgotten;
222
+ fs.writeFileSync(statsPath, JSON.stringify(stats, null, 2), 'utf8');
223
+ }
224
+ export function loadStats(hippoRoot) {
225
+ const statsPath = path.join(hippoRoot, 'stats.json');
226
+ if (!fs.existsSync(statsPath))
227
+ return {};
228
+ return JSON.parse(fs.readFileSync(statsPath, 'utf8'));
229
+ }
230
+ export function appendConsolidationRun(hippoRoot, run) {
231
+ const statsPath = path.join(hippoRoot, 'stats.json');
232
+ const stats = fs.existsSync(statsPath)
233
+ ? JSON.parse(fs.readFileSync(statsPath, 'utf8'))
234
+ : { consolidation_runs: [] };
235
+ if (!Array.isArray(stats.consolidation_runs))
236
+ stats.consolidation_runs = [];
237
+ stats.consolidation_runs.push(run);
238
+ // Keep last 50 runs
239
+ if (stats.consolidation_runs.length > 50) {
240
+ stats.consolidation_runs = stats.consolidation_runs.slice(-50);
241
+ }
242
+ fs.writeFileSync(statsPath, JSON.stringify(stats, null, 2), 'utf8');
243
+ }
244
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
package/dist/yaml.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Minimal YAML frontmatter serializer/deserializer.
3
+ * No external deps. Handles simple key-value + arrays (inline only).
4
+ * Sufficient for the MemoryEntry frontmatter schema.
5
+ */
6
+ type YamlValue = string | number | boolean | null | string[] | number[];
7
+ export declare function dumpFrontmatter(obj: Record<string, YamlValue>): string;
8
+ export interface ParsedFrontmatter {
9
+ data: Record<string, YamlValue>;
10
+ content: string;
11
+ }
12
+ export declare function parseFrontmatter(raw: string): ParsedFrontmatter;
13
+ export {};
14
+ //# sourceMappingURL=yaml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml.d.ts","sourceRoot":"","sources":["../src/yaml.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;AAuBxE,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,CAGtE;AA+BD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAoB/D"}
package/dist/yaml.js ADDED
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Minimal YAML frontmatter serializer/deserializer.
3
+ * No external deps. Handles simple key-value + arrays (inline only).
4
+ * Sufficient for the MemoryEntry frontmatter schema.
5
+ */
6
+ function escapeString(s) {
7
+ // If string contains special chars, quote it
8
+ if (/[:#\[\]{},\n\r"']/.test(s) || s.trim() !== s || s === '') {
9
+ return `"${s.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
10
+ }
11
+ return s;
12
+ }
13
+ function serializeValue(val) {
14
+ if (val === null)
15
+ return 'null';
16
+ if (typeof val === 'boolean')
17
+ return val ? 'true' : 'false';
18
+ if (typeof val === 'number')
19
+ return String(val);
20
+ if (typeof val === 'string')
21
+ return escapeString(val);
22
+ if (Array.isArray(val)) {
23
+ if (val.length === 0)
24
+ return '[]';
25
+ const items = val.map((v) => escapeString(String(v))).join(', ');
26
+ return `[${items}]`;
27
+ }
28
+ return String(val);
29
+ }
30
+ export function dumpFrontmatter(obj) {
31
+ const lines = Object.entries(obj).map(([k, v]) => `${k}: ${serializeValue(v)}`);
32
+ return `---\n${lines.join('\n')}\n---`;
33
+ }
34
+ function parseValue(raw) {
35
+ const s = raw.trim();
36
+ if (s === 'null')
37
+ return null;
38
+ if (s === 'true')
39
+ return true;
40
+ if (s === 'false')
41
+ return false;
42
+ // Array: [a, b, c]
43
+ if (s.startsWith('[') && s.endsWith(']')) {
44
+ const inner = s.slice(1, -1).trim();
45
+ if (inner === '')
46
+ return [];
47
+ return inner.split(',').map((item) => {
48
+ const t = item.trim();
49
+ return t.startsWith('"') && t.endsWith('"') ? t.slice(1, -1) : t;
50
+ });
51
+ }
52
+ // Quoted string
53
+ if (s.startsWith('"') && s.endsWith('"')) {
54
+ return s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
55
+ }
56
+ // Number
57
+ if (/^-?\d+(\.\d+)?$/.test(s)) {
58
+ return parseFloat(s);
59
+ }
60
+ return s;
61
+ }
62
+ export function parseFrontmatter(raw) {
63
+ const match = raw.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);
64
+ if (!match) {
65
+ return { data: {}, content: raw };
66
+ }
67
+ const frontLines = match[1].split('\n');
68
+ const data = {};
69
+ for (const line of frontLines) {
70
+ const idx = line.indexOf(':');
71
+ if (idx === -1)
72
+ continue;
73
+ const key = line.slice(0, idx).trim();
74
+ const val = line.slice(idx + 1).trim();
75
+ if (key) {
76
+ data[key] = parseValue(val);
77
+ }
78
+ }
79
+ return { data, content: match[2] };
80
+ }
81
+ //# sourceMappingURL=yaml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml.js","sourceRoot":"","sources":["../src/yaml.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "hippo-memory",
3
+ "version": "0.2.0",
4
+ "description": "Biologically-inspired memory system for AI agents. Decay by default, strength through use.",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "exports": {
8
+ ".": "./dist/index.js"
9
+ },
10
+ "bin": {
11
+ "hippo": "./dist/cli.js"
12
+ },
13
+ "files": [
14
+ "dist"
15
+ ],
16
+ "scripts": {
17
+ "build": "tsc",
18
+ "dev": "tsc --watch",
19
+ "test": "vitest run",
20
+ "test:watch": "vitest",
21
+ "prepublishOnly": "npm run build"
22
+ },
23
+ "keywords": [
24
+ "memory",
25
+ "ai",
26
+ "agents",
27
+ "llm",
28
+ "claude",
29
+ "context",
30
+ "recall",
31
+ "episodic",
32
+ "semantic",
33
+ "embeddings",
34
+ "hybrid-search"
35
+ ],
36
+ "author": "Keith",
37
+ "license": "MIT",
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "git+https://github.com/kitfunso/hippo-memory.git"
41
+ },
42
+ "engines": {
43
+ "node": ">=20.0.0"
44
+ },
45
+ "devDependencies": {
46
+ "typescript": "^5.4.0",
47
+ "vitest": "^1.4.0",
48
+ "@types/node": "^20.11.0"
49
+ },
50
+ "peerDependencies": {
51
+ "@xenova/transformers": ">=2.0.0"
52
+ },
53
+ "peerDependenciesMeta": {
54
+ "@xenova/transformers": {
55
+ "optional": true
56
+ }
57
+ }
58
+ }