@echomem/mcp 1.4.8 → 1.4.10

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 (64) hide show
  1. package/README.md +23 -3
  2. package/assets/canonical-scorer/README.md +18 -0
  3. package/assets/canonical-scorer/analyze-10-problems.mjs +857 -0
  4. package/assets/canonical-scorer/build-session-waste-dashboard.mjs +1628 -0
  5. package/assets/canonical-scorer/golden_anchors.mjs +83 -0
  6. package/assets/canonical-scorer/optimizable_detail.mjs +633 -0
  7. package/assets/hud/github.svg +1 -0
  8. package/dist/city/README.md +9 -0
  9. package/dist/city/echo-ai-city-only.html +1067 -107
  10. package/dist/codex-session-files.js +283 -0
  11. package/dist/codex-sync.js +7 -2
  12. package/dist/context-analysis/canonical-golden.js +47 -0
  13. package/dist/context-analysis/claude-canonical-adapter.js +315 -0
  14. package/dist/context-analysis/claude-native-canonical.js +1216 -0
  15. package/dist/context-analysis/vendored-canonical.js +793 -0
  16. package/dist/context-analysis/workspace-report.js +1838 -0
  17. package/dist/context-metrics/calculate.js +43 -0
  18. package/dist/context-metrics/estimator.js +45 -0
  19. package/dist/context-metrics/ledger.js +507 -0
  20. package/dist/context-metrics/model-limits.js +26 -0
  21. package/dist/context-metrics/parse-claude.js +227 -0
  22. package/dist/context-metrics/parse-codex.js +276 -0
  23. package/dist/context-metrics/types.js +1 -0
  24. package/dist/forensics-10-problems.js +7 -6
  25. package/dist/forensics.js +863 -132
  26. package/dist/hud/adapters.js +77 -202
  27. package/dist/hud/cli.js +0 -0
  28. package/dist/hud/efficiency.js +447 -0
  29. package/dist/hud/electron-main.js +3 -2
  30. package/dist/hud/fs.js +14 -0
  31. package/dist/hud/metric.js +17 -102
  32. package/dist/hud/monitor.js +136 -28
  33. package/dist/hud/render.js +4 -3
  34. package/dist/hud/server.js +30 -0
  35. package/dist/hud/web.js +622 -353
  36. package/dist/index.js +7 -3
  37. package/dist/local-data-paths.js +87 -0
  38. package/dist/migrate.js +37 -29
  39. package/dist/report.js +101 -40
  40. package/dist/setup-page/client-core.js +475 -0
  41. package/dist/setup-page/client-extraction.js +550 -0
  42. package/dist/setup-page/client-lifecycle.js +116 -0
  43. package/dist/setup-page/client-report-audit.js +818 -0
  44. package/dist/setup-page/client-report-city.js +204 -0
  45. package/dist/setup-page/client-report.js +6 -0
  46. package/dist/setup-page/client.js +15 -0
  47. package/dist/setup-page/document.js +37 -0
  48. package/dist/setup-page/styles-city-report.js +880 -0
  49. package/dist/setup-page/styles-context-audit.js +470 -0
  50. package/dist/setup-page/styles-extraction.js +821 -0
  51. package/dist/setup-page/styles-foundation.js +231 -0
  52. package/dist/setup-page/styles.js +11 -0
  53. package/dist/setup-page.js +15 -2538
  54. package/dist/setup-preview.js +245 -0
  55. package/dist/setup.js +456 -44
  56. package/package.json +8 -7
  57. package/templates/echomem-recall.md +2 -2
  58. package/dist/city/10-problems-report.html +0 -649
  59. package/dist/city/_live.html +0 -37
  60. package/dist/city/_serve.mjs +0 -45
  61. package/dist/city/card-data.json +0 -15
  62. package/dist/city/city-data.json +0 -248
  63. package/dist/city/echo-ai-city-only.template.html +0 -1272
  64. package/dist/city/generate-echo-city-only.mjs +0 -112
@@ -1,37 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8" />
5
- <title>Echo Repo City — live</title>
6
- <style>
7
- html, body { margin: 0; height: 100%; background: #ffffff; overflow: hidden; }
8
- iframe { position: fixed; inset: 0; width: 100%; height: 100%; border: 0; display: block; }
9
- #status { position: fixed; left: 14px; bottom: 12px; color: #9aa3b2; z-index: 9;
10
- font: 12px/1.4 ui-monospace, "IBM Plex Mono", monospace; opacity: .7;
11
- letter-spacing: .04em; pointer-events: none; }
12
- #status b { color: #5b6677; font-weight: 600; }
13
- </style>
14
- </head>
15
- <body>
16
- <iframe id="f" src="echo-ai-city-only.html"></iframe>
17
- <div id="status">live · watching <b>echo-ai-city-only.html</b> · auto-reloads on change</div>
18
- <script>
19
- const f = document.getElementById("f");
20
- const s = document.getElementById("status");
21
- let last = null;
22
- async function poll() {
23
- try {
24
- const r = await fetch("echo-ai-city-only.html", { method: "HEAD", cache: "no-store" });
25
- const lm = r.headers.get("last-modified");
26
- if (last && lm !== last) {
27
- f.src = "echo-ai-city-only.html?" + Date.now();
28
- s.innerHTML = "live · updated <b>" + new Date().toLocaleTimeString() + "</b>";
29
- }
30
- last = lm;
31
- } catch (e) {}
32
- }
33
- setInterval(poll, 1000);
34
- poll();
35
- </script>
36
- </body>
37
- </html>
@@ -1,45 +0,0 @@
1
- import http from "node:http";
2
- import fs from "node:fs";
3
- import path from "node:path";
4
-
5
- const root = path.resolve("artifacts");
6
- const PORT = 8787;
7
- const types = {
8
- ".html": "text/html; charset=utf-8",
9
- ".png": "image/png",
10
- ".json": "application/json",
11
- ".css": "text/css",
12
- ".js": "text/javascript",
13
- ".svg": "image/svg+xml",
14
- ".wasm": "application/wasm",
15
- ".riv": "application/octet-stream",
16
- };
17
-
18
- http
19
- .createServer((req, res) => {
20
- let p = decodeURIComponent(req.url.split("?")[0]);
21
- if (p === "/") p = "/_live.html";
22
- const f = path.join(root, p);
23
- if (!f.startsWith(root)) {
24
- res.writeHead(403);
25
- return res.end();
26
- }
27
- fs.stat(f, (err, st) => {
28
- if (err || !st.isFile()) {
29
- res.writeHead(404);
30
- return res.end("not found");
31
- }
32
- const headers = {
33
- "Last-Modified": st.mtime.toUTCString(),
34
- "Cache-Control": "no-store",
35
- };
36
- if (req.method === "HEAD") {
37
- res.writeHead(200, headers);
38
- return res.end();
39
- }
40
- headers["Content-Type"] = types[path.extname(f)] || "application/octet-stream";
41
- res.writeHead(200, headers);
42
- fs.createReadStream(f).pipe(res);
43
- });
44
- })
45
- .listen(PORT, () => console.log(`serving ${root} on http://localhost:${PORT}`));
@@ -1,15 +0,0 @@
1
- {
2
- "_note": "Frozen snapshot for the Repo City share card (Kobe). Only the keys generate-echo-city-only.mjs actually renders remain — dead fields were pruned in the Carmack cleanup. For multi-user / the setup flow these must be DERIVED from buildForensicReport(), not frozen — see docs/repo-city-setup-integration-plan.md.",
3
- "computeCost": "$13,689",
4
- "attentionHours": 191.1,
5
- "split": { "codexPct": 26, "claudePct": 74 },
6
- "dirty": { "pct": "85.0" },
7
- "persona": {
8
- "primary": "bossy",
9
- "rank": "the architect",
10
- "rhythm": "marathoner",
11
- "sides": ["loopy", "lusty", "maxxy"],
12
- "verdict": "you don't write code, you run a daycare for <b>163</b> sleepless interns who reread the same file into amnesia and bill every typo to Opus — <b>$13,689</b> later, you wanted a helper and became a dad. 🗿"
13
- },
14
- "counterfactual": { "reachDate": "Jun 2", "insteadOf": "Jun 20", "daysEarlier": 18 }
15
- }
@@ -1,248 +0,0 @@
1
- {
2
- "globals": {
3
- "totalTokens": 7559773827,
4
- "sessions": 170,
5
- "repoCount": 21,
6
- "activeDays": 55,
7
- "codexTokens": 1935230820,
8
- "claudeTokens": 5624543007,
9
- "codexSharePct": 26,
10
- "claudeSharePct": 74,
11
- "cleanlinessScore": 15,
12
- "staleReadSharePct": 85,
13
- "costTotal": 13907.29
14
- },
15
- "repos": [
16
- {
17
- "name": "WebPageReactVersion",
18
- "sessions": 74,
19
- "tokens": 3436946364,
20
- "attentionHours": 92.8,
21
- "reads": 6411,
22
- "staleRereads": 5426,
23
- "codexPct": 31,
24
- "claudePct": 69,
25
- "dirtyPct": 85
26
- },
27
- {
28
- "name": "EchoMem-Chrome",
29
- "sessions": 38,
30
- "tokens": 2863590896,
31
- "attentionHours": 67.2,
32
- "reads": 3375,
33
- "staleRereads": 2632,
34
- "codexPct": 19,
35
- "claudePct": 81,
36
- "dirtyPct": 78
37
- },
38
- {
39
- "name": "echo-design-system",
40
- "sessions": 29,
41
- "tokens": 382642012,
42
- "attentionHours": 21.2,
43
- "reads": 814,
44
- "staleRereads": 728,
45
- "codexPct": 44,
46
- "claudePct": 56,
47
- "dirtyPct": 89
48
- },
49
- {
50
- "name": "Kobe Life",
51
- "sessions": 12,
52
- "tokens": 122566296,
53
- "attentionHours": 9.6,
54
- "reads": 158,
55
- "staleRereads": 125,
56
- "codexPct": 100,
57
- "claudePct": 0,
58
- "dirtyPct": 79
59
- },
60
- {
61
- "name": "DG-Web",
62
- "sessions": 4,
63
- "tokens": 253239297,
64
- "attentionHours": 6.8,
65
- "reads": 57,
66
- "staleRereads": 15,
67
- "codexPct": 0,
68
- "claudePct": 100,
69
- "dirtyPct": 26
70
- },
71
- {
72
- "name": "sleepy-merkle-3d0470",
73
- "sessions": 1,
74
- "tokens": 307339018,
75
- "attentionHours": 3.8,
76
- "reads": 75,
77
- "staleRereads": 23,
78
- "codexPct": 0,
79
- "claudePct": 100,
80
- "dirtyPct": 31
81
- },
82
- {
83
- "name": "public",
84
- "sessions": 1,
85
- "tokens": 102828178,
86
- "attentionHours": 1.9,
87
- "reads": 7,
88
- "staleRereads": 3,
89
- "codexPct": 0,
90
- "claudePct": 100,
91
- "dirtyPct": 43
92
- },
93
- {
94
- "name": "EchoMemory_log",
95
- "sessions": 8,
96
- "tokens": 43937440,
97
- "attentionHours": 1.8,
98
- "reads": 349,
99
- "staleRereads": 289,
100
- "codexPct": 63,
101
- "claudePct": 37,
102
- "dirtyPct": 83
103
- },
104
- {
105
- "name": "Daimler Engineering.",
106
- "sessions": 2,
107
- "tokens": 4439902,
108
- "attentionHours": 0.2,
109
- "reads": 13,
110
- "staleRereads": 5,
111
- "codexPct": 100,
112
- "claudePct": 0,
113
- "dirtyPct": 38
114
- },
115
- {
116
- "name": "brands",
117
- "sessions": 1,
118
- "tokens": 8010799,
119
- "attentionHours": 0.1,
120
- "reads": 3,
121
- "staleRereads": 0,
122
- "codexPct": 0,
123
- "claudePct": 100,
124
- "dirtyPct": 0
125
- },
126
- {
127
- "name": "remote",
128
- "sessions": 2,
129
- "tokens": 1357359,
130
- "attentionHours": 0.1,
131
- "reads": 3,
132
- "staleRereads": 0,
133
- "codexPct": 0,
134
- "claudePct": 100,
135
- "dirtyPct": 0
136
- },
137
- {
138
- "name": "production-prompt",
139
- "sessions": 1,
140
- "tokens": 11092185,
141
- "attentionHours": 0,
142
- "reads": 0,
143
- "staleRereads": 0,
144
- "codexPct": 0,
145
- "claudePct": 100,
146
- "dirtyPct": 0
147
- },
148
- {
149
- "name": "components",
150
- "sessions": 1,
151
- "tokens": 7978639,
152
- "attentionHours": 0,
153
- "reads": 2,
154
- "staleRereads": 0,
155
- "codexPct": 0,
156
- "claudePct": 100,
157
- "dirtyPct": 0
158
- },
159
- {
160
- "name": "dist",
161
- "sessions": 2,
162
- "tokens": 4550877,
163
- "attentionHours": 0,
164
- "reads": 0,
165
- "staleRereads": 0,
166
- "codexPct": 0,
167
- "claudePct": 100,
168
- "dirtyPct": 0
169
- },
170
- {
171
- "name": "assets",
172
- "sessions": 1,
173
- "tokens": 3490780,
174
- "attentionHours": 0,
175
- "reads": 0,
176
- "staleRereads": 0,
177
- "codexPct": 0,
178
- "claudePct": 100,
179
- "dirtyPct": 0
180
- },
181
- {
182
- "name": "src",
183
- "sessions": 1,
184
- "tokens": 2594990,
185
- "attentionHours": 0,
186
- "reads": 1,
187
- "staleRereads": 0,
188
- "codexPct": 0,
189
- "claudePct": 100,
190
- "dirtyPct": 0
191
- },
192
- {
193
- "name": "styles",
194
- "sessions": 1,
195
- "tokens": 1587154,
196
- "attentionHours": 0,
197
- "reads": 0,
198
- "staleRereads": 0,
199
- "codexPct": 0,
200
- "claudePct": 100,
201
- "dirtyPct": 0
202
- },
203
- {
204
- "name": "memory_log_ui",
205
- "sessions": 1,
206
- "tokens": 1220676,
207
- "attentionHours": 0,
208
- "reads": 0,
209
- "staleRereads": 0,
210
- "codexPct": 0,
211
- "claudePct": 100,
212
- "dirtyPct": 0
213
- },
214
- {
215
- "name": "Atlas",
216
- "sessions": 1,
217
- "tokens": 197129,
218
- "attentionHours": 0,
219
- "reads": 0,
220
- "staleRereads": 0,
221
- "codexPct": 100,
222
- "claudePct": 0,
223
- "dirtyPct": 0
224
- },
225
- {
226
- "name": "EchoMemory-Cloud-OpenClaw-Plugin",
227
- "sessions": 2,
228
- "tokens": 163836,
229
- "attentionHours": 0,
230
- "reads": 0,
231
- "staleRereads": 0,
232
- "codexPct": 100,
233
- "claudePct": 0,
234
- "dirtyPct": 0
235
- },
236
- {
237
- "name": "kobe",
238
- "sessions": 1,
239
- "tokens": 0,
240
- "attentionHours": 0,
241
- "reads": 0,
242
- "staleRereads": 0,
243
- "codexPct": 0,
244
- "claudePct": 0,
245
- "dirtyPct": 0
246
- }
247
- ]
248
- }