@joshuaswarren/openclaw-engram 9.2.7 → 9.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/access-cli.js +1 -222
  2. package/dist/index.js +3 -15172
  3. package/openclaw.plugin.json +2 -2
  4. package/package.json +33 -82
  5. package/LICENSE +0 -21
  6. package/README.md +0 -656
  7. package/dist/access-cli.js.map +0 -1
  8. package/dist/admin-console/public/app.js +0 -721
  9. package/dist/admin-console/public/index.html +0 -470
  10. package/dist/calibration-5ZKC4PGR.js +0 -236
  11. package/dist/calibration-5ZKC4PGR.js.map +0 -1
  12. package/dist/causal-chain-NTQJJLVN.js +0 -23
  13. package/dist/causal-chain-NTQJJLVN.js.map +0 -1
  14. package/dist/causal-consolidation-K2R5TEG7.js +0 -206
  15. package/dist/causal-consolidation-K2R5TEG7.js.map +0 -1
  16. package/dist/causal-retrieval-BMM45BSR.js +0 -183
  17. package/dist/causal-retrieval-BMM45BSR.js.map +0 -1
  18. package/dist/causal-trajectory-graph-RXHMHGG3.js +0 -60
  19. package/dist/causal-trajectory-graph-RXHMHGG3.js.map +0 -1
  20. package/dist/chunk-6KX4XLQJ.js +0 -343
  21. package/dist/chunk-6KX4XLQJ.js.map +0 -1
  22. package/dist/chunk-DEIBZP3O.js +0 -49
  23. package/dist/chunk-DEIBZP3O.js.map +0 -1
  24. package/dist/chunk-GKUNOUQI.js +0 -562
  25. package/dist/chunk-GKUNOUQI.js.map +0 -1
  26. package/dist/chunk-IMMYYNXG.js +0 -160
  27. package/dist/chunk-IMMYYNXG.js.map +0 -1
  28. package/dist/chunk-MKM2BCQH.js +0 -436
  29. package/dist/chunk-MKM2BCQH.js.map +0 -1
  30. package/dist/chunk-NEJTYWAH.js +0 -280
  31. package/dist/chunk-NEJTYWAH.js.map +0 -1
  32. package/dist/chunk-OVWP47NO.js +0 -1849
  33. package/dist/chunk-OVWP47NO.js.map +0 -1
  34. package/dist/chunk-PKKCGNF2.js +0 -15
  35. package/dist/chunk-PKKCGNF2.js.map +0 -1
  36. package/dist/chunk-SSIIJJKA.js +0 -44
  37. package/dist/chunk-SSIIJJKA.js.map +0 -1
  38. package/dist/chunk-TUH5NNZ2.js +0 -4244
  39. package/dist/chunk-TUH5NNZ2.js.map +0 -1
  40. package/dist/chunk-V2QDCXYP.js +0 -33700
  41. package/dist/chunk-V2QDCXYP.js.map +0 -1
  42. package/dist/engine-GUURUH4W.js +0 -12
  43. package/dist/engine-GUURUH4W.js.map +0 -1
  44. package/dist/fallback-llm-KSO34MOM.js +0 -9
  45. package/dist/fallback-llm-KSO34MOM.js.map +0 -1
  46. package/dist/index.js.map +0 -1
  47. package/dist/legacy-hook-compat-722BG5XG.js +0 -36
  48. package/dist/legacy-hook-compat-722BG5XG.js.map +0 -1
  49. package/dist/logger-KPTKTANX.js +0 -10
  50. package/dist/logger-KPTKTANX.js.map +0 -1
  51. package/dist/storage-LOT4RKCT.js +0 -17
  52. package/dist/storage-LOT4RKCT.js.map +0 -1
@@ -1,470 +0,0 @@
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" />
6
- <title>Engram Admin Console</title>
7
- <style>
8
- :root {
9
- color-scheme: light;
10
- --bg: #f4efe6;
11
- --surface: #fbf8f2;
12
- --surface-strong: #fffdf8;
13
- --ink: #1b1d22;
14
- --muted: #646b74;
15
- --line: #d7cfc0;
16
- --accent: #0f6b63;
17
- --accent-ink: #e7fffb;
18
- --warn: #8b3a22;
19
- --ok: #22543d;
20
- --shadow: 0 18px 42px rgba(40, 33, 18, 0.08);
21
- }
22
- * {
23
- box-sizing: border-box;
24
- }
25
- body {
26
- margin: 0;
27
- font-family: "Avenir Next", "Segoe UI", sans-serif;
28
- color: var(--ink);
29
- background:
30
- radial-gradient(circle at top left, rgba(15, 107, 99, 0.12), transparent 34%),
31
- radial-gradient(circle at top right, rgba(139, 58, 34, 0.1), transparent 28%),
32
- linear-gradient(180deg, #f9f4ea 0%, var(--bg) 100%);
33
- }
34
- main {
35
- max-width: 1440px;
36
- margin: 0 auto;
37
- padding: 28px 20px 48px;
38
- }
39
- header {
40
- display: grid;
41
- gap: 14px;
42
- margin-bottom: 18px;
43
- }
44
- h1 {
45
- margin: 0;
46
- font-size: clamp(2rem, 3vw, 3.25rem);
47
- line-height: 0.95;
48
- letter-spacing: -0.03em;
49
- }
50
- .subtitle {
51
- max-width: 820px;
52
- color: var(--muted);
53
- font-size: 0.98rem;
54
- }
55
- .auth-bar,
56
- .grid,
57
- .subgrid {
58
- display: grid;
59
- gap: 16px;
60
- }
61
- .auth-bar {
62
- grid-template-columns: 1.3fr 1fr auto;
63
- align-items: center;
64
- }
65
- .grid {
66
- grid-template-columns: 1.2fr 0.8fr;
67
- }
68
- .card {
69
- background: linear-gradient(180deg, var(--surface-strong) 0%, var(--surface) 100%);
70
- border: 1px solid var(--line);
71
- border-radius: 18px;
72
- box-shadow: var(--shadow);
73
- padding: 18px;
74
- }
75
- .card h2,
76
- .card h3 {
77
- margin: 0 0 10px;
78
- font-size: 1rem;
79
- letter-spacing: 0.02em;
80
- text-transform: uppercase;
81
- }
82
- label {
83
- display: grid;
84
- gap: 6px;
85
- font-size: 0.82rem;
86
- text-transform: uppercase;
87
- letter-spacing: 0.06em;
88
- color: var(--muted);
89
- }
90
- input,
91
- select,
92
- textarea,
93
- button {
94
- font: inherit;
95
- }
96
- input,
97
- select,
98
- textarea {
99
- width: 100%;
100
- padding: 12px 14px;
101
- border-radius: 12px;
102
- border: 1px solid var(--line);
103
- background: #fffefb;
104
- color: var(--ink);
105
- }
106
- input[readonly] {
107
- background: #f7f2ea;
108
- }
109
- textarea {
110
- min-height: 140px;
111
- resize: vertical;
112
- }
113
- button {
114
- border: 0;
115
- border-radius: 999px;
116
- padding: 11px 16px;
117
- background: var(--ink);
118
- color: white;
119
- cursor: pointer;
120
- }
121
- button.secondary {
122
- background: #ede6d9;
123
- color: var(--ink);
124
- }
125
- button.accent {
126
- background: var(--accent);
127
- color: var(--accent-ink);
128
- }
129
- button.warn {
130
- background: var(--warn);
131
- }
132
- button:disabled {
133
- cursor: not-allowed;
134
- opacity: 0.55;
135
- }
136
- .toolbar {
137
- display: flex;
138
- gap: 10px;
139
- flex-wrap: wrap;
140
- align-items: end;
141
- }
142
- .toolbar > label {
143
- flex: 1 1 180px;
144
- }
145
- .pager {
146
- justify-content: space-between;
147
- }
148
- .list {
149
- display: grid;
150
- gap: 10px;
151
- max-height: 460px;
152
- overflow: auto;
153
- }
154
- .item {
155
- border: 1px solid var(--line);
156
- border-radius: 14px;
157
- padding: 14px;
158
- background: rgba(255, 255, 255, 0.74);
159
- }
160
- .item button {
161
- margin-top: 10px;
162
- }
163
- .meta,
164
- .pill-row {
165
- display: flex;
166
- gap: 8px;
167
- flex-wrap: wrap;
168
- }
169
- .pill {
170
- border-radius: 999px;
171
- border: 1px solid var(--line);
172
- background: #fff;
173
- padding: 4px 9px;
174
- font-size: 0.78rem;
175
- color: var(--muted);
176
- }
177
- pre {
178
- margin: 0;
179
- white-space: pre-wrap;
180
- word-break: break-word;
181
- font-family: "SF Mono", "Monaco", monospace;
182
- font-size: 0.82rem;
183
- line-height: 1.45;
184
- }
185
- .mono-box {
186
- border: 1px solid var(--line);
187
- border-radius: 14px;
188
- background: #fffdf9;
189
- padding: 14px;
190
- max-height: 360px;
191
- overflow: auto;
192
- }
193
- .status {
194
- font-size: 0.84rem;
195
- color: var(--muted);
196
- }
197
- .callout {
198
- border: 1px dashed var(--line);
199
- border-radius: 14px;
200
- padding: 12px 14px;
201
- background: rgba(255, 255, 255, 0.62);
202
- color: var(--muted);
203
- font-size: 0.88rem;
204
- line-height: 1.45;
205
- }
206
- .status.ok {
207
- color: var(--ok);
208
- }
209
- .status.error {
210
- color: var(--warn);
211
- }
212
- .quality-grid {
213
- display: grid;
214
- gap: 12px;
215
- grid-template-columns: repeat(2, minmax(0, 1fr));
216
- margin-top: 12px;
217
- }
218
- .quality-stat {
219
- border: 1px solid var(--line);
220
- border-radius: 14px;
221
- background: rgba(255, 255, 255, 0.74);
222
- padding: 14px;
223
- }
224
- .quality-stat strong {
225
- display: block;
226
- font-size: 1.5rem;
227
- line-height: 1;
228
- margin-bottom: 4px;
229
- }
230
- .subgrid {
231
- grid-template-columns: repeat(2, minmax(0, 1fr));
232
- }
233
- @media (max-width: 1080px) {
234
- .grid,
235
- .subgrid,
236
- .auth-bar,
237
- .quality-grid {
238
- grid-template-columns: 1fr;
239
- }
240
- }
241
- </style>
242
- </head>
243
- <body>
244
- <main>
245
- <header>
246
- <h1>Engram Admin Console</h1>
247
- <div class="subtitle">
248
- Local operator surface for recall inspection, quality review, memory browsing, and maintenance status.
249
- The UI shell is static; every data fetch and operator action still goes through the loopback bearer-token API.
250
- </div>
251
- </header>
252
-
253
- <section class="card auth-bar">
254
- <label>
255
- Bearer Token
256
- <input id="tokenInput" type="password" placeholder="Paste the Engram access token" autocomplete="off" />
257
- </label>
258
- <div class="status" id="authStatus">Waiting for token.</div>
259
- <div class="toolbar">
260
- <button class="accent" id="connectButton">Connect</button>
261
- <button class="secondary" id="clearTokenButton">Clear</button>
262
- </div>
263
- </section>
264
-
265
- <div class="grid">
266
- <section class="card">
267
- <h2>Memory Browser</h2>
268
- <div class="toolbar">
269
- <label>
270
- Query
271
- <input id="memoryQuery" type="text" placeholder="Search id, path, tags, or content" />
272
- </label>
273
- <label>
274
- Status
275
- <select id="memoryStatus">
276
- <option value="">All</option>
277
- <option value="active">active</option>
278
- <option value="pending_review">pending_review</option>
279
- <option value="quarantined">quarantined</option>
280
- <option value="rejected">rejected</option>
281
- <option value="superseded">superseded</option>
282
- <option value="archived">archived</option>
283
- </select>
284
- </label>
285
- <label>
286
- Category
287
- <input id="memoryCategory" type="text" placeholder="fact, decision, preference..." />
288
- </label>
289
- <label>
290
- Sort
291
- <select id="memorySort">
292
- <option value="updated_desc">updated desc</option>
293
- <option value="updated_asc">updated asc</option>
294
- <option value="created_desc">created desc</option>
295
- <option value="created_asc">created asc</option>
296
- </select>
297
- </label>
298
- <label>
299
- Page Size
300
- <select id="memoryPageSize">
301
- <option value="10">10</option>
302
- <option value="25" selected>25</option>
303
- <option value="50">50</option>
304
- </select>
305
- </label>
306
- <button id="searchMemoriesButton">Search</button>
307
- </div>
308
- <div class="toolbar pager" style="margin-top: 12px;">
309
- <div class="status" id="memoryBrowserStatus">No search run yet.</div>
310
- <div class="toolbar">
311
- <button class="secondary" id="memoryPrevButton">Previous</button>
312
- <div class="status" id="memoryPageStatus">Page 1</div>
313
- <button class="secondary" id="memoryNextButton">Next</button>
314
- </div>
315
- </div>
316
- <div class="list" id="memoryList"></div>
317
- </section>
318
-
319
- <section class="card">
320
- <h2>Memory Detail</h2>
321
- <div class="status" id="memoryDetailStatus">Select a memory from the browser or review queue.</div>
322
- <div class="toolbar" style="margin-top: 12px;">
323
- <label style="flex: 1;">
324
- Raw Path
325
- <input
326
- id="memoryRawPath"
327
- type="text"
328
- readonly
329
- value=""
330
- placeholder="No memory selected."
331
- />
332
- </label>
333
- <button class="secondary" id="copyMemoryPathButton">Copy Path</button>
334
- </div>
335
- <div class="pill-row" id="memoryDetailMeta" style="margin-top: 12px;"></div>
336
- <div class="subgrid" style="margin-top: 12px;">
337
- <div class="mono-box"><pre id="memoryContent">No memory selected.</pre></div>
338
- <div class="mono-box"><pre id="memoryTimeline">Timeline will appear here.</pre></div>
339
- </div>
340
- </section>
341
- </div>
342
-
343
- <div class="grid" style="margin-top: 16px;">
344
- <section class="card">
345
- <h2>Recall Debugger</h2>
346
- <div class="toolbar">
347
- <label style="flex: 1;">
348
- Query
349
- <input id="recallQuery" type="text" placeholder="Ask what the model would recall" />
350
- </label>
351
- <label>
352
- Session Key
353
- <input id="recallSessionKey" type="text" placeholder="console-session" />
354
- </label>
355
- <button id="runRecallButton">Run Recall</button>
356
- </div>
357
- <div class="status" id="recallStatus">No recall run yet.</div>
358
- <div class="subgrid" style="margin-top: 12px;">
359
- <div class="mono-box"><pre id="recallContext">Injected context will appear here.</pre></div>
360
- <div class="mono-box"><pre id="recallExplain">Recall snapshot will appear here.</pre></div>
361
- </div>
362
- </section>
363
-
364
- <section class="card">
365
- <h2>Quality Dashboard</h2>
366
- <div class="status" id="qualityStatus">Not loaded.</div>
367
- <div class="quality-grid" id="qualitySummary"></div>
368
- <div class="mono-box" style="margin-top: 12px;"><pre id="qualityJson">Quality summary will appear here.</pre></div>
369
- </section>
370
- </div>
371
-
372
- <div class="grid" style="margin-top: 16px;">
373
- <section class="card">
374
- <h2>Trust Zones</h2>
375
- <div class="callout">
376
- Demo data is never seeded automatically. Use the explicit seed action below only when you want a buyer-facing trust-zone walkthrough dataset.
377
- </div>
378
- <div class="toolbar" style="margin-top: 12px;">
379
- <label style="flex: 1;">
380
- Query
381
- <input id="trustZoneQuery" type="text" placeholder="Search summaries, tags, metadata, or entity refs" />
382
- </label>
383
- <label>
384
- Zone
385
- <select id="trustZoneZone">
386
- <option value="">All</option>
387
- <option value="quarantine">quarantine</option>
388
- <option value="working">working</option>
389
- <option value="trusted">trusted</option>
390
- </select>
391
- </label>
392
- <label>
393
- Source
394
- <select id="trustZoneSourceClass">
395
- <option value="">All</option>
396
- <option value="tool_output">tool_output</option>
397
- <option value="web_content">web_content</option>
398
- <option value="subagent_trace">subagent_trace</option>
399
- <option value="system_memory">system_memory</option>
400
- <option value="user_input">user_input</option>
401
- <option value="manual">manual</option>
402
- </select>
403
- </label>
404
- <label>
405
- Page Size
406
- <select id="trustZonePageSize">
407
- <option value="8">8</option>
408
- <option value="12" selected>12</option>
409
- <option value="20">20</option>
410
- </select>
411
- </label>
412
- <button id="refreshTrustZonesButton">Refresh</button>
413
- <button class="secondary" id="previewTrustZoneSeedButton">Preview Demo Seed</button>
414
- <button class="accent" id="seedTrustZoneDemoButton">Seed Demo Dataset</button>
415
- </div>
416
- <div class="toolbar pager" style="margin-top: 12px;">
417
- <div class="status" id="trustZoneStatus">No trust-zone data loaded yet.</div>
418
- <div class="toolbar">
419
- <button class="secondary" id="trustZonePrevButton">Previous</button>
420
- <div class="status" id="trustZonePageStatus">Page 1</div>
421
- <button class="secondary" id="trustZoneNextButton">Next</button>
422
- </div>
423
- </div>
424
- <div class="list" id="trustZoneList"></div>
425
- </section>
426
-
427
- <section class="card">
428
- <h2>Trust Zone Detail</h2>
429
- <div class="status" id="trustZoneDetailStatus">Select a trust-zone record to inspect raw lineage and promotion state.</div>
430
- <div class="mono-box" style="margin-top: 12px;"><pre id="trustZoneDetail">Trust-zone detail will appear here.</pre></div>
431
- <div class="mono-box" style="margin-top: 12px;"><pre id="trustZoneSeedResult">Demo seed previews and promotion results will appear here.</pre></div>
432
- </section>
433
- </div>
434
-
435
- <div class="grid" style="margin-top: 16px;">
436
- <section class="card">
437
- <h2>Review Queue</h2>
438
- <div class="toolbar">
439
- <button id="refreshQueueButton">Refresh Queue</button>
440
- </div>
441
- <div class="status" id="reviewQueueStatus">No governance review queue loaded yet.</div>
442
- <div class="list" id="reviewQueueList"></div>
443
- </section>
444
-
445
- <section class="card">
446
- <h2>Entity Explorer</h2>
447
- <div class="toolbar">
448
- <label style="flex: 1;">
449
- Query
450
- <input id="entityQuery" type="text" placeholder="Search entity names, aliases, or summaries" />
451
- </label>
452
- <button id="searchEntitiesButton">Search</button>
453
- </div>
454
- <div class="status" id="entityStatus">No entity search run yet.</div>
455
- <div class="subgrid" style="margin-top: 12px;">
456
- <div class="list" id="entityList"></div>
457
- <div class="mono-box"><pre id="entityDetail">Entity detail will appear here.</pre></div>
458
- </div>
459
- </section>
460
- </div>
461
-
462
- <section class="card" style="margin-top: 16px;">
463
- <h2>Maintenance</h2>
464
- <div class="status" id="maintenanceStatus">Not loaded.</div>
465
- <div class="mono-box"><pre id="maintenanceJson">Maintenance summary will appear here.</pre></div>
466
- </section>
467
- </main>
468
- <script src="/engram/ui/app.js"></script>
469
- </body>
470
- </html>