@ikenga/contract 0.3.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.
@@ -0,0 +1,917 @@
1
+ import { z } from 'zod';
2
+ export declare const IKENGA_API_VERSION: 1;
3
+ export declare const IKENGA_API_MIN_SUPPORTED: 1;
4
+ export declare const AuthorSchema: z.ZodObject<{
5
+ name: z.ZodString;
6
+ key: z.ZodOptional<z.ZodString>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ name: string;
9
+ key?: string | undefined;
10
+ }, {
11
+ name: string;
12
+ key?: string | undefined;
13
+ }>;
14
+ export declare const McpServerSchema: z.ZodObject<{
15
+ name: z.ZodString;
16
+ command: z.ZodString;
17
+ args: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
18
+ env: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
19
+ /** "per-call" (default) | "long-lived" */
20
+ lifecycle: z.ZodOptional<z.ZodEnum<["per-call", "long-lived"]>>;
21
+ }, "strip", z.ZodTypeAny, {
22
+ args: string[];
23
+ name: string;
24
+ command: string;
25
+ env: Record<string, string>;
26
+ lifecycle?: "per-call" | "long-lived" | undefined;
27
+ }, {
28
+ name: string;
29
+ command: string;
30
+ args?: string[] | undefined;
31
+ env?: Record<string, string> | undefined;
32
+ lifecycle?: "per-call" | "long-lived" | undefined;
33
+ }>;
34
+ export type McpServer = z.infer<typeof McpServerSchema>;
35
+ export declare const SidecarSpecSchema: z.ZodObject<{
36
+ /** Must start with `pa-<pkg-slug>-` (slug = id with `.` → `-`). */
37
+ name: z.ZodString;
38
+ /** Path inside pkg dir; may contain `{target}` (host triple). */
39
+ bin: z.ZodString;
40
+ /** "json" (default) | "raw" */
41
+ stdio: z.ZodDefault<z.ZodString>;
42
+ }, "strip", z.ZodTypeAny, {
43
+ name: string;
44
+ bin: string;
45
+ stdio: string;
46
+ }, {
47
+ name: string;
48
+ bin: string;
49
+ stdio?: string | undefined;
50
+ }>;
51
+ export type SidecarSpec = z.infer<typeof SidecarSpecSchema>;
52
+ export declare const PermissionsSchema: z.ZodDefault<z.ZodObject<{
53
+ 'shell.execute': z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
54
+ 'fs.read': z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
55
+ 'fs.write': z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
56
+ net: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
57
+ 'supabase.tables': z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
58
+ 'vault.keys': z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
59
+ }, "strip", z.ZodTypeAny, {
60
+ 'shell.execute': string[];
61
+ 'fs.read': string[];
62
+ 'fs.write': string[];
63
+ net: string[];
64
+ 'supabase.tables': string[];
65
+ 'vault.keys': string[];
66
+ }, {
67
+ 'shell.execute'?: string[] | undefined;
68
+ 'fs.read'?: string[] | undefined;
69
+ 'fs.write'?: string[] | undefined;
70
+ net?: string[] | undefined;
71
+ 'supabase.tables'?: string[] | undefined;
72
+ 'vault.keys'?: string[] | undefined;
73
+ }>>;
74
+ export declare const NavEntrySchema: z.ZodObject<{
75
+ id: z.ZodString;
76
+ label: z.ZodString;
77
+ icon: z.ZodOptional<z.ZodString>;
78
+ section: z.ZodOptional<z.ZodString>;
79
+ route: z.ZodString;
80
+ }, "strip", z.ZodTypeAny, {
81
+ label: string;
82
+ id: string;
83
+ route: string;
84
+ section?: string | undefined;
85
+ icon?: string | undefined;
86
+ }, {
87
+ label: string;
88
+ id: string;
89
+ route: string;
90
+ section?: string | undefined;
91
+ icon?: string | undefined;
92
+ }>;
93
+ export declare const UiRouteSchema: z.ZodObject<{
94
+ path: z.ZodString;
95
+ /** "iframe" | "component" (component is builtin-only) */
96
+ kind: z.ZodEnum<["iframe", "component"]>;
97
+ /** iframe: URL or pkg-relative html path. component: identifier. */
98
+ source: z.ZodString;
99
+ }, "strip", z.ZodTypeAny, {
100
+ path: string;
101
+ kind: "iframe" | "component";
102
+ source: string;
103
+ }, {
104
+ path: string;
105
+ kind: "iframe" | "component";
106
+ source: string;
107
+ }>;
108
+ export declare const CommandPaletteEntrySchema: z.ZodObject<{
109
+ id: z.ZodString;
110
+ label: z.ZodString;
111
+ shortcut: z.ZodOptional<z.ZodString>;
112
+ action: z.ZodUnknown;
113
+ }, "strip", z.ZodTypeAny, {
114
+ label: string;
115
+ id: string;
116
+ shortcut?: string | undefined;
117
+ action?: unknown;
118
+ }, {
119
+ label: string;
120
+ id: string;
121
+ shortcut?: string | undefined;
122
+ action?: unknown;
123
+ }>;
124
+ export declare const SidePaneViewerSchema: z.ZodObject<{
125
+ id: z.ZodString;
126
+ label: z.ZodString;
127
+ route: z.ZodString;
128
+ }, "strip", z.ZodTypeAny, {
129
+ label: string;
130
+ id: string;
131
+ route: string;
132
+ }, {
133
+ label: string;
134
+ id: string;
135
+ route: string;
136
+ }>;
137
+ export declare const UiBlockSchema: z.ZodDefault<z.ZodObject<{
138
+ nav: z.ZodDefault<z.ZodArray<z.ZodObject<{
139
+ id: z.ZodString;
140
+ label: z.ZodString;
141
+ icon: z.ZodOptional<z.ZodString>;
142
+ section: z.ZodOptional<z.ZodString>;
143
+ route: z.ZodString;
144
+ }, "strip", z.ZodTypeAny, {
145
+ label: string;
146
+ id: string;
147
+ route: string;
148
+ section?: string | undefined;
149
+ icon?: string | undefined;
150
+ }, {
151
+ label: string;
152
+ id: string;
153
+ route: string;
154
+ section?: string | undefined;
155
+ icon?: string | undefined;
156
+ }>, "many">>;
157
+ routes: z.ZodDefault<z.ZodArray<z.ZodObject<{
158
+ path: z.ZodString;
159
+ /** "iframe" | "component" (component is builtin-only) */
160
+ kind: z.ZodEnum<["iframe", "component"]>;
161
+ /** iframe: URL or pkg-relative html path. component: identifier. */
162
+ source: z.ZodString;
163
+ }, "strip", z.ZodTypeAny, {
164
+ path: string;
165
+ kind: "iframe" | "component";
166
+ source: string;
167
+ }, {
168
+ path: string;
169
+ kind: "iframe" | "component";
170
+ source: string;
171
+ }>, "many">>;
172
+ command_palette: z.ZodDefault<z.ZodArray<z.ZodObject<{
173
+ id: z.ZodString;
174
+ label: z.ZodString;
175
+ shortcut: z.ZodOptional<z.ZodString>;
176
+ action: z.ZodUnknown;
177
+ }, "strip", z.ZodTypeAny, {
178
+ label: string;
179
+ id: string;
180
+ shortcut?: string | undefined;
181
+ action?: unknown;
182
+ }, {
183
+ label: string;
184
+ id: string;
185
+ shortcut?: string | undefined;
186
+ action?: unknown;
187
+ }>, "many">>;
188
+ side_pane_viewers: z.ZodDefault<z.ZodArray<z.ZodObject<{
189
+ id: z.ZodString;
190
+ label: z.ZodString;
191
+ route: z.ZodString;
192
+ }, "strip", z.ZodTypeAny, {
193
+ label: string;
194
+ id: string;
195
+ route: string;
196
+ }, {
197
+ label: string;
198
+ id: string;
199
+ route: string;
200
+ }>, "many">>;
201
+ /** Per-directive CSP overrides for the iframe content. */
202
+ csp: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
203
+ /** Per-directive Permission-Policy values. */
204
+ permissions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
205
+ }, "strip", z.ZodTypeAny, {
206
+ nav: {
207
+ label: string;
208
+ id: string;
209
+ route: string;
210
+ section?: string | undefined;
211
+ icon?: string | undefined;
212
+ }[];
213
+ routes: {
214
+ path: string;
215
+ kind: "iframe" | "component";
216
+ source: string;
217
+ }[];
218
+ command_palette: {
219
+ label: string;
220
+ id: string;
221
+ shortcut?: string | undefined;
222
+ action?: unknown;
223
+ }[];
224
+ side_pane_viewers: {
225
+ label: string;
226
+ id: string;
227
+ route: string;
228
+ }[];
229
+ csp?: Record<string, string[]> | undefined;
230
+ permissions?: Record<string, string[]> | undefined;
231
+ }, {
232
+ nav?: {
233
+ label: string;
234
+ id: string;
235
+ route: string;
236
+ section?: string | undefined;
237
+ icon?: string | undefined;
238
+ }[] | undefined;
239
+ routes?: {
240
+ path: string;
241
+ kind: "iframe" | "component";
242
+ source: string;
243
+ }[] | undefined;
244
+ command_palette?: {
245
+ label: string;
246
+ id: string;
247
+ shortcut?: string | undefined;
248
+ action?: unknown;
249
+ }[] | undefined;
250
+ side_pane_viewers?: {
251
+ label: string;
252
+ id: string;
253
+ route: string;
254
+ }[] | undefined;
255
+ csp?: Record<string, string[]> | undefined;
256
+ permissions?: Record<string, string[]> | undefined;
257
+ }>>;
258
+ export declare const SettingsFieldSchema: z.ZodObject<{
259
+ key: z.ZodString;
260
+ type: z.ZodEnum<["string", "number", "boolean", "secret"]>;
261
+ label: z.ZodString;
262
+ default: z.ZodOptional<z.ZodUnknown>;
263
+ description: z.ZodOptional<z.ZodString>;
264
+ }, "strip", z.ZodTypeAny, {
265
+ type: "string" | "number" | "boolean" | "secret";
266
+ label: string;
267
+ key: string;
268
+ description?: string | undefined;
269
+ default?: unknown;
270
+ }, {
271
+ type: "string" | "number" | "boolean" | "secret";
272
+ label: string;
273
+ key: string;
274
+ description?: string | undefined;
275
+ default?: unknown;
276
+ }>;
277
+ export declare const SettingsBlockSchema: z.ZodObject<{
278
+ schema: z.ZodDefault<z.ZodArray<z.ZodObject<{
279
+ key: z.ZodString;
280
+ type: z.ZodEnum<["string", "number", "boolean", "secret"]>;
281
+ label: z.ZodString;
282
+ default: z.ZodOptional<z.ZodUnknown>;
283
+ description: z.ZodOptional<z.ZodString>;
284
+ }, "strip", z.ZodTypeAny, {
285
+ type: "string" | "number" | "boolean" | "secret";
286
+ label: string;
287
+ key: string;
288
+ description?: string | undefined;
289
+ default?: unknown;
290
+ }, {
291
+ type: "string" | "number" | "boolean" | "secret";
292
+ label: string;
293
+ key: string;
294
+ description?: string | undefined;
295
+ default?: unknown;
296
+ }>, "many">>;
297
+ }, "strip", z.ZodTypeAny, {
298
+ schema: {
299
+ type: "string" | "number" | "boolean" | "secret";
300
+ label: string;
301
+ key: string;
302
+ description?: string | undefined;
303
+ default?: unknown;
304
+ }[];
305
+ }, {
306
+ schema?: {
307
+ type: "string" | "number" | "boolean" | "secret";
308
+ label: string;
309
+ key: string;
310
+ description?: string | undefined;
311
+ default?: unknown;
312
+ }[] | undefined;
313
+ }>;
314
+ export declare const IykeRouteSchema: z.ZodObject<{
315
+ method: z.ZodEnum<["GET", "POST"]>;
316
+ /** Must start with `/pkg/<id>/`. */
317
+ path: z.ZodString;
318
+ /** `sidecar:<name> <sub>` | `event:<name>` */
319
+ handler: z.ZodString;
320
+ }, "strip", z.ZodTypeAny, {
321
+ path: string;
322
+ method: "GET" | "POST";
323
+ handler: string;
324
+ }, {
325
+ path: string;
326
+ method: "GET" | "POST";
327
+ handler: string;
328
+ }>;
329
+ export declare const IykeBlockSchema: z.ZodObject<{
330
+ routes: z.ZodDefault<z.ZodArray<z.ZodObject<{
331
+ method: z.ZodEnum<["GET", "POST"]>;
332
+ /** Must start with `/pkg/<id>/`. */
333
+ path: z.ZodString;
334
+ /** `sidecar:<name> <sub>` | `event:<name>` */
335
+ handler: z.ZodString;
336
+ }, "strip", z.ZodTypeAny, {
337
+ path: string;
338
+ method: "GET" | "POST";
339
+ handler: string;
340
+ }, {
341
+ path: string;
342
+ method: "GET" | "POST";
343
+ handler: string;
344
+ }>, "many">>;
345
+ events: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
346
+ }, "strip", z.ZodTypeAny, {
347
+ routes: {
348
+ path: string;
349
+ method: "GET" | "POST";
350
+ handler: string;
351
+ }[];
352
+ events: string[];
353
+ }, {
354
+ routes?: {
355
+ path: string;
356
+ method: "GET" | "POST";
357
+ handler: string;
358
+ }[] | undefined;
359
+ events?: string[] | undefined;
360
+ }>;
361
+ export declare const CronEntrySchema: z.ZodObject<{
362
+ id: z.ZodString;
363
+ /** 6-field cron expression: sec min hour day month dow */
364
+ expr: z.ZodString;
365
+ handler: z.ZodString;
366
+ env_from_settings: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
367
+ }, "strip", z.ZodTypeAny, {
368
+ id: string;
369
+ handler: string;
370
+ expr: string;
371
+ env_from_settings: string[];
372
+ }, {
373
+ id: string;
374
+ handler: string;
375
+ expr: string;
376
+ env_from_settings?: string[] | undefined;
377
+ }>;
378
+ export declare const WindowBlockSchema: z.ZodObject<{
379
+ label: z.ZodString;
380
+ url: z.ZodString;
381
+ size: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
382
+ decorations: z.ZodOptional<z.ZodBoolean>;
383
+ menu: z.ZodOptional<z.ZodString>;
384
+ }, "strip", z.ZodTypeAny, {
385
+ url: string;
386
+ label: string;
387
+ size?: [number, number] | undefined;
388
+ decorations?: boolean | undefined;
389
+ menu?: string | undefined;
390
+ }, {
391
+ url: string;
392
+ label: string;
393
+ size?: [number, number] | undefined;
394
+ decorations?: boolean | undefined;
395
+ menu?: string | undefined;
396
+ }>;
397
+ export declare const QueriesBlockSchema: z.ZodObject<{
398
+ key_prefixes: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
399
+ }, "strip", z.ZodTypeAny, {
400
+ key_prefixes: string[];
401
+ }, {
402
+ key_prefixes?: string[] | undefined;
403
+ }>;
404
+ export declare const ManifestSchema: z.ZodObject<{
405
+ /** Reverse-DNS, e.g. `com.ikenga.studio`. */
406
+ id: z.ZodString;
407
+ name: z.ZodString;
408
+ version: z.ZodString;
409
+ /** Numeric string — host accepts versions in [MIN, CURRENT]. */
410
+ ikenga_api: z.ZodString;
411
+ /** Hint, not enforced: "skill" | "embedded" | "windowed" | "engine". */
412
+ kind: z.ZodOptional<z.ZodString>;
413
+ author: z.ZodOptional<z.ZodObject<{
414
+ name: z.ZodString;
415
+ key: z.ZodOptional<z.ZodString>;
416
+ }, "strip", z.ZodTypeAny, {
417
+ name: string;
418
+ key?: string | undefined;
419
+ }, {
420
+ name: string;
421
+ key?: string | undefined;
422
+ }>>;
423
+ /** Rust target triples; empty = host-agnostic. */
424
+ targets: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
425
+ skills: z.ZodOptional<z.ZodString>;
426
+ commands: z.ZodOptional<z.ZodString>;
427
+ agents: z.ZodOptional<z.ZodString>;
428
+ mcp: z.ZodDefault<z.ZodArray<z.ZodObject<{
429
+ name: z.ZodString;
430
+ command: z.ZodString;
431
+ args: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
432
+ env: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
433
+ /** "per-call" (default) | "long-lived" */
434
+ lifecycle: z.ZodOptional<z.ZodEnum<["per-call", "long-lived"]>>;
435
+ }, "strip", z.ZodTypeAny, {
436
+ args: string[];
437
+ name: string;
438
+ command: string;
439
+ env: Record<string, string>;
440
+ lifecycle?: "per-call" | "long-lived" | undefined;
441
+ }, {
442
+ name: string;
443
+ command: string;
444
+ args?: string[] | undefined;
445
+ env?: Record<string, string> | undefined;
446
+ lifecycle?: "per-call" | "long-lived" | undefined;
447
+ }>, "many">>;
448
+ sidecars: z.ZodDefault<z.ZodArray<z.ZodObject<{
449
+ /** Must start with `pa-<pkg-slug>-` (slug = id with `.` → `-`). */
450
+ name: z.ZodString;
451
+ /** Path inside pkg dir; may contain `{target}` (host triple). */
452
+ bin: z.ZodString;
453
+ /** "json" (default) | "raw" */
454
+ stdio: z.ZodDefault<z.ZodString>;
455
+ }, "strip", z.ZodTypeAny, {
456
+ name: string;
457
+ bin: string;
458
+ stdio: string;
459
+ }, {
460
+ name: string;
461
+ bin: string;
462
+ stdio?: string | undefined;
463
+ }>, "many">>;
464
+ permissions: z.ZodDefault<z.ZodObject<{
465
+ 'shell.execute': z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
466
+ 'fs.read': z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
467
+ 'fs.write': z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
468
+ net: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
469
+ 'supabase.tables': z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
470
+ 'vault.keys': z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
471
+ }, "strip", z.ZodTypeAny, {
472
+ 'shell.execute': string[];
473
+ 'fs.read': string[];
474
+ 'fs.write': string[];
475
+ net: string[];
476
+ 'supabase.tables': string[];
477
+ 'vault.keys': string[];
478
+ }, {
479
+ 'shell.execute'?: string[] | undefined;
480
+ 'fs.read'?: string[] | undefined;
481
+ 'fs.write'?: string[] | undefined;
482
+ net?: string[] | undefined;
483
+ 'supabase.tables'?: string[] | undefined;
484
+ 'vault.keys'?: string[] | undefined;
485
+ }>>;
486
+ migrations: z.ZodOptional<z.ZodString>;
487
+ settings: z.ZodOptional<z.ZodObject<{
488
+ schema: z.ZodDefault<z.ZodArray<z.ZodObject<{
489
+ key: z.ZodString;
490
+ type: z.ZodEnum<["string", "number", "boolean", "secret"]>;
491
+ label: z.ZodString;
492
+ default: z.ZodOptional<z.ZodUnknown>;
493
+ description: z.ZodOptional<z.ZodString>;
494
+ }, "strip", z.ZodTypeAny, {
495
+ type: "string" | "number" | "boolean" | "secret";
496
+ label: string;
497
+ key: string;
498
+ description?: string | undefined;
499
+ default?: unknown;
500
+ }, {
501
+ type: "string" | "number" | "boolean" | "secret";
502
+ label: string;
503
+ key: string;
504
+ description?: string | undefined;
505
+ default?: unknown;
506
+ }>, "many">>;
507
+ }, "strip", z.ZodTypeAny, {
508
+ schema: {
509
+ type: "string" | "number" | "boolean" | "secret";
510
+ label: string;
511
+ key: string;
512
+ description?: string | undefined;
513
+ default?: unknown;
514
+ }[];
515
+ }, {
516
+ schema?: {
517
+ type: "string" | "number" | "boolean" | "secret";
518
+ label: string;
519
+ key: string;
520
+ description?: string | undefined;
521
+ default?: unknown;
522
+ }[] | undefined;
523
+ }>>;
524
+ ui: z.ZodDefault<z.ZodObject<{
525
+ nav: z.ZodDefault<z.ZodArray<z.ZodObject<{
526
+ id: z.ZodString;
527
+ label: z.ZodString;
528
+ icon: z.ZodOptional<z.ZodString>;
529
+ section: z.ZodOptional<z.ZodString>;
530
+ route: z.ZodString;
531
+ }, "strip", z.ZodTypeAny, {
532
+ label: string;
533
+ id: string;
534
+ route: string;
535
+ section?: string | undefined;
536
+ icon?: string | undefined;
537
+ }, {
538
+ label: string;
539
+ id: string;
540
+ route: string;
541
+ section?: string | undefined;
542
+ icon?: string | undefined;
543
+ }>, "many">>;
544
+ routes: z.ZodDefault<z.ZodArray<z.ZodObject<{
545
+ path: z.ZodString;
546
+ /** "iframe" | "component" (component is builtin-only) */
547
+ kind: z.ZodEnum<["iframe", "component"]>;
548
+ /** iframe: URL or pkg-relative html path. component: identifier. */
549
+ source: z.ZodString;
550
+ }, "strip", z.ZodTypeAny, {
551
+ path: string;
552
+ kind: "iframe" | "component";
553
+ source: string;
554
+ }, {
555
+ path: string;
556
+ kind: "iframe" | "component";
557
+ source: string;
558
+ }>, "many">>;
559
+ command_palette: z.ZodDefault<z.ZodArray<z.ZodObject<{
560
+ id: z.ZodString;
561
+ label: z.ZodString;
562
+ shortcut: z.ZodOptional<z.ZodString>;
563
+ action: z.ZodUnknown;
564
+ }, "strip", z.ZodTypeAny, {
565
+ label: string;
566
+ id: string;
567
+ shortcut?: string | undefined;
568
+ action?: unknown;
569
+ }, {
570
+ label: string;
571
+ id: string;
572
+ shortcut?: string | undefined;
573
+ action?: unknown;
574
+ }>, "many">>;
575
+ side_pane_viewers: z.ZodDefault<z.ZodArray<z.ZodObject<{
576
+ id: z.ZodString;
577
+ label: z.ZodString;
578
+ route: z.ZodString;
579
+ }, "strip", z.ZodTypeAny, {
580
+ label: string;
581
+ id: string;
582
+ route: string;
583
+ }, {
584
+ label: string;
585
+ id: string;
586
+ route: string;
587
+ }>, "many">>;
588
+ /** Per-directive CSP overrides for the iframe content. */
589
+ csp: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
590
+ /** Per-directive Permission-Policy values. */
591
+ permissions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
592
+ }, "strip", z.ZodTypeAny, {
593
+ nav: {
594
+ label: string;
595
+ id: string;
596
+ route: string;
597
+ section?: string | undefined;
598
+ icon?: string | undefined;
599
+ }[];
600
+ routes: {
601
+ path: string;
602
+ kind: "iframe" | "component";
603
+ source: string;
604
+ }[];
605
+ command_palette: {
606
+ label: string;
607
+ id: string;
608
+ shortcut?: string | undefined;
609
+ action?: unknown;
610
+ }[];
611
+ side_pane_viewers: {
612
+ label: string;
613
+ id: string;
614
+ route: string;
615
+ }[];
616
+ csp?: Record<string, string[]> | undefined;
617
+ permissions?: Record<string, string[]> | undefined;
618
+ }, {
619
+ nav?: {
620
+ label: string;
621
+ id: string;
622
+ route: string;
623
+ section?: string | undefined;
624
+ icon?: string | undefined;
625
+ }[] | undefined;
626
+ routes?: {
627
+ path: string;
628
+ kind: "iframe" | "component";
629
+ source: string;
630
+ }[] | undefined;
631
+ command_palette?: {
632
+ label: string;
633
+ id: string;
634
+ shortcut?: string | undefined;
635
+ action?: unknown;
636
+ }[] | undefined;
637
+ side_pane_viewers?: {
638
+ label: string;
639
+ id: string;
640
+ route: string;
641
+ }[] | undefined;
642
+ csp?: Record<string, string[]> | undefined;
643
+ permissions?: Record<string, string[]> | undefined;
644
+ }>>;
645
+ iyke: z.ZodOptional<z.ZodObject<{
646
+ routes: z.ZodDefault<z.ZodArray<z.ZodObject<{
647
+ method: z.ZodEnum<["GET", "POST"]>;
648
+ /** Must start with `/pkg/<id>/`. */
649
+ path: z.ZodString;
650
+ /** `sidecar:<name> <sub>` | `event:<name>` */
651
+ handler: z.ZodString;
652
+ }, "strip", z.ZodTypeAny, {
653
+ path: string;
654
+ method: "GET" | "POST";
655
+ handler: string;
656
+ }, {
657
+ path: string;
658
+ method: "GET" | "POST";
659
+ handler: string;
660
+ }>, "many">>;
661
+ events: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
662
+ }, "strip", z.ZodTypeAny, {
663
+ routes: {
664
+ path: string;
665
+ method: "GET" | "POST";
666
+ handler: string;
667
+ }[];
668
+ events: string[];
669
+ }, {
670
+ routes?: {
671
+ path: string;
672
+ method: "GET" | "POST";
673
+ handler: string;
674
+ }[] | undefined;
675
+ events?: string[] | undefined;
676
+ }>>;
677
+ cron: z.ZodDefault<z.ZodArray<z.ZodObject<{
678
+ id: z.ZodString;
679
+ /** 6-field cron expression: sec min hour day month dow */
680
+ expr: z.ZodString;
681
+ handler: z.ZodString;
682
+ env_from_settings: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
683
+ }, "strip", z.ZodTypeAny, {
684
+ id: string;
685
+ handler: string;
686
+ expr: string;
687
+ env_from_settings: string[];
688
+ }, {
689
+ id: string;
690
+ handler: string;
691
+ expr: string;
692
+ env_from_settings?: string[] | undefined;
693
+ }>, "many">>;
694
+ window: z.ZodOptional<z.ZodObject<{
695
+ label: z.ZodString;
696
+ url: z.ZodString;
697
+ size: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
698
+ decorations: z.ZodOptional<z.ZodBoolean>;
699
+ menu: z.ZodOptional<z.ZodString>;
700
+ }, "strip", z.ZodTypeAny, {
701
+ url: string;
702
+ label: string;
703
+ size?: [number, number] | undefined;
704
+ decorations?: boolean | undefined;
705
+ menu?: string | undefined;
706
+ }, {
707
+ url: string;
708
+ label: string;
709
+ size?: [number, number] | undefined;
710
+ decorations?: boolean | undefined;
711
+ menu?: string | undefined;
712
+ }>>;
713
+ queries: z.ZodOptional<z.ZodObject<{
714
+ key_prefixes: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
715
+ }, "strip", z.ZodTypeAny, {
716
+ key_prefixes: string[];
717
+ }, {
718
+ key_prefixes?: string[] | undefined;
719
+ }>>;
720
+ }, "strip", z.ZodTypeAny, {
721
+ mcp: {
722
+ args: string[];
723
+ name: string;
724
+ command: string;
725
+ env: Record<string, string>;
726
+ lifecycle?: "per-call" | "long-lived" | undefined;
727
+ }[];
728
+ id: string;
729
+ name: string;
730
+ version: string;
731
+ permissions: {
732
+ 'shell.execute': string[];
733
+ 'fs.read': string[];
734
+ 'fs.write': string[];
735
+ net: string[];
736
+ 'supabase.tables': string[];
737
+ 'vault.keys': string[];
738
+ };
739
+ ikenga_api: string;
740
+ targets: string[];
741
+ sidecars: {
742
+ name: string;
743
+ bin: string;
744
+ stdio: string;
745
+ }[];
746
+ ui: {
747
+ nav: {
748
+ label: string;
749
+ id: string;
750
+ route: string;
751
+ section?: string | undefined;
752
+ icon?: string | undefined;
753
+ }[];
754
+ routes: {
755
+ path: string;
756
+ kind: "iframe" | "component";
757
+ source: string;
758
+ }[];
759
+ command_palette: {
760
+ label: string;
761
+ id: string;
762
+ shortcut?: string | undefined;
763
+ action?: unknown;
764
+ }[];
765
+ side_pane_viewers: {
766
+ label: string;
767
+ id: string;
768
+ route: string;
769
+ }[];
770
+ csp?: Record<string, string[]> | undefined;
771
+ permissions?: Record<string, string[]> | undefined;
772
+ };
773
+ cron: {
774
+ id: string;
775
+ handler: string;
776
+ expr: string;
777
+ env_from_settings: string[];
778
+ }[];
779
+ queries?: {
780
+ key_prefixes: string[];
781
+ } | undefined;
782
+ author?: {
783
+ name: string;
784
+ key?: string | undefined;
785
+ } | undefined;
786
+ kind?: string | undefined;
787
+ skills?: string | undefined;
788
+ commands?: string | undefined;
789
+ agents?: string | undefined;
790
+ migrations?: string | undefined;
791
+ settings?: {
792
+ schema: {
793
+ type: "string" | "number" | "boolean" | "secret";
794
+ label: string;
795
+ key: string;
796
+ description?: string | undefined;
797
+ default?: unknown;
798
+ }[];
799
+ } | undefined;
800
+ iyke?: {
801
+ routes: {
802
+ path: string;
803
+ method: "GET" | "POST";
804
+ handler: string;
805
+ }[];
806
+ events: string[];
807
+ } | undefined;
808
+ window?: {
809
+ url: string;
810
+ label: string;
811
+ size?: [number, number] | undefined;
812
+ decorations?: boolean | undefined;
813
+ menu?: string | undefined;
814
+ } | undefined;
815
+ }, {
816
+ id: string;
817
+ name: string;
818
+ version: string;
819
+ ikenga_api: string;
820
+ mcp?: {
821
+ name: string;
822
+ command: string;
823
+ args?: string[] | undefined;
824
+ env?: Record<string, string> | undefined;
825
+ lifecycle?: "per-call" | "long-lived" | undefined;
826
+ }[] | undefined;
827
+ queries?: {
828
+ key_prefixes?: string[] | undefined;
829
+ } | undefined;
830
+ author?: {
831
+ name: string;
832
+ key?: string | undefined;
833
+ } | undefined;
834
+ kind?: string | undefined;
835
+ permissions?: {
836
+ 'shell.execute'?: string[] | undefined;
837
+ 'fs.read'?: string[] | undefined;
838
+ 'fs.write'?: string[] | undefined;
839
+ net?: string[] | undefined;
840
+ 'supabase.tables'?: string[] | undefined;
841
+ 'vault.keys'?: string[] | undefined;
842
+ } | undefined;
843
+ targets?: string[] | undefined;
844
+ skills?: string | undefined;
845
+ commands?: string | undefined;
846
+ agents?: string | undefined;
847
+ sidecars?: {
848
+ name: string;
849
+ bin: string;
850
+ stdio?: string | undefined;
851
+ }[] | undefined;
852
+ migrations?: string | undefined;
853
+ settings?: {
854
+ schema?: {
855
+ type: "string" | "number" | "boolean" | "secret";
856
+ label: string;
857
+ key: string;
858
+ description?: string | undefined;
859
+ default?: unknown;
860
+ }[] | undefined;
861
+ } | undefined;
862
+ ui?: {
863
+ nav?: {
864
+ label: string;
865
+ id: string;
866
+ route: string;
867
+ section?: string | undefined;
868
+ icon?: string | undefined;
869
+ }[] | undefined;
870
+ routes?: {
871
+ path: string;
872
+ kind: "iframe" | "component";
873
+ source: string;
874
+ }[] | undefined;
875
+ command_palette?: {
876
+ label: string;
877
+ id: string;
878
+ shortcut?: string | undefined;
879
+ action?: unknown;
880
+ }[] | undefined;
881
+ side_pane_viewers?: {
882
+ label: string;
883
+ id: string;
884
+ route: string;
885
+ }[] | undefined;
886
+ csp?: Record<string, string[]> | undefined;
887
+ permissions?: Record<string, string[]> | undefined;
888
+ } | undefined;
889
+ iyke?: {
890
+ routes?: {
891
+ path: string;
892
+ method: "GET" | "POST";
893
+ handler: string;
894
+ }[] | undefined;
895
+ events?: string[] | undefined;
896
+ } | undefined;
897
+ cron?: {
898
+ id: string;
899
+ handler: string;
900
+ expr: string;
901
+ env_from_settings?: string[] | undefined;
902
+ }[] | undefined;
903
+ window?: {
904
+ url: string;
905
+ label: string;
906
+ size?: [number, number] | undefined;
907
+ decorations?: boolean | undefined;
908
+ menu?: string | undefined;
909
+ } | undefined;
910
+ }>;
911
+ export type Manifest = z.infer<typeof ManifestSchema>;
912
+ /** Convert a reverse-DNS id to a slug: `com.ikenga.studio` → `com-ikenga-studio`. */
913
+ export declare function pkgSlug(id: string): string;
914
+ /** Sidecar names must start with `pa-<pkg-slug>-`. */
915
+ export declare function expectedSidecarPrefix(id: string): string;
916
+ export declare function isCompatible(api: string): boolean;
917
+ //# sourceMappingURL=manifest.d.ts.map