@promptframe/contracts 0.0.0 → 0.1.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.
package/README.md CHANGED
@@ -1,6 +1,5 @@
1
1
  # @promptframe/contracts
2
2
 
3
- Public contract package for PromptFrame component authoring tools.
4
-
5
- This `0.0.0` release is a placeholder that reserves the package name and trusted publishing route. The first functional release will start at `0.1.0`.
3
+ Public contracts for PromptFrame component manifests, component references, diagnostics and layout capability cards.
6
4
 
5
+ This package is intentionally small and safe to consume from authoring tools, templates and platform integration code.
package/dist/index.d.ts CHANGED
@@ -1,3 +1,661 @@
1
- export declare const PROMPTFRAME_CONTRACTS_PLACEHOLDER_VERSION = "0.0.0";
2
- export type PromptFrameComponentType = 'scene_template' | 'contained_widget' | 'overlay' | 'transition_effect';
1
+ import { z } from 'zod';
2
+ export declare const PROMPTFRAME_CONTRACTS_VERSION: "promptframe-contracts.v0.1.0";
3
+ export declare const COMPONENT_MANIFEST_SCHEMA_VERSION: "component-manifest.v0.1.0";
4
+ export declare const COMPONENT_STANDARD_VERSION: "component-standard.v0.1.0";
5
+ export declare const COMPONENT_REF_VERSION: "component-ref.v0.1.0";
6
+ export declare const LAYOUT_CAPABILITY_VERSION: "layout-capability.v0.1.0";
7
+ export declare const CAPABILITY_CARD_VERSION: "component-capability-card.v0.1.0";
8
+ export declare const sha256Schema: z.ZodString;
9
+ export declare const nonEmptyStringSchema: z.ZodString;
10
+ export declare const semverSchema: z.ZodString;
11
+ export declare const componentIdSchema: z.ZodString;
12
+ export declare const componentNameSchema: z.ZodString;
13
+ export declare const relativePathSchema: z.ZodString;
14
+ export declare const promptFrameComponentTypeSchema: z.ZodEnum<["scene_template", "contained_widget", "overlay", "transition_effect"]>;
15
+ export type PromptFrameComponentType = z.infer<typeof promptFrameComponentTypeSchema>;
16
+ export declare const componentVisibilitySchema: z.ZodEnum<["builtin", "private", "project_private", "team", "public"]>;
17
+ export type ComponentVisibility = z.infer<typeof componentVisibilitySchema>;
18
+ export declare const componentRefSchema: z.ZodObject<{
19
+ contractVersion: z.ZodDefault<z.ZodLiteral<"component-ref.v0.1.0">>;
20
+ componentId: z.ZodString;
21
+ version: z.ZodString;
22
+ visibility: z.ZodEnum<["builtin", "private", "project_private", "team", "public"]>;
23
+ sourceHash: z.ZodString;
24
+ schemaHash: z.ZodString;
25
+ bundleHash: z.ZodOptional<z.ZodString>;
26
+ }, "strip", z.ZodTypeAny, {
27
+ contractVersion: "component-ref.v0.1.0";
28
+ componentId: string;
29
+ version: string;
30
+ visibility: "builtin" | "private" | "project_private" | "team" | "public";
31
+ sourceHash: string;
32
+ schemaHash: string;
33
+ bundleHash?: string | undefined;
34
+ }, {
35
+ componentId: string;
36
+ version: string;
37
+ visibility: "builtin" | "private" | "project_private" | "team" | "public";
38
+ sourceHash: string;
39
+ schemaHash: string;
40
+ contractVersion?: "component-ref.v0.1.0" | undefined;
41
+ bundleHash?: string | undefined;
42
+ }>;
43
+ export type ComponentRef = z.infer<typeof componentRefSchema>;
44
+ export declare const componentDiagnosticSchema: z.ZodObject<{
45
+ code: z.ZodString;
46
+ severity: z.ZodEnum<["info", "warning", "error"]>;
47
+ message: z.ZodString;
48
+ stage: z.ZodEnum<["authoring", "doctor", "validate", "package", "upload", "build", "manifest", "schema", "policy", "preview", "probe", "publish"]>;
49
+ repairHint: z.ZodOptional<z.ZodString>;
50
+ }, "strip", z.ZodTypeAny, {
51
+ code: string;
52
+ message: string;
53
+ severity: "info" | "warning" | "error";
54
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
55
+ repairHint?: string | undefined;
56
+ }, {
57
+ code: string;
58
+ message: string;
59
+ severity: "info" | "warning" | "error";
60
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
61
+ repairHint?: string | undefined;
62
+ }>;
63
+ export type ComponentDiagnostic = z.infer<typeof componentDiagnosticSchema>;
64
+ export declare const publicPolicyRuleIdSchema: z.ZodEnum<["manifest.identity.version", "manifest.component_type.supported", "schema.props.explicit", "runtime.deterministic.remotion", "runtime.no_global_scripts", "security.forbidden.browser_apis", "security.no_raw_remote_url_import", "layout.root_fills_parent", "layout.no_fixed_root_canvas", "package.no_parent_imports", "package.no_path_traversal", "evidence.schema_source_hash_present"]>;
65
+ export type PublicPolicyRuleId = z.infer<typeof publicPolicyRuleIdSchema>;
66
+ export declare const layoutAdaptivitySchema: z.ZodEnum<["responsive", "scales_down", "reflows", "clips", "fixed"]>;
67
+ export type LayoutAdaptivity = z.infer<typeof layoutAdaptivitySchema>;
68
+ export declare const slotRecommendationSchema: z.ZodEnum<["full_screen", "half_screen", "card", "badge", "text_line", "transition_slot"]>;
69
+ export type SlotRecommendation = z.infer<typeof slotRecommendationSchema>;
70
+ export declare const layoutCapabilitySchema: z.ZodObject<{
71
+ contractVersion: z.ZodDefault<z.ZodLiteral<"layout-capability.v0.1.0">>;
72
+ recommendedSlot: z.ZodEnum<["full_screen", "half_screen", "card", "badge", "text_line", "transition_slot"]>;
73
+ minReadableSize: z.ZodObject<{
74
+ width: z.ZodNumber;
75
+ height: z.ZodNumber;
76
+ }, "strip", z.ZodTypeAny, {
77
+ width: number;
78
+ height: number;
79
+ }, {
80
+ width: number;
81
+ height: number;
82
+ }>;
83
+ supportedAspectRatios: z.ZodArray<z.ZodEnum<["16:9", "9:16", "1:1", "4:5", "auto"]>, "many">;
84
+ layoutAdaptivity: z.ZodEnum<["responsive", "scales_down", "reflows", "clips", "fixed"]>;
85
+ overflowPolicy: z.ZodDefault<z.ZodEnum<["fit", "scroll_forbidden", "clip_with_warning", "unknown"]>>;
86
+ safeAreaPolicy: z.ZodDefault<z.ZodEnum<["required", "recommended", "none"]>>;
87
+ confidence: z.ZodDefault<z.ZodNumber>;
88
+ lastVerifiedAt: z.ZodOptional<z.ZodString>;
89
+ diagnostics: z.ZodDefault<z.ZodArray<z.ZodObject<{
90
+ code: z.ZodString;
91
+ severity: z.ZodEnum<["info", "warning", "error"]>;
92
+ message: z.ZodString;
93
+ stage: z.ZodEnum<["authoring", "doctor", "validate", "package", "upload", "build", "manifest", "schema", "policy", "preview", "probe", "publish"]>;
94
+ repairHint: z.ZodOptional<z.ZodString>;
95
+ }, "strip", z.ZodTypeAny, {
96
+ code: string;
97
+ message: string;
98
+ severity: "info" | "warning" | "error";
99
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
100
+ repairHint?: string | undefined;
101
+ }, {
102
+ code: string;
103
+ message: string;
104
+ severity: "info" | "warning" | "error";
105
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
106
+ repairHint?: string | undefined;
107
+ }>, "many">>;
108
+ }, "strip", z.ZodTypeAny, {
109
+ contractVersion: "layout-capability.v0.1.0";
110
+ recommendedSlot: "full_screen" | "half_screen" | "card" | "badge" | "text_line" | "transition_slot";
111
+ minReadableSize: {
112
+ width: number;
113
+ height: number;
114
+ };
115
+ supportedAspectRatios: ("16:9" | "9:16" | "1:1" | "4:5" | "auto")[];
116
+ layoutAdaptivity: "responsive" | "scales_down" | "reflows" | "clips" | "fixed";
117
+ overflowPolicy: "unknown" | "fit" | "scroll_forbidden" | "clip_with_warning";
118
+ safeAreaPolicy: "required" | "recommended" | "none";
119
+ confidence: number;
120
+ diagnostics: {
121
+ code: string;
122
+ message: string;
123
+ severity: "info" | "warning" | "error";
124
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
125
+ repairHint?: string | undefined;
126
+ }[];
127
+ lastVerifiedAt?: string | undefined;
128
+ }, {
129
+ recommendedSlot: "full_screen" | "half_screen" | "card" | "badge" | "text_line" | "transition_slot";
130
+ minReadableSize: {
131
+ width: number;
132
+ height: number;
133
+ };
134
+ supportedAspectRatios: ("16:9" | "9:16" | "1:1" | "4:5" | "auto")[];
135
+ layoutAdaptivity: "responsive" | "scales_down" | "reflows" | "clips" | "fixed";
136
+ contractVersion?: "layout-capability.v0.1.0" | undefined;
137
+ overflowPolicy?: "unknown" | "fit" | "scroll_forbidden" | "clip_with_warning" | undefined;
138
+ safeAreaPolicy?: "required" | "recommended" | "none" | undefined;
139
+ confidence?: number | undefined;
140
+ lastVerifiedAt?: string | undefined;
141
+ diagnostics?: {
142
+ code: string;
143
+ message: string;
144
+ severity: "info" | "warning" | "error";
145
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
146
+ repairHint?: string | undefined;
147
+ }[] | undefined;
148
+ }>;
149
+ export type LayoutCapability = z.infer<typeof layoutCapabilitySchema>;
150
+ export declare const componentManifestAuthorSchema: z.ZodObject<{
151
+ id: z.ZodString;
152
+ name: z.ZodString;
153
+ }, "strip", z.ZodTypeAny, {
154
+ id: string;
155
+ name: string;
156
+ }, {
157
+ id: string;
158
+ name: string;
159
+ }>;
160
+ export declare const componentManifestEntrySchema: z.ZodObject<{
161
+ sourcePath: z.ZodString;
162
+ componentExport: z.ZodDefault<z.ZodString>;
163
+ propsSchemaPath: z.ZodString;
164
+ sourceHash: z.ZodString;
165
+ schemaHash: z.ZodString;
166
+ bundleHash: z.ZodOptional<z.ZodString>;
167
+ }, "strip", z.ZodTypeAny, {
168
+ sourceHash: string;
169
+ schemaHash: string;
170
+ sourcePath: string;
171
+ componentExport: string;
172
+ propsSchemaPath: string;
173
+ bundleHash?: string | undefined;
174
+ }, {
175
+ sourceHash: string;
176
+ schemaHash: string;
177
+ sourcePath: string;
178
+ propsSchemaPath: string;
179
+ bundleHash?: string | undefined;
180
+ componentExport?: string | undefined;
181
+ }>;
182
+ export declare const componentManifestSchema: z.ZodObject<{
183
+ schemaVersion: z.ZodLiteral<"component-manifest.v0.1.0">;
184
+ standardVersion: z.ZodLiteral<"component-standard.v0.1.0">;
185
+ standardSourceHash: z.ZodOptional<z.ZodString>;
186
+ id: z.ZodString;
187
+ name: z.ZodString;
188
+ displayName: z.ZodString;
189
+ version: z.ZodString;
190
+ componentType: z.ZodEnum<["scene_template", "contained_widget", "overlay", "transition_effect"]>;
191
+ trustLevel: z.ZodOptional<z.ZodEnum<["trusted_builtin", "trusted_private", "trusted_marketplace", "untrusted_temporary"]>>;
192
+ author: z.ZodObject<{
193
+ id: z.ZodString;
194
+ name: z.ZodString;
195
+ }, "strip", z.ZodTypeAny, {
196
+ id: string;
197
+ name: string;
198
+ }, {
199
+ id: string;
200
+ name: string;
201
+ }>;
202
+ description: z.ZodString;
203
+ tags: z.ZodArray<z.ZodString, "many">;
204
+ designedDurationRange: z.ZodEffects<z.ZodObject<{
205
+ min: z.ZodNumber;
206
+ max: z.ZodNumber;
207
+ }, "strip", z.ZodTypeAny, {
208
+ min: number;
209
+ max: number;
210
+ }, {
211
+ min: number;
212
+ max: number;
213
+ }>, {
214
+ min: number;
215
+ max: number;
216
+ }, {
217
+ min: number;
218
+ max: number;
219
+ }>;
220
+ layout: z.ZodOptional<z.ZodObject<{
221
+ contractVersion: z.ZodOptional<z.ZodDefault<z.ZodLiteral<"layout-capability.v0.1.0">>>;
222
+ recommendedSlot: z.ZodOptional<z.ZodEnum<["full_screen", "half_screen", "card", "badge", "text_line", "transition_slot"]>>;
223
+ minReadableSize: z.ZodOptional<z.ZodObject<{
224
+ width: z.ZodNumber;
225
+ height: z.ZodNumber;
226
+ }, "strip", z.ZodTypeAny, {
227
+ width: number;
228
+ height: number;
229
+ }, {
230
+ width: number;
231
+ height: number;
232
+ }>>;
233
+ supportedAspectRatios: z.ZodOptional<z.ZodArray<z.ZodEnum<["16:9", "9:16", "1:1", "4:5", "auto"]>, "many">>;
234
+ layoutAdaptivity: z.ZodOptional<z.ZodEnum<["responsive", "scales_down", "reflows", "clips", "fixed"]>>;
235
+ overflowPolicy: z.ZodOptional<z.ZodDefault<z.ZodEnum<["fit", "scroll_forbidden", "clip_with_warning", "unknown"]>>>;
236
+ safeAreaPolicy: z.ZodOptional<z.ZodDefault<z.ZodEnum<["required", "recommended", "none"]>>>;
237
+ confidence: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
238
+ lastVerifiedAt: z.ZodOptional<z.ZodOptional<z.ZodString>>;
239
+ diagnostics: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{
240
+ code: z.ZodString;
241
+ severity: z.ZodEnum<["info", "warning", "error"]>;
242
+ message: z.ZodString;
243
+ stage: z.ZodEnum<["authoring", "doctor", "validate", "package", "upload", "build", "manifest", "schema", "policy", "preview", "probe", "publish"]>;
244
+ repairHint: z.ZodOptional<z.ZodString>;
245
+ }, "strip", z.ZodTypeAny, {
246
+ code: string;
247
+ message: string;
248
+ severity: "info" | "warning" | "error";
249
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
250
+ repairHint?: string | undefined;
251
+ }, {
252
+ code: string;
253
+ message: string;
254
+ severity: "info" | "warning" | "error";
255
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
256
+ repairHint?: string | undefined;
257
+ }>, "many">>>;
258
+ }, "strip", z.ZodTypeAny, {
259
+ contractVersion?: "layout-capability.v0.1.0" | undefined;
260
+ recommendedSlot?: "full_screen" | "half_screen" | "card" | "badge" | "text_line" | "transition_slot" | undefined;
261
+ minReadableSize?: {
262
+ width: number;
263
+ height: number;
264
+ } | undefined;
265
+ supportedAspectRatios?: ("16:9" | "9:16" | "1:1" | "4:5" | "auto")[] | undefined;
266
+ layoutAdaptivity?: "responsive" | "scales_down" | "reflows" | "clips" | "fixed" | undefined;
267
+ overflowPolicy?: "unknown" | "fit" | "scroll_forbidden" | "clip_with_warning" | undefined;
268
+ safeAreaPolicy?: "required" | "recommended" | "none" | undefined;
269
+ confidence?: number | undefined;
270
+ lastVerifiedAt?: string | undefined;
271
+ diagnostics?: {
272
+ code: string;
273
+ message: string;
274
+ severity: "info" | "warning" | "error";
275
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
276
+ repairHint?: string | undefined;
277
+ }[] | undefined;
278
+ }, {
279
+ contractVersion?: "layout-capability.v0.1.0" | undefined;
280
+ recommendedSlot?: "full_screen" | "half_screen" | "card" | "badge" | "text_line" | "transition_slot" | undefined;
281
+ minReadableSize?: {
282
+ width: number;
283
+ height: number;
284
+ } | undefined;
285
+ supportedAspectRatios?: ("16:9" | "9:16" | "1:1" | "4:5" | "auto")[] | undefined;
286
+ layoutAdaptivity?: "responsive" | "scales_down" | "reflows" | "clips" | "fixed" | undefined;
287
+ overflowPolicy?: "unknown" | "fit" | "scroll_forbidden" | "clip_with_warning" | undefined;
288
+ safeAreaPolicy?: "required" | "recommended" | "none" | undefined;
289
+ confidence?: number | undefined;
290
+ lastVerifiedAt?: string | undefined;
291
+ diagnostics?: {
292
+ code: string;
293
+ message: string;
294
+ severity: "info" | "warning" | "error";
295
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
296
+ repairHint?: string | undefined;
297
+ }[] | undefined;
298
+ }>>;
299
+ entry: z.ZodObject<{
300
+ sourcePath: z.ZodString;
301
+ componentExport: z.ZodDefault<z.ZodString>;
302
+ propsSchemaPath: z.ZodString;
303
+ sourceHash: z.ZodString;
304
+ schemaHash: z.ZodString;
305
+ bundleHash: z.ZodOptional<z.ZodString>;
306
+ }, "strip", z.ZodTypeAny, {
307
+ sourceHash: string;
308
+ schemaHash: string;
309
+ sourcePath: string;
310
+ componentExport: string;
311
+ propsSchemaPath: string;
312
+ bundleHash?: string | undefined;
313
+ }, {
314
+ sourceHash: string;
315
+ schemaHash: string;
316
+ sourcePath: string;
317
+ propsSchemaPath: string;
318
+ bundleHash?: string | undefined;
319
+ componentExport?: string | undefined;
320
+ }>;
321
+ dependencies: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
322
+ peerDependencies: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
323
+ assets: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
324
+ capabilityHints: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
325
+ reviewStatus: z.ZodOptional<z.ZodEnum<["draft", "pending_review", "approved", "rejected", "archived"]>>;
326
+ license: z.ZodString;
327
+ createdAt: z.ZodString;
328
+ }, "strict", z.ZodTypeAny, {
329
+ version: string;
330
+ id: string;
331
+ name: string;
332
+ schemaVersion: "component-manifest.v0.1.0";
333
+ standardVersion: "component-standard.v0.1.0";
334
+ displayName: string;
335
+ componentType: "scene_template" | "contained_widget" | "overlay" | "transition_effect";
336
+ author: {
337
+ id: string;
338
+ name: string;
339
+ };
340
+ description: string;
341
+ tags: string[];
342
+ designedDurationRange: {
343
+ min: number;
344
+ max: number;
345
+ };
346
+ entry: {
347
+ sourceHash: string;
348
+ schemaHash: string;
349
+ sourcePath: string;
350
+ componentExport: string;
351
+ propsSchemaPath: string;
352
+ bundleHash?: string | undefined;
353
+ };
354
+ dependencies: Record<string, string>;
355
+ peerDependencies: Record<string, string>;
356
+ assets: Record<string, unknown>;
357
+ capabilityHints: string[];
358
+ license: string;
359
+ createdAt: string;
360
+ standardSourceHash?: string | undefined;
361
+ trustLevel?: "trusted_builtin" | "trusted_private" | "trusted_marketplace" | "untrusted_temporary" | undefined;
362
+ layout?: {
363
+ contractVersion?: "layout-capability.v0.1.0" | undefined;
364
+ recommendedSlot?: "full_screen" | "half_screen" | "card" | "badge" | "text_line" | "transition_slot" | undefined;
365
+ minReadableSize?: {
366
+ width: number;
367
+ height: number;
368
+ } | undefined;
369
+ supportedAspectRatios?: ("16:9" | "9:16" | "1:1" | "4:5" | "auto")[] | undefined;
370
+ layoutAdaptivity?: "responsive" | "scales_down" | "reflows" | "clips" | "fixed" | undefined;
371
+ overflowPolicy?: "unknown" | "fit" | "scroll_forbidden" | "clip_with_warning" | undefined;
372
+ safeAreaPolicy?: "required" | "recommended" | "none" | undefined;
373
+ confidence?: number | undefined;
374
+ lastVerifiedAt?: string | undefined;
375
+ diagnostics?: {
376
+ code: string;
377
+ message: string;
378
+ severity: "info" | "warning" | "error";
379
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
380
+ repairHint?: string | undefined;
381
+ }[] | undefined;
382
+ } | undefined;
383
+ reviewStatus?: "draft" | "pending_review" | "approved" | "rejected" | "archived" | undefined;
384
+ }, {
385
+ version: string;
386
+ id: string;
387
+ name: string;
388
+ schemaVersion: "component-manifest.v0.1.0";
389
+ standardVersion: "component-standard.v0.1.0";
390
+ displayName: string;
391
+ componentType: "scene_template" | "contained_widget" | "overlay" | "transition_effect";
392
+ author: {
393
+ id: string;
394
+ name: string;
395
+ };
396
+ description: string;
397
+ tags: string[];
398
+ designedDurationRange: {
399
+ min: number;
400
+ max: number;
401
+ };
402
+ entry: {
403
+ sourceHash: string;
404
+ schemaHash: string;
405
+ sourcePath: string;
406
+ propsSchemaPath: string;
407
+ bundleHash?: string | undefined;
408
+ componentExport?: string | undefined;
409
+ };
410
+ license: string;
411
+ createdAt: string;
412
+ standardSourceHash?: string | undefined;
413
+ trustLevel?: "trusted_builtin" | "trusted_private" | "trusted_marketplace" | "untrusted_temporary" | undefined;
414
+ layout?: {
415
+ contractVersion?: "layout-capability.v0.1.0" | undefined;
416
+ recommendedSlot?: "full_screen" | "half_screen" | "card" | "badge" | "text_line" | "transition_slot" | undefined;
417
+ minReadableSize?: {
418
+ width: number;
419
+ height: number;
420
+ } | undefined;
421
+ supportedAspectRatios?: ("16:9" | "9:16" | "1:1" | "4:5" | "auto")[] | undefined;
422
+ layoutAdaptivity?: "responsive" | "scales_down" | "reflows" | "clips" | "fixed" | undefined;
423
+ overflowPolicy?: "unknown" | "fit" | "scroll_forbidden" | "clip_with_warning" | undefined;
424
+ safeAreaPolicy?: "required" | "recommended" | "none" | undefined;
425
+ confidence?: number | undefined;
426
+ lastVerifiedAt?: string | undefined;
427
+ diagnostics?: {
428
+ code: string;
429
+ message: string;
430
+ severity: "info" | "warning" | "error";
431
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
432
+ repairHint?: string | undefined;
433
+ }[] | undefined;
434
+ } | undefined;
435
+ dependencies?: Record<string, string> | undefined;
436
+ peerDependencies?: Record<string, string> | undefined;
437
+ assets?: Record<string, unknown> | undefined;
438
+ capabilityHints?: string[] | undefined;
439
+ reviewStatus?: "draft" | "pending_review" | "approved" | "rejected" | "archived" | undefined;
440
+ }>;
441
+ export type ComponentManifest = z.infer<typeof componentManifestSchema>;
442
+ export declare const componentCapabilityCardSchema: z.ZodObject<{
443
+ contractVersion: z.ZodDefault<z.ZodLiteral<"component-capability-card.v0.1.0">>;
444
+ componentRef: z.ZodObject<{
445
+ contractVersion: z.ZodDefault<z.ZodLiteral<"component-ref.v0.1.0">>;
446
+ componentId: z.ZodString;
447
+ version: z.ZodString;
448
+ visibility: z.ZodEnum<["builtin", "private", "project_private", "team", "public"]>;
449
+ sourceHash: z.ZodString;
450
+ schemaHash: z.ZodString;
451
+ bundleHash: z.ZodOptional<z.ZodString>;
452
+ }, "strip", z.ZodTypeAny, {
453
+ contractVersion: "component-ref.v0.1.0";
454
+ componentId: string;
455
+ version: string;
456
+ visibility: "builtin" | "private" | "project_private" | "team" | "public";
457
+ sourceHash: string;
458
+ schemaHash: string;
459
+ bundleHash?: string | undefined;
460
+ }, {
461
+ componentId: string;
462
+ version: string;
463
+ visibility: "builtin" | "private" | "project_private" | "team" | "public";
464
+ sourceHash: string;
465
+ schemaHash: string;
466
+ contractVersion?: "component-ref.v0.1.0" | undefined;
467
+ bundleHash?: string | undefined;
468
+ }>;
469
+ componentType: z.ZodEnum<["scene_template", "contained_widget", "overlay", "transition_effect"]>;
470
+ displayName: z.ZodString;
471
+ summary: z.ZodString;
472
+ layoutCapability: z.ZodObject<{
473
+ contractVersion: z.ZodDefault<z.ZodLiteral<"layout-capability.v0.1.0">>;
474
+ recommendedSlot: z.ZodEnum<["full_screen", "half_screen", "card", "badge", "text_line", "transition_slot"]>;
475
+ minReadableSize: z.ZodObject<{
476
+ width: z.ZodNumber;
477
+ height: z.ZodNumber;
478
+ }, "strip", z.ZodTypeAny, {
479
+ width: number;
480
+ height: number;
481
+ }, {
482
+ width: number;
483
+ height: number;
484
+ }>;
485
+ supportedAspectRatios: z.ZodArray<z.ZodEnum<["16:9", "9:16", "1:1", "4:5", "auto"]>, "many">;
486
+ layoutAdaptivity: z.ZodEnum<["responsive", "scales_down", "reflows", "clips", "fixed"]>;
487
+ overflowPolicy: z.ZodDefault<z.ZodEnum<["fit", "scroll_forbidden", "clip_with_warning", "unknown"]>>;
488
+ safeAreaPolicy: z.ZodDefault<z.ZodEnum<["required", "recommended", "none"]>>;
489
+ confidence: z.ZodDefault<z.ZodNumber>;
490
+ lastVerifiedAt: z.ZodOptional<z.ZodString>;
491
+ diagnostics: z.ZodDefault<z.ZodArray<z.ZodObject<{
492
+ code: z.ZodString;
493
+ severity: z.ZodEnum<["info", "warning", "error"]>;
494
+ message: z.ZodString;
495
+ stage: z.ZodEnum<["authoring", "doctor", "validate", "package", "upload", "build", "manifest", "schema", "policy", "preview", "probe", "publish"]>;
496
+ repairHint: z.ZodOptional<z.ZodString>;
497
+ }, "strip", z.ZodTypeAny, {
498
+ code: string;
499
+ message: string;
500
+ severity: "info" | "warning" | "error";
501
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
502
+ repairHint?: string | undefined;
503
+ }, {
504
+ code: string;
505
+ message: string;
506
+ severity: "info" | "warning" | "error";
507
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
508
+ repairHint?: string | undefined;
509
+ }>, "many">>;
510
+ }, "strip", z.ZodTypeAny, {
511
+ contractVersion: "layout-capability.v0.1.0";
512
+ recommendedSlot: "full_screen" | "half_screen" | "card" | "badge" | "text_line" | "transition_slot";
513
+ minReadableSize: {
514
+ width: number;
515
+ height: number;
516
+ };
517
+ supportedAspectRatios: ("16:9" | "9:16" | "1:1" | "4:5" | "auto")[];
518
+ layoutAdaptivity: "responsive" | "scales_down" | "reflows" | "clips" | "fixed";
519
+ overflowPolicy: "unknown" | "fit" | "scroll_forbidden" | "clip_with_warning";
520
+ safeAreaPolicy: "required" | "recommended" | "none";
521
+ confidence: number;
522
+ diagnostics: {
523
+ code: string;
524
+ message: string;
525
+ severity: "info" | "warning" | "error";
526
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
527
+ repairHint?: string | undefined;
528
+ }[];
529
+ lastVerifiedAt?: string | undefined;
530
+ }, {
531
+ recommendedSlot: "full_screen" | "half_screen" | "card" | "badge" | "text_line" | "transition_slot";
532
+ minReadableSize: {
533
+ width: number;
534
+ height: number;
535
+ };
536
+ supportedAspectRatios: ("16:9" | "9:16" | "1:1" | "4:5" | "auto")[];
537
+ layoutAdaptivity: "responsive" | "scales_down" | "reflows" | "clips" | "fixed";
538
+ contractVersion?: "layout-capability.v0.1.0" | undefined;
539
+ overflowPolicy?: "unknown" | "fit" | "scroll_forbidden" | "clip_with_warning" | undefined;
540
+ safeAreaPolicy?: "required" | "recommended" | "none" | undefined;
541
+ confidence?: number | undefined;
542
+ lastVerifiedAt?: string | undefined;
543
+ diagnostics?: {
544
+ code: string;
545
+ message: string;
546
+ severity: "info" | "warning" | "error";
547
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
548
+ repairHint?: string | undefined;
549
+ }[] | undefined;
550
+ }>;
551
+ policyRuleIds: z.ZodDefault<z.ZodArray<z.ZodEnum<["manifest.identity.version", "manifest.component_type.supported", "schema.props.explicit", "runtime.deterministic.remotion", "runtime.no_global_scripts", "security.forbidden.browser_apis", "security.no_raw_remote_url_import", "layout.root_fills_parent", "layout.no_fixed_root_canvas", "package.no_parent_imports", "package.no_path_traversal", "evidence.schema_source_hash_present"]>, "many">>;
552
+ diagnostics: z.ZodDefault<z.ZodArray<z.ZodObject<{
553
+ code: z.ZodString;
554
+ severity: z.ZodEnum<["info", "warning", "error"]>;
555
+ message: z.ZodString;
556
+ stage: z.ZodEnum<["authoring", "doctor", "validate", "package", "upload", "build", "manifest", "schema", "policy", "preview", "probe", "publish"]>;
557
+ repairHint: z.ZodOptional<z.ZodString>;
558
+ }, "strip", z.ZodTypeAny, {
559
+ code: string;
560
+ message: string;
561
+ severity: "info" | "warning" | "error";
562
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
563
+ repairHint?: string | undefined;
564
+ }, {
565
+ code: string;
566
+ message: string;
567
+ severity: "info" | "warning" | "error";
568
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
569
+ repairHint?: string | undefined;
570
+ }>, "many">>;
571
+ }, "strip", z.ZodTypeAny, {
572
+ contractVersion: "component-capability-card.v0.1.0";
573
+ diagnostics: {
574
+ code: string;
575
+ message: string;
576
+ severity: "info" | "warning" | "error";
577
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
578
+ repairHint?: string | undefined;
579
+ }[];
580
+ displayName: string;
581
+ componentType: "scene_template" | "contained_widget" | "overlay" | "transition_effect";
582
+ componentRef: {
583
+ contractVersion: "component-ref.v0.1.0";
584
+ componentId: string;
585
+ version: string;
586
+ visibility: "builtin" | "private" | "project_private" | "team" | "public";
587
+ sourceHash: string;
588
+ schemaHash: string;
589
+ bundleHash?: string | undefined;
590
+ };
591
+ summary: string;
592
+ layoutCapability: {
593
+ contractVersion: "layout-capability.v0.1.0";
594
+ recommendedSlot: "full_screen" | "half_screen" | "card" | "badge" | "text_line" | "transition_slot";
595
+ minReadableSize: {
596
+ width: number;
597
+ height: number;
598
+ };
599
+ supportedAspectRatios: ("16:9" | "9:16" | "1:1" | "4:5" | "auto")[];
600
+ layoutAdaptivity: "responsive" | "scales_down" | "reflows" | "clips" | "fixed";
601
+ overflowPolicy: "unknown" | "fit" | "scroll_forbidden" | "clip_with_warning";
602
+ safeAreaPolicy: "required" | "recommended" | "none";
603
+ confidence: number;
604
+ diagnostics: {
605
+ code: string;
606
+ message: string;
607
+ severity: "info" | "warning" | "error";
608
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
609
+ repairHint?: string | undefined;
610
+ }[];
611
+ lastVerifiedAt?: string | undefined;
612
+ };
613
+ policyRuleIds: ("manifest.identity.version" | "manifest.component_type.supported" | "schema.props.explicit" | "runtime.deterministic.remotion" | "runtime.no_global_scripts" | "security.forbidden.browser_apis" | "security.no_raw_remote_url_import" | "layout.root_fills_parent" | "layout.no_fixed_root_canvas" | "package.no_parent_imports" | "package.no_path_traversal" | "evidence.schema_source_hash_present")[];
614
+ }, {
615
+ displayName: string;
616
+ componentType: "scene_template" | "contained_widget" | "overlay" | "transition_effect";
617
+ componentRef: {
618
+ componentId: string;
619
+ version: string;
620
+ visibility: "builtin" | "private" | "project_private" | "team" | "public";
621
+ sourceHash: string;
622
+ schemaHash: string;
623
+ contractVersion?: "component-ref.v0.1.0" | undefined;
624
+ bundleHash?: string | undefined;
625
+ };
626
+ summary: string;
627
+ layoutCapability: {
628
+ recommendedSlot: "full_screen" | "half_screen" | "card" | "badge" | "text_line" | "transition_slot";
629
+ minReadableSize: {
630
+ width: number;
631
+ height: number;
632
+ };
633
+ supportedAspectRatios: ("16:9" | "9:16" | "1:1" | "4:5" | "auto")[];
634
+ layoutAdaptivity: "responsive" | "scales_down" | "reflows" | "clips" | "fixed";
635
+ contractVersion?: "layout-capability.v0.1.0" | undefined;
636
+ overflowPolicy?: "unknown" | "fit" | "scroll_forbidden" | "clip_with_warning" | undefined;
637
+ safeAreaPolicy?: "required" | "recommended" | "none" | undefined;
638
+ confidence?: number | undefined;
639
+ lastVerifiedAt?: string | undefined;
640
+ diagnostics?: {
641
+ code: string;
642
+ message: string;
643
+ severity: "info" | "warning" | "error";
644
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
645
+ repairHint?: string | undefined;
646
+ }[] | undefined;
647
+ };
648
+ contractVersion?: "component-capability-card.v0.1.0" | undefined;
649
+ diagnostics?: {
650
+ code: string;
651
+ message: string;
652
+ severity: "info" | "warning" | "error";
653
+ stage: "authoring" | "doctor" | "validate" | "package" | "upload" | "build" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
654
+ repairHint?: string | undefined;
655
+ }[] | undefined;
656
+ policyRuleIds?: ("manifest.identity.version" | "manifest.component_type.supported" | "schema.props.explicit" | "runtime.deterministic.remotion" | "runtime.no_global_scripts" | "security.forbidden.browser_apis" | "security.no_raw_remote_url_import" | "layout.root_fills_parent" | "layout.no_fixed_root_canvas" | "package.no_parent_imports" | "package.no_path_traversal" | "evidence.schema_source_hash_present")[] | undefined;
657
+ }>;
658
+ export type ComponentCapabilityCard = z.infer<typeof componentCapabilityCardSchema>;
659
+ export declare function parseComponentManifest(input: unknown): ComponentManifest;
660
+ export declare function parseComponentRef(input: unknown): ComponentRef;
3
661
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yCAAyC,UAAU,CAAC;AAEjE,MAAM,MAAM,wBAAwB,GAChC,gBAAgB,GAChB,kBAAkB,GAClB,SAAS,GACT,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,6BAA6B,EAAG,8BAAuC,CAAC;AACrF,eAAO,MAAM,iCAAiC,EAAG,2BAAoC,CAAC;AACtF,eAAO,MAAM,0BAA0B,EAAG,2BAAoC,CAAC;AAC/E,eAAO,MAAM,qBAAqB,EAAG,sBAA+B,CAAC;AACrE,eAAO,MAAM,yBAAyB,EAAG,0BAAmC,CAAC;AAC7E,eAAO,MAAM,uBAAuB,EAAG,kCAA2C,CAAC;AAEnF,eAAO,MAAM,YAAY,aAA4C,CAAC;AACtE,eAAO,MAAM,oBAAoB,aAA2B,CAAC;AAC7D,eAAO,MAAM,YAAY,aAA+E,CAAC;AACzG,eAAO,MAAM,iBAAiB,aAA0E,CAAC;AACzG,eAAO,MAAM,mBAAmB,aAAgD,CAAC;AACjF,eAAO,MAAM,kBAAkB,aAAuC,CAAC;AAEvE,eAAO,MAAM,8BAA8B,mFAKzC,CAAC;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF,eAAO,MAAM,yBAAyB,wEAMpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;EAQ7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;EAmBpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,wBAAwB,2YAanC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,sBAAsB,uEAAqE,CAAC;AACzG,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,wBAAwB,4FAOnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,6BAA6B;;;;;;;;;EAGxC,CAAC;AAEH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;EAOvC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BzB,CAAC;AACZ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASxC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAExE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAE9D"}
package/dist/index.js CHANGED
@@ -1,2 +1,149 @@
1
- export const PROMPTFRAME_CONTRACTS_PLACEHOLDER_VERSION = '0.0.0';
1
+ import { z } from 'zod';
2
+ export const PROMPTFRAME_CONTRACTS_VERSION = 'promptframe-contracts.v0.1.0';
3
+ export const COMPONENT_MANIFEST_SCHEMA_VERSION = 'component-manifest.v0.1.0';
4
+ export const COMPONENT_STANDARD_VERSION = 'component-standard.v0.1.0';
5
+ export const COMPONENT_REF_VERSION = 'component-ref.v0.1.0';
6
+ export const LAYOUT_CAPABILITY_VERSION = 'layout-capability.v0.1.0';
7
+ export const CAPABILITY_CARD_VERSION = 'component-capability-card.v0.1.0';
8
+ export const sha256Schema = z.string().regex(/^sha256:[a-f0-9]{64}$/);
9
+ export const nonEmptyStringSchema = z.string().trim().min(1);
10
+ export const semverSchema = z.string().regex(/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/);
11
+ export const componentIdSchema = z.string().regex(/^@[a-z0-9][a-z0-9-]{1,62}\/[a-z0-9][a-z0-9-]{1,62}$/);
12
+ export const componentNameSchema = z.string().regex(/^[a-z0-9][a-z0-9-]{1,62}$/);
13
+ export const relativePathSchema = z.string().regex(/^[^/\\][\w./-]*$/);
14
+ export const promptFrameComponentTypeSchema = z.enum([
15
+ 'scene_template',
16
+ 'contained_widget',
17
+ 'overlay',
18
+ 'transition_effect',
19
+ ]);
20
+ export const componentVisibilitySchema = z.enum([
21
+ 'builtin',
22
+ 'private',
23
+ 'project_private',
24
+ 'team',
25
+ 'public',
26
+ ]);
27
+ export const componentRefSchema = z.object({
28
+ contractVersion: z.literal(COMPONENT_REF_VERSION).default(COMPONENT_REF_VERSION),
29
+ componentId: componentIdSchema,
30
+ version: semverSchema,
31
+ visibility: componentVisibilitySchema,
32
+ sourceHash: sha256Schema,
33
+ schemaHash: sha256Schema,
34
+ bundleHash: sha256Schema.optional(),
35
+ });
36
+ export const componentDiagnosticSchema = z.object({
37
+ code: nonEmptyStringSchema.max(160),
38
+ severity: z.enum(['info', 'warning', 'error']),
39
+ message: nonEmptyStringSchema.max(2000),
40
+ stage: z.enum([
41
+ 'authoring',
42
+ 'doctor',
43
+ 'validate',
44
+ 'package',
45
+ 'upload',
46
+ 'build',
47
+ 'manifest',
48
+ 'schema',
49
+ 'policy',
50
+ 'preview',
51
+ 'probe',
52
+ 'publish',
53
+ ]),
54
+ repairHint: z.string().trim().max(2000).optional(),
55
+ });
56
+ export const publicPolicyRuleIdSchema = z.enum([
57
+ 'manifest.identity.version',
58
+ 'manifest.component_type.supported',
59
+ 'schema.props.explicit',
60
+ 'runtime.deterministic.remotion',
61
+ 'runtime.no_global_scripts',
62
+ 'security.forbidden.browser_apis',
63
+ 'security.no_raw_remote_url_import',
64
+ 'layout.root_fills_parent',
65
+ 'layout.no_fixed_root_canvas',
66
+ 'package.no_parent_imports',
67
+ 'package.no_path_traversal',
68
+ 'evidence.schema_source_hash_present',
69
+ ]);
70
+ export const layoutAdaptivitySchema = z.enum(['responsive', 'scales_down', 'reflows', 'clips', 'fixed']);
71
+ export const slotRecommendationSchema = z.enum([
72
+ 'full_screen',
73
+ 'half_screen',
74
+ 'card',
75
+ 'badge',
76
+ 'text_line',
77
+ 'transition_slot',
78
+ ]);
79
+ export const layoutCapabilitySchema = z.object({
80
+ contractVersion: z.literal(LAYOUT_CAPABILITY_VERSION).default(LAYOUT_CAPABILITY_VERSION),
81
+ recommendedSlot: slotRecommendationSchema,
82
+ minReadableSize: z.object({
83
+ width: z.number().int().positive(),
84
+ height: z.number().int().positive(),
85
+ }),
86
+ supportedAspectRatios: z.array(z.enum(['16:9', '9:16', '1:1', '4:5', 'auto'])).min(1).max(8),
87
+ layoutAdaptivity: layoutAdaptivitySchema,
88
+ overflowPolicy: z.enum(['fit', 'scroll_forbidden', 'clip_with_warning', 'unknown']).default('unknown'),
89
+ safeAreaPolicy: z.enum(['required', 'recommended', 'none']).default('recommended'),
90
+ confidence: z.number().min(0).max(1).default(0),
91
+ lastVerifiedAt: z.string().datetime().optional(),
92
+ diagnostics: z.array(componentDiagnosticSchema).default([]),
93
+ });
94
+ export const componentManifestAuthorSchema = z.object({
95
+ id: nonEmptyStringSchema.max(128),
96
+ name: nonEmptyStringSchema.max(128),
97
+ });
98
+ export const componentManifestEntrySchema = z.object({
99
+ sourcePath: relativePathSchema,
100
+ componentExport: nonEmptyStringSchema.max(128).default('default'),
101
+ propsSchemaPath: relativePathSchema,
102
+ sourceHash: sha256Schema,
103
+ schemaHash: sha256Schema,
104
+ bundleHash: sha256Schema.optional(),
105
+ });
106
+ export const componentManifestSchema = z.object({
107
+ schemaVersion: z.literal(COMPONENT_MANIFEST_SCHEMA_VERSION),
108
+ standardVersion: z.literal(COMPONENT_STANDARD_VERSION),
109
+ standardSourceHash: sha256Schema.optional(),
110
+ id: componentIdSchema,
111
+ name: componentNameSchema,
112
+ displayName: nonEmptyStringSchema.max(80),
113
+ version: semverSchema,
114
+ componentType: promptFrameComponentTypeSchema,
115
+ trustLevel: z.enum(['trusted_builtin', 'trusted_private', 'trusted_marketplace', 'untrusted_temporary']).optional(),
116
+ author: componentManifestAuthorSchema,
117
+ description: z.string().trim().min(8).max(600),
118
+ tags: z.array(nonEmptyStringSchema.max(40)).min(1).max(16),
119
+ designedDurationRange: z.object({
120
+ min: z.number().int().positive(),
121
+ max: z.number().int().positive(),
122
+ }).refine((value) => value.max >= value.min, 'duration max must be greater than or equal to min'),
123
+ layout: layoutCapabilitySchema.partial().optional(),
124
+ entry: componentManifestEntrySchema,
125
+ dependencies: z.record(z.string()).default({}),
126
+ peerDependencies: z.record(z.string()).default({}),
127
+ assets: z.record(z.unknown()).default({}),
128
+ capabilityHints: z.array(nonEmptyStringSchema.max(80)).max(24).default([]),
129
+ reviewStatus: z.enum(['draft', 'pending_review', 'approved', 'rejected', 'archived']).optional(),
130
+ license: nonEmptyStringSchema.max(80),
131
+ createdAt: z.string().datetime(),
132
+ }).strict();
133
+ export const componentCapabilityCardSchema = z.object({
134
+ contractVersion: z.literal(CAPABILITY_CARD_VERSION).default(CAPABILITY_CARD_VERSION),
135
+ componentRef: componentRefSchema,
136
+ componentType: promptFrameComponentTypeSchema,
137
+ displayName: nonEmptyStringSchema.max(80),
138
+ summary: nonEmptyStringSchema.max(500),
139
+ layoutCapability: layoutCapabilitySchema,
140
+ policyRuleIds: z.array(publicPolicyRuleIdSchema).default([]),
141
+ diagnostics: z.array(componentDiagnosticSchema).default([]),
142
+ });
143
+ export function parseComponentManifest(input) {
144
+ return componentManifestSchema.parse(input);
145
+ }
146
+ export function parseComponentRef(input) {
147
+ return componentRefSchema.parse(input);
148
+ }
2
149
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,yCAAyC,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@promptframe/contracts",
3
- "version": "0.0.0",
3
+ "version": "0.1.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -39,7 +39,9 @@
39
39
  "test": "node -e \"console.log('placeholder test: @promptframe/contracts')\"",
40
40
  "clean": "rm -rf dist"
41
41
  },
42
- "dependencies": {},
42
+ "dependencies": {
43
+ "zod": "^3.24.0"
44
+ },
43
45
  "devDependencies": {
44
46
  "typescript": "~5.7.0"
45
47
  }