eagle-mem 3.1.0 → 3.1.1
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/db/017_eagle_meta_not_null.sql +15 -0
- package/hooks/session-start.sh +2 -0
- package/lib/db-sessions.sh +5 -16
- package/package.json +1 -1
- package/scripts/health.sh +8 -3
- package/scripts/install.sh +1 -1
- package/scripts/update.sh +3 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
-- Fix: UNIQUE(key, project) fails with NULL project (each NULL is unique in SQL).
|
|
2
|
+
-- Change project to NOT NULL DEFAULT '' so ON CONFLICT works for global keys.
|
|
3
|
+
CREATE TABLE IF NOT EXISTS eagle_meta_new (
|
|
4
|
+
key TEXT NOT NULL,
|
|
5
|
+
project TEXT NOT NULL DEFAULT '',
|
|
6
|
+
value TEXT NOT NULL,
|
|
7
|
+
updated_at TEXT DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
|
8
|
+
UNIQUE(key, project)
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
INSERT OR REPLACE INTO eagle_meta_new (key, project, value, updated_at)
|
|
12
|
+
SELECT key, COALESCE(project, ''), value, updated_at FROM eagle_meta;
|
|
13
|
+
|
|
14
|
+
DROP TABLE eagle_meta;
|
|
15
|
+
ALTER TABLE eagle_meta_new RENAME TO eagle_meta;
|
package/hooks/session-start.sh
CHANGED
|
@@ -29,6 +29,8 @@ project=$(eagle_project_from_cwd "$cwd")
|
|
|
29
29
|
# Skip ephemeral directories (tmp, Downloads, etc.) — no tracking
|
|
30
30
|
[ -z "$project" ] && exit 0
|
|
31
31
|
|
|
32
|
+
p_esc=$(eagle_sql_escape "$project")
|
|
33
|
+
|
|
32
34
|
eagle_log "INFO" "SessionStart: session=$session_id project=$project source=$source_type"
|
|
33
35
|
|
|
34
36
|
eagle_upsert_session "$session_id" "$project" "$cwd" "$model" "$source_type"
|
package/lib/db-sessions.sh
CHANGED
|
@@ -69,27 +69,16 @@ eagle_count_session_summaries() {
|
|
|
69
69
|
|
|
70
70
|
eagle_meta_get() {
|
|
71
71
|
local key; key=$(eagle_sql_escape "$1")
|
|
72
|
-
local
|
|
73
|
-
|
|
74
|
-
local p_esc; p_esc=$(eagle_sql_escape "$project")
|
|
75
|
-
eagle_db "SELECT value FROM eagle_meta WHERE key = '$key' AND project = '$p_esc' LIMIT 1;"
|
|
76
|
-
else
|
|
77
|
-
eagle_db "SELECT value FROM eagle_meta WHERE key = '$key' AND project IS NULL LIMIT 1;"
|
|
78
|
-
fi
|
|
72
|
+
local p_esc; p_esc=$(eagle_sql_escape "${2:-}")
|
|
73
|
+
eagle_db "SELECT value FROM eagle_meta WHERE key = '$key' AND project = '$p_esc' LIMIT 1;"
|
|
79
74
|
}
|
|
80
75
|
|
|
81
76
|
eagle_meta_set() {
|
|
82
77
|
local key; key=$(eagle_sql_escape "$1")
|
|
83
78
|
local value; value=$(eagle_sql_escape "$2")
|
|
84
|
-
local
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
eagle_db "INSERT INTO eagle_meta (key, project, value) VALUES ('$key', '$p_esc', '$value')
|
|
88
|
-
ON CONFLICT(key, project) DO UPDATE SET value = excluded.value, updated_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now');"
|
|
89
|
-
else
|
|
90
|
-
eagle_db "INSERT INTO eagle_meta (key, project, value) VALUES ('$key', NULL, '$value')
|
|
91
|
-
ON CONFLICT(key, project) DO UPDATE SET value = excluded.value, updated_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now');"
|
|
92
|
-
fi
|
|
79
|
+
local p_esc; p_esc=$(eagle_sql_escape "${3:-}")
|
|
80
|
+
eagle_db "INSERT INTO eagle_meta (key, project, value) VALUES ('$key', '$p_esc', '$value')
|
|
81
|
+
ON CONFLICT(key, project) DO UPDATE SET value = excluded.value, updated_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now');"
|
|
93
82
|
}
|
|
94
83
|
|
|
95
84
|
eagle_count_sessions_since() {
|
package/package.json
CHANGED
package/scripts/health.sh
CHANGED
|
@@ -13,8 +13,6 @@ LIB_DIR="$SCRIPT_DIR/../lib"
|
|
|
13
13
|
. "$LIB_DIR/db.sh"
|
|
14
14
|
. "$LIB_DIR/provider.sh"
|
|
15
15
|
|
|
16
|
-
eagle_header "Health Check"
|
|
17
|
-
|
|
18
16
|
project=""
|
|
19
17
|
JSON_OUT=0
|
|
20
18
|
|
|
@@ -26,6 +24,13 @@ while [ $# -gt 0 ]; do
|
|
|
26
24
|
esac
|
|
27
25
|
done
|
|
28
26
|
|
|
27
|
+
# In JSON mode, redirect all text output to stderr so stdout is clean JSON
|
|
28
|
+
if [ "$JSON_OUT" -eq 1 ]; then
|
|
29
|
+
exec 3>&1 1>&2
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
eagle_header "Health Check"
|
|
33
|
+
|
|
29
34
|
if [ -z "$project" ]; then
|
|
30
35
|
project=$(eagle_project_from_cwd "$(pwd)")
|
|
31
36
|
fi
|
|
@@ -214,5 +219,5 @@ if [ "$JSON_OUT" -eq 1 ]; then
|
|
|
214
219
|
'{project:$project, score:$score, max:$max_score, pct:$pct, grade:$grade,
|
|
215
220
|
enrichment:{total:$total_summaries, enriched:$enriched_summaries},
|
|
216
221
|
features:$features, command_rules:$command_rules,
|
|
217
|
-
provider:$provider, noise_pct:$noise_pct}'
|
|
222
|
+
provider:$provider, noise_pct:$noise_pct}' >&3
|
|
218
223
|
fi
|
package/scripts/install.sh
CHANGED
|
@@ -142,7 +142,7 @@ cp "$PACKAGE_DIR"/hooks/*.sh "$EAGLE_MEM_DIR/hooks/"
|
|
|
142
142
|
cp "$PACKAGE_DIR"/lib/*.sh "$EAGLE_MEM_DIR/lib/"
|
|
143
143
|
cp "$PACKAGE_DIR"/db/*.sh "$EAGLE_MEM_DIR/db/"
|
|
144
144
|
cp "$PACKAGE_DIR"/db/*.sql "$EAGLE_MEM_DIR/db/"
|
|
145
|
-
cp "$PACKAGE_DIR"/scripts
|
|
145
|
+
cp "$PACKAGE_DIR"/scripts/*.sh "$EAGLE_MEM_DIR/scripts/" 2>/dev/null
|
|
146
146
|
|
|
147
147
|
chmod +x "$EAGLE_MEM_DIR"/hooks/*.sh
|
|
148
148
|
chmod +x "$EAGLE_MEM_DIR"/db/migrate.sh
|
package/scripts/update.sh
CHANGED
|
@@ -32,15 +32,17 @@ fi
|
|
|
32
32
|
|
|
33
33
|
# ─── Update files ──────────────────────────────────────────
|
|
34
34
|
|
|
35
|
-
mkdir -p "$EAGLE_MEM_DIR"/{hooks,lib,db}
|
|
35
|
+
mkdir -p "$EAGLE_MEM_DIR"/{hooks,lib,db,scripts}
|
|
36
36
|
|
|
37
37
|
cp "$PACKAGE_DIR"/hooks/*.sh "$EAGLE_MEM_DIR/hooks/"
|
|
38
38
|
cp "$PACKAGE_DIR"/lib/*.sh "$EAGLE_MEM_DIR/lib/"
|
|
39
39
|
cp "$PACKAGE_DIR"/db/*.sh "$EAGLE_MEM_DIR/db/"
|
|
40
40
|
cp "$PACKAGE_DIR"/db/*.sql "$EAGLE_MEM_DIR/db/"
|
|
41
|
+
cp "$PACKAGE_DIR"/scripts/*.sh "$EAGLE_MEM_DIR/scripts/" 2>/dev/null
|
|
41
42
|
|
|
42
43
|
chmod +x "$EAGLE_MEM_DIR"/hooks/*.sh
|
|
43
44
|
chmod +x "$EAGLE_MEM_DIR"/db/migrate.sh
|
|
45
|
+
chmod +x "$EAGLE_MEM_DIR"/scripts/*.sh 2>/dev/null
|
|
44
46
|
|
|
45
47
|
eagle_ok "Files updated"
|
|
46
48
|
|