hippo-memory 1.23.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.
- package/README.md +16 -5
- package/bin/hippo.js +2 -2
- package/dist/ablation.d.ts +93 -0
- package/dist/ablation.d.ts.map +1 -0
- package/dist/ablation.js +138 -0
- package/dist/ablation.js.map +1 -0
- package/dist/ambient.d.ts.map +1 -1
- package/dist/ambient.js +2 -1
- package/dist/ambient.js.map +1 -1
- package/dist/api.d.ts +37 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +88 -11
- package/dist/api.js.map +1 -1
- package/dist/benchmarks/e1.3/scenarios.json +2587 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +117 -18
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/connectors/github/backfill.js +4 -4
- package/dist/connectors/github/cli-impl.js +6 -6
- package/dist/connectors/github/dlq.js +14 -14
- package/dist/connectors/slack/backfill.js +1 -1
- package/dist/connectors/slack/dlq.js +10 -10
- package/dist/connectors/slack/workspaces.js +4 -4
- package/dist/consolidate.d.ts.map +1 -1
- package/dist/consolidate.js +27 -5
- package/dist/consolidate.js.map +1 -1
- package/dist/dag.js +6 -6
- package/dist/dashboard.js +7 -7
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +55 -4
- package/dist/db.js.map +1 -1
- package/dist/hooks.js +24 -24
- package/dist/importers.d.ts +28 -0
- package/dist/importers.d.ts.map +1 -1
- package/dist/importers.js +412 -1
- package/dist/importers.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +44 -7
- package/dist/mcp/server.js.map +1 -1
- package/dist/memory.d.ts +9 -0
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +29 -6
- package/dist/memory.js.map +1 -1
- package/dist/physics-state.d.ts.map +1 -1
- package/dist/physics-state.js +4 -3
- package/dist/physics-state.js.map +1 -1
- package/dist/physics.d.ts.map +1 -1
- package/dist/physics.js +8 -1
- package/dist/physics.js.map +1 -1
- package/dist/predictions.js +67 -67
- package/dist/project-identity.d.ts +84 -0
- package/dist/project-identity.d.ts.map +1 -0
- package/dist/project-identity.js +184 -0
- package/dist/project-identity.js.map +1 -0
- package/dist/refine-llm.js +13 -13
- package/dist/replay.d.ts.map +1 -1
- package/dist/replay.js +4 -1
- package/dist/replay.js.map +1 -1
- package/dist/search.d.ts +14 -0
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +36 -7
- package/dist/search.js.map +1 -1
- package/dist/secret-detect.d.ts +33 -0
- package/dist/secret-detect.d.ts.map +1 -0
- package/dist/secret-detect.js +70 -0
- package/dist/secret-detect.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +11 -0
- package/dist/server.js.map +1 -1
- package/dist/shared.d.ts +9 -1
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +67 -16
- package/dist/shared.js.map +1 -1
- package/dist/src/ablation.js +138 -0
- package/dist/src/ablation.js.map +1 -0
- package/dist/src/ambient.js +2 -1
- package/dist/src/ambient.js.map +1 -1
- package/dist/src/api.js +88 -11
- package/dist/src/api.js.map +1 -1
- package/dist/src/cli.js +117 -18
- package/dist/src/cli.js.map +1 -1
- package/dist/src/config.js +2 -0
- package/dist/src/config.js.map +1 -1
- package/dist/src/connectors/github/backfill.js +4 -4
- package/dist/src/connectors/github/cli-impl.js +6 -6
- package/dist/src/connectors/github/dlq.js +14 -14
- package/dist/src/connectors/slack/backfill.js +1 -1
- package/dist/src/connectors/slack/dlq.js +10 -10
- package/dist/src/connectors/slack/workspaces.js +4 -4
- package/dist/src/consolidate.js +27 -5
- package/dist/src/consolidate.js.map +1 -1
- package/dist/src/dag.js +6 -6
- package/dist/src/dashboard.js +7 -7
- package/dist/src/db.js +55 -4
- package/dist/src/db.js.map +1 -1
- package/dist/src/hooks.js +24 -24
- package/dist/src/importers.js +412 -1
- package/dist/src/importers.js.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/server.js +44 -7
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/memory.js +29 -6
- package/dist/src/memory.js.map +1 -1
- package/dist/src/physics-state.js +4 -3
- package/dist/src/physics-state.js.map +1 -1
- package/dist/src/physics.js +8 -1
- package/dist/src/physics.js.map +1 -1
- package/dist/src/predictions.js +67 -67
- package/dist/src/project-identity.js +184 -0
- package/dist/src/project-identity.js.map +1 -0
- package/dist/src/refine-llm.js +13 -13
- package/dist/src/replay.js +4 -1
- package/dist/src/replay.js.map +1 -1
- package/dist/src/search.js +36 -7
- package/dist/src/search.js.map +1 -1
- package/dist/src/secret-detect.js +70 -0
- package/dist/src/secret-detect.js.map +1 -0
- package/dist/src/server.js +11 -0
- package/dist/src/server.js.map +1 -1
- package/dist/src/shared.js +67 -16
- package/dist/src/shared.js.map +1 -1
- package/dist/src/store.js +66 -11
- package/dist/src/store.js.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/working-memory.js +19 -19
- package/dist/store.d.ts +15 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +66 -11
- package/dist/store.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/working-memory.js +19 -19
- package/dist-ui/index.html +12 -12
- package/extensions/openclaw-plugin/index.ts +650 -650
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +3 -1
package/dist/src/shared.js
CHANGED
|
@@ -6,22 +6,20 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import * as fs from 'fs';
|
|
8
8
|
import * as path from 'path';
|
|
9
|
-
import * as os from 'os';
|
|
10
9
|
import { generateId } from './memory.js';
|
|
11
10
|
import { initStore, loadAllEntries, loadIndex, loadSearchEntries, writeEntry, readEntry, } from './store.js';
|
|
12
11
|
import { search, hybridSearch } from './search.js';
|
|
12
|
+
import { evalNow } from './ablation.js';
|
|
13
|
+
import { deriveOriginProject, classifyOriginProject, resolveGlobalRootDir } from './project-identity.js';
|
|
14
|
+
import { detectSecret } from './secret-detect.js';
|
|
13
15
|
/**
|
|
14
16
|
* Returns the path to the global Hippo store.
|
|
15
17
|
* Resolution order: $HIPPO_HOME > $XDG_DATA_HOME/hippo > ~/.hippo/
|
|
16
18
|
*/
|
|
17
19
|
export function getGlobalRoot() {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const xdgData = process.env.XDG_DATA_HOME?.trim();
|
|
22
|
-
if (xdgData)
|
|
23
|
-
return path.join(xdgData, 'hippo');
|
|
24
|
-
return path.join(os.homedir(), '.hippo');
|
|
20
|
+
// Single source of truth lives in project-identity.ts (leaf) so db.ts
|
|
21
|
+
// migrations can resolve the same path without a shared.ts import cycle.
|
|
22
|
+
return resolveGlobalRootDir();
|
|
25
23
|
}
|
|
26
24
|
/**
|
|
27
25
|
* Ensure the global store exists.
|
|
@@ -45,13 +43,23 @@ export function promoteToGlobal(localRoot, id, opts) {
|
|
|
45
43
|
const entry = readEntry(localRoot, id, opts?.tenantId);
|
|
46
44
|
if (!entry)
|
|
47
45
|
throw new Error(`Memory not found: ${id}`);
|
|
46
|
+
// v39 S4 producer veto: promote is a producer path to the global store
|
|
47
|
+
// exactly like shareMemory - same hard rule (codex gating review P2).
|
|
48
|
+
const promoteSecret = detectSecret(entry);
|
|
49
|
+
if (promoteSecret.flagged) {
|
|
50
|
+
throw new Error(`Refusing to promote ${id} to the global store: content matches secret material (${promoteSecret.reason}). ` +
|
|
51
|
+
`Secrets stay in their owning project's store.`);
|
|
52
|
+
}
|
|
48
53
|
initGlobal();
|
|
49
54
|
const globalRoot = getGlobalRoot();
|
|
50
|
-
// Mint a new ID for the global store
|
|
55
|
+
// Mint a new ID for the global store. origin_project rides along from the
|
|
56
|
+
// local entry's write-time stamp via the spread; back-stop it for pre-v39
|
|
57
|
+
// local rows so a promoted copy never lands NULL in the global store.
|
|
51
58
|
const globalEntry = {
|
|
52
59
|
...entry,
|
|
53
60
|
id: generateId('g'),
|
|
54
61
|
source: `promoted:${localRoot}`,
|
|
62
|
+
origin_project: entry.origin_project ?? deriveOriginProject(path.dirname(path.resolve(localRoot))),
|
|
55
63
|
};
|
|
56
64
|
writeEntry(globalRoot, globalEntry, { actor: opts?.actor });
|
|
57
65
|
return globalEntry;
|
|
@@ -62,7 +70,7 @@ export function promoteToGlobal(localRoot, id, opts) {
|
|
|
62
70
|
* Returns results sorted by adjusted score, within combined token budget.
|
|
63
71
|
*/
|
|
64
72
|
export function searchBoth(query, localRoot, globalRoot, options = {}) {
|
|
65
|
-
const { budget = 4000, now =
|
|
73
|
+
const { budget = 4000, now = evalNow(), minResults, tenantId } = options;
|
|
66
74
|
const effectiveMin = minResults ?? 1;
|
|
67
75
|
const localEntries = fs.existsSync(localRoot) ? loadSearchEntries(localRoot, query, undefined, tenantId) : [];
|
|
68
76
|
const globalEntries = fs.existsSync(globalRoot) ? loadSearchEntries(globalRoot, query, undefined, tenantId) : [];
|
|
@@ -111,9 +119,24 @@ export function searchBoth(query, localRoot, globalRoot, options = {}) {
|
|
|
111
119
|
* Async version of searchBoth that calls hybridSearch instead of search.
|
|
112
120
|
*/
|
|
113
121
|
export async function searchBothHybrid(query, localRoot, globalRoot, options = {}) {
|
|
114
|
-
const { budget = 4000, now =
|
|
115
|
-
|
|
116
|
-
|
|
122
|
+
const { budget = 4000, now = evalNow(), embeddingWeight, explain, mmr, mmrLambda, localBump = 1.2, minResults, scope, includeSuperseded, asOf, tenantId, summaryDeboost, summaryFreshness, entryFilter } = options;
|
|
123
|
+
// When an admission filter is active, lift the per-store candidate cap
|
|
124
|
+
// (default 200): excluded rows matching the query could otherwise fill the
|
|
125
|
+
// window before any admitted row is even loaded (codex gating round 6).
|
|
126
|
+
// Only ambient-context query mode sets entryFilter, and that path is
|
|
127
|
+
// interactive - never the per-turn pinned-only hook - so ranking the full
|
|
128
|
+
// match set is acceptable.
|
|
129
|
+
// 5000 = 25x the default 200-row window: large enough that exclusion
|
|
130
|
+
// crowding is a non-issue on real stores, bounded so a common query term
|
|
131
|
+
// on a 100k-row store cannot stall an interactive call by ranking every
|
|
132
|
+
// match (post-merge adversarial review, 2026-07-02).
|
|
133
|
+
const searchWindow = entryFilter ? 5000 : undefined;
|
|
134
|
+
let localEntries = fs.existsSync(localRoot) ? loadSearchEntries(localRoot, query, searchWindow, tenantId) : [];
|
|
135
|
+
let globalEntries = fs.existsSync(globalRoot) ? loadSearchEntries(globalRoot, query, searchWindow, tenantId) : [];
|
|
136
|
+
if (entryFilter) {
|
|
137
|
+
localEntries = localEntries.filter(entryFilter);
|
|
138
|
+
globalEntries = globalEntries.filter(entryFilter);
|
|
139
|
+
}
|
|
117
140
|
if (localEntries.length === 0 && globalEntries.length === 0)
|
|
118
141
|
return [];
|
|
119
142
|
const localResults = await hybridSearch(query, localEntries, {
|
|
@@ -208,16 +231,29 @@ export function shareMemory(localRoot, id, options = {}) {
|
|
|
208
231
|
const entry = readEntry(localRoot, id, options.tenantId);
|
|
209
232
|
if (!entry)
|
|
210
233
|
throw new Error(`Memory not found: ${id}`);
|
|
234
|
+
// v39 S4 producer veto: secrets never go to the global store, not even
|
|
235
|
+
// with --force. Explicit and loud - a silent null would read as "low
|
|
236
|
+
// transfer score" and invite retries.
|
|
237
|
+
const secret = detectSecret(entry);
|
|
238
|
+
if (secret.flagged) {
|
|
239
|
+
throw new Error(`Refusing to share ${id} to the global store: content matches secret material (${secret.reason}). ` +
|
|
240
|
+
`Secrets stay in their owning project's store.`);
|
|
241
|
+
}
|
|
211
242
|
const score = transferScore(entry);
|
|
212
243
|
if (score < 0.3 && !options.force)
|
|
213
244
|
return null;
|
|
214
245
|
initGlobal();
|
|
215
246
|
const globalRoot = getGlobalRoot();
|
|
216
|
-
|
|
247
|
+
// v39: canonical origin comes from the entry's own stamp (write-time,
|
|
248
|
+
// store-location-derived); the localRoot parent basename is only a
|
|
249
|
+
// fallback for pre-v39 rows and keeps the legacy source format intact.
|
|
250
|
+
const fallbackName = path.basename(path.resolve(localRoot, '..'));
|
|
251
|
+
const originName = entry.origin_project ?? deriveOriginProject(path.dirname(path.resolve(localRoot)));
|
|
217
252
|
const globalEntry = {
|
|
218
253
|
...entry,
|
|
219
254
|
id: generateId('g'),
|
|
220
|
-
source: `shared:${
|
|
255
|
+
source: `shared:${originName === '' ? fallbackName : originName}:${new Date().toISOString()}`,
|
|
256
|
+
origin_project: originName,
|
|
221
257
|
};
|
|
222
258
|
writeEntry(globalRoot, globalEntry);
|
|
223
259
|
return globalEntry;
|
|
@@ -294,6 +330,11 @@ export function autoShare(localRoot, options = {}) {
|
|
|
294
330
|
// Build set of global content hashes to avoid duplicates
|
|
295
331
|
const globalContentSet = new Set(globalEntries.map((e) => e.content.toLowerCase().trim().slice(0, 200)));
|
|
296
332
|
const candidates = localEntries.filter((entry) => {
|
|
333
|
+
// v39 S4 producer veto: secret rows never auto-share, regardless of
|
|
334
|
+
// transfer score. (shareMemory would throw; filtering here keeps the
|
|
335
|
+
// sleep pipeline fail-safe.)
|
|
336
|
+
if (detectSecret(entry).flagged)
|
|
337
|
+
return false;
|
|
297
338
|
const score = transferScore(entry);
|
|
298
339
|
if (score < minScore)
|
|
299
340
|
return false;
|
|
@@ -318,7 +359,7 @@ export function autoShare(localRoot, options = {}) {
|
|
|
318
359
|
* Skips entries that already exist locally (by ID or by near-identical content).
|
|
319
360
|
* Returns the count of newly copied entries.
|
|
320
361
|
*/
|
|
321
|
-
export function syncGlobalToLocal(localRoot, globalRoot) {
|
|
362
|
+
export function syncGlobalToLocal(localRoot, globalRoot, opts = {}) {
|
|
322
363
|
if (!fs.existsSync(globalRoot))
|
|
323
364
|
return 0;
|
|
324
365
|
// L9: host-wide read. syncGlobalToLocal copies the global union into a
|
|
@@ -326,11 +367,21 @@ export function syncGlobalToLocal(localRoot, globalRoot) {
|
|
|
326
367
|
// the local-root context provides one.
|
|
327
368
|
const globalEntries = loadAllEntries(globalRoot);
|
|
328
369
|
const localIndex = loadIndex(localRoot);
|
|
370
|
+
// v39 (codex P1-4): syncing down must not re-import what ambient context
|
|
371
|
+
// excludes - other-project rows are skipped by default and secret rows
|
|
372
|
+
// are never copied. origin_project is preserved on the copy (writeEntry
|
|
373
|
+
// only stamps when the field is missing).
|
|
374
|
+
const currentName = deriveOriginProject(path.dirname(path.resolve(localRoot)));
|
|
329
375
|
let count = 0;
|
|
330
376
|
for (const entry of globalEntries) {
|
|
331
377
|
// Skip if already present by ID
|
|
332
378
|
if (localIndex.entries[entry.id])
|
|
333
379
|
continue;
|
|
380
|
+
if (detectSecret(entry).flagged)
|
|
381
|
+
continue;
|
|
382
|
+
if (!opts.includeCrossProject &&
|
|
383
|
+
classifyOriginProject(entry.origin_project, currentName) === 'cross-project')
|
|
384
|
+
continue;
|
|
334
385
|
writeEntry(localRoot, entry);
|
|
335
386
|
count++;
|
|
336
387
|
}
|
package/dist/src/shared.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/shared.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/shared.ts"],"names":[],"mappings":"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"}
|
package/dist/src/store.js
CHANGED
|
@@ -13,6 +13,7 @@ import { rowToSessionHandoff } from './handoff.js';
|
|
|
13
13
|
import { tokenize } from './search.js';
|
|
14
14
|
import { appendAuditEvent } from './audit.js';
|
|
15
15
|
import { resolveTenantId } from './tenant.js';
|
|
16
|
+
import { deriveOriginProject, originFromSource } from './project-identity.js';
|
|
16
17
|
/**
|
|
17
18
|
* Emit an audit event for a mutation against `db`. Wrapped so a broken audit
|
|
18
19
|
* log can never crash the surrounding mutation — the SQLite store is still the
|
|
@@ -34,13 +35,13 @@ function audit(db, op, targetId, metadata, actor = 'cli', tenantId) {
|
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
const INDEX_VERSION = 3;
|
|
37
|
-
const MEMORY_SELECT_COLUMNS = `id, created, last_retrieved, retrieval_count, strength, half_life_days, layer, tags_json, emotional_valence, schema_fit, source, outcome_score, outcome_positive, outcome_negative, conflicts_with_json, pinned, confidence, content, parents_json, starred, trace_outcome, source_session_id, valid_from, superseded_by, extracted_from, dag_level, dag_parent_id, kind, scope, owner, artifact_ref, tenant_id, descendant_count, earliest_at, latest_at, summary_dirty, last_rebuilt_at, rebuild_count, dag_level_3_built_at`;
|
|
38
|
+
const MEMORY_SELECT_COLUMNS = `id, created, last_retrieved, retrieval_count, strength, half_life_days, layer, tags_json, emotional_valence, schema_fit, source, outcome_score, outcome_positive, outcome_negative, conflicts_with_json, pinned, confidence, content, parents_json, starred, trace_outcome, source_session_id, valid_from, superseded_by, extracted_from, dag_level, dag_parent_id, kind, scope, owner, artifact_ref, tenant_id, origin_project, descendant_count, earliest_at, latest_at, summary_dirty, last_rebuilt_at, rebuild_count, dag_level_3_built_at`;
|
|
38
39
|
// F1 (v1.7.0): qualified-and-aliased columns for the FTS join in
|
|
39
40
|
// loadSearchRows. Every column is `m.<col> AS <col>` so rowToEntry's
|
|
40
41
|
// unqualified field reads keep working unchanged. The trailing
|
|
41
42
|
// bm25(memories_fts) AS bm25_score adds the FTS rank as a result column.
|
|
42
43
|
// Only used inside the FTS path; non-FTS paths keep MEMORY_SELECT_COLUMNS.
|
|
43
|
-
const MEMORY_SEARCH_COLUMNS = `m.id AS id, m.created AS created, m.last_retrieved AS last_retrieved, m.retrieval_count AS retrieval_count, m.strength AS strength, m.half_life_days AS half_life_days, m.layer AS layer, m.tags_json AS tags_json, m.emotional_valence AS emotional_valence, m.schema_fit AS schema_fit, m.source AS source, m.outcome_score AS outcome_score, m.outcome_positive AS outcome_positive, m.outcome_negative AS outcome_negative, m.conflicts_with_json AS conflicts_with_json, m.pinned AS pinned, m.confidence AS confidence, m.content AS content, m.parents_json AS parents_json, m.starred AS starred, m.trace_outcome AS trace_outcome, m.source_session_id AS source_session_id, m.valid_from AS valid_from, m.superseded_by AS superseded_by, m.extracted_from AS extracted_from, m.dag_level AS dag_level, m.dag_parent_id AS dag_parent_id, m.kind AS kind, m.scope AS scope, m.owner AS owner, m.artifact_ref AS artifact_ref, m.tenant_id AS tenant_id, m.descendant_count AS descendant_count, m.earliest_at AS earliest_at, m.latest_at AS latest_at, m.summary_dirty AS summary_dirty, m.last_rebuilt_at AS last_rebuilt_at, m.rebuild_count AS rebuild_count, m.dag_level_3_built_at AS dag_level_3_built_at, bm25(memories_fts) AS bm25_score`;
|
|
44
|
+
const MEMORY_SEARCH_COLUMNS = `m.id AS id, m.created AS created, m.last_retrieved AS last_retrieved, m.retrieval_count AS retrieval_count, m.strength AS strength, m.half_life_days AS half_life_days, m.layer AS layer, m.tags_json AS tags_json, m.emotional_valence AS emotional_valence, m.schema_fit AS schema_fit, m.source AS source, m.outcome_score AS outcome_score, m.outcome_positive AS outcome_positive, m.outcome_negative AS outcome_negative, m.conflicts_with_json AS conflicts_with_json, m.pinned AS pinned, m.confidence AS confidence, m.content AS content, m.parents_json AS parents_json, m.starred AS starred, m.trace_outcome AS trace_outcome, m.source_session_id AS source_session_id, m.valid_from AS valid_from, m.superseded_by AS superseded_by, m.extracted_from AS extracted_from, m.dag_level AS dag_level, m.dag_parent_id AS dag_parent_id, m.kind AS kind, m.scope AS scope, m.owner AS owner, m.artifact_ref AS artifact_ref, m.tenant_id AS tenant_id, m.origin_project AS origin_project, m.descendant_count AS descendant_count, m.earliest_at AS earliest_at, m.latest_at AS latest_at, m.summary_dirty AS summary_dirty, m.last_rebuilt_at AS last_rebuilt_at, m.rebuild_count AS rebuild_count, m.dag_level_3_built_at AS dag_level_3_built_at, bm25(memories_fts) AS bm25_score`;
|
|
44
45
|
/**
|
|
45
46
|
* Default candidate-pool size for `loadSearchEntries` when called with
|
|
46
47
|
* `limit === undefined`. Single source of truth; `api.recall` imports
|
|
@@ -152,6 +153,11 @@ export function serializeEntry(entry) {
|
|
|
152
153
|
if (tenantId !== 'default') {
|
|
153
154
|
frontmatter['tenant_id'] = tenantId;
|
|
154
155
|
}
|
|
156
|
+
// v39: origin_project '' (user-global) is meaningful and must round-trip;
|
|
157
|
+
// only undefined/null (legacy/unstamped) is omitted.
|
|
158
|
+
if (entry.origin_project !== undefined && entry.origin_project !== null) {
|
|
159
|
+
frontmatter['origin_project'] = entry.origin_project;
|
|
160
|
+
}
|
|
155
161
|
const fm = dumpFrontmatter(frontmatter);
|
|
156
162
|
return `${fm}\n\n${entry.content}\n`;
|
|
157
163
|
}
|
|
@@ -199,6 +205,7 @@ export function deserializeEntry(raw) {
|
|
|
199
205
|
owner: data['owner'] === null || data['owner'] === undefined ? null : String(data['owner']),
|
|
200
206
|
artifact_ref: data['artifact_ref'] === null || data['artifact_ref'] === undefined ? null : String(data['artifact_ref']),
|
|
201
207
|
tenantId: data['tenant_id'] === null || data['tenant_id'] === undefined ? 'default' : String(data['tenant_id']),
|
|
208
|
+
origin_project: data['origin_project'] === null || data['origin_project'] === undefined ? null : String(data['origin_project']),
|
|
202
209
|
};
|
|
203
210
|
}
|
|
204
211
|
function normalizeStringArray(value) {
|
|
@@ -240,6 +247,7 @@ function rowToEntry(row) {
|
|
|
240
247
|
owner: row.owner ?? null,
|
|
241
248
|
artifact_ref: row.artifact_ref ?? null,
|
|
242
249
|
tenantId: row.tenant_id ?? 'default',
|
|
250
|
+
origin_project: row.origin_project ?? null,
|
|
243
251
|
descendant_count: Number(row.descendant_count ?? 0),
|
|
244
252
|
earliest_at: row.earliest_at ?? null,
|
|
245
253
|
latest_at: row.latest_at ?? null,
|
|
@@ -598,7 +606,9 @@ function bootstrapLegacyStore(db, hippoRoot) {
|
|
|
598
606
|
db.exec('BEGIN');
|
|
599
607
|
try {
|
|
600
608
|
for (const entry of legacyEntries) {
|
|
601
|
-
|
|
609
|
+
// v39: legacy markdown carries no origin_project; stamp from the store
|
|
610
|
+
// location so bootstrapped rows stay visible to ambient context.
|
|
611
|
+
upsertEntryRow(db, stampOriginProjectForImport(hippoRoot, entry));
|
|
602
612
|
}
|
|
603
613
|
const legacyIndex = loadLegacyIndexFile(hippoRoot);
|
|
604
614
|
setMeta(db, 'last_retrieval_ids', JSON.stringify(legacyIndex.last_retrieval_ids ?? []));
|
|
@@ -686,11 +696,11 @@ function upsertEntryRow(db, entry) {
|
|
|
686
696
|
extracted_from,
|
|
687
697
|
dag_level, dag_parent_id,
|
|
688
698
|
kind, scope, owner, artifact_ref,
|
|
689
|
-
tenant_id,
|
|
699
|
+
tenant_id, origin_project,
|
|
690
700
|
descendant_count, earliest_at, latest_at,
|
|
691
701
|
dag_level_3_built_at,
|
|
692
702
|
updated_at
|
|
693
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'))
|
|
703
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'))
|
|
694
704
|
ON CONFLICT(id) DO UPDATE SET
|
|
695
705
|
created = excluded.created,
|
|
696
706
|
last_retrieved = excluded.last_retrieved,
|
|
@@ -723,12 +733,13 @@ function upsertEntryRow(db, entry) {
|
|
|
723
733
|
owner = excluded.owner,
|
|
724
734
|
artifact_ref = excluded.artifact_ref,
|
|
725
735
|
tenant_id = excluded.tenant_id,
|
|
736
|
+
origin_project = excluded.origin_project,
|
|
726
737
|
descendant_count = excluded.descendant_count,
|
|
727
738
|
earliest_at = excluded.earliest_at,
|
|
728
739
|
latest_at = excluded.latest_at,
|
|
729
740
|
dag_level_3_built_at = excluded.dag_level_3_built_at,
|
|
730
741
|
updated_at = datetime('now')
|
|
731
|
-
`).run(entry.id, entry.created, entry.last_retrieved, entry.retrieval_count, entry.strength, entry.half_life_days, entry.layer, JSON.stringify(entry.tags ?? []), entry.emotional_valence, entry.schema_fit, entry.source, entry.outcome_score, entry.outcome_positive ?? 0, entry.outcome_negative ?? 0, JSON.stringify(entry.conflicts_with ?? []), entry.pinned ? 1 : 0, entry.confidence, entry.content, JSON.stringify(entry.parents ?? []), entry.starred ? 1 : 0, entry.trace_outcome ?? null, entry.source_session_id ?? null, entry.valid_from ?? entry.created, entry.superseded_by ?? null, entry.extracted_from ?? null, entry.dag_level ?? 0, entry.dag_parent_id ?? null, entry.kind ?? 'distilled', entry.scope ?? null, entry.owner ?? null, entry.artifact_ref ?? null, entry.tenantId ?? 'default', entry.descendant_count ?? 0, entry.earliest_at ?? null, entry.latest_at ?? null, entry.dag_level_3_built_at ?? null);
|
|
742
|
+
`).run(entry.id, entry.created, entry.last_retrieved, entry.retrieval_count, entry.strength, entry.half_life_days, entry.layer, JSON.stringify(entry.tags ?? []), entry.emotional_valence, entry.schema_fit, entry.source, entry.outcome_score, entry.outcome_positive ?? 0, entry.outcome_negative ?? 0, JSON.stringify(entry.conflicts_with ?? []), entry.pinned ? 1 : 0, entry.confidence, entry.content, JSON.stringify(entry.parents ?? []), entry.starred ? 1 : 0, entry.trace_outcome ?? null, entry.source_session_id ?? null, entry.valid_from ?? entry.created, entry.superseded_by ?? null, entry.extracted_from ?? null, entry.dag_level ?? 0, entry.dag_parent_id ?? null, entry.kind ?? 'distilled', entry.scope ?? null, entry.owner ?? null, entry.artifact_ref ?? null, entry.tenantId ?? 'default', entry.origin_project ?? null, entry.descendant_count ?? 0, entry.earliest_at ?? null, entry.latest_at ?? null, entry.dag_level_3_built_at ?? null);
|
|
732
743
|
syncFtsRow(db, entry);
|
|
733
744
|
}
|
|
734
745
|
function syncFtsRow(db, entry) {
|
|
@@ -847,13 +858,51 @@ export function saveIndex(hippoRoot, index) {
|
|
|
847
858
|
* filesystem mirrors / audit emit never run. Used by E1.3+ connectors to
|
|
848
859
|
* stamp idempotency rows atomically with the memory write.
|
|
849
860
|
*/
|
|
861
|
+
/**
|
|
862
|
+
* Stamp origin_project from the store's own location when the entry has
|
|
863
|
+
* never been stamped (v39 memory scope isolation). The store dir is
|
|
864
|
+
* `<project>/.hippo`, so its parent resolves to the owning project; the
|
|
865
|
+
* home/global store resolves to '' (user-global). Callers that know a better
|
|
866
|
+
* origin (shareMemory, syncGlobalToLocal) set entry.origin_project before
|
|
867
|
+
* writing and this is a no-op. Returns a stamped copy; never mutates.
|
|
868
|
+
*
|
|
869
|
+
* NULL is deliberately PRESERVED, not re-stamped: null means "legacy row the
|
|
870
|
+
* v39 migration found no evidence for" and is deny-by-default in ambient
|
|
871
|
+
* context. A writeback (e.g. markRetrieved on a crossProject-included row)
|
|
872
|
+
* must not launder it into an injectable origin - the migration is the only
|
|
873
|
+
* evidence-based NULL converter (codex gating round 2 P1).
|
|
874
|
+
*/
|
|
875
|
+
export function stampOriginProject(hippoRoot, entry) {
|
|
876
|
+
if (entry.origin_project !== undefined)
|
|
877
|
+
return entry;
|
|
878
|
+
return { ...entry, origin_project: deriveOriginProject(path.dirname(hippoRoot)) };
|
|
879
|
+
}
|
|
880
|
+
/**
|
|
881
|
+
* Import-time variant that ALSO stamps null: used only where evidence exists
|
|
882
|
+
* for rows that predate the origin column - the legacy-markdown bootstrap and
|
|
883
|
+
* rebuildIndex import, which are the markdown-store equivalent of the v39 SQL
|
|
884
|
+
* backfill. Same evidence order as the migration: the provenance source
|
|
885
|
+
* (`shared:<project>:` / `promoted:<localRoot>`) wins over the destination
|
|
886
|
+
* store's location, so a shared row imported into the global store keeps its
|
|
887
|
+
* owning project instead of becoming user-global (codex gating round 3 P1).
|
|
888
|
+
*/
|
|
889
|
+
function stampOriginProjectForImport(hippoRoot, entry) {
|
|
890
|
+
if (entry.origin_project !== undefined && entry.origin_project !== null)
|
|
891
|
+
return entry;
|
|
892
|
+
const fromSource = originFromSource(entry.source);
|
|
893
|
+
return {
|
|
894
|
+
...entry,
|
|
895
|
+
origin_project: fromSource ?? deriveOriginProject(path.dirname(hippoRoot)),
|
|
896
|
+
};
|
|
897
|
+
}
|
|
850
898
|
export function writeEntry(hippoRoot, entry, opts) {
|
|
851
899
|
initStore(hippoRoot);
|
|
900
|
+
const stamped = stampOriginProject(hippoRoot, entry);
|
|
852
901
|
const db = openHippoDb(hippoRoot);
|
|
853
902
|
try {
|
|
854
|
-
writeEntryDbOnly(db,
|
|
903
|
+
writeEntryDbOnly(db, stamped, opts);
|
|
855
904
|
opts?.afterCommit?.();
|
|
856
|
-
writeEntryMirrors(hippoRoot, db,
|
|
905
|
+
writeEntryMirrors(hippoRoot, db, stamped);
|
|
857
906
|
}
|
|
858
907
|
finally {
|
|
859
908
|
closeHippoDb(db);
|
|
@@ -1176,7 +1225,12 @@ export function batchWriteAndDelete(hippoRoot, toWrite, toDeleteIds) {
|
|
|
1176
1225
|
}
|
|
1177
1226
|
}
|
|
1178
1227
|
}
|
|
1179
|
-
|
|
1228
|
+
// v39: consolidate's new semantic rows (and any other batch writer)
|
|
1229
|
+
// bypass writeEntry, so stamp store-derived origins here too - a NULL
|
|
1230
|
+
// origin would make freshly consolidated memories vanish from ambient
|
|
1231
|
+
// context (codex gating review P1).
|
|
1232
|
+
const stampedWrites = toWrite.map((e) => stampOriginProject(hippoRoot, e));
|
|
1233
|
+
for (const entry of stampedWrites) {
|
|
1180
1234
|
upsertEntryRow(db, entry);
|
|
1181
1235
|
// Hook for writes: child upserted under a level-2 summary marks parent dirty.
|
|
1182
1236
|
if (entry.dag_parent_id) {
|
|
@@ -1195,7 +1249,7 @@ export function batchWriteAndDelete(hippoRoot, toWrite, toDeleteIds) {
|
|
|
1195
1249
|
}
|
|
1196
1250
|
db.exec('COMMIT');
|
|
1197
1251
|
// Sync mirrors once after all DB writes
|
|
1198
|
-
for (const entry of
|
|
1252
|
+
for (const entry of stampedWrites) {
|
|
1199
1253
|
writeMarkdownMirror(hippoRoot, entry);
|
|
1200
1254
|
}
|
|
1201
1255
|
for (const id of toDeleteIds) {
|
|
@@ -1293,7 +1347,8 @@ export function rebuildIndex(hippoRoot) {
|
|
|
1293
1347
|
db.exec('BEGIN');
|
|
1294
1348
|
try {
|
|
1295
1349
|
for (const entry of legacyEntries) {
|
|
1296
|
-
|
|
1350
|
+
// v39: same store-derived origin stamp as bootstrapLegacyStore.
|
|
1351
|
+
upsertEntryRow(db, stampOriginProjectForImport(hippoRoot, entry));
|
|
1297
1352
|
}
|
|
1298
1353
|
db.exec('COMMIT');
|
|
1299
1354
|
}
|