Witness film-production source material as typed relational events.
[!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 is the eyes and ears layer for agent-supported Indigenous film production. It turns transcript or device-stream material into PerceptualEvents, records who witnessed the material, and seeds an additive production graph in @medicine-wheel/ontology-core.
Episode 066 introduced the belt-device / eyes-and-ears metaphor. Episode 067 and the Nicolas Renaud conversation clarified the relational frame: film is not just content capture, it is knowledge emerging through relationship. This package makes that frame executable without changing core ontology unions.
Production entities ride on existing knowledge nodes with metadata.kind; edges use the additive ProductionRelation subtype.
npm install @medicine-wheel/perception-layer
import {
registerParticipant,
ingestTranscript,
buildProductionGraph,
} from '@medicine-wheel/perception-layer';
const mia = registerParticipant('Mia', 'witness', ['🧠', 'Mia']);
const events = ingestTranscript(transcript, {
source: '/path/to/episode-066-transcript.txt',
participant: mia,
});
const graph = buildProductionGraph(events, {
participant: mia,
recordingName: 'Episode 066 belt recording',
});
PerceptualEvent: one witnessed segment with a sense (ear or eye) and an event type.AgentParticipant: the human or agent recorded as witness, observer, or storyteller.ProductionGraphSeed: recording node, segment nodes, collaborator nodes, and ProductionRelation edges.observedBy: records relationship in-band; the agent witnesses rather than extracts.transcript-segmentdirector-intentambient-soundshot-compositionrelational-momentThe 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: