@ninebix/nmt-system 1.0.1 → 1.0.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.
@@ -0,0 +1,1002 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>NMT Dashboard Lite</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></script>
9
+ <script>
10
+ tailwind.config = {
11
+ theme: {
12
+ extend: {
13
+ fontFamily: {
14
+ mono: ['ui-monospace', 'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New', 'monospace'],
15
+ }
16
+ }
17
+ }
18
+ }
19
+ </script>
20
+ <style>
21
+ [x-cloak] { display: none !important; }
22
+ ::-webkit-scrollbar { width: 6px; height: 6px; }
23
+ ::-webkit-scrollbar-track { background: #f1f5f9; }
24
+ ::-webkit-scrollbar-thumb { background: #94a3b8; border-radius: 3px; }
25
+ ::-webkit-scrollbar-thumb:hover { background: #64748b; }
26
+ </style>
27
+ </head>
28
+ <body class="bg-gray-100 min-h-screen" x-data="dashboard()" x-init="init()">
29
+
30
+ <!-- Header -->
31
+ <header class="bg-white border-b border-gray-200 shadow-sm">
32
+ <div class="max-w-screen-2xl mx-auto px-4 sm:px-6 lg:px-8 h-14 flex items-center justify-between">
33
+ <div class="flex items-center gap-3">
34
+ <h1 class="text-lg font-bold text-gray-900 tracking-tight">NMT Dashboard</h1>
35
+ <span class="text-xs font-medium text-indigo-600 bg-indigo-50 px-2 py-0.5 rounded-full">Lite</span>
36
+ </div>
37
+ <div class="flex items-center gap-3">
38
+ <span x-show="connected" x-cloak class="flex items-center gap-1.5 text-xs font-medium text-emerald-700 bg-emerald-50 border border-emerald-200 px-2.5 py-1 rounded-full">
39
+ <span class="w-1.5 h-1.5 bg-emerald-500 rounded-full animate-pulse"></span>
40
+ Connected
41
+ </span>
42
+ <span x-show="!connected" class="flex items-center gap-1.5 text-xs font-medium text-red-700 bg-red-50 border border-red-200 px-2.5 py-1 rounded-full">
43
+ <span class="w-1.5 h-1.5 bg-red-500 rounded-full"></span>
44
+ Offline
45
+ </span>
46
+ </div>
47
+ </div>
48
+ </header>
49
+
50
+ <!-- Tab Navigation -->
51
+ <nav class="bg-white border-b border-gray-200">
52
+ <div class="max-w-screen-2xl mx-auto px-4 sm:px-6 lg:px-8">
53
+ <div class="flex gap-0 -mb-px">
54
+ <template x-for="tab in tabs" :key="tab.id">
55
+ <button
56
+ @click="switchTab(tab.id)"
57
+ :class="activeTab === tab.id
58
+ ? 'border-indigo-600 text-indigo-600 font-semibold'
59
+ : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300 font-medium'"
60
+ class="px-4 py-3 text-sm border-b-2 transition-colors whitespace-nowrap"
61
+ x-text="tab.label"
62
+ ></button>
63
+ </template>
64
+ </div>
65
+ </div>
66
+ </nav>
67
+
68
+ <!-- Main Content Area -->
69
+ <main class="max-w-screen-2xl mx-auto px-4 sm:px-6 lg:px-8 py-6">
70
+
71
+ <!-- ============================================================ -->
72
+ <!-- TAB 1: OVERVIEW -->
73
+ <!-- ============================================================ -->
74
+ <section x-show="activeTab === 'overview'" x-cloak>
75
+ <div class="flex items-center justify-between mb-5">
76
+ <h2 class="text-base font-semibold text-gray-900">System Overview</h2>
77
+ <span class="text-xs text-gray-400" x-text="lastRefresh ? 'Updated ' + lastRefresh : ''"></span>
78
+ </div>
79
+
80
+ <!-- Stat Cards -->
81
+ <div class="grid grid-cols-2 lg:grid-cols-3 gap-4 mb-6">
82
+ <!-- Neurons -->
83
+ <div class="bg-gray-50 border border-gray-200 rounded-lg p-5">
84
+ <p class="text-2xl font-bold text-gray-900" x-text="formatNumber(stats.neurons ?? '--')"></p>
85
+ <p class="text-xs font-medium text-gray-500 mt-1 uppercase tracking-wide">Neurons</p>
86
+ </div>
87
+ <!-- Synapses -->
88
+ <div class="bg-gray-50 border border-gray-200 rounded-lg p-5">
89
+ <p class="text-2xl font-bold text-gray-900" x-text="formatNumber(stats.synapses ?? '--')"></p>
90
+ <p class="text-xs font-medium text-gray-500 mt-1 uppercase tracking-wide">Synapses</p>
91
+ </div>
92
+ <!-- Chunks -->
93
+ <div class="bg-gray-50 border border-gray-200 rounded-lg p-5">
94
+ <p class="text-2xl font-bold text-gray-900" x-text="formatNumber(stats.chunks?.total ?? '--')"></p>
95
+ <p class="text-xs font-medium text-gray-500 mt-1 uppercase tracking-wide">Chunks</p>
96
+ </div>
97
+ <!-- Total Size -->
98
+ <div class="bg-gray-50 border border-gray-200 rounded-lg p-5">
99
+ <p class="text-2xl font-bold text-gray-900" x-text="formatBytes(stats.chunks?.totalSize)"></p>
100
+ <p class="text-xs font-medium text-gray-500 mt-1 uppercase tracking-wide">Total Size</p>
101
+ </div>
102
+ <!-- HNSW Vectors -->
103
+ <div class="bg-gray-50 border border-gray-200 rounded-lg p-5">
104
+ <p class="text-2xl font-bold text-gray-900" x-text="formatNumber(stats.hnsw?.totalNodes ?? '--')"></p>
105
+ <p class="text-xs font-medium text-gray-500 mt-1 uppercase tracking-wide">HNSW Vectors</p>
106
+ </div>
107
+ <!-- HNSW Layers -->
108
+ <div class="bg-gray-50 border border-gray-200 rounded-lg p-5">
109
+ <p class="text-2xl font-bold text-gray-900" x-text="stats.hnsw?.maxLayer ?? '--'"></p>
110
+ <p class="text-xs font-medium text-gray-500 mt-1 uppercase tracking-wide">HNSW Max Layer</p>
111
+ </div>
112
+ </div>
113
+
114
+ <!-- Storage Info -->
115
+ <div class="bg-white border border-gray-200 rounded-lg p-5">
116
+ <h3 class="text-sm font-semibold text-gray-700 mb-3 uppercase tracking-wide">Storage</h3>
117
+ <div class="grid grid-cols-1 sm:grid-cols-2 gap-3">
118
+ <div>
119
+ <span class="text-xs text-gray-500">Backend</span>
120
+ <p class="text-sm font-medium text-gray-900 font-mono" x-text="stats.storage?.backend ?? '--'"></p>
121
+ </div>
122
+ <div>
123
+ <span class="text-xs text-gray-500">Data Directory</span>
124
+ <p class="text-sm font-medium text-gray-900 font-mono break-all" x-text="stats.storage?.dataDir ?? '--'"></p>
125
+ </div>
126
+ <div>
127
+ <span class="text-xs text-gray-500">Average Chunk Size</span>
128
+ <p class="text-sm font-medium text-gray-900 font-mono" x-text="formatBytes(stats.chunks?.avgSize)"></p>
129
+ </div>
130
+ </div>
131
+ </div>
132
+ </section>
133
+
134
+ <!-- ============================================================ -->
135
+ <!-- TAB 2: NEURONS -->
136
+ <!-- ============================================================ -->
137
+ <section x-show="activeTab === 'neurons'" x-cloak>
138
+ <div class="flex items-center justify-between mb-4">
139
+ <h2 class="text-base font-semibold text-gray-900">
140
+ Neurons
141
+ <span class="text-sm font-normal text-gray-500 ml-1" x-show="neuronTotal > 0" x-text="'(' + neuronTotal + ' total)'"></span>
142
+ </h2>
143
+ <div class="flex items-center gap-2">
144
+ <button @click="loadNeurons()" class="text-xs text-indigo-600 hover:text-indigo-800 font-medium px-2 py-1 rounded hover:bg-indigo-50 transition-colors">
145
+ Refresh
146
+ </button>
147
+ </div>
148
+ </div>
149
+
150
+ <div class="flex gap-4">
151
+ <!-- Neurons Table -->
152
+ <div class="flex-1 min-w-0">
153
+ <!-- Empty State -->
154
+ <div x-show="!neuronsLoading && neurons.length === 0" class="bg-white border border-gray-200 rounded-lg p-12 text-center">
155
+ <p class="text-sm text-gray-500">No neurons found</p>
156
+ </div>
157
+
158
+ <!-- Loading -->
159
+ <div x-show="neuronsLoading" class="bg-white border border-gray-200 rounded-lg p-12 text-center">
160
+ <div class="inline-block w-5 h-5 border-2 border-indigo-200 border-t-indigo-600 rounded-full animate-spin"></div>
161
+ <p class="text-sm text-gray-500 mt-2">Loading neurons...</p>
162
+ </div>
163
+
164
+ <!-- Table -->
165
+ <div x-show="!neuronsLoading && neurons.length > 0" class="bg-white border border-gray-200 rounded-lg overflow-hidden">
166
+ <div class="overflow-x-auto">
167
+ <table class="w-full text-sm">
168
+ <thead>
169
+ <tr class="border-b border-gray-200 bg-gray-50">
170
+ <th class="text-left text-xs font-semibold text-gray-600 uppercase tracking-wide px-4 py-2.5">ID</th>
171
+ <th class="text-left text-xs font-semibold text-gray-600 uppercase tracking-wide px-4 py-2.5">Type</th>
172
+ <th class="text-left text-xs font-semibold text-gray-600 uppercase tracking-wide px-4 py-2.5">Tags</th>
173
+ <th class="text-right text-xs font-semibold text-gray-600 uppercase tracking-wide px-4 py-2.5">Chunks</th>
174
+ <th class="text-left text-xs font-semibold text-gray-600 uppercase tracking-wide px-4 py-2.5">Created</th>
175
+ </tr>
176
+ </thead>
177
+ <tbody>
178
+ <template x-for="neuron in neurons" :key="neuron.id">
179
+ <tr
180
+ @click="selectNeuron(neuron)"
181
+ :class="selectedNeuron?.id === neuron.id ? 'bg-indigo-50' : 'hover:bg-gray-50'"
182
+ class="border-b border-gray-100 cursor-pointer transition-colors"
183
+ >
184
+ <td class="px-4 py-2.5 font-mono text-xs text-indigo-700" x-text="neuron.id.substring(0, 8) + '...'"></td>
185
+ <td class="px-4 py-2.5 text-gray-700" x-text="neuron.sourceType || '--'"></td>
186
+ <td class="px-4 py-2.5">
187
+ <div class="flex flex-wrap gap-1">
188
+ <template x-for="tag in (neuron.tags || [])" :key="tag">
189
+ <span class="inline-block bg-indigo-50 text-indigo-700 text-xs font-medium px-1.5 py-0.5 rounded" x-text="tag"></span>
190
+ </template>
191
+ <span x-show="!neuron.tags || neuron.tags.length === 0" class="text-xs text-gray-400">--</span>
192
+ </div>
193
+ </td>
194
+ <td class="px-4 py-2.5 text-right text-gray-700 font-mono text-xs" x-text="neuron.chunks ?? '--'"></td>
195
+ <td class="px-4 py-2.5 text-gray-500 text-xs whitespace-nowrap" x-text="formatDate(neuron.createdAt)"></td>
196
+ </tr>
197
+ </template>
198
+ </tbody>
199
+ </table>
200
+ </div>
201
+
202
+ <!-- Pagination -->
203
+ <div class="flex items-center justify-between px-4 py-3 border-t border-gray-200 bg-gray-50">
204
+ <span class="text-xs text-gray-500" x-text="paginationLabel()"></span>
205
+ <div class="flex items-center gap-2">
206
+ <button
207
+ @click="prevPage()"
208
+ :disabled="neuronPage === 0"
209
+ :class="neuronPage === 0 ? 'opacity-40 cursor-not-allowed' : 'hover:bg-gray-200'"
210
+ class="px-3 py-1.5 text-xs font-medium text-gray-700 bg-white border border-gray-300 rounded transition-colors"
211
+ >
212
+ Prev
213
+ </button>
214
+ <button
215
+ @click="nextPage()"
216
+ :disabled="(neuronPage + 1) * neuronLimit >= neuronTotal"
217
+ :class="(neuronPage + 1) * neuronLimit >= neuronTotal ? 'opacity-40 cursor-not-allowed' : 'hover:bg-gray-200'"
218
+ class="px-3 py-1.5 text-xs font-medium text-gray-700 bg-white border border-gray-300 rounded transition-colors"
219
+ >
220
+ Next
221
+ </button>
222
+ </div>
223
+ </div>
224
+ </div>
225
+ </div>
226
+
227
+ <!-- Detail Panel -->
228
+ <div x-show="selectedNeuron" x-cloak x-transition class="w-96 flex-shrink-0">
229
+ <div class="bg-white border border-gray-200 rounded-lg overflow-hidden sticky top-4">
230
+ <div class="flex items-center justify-between px-4 py-3 border-b border-gray-200 bg-gray-50">
231
+ <h3 class="text-sm font-semibold text-gray-700">Neuron Detail</h3>
232
+ <button @click="selectedNeuron = null; selectedContent = ''" class="text-gray-400 hover:text-gray-600 text-lg leading-none">&times;</button>
233
+ </div>
234
+ <div class="p-4 space-y-3 max-h-[calc(100vh-16rem)] overflow-y-auto">
235
+ <!-- ID -->
236
+ <div>
237
+ <label class="text-xs text-gray-500 block">ID</label>
238
+ <p class="text-xs font-mono text-gray-900 break-all select-all" x-text="selectedNeuron?.id"></p>
239
+ </div>
240
+ <!-- Merkle Root -->
241
+ <div>
242
+ <label class="text-xs text-gray-500 block">Merkle Root</label>
243
+ <p class="text-xs font-mono text-gray-900 break-all select-all" x-text="selectedNeuron?.merkleRoot || '--'"></p>
244
+ </div>
245
+ <!-- Source Type -->
246
+ <div>
247
+ <label class="text-xs text-gray-500 block">Source Type</label>
248
+ <p class="text-sm text-gray-900" x-text="selectedNeuron?.sourceType || '--'"></p>
249
+ </div>
250
+ <!-- Tags -->
251
+ <div>
252
+ <label class="text-xs text-gray-500 block mb-1">Tags</label>
253
+ <div class="flex flex-wrap gap-1">
254
+ <template x-for="tag in (selectedNeuron?.tags || [])" :key="tag">
255
+ <span class="inline-block bg-indigo-50 text-indigo-700 text-xs font-medium px-1.5 py-0.5 rounded" x-text="tag"></span>
256
+ </template>
257
+ <span x-show="!selectedNeuron?.tags || selectedNeuron?.tags.length === 0" class="text-xs text-gray-400">None</span>
258
+ </div>
259
+ </div>
260
+ <!-- Metadata Row -->
261
+ <div class="grid grid-cols-2 gap-3">
262
+ <div>
263
+ <label class="text-xs text-gray-500 block">Chunks</label>
264
+ <p class="text-sm font-mono text-gray-900" x-text="selectedNeuron?.chunkHashes?.length ?? selectedNeuron?.chunks ?? '--'"></p>
265
+ </div>
266
+ <div>
267
+ <label class="text-xs text-gray-500 block">Access Count</label>
268
+ <p class="text-sm font-mono text-gray-900" x-text="selectedNeuron?.accessCount ?? '--'"></p>
269
+ </div>
270
+ </div>
271
+ <!-- Dates -->
272
+ <div class="grid grid-cols-2 gap-3">
273
+ <div>
274
+ <label class="text-xs text-gray-500 block">Created</label>
275
+ <p class="text-xs text-gray-900" x-text="formatDate(selectedNeuron?.createdAt)"></p>
276
+ </div>
277
+ <div>
278
+ <label class="text-xs text-gray-500 block">Updated</label>
279
+ <p class="text-xs text-gray-900" x-text="formatDate(selectedNeuron?.updatedAt)"></p>
280
+ </div>
281
+ </div>
282
+ <div>
283
+ <label class="text-xs text-gray-500 block">Last Accessed</label>
284
+ <p class="text-xs text-gray-900" x-text="formatDate(selectedNeuron?.lastAccessed)"></p>
285
+ </div>
286
+ <!-- Synapses -->
287
+ <div x-show="selectedNeuron?.synapses">
288
+ <label class="text-xs text-gray-500 block mb-1">Synapses</label>
289
+ <div class="flex gap-4">
290
+ <span class="text-xs text-gray-700">
291
+ Outgoing: <span class="font-semibold font-mono" x-text="selectedNeuron?.synapses?.outgoing?.length ?? selectedNeuron?.synapses?.outgoing ?? 0"></span>
292
+ </span>
293
+ <span class="text-xs text-gray-700">
294
+ Incoming: <span class="font-semibold font-mono" x-text="selectedNeuron?.synapses?.incoming?.length ?? selectedNeuron?.synapses?.incoming ?? 0"></span>
295
+ </span>
296
+ </div>
297
+ </div>
298
+ <!-- Content -->
299
+ <div>
300
+ <label class="text-xs text-gray-500 block mb-1">Content</label>
301
+ <div x-show="contentLoading" class="text-xs text-gray-400">Loading content...</div>
302
+ <pre x-show="selectedContent && !contentLoading" class="bg-gray-50 border border-gray-200 rounded p-3 text-xs text-gray-800 font-mono whitespace-pre-wrap break-words max-h-64 overflow-y-auto" x-text="selectedContent"></pre>
303
+ <p x-show="!selectedContent && !contentLoading" class="text-xs text-gray-400">No content available</p>
304
+ </div>
305
+ <!-- Delete -->
306
+ <div class="pt-2 border-t border-gray-200">
307
+ <button
308
+ x-show="!confirmDelete"
309
+ @click="confirmDelete = true"
310
+ class="w-full px-3 py-2 text-xs font-medium text-red-700 bg-red-50 border border-red-200 rounded hover:bg-red-100 transition-colors"
311
+ >
312
+ Delete Neuron
313
+ </button>
314
+ <div x-show="confirmDelete" class="space-y-2">
315
+ <p class="text-xs text-red-600 font-medium">Are you sure? This cannot be undone.</p>
316
+ <div class="flex gap-2">
317
+ <button
318
+ @click="deleteNeuron(selectedNeuron.id)"
319
+ :disabled="deleting"
320
+ class="flex-1 px-3 py-2 text-xs font-medium text-white bg-red-600 rounded hover:bg-red-700 transition-colors disabled:opacity-50"
321
+ >
322
+ <span x-show="!deleting">Confirm Delete</span>
323
+ <span x-show="deleting">Deleting...</span>
324
+ </button>
325
+ <button
326
+ @click="confirmDelete = false"
327
+ class="flex-1 px-3 py-2 text-xs font-medium text-gray-700 bg-white border border-gray-300 rounded hover:bg-gray-50 transition-colors"
328
+ >
329
+ Cancel
330
+ </button>
331
+ </div>
332
+ </div>
333
+ </div>
334
+ </div>
335
+ </div>
336
+ </div>
337
+ </div>
338
+ </section>
339
+
340
+ <!-- ============================================================ -->
341
+ <!-- TAB 3: SEARCH -->
342
+ <!-- ============================================================ -->
343
+ <section x-show="activeTab === 'search'" x-cloak>
344
+ <h2 class="text-base font-semibold text-gray-900 mb-4">Semantic Search</h2>
345
+
346
+ <!-- Search Form -->
347
+ <div class="bg-white border border-gray-200 rounded-lg p-5 mb-5">
348
+ <div class="flex flex-col sm:flex-row gap-3">
349
+ <div class="flex-1">
350
+ <label class="text-xs font-medium text-gray-600 block mb-1">Query</label>
351
+ <input
352
+ type="text"
353
+ x-model="searchQuery"
354
+ @keydown.enter="doSearch()"
355
+ placeholder="Enter search query..."
356
+ class="w-full px-3 py-2 text-sm border border-gray-300 rounded-md focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 outline-none transition"
357
+ >
358
+ </div>
359
+ <div class="w-24">
360
+ <label class="text-xs font-medium text-gray-600 block mb-1">Top-K</label>
361
+ <input
362
+ type="number"
363
+ x-model.number="searchK"
364
+ min="1"
365
+ max="100"
366
+ class="w-full px-3 py-2 text-sm border border-gray-300 rounded-md focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 outline-none transition"
367
+ >
368
+ </div>
369
+ <div class="flex items-end gap-3">
370
+ <label class="flex items-center gap-2 pb-2 cursor-pointer select-none">
371
+ <input type="checkbox" x-model="searchIncludeContent" class="w-4 h-4 text-indigo-600 border-gray-300 rounded focus:ring-indigo-500">
372
+ <span class="text-xs font-medium text-gray-600 whitespace-nowrap">Include Content</span>
373
+ </label>
374
+ <button
375
+ @click="doSearch()"
376
+ :disabled="searching || !searchQuery.trim()"
377
+ class="px-5 py-2 text-sm font-medium text-white bg-indigo-600 rounded-md hover:bg-indigo-700 disabled:opacity-50 disabled:cursor-not-allowed transition-colors flex items-center gap-2"
378
+ >
379
+ <span x-show="searching" class="w-3.5 h-3.5 border-2 border-white/30 border-t-white rounded-full animate-spin"></span>
380
+ Search
381
+ </button>
382
+ </div>
383
+ </div>
384
+ </div>
385
+
386
+ <!-- Search Results -->
387
+ <div x-show="searchResults.length > 0" class="space-y-3">
388
+ <p class="text-xs text-gray-500 font-medium" x-text="searchResults.length + ' result(s) found'"></p>
389
+ <template x-for="(result, idx) in searchResults" :key="idx">
390
+ <div class="bg-white border border-gray-200 rounded-lg p-4">
391
+ <div class="flex items-start justify-between mb-2">
392
+ <div class="flex items-center gap-3">
393
+ <span class="font-mono text-xs text-indigo-700 bg-indigo-50 px-2 py-0.5 rounded" x-text="result.neuronId?.substring(0, 12) + '...'"></span>
394
+ <span
395
+ :class="result.score > 0.8 ? 'text-emerald-700 bg-emerald-50' : result.score > 0.5 ? 'text-amber-700 bg-amber-50' : 'text-gray-600 bg-gray-100'"
396
+ class="text-xs font-semibold px-2 py-0.5 rounded"
397
+ x-text="'Score: ' + (typeof result.score === 'number' ? result.score.toFixed(4) : result.score)"
398
+ ></span>
399
+ </div>
400
+ <span class="text-xs text-gray-500" x-text="result.sourceType || ''"></span>
401
+ </div>
402
+ <div class="flex flex-wrap gap-1 mb-2" x-show="result.tags && result.tags.length > 0">
403
+ <template x-for="tag in (result.tags || [])" :key="tag">
404
+ <span class="inline-block bg-indigo-50 text-indigo-700 text-xs font-medium px-1.5 py-0.5 rounded" x-text="tag"></span>
405
+ </template>
406
+ </div>
407
+ <div x-show="result.content" class="mt-2">
408
+ <pre class="bg-gray-50 border border-gray-200 rounded p-3 text-xs text-gray-800 font-mono whitespace-pre-wrap break-words max-h-48 overflow-y-auto" x-text="result.content"></pre>
409
+ </div>
410
+ </div>
411
+ </template>
412
+ </div>
413
+
414
+ <!-- No Results -->
415
+ <div x-show="searchPerformed && searchResults.length === 0 && !searching" class="bg-white border border-gray-200 rounded-lg p-12 text-center">
416
+ <p class="text-sm text-gray-500">No results found</p>
417
+ <p class="text-xs text-gray-400 mt-1">Try a different query or adjust the Top-K value</p>
418
+ </div>
419
+
420
+ <!-- Search Error -->
421
+ <div x-show="searchError" x-cloak class="bg-red-50 border border-red-200 rounded-lg p-4">
422
+ <p class="text-sm text-red-700 font-medium">Search Error</p>
423
+ <p class="text-xs text-red-600 mt-1" x-text="searchError"></p>
424
+ </div>
425
+ </section>
426
+
427
+ <!-- ============================================================ -->
428
+ <!-- TAB 4: INGEST -->
429
+ <!-- ============================================================ -->
430
+ <section x-show="activeTab === 'ingest'" x-cloak>
431
+ <h2 class="text-base font-semibold text-gray-900 mb-4">Ingest Content</h2>
432
+
433
+ <div class="grid grid-cols-1 lg:grid-cols-2 gap-5">
434
+ <!-- Ingest Form -->
435
+ <div class="bg-white border border-gray-200 rounded-lg p-5">
436
+ <div class="space-y-4">
437
+ <div>
438
+ <div class="flex items-center justify-between mb-1">
439
+ <label class="text-xs font-medium text-gray-600">Text Content</label>
440
+ <span class="text-xs text-gray-400" x-text="ingestText.length + ' characters'"></span>
441
+ </div>
442
+ <textarea
443
+ x-model="ingestText"
444
+ rows="10"
445
+ placeholder="Enter or paste text content to ingest..."
446
+ class="w-full px-3 py-2 text-sm border border-gray-300 rounded-md focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 outline-none transition resize-y font-mono"
447
+ ></textarea>
448
+ </div>
449
+ <div class="grid grid-cols-2 gap-3">
450
+ <div>
451
+ <label class="text-xs font-medium text-gray-600 block mb-1">Source Type</label>
452
+ <input
453
+ type="text"
454
+ x-model="ingestSourceType"
455
+ placeholder="dashboard"
456
+ class="w-full px-3 py-2 text-sm border border-gray-300 rounded-md focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 outline-none transition"
457
+ >
458
+ </div>
459
+ <div>
460
+ <label class="text-xs font-medium text-gray-600 block mb-1">Tags (comma-separated)</label>
461
+ <input
462
+ type="text"
463
+ x-model="ingestTags"
464
+ placeholder="tag1, tag2"
465
+ class="w-full px-3 py-2 text-sm border border-gray-300 rounded-md focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 outline-none transition"
466
+ >
467
+ </div>
468
+ </div>
469
+ <button
470
+ @click="doIngest()"
471
+ :disabled="ingesting || !ingestText.trim()"
472
+ class="w-full px-4 py-2.5 text-sm font-medium text-white bg-emerald-600 rounded-md hover:bg-emerald-700 disabled:opacity-50 disabled:cursor-not-allowed transition-colors flex items-center justify-center gap-2"
473
+ >
474
+ <span x-show="ingesting" class="w-3.5 h-3.5 border-2 border-white/30 border-t-white rounded-full animate-spin"></span>
475
+ <span x-text="ingesting ? 'Ingesting...' : 'Ingest'"></span>
476
+ </button>
477
+ </div>
478
+ </div>
479
+
480
+ <!-- Result Panel -->
481
+ <div>
482
+ <!-- Success -->
483
+ <div x-show="ingestResult" x-cloak class="bg-emerald-50 border border-emerald-200 rounded-lg p-5">
484
+ <h3 class="text-sm font-semibold text-emerald-800 mb-3">Ingestion Successful</h3>
485
+ <div class="space-y-2">
486
+ <div>
487
+ <label class="text-xs text-emerald-600">Neuron ID</label>
488
+ <p class="text-xs font-mono text-emerald-900 break-all select-all" x-text="ingestResult?.neuronId"></p>
489
+ </div>
490
+ <div>
491
+ <label class="text-xs text-emerald-600">Merkle Root</label>
492
+ <p class="text-xs font-mono text-emerald-900 break-all select-all" x-text="ingestResult?.merkleRoot"></p>
493
+ </div>
494
+ <div class="flex gap-4">
495
+ <div>
496
+ <label class="text-xs text-emerald-600">Chunks</label>
497
+ <p class="text-sm font-semibold text-emerald-900" x-text="ingestResult?.chunks"></p>
498
+ </div>
499
+ <div>
500
+ <label class="text-xs text-emerald-600">Source Type</label>
501
+ <p class="text-sm text-emerald-900" x-text="ingestResult?.sourceType"></p>
502
+ </div>
503
+ </div>
504
+ <div x-show="ingestResult?.tags?.length > 0">
505
+ <label class="text-xs text-emerald-600 block mb-1">Tags</label>
506
+ <div class="flex flex-wrap gap-1">
507
+ <template x-for="tag in (ingestResult?.tags || [])" :key="tag">
508
+ <span class="inline-block bg-emerald-100 text-emerald-800 text-xs font-medium px-1.5 py-0.5 rounded" x-text="tag"></span>
509
+ </template>
510
+ </div>
511
+ </div>
512
+ </div>
513
+ </div>
514
+
515
+ <!-- Error -->
516
+ <div x-show="ingestError" x-cloak class="bg-red-50 border border-red-200 rounded-lg p-5">
517
+ <h3 class="text-sm font-semibold text-red-800 mb-1">Ingestion Failed</h3>
518
+ <p class="text-xs text-red-600" x-text="ingestError"></p>
519
+ </div>
520
+
521
+ <!-- Empty State -->
522
+ <div x-show="!ingestResult && !ingestError" class="bg-white border border-gray-200 rounded-lg p-12 text-center">
523
+ <p class="text-sm text-gray-400">Results will appear here after ingestion</p>
524
+ </div>
525
+ </div>
526
+ </div>
527
+ </section>
528
+
529
+ <!-- ============================================================ -->
530
+ <!-- TAB 5: VERIFY -->
531
+ <!-- ============================================================ -->
532
+ <section x-show="activeTab === 'verify'" x-cloak>
533
+ <h2 class="text-base font-semibold text-gray-900 mb-4">Data Integrity Verification</h2>
534
+
535
+ <div class="grid grid-cols-1 lg:grid-cols-2 gap-5">
536
+
537
+ <!-- Verify All -->
538
+ <div class="space-y-4">
539
+ <div class="bg-white border border-gray-200 rounded-lg p-5">
540
+ <h3 class="text-sm font-semibold text-gray-700 mb-3">Verify All Neurons</h3>
541
+ <button
542
+ @click="doVerifyAll()"
543
+ :disabled="verifying"
544
+ class="px-4 py-2 text-sm font-medium text-white bg-indigo-600 rounded-md hover:bg-indigo-700 disabled:opacity-50 disabled:cursor-not-allowed transition-colors flex items-center gap-2"
545
+ >
546
+ <span x-show="verifying" class="w-3.5 h-3.5 border-2 border-white/30 border-t-white rounded-full animate-spin"></span>
547
+ <span x-text="verifying ? 'Verifying...' : 'Run Verification'"></span>
548
+ </button>
549
+ </div>
550
+
551
+ <!-- Verify All Results -->
552
+ <div x-show="verifyAllResult" x-cloak class="bg-white border border-gray-200 rounded-lg overflow-hidden">
553
+ <!-- Summary -->
554
+ <div class="px-4 py-3 border-b border-gray-200 bg-gray-50 flex items-center gap-4">
555
+ <span class="text-xs font-medium text-gray-600">
556
+ Total: <span class="font-semibold text-gray-900" x-text="verifyAllResult?.total"></span>
557
+ </span>
558
+ <span class="text-xs font-medium text-emerald-600">
559
+ Valid: <span class="font-semibold" x-text="verifyAllResult?.valid"></span>
560
+ </span>
561
+ <span class="text-xs font-medium text-red-600">
562
+ Invalid: <span class="font-semibold" x-text="verifyAllResult?.invalid"></span>
563
+ </span>
564
+ </div>
565
+ <!-- Results Table -->
566
+ <div class="max-h-80 overflow-y-auto">
567
+ <table class="w-full text-sm">
568
+ <thead class="sticky top-0 bg-white">
569
+ <tr class="border-b border-gray-100">
570
+ <th class="text-left text-xs font-semibold text-gray-600 px-4 py-2">Neuron ID</th>
571
+ <th class="text-center text-xs font-semibold text-gray-600 px-4 py-2">Status</th>
572
+ <th class="text-left text-xs font-semibold text-gray-600 px-4 py-2">Errors</th>
573
+ </tr>
574
+ </thead>
575
+ <tbody>
576
+ <template x-for="(r, idx) in (verifyAllResult?.results || [])" :key="idx">
577
+ <tr class="border-b border-gray-50">
578
+ <td class="px-4 py-2 font-mono text-xs text-gray-700" x-text="r.neuronId?.substring(0, 12) + '...'"></td>
579
+ <td class="px-4 py-2 text-center">
580
+ <span x-show="r.valid" class="inline-block w-5 h-5 text-xs leading-5 text-center text-emerald-700 bg-emerald-100 rounded-full font-bold">OK</span>
581
+ <span x-show="!r.valid" class="inline-block w-5 h-5 text-xs leading-5 text-center text-red-700 bg-red-100 rounded-full font-bold">!</span>
582
+ </td>
583
+ <td class="px-4 py-2 text-xs text-red-600" x-text="r.errors?.join(', ') || '--'"></td>
584
+ </tr>
585
+ </template>
586
+ </tbody>
587
+ </table>
588
+ </div>
589
+ <div x-show="!verifyAllResult?.results || verifyAllResult.results.length === 0" class="p-6 text-center">
590
+ <p class="text-xs text-gray-400">No verification results</p>
591
+ </div>
592
+ </div>
593
+ </div>
594
+
595
+ <!-- Verify Single -->
596
+ <div class="space-y-4">
597
+ <div class="bg-white border border-gray-200 rounded-lg p-5">
598
+ <h3 class="text-sm font-semibold text-gray-700 mb-3">Verify Single Neuron</h3>
599
+ <div class="flex gap-2">
600
+ <input
601
+ type="text"
602
+ x-model="verifyNeuronId"
603
+ placeholder="Enter neuron ID..."
604
+ @keydown.enter="doVerifySingle()"
605
+ class="flex-1 px-3 py-2 text-sm font-mono border border-gray-300 rounded-md focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 outline-none transition"
606
+ >
607
+ <button
608
+ @click="doVerifySingle()"
609
+ :disabled="verifySingleLoading || !verifyNeuronId.trim()"
610
+ class="px-4 py-2 text-sm font-medium text-white bg-indigo-600 rounded-md hover:bg-indigo-700 disabled:opacity-50 disabled:cursor-not-allowed transition-colors flex items-center gap-2"
611
+ >
612
+ <span x-show="verifySingleLoading" class="w-3.5 h-3.5 border-2 border-white/30 border-t-white rounded-full animate-spin"></span>
613
+ Verify
614
+ </button>
615
+ </div>
616
+ </div>
617
+
618
+ <!-- Single Verify Result -->
619
+ <div x-show="verifySingleResult" x-cloak>
620
+ <div
621
+ :class="verifySingleResult?.valid ? 'bg-emerald-50 border-emerald-200' : 'bg-red-50 border-red-200'"
622
+ class="border rounded-lg p-5"
623
+ >
624
+ <div class="flex items-center gap-2 mb-3">
625
+ <span
626
+ :class="verifySingleResult?.valid ? 'text-emerald-800 bg-emerald-200' : 'text-red-800 bg-red-200'"
627
+ class="text-xs font-bold px-2 py-0.5 rounded"
628
+ x-text="verifySingleResult?.valid ? 'VALID' : 'INVALID'"
629
+ ></span>
630
+ </div>
631
+ <div class="space-y-2">
632
+ <div>
633
+ <label class="text-xs" :class="verifySingleResult?.valid ? 'text-emerald-600' : 'text-red-600'">Neuron ID</label>
634
+ <p class="text-xs font-mono break-all" :class="verifySingleResult?.valid ? 'text-emerald-900' : 'text-red-900'" x-text="verifySingleResult?.neuronId"></p>
635
+ </div>
636
+ <div>
637
+ <label class="text-xs" :class="verifySingleResult?.valid ? 'text-emerald-600' : 'text-red-600'">Merkle Root</label>
638
+ <p class="text-xs font-mono break-all" :class="verifySingleResult?.valid ? 'text-emerald-900' : 'text-red-900'" x-text="verifySingleResult?.merkleRoot || '--'"></p>
639
+ </div>
640
+ <div x-show="verifySingleResult?.details" class="grid grid-cols-2 gap-2 pt-2 border-t" :class="verifySingleResult?.valid ? 'border-emerald-200' : 'border-red-200'">
641
+ <div>
642
+ <label class="text-xs" :class="verifySingleResult?.valid ? 'text-emerald-600' : 'text-red-600'">Chunks Verified</label>
643
+ <p class="text-sm font-semibold" :class="verifySingleResult?.valid ? 'text-emerald-900' : 'text-red-900'" x-text="verifySingleResult?.details?.chunksVerified ?? '--'"></p>
644
+ </div>
645
+ <div>
646
+ <label class="text-xs" :class="verifySingleResult?.valid ? 'text-emerald-600' : 'text-red-600'">Chunks Failed</label>
647
+ <p class="text-sm font-semibold" :class="verifySingleResult?.valid ? 'text-emerald-900' : 'text-red-900'" x-text="verifySingleResult?.details?.chunksFailed ?? '--'"></p>
648
+ </div>
649
+ <div>
650
+ <label class="text-xs" :class="verifySingleResult?.valid ? 'text-emerald-600' : 'text-red-600'">Merkle Valid</label>
651
+ <p class="text-sm font-semibold" :class="verifySingleResult?.valid ? 'text-emerald-900' : 'text-red-900'" x-text="verifySingleResult?.details?.merkleValid ? 'Yes' : 'No'"></p>
652
+ </div>
653
+ <div>
654
+ <label class="text-xs" :class="verifySingleResult?.valid ? 'text-emerald-600' : 'text-red-600'">Embedding Valid</label>
655
+ <p class="text-sm font-semibold" :class="verifySingleResult?.valid ? 'text-emerald-900' : 'text-red-900'" x-text="verifySingleResult?.details?.embeddingValid ? 'Yes' : 'No'"></p>
656
+ </div>
657
+ </div>
658
+ <div x-show="verifySingleResult?.errors?.length > 0" class="pt-2">
659
+ <label class="text-xs text-red-600">Errors</label>
660
+ <template x-for="(err, i) in (verifySingleResult?.errors || [])" :key="i">
661
+ <p class="text-xs text-red-800 font-mono" x-text="err"></p>
662
+ </template>
663
+ </div>
664
+ </div>
665
+ </div>
666
+ </div>
667
+
668
+ <!-- Verify Error -->
669
+ <div x-show="verifySingleError" x-cloak class="bg-red-50 border border-red-200 rounded-lg p-4">
670
+ <p class="text-sm text-red-700 font-medium">Verification Error</p>
671
+ <p class="text-xs text-red-600 mt-1" x-text="verifySingleError"></p>
672
+ </div>
673
+
674
+ <!-- Empty State -->
675
+ <div x-show="!verifySingleResult && !verifySingleError" class="bg-white border border-gray-200 rounded-lg p-12 text-center">
676
+ <p class="text-sm text-gray-400">Enter a neuron ID to verify its integrity</p>
677
+ </div>
678
+ </div>
679
+ </div>
680
+ </section>
681
+
682
+ </main>
683
+
684
+ <script>
685
+ function dashboard() {
686
+ return {
687
+ // Navigation
688
+ activeTab: 'overview',
689
+ tabs: [
690
+ { id: 'overview', label: 'Overview' },
691
+ { id: 'neurons', label: 'Neurons' },
692
+ { id: 'search', label: 'Search' },
693
+ { id: 'ingest', label: 'Ingest' },
694
+ { id: 'verify', label: 'Verify' },
695
+ ],
696
+
697
+ // Connection
698
+ connected: false,
699
+ lastRefresh: '',
700
+
701
+ // Stats
702
+ stats: {},
703
+
704
+ // Neurons
705
+ neurons: [],
706
+ neuronTotal: 0,
707
+ neuronPage: 0,
708
+ neuronLimit: 50,
709
+ neuronsLoading: false,
710
+ selectedNeuron: null,
711
+ selectedContent: '',
712
+ contentLoading: false,
713
+ confirmDelete: false,
714
+ deleting: false,
715
+
716
+ // Search
717
+ searchQuery: '',
718
+ searchK: 10,
719
+ searchIncludeContent: true,
720
+ searchResults: [],
721
+ searching: false,
722
+ searchPerformed: false,
723
+ searchError: null,
724
+
725
+ // Ingest
726
+ ingestText: '',
727
+ ingestSourceType: 'dashboard',
728
+ ingestTags: '',
729
+ ingesting: false,
730
+ ingestResult: null,
731
+ ingestError: null,
732
+
733
+ // Verify
734
+ verifying: false,
735
+ verifyAllResult: null,
736
+ verifyNeuronId: '',
737
+ verifySingleResult: null,
738
+ verifySingleLoading: false,
739
+ verifySingleError: null,
740
+
741
+ // Auto-refresh interval
742
+ _refreshInterval: null,
743
+
744
+ // --------------------------------------------------------
745
+ // Initialization
746
+ // --------------------------------------------------------
747
+ async init() {
748
+ await this.checkHealth();
749
+ await this.loadStats();
750
+ this._refreshInterval = setInterval(() => {
751
+ if (this.activeTab === 'overview') {
752
+ this.loadStats();
753
+ }
754
+ }, 30000);
755
+ },
756
+
757
+ // --------------------------------------------------------
758
+ // Tab Switching
759
+ // --------------------------------------------------------
760
+ switchTab(tabId) {
761
+ this.activeTab = tabId;
762
+ if (tabId === 'overview') {
763
+ this.loadStats();
764
+ } else if (tabId === 'neurons') {
765
+ this.loadNeurons();
766
+ }
767
+ },
768
+
769
+ // --------------------------------------------------------
770
+ // API Helper
771
+ // --------------------------------------------------------
772
+ async api(method, path, body) {
773
+ const opts = {
774
+ method,
775
+ headers: { 'Content-Type': 'application/json' },
776
+ };
777
+ if (body) {
778
+ opts.body = JSON.stringify(body);
779
+ }
780
+ try {
781
+ const res = await fetch('/api/v1' + path, opts);
782
+ if (!res.ok) {
783
+ const errBody = await res.json().catch(() => ({}));
784
+ throw new Error(errBody.error || errBody.message || `HTTP ${res.status}`);
785
+ }
786
+ this.connected = true;
787
+ return await res.json();
788
+ } catch (err) {
789
+ if (err.message === 'Failed to fetch' || err.message.includes('NetworkError')) {
790
+ this.connected = false;
791
+ }
792
+ throw err;
793
+ }
794
+ },
795
+
796
+ // --------------------------------------------------------
797
+ // Health & Stats
798
+ // --------------------------------------------------------
799
+ async checkHealth() {
800
+ try {
801
+ await this.api('GET', '/health');
802
+ this.connected = true;
803
+ } catch {
804
+ this.connected = false;
805
+ }
806
+ },
807
+
808
+ async loadStats() {
809
+ try {
810
+ this.stats = await this.api('GET', '/stats');
811
+ this.lastRefresh = new Date().toLocaleTimeString();
812
+ } catch {
813
+ // silent
814
+ }
815
+ },
816
+
817
+ // --------------------------------------------------------
818
+ // Neurons
819
+ // --------------------------------------------------------
820
+ async loadNeurons() {
821
+ this.neuronsLoading = true;
822
+ try {
823
+ const offset = this.neuronPage * this.neuronLimit;
824
+ const data = await this.api('GET', `/neurons?limit=${this.neuronLimit}&offset=${offset}`);
825
+ this.neurons = data.neurons || [];
826
+ this.neuronTotal = data.total || 0;
827
+ } catch {
828
+ this.neurons = [];
829
+ } finally {
830
+ this.neuronsLoading = false;
831
+ }
832
+ },
833
+
834
+ async selectNeuron(neuron) {
835
+ this.confirmDelete = false;
836
+ this.selectedContent = '';
837
+ this.contentLoading = true;
838
+ try {
839
+ const detail = await this.api('GET', `/neurons/${neuron.id}`);
840
+ this.selectedNeuron = detail;
841
+ } catch {
842
+ this.selectedNeuron = neuron;
843
+ }
844
+ try {
845
+ const contentData = await this.api('GET', `/neurons/${neuron.id}/content`);
846
+ this.selectedContent = contentData.content || '';
847
+ } catch {
848
+ this.selectedContent = '';
849
+ } finally {
850
+ this.contentLoading = false;
851
+ }
852
+ },
853
+
854
+ async deleteNeuron(id) {
855
+ this.deleting = true;
856
+ try {
857
+ await this.api('DELETE', `/neurons/${id}`);
858
+ this.selectedNeuron = null;
859
+ this.selectedContent = '';
860
+ this.confirmDelete = false;
861
+ await this.loadNeurons();
862
+ } catch (err) {
863
+ alert('Delete failed: ' + err.message);
864
+ } finally {
865
+ this.deleting = false;
866
+ }
867
+ },
868
+
869
+ prevPage() {
870
+ if (this.neuronPage > 0) {
871
+ this.neuronPage--;
872
+ this.loadNeurons();
873
+ }
874
+ },
875
+
876
+ nextPage() {
877
+ if ((this.neuronPage + 1) * this.neuronLimit < this.neuronTotal) {
878
+ this.neuronPage++;
879
+ this.loadNeurons();
880
+ }
881
+ },
882
+
883
+ paginationLabel() {
884
+ const start = this.neuronPage * this.neuronLimit + 1;
885
+ const end = Math.min((this.neuronPage + 1) * this.neuronLimit, this.neuronTotal);
886
+ return `Showing ${start}-${end} of ${this.neuronTotal}`;
887
+ },
888
+
889
+ // --------------------------------------------------------
890
+ // Search
891
+ // --------------------------------------------------------
892
+ async doSearch() {
893
+ if (!this.searchQuery.trim()) return;
894
+ this.searching = true;
895
+ this.searchResults = [];
896
+ this.searchError = null;
897
+ this.searchPerformed = false;
898
+ try {
899
+ const data = await this.api('POST', '/search', {
900
+ query: this.searchQuery,
901
+ k: this.searchK,
902
+ includeContent: this.searchIncludeContent,
903
+ });
904
+ this.searchResults = data.results || [];
905
+ this.searchPerformed = true;
906
+ } catch (err) {
907
+ this.searchError = err.message;
908
+ this.searchPerformed = true;
909
+ } finally {
910
+ this.searching = false;
911
+ }
912
+ },
913
+
914
+ // --------------------------------------------------------
915
+ // Ingest
916
+ // --------------------------------------------------------
917
+ async doIngest() {
918
+ if (!this.ingestText.trim()) return;
919
+ this.ingesting = true;
920
+ this.ingestResult = null;
921
+ this.ingestError = null;
922
+ try {
923
+ const tags = this.ingestTags
924
+ .split(',')
925
+ .map(t => t.trim())
926
+ .filter(t => t.length > 0);
927
+ const data = await this.api('POST', '/ingest', {
928
+ text: this.ingestText,
929
+ sourceType: this.ingestSourceType || 'dashboard',
930
+ tags: tags.length > 0 ? tags : undefined,
931
+ });
932
+ this.ingestResult = data;
933
+ this.ingestText = '';
934
+ this.ingestTags = '';
935
+ } catch (err) {
936
+ this.ingestError = err.message;
937
+ } finally {
938
+ this.ingesting = false;
939
+ }
940
+ },
941
+
942
+ // --------------------------------------------------------
943
+ // Verify
944
+ // --------------------------------------------------------
945
+ async doVerifyAll() {
946
+ this.verifying = true;
947
+ this.verifyAllResult = null;
948
+ try {
949
+ this.verifyAllResult = await this.api('GET', '/verify');
950
+ } catch (err) {
951
+ this.verifyAllResult = { total: 0, valid: 0, invalid: 0, results: [], error: err.message };
952
+ } finally {
953
+ this.verifying = false;
954
+ }
955
+ },
956
+
957
+ async doVerifySingle() {
958
+ if (!this.verifyNeuronId.trim()) return;
959
+ this.verifySingleLoading = true;
960
+ this.verifySingleResult = null;
961
+ this.verifySingleError = null;
962
+ try {
963
+ this.verifySingleResult = await this.api('GET', `/verify/${this.verifyNeuronId.trim()}`);
964
+ } catch (err) {
965
+ this.verifySingleError = err.message;
966
+ } finally {
967
+ this.verifySingleLoading = false;
968
+ }
969
+ },
970
+
971
+ // --------------------------------------------------------
972
+ // Formatters
973
+ // --------------------------------------------------------
974
+ formatNumber(val) {
975
+ if (val === null || val === undefined || val === '--') return '--';
976
+ return Number(val).toLocaleString();
977
+ },
978
+
979
+ formatBytes(bytes) {
980
+ if (bytes === null || bytes === undefined) return '--';
981
+ if (bytes === 0) return '0 B';
982
+ const units = ['B', 'KB', 'MB', 'GB', 'TB'];
983
+ const i = Math.floor(Math.log(bytes) / Math.log(1024));
984
+ const val = bytes / Math.pow(1024, i);
985
+ return val.toFixed(i === 0 ? 0 : 1) + ' ' + units[i];
986
+ },
987
+
988
+ formatDate(dateStr) {
989
+ if (!dateStr) return '--';
990
+ try {
991
+ const d = new Date(dateStr);
992
+ return d.toLocaleDateString() + ' ' + d.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
993
+ } catch {
994
+ return dateStr;
995
+ }
996
+ },
997
+ };
998
+ }
999
+ </script>
1000
+
1001
+ </body>
1002
+ </html>
@@ -1 +1 @@
1
- {"version":3,"file":"cli-server.d.ts","sourceRoot":"","sources":["../../../src/api/cli-server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAgB,EAAE,OAAO,EAAmC,MAAM,SAAS,CAAC;AA+B5E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,GAAG,CAAU;IACrB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAsB;IAGvC,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,YAAY,CAAgB;IAGpC,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAc;IAGhC,OAAO,CAAC,gBAAgB,CAAoB;IAC5C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,aAAa,CAAuB;IAE5C,OAAO,CAAC,WAAW,CAAkB;gBAEzB,OAAO,GAAE,mBAAwB;IAmB7C;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2E3B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB3B;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACH,OAAO,CAAC,WAAW;IA4YnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAK1B;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CAI7B"}
1
+ {"version":3,"file":"cli-server.d.ts","sourceRoot":"","sources":["../../../src/api/cli-server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAgB,EAAE,OAAO,EAAmC,MAAM,SAAS,CAAC;AA+B5E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,GAAG,CAAU;IACrB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAsB;IAGvC,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,YAAY,CAAgB;IAGpC,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAc;IAGhC,OAAO,CAAC,gBAAgB,CAAoB;IAC5C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,aAAa,CAAuB;IAE5C,OAAO,CAAC,WAAW,CAAkB;gBAEzB,OAAO,GAAE,mBAAwB;IAmB7C;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2E3B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB3B;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACH,OAAO,CAAC,WAAW;IA4YnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAK1B;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CAI7B"}
@@ -540,7 +540,8 @@ export class CLIDashboardServer {
540
540
  * Serve the dashboard-lite static files and configure SPA fallback.
541
541
  */
542
542
  setupStaticFiles() {
543
- const dashboardPath = path.join(__dirname, '../../dashboard-lite');
543
+ // From dist/src/api/ go up 3 levels to package root
544
+ const dashboardPath = path.join(__dirname, '../../../dashboard-lite');
544
545
  this.app.use(express.static(dashboardPath));
545
546
  // SPA fallback: non-API routes serve index.html
546
547
  this.app.get('*', (req, res, next) => {
@@ -1 +1 @@
1
- {"version":3,"file":"cli-server.js","sourceRoot":"","sources":["../../../src/api/cli-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-server.js","sourceRoot":"","sources":["../../../src/api/cli-server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ninebix/nmt-system",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Neuron Merkle Tree - Verifiable Semantic Knowledge Graph System",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
@@ -10,6 +10,7 @@
10
10
  },
11
11
  "files": [
12
12
  "dist",
13
+ "dashboard-lite",
13
14
  "README.md",
14
15
  "LICENSE"
15
16
  ],