@ikenga/contract 0.18.0 → 0.19.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.
Files changed (39) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/manifest.d.ts +1803 -37
  6. package/dist/manifest.d.ts.map +1 -1
  7. package/dist/manifest.js +125 -3
  8. package/dist/manifest.js.map +1 -1
  9. package/dist/ngwa.d.ts +2 -2
  10. package/dist/registry.d.ts +1307 -35
  11. package/dist/registry.d.ts.map +1 -1
  12. package/dist/window.d.ts +5 -5
  13. package/package.json +1 -1
  14. package/schemas/registry/pkg-detail-v1.json +532 -11
  15. package/src/__fixtures__/manifest-v5/README.md +23 -0
  16. package/src/__fixtures__/manifest-v5/alias/nav-only.json +16 -0
  17. package/src/__fixtures__/manifest-v5/invalid/companion-panel-missing-route.json +11 -0
  18. package/src/__fixtures__/manifest-v5/invalid/context-action-bad-run.json +16 -0
  19. package/src/__fixtures__/manifest-v5/invalid/context-selector-bad-kind.json +16 -0
  20. package/src/__fixtures__/manifest-v5/invalid/explorer-section-missing-data-route.json +11 -0
  21. package/src/__fixtures__/manifest-v5/invalid/side-pane-viewers-empty.json +9 -0
  22. package/src/__fixtures__/manifest-v5/invalid/side-pane-viewers.json +14 -0
  23. package/src/__fixtures__/manifest-v5/invalid/view-route-no-routes.json +11 -0
  24. package/src/__fixtures__/manifest-v5/invalid/view-route-undeclared.json +15 -0
  25. package/src/__fixtures__/manifest-v5/invalid/view-unknown-field.json +14 -0
  26. package/src/__fixtures__/manifest-v5/invalid/widget-bad-span.json +14 -0
  27. package/src/__fixtures__/manifest-v5/valid/companion-panels.json +26 -0
  28. package/src/__fixtures__/manifest-v5/valid/context-actions.json +41 -0
  29. package/src/__fixtures__/manifest-v5/valid/explorer-sections.json +31 -0
  30. package/src/__fixtures__/manifest-v5/valid/full.json +42 -0
  31. package/src/__fixtures__/manifest-v5/valid/minimal.json +6 -0
  32. package/src/__fixtures__/manifest-v5/valid/nav-and-views.json +17 -0
  33. package/src/__fixtures__/manifest-v5/valid/v4-manifest.json +20 -0
  34. package/src/__fixtures__/manifest-v5/valid/views.json +26 -0
  35. package/src/__fixtures__/manifest-v5/valid/widgets.json +18 -0
  36. package/src/index.ts +1 -1
  37. package/src/manifest.test.ts +350 -2
  38. package/src/manifest.ts +143 -3
  39. package/src/ngwa.test.ts +46 -2
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- export declare const IKENGA_API_VERSION: 4;
2
+ export declare const IKENGA_API_VERSION: 5;
3
3
  export declare const IKENGA_API_MIN_SUPPORTED: 1;
4
4
  export declare const AuthorSchema: z.ZodObject<{
5
5
  name: z.ZodString;
@@ -193,7 +193,316 @@ export declare const ManifestUiSessionSchema: z.ZodObject<{
193
193
  persistence: "keep" | "clear-on-exit" | "ask";
194
194
  }>;
195
195
  export type ManifestUiSession = z.infer<typeof ManifestUiSessionSchema>;
196
- export declare const UiBlockSchema: z.ZodDefault<z.ZodObject<{
196
+ export declare const ViewEntrySchema: z.ZodObject<{
197
+ id: z.ZodString;
198
+ title: z.ZodString;
199
+ icon: z.ZodOptional<z.ZodString>;
200
+ /** A pkg UI namespace path, e.g. `/grid` → pane route `pkg://<id>/grid`.
201
+ * Must match a declared `ui.routes[]` path (§6 Q3). */
202
+ route: z.ZodString;
203
+ /** Honoured ONCE, at first install (Round 2 Q1). Updates never re-pin;
204
+ * unpin is permanent. Kernel "first install" = no prior install row. */
205
+ pin_on_install: z.ZodDefault<z.ZodBoolean>;
206
+ }, "strict", z.ZodTypeAny, {
207
+ id: string;
208
+ title: string;
209
+ route: string;
210
+ pin_on_install: boolean;
211
+ icon?: string | undefined;
212
+ }, {
213
+ id: string;
214
+ title: string;
215
+ route: string;
216
+ icon?: string | undefined;
217
+ pin_on_install?: boolean | undefined;
218
+ }>;
219
+ export type ViewEntry = z.infer<typeof ViewEntrySchema>;
220
+ export declare const ExplorerSectionEntrySchema: z.ZodObject<{
221
+ id: z.ZodString;
222
+ title: z.ZodString;
223
+ icon: z.ZodOptional<z.ZodString>;
224
+ order: z.ZodOptional<z.ZodNumber>;
225
+ /** GET iyke route under `/pkg/<id>/` returning ExplorerSectionData. */
226
+ data_route: z.ZodString;
227
+ }, "strict", z.ZodTypeAny, {
228
+ id: string;
229
+ title: string;
230
+ data_route: string;
231
+ icon?: string | undefined;
232
+ order?: number | undefined;
233
+ }, {
234
+ id: string;
235
+ title: string;
236
+ data_route: string;
237
+ icon?: string | undefined;
238
+ order?: number | undefined;
239
+ }>;
240
+ export type ExplorerSectionEntry = z.infer<typeof ExplorerSectionEntrySchema>;
241
+ /** The JSON a `data_route` returns. The shell renders it natively — the
242
+ * section is data, never an embedded iframe (P4 fix, discussion §3.2). */
243
+ export declare const ExplorerSectionDataSchema: z.ZodObject<{
244
+ rows: z.ZodDefault<z.ZodArray<z.ZodObject<{
245
+ id: z.ZodString;
246
+ label: z.ZodString;
247
+ badge: z.ZodOptional<z.ZodObject<{
248
+ count: z.ZodOptional<z.ZodNumber>;
249
+ tooltip: z.ZodOptional<z.ZodString>;
250
+ }, "strip", z.ZodTypeAny, {
251
+ count?: number | undefined;
252
+ tooltip?: string | undefined;
253
+ }, {
254
+ count?: number | undefined;
255
+ tooltip?: string | undefined;
256
+ }>>;
257
+ /** Pane target on click: a pkg route (`pkg://...`) or a shell route (`/...`). */
258
+ open: z.ZodOptional<z.ZodString>;
259
+ }, "strip", z.ZodTypeAny, {
260
+ label: string;
261
+ id: string;
262
+ badge?: {
263
+ count?: number | undefined;
264
+ tooltip?: string | undefined;
265
+ } | undefined;
266
+ open?: string | undefined;
267
+ }, {
268
+ label: string;
269
+ id: string;
270
+ badge?: {
271
+ count?: number | undefined;
272
+ tooltip?: string | undefined;
273
+ } | undefined;
274
+ open?: string | undefined;
275
+ }>, "many">>;
276
+ as_of_ms: z.ZodOptional<z.ZodNumber>;
277
+ }, "strict", z.ZodTypeAny, {
278
+ rows: {
279
+ label: string;
280
+ id: string;
281
+ badge?: {
282
+ count?: number | undefined;
283
+ tooltip?: string | undefined;
284
+ } | undefined;
285
+ open?: string | undefined;
286
+ }[];
287
+ as_of_ms?: number | undefined;
288
+ }, {
289
+ rows?: {
290
+ label: string;
291
+ id: string;
292
+ badge?: {
293
+ count?: number | undefined;
294
+ tooltip?: string | undefined;
295
+ } | undefined;
296
+ open?: string | undefined;
297
+ }[] | undefined;
298
+ as_of_ms?: number | undefined;
299
+ }>;
300
+ export type ExplorerSectionData = z.infer<typeof ExplorerSectionDataSchema>;
301
+ export declare const CompanionPanelEntrySchema: z.ZodObject<{
302
+ id: z.ZodString;
303
+ title: z.ZodString;
304
+ icon: z.ZodOptional<z.ZodString>;
305
+ /** Pane route rendered in the panel slot (an iframe view). Must render
306
+ * state, never model prose — ADR-021 checklist applies. */
307
+ route: z.ZodString;
308
+ /** When true the shell threads `panelScopeSessionId` (the selected
309
+ * Companion session tab) through the AppBridge hostContext. */
310
+ session_scoped: z.ZodDefault<z.ZodBoolean>;
311
+ }, "strict", z.ZodTypeAny, {
312
+ id: string;
313
+ title: string;
314
+ route: string;
315
+ session_scoped: boolean;
316
+ icon?: string | undefined;
317
+ }, {
318
+ id: string;
319
+ title: string;
320
+ route: string;
321
+ icon?: string | undefined;
322
+ session_scoped?: boolean | undefined;
323
+ }>;
324
+ export type CompanionPanelEntry = z.infer<typeof CompanionPanelEntrySchema>;
325
+ export declare const ContextSelectorSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
326
+ kind: z.ZodLiteral<"file">;
327
+ glob: z.ZodOptional<z.ZodString>;
328
+ }, "strip", z.ZodTypeAny, {
329
+ kind: "file";
330
+ glob?: string | undefined;
331
+ }, {
332
+ kind: "file";
333
+ glob?: string | undefined;
334
+ }>, z.ZodObject<{
335
+ kind: z.ZodLiteral<"artifact">;
336
+ }, "strip", z.ZodTypeAny, {
337
+ kind: "artifact";
338
+ }, {
339
+ kind: "artifact";
340
+ }>, z.ZodObject<{
341
+ kind: z.ZodLiteral<"session">;
342
+ }, "strip", z.ZodTypeAny, {
343
+ kind: "session";
344
+ }, {
345
+ kind: "session";
346
+ }>, z.ZodObject<{
347
+ kind: z.ZodLiteral<"ngwa-item">;
348
+ kinds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
349
+ }, "strip", z.ZodTypeAny, {
350
+ kind: "ngwa-item";
351
+ kinds?: string[] | undefined;
352
+ }, {
353
+ kind: "ngwa-item";
354
+ kinds?: string[] | undefined;
355
+ }>]>;
356
+ export type ContextSelector = z.infer<typeof ContextSelectorSchema>;
357
+ export declare const ContextActionRunSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
358
+ kind: z.ZodLiteral<"dispatch">;
359
+ prompt: z.ZodString;
360
+ target: z.ZodOptional<z.ZodString>;
361
+ }, "strip", z.ZodTypeAny, {
362
+ kind: "dispatch";
363
+ prompt: string;
364
+ target?: string | undefined;
365
+ }, {
366
+ kind: "dispatch";
367
+ prompt: string;
368
+ target?: string | undefined;
369
+ }>, z.ZodObject<{
370
+ kind: z.ZodLiteral<"view">;
371
+ route: z.ZodString;
372
+ }, "strip", z.ZodTypeAny, {
373
+ kind: "view";
374
+ route: string;
375
+ }, {
376
+ kind: "view";
377
+ route: string;
378
+ }>]>;
379
+ export type ContextActionRun = z.infer<typeof ContextActionRunSchema>;
380
+ export declare const ContextActionEntrySchema: z.ZodObject<{
381
+ id: z.ZodString;
382
+ label: z.ZodString;
383
+ when: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
384
+ kind: z.ZodLiteral<"file">;
385
+ glob: z.ZodOptional<z.ZodString>;
386
+ }, "strip", z.ZodTypeAny, {
387
+ kind: "file";
388
+ glob?: string | undefined;
389
+ }, {
390
+ kind: "file";
391
+ glob?: string | undefined;
392
+ }>, z.ZodObject<{
393
+ kind: z.ZodLiteral<"artifact">;
394
+ }, "strip", z.ZodTypeAny, {
395
+ kind: "artifact";
396
+ }, {
397
+ kind: "artifact";
398
+ }>, z.ZodObject<{
399
+ kind: z.ZodLiteral<"session">;
400
+ }, "strip", z.ZodTypeAny, {
401
+ kind: "session";
402
+ }, {
403
+ kind: "session";
404
+ }>, z.ZodObject<{
405
+ kind: z.ZodLiteral<"ngwa-item">;
406
+ kinds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
407
+ }, "strip", z.ZodTypeAny, {
408
+ kind: "ngwa-item";
409
+ kinds?: string[] | undefined;
410
+ }, {
411
+ kind: "ngwa-item";
412
+ kinds?: string[] | undefined;
413
+ }>]>;
414
+ run: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
415
+ kind: z.ZodLiteral<"dispatch">;
416
+ prompt: z.ZodString;
417
+ target: z.ZodOptional<z.ZodString>;
418
+ }, "strip", z.ZodTypeAny, {
419
+ kind: "dispatch";
420
+ prompt: string;
421
+ target?: string | undefined;
422
+ }, {
423
+ kind: "dispatch";
424
+ prompt: string;
425
+ target?: string | undefined;
426
+ }>, z.ZodObject<{
427
+ kind: z.ZodLiteral<"view">;
428
+ route: z.ZodString;
429
+ }, "strip", z.ZodTypeAny, {
430
+ kind: "view";
431
+ route: string;
432
+ }, {
433
+ kind: "view";
434
+ route: string;
435
+ }>]>;
436
+ }, "strict", z.ZodTypeAny, {
437
+ label: string;
438
+ run: {
439
+ kind: "dispatch";
440
+ prompt: string;
441
+ target?: string | undefined;
442
+ } | {
443
+ kind: "view";
444
+ route: string;
445
+ };
446
+ id: string;
447
+ when: {
448
+ kind: "file";
449
+ glob?: string | undefined;
450
+ } | {
451
+ kind: "artifact";
452
+ } | {
453
+ kind: "session";
454
+ } | {
455
+ kind: "ngwa-item";
456
+ kinds?: string[] | undefined;
457
+ };
458
+ }, {
459
+ label: string;
460
+ run: {
461
+ kind: "dispatch";
462
+ prompt: string;
463
+ target?: string | undefined;
464
+ } | {
465
+ kind: "view";
466
+ route: string;
467
+ };
468
+ id: string;
469
+ when: {
470
+ kind: "file";
471
+ glob?: string | undefined;
472
+ } | {
473
+ kind: "artifact";
474
+ } | {
475
+ kind: "session";
476
+ } | {
477
+ kind: "ngwa-item";
478
+ kinds?: string[] | undefined;
479
+ };
480
+ }>;
481
+ export type ContextActionEntry = z.infer<typeof ContextActionEntrySchema>;
482
+ export declare const WidgetEntrySchema: z.ZodObject<{
483
+ id: z.ZodString;
484
+ title: z.ZodString;
485
+ route: z.ZodString;
486
+ span: z.ZodDefault<z.ZodEnum<["small", "medium", "wide"]>>;
487
+ }, "strict", z.ZodTypeAny, {
488
+ id: string;
489
+ title: string;
490
+ route: string;
491
+ span: "small" | "medium" | "wide";
492
+ }, {
493
+ id: string;
494
+ title: string;
495
+ route: string;
496
+ span?: "small" | "medium" | "wide" | undefined;
497
+ }>;
498
+ export type WidgetEntry = z.infer<typeof WidgetEntrySchema>;
499
+ export declare const UiBlockSchema: z.ZodDefault<z.ZodEffects<z.ZodObject<{
500
+ /** @deprecated v5 alias (G-MANIFEST-V5 §4): the shell reads `nav[i]` as
501
+ * `views[i]` = `{id, title: label, icon, route, pin_on_install: i === 0}`
502
+ * for exactly one shell release, then deletes the mapping. Field and type
503
+ * are unchanged; a manifest declaring both `nav` and `views` still parses
504
+ * (`nav` is ignored with a shell-side warning). New manifests declare
505
+ * `views` instead. */
197
506
  nav: z.ZodDefault<z.ZodArray<z.ZodObject<{
198
507
  id: z.ZodString;
199
508
  label: z.ZodString;
@@ -247,18 +556,194 @@ export declare const UiBlockSchema: z.ZodDefault<z.ZodObject<{
247
556
  shortcut?: string | undefined;
248
557
  action?: unknown;
249
558
  }>, "many">>;
250
- side_pane_viewers: z.ZodDefault<z.ZodArray<z.ZodObject<{
559
+ /** v5 hard-retire (G-MANIFEST-V5 §8 Q1 / DEC-34): `side_pane_viewers` was
560
+ * removed from the block; declaring it fails validation outright.
561
+ * `z.never()` is the contract-side mirror of the Rust canonical rejection
562
+ * (skills/commands-bundling precedent). `SidePaneViewerSchema` stays
563
+ * exported for tooling that reads historical manifests. */
564
+ side_pane_viewers: z.ZodOptional<z.ZodNever>;
565
+ views: z.ZodDefault<z.ZodArray<z.ZodObject<{
251
566
  id: z.ZodString;
252
- label: z.ZodString;
567
+ title: z.ZodString;
568
+ icon: z.ZodOptional<z.ZodString>;
569
+ /** A pkg UI namespace path, e.g. `/grid` → pane route `pkg://<id>/grid`.
570
+ * Must match a declared `ui.routes[]` path (§6 Q3). */
253
571
  route: z.ZodString;
254
- }, "strip", z.ZodTypeAny, {
255
- label: string;
572
+ /** Honoured ONCE, at first install (Round 2 Q1). Updates never re-pin;
573
+ * unpin is permanent. Kernel "first install" = no prior install row. */
574
+ pin_on_install: z.ZodDefault<z.ZodBoolean>;
575
+ }, "strict", z.ZodTypeAny, {
576
+ id: string;
577
+ title: string;
578
+ route: string;
579
+ pin_on_install: boolean;
580
+ icon?: string | undefined;
581
+ }, {
256
582
  id: string;
583
+ title: string;
257
584
  route: string;
585
+ icon?: string | undefined;
586
+ pin_on_install?: boolean | undefined;
587
+ }>, "many">>;
588
+ explorer_sections: z.ZodDefault<z.ZodArray<z.ZodObject<{
589
+ id: z.ZodString;
590
+ title: z.ZodString;
591
+ icon: z.ZodOptional<z.ZodString>;
592
+ order: z.ZodOptional<z.ZodNumber>;
593
+ /** GET iyke route under `/pkg/<id>/` returning ExplorerSectionData. */
594
+ data_route: z.ZodString;
595
+ }, "strict", z.ZodTypeAny, {
596
+ id: string;
597
+ title: string;
598
+ data_route: string;
599
+ icon?: string | undefined;
600
+ order?: number | undefined;
601
+ }, {
602
+ id: string;
603
+ title: string;
604
+ data_route: string;
605
+ icon?: string | undefined;
606
+ order?: number | undefined;
607
+ }>, "many">>;
608
+ companion_panels: z.ZodDefault<z.ZodArray<z.ZodObject<{
609
+ id: z.ZodString;
610
+ title: z.ZodString;
611
+ icon: z.ZodOptional<z.ZodString>;
612
+ /** Pane route rendered in the panel slot (an iframe view). Must render
613
+ * state, never model prose — ADR-021 checklist applies. */
614
+ route: z.ZodString;
615
+ /** When true the shell threads `panelScopeSessionId` (the selected
616
+ * Companion session tab) through the AppBridge hostContext. */
617
+ session_scoped: z.ZodDefault<z.ZodBoolean>;
618
+ }, "strict", z.ZodTypeAny, {
619
+ id: string;
620
+ title: string;
621
+ route: string;
622
+ session_scoped: boolean;
623
+ icon?: string | undefined;
624
+ }, {
625
+ id: string;
626
+ title: string;
627
+ route: string;
628
+ icon?: string | undefined;
629
+ session_scoped?: boolean | undefined;
630
+ }>, "many">>;
631
+ context_actions: z.ZodDefault<z.ZodArray<z.ZodObject<{
632
+ id: z.ZodString;
633
+ label: z.ZodString;
634
+ when: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
635
+ kind: z.ZodLiteral<"file">;
636
+ glob: z.ZodOptional<z.ZodString>;
637
+ }, "strip", z.ZodTypeAny, {
638
+ kind: "file";
639
+ glob?: string | undefined;
640
+ }, {
641
+ kind: "file";
642
+ glob?: string | undefined;
643
+ }>, z.ZodObject<{
644
+ kind: z.ZodLiteral<"artifact">;
645
+ }, "strip", z.ZodTypeAny, {
646
+ kind: "artifact";
647
+ }, {
648
+ kind: "artifact";
649
+ }>, z.ZodObject<{
650
+ kind: z.ZodLiteral<"session">;
651
+ }, "strip", z.ZodTypeAny, {
652
+ kind: "session";
653
+ }, {
654
+ kind: "session";
655
+ }>, z.ZodObject<{
656
+ kind: z.ZodLiteral<"ngwa-item">;
657
+ kinds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
658
+ }, "strip", z.ZodTypeAny, {
659
+ kind: "ngwa-item";
660
+ kinds?: string[] | undefined;
661
+ }, {
662
+ kind: "ngwa-item";
663
+ kinds?: string[] | undefined;
664
+ }>]>;
665
+ run: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
666
+ kind: z.ZodLiteral<"dispatch">;
667
+ prompt: z.ZodString;
668
+ target: z.ZodOptional<z.ZodString>;
669
+ }, "strip", z.ZodTypeAny, {
670
+ kind: "dispatch";
671
+ prompt: string;
672
+ target?: string | undefined;
673
+ }, {
674
+ kind: "dispatch";
675
+ prompt: string;
676
+ target?: string | undefined;
677
+ }>, z.ZodObject<{
678
+ kind: z.ZodLiteral<"view">;
679
+ route: z.ZodString;
680
+ }, "strip", z.ZodTypeAny, {
681
+ kind: "view";
682
+ route: string;
683
+ }, {
684
+ kind: "view";
685
+ route: string;
686
+ }>]>;
687
+ }, "strict", z.ZodTypeAny, {
688
+ label: string;
689
+ run: {
690
+ kind: "dispatch";
691
+ prompt: string;
692
+ target?: string | undefined;
693
+ } | {
694
+ kind: "view";
695
+ route: string;
696
+ };
697
+ id: string;
698
+ when: {
699
+ kind: "file";
700
+ glob?: string | undefined;
701
+ } | {
702
+ kind: "artifact";
703
+ } | {
704
+ kind: "session";
705
+ } | {
706
+ kind: "ngwa-item";
707
+ kinds?: string[] | undefined;
708
+ };
258
709
  }, {
259
710
  label: string;
711
+ run: {
712
+ kind: "dispatch";
713
+ prompt: string;
714
+ target?: string | undefined;
715
+ } | {
716
+ kind: "view";
717
+ route: string;
718
+ };
260
719
  id: string;
720
+ when: {
721
+ kind: "file";
722
+ glob?: string | undefined;
723
+ } | {
724
+ kind: "artifact";
725
+ } | {
726
+ kind: "session";
727
+ } | {
728
+ kind: "ngwa-item";
729
+ kinds?: string[] | undefined;
730
+ };
731
+ }>, "many">>;
732
+ widgets: z.ZodDefault<z.ZodArray<z.ZodObject<{
733
+ id: z.ZodString;
734
+ title: z.ZodString;
735
+ route: z.ZodString;
736
+ span: z.ZodDefault<z.ZodEnum<["small", "medium", "wide"]>>;
737
+ }, "strict", z.ZodTypeAny, {
738
+ id: string;
739
+ title: string;
261
740
  route: string;
741
+ span: "small" | "medium" | "wide";
742
+ }, {
743
+ id: string;
744
+ title: string;
745
+ route: string;
746
+ span?: "small" | "medium" | "wide" | undefined;
262
747
  }>, "many">>;
263
748
  /** Per-directive CSP overrides for the iframe content. */
264
749
  csp: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
@@ -291,14 +776,60 @@ export declare const UiBlockSchema: z.ZodDefault<z.ZodObject<{
291
776
  shortcut?: string | undefined;
292
777
  action?: unknown;
293
778
  }[];
294
- side_pane_viewers: {
779
+ views: {
780
+ id: string;
781
+ title: string;
782
+ route: string;
783
+ pin_on_install: boolean;
784
+ icon?: string | undefined;
785
+ }[];
786
+ explorer_sections: {
787
+ id: string;
788
+ title: string;
789
+ data_route: string;
790
+ icon?: string | undefined;
791
+ order?: number | undefined;
792
+ }[];
793
+ companion_panels: {
794
+ id: string;
795
+ title: string;
796
+ route: string;
797
+ session_scoped: boolean;
798
+ icon?: string | undefined;
799
+ }[];
800
+ context_actions: {
295
801
  label: string;
802
+ run: {
803
+ kind: "dispatch";
804
+ prompt: string;
805
+ target?: string | undefined;
806
+ } | {
807
+ kind: "view";
808
+ route: string;
809
+ };
810
+ id: string;
811
+ when: {
812
+ kind: "file";
813
+ glob?: string | undefined;
814
+ } | {
815
+ kind: "artifact";
816
+ } | {
817
+ kind: "session";
818
+ } | {
819
+ kind: "ngwa-item";
820
+ kinds?: string[] | undefined;
821
+ };
822
+ }[];
823
+ widgets: {
296
824
  id: string;
825
+ title: string;
297
826
  route: string;
827
+ span: "small" | "medium" | "wide";
298
828
  }[];
299
829
  session?: {
300
830
  persistence: "keep" | "clear-on-exit" | "ask";
301
831
  } | undefined;
832
+ side_pane_viewers?: undefined;
302
833
  csp?: Record<string, string[]> | undefined;
303
834
  permissions?: Record<string, string[]> | undefined;
304
835
  }, {
@@ -324,14 +855,213 @@ export declare const UiBlockSchema: z.ZodDefault<z.ZodObject<{
324
855
  shortcut?: string | undefined;
325
856
  action?: unknown;
326
857
  }[] | undefined;
327
- side_pane_viewers?: {
858
+ side_pane_viewers?: undefined;
859
+ views?: {
860
+ id: string;
861
+ title: string;
862
+ route: string;
863
+ icon?: string | undefined;
864
+ pin_on_install?: boolean | undefined;
865
+ }[] | undefined;
866
+ explorer_sections?: {
867
+ id: string;
868
+ title: string;
869
+ data_route: string;
870
+ icon?: string | undefined;
871
+ order?: number | undefined;
872
+ }[] | undefined;
873
+ companion_panels?: {
874
+ id: string;
875
+ title: string;
876
+ route: string;
877
+ icon?: string | undefined;
878
+ session_scoped?: boolean | undefined;
879
+ }[] | undefined;
880
+ context_actions?: {
328
881
  label: string;
882
+ run: {
883
+ kind: "dispatch";
884
+ prompt: string;
885
+ target?: string | undefined;
886
+ } | {
887
+ kind: "view";
888
+ route: string;
889
+ };
890
+ id: string;
891
+ when: {
892
+ kind: "file";
893
+ glob?: string | undefined;
894
+ } | {
895
+ kind: "artifact";
896
+ } | {
897
+ kind: "session";
898
+ } | {
899
+ kind: "ngwa-item";
900
+ kinds?: string[] | undefined;
901
+ };
902
+ }[] | undefined;
903
+ widgets?: {
329
904
  id: string;
905
+ title: string;
330
906
  route: string;
907
+ span?: "small" | "medium" | "wide" | undefined;
908
+ }[] | undefined;
909
+ csp?: Record<string, string[]> | undefined;
910
+ permissions?: Record<string, string[]> | undefined;
911
+ }>, {
912
+ nav: {
913
+ label: string;
914
+ id: string;
915
+ route: string;
916
+ section?: string | undefined;
917
+ icon?: string | undefined;
918
+ }[];
919
+ routes: {
920
+ path: string;
921
+ kind: "iframe" | "component" | "webview";
922
+ source: string;
923
+ partition?: string | undefined;
924
+ }[];
925
+ command_palette: {
926
+ label: string;
927
+ id: string;
928
+ shortcut?: string | undefined;
929
+ action?: unknown;
930
+ }[];
931
+ views: {
932
+ id: string;
933
+ title: string;
934
+ route: string;
935
+ pin_on_install: boolean;
936
+ icon?: string | undefined;
937
+ }[];
938
+ explorer_sections: {
939
+ id: string;
940
+ title: string;
941
+ data_route: string;
942
+ icon?: string | undefined;
943
+ order?: number | undefined;
944
+ }[];
945
+ companion_panels: {
946
+ id: string;
947
+ title: string;
948
+ route: string;
949
+ session_scoped: boolean;
950
+ icon?: string | undefined;
951
+ }[];
952
+ context_actions: {
953
+ label: string;
954
+ run: {
955
+ kind: "dispatch";
956
+ prompt: string;
957
+ target?: string | undefined;
958
+ } | {
959
+ kind: "view";
960
+ route: string;
961
+ };
962
+ id: string;
963
+ when: {
964
+ kind: "file";
965
+ glob?: string | undefined;
966
+ } | {
967
+ kind: "artifact";
968
+ } | {
969
+ kind: "session";
970
+ } | {
971
+ kind: "ngwa-item";
972
+ kinds?: string[] | undefined;
973
+ };
974
+ }[];
975
+ widgets: {
976
+ id: string;
977
+ title: string;
978
+ route: string;
979
+ span: "small" | "medium" | "wide";
980
+ }[];
981
+ session?: {
982
+ persistence: "keep" | "clear-on-exit" | "ask";
983
+ } | undefined;
984
+ side_pane_viewers?: undefined;
985
+ csp?: Record<string, string[]> | undefined;
986
+ permissions?: Record<string, string[]> | undefined;
987
+ }, {
988
+ session?: {
989
+ persistence: "keep" | "clear-on-exit" | "ask";
990
+ } | undefined;
991
+ nav?: {
992
+ label: string;
993
+ id: string;
994
+ route: string;
995
+ section?: string | undefined;
996
+ icon?: string | undefined;
997
+ }[] | undefined;
998
+ routes?: {
999
+ path: string;
1000
+ kind: "iframe" | "component" | "webview";
1001
+ source: string;
1002
+ partition?: string | undefined;
1003
+ }[] | undefined;
1004
+ command_palette?: {
1005
+ label: string;
1006
+ id: string;
1007
+ shortcut?: string | undefined;
1008
+ action?: unknown;
1009
+ }[] | undefined;
1010
+ side_pane_viewers?: undefined;
1011
+ views?: {
1012
+ id: string;
1013
+ title: string;
1014
+ route: string;
1015
+ icon?: string | undefined;
1016
+ pin_on_install?: boolean | undefined;
1017
+ }[] | undefined;
1018
+ explorer_sections?: {
1019
+ id: string;
1020
+ title: string;
1021
+ data_route: string;
1022
+ icon?: string | undefined;
1023
+ order?: number | undefined;
1024
+ }[] | undefined;
1025
+ companion_panels?: {
1026
+ id: string;
1027
+ title: string;
1028
+ route: string;
1029
+ icon?: string | undefined;
1030
+ session_scoped?: boolean | undefined;
1031
+ }[] | undefined;
1032
+ context_actions?: {
1033
+ label: string;
1034
+ run: {
1035
+ kind: "dispatch";
1036
+ prompt: string;
1037
+ target?: string | undefined;
1038
+ } | {
1039
+ kind: "view";
1040
+ route: string;
1041
+ };
1042
+ id: string;
1043
+ when: {
1044
+ kind: "file";
1045
+ glob?: string | undefined;
1046
+ } | {
1047
+ kind: "artifact";
1048
+ } | {
1049
+ kind: "session";
1050
+ } | {
1051
+ kind: "ngwa-item";
1052
+ kinds?: string[] | undefined;
1053
+ };
1054
+ }[] | undefined;
1055
+ widgets?: {
1056
+ id: string;
1057
+ title: string;
1058
+ route: string;
1059
+ span?: "small" | "medium" | "wide" | undefined;
331
1060
  }[] | undefined;
332
1061
  csp?: Record<string, string[]> | undefined;
333
1062
  permissions?: Record<string, string[]> | undefined;
334
1063
  }>>;
1064
+ export type UiBlock = z.infer<typeof UiBlockSchema>;
335
1065
  export declare const SettingsFieldSchema: z.ZodObject<{
336
1066
  key: z.ZodString;
337
1067
  type: z.ZodEnum<["string", "number", "boolean", "secret"]>;
@@ -905,7 +1635,13 @@ export declare const ManifestSchema: z.ZodObject<{
905
1635
  env?: string | undefined;
906
1636
  }[] | undefined;
907
1637
  }>>;
908
- ui: z.ZodDefault<z.ZodObject<{
1638
+ ui: z.ZodDefault<z.ZodEffects<z.ZodObject<{
1639
+ /** @deprecated v5 alias (G-MANIFEST-V5 §4): the shell reads `nav[i]` as
1640
+ * `views[i]` = `{id, title: label, icon, route, pin_on_install: i === 0}`
1641
+ * for exactly one shell release, then deletes the mapping. Field and type
1642
+ * are unchanged; a manifest declaring both `nav` and `views` still parses
1643
+ * (`nav` is ignored with a shell-side warning). New manifests declare
1644
+ * `views` instead. */
909
1645
  nav: z.ZodDefault<z.ZodArray<z.ZodObject<{
910
1646
  id: z.ZodString;
911
1647
  label: z.ZodString;
@@ -959,31 +1695,359 @@ export declare const ManifestSchema: z.ZodObject<{
959
1695
  shortcut?: string | undefined;
960
1696
  action?: unknown;
961
1697
  }>, "many">>;
962
- side_pane_viewers: z.ZodDefault<z.ZodArray<z.ZodObject<{
1698
+ /** v5 hard-retire (G-MANIFEST-V5 §8 Q1 / DEC-34): `side_pane_viewers` was
1699
+ * removed from the block; declaring it fails validation outright.
1700
+ * `z.never()` is the contract-side mirror of the Rust canonical rejection
1701
+ * (skills/commands-bundling precedent). `SidePaneViewerSchema` stays
1702
+ * exported for tooling that reads historical manifests. */
1703
+ side_pane_viewers: z.ZodOptional<z.ZodNever>;
1704
+ views: z.ZodDefault<z.ZodArray<z.ZodObject<{
1705
+ id: z.ZodString;
1706
+ title: z.ZodString;
1707
+ icon: z.ZodOptional<z.ZodString>;
1708
+ /** A pkg UI namespace path, e.g. `/grid` → pane route `pkg://<id>/grid`.
1709
+ * Must match a declared `ui.routes[]` path (§6 Q3). */
1710
+ route: z.ZodString;
1711
+ /** Honoured ONCE, at first install (Round 2 Q1). Updates never re-pin;
1712
+ * unpin is permanent. Kernel "first install" = no prior install row. */
1713
+ pin_on_install: z.ZodDefault<z.ZodBoolean>;
1714
+ }, "strict", z.ZodTypeAny, {
1715
+ id: string;
1716
+ title: string;
1717
+ route: string;
1718
+ pin_on_install: boolean;
1719
+ icon?: string | undefined;
1720
+ }, {
1721
+ id: string;
1722
+ title: string;
1723
+ route: string;
1724
+ icon?: string | undefined;
1725
+ pin_on_install?: boolean | undefined;
1726
+ }>, "many">>;
1727
+ explorer_sections: z.ZodDefault<z.ZodArray<z.ZodObject<{
1728
+ id: z.ZodString;
1729
+ title: z.ZodString;
1730
+ icon: z.ZodOptional<z.ZodString>;
1731
+ order: z.ZodOptional<z.ZodNumber>;
1732
+ /** GET iyke route under `/pkg/<id>/` returning ExplorerSectionData. */
1733
+ data_route: z.ZodString;
1734
+ }, "strict", z.ZodTypeAny, {
1735
+ id: string;
1736
+ title: string;
1737
+ data_route: string;
1738
+ icon?: string | undefined;
1739
+ order?: number | undefined;
1740
+ }, {
1741
+ id: string;
1742
+ title: string;
1743
+ data_route: string;
1744
+ icon?: string | undefined;
1745
+ order?: number | undefined;
1746
+ }>, "many">>;
1747
+ companion_panels: z.ZodDefault<z.ZodArray<z.ZodObject<{
1748
+ id: z.ZodString;
1749
+ title: z.ZodString;
1750
+ icon: z.ZodOptional<z.ZodString>;
1751
+ /** Pane route rendered in the panel slot (an iframe view). Must render
1752
+ * state, never model prose — ADR-021 checklist applies. */
1753
+ route: z.ZodString;
1754
+ /** When true the shell threads `panelScopeSessionId` (the selected
1755
+ * Companion session tab) through the AppBridge hostContext. */
1756
+ session_scoped: z.ZodDefault<z.ZodBoolean>;
1757
+ }, "strict", z.ZodTypeAny, {
1758
+ id: string;
1759
+ title: string;
1760
+ route: string;
1761
+ session_scoped: boolean;
1762
+ icon?: string | undefined;
1763
+ }, {
1764
+ id: string;
1765
+ title: string;
1766
+ route: string;
1767
+ icon?: string | undefined;
1768
+ session_scoped?: boolean | undefined;
1769
+ }>, "many">>;
1770
+ context_actions: z.ZodDefault<z.ZodArray<z.ZodObject<{
963
1771
  id: z.ZodString;
964
1772
  label: z.ZodString;
1773
+ when: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
1774
+ kind: z.ZodLiteral<"file">;
1775
+ glob: z.ZodOptional<z.ZodString>;
1776
+ }, "strip", z.ZodTypeAny, {
1777
+ kind: "file";
1778
+ glob?: string | undefined;
1779
+ }, {
1780
+ kind: "file";
1781
+ glob?: string | undefined;
1782
+ }>, z.ZodObject<{
1783
+ kind: z.ZodLiteral<"artifact">;
1784
+ }, "strip", z.ZodTypeAny, {
1785
+ kind: "artifact";
1786
+ }, {
1787
+ kind: "artifact";
1788
+ }>, z.ZodObject<{
1789
+ kind: z.ZodLiteral<"session">;
1790
+ }, "strip", z.ZodTypeAny, {
1791
+ kind: "session";
1792
+ }, {
1793
+ kind: "session";
1794
+ }>, z.ZodObject<{
1795
+ kind: z.ZodLiteral<"ngwa-item">;
1796
+ kinds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1797
+ }, "strip", z.ZodTypeAny, {
1798
+ kind: "ngwa-item";
1799
+ kinds?: string[] | undefined;
1800
+ }, {
1801
+ kind: "ngwa-item";
1802
+ kinds?: string[] | undefined;
1803
+ }>]>;
1804
+ run: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
1805
+ kind: z.ZodLiteral<"dispatch">;
1806
+ prompt: z.ZodString;
1807
+ target: z.ZodOptional<z.ZodString>;
1808
+ }, "strip", z.ZodTypeAny, {
1809
+ kind: "dispatch";
1810
+ prompt: string;
1811
+ target?: string | undefined;
1812
+ }, {
1813
+ kind: "dispatch";
1814
+ prompt: string;
1815
+ target?: string | undefined;
1816
+ }>, z.ZodObject<{
1817
+ kind: z.ZodLiteral<"view">;
1818
+ route: z.ZodString;
1819
+ }, "strip", z.ZodTypeAny, {
1820
+ kind: "view";
1821
+ route: string;
1822
+ }, {
1823
+ kind: "view";
1824
+ route: string;
1825
+ }>]>;
1826
+ }, "strict", z.ZodTypeAny, {
1827
+ label: string;
1828
+ run: {
1829
+ kind: "dispatch";
1830
+ prompt: string;
1831
+ target?: string | undefined;
1832
+ } | {
1833
+ kind: "view";
1834
+ route: string;
1835
+ };
1836
+ id: string;
1837
+ when: {
1838
+ kind: "file";
1839
+ glob?: string | undefined;
1840
+ } | {
1841
+ kind: "artifact";
1842
+ } | {
1843
+ kind: "session";
1844
+ } | {
1845
+ kind: "ngwa-item";
1846
+ kinds?: string[] | undefined;
1847
+ };
1848
+ }, {
1849
+ label: string;
1850
+ run: {
1851
+ kind: "dispatch";
1852
+ prompt: string;
1853
+ target?: string | undefined;
1854
+ } | {
1855
+ kind: "view";
1856
+ route: string;
1857
+ };
1858
+ id: string;
1859
+ when: {
1860
+ kind: "file";
1861
+ glob?: string | undefined;
1862
+ } | {
1863
+ kind: "artifact";
1864
+ } | {
1865
+ kind: "session";
1866
+ } | {
1867
+ kind: "ngwa-item";
1868
+ kinds?: string[] | undefined;
1869
+ };
1870
+ }>, "many">>;
1871
+ widgets: z.ZodDefault<z.ZodArray<z.ZodObject<{
1872
+ id: z.ZodString;
1873
+ title: z.ZodString;
965
1874
  route: z.ZodString;
1875
+ span: z.ZodDefault<z.ZodEnum<["small", "medium", "wide"]>>;
1876
+ }, "strict", z.ZodTypeAny, {
1877
+ id: string;
1878
+ title: string;
1879
+ route: string;
1880
+ span: "small" | "medium" | "wide";
1881
+ }, {
1882
+ id: string;
1883
+ title: string;
1884
+ route: string;
1885
+ span?: "small" | "medium" | "wide" | undefined;
1886
+ }>, "many">>;
1887
+ /** Per-directive CSP overrides for the iframe content. */
1888
+ csp: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
1889
+ /** Per-directive Permission-Policy values. */
1890
+ permissions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
1891
+ session: z.ZodOptional<z.ZodObject<{
1892
+ persistence: z.ZodEnum<["keep", "clear-on-exit", "ask"]>;
966
1893
  }, "strip", z.ZodTypeAny, {
1894
+ persistence: "keep" | "clear-on-exit" | "ask";
1895
+ }, {
1896
+ persistence: "keep" | "clear-on-exit" | "ask";
1897
+ }>>;
1898
+ }, "strip", z.ZodTypeAny, {
1899
+ nav: {
967
1900
  label: string;
968
1901
  id: string;
969
1902
  route: string;
970
- }, {
1903
+ section?: string | undefined;
1904
+ icon?: string | undefined;
1905
+ }[];
1906
+ routes: {
1907
+ path: string;
1908
+ kind: "iframe" | "component" | "webview";
1909
+ source: string;
1910
+ partition?: string | undefined;
1911
+ }[];
1912
+ command_palette: {
1913
+ label: string;
1914
+ id: string;
1915
+ shortcut?: string | undefined;
1916
+ action?: unknown;
1917
+ }[];
1918
+ views: {
1919
+ id: string;
1920
+ title: string;
1921
+ route: string;
1922
+ pin_on_install: boolean;
1923
+ icon?: string | undefined;
1924
+ }[];
1925
+ explorer_sections: {
1926
+ id: string;
1927
+ title: string;
1928
+ data_route: string;
1929
+ icon?: string | undefined;
1930
+ order?: number | undefined;
1931
+ }[];
1932
+ companion_panels: {
1933
+ id: string;
1934
+ title: string;
1935
+ route: string;
1936
+ session_scoped: boolean;
1937
+ icon?: string | undefined;
1938
+ }[];
1939
+ context_actions: {
1940
+ label: string;
1941
+ run: {
1942
+ kind: "dispatch";
1943
+ prompt: string;
1944
+ target?: string | undefined;
1945
+ } | {
1946
+ kind: "view";
1947
+ route: string;
1948
+ };
1949
+ id: string;
1950
+ when: {
1951
+ kind: "file";
1952
+ glob?: string | undefined;
1953
+ } | {
1954
+ kind: "artifact";
1955
+ } | {
1956
+ kind: "session";
1957
+ } | {
1958
+ kind: "ngwa-item";
1959
+ kinds?: string[] | undefined;
1960
+ };
1961
+ }[];
1962
+ widgets: {
1963
+ id: string;
1964
+ title: string;
1965
+ route: string;
1966
+ span: "small" | "medium" | "wide";
1967
+ }[];
1968
+ session?: {
1969
+ persistence: "keep" | "clear-on-exit" | "ask";
1970
+ } | undefined;
1971
+ side_pane_viewers?: undefined;
1972
+ csp?: Record<string, string[]> | undefined;
1973
+ permissions?: Record<string, string[]> | undefined;
1974
+ }, {
1975
+ session?: {
1976
+ persistence: "keep" | "clear-on-exit" | "ask";
1977
+ } | undefined;
1978
+ nav?: {
1979
+ label: string;
1980
+ id: string;
1981
+ route: string;
1982
+ section?: string | undefined;
1983
+ icon?: string | undefined;
1984
+ }[] | undefined;
1985
+ routes?: {
1986
+ path: string;
1987
+ kind: "iframe" | "component" | "webview";
1988
+ source: string;
1989
+ partition?: string | undefined;
1990
+ }[] | undefined;
1991
+ command_palette?: {
1992
+ label: string;
1993
+ id: string;
1994
+ shortcut?: string | undefined;
1995
+ action?: unknown;
1996
+ }[] | undefined;
1997
+ side_pane_viewers?: undefined;
1998
+ views?: {
1999
+ id: string;
2000
+ title: string;
2001
+ route: string;
2002
+ icon?: string | undefined;
2003
+ pin_on_install?: boolean | undefined;
2004
+ }[] | undefined;
2005
+ explorer_sections?: {
2006
+ id: string;
2007
+ title: string;
2008
+ data_route: string;
2009
+ icon?: string | undefined;
2010
+ order?: number | undefined;
2011
+ }[] | undefined;
2012
+ companion_panels?: {
2013
+ id: string;
2014
+ title: string;
2015
+ route: string;
2016
+ icon?: string | undefined;
2017
+ session_scoped?: boolean | undefined;
2018
+ }[] | undefined;
2019
+ context_actions?: {
971
2020
  label: string;
2021
+ run: {
2022
+ kind: "dispatch";
2023
+ prompt: string;
2024
+ target?: string | undefined;
2025
+ } | {
2026
+ kind: "view";
2027
+ route: string;
2028
+ };
972
2029
  id: string;
2030
+ when: {
2031
+ kind: "file";
2032
+ glob?: string | undefined;
2033
+ } | {
2034
+ kind: "artifact";
2035
+ } | {
2036
+ kind: "session";
2037
+ } | {
2038
+ kind: "ngwa-item";
2039
+ kinds?: string[] | undefined;
2040
+ };
2041
+ }[] | undefined;
2042
+ widgets?: {
2043
+ id: string;
2044
+ title: string;
973
2045
  route: string;
974
- }>, "many">>;
975
- /** Per-directive CSP overrides for the iframe content. */
976
- csp: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
977
- /** Per-directive Permission-Policy values. */
978
- permissions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
979
- session: z.ZodOptional<z.ZodObject<{
980
- persistence: z.ZodEnum<["keep", "clear-on-exit", "ask"]>;
981
- }, "strip", z.ZodTypeAny, {
982
- persistence: "keep" | "clear-on-exit" | "ask";
983
- }, {
984
- persistence: "keep" | "clear-on-exit" | "ask";
985
- }>>;
986
- }, "strip", z.ZodTypeAny, {
2046
+ span?: "small" | "medium" | "wide" | undefined;
2047
+ }[] | undefined;
2048
+ csp?: Record<string, string[]> | undefined;
2049
+ permissions?: Record<string, string[]> | undefined;
2050
+ }>, {
987
2051
  nav: {
988
2052
  label: string;
989
2053
  id: string;
@@ -1003,14 +2067,60 @@ export declare const ManifestSchema: z.ZodObject<{
1003
2067
  shortcut?: string | undefined;
1004
2068
  action?: unknown;
1005
2069
  }[];
1006
- side_pane_viewers: {
2070
+ views: {
2071
+ id: string;
2072
+ title: string;
2073
+ route: string;
2074
+ pin_on_install: boolean;
2075
+ icon?: string | undefined;
2076
+ }[];
2077
+ explorer_sections: {
2078
+ id: string;
2079
+ title: string;
2080
+ data_route: string;
2081
+ icon?: string | undefined;
2082
+ order?: number | undefined;
2083
+ }[];
2084
+ companion_panels: {
2085
+ id: string;
2086
+ title: string;
2087
+ route: string;
2088
+ session_scoped: boolean;
2089
+ icon?: string | undefined;
2090
+ }[];
2091
+ context_actions: {
1007
2092
  label: string;
2093
+ run: {
2094
+ kind: "dispatch";
2095
+ prompt: string;
2096
+ target?: string | undefined;
2097
+ } | {
2098
+ kind: "view";
2099
+ route: string;
2100
+ };
2101
+ id: string;
2102
+ when: {
2103
+ kind: "file";
2104
+ glob?: string | undefined;
2105
+ } | {
2106
+ kind: "artifact";
2107
+ } | {
2108
+ kind: "session";
2109
+ } | {
2110
+ kind: "ngwa-item";
2111
+ kinds?: string[] | undefined;
2112
+ };
2113
+ }[];
2114
+ widgets: {
1008
2115
  id: string;
2116
+ title: string;
1009
2117
  route: string;
2118
+ span: "small" | "medium" | "wide";
1010
2119
  }[];
1011
2120
  session?: {
1012
2121
  persistence: "keep" | "clear-on-exit" | "ask";
1013
2122
  } | undefined;
2123
+ side_pane_viewers?: undefined;
1014
2124
  csp?: Record<string, string[]> | undefined;
1015
2125
  permissions?: Record<string, string[]> | undefined;
1016
2126
  }, {
@@ -1036,10 +2146,56 @@ export declare const ManifestSchema: z.ZodObject<{
1036
2146
  shortcut?: string | undefined;
1037
2147
  action?: unknown;
1038
2148
  }[] | undefined;
1039
- side_pane_viewers?: {
2149
+ side_pane_viewers?: undefined;
2150
+ views?: {
2151
+ id: string;
2152
+ title: string;
2153
+ route: string;
2154
+ icon?: string | undefined;
2155
+ pin_on_install?: boolean | undefined;
2156
+ }[] | undefined;
2157
+ explorer_sections?: {
2158
+ id: string;
2159
+ title: string;
2160
+ data_route: string;
2161
+ icon?: string | undefined;
2162
+ order?: number | undefined;
2163
+ }[] | undefined;
2164
+ companion_panels?: {
2165
+ id: string;
2166
+ title: string;
2167
+ route: string;
2168
+ icon?: string | undefined;
2169
+ session_scoped?: boolean | undefined;
2170
+ }[] | undefined;
2171
+ context_actions?: {
1040
2172
  label: string;
2173
+ run: {
2174
+ kind: "dispatch";
2175
+ prompt: string;
2176
+ target?: string | undefined;
2177
+ } | {
2178
+ kind: "view";
2179
+ route: string;
2180
+ };
2181
+ id: string;
2182
+ when: {
2183
+ kind: "file";
2184
+ glob?: string | undefined;
2185
+ } | {
2186
+ kind: "artifact";
2187
+ } | {
2188
+ kind: "session";
2189
+ } | {
2190
+ kind: "ngwa-item";
2191
+ kinds?: string[] | undefined;
2192
+ };
2193
+ }[] | undefined;
2194
+ widgets?: {
1041
2195
  id: string;
2196
+ title: string;
1042
2197
  route: string;
2198
+ span?: "small" | "medium" | "wide" | undefined;
1043
2199
  }[] | undefined;
1044
2200
  csp?: Record<string, string[]> | undefined;
1045
2201
  permissions?: Record<string, string[]> | undefined;
@@ -1522,14 +2678,60 @@ export declare const ManifestSchema: z.ZodObject<{
1522
2678
  shortcut?: string | undefined;
1523
2679
  action?: unknown;
1524
2680
  }[];
1525
- side_pane_viewers: {
2681
+ views: {
2682
+ id: string;
2683
+ title: string;
2684
+ route: string;
2685
+ pin_on_install: boolean;
2686
+ icon?: string | undefined;
2687
+ }[];
2688
+ explorer_sections: {
2689
+ id: string;
2690
+ title: string;
2691
+ data_route: string;
2692
+ icon?: string | undefined;
2693
+ order?: number | undefined;
2694
+ }[];
2695
+ companion_panels: {
2696
+ id: string;
2697
+ title: string;
2698
+ route: string;
2699
+ session_scoped: boolean;
2700
+ icon?: string | undefined;
2701
+ }[];
2702
+ context_actions: {
1526
2703
  label: string;
2704
+ run: {
2705
+ kind: "dispatch";
2706
+ prompt: string;
2707
+ target?: string | undefined;
2708
+ } | {
2709
+ kind: "view";
2710
+ route: string;
2711
+ };
2712
+ id: string;
2713
+ when: {
2714
+ kind: "file";
2715
+ glob?: string | undefined;
2716
+ } | {
2717
+ kind: "artifact";
2718
+ } | {
2719
+ kind: "session";
2720
+ } | {
2721
+ kind: "ngwa-item";
2722
+ kinds?: string[] | undefined;
2723
+ };
2724
+ }[];
2725
+ widgets: {
1527
2726
  id: string;
2727
+ title: string;
1528
2728
  route: string;
2729
+ span: "small" | "medium" | "wide";
1529
2730
  }[];
1530
2731
  session?: {
1531
2732
  persistence: "keep" | "clear-on-exit" | "ask";
1532
2733
  } | undefined;
2734
+ side_pane_viewers?: undefined;
1533
2735
  csp?: Record<string, string[]> | undefined;
1534
2736
  permissions?: Record<string, string[]> | undefined;
1535
2737
  };
@@ -1776,10 +2978,56 @@ export declare const ManifestSchema: z.ZodObject<{
1776
2978
  shortcut?: string | undefined;
1777
2979
  action?: unknown;
1778
2980
  }[] | undefined;
1779
- side_pane_viewers?: {
2981
+ side_pane_viewers?: undefined;
2982
+ views?: {
2983
+ id: string;
2984
+ title: string;
2985
+ route: string;
2986
+ icon?: string | undefined;
2987
+ pin_on_install?: boolean | undefined;
2988
+ }[] | undefined;
2989
+ explorer_sections?: {
2990
+ id: string;
2991
+ title: string;
2992
+ data_route: string;
2993
+ icon?: string | undefined;
2994
+ order?: number | undefined;
2995
+ }[] | undefined;
2996
+ companion_panels?: {
2997
+ id: string;
2998
+ title: string;
2999
+ route: string;
3000
+ icon?: string | undefined;
3001
+ session_scoped?: boolean | undefined;
3002
+ }[] | undefined;
3003
+ context_actions?: {
1780
3004
  label: string;
3005
+ run: {
3006
+ kind: "dispatch";
3007
+ prompt: string;
3008
+ target?: string | undefined;
3009
+ } | {
3010
+ kind: "view";
3011
+ route: string;
3012
+ };
1781
3013
  id: string;
3014
+ when: {
3015
+ kind: "file";
3016
+ glob?: string | undefined;
3017
+ } | {
3018
+ kind: "artifact";
3019
+ } | {
3020
+ kind: "session";
3021
+ } | {
3022
+ kind: "ngwa-item";
3023
+ kinds?: string[] | undefined;
3024
+ };
3025
+ }[] | undefined;
3026
+ widgets?: {
3027
+ id: string;
3028
+ title: string;
1782
3029
  route: string;
3030
+ span?: "small" | "medium" | "wide" | undefined;
1783
3031
  }[] | undefined;
1784
3032
  csp?: Record<string, string[]> | undefined;
1785
3033
  permissions?: Record<string, string[]> | undefined;
@@ -1984,7 +3232,13 @@ export declare const PkgManifestSchema: z.ZodObject<{
1984
3232
  env?: string | undefined;
1985
3233
  }[] | undefined;
1986
3234
  }>>;
1987
- ui: z.ZodDefault<z.ZodObject<{
3235
+ ui: z.ZodDefault<z.ZodEffects<z.ZodObject<{
3236
+ /** @deprecated v5 alias (G-MANIFEST-V5 §4): the shell reads `nav[i]` as
3237
+ * `views[i]` = `{id, title: label, icon, route, pin_on_install: i === 0}`
3238
+ * for exactly one shell release, then deletes the mapping. Field and type
3239
+ * are unchanged; a manifest declaring both `nav` and `views` still parses
3240
+ * (`nav` is ignored with a shell-side warning). New manifests declare
3241
+ * `views` instead. */
1988
3242
  nav: z.ZodDefault<z.ZodArray<z.ZodObject<{
1989
3243
  id: z.ZodString;
1990
3244
  label: z.ZodString;
@@ -2038,18 +3292,194 @@ export declare const PkgManifestSchema: z.ZodObject<{
2038
3292
  shortcut?: string | undefined;
2039
3293
  action?: unknown;
2040
3294
  }>, "many">>;
2041
- side_pane_viewers: z.ZodDefault<z.ZodArray<z.ZodObject<{
3295
+ /** v5 hard-retire (G-MANIFEST-V5 §8 Q1 / DEC-34): `side_pane_viewers` was
3296
+ * removed from the block; declaring it fails validation outright.
3297
+ * `z.never()` is the contract-side mirror of the Rust canonical rejection
3298
+ * (skills/commands-bundling precedent). `SidePaneViewerSchema` stays
3299
+ * exported for tooling that reads historical manifests. */
3300
+ side_pane_viewers: z.ZodOptional<z.ZodNever>;
3301
+ views: z.ZodDefault<z.ZodArray<z.ZodObject<{
2042
3302
  id: z.ZodString;
2043
- label: z.ZodString;
3303
+ title: z.ZodString;
3304
+ icon: z.ZodOptional<z.ZodString>;
3305
+ /** A pkg UI namespace path, e.g. `/grid` → pane route `pkg://<id>/grid`.
3306
+ * Must match a declared `ui.routes[]` path (§6 Q3). */
2044
3307
  route: z.ZodString;
2045
- }, "strip", z.ZodTypeAny, {
2046
- label: string;
3308
+ /** Honoured ONCE, at first install (Round 2 Q1). Updates never re-pin;
3309
+ * unpin is permanent. Kernel "first install" = no prior install row. */
3310
+ pin_on_install: z.ZodDefault<z.ZodBoolean>;
3311
+ }, "strict", z.ZodTypeAny, {
3312
+ id: string;
3313
+ title: string;
3314
+ route: string;
3315
+ pin_on_install: boolean;
3316
+ icon?: string | undefined;
3317
+ }, {
3318
+ id: string;
3319
+ title: string;
3320
+ route: string;
3321
+ icon?: string | undefined;
3322
+ pin_on_install?: boolean | undefined;
3323
+ }>, "many">>;
3324
+ explorer_sections: z.ZodDefault<z.ZodArray<z.ZodObject<{
3325
+ id: z.ZodString;
3326
+ title: z.ZodString;
3327
+ icon: z.ZodOptional<z.ZodString>;
3328
+ order: z.ZodOptional<z.ZodNumber>;
3329
+ /** GET iyke route under `/pkg/<id>/` returning ExplorerSectionData. */
3330
+ data_route: z.ZodString;
3331
+ }, "strict", z.ZodTypeAny, {
3332
+ id: string;
3333
+ title: string;
3334
+ data_route: string;
3335
+ icon?: string | undefined;
3336
+ order?: number | undefined;
3337
+ }, {
3338
+ id: string;
3339
+ title: string;
3340
+ data_route: string;
3341
+ icon?: string | undefined;
3342
+ order?: number | undefined;
3343
+ }>, "many">>;
3344
+ companion_panels: z.ZodDefault<z.ZodArray<z.ZodObject<{
3345
+ id: z.ZodString;
3346
+ title: z.ZodString;
3347
+ icon: z.ZodOptional<z.ZodString>;
3348
+ /** Pane route rendered in the panel slot (an iframe view). Must render
3349
+ * state, never model prose — ADR-021 checklist applies. */
3350
+ route: z.ZodString;
3351
+ /** When true the shell threads `panelScopeSessionId` (the selected
3352
+ * Companion session tab) through the AppBridge hostContext. */
3353
+ session_scoped: z.ZodDefault<z.ZodBoolean>;
3354
+ }, "strict", z.ZodTypeAny, {
2047
3355
  id: string;
3356
+ title: string;
2048
3357
  route: string;
3358
+ session_scoped: boolean;
3359
+ icon?: string | undefined;
3360
+ }, {
3361
+ id: string;
3362
+ title: string;
3363
+ route: string;
3364
+ icon?: string | undefined;
3365
+ session_scoped?: boolean | undefined;
3366
+ }>, "many">>;
3367
+ context_actions: z.ZodDefault<z.ZodArray<z.ZodObject<{
3368
+ id: z.ZodString;
3369
+ label: z.ZodString;
3370
+ when: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
3371
+ kind: z.ZodLiteral<"file">;
3372
+ glob: z.ZodOptional<z.ZodString>;
3373
+ }, "strip", z.ZodTypeAny, {
3374
+ kind: "file";
3375
+ glob?: string | undefined;
3376
+ }, {
3377
+ kind: "file";
3378
+ glob?: string | undefined;
3379
+ }>, z.ZodObject<{
3380
+ kind: z.ZodLiteral<"artifact">;
3381
+ }, "strip", z.ZodTypeAny, {
3382
+ kind: "artifact";
3383
+ }, {
3384
+ kind: "artifact";
3385
+ }>, z.ZodObject<{
3386
+ kind: z.ZodLiteral<"session">;
3387
+ }, "strip", z.ZodTypeAny, {
3388
+ kind: "session";
3389
+ }, {
3390
+ kind: "session";
3391
+ }>, z.ZodObject<{
3392
+ kind: z.ZodLiteral<"ngwa-item">;
3393
+ kinds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
3394
+ }, "strip", z.ZodTypeAny, {
3395
+ kind: "ngwa-item";
3396
+ kinds?: string[] | undefined;
3397
+ }, {
3398
+ kind: "ngwa-item";
3399
+ kinds?: string[] | undefined;
3400
+ }>]>;
3401
+ run: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
3402
+ kind: z.ZodLiteral<"dispatch">;
3403
+ prompt: z.ZodString;
3404
+ target: z.ZodOptional<z.ZodString>;
3405
+ }, "strip", z.ZodTypeAny, {
3406
+ kind: "dispatch";
3407
+ prompt: string;
3408
+ target?: string | undefined;
3409
+ }, {
3410
+ kind: "dispatch";
3411
+ prompt: string;
3412
+ target?: string | undefined;
3413
+ }>, z.ZodObject<{
3414
+ kind: z.ZodLiteral<"view">;
3415
+ route: z.ZodString;
3416
+ }, "strip", z.ZodTypeAny, {
3417
+ kind: "view";
3418
+ route: string;
3419
+ }, {
3420
+ kind: "view";
3421
+ route: string;
3422
+ }>]>;
3423
+ }, "strict", z.ZodTypeAny, {
3424
+ label: string;
3425
+ run: {
3426
+ kind: "dispatch";
3427
+ prompt: string;
3428
+ target?: string | undefined;
3429
+ } | {
3430
+ kind: "view";
3431
+ route: string;
3432
+ };
3433
+ id: string;
3434
+ when: {
3435
+ kind: "file";
3436
+ glob?: string | undefined;
3437
+ } | {
3438
+ kind: "artifact";
3439
+ } | {
3440
+ kind: "session";
3441
+ } | {
3442
+ kind: "ngwa-item";
3443
+ kinds?: string[] | undefined;
3444
+ };
2049
3445
  }, {
2050
3446
  label: string;
3447
+ run: {
3448
+ kind: "dispatch";
3449
+ prompt: string;
3450
+ target?: string | undefined;
3451
+ } | {
3452
+ kind: "view";
3453
+ route: string;
3454
+ };
3455
+ id: string;
3456
+ when: {
3457
+ kind: "file";
3458
+ glob?: string | undefined;
3459
+ } | {
3460
+ kind: "artifact";
3461
+ } | {
3462
+ kind: "session";
3463
+ } | {
3464
+ kind: "ngwa-item";
3465
+ kinds?: string[] | undefined;
3466
+ };
3467
+ }>, "many">>;
3468
+ widgets: z.ZodDefault<z.ZodArray<z.ZodObject<{
3469
+ id: z.ZodString;
3470
+ title: z.ZodString;
3471
+ route: z.ZodString;
3472
+ span: z.ZodDefault<z.ZodEnum<["small", "medium", "wide"]>>;
3473
+ }, "strict", z.ZodTypeAny, {
3474
+ id: string;
3475
+ title: string;
3476
+ route: string;
3477
+ span: "small" | "medium" | "wide";
3478
+ }, {
2051
3479
  id: string;
3480
+ title: string;
2052
3481
  route: string;
3482
+ span?: "small" | "medium" | "wide" | undefined;
2053
3483
  }>, "many">>;
2054
3484
  /** Per-directive CSP overrides for the iframe content. */
2055
3485
  csp: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
@@ -2082,14 +3512,212 @@ export declare const PkgManifestSchema: z.ZodObject<{
2082
3512
  shortcut?: string | undefined;
2083
3513
  action?: unknown;
2084
3514
  }[];
2085
- side_pane_viewers: {
3515
+ views: {
3516
+ id: string;
3517
+ title: string;
3518
+ route: string;
3519
+ pin_on_install: boolean;
3520
+ icon?: string | undefined;
3521
+ }[];
3522
+ explorer_sections: {
3523
+ id: string;
3524
+ title: string;
3525
+ data_route: string;
3526
+ icon?: string | undefined;
3527
+ order?: number | undefined;
3528
+ }[];
3529
+ companion_panels: {
3530
+ id: string;
3531
+ title: string;
3532
+ route: string;
3533
+ session_scoped: boolean;
3534
+ icon?: string | undefined;
3535
+ }[];
3536
+ context_actions: {
3537
+ label: string;
3538
+ run: {
3539
+ kind: "dispatch";
3540
+ prompt: string;
3541
+ target?: string | undefined;
3542
+ } | {
3543
+ kind: "view";
3544
+ route: string;
3545
+ };
3546
+ id: string;
3547
+ when: {
3548
+ kind: "file";
3549
+ glob?: string | undefined;
3550
+ } | {
3551
+ kind: "artifact";
3552
+ } | {
3553
+ kind: "session";
3554
+ } | {
3555
+ kind: "ngwa-item";
3556
+ kinds?: string[] | undefined;
3557
+ };
3558
+ }[];
3559
+ widgets: {
3560
+ id: string;
3561
+ title: string;
3562
+ route: string;
3563
+ span: "small" | "medium" | "wide";
3564
+ }[];
3565
+ session?: {
3566
+ persistence: "keep" | "clear-on-exit" | "ask";
3567
+ } | undefined;
3568
+ side_pane_viewers?: undefined;
3569
+ csp?: Record<string, string[]> | undefined;
3570
+ permissions?: Record<string, string[]> | undefined;
3571
+ }, {
3572
+ session?: {
3573
+ persistence: "keep" | "clear-on-exit" | "ask";
3574
+ } | undefined;
3575
+ nav?: {
3576
+ label: string;
3577
+ id: string;
3578
+ route: string;
3579
+ section?: string | undefined;
3580
+ icon?: string | undefined;
3581
+ }[] | undefined;
3582
+ routes?: {
3583
+ path: string;
3584
+ kind: "iframe" | "component" | "webview";
3585
+ source: string;
3586
+ partition?: string | undefined;
3587
+ }[] | undefined;
3588
+ command_palette?: {
3589
+ label: string;
3590
+ id: string;
3591
+ shortcut?: string | undefined;
3592
+ action?: unknown;
3593
+ }[] | undefined;
3594
+ side_pane_viewers?: undefined;
3595
+ views?: {
3596
+ id: string;
3597
+ title: string;
3598
+ route: string;
3599
+ icon?: string | undefined;
3600
+ pin_on_install?: boolean | undefined;
3601
+ }[] | undefined;
3602
+ explorer_sections?: {
3603
+ id: string;
3604
+ title: string;
3605
+ data_route: string;
3606
+ icon?: string | undefined;
3607
+ order?: number | undefined;
3608
+ }[] | undefined;
3609
+ companion_panels?: {
3610
+ id: string;
3611
+ title: string;
3612
+ route: string;
3613
+ icon?: string | undefined;
3614
+ session_scoped?: boolean | undefined;
3615
+ }[] | undefined;
3616
+ context_actions?: {
3617
+ label: string;
3618
+ run: {
3619
+ kind: "dispatch";
3620
+ prompt: string;
3621
+ target?: string | undefined;
3622
+ } | {
3623
+ kind: "view";
3624
+ route: string;
3625
+ };
3626
+ id: string;
3627
+ when: {
3628
+ kind: "file";
3629
+ glob?: string | undefined;
3630
+ } | {
3631
+ kind: "artifact";
3632
+ } | {
3633
+ kind: "session";
3634
+ } | {
3635
+ kind: "ngwa-item";
3636
+ kinds?: string[] | undefined;
3637
+ };
3638
+ }[] | undefined;
3639
+ widgets?: {
3640
+ id: string;
3641
+ title: string;
3642
+ route: string;
3643
+ span?: "small" | "medium" | "wide" | undefined;
3644
+ }[] | undefined;
3645
+ csp?: Record<string, string[]> | undefined;
3646
+ permissions?: Record<string, string[]> | undefined;
3647
+ }>, {
3648
+ nav: {
3649
+ label: string;
3650
+ id: string;
3651
+ route: string;
3652
+ section?: string | undefined;
3653
+ icon?: string | undefined;
3654
+ }[];
3655
+ routes: {
3656
+ path: string;
3657
+ kind: "iframe" | "component" | "webview";
3658
+ source: string;
3659
+ partition?: string | undefined;
3660
+ }[];
3661
+ command_palette: {
3662
+ label: string;
3663
+ id: string;
3664
+ shortcut?: string | undefined;
3665
+ action?: unknown;
3666
+ }[];
3667
+ views: {
3668
+ id: string;
3669
+ title: string;
3670
+ route: string;
3671
+ pin_on_install: boolean;
3672
+ icon?: string | undefined;
3673
+ }[];
3674
+ explorer_sections: {
3675
+ id: string;
3676
+ title: string;
3677
+ data_route: string;
3678
+ icon?: string | undefined;
3679
+ order?: number | undefined;
3680
+ }[];
3681
+ companion_panels: {
3682
+ id: string;
3683
+ title: string;
3684
+ route: string;
3685
+ session_scoped: boolean;
3686
+ icon?: string | undefined;
3687
+ }[];
3688
+ context_actions: {
2086
3689
  label: string;
3690
+ run: {
3691
+ kind: "dispatch";
3692
+ prompt: string;
3693
+ target?: string | undefined;
3694
+ } | {
3695
+ kind: "view";
3696
+ route: string;
3697
+ };
3698
+ id: string;
3699
+ when: {
3700
+ kind: "file";
3701
+ glob?: string | undefined;
3702
+ } | {
3703
+ kind: "artifact";
3704
+ } | {
3705
+ kind: "session";
3706
+ } | {
3707
+ kind: "ngwa-item";
3708
+ kinds?: string[] | undefined;
3709
+ };
3710
+ }[];
3711
+ widgets: {
2087
3712
  id: string;
3713
+ title: string;
2088
3714
  route: string;
3715
+ span: "small" | "medium" | "wide";
2089
3716
  }[];
2090
3717
  session?: {
2091
3718
  persistence: "keep" | "clear-on-exit" | "ask";
2092
3719
  } | undefined;
3720
+ side_pane_viewers?: undefined;
2093
3721
  csp?: Record<string, string[]> | undefined;
2094
3722
  permissions?: Record<string, string[]> | undefined;
2095
3723
  }, {
@@ -2115,10 +3743,56 @@ export declare const PkgManifestSchema: z.ZodObject<{
2115
3743
  shortcut?: string | undefined;
2116
3744
  action?: unknown;
2117
3745
  }[] | undefined;
2118
- side_pane_viewers?: {
3746
+ side_pane_viewers?: undefined;
3747
+ views?: {
3748
+ id: string;
3749
+ title: string;
3750
+ route: string;
3751
+ icon?: string | undefined;
3752
+ pin_on_install?: boolean | undefined;
3753
+ }[] | undefined;
3754
+ explorer_sections?: {
3755
+ id: string;
3756
+ title: string;
3757
+ data_route: string;
3758
+ icon?: string | undefined;
3759
+ order?: number | undefined;
3760
+ }[] | undefined;
3761
+ companion_panels?: {
3762
+ id: string;
3763
+ title: string;
3764
+ route: string;
3765
+ icon?: string | undefined;
3766
+ session_scoped?: boolean | undefined;
3767
+ }[] | undefined;
3768
+ context_actions?: {
2119
3769
  label: string;
3770
+ run: {
3771
+ kind: "dispatch";
3772
+ prompt: string;
3773
+ target?: string | undefined;
3774
+ } | {
3775
+ kind: "view";
3776
+ route: string;
3777
+ };
2120
3778
  id: string;
3779
+ when: {
3780
+ kind: "file";
3781
+ glob?: string | undefined;
3782
+ } | {
3783
+ kind: "artifact";
3784
+ } | {
3785
+ kind: "session";
3786
+ } | {
3787
+ kind: "ngwa-item";
3788
+ kinds?: string[] | undefined;
3789
+ };
3790
+ }[] | undefined;
3791
+ widgets?: {
3792
+ id: string;
3793
+ title: string;
2121
3794
  route: string;
3795
+ span?: "small" | "medium" | "wide" | undefined;
2122
3796
  }[] | undefined;
2123
3797
  csp?: Record<string, string[]> | undefined;
2124
3798
  permissions?: Record<string, string[]> | undefined;
@@ -2601,14 +4275,60 @@ export declare const PkgManifestSchema: z.ZodObject<{
2601
4275
  shortcut?: string | undefined;
2602
4276
  action?: unknown;
2603
4277
  }[];
2604
- side_pane_viewers: {
4278
+ views: {
4279
+ id: string;
4280
+ title: string;
4281
+ route: string;
4282
+ pin_on_install: boolean;
4283
+ icon?: string | undefined;
4284
+ }[];
4285
+ explorer_sections: {
4286
+ id: string;
4287
+ title: string;
4288
+ data_route: string;
4289
+ icon?: string | undefined;
4290
+ order?: number | undefined;
4291
+ }[];
4292
+ companion_panels: {
4293
+ id: string;
4294
+ title: string;
4295
+ route: string;
4296
+ session_scoped: boolean;
4297
+ icon?: string | undefined;
4298
+ }[];
4299
+ context_actions: {
2605
4300
  label: string;
4301
+ run: {
4302
+ kind: "dispatch";
4303
+ prompt: string;
4304
+ target?: string | undefined;
4305
+ } | {
4306
+ kind: "view";
4307
+ route: string;
4308
+ };
4309
+ id: string;
4310
+ when: {
4311
+ kind: "file";
4312
+ glob?: string | undefined;
4313
+ } | {
4314
+ kind: "artifact";
4315
+ } | {
4316
+ kind: "session";
4317
+ } | {
4318
+ kind: "ngwa-item";
4319
+ kinds?: string[] | undefined;
4320
+ };
4321
+ }[];
4322
+ widgets: {
2606
4323
  id: string;
4324
+ title: string;
2607
4325
  route: string;
4326
+ span: "small" | "medium" | "wide";
2608
4327
  }[];
2609
4328
  session?: {
2610
4329
  persistence: "keep" | "clear-on-exit" | "ask";
2611
4330
  } | undefined;
4331
+ side_pane_viewers?: undefined;
2612
4332
  csp?: Record<string, string[]> | undefined;
2613
4333
  permissions?: Record<string, string[]> | undefined;
2614
4334
  };
@@ -2855,10 +4575,56 @@ export declare const PkgManifestSchema: z.ZodObject<{
2855
4575
  shortcut?: string | undefined;
2856
4576
  action?: unknown;
2857
4577
  }[] | undefined;
2858
- side_pane_viewers?: {
4578
+ side_pane_viewers?: undefined;
4579
+ views?: {
4580
+ id: string;
4581
+ title: string;
4582
+ route: string;
4583
+ icon?: string | undefined;
4584
+ pin_on_install?: boolean | undefined;
4585
+ }[] | undefined;
4586
+ explorer_sections?: {
4587
+ id: string;
4588
+ title: string;
4589
+ data_route: string;
4590
+ icon?: string | undefined;
4591
+ order?: number | undefined;
4592
+ }[] | undefined;
4593
+ companion_panels?: {
4594
+ id: string;
4595
+ title: string;
4596
+ route: string;
4597
+ icon?: string | undefined;
4598
+ session_scoped?: boolean | undefined;
4599
+ }[] | undefined;
4600
+ context_actions?: {
2859
4601
  label: string;
4602
+ run: {
4603
+ kind: "dispatch";
4604
+ prompt: string;
4605
+ target?: string | undefined;
4606
+ } | {
4607
+ kind: "view";
4608
+ route: string;
4609
+ };
4610
+ id: string;
4611
+ when: {
4612
+ kind: "file";
4613
+ glob?: string | undefined;
4614
+ } | {
4615
+ kind: "artifact";
4616
+ } | {
4617
+ kind: "session";
4618
+ } | {
4619
+ kind: "ngwa-item";
4620
+ kinds?: string[] | undefined;
4621
+ };
4622
+ }[] | undefined;
4623
+ widgets?: {
2860
4624
  id: string;
4625
+ title: string;
2861
4626
  route: string;
4627
+ span?: "small" | "medium" | "wide" | undefined;
2862
4628
  }[] | undefined;
2863
4629
  csp?: Record<string, string[]> | undefined;
2864
4630
  permissions?: Record<string, string[]> | undefined;