@telorun/editor-protocol 0.1.1 → 0.2.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.
@@ -2,7 +2,7 @@
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
3
  "$id": "https://telo.run/schemas/editor-protocol.json",
4
4
  "title": "Telo editor protocol, generation 1",
5
- "description": "The messages an editor host and a telo language-server engine exchange beyond LSP itself. Each host-served request (engine to host) has a `<Name>Params` and a `<Name>Result` definition; `RequirementsParams` is the engine-to-host `telo/requirements` notification; `TeloDiagnosticData` is what an engine puts in `Diagnostic.data`; `ExperimentalCapabilities` is what an engine advertises under `ServerCapabilities.experimental`. `x-telo-methods` maps each method name to its definitions. Objects are open and enumerations list the values known to this generation: a receiver ignores a member it does not know and reads an unknown enumeration value as its least-capable value (README.md, Generations). See README.md for the handshake and the generation rule.",
5
+ "description": "The messages an editor host and a telo language-server engine exchange beyond LSP itself. Each request — host-served (engine to host) or engine-served (host to engine) — has a `<Name>Params` and a `<Name>Result` definition; `RequirementsParams` and `ViewModelChangedParams` are the engine-to-host `telo/requirements` and `telo/viewModelChanged` notifications; `TeloDiagnosticData` is what an engine puts in `Diagnostic.data`; `ExperimentalCapabilities` is what an engine advertises under `ServerCapabilities.experimental`. `x-telo-methods` maps each method name to its definitions. Objects are open and enumerations list the values known to this generation: a receiver ignores a member it does not know and reads an unknown enumeration value as its least-capable value (README.md, Generations). See README.md for the handshake and the generation rule.",
6
6
  "x-telo-methods": {
7
7
  "telo/read": {
8
8
  "params": "#/$defs/ReadParams",
@@ -26,6 +26,17 @@
26
26
  },
27
27
  "telo/requirements": {
28
28
  "params": "#/$defs/RequirementsParams"
29
+ },
30
+ "telo/viewModel": {
31
+ "params": "#/$defs/ViewModelParams",
32
+ "result": "#/$defs/ViewModelResult"
33
+ },
34
+ "telo/celCompletion": {
35
+ "params": "#/$defs/CelCompletionParams",
36
+ "result": "#/$defs/CelCompletionResult"
37
+ },
38
+ "telo/viewModelChanged": {
39
+ "params": "#/$defs/ViewModelChangedParams"
29
40
  }
30
41
  },
31
42
  "$defs": {
@@ -45,6 +56,10 @@
45
56
  "type": "integer",
46
57
  "minimum": 1,
47
58
  "description": "The protocol generation the engine speaks."
59
+ },
60
+ "viewModel": {
61
+ "type": "boolean",
62
+ "description": "The engine serves `telo/viewModel` and `telo/celCompletion` and sends `telo/viewModelChanged`."
48
63
  }
49
64
  }
50
65
  }
@@ -299,6 +314,1017 @@
299
314
  }
300
315
  }
301
316
  },
317
+ "ViewModelChangedParams": {
318
+ "description": "Sent after each analysis of an owner module, and when the owner stops being analysed.",
319
+ "type": "object",
320
+ "required": [
321
+ "owner",
322
+ "revision"
323
+ ],
324
+ "properties": {
325
+ "owner": {
326
+ "type": "string",
327
+ "description": "Canonical `file:` URI of the owner module's document."
328
+ },
329
+ "revision": {
330
+ "type": "integer",
331
+ "description": "Increases with every analysis of the owner, and when it is dropped."
332
+ }
333
+ }
334
+ },
335
+ "ViewModelParams": {
336
+ "type": "object",
337
+ "required": [
338
+ "owner"
339
+ ],
340
+ "properties": {
341
+ "owner": {
342
+ "type": "string"
343
+ }
344
+ }
345
+ },
346
+ "ViewModelResult": {
347
+ "description": "The owner's view model, or null when the engine is not analysing it.",
348
+ "oneOf": [
349
+ {
350
+ "$ref": "#/$defs/ViewModel"
351
+ },
352
+ {
353
+ "type": "null"
354
+ }
355
+ ]
356
+ },
357
+ "CelCompletionParams": {
358
+ "type": "object",
359
+ "required": [
360
+ "owner",
361
+ "resource",
362
+ "path",
363
+ "tag",
364
+ "text",
365
+ "offset"
366
+ ],
367
+ "properties": {
368
+ "owner": {
369
+ "type": "string"
370
+ },
371
+ "resource": {
372
+ "description": "The resource the field belongs to.",
373
+ "type": "object",
374
+ "required": [
375
+ "kind",
376
+ "name"
377
+ ],
378
+ "properties": {
379
+ "kind": {
380
+ "type": "string"
381
+ },
382
+ "name": {
383
+ "type": "string"
384
+ }
385
+ }
386
+ },
387
+ "path": {
388
+ "type": "string",
389
+ "description": "Concrete path of the field within the resource."
390
+ },
391
+ "tag": {
392
+ "type": "string",
393
+ "description": "The tag the value is written under, without its `!`."
394
+ },
395
+ "text": {
396
+ "type": "string",
397
+ "description": "The field's value without its tag."
398
+ },
399
+ "offset": {
400
+ "type": "integer",
401
+ "minimum": 0,
402
+ "description": "Cursor offset into `text`."
403
+ }
404
+ }
405
+ },
406
+ "CelCompletionResult": {
407
+ "description": "Completion items; a `textEdit` range is a line/character range in the request's `text`.",
408
+ "type": "array",
409
+ "items": {
410
+ "$ref": "#/$defs/CompletionItem"
411
+ }
412
+ },
413
+ "CompletionItem": {
414
+ "description": "The members of an LSP `CompletionItem` an engine sets.",
415
+ "type": "object",
416
+ "required": [
417
+ "label"
418
+ ],
419
+ "properties": {
420
+ "label": {
421
+ "type": "string"
422
+ },
423
+ "kind": {
424
+ "type": "integer",
425
+ "description": "LSP `CompletionItemKind`."
426
+ },
427
+ "detail": {
428
+ "type": "string"
429
+ },
430
+ "documentation": {
431
+ "type": "string"
432
+ },
433
+ "insertText": {
434
+ "type": "string"
435
+ },
436
+ "insertTextFormat": {
437
+ "type": "integer",
438
+ "description": "LSP `InsertTextFormat`; 2 is a snippet."
439
+ },
440
+ "textEdit": {
441
+ "type": "object",
442
+ "required": [
443
+ "range",
444
+ "newText"
445
+ ],
446
+ "properties": {
447
+ "range": {
448
+ "type": "object",
449
+ "required": [
450
+ "start",
451
+ "end"
452
+ ],
453
+ "properties": {
454
+ "start": {
455
+ "type": "object",
456
+ "required": [
457
+ "line",
458
+ "character"
459
+ ],
460
+ "properties": {
461
+ "line": {
462
+ "type": "integer"
463
+ },
464
+ "character": {
465
+ "type": "integer"
466
+ }
467
+ }
468
+ },
469
+ "end": {
470
+ "type": "object",
471
+ "required": [
472
+ "line",
473
+ "character"
474
+ ],
475
+ "properties": {
476
+ "line": {
477
+ "type": "integer"
478
+ },
479
+ "character": {
480
+ "type": "integer"
481
+ }
482
+ }
483
+ }
484
+ }
485
+ },
486
+ "newText": {
487
+ "type": "string"
488
+ }
489
+ }
490
+ },
491
+ "preselect": {
492
+ "type": "boolean"
493
+ },
494
+ "sortText": {
495
+ "type": "string"
496
+ },
497
+ "filterText": {
498
+ "type": "string"
499
+ },
500
+ "command": {
501
+ "type": "object",
502
+ "required": [
503
+ "title",
504
+ "command"
505
+ ],
506
+ "properties": {
507
+ "title": {
508
+ "type": "string"
509
+ },
510
+ "command": {
511
+ "type": "string"
512
+ }
513
+ }
514
+ }
515
+ }
516
+ },
517
+ "ViewModel": {
518
+ "description": "What a structured editor reads about one owner module, from the analysis its diagnostics come from.",
519
+ "type": "object",
520
+ "required": [
521
+ "owner",
522
+ "revision",
523
+ "moduleGraph",
524
+ "moduleRootSchema",
525
+ "kindSpellings",
526
+ "refConstraints",
527
+ "contracts",
528
+ "outputRefusals",
529
+ "templates",
530
+ "referenceSites",
531
+ "documents"
532
+ ],
533
+ "properties": {
534
+ "owner": {
535
+ "type": "string"
536
+ },
537
+ "revision": {
538
+ "type": "integer"
539
+ },
540
+ "moduleGraph": {
541
+ "oneOf": [
542
+ {
543
+ "$ref": "#/$defs/ModuleGraphData"
544
+ },
545
+ {
546
+ "type": "null"
547
+ }
548
+ ]
549
+ },
550
+ "moduleRootSchema": {
551
+ "description": "The schema of the owner's module document kind.",
552
+ "oneOf": [
553
+ {
554
+ "type": "object",
555
+ "description": "A JSON Schema, as plain JSON."
556
+ },
557
+ {
558
+ "type": "null"
559
+ }
560
+ ]
561
+ },
562
+ "kindSpellings": {
563
+ "description": "Kind spelling → the canonical kind it resolves to; an unresolved spelling is absent.",
564
+ "type": "object",
565
+ "additionalProperties": {
566
+ "type": "string"
567
+ }
568
+ },
569
+ "refConstraints": {
570
+ "description": "Reference-slot constraint → what satisfies it; an unresolved constraint is absent.",
571
+ "type": "object",
572
+ "additionalProperties": {
573
+ "$ref": "#/$defs/RefConstraint"
574
+ }
575
+ },
576
+ "contracts": {
577
+ "description": "Canonical kind → its invocation contract, for every kind declaring one.",
578
+ "type": "object",
579
+ "additionalProperties": {
580
+ "$ref": "#/$defs/KindContract"
581
+ }
582
+ },
583
+ "outputRefusals": {
584
+ "type": "array",
585
+ "items": {
586
+ "$ref": "#/$defs/OutputRefusals"
587
+ }
588
+ },
589
+ "templates": {
590
+ "description": "Canonical kind → the body of the templated kind.",
591
+ "type": "object",
592
+ "additionalProperties": {
593
+ "$ref": "#/$defs/TemplateGraphData"
594
+ }
595
+ },
596
+ "referenceSites": {
597
+ "type": "array",
598
+ "items": {
599
+ "$ref": "#/$defs/ReferenceSite"
600
+ }
601
+ },
602
+ "documents": {
603
+ "description": "Canonical URI → the LSP version of each open document the analysis read.",
604
+ "type": "object",
605
+ "additionalProperties": {
606
+ "type": "integer"
607
+ }
608
+ }
609
+ }
610
+ },
611
+ "RefConstraint": {
612
+ "type": "object",
613
+ "required": [
614
+ "accepted",
615
+ "userFacing"
616
+ ],
617
+ "properties": {
618
+ "accepted": {
619
+ "type": "array",
620
+ "items": {
621
+ "type": "string"
622
+ },
623
+ "description": "Canonical kinds that satisfy the constraint, sorted."
624
+ },
625
+ "userFacing": {
626
+ "type": "array",
627
+ "items": {
628
+ "type": "string"
629
+ },
630
+ "description": "Alias-form kinds a new resource could be created with."
631
+ }
632
+ }
633
+ },
634
+ "KindContract": {
635
+ "type": "object",
636
+ "properties": {
637
+ "inputType": {
638
+ "type": "object",
639
+ "description": "A JSON Schema, as plain JSON."
640
+ },
641
+ "outputType": {
642
+ "type": "object",
643
+ "description": "A JSON Schema, as plain JSON."
644
+ }
645
+ }
646
+ },
647
+ "OutputRefusals": {
648
+ "description": "One reference slot declaring an `outputType`, and why each candidate cannot fill it.",
649
+ "type": "object",
650
+ "required": [
651
+ "kind",
652
+ "pointer",
653
+ "refusals"
654
+ ],
655
+ "properties": {
656
+ "kind": {
657
+ "type": "string",
658
+ "description": "The canonical kind declaring the slot."
659
+ },
660
+ "pointer": {
661
+ "type": "string",
662
+ "description": "JSON Pointer of the slot's `x-telo-ref` node within that kind's `schema`."
663
+ },
664
+ "refusals": {
665
+ "description": "Resource name, in the scope the entry is listed in, → one line per definite mismatch; an absent resource can fill the slot.",
666
+ "type": "object",
667
+ "additionalProperties": {
668
+ "type": "array",
669
+ "items": {
670
+ "type": "string"
671
+ }
672
+ }
673
+ }
674
+ }
675
+ },
676
+ "TemplateGraphData": {
677
+ "type": "object",
678
+ "required": [
679
+ "kindId",
680
+ "name",
681
+ "definition",
682
+ "graph",
683
+ "outputRefusals"
684
+ ],
685
+ "properties": {
686
+ "kindId": {
687
+ "type": "string",
688
+ "description": "Canonical `<module>.<Name>`."
689
+ },
690
+ "name": {
691
+ "type": "string"
692
+ },
693
+ "module": {
694
+ "type": "string"
695
+ },
696
+ "capability": {
697
+ "type": "string",
698
+ "description": "The kind's capability, inherited along `extends`."
699
+ },
700
+ "definition": {
701
+ "type": "object",
702
+ "description": "The definition document as analysed; its `metadata.source` is a document URI."
703
+ },
704
+ "graph": {
705
+ "$ref": "#/$defs/ModuleGraphData"
706
+ },
707
+ "outputRefusals": {
708
+ "description": "Per reference slot declaring an `outputType`, why each entry of the body cannot fill it, keyed by entry name.",
709
+ "type": "array",
710
+ "items": {
711
+ "$ref": "#/$defs/OutputRefusals"
712
+ }
713
+ }
714
+ }
715
+ },
716
+ "ReferenceSite": {
717
+ "type": "object",
718
+ "required": [
719
+ "source",
720
+ "path",
721
+ "target"
722
+ ],
723
+ "properties": {
724
+ "source": {
725
+ "description": "The resource writing the reference.",
726
+ "type": "object",
727
+ "required": [
728
+ "kind",
729
+ "name"
730
+ ],
731
+ "properties": {
732
+ "kind": {
733
+ "type": "string"
734
+ },
735
+ "name": {
736
+ "type": "string"
737
+ }
738
+ }
739
+ },
740
+ "path": {
741
+ "type": "string",
742
+ "description": "Concrete path of the slot within that resource."
743
+ },
744
+ "target": {
745
+ "type": "string",
746
+ "description": "The name the reference holds, as written."
747
+ }
748
+ }
749
+ },
750
+ "ModuleGraphData": {
751
+ "type": "object",
752
+ "required": [
753
+ "nodes",
754
+ "edges",
755
+ "regions",
756
+ "kinds"
757
+ ],
758
+ "properties": {
759
+ "root": {
760
+ "$ref": "#/$defs/GraphNode"
761
+ },
762
+ "nodes": {
763
+ "type": "array",
764
+ "items": {
765
+ "$ref": "#/$defs/GraphNode"
766
+ }
767
+ },
768
+ "edges": {
769
+ "type": "array",
770
+ "items": {
771
+ "$ref": "#/$defs/GraphEdge"
772
+ }
773
+ },
774
+ "regions": {
775
+ "type": "array",
776
+ "items": {
777
+ "$ref": "#/$defs/GraphRegion"
778
+ }
779
+ },
780
+ "kinds": {
781
+ "type": "array",
782
+ "items": {
783
+ "$ref": "#/$defs/GraphKind"
784
+ }
785
+ }
786
+ }
787
+ },
788
+ "GraphNode": {
789
+ "type": "object",
790
+ "required": [
791
+ "id",
792
+ "kind",
793
+ "name",
794
+ "ownership",
795
+ "ports",
796
+ "rows",
797
+ "rowArrays"
798
+ ],
799
+ "properties": {
800
+ "id": {
801
+ "type": "string"
802
+ },
803
+ "kind": {
804
+ "type": "string",
805
+ "description": "The kind as written."
806
+ },
807
+ "name": {
808
+ "type": "string"
809
+ },
810
+ "capability": {
811
+ "type": "string"
812
+ },
813
+ "canonicalKind": {
814
+ "type": "string",
815
+ "description": "The canonical kind, when `kind` is not already canonical."
816
+ },
817
+ "unknownKind": {
818
+ "type": "boolean"
819
+ },
820
+ "ownership": {
821
+ "anyOf": [
822
+ {
823
+ "enum": [
824
+ "root",
825
+ "named",
826
+ "inline",
827
+ "scoped",
828
+ "imported",
829
+ "injected",
830
+ "enclosing",
831
+ "forwarded"
832
+ ]
833
+ },
834
+ {
835
+ "type": "string"
836
+ }
837
+ ]
838
+ },
839
+ "owner": {
840
+ "type": "string",
841
+ "description": "Node owning this declaration (`inline`, `scoped`)."
842
+ },
843
+ "ownerSite": {
844
+ "type": "string"
845
+ },
846
+ "module": {
847
+ "type": "string"
848
+ },
849
+ "external": {
850
+ "type": "boolean"
851
+ },
852
+ "alias": {
853
+ "type": "string"
854
+ },
855
+ "ports": {
856
+ "type": "array",
857
+ "items": {
858
+ "$ref": "#/$defs/GraphPort"
859
+ }
860
+ },
861
+ "rows": {
862
+ "type": "array",
863
+ "items": {
864
+ "$ref": "#/$defs/GraphRow"
865
+ }
866
+ },
867
+ "rowArrays": {
868
+ "type": "array",
869
+ "items": {
870
+ "type": "object",
871
+ "required": [
872
+ "field",
873
+ "kind"
874
+ ],
875
+ "properties": {
876
+ "field": {
877
+ "type": "string"
878
+ },
879
+ "kind": {
880
+ "anyOf": [
881
+ {
882
+ "enum": [
883
+ "step",
884
+ "entry",
885
+ "target",
886
+ "inline",
887
+ "reference",
888
+ "export"
889
+ ]
890
+ },
891
+ {
892
+ "type": "string"
893
+ }
894
+ ]
895
+ }
896
+ }
897
+ }
898
+ },
899
+ "throws": {
900
+ "type": "object",
901
+ "required": [
902
+ "codes",
903
+ "unbounded"
904
+ ],
905
+ "properties": {
906
+ "codes": {
907
+ "type": "array",
908
+ "items": {
909
+ "type": "string"
910
+ }
911
+ },
912
+ "unbounded": {
913
+ "type": "boolean"
914
+ }
915
+ }
916
+ },
917
+ "root": {
918
+ "type": "boolean"
919
+ }
920
+ }
921
+ },
922
+ "GraphPort": {
923
+ "type": "object",
924
+ "required": [
925
+ "slot",
926
+ "refs",
927
+ "capabilities",
928
+ "array",
929
+ "class",
930
+ "slots"
931
+ ],
932
+ "properties": {
933
+ "slot": {
934
+ "type": "string",
935
+ "description": "Field-map path with `[]` / `{}` markers."
936
+ },
937
+ "refs": {
938
+ "type": "array",
939
+ "items": {
940
+ "type": "string"
941
+ }
942
+ },
943
+ "capabilities": {
944
+ "type": "array",
945
+ "items": {
946
+ "type": "string"
947
+ }
948
+ },
949
+ "array": {
950
+ "type": "boolean"
951
+ },
952
+ "class": {
953
+ "anyOf": [
954
+ {
955
+ "enum": [
956
+ "flow",
957
+ "holds",
958
+ "shape",
959
+ "data"
960
+ ]
961
+ },
962
+ {
963
+ "type": "string"
964
+ }
965
+ ]
966
+ },
967
+ "slots": {
968
+ "type": "array",
969
+ "items": {
970
+ "type": "object",
971
+ "required": [
972
+ "path"
973
+ ],
974
+ "properties": {
975
+ "path": {
976
+ "type": "string"
977
+ },
978
+ "target": {
979
+ "type": "string"
980
+ },
981
+ "targetNode": {
982
+ "type": "string"
983
+ },
984
+ "inline": {
985
+ "type": "boolean"
986
+ }
987
+ }
988
+ }
989
+ },
990
+ "addPath": {
991
+ "type": "string"
992
+ },
993
+ "rowOwned": {
994
+ "type": "boolean"
995
+ }
996
+ }
997
+ },
998
+ "GraphRow": {
999
+ "type": "object",
1000
+ "required": [
1001
+ "id",
1002
+ "kind",
1003
+ "path",
1004
+ "array",
1005
+ "index",
1006
+ "depth"
1007
+ ],
1008
+ "properties": {
1009
+ "id": {
1010
+ "type": "string"
1011
+ },
1012
+ "kind": {
1013
+ "anyOf": [
1014
+ {
1015
+ "enum": [
1016
+ "step",
1017
+ "entry",
1018
+ "target",
1019
+ "inline",
1020
+ "reference",
1021
+ "export"
1022
+ ]
1023
+ },
1024
+ {
1025
+ "type": "string"
1026
+ }
1027
+ ]
1028
+ },
1029
+ "name": {
1030
+ "type": "string"
1031
+ },
1032
+ "path": {
1033
+ "type": "string"
1034
+ },
1035
+ "array": {
1036
+ "type": "string"
1037
+ },
1038
+ "index": {
1039
+ "type": "integer"
1040
+ },
1041
+ "depth": {
1042
+ "type": "integer"
1043
+ },
1044
+ "parent": {
1045
+ "type": "string"
1046
+ },
1047
+ "target": {
1048
+ "type": "string"
1049
+ },
1050
+ "targetNode": {
1051
+ "type": "string"
1052
+ },
1053
+ "inputs": {
1054
+ "type": "string"
1055
+ },
1056
+ "match": {
1057
+ "type": "object"
1058
+ },
1059
+ "variant": {
1060
+ "type": "string"
1061
+ },
1062
+ "variantLabel": {
1063
+ "type": "string"
1064
+ },
1065
+ "predicate": {
1066
+ "type": "string"
1067
+ },
1068
+ "catches": {
1069
+ "type": "boolean"
1070
+ },
1071
+ "dispatch": {
1072
+ "type": "object",
1073
+ "required": [
1074
+ "path",
1075
+ "refs"
1076
+ ],
1077
+ "properties": {
1078
+ "path": {
1079
+ "type": "string"
1080
+ },
1081
+ "refs": {
1082
+ "type": "array",
1083
+ "items": {
1084
+ "type": "string"
1085
+ }
1086
+ },
1087
+ "inline": {
1088
+ "type": "boolean"
1089
+ },
1090
+ "alternatives": {
1091
+ "type": "array",
1092
+ "items": {
1093
+ "type": "object",
1094
+ "required": [
1095
+ "path",
1096
+ "refs"
1097
+ ],
1098
+ "properties": {
1099
+ "path": {
1100
+ "type": "string"
1101
+ },
1102
+ "refs": {
1103
+ "type": "array",
1104
+ "items": {
1105
+ "type": "string"
1106
+ }
1107
+ }
1108
+ }
1109
+ }
1110
+ }
1111
+ }
1112
+ },
1113
+ "declares": {
1114
+ "type": "string"
1115
+ },
1116
+ "unknownKind": {
1117
+ "type": "boolean"
1118
+ }
1119
+ }
1120
+ },
1121
+ "GraphEdge": {
1122
+ "type": "object",
1123
+ "required": [
1124
+ "id",
1125
+ "from",
1126
+ "toName",
1127
+ "class",
1128
+ "use",
1129
+ "slot",
1130
+ "path"
1131
+ ],
1132
+ "properties": {
1133
+ "id": {
1134
+ "type": "string"
1135
+ },
1136
+ "from": {
1137
+ "type": "string"
1138
+ },
1139
+ "to": {
1140
+ "type": "string"
1141
+ },
1142
+ "toName": {
1143
+ "type": "string"
1144
+ },
1145
+ "class": {
1146
+ "anyOf": [
1147
+ {
1148
+ "enum": [
1149
+ "flow",
1150
+ "holds",
1151
+ "shape",
1152
+ "data"
1153
+ ]
1154
+ },
1155
+ {
1156
+ "type": "string"
1157
+ }
1158
+ ]
1159
+ },
1160
+ "use": {
1161
+ "type": "array",
1162
+ "items": {
1163
+ "anyOf": [
1164
+ {
1165
+ "enum": [
1166
+ "schema",
1167
+ "dependency",
1168
+ "call",
1169
+ "detached",
1170
+ "trigger.inbound",
1171
+ "trigger.consumer"
1172
+ ]
1173
+ },
1174
+ {
1175
+ "type": "string"
1176
+ }
1177
+ ]
1178
+ }
1179
+ },
1180
+ "slot": {
1181
+ "type": "string"
1182
+ },
1183
+ "path": {
1184
+ "type": "string"
1185
+ },
1186
+ "row": {
1187
+ "type": "string"
1188
+ },
1189
+ "inputs": {
1190
+ "type": "string"
1191
+ },
1192
+ "boot": {
1193
+ "type": "boolean"
1194
+ },
1195
+ "scoped": {
1196
+ "type": "boolean"
1197
+ },
1198
+ "read": {
1199
+ "type": "string"
1200
+ },
1201
+ "call": {
1202
+ "type": "string"
1203
+ }
1204
+ }
1205
+ },
1206
+ "GraphRegion": {
1207
+ "type": "object",
1208
+ "required": [
1209
+ "id",
1210
+ "kind",
1211
+ "owner",
1212
+ "site",
1213
+ "members"
1214
+ ],
1215
+ "properties": {
1216
+ "id": {
1217
+ "type": "string"
1218
+ },
1219
+ "kind": {
1220
+ "anyOf": [
1221
+ {
1222
+ "enum": [
1223
+ "inline",
1224
+ "scope",
1225
+ "zone"
1226
+ ]
1227
+ },
1228
+ {
1229
+ "type": "string"
1230
+ }
1231
+ ]
1232
+ },
1233
+ "owner": {
1234
+ "type": "string"
1235
+ },
1236
+ "site": {
1237
+ "type": "string"
1238
+ },
1239
+ "members": {
1240
+ "type": "array",
1241
+ "items": {
1242
+ "type": "string"
1243
+ }
1244
+ },
1245
+ "attributes": {
1246
+ "type": "object",
1247
+ "additionalProperties": {
1248
+ "type": "string"
1249
+ }
1250
+ },
1251
+ "boundaries": {
1252
+ "type": "array",
1253
+ "items": {
1254
+ "type": "object",
1255
+ "required": [
1256
+ "from",
1257
+ "toName",
1258
+ "escaping"
1259
+ ],
1260
+ "properties": {
1261
+ "from": {
1262
+ "type": "string"
1263
+ },
1264
+ "toName": {
1265
+ "type": "string"
1266
+ },
1267
+ "escaping": {
1268
+ "type": "array",
1269
+ "items": {
1270
+ "type": "string"
1271
+ }
1272
+ }
1273
+ }
1274
+ }
1275
+ }
1276
+ }
1277
+ },
1278
+ "GraphKind": {
1279
+ "type": "object",
1280
+ "required": [
1281
+ "id",
1282
+ "name",
1283
+ "abstract",
1284
+ "instances",
1285
+ "template",
1286
+ "own"
1287
+ ],
1288
+ "properties": {
1289
+ "id": {
1290
+ "type": "string",
1291
+ "description": "Canonical `<module>.<Name>`."
1292
+ },
1293
+ "name": {
1294
+ "type": "string"
1295
+ },
1296
+ "module": {
1297
+ "type": "string"
1298
+ },
1299
+ "abstract": {
1300
+ "type": "boolean"
1301
+ },
1302
+ "capability": {
1303
+ "type": "string"
1304
+ },
1305
+ "extendsId": {
1306
+ "type": "string"
1307
+ },
1308
+ "extendsName": {
1309
+ "type": "string"
1310
+ },
1311
+ "instances": {
1312
+ "type": "array",
1313
+ "items": {
1314
+ "type": "string"
1315
+ }
1316
+ },
1317
+ "template": {
1318
+ "type": "boolean"
1319
+ },
1320
+ "own": {
1321
+ "type": "boolean"
1322
+ },
1323
+ "exported": {
1324
+ "type": "boolean"
1325
+ }
1326
+ }
1327
+ },
302
1328
  "DiagnosticFix": {
303
1329
  "type": "object",
304
1330
  "required": [