claude-memory-layer 1.0.49 → 1.0.51
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/dist/cli/index.js +442 -8
- package/dist/cli/index.js.map +4 -4
- package/dist/mcp/index.js +5 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/server/api/index.js +439 -5
- package/dist/server/api/index.js.map +4 -4
- package/dist/server/index.js +441 -7
- package/dist/server/index.js.map +4 -4
- package/dist/ui/assets/js/bootstrap.js +63 -1
- package/dist/ui/assets/js/disclosure.js +158 -10
- package/dist/ui/assets/js/modals.js +39 -18
- package/dist/ui/assets/js/overview.js +99 -9
- package/dist/ui/assets/js/state.js +28 -1
- package/dist/ui/assets/js/views.js +626 -15
- package/dist/ui/index.html +130 -0
- package/dist/ui/style.css +460 -0
- package/package.json +3 -1
package/dist/ui/index.html
CHANGED
|
@@ -37,6 +37,11 @@
|
|
|
37
37
|
</select>
|
|
38
38
|
</div>
|
|
39
39
|
|
|
40
|
+
<div id="scope-context-bar" class="scope-context-bar">
|
|
41
|
+
<div id="scope-context-label" class="scope-context-label">Scope: All projects</div>
|
|
42
|
+
<div id="scope-context-detail" class="scope-context-detail">Select a project to inspect project-local memory.</div>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
40
45
|
<nav>
|
|
41
46
|
<ul class="nav-menu">
|
|
42
47
|
<li class="nav-item active" data-nav="overview">
|
|
@@ -51,10 +56,18 @@
|
|
|
51
56
|
<i class="ri-brain-line"></i>
|
|
52
57
|
<span>Memory Banks</span>
|
|
53
58
|
</li>
|
|
59
|
+
<li class="nav-item" data-nav="sessions">
|
|
60
|
+
<i class="ri-chat-history-line"></i>
|
|
61
|
+
<span>Sessions</span>
|
|
62
|
+
</li>
|
|
54
63
|
<li class="nav-item" data-nav="user-prompts">
|
|
55
64
|
<i class="ri-message-2-line"></i>
|
|
56
65
|
<span>User Prompts</span>
|
|
57
66
|
</li>
|
|
67
|
+
<li class="nav-item" data-nav="playground">
|
|
68
|
+
<i class="ri-flask-line"></i>
|
|
69
|
+
<span>Playground</span>
|
|
70
|
+
</li>
|
|
58
71
|
<li class="nav-item" data-nav="configuration">
|
|
59
72
|
<i class="ri-settings-4-line"></i>
|
|
60
73
|
<span>Configuration</span>
|
|
@@ -96,6 +109,24 @@
|
|
|
96
109
|
</div>
|
|
97
110
|
</header>
|
|
98
111
|
|
|
112
|
+
<div id="global-empty-state" class="global-empty-state" hidden>
|
|
113
|
+
<i class="ri-folder-search-line"></i>
|
|
114
|
+
<div>
|
|
115
|
+
<strong>No aggregate data is visible in Global scope yet.</strong>
|
|
116
|
+
<span>Select a project from the sidebar to inspect live project-local memory, sessions, and retrieval evidence.</span>
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
119
|
+
|
|
120
|
+
<div id="project-detail-card" class="card project-detail-card" hidden>
|
|
121
|
+
<div class="card-header">
|
|
122
|
+
<div class="card-title">
|
|
123
|
+
<i class="ri-folder-chart-line"></i>
|
|
124
|
+
<span>Project Detail</span>
|
|
125
|
+
</div>
|
|
126
|
+
</div>
|
|
127
|
+
<div class="disclosure-empty">Select a project to inspect project-local detail.</div>
|
|
128
|
+
</div>
|
|
129
|
+
|
|
99
130
|
<!-- Stats Grid -->
|
|
100
131
|
<div class="stats-grid">
|
|
101
132
|
<div class="stat-card" data-stat="events">
|
|
@@ -234,6 +265,7 @@
|
|
|
234
265
|
<i class="ri-search-eye-line"></i>
|
|
235
266
|
<span>Progressive Retrieval Disclosure</span>
|
|
236
267
|
</div>
|
|
268
|
+
<div id="disclosure-scope-badge" class="scope-mini-badge">Search → Expand → Source · Project scope follows sidebar</div>
|
|
237
269
|
<div class="disclosure-controls">
|
|
238
270
|
<label class="disclosure-toggle"><input type="checkbox" id="disclosure-include-shared"> Shared</label>
|
|
239
271
|
<select id="disclosure-strategy" class="project-dropdown compact">
|
|
@@ -560,6 +592,60 @@
|
|
|
560
592
|
</div>
|
|
561
593
|
</div>
|
|
562
594
|
|
|
595
|
+
<!-- ========== VIEW: Sessions ========== -->
|
|
596
|
+
<div id="view-sessions" class="page-view">
|
|
597
|
+
<header class="top-header">
|
|
598
|
+
<div class="page-title">
|
|
599
|
+
<h1>Session Inspector</h1>
|
|
600
|
+
<p>Browse conversations, turns, and memory evidence captured for each session</p>
|
|
601
|
+
</div>
|
|
602
|
+
<div class="header-actions">
|
|
603
|
+
<button id="session-refresh" class="btn btn-secondary">
|
|
604
|
+
<i class="ri-refresh-line"></i>
|
|
605
|
+
<span>Refresh Sessions</span>
|
|
606
|
+
</button>
|
|
607
|
+
</div>
|
|
608
|
+
</header>
|
|
609
|
+
|
|
610
|
+
<div class="session-inspector-grid">
|
|
611
|
+
<section class="card session-list-card">
|
|
612
|
+
<div class="card-header" style="align-items:flex-end;">
|
|
613
|
+
<div>
|
|
614
|
+
<div class="card-title"><i class="ri-history-line"></i><span>Recent Sessions</span></div>
|
|
615
|
+
<div id="session-inspector-meta" class="session-muted">Select a session to inspect turns and evidence.</div>
|
|
616
|
+
</div>
|
|
617
|
+
</div>
|
|
618
|
+
<div id="session-list" class="session-list">
|
|
619
|
+
<div class="session-empty">Loading sessions...</div>
|
|
620
|
+
</div>
|
|
621
|
+
</section>
|
|
622
|
+
|
|
623
|
+
<section class="card session-conversation-card">
|
|
624
|
+
<div class="card-header">
|
|
625
|
+
<div class="card-title"><i class="ri-discuss-line"></i><span>Conversation Turns</span></div>
|
|
626
|
+
<div class="session-muted" id="session-conversation-meta">No session selected</div>
|
|
627
|
+
</div>
|
|
628
|
+
<div id="session-conversation" class="session-conversation">
|
|
629
|
+
<div class="session-empty">Choose a session on the left to see user → tools → assistant flow.</div>
|
|
630
|
+
</div>
|
|
631
|
+
</section>
|
|
632
|
+
|
|
633
|
+
<aside id="session-snapshot-panel" class="card session-snapshot-panel">
|
|
634
|
+
<div class="card-header">
|
|
635
|
+
<div class="card-title"><i class="ri-brain-line"></i><span>Memory Snapshot</span></div>
|
|
636
|
+
</div>
|
|
637
|
+
<div id="session-snapshot-tabs" class="session-snapshot-tabs">
|
|
638
|
+
<button class="sort-btn active" data-session-snapshot-tab="overview">Overview</button>
|
|
639
|
+
<button class="sort-btn" data-session-snapshot-tab="evidence">Evidence</button>
|
|
640
|
+
<button class="sort-btn" data-session-snapshot-tab="quality">Quality</button>
|
|
641
|
+
</div>
|
|
642
|
+
<div id="session-snapshot-content" class="session-snapshot-content">
|
|
643
|
+
<div class="session-empty">Select a session to see memory levels, evidence links, and quality signals.</div>
|
|
644
|
+
</div>
|
|
645
|
+
</aside>
|
|
646
|
+
</div>
|
|
647
|
+
</div>
|
|
648
|
+
|
|
563
649
|
<!-- ========== VIEW: User Prompts ========== -->
|
|
564
650
|
<div id="view-user-prompts" class="page-view">
|
|
565
651
|
<header class="top-header">
|
|
@@ -595,6 +681,50 @@
|
|
|
595
681
|
</div>
|
|
596
682
|
</div>
|
|
597
683
|
|
|
684
|
+
<!-- ========== VIEW: Playground ========== -->
|
|
685
|
+
<div id="view-playground" class="page-view">
|
|
686
|
+
<header class="top-header">
|
|
687
|
+
<div class="page-title">
|
|
688
|
+
<h1>Playground</h1>
|
|
689
|
+
<p>Dry-run Replay for retrieval: Search → Expand → Source without mutating memory</p>
|
|
690
|
+
</div>
|
|
691
|
+
</header>
|
|
692
|
+
<div class="card" style="margin-bottom:16px;">
|
|
693
|
+
<div class="card-header" style="align-items:flex-end;">
|
|
694
|
+
<div>
|
|
695
|
+
<div class="card-title"><i class="ri-flask-line"></i><span>Dry-run Replay</span></div>
|
|
696
|
+
<div class="session-muted">Use the current project scope and replay the retrieval evidence pipeline safely.</div>
|
|
697
|
+
</div>
|
|
698
|
+
<div class="disclosure-controls">
|
|
699
|
+
<select id="playground-strategy" class="project-dropdown compact">
|
|
700
|
+
<option value="fast">fast</option>
|
|
701
|
+
<option value="auto">auto</option>
|
|
702
|
+
<option value="deep">deep</option>
|
|
703
|
+
</select>
|
|
704
|
+
<input id="playground-topk" class="search-input compact" type="number" min="1" max="20" value="5" title="Top K">
|
|
705
|
+
<input id="playground-window" class="search-input compact" type="number" min="1" max="10" value="3" title="Expand window">
|
|
706
|
+
<label class="disclosure-toggle"><input type="checkbox" id="playground-include-shared"> Shared</label>
|
|
707
|
+
</div>
|
|
708
|
+
</div>
|
|
709
|
+
<div class="disclosure-search-row">
|
|
710
|
+
<div class="search-wrapper disclosure-search-wrapper">
|
|
711
|
+
<i class="ri-search-line"></i>
|
|
712
|
+
<input type="text" id="playground-query" class="search-input" placeholder="Replay a retrieval query without writing memory...">
|
|
713
|
+
</div>
|
|
714
|
+
<button id="playground-run-btn" class="btn btn-secondary"><i class="ri-play-circle-line"></i><span>Run Dry-run</span></button>
|
|
715
|
+
</div>
|
|
716
|
+
<div id="playground-status" class="disclosure-status">Ready. Select a project for project-local dry-runs.</div>
|
|
717
|
+
</div>
|
|
718
|
+
<div id="playground-output" class="disclosure-layout">
|
|
719
|
+
<div class="disclosure-results">
|
|
720
|
+
<div class="disclosure-empty">Run a query to see ranked results and replay trace.</div>
|
|
721
|
+
</div>
|
|
722
|
+
<div class="disclosure-drilldown">
|
|
723
|
+
<div class="disclosure-empty">Expansion/source details will appear here.</div>
|
|
724
|
+
</div>
|
|
725
|
+
</div>
|
|
726
|
+
</div>
|
|
727
|
+
|
|
598
728
|
<!-- ========== VIEW: Configuration ========== -->
|
|
599
729
|
<div id="view-configuration" class="page-view">
|
|
600
730
|
<header class="top-header">
|
package/dist/ui/style.css
CHANGED
|
@@ -980,6 +980,315 @@ body {
|
|
|
980
980
|
display: block;
|
|
981
981
|
animation: viewFadeIn 0.25s ease;
|
|
982
982
|
}
|
|
983
|
+
|
|
984
|
+
/* ==========================================
|
|
985
|
+
Session Inspector
|
|
986
|
+
========================================== */
|
|
987
|
+
.session-inspector-grid {
|
|
988
|
+
display: grid;
|
|
989
|
+
grid-template-columns: 300px minmax(0, 1fr) 360px;
|
|
990
|
+
gap: 20px;
|
|
991
|
+
align-items: start;
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
.session-list-card,
|
|
995
|
+
.session-conversation-card,
|
|
996
|
+
.session-snapshot-panel {
|
|
997
|
+
min-height: 620px;
|
|
998
|
+
}
|
|
999
|
+
|
|
1000
|
+
.session-muted,
|
|
1001
|
+
.session-empty {
|
|
1002
|
+
color: var(--text-muted);
|
|
1003
|
+
font-size: 12px;
|
|
1004
|
+
}
|
|
1005
|
+
|
|
1006
|
+
.session-empty {
|
|
1007
|
+
padding: 24px;
|
|
1008
|
+
text-align: center;
|
|
1009
|
+
}
|
|
1010
|
+
|
|
1011
|
+
.session-list,
|
|
1012
|
+
.session-conversation,
|
|
1013
|
+
.session-snapshot-content {
|
|
1014
|
+
max-height: 72vh;
|
|
1015
|
+
overflow: auto;
|
|
1016
|
+
padding-right: 4px;
|
|
1017
|
+
}
|
|
1018
|
+
|
|
1019
|
+
.session-list-item {
|
|
1020
|
+
width: 100%;
|
|
1021
|
+
display: flex;
|
|
1022
|
+
flex-direction: column;
|
|
1023
|
+
gap: 5px;
|
|
1024
|
+
text-align: left;
|
|
1025
|
+
margin-bottom: 10px;
|
|
1026
|
+
padding: 12px;
|
|
1027
|
+
border-radius: 12px;
|
|
1028
|
+
border: 1px solid rgba(255,255,255,0.06);
|
|
1029
|
+
background: rgba(255,255,255,0.025);
|
|
1030
|
+
color: var(--text-secondary);
|
|
1031
|
+
cursor: pointer;
|
|
1032
|
+
transition: all 0.2s ease;
|
|
1033
|
+
}
|
|
1034
|
+
|
|
1035
|
+
.session-list-item:hover,
|
|
1036
|
+
.session-list-item.active {
|
|
1037
|
+
border-color: rgba(123, 97, 255, 0.45);
|
|
1038
|
+
background: rgba(123, 97, 255, 0.12);
|
|
1039
|
+
}
|
|
1040
|
+
|
|
1041
|
+
.session-list-id {
|
|
1042
|
+
font-size: 13px;
|
|
1043
|
+
font-weight: 700;
|
|
1044
|
+
color: var(--text-primary);
|
|
1045
|
+
}
|
|
1046
|
+
|
|
1047
|
+
.session-list-meta,
|
|
1048
|
+
.session-list-time,
|
|
1049
|
+
.session-message-meta,
|
|
1050
|
+
.snapshot-evidence-meta {
|
|
1051
|
+
font-size: 11px;
|
|
1052
|
+
color: var(--text-muted);
|
|
1053
|
+
}
|
|
1054
|
+
|
|
1055
|
+
.session-turn {
|
|
1056
|
+
border: 1px solid rgba(255,255,255,0.06);
|
|
1057
|
+
background: rgba(255,255,255,0.02);
|
|
1058
|
+
border-radius: 16px;
|
|
1059
|
+
padding: 14px;
|
|
1060
|
+
margin-bottom: 14px;
|
|
1061
|
+
}
|
|
1062
|
+
|
|
1063
|
+
.session-turn-header {
|
|
1064
|
+
display: flex;
|
|
1065
|
+
justify-content: space-between;
|
|
1066
|
+
gap: 12px;
|
|
1067
|
+
margin-bottom: 12px;
|
|
1068
|
+
color: var(--text-muted);
|
|
1069
|
+
font-size: 12px;
|
|
1070
|
+
font-weight: 600;
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1073
|
+
.session-message {
|
|
1074
|
+
border-radius: 12px;
|
|
1075
|
+
border: 1px solid rgba(255,255,255,0.06);
|
|
1076
|
+
padding: 12px;
|
|
1077
|
+
margin: 10px 0;
|
|
1078
|
+
cursor: pointer;
|
|
1079
|
+
background: rgba(255,255,255,0.025);
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1082
|
+
.session-message.session-message-jump {
|
|
1083
|
+
border-color: rgba(0, 240, 255, 0.65);
|
|
1084
|
+
box-shadow: 0 0 0 1px rgba(0, 240, 255, 0.18), 0 12px 28px rgba(0, 240, 255, 0.08);
|
|
1085
|
+
background: rgba(0, 240, 255, 0.06);
|
|
1086
|
+
}
|
|
1087
|
+
|
|
1088
|
+
.event-actions {
|
|
1089
|
+
display: flex;
|
|
1090
|
+
gap: 8px;
|
|
1091
|
+
margin-top: 10px;
|
|
1092
|
+
flex-wrap: wrap;
|
|
1093
|
+
}
|
|
1094
|
+
|
|
1095
|
+
.inline-action-btn {
|
|
1096
|
+
display: inline-flex;
|
|
1097
|
+
align-items: center;
|
|
1098
|
+
gap: 6px;
|
|
1099
|
+
border: 1px solid rgba(0, 240, 255, 0.25);
|
|
1100
|
+
border-radius: 999px;
|
|
1101
|
+
background: rgba(0, 240, 255, 0.08);
|
|
1102
|
+
color: var(--accent-secondary);
|
|
1103
|
+
cursor: pointer;
|
|
1104
|
+
font-family: inherit;
|
|
1105
|
+
font-size: 11px;
|
|
1106
|
+
font-weight: 600;
|
|
1107
|
+
line-height: 1;
|
|
1108
|
+
padding: 6px 10px;
|
|
1109
|
+
transition: all 0.2s ease;
|
|
1110
|
+
}
|
|
1111
|
+
|
|
1112
|
+
.inline-action-btn:hover {
|
|
1113
|
+
border-color: rgba(0, 240, 255, 0.55);
|
|
1114
|
+
background: rgba(0, 240, 255, 0.14);
|
|
1115
|
+
color: var(--text-primary);
|
|
1116
|
+
}
|
|
1117
|
+
|
|
1118
|
+
.session-message.type-user-prompt {
|
|
1119
|
+
border-left: 3px solid var(--accent-primary);
|
|
1120
|
+
}
|
|
1121
|
+
|
|
1122
|
+
.session-message.type-agent-response {
|
|
1123
|
+
border-left: 3px solid var(--success);
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
.session-message-role {
|
|
1127
|
+
color: var(--text-primary);
|
|
1128
|
+
font-size: 12px;
|
|
1129
|
+
font-weight: 700;
|
|
1130
|
+
margin-bottom: 6px;
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1133
|
+
.session-message-preview {
|
|
1134
|
+
color: var(--text-secondary);
|
|
1135
|
+
font-size: 13px;
|
|
1136
|
+
line-height: 1.55;
|
|
1137
|
+
white-space: pre-wrap;
|
|
1138
|
+
}
|
|
1139
|
+
|
|
1140
|
+
.session-tool-summary {
|
|
1141
|
+
display: flex;
|
|
1142
|
+
align-items: center;
|
|
1143
|
+
gap: 8px;
|
|
1144
|
+
margin: 10px 0;
|
|
1145
|
+
padding: 10px 12px;
|
|
1146
|
+
border-radius: 12px;
|
|
1147
|
+
background: rgba(0, 240, 255, 0.08);
|
|
1148
|
+
color: var(--accent-secondary);
|
|
1149
|
+
font-size: 12px;
|
|
1150
|
+
border: 1px solid rgba(0, 240, 255, 0.16);
|
|
1151
|
+
}
|
|
1152
|
+
|
|
1153
|
+
.session-tool-summary.session-message-jump {
|
|
1154
|
+
cursor: pointer;
|
|
1155
|
+
border-color: rgba(0, 240, 255, 0.65);
|
|
1156
|
+
box-shadow: 0 0 0 1px rgba(0, 240, 255, 0.18), 0 12px 28px rgba(0, 240, 255, 0.08);
|
|
1157
|
+
background: rgba(0, 240, 255, 0.13);
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
.session-snapshot-tabs {
|
|
1161
|
+
display: flex;
|
|
1162
|
+
gap: 8px;
|
|
1163
|
+
flex-wrap: wrap;
|
|
1164
|
+
margin-bottom: 14px;
|
|
1165
|
+
}
|
|
1166
|
+
|
|
1167
|
+
.snapshot-kpi-grid {
|
|
1168
|
+
display: grid;
|
|
1169
|
+
grid-template-columns: repeat(3, 1fr);
|
|
1170
|
+
gap: 10px;
|
|
1171
|
+
margin-bottom: 16px;
|
|
1172
|
+
}
|
|
1173
|
+
|
|
1174
|
+
.snapshot-kpi {
|
|
1175
|
+
padding: 12px;
|
|
1176
|
+
border-radius: 12px;
|
|
1177
|
+
background: rgba(255,255,255,0.025);
|
|
1178
|
+
border: 1px solid rgba(255,255,255,0.06);
|
|
1179
|
+
}
|
|
1180
|
+
|
|
1181
|
+
.snapshot-kpi strong {
|
|
1182
|
+
display: block;
|
|
1183
|
+
color: var(--text-primary);
|
|
1184
|
+
font-size: 16px;
|
|
1185
|
+
margin-bottom: 4px;
|
|
1186
|
+
}
|
|
1187
|
+
|
|
1188
|
+
.snapshot-kpi span,
|
|
1189
|
+
.snapshot-note {
|
|
1190
|
+
color: var(--text-muted);
|
|
1191
|
+
font-size: 12px;
|
|
1192
|
+
line-height: 1.45;
|
|
1193
|
+
}
|
|
1194
|
+
|
|
1195
|
+
.snapshot-section-title {
|
|
1196
|
+
color: var(--accent-primary);
|
|
1197
|
+
font-size: 12px;
|
|
1198
|
+
font-weight: 700;
|
|
1199
|
+
letter-spacing: 0.04em;
|
|
1200
|
+
text-transform: uppercase;
|
|
1201
|
+
margin: 16px 0 8px;
|
|
1202
|
+
}
|
|
1203
|
+
|
|
1204
|
+
.snapshot-chip-list {
|
|
1205
|
+
display: flex;
|
|
1206
|
+
flex-wrap: wrap;
|
|
1207
|
+
gap: 8px;
|
|
1208
|
+
}
|
|
1209
|
+
|
|
1210
|
+
.snapshot-chip {
|
|
1211
|
+
padding: 6px 9px;
|
|
1212
|
+
border-radius: 999px;
|
|
1213
|
+
background: rgba(123, 97, 255, 0.12);
|
|
1214
|
+
color: var(--text-secondary);
|
|
1215
|
+
border: 1px solid rgba(123, 97, 255, 0.22);
|
|
1216
|
+
font-size: 12px;
|
|
1217
|
+
}
|
|
1218
|
+
|
|
1219
|
+
.snapshot-chip.muted {
|
|
1220
|
+
background: rgba(255,255,255,0.03);
|
|
1221
|
+
border-color: rgba(255,255,255,0.06);
|
|
1222
|
+
color: var(--text-muted);
|
|
1223
|
+
}
|
|
1224
|
+
|
|
1225
|
+
.snapshot-evidence-list {
|
|
1226
|
+
display: flex;
|
|
1227
|
+
flex-direction: column;
|
|
1228
|
+
gap: 10px;
|
|
1229
|
+
margin-top: 12px;
|
|
1230
|
+
}
|
|
1231
|
+
|
|
1232
|
+
.snapshot-evidence-item {
|
|
1233
|
+
display: grid;
|
|
1234
|
+
grid-template-columns: auto 1fr;
|
|
1235
|
+
gap: 5px 8px;
|
|
1236
|
+
width: 100%;
|
|
1237
|
+
text-align: left;
|
|
1238
|
+
border: 1px solid rgba(255,255,255,0.06);
|
|
1239
|
+
border-radius: 12px;
|
|
1240
|
+
padding: 10px;
|
|
1241
|
+
background: rgba(255,255,255,0.025);
|
|
1242
|
+
color: var(--text-secondary);
|
|
1243
|
+
cursor: pointer;
|
|
1244
|
+
}
|
|
1245
|
+
|
|
1246
|
+
.snapshot-evidence-item:hover {
|
|
1247
|
+
border-color: rgba(0, 240, 255, 0.35);
|
|
1248
|
+
}
|
|
1249
|
+
|
|
1250
|
+
.snapshot-evidence-id {
|
|
1251
|
+
color: var(--text-primary);
|
|
1252
|
+
font-size: 12px;
|
|
1253
|
+
font-weight: 700;
|
|
1254
|
+
word-break: break-all;
|
|
1255
|
+
}
|
|
1256
|
+
|
|
1257
|
+
.snapshot-evidence-meta,
|
|
1258
|
+
.snapshot-evidence-preview {
|
|
1259
|
+
grid-column: 1 / -1;
|
|
1260
|
+
}
|
|
1261
|
+
|
|
1262
|
+
.snapshot-evidence-preview {
|
|
1263
|
+
color: var(--text-secondary);
|
|
1264
|
+
font-size: 12px;
|
|
1265
|
+
line-height: 1.45;
|
|
1266
|
+
}
|
|
1267
|
+
|
|
1268
|
+
@media (max-width: 1400px) {
|
|
1269
|
+
.session-inspector-grid {
|
|
1270
|
+
grid-template-columns: 260px minmax(0, 1fr);
|
|
1271
|
+
}
|
|
1272
|
+
.session-snapshot-panel {
|
|
1273
|
+
grid-column: 1 / -1;
|
|
1274
|
+
min-height: auto;
|
|
1275
|
+
}
|
|
1276
|
+
}
|
|
1277
|
+
|
|
1278
|
+
@media (max-width: 980px) {
|
|
1279
|
+
.session-inspector-grid {
|
|
1280
|
+
grid-template-columns: 1fr;
|
|
1281
|
+
}
|
|
1282
|
+
.session-list-card,
|
|
1283
|
+
.session-conversation-card,
|
|
1284
|
+
.session-snapshot-panel {
|
|
1285
|
+
min-height: auto;
|
|
1286
|
+
}
|
|
1287
|
+
.snapshot-kpi-grid {
|
|
1288
|
+
grid-template-columns: 1fr;
|
|
1289
|
+
}
|
|
1290
|
+
}
|
|
1291
|
+
|
|
983
1292
|
@keyframes viewFadeIn {
|
|
984
1293
|
from { opacity: 0; transform: translateY(8px); }
|
|
985
1294
|
to { opacity: 1; transform: translateY(0); }
|
|
@@ -1941,3 +2250,154 @@ body {
|
|
|
1941
2250
|
}
|
|
1942
2251
|
}
|
|
1943
2252
|
|
|
2253
|
+
.scope-context-bar {
|
|
2254
|
+
margin: -12px 8px 22px;
|
|
2255
|
+
padding: 12px;
|
|
2256
|
+
border: 1px solid rgba(0, 240, 255, 0.14);
|
|
2257
|
+
border-radius: 12px;
|
|
2258
|
+
background: rgba(0, 240, 255, 0.04);
|
|
2259
|
+
}
|
|
2260
|
+
|
|
2261
|
+
.scope-context-label {
|
|
2262
|
+
color: var(--text-primary);
|
|
2263
|
+
font-size: 12px;
|
|
2264
|
+
font-weight: 700;
|
|
2265
|
+
margin-bottom: 4px;
|
|
2266
|
+
}
|
|
2267
|
+
|
|
2268
|
+
.scope-context-detail {
|
|
2269
|
+
color: var(--text-muted);
|
|
2270
|
+
font-size: 11px;
|
|
2271
|
+
line-height: 1.35;
|
|
2272
|
+
}
|
|
2273
|
+
|
|
2274
|
+
.global-empty-state {
|
|
2275
|
+
display: flex;
|
|
2276
|
+
align-items: center;
|
|
2277
|
+
gap: 12px;
|
|
2278
|
+
margin-bottom: 18px;
|
|
2279
|
+
padding: 14px 16px;
|
|
2280
|
+
border: 1px solid rgba(254, 176, 25, 0.2);
|
|
2281
|
+
border-radius: 14px;
|
|
2282
|
+
background: rgba(254, 176, 25, 0.055);
|
|
2283
|
+
color: var(--text-secondary);
|
|
2284
|
+
}
|
|
2285
|
+
|
|
2286
|
+
.global-empty-state[hidden] {
|
|
2287
|
+
display: none;
|
|
2288
|
+
}
|
|
2289
|
+
|
|
2290
|
+
.global-empty-state i {
|
|
2291
|
+
color: var(--warning);
|
|
2292
|
+
font-size: 22px;
|
|
2293
|
+
}
|
|
2294
|
+
|
|
2295
|
+
.global-empty-state strong,
|
|
2296
|
+
.global-empty-state span {
|
|
2297
|
+
display: block;
|
|
2298
|
+
}
|
|
2299
|
+
|
|
2300
|
+
.global-empty-state span {
|
|
2301
|
+
color: var(--text-muted);
|
|
2302
|
+
margin-top: 2px;
|
|
2303
|
+
}
|
|
2304
|
+
|
|
2305
|
+
.scope-mini-badge,
|
|
2306
|
+
.disclosure-scope-pill {
|
|
2307
|
+
border: 1px solid rgba(0, 240, 255, 0.16);
|
|
2308
|
+
border-radius: 999px;
|
|
2309
|
+
color: var(--accent-secondary);
|
|
2310
|
+
background: rgba(0, 240, 255, 0.055);
|
|
2311
|
+
font-size: 11px;
|
|
2312
|
+
padding: 5px 9px;
|
|
2313
|
+
}
|
|
2314
|
+
|
|
2315
|
+
.session-date-group {
|
|
2316
|
+
color: var(--text-muted);
|
|
2317
|
+
font-size: 11px;
|
|
2318
|
+
font-weight: 700;
|
|
2319
|
+
letter-spacing: 0.04em;
|
|
2320
|
+
text-transform: uppercase;
|
|
2321
|
+
padding: 10px 4px 6px;
|
|
2322
|
+
}
|
|
2323
|
+
|
|
2324
|
+
.session-list-title {
|
|
2325
|
+
color: var(--text-primary);
|
|
2326
|
+
font-size: 13px;
|
|
2327
|
+
font-weight: 700;
|
|
2328
|
+
line-height: 1.35;
|
|
2329
|
+
margin-bottom: 4px;
|
|
2330
|
+
}
|
|
2331
|
+
|
|
2332
|
+
.session-list-source {
|
|
2333
|
+
color: var(--text-muted);
|
|
2334
|
+
font-size: 11px;
|
|
2335
|
+
}
|
|
2336
|
+
|
|
2337
|
+
.session-jump-notice {
|
|
2338
|
+
display: flex;
|
|
2339
|
+
align-items: center;
|
|
2340
|
+
gap: 8px;
|
|
2341
|
+
margin-bottom: 12px;
|
|
2342
|
+
padding: 10px 12px;
|
|
2343
|
+
border: 1px solid rgba(123, 97, 255, 0.22);
|
|
2344
|
+
border-radius: 12px;
|
|
2345
|
+
color: var(--text-secondary);
|
|
2346
|
+
background: rgba(123, 97, 255, 0.08);
|
|
2347
|
+
}
|
|
2348
|
+
|
|
2349
|
+
.session-jump-badge {
|
|
2350
|
+
color: var(--accent-secondary);
|
|
2351
|
+
font-size: 11px;
|
|
2352
|
+
}
|
|
2353
|
+
|
|
2354
|
+
.disclosure-rank-explain {
|
|
2355
|
+
display: flex;
|
|
2356
|
+
flex-wrap: wrap;
|
|
2357
|
+
gap: 6px;
|
|
2358
|
+
align-items: center;
|
|
2359
|
+
margin-top: 9px;
|
|
2360
|
+
color: var(--text-muted);
|
|
2361
|
+
font-size: 11px;
|
|
2362
|
+
}
|
|
2363
|
+
|
|
2364
|
+
.disclosure-result-cta {
|
|
2365
|
+
display: flex;
|
|
2366
|
+
align-items: center;
|
|
2367
|
+
gap: 4px;
|
|
2368
|
+
justify-content: flex-end;
|
|
2369
|
+
color: var(--accent-secondary);
|
|
2370
|
+
font-size: 12px;
|
|
2371
|
+
font-weight: 700;
|
|
2372
|
+
margin-top: 8px;
|
|
2373
|
+
}
|
|
2374
|
+
|
|
2375
|
+
.disclosure-snippet mark {
|
|
2376
|
+
color: #05050A;
|
|
2377
|
+
background: var(--accent-secondary);
|
|
2378
|
+
border-radius: 4px;
|
|
2379
|
+
padding: 0 2px;
|
|
2380
|
+
}
|
|
2381
|
+
|
|
2382
|
+
.disclosure-stepper {
|
|
2383
|
+
display: flex;
|
|
2384
|
+
flex-wrap: wrap;
|
|
2385
|
+
gap: 6px;
|
|
2386
|
+
margin-bottom: 12px;
|
|
2387
|
+
}
|
|
2388
|
+
|
|
2389
|
+
.disclosure-stepper span,
|
|
2390
|
+
.disclosure-safe-label {
|
|
2391
|
+
color: var(--text-secondary);
|
|
2392
|
+
background: rgba(255, 255, 255, 0.045);
|
|
2393
|
+
border: 1px solid rgba(255, 255, 255, 0.08);
|
|
2394
|
+
border-radius: 999px;
|
|
2395
|
+
font-size: 11px;
|
|
2396
|
+
padding: 4px 8px;
|
|
2397
|
+
}
|
|
2398
|
+
|
|
2399
|
+
.disclosure-stepper span.active {
|
|
2400
|
+
color: var(--accent-secondary);
|
|
2401
|
+
border-color: rgba(0, 240, 255, 0.18);
|
|
2402
|
+
}
|
|
2403
|
+
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-memory-layer",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.51",
|
|
4
4
|
"description": "Project-scoped memory layer for Claude Code, Codex, Hermes, MCP, and dashboards",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"test:coverage": "vitest --coverage",
|
|
23
23
|
"lint": "eslint src/**/*.ts",
|
|
24
24
|
"typecheck": "tsc --noEmit",
|
|
25
|
+
"smoke:dashboard": "tsx scripts/dashboard-smoke.ts",
|
|
25
26
|
"check:architecture": "node scripts/check-import-boundaries.mjs",
|
|
26
27
|
"ops:sync-gap:report": "node scripts/report-sync-gap.js",
|
|
27
28
|
"ops:sync-gap:fix": "node scripts/fix-sync-gap.js",
|
|
@@ -34,6 +35,7 @@
|
|
|
34
35
|
"eval:retrieval-replay": "tsx scripts/replay-retrieval-benchmark.ts --fixture benchmarks/replay/golden-memory-usefulness-v1.json --format markdown --no-per-query --min-query-yield 1 --min-no-match-accuracy 1 --max-forbidden-hits 0 --max-failed-queries 0",
|
|
35
36
|
"eval:retrieval-replay:report": "tsx scripts/replay-retrieval-benchmark.ts --fixture benchmarks/replay/golden-memory-usefulness-v1.json --format markdown --no-per-query",
|
|
36
37
|
"eval:longmemeval:retrieval-smoke": "tsx scripts/longmemeval-retrieval-smoke.ts",
|
|
38
|
+
"eval:longmemeval:codex-batch": "tsx scripts/longmemeval-codex-batch.ts",
|
|
37
39
|
"eval:longmemeval:codex-judge": "tsx scripts/longmemeval-codex-judge.ts",
|
|
38
40
|
"benchmark:replay:promote-review": "tsx scripts/promote-retrieval-review-queue.ts",
|
|
39
41
|
"benchmark:replay:validate-promotion": "tsx scripts/validate-replay-promotion-candidates.ts",
|