@medicine-wheel/perception-layer 0.4.9
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.
- package/README.md +76 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/ingest.d.ts +14 -0
- package/dist/ingest.d.ts.map +1 -0
- package/dist/ingest.js +143 -0
- package/dist/ingest.js.map +1 -0
- package/dist/observers.d.ts +34 -0
- package/dist/observers.d.ts.map +1 -0
- package/dist/observers.js +93 -0
- package/dist/observers.js.map +1 -0
- package/dist/types.d.ts +62 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +41 -0
package/README.md
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# @medicine-wheel/perception-layer
|
|
2
|
+
|
|
3
|
+
Witness film-production source material as typed relational events.
|
|
4
|
+
|
|
5
|
+
This package is the **eyes and ears** layer for agent-supported Indigenous film production. It turns transcript or device-stream material into `PerceptualEvent`s, records who witnessed the material, and seeds an additive production graph in `@medicine-wheel/ontology-core`.
|
|
6
|
+
|
|
7
|
+
## Why it exists
|
|
8
|
+
|
|
9
|
+
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.
|
|
10
|
+
|
|
11
|
+
Production entities ride on existing `knowledge` nodes with `metadata.kind`; edges use the additive `ProductionRelation` subtype.
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install @medicine-wheel/perception-layer
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## API
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
import {
|
|
23
|
+
registerParticipant,
|
|
24
|
+
ingestTranscript,
|
|
25
|
+
buildProductionGraph,
|
|
26
|
+
} from '@medicine-wheel/perception-layer';
|
|
27
|
+
|
|
28
|
+
const mia = registerParticipant('Mia', 'witness', ['🧠', 'Mia']);
|
|
29
|
+
const events = ingestTranscript(transcript, {
|
|
30
|
+
source: '/path/to/episode-066-transcript.txt',
|
|
31
|
+
participant: mia,
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
const graph = buildProductionGraph(events, {
|
|
35
|
+
participant: mia,
|
|
36
|
+
recordingName: 'Episode 066 belt recording',
|
|
37
|
+
});
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Main concepts
|
|
41
|
+
|
|
42
|
+
- `PerceptualEvent`: one witnessed segment with a sense (`ear` or `eye`) and an event type.
|
|
43
|
+
- `AgentParticipant`: the human or agent recorded as witness, observer, or storyteller.
|
|
44
|
+
- `ProductionGraphSeed`: recording node, segment nodes, collaborator nodes, and `ProductionRelation` edges.
|
|
45
|
+
- `observedBy`: records relationship in-band; the agent witnesses rather than extracts.
|
|
46
|
+
|
|
47
|
+
## Event types
|
|
48
|
+
|
|
49
|
+
- `transcript-segment`
|
|
50
|
+
- `director-intent`
|
|
51
|
+
- `ambient-sound`
|
|
52
|
+
- `shot-composition`
|
|
53
|
+
- `relational-moment`
|
|
54
|
+
|
|
55
|
+
## Verification
|
|
56
|
+
|
|
57
|
+
The real vertical slice is covered by:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
cd /workspace/repos/jgwill/medicine-wheel
|
|
61
|
+
npm run build:packages
|
|
62
|
+
npm test -- --run tests/film-production-vertical-slice.test.ts
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
That test uses the real Episode 066 transcript and proves:
|
|
66
|
+
|
|
67
|
+
1. transcript → perceptual events,
|
|
68
|
+
2. events → production graph,
|
|
69
|
+
3. production graph remains additive over ontology-core,
|
|
70
|
+
4. the Jerry and Nicolas/Renaud relationship threads stay legible.
|
|
71
|
+
|
|
72
|
+
## Related issues
|
|
73
|
+
|
|
74
|
+
- #85 — Episode 068 vertical slice
|
|
75
|
+
- #86 — perception layer package
|
|
76
|
+
- #84 — Episode 068 plan-review audio steering context
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @medicine-wheel/perception-layer
|
|
3
|
+
*
|
|
4
|
+
* The eyes & ears of agent-supported film production. Witness a belt-device
|
|
5
|
+
* recording as typed perceptual events and seed a production knowledge graph —
|
|
6
|
+
* relationship, not extraction.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { registerParticipant, ingestTranscript, buildProductionGraph } from '@medicine-wheel/perception-layer';
|
|
11
|
+
*
|
|
12
|
+
* const mia = registerParticipant('Mia', 'witness', ['🧠']);
|
|
13
|
+
* const events = ingestTranscript(transcript, { source: 'belt-device', participant: mia });
|
|
14
|
+
* const graph = buildProductionGraph(events, { participant: mia });
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @packageDocumentation
|
|
18
|
+
*/
|
|
19
|
+
export type { PerceptualSense, PerceptualEventType, PerceptualEvent, AgentParticipant, IngestOptions, BuildGraphOptions, ProductionGraphSeed, } from './types.js';
|
|
20
|
+
export type { PerceptualObserver, Classification } from './observers.js';
|
|
21
|
+
export { OBSERVERS, classify, relationalWitnessingObserver, directorIntentObserver, shotCompositionObserver, ambientSoundObserver, } from './observers.js';
|
|
22
|
+
export { segmentTranscript, registerParticipant, ingestTranscript, buildProductionGraph, } from './ingest.js';
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EACL,SAAS,EACT,QAAQ,EACR,4BAA4B,EAC5B,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildProductionGraph = exports.ingestTranscript = exports.registerParticipant = exports.segmentTranscript = exports.ambientSoundObserver = exports.shotCompositionObserver = exports.directorIntentObserver = exports.relationalWitnessingObserver = exports.classify = exports.OBSERVERS = void 0;
|
|
4
|
+
var observers_js_1 = require("./observers.js");
|
|
5
|
+
Object.defineProperty(exports, "OBSERVERS", { enumerable: true, get: function () { return observers_js_1.OBSERVERS; } });
|
|
6
|
+
Object.defineProperty(exports, "classify", { enumerable: true, get: function () { return observers_js_1.classify; } });
|
|
7
|
+
Object.defineProperty(exports, "relationalWitnessingObserver", { enumerable: true, get: function () { return observers_js_1.relationalWitnessingObserver; } });
|
|
8
|
+
Object.defineProperty(exports, "directorIntentObserver", { enumerable: true, get: function () { return observers_js_1.directorIntentObserver; } });
|
|
9
|
+
Object.defineProperty(exports, "shotCompositionObserver", { enumerable: true, get: function () { return observers_js_1.shotCompositionObserver; } });
|
|
10
|
+
Object.defineProperty(exports, "ambientSoundObserver", { enumerable: true, get: function () { return observers_js_1.ambientSoundObserver; } });
|
|
11
|
+
var ingest_js_1 = require("./ingest.js");
|
|
12
|
+
Object.defineProperty(exports, "segmentTranscript", { enumerable: true, get: function () { return ingest_js_1.segmentTranscript; } });
|
|
13
|
+
Object.defineProperty(exports, "registerParticipant", { enumerable: true, get: function () { return ingest_js_1.registerParticipant; } });
|
|
14
|
+
Object.defineProperty(exports, "ingestTranscript", { enumerable: true, get: function () { return ingest_js_1.ingestTranscript; } });
|
|
15
|
+
Object.defineProperty(exports, "buildProductionGraph", { enumerable: true, get: function () { return ingest_js_1.buildProductionGraph; } });
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AA6BA,+CAOwB;AANtB,yGAAA,SAAS,OAAA;AACT,wGAAA,QAAQ,OAAA;AACR,4HAAA,4BAA4B,OAAA;AAC5B,sHAAA,sBAAsB,OAAA;AACtB,uHAAA,uBAAuB,OAAA;AACvB,oHAAA,oBAAoB,OAAA;AAGtB,yCAKqB;AAJnB,8GAAA,iBAAiB,OAAA;AACjB,gHAAA,mBAAmB,OAAA;AACnB,6GAAA,gBAAgB,OAAA;AAChB,iHAAA,oBAAoB,OAAA"}
|
package/dist/ingest.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { PerceptualEvent, AgentParticipant, IngestOptions, BuildGraphOptions, ProductionGraphSeed } from './types.js';
|
|
2
|
+
/** Split a transcript into sentence-ish segments. */
|
|
3
|
+
export declare function segmentTranscript(text: string, minSegmentLength?: number): string[];
|
|
4
|
+
/** Register a production participant with a persistent persona signature. */
|
|
5
|
+
export declare function registerParticipant(name: string, role: AgentParticipant['role'], signature: string[]): AgentParticipant;
|
|
6
|
+
/** Witness a transcript as a stream of perceptual events. */
|
|
7
|
+
export declare function ingestTranscript(text: string, opts?: IngestOptions): PerceptualEvent[];
|
|
8
|
+
/**
|
|
9
|
+
* Seed a production graph from perceptual events. Each segment is `rush-of` the
|
|
10
|
+
* recording; the participant is recorded as `witnessed-by` — relationship over
|
|
11
|
+
* extraction.
|
|
12
|
+
*/
|
|
13
|
+
export declare function buildProductionGraph(events: PerceptualEvent[], opts?: BuildGraphOptions): ProductionGraphSeed;
|
|
14
|
+
//# sourceMappingURL=ingest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AASpB,qDAAqD;AACrD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,SAAK,GAAG,MAAM,EAAE,CAM/E;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAC9B,SAAS,EAAE,MAAM,EAAE,GAClB,gBAAgB,CAElB;AAED,6DAA6D;AAC7D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,eAAe,EAAE,CAmB1F;AA+CD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,eAAe,EAAE,EACzB,IAAI,GAAE,iBAAsB,GAC3B,mBAAmB,CA8DrB"}
|
package/dist/ingest.js
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.segmentTranscript = segmentTranscript;
|
|
4
|
+
exports.registerParticipant = registerParticipant;
|
|
5
|
+
exports.ingestTranscript = ingestTranscript;
|
|
6
|
+
exports.buildProductionGraph = buildProductionGraph;
|
|
7
|
+
const observers_js_1 = require("./observers.js");
|
|
8
|
+
let _seq = 0;
|
|
9
|
+
function uid(prefix) {
|
|
10
|
+
_seq += 1;
|
|
11
|
+
return `${prefix}:${Date.now()}:${_seq}`;
|
|
12
|
+
}
|
|
13
|
+
/** Split a transcript into sentence-ish segments. */
|
|
14
|
+
function segmentTranscript(text, minSegmentLength = 24) {
|
|
15
|
+
return text
|
|
16
|
+
.replace(/\s+/g, ' ')
|
|
17
|
+
.split(/(?<=[.?!])\s+/)
|
|
18
|
+
.map((s) => s.trim())
|
|
19
|
+
.filter((s) => s.length >= minSegmentLength);
|
|
20
|
+
}
|
|
21
|
+
/** Register a production participant with a persistent persona signature. */
|
|
22
|
+
function registerParticipant(name, role, signature) {
|
|
23
|
+
return { id: uid('participant'), name, role, signature };
|
|
24
|
+
}
|
|
25
|
+
/** Witness a transcript as a stream of perceptual events. */
|
|
26
|
+
function ingestTranscript(text, opts = {}) {
|
|
27
|
+
const source = opts.source ?? 'belt-device';
|
|
28
|
+
const minSegmentLength = opts.minSegmentLength ?? 24;
|
|
29
|
+
const observedBy = opts.participant?.id;
|
|
30
|
+
const now = new Date().toISOString();
|
|
31
|
+
return segmentTranscript(text, minSegmentLength).map((seg, index) => {
|
|
32
|
+
const { sense, type } = (0, observers_js_1.classify)(seg);
|
|
33
|
+
return {
|
|
34
|
+
id: uid('pevent'),
|
|
35
|
+
sense,
|
|
36
|
+
type,
|
|
37
|
+
text: seg,
|
|
38
|
+
source,
|
|
39
|
+
index,
|
|
40
|
+
observedBy,
|
|
41
|
+
timestamp: now,
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
const KIND_BY_TYPE = {
|
|
46
|
+
'shot-composition': 'shot',
|
|
47
|
+
'transcript-segment': 'rush',
|
|
48
|
+
'director-intent': 'rush',
|
|
49
|
+
'ambient-sound': 'rush',
|
|
50
|
+
'relational-moment': 'scene',
|
|
51
|
+
};
|
|
52
|
+
function makeProductionRelation(fromId, toId, relationshipType, productionId, timecode) {
|
|
53
|
+
const now = new Date().toISOString();
|
|
54
|
+
return {
|
|
55
|
+
id: uid('rel'),
|
|
56
|
+
from_id: fromId,
|
|
57
|
+
to_id: toId,
|
|
58
|
+
relationship_type: relationshipType,
|
|
59
|
+
strength: 1,
|
|
60
|
+
obligations: [],
|
|
61
|
+
ocap: {
|
|
62
|
+
ownership: 'creator',
|
|
63
|
+
control: 'creator',
|
|
64
|
+
access: 'community',
|
|
65
|
+
possession: 'on-premise',
|
|
66
|
+
compliant: true,
|
|
67
|
+
},
|
|
68
|
+
accountability: {
|
|
69
|
+
respect: 1,
|
|
70
|
+
reciprocity: 1,
|
|
71
|
+
responsibility: 1,
|
|
72
|
+
wilson_alignment: 1,
|
|
73
|
+
relations_honored: [],
|
|
74
|
+
},
|
|
75
|
+
metadata: {},
|
|
76
|
+
production_id: productionId,
|
|
77
|
+
timecode,
|
|
78
|
+
created_at: now,
|
|
79
|
+
updated_at: now,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Seed a production graph from perceptual events. Each segment is `rush-of` the
|
|
84
|
+
* recording; the participant is recorded as `witnessed-by` — relationship over
|
|
85
|
+
* extraction.
|
|
86
|
+
*/
|
|
87
|
+
function buildProductionGraph(events, opts = {}) {
|
|
88
|
+
const now = new Date().toISOString();
|
|
89
|
+
const productionId = opts.productionId ?? uid('production');
|
|
90
|
+
const recordingName = opts.recordingName ?? 'Belt-device recording';
|
|
91
|
+
const recording = {
|
|
92
|
+
id: uid('node'),
|
|
93
|
+
name: recordingName,
|
|
94
|
+
type: 'knowledge',
|
|
95
|
+
direction: 'east',
|
|
96
|
+
metadata: {
|
|
97
|
+
kind: 'recording',
|
|
98
|
+
production_id: productionId,
|
|
99
|
+
event_count: events.length,
|
|
100
|
+
},
|
|
101
|
+
created_at: now,
|
|
102
|
+
updated_at: now,
|
|
103
|
+
};
|
|
104
|
+
const segments = [];
|
|
105
|
+
const collaborators = [];
|
|
106
|
+
const relations = [];
|
|
107
|
+
if (opts.participant) {
|
|
108
|
+
const witness = {
|
|
109
|
+
id: uid('node'),
|
|
110
|
+
name: opts.participant.name,
|
|
111
|
+
type: 'human',
|
|
112
|
+
metadata: {
|
|
113
|
+
kind: 'collaborator',
|
|
114
|
+
role: opts.participant.role,
|
|
115
|
+
signature: opts.participant.signature,
|
|
116
|
+
},
|
|
117
|
+
created_at: now,
|
|
118
|
+
updated_at: now,
|
|
119
|
+
};
|
|
120
|
+
collaborators.push(witness);
|
|
121
|
+
relations.push(makeProductionRelation(recording.id, witness.id, 'witnessed-by', productionId));
|
|
122
|
+
}
|
|
123
|
+
for (const ev of events) {
|
|
124
|
+
const node = {
|
|
125
|
+
id: uid('node'),
|
|
126
|
+
name: ev.text.slice(0, 60),
|
|
127
|
+
type: 'knowledge',
|
|
128
|
+
metadata: {
|
|
129
|
+
kind: KIND_BY_TYPE[ev.type],
|
|
130
|
+
event_type: ev.type,
|
|
131
|
+
sense: ev.sense,
|
|
132
|
+
index: ev.index,
|
|
133
|
+
source: ev.source,
|
|
134
|
+
},
|
|
135
|
+
created_at: now,
|
|
136
|
+
updated_at: now,
|
|
137
|
+
};
|
|
138
|
+
segments.push(node);
|
|
139
|
+
relations.push(makeProductionRelation(node.id, recording.id, 'rush-of', productionId, String(ev.index)));
|
|
140
|
+
}
|
|
141
|
+
return { recording, segments, collaborators, relations };
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=ingest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @medicine-wheel/perception-layer — Observers
|
|
3
|
+
*
|
|
4
|
+
* Pure classifiers — the perceptual organs. Each observer recognizes a kind of
|
|
5
|
+
* witnessed material. Observers take NO world action; they only see and hear.
|
|
6
|
+
* Precedence is intentional: relational witnessing (the Renaud thread) is
|
|
7
|
+
* recognized first so relationships are never buried under technical chatter.
|
|
8
|
+
*/
|
|
9
|
+
import type { PerceptualEventType, PerceptualSense } from './types.js';
|
|
10
|
+
export interface PerceptualObserver {
|
|
11
|
+
name: string;
|
|
12
|
+
sense: PerceptualSense;
|
|
13
|
+
type: PerceptualEventType;
|
|
14
|
+
/** True when this observer recognizes the segment. */
|
|
15
|
+
matches: (text: string) => boolean;
|
|
16
|
+
}
|
|
17
|
+
/** Eye — what relationship is being witnessed. */
|
|
18
|
+
export declare const relationalWitnessingObserver: PerceptualObserver;
|
|
19
|
+
/** Ear — stated creative intent. */
|
|
20
|
+
export declare const directorIntentObserver: PerceptualObserver;
|
|
21
|
+
/** Eye — what is seen / framed. */
|
|
22
|
+
export declare const shotCompositionObserver: PerceptualObserver;
|
|
23
|
+
/** Ear — recording / sonic environment. */
|
|
24
|
+
export declare const ambientSoundObserver: PerceptualObserver;
|
|
25
|
+
/** Ordered observer registry — precedence matters (see module doc). */
|
|
26
|
+
export declare const OBSERVERS: PerceptualObserver[];
|
|
27
|
+
export interface Classification {
|
|
28
|
+
sense: PerceptualSense;
|
|
29
|
+
type: PerceptualEventType;
|
|
30
|
+
observer: string;
|
|
31
|
+
}
|
|
32
|
+
/** Classify a segment through the observer registry; default is a plain ear. */
|
|
33
|
+
export declare function classify(text: string): Classification;
|
|
34
|
+
//# sourceMappingURL=observers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observers.d.ts","sourceRoot":"","sources":["../src/observers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,eAAe,CAAC;IACvB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,sDAAsD;IACtD,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CACpC;AAOD,kDAAkD;AAClD,eAAO,MAAM,4BAA4B,EAAE,kBAiB1C,CAAC;AAEF,oCAAoC;AACpC,eAAO,MAAM,sBAAsB,EAAE,kBAepC,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,uBAAuB,EAAE,kBAiBrC,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,oBAAoB,EAAE,kBAelC,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,SAAS,EAAE,kBAAkB,EAKzC,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,eAAe,CAAC;IACvB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,gFAAgF;AAChF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAOrD"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OBSERVERS = exports.ambientSoundObserver = exports.shotCompositionObserver = exports.directorIntentObserver = exports.relationalWitnessingObserver = void 0;
|
|
4
|
+
exports.classify = classify;
|
|
5
|
+
function has(text, words) {
|
|
6
|
+
const t = text.toLowerCase();
|
|
7
|
+
return words.some((w) => t.includes(w));
|
|
8
|
+
}
|
|
9
|
+
/** Eye — what relationship is being witnessed. */
|
|
10
|
+
exports.relationalWitnessingObserver = {
|
|
11
|
+
name: 'relational-witnessing-observer',
|
|
12
|
+
sense: 'eye',
|
|
13
|
+
type: 'relational-moment',
|
|
14
|
+
matches: (t) => has(t, [
|
|
15
|
+
'jerry',
|
|
16
|
+
'nicolas',
|
|
17
|
+
'renaud',
|
|
18
|
+
'renault',
|
|
19
|
+
'relationship',
|
|
20
|
+
'knowledge comes from relationship',
|
|
21
|
+
'my friend',
|
|
22
|
+
'ceremony',
|
|
23
|
+
'community',
|
|
24
|
+
'my meeting',
|
|
25
|
+
]),
|
|
26
|
+
};
|
|
27
|
+
/** Ear — stated creative intent. */
|
|
28
|
+
exports.directorIntentObserver = {
|
|
29
|
+
name: 'director-intent-observer',
|
|
30
|
+
sense: 'ear',
|
|
31
|
+
type: 'director-intent',
|
|
32
|
+
matches: (t) => has(t, [
|
|
33
|
+
'i want',
|
|
34
|
+
'i believe',
|
|
35
|
+
'vision',
|
|
36
|
+
'end result',
|
|
37
|
+
"i'm trying",
|
|
38
|
+
'desire',
|
|
39
|
+
'requirement',
|
|
40
|
+
'optimal',
|
|
41
|
+
]),
|
|
42
|
+
};
|
|
43
|
+
/** Eye — what is seen / framed. */
|
|
44
|
+
exports.shotCompositionObserver = {
|
|
45
|
+
name: 'shot-composition-observer',
|
|
46
|
+
sense: 'eye',
|
|
47
|
+
type: 'shot-composition',
|
|
48
|
+
matches: (t) => has(t, [
|
|
49
|
+
"i'm seeing",
|
|
50
|
+
'seeing',
|
|
51
|
+
'shot',
|
|
52
|
+
'video',
|
|
53
|
+
'image',
|
|
54
|
+
'animation',
|
|
55
|
+
'screen',
|
|
56
|
+
'visual',
|
|
57
|
+
'picture',
|
|
58
|
+
'frame',
|
|
59
|
+
]),
|
|
60
|
+
};
|
|
61
|
+
/** Ear — recording / sonic environment. */
|
|
62
|
+
exports.ambientSoundObserver = {
|
|
63
|
+
name: 'ambient-sound-observer',
|
|
64
|
+
sense: 'ear',
|
|
65
|
+
type: 'ambient-sound',
|
|
66
|
+
matches: (t) => has(t, [
|
|
67
|
+
'record',
|
|
68
|
+
'recording',
|
|
69
|
+
'audio',
|
|
70
|
+
'sound',
|
|
71
|
+
'natural sound',
|
|
72
|
+
'transcription',
|
|
73
|
+
'voice',
|
|
74
|
+
'hear',
|
|
75
|
+
]),
|
|
76
|
+
};
|
|
77
|
+
/** Ordered observer registry — precedence matters (see module doc). */
|
|
78
|
+
exports.OBSERVERS = [
|
|
79
|
+
exports.relationalWitnessingObserver,
|
|
80
|
+
exports.directorIntentObserver,
|
|
81
|
+
exports.shotCompositionObserver,
|
|
82
|
+
exports.ambientSoundObserver,
|
|
83
|
+
];
|
|
84
|
+
/** Classify a segment through the observer registry; default is a plain ear. */
|
|
85
|
+
function classify(text) {
|
|
86
|
+
for (const obs of exports.OBSERVERS) {
|
|
87
|
+
if (obs.matches(text)) {
|
|
88
|
+
return { sense: obs.sense, type: obs.type, observer: obs.name };
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return { sense: 'ear', type: 'transcript-segment', observer: 'default' };
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=observers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observers.js","sourceRoot":"","sources":["../src/observers.ts"],"names":[],"mappings":";;;AAkHA,4BAOC;AAvGD,SAAS,GAAG,CAAC,IAAY,EAAE,KAAe;IACxC,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,kDAAkD;AACrC,QAAA,4BAA4B,GAAuB;IAC9D,IAAI,EAAE,gCAAgC;IACtC,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,mBAAmB;IACzB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CACb,GAAG,CAAC,CAAC,EAAE;QACL,OAAO;QACP,SAAS;QACT,QAAQ;QACR,SAAS;QACT,cAAc;QACd,mCAAmC;QACnC,WAAW;QACX,UAAU;QACV,WAAW;QACX,YAAY;KACb,CAAC;CACL,CAAC;AAEF,oCAAoC;AACvB,QAAA,sBAAsB,GAAuB;IACxD,IAAI,EAAE,0BAA0B;IAChC,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CACb,GAAG,CAAC,CAAC,EAAE;QACL,QAAQ;QACR,WAAW;QACX,QAAQ;QACR,YAAY;QACZ,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,SAAS;KACV,CAAC;CACL,CAAC;AAEF,mCAAmC;AACtB,QAAA,uBAAuB,GAAuB;IACzD,IAAI,EAAE,2BAA2B;IACjC,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,kBAAkB;IACxB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CACb,GAAG,CAAC,CAAC,EAAE;QACL,YAAY;QACZ,QAAQ;QACR,MAAM;QACN,OAAO;QACP,OAAO;QACP,WAAW;QACX,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,OAAO;KACR,CAAC;CACL,CAAC;AAEF,2CAA2C;AAC9B,QAAA,oBAAoB,GAAuB;IACtD,IAAI,EAAE,wBAAwB;IAC9B,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CACb,GAAG,CAAC,CAAC,EAAE;QACL,QAAQ;QACR,WAAW;QACX,OAAO;QACP,OAAO;QACP,eAAe;QACf,eAAe;QACf,OAAO;QACP,MAAM;KACP,CAAC;CACL,CAAC;AAEF,uEAAuE;AAC1D,QAAA,SAAS,GAAyB;IAC7C,oCAA4B;IAC5B,8BAAsB;IACtB,+BAAuB;IACvB,4BAAoB;CACrB,CAAC;AAQF,gFAAgF;AAChF,SAAgB,QAAQ,CAAC,IAAY;IACnC,KAAK,MAAM,GAAG,IAAI,iBAAS,EAAE,CAAC;QAC5B,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QAClE,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAC3E,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @medicine-wheel/perception-layer — Types
|
|
3
|
+
*
|
|
4
|
+
* The eyes & ears of agent-supported film production. A production participant
|
|
5
|
+
* (human or agent) witnesses a recording as a stream of typed perceptual events
|
|
6
|
+
* and seeds a production knowledge graph. The agent is recorded as the WITNESS
|
|
7
|
+
* (`observedBy`) of each event — relationship, not extraction.
|
|
8
|
+
*/
|
|
9
|
+
import type { RelationalNode, ProductionRelation } from '@medicine-wheel/ontology-core';
|
|
10
|
+
/** Through which organ the event is sensed. */
|
|
11
|
+
export type PerceptualSense = 'ear' | 'eye';
|
|
12
|
+
export type PerceptualEventType = 'transcript-segment' | 'director-intent' | 'ambient-sound' | 'shot-composition' | 'relational-moment';
|
|
13
|
+
export interface PerceptualEvent {
|
|
14
|
+
id: string;
|
|
15
|
+
sense: PerceptualSense;
|
|
16
|
+
type: PerceptualEventType;
|
|
17
|
+
text: string;
|
|
18
|
+
/** File path or device id the event was witnessed from. */
|
|
19
|
+
source: string;
|
|
20
|
+
/** Order of the event within the stream. */
|
|
21
|
+
index: number;
|
|
22
|
+
/** AgentParticipant id — the witness, not the owner. */
|
|
23
|
+
observedBy?: string;
|
|
24
|
+
timestamp: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* A production participant. An agent registers with a persistent persona
|
|
28
|
+
* signature carried across sessions, making it part of the production rather
|
|
29
|
+
* than an external tool.
|
|
30
|
+
*/
|
|
31
|
+
export interface AgentParticipant {
|
|
32
|
+
id: string;
|
|
33
|
+
name: string;
|
|
34
|
+
role: 'witness' | 'observer' | 'storyteller';
|
|
35
|
+
/** Persona markers (names, glyphs, phrases) carried across sessions. */
|
|
36
|
+
signature: string[];
|
|
37
|
+
}
|
|
38
|
+
export interface IngestOptions {
|
|
39
|
+
/** File path or device id; defaults to 'belt-device'. */
|
|
40
|
+
source?: string;
|
|
41
|
+
/** Participant recorded as witness on every event. */
|
|
42
|
+
participant?: AgentParticipant;
|
|
43
|
+
/** Minimum characters for a segment to be kept (default: 24). */
|
|
44
|
+
minSegmentLength?: number;
|
|
45
|
+
}
|
|
46
|
+
export interface BuildGraphOptions {
|
|
47
|
+
productionId?: string;
|
|
48
|
+
participant?: AgentParticipant;
|
|
49
|
+
recordingName?: string;
|
|
50
|
+
}
|
|
51
|
+
/** The seeded production graph — additive over ontology-core. */
|
|
52
|
+
export interface ProductionGraphSeed {
|
|
53
|
+
/** Parent recording node (kind: 'recording'). */
|
|
54
|
+
recording: RelationalNode;
|
|
55
|
+
/** Per-segment knowledge nodes (kind: 'shot' | 'rush' | 'scene'). */
|
|
56
|
+
segments: RelationalNode[];
|
|
57
|
+
/** Witness/collaborator nodes (kind: 'collaborator'). */
|
|
58
|
+
collaborators: RelationalNode[];
|
|
59
|
+
/** ProductionRelation edges (rush-of / witnessed-by). */
|
|
60
|
+
relations: ProductionRelation[];
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExF,+CAA+C;AAC/C,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,KAAK,CAAC;AAE5C,MAAM,MAAM,mBAAmB,GAC3B,oBAAoB,GACpB,iBAAiB,GACjB,eAAe,GACf,kBAAkB,GAClB,mBAAmB,CAAC;AAExB,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,eAAe,CAAC;IACvB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,aAAa,CAAC;IAC7C,wEAAwE;IACxE,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,iEAAiE;AACjE,MAAM,WAAW,mBAAmB;IAClC,iDAAiD;IACjD,SAAS,EAAE,cAAc,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,yDAAyD;IACzD,aAAa,EAAE,cAAc,EAAE,CAAC;IAChC,yDAAyD;IACzD,SAAS,EAAE,kBAAkB,EAAE,CAAC;CACjC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@medicine-wheel/perception-layer",
|
|
3
|
+
"version": "0.4.9",
|
|
4
|
+
"description": "Eyes & ears of agent-supported film production — witness a belt-device recording as typed perceptual events and seed a production knowledge graph",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"require": "./dist/index.js",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"sideEffects": false,
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"README.md"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "tsc",
|
|
22
|
+
"clean": "rm -rf dist",
|
|
23
|
+
"prepublishOnly": "npm run clean && npm run build"
|
|
24
|
+
},
|
|
25
|
+
"keywords": [
|
|
26
|
+
"medicine-wheel",
|
|
27
|
+
"film-production",
|
|
28
|
+
"perception",
|
|
29
|
+
"eyes-and-ears",
|
|
30
|
+
"indigenous",
|
|
31
|
+
"witnessing"
|
|
32
|
+
],
|
|
33
|
+
"author": "jgwill",
|
|
34
|
+
"license": "MIT",
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@medicine-wheel/ontology-core": "^0.4.9"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"typescript": "^5.7.0"
|
|
40
|
+
}
|
|
41
|
+
}
|