hippo-memory 0.35.0 → 0.37.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 (215) hide show
  1. package/README.md +25 -0
  2. package/dist/api.d.ts +183 -0
  3. package/dist/api.d.ts.map +1 -0
  4. package/dist/api.js +343 -0
  5. package/dist/api.js.map +1 -0
  6. package/dist/benchmarks/e1.3/incident-recall-eval.js +74 -0
  7. package/dist/benchmarks/e1.3/incident-recall-eval.js.map +1 -0
  8. package/dist/benchmarks/e1.3/scenarios.json +2587 -0
  9. package/dist/benchmarks/e1.3/slack-1000-event-smoke.js +102 -0
  10. package/dist/benchmarks/e1.3/slack-1000-event-smoke.js.map +1 -0
  11. package/dist/cli.js +222 -34
  12. package/dist/cli.js.map +1 -1
  13. package/dist/client.d.ts +54 -0
  14. package/dist/client.d.ts.map +1 -0
  15. package/dist/client.js +181 -0
  16. package/dist/client.js.map +1 -0
  17. package/dist/connectors/slack/backfill.d.ts +42 -0
  18. package/dist/connectors/slack/backfill.d.ts.map +1 -0
  19. package/dist/connectors/slack/backfill.js +76 -0
  20. package/dist/connectors/slack/backfill.js.map +1 -0
  21. package/dist/connectors/slack/deletion.d.ts +14 -0
  22. package/dist/connectors/slack/deletion.d.ts.map +1 -0
  23. package/dist/connectors/slack/deletion.js +46 -0
  24. package/dist/connectors/slack/deletion.js.map +1 -0
  25. package/dist/connectors/slack/dlq.d.ts +21 -0
  26. package/dist/connectors/slack/dlq.d.ts.map +1 -0
  27. package/dist/connectors/slack/dlq.js +23 -0
  28. package/dist/connectors/slack/dlq.js.map +1 -0
  29. package/dist/connectors/slack/idempotency.d.ts +5 -0
  30. package/dist/connectors/slack/idempotency.d.ts.map +1 -0
  31. package/dist/connectors/slack/idempotency.js +13 -0
  32. package/dist/connectors/slack/idempotency.js.map +1 -0
  33. package/dist/connectors/slack/ingest.d.ts +27 -0
  34. package/dist/connectors/slack/ingest.d.ts.map +1 -0
  35. package/dist/connectors/slack/ingest.js +48 -0
  36. package/dist/connectors/slack/ingest.js.map +1 -0
  37. package/dist/connectors/slack/ratelimit.d.ts +9 -0
  38. package/dist/connectors/slack/ratelimit.d.ts.map +1 -0
  39. package/dist/connectors/slack/ratelimit.js +18 -0
  40. package/dist/connectors/slack/ratelimit.js.map +1 -0
  41. package/dist/connectors/slack/scope.d.ts +16 -0
  42. package/dist/connectors/slack/scope.d.ts.map +1 -0
  43. package/dist/connectors/slack/scope.js +13 -0
  44. package/dist/connectors/slack/scope.js.map +1 -0
  45. package/dist/connectors/slack/signature.d.ts +12 -0
  46. package/dist/connectors/slack/signature.d.ts.map +1 -0
  47. package/dist/connectors/slack/signature.js +20 -0
  48. package/dist/connectors/slack/signature.js.map +1 -0
  49. package/dist/connectors/slack/tenant-routing.d.ts +13 -0
  50. package/dist/connectors/slack/tenant-routing.d.ts.map +1 -0
  51. package/dist/connectors/slack/tenant-routing.js +17 -0
  52. package/dist/connectors/slack/tenant-routing.js.map +1 -0
  53. package/dist/connectors/slack/transform.d.ts +20 -0
  54. package/dist/connectors/slack/transform.d.ts.map +1 -0
  55. package/dist/connectors/slack/transform.js +31 -0
  56. package/dist/connectors/slack/transform.js.map +1 -0
  57. package/dist/connectors/slack/types.d.ts +35 -0
  58. package/dist/connectors/slack/types.d.ts.map +1 -0
  59. package/dist/connectors/slack/types.js +23 -0
  60. package/dist/connectors/slack/types.js.map +1 -0
  61. package/dist/connectors/slack/web-client.d.ts +12 -0
  62. package/dist/connectors/slack/web-client.d.ts.map +1 -0
  63. package/dist/connectors/slack/web-client.js +43 -0
  64. package/dist/connectors/slack/web-client.js.map +1 -0
  65. package/dist/db.d.ts.map +1 -1
  66. package/dist/db.js +46 -1
  67. package/dist/db.js.map +1 -1
  68. package/dist/importers.js +3 -3
  69. package/dist/importers.js.map +1 -1
  70. package/dist/mcp/server.d.ts +46 -1
  71. package/dist/mcp/server.d.ts.map +1 -1
  72. package/dist/mcp/server.js +74 -26
  73. package/dist/mcp/server.js.map +1 -1
  74. package/dist/server-detect.d.ts +26 -0
  75. package/dist/server-detect.d.ts.map +1 -0
  76. package/dist/server-detect.js +70 -0
  77. package/dist/server-detect.js.map +1 -0
  78. package/dist/server.d.ts +29 -0
  79. package/dist/server.d.ts.map +1 -0
  80. package/dist/server.js +784 -0
  81. package/dist/server.js.map +1 -0
  82. package/dist/shared.d.ts +3 -1
  83. package/dist/shared.d.ts.map +1 -1
  84. package/dist/shared.js +2 -2
  85. package/dist/shared.js.map +1 -1
  86. package/dist/src/ambient.js +147 -0
  87. package/dist/src/ambient.js.map +1 -0
  88. package/dist/src/api.js +343 -0
  89. package/dist/src/api.js.map +1 -0
  90. package/dist/src/audit.js +152 -0
  91. package/dist/src/audit.js.map +1 -0
  92. package/dist/src/auth.js +65 -0
  93. package/dist/src/auth.js.map +1 -0
  94. package/dist/src/autolearn.js +143 -0
  95. package/dist/src/autolearn.js.map +1 -0
  96. package/dist/src/capture.js +512 -0
  97. package/dist/src/capture.js.map +1 -0
  98. package/dist/src/cli.js +4971 -0
  99. package/dist/src/cli.js.map +1 -0
  100. package/dist/src/client.js +181 -0
  101. package/dist/src/client.js.map +1 -0
  102. package/dist/src/config.js +108 -0
  103. package/dist/src/config.js.map +1 -0
  104. package/dist/src/connectors/slack/backfill.js +76 -0
  105. package/dist/src/connectors/slack/backfill.js.map +1 -0
  106. package/dist/src/connectors/slack/deletion.js +46 -0
  107. package/dist/src/connectors/slack/deletion.js.map +1 -0
  108. package/dist/src/connectors/slack/dlq.js +23 -0
  109. package/dist/src/connectors/slack/dlq.js.map +1 -0
  110. package/dist/src/connectors/slack/idempotency.js +13 -0
  111. package/dist/src/connectors/slack/idempotency.js.map +1 -0
  112. package/dist/src/connectors/slack/ingest.js +48 -0
  113. package/dist/src/connectors/slack/ingest.js.map +1 -0
  114. package/dist/src/connectors/slack/ratelimit.js +18 -0
  115. package/dist/src/connectors/slack/ratelimit.js.map +1 -0
  116. package/dist/src/connectors/slack/scope.js +13 -0
  117. package/dist/src/connectors/slack/scope.js.map +1 -0
  118. package/dist/src/connectors/slack/signature.js +20 -0
  119. package/dist/src/connectors/slack/signature.js.map +1 -0
  120. package/dist/src/connectors/slack/tenant-routing.js +17 -0
  121. package/dist/src/connectors/slack/tenant-routing.js.map +1 -0
  122. package/dist/src/connectors/slack/transform.js +31 -0
  123. package/dist/src/connectors/slack/transform.js.map +1 -0
  124. package/dist/src/connectors/slack/types.js +23 -0
  125. package/dist/src/connectors/slack/types.js.map +1 -0
  126. package/dist/src/connectors/slack/web-client.js +43 -0
  127. package/dist/src/connectors/slack/web-client.js.map +1 -0
  128. package/dist/src/consolidate.js +517 -0
  129. package/dist/src/consolidate.js.map +1 -0
  130. package/dist/src/dag.js +104 -0
  131. package/dist/src/dag.js.map +1 -0
  132. package/dist/src/dashboard.js +409 -0
  133. package/dist/src/dashboard.js.map +1 -0
  134. package/dist/src/db.js +584 -0
  135. package/dist/src/db.js.map +1 -0
  136. package/dist/src/embeddings.js +344 -0
  137. package/dist/src/embeddings.js.map +1 -0
  138. package/dist/src/eval-suite.js +289 -0
  139. package/dist/src/eval-suite.js.map +1 -0
  140. package/dist/src/eval.js +187 -0
  141. package/dist/src/eval.js.map +1 -0
  142. package/dist/src/extract.js +87 -0
  143. package/dist/src/extract.js.map +1 -0
  144. package/dist/src/handoff.js +30 -0
  145. package/dist/src/handoff.js.map +1 -0
  146. package/dist/src/hooks.js +582 -0
  147. package/dist/src/hooks.js.map +1 -0
  148. package/dist/src/importers.js +399 -0
  149. package/dist/src/importers.js.map +1 -0
  150. package/dist/src/index.js +25 -0
  151. package/dist/src/index.js.map +1 -0
  152. package/dist/src/invalidation.js +94 -0
  153. package/dist/src/invalidation.js.map +1 -0
  154. package/dist/src/mcp/framing.js +45 -0
  155. package/dist/src/mcp/framing.js.map +1 -0
  156. package/dist/src/mcp/server.js +510 -0
  157. package/dist/src/mcp/server.js.map +1 -0
  158. package/dist/src/memory.js +280 -0
  159. package/dist/src/memory.js.map +1 -0
  160. package/dist/src/multihop.js +32 -0
  161. package/dist/src/multihop.js.map +1 -0
  162. package/dist/src/path-context.js +32 -0
  163. package/dist/src/path-context.js.map +1 -0
  164. package/dist/src/physics-config.js +26 -0
  165. package/dist/src/physics-config.js.map +1 -0
  166. package/dist/src/physics-state.js +163 -0
  167. package/dist/src/physics-state.js.map +1 -0
  168. package/dist/src/physics.js +361 -0
  169. package/dist/src/physics.js.map +1 -0
  170. package/dist/src/postinstall.js +68 -0
  171. package/dist/src/postinstall.js.map +1 -0
  172. package/dist/src/raw-archive.js +72 -0
  173. package/dist/src/raw-archive.js.map +1 -0
  174. package/dist/src/refine-llm.js +147 -0
  175. package/dist/src/refine-llm.js.map +1 -0
  176. package/dist/src/replay.js +117 -0
  177. package/dist/src/replay.js.map +1 -0
  178. package/dist/src/salience.js +74 -0
  179. package/dist/src/salience.js.map +1 -0
  180. package/dist/src/scheduler.js +67 -0
  181. package/dist/src/scheduler.js.map +1 -0
  182. package/dist/src/scope.js +35 -0
  183. package/dist/src/scope.js.map +1 -0
  184. package/dist/src/search.js +801 -0
  185. package/dist/src/search.js.map +1 -0
  186. package/dist/src/server-detect.js +70 -0
  187. package/dist/src/server-detect.js.map +1 -0
  188. package/dist/src/server.js +784 -0
  189. package/dist/src/server.js.map +1 -0
  190. package/dist/src/shared.js +309 -0
  191. package/dist/src/shared.js.map +1 -0
  192. package/dist/src/sso.js +22 -0
  193. package/dist/src/sso.js.map +1 -0
  194. package/dist/src/store.js +1390 -0
  195. package/dist/src/store.js.map +1 -0
  196. package/dist/src/tenant.js +17 -0
  197. package/dist/src/tenant.js.map +1 -0
  198. package/dist/src/trace.js +64 -0
  199. package/dist/src/trace.js.map +1 -0
  200. package/dist/src/working-memory.js +149 -0
  201. package/dist/src/working-memory.js.map +1 -0
  202. package/dist/src/yaml.js +98 -0
  203. package/dist/src/yaml.js.map +1 -0
  204. package/dist/store.d.ts +25 -4
  205. package/dist/store.d.ts.map +1 -1
  206. package/dist/store.js +50 -11
  207. package/dist/store.js.map +1 -1
  208. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  209. package/extensions/openclaw-plugin/package.json +1 -1
  210. package/openclaw.plugin.json +1 -1
  211. package/package.json +2 -2
  212. package/dist/import.d.ts +0 -31
  213. package/dist/import.d.ts.map +0 -1
  214. package/dist/import.js +0 -307
  215. package/dist/import.js.map +0 -1
package/dist/import.js DELETED
@@ -1,307 +0,0 @@
1
- /**
2
- * Import memories from external sources.
3
- *
4
- * Supported formats:
5
- * --chatgpt <file> ChatGPT memories.json or plain text
6
- * --claude <file> CLAUDE.md (skips hippo:start/end blocks)
7
- * --cursor <file> .cursorrules
8
- * --file <file> Generic one-memory-per-line
9
- * --markdown <file> Structured markdown with heading hierarchy as tags
10
- */
11
- import * as fs from 'fs';
12
- import { createMemory, Layer } from './memory.js';
13
- import { isInitialized, writeEntry, loadAllEntries, updateStats, } from './store.js';
14
- import { getGlobalRoot, initGlobal } from './shared.js';
15
- import { isEmbeddingAvailable, embedMemory } from './embeddings.js';
16
- // ---------------------------------------------------------------------------
17
- // Normalisation for deduplication
18
- // ---------------------------------------------------------------------------
19
- function normalise(text) {
20
- return text
21
- .toLowerCase()
22
- .replace(/[^\w\s]/g, '')
23
- .replace(/\s+/g, ' ')
24
- .trim();
25
- }
26
- function isDuplicate(content, existing) {
27
- const norm = normalise(content);
28
- if (!norm)
29
- return true; // empty content counts as duplicate
30
- for (const e of existing) {
31
- if (normalise(e.content) === norm)
32
- return true;
33
- }
34
- return false;
35
- }
36
- // ---------------------------------------------------------------------------
37
- // Parsers
38
- // ---------------------------------------------------------------------------
39
- /** Parse ChatGPT memories.json or plain text file. */
40
- export function parseChatGPT(raw) {
41
- const trimmed = raw.trim();
42
- // Try JSON first
43
- if (trimmed.startsWith('[') || trimmed.startsWith('{')) {
44
- try {
45
- const parsed = JSON.parse(trimmed);
46
- const arr = Array.isArray(parsed) ? parsed : [parsed];
47
- return arr
48
- .map((item) => {
49
- if (typeof item === 'string')
50
- return item.trim();
51
- if (item && typeof item === 'object' && 'content' in item) {
52
- return String(item.content).trim();
53
- }
54
- return '';
55
- })
56
- .filter((s) => s.length > 0);
57
- }
58
- catch {
59
- // Fall through to line-based parsing
60
- }
61
- }
62
- // Plain text: one memory per line
63
- return trimmed
64
- .split('\n')
65
- .map((l) => l.trim())
66
- .filter((l) => l.length > 0);
67
- }
68
- /** Parse CLAUDE.md, extracting bullet points and sections. Skips hippo blocks. */
69
- export function parseClaude(raw) {
70
- // Remove <!-- hippo:start -->...<!-- hippo:end --> blocks
71
- const cleaned = raw.replace(/<!--\s*hippo:start\s*-->[\s\S]*?<!--\s*hippo:end\s*-->/g, '');
72
- const memories = [];
73
- const lines = cleaned.split('\n');
74
- for (const line of lines) {
75
- const trimmed = line.trim();
76
- // Skip headings, empty lines, code fences, HTML comments
77
- if (!trimmed)
78
- continue;
79
- if (trimmed.startsWith('#'))
80
- continue;
81
- if (trimmed.startsWith('```'))
82
- continue;
83
- if (trimmed.startsWith('<!--'))
84
- continue;
85
- if (trimmed.startsWith('---'))
86
- continue;
87
- // Extract bullet point content (-, *, numbered)
88
- const bulletMatch = trimmed.match(/^[-*]\s+(.+)/) || trimmed.match(/^\d+\.\s+(.+)/);
89
- if (bulletMatch) {
90
- const content = bulletMatch[1].trim();
91
- if (content.length > 3) {
92
- memories.push(content);
93
- }
94
- continue;
95
- }
96
- // Plain text paragraphs (non-bullet, non-heading lines that have substance)
97
- if (trimmed.length > 10 && !trimmed.startsWith('|')) {
98
- memories.push(trimmed);
99
- }
100
- }
101
- return memories;
102
- }
103
- /** Parse .cursorrules, splitting rules into individual memories. */
104
- export function parseCursor(raw) {
105
- const memories = [];
106
- const lines = raw.split('\n');
107
- // Collect multi-line rules separated by blank lines or comment headers
108
- let currentRule = [];
109
- const flushRule = () => {
110
- const text = currentRule
111
- .map((l) => l.replace(/^#\s*/, '').trim())
112
- .filter((l) => l.length > 0)
113
- .join(' ')
114
- .trim();
115
- if (text.length > 5) {
116
- memories.push(text);
117
- }
118
- currentRule = [];
119
- };
120
- for (const line of lines) {
121
- const trimmed = line.trim();
122
- if (!trimmed) {
123
- // Blank line: flush the current rule
124
- if (currentRule.length > 0)
125
- flushRule();
126
- continue;
127
- }
128
- // Bullet points are individual rules
129
- const bulletMatch = trimmed.match(/^[-*]\s+(.+)/);
130
- if (bulletMatch) {
131
- if (currentRule.length > 0)
132
- flushRule();
133
- const content = bulletMatch[1].trim();
134
- if (content.length > 3) {
135
- memories.push(content);
136
- }
137
- continue;
138
- }
139
- // Numbered rules
140
- const numMatch = trimmed.match(/^\d+\.\s+(.+)/);
141
- if (numMatch) {
142
- if (currentRule.length > 0)
143
- flushRule();
144
- const content = numMatch[1].trim();
145
- if (content.length > 3) {
146
- memories.push(content);
147
- }
148
- continue;
149
- }
150
- currentRule.push(trimmed);
151
- }
152
- if (currentRule.length > 0)
153
- flushRule();
154
- return memories;
155
- }
156
- /** Parse generic file: one memory per non-empty line. */
157
- export function parseFile(raw) {
158
- return raw
159
- .split('\n')
160
- .map((l) => l.trim())
161
- .filter((l) => l.length > 0);
162
- }
163
- /** Slugify a heading for use as a tag. */
164
- function slugify(heading) {
165
- return heading
166
- .toLowerCase()
167
- .replace(/[^\w\s-]/g, '')
168
- .replace(/\s+/g, '-')
169
- .replace(/-+/g, '-')
170
- .replace(/^-|-$/g, '')
171
- .slice(0, 40);
172
- }
173
- /** Parse structured markdown preserving heading hierarchy as tags. */
174
- export function parseMarkdown(raw) {
175
- const results = [];
176
- const lines = raw.split('\n');
177
- // Track current heading hierarchy
178
- const headingStack = [];
179
- const getCurrentTags = () => headingStack.map((h) => h.tag);
180
- for (const line of lines) {
181
- const trimmed = line.trim();
182
- if (!trimmed)
183
- continue;
184
- // Check for heading
185
- const headingMatch = trimmed.match(/^(#{1,6})\s+(.+)/);
186
- if (headingMatch) {
187
- const level = headingMatch[1].length;
188
- const tag = slugify(headingMatch[2]);
189
- // Pop headings at same or deeper level
190
- while (headingStack.length > 0 && headingStack[headingStack.length - 1].level >= level) {
191
- headingStack.pop();
192
- }
193
- if (tag) {
194
- headingStack.push({ level, tag });
195
- }
196
- continue;
197
- }
198
- // Skip code fences, HTML comments, horizontal rules
199
- if (trimmed.startsWith('```'))
200
- continue;
201
- if (trimmed.startsWith('<!--'))
202
- continue;
203
- if (trimmed.startsWith('---'))
204
- continue;
205
- // Bullet points
206
- const bulletMatch = trimmed.match(/^[-*]\s+(.+)/) || trimmed.match(/^\d+\.\s+(.+)/);
207
- if (bulletMatch) {
208
- const content = bulletMatch[1].trim();
209
- if (content.length > 3) {
210
- results.push({ content, tags: getCurrentTags() });
211
- }
212
- continue;
213
- }
214
- // Plain text with substance
215
- if (trimmed.length > 10 && !trimmed.startsWith('|')) {
216
- results.push({ content: trimmed, tags: getCurrentTags() });
217
- }
218
- }
219
- return results;
220
- }
221
- export function cmdImport(hippoRoot, options) {
222
- const useGlobal = options.global;
223
- const targetRoot = useGlobal ? getGlobalRoot() : hippoRoot;
224
- if (useGlobal) {
225
- initGlobal();
226
- }
227
- else {
228
- if (!isInitialized(hippoRoot)) {
229
- console.error('No .hippo directory found. Run `hippo init` first.');
230
- process.exit(1);
231
- }
232
- }
233
- // Read source file
234
- if (!fs.existsSync(options.filePath)) {
235
- console.error(`File not found: ${options.filePath}`);
236
- process.exit(1);
237
- }
238
- const raw = fs.readFileSync(options.filePath, 'utf8');
239
- // Parse based on format
240
- let items;
241
- switch (options.format) {
242
- case 'chatgpt': {
243
- const memories = parseChatGPT(raw);
244
- items = memories.map((m) => ({ content: m, tags: ['chatgpt-import'] }));
245
- break;
246
- }
247
- case 'claude': {
248
- const memories = parseClaude(raw);
249
- items = memories.map((m) => ({ content: m, tags: ['claude-import'] }));
250
- break;
251
- }
252
- case 'cursor': {
253
- const memories = parseCursor(raw);
254
- items = memories.map((m) => ({ content: m, tags: ['cursor-import'] }));
255
- break;
256
- }
257
- case 'file': {
258
- const memories = parseFile(raw);
259
- items = memories.map((m) => ({ content: m, tags: ['file-import'] }));
260
- break;
261
- }
262
- case 'markdown': {
263
- items = parseMarkdown(raw).map((m) => ({
264
- content: m.content,
265
- tags: [...m.tags, 'markdown-import'],
266
- }));
267
- break;
268
- }
269
- }
270
- // Load existing memories for deduplication
271
- const existing = loadAllEntries(targetRoot);
272
- let imported = 0;
273
- let skipped = 0;
274
- for (const item of items) {
275
- if (isDuplicate(item.content, existing)) {
276
- skipped++;
277
- if (options.dryRun) {
278
- console.log(` [skip] ${item.content.slice(0, 80)}...`);
279
- }
280
- continue;
281
- }
282
- if (options.dryRun) {
283
- const tagStr = item.tags.length > 0 ? ` [${item.tags.join(', ')}]` : '';
284
- console.log(` [import] ${item.content.slice(0, 100)}${tagStr}`);
285
- }
286
- else {
287
- const entry = createMemory(item.content, {
288
- layer: Layer.Episodic,
289
- tags: item.tags,
290
- source: `import-${options.format}`,
291
- confidence: 'inferred',
292
- });
293
- writeEntry(targetRoot, entry);
294
- updateStats(targetRoot, { remembered: 1 });
295
- // Also add to existing list for within-batch dedup
296
- existing.push(entry);
297
- if (isEmbeddingAvailable()) {
298
- embedMemory(targetRoot, entry).catch(() => { });
299
- }
300
- }
301
- imported++;
302
- }
303
- const prefix = options.dryRun ? '[dry-run] ' : '';
304
- const globalPrefix = useGlobal ? '[global] ' : '';
305
- console.log(`\n${prefix}${globalPrefix}Imported ${imported} memories (${skipped} skipped as duplicates)`);
306
- }
307
- //# sourceMappingURL=import.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"import.js","sourceRoot":"","sources":["../src/import.ts"],"names":[],"mappings":"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"}