@echomem/mcp 1.4.26 → 1.4.28

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.
@@ -162,7 +162,12 @@ export const SETUP_PAGE_STYLES_WEBSITE_ALIGNMENT = String.raw `
162
162
  filter: drop-shadow(0 12px 14px rgba(26,58,143,0.16));
163
163
  animation: scanMascotFrame 4.2s linear infinite;
164
164
  }
165
- .scanMascotFrame:nth-child(1) { animation-delay: 0s; }
165
+ /* Keep the ready pose mounted underneath every animated frame. This prevents
166
+ a transparent flash at loop boundaries or while a later PNG is decoding. */
167
+ .scanMascotFrame:nth-child(1) {
168
+ opacity: 1;
169
+ animation: none;
170
+ }
166
171
  .scanMascotFrame:nth-child(2) { animation-delay: 0.6s; }
167
172
  .scanMascotFrame:nth-child(3) { animation-delay: 1.2s; }
168
173
  .scanMascotFrame:nth-child(4) { animation-delay: 1.8s; }
@@ -170,8 +175,8 @@ export const SETUP_PAGE_STYLES_WEBSITE_ALIGNMENT = String.raw `
170
175
  .scanMascotFrame:nth-child(6) { animation-delay: 3s; }
171
176
  .scanMascotFrame:nth-child(7) { animation-delay: 3.6s; }
172
177
  @keyframes scanMascotFrame {
173
- 0%, 14.2% { opacity: 1; }
174
- 14.3%, 100% { opacity: 0; }
178
+ 0%, 14.4% { opacity: 1; }
179
+ 14.5%, 100% { opacity: 0; }
175
180
  }
176
181
  .scanLoaderCopy { min-width: 0; }
177
182
  .scanEyebrow {
@@ -2,6 +2,7 @@ export const SETUP_PREVIEW_STATES = [
2
2
  "consent",
3
3
  "consent-required",
4
4
  "scan",
5
+ "scan-error",
5
6
  "report",
6
7
  "extract-counting",
7
8
  "extract-ready",
@@ -9,7 +10,10 @@ export const SETUP_PREVIEW_STATES = [
9
10
  "extract-free-trial-used",
10
11
  "extract-limit",
11
12
  "extract-pro-trial",
13
+ "extract-pro-trial-canceling",
12
14
  "extract-pro-active",
15
+ "extract-pro-canceling",
16
+ "extract-power-trial",
13
17
  "extract-power-active",
14
18
  "extract-team-active",
15
19
  "extract-enterprise-active",
@@ -234,6 +238,8 @@ function extractionPreviewBootstrap(options) {
234
238
  trialUsed: options.trialUsed,
235
239
  subscriptionStatus: options.subscriptionStatus ?? null,
236
240
  trialEndedAt: options.trialEndedAt ?? null,
241
+ cancelAtPeriodEnd: options.cancelAtPeriodEnd ?? false,
242
+ currentPeriodEnd: options.currentPeriodEnd ?? null,
237
243
  pricingUrl: "https://echoknows.com/account?source=mcp_onboarding",
238
244
  account: {
239
245
  displayName: "Preview User",
@@ -290,10 +296,14 @@ export function renderSetupPreviewBootstrap(state) {
290
296
  kind: "scanning",
291
297
  mode: "preview",
292
298
  scanId: "design-preview",
293
- progress: { stage: "classifying-sessions", label: "Classifying repeated context", scanned: 116, total: 180, stageElapsedMs: 3000 }
299
+ progress: { stage: "reading-transcripts", label: "Reading transcript files", scanned: 116, total: 180, overall: 0.451, stageElapsedMs: 3000 }
294
300
  };
295
301
  renderLoading();`;
296
302
  }
303
+ if (state === "scan-error") {
304
+ return `${watermark}
305
+ renderReportIssue("REPORT_CANONICAL_INVALID", "Preview-only canonical reconciliation failure.");`;
306
+ }
297
307
  if (state === "report") {
298
308
  const reportJson = JSON.stringify(previewReport);
299
309
  return `${watermark}
@@ -331,16 +341,36 @@ export function renderSetupPreviewBootstrap(state) {
331
341
  if (state === "extract-pro-trial")
332
342
  return `${watermark}${extractionPreviewBootstrap({
333
343
  plan: "pro", paid: true, trialAvailable: false, trialUsed: true,
334
- subscriptionStatus: "trialing", trialEndedAt: "2026-08-04T00:00:00.000Z",
335
- // The server currently grants trialing users Free's lifetime history allowance,
336
- // even though recurring processing/search allowances resolve to Pro.
337
- quotaLimit: 100, quotaRemaining: 100,
344
+ subscriptionStatus: "trialing", trialEndedAt: "2026-08-04T12:00:00.000Z",
345
+ quotaLimit: 500, quotaRemaining: 500,
346
+ })}`;
347
+ if (state === "extract-pro-trial-canceling")
348
+ return `${watermark}${extractionPreviewBootstrap({
349
+ plan: "pro", paid: true, trialAvailable: false, trialUsed: true,
350
+ subscriptionStatus: "trialing", cancelAtPeriodEnd: true,
351
+ trialEndedAt: "2026-08-04T12:00:00.000Z",
352
+ currentPeriodEnd: "2026-08-04T12:00:00.000Z",
353
+ quotaLimit: 500, quotaRemaining: 500,
338
354
  })}`;
339
355
  if (state === "extract-pro-active")
340
356
  return `${watermark}${extractionPreviewBootstrap({
341
357
  plan: "pro", paid: true, trialAvailable: false, trialUsed: true,
342
358
  subscriptionStatus: "active", quotaLimit: 500, quotaRemaining: 500,
343
359
  })}`;
360
+ if (state === "extract-pro-canceling")
361
+ return `${watermark}${extractionPreviewBootstrap({
362
+ plan: "pro", paid: true, trialAvailable: false, trialUsed: true,
363
+ subscriptionStatus: "active", cancelAtPeriodEnd: true,
364
+ currentPeriodEnd: "2026-08-28T12:00:00.000Z",
365
+ quotaLimit: 500, quotaRemaining: 500,
366
+ })}`;
367
+ if (state === "extract-power-trial")
368
+ return `${watermark}${extractionPreviewBootstrap({
369
+ plan: "power", paid: true, trialAvailable: false, trialUsed: true,
370
+ subscriptionStatus: "trialing", trialEndedAt: "2026-08-04T12:00:00.000Z",
371
+ currentPeriodEnd: "2026-08-04T12:00:00.000Z",
372
+ quotaLimit: 2_000, quotaRemaining: 2_000,
373
+ })}`;
344
374
  if (state === "extract-power-active")
345
375
  return `${watermark}${extractionPreviewBootstrap({
346
376
  plan: "power", paid: true, trialAvailable: false, trialUsed: true,
@@ -409,5 +439,15 @@ export function renderSetupPreviewBootstrap(state) {
409
439
  }
410
440
  if (state === "extract-ending")
411
441
  return `${watermark}\n renderEnding();`;
412
- return `${watermark}\n renderSkipped();`;
442
+ return `${watermark}
443
+ lastExtractionProgress = {
444
+ status: "stopped",
445
+ total: 28,
446
+ completed: 7,
447
+ extracted: 24,
448
+ failed: 0,
449
+ latest: "preview session",
450
+ latestRepo: "Preview Workspace"
451
+ };
452
+ renderSkipped();`;
413
453
  }