Configuration
configureDemoWalk merges into a process-wide object. Call it once at startup. resetDemoWalkConfig is for unit tests.
personas
Map of actor id → chip style.
type DemoPersonaStyle = {
bg: string;
fg: string;
label?: string; // chip text; defaults to the persona id
};Unknown personas use a slate fallback (FALLBACK_PERSONA_STYLE). Ids are plain strings — this package does not know ADMIN or PLAYER. The whole map is passed into the overlay init script so a shared-page demoFocus can restyle the chip without closing over Node config.
layout
Unused leftover fields. Older configs that still set them continue to merge.
| Field | Purpose |
|---|---|
main | Unused. Kept so older configs still merge. |
stickyNavs | Unused. Kept so older configs still merge. |
startPath
First URL for each persona window when E2E_DEMO=1. Default /.
artifactsDir
Folder used when copying walk.mp4 / transcript.txt for chat or a PR. Default /opt/cursor/artifacts (Cursor Cloud). On a laptop without that directory, copies are skipped unless you set E2E_DEMO_COPY_WALK.
pacing
Three teaching beats. Optional pace (tight · normal · slow) scales all three. Explicit milliseconds win.
configureDemoWalk({
pacing: { pace: 'slow', afterClickMs: 400 },
});| Beat | Default | Per-call |
|---|---|---|
Chapter sit (demoFocus) | 2200ms | { chapterMs } |
| Click pulse | 450ms | { pulseMs } on click / fill |
| After-click linger | 500ms video, 700ms headed stills | { afterClickMs } |
demoDwell(ms) / demoSee(ms) / { waitAfter: false } stay per-call only. Pointer travel and stills pre-hold stay internal.
Merge rules
Later calls shallow-merge personas, layout, and pacing. artifactsDir and startPath replace only when provided.