@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
@@ -0,0 +1,231 @@
1
+ // Generated from the prior inline setup page. This content is emitted into one browser IIFE/style tag.
2
+ export const SETUP_PAGE_STYLES_FOUNDATION = String.raw ` :root {
3
+ color-scheme: light;
4
+ --echo-ink-primary: #1a3a8f;
5
+ --echo-ink-accent: #4ecdc4;
6
+ --echo-ink-seal: #c7372f;
7
+ --echo-ink-text: #2b2a26;
8
+ --echo-ink-mute: #6b6f69;
9
+ --echo-ink-faint: #9a9b94;
10
+ --echo-paper-canvas: #faf7f0;
11
+ --echo-paper-white: #ffffff;
12
+ --echo-paper-soft: #f0efe9;
13
+ --echo-line-soft: #e4e0d6;
14
+ --echo-ink-accent-deep: #2f9d93;
15
+ --echo-night: #8b95cf;
16
+ --rdo-ease: cubic-bezier(0.2, 0.7, 0.2, 1);
17
+ --echo-font-brand: "Avenir Next", "Segoe UI", -apple-system, BlinkMacSystemFont, sans-serif;
18
+ --echo-font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
19
+ --echo-font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
20
+ --bg: var(--echo-paper-canvas);
21
+ --ink: var(--echo-ink-text);
22
+ --muted: var(--echo-ink-mute);
23
+ --line: var(--echo-line-soft);
24
+ --panel: var(--echo-paper-white);
25
+ --good-bg: #eff7ec;
26
+ --good-line: #cbd9c8;
27
+ --warn-bg: #fff6dc;
28
+ --warn-line: #edce79;
29
+ --error-bg: #fff1ef;
30
+ --error-line: #e7aaa2;
31
+ }
32
+ * { box-sizing: border-box; }
33
+ body {
34
+ margin: 0;
35
+ min-height: 100vh;
36
+ background:
37
+ linear-gradient(180deg, rgba(245, 241, 231, 0.92), rgba(255, 255, 255, 0.96)),
38
+ var(--echo-paper-canvas);
39
+ color: var(--echo-ink-text);
40
+ font-family: var(--echo-font-body);
41
+ letter-spacing: 0;
42
+ }
43
+ main {
44
+ width: min(1120px, 100%);
45
+ margin: 0 auto;
46
+ padding: clamp(18px, 4vw, 34px);
47
+ }
48
+ header {
49
+ display: flex;
50
+ align-items: center;
51
+ justify-content: space-between;
52
+ gap: 16px;
53
+ flex-wrap: wrap;
54
+ border-bottom: 1px solid var(--line);
55
+ padding-bottom: 18px;
56
+ margin-bottom: 24px;
57
+ }
58
+ .kicker {
59
+ margin: 0;
60
+ font-family: var(--echo-font-mono);
61
+ color: var(--echo-ink-mute);
62
+ font-size: 12px;
63
+ font-weight: 700;
64
+ letter-spacing: 0.08em;
65
+ text-transform: uppercase;
66
+ }
67
+ h1 {
68
+ margin: 4px 0 0;
69
+ font-family: var(--echo-font-brand);
70
+ font-size: clamp(30px, 5vw, 56px);
71
+ font-weight: 900;
72
+ line-height: 1;
73
+ letter-spacing: 0;
74
+ color: var(--echo-ink-primary);
75
+ }
76
+ h2 {
77
+ margin: 0;
78
+ font-family: var(--echo-font-brand);
79
+ font-size: 22px;
80
+ font-weight: 900;
81
+ line-height: 1.2;
82
+ letter-spacing: 0;
83
+ color: var(--echo-ink-primary);
84
+ }
85
+ .pill {
86
+ min-height: 36px;
87
+ display: inline-flex;
88
+ align-items: center;
89
+ gap: 8px;
90
+ border: 1px solid #c9ccc3;
91
+ border-radius: 999px;
92
+ padding: 0 14px;
93
+ background: var(--panel);
94
+ font-family: var(--echo-font-mono);
95
+ font-size: 12px;
96
+ font-weight: 700;
97
+ letter-spacing: 0.04em;
98
+ text-transform: uppercase;
99
+ white-space: nowrap;
100
+ }
101
+ .state {
102
+ min-height: 220px;
103
+ display: flex;
104
+ align-items: center;
105
+ justify-content: center;
106
+ color: var(--echo-ink-mute);
107
+ font-size: 16px;
108
+ text-align: center;
109
+ }
110
+ body.scanMode {
111
+ background: var(--echo-paper-canvas);
112
+ }
113
+ body.scanMode main {
114
+ width: 100%;
115
+ min-height: 100vh;
116
+ margin: 0;
117
+ padding: clamp(32px, 7vw, 96px);
118
+ display: grid;
119
+ place-items: center;
120
+ }
121
+ body.scanMode main > header {
122
+ display: none;
123
+ }
124
+ body.scanMode #app {
125
+ width: min(900px, 100%);
126
+ min-height: min(62vh, 620px);
127
+ display: grid;
128
+ place-items: center;
129
+ }
130
+ .scanLoader {
131
+ width: min(720px, 100%);
132
+ text-align: center;
133
+ }
134
+ .scanEyebrow {
135
+ margin: 0 0 22px;
136
+ color: var(--echo-ink-faint);
137
+ font-family: var(--echo-font-mono);
138
+ font-size: 14px;
139
+ font-weight: 700;
140
+ letter-spacing: 0.18em;
141
+ text-transform: uppercase;
142
+ }
143
+ .scanLoader h2 {
144
+ margin: 0;
145
+ color: var(--echo-ink-text);
146
+ font-size: clamp(42px, 5vw, 72px);
147
+ line-height: 1;
148
+ }
149
+ .scanProgress {
150
+ width: min(520px, 100%);
151
+ height: 9px;
152
+ margin: 42px auto 0;
153
+ overflow: hidden;
154
+ border-radius: 999px;
155
+ background: #e2e3e9;
156
+ }
157
+ .scanProgressFill {
158
+ display: block;
159
+ height: 100%;
160
+ min-width: 10px;
161
+ border-radius: inherit;
162
+ background: var(--echo-ink-primary);
163
+ transition: width 320ms ease;
164
+ }
165
+ .scanCaption {
166
+ margin: 20px 0 0;
167
+ color: var(--echo-ink-faint);
168
+ font-family: var(--echo-font-mono);
169
+ font-size: 16px;
170
+ font-weight: 600;
171
+ line-height: 1.45;
172
+ }
173
+ body.cityMode {
174
+ background: var(--echo-paper-canvas);
175
+ }
176
+ body.cityMode main {
177
+ width: 100%;
178
+ padding: 0;
179
+ margin: 0;
180
+ }
181
+ body.cityMode main > header {
182
+ display: none;
183
+ }
184
+ body.extractMode header {
185
+ display: none;
186
+ }
187
+ body.readyMode header {
188
+ display: none;
189
+ }
190
+ body.extractMode main {
191
+ min-height: 100vh;
192
+ display: grid;
193
+ align-items: center;
194
+ justify-items: center;
195
+ }
196
+ body.readyMode main {
197
+ min-height: 100vh;
198
+ display: grid;
199
+ align-items: center;
200
+ justify-items: center;
201
+ padding: clamp(24px, 5vw, 56px);
202
+ }
203
+ body.readyMode {
204
+ background: #f1f1ef;
205
+ }
206
+ body.cityMode #app {
207
+ display: block;
208
+ min-height: 100vh;
209
+ color: var(--echo-ink-text);
210
+ text-align: left;
211
+ }
212
+ body.extractMode #app {
213
+ width: 100%;
214
+ display: grid;
215
+ justify-items: center;
216
+ }
217
+ body.readyMode #app {
218
+ width: 100%;
219
+ display: grid;
220
+ justify-items: center;
221
+ }
222
+
223
+ /* clean, consistent loader for the post-connect "working/starting" states */
224
+ .miniLoad { display: grid; gap: 12px; max-width: 520px; padding: clamp(24px, 6vw, 64px) 0; }
225
+ .miniLoad h2 { margin: 0; font-family: var(--echo-font-brand); font-size: clamp(22px, 3.6vw, 32px); color: var(--echo-ink-primary); }
226
+ .miniLoad p { margin: 0; color: var(--echo-ink-mute); font-size: 14px; line-height: 1.5; }
227
+ .miniBar { height: 6px; border-radius: 999px; background: var(--echo-paper-soft); overflow: hidden; max-width: 360px; margin-top: 4px; }
228
+ .miniBar i { display: block; height: 100%; width: 36%; border-radius: 999px; background: var(--echo-ink-primary); animation: miniIndet 1.3s ease-in-out infinite; }
229
+ @keyframes miniIndet { 0% { transform: translateX(-115%); } 100% { transform: translateX(330%); } }
230
+
231
+ `;
@@ -0,0 +1,11 @@
1
+ import { SETUP_PAGE_STYLES_FOUNDATION } from "./styles-foundation.js";
2
+ import { SETUP_PAGE_STYLES_CITY_REPORT } from "./styles-city-report.js";
3
+ import { SETUP_PAGE_STYLES_EXTRACTION } from "./styles-extraction.js";
4
+ import { SETUP_PAGE_STYLES_CONTEXT_AUDIT } from "./styles-context-audit.js";
5
+ // Kept as one emitted style tag so the local HTML page remains self-contained.
6
+ export const SETUP_PAGE_STYLES = [
7
+ SETUP_PAGE_STYLES_FOUNDATION,
8
+ SETUP_PAGE_STYLES_CITY_REPORT,
9
+ SETUP_PAGE_STYLES_EXTRACTION,
10
+ SETUP_PAGE_STYLES_CONTEXT_AUDIT,
11
+ ].join("\n");