@shadowforge0/aquifer-memory 1.5.8 → 1.5.12
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 +100 -3
- package/consumers/cli.js +34 -0
- package/consumers/mcp.js +38 -5
- package/consumers/miranda/context-inject.js +1 -0
- package/consumers/openclaw-plugin.js +43 -3
- package/consumers/shared/config.js +20 -0
- package/consumers/shared/factory.js +1 -0
- package/consumers/shared/recall-format.js +26 -0
- package/core/aquifer.js +12 -0
- package/core/insights.js +210 -58
- package/core/mcp-manifest.js +18 -1
- package/core/storage.js +71 -0
- package/package.json +10 -2
- package/scripts/backfill-canonical-key.js +250 -0
- package/scripts/queries.json +0 -45
- package/scripts/retro-recall-bench.js +0 -409
- package/scripts/sample-bench-queries.sql +0 -75
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
-- Sample real user "first question" turns from sessions for retro recall bench.
|
|
2
|
-
-- Output: 30 rows balanced across agent (cc/main/life) × language (zh/en/mixed).
|
|
3
|
-
-- Usage:
|
|
4
|
-
-- psql $DATABASE_URL -f scripts/sample-bench-queries.sql --csv > queries.csv
|
|
5
|
-
-- then convert to JSON via:
|
|
6
|
-
-- node -e "const fs=require('fs');const lines=fs.readFileSync('queries.csv','utf8').trim().split('\n').slice(1);const out={version:1,queries:lines.map((l,i)=>{const[id,sid,ag,src,lang,qt]=l.split(','); return {id:'q-sql-'+(i+1),sessionRowId:Number(id),sessionId:sid,agentId:ag,source:src,sourceKind:'sql-sampled',lang,text:qt.replace(/^\"|\"$/g,'').replace(/\"\"/g,'\"')}})};fs.writeFileSync('queries.json',JSON.stringify(out,null,2))"
|
|
7
|
-
|
|
8
|
-
-- Override with `psql -v schema=aquifer -f sample-bench-queries.sql`
|
|
9
|
-
\if :{?schema}
|
|
10
|
-
\else
|
|
11
|
-
\set schema 'miranda'
|
|
12
|
-
\endif
|
|
13
|
-
|
|
14
|
-
WITH raw_turns AS (
|
|
15
|
-
SELECT
|
|
16
|
-
s.id AS session_row_id,
|
|
17
|
-
s.session_id,
|
|
18
|
-
s.agent_id,
|
|
19
|
-
s.source,
|
|
20
|
-
s.started_at,
|
|
21
|
-
m.ordinality AS turn_ordinal,
|
|
22
|
-
m.msg->>'role' AS role,
|
|
23
|
-
m.msg->>'content' AS content
|
|
24
|
-
FROM :"schema".sessions s
|
|
25
|
-
CROSS JOIN LATERAL jsonb_array_elements(
|
|
26
|
-
COALESCE(s.messages->'normalized', s.messages)
|
|
27
|
-
) WITH ORDINALITY AS m(msg, ordinality)
|
|
28
|
-
WHERE s.agent_id IN ('main', 'life', 'cc')
|
|
29
|
-
AND s.user_count > 0
|
|
30
|
-
),
|
|
31
|
-
question_turns AS (
|
|
32
|
-
SELECT *,
|
|
33
|
-
CASE
|
|
34
|
-
WHEN content ~ '[\u4e00-\u9fff]' AND content ~ '[A-Za-z]' THEN 'mixed'
|
|
35
|
-
WHEN content ~ '[\u4e00-\u9fff]' THEN 'zh'
|
|
36
|
-
WHEN content ~ '[A-Za-z]' THEN 'en'
|
|
37
|
-
ELSE 'other'
|
|
38
|
-
END AS lang_bucket,
|
|
39
|
-
row_number() OVER (PARTITION BY session_row_id ORDER BY turn_ordinal) AS seq_in_session
|
|
40
|
-
FROM raw_turns
|
|
41
|
-
WHERE role = 'user'
|
|
42
|
-
AND content IS NOT NULL
|
|
43
|
-
AND length(content) BETWEEN 4 AND 200
|
|
44
|
-
AND (content ~ '[??]' OR content ~ '(嗎|呢|怎麼|如何|why|how|what|can you|could you)')
|
|
45
|
-
),
|
|
46
|
-
first_questions AS (
|
|
47
|
-
SELECT *
|
|
48
|
-
FROM question_turns
|
|
49
|
-
WHERE seq_in_session = 1
|
|
50
|
-
AND lang_bucket IN ('mixed', 'zh', 'en')
|
|
51
|
-
),
|
|
52
|
-
balanced AS (
|
|
53
|
-
SELECT *,
|
|
54
|
-
row_number() OVER (PARTITION BY agent_id, lang_bucket ORDER BY random()) AS bucket_rn
|
|
55
|
-
FROM first_questions
|
|
56
|
-
)
|
|
57
|
-
SELECT
|
|
58
|
-
session_row_id,
|
|
59
|
-
session_id,
|
|
60
|
-
agent_id,
|
|
61
|
-
source,
|
|
62
|
-
lang_bucket AS lang,
|
|
63
|
-
content AS query_text
|
|
64
|
-
FROM balanced
|
|
65
|
-
WHERE
|
|
66
|
-
(agent_id = 'main' AND lang_bucket = 'mixed' AND bucket_rn <= 4) OR
|
|
67
|
-
(agent_id = 'main' AND lang_bucket = 'zh' AND bucket_rn <= 3) OR
|
|
68
|
-
(agent_id = 'main' AND lang_bucket = 'en' AND bucket_rn <= 2) OR
|
|
69
|
-
(agent_id = 'life' AND lang_bucket = 'mixed' AND bucket_rn <= 3) OR
|
|
70
|
-
(agent_id = 'life' AND lang_bucket = 'zh' AND bucket_rn <= 2) OR
|
|
71
|
-
(agent_id = 'life' AND lang_bucket = 'en' AND bucket_rn <= 2) OR
|
|
72
|
-
(agent_id = 'cc' AND lang_bucket = 'mixed' AND bucket_rn <= 4) OR
|
|
73
|
-
(agent_id = 'cc' AND lang_bucket = 'zh' AND bucket_rn <= 3) OR
|
|
74
|
-
(agent_id = 'cc' AND lang_bucket = 'en' AND bucket_rn <= 2)
|
|
75
|
-
ORDER BY agent_id, lang;
|