hippo-memory 1.22.0 → 1.24.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 (164) hide show
  1. package/README.md +17 -5
  2. package/bin/hippo.js +2 -2
  3. package/dist/ablation.d.ts +93 -0
  4. package/dist/ablation.d.ts.map +1 -0
  5. package/dist/ablation.js +138 -0
  6. package/dist/ablation.js.map +1 -0
  7. package/dist/ambient.d.ts.map +1 -1
  8. package/dist/ambient.js +2 -1
  9. package/dist/ambient.js.map +1 -1
  10. package/dist/api.d.ts +37 -0
  11. package/dist/api.d.ts.map +1 -1
  12. package/dist/api.js +88 -11
  13. package/dist/api.js.map +1 -1
  14. package/dist/benchmarks/e1.3/scenarios.json +2587 -0
  15. package/dist/capture.d.ts.map +1 -1
  16. package/dist/capture.js +3 -2
  17. package/dist/capture.js.map +1 -1
  18. package/dist/cli.d.ts.map +1 -1
  19. package/dist/cli.js +211 -40
  20. package/dist/cli.js.map +1 -1
  21. package/dist/config.d.ts +18 -0
  22. package/dist/config.d.ts.map +1 -1
  23. package/dist/config.js +3 -0
  24. package/dist/config.js.map +1 -1
  25. package/dist/connectors/github/backfill.js +4 -4
  26. package/dist/connectors/github/cli-impl.js +6 -6
  27. package/dist/connectors/github/dlq.js +14 -14
  28. package/dist/connectors/slack/backfill.js +1 -1
  29. package/dist/connectors/slack/dlq.js +10 -10
  30. package/dist/connectors/slack/workspaces.js +4 -4
  31. package/dist/consolidate.d.ts.map +1 -1
  32. package/dist/consolidate.js +27 -5
  33. package/dist/consolidate.js.map +1 -1
  34. package/dist/dag.js +6 -6
  35. package/dist/dashboard.js +7 -7
  36. package/dist/db.d.ts.map +1 -1
  37. package/dist/db.js +55 -4
  38. package/dist/db.js.map +1 -1
  39. package/dist/embedding-provider.d.ts +76 -0
  40. package/dist/embedding-provider.d.ts.map +1 -0
  41. package/dist/embedding-provider.js +301 -0
  42. package/dist/embedding-provider.js.map +1 -0
  43. package/dist/embeddings.d.ts +1 -0
  44. package/dist/embeddings.d.ts.map +1 -1
  45. package/dist/embeddings.js +112 -55
  46. package/dist/embeddings.js.map +1 -1
  47. package/dist/hooks.js +24 -24
  48. package/dist/importers.d.ts +28 -0
  49. package/dist/importers.d.ts.map +1 -1
  50. package/dist/importers.js +412 -1
  51. package/dist/importers.js.map +1 -1
  52. package/dist/index.d.ts +1 -1
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +1 -1
  55. package/dist/index.js.map +1 -1
  56. package/dist/mcp/server.d.ts.map +1 -1
  57. package/dist/mcp/server.js +44 -7
  58. package/dist/mcp/server.js.map +1 -1
  59. package/dist/memory.d.ts +9 -0
  60. package/dist/memory.d.ts.map +1 -1
  61. package/dist/memory.js +29 -6
  62. package/dist/memory.js.map +1 -1
  63. package/dist/physics-state.d.ts.map +1 -1
  64. package/dist/physics-state.js +4 -3
  65. package/dist/physics-state.js.map +1 -1
  66. package/dist/physics.d.ts.map +1 -1
  67. package/dist/physics.js +8 -1
  68. package/dist/physics.js.map +1 -1
  69. package/dist/predictions.js +67 -67
  70. package/dist/project-identity.d.ts +84 -0
  71. package/dist/project-identity.d.ts.map +1 -0
  72. package/dist/project-identity.js +184 -0
  73. package/dist/project-identity.js.map +1 -0
  74. package/dist/refine-llm.js +13 -13
  75. package/dist/replay.d.ts.map +1 -1
  76. package/dist/replay.js +4 -1
  77. package/dist/replay.js.map +1 -1
  78. package/dist/search.d.ts +14 -0
  79. package/dist/search.d.ts.map +1 -1
  80. package/dist/search.js +67 -20
  81. package/dist/search.js.map +1 -1
  82. package/dist/secret-detect.d.ts +33 -0
  83. package/dist/secret-detect.d.ts.map +1 -0
  84. package/dist/secret-detect.js +70 -0
  85. package/dist/secret-detect.js.map +1 -0
  86. package/dist/server.d.ts.map +1 -1
  87. package/dist/server.js +11 -0
  88. package/dist/server.js.map +1 -1
  89. package/dist/shared.d.ts +9 -1
  90. package/dist/shared.d.ts.map +1 -1
  91. package/dist/shared.js +67 -16
  92. package/dist/shared.js.map +1 -1
  93. package/dist/src/ablation.js +138 -0
  94. package/dist/src/ablation.js.map +1 -0
  95. package/dist/src/ambient.js +2 -1
  96. package/dist/src/ambient.js.map +1 -1
  97. package/dist/src/api.js +88 -11
  98. package/dist/src/api.js.map +1 -1
  99. package/dist/src/capture.js +3 -2
  100. package/dist/src/capture.js.map +1 -1
  101. package/dist/src/cli.js +211 -40
  102. package/dist/src/cli.js.map +1 -1
  103. package/dist/src/config.js +3 -0
  104. package/dist/src/config.js.map +1 -1
  105. package/dist/src/connectors/github/backfill.js +4 -4
  106. package/dist/src/connectors/github/cli-impl.js +6 -6
  107. package/dist/src/connectors/github/dlq.js +14 -14
  108. package/dist/src/connectors/slack/backfill.js +1 -1
  109. package/dist/src/connectors/slack/dlq.js +10 -10
  110. package/dist/src/connectors/slack/workspaces.js +4 -4
  111. package/dist/src/consolidate.js +27 -5
  112. package/dist/src/consolidate.js.map +1 -1
  113. package/dist/src/dag.js +6 -6
  114. package/dist/src/dashboard.js +7 -7
  115. package/dist/src/db.js +55 -4
  116. package/dist/src/db.js.map +1 -1
  117. package/dist/src/embedding-provider.js +301 -0
  118. package/dist/src/embedding-provider.js.map +1 -0
  119. package/dist/src/embeddings.js +112 -55
  120. package/dist/src/embeddings.js.map +1 -1
  121. package/dist/src/hooks.js +24 -24
  122. package/dist/src/importers.js +412 -1
  123. package/dist/src/importers.js.map +1 -1
  124. package/dist/src/index.js +1 -1
  125. package/dist/src/index.js.map +1 -1
  126. package/dist/src/mcp/server.js +44 -7
  127. package/dist/src/mcp/server.js.map +1 -1
  128. package/dist/src/memory.js +29 -6
  129. package/dist/src/memory.js.map +1 -1
  130. package/dist/src/physics-state.js +4 -3
  131. package/dist/src/physics-state.js.map +1 -1
  132. package/dist/src/physics.js +8 -1
  133. package/dist/src/physics.js.map +1 -1
  134. package/dist/src/predictions.js +67 -67
  135. package/dist/src/project-identity.js +184 -0
  136. package/dist/src/project-identity.js.map +1 -0
  137. package/dist/src/refine-llm.js +13 -13
  138. package/dist/src/replay.js +4 -1
  139. package/dist/src/replay.js.map +1 -1
  140. package/dist/src/search.js +67 -20
  141. package/dist/src/search.js.map +1 -1
  142. package/dist/src/secret-detect.js +70 -0
  143. package/dist/src/secret-detect.js.map +1 -0
  144. package/dist/src/server.js +11 -0
  145. package/dist/src/server.js.map +1 -1
  146. package/dist/src/shared.js +67 -16
  147. package/dist/src/shared.js.map +1 -1
  148. package/dist/src/store.js +66 -11
  149. package/dist/src/store.js.map +1 -1
  150. package/dist/src/version.js +1 -1
  151. package/dist/src/working-memory.js +19 -19
  152. package/dist/store.d.ts +15 -0
  153. package/dist/store.d.ts.map +1 -1
  154. package/dist/store.js +66 -11
  155. package/dist/store.js.map +1 -1
  156. package/dist/version.d.ts +1 -1
  157. package/dist/version.js +1 -1
  158. package/dist/working-memory.js +19 -19
  159. package/dist-ui/index.html +12 -12
  160. package/extensions/openclaw-plugin/index.ts +650 -650
  161. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  162. package/extensions/openclaw-plugin/package.json +1 -1
  163. package/openclaw.plugin.json +1 -1
  164. package/package.json +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../src/capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAmBH,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AA0HD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAoC7D;AA2BD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,cAAc,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAqFzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,MAAM,GAAG,IAAI,CAqCf;AAED,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,GACtB,IAAI,CAgBN"}
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../src/capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAoBH,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AA0HD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAoC7D;AA2BD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,cAAc,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAqFzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,MAAM,GAAG,IAAI,CAqCf;AAED,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,GACtB,IAAI,CAgBN"}
package/dist/capture.js CHANGED
@@ -14,7 +14,8 @@ import { createMemory, Layer } from './memory.js';
14
14
  import { isContentWorthStoring } from './audit.js';
15
15
  import { isInitialized, writeEntry, loadAllEntries, updateStats, } from './store.js';
16
16
  import { getGlobalRoot, initGlobal } from './shared.js';
17
- import { isEmbeddingAvailable, embedMemory } from './embeddings.js';
17
+ import { embedMemory } from './embeddings.js';
18
+ import { isEmbeddingConfigured } from './embedding-provider.js';
18
19
  // Sentence-level patterns
19
20
  const DECISION_PATTERNS = [
20
21
  /(?:we(?:'ve| have)?|i(?:'ve| have)?|let's)\s+decid(?:ed|e)\s+(?:to\s+)?(.{10,200})/i,
@@ -508,7 +509,7 @@ function cmdCaptureCore(hippoRoot, options) {
508
509
  writeEntry(targetRoot, entry);
509
510
  updateStats(targetRoot, { remembered: 1 });
510
511
  existing.push(entry); // within-batch dedup
511
- if (isEmbeddingAvailable()) {
512
+ if (isEmbeddingConfigured(targetRoot)) {
512
513
  embedMemory(targetRoot, entry).catch(() => { });
513
514
  }
514
515
  }
@@ -1 +1 @@
1
- {"version":3,"file":"capture.js","sourceRoot":"","sources":["../src/capture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capture.js","sourceRoot":"","sources":["../src/capture.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAwBH,OAAO,EASL,WAAW,EAEZ,MAAM,aAAa,CAAC;AAiGrB,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AA4ChC,kFAAkF;AAClF,wBAAgB,8BAA8B,IAAI,IAAI,CAErD;AAi4ED;;;GAGG;AACH,oHAAoH;AACpH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,GAAG,IAAI,CAkD/D;AAgsFD,oHAAoH;AACpH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,EACtF,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,MAAkB,GAC1B,IAAI,CA6BN"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAyBH,OAAO,EASL,WAAW,EAEZ,MAAM,aAAa,CAAC;AAqGrB,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AA4ChC,kFAAkF;AAClF,wBAAgB,8BAA8B,IAAI,IAAI,CAErD;AAu4ED;;;GAGG;AACH,oHAAoH;AACpH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,GAAG,IAAI,CAkD/D;AA8vFD,oHAAoH;AACpH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,EACtF,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,MAAkB,GAC1B,IAAI,CA6BN"}
package/dist/cli.js CHANGED
@@ -25,6 +25,7 @@
25
25
  * hippo decide "<decision>" [--context "<why>"] [--supersedes <id>]
26
26
  * hippo wm <push|read|clear|flush>
27
27
  */
28
+ import { evalNow, isRecallBoostAblated } from './ablation.js';
28
29
  import * as path from 'path';
29
30
  import * as fs from 'fs';
30
31
  import * as os from 'os';
@@ -32,11 +33,13 @@ import { fileURLToPath } from 'node:url';
32
33
  import { execFileSync, execSync, spawn } from 'child_process';
33
34
  import { installJsonHooks, uninstallJsonHooks, resolveJsonHookPaths, detectInstalledTools, defaultSleepLogPath, ensureCodexWrapperInstalled, installCodexWrapper, uninstallCodexWrapper, resolveCodexSessionTranscript, resolveCodexWrapperPaths, installOpencodePlugin, uninstallOpencodePlugin, resolveOpencodePluginPath, } from './hooks.js';
34
35
  import { createMemory, calculateStrength, calculateRewardFactor, deriveHalfLife, resolveConfidence, computeSchemaFit, Layer, } from './memory.js';
36
+ import { resolveProjectIdentity } from './project-identity.js';
35
37
  import { getHippoRoot, isInitialized, initStore, writeEntry, readEntry, deleteEntry, loadAllEntries, loadSearchEntries, loadIndex, saveIndex, loadStats, updateStats, saveActiveTaskSnapshot, loadActiveTaskSnapshot, clearActiveTaskSnapshot, appendSessionEvent, listSessionEvents, listMemoryConflicts, resolveConflict, saveSessionHandoff, loadLatestHandoff, loadHandoffById, RECALL_DEFAULT_DENY_SCOPES, } from './store.js';
36
38
  import { markRetrieved, hybridSearch, physicsSearch, explainMatch, textOverlap } from './search.js';
37
39
  import { renderTraceContent, parseSteps } from './trace.js';
38
40
  import { deduplicateStore } from './dedupe.js';
39
- import { isEmbeddingAvailable, embedAll, embedMemory, loadEmbeddingIndex, resolveEmbeddingModel, } from './embeddings.js';
41
+ import { isEmbeddingAvailable, embedAll, embedMemory, loadEmbeddingIndex, resolveEmbeddingModel, embeddingModelRequiresReindex, } from './embeddings.js';
42
+ import { isEmbeddingConfigured, resolveEmbeddingProvider } from './embedding-provider.js';
40
43
  import { loadPhysicsState, resetAllPhysicsState } from './physics-state.js';
41
44
  import { computeSystemEnergy, vecNorm } from './physics.js';
42
45
  import { loadConfig } from './config.js';
@@ -49,7 +52,7 @@ import { extractPathTags } from './path-context.js';
49
52
  import { detectScope } from './scope.js';
50
53
  import { getGlobalRoot, initGlobal, shareMemory, listPeers, autoShare, transferScore, searchBothHybrid, syncGlobalToLocal, } from './shared.js';
51
54
  import { DAILY_TASK_NAME, buildDailyRunnerCommand, listRegisteredWorkspaces, registerWorkspace, runDailyMaintenance, } from './scheduler.js';
52
- import { importChatGPT, importClaude, importCursor, importGenericFile, importMarkdown, } from './importers.js';
55
+ import { importChatGPT, importClaude, importCursor, importGenericFile, importMarkdown, importVault, } from './importers.js';
53
56
  import { cmdCapture } from './capture.js';
54
57
  import { auditMemories, appendAuditEvent, } from './audit.js';
55
58
  import { listApiKeys, revokeApiKey } from './auth.js';
@@ -639,8 +642,8 @@ async function cmdRemember(hippoRoot, text, flags) {
639
642
  console.log(` Tags: ${entry.tags.join(', ')}`);
640
643
  if (entry.pinned)
641
644
  console.log(' Pinned (no decay)');
642
- // Auto-embed if available
643
- if (isEmbeddingAvailable()) {
645
+ // Auto-embed if available (provider-aware: local dep installed, or API key present)
646
+ if (isEmbeddingConfigured(targetRoot)) {
644
647
  embedMemory(targetRoot, entry).catch(() => {
645
648
  // Silently ignore embedding errors
646
649
  });
@@ -1481,9 +1484,15 @@ async function cmdRecall(hippoRoot, query, flags) {
1481
1484
  // Update retrieval metadata and persist
1482
1485
  const updated = markRetrieved(results.map((r) => r.entry));
1483
1486
  const localIndex = loadIndex(hippoRoot);
1484
- for (const u of updated) {
1485
- const targetRoot = localIndex.entries[u.id] ? hippoRoot : (isInitialized(globalRoot) ? globalRoot : hippoRoot);
1486
- writeEntry(targetRoot, u);
1487
+ // EVAL-ONLY ablation (see ablation.ts): under the recall flag, markRetrieved
1488
+ // returns unmutated entries (ids preserved for outcome attribution below)
1489
+ // and persistence is skipped - writeEntry on identical rows still refreshes
1490
+ // updated_at, rewrites mirrors, and marks DAG parents dirty.
1491
+ if (!isRecallBoostAblated()) {
1492
+ for (const u of updated) {
1493
+ const targetRoot = localIndex.entries[u.id] ? hippoRoot : (isInitialized(globalRoot) ? globalRoot : hippoRoot);
1494
+ writeEntry(targetRoot, u);
1495
+ }
1487
1496
  }
1488
1497
  // Track last retrieval IDs for outcome command
1489
1498
  localIndex.last_retrieval_ids = updated.map((u) => u.id);
@@ -2090,7 +2099,7 @@ function cmdTrace(hippoRoot, id, flags) {
2090
2099
  console.error(`Memory not found: ${id}`);
2091
2100
  process.exit(1);
2092
2101
  }
2093
- const now = new Date();
2102
+ const now = evalNow();
2094
2103
  const strength = calculateStrength(entry, now);
2095
2104
  const halfLife = deriveHalfLife(7, entry);
2096
2105
  const rewardFactor = calculateRewardFactor(entry);
@@ -2704,7 +2713,7 @@ function cmdStatus(hippoRoot) {
2704
2713
  requireInit(hippoRoot);
2705
2714
  const entries = loadAllEntries(hippoRoot);
2706
2715
  const stats = loadStats(hippoRoot);
2707
- const now = new Date();
2716
+ const now = evalNow();
2708
2717
  const byLayer = {
2709
2718
  [Layer.Buffer]: 0,
2710
2719
  [Layer.Episodic]: 0,
@@ -2762,19 +2771,52 @@ function cmdStatus(hippoRoot) {
2762
2771
  else {
2763
2772
  console.log(`Last sleep: never`);
2764
2773
  }
2765
- // Embedding status
2766
- const embAvail = isEmbeddingAvailable();
2774
+ // Embedding status (provider-aware)
2775
+ const embedProvider = (() => {
2776
+ try {
2777
+ return resolveEmbeddingProvider(hippoRoot);
2778
+ }
2779
+ catch {
2780
+ return null;
2781
+ }
2782
+ })();
2767
2783
  console.log('');
2768
- console.log(`Embeddings: ${embAvail ? 'available' : 'not installed (BM25 only)'}`);
2769
- if (embAvail) {
2784
+ if (!embedProvider) {
2785
+ console.log(`Embeddings: misconfigured (check embeddings.provider / apiBaseUrl), BM25 only`);
2786
+ }
2787
+ else {
2788
+ const embeddingsDisabled = loadConfig(hippoRoot).embeddings.enabled === false;
2789
+ const embAvail = embedProvider.isAvailable();
2790
+ if (embeddingsDisabled) {
2791
+ console.log(`Embeddings: disabled in config (embeddings.enabled = false), BM25 only`);
2792
+ }
2793
+ else if (embedProvider.kind === 'local') {
2794
+ console.log(`Embeddings: ${embAvail ? `available [${embedProvider.id}]` : 'not installed (BM25 only)'}`);
2795
+ }
2796
+ else if (embAvail) {
2797
+ console.log(`Embeddings: ${embedProvider.kind} api [${embedProvider.id}]`);
2798
+ }
2799
+ else {
2800
+ console.log(`Embeddings: ${embedProvider.kind} configured but ${embedProvider.keyEnv} not set (BM25 only)`);
2801
+ }
2802
+ // Show cached counts whenever vectors exist on disk (even when disabled or
2803
+ // the key was removed), so the user still sees what is already indexed.
2770
2804
  const embIndex = loadEmbeddingIndex(hippoRoot);
2771
- const activeIds = new Set(entries.map((e) => e.id));
2772
- const activeEmbedded = Object.keys(embIndex).filter((id) => activeIds.has(id)).length;
2773
- const orphaned = Object.keys(embIndex).length - activeEmbedded;
2774
- let line = `Embedded: ${activeEmbedded}/${entries.length} memories`;
2775
- if (orphaned > 0)
2776
- line += ` (${orphaned} orphaned — run \`hippo embed\` to prune)`;
2777
- console.log(line);
2805
+ if (embAvail || Object.keys(embIndex).length > 0) {
2806
+ const activeIds = new Set(entries.map((e) => e.id));
2807
+ const activeEmbedded = Object.keys(embIndex).filter((id) => activeIds.has(id)).length;
2808
+ const orphaned = Object.keys(embIndex).length - activeEmbedded;
2809
+ const dims = Object.values(embIndex)[0]?.length;
2810
+ let line = `Embedded: ${activeEmbedded}/${entries.length} memories`;
2811
+ if (dims)
2812
+ line += ` (${dims}-dim)`;
2813
+ if (orphaned > 0)
2814
+ line += ` (${orphaned} orphaned, run \`hippo embed\` to prune)`;
2815
+ console.log(line);
2816
+ if (embeddingModelRequiresReindex(hippoRoot, embedProvider.id, embIndex)) {
2817
+ console.log(` model changed, run \`hippo embed\` to reindex`);
2818
+ }
2819
+ }
2778
2820
  }
2779
2821
  // Physics status
2780
2822
  try {
@@ -2892,7 +2934,7 @@ function cmdInspect(hippoRoot, id) {
2892
2934
  console.error(`Memory not found: ${id}`);
2893
2935
  process.exit(1);
2894
2936
  }
2895
- const now = new Date();
2937
+ const now = evalNow();
2896
2938
  const currentStrength = calculateStrength(entry, now);
2897
2939
  const lastRetrieved = new Date(entry.last_retrieved);
2898
2940
  const created = new Date(entry.created);
@@ -4877,6 +4919,9 @@ async function cmdContext(hippoRoot, args, flags) {
4877
4919
  tenantId: resolveTenantId({}),
4878
4920
  actor: api.adminActor('cli'),
4879
4921
  };
4922
+ // v39 memory scope isolation: --cross-project re-includes other-project
4923
+ // memories (rendered under a demarcated section below).
4924
+ const crossProject = flags['cross-project'] === true;
4880
4925
  const opts = {
4881
4926
  q: query,
4882
4927
  budget,
@@ -4884,6 +4929,7 @@ async function cmdContext(hippoRoot, args, flags) {
4884
4929
  pinnedOnly,
4885
4930
  scope: ctxActiveScope ?? undefined,
4886
4931
  includeRecent: parseCountFlag(flags['include-recent']),
4932
+ crossProject,
4887
4933
  };
4888
4934
  const result = await api.getContext(ctx, opts);
4889
4935
  // Early exit when there's nothing to render (matches pre-extraction behavior).
@@ -4896,8 +4942,13 @@ async function cmdContext(hippoRoot, args, flags) {
4896
4942
  // Format + framing are CLI rendering concerns; api.getContext doesn't see them.
4897
4943
  const format = String(flags['format'] ?? 'markdown');
4898
4944
  const framing = String(flags['framing'] ?? 'observe');
4899
- // Adapter: ContextResultEntry -> the print-helper input shape.
4900
- const renderItems = result.entries.map((r) => ({
4945
+ // Adapter: ContextResultEntry -> the print-helper input shape. v39:
4946
+ // cross-project inclusions (only present under --cross-project or with
4947
+ // isolation disabled via crossProject) render in their own demarcated
4948
+ // section so they can never masquerade as project memory.
4949
+ const mainEntries = result.entries.filter((r) => r.category !== 'cross-project');
4950
+ const crossEntries = result.entries.filter((r) => r.category === 'cross-project');
4951
+ const renderItems = mainEntries.map((r) => ({
4901
4952
  entry: r.entry,
4902
4953
  score: r.score,
4903
4954
  tokens: r.tokens,
@@ -4912,6 +4963,8 @@ async function cmdContext(hippoRoot, args, flags) {
4912
4963
  confidence: r.entry.confidence,
4913
4964
  content: r.entry.content,
4914
4965
  global: r.isGlobal ?? false,
4966
+ origin: r.origin ?? null,
4967
+ category: r.category ?? null,
4915
4968
  }));
4916
4969
  console.log(JSON.stringify({
4917
4970
  query: query || '*',
@@ -4939,6 +4992,7 @@ async function cmdContext(hippoRoot, args, flags) {
4939
4992
  if (renderItems.length > 0) {
4940
4993
  printContextMarkdown(renderItems, result.tokens, framing);
4941
4994
  }
4995
+ printCrossProjectSection(crossEntries);
4942
4996
  }
4943
4997
  finally {
4944
4998
  console.log = realLog;
@@ -4968,6 +5022,7 @@ async function cmdContext(hippoRoot, args, flags) {
4968
5022
  if (renderItems.length > 0) {
4969
5023
  printContextMarkdown(renderItems, result.tokens, framing);
4970
5024
  }
5025
+ printCrossProjectSection(crossEntries);
4971
5026
  // Ambient state summary (CLI-side: api.getContext doesn't load all entries
4972
5027
  // post-selection, so we re-load here for the landscape summary).
4973
5028
  const ambientConfig = loadConfig(hippoRoot);
@@ -4975,11 +5030,17 @@ async function cmdContext(hippoRoot, args, flags) {
4975
5030
  const tenantId = ctx.tenantId;
4976
5031
  const globalRoot = getGlobalRoot();
4977
5032
  const hasGlobalForAmbient = isInitialized(globalRoot);
5033
+ // v39: the landscape summary must reflect the same admission policy as
5034
+ // the injected entries - otherwise excluded rows leak back in as
5035
+ // aggregate signal (codex P2-13).
5036
+ const isolationOff = ambientConfig.contextProjectIsolation === false;
5037
+ const ambientCurrentName = resolveProjectIdentity(process.cwd()).name;
5038
+ const ambientAdmit = (e) => api.ambientAdmitEntry(e, ambientCurrentName, crossProject || isolationOff);
4978
5039
  const localForAmbient = isInitialized(hippoRoot)
4979
- ? loadAllEntries(hippoRoot, tenantId).filter(e => !e.superseded_by)
5040
+ ? loadAllEntries(hippoRoot, tenantId).filter(e => !e.superseded_by).filter(ambientAdmit)
4980
5041
  : [];
4981
5042
  const globalForAmbient = hasGlobalForAmbient
4982
- ? loadAllEntries(globalRoot, tenantId).filter(e => !e.superseded_by)
5043
+ ? loadAllEntries(globalRoot, tenantId).filter(e => !e.superseded_by).filter(ambientAdmit)
4983
5044
  : [];
4984
5045
  const allForAmbient = [...localForAmbient, ...globalForAmbient];
4985
5046
  if (allForAmbient.length > 0) {
@@ -4989,9 +5050,24 @@ async function cmdContext(hippoRoot, args, flags) {
4989
5050
  }
4990
5051
  }
4991
5052
  }
5053
+ /**
5054
+ * v39: render cross-project inclusions under an explicit header so agents
5055
+ * (and humans) can tell borrowed context from project memory. Only ever
5056
+ * non-empty when the caller passed --cross-project or disabled isolation.
5057
+ */
5058
+ function printCrossProjectSection(items) {
5059
+ if (items.length === 0)
5060
+ return;
5061
+ console.log(`\n## Other-project memory (explicitly requested, ${items.length} entries)\n`);
5062
+ for (const item of items) {
5063
+ const originLabel = item.origin === null || item.origin === '' ? 'unknown-origin' : item.origin;
5064
+ const tagStr = item.entry.tags.length > 0 ? ` [${item.entry.tags.join(', ')}]` : '';
5065
+ console.log(`- **[${originLabel}]** ${item.entry.content}${tagStr}`);
5066
+ }
5067
+ }
4992
5068
  /** @internal — exported for snapshot tests (tests/cli-context-render-snapshot.test.ts). NOT a stable public API. */
4993
5069
  export function printContextMarkdown(items, totalTokens, framing = 'observe') {
4994
- const now = new Date();
5070
+ const now = evalNow();
4995
5071
  console.log(`## Project Memory (${items.length} entries, ${totalTokens} tokens)\n`);
4996
5072
  for (const item of items) {
4997
5073
  const e = item.entry;
@@ -5059,11 +5135,9 @@ function autoDetectContext() {
5059
5135
  // ---------------------------------------------------------------------------
5060
5136
  async function cmdEmbed(hippoRoot, flags) {
5061
5137
  requireInit(hippoRoot);
5062
- if (!isEmbeddingAvailable()) {
5063
- console.log('Embeddings not available. Install @xenova/transformers to enable:');
5064
- console.log(' npm install @xenova/transformers');
5065
- return;
5066
- }
5138
+ // --status and --reset-physics only read cached state, so they must work even
5139
+ // when no provider key is present (e.g. embedded earlier with a key that was
5140
+ // later removed). The provider-availability gate is deferred to the embed path.
5067
5141
  if (flags['reset-physics']) {
5068
5142
  const entries = loadAllEntries(hippoRoot);
5069
5143
  const embIndex = loadEmbeddingIndex(hippoRoot);
@@ -5093,8 +5167,48 @@ async function cmdEmbed(hippoRoot, flags) {
5093
5167
  }
5094
5168
  return;
5095
5169
  }
5170
+ // Embedding (unlike status/reset) needs an available provider.
5171
+ const embedProvider = (() => {
5172
+ try {
5173
+ return resolveEmbeddingProvider(hippoRoot);
5174
+ }
5175
+ catch (err) {
5176
+ console.error(err instanceof Error ? err.message : String(err));
5177
+ return null;
5178
+ }
5179
+ })();
5180
+ if (!embedProvider) {
5181
+ process.exitCode = 1;
5182
+ return;
5183
+ }
5184
+ if (!embedProvider.isAvailable()) {
5185
+ if (loadConfig(hippoRoot).embeddings.enabled === false) {
5186
+ console.log('Embeddings are disabled in config (embeddings.enabled = false). Set it to true or "auto" to enable.');
5187
+ return;
5188
+ }
5189
+ if (embedProvider.kind === 'local') {
5190
+ console.log('Embeddings not available. Install @xenova/transformers to enable:');
5191
+ console.log(' npm install @xenova/transformers');
5192
+ }
5193
+ else {
5194
+ console.error(`Embedding provider '${embedProvider.kind}' is configured but ${embedProvider.keyEnv} is not set.`);
5195
+ console.error(`Export ${embedProvider.keyEnv}, or set config.embeddings.provider back to 'local'.`);
5196
+ process.exitCode = 1;
5197
+ }
5198
+ return;
5199
+ }
5096
5200
  console.log('Embedding all memories (this may take a moment on first run to download model)...');
5097
- const count = await embedAll(hippoRoot, resolveEmbeddingModel(hippoRoot));
5201
+ let count;
5202
+ try {
5203
+ count = await embedAll(hippoRoot, resolveEmbeddingModel(hippoRoot));
5204
+ }
5205
+ catch (err) {
5206
+ console.error(`Embedding failed: ${err instanceof Error ? err.message : String(err)}`);
5207
+ const partial = loadEmbeddingIndex(hippoRoot);
5208
+ console.error(`Partial progress saved: ${Object.keys(partial).length} embeddings on disk. Re-run \`hippo embed\` to resume.`);
5209
+ process.exitCode = 1;
5210
+ return;
5211
+ }
5098
5212
  const entriesAfter = loadAllEntries(hippoRoot);
5099
5213
  const embIndexAfter = loadEmbeddingIndex(hippoRoot);
5100
5214
  console.log(`Done. ${count} new embeddings created. ${Object.keys(embIndexAfter).length}/${entriesAfter.length} total.`);
@@ -5126,7 +5240,7 @@ async function cmdWatch(command, hippoRoot) {
5126
5240
  entry.strength = calculateStrength(entry);
5127
5241
  writeEntry(hippoRoot, entry);
5128
5242
  updateStats(hippoRoot, { remembered: 1 });
5129
- if (isEmbeddingAvailable()) {
5243
+ if (isEmbeddingConfigured(hippoRoot)) {
5130
5244
  embedMemory(hippoRoot, entry).catch(() => { });
5131
5245
  }
5132
5246
  const preview = stderr.trim().slice(0, 80);
@@ -5190,7 +5304,7 @@ function learnFromRepo(hippoRoot, repoPath, days, label) {
5190
5304
  }
5191
5305
  writeEntry(hippoRoot, entry);
5192
5306
  updateStats(hippoRoot, { remembered: 1 });
5193
- if (isEmbeddingAvailable()) {
5307
+ if (isEmbeddingConfigured(hippoRoot)) {
5194
5308
  embedMemory(hippoRoot, entry).catch(() => { });
5195
5309
  }
5196
5310
  added++;
@@ -5248,6 +5362,54 @@ function cmdImport(hippoRoot, args, flags) {
5248
5362
  extraTags,
5249
5363
  hippoRoot,
5250
5364
  };
5365
+ // K1 vault import: a FOLDER importer that mirrors the connector pattern
5366
+ // (kind='raw' + tag provenance + archiveRaw deletions), so it dispatches
5367
+ // separately from the single-file `importer` function-pointer slot below.
5368
+ // It writes through api.remember/archiveRaw which are tenant-scoped, so we
5369
+ // resolve the tenant and pass it through. --global is not supported for
5370
+ // vault import (the connector raw-archive path is tenant-local).
5371
+ if (flags['vault']) {
5372
+ const folderPath = String(flags['vault']);
5373
+ if (!fs.existsSync(folderPath) || !fs.statSync(folderPath).isDirectory()) {
5374
+ console.error(`Vault folder not found (or not a directory): ${folderPath}`);
5375
+ process.exit(1);
5376
+ }
5377
+ if (useGlobal) {
5378
+ console.error('hippo import --vault does not support --global (raw rows are tenant-local).');
5379
+ process.exit(1);
5380
+ }
5381
+ if (typeof flags['name'] !== 'string' || !flags['name'].trim()) {
5382
+ // --name is the vault identity key for the destructive source-deletion sync;
5383
+ // inferring it from the folder basename let same-basename vaults collide and
5384
+ // clobber each other (codex R10 P2). A valueless `--name` parses as boolean
5385
+ // true, and String(true) === "true" would silently import under vault:true:*
5386
+ // - reject a non-string so it fails fast instead (codex R11 P2).
5387
+ console.error('hippo import --vault requires --name <vault> (a non-empty identity key for source-deletion sync).');
5388
+ process.exit(1);
5389
+ }
5390
+ if (flags['scope'] !== undefined && (typeof flags['scope'] !== 'string' || !flags['scope'].trim())) {
5391
+ // Same valueless-flag trap: a bare `--scope` must not become scope "true".
5392
+ // Example uses the source-prefixed private form, since a bare `private` scope
5393
+ // is NOT treated as private by recall and importVault rejects it (R13 P2).
5394
+ console.error('hippo import --vault: --scope requires a value (e.g. --scope vault:private:notes).');
5395
+ process.exit(1);
5396
+ }
5397
+ const tenantId = resolveTenantId({});
5398
+ const vaultOptions = {
5399
+ ...importOptions,
5400
+ tenantId,
5401
+ name: flags['name'] ? String(flags['name']) : undefined,
5402
+ scope: flags['scope'] ? String(flags['scope']) : undefined,
5403
+ };
5404
+ const vaultResult = importVault(folderPath, vaultOptions);
5405
+ console.log(`\nImport Vault: ${folderPath}${dryRun ? ' (dry run - no writes)' : ''}`);
5406
+ console.log(` Notes found: ${vaultResult.total}`);
5407
+ console.log(` ${dryRun ? 'Would import: ' : 'Imported: '}${vaultResult.imported}`);
5408
+ console.log(` Skipped (unchanged): ${vaultResult.skipped}`);
5409
+ console.log(` ${dryRun ? 'Would archive: ' : 'Archived (removed): '}${vaultResult.archived ?? 0}`);
5410
+ console.log(` Store: ${hippoRoot}`);
5411
+ return;
5412
+ }
5251
5413
  // Determine which importer to use based on flag
5252
5414
  let filePath;
5253
5415
  let importer;
@@ -5284,7 +5446,7 @@ function cmdImport(hippoRoot, args, flags) {
5284
5446
  importerName = 'File';
5285
5447
  }
5286
5448
  if (!filePath || !importer) {
5287
- console.error('Usage: hippo import <--chatgpt|--claude|--cursor|--file|--markdown> <path>');
5449
+ console.error('Usage: hippo import <--chatgpt|--claude|--cursor|--file|--markdown|--vault> <path>');
5288
5450
  process.exit(1);
5289
5451
  }
5290
5452
  if (!fs.existsSync(filePath)) {
@@ -5340,15 +5502,17 @@ function cmdPromote(hippoRoot, id) {
5340
5502
  // ---------------------------------------------------------------------------
5341
5503
  // Sync command
5342
5504
  // ---------------------------------------------------------------------------
5343
- function cmdSync(hippoRoot) {
5505
+ function cmdSync(hippoRoot, flags = {}) {
5344
5506
  requireInit(hippoRoot);
5345
5507
  const globalRoot = getGlobalRoot();
5346
5508
  if (!isInitialized(globalRoot)) {
5347
5509
  console.log('No global store found. Run `hippo init --global` first.');
5348
5510
  return;
5349
5511
  }
5350
- const count = syncGlobalToLocal(hippoRoot, globalRoot);
5351
- console.log(`Synced ${count} global memories into local project.`);
5512
+ // v39: other-project rows are skipped by default; secrets always are.
5513
+ const includeCrossProject = flags['cross-project'] === true;
5514
+ const count = syncGlobalToLocal(hippoRoot, globalRoot, { includeCrossProject });
5515
+ console.log(`Synced ${count} global memories into local project.${includeCrossProject ? '' : ' (other-project rows skipped; use --cross-project to include them)'}`);
5352
5516
  }
5353
5517
  // ---------------------------------------------------------------------------
5354
5518
  // Hook install/uninstall
@@ -5364,7 +5528,11 @@ const HOOKS = {
5364
5528
  content: `
5365
5529
  ## Project Memory (Hippo)
5366
5530
 
5367
- Before starting work, load relevant context:
5531
+ Pinned rules and recent writes auto-inject at every prompt via the installed
5532
+ UserPromptSubmit hook; never re-run that part manually. At the START of a
5533
+ task (not per prompt), additionally load task-specific context: git-aware
5534
+ recall over the full store that per-prompt injection does not cover. Also
5535
+ run it if the hook is not installed:
5368
5536
  \`\`\`bash
5369
5537
  hippo context --auto --budget 1500
5370
5538
  \`\`\`
@@ -7004,6 +7172,9 @@ Commands:
7004
7172
  --cursor <path> Import from .cursorrules or .cursor/rules
7005
7173
  --file <path> Import from any markdown or text file
7006
7174
  --markdown <path> Import from structured MEMORY.md / AGENTS.md
7175
+ --vault <path> Import a markdown-vault FOLDER as kind='raw' notes
7176
+ (Obsidian/Foam/Dendron). Requires --name <vault>.
7177
+ [--scope <scope>]
7007
7178
  --dry-run Preview without writing
7008
7179
  --global Write to global store ($HIPPO_HOME or ~/.hippo/)
7009
7180
  --tag <tag> Add extra tag (repeatable)
@@ -7598,7 +7769,7 @@ async function main() {
7598
7769
  break;
7599
7770
  }
7600
7771
  case 'sync':
7601
- cmdSync(hippoRoot);
7772
+ cmdSync(hippoRoot, flags);
7602
7773
  break;
7603
7774
  case 'share': {
7604
7775
  const shareId = args[0];