Turn witnessed production events into cinematic clusters, narrative beats, and a Film Edit Brief.
[!WARNING] Experimental alpha. Part of the Medicine Wheel Developer Suite, which is under active development. APIs change between patch versions and all packages move in lockstep — pin exact versions. See ALPHA.md.
This package receives the output of @medicine-wheel/perception-layer and gives it an edit-facing structure: grouped rushes, Medicine Wheel-aligned beats, EDL-style markers, and narrative annotations. It is intentionally deterministic so a real transcript can become a testable vertical slice.
Episode 066 named a film-production path where agents help transform raw material into story without erasing relationship. Episode 067 sharpened the distinction between the Jerry thread of runtime observability and the Nicolas Renaud thread, which applies Shawn Wilson’s Research Is Ceremony (2008) to film as the conversation with Nicolas shaped it. This package sits between perception and editing: it clusters witnessed events while preserving relational moments as first-class material.
npm install @medicine-wheel/narrative-cluster
import {
clusterEvents,
clustersToBeats,
generateEditBrief,
} from '@medicine-wheel/narrative-cluster';
const clusters = clusterEvents(
events.map((event) => ({
type: event.type,
text: event.text,
index: event.index,
source: event.source,
})),
);
const beats = clustersToBeats(clusters);
const brief = generateEditBrief(clusters, {
title: 'Episode 066 rushes',
});
NarrativeCluster: a group of related events with a kind, theme, direction, and source events.NarrativeBeat: a Medicine Wheel-aligned beat for downstream narrative engines.EditBrief: ordered markers plus a CMX3600-style EDL text block.EditMarker: deterministic timecode and annotation for an editable unit.shot-sequence → usually East / visionsound-environment → usually South / growthrelational-moment → usually West / reflectionThe real vertical slice is covered by:
cd /workspace/repos/jgwill/medicine-wheel
npm run build:packages
npm test -- --run tests/film-production-vertical-slice.test.ts
That test uses the real Episode 066 transcript and proves: