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.
- package/bin/hippo.js +2 -2
- package/dist/api.d.ts +28 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +31 -7
- package/dist/api.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +105 -11
- package/dist/cli.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/dag.js +6 -6
- package/dist/dashboard.js +7 -7
- package/dist/goals.d.ts +11 -0
- package/dist/goals.d.ts.map +1 -1
- package/dist/goals.js +61 -49
- package/dist/goals.js.map +1 -1
- package/dist/hooks.js +24 -24
- package/dist/physics-state.js +27 -27
- package/dist/predictions.js +67 -67
- package/dist/refine-llm.js +13 -13
- package/dist/search.d.ts +33 -0
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +7 -0
- package/dist/server.js.map +1 -1
- package/dist/src/api.js +31 -7
- package/dist/src/api.js.map +1 -1
- package/dist/src/cli.js +105 -11
- package/dist/src/cli.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/dag.js +6 -6
- package/dist/src/dashboard.js +7 -7
- package/dist/src/goals.js +61 -49
- package/dist/src/goals.js.map +1 -1
- package/dist/src/hooks.js +24 -24
- package/dist/src/physics-state.js +27 -27
- package/dist/src/predictions.js +67 -67
- package/dist/src/refine-llm.js +13 -13
- package/dist/src/search.js.map +1 -1
- package/dist/src/server.js +7 -0
- package/dist/src/server.js.map +1 -1
- package/dist/src/store.js +260 -260
- package/dist/src/version.js +1 -1
- package/dist/src/working-memory.js +19 -19
- package/dist/store.js +260 -260
- 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 +1 -1
- 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;
|
package/dist/goals.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goals.d.ts","sourceRoot":"","sources":["../src/goals.ts"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
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":"AAAA,eAAe;AACf,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAyB,MAAM,SAAS,CAAC;AA8C3E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC,MAAM,UAAU,SAAS,CAAC,GAAY;IACpC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,YAAY,EAAE,GAAG,CAAC,cAAc,IAAI,SAAS;QAC7C,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,gBAAgB,EAAE,GAAG,CAAC,iBAAiB,IAAI,SAAS;QACpD,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,IAAI,SAAS;QACvD,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;QAC1C,YAAY,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;KAC7C,CAAC;AACJ,CAAC;AAkBD,MAAM,UAAU,QAAQ,CAAC,SAAiB,EAAE,IAAkB;IAC5D,MAAM,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAClC,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CACrC,EAAoB,EACpB,QAAgB,EAChB,SAAiB;IAEjB,MAAM,WAAW,GAAI,EAAE,CAAC,OAAO,CAAC;;;;GAI/B,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAmB,CAAC,CAAC,CAAC;IAEhD,IAAI,WAAW,IAAI,qBAAqB,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,WAAW,GAAG,qBAAqB,GAAG,CAAC,CAAC;QACzD,EAAE,CAAC,OAAO,CAAC;;;;;;;;;KASV,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAoB,EAAE,IAAkB;IACrE,MAAM,EAAE,GAAG,KAAK,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IAC9D,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,IAAI,QAAQ,GAAkB,IAAI,CAAC;IAEnC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC3B,IAAI,CAAC;QACH,2EAA2E;QAC3E,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAE3D,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB,2DAA2D,CAC5D,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAA0D,CAAC;YAClF,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC/E,MAAM,IAAI,KAAK,CACb,eAAe,IAAI,CAAC,YAAY,2CAA2C,CAC5E,CAAC;YACJ,CAAC;QACH,CAAC;QAED,2CAA2C;QAC3C,EAAE,CAAC,OAAO,CAAC;;;;;KAKV,CAAC,CAAC,GAAG,CACJ,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAChD,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,EAC1C,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE,SAAS,CACzC,CAAC;QAEF,wEAAwE;QACxE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,QAAQ,GAAG,MAAM,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC/D,EAAE,CAAC,OAAO,CAAC;;;;OAIV,CAAC,CAAC,GAAG,CACJ,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EACpC,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,GAAG,EAClC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,GAAG,EAChC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,GAAG,EAChC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,GAAG,CACjC,CAAC;YACF,EAAE,CAAC,OAAO,CAAC,4DAA4D,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC7F,CAAC;QAED,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpB,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,OAAO;QACL,EAAE;QACF,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;QACtB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,MAAM,EAAE,QAAQ;QAChB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,iBAAiB,EAAE,QAAQ,IAAI,SAAS;QACxC,SAAS;KACV,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,IAAwB;IACxE,MAAM,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAClC,IAAI,CAAC;QACH,OAAO,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EAAoB,EAAE,IAAwB;IACjF,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;GAMvB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAc,CAAC;IACnD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,mBAAmB,CACjC,EAAoB,EACpB,OAAY,EACZ,IAIC;IAED,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAC5C,MAAM,MAAM,GAAG,oBAAoB,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IACjE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAExC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/D,wEAAwE;IACxE,2EAA2E;IAC3E,qEAAqE;IACrE,kDAAkD;IAClD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC5D,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,CAAC,iBAAiB;YAAE,SAAS;QACnC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;;;KAGtB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAQb,CAAC;QACd,IAAI,GAAG,EAAE,CAAC;YACR,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzB,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,MAAM,EAAE,GAAG,CAAC,OAAO;gBACnB,UAAU,EAAE,GAAG,CAAC,WAAW;gBAC3B,eAAe,EAAE,GAAG,CAAC,iBAAiB;gBACtC,aAAa,EAAE,GAAG,CAAC,cAAc;gBACjC,aAAa,EAAE,GAAG,CAAC,cAAc;gBACjC,aAAa,EAAE,GAAG,CAAC,cAAc;aAClC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAAG,OAAO;SAClB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QACnC,mEAAmE;QACnE,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CACvB,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAChC,oBAAoB,CACrB,CAAC;QACF,kDAAkD;QAClD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;YAClC,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,IAAI,MAAM,CAAC,UAAU,KAAK,mBAAmB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxE,UAAU,IAAI,MAAM,CAAC,aAAa,CAAC;YACrC,CAAC;iBAAM,IAAI,MAAM,CAAC,UAAU,KAAK,mBAAmB,EAAE,CAAC;gBACrD,gEAAgE;gBAChE,0BAA0B;gBAC1B,UAAU;oBACR,GAAG;wBACH,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,GAAG,GAAG,CAAC;4BACvC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;YAClC,CAAC;iBAAM,IAAI,MAAM,CAAC,UAAU,KAAK,eAAe,EAAE,CAAC;gBACjD,UAAU,IAAI,MAAM,CAAC,aAAa,CAAC;YACrC,CAAC;iBAAM,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAC1C,UAAU,IAAI,MAAM,CAAC,aAAa,CAAC;YACrC,CAAC;QACH,CAAC;QACD,kCAAkC;QAClC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QACxD,OAAO;YACL,GAAG,CAAC;YACJ,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,UAAU;YAC3B,YAAY,EAAE,OAAO;SACY,CAAC;IACtC,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAQ,CAAC;IAE5C,yEAAyE;IACzE,qEAAqE;IACrE,yEAAyE;IACzE,iEAAiE;IACjE,eAAe;IACf,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAC1B,wCAAwC,YAAY,GAAG,CACxD,CAAC,GAAG,CAAC,GAAG,OAAO,CAA0B,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,SAAS;YAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,sDAAsD;IACtD,yEAAyE;IACzE,sCAAsC;IACtC,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC;;;;GAI5B,CAAC,CAAC;IACH,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,SAAS,CAAC,4BAA4B;QACrE,MAAM,OAAO,GAAI,CAAqC,CAAC,YAAY,CAAC;QACpE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAC/C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,SAAS,CAAC,GAAG,CACX,IAAI,CAAC,EAAE,EACP,CAAC,CAAC,KAAK,CAAC,EAAE,EACV,QAAQ,EACR,SAAS,EACT,UAAU,EACV,CAAC,CAAC,KAAK,CACR,CAAC;QACJ,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,CAAoC,CAAC;QAC9E,OAAO,IAAS,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,0BAA0B,GAAG,GAAG,CAAC;AACvC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AACvC,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,cAAc,GAAG,IAAI,CAAC;AAkB5B,MAAM,UAAU,YAAY,CAAC,SAAiB,EAAE,MAAc,EAAE,IAAsB;IACpF,MAAM,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;QAExC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CACxB,wDAAwD,CACzD,CAAC,GAAG,CAAC,MAAM,CAAuD,CAAC;YACpE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAClB,OAAO;YACT,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACnC,+DAA+D;gBAC/D,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAClB,OAAO;YACT,CAAC;YAED,EAAE,CAAC,OAAO,CAAC;;;;OAIV,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAEnC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACxC,IAAI,UAAU,GAAG,CAAC,CAAC;gBACnB,IAAI,KAAK,IAAI,0BAA0B;oBAAE,UAAU,GAAG,cAAc,CAAC;qBAChE,IAAI,KAAK,GAAG,0BAA0B;oBAAE,UAAU,GAAG,cAAc,CAAC;gBAEzE,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;oBACrB,mEAAmE;oBACnE,gEAAgE;oBAChE,sCAAsC;oBACtC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;WASV,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YAED,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpB,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,SAAiB,EAAE,MAAc;IAC3D,MAAM,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAClC,IAAI,CAAC;QACH,EAAE,CAAC,OAAO,CAAC,+EAA+E,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1G,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,SAAiB,EAAE,MAAc;IAC1D,MAAM,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAClC,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CACpB,mEAAmE,CACpE,CAAC,GAAG,CAAC,MAAM,CAA0E,CAAC;YACvF,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACvC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAClB,OAAO;YACT,CAAC;YAED,uBAAuB,CAAC,EAAE,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;YAE3D,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/E,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpB,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
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() {
|
package/dist/physics-state.js
CHANGED
|
@@ -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 {
|