@mengine/medeo-tool 1.4.1-alpha.5 → 2.0.1-alpha.11

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 CHANGED
@@ -84,6 +84,15 @@ Resource-free Caption composition from AudioScript is also supported. Each
84
84
  on-screen placement has its own Clip and display SequenceMarker, connected by
85
85
  ordinary relations; intrinsic Caption timing remains independent.
86
86
 
87
+ Voice resources use `external: {system: 'memota-speech', key: speechId}`.
88
+ Await `rgetAssetFromEntity(voiceId)` before constructing placement relations: the
89
+ host supplies `storageKey`, the full millisecond `extent`, and the optional TTS
90
+ `voice` locator. The loader returns `{assetId, content: {storageKey, durationMs,
91
+ voice?}}` from a project-scoped Speech lookup. Recorded speech omits `voice`;
92
+ TTS retains its explicit PhoneticScript relation. Resource reads do not create
93
+ script text or display markers. New or changed Speech references are also
94
+ resolved before commit, and failed reads publish no partial edits.
95
+
87
96
  `materializeResources` and generation/resource loaders are host APIs. The model
88
97
  never receives these capabilities. Project initialization and historical data
89
98
  migration also remain outside script execution. Retrying an unconfirmed commit
@@ -8,47 +8,39 @@ interface JsonObject {
8
8
  }
9
9
  type KnownEntityKind = 'axvideo' | 'timeline' | 'track' | 'clip' | 'asset' | 'video' | 'audio' | 'voice' | 'image' | 'sequence-marker' | 'viewport' | 'audio-script' | 'phonetic-script' | 'caption';
10
10
  /** Asset identity, either an old physical-only row or a directly composed media variant. */
11
- type ResourceEntityKind = 'image' | 'video' | 'audio' | 'voice';
12
- type KnownRelationKind = 'timeline-track' | 'track-clip' | 'clip-marker' | 'marker-content' | 'axvideo-marker' | 'marker-timeline' | 'physical-asset' | 'generated' | 'caption-alignment' | 'clip-anchor' | 'phonetic-script-render' | 'audio-script-source' | 'audio-script-marker';
11
+ type ResourceEntityKind = 'image' | 'video' | 'audio';
12
+ type KnownRelationKind = 'timeline-track' | 'track-clip' | 'clip-marker' | 'marker-content' | 'axvideo-marker' | 'marker-timeline' | 'from-asset' | 'generated' | 'caption-alignment' | 'clip-anchor' | 'phonetic-script-render' | 'voice-timbre' | 'audio-script-source' | 'audio-script-marker';
13
13
  type AuthorableRelationKind = KnownRelationKind;
14
- interface BoundedNativeSequencePayload extends JsonObject {
15
- /** Factual coordinates from recalled media metadata; never invent an end/duration. */
16
- extent: {
17
- kind: 'bounded';
18
- start: number;
19
- end: number;
20
- };
21
- sampling: 'native';
22
- coordinateSpace: JsonValue;
23
- }
24
- interface UnboundedConstantSequencePayload extends JsonObject {
25
- extent: {
26
- kind: 'unbounded';
27
- start: number;
28
- };
29
- sampling: 'constant';
30
- coordinateSpace: JsonValue;
31
- }
32
- interface BoundedDerivedSequencePayload extends JsonObject {
33
- extent: {
34
- kind: 'bounded';
35
- start: number;
36
- end: number;
37
- };
38
- sampling: 'derived';
39
- coordinateSpace: JsonValue;
14
+ /**
15
+ * Content states how long it runs and nothing else: where it is taken from and
16
+ * where it lands both belong to its Sequence Marker.
17
+ */
18
+ interface OwnDurationPayload extends JsonObject {
19
+ /** Factual whole milliseconds from recalled media metadata; never invented. */
20
+ durationMs: number;
21
+ }
22
+ /** A still frame runs for as long as its use asks, so it states no length. */
23
+ interface NoDurationPayload extends JsonObject {
24
+ durationMs: null;
40
25
  }
41
26
  type ScriptTextSegment = JsonObject & {
42
27
  segmentId: string;
43
28
  text: string;
44
29
  language?: string;
45
30
  };
46
- type MediaAssetPayload = JsonObject & {
47
- external: {
48
- system: 'memota' | 'memota-speech';
31
+ /** Only an Asset entity states where bytes live; everything else links to one. */
32
+ type AssetPayload = JsonObject & {
33
+ system: 'memota' | 'memota-speech';
34
+ key: string;
35
+ storageKey?: string;
36
+ };
37
+ /** The voice-library timbre a synthesized Audio was rendered with. */
38
+ type VoiceIdentityPayload = JsonObject & {
39
+ voice: {
40
+ system: 'voice-library';
49
41
  key: string;
42
+ name?: string;
50
43
  };
51
- storageKey?: string;
52
44
  };
53
45
  type CaptionTextSelection = JsonObject & {
54
46
  segmentId: string; /** Half-open Unicode code-point range within the selected source segment. */
@@ -58,19 +50,22 @@ type CaptionTextSelection = JsonObject & {
58
50
  };
59
51
  };
60
52
  interface EntityPayloadByKind {
61
- axvideo: BoundedDerivedSequencePayload;
53
+ /** Its Timeline decides how long it runs, so it stores no length. */
54
+ axvideo: JsonObject;
62
55
  timeline: JsonObject;
63
56
  track: JsonObject & {
64
57
  hidden?: boolean;
65
58
  role?: string;
66
59
  };
67
60
  clip: JsonObject;
68
- /** Physical resource fields; never a copy of Caption content. */
69
- asset: JsonObject;
70
- video: BoundedNativeSequencePayload & MediaAssetPayload;
71
- audio: BoundedNativeSequencePayload & MediaAssetPayload;
72
- voice: BoundedNativeSequencePayload & MediaAssetPayload;
73
- image: UnboundedConstantSequencePayload & MediaAssetPayload;
61
+ /** Where the bytes live. Reached from other entities by from-asset. */
62
+ asset: AssetPayload;
63
+ video: OwnDurationPayload;
64
+ /** Every playable sound, including video original audio and synthesized voiceovers. */
65
+ audio: OwnDurationPayload;
66
+ /** A timbre identity, never playable content; the rendered take is an `audio` entity. */
67
+ voice: VoiceIdentityPayload;
68
+ image: NoDurationPayload;
74
69
  'sequence-marker': JsonObject & {
75
70
  sourceRange: {
76
71
  start: number;
@@ -104,7 +99,7 @@ interface EntityPayloadByKind {
104
99
  phonemeScript?: string;
105
100
  prosody?: JsonObject;
106
101
  };
107
- caption: BoundedNativeSequencePayload & {
102
+ caption: OwnDurationPayload & {
108
103
  baseEntityIds: string[];
109
104
  selection: CaptionTextSelection;
110
105
  style?: JsonObject;
@@ -115,8 +110,15 @@ interface EntityPayloadByKind {
115
110
  }[];
116
111
  };
117
112
  }
118
- /** Stored own fields; a variant may obtain required content fields from its declared bases. */
119
- type StoredEntityPayload<K extends KnownEntityKind> = EntityPayloadByKind[K] | (K extends 'caption' ? JsonObject & Pick<MediaAssetPayload, 'external'> : never) | (JsonObject & Partial<EntityPayloadByKind[K]> & {
113
+ /**
114
+ * Stored own fields; a variant may obtain required content fields from its
115
+ * declared bases.
116
+ *
117
+ * Caption and Audio may also be declared resource-only: the ASR transcript and
118
+ * the synthesized voiceover are attached by the host, which then fills in the
119
+ * remaining factual fields.
120
+ */
121
+ type StoredEntityPayload<K extends KnownEntityKind> = EntityPayloadByKind[K] | (K extends 'caption' | 'audio' ? Record<string, never> : never) | (JsonObject & Partial<EntityPayloadByKind[K]> & {
120
122
  baseEntityIds: string[];
121
123
  });
122
124
  interface SandboxEntity<K extends KnownEntityKind = KnownEntityKind> {
@@ -238,4 +240,4 @@ interface BusinessRelationFacade {
238
240
  }
239
241
  //#endregion
240
242
  export { UpdateEntityInput as C, UnlinkRelationInput as S, LinkRelationInput as _, DeleteEntityInput as a, SandboxEntity as b, EntitySandboxCheckpoint as c, JsonObject as d, JsonPrimitive as f, LinkGeneratedRelationInput as g, KnownRelationKind as h, CreateEntityInput as i, EntityStoreSnapshot as l, KnownEntityKind as m, BusinessEntityFacade as n, EntityCommand as o, JsonValue as p, BusinessRelationFacade as r, EntityPlanState as s, AuthorableRelationKind as t, EntityUpdateInput as u, RelationUpdateInput as v, SandboxRelation as x, ResourceEntityKind as y };
241
- //# sourceMappingURL=entity-contract-DlmUSouB.d.mts.map
243
+ //# sourceMappingURL=entity-contract-Cf3AiSe7.d.mts.map