@cat-factory/contracts 0.213.0 → 0.214.0

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.
@@ -54,7 +54,7 @@ export declare const binaryGeneratorDefinitionSchema: v.ObjectSchema<{
54
54
  * The content types it produces. At least one: a generator that produces nothing is not a
55
55
  * generator, and an empty list would make it match every step's requirements by vacuity.
56
56
  */
57
- readonly modalities: v.SchemaWithPipe<readonly [v.ArraySchema<v.PicklistSchema<["image", "audio", "video", "3d", "document"], undefined>, undefined>, v.MinLengthAction<("3d" | "audio" | "document" | "image" | "video")[], 1, undefined>]>;
57
+ readonly modalities: v.SchemaWithPipe<readonly [v.ArraySchema<v.PicklistSchema<["image", "audio", "video", "3d-model", "3d-scene", "document"], undefined>, undefined>, v.MinLengthAction<("3d-model" | "3d-scene" | "audio" | "document" | "image" | "video")[], 1, undefined>]>;
58
58
  /**
59
59
  * The concrete media types it can emit (`image/png`, `audio/mpeg`), when the integration
60
60
  * pins them down. Absent ⇒ only the coarse {@link modalities} are known, which the brief
@@ -133,7 +133,7 @@ export declare const registeredBinaryGeneratorSchema: v.ObjectSchema<{
133
133
  readonly name: v.StringSchema<undefined>;
134
134
  readonly summary: v.StringSchema<undefined>;
135
135
  /** What it produces — what the builder checks a step's declared content types against. */
136
- readonly modalities: v.ArraySchema<v.PicklistSchema<["image", "audio", "video", "3d", "document"], undefined>, undefined>;
136
+ readonly modalities: v.ArraySchema<v.PicklistSchema<["image", "audio", "video", "3d-model", "3d-scene", "document"], undefined>, undefined>;
137
137
  /** The concrete formats it pins down, when it declares any. Shown as detail, never a filter. */
138
138
  readonly mediaTypes: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.ToLowerCaseAction, v.MinLengthAction<string, 3, undefined>, v.MaxLengthAction<string, 128, undefined>, v.RegexAction<string, "must be a media type of the form type/subtype">]>, undefined>, undefined>;
139
139
  }, undefined>;
@@ -14,20 +14,88 @@ import * as v from 'valibot';
14
14
  * is the whole integration, its media types and what a step can do with the result. A
15
15
  * deployment that must tell a music generator from a speech generator says so in the
16
16
  * definition's `mediaTypes` and its description.
17
+ *
18
+ * **3D is TWO members, and the reason is that nothing else can carry the distinction.** A single
19
+ * asset and a composed scene are different products of different integrations, and what a step
20
+ * does with the result is not comparable — one is attached to an entity, the other is loaded as
21
+ * an environment. That passes the audio-versus-video test on the ground that matters. It fails it
22
+ * on one: their MEDIA TYPES are identical. GLB, FBX, USDZ and `.blend` each carry either an
23
+ * object or a whole scene graph, so no format tells you which you were handed and
24
+ * {@link modalitiesOfMediaType} does not pretend otherwise. That is exactly why the split has to
25
+ * live HERE: if the container could say it, a media type would already have said it, and a step
26
+ * that must deliver a level could go on being admitted against a prop generator.
27
+ *
28
+ * What the split is NOT is a licence to slice the others by scope. `image` does not become
29
+ * sprite-versus-background, because a step's format requirement (`binaryOutput.mediaTypes`) is
30
+ * what distinguishes a PNG from a JPEG and a prompt is what distinguishes a sprite from a
31
+ * backdrop. A member earns its place only when neither of those can tell two deliverables apart.
17
32
  */
18
- export declare const binaryModalitySchema: v.PicklistSchema<["image", "audio", "video", "3d", "document"], undefined>;
33
+ export declare const binaryModalitySchema: v.PicklistSchema<["image", "audio", "video", "3d-model", "3d-scene", "document"], undefined>;
19
34
  export type BinaryModality = v.InferOutput<typeof binaryModalitySchema>;
20
35
  /**
21
- * The {@link BinaryModality} a media type belongs to, or `null` when nothing here recognises it.
22
- *
23
- * `null` is a REAL answer and callers must keep it apart from a modality: it means the platform
24
- * does not know what this content is, which is different from knowing it is not an image. It is
25
- * what lets a registration's declared media types be checked against its declared modalities
26
- * (a generator claiming `audio` while listing `image/png` is a configuration error, not a
27
- * judgement call) and what lets a settled step's declared artifacts be CLASSIFIED in code rather
28
- * than by asking the model what kind of thing it just made.
36
+ * Whether a stored value is still a member of the vocabulary DERIVED from the picklist, so it
37
+ * cannot drift from it the way a hand-written second list would.
38
+ *
39
+ * This vocabulary is closed but PERSISTED (`stepOptions.binaryOutput.modalities`), and those two
40
+ * facts together are what makes the guard necessary: a member retired from the union goes on
41
+ * existing in saved pipelines, as `3d` did when it split into `3d-model` and `3d-scene`. A reader
42
+ * that maps a modality through an exhaustive `Record` or `switch` is therefore total against the
43
+ * TYPE and partial against the DATA the gap where a lookup returns `undefined` and a call on it
44
+ * throws. Narrow with this first, and render the negative case as the retired value it is: nothing
45
+ * can know which current member was meant, and guessing one would quietly rewrite a requirement
46
+ * that the split exists to make someone restate.
47
+ */
48
+ export declare function isBinaryModality(value: string): value is BinaryModality;
49
+ /**
50
+ * Every {@link BinaryModality} a media type is CONSISTENT with — empty when nothing here
51
+ * recognises it.
52
+ *
53
+ * A LIST rather than one answer, because for 3D there is genuinely more than one and saying so
54
+ * is the whole point. `model/gltf-binary` is a GLB; a GLB is one prop or an entire environment
55
+ * and the container does not record which. Returning `3d-model` for it would classify every
56
+ * delivered scene as an asset, and picking either would make the boot check below refuse a
57
+ * correct registration.
58
+ *
59
+ * Empty is a REAL answer and callers must keep it apart from a modality: it means the platform
60
+ * does not know what this content is, which is different from knowing it is not an image. Two
61
+ * things read this — a registration's declared media types are checked against its declared
62
+ * modalities (a generator claiming `audio` while listing `image/png` is a configuration error,
63
+ * not a judgement call), and a settled step's declared artifacts are CLASSIFIED in code rather
64
+ * than by asking the model what kind of thing it just made. Each has to say what it does with a
65
+ * MULTI-member answer: the first passes when the sets INTERSECT, the second declines to classify
66
+ * at all, because an ambiguous answer is not a verdict.
67
+ */
68
+ export declare function modalitiesOfMediaType(value: string): BinaryModality[];
69
+ /**
70
+ * The modality a media type UNAMBIGUOUSLY identifies, or `null` when it identifies none or more
71
+ * than one.
72
+ *
73
+ * For classifying something that already exists — a stored artifact — where a guess is worse than
74
+ * an absence. A `.glb` collapses `3d-model` and `3d-scene`, so it classifies as neither and the
75
+ * artifact carries no modality: "we cannot tell what this is" is not "this is not an image", and
76
+ * the step's own declaration is the only thing that ever knew which of the two was being made.
29
77
  */
30
78
  export declare function modalityOfMediaType(value: string): BinaryModality | null;
79
+ /**
80
+ * A media type reduced to the `type/subtype` two people mean the same thing by — lowercased,
81
+ * trimmed, parameters dropped — or `null` when there is no `type/subtype` in it at all.
82
+ *
83
+ * The ONE definition of "the same format", because three places compare media types and two of
84
+ * them receive text nobody normalised. A step's declared formats and a generator's declared
85
+ * formats both come through {@link mediaTypeSchema}, which already lowercases and refuses
86
+ * parameters, so those two match on plain equality; a SETTLED artifact's `contentType` is the
87
+ * agent's own prose (`image/PNG`, `model/gltf-binary; charset=binary`) and matches nothing until
88
+ * it comes through here. A second copy of this reduction is how `model/GLTF-binary` becomes a
89
+ * format the platform reports as undelivered while the file sits exactly where it was asked for.
90
+ *
91
+ * Note what it deliberately does NOT do: it maps no synonyms. `model/obj` and
92
+ * `application/x-tgif` are the same file and stay different values here, because a step's format
93
+ * requirement is checked by EXACT match against what a generator declared, and a matcher that
94
+ * quietly accepted a near-neighbour would admit a GLB where an OBJ was required — which is the
95
+ * failure the requirement exists to prevent. The two sides agree by spelling the format the same
96
+ * way, and the brief tells the agent the exact string.
97
+ */
98
+ export declare function normalizeMediaType(value: string): string | null;
31
99
  /**
32
100
  * A media type as `type/subtype` (parameters are NOT accepted — a generator declares what it
33
101
  * produces, not how one request happened to be encoded).
@@ -1 +1 @@
1
- {"version":3,"file":"binary-modalities.d.ts","sourceRoot":"","sources":["../src/binary-modalities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAY5B;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,oBAAoB,4EAW/B,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAoBxE;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,uPAU3B,CAAA"}
1
+ {"version":3,"file":"binary-modalities.d.ts","sourceRoot":"","sources":["../src/binary-modalities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAY5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,oBAAoB,8FAqB/B,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,cAAc,CAEvE;AAOD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAuBrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAGxE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI/D;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,uPAU3B,CAAA"}
@@ -23,6 +23,21 @@ import * as v from 'valibot';
23
23
  * is the whole integration, its media types and what a step can do with the result. A
24
24
  * deployment that must tell a music generator from a speech generator says so in the
25
25
  * definition's `mediaTypes` and its description.
26
+ *
27
+ * **3D is TWO members, and the reason is that nothing else can carry the distinction.** A single
28
+ * asset and a composed scene are different products of different integrations, and what a step
29
+ * does with the result is not comparable — one is attached to an entity, the other is loaded as
30
+ * an environment. That passes the audio-versus-video test on the ground that matters. It fails it
31
+ * on one: their MEDIA TYPES are identical. GLB, FBX, USDZ and `.blend` each carry either an
32
+ * object or a whole scene graph, so no format tells you which you were handed and
33
+ * {@link modalitiesOfMediaType} does not pretend otherwise. That is exactly why the split has to
34
+ * live HERE: if the container could say it, a media type would already have said it, and a step
35
+ * that must deliver a level could go on being admitted against a prop generator.
36
+ *
37
+ * What the split is NOT is a licence to slice the others by scope. `image` does not become
38
+ * sprite-versus-background, because a step's format requirement (`binaryOutput.mediaTypes`) is
39
+ * what distinguishes a PNG from a JPEG and a prompt is what distinguishes a sprite from a
40
+ * backdrop. A member earns its place only when neither of those can tell two deliverables apart.
26
41
  */
27
42
  export const binaryModalitySchema = v.picklist([
28
43
  /** Still images — `image/png`, `image/webp`, `image/jpeg`, `image/svg+xml`. */
@@ -31,49 +46,127 @@ export const binaryModalitySchema = v.picklist([
31
46
  'audio',
32
47
  /** Moving pictures, with or without an audio track — `video/mp4`, `video/webm`. */
33
48
  'video',
34
- /** 3D geometry — `model/gltf-binary`, `model/obj`. */
35
- '3d',
49
+ /**
50
+ * ONE 3D asset: a prop, a character, a part — the thing an inventory counts and a scene places.
51
+ * Its container is `model/gltf-binary`, `model/obj`, `application/x-blender`, and so on; which
52
+ * one matters to whoever opens it, and that is what `binaryOutput.mediaTypes` is for.
53
+ */
54
+ '3d-model',
55
+ /**
56
+ * A composed 3D scene: several assets with a hierarchy, and typically transforms, materials,
57
+ * cameras or lights. The SAME containers as {@link '3d-model'} — the difference is in what the
58
+ * file holds, which no media type states, so it is stated here or nowhere.
59
+ */
60
+ '3d-scene',
36
61
  /** A rendered, paginated document — `application/pdf`. */
37
62
  'document',
38
63
  ]);
39
64
  /**
40
- * The {@link BinaryModality} a media type belongs to, or `null` when nothing here recognises it.
65
+ * Whether a stored value is still a member of the vocabulary DERIVED from the picklist, so it
66
+ * cannot drift from it the way a hand-written second list would.
41
67
  *
42
- * `null` is a REAL answer and callers must keep it apart from a modality: it means the platform
43
- * does not know what this content is, which is different from knowing it is not an image. It is
44
- * what lets a registration's declared media types be checked against its declared modalities
45
- * (a generator claiming `audio` while listing `image/png` is a configuration error, not a
46
- * judgement call) and what lets a settled step's declared artifacts be CLASSIFIED in code rather
47
- * than by asking the model what kind of thing it just made.
68
+ * This vocabulary is closed but PERSISTED (`stepOptions.binaryOutput.modalities`), and those two
69
+ * facts together are what makes the guard necessary: a member retired from the union goes on
70
+ * existing in saved pipelines, as `3d` did when it split into `3d-model` and `3d-scene`. A reader
71
+ * that maps a modality through an exhaustive `Record` or `switch` is therefore total against the
72
+ * TYPE and partial against the DATA — the gap where a lookup returns `undefined` and a call on it
73
+ * throws. Narrow with this first, and render the negative case as the retired value it is: nothing
74
+ * can know which current member was meant, and guessing one would quietly rewrite a requirement
75
+ * that the split exists to make someone restate.
48
76
  */
49
- export function modalityOfMediaType(value) {
50
- const type = value.trim().toLowerCase().split(';')[0]?.trim() ?? '';
77
+ export function isBinaryModality(value) {
78
+ return BINARY_MODALITY_SET.has(value);
79
+ }
80
+ const BINARY_MODALITY_SET = new Set(binaryModalitySchema.options);
81
+ /** The 3D containers, which say the content is 3D and DELIBERATELY nothing more. */
82
+ const THREE_D = ['3d-model', '3d-scene'];
83
+ /**
84
+ * Every {@link BinaryModality} a media type is CONSISTENT with — empty when nothing here
85
+ * recognises it.
86
+ *
87
+ * A LIST rather than one answer, because for 3D there is genuinely more than one and saying so
88
+ * is the whole point. `model/gltf-binary` is a GLB; a GLB is one prop or an entire environment
89
+ * and the container does not record which. Returning `3d-model` for it would classify every
90
+ * delivered scene as an asset, and picking either would make the boot check below refuse a
91
+ * correct registration.
92
+ *
93
+ * Empty is a REAL answer and callers must keep it apart from a modality: it means the platform
94
+ * does not know what this content is, which is different from knowing it is not an image. Two
95
+ * things read this — a registration's declared media types are checked against its declared
96
+ * modalities (a generator claiming `audio` while listing `image/png` is a configuration error,
97
+ * not a judgement call), and a settled step's declared artifacts are CLASSIFIED in code rather
98
+ * than by asking the model what kind of thing it just made. Each has to say what it does with a
99
+ * MULTI-member answer: the first passes when the sets INTERSECT, the second declines to classify
100
+ * at all, because an ambiguous answer is not a verdict.
101
+ */
102
+ export function modalitiesOfMediaType(value) {
103
+ const type = normalizeMediaType(value) ?? '';
51
104
  const [top, subtype] = type.split('/');
52
105
  if (!top || !subtype)
53
- return null;
106
+ return [];
54
107
  if (top === 'image')
55
- return 'image';
108
+ return ['image'];
56
109
  if (top === 'audio')
57
- return 'audio';
110
+ return ['audio'];
58
111
  if (top === 'video')
59
- return 'video';
112
+ return ['video'];
60
113
  if (top === 'model')
61
- return '3d';
114
+ return THREE_D;
62
115
  if (top === 'application') {
63
116
  if (subtype === 'pdf')
64
- return 'document';
117
+ return ['document'];
65
118
  // The 3D formats that predate `model/*` and are still what tooling emits: `sla` is STL, and
66
119
  // `x-tgif` is what the shared mime database maps `.obj` to (an old collision with the TGIF
67
120
  // drawing format, but it IS the type an OBJ file is served as, so recognising it is right).
68
- // `octet-stream` stays null on purpose — it is the "no idea" type, and guessing `3d` from it
121
+ // `octet-stream` stays empty on purpose — it is the "no idea" type, and guessing 3D from it
69
122
  // would classify every unlabelled download as a model.
70
123
  if (subtype === 'octet-stream')
71
- return null;
72
- if (['gltf+json', 'x-gltf', 'sla', 'x-tgif'].includes(subtype))
73
- return '3d';
74
- return null;
124
+ return [];
125
+ // `x-blender` is the shared mime database's type for a `.blend` file, which is what an
126
+ // EDITABLE 3D deliverable looks like when the consumer is an artist rather than an engine —
127
+ // the same reason `sla` and `x-tgif` are here rather than only the registered `model/*` names.
128
+ if (['gltf+json', 'x-gltf', 'sla', 'x-tgif', 'x-blender'].includes(subtype))
129
+ return THREE_D;
130
+ return [];
75
131
  }
76
- return null;
132
+ return [];
133
+ }
134
+ /**
135
+ * The modality a media type UNAMBIGUOUSLY identifies, or `null` when it identifies none or more
136
+ * than one.
137
+ *
138
+ * For classifying something that already exists — a stored artifact — where a guess is worse than
139
+ * an absence. A `.glb` collapses `3d-model` and `3d-scene`, so it classifies as neither and the
140
+ * artifact carries no modality: "we cannot tell what this is" is not "this is not an image", and
141
+ * the step's own declaration is the only thing that ever knew which of the two was being made.
142
+ */
143
+ export function modalityOfMediaType(value) {
144
+ const modalities = modalitiesOfMediaType(value);
145
+ return modalities.length === 1 ? (modalities[0] ?? null) : null;
146
+ }
147
+ /**
148
+ * A media type reduced to the `type/subtype` two people mean the same thing by — lowercased,
149
+ * trimmed, parameters dropped — or `null` when there is no `type/subtype` in it at all.
150
+ *
151
+ * The ONE definition of "the same format", because three places compare media types and two of
152
+ * them receive text nobody normalised. A step's declared formats and a generator's declared
153
+ * formats both come through {@link mediaTypeSchema}, which already lowercases and refuses
154
+ * parameters, so those two match on plain equality; a SETTLED artifact's `contentType` is the
155
+ * agent's own prose (`image/PNG`, `model/gltf-binary; charset=binary`) and matches nothing until
156
+ * it comes through here. A second copy of this reduction is how `model/GLTF-binary` becomes a
157
+ * format the platform reports as undelivered while the file sits exactly where it was asked for.
158
+ *
159
+ * Note what it deliberately does NOT do: it maps no synonyms. `model/obj` and
160
+ * `application/x-tgif` are the same file and stay different values here, because a step's format
161
+ * requirement is checked by EXACT match against what a generator declared, and a matcher that
162
+ * quietly accepted a near-neighbour would admit a GLB where an OBJ was required — which is the
163
+ * failure the requirement exists to prevent. The two sides agree by spelling the format the same
164
+ * way, and the brief tells the agent the exact string.
165
+ */
166
+ export function normalizeMediaType(value) {
167
+ const type = value.trim().toLowerCase().split(';')[0]?.trim() ?? '';
168
+ const [top, subtype] = type.split('/');
169
+ return top && subtype ? `${top}/${subtype}` : null;
77
170
  }
78
171
  /**
79
172
  * A media type as `type/subtype` (parameters are NOT accepted — a generator declares what it
@@ -1 +1 @@
1
- {"version":3,"file":"binary-modalities.js","sourceRoot":"","sources":["../src/binary-modalities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,8EAA8E;AAC9E,kGAAkG;AAClG,8FAA8F;AAC9F,0CAA0C;AAC1C,EAAE;AACF,kGAAkG;AAClG,gGAAgG;AAChG,kDAAkD;AAClD,8EAA8E;AAE9E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC7C,+EAA+E;IAC/E,OAAO;IACP,2FAA2F;IAC3F,OAAO;IACP,mFAAmF;IACnF,OAAO;IACP,sDAAsD;IACtD,IAAI;IACJ,0DAA0D;IAC1D,UAAU;CACX,CAAC,CAAA;AAGF;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IACnE,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACtC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IACjC,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,OAAO,CAAA;IACnC,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,OAAO,CAAA;IACnC,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,OAAO,CAAA;IACnC,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,IAAI,CAAA;IAChC,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;QAC1B,IAAI,OAAO,KAAK,KAAK;YAAE,OAAO,UAAU,CAAA;QACxC,4FAA4F;QAC5F,2FAA2F;QAC3F,4FAA4F;QAC5F,6FAA6F;QAC7F,uDAAuD;QACvD,IAAI,OAAO,KAAK,cAAc;YAAE,OAAO,IAAI,CAAA;QAC3C,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAA;QAC3E,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CACnC,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,IAAI,EAAE,EACR,CAAC,CAAC,WAAW,EAAE,EACf,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EACd,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAChB,CAAC,CAAC,KAAK,CACL,0DAA0D,EAC1D,+CAA+C,CAChD,CACF,CAAA"}
1
+ {"version":3,"file":"binary-modalities.js","sourceRoot":"","sources":["../src/binary-modalities.ts"],"names":[],"mappings":"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"}
@@ -43,7 +43,43 @@ export declare const binaryOutputConfigSchema: v.ObjectSchema<{
43
43
  * audio" is a statement about the WORK, and deriving it from the current selection would make
44
44
  * removing the audio generator look like a change of requirements rather than a break.
45
45
  */
46
- readonly modalities: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["image", "audio", "video", "3d", "document"], undefined>, undefined>, undefined>;
46
+ readonly modalities: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["image", "audio", "video", "3d-model", "3d-scene", "document"], undefined>, undefined>, undefined>;
47
+ /**
48
+ * The concrete FORMATS this step must deliver, one notch finer than {@link modalities}, for the
49
+ * deliverables where the container IS the requirement rather than a rendering preference.
50
+ *
51
+ * 3D is why this exists. PNG versus WebP is a genre question and belongs in a prompt, but GLB,
52
+ * USDZ and FBX are all one modality and none of them substitutes for another: a Godot importer
53
+ * takes the first, a RealityKit pipeline the second, an art pipeline the third. A step whose
54
+ * mesh must load in the game can otherwise be admitted against an integration that cannot emit a
55
+ * loadable container, and the failure arrives at the end of a paid run as an asset nobody can
56
+ * open — which reads as a bad generation rather than as a selection nothing checked.
57
+ *
58
+ * Note the direction that gives this axis its scope: it is what the modality vocabulary does NOT
59
+ * have to split for. `3d-model` and `3d-scene` are two members precisely because no format tells
60
+ * them apart, and `image` stays one because a format tells PNG from JPEG — so a distinction any
61
+ * container can carry is stated HERE, and only what none can carry earns a modality.
62
+ *
63
+ * EVERY entry must be covered, not any one of them: a step needing a GLB for the engine AND an
64
+ * FBX the artists can open in Blender declares both, and both are checked. "Any of these will
65
+ * do" is deliberately not expressible — the agent has to name concrete formats on the vendor
66
+ * call, and a requirement that leaves it a choice hands that decision to the party with the
67
+ * least basis for making it. Declare the format you need, not the set you would accept.
68
+ *
69
+ * Checked by EXACT match against the {@link BinaryGeneratorDefinition.mediaTypes} a selected
70
+ * integration declares (both sides come through `mediaTypeSchema`, so case and parameters are
71
+ * already reconciled), and NOT translated into a modality: `modalityOfMediaType` recognises only
72
+ * the formats the platform happens to know, so inferring one here would make the strength of the
73
+ * check depend on whether we recognise the string — a requirement spelled with a brand-new
74
+ * container would silently lose the coarse check its neighbour keeps. The two lists are
75
+ * independent statements and both are enforced as written.
76
+ *
77
+ * Absent ⇒ no format requirement, which is the ordinary case and stays the ordinary case:
78
+ * {@link modalities} is the statement about the WORK. Like it, this is never defaulted from the
79
+ * current selection — deriving a requirement from what is selected would make REMOVING a
80
+ * generator look like a change of requirements rather than a break.
81
+ */
82
+ readonly mediaTypes: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.ToLowerCaseAction, v.MinLengthAction<string, 3, undefined>, v.MaxLengthAction<string, 128, undefined>, v.RegexAction<string, "must be a media type of the form type/subtype">]>, undefined>, undefined>;
47
83
  }, undefined>;
48
84
  export type BinaryOutputConfig = v.InferOutput<typeof binaryOutputConfigSchema>;
49
85
  /** One stored artifact a binary-generating step declared in its reply's machine-read block. */
@@ -80,7 +116,7 @@ export declare const binaryOutputArtifactSchema: v.ObjectSchema<{
80
116
  * one the platform recognises: "we do not know what this is" and "this is not an image" are
81
117
  * different answers, and only the second could justify a warning.
82
118
  */
83
- readonly modality: v.OptionalSchema<v.PicklistSchema<["image", "audio", "video", "3d", "document"], undefined>, undefined>;
119
+ readonly modality: v.OptionalSchema<v.PicklistSchema<["image", "audio", "video", "3d-model", "3d-scene", "document"], undefined>, undefined>;
84
120
  }, undefined>;
85
121
  export type BinaryOutputArtifact = v.InferOutput<typeof binaryOutputArtifactSchema>;
86
122
  /**
@@ -132,7 +168,7 @@ export declare const binaryOutputReportSchema: v.ObjectSchema<{
132
168
  * one the platform recognises: "we do not know what this is" and "this is not an image" are
133
169
  * different answers, and only the second could justify a warning.
134
170
  */
135
- readonly modality: v.OptionalSchema<v.PicklistSchema<["image", "audio", "video", "3d", "document"], undefined>, undefined>;
171
+ readonly modality: v.OptionalSchema<v.PicklistSchema<["image", "audio", "video", "3d-model", "3d-scene", "document"], undefined>, undefined>;
136
172
  }, undefined>, undefined>;
137
173
  /** Distinct `service` ids named in entries that the resolved catalog does not contain. */
138
174
  readonly unknownServices: v.ArraySchema<v.StringSchema<undefined>, undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"binary-outputs.d.ts","sourceRoot":"","sources":["../src/binary-outputs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAmB5B;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB;IACnC;;;;OAIG;;IAEH;;;;;;OAMG;;IAEH;;;;;;;;;OASG;;IAEH;;;;;;;;;;OAUG;;aAEH,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE/E,+FAA+F;AAC/F,eAAO,MAAM,0BAA0B;IACrC;;;;;OAKG;;IAEH;;;OAGG;;IAEH,8FAA8F;;IAE9F,uEAAuE;;IAEvE,oDAAoD;;IAEpD;;;;;;OAMG;;IAEH;;;;;OAKG;;aAEH,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAEnF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,wBAAwB;;QAnDnC;;;;;WAKG;;QAEH;;;WAGG;;QAEH,8FAA8F;;QAE9F,uEAAuE;;QAEvE,oDAAoD;;QAEpD;;;;;;WAMG;;QAEH;;;;;WAKG;;;IAsBH,0FAA0F;;IAE1F;;;;;;OAMG;;IAEH;;;;;;;;OAQG;;IAEH,2FAA2F;;IAE3F,qDAAqD;;IAErD,0FAA0F;;IAE1F,qEAAqE;;aAErE,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA"}
1
+ {"version":3,"file":"binary-outputs.d.ts","sourceRoot":"","sources":["../src/binary-outputs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAmB5B;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB;IACnC;;;;OAIG;;IAEH;;;;;;OAMG;;IAEH;;;;;;;;;OASG;;IAEH;;;;;;;;;;OAUG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;;aAEH,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE/E,+FAA+F;AAC/F,eAAO,MAAM,0BAA0B;IACrC;;;;;OAKG;;IAEH;;;OAGG;;IAEH,8FAA8F;;IAE9F,uEAAuE;;IAEvE,oDAAoD;;IAEpD;;;;;;OAMG;;IAEH;;;;;OAKG;;aAEH,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAEnF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,wBAAwB;;QAnDnC;;;;;WAKG;;QAEH;;;WAGG;;QAEH,8FAA8F;;QAE9F,uEAAuE;;QAEvE,oDAAoD;;QAEpD;;;;;;WAMG;;QAEH;;;;;WAKG;;;IAsBH,0FAA0F;;IAE1F;;;;;;OAMG;;IAEH;;;;;;;;OAQG;;IAEH,2FAA2F;;IAE3F,qDAAqD;;IAErD,0FAA0F;;IAE1F,qEAAqE;;aAErE,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import * as v from 'valibot';
2
- import { binaryModalitySchema } from './binary-modalities.js';
2
+ import { binaryModalitySchema, mediaTypeSchema } from './binary-modalities.js';
3
3
  // Wire vocabulary for BINARY-OUTPUT agent steps (docs/initiatives/binary-output-foundational-storage.md):
4
4
  // a step whose kind GENERATES binary artifacts (image generation is the canonical example) and
5
5
  // stores them through a FOUNDATIONAL SERVICE the step selected from the workspace's catalog —
@@ -53,6 +53,42 @@ export const binaryOutputConfigSchema = v.object({
53
53
  * removing the audio generator look like a change of requirements rather than a break.
54
54
  */
55
55
  modalities: v.optional(v.array(binaryModalitySchema)),
56
+ /**
57
+ * The concrete FORMATS this step must deliver, one notch finer than {@link modalities}, for the
58
+ * deliverables where the container IS the requirement rather than a rendering preference.
59
+ *
60
+ * 3D is why this exists. PNG versus WebP is a genre question and belongs in a prompt, but GLB,
61
+ * USDZ and FBX are all one modality and none of them substitutes for another: a Godot importer
62
+ * takes the first, a RealityKit pipeline the second, an art pipeline the third. A step whose
63
+ * mesh must load in the game can otherwise be admitted against an integration that cannot emit a
64
+ * loadable container, and the failure arrives at the end of a paid run as an asset nobody can
65
+ * open — which reads as a bad generation rather than as a selection nothing checked.
66
+ *
67
+ * Note the direction that gives this axis its scope: it is what the modality vocabulary does NOT
68
+ * have to split for. `3d-model` and `3d-scene` are two members precisely because no format tells
69
+ * them apart, and `image` stays one because a format tells PNG from JPEG — so a distinction any
70
+ * container can carry is stated HERE, and only what none can carry earns a modality.
71
+ *
72
+ * EVERY entry must be covered, not any one of them: a step needing a GLB for the engine AND an
73
+ * FBX the artists can open in Blender declares both, and both are checked. "Any of these will
74
+ * do" is deliberately not expressible — the agent has to name concrete formats on the vendor
75
+ * call, and a requirement that leaves it a choice hands that decision to the party with the
76
+ * least basis for making it. Declare the format you need, not the set you would accept.
77
+ *
78
+ * Checked by EXACT match against the {@link BinaryGeneratorDefinition.mediaTypes} a selected
79
+ * integration declares (both sides come through `mediaTypeSchema`, so case and parameters are
80
+ * already reconciled), and NOT translated into a modality: `modalityOfMediaType` recognises only
81
+ * the formats the platform happens to know, so inferring one here would make the strength of the
82
+ * check depend on whether we recognise the string — a requirement spelled with a brand-new
83
+ * container would silently lose the coarse check its neighbour keeps. The two lists are
84
+ * independent statements and both are enforced as written.
85
+ *
86
+ * Absent ⇒ no format requirement, which is the ordinary case and stays the ordinary case:
87
+ * {@link modalities} is the statement about the WORK. Like it, this is never defaulted from the
88
+ * current selection — deriving a requirement from what is selected would make REMOVING a
89
+ * generator look like a change of requirements rather than a break.
90
+ */
91
+ mediaTypes: v.optional(v.array(mediaTypeSchema)),
56
92
  });
57
93
  /** One stored artifact a binary-generating step declared in its reply's machine-read block. */
58
94
  export const binaryOutputArtifactSchema = v.object({
@@ -1 +1 @@
1
- {"version":3,"file":"binary-outputs.js","sourceRoot":"","sources":["../src/binary-outputs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,0GAA0G;AAC1G,+FAA+F;AAC/F,8FAA8F;AAC9F,+FAA+F;AAC/F,gGAAgG;AAChG,gGAAgG;AAChG,6EAA6E;AAE7E,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CACtB,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,IAAI,EAAE,EACR,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EACd,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EACf,CAAC,CAAC,KAAK,CAAC,sBAAsB,EAAE,4BAA4B,CAAC,CAC9D,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C;;;;OAIG;IACH,gBAAgB,EAAE,SAAS;IAC3B;;;;;;OAMG;IACH,iBAAiB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjD;;;;;;;;;OASG;IACH,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5C;;;;;;;;;;OAUG;IACH,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;CACtD,CAAC,CAAA;AAGF,+FAA+F;AAC/F,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD;;;;;OAKG;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB;;;OAGG;IACH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,8FAA8F;IAC9F,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9B,uEAAuE;IACvE,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACnC,oDAAoD;IACpD,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACnC;;;;;;OAMG;IACH,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;CAC3C,CAAC,CAAA;AAGF;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC;IAC3C,0FAA0F;IAC1F,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC;;;;;;OAMG;IACH,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACtC;;;;;;;;OAQG;IACH,oBAAoB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,2FAA2F;IAC3F,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,qDAAqD;IACrD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,0FAA0F;IAC1F,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACpC,qEAAqE;IACrE,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;CACpC,CAAC,CAAA"}
1
+ {"version":3,"file":"binary-outputs.js","sourceRoot":"","sources":["../src/binary-outputs.ts"],"names":[],"mappings":"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"}
@@ -1177,7 +1177,8 @@ export declare const stepOptionsSchema: v.ObjectSchema<{
1177
1177
  readonly storageServiceId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>, v.RegexAction<string, "must be a lower-kebab slug">]>;
1178
1178
  readonly contextServiceIds: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>, v.RegexAction<string, "must be a lower-kebab slug">]>, undefined>, undefined>;
1179
1179
  readonly generatorIds: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>, v.RegexAction<string, "must be a lower-kebab slug">]>, undefined>, undefined>;
1180
- readonly modalities: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["image", "audio", "video", "3d", "document"], undefined>, undefined>, undefined>;
1180
+ readonly modalities: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["image", "audio", "video", "3d-model", "3d-scene", "document"], undefined>, undefined>, undefined>;
1181
+ readonly mediaTypes: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.ToLowerCaseAction, v.MinLengthAction<string, 3, undefined>, v.MaxLengthAction<string, 128, undefined>, v.RegexAction<string, "must be a media type of the form type/subtype">]>, undefined>, undefined>;
1181
1182
  }, undefined>, undefined>;
1182
1183
  }, undefined>;
1183
1184
  export type StepOptions = v.InferOutput<typeof stepOptionsSchema>;
@@ -1364,7 +1365,8 @@ export declare const pipelineSchema: v.ObjectSchema<{
1364
1365
  readonly storageServiceId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>, v.RegexAction<string, "must be a lower-kebab slug">]>;
1365
1366
  readonly contextServiceIds: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>, v.RegexAction<string, "must be a lower-kebab slug">]>, undefined>, undefined>;
1366
1367
  readonly generatorIds: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>, v.RegexAction<string, "must be a lower-kebab slug">]>, undefined>, undefined>;
1367
- readonly modalities: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["image", "audio", "video", "3d", "document"], undefined>, undefined>, undefined>;
1368
+ readonly modalities: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["image", "audio", "video", "3d-model", "3d-scene", "document"], undefined>, undefined>, undefined>;
1369
+ readonly mediaTypes: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.ToLowerCaseAction, v.MinLengthAction<string, 3, undefined>, v.MaxLengthAction<string, 128, undefined>, v.RegexAction<string, "must be a media type of the form type/subtype">]>, undefined>, undefined>;
1368
1370
  }, undefined>, undefined>;
1369
1371
  }, undefined>, undefined>, undefined>, undefined>;
1370
1372
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../src/entities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../src/entities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAiC5B;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB;IAC/B,4EAA4E;;IAE5E,sEAAsE;;IAEtE,gEAAgE;;aAEhE,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB;IAChC,wDAAwD;;IAExD,iFAAiF;;IAEjF,sFAAsF;;QAtBtF,4EAA4E;;QAE5E,sEAAsE;;QAEtE,gEAAgE;;;aAoBhE,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB;IAC9B;;;;;OAKG;;IAEH,wDAAwD;;IAExD,yCAAyC;;IAEzC,kFAAkF;;IAElF;;;;;OAKG;;aAEH,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAErE;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAczD;AASD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB;IAC9B,2DAA2D;;IAE3D,qFAAqF;;aAErF,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAErE,oFAAoF;AACpF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAE9F;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,aAAa,EAAE,GAAG,SAAS,EACrC,UAAU,EAAE,MAAM,GACjB,MAAM,GAAG,SAAS,CASpB;AAED,uEAAuE;AACvE,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAExF;AAED;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,4CAA4B,CAAA;AAChE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAE7E,eAAO,MAAM,WAAW;;;;;;;;;IAMtB;;;;;OAKG;;;;;;;;;;;IAQH;;;;;;OAMG;;IAEH;;;;;;OAMG;;IAEH;;;;;OAKG;;;IAGH;;;;;OAKG;;;;;;;;;;IAGH;;;;;OAKG;;IAEH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;;;;;;;;;OAeG;;IAEH;;;;;;;OAOG;;IAEH;;;;;;;;;OASG;;IAEH;;;;OAIG;;IAEH;;;;;;OAMG;;IAEH;;;;;;;;;OASG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;IAEH;;;;OAIG;;IAEH;;;;;;OAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;OAMG;;;;;;;;IAEH;;;;;;OAMG;;IAEH;;;;OAIG;;QAjUH,4EAA4E;;QAE5E,sEAAsE;;QAEtE,gEAAgE;;;IA+ThE;;;;;;OAMG;;QAvTH,wDAAwD;;QAExD,iFAAiF;;QAEjF,sFAAsF;;YAtBtF,4EAA4E;;YAE5E,sEAAsE;;YAEtE,gEAAgE;;;;IAuUhE;;;;;;OAMG;;QAvSH;;;;;WAKG;;QAEH,wDAAwD;;QAExD,yCAAyC;;QAEzC,kFAAkF;;QAElF;;;;;WAKG;;;IAuRH;;;;;;;;OAQG;;QA9OH,2DAA2D;;QAE3D,qFAAqF;;;IA8OrF;;;;;OAKG;;IAEH;;;;;;OAMG;;IAEH;;;;OAIG;;IAEH;;;;;OAKG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;;;OAKG;;IAEH;;;;;;OAMG;;IAEH;;;;;;;;OAQG;;IAEH;;;;;;;;OAQG;;aAEH,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,WAAW,CAAC,CAAA;AAErD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,kBAAkB,CAAC,GACrD;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,cAAc,CAAA;CAAE,EAAE,CAO5D;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;IAC/B,mEAAmE;;IAEnE,0EAA0E;;IAE1E,mEAAmE;;IAEnE,2DAA2D;;IAE3D,gDAAgD;;IAEhD,0DAA0D;;IAE1D;;;;;;;;;;;;;OAaG;;IAEH,yEAAyE;;;;;IAOzE;;;;OAIG;;IAEH;;;;;OAKG;;;;;;IAQH;;;;;;;OAOG;;;QAIC,qEAAqE;;;IAIzE,kFAAkF;;aAElF,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE,6DAA6D;AAC7D,eAAO,MAAM,2BAA2B;IA1EtC,mEAAmE;;IAEnE,0EAA0E;;IAE1E,mEAAmE;;IAEnE,2DAA2D;;IAE3D,gDAAgD;;IAEhD,0DAA0D;;IAE1D;;;;;;;;;;;;;OAaG;;IAEH,yEAAyE;;;;;IAOzE;;;;OAIG;;IAEH;;;;;OAKG;;;;;;IAQH;;;;;;;OAOG;;;QAIC,qEAAqE;;;IAIzE,kFAAkF;;yBAMZ,CAAA;AACxE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAErF,oEAAoE;AACpE,eAAO,MAAM,eAAe;IAC1B,sCAAsC;;IAEtC,uCAAuC;;IAEvC,kEAAkE;;aAElE,CAAA;AACF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,eAAe,CAAC,CAAA;AAE7D;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB;IAC5B,wDAAwD;;IAExD,wCAAwC;;IAExC,gDAAgD;;IAEhD,mDAAmD;;IAEnD;;;;OAIG;;IAEH;;;;;OAKG;;IAEH,mFAAmF;;IAEnF,iDAAiD;;IAEjD,8CAA8C;;IAE9C;;;;;;OAMG;;IAEH;;;OAGG;;IAEH,0DAA0D;;QA3D1D,sCAAsC;;QAEtC,uCAAuC;;QAEvC,kEAAkE;;;IAyDlE,wEAAwE;;IAExE;;;;OAIG;;IAEH;;;;;;OAMG;;;;;;;;YA3EH,sCAAsC;;YAEtC,uCAAuC;;YAEvC,kEAAkE;;;;;aAmFlE,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAEjE,mDAAmD;AACnD,eAAO,MAAM,kBAAkB;IAxE7B,wDAAwD;;IAExD,wCAAwC;;IAExC,gDAAgD;;IAEhD,mDAAmD;;IAEnD;;;;OAIG;;IAEH;;;;;OAKG;;IAEH,mFAAmF;;IAEnF,iDAAiD;;IAEjD,8CAA8C;;IAE9C;;;;;;OAMG;;IAEH;;;OAGG;;IAEH,0DAA0D;;QA3D1D,sCAAsC;;QAEtC,uCAAuC;;QAEvC,kEAAkE;;;IAyDlE,wEAAwE;;IAExE;;;;OAIG;;IAEH;;;;;;OAMG;;;;;;;;YA3EH,sCAAsC;;YAEtC,uCAAuC;;YAEvC,kEAAkE;;;;;yBAuFR,CAAA;AAC5D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB;;IAEpC,4FAA4F;;;;;;;;aAE5F,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB;IAC5B;;;;;;;;OAQG;;IAEH;;;;;;;;OAQG;;IAEH;;;;;;;;;OASG;;IAEH;;;;;;;;;;OAUG;;IAEH;;;;;;;;;;;;;OAaG;;;;;;;;aAEH,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAEjE,eAAO,MAAM,cAAc;;;IAGzB;;;;;OAKG;;;IAGH;;;;;;OAMG;;IAEH;;;;;;;OAOG;;IAEH;;;;;;OAMG;;IAEH;;;;;;;;OAQG;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;IAEH;;;;;;;OAOG;;IAEH;;;;;;;;;OASG;;;QAtJH,4FAA4F;;;;;;;;;IAwJ5F;;;;;;OAMG;;QA9IH;;;;;;;;WAQG;;QAEH;;;;;;;;WAQG;;QAEH;;;;;;;;;WASG;;QAEH;;;;;;;;;;WAUG;;QAEH;;;;;;;;;;;;;WAaG;;;;;;;;;IAwFH;;;OAGG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;;;OAKG;;IAEH;;;;;;OAMG;;IAEH;;;;;;;OAOG;;;aAOH,CAAA;AACF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,cAAc,CAAC,CAAA;AAC3D,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAA;AAExE,eAAO,MAAM,eAAe;;;IAG1B,wDAAwD;;;IAGxD,8EAA8E;;IAE9E;;;;OAIG;;aAEH,CAAA;AACF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,eAAe,CAAC,CAAA;AAE7D;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB;IAC5B,2EAA2E;;IAE3E,kDAAkD;;IAElD,uDAAuD;;IAEvD,4DAA4D;;IAE5D,uDAAuD;;IAEvD,iEAAiE;;IAEjE,uFAAuF;;aAEvF,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAEjE;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;IAC3B,gFAAgF;;IAEhF,6EAA6E;;IAE7E,+EAA+E;;aAE/E,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAE/D;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB;IAClC,oGAAoG;;IAEpG,yGAAyG;;;;;;IAMzG,oFAAoF;;IAEpF,8CAA8C;;aAE9C,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAE7E;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;IAC5B,2EAA2E;;IAE3E,wDAAwD;;;QAvBxD,oGAAoG;;QAEpG,yGAAyG;;;;;;QAMzG,oFAAoF;;QAEpF,8CAA8C;;;aAgB9C,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,iBAAiB,CAAC,CAAA"}
@@ -1735,7 +1735,8 @@ export declare const pipelineStepSchema: v.ObjectSchema<{
1735
1735
  readonly storageServiceId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>, v.RegexAction<string, "must be a lower-kebab slug">]>;
1736
1736
  readonly contextServiceIds: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>, v.RegexAction<string, "must be a lower-kebab slug">]>, undefined>, undefined>;
1737
1737
  readonly generatorIds: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>, v.RegexAction<string, "must be a lower-kebab slug">]>, undefined>, undefined>;
1738
- readonly modalities: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["image", "audio", "video", "3d", "document"], undefined>, undefined>, undefined>;
1738
+ readonly modalities: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["image", "audio", "video", "3d-model", "3d-scene", "document"], undefined>, undefined>, undefined>;
1739
+ readonly mediaTypes: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.ToLowerCaseAction, v.MinLengthAction<string, 3, undefined>, v.MaxLengthAction<string, 128, undefined>, v.RegexAction<string, "must be a media type of the form type/subtype">]>, undefined>, undefined>;
1739
1740
  }, undefined>, undefined>;
1740
1741
  }, undefined>, undefined>, undefined>;
1741
1742
  /**
@@ -1926,7 +1927,7 @@ export declare const pipelineStepSchema: v.ObjectSchema<{
1926
1927
  readonly contentType: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
1927
1928
  readonly description: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
1928
1929
  readonly generator: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
1929
- readonly modality: v.OptionalSchema<v.PicklistSchema<["image", "audio", "video", "3d", "document"], undefined>, undefined>;
1930
+ readonly modality: v.OptionalSchema<v.PicklistSchema<["image", "audio", "video", "3d-model", "3d-scene", "document"], undefined>, undefined>;
1930
1931
  }, undefined>, undefined>;
1931
1932
  readonly unknownServices: v.ArraySchema<v.StringSchema<undefined>, undefined>;
1932
1933
  readonly unknownGenerators: v.ArraySchema<v.StringSchema<undefined>, undefined>;
@@ -3334,7 +3335,8 @@ export declare const executionInstanceSchema: v.ObjectSchema<{
3334
3335
  readonly storageServiceId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>, v.RegexAction<string, "must be a lower-kebab slug">]>;
3335
3336
  readonly contextServiceIds: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>, v.RegexAction<string, "must be a lower-kebab slug">]>, undefined>, undefined>;
3336
3337
  readonly generatorIds: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>, v.RegexAction<string, "must be a lower-kebab slug">]>, undefined>, undefined>;
3337
- readonly modalities: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["image", "audio", "video", "3d", "document"], undefined>, undefined>, undefined>;
3338
+ readonly modalities: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["image", "audio", "video", "3d-model", "3d-scene", "document"], undefined>, undefined>, undefined>;
3339
+ readonly mediaTypes: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.ToLowerCaseAction, v.MinLengthAction<string, 3, undefined>, v.MaxLengthAction<string, 128, undefined>, v.RegexAction<string, "must be a media type of the form type/subtype">]>, undefined>, undefined>;
3338
3340
  }, undefined>, undefined>;
3339
3341
  }, undefined>, undefined>, undefined>;
3340
3342
  /**
@@ -3525,7 +3527,7 @@ export declare const executionInstanceSchema: v.ObjectSchema<{
3525
3527
  readonly contentType: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
3526
3528
  readonly description: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
3527
3529
  readonly generator: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
3528
- readonly modality: v.OptionalSchema<v.PicklistSchema<["image", "audio", "video", "3d", "document"], undefined>, undefined>;
3530
+ readonly modality: v.OptionalSchema<v.PicklistSchema<["image", "audio", "video", "3d-model", "3d-scene", "document"], undefined>, undefined>;
3529
3531
  }, undefined>, undefined>;
3530
3532
  readonly unknownServices: v.ArraySchema<v.StringSchema<undefined>, undefined>;
3531
3533
  readonly unknownGenerators: v.ArraySchema<v.StringSchema<undefined>, undefined>;