Skip to content

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.

ts
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.

FieldPurpose
mainUnused. Kept so older configs still merge.
stickyNavsUnused. 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.

ts
configureDemoWalk({
  pacing: { pace: 'slow', afterClickMs: 400 },
});
BeatDefaultPer-call
Chapter sit (demoFocus)2200ms{ chapterMs }
Click pulse450ms{ pulseMs } on click / fill
After-click linger500ms 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.

Released under the MIT License.