hippo-memory 1.17.0 → 1.18.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 (65) hide show
  1. package/bin/hippo.js +2 -2
  2. package/dist/api.d.ts +28 -0
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +31 -7
  5. package/dist/api.js.map +1 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +105 -11
  8. package/dist/cli.js.map +1 -1
  9. package/dist/connectors/github/backfill.js +4 -4
  10. package/dist/connectors/github/cli-impl.js +6 -6
  11. package/dist/connectors/github/dlq.js +14 -14
  12. package/dist/connectors/slack/backfill.js +1 -1
  13. package/dist/connectors/slack/dlq.js +10 -10
  14. package/dist/connectors/slack/workspaces.js +4 -4
  15. package/dist/dag.js +6 -6
  16. package/dist/dashboard.js +7 -7
  17. package/dist/goals.d.ts +11 -0
  18. package/dist/goals.d.ts.map +1 -1
  19. package/dist/goals.js +61 -49
  20. package/dist/goals.js.map +1 -1
  21. package/dist/hooks.js +24 -24
  22. package/dist/physics-state.js +27 -27
  23. package/dist/predictions.js +67 -67
  24. package/dist/refine-llm.js +13 -13
  25. package/dist/search.d.ts +33 -0
  26. package/dist/search.d.ts.map +1 -1
  27. package/dist/search.js.map +1 -1
  28. package/dist/server.d.ts.map +1 -1
  29. package/dist/server.js +7 -0
  30. package/dist/server.js.map +1 -1
  31. package/dist/src/api.js +31 -7
  32. package/dist/src/api.js.map +1 -1
  33. package/dist/src/cli.js +105 -11
  34. package/dist/src/cli.js.map +1 -1
  35. package/dist/src/connectors/github/backfill.js +4 -4
  36. package/dist/src/connectors/github/cli-impl.js +6 -6
  37. package/dist/src/connectors/github/dlq.js +14 -14
  38. package/dist/src/connectors/slack/backfill.js +1 -1
  39. package/dist/src/connectors/slack/dlq.js +10 -10
  40. package/dist/src/connectors/slack/workspaces.js +4 -4
  41. package/dist/src/dag.js +6 -6
  42. package/dist/src/dashboard.js +7 -7
  43. package/dist/src/goals.js +61 -49
  44. package/dist/src/goals.js.map +1 -1
  45. package/dist/src/hooks.js +24 -24
  46. package/dist/src/physics-state.js +27 -27
  47. package/dist/src/predictions.js +67 -67
  48. package/dist/src/refine-llm.js +13 -13
  49. package/dist/src/search.js.map +1 -1
  50. package/dist/src/server.js +7 -0
  51. package/dist/src/server.js.map +1 -1
  52. package/dist/src/store.js +260 -260
  53. package/dist/src/version.js +1 -1
  54. package/dist/src/working-memory.js +19 -19
  55. package/dist/store.js +260 -260
  56. package/dist/version.d.ts +1 -1
  57. package/dist/version.js +1 -1
  58. package/dist/working-memory.js +19 -19
  59. package/dist-ui/index.html +12 -12
  60. package/extensions/openclaw-plugin/index.ts +650 -650
  61. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  62. package/extensions/openclaw-plugin/package.json +1 -1
  63. package/openclaw.plugin.json +1 -1
  64. package/package.json +1 -1
  65. package/dist/benchmarks/e1.3/scenarios.json +0 -2587
@@ -30,7 +30,7 @@ function readCursor(root, tenantId, repo) {
30
30
  const db = openHippoDb(root);
31
31
  try {
32
32
  const row = db
33
- .prepare(`SELECT issues_hwm, issue_comments_hwm, pr_review_comments_hwm
33
+ .prepare(`SELECT issues_hwm, issue_comments_hwm, pr_review_comments_hwm
34
34
  FROM github_cursors WHERE tenant_id = ? AND repo_full_name = ?`)
35
35
  .get(tenantId, repo);
36
36
  return {
@@ -46,9 +46,9 @@ function readCursor(root, tenantId, repo) {
46
46
  function writeOneHwm(root, tenantId, repo, column, value) {
47
47
  const db = openHippoDb(root);
48
48
  try {
49
- db.prepare(`INSERT INTO github_cursors (tenant_id, repo_full_name, ${column}, updated_at)
50
- VALUES (?, ?, ?, ?)
51
- ON CONFLICT(tenant_id, repo_full_name)
49
+ db.prepare(`INSERT INTO github_cursors (tenant_id, repo_full_name, ${column}, updated_at)
50
+ VALUES (?, ?, ?, ?)
51
+ ON CONFLICT(tenant_id, repo_full_name)
52
52
  DO UPDATE SET ${column} = excluded.${column}, updated_at = excluded.updated_at`).run(tenantId, repo, value, new Date().toISOString());
53
53
  }
54
54
  finally {
@@ -83,12 +83,12 @@ export async function cmdGithubBackfill(hippoRoot, flags, fetcher = realGitHubFe
83
83
  if (sinceIso) {
84
84
  const db = openHippoDb(hippoRoot);
85
85
  try {
86
- db.prepare(`INSERT INTO github_cursors (tenant_id, repo_full_name, issues_hwm, issue_comments_hwm, pr_review_comments_hwm, updated_at)
87
- VALUES (?, ?, ?, ?, ?, ?)
88
- ON CONFLICT(tenant_id, repo_full_name) DO UPDATE SET
89
- issues_hwm = COALESCE(github_cursors.issues_hwm, excluded.issues_hwm),
90
- issue_comments_hwm = COALESCE(github_cursors.issue_comments_hwm, excluded.issue_comments_hwm),
91
- pr_review_comments_hwm = COALESCE(github_cursors.pr_review_comments_hwm, excluded.pr_review_comments_hwm),
86
+ db.prepare(`INSERT INTO github_cursors (tenant_id, repo_full_name, issues_hwm, issue_comments_hwm, pr_review_comments_hwm, updated_at)
87
+ VALUES (?, ?, ?, ?, ?, ?)
88
+ ON CONFLICT(tenant_id, repo_full_name) DO UPDATE SET
89
+ issues_hwm = COALESCE(github_cursors.issues_hwm, excluded.issues_hwm),
90
+ issue_comments_hwm = COALESCE(github_cursors.issue_comments_hwm, excluded.issue_comments_hwm),
91
+ pr_review_comments_hwm = COALESCE(github_cursors.pr_review_comments_hwm, excluded.pr_review_comments_hwm),
92
92
  updated_at = excluded.updated_at`).run(tenantId, repo, sinceIso, sinceIso, sinceIso, new Date().toISOString());
93
93
  }
94
94
  finally {
@@ -3,30 +3,30 @@ import { verifyGitHubSignature } from './signature.js';
3
3
  import { isGitHubWebhookEnvelope } from './types.js';
4
4
  export function writeToDlq(db, opts) {
5
5
  const result = db
6
- .prepare(`INSERT INTO github_dlq
7
- (tenant_id, raw_payload, error, event_name, delivery_id, signature,
8
- installation_id, repo_full_name, received_at, bucket)
6
+ .prepare(`INSERT INTO github_dlq
7
+ (tenant_id, raw_payload, error, event_name, delivery_id, signature,
8
+ installation_id, repo_full_name, received_at, bucket)
9
9
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
10
10
  .run(opts.tenantId ?? '__unroutable__', opts.rawPayload, opts.error, opts.eventName ?? null, opts.deliveryId ?? null, opts.signature ?? null, opts.installationId ?? null, opts.repoFullName ?? null, new Date().toISOString(), opts.bucket ?? 'parse_error');
11
11
  return Number(result.lastInsertRowid);
12
12
  }
13
- const SELECT_COLUMNS = `id, tenant_id, raw_payload, error, event_name, delivery_id,
14
- signature, installation_id, repo_full_name, retry_count,
13
+ const SELECT_COLUMNS = `id, tenant_id, raw_payload, error, event_name, delivery_id,
14
+ signature, installation_id, repo_full_name, retry_count,
15
15
  received_at, retried_at, bucket`;
16
16
  export function listDlq(db, opts) {
17
17
  const rows = db
18
- .prepare(`SELECT ${SELECT_COLUMNS}
19
- FROM github_dlq
20
- WHERE tenant_id = ?
21
- ORDER BY received_at ASC
18
+ .prepare(`SELECT ${SELECT_COLUMNS}
19
+ FROM github_dlq
20
+ WHERE tenant_id = ?
21
+ ORDER BY received_at ASC
22
22
  LIMIT ?`)
23
23
  .all(opts.tenantId, opts.limit ?? 100);
24
24
  return rows.map(rowToItem);
25
25
  }
26
26
  export function getDlqEntry(db, id) {
27
27
  const row = db
28
- .prepare(`SELECT ${SELECT_COLUMNS}
29
- FROM github_dlq
28
+ .prepare(`SELECT ${SELECT_COLUMNS}
29
+ FROM github_dlq
30
30
  WHERE id = ?`)
31
31
  .get(id);
32
32
  if (!row)
@@ -53,9 +53,9 @@ function rowToItem(r) {
53
53
  function bumpRetryCount(hippoRoot, id) {
54
54
  const db = openHippoDb(hippoRoot);
55
55
  try {
56
- db.prepare(`UPDATE github_dlq
57
- SET retry_count = retry_count + 1,
58
- retried_at = ?
56
+ db.prepare(`UPDATE github_dlq
57
+ SET retry_count = retry_count + 1,
58
+ retried_at = ?
59
59
  WHERE id = ?`).run(new Date().toISOString(), id);
60
60
  }
61
61
  finally {
@@ -15,7 +15,7 @@ function readCursor(root, tenantId, channelId) {
15
15
  function writeCursor(root, tenantId, channelId, latestTs) {
16
16
  const db = openHippoDb(root);
17
17
  try {
18
- db.prepare(`INSERT INTO slack_cursors (tenant_id, channel_id, latest_ts, updated_at) VALUES (?,?,?,?)
18
+ db.prepare(`INSERT INTO slack_cursors (tenant_id, channel_id, latest_ts, updated_at) VALUES (?,?,?,?)
19
19
  ON CONFLICT(tenant_id, channel_id) DO UPDATE SET latest_ts = excluded.latest_ts, updated_at = excluded.updated_at`).run(tenantId, channelId, latestTs, new Date().toISOString());
20
20
  }
21
21
  finally {
@@ -7,28 +7,28 @@ import { isSlackEventEnvelope, isSlackMessageEvent } from './types.js';
7
7
  import { handleMessageDeleted } from './deletion.js';
8
8
  export function writeToDlq(db, opts) {
9
9
  const result = db
10
- .prepare(`INSERT INTO slack_dlq
11
- (tenant_id, team_id, raw_payload, error, received_at, bucket, signature, slack_timestamp)
10
+ .prepare(`INSERT INTO slack_dlq
11
+ (tenant_id, team_id, raw_payload, error, received_at, bucket, signature, slack_timestamp)
12
12
  VALUES (?, ?, ?, ?, ?, ?, ?, ?)`)
13
13
  .run(opts.tenantId ?? '__unroutable__', opts.teamId ?? null, opts.rawPayload, opts.error, new Date().toISOString(), opts.bucket ?? 'parse_error', opts.signature ?? null, opts.slackTimestamp ?? null);
14
14
  return Number(result.lastInsertRowid);
15
15
  }
16
16
  export function listDlq(db, opts) {
17
17
  const rows = db
18
- .prepare(`SELECT id, tenant_id, team_id, raw_payload, error, received_at, retried_at,
19
- bucket, retry_count, signature, slack_timestamp
20
- FROM slack_dlq
21
- WHERE tenant_id = ?
22
- ORDER BY received_at ASC
18
+ .prepare(`SELECT id, tenant_id, team_id, raw_payload, error, received_at, retried_at,
19
+ bucket, retry_count, signature, slack_timestamp
20
+ FROM slack_dlq
21
+ WHERE tenant_id = ?
22
+ ORDER BY received_at ASC
23
23
  LIMIT ?`)
24
24
  .all(opts.tenantId, opts.limit ?? 100);
25
25
  return rows.map(rowToItem);
26
26
  }
27
27
  export function getDlqEntry(db, id) {
28
28
  const row = db
29
- .prepare(`SELECT id, tenant_id, team_id, raw_payload, error, received_at, retried_at,
30
- bucket, retry_count, signature, slack_timestamp
31
- FROM slack_dlq
29
+ .prepare(`SELECT id, tenant_id, team_id, raw_payload, error, received_at, retried_at,
30
+ bucket, retry_count, signature, slack_timestamp
31
+ FROM slack_dlq
32
32
  WHERE id = ?`)
33
33
  .get(id);
34
34
  if (!row)
@@ -26,10 +26,10 @@
26
26
  */
27
27
  export function addWorkspace(db, opts) {
28
28
  const addedAt = new Date().toISOString();
29
- db.prepare(`INSERT INTO slack_workspaces (team_id, tenant_id, added_at)
30
- VALUES (?, ?, ?)
31
- ON CONFLICT(team_id) DO UPDATE SET
32
- tenant_id = excluded.tenant_id,
29
+ db.prepare(`INSERT INTO slack_workspaces (team_id, tenant_id, added_at)
30
+ VALUES (?, ?, ?)
31
+ ON CONFLICT(team_id) DO UPDATE SET
32
+ tenant_id = excluded.tenant_id,
33
33
  added_at = excluded.added_at`).run(opts.teamId, opts.tenantId, addedAt);
34
34
  return { teamId: opts.teamId, tenantId: opts.tenantId, addedAt };
35
35
  }
package/dist/dag.js CHANGED
@@ -31,12 +31,12 @@ export function clusterFacts(facts) {
31
31
  }
32
32
  return clusters;
33
33
  }
34
- const DAG_SUMMARY_PROMPT = `You are summarizing a cluster of facts about a specific topic/entity for a memory system.
35
-
36
- Topic: {label}
37
- Facts:
38
- {facts}
39
-
34
+ const DAG_SUMMARY_PROMPT = `You are summarizing a cluster of facts about a specific topic/entity for a memory system.
35
+
36
+ Topic: {label}
37
+ Facts:
38
+ {facts}
39
+
40
40
  Write a single concise paragraph (2-4 sentences) that captures all the key information from these facts. This summary will be used to quickly determine if this cluster is relevant to a future query, so include specific names, dates, numbers, and key details. Output ONLY the summary paragraph, no preamble.`;
41
41
  export async function generateDagSummary(label, factContents, opts) {
42
42
  const model = opts.model ?? 'claude-sonnet-4-6';
package/dist/dashboard.js CHANGED
@@ -202,13 +202,13 @@ export function serveDashboard(hippoRoot, port = 3333) {
202
202
  // was removed in the hybrid-v4 revamp E1 since dist-ui/ is now the
203
203
  // sole UI surface). ---
204
204
  res.writeHead(404, { 'Content-Type': 'text/html; charset=utf-8' });
205
- res.end(`<!doctype html>
206
- <html lang="en"><head><title>Hippo Dashboard</title><meta charset="utf-8"></head>
207
- <body style="font-family:Georgia,'Palatino Linotype',serif;max-width:640px;margin:60px auto;padding:24px;line-height:1.6;background:#f4efe6;color:#3a3228">
208
- <h1 style="color:#c45c3c">Hippo Dashboard</h1>
209
- <p>The React UI bundle is not built yet. Run:</p>
210
- <pre style="background:#faf7f2;padding:16px;border:1px solid #c4b9a8;border-radius:3px;font-family:Consolas,monospace">cd ui && npm install && npm run build</pre>
211
- <p>Then refresh this page. The dashboard server will serve <code>dist-ui/index.html</code> automatically once present.</p>
205
+ res.end(`<!doctype html>
206
+ <html lang="en"><head><title>Hippo Dashboard</title><meta charset="utf-8"></head>
207
+ <body style="font-family:Georgia,'Palatino Linotype',serif;max-width:640px;margin:60px auto;padding:24px;line-height:1.6;background:#f4efe6;color:#3a3228">
208
+ <h1 style="color:#c45c3c">Hippo Dashboard</h1>
209
+ <p>The React UI bundle is not built yet. Run:</p>
210
+ <pre style="background:#faf7f2;padding:16px;border:1px solid #c4b9a8;border-radius:3px;font-family:Consolas,monospace">cd ui && npm install && npm run build</pre>
211
+ <p>Then refresh this page. The dashboard server will serve <code>dist-ui/index.html</code> automatically once present.</p>
212
212
  </body></html>`);
213
213
  });
214
214
  server.listen(port, '127.0.0.1', () => {
package/dist/goals.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { type DatabaseSyncLike } from './db.js';
2
2
  import type { MemoryEntry } from './memory.js';
3
+ import type { RerankStep } from './search.js';
3
4
  export type GoalStatus = 'active' | 'suspended' | 'completed';
4
5
  export type PolicyType = 'schema-fit-biased' | 'error-prioritized' | 'recency-first' | 'hybrid';
5
6
  export interface GoalRow {
@@ -107,6 +108,16 @@ export declare function applyGoalStackBoost<R extends {
107
108
  sessionId: string;
108
109
  tenantId: string;
109
110
  limit: number;
111
+ /**
112
+ * A7 recall-trace (optional side-channel). When supplied, the helper
113
+ * records one goal-boost `RerankStep` per ACTUALLY-boosted row, keyed by
114
+ * `entry.id`. This is a SEPARATE accumulator, NOT a field on the result
115
+ * row — the helper re-spreads rows and strips internal markers
116
+ * (`_goalMatches` below), so a row field would be dropped. The score-mul
117
+ * + re-sort math is untouched; the trace is only populated when this map
118
+ * is passed (default path never allocates → byte-identical).
119
+ */
120
+ trace?: Map<string, RerankStep>;
110
121
  }): R[];
111
122
  export interface CompleteGoalOpts {
112
123
  outcomeScore?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"goals.d.ts","sourceRoot":"","sources":["../src/goals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"goals.d.ts","sourceRoot":"","sources":["../src/goals.ts"],"names":[],"mappings":"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"}
package/dist/goals.js CHANGED
@@ -41,22 +41,22 @@ export function pushGoal(hippoRoot, opts) {
41
41
  * @internal v1.7.4 -- internal goal-stack invariant. Subject to change.
42
42
  */
43
43
  export function enforceDepthCapWithinTx(db, tenantId, sessionId) {
44
- const activeCount = db.prepare(`
45
- SELECT COUNT(*) AS c
46
- FROM goal_stack
47
- WHERE tenant_id = ? AND session_id = ? AND status = 'active'
44
+ const activeCount = db.prepare(`
45
+ SELECT COUNT(*) AS c
46
+ FROM goal_stack
47
+ WHERE tenant_id = ? AND session_id = ? AND status = 'active'
48
48
  `).get(tenantId, sessionId).c;
49
49
  if (activeCount >= MAX_ACTIVE_GOAL_DEPTH) {
50
50
  const overflow = activeCount - MAX_ACTIVE_GOAL_DEPTH + 1;
51
- db.prepare(`
52
- UPDATE goal_stack
53
- SET status = 'suspended'
54
- WHERE id IN (
55
- SELECT id FROM goal_stack
56
- WHERE tenant_id = ? AND session_id = ? AND status = 'active'
57
- ORDER BY created_at ASC
58
- LIMIT ?
59
- )
51
+ db.prepare(`
52
+ UPDATE goal_stack
53
+ SET status = 'suspended'
54
+ WHERE id IN (
55
+ SELECT id FROM goal_stack
56
+ WHERE tenant_id = ? AND session_id = ? AND status = 'active'
57
+ ORDER BY created_at ASC
58
+ LIMIT ?
59
+ )
60
60
  `).run(tenantId, sessionId, overflow);
61
61
  }
62
62
  }
@@ -78,19 +78,19 @@ export function pushGoalWithDb(db, opts) {
78
78
  }
79
79
  }
80
80
  // Parent goal_stack row first (FK target).
81
- db.prepare(`
82
- INSERT INTO goal_stack
83
- (id, session_id, tenant_id, goal_name, level, parent_goal_id, status,
84
- success_condition, retrieval_policy_id, created_at)
85
- VALUES (?, ?, ?, ?, ?, ?, 'active', ?, NULL, ?)
81
+ db.prepare(`
82
+ INSERT INTO goal_stack
83
+ (id, session_id, tenant_id, goal_name, level, parent_goal_id, status,
84
+ success_condition, retrieval_policy_id, created_at)
85
+ VALUES (?, ?, ?, ?, ?, ?, 'active', ?, NULL, ?)
86
86
  `).run(id, opts.sessionId, opts.tenantId, opts.goalName, opts.level ?? 0, opts.parentGoalId ?? null, opts.successCondition ?? null, createdAt);
87
87
  // Optional policy row, then point goal_stack.retrieval_policy_id at it.
88
88
  if (opts.policy) {
89
89
  policyId = `rp_${randomUUID().replace(/-/g, '').slice(0, 16)}`;
90
- db.prepare(`
91
- INSERT INTO retrieval_policy
92
- (id, goal_id, policy_type, weight_schema_fit, weight_recency, weight_outcome, error_priority)
93
- VALUES (?, ?, ?, ?, ?, ?, ?)
90
+ db.prepare(`
91
+ INSERT INTO retrieval_policy
92
+ (id, goal_id, policy_type, weight_schema_fit, weight_recency, weight_outcome, error_priority)
93
+ VALUES (?, ?, ?, ?, ?, ?, ?)
94
94
  `).run(policyId, id, opts.policy.policyType, opts.policy.weightSchemaFit ?? 1.0, opts.policy.weightRecency ?? 1.0, opts.policy.weightOutcome ?? 1.0, opts.policy.errorPriority ?? 1.0);
95
95
  db.prepare(`UPDATE goal_stack SET retrieval_policy_id = ? WHERE id = ?`).run(policyId, id);
96
96
  }
@@ -123,12 +123,12 @@ export function getActiveGoals(hippoRoot, opts) {
123
123
  }
124
124
  }
125
125
  export function getActiveGoalsWithDb(db, opts) {
126
- const rows = db.prepare(`
127
- SELECT id, session_id, tenant_id, goal_name, level, parent_goal_id, status,
128
- success_condition, retrieval_policy_id, created_at, completed_at, outcome_score
129
- FROM goal_stack
130
- WHERE tenant_id = ? AND session_id = ? AND status = 'active'
131
- ORDER BY created_at ASC
126
+ const rows = db.prepare(`
127
+ SELECT id, session_id, tenant_id, goal_name, level, parent_goal_id, status,
128
+ success_condition, retrieval_policy_id, created_at, completed_at, outcome_score
129
+ FROM goal_stack
130
+ WHERE tenant_id = ? AND session_id = ? AND status = 'active'
131
+ ORDER BY created_at ASC
132
132
  `).all(opts.tenantId, opts.sessionId);
133
133
  return rows.map(rowToGoal);
134
134
  }
@@ -155,7 +155,7 @@ export function getActiveGoalsWithDb(db, opts) {
155
155
  * @internal v1.7.4 -- internal recall ranking helper. Subject to change.
156
156
  */
157
157
  export function applyGoalStackBoost(db, results, opts) {
158
- const { sessionId, tenantId, limit } = opts;
158
+ const { sessionId, tenantId, limit, trace } = opts;
159
159
  const active = getActiveGoalsWithDb(db, { sessionId, tenantId });
160
160
  if (active.length === 0)
161
161
  return results;
@@ -168,9 +168,9 @@ export function applyGoalStackBoost(db, results, opts) {
168
168
  for (const g of active) {
169
169
  if (!g.retrievalPolicyId)
170
170
  continue;
171
- const row = db.prepare(`
172
- SELECT id, goal_id, policy_type, weight_schema_fit, weight_recency, weight_outcome, error_priority
173
- FROM retrieval_policy WHERE id = ?
171
+ const row = db.prepare(`
172
+ SELECT id, goal_id, policy_type, weight_schema_fit, weight_recency, weight_outcome, error_priority
173
+ FROM retrieval_policy WHERE id = ?
174
174
  `).get(g.retrievalPolicyId);
175
175
  if (row) {
176
176
  policiesByGoalId.set(g.id, {
@@ -218,6 +218,18 @@ export function applyGoalStackBoost(db, results, opts) {
218
218
  }
219
219
  // Hard cap AFTER all composition.
220
220
  multiplier = Math.min(multiplier, MAX_FINAL_MULTIPLIER);
221
+ // A7 recall-trace side-channel: record the goal-boost step BEFORE the
222
+ // score is mutated, keyed by entry id. Pure read of r.score here; the
223
+ // mutation below is byte-identical to pre-A7.
224
+ if (trace) {
225
+ trace.set(r.entry.id, {
226
+ stage: 'goal-boost',
227
+ multiplier,
228
+ scoreBefore: r.score,
229
+ scoreAfter: r.score * multiplier,
230
+ note: matches.join(', '),
231
+ });
232
+ }
221
233
  return {
222
234
  ...r,
223
235
  score: r.score * multiplier,
@@ -242,10 +254,10 @@ export function applyGoalStackBoost(db, results, opts) {
242
254
  // UNIQUE(memory_id, goal_id) means a re-recall during the same goal life
243
255
  // is a no-op for outcome attribution.
244
256
  const recalledAt = new Date().toISOString();
245
- const insertLog = db.prepare(`
246
- INSERT OR IGNORE INTO goal_recall_log
247
- (goal_id, memory_id, tenant_id, session_id, recalled_at, score)
248
- VALUES (?, ?, ?, ?, ?, ?)
257
+ const insertLog = db.prepare(`
258
+ INSERT OR IGNORE INTO goal_recall_log
259
+ (goal_id, memory_id, tenant_id, session_id, recalled_at, score)
260
+ VALUES (?, ?, ?, ?, ?, ?)
249
261
  `);
250
262
  for (const r of boosted.slice(0, limit)) {
251
263
  if (!localIds.has(r.entry.id))
@@ -287,10 +299,10 @@ export function completeGoal(hippoRoot, goalId, opts) {
287
299
  db.exec('COMMIT');
288
300
  return;
289
301
  }
290
- db.prepare(`
291
- UPDATE goal_stack
292
- SET status = 'completed', completed_at = ?, outcome_score = ?
293
- WHERE id = ?
302
+ db.prepare(`
303
+ UPDATE goal_stack
304
+ SET status = 'completed', completed_at = ?, outcome_score = ?
305
+ WHERE id = ?
294
306
  `).run(completedAt, score, goalId);
295
307
  if (score !== null && !opts.noPropagate) {
296
308
  let multiplier = 1;
@@ -302,15 +314,15 @@ export function completeGoal(hippoRoot, goalId, opts) {
302
314
  // Lifespan window: only memories whose recall happened during this
303
315
  // goal's active life. UNIQUE(memory_id, goal_id) guarantees one
304
316
  // adjustment per (memory, goal) pair.
305
- db.prepare(`
306
- UPDATE memories
307
- SET strength = MIN(1.0, MAX(0.0, strength * ?))
308
- WHERE id IN (
309
- SELECT memory_id FROM goal_recall_log
310
- WHERE goal_id = ?
311
- AND recalled_at >= ?
312
- AND recalled_at <= ?
313
- )
317
+ db.prepare(`
318
+ UPDATE memories
319
+ SET strength = MIN(1.0, MAX(0.0, strength * ?))
320
+ WHERE id IN (
321
+ SELECT memory_id FROM goal_recall_log
322
+ WHERE goal_id = ?
323
+ AND recalled_at >= ?
324
+ AND recalled_at <= ?
325
+ )
314
326
  `).run(multiplier, goalId, goalRow.created_at, completedAt);
315
327
  }
316
328
  }
package/dist/goals.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"goals.js","sourceRoot":"","sources":["../src/goals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"goals.js","sourceRoot":"","sources":["../src/goals.ts"],"names":[],"mappings":"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"}
package/dist/hooks.js CHANGED
@@ -77,30 +77,30 @@ const HIPPO_OPENCODE_PLUGIN_MARKER = 'HIPPO_OPENCODE_PLUGIN_V1';
77
77
  * marker match AND content equality, so a plugin-source revision under
78
78
  * the same V1 marker re-writes the file on next install.
79
79
  */
80
- export const OPENCODE_PLUGIN_SOURCE = `// ${HIPPO_OPENCODE_PLUGIN_MARKER}
81
- // hippo-memory opencode plugin. DO NOT EDIT — regenerated on every
82
- // \`hippo hook install opencode\` from src/hooks.ts OPENCODE_PLUGIN_SOURCE
83
- // in https://github.com/kitfunso/hippo-memory. Local changes will be lost.
84
-
85
- export const HippoPlugin = async ({ $ }) => {
86
- return {
87
- event: async ({ event }) => {
88
- // Defense in depth: opencode currently runs in Bun where $ is the shell
89
- // template helper. A non-Bun runtime would have $ as undefined; fail
90
- // closed instead of crashing the host session.
91
- if (typeof $ !== "function") return;
92
- try {
93
- if (event.type === "session.idle") {
94
- await $\`hippo session-end\`.quiet().nothrow();
95
- } else if (event.type === "session.created") {
96
- await $\`hippo last-sleep\`.quiet().nothrow();
97
- }
98
- } catch {
99
- // hippo CLI not on PATH or other failure — never crash the host session.
100
- }
101
- },
102
- };
103
- };
80
+ export const OPENCODE_PLUGIN_SOURCE = `// ${HIPPO_OPENCODE_PLUGIN_MARKER}
81
+ // hippo-memory opencode plugin. DO NOT EDIT — regenerated on every
82
+ // \`hippo hook install opencode\` from src/hooks.ts OPENCODE_PLUGIN_SOURCE
83
+ // in https://github.com/kitfunso/hippo-memory. Local changes will be lost.
84
+
85
+ export const HippoPlugin = async ({ $ }) => {
86
+ return {
87
+ event: async ({ event }) => {
88
+ // Defense in depth: opencode currently runs in Bun where $ is the shell
89
+ // template helper. A non-Bun runtime would have $ as undefined; fail
90
+ // closed instead of crashing the host session.
91
+ if (typeof $ !== "function") return;
92
+ try {
93
+ if (event.type === "session.idle") {
94
+ await $\`hippo session-end\`.quiet().nothrow();
95
+ } else if (event.type === "session.created") {
96
+ await $\`hippo last-sleep\`.quiet().nothrow();
97
+ }
98
+ } catch {
99
+ // hippo CLI not on PATH or other failure — never crash the host session.
100
+ }
101
+ },
102
+ };
103
+ };
104
104
  `;
105
105
  export { HIPPO_OPENCODE_PLUGIN_MARKER };
106
106
  function homeDir() {
@@ -29,20 +29,20 @@ export function bufferToFloat32(buf) {
29
29
  * Call this from db.ts MIGRATIONS array.
30
30
  */
31
31
  export function createPhysicsTable(db) {
32
- db.exec(`
33
- CREATE TABLE IF NOT EXISTS memory_physics (
34
- memory_id TEXT PRIMARY KEY REFERENCES memories(id) ON DELETE CASCADE,
35
- position_blob BLOB NOT NULL,
36
- velocity_blob BLOB NOT NULL,
37
- mass REAL NOT NULL,
38
- charge REAL NOT NULL,
39
- temperature REAL NOT NULL,
40
- last_simulation TEXT NOT NULL,
41
- updated_at TEXT NOT NULL DEFAULT (datetime('now'))
42
- );
43
-
44
- CREATE INDEX IF NOT EXISTS idx_memory_physics_mass
45
- ON memory_physics(mass DESC);
32
+ db.exec(`
33
+ CREATE TABLE IF NOT EXISTS memory_physics (
34
+ memory_id TEXT PRIMARY KEY REFERENCES memories(id) ON DELETE CASCADE,
35
+ position_blob BLOB NOT NULL,
36
+ velocity_blob BLOB NOT NULL,
37
+ mass REAL NOT NULL,
38
+ charge REAL NOT NULL,
39
+ temperature REAL NOT NULL,
40
+ last_simulation TEXT NOT NULL,
41
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
42
+ );
43
+
44
+ CREATE INDEX IF NOT EXISTS idx_memory_physics_mass
45
+ ON memory_physics(mass DESC);
46
46
  `);
47
47
  }
48
48
  /**
@@ -53,11 +53,11 @@ export function loadPhysicsState(db, memoryIds) {
53
53
  let rows;
54
54
  if (memoryIds && memoryIds.length > 0) {
55
55
  const placeholders = memoryIds.map(() => '?').join(',');
56
- rows = db.prepare(`SELECT memory_id, position_blob, velocity_blob, mass, charge, temperature, last_simulation
56
+ rows = db.prepare(`SELECT memory_id, position_blob, velocity_blob, mass, charge, temperature, last_simulation
57
57
  FROM memory_physics WHERE memory_id IN (${placeholders})`).all(...memoryIds);
58
58
  }
59
59
  else {
60
- rows = db.prepare(`SELECT memory_id, position_blob, velocity_blob, mass, charge, temperature, last_simulation
60
+ rows = db.prepare(`SELECT memory_id, position_blob, velocity_blob, mass, charge, temperature, last_simulation
61
61
  FROM memory_physics`).all();
62
62
  }
63
63
  for (const row of rows) {
@@ -79,17 +79,17 @@ export function loadPhysicsState(db, memoryIds) {
79
79
  export function savePhysicsState(db, particles) {
80
80
  if (particles.length === 0)
81
81
  return;
82
- const stmt = db.prepare(`
83
- INSERT INTO memory_physics (memory_id, position_blob, velocity_blob, mass, charge, temperature, last_simulation, updated_at)
84
- VALUES (?, ?, ?, ?, ?, ?, ?, datetime('now'))
85
- ON CONFLICT(memory_id) DO UPDATE SET
86
- position_blob = excluded.position_blob,
87
- velocity_blob = excluded.velocity_blob,
88
- mass = excluded.mass,
89
- charge = excluded.charge,
90
- temperature = excluded.temperature,
91
- last_simulation = excluded.last_simulation,
92
- updated_at = datetime('now')
82
+ const stmt = db.prepare(`
83
+ INSERT INTO memory_physics (memory_id, position_blob, velocity_blob, mass, charge, temperature, last_simulation, updated_at)
84
+ VALUES (?, ?, ?, ?, ?, ?, ?, datetime('now'))
85
+ ON CONFLICT(memory_id) DO UPDATE SET
86
+ position_blob = excluded.position_blob,
87
+ velocity_blob = excluded.velocity_blob,
88
+ mass = excluded.mass,
89
+ charge = excluded.charge,
90
+ temperature = excluded.temperature,
91
+ last_simulation = excluded.last_simulation,
92
+ updated_at = datetime('now')
93
93
  `);
94
94
  db.exec('BEGIN');
95
95
  try {