claude-memory-layer 1.0.10 → 1.0.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/AGENTS.md +60 -0
- package/README.md +166 -2
- package/bootstrap-kb/decisions/decisions.md +244 -0
- package/bootstrap-kb/glossary/glossary.md +46 -0
- package/bootstrap-kb/modules/.claude-plugin.md +22 -0
- package/bootstrap-kb/modules/agents.md.md +15 -0
- package/bootstrap-kb/modules/claude.md.md +15 -0
- package/bootstrap-kb/modules/context.md.md +15 -0
- package/bootstrap-kb/modules/docs.md +18 -0
- package/bootstrap-kb/modules/handoff.md.md +15 -0
- package/bootstrap-kb/modules/package-lock.json.md +15 -0
- package/bootstrap-kb/modules/package.json.md +15 -0
- package/bootstrap-kb/modules/plan.md.md +15 -0
- package/bootstrap-kb/modules/readme.md.md +15 -0
- package/bootstrap-kb/modules/scripts.md +26 -0
- package/bootstrap-kb/modules/spec.md.md +15 -0
- package/bootstrap-kb/modules/specs.md +20 -0
- package/bootstrap-kb/modules/src.md +51 -0
- package/bootstrap-kb/modules/tests.md +42 -0
- package/bootstrap-kb/modules/tsconfig.json.md +15 -0
- package/bootstrap-kb/modules/vitest.config.ts.md +15 -0
- package/bootstrap-kb/overview/overview.md +40 -0
- package/bootstrap-kb/sources/manifest.json +950 -0
- package/bootstrap-kb/sources/manifest.md +227 -0
- package/bootstrap-kb/timeline/timeline.md +57 -0
- package/d.sh +3 -0
- package/deploy.sh +3 -0
- package/dist/cli/index.js +3577 -389
- package/dist/cli/index.js.map +4 -4
- package/dist/core/index.js +1383 -138
- package/dist/core/index.js.map +4 -4
- package/dist/hooks/post-tool-use.js +1917 -214
- package/dist/hooks/post-tool-use.js.map +4 -4
- package/dist/hooks/session-end.js +1813 -231
- package/dist/hooks/session-end.js.map +4 -4
- package/dist/hooks/session-start.js +1802 -205
- package/dist/hooks/session-start.js.map +4 -4
- package/dist/hooks/stop.js +1909 -248
- package/dist/hooks/stop.js.map +4 -4
- package/dist/hooks/user-prompt-submit.js +1861 -206
- package/dist/hooks/user-prompt-submit.js.map +4 -4
- package/dist/server/api/index.js +2341 -217
- package/dist/server/api/index.js.map +4 -4
- package/dist/server/index.js +2350 -226
- package/dist/server/index.js.map +4 -4
- package/dist/services/memory-service.js +1805 -206
- package/dist/services/memory-service.js.map +4 -4
- package/dist/ui/app.js +1447 -55
- package/dist/ui/index.html +318 -147
- package/dist/ui/style.css +892 -0
- package/docs/MCP_MEMORY_SERVICE_COMPARATIVE_REVIEW.md +271 -0
- package/docs/MEMU_ADOPTION.md +40 -0
- package/docs/OPERATIONS.md +18 -0
- package/memory/.claude-plugin/commands/2026-02-25.md +263 -0
- package/memory/_index.md +405 -0
- package/memory/default/uncategorized/2026-02-25.md +4839 -0
- package/memory/specs/20260207-dashboard-upgrade/2026-02-25.md +142 -0
- package/memory/specs/citations-system/2026-02-25.md +1121 -0
- package/memory/specs/endless-mode/2026-02-25.md +1392 -0
- package/memory/specs/entity-edge-model/2026-02-25.md +1263 -0
- package/memory/specs/evidence-aligner-v2/2026-02-25.md +1028 -0
- package/memory/specs/mcp-desktop-integration/2026-02-25.md +1334 -0
- package/memory/specs/post-tool-use-hook/2026-02-25.md +1164 -0
- package/memory/specs/private-tags/2026-02-25.md +1057 -0
- package/memory/specs/progressive-disclosure/2026-02-25.md +1436 -0
- package/memory/specs/task-entity-system/2026-02-25.md +924 -0
- package/memory/specs/vector-outbox-v2/2026-02-25.md +1510 -0
- package/memory/specs/web-viewer-ui/2026-02-25.md +1709 -0
- package/package.json +9 -2
- package/scripts/build.ts +6 -0
- package/scripts/fix-sync-gap.js +32 -0
- package/scripts/heartbeat-memory-orchestrator.sh +28 -0
- package/scripts/report-sync-gap.js +26 -0
- package/scripts/review-queue-auto-resolve.js +21 -0
- package/scripts/sync-gap-auto-heal.sh +17 -0
- package/specs/20260207-dashboard-upgrade/context.md +38 -0
- package/specs/20260207-dashboard-upgrade/spec.md +96 -0
- package/src/cli/index.ts +391 -60
- package/src/core/consolidated-store.ts +63 -1
- package/src/core/consolidation-worker.ts +115 -6
- package/src/core/event-store.ts +14 -0
- package/src/core/index.ts +1 -0
- package/src/core/ingest-interceptor.ts +80 -0
- package/src/core/markdown-mirror.ts +70 -0
- package/src/core/md-mirror.ts +92 -0
- package/src/core/mongo-sync-config.ts +165 -0
- package/src/core/mongo-sync-worker.ts +381 -0
- package/src/core/retriever.ts +540 -150
- package/src/core/sqlite-event-store.ts +794 -7
- package/src/core/sqlite-wrapper.ts +8 -0
- package/src/core/tag-taxonomy.ts +51 -0
- package/src/core/turn-state.ts +159 -0
- package/src/core/types.ts +51 -8
- package/src/core/vector-store.ts +21 -3
- package/src/hooks/post-tool-use.ts +68 -23
- package/src/hooks/session-end.ts +8 -3
- package/src/hooks/stop.ts +96 -25
- package/src/hooks/user-prompt-submit.ts +44 -5
- package/src/server/api/chat.ts +244 -0
- package/src/server/api/citations.ts +3 -3
- package/src/server/api/events.ts +30 -5
- package/src/server/api/health.ts +53 -0
- package/src/server/api/index.ts +9 -1
- package/src/server/api/projects.ts +74 -0
- package/src/server/api/search.ts +3 -3
- package/src/server/api/sessions.ts +3 -3
- package/src/server/api/stats.ts +89 -8
- package/src/server/api/turns.ts +143 -0
- package/src/server/api/utils.ts +46 -0
- package/src/services/bootstrap-organizer.ts +443 -0
- package/src/services/codex-session-history-importer.ts +474 -0
- package/src/services/memory-service.ts +508 -71
- package/src/services/session-history-importer.ts +215 -51
- package/src/ui/app.js +1447 -55
- package/src/ui/index.html +318 -147
- package/src/ui/style.css +892 -0
- package/tests/bootstrap-organizer.test.ts +111 -0
- package/tests/consolidation-worker.test.ts +75 -0
- package/tests/ingest-interceptor.test.ts +38 -0
- package/tests/markdown-mirror.test.ts +85 -0
- package/tests/md-mirror.test.ts +50 -0
- package/tests/retriever-fallback-chain.test.ts +223 -0
- package/tests/retriever-strategy-scope.test.ts +97 -0
- package/tests/retriever.memu-adoption.test.ts +122 -0
- package/tests/sqlite-event-store-replication.test.ts +92 -0
- package/.claude/settings.local.json +0 -27
- package/.claude-memory/test.sqlite +0 -0
- package/.history/package_20260201112328.json +0 -45
- package/.history/package_20260201113602.json +0 -45
- package/.history/package_20260201113713.json +0 -45
- package/.history/package_20260201114110.json +0 -45
- package/.history/package_20260201114632.json +0 -46
- package/.history/package_20260201133143.json +0 -45
- package/.history/package_20260201134319.json +0 -45
- package/.history/package_20260201134326.json +0 -45
- package/.history/package_20260201134334.json +0 -45
- package/.history/package_20260201134912.json +0 -45
- package/.history/package_20260201142928.json +0 -46
- package/.history/package_20260201192048.json +0 -47
- package/.history/package_20260202114053.json +0 -49
- package/.history/package_20260202121115.json +0 -49
- package/test_access.js +0 -49
package/src/ui/index.html
CHANGED
|
@@ -4,229 +4,400 @@
|
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Code Memory | Deep Space Dashboard</title>
|
|
7
|
-
|
|
7
|
+
|
|
8
8
|
<!-- Fonts -->
|
|
9
9
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
10
10
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
11
11
|
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap" rel="stylesheet">
|
|
12
|
-
|
|
12
|
+
|
|
13
13
|
<!-- Icons -->
|
|
14
14
|
<link href="https://cdn.jsdelivr.net/npm/remixicon@3.5.0/fonts/remixicon.css" rel="stylesheet">
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
<!-- Styles -->
|
|
17
17
|
<link rel="stylesheet" href="style.css">
|
|
18
|
-
|
|
18
|
+
|
|
19
19
|
<!-- Charts -->
|
|
20
20
|
<script src="https://cdn.jsdelivr.net/npm/apexcharts"></script>
|
|
21
21
|
</head>
|
|
22
22
|
<body>
|
|
23
23
|
|
|
24
24
|
<div class="app-container">
|
|
25
|
-
|
|
25
|
+
|
|
26
26
|
<!-- Sidebar -->
|
|
27
27
|
<aside class="sidebar">
|
|
28
28
|
<div class="logo-area">
|
|
29
29
|
<div class="logo-icon">🧠</div>
|
|
30
30
|
<div class="logo-text">CodeMemory</div>
|
|
31
31
|
</div>
|
|
32
|
-
|
|
32
|
+
|
|
33
|
+
<div class="project-selector">
|
|
34
|
+
<label class="project-label"><i class="ri-folder-line"></i> Project</label>
|
|
35
|
+
<select id="project-select" class="project-dropdown">
|
|
36
|
+
<option value="">All (Global)</option>
|
|
37
|
+
</select>
|
|
38
|
+
</div>
|
|
39
|
+
|
|
33
40
|
<nav>
|
|
34
41
|
<ul class="nav-menu">
|
|
35
|
-
<li class="nav-item active">
|
|
42
|
+
<li class="nav-item active" data-nav="overview">
|
|
36
43
|
<i class="ri-dashboard-line"></i>
|
|
37
44
|
<span>Overview</span>
|
|
38
45
|
</li>
|
|
39
|
-
<li class="nav-item">
|
|
46
|
+
<li class="nav-item" data-nav="knowledge-graph">
|
|
40
47
|
<i class="ri-database-2-line"></i>
|
|
41
48
|
<span>Knowledge Graph</span>
|
|
42
49
|
</li>
|
|
43
|
-
<li class="nav-item">
|
|
50
|
+
<li class="nav-item" data-nav="memory-banks">
|
|
44
51
|
<i class="ri-brain-line"></i>
|
|
45
52
|
<span>Memory Banks</span>
|
|
46
53
|
</li>
|
|
47
|
-
<li class="nav-item">
|
|
54
|
+
<li class="nav-item" data-nav="configuration">
|
|
48
55
|
<i class="ri-settings-4-line"></i>
|
|
49
56
|
<span>Configuration</span>
|
|
50
57
|
</li>
|
|
51
58
|
</ul>
|
|
52
59
|
</nav>
|
|
60
|
+
|
|
61
|
+
<div class="sidebar-bottom">
|
|
62
|
+
<button id="chat-toggle-btn" class="chat-toggle-btn">
|
|
63
|
+
<i class="ri-chat-ai-line"></i>
|
|
64
|
+
<span>Ask Memory</span>
|
|
65
|
+
</button>
|
|
66
|
+
</div>
|
|
53
67
|
</aside>
|
|
54
68
|
|
|
55
69
|
<!-- Main Content -->
|
|
56
70
|
<main class="main-content">
|
|
57
|
-
|
|
58
|
-
<!--
|
|
59
|
-
<
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
<div class="search-wrapper">
|
|
67
|
-
<i class="ri-search-line"></i>
|
|
68
|
-
<input type="text" id="search-input" class="search-input" placeholder="Search memories...">
|
|
71
|
+
|
|
72
|
+
<!-- ========== VIEW: Overview (default) ========== -->
|
|
73
|
+
<div id="view-overview" class="page-view active">
|
|
74
|
+
|
|
75
|
+
<!-- Header -->
|
|
76
|
+
<header class="top-header">
|
|
77
|
+
<div class="page-title">
|
|
78
|
+
<h1>Dashboard</h1>
|
|
79
|
+
<p>Real-time memory visualization & management</p>
|
|
69
80
|
</div>
|
|
70
|
-
|
|
71
|
-
<
|
|
72
|
-
<
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
<div class="stat-value" id="stat-events">0</div>
|
|
82
|
-
<div class="stat-label">
|
|
83
|
-
<i class="ri-file-list-3-line"></i> Total Events
|
|
81
|
+
|
|
82
|
+
<div class="header-actions">
|
|
83
|
+
<div class="search-wrapper">
|
|
84
|
+
<i class="ri-search-line"></i>
|
|
85
|
+
<input type="text" id="search-input" class="search-input" placeholder="Search memories...">
|
|
86
|
+
</div>
|
|
87
|
+
|
|
88
|
+
<button id="refresh-btn" class="btn btn-secondary">
|
|
89
|
+
<i class="ri-refresh-line"></i>
|
|
90
|
+
<span>Refresh</span>
|
|
91
|
+
</button>
|
|
84
92
|
</div>
|
|
85
|
-
</
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
93
|
+
</header>
|
|
94
|
+
|
|
95
|
+
<!-- Stats Grid -->
|
|
96
|
+
<div class="stats-grid">
|
|
97
|
+
<div class="stat-card" data-stat="events">
|
|
98
|
+
<div class="stat-value" id="stat-events">0</div>
|
|
99
|
+
<div class="stat-label">
|
|
100
|
+
<i class="ri-file-list-3-line"></i> Total Events
|
|
101
|
+
</div>
|
|
90
102
|
</div>
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
103
|
+
<div class="stat-card" data-stat="sessions">
|
|
104
|
+
<div class="stat-value" id="stat-sessions">0</div>
|
|
105
|
+
<div class="stat-label">
|
|
106
|
+
<i class="ri-discuss-line"></i> Active Sessions
|
|
107
|
+
</div>
|
|
96
108
|
</div>
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
109
|
+
<div class="stat-card" data-stat="shared">
|
|
110
|
+
<div class="stat-value" id="stat-shared">0</div>
|
|
111
|
+
<div class="stat-label">
|
|
112
|
+
<i class="ri-share-forward-line"></i> Shared Items
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
<div class="stat-card" data-stat="vectors">
|
|
116
|
+
<div class="stat-value" id="stat-vectors">0</div>
|
|
117
|
+
<div class="stat-label">
|
|
118
|
+
<i class="ri-node-tree"></i> Vector Nodes
|
|
119
|
+
</div>
|
|
102
120
|
</div>
|
|
103
121
|
</div>
|
|
104
|
-
</div>
|
|
105
122
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
123
|
+
<!-- Main Grid -->
|
|
124
|
+
<div class="dashboard-grid">
|
|
125
|
+
|
|
126
|
+
<!-- Left Column -->
|
|
127
|
+
<div class="left-col">
|
|
128
|
+
|
|
129
|
+
<!-- Memory Pipeline -->
|
|
130
|
+
<div class="card">
|
|
131
|
+
<div class="card-header">
|
|
132
|
+
<div class="card-title">
|
|
133
|
+
<i class="ri-flow-chart"></i>
|
|
134
|
+
<span>Memory Pipeline</span>
|
|
135
|
+
</div>
|
|
118
136
|
</div>
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
137
|
+
|
|
138
|
+
<!-- Pipeline Steps (Tabs) -->
|
|
139
|
+
<div class="pipeline-container">
|
|
140
|
+
<div class="pipeline-steps">
|
|
141
|
+
<div class="p-step active" data-level="L0">
|
|
142
|
+
<span class="p-step-name">Raw Events</span>
|
|
143
|
+
<span class="p-step-count">0</span>
|
|
144
|
+
</div>
|
|
145
|
+
<div class="p-step" data-level="L1">
|
|
146
|
+
<span class="p-step-name">Structured</span>
|
|
147
|
+
<span class="p-step-count">0</span>
|
|
148
|
+
</div>
|
|
149
|
+
<div class="p-step" data-level="L2">
|
|
150
|
+
<span class="p-step-name">Validated</span>
|
|
151
|
+
<span class="p-step-count">0</span>
|
|
152
|
+
</div>
|
|
153
|
+
<div class="p-step" data-level="L3">
|
|
154
|
+
<span class="p-step-name">Verified</span>
|
|
155
|
+
<span class="p-step-count">0</span>
|
|
156
|
+
</div>
|
|
157
|
+
<div class="p-step" data-level="L4">
|
|
158
|
+
<span class="p-step-name">Active</span>
|
|
159
|
+
<span class="p-step-count">0</span>
|
|
160
|
+
</div>
|
|
143
161
|
</div>
|
|
144
162
|
</div>
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
<
|
|
152
|
-
|
|
153
|
-
|
|
163
|
+
|
|
164
|
+
<!-- Sort Controls -->
|
|
165
|
+
<div class="sort-controls">
|
|
166
|
+
<span class="sort-label">Sort:</span>
|
|
167
|
+
<button class="sort-btn active" data-sort="recent">Latest</button>
|
|
168
|
+
<button class="sort-btn" data-sort="accessed">Recently Used</button>
|
|
169
|
+
<button class="sort-btn" data-sort="most-accessed">Most Used</button>
|
|
170
|
+
</div>
|
|
171
|
+
|
|
172
|
+
<!-- Events List -->
|
|
173
|
+
<div id="event-list-container" class="event-list">
|
|
174
|
+
<!-- Events injected by JS -->
|
|
175
|
+
<div class="event-item">
|
|
176
|
+
<div class="event-header">
|
|
177
|
+
<span class="event-type-badge type-system">System</span>
|
|
178
|
+
<span class="event-time">Just now</span>
|
|
179
|
+
</div>
|
|
180
|
+
<div class="event-content">Initializing dashboard interface...</div>
|
|
154
181
|
</div>
|
|
155
|
-
<div class="event-content">Initializing dashboard interface...</div>
|
|
156
182
|
</div>
|
|
157
|
-
|
|
158
|
-
</div>
|
|
183
|
+
</div>
|
|
159
184
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
185
|
+
<!-- Activity Chart -->
|
|
186
|
+
<div class="card">
|
|
187
|
+
<div class="card-header">
|
|
188
|
+
<div class="card-title">
|
|
189
|
+
<i class="ri-bar-chart-grouped-line"></i>
|
|
190
|
+
<span>Activity Persistence</span>
|
|
191
|
+
</div>
|
|
166
192
|
</div>
|
|
193
|
+
<div id="activity-chart"></div>
|
|
167
194
|
</div>
|
|
168
|
-
|
|
195
|
+
|
|
169
196
|
</div>
|
|
170
|
-
|
|
171
|
-
</div>
|
|
172
197
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
198
|
+
<!-- Right Column -->
|
|
199
|
+
<div class="right-col">
|
|
200
|
+
|
|
201
|
+
<!-- Endless Mode Status -->
|
|
202
|
+
<div class="card endless-card">
|
|
203
|
+
<div class="card-header">
|
|
204
|
+
<div class="card-title">
|
|
205
|
+
<i class="ri-infinite-loop-line"></i>
|
|
206
|
+
<span>Endless Mode</span>
|
|
207
|
+
</div>
|
|
208
|
+
</div>
|
|
209
|
+
<div style="display:flex; align-items:center; gap:12px; margin-top:10px;">
|
|
210
|
+
<div id="status-dot" class="status-dot"></div>
|
|
211
|
+
<span id="status-text" style="color:var(--text-muted); font-weight:500;">Idle</span>
|
|
182
212
|
</div>
|
|
183
213
|
</div>
|
|
184
|
-
<div style="display:flex; align-items:center; gap:12px; margin-top:10px;">
|
|
185
|
-
<div id="status-dot" class="status-dot"></div>
|
|
186
|
-
<span id="status-text" style="color:var(--text-muted); font-weight:500;">Idle</span>
|
|
187
|
-
</div>
|
|
188
|
-
</div>
|
|
189
214
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
215
|
+
<!-- Shared Knowledge -->
|
|
216
|
+
<div class="card">
|
|
217
|
+
<div class="card-header">
|
|
218
|
+
<div class="card-title">
|
|
219
|
+
<i class="ri-global-line"></i>
|
|
220
|
+
<span>Global Knowledge</span>
|
|
221
|
+
</div>
|
|
222
|
+
</div>
|
|
223
|
+
|
|
224
|
+
<div class="shared-list">
|
|
225
|
+
<div class="shared-item">
|
|
226
|
+
<div class="shared-info">
|
|
227
|
+
<div class="shared-icon">🔧</div>
|
|
228
|
+
<span>Troubleshooting</span>
|
|
229
|
+
</div>
|
|
230
|
+
<div class="shared-count" id="shared-troubleshooting">0</div>
|
|
231
|
+
</div>
|
|
232
|
+
<div class="shared-item">
|
|
233
|
+
<div class="shared-info">
|
|
234
|
+
<div class="shared-icon">✨</div>
|
|
235
|
+
<span>Best Practices</span>
|
|
236
|
+
</div>
|
|
237
|
+
<div class="shared-count" id="shared-best-practices">0</div>
|
|
238
|
+
</div>
|
|
239
|
+
<div class="shared-item">
|
|
240
|
+
<div class="shared-info">
|
|
241
|
+
<div class="shared-icon">⚠️</div>
|
|
242
|
+
<span>Common Errors</span>
|
|
243
|
+
</div>
|
|
244
|
+
<div class="shared-count" id="shared-errors">0</div>
|
|
245
|
+
</div>
|
|
196
246
|
</div>
|
|
197
247
|
</div>
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
<
|
|
248
|
+
|
|
249
|
+
<!-- Memory Usage -->
|
|
250
|
+
<div class="card">
|
|
251
|
+
<div class="card-header">
|
|
252
|
+
<div class="card-title">
|
|
253
|
+
<i class="ri-bar-chart-box-line"></i>
|
|
254
|
+
<span>Memory Usage</span>
|
|
204
255
|
</div>
|
|
205
|
-
<div class="shared-count" id="shared-troubleshooting">0</div>
|
|
206
256
|
</div>
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
257
|
+
|
|
258
|
+
<div class="graduation-stats">
|
|
259
|
+
<div class="section-label">Graduation Distribution</div>
|
|
260
|
+
<div id="graduation-bars"></div>
|
|
261
|
+
</div>
|
|
262
|
+
|
|
263
|
+
<div style="margin-top:20px;">
|
|
264
|
+
<div class="section-label">Helpfulness</div>
|
|
265
|
+
<div id="helpfulness-summary" style="padding:8px 0; font-size:13px; color:var(--text-muted);">Loading...</div>
|
|
266
|
+
</div>
|
|
267
|
+
|
|
268
|
+
<div style="margin-top:20px;">
|
|
269
|
+
<div class="section-label">Most Helpful Memories</div>
|
|
270
|
+
<div id="most-helpful-list" class="shared-list">
|
|
271
|
+
<div style="padding:12px; text-align:center; color:var(--text-muted); font-size:13px;">Loading...</div>
|
|
211
272
|
</div>
|
|
212
|
-
<div class="shared-count" id="shared-best-practices">0</div>
|
|
213
273
|
</div>
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
274
|
+
|
|
275
|
+
<div style="margin-top:20px;">
|
|
276
|
+
<div class="section-label">Retrieval Trace (1:1)</div>
|
|
277
|
+
<div id="retrieval-trace-summary" style="padding:8px 0; font-size:13px; color:var(--text-muted);">Loading...</div>
|
|
278
|
+
<div id="retrieval-trace-list" class="shared-list">
|
|
279
|
+
<div style="padding:12px; text-align:center; color:var(--text-muted); font-size:13px;">Loading...</div>
|
|
218
280
|
</div>
|
|
219
|
-
<div class="shared-count" id="shared-errors">0</div>
|
|
220
281
|
</div>
|
|
221
282
|
</div>
|
|
283
|
+
|
|
284
|
+
</div>
|
|
285
|
+
|
|
286
|
+
</div>
|
|
287
|
+
</div>
|
|
288
|
+
|
|
289
|
+
<!-- ========== VIEW: Knowledge Graph ========== -->
|
|
290
|
+
<div id="view-knowledge-graph" class="page-view">
|
|
291
|
+
<header class="top-header">
|
|
292
|
+
<div class="page-title">
|
|
293
|
+
<h1>Knowledge Graph</h1>
|
|
294
|
+
<p>Most accessed memories and topic distribution</p>
|
|
222
295
|
</div>
|
|
223
|
-
|
|
296
|
+
</header>
|
|
297
|
+
<div id="kg-content">
|
|
298
|
+
<div style="text-align:center; padding:60px; color:var(--text-muted);">Loading...</div>
|
|
224
299
|
</div>
|
|
300
|
+
</div>
|
|
225
301
|
|
|
302
|
+
<!-- ========== VIEW: Memory Banks ========== -->
|
|
303
|
+
<div id="view-memory-banks" class="page-view">
|
|
304
|
+
<header class="top-header">
|
|
305
|
+
<div class="page-title">
|
|
306
|
+
<h1>Memory Banks</h1>
|
|
307
|
+
<p>Memory levels and graduation pipeline</p>
|
|
308
|
+
</div>
|
|
309
|
+
</header>
|
|
310
|
+
<div id="mb-content">
|
|
311
|
+
<div style="text-align:center; padding:60px; color:var(--text-muted);">Loading...</div>
|
|
312
|
+
</div>
|
|
226
313
|
</div>
|
|
314
|
+
|
|
315
|
+
<!-- ========== VIEW: Configuration ========== -->
|
|
316
|
+
<div id="view-configuration" class="page-view">
|
|
317
|
+
<header class="top-header">
|
|
318
|
+
<div class="page-title">
|
|
319
|
+
<h1>Configuration</h1>
|
|
320
|
+
<p>System settings and graduation criteria</p>
|
|
321
|
+
</div>
|
|
322
|
+
</header>
|
|
323
|
+
<div id="cfg-content">
|
|
324
|
+
<div style="text-align:center; padding:60px; color:var(--text-muted);">Loading...</div>
|
|
325
|
+
</div>
|
|
326
|
+
</div>
|
|
327
|
+
|
|
227
328
|
</main>
|
|
228
329
|
</div>
|
|
229
330
|
|
|
331
|
+
<!-- Chat Panel (slide-out) -->
|
|
332
|
+
<div id="chat-panel" class="chat-panel">
|
|
333
|
+
<div class="chat-header">
|
|
334
|
+
<div class="chat-title">
|
|
335
|
+
<i class="ri-chat-ai-line"></i>
|
|
336
|
+
<span>Ask Memory</span>
|
|
337
|
+
</div>
|
|
338
|
+
<div class="chat-header-tabs">
|
|
339
|
+
<button class="chat-header-tab active" data-chat-tab="chat">Chat</button>
|
|
340
|
+
<button class="chat-header-tab" data-chat-tab="history">History</button>
|
|
341
|
+
<button id="chat-new-btn" class="chat-new-btn" title="New conversation"><i class="ri-add-line"></i></button>
|
|
342
|
+
</div>
|
|
343
|
+
<button id="chat-close-btn" class="modal-close-btn"><i class="ri-close-line"></i></button>
|
|
344
|
+
</div>
|
|
345
|
+
|
|
346
|
+
<div id="chat-messages" class="chat-messages">
|
|
347
|
+
<div class="chat-welcome">
|
|
348
|
+
<div class="chat-welcome-icon">🧠</div>
|
|
349
|
+
<div class="chat-welcome-title">Ask about your memories</div>
|
|
350
|
+
<div class="chat-welcome-text">
|
|
351
|
+
I can search through your coding sessions, tool usage, and stored knowledge to answer questions.
|
|
352
|
+
</div>
|
|
353
|
+
</div>
|
|
354
|
+
</div>
|
|
355
|
+
|
|
356
|
+
<div id="chat-history-view" class="chat-history-view">
|
|
357
|
+
<div class="chat-history-empty">No conversation history yet.</div>
|
|
358
|
+
</div>
|
|
359
|
+
|
|
360
|
+
<div class="chat-input-area">
|
|
361
|
+
<div class="chat-input-wrapper">
|
|
362
|
+
<textarea id="chat-input" class="chat-input"
|
|
363
|
+
placeholder="Ask about your code memories..."
|
|
364
|
+
rows="1"></textarea>
|
|
365
|
+
<button id="chat-send-btn" class="chat-send-btn" disabled>
|
|
366
|
+
<i class="ri-send-plane-2-fill"></i>
|
|
367
|
+
</button>
|
|
368
|
+
</div>
|
|
369
|
+
<div class="chat-input-hint">
|
|
370
|
+
<span id="chat-project-scope"></span>
|
|
371
|
+
</div>
|
|
372
|
+
</div>
|
|
373
|
+
</div>
|
|
374
|
+
|
|
375
|
+
<!-- Detail Modal -->
|
|
376
|
+
<div id="detail-modal" class="modal-overlay" style="display:none;">
|
|
377
|
+
<div class="modal-container">
|
|
378
|
+
<div class="modal-header">
|
|
379
|
+
<div class="modal-title">Event Detail</div>
|
|
380
|
+
<button class="modal-close-btn" data-modal="detail-modal"><i class="ri-close-line"></i></button>
|
|
381
|
+
</div>
|
|
382
|
+
<div class="modal-body" id="detail-modal-body">
|
|
383
|
+
<div style="text-align:center; padding:40px; color:var(--text-muted);">Loading...</div>
|
|
384
|
+
</div>
|
|
385
|
+
</div>
|
|
386
|
+
</div>
|
|
387
|
+
|
|
388
|
+
<!-- List Modal -->
|
|
389
|
+
<div id="list-modal" class="modal-overlay" style="display:none;">
|
|
390
|
+
<div class="modal-container modal-lg">
|
|
391
|
+
<div class="modal-header">
|
|
392
|
+
<div class="modal-title" id="list-modal-title">List</div>
|
|
393
|
+
<button class="modal-close-btn" data-modal="list-modal"><i class="ri-close-line"></i></button>
|
|
394
|
+
</div>
|
|
395
|
+
<div class="modal-body" id="list-modal-body">
|
|
396
|
+
<div style="text-align:center; padding:40px; color:var(--text-muted);">Loading...</div>
|
|
397
|
+
</div>
|
|
398
|
+
</div>
|
|
399
|
+
</div>
|
|
400
|
+
|
|
230
401
|
<script src="app.js"></script>
|
|
231
402
|
</body>
|
|
232
403
|
</html>
|