eagle-mem 1.3.0 → 1.3.2
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/lib/common.sh +7 -1
- package/lib/db.sh +55 -0
- package/package.json +1 -1
- package/scripts/memories.sh +15 -6
- package/scripts/update.sh +10 -0
package/lib/common.sh
CHANGED
|
@@ -18,7 +18,13 @@ eagle_log() {
|
|
|
18
18
|
|
|
19
19
|
eagle_project_from_cwd() {
|
|
20
20
|
local cwd="${1:-$(pwd)}"
|
|
21
|
-
|
|
21
|
+
local git_root
|
|
22
|
+
git_root=$(git -C "$cwd" rev-parse --show-toplevel 2>/dev/null)
|
|
23
|
+
if [ -n "$git_root" ]; then
|
|
24
|
+
basename "$git_root"
|
|
25
|
+
else
|
|
26
|
+
basename "$cwd"
|
|
27
|
+
fi
|
|
22
28
|
}
|
|
23
29
|
|
|
24
30
|
eagle_sql_escape() {
|
package/lib/db.sh
CHANGED
|
@@ -505,6 +505,61 @@ eagle_search_claude_tasks() {
|
|
|
505
505
|
LIMIT $limit;"
|
|
506
506
|
}
|
|
507
507
|
|
|
508
|
+
eagle_build_session_project_map() {
|
|
509
|
+
local claude_projects_dir="$HOME/.claude/projects"
|
|
510
|
+
[ ! -d "$claude_projects_dir" ] && return 0
|
|
511
|
+
|
|
512
|
+
for proj_dir in "$claude_projects_dir"/*/; do
|
|
513
|
+
[ ! -d "$proj_dir" ] && continue
|
|
514
|
+
|
|
515
|
+
local project=""
|
|
516
|
+
local sample_jsonl
|
|
517
|
+
sample_jsonl=$(ls "$proj_dir"*.jsonl 2>/dev/null | head -1)
|
|
518
|
+
if [ -n "$sample_jsonl" ] && [ -f "$sample_jsonl" ]; then
|
|
519
|
+
local cwd
|
|
520
|
+
cwd=$(head -10 "$sample_jsonl" | jq -r 'select(.cwd != null) | .cwd' 2>/dev/null | head -1)
|
|
521
|
+
if [ -n "$cwd" ]; then
|
|
522
|
+
project=$(eagle_project_from_cwd "$cwd")
|
|
523
|
+
fi
|
|
524
|
+
fi
|
|
525
|
+
[ -z "$project" ] && continue
|
|
526
|
+
|
|
527
|
+
for jsonl in "$proj_dir"*.jsonl; do
|
|
528
|
+
[ ! -f "$jsonl" ] && continue
|
|
529
|
+
local sid
|
|
530
|
+
sid=$(basename "$jsonl" .jsonl)
|
|
531
|
+
echo "$sid|$project"
|
|
532
|
+
done
|
|
533
|
+
done
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
eagle_backfill_projects() {
|
|
537
|
+
local updated=0
|
|
538
|
+
local map
|
|
539
|
+
map=$(eagle_build_session_project_map)
|
|
540
|
+
[ -z "$map" ] && echo "0" && return 0
|
|
541
|
+
|
|
542
|
+
while IFS='|' read -r sid project; do
|
|
543
|
+
[ -z "$sid" ] || [ -z "$project" ] && continue
|
|
544
|
+
local sid_sql proj_sql
|
|
545
|
+
sid_sql=$(eagle_sql_escape "$sid")
|
|
546
|
+
proj_sql=$(eagle_sql_escape "$project")
|
|
547
|
+
|
|
548
|
+
local changed
|
|
549
|
+
changed=$(eagle_db "UPDATE sessions SET project = '$proj_sql' WHERE id = '$sid_sql' AND (project = '' OR project != '$proj_sql');
|
|
550
|
+
SELECT changes();")
|
|
551
|
+
changed=$(eagle_db "UPDATE claude_tasks SET project = '$proj_sql' WHERE source_session_id = '$sid_sql' AND (project = '' OR project != '$proj_sql');
|
|
552
|
+
SELECT changes();")
|
|
553
|
+
[ "${changed:-0}" -gt 0 ] && updated=$((updated + changed))
|
|
554
|
+
eagle_db "UPDATE claude_memories SET project = '$proj_sql' WHERE origin_session_id = '$sid_sql' AND (project = '' OR project != '$proj_sql');"
|
|
555
|
+
eagle_db "UPDATE claude_plans SET project = '$proj_sql' WHERE origin_session_id = '$sid_sql' AND (project = '' OR project != '$proj_sql');"
|
|
556
|
+
eagle_db "UPDATE summaries SET project = '$proj_sql' WHERE session_id = '$sid_sql' AND (project = '' OR project != '$proj_sql');"
|
|
557
|
+
eagle_db "UPDATE observations SET project = '$proj_sql' WHERE session_id = '$sid_sql' AND (project = '' OR project != '$proj_sql');"
|
|
558
|
+
done <<< "$map"
|
|
559
|
+
|
|
560
|
+
echo "$updated"
|
|
561
|
+
}
|
|
562
|
+
|
|
508
563
|
eagle_prune_orphan_chunks() {
|
|
509
564
|
local project; project=$(eagle_sql_escape "$1")
|
|
510
565
|
local target_dir="$2"
|
package/package.json
CHANGED
package/scripts/memories.sh
CHANGED
|
@@ -448,10 +448,6 @@ memories_sync() {
|
|
|
448
448
|
base=$(basename "$memfile")
|
|
449
449
|
[ "$base" = "MEMORY.md" ] && continue
|
|
450
450
|
|
|
451
|
-
local proj_slug proj_name
|
|
452
|
-
proj_slug=$(echo "$memfile" | sed "s|$claude_mem_root/||" | cut -d'/' -f1)
|
|
453
|
-
proj_name=$(echo "$proj_slug" | rev | cut -d'-' -f1 | rev)
|
|
454
|
-
|
|
455
451
|
local existing_hash
|
|
456
452
|
existing_hash=$(eagle_db "SELECT content_hash FROM claude_memories WHERE file_path = '$(eagle_sql_escape "$memfile")';")
|
|
457
453
|
local new_hash
|
|
@@ -462,9 +458,9 @@ memories_sync() {
|
|
|
462
458
|
continue
|
|
463
459
|
fi
|
|
464
460
|
|
|
465
|
-
eagle_capture_claude_memory "$memfile" "" "
|
|
461
|
+
eagle_capture_claude_memory "$memfile" "" ""
|
|
466
462
|
mem_synced=$((mem_synced + 1))
|
|
467
|
-
eagle_ok "Memory: $base
|
|
463
|
+
eagle_ok "Memory: $base"
|
|
468
464
|
done < <(find "$claude_mem_root" -path "*/memory/*.md" -print0 2>/dev/null)
|
|
469
465
|
fi
|
|
470
466
|
|
|
@@ -541,6 +537,19 @@ memories_sync() {
|
|
|
541
537
|
fi
|
|
542
538
|
|
|
543
539
|
eagle_kv "Tasks:" "$task_synced synced, $task_skipped unchanged"
|
|
540
|
+
echo ""
|
|
541
|
+
|
|
542
|
+
# ─── Backfill project names ──────────────────────────
|
|
543
|
+
eagle_info "Resolving project names from Claude Code transcripts..."
|
|
544
|
+
|
|
545
|
+
local backfilled
|
|
546
|
+
backfilled=$(eagle_backfill_projects)
|
|
547
|
+
if [ "${backfilled:-0}" -gt 0 ]; then
|
|
548
|
+
eagle_ok "$backfilled rows updated with correct project names"
|
|
549
|
+
else
|
|
550
|
+
eagle_ok "All project names up to date"
|
|
551
|
+
fi
|
|
552
|
+
|
|
544
553
|
eagle_footer "Sync complete."
|
|
545
554
|
}
|
|
546
555
|
|
package/scripts/update.sh
CHANGED
|
@@ -11,6 +11,7 @@ LIB_DIR="$SCRIPTS_DIR/../lib"
|
|
|
11
11
|
|
|
12
12
|
. "$SCRIPTS_DIR/style.sh"
|
|
13
13
|
. "$LIB_DIR/common.sh"
|
|
14
|
+
. "$LIB_DIR/db.sh"
|
|
14
15
|
|
|
15
16
|
SETTINGS="$EAGLE_SETTINGS"
|
|
16
17
|
|
|
@@ -105,6 +106,15 @@ if [ -d "$PACKAGE_DIR/skills" ]; then
|
|
|
105
106
|
eagle_ok "Skills updated"
|
|
106
107
|
fi
|
|
107
108
|
|
|
109
|
+
# ─── Backfill project names ───────────────────────────────
|
|
110
|
+
|
|
111
|
+
backfilled=$(eagle_backfill_projects 2>/dev/null)
|
|
112
|
+
if [ "${backfilled:-0}" -gt 0 ]; then
|
|
113
|
+
eagle_ok "Project names: $backfilled rows corrected"
|
|
114
|
+
else
|
|
115
|
+
eagle_ok "Project names up to date"
|
|
116
|
+
fi
|
|
117
|
+
|
|
108
118
|
# ─── Summary ───────────────────────────────────────────────
|
|
109
119
|
|
|
110
120
|
version=$(node -e "console.log(require('$PACKAGE_DIR/package.json').version)" 2>/dev/null || echo "unknown")
|