@echomem/mcp 1.4.18 → 1.4.20

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.
@@ -2,10 +2,12 @@ import { SETUP_PAGE_STYLES_FOUNDATION } from "./styles-foundation.js";
2
2
  import { SETUP_PAGE_STYLES_CITY_REPORT } from "./styles-city-report.js";
3
3
  import { SETUP_PAGE_STYLES_EXTRACTION } from "./styles-extraction.js";
4
4
  import { SETUP_PAGE_STYLES_CONTEXT_AUDIT } from "./styles-context-audit.js";
5
+ import { SETUP_PAGE_STYLES_WEBSITE_ALIGNMENT } from "./styles-website-alignment.js";
5
6
  // Kept as one emitted style tag so the local HTML page remains self-contained.
6
7
  export const SETUP_PAGE_STYLES = [
7
8
  SETUP_PAGE_STYLES_FOUNDATION,
8
9
  SETUP_PAGE_STYLES_CITY_REPORT,
9
10
  SETUP_PAGE_STYLES_EXTRACTION,
10
11
  SETUP_PAGE_STYLES_CONTEXT_AUDIT,
12
+ SETUP_PAGE_STYLES_WEBSITE_ALIGNMENT,
11
13
  ].join("\n");
@@ -1,7 +1,11 @@
1
1
  export const SETUP_PREVIEW_STATES = [
2
+ "consent",
3
+ "consent-required",
4
+ "scan",
2
5
  "report",
3
6
  "extract-counting",
4
7
  "extract-ready",
8
+ "extract-limit",
5
9
  "extract-run",
6
10
  "extract-overdue",
7
11
  "extract-done",
@@ -200,6 +204,26 @@ function previewWatermarkScript() {
200
204
  }
201
205
  export function renderSetupPreviewBootstrap(state) {
202
206
  const watermark = previewWatermarkScript();
207
+ if (state === "consent") {
208
+ return `${watermark}
209
+ renderLocalScanConsent();`;
210
+ }
211
+ if (state === "consent-required") {
212
+ return `${watermark}
213
+ renderLocalScanConsent();
214
+ setConsentStatus("Local history access is required to continue setup. Nothing will be scanned or uploaded unless you allow it.", "required");`;
215
+ }
216
+ if (state === "scan") {
217
+ return `${watermark}
218
+ reportEnvelope = {
219
+ schemaVersion: 1,
220
+ kind: "scanning",
221
+ mode: "preview",
222
+ scanId: "design-preview",
223
+ progress: { stage: "classifying-sessions", label: "Classifying repeated context", scanned: 116, total: 180, stageElapsedMs: 3000 }
224
+ };
225
+ renderLoading();`;
226
+ }
203
227
  if (state === "report") {
204
228
  const reportJson = JSON.stringify(previewReport);
205
229
  return `${watermark}
@@ -212,8 +236,20 @@ export function renderSetupPreviewBootstrap(state) {
212
236
  stats = null;
213
237
  renderDashboard();`;
214
238
  }
215
- if (state === "extract-ready") {
239
+ if (state === "extract-ready" || state === "extract-limit") {
240
+ const remainingHistory = state === "extract-limit" ? 0 : 28;
216
241
  return `${watermark}
242
+ connected = true;
243
+ billingStatus = {
244
+ plan: "free", paid: false, trialAvailable: true,
245
+ pricingUrl: "https://echoknows.com/pricing?source=mcp_onboarding",
246
+ account: {
247
+ displayName: "Erik Hein",
248
+ email: "erik@example.com",
249
+ avatarUrl: "/hud-assets/echo-face-cutout.png"
250
+ },
251
+ historicalConversationQuota: { used: ${100 - remainingHistory}, limit: 100, remaining: ${remainingHistory} }
252
+ };
217
253
  stats = {
218
254
  sessions: { total: 136, codex: 82, claudeCode: 54 },
219
255
  migratable: {
@@ -221,6 +257,19 @@ export function renderSetupPreviewBootstrap(state) {
221
257
  alreadyMigrated: 108, skippedActive: 0,
222
258
  eta: { estimatedLabel: "under 2 minutes" }, estimatedLabel: "under 2 minutes"
223
259
  },
260
+ candidateSessions: Array.from({ length: 28 }, function (_, index) {
261
+ var codex = index < 19;
262
+ return {
263
+ key: (codex ? "codex:" : "claude-code:") + "preview-" + index,
264
+ source: codex ? "codex" : "claude-code",
265
+ title: ["Plan the onboarding flow", "Repair memory extraction", "Review pricing limits", "Polish the EchoMem HUD"][index % 4] + " · " + (index + 1),
266
+ project: ["EchoMem Chrome", "MCP Server", "Memory Platform"][index % 3],
267
+ date: new Date(Date.UTC(2026, 6, 18 - (index % 12))).toISOString(),
268
+ characters: 42000 + index * 2700,
269
+ approxInputTokens: 10500 + index * 675,
270
+ turns: 18 + index
271
+ };
272
+ }),
224
273
  discovery: { phase: "account", exact: false }
225
274
  };
226
275
  renderDashboard();`;
@@ -237,6 +286,20 @@ export function renderSetupPreviewBootstrap(state) {
237
286
  }
238
287
  if (state === "extract-done") {
239
288
  return `${watermark}
289
+ stats = {
290
+ candidateSessions: [
291
+ { key: "codex:done-1", project: "EchoMem Chrome", title: "Polish the onboarding flow" },
292
+ { key: "codex:done-2", project: "EchoMem Chrome", title: "Repair memory extraction" },
293
+ { key: "claude-code:done-3", project: "MCP Server", title: "Review recall limits" },
294
+ { key: "codex:done-4", project: "Memory Platform", title: "Plan the next release" }
295
+ ]
296
+ };
297
+ selectedSessionKeys = {
298
+ "codex:done-1": true,
299
+ "codex:done-2": true,
300
+ "claude-code:done-3": true,
301
+ "codex:done-4": true
302
+ };
240
303
  renderProgress({ status: "completed", total: 28, completed: 28, extracted: 128, failed: 0 });`;
241
304
  }
242
305
  if (state === "extract-ending")