@telorun/editor-protocol 0.1.1 → 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.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
3
  "$id": "https://telo.run/schemas/editor-protocol.json",
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.",
4
+ "title": "Telo editor protocol, generation 2",
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,39 +314,422 @@
299
314
  }
300
315
  }
301
316
  },
302
- "DiagnosticFix": {
317
+ "ViewModelChangedParams": {
318
+ "description": "Sent after each analysis of an owner module, and when the owner stops being analysed.",
303
319
  "type": "object",
304
320
  "required": [
305
- "replacement"
321
+ "owner",
322
+ "revision"
306
323
  ],
307
324
  "properties": {
308
- "replacement": {
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
+ "configuration": {
345
+ "description": "The assignment to draw the module graph in; a dimension left out takes its default.",
346
+ "type": "object"
347
+ }
348
+ }
349
+ },
350
+ "ViewModelResult": {
351
+ "description": "The owner's view model, or null when the engine is not analysing it.",
352
+ "oneOf": [
353
+ {
354
+ "$ref": "#/$defs/ViewModel"
355
+ },
356
+ {
357
+ "type": "null"
358
+ }
359
+ ]
360
+ },
361
+ "CelCompletionParams": {
362
+ "type": "object",
363
+ "required": [
364
+ "owner",
365
+ "resource",
366
+ "path",
367
+ "tag",
368
+ "text",
369
+ "offset"
370
+ ],
371
+ "properties": {
372
+ "owner": {
309
373
  "type": "string"
310
374
  },
375
+ "resource": {
376
+ "description": "The resource the field belongs to.",
377
+ "type": "object",
378
+ "required": [
379
+ "kind",
380
+ "name"
381
+ ],
382
+ "properties": {
383
+ "kind": {
384
+ "type": "string"
385
+ },
386
+ "name": {
387
+ "type": "string"
388
+ }
389
+ }
390
+ },
391
+ "path": {
392
+ "type": "string",
393
+ "description": "Concrete path of the field within the resource."
394
+ },
311
395
  "tag": {
312
- "description": "The YAML tag the replacement is written behind. A receiver that does not know a tag offers no fix for it.",
313
- "anyOf": [
396
+ "type": "string",
397
+ "description": "The tag the value is written under, without its `!`."
398
+ },
399
+ "text": {
400
+ "type": "string",
401
+ "description": "The field's value without its tag."
402
+ },
403
+ "offset": {
404
+ "type": "integer",
405
+ "minimum": 0,
406
+ "description": "Cursor offset into `text`."
407
+ }
408
+ }
409
+ },
410
+ "CelCompletionResult": {
411
+ "description": "Completion items; a `textEdit` range is a line/character range in the request's `text`.",
412
+ "type": "array",
413
+ "items": {
414
+ "$ref": "#/$defs/CompletionItem"
415
+ }
416
+ },
417
+ "CompletionItem": {
418
+ "description": "The members of an LSP `CompletionItem` an engine sets.",
419
+ "type": "object",
420
+ "required": [
421
+ "label"
422
+ ],
423
+ "properties": {
424
+ "label": {
425
+ "type": "string"
426
+ },
427
+ "kind": {
428
+ "type": "integer",
429
+ "description": "LSP `CompletionItemKind`."
430
+ },
431
+ "detail": {
432
+ "type": "string"
433
+ },
434
+ "documentation": {
435
+ "type": "string"
436
+ },
437
+ "insertText": {
438
+ "type": "string"
439
+ },
440
+ "insertTextFormat": {
441
+ "type": "integer",
442
+ "description": "LSP `InsertTextFormat`; 2 is a snippet."
443
+ },
444
+ "textEdit": {
445
+ "type": "object",
446
+ "required": [
447
+ "range",
448
+ "newText"
449
+ ],
450
+ "properties": {
451
+ "range": {
452
+ "type": "object",
453
+ "required": [
454
+ "start",
455
+ "end"
456
+ ],
457
+ "properties": {
458
+ "start": {
459
+ "type": "object",
460
+ "required": [
461
+ "line",
462
+ "character"
463
+ ],
464
+ "properties": {
465
+ "line": {
466
+ "type": "integer"
467
+ },
468
+ "character": {
469
+ "type": "integer"
470
+ }
471
+ }
472
+ },
473
+ "end": {
474
+ "type": "object",
475
+ "required": [
476
+ "line",
477
+ "character"
478
+ ],
479
+ "properties": {
480
+ "line": {
481
+ "type": "integer"
482
+ },
483
+ "character": {
484
+ "type": "integer"
485
+ }
486
+ }
487
+ }
488
+ }
489
+ },
490
+ "newText": {
491
+ "type": "string"
492
+ }
493
+ }
494
+ },
495
+ "preselect": {
496
+ "type": "boolean"
497
+ },
498
+ "sortText": {
499
+ "type": "string"
500
+ },
501
+ "filterText": {
502
+ "type": "string"
503
+ },
504
+ "command": {
505
+ "type": "object",
506
+ "required": [
507
+ "title",
508
+ "command"
509
+ ],
510
+ "properties": {
511
+ "title": {
512
+ "type": "string"
513
+ },
514
+ "command": {
515
+ "type": "string"
516
+ }
517
+ }
518
+ }
519
+ }
520
+ },
521
+ "ViewModel": {
522
+ "description": "What a structured editor reads about one owner module, from the analysis its diagnostics come from.",
523
+ "type": "object",
524
+ "required": [
525
+ "owner",
526
+ "revision",
527
+ "moduleGraph",
528
+ "moduleRootSchema",
529
+ "kindSpellings",
530
+ "refConstraints",
531
+ "contracts",
532
+ "outputRefusals",
533
+ "templates",
534
+ "referenceSites",
535
+ "documents"
536
+ ],
537
+ "properties": {
538
+ "owner": {
539
+ "type": "string"
540
+ },
541
+ "revision": {
542
+ "type": "integer"
543
+ },
544
+ "moduleGraph": {
545
+ "oneOf": [
314
546
  {
315
- "enum": [
316
- "ref",
317
- "cel",
318
- "module-path"
319
- ]
547
+ "$ref": "#/$defs/ModuleGraphData"
320
548
  },
321
549
  {
322
- "type": "string"
550
+ "type": "null"
323
551
  }
324
552
  ]
553
+ },
554
+ "moduleRootSchema": {
555
+ "description": "The schema of the owner's module document kind.",
556
+ "oneOf": [
557
+ {
558
+ "type": "object",
559
+ "description": "A JSON Schema, as plain JSON."
560
+ },
561
+ {
562
+ "type": "null"
563
+ }
564
+ ]
565
+ },
566
+ "kindSpellings": {
567
+ "description": "Kind spelling → the canonical kind it resolves to; an unresolved spelling is absent.",
568
+ "type": "object",
569
+ "additionalProperties": {
570
+ "type": "string"
571
+ }
572
+ },
573
+ "refConstraints": {
574
+ "description": "Reference-slot constraint → what satisfies it; an unresolved constraint is absent.",
575
+ "type": "object",
576
+ "additionalProperties": {
577
+ "$ref": "#/$defs/RefConstraint"
578
+ }
579
+ },
580
+ "contracts": {
581
+ "description": "Canonical kind → its invocation contract, for every kind declaring one.",
582
+ "type": "object",
583
+ "additionalProperties": {
584
+ "$ref": "#/$defs/KindContract"
585
+ }
586
+ },
587
+ "outputRefusals": {
588
+ "type": "array",
589
+ "items": {
590
+ "$ref": "#/$defs/OutputRefusals"
591
+ }
592
+ },
593
+ "templates": {
594
+ "description": "Canonical kind → the body of the templated kind.",
595
+ "type": "object",
596
+ "additionalProperties": {
597
+ "$ref": "#/$defs/TemplateGraphData"
598
+ }
599
+ },
600
+ "referenceSites": {
601
+ "type": "array",
602
+ "items": {
603
+ "$ref": "#/$defs/ReferenceSite"
604
+ }
605
+ },
606
+ "documents": {
607
+ "description": "Canonical URI → the LSP version of each open document the analysis read.",
608
+ "type": "object",
609
+ "additionalProperties": {
610
+ "type": "integer"
611
+ }
612
+ },
613
+ "configurations": {
614
+ "$ref": "#/$defs/ViewModelConfigurations"
325
615
  }
326
616
  }
327
617
  },
328
- "TeloDiagnosticData": {
618
+ "RefConstraint": {
329
619
  "type": "object",
620
+ "required": [
621
+ "accepted",
622
+ "userFacing"
623
+ ],
330
624
  "properties": {
331
- "fix": {
332
- "$ref": "#/$defs/DiagnosticFix"
625
+ "accepted": {
626
+ "type": "array",
627
+ "items": {
628
+ "type": "string"
629
+ },
630
+ "description": "Canonical kinds that satisfy the constraint, sorted."
333
631
  },
334
- "resource": {
632
+ "userFacing": {
633
+ "type": "array",
634
+ "items": {
635
+ "type": "string"
636
+ },
637
+ "description": "Alias-form kinds a new resource could be created with."
638
+ }
639
+ }
640
+ },
641
+ "KindContract": {
642
+ "type": "object",
643
+ "properties": {
644
+ "inputType": {
645
+ "type": "object",
646
+ "description": "A JSON Schema, as plain JSON."
647
+ },
648
+ "outputType": {
649
+ "type": "object",
650
+ "description": "A JSON Schema, as plain JSON."
651
+ }
652
+ }
653
+ },
654
+ "OutputRefusals": {
655
+ "description": "One reference slot declaring an `outputType`, and why each candidate cannot fill it.",
656
+ "type": "object",
657
+ "required": [
658
+ "kind",
659
+ "pointer",
660
+ "refusals"
661
+ ],
662
+ "properties": {
663
+ "kind": {
664
+ "type": "string",
665
+ "description": "The canonical kind declaring the slot."
666
+ },
667
+ "pointer": {
668
+ "type": "string",
669
+ "description": "JSON Pointer of the slot's `x-telo-ref` node within that kind's `schema`."
670
+ },
671
+ "refusals": {
672
+ "description": "Resource name, in the scope the entry is listed in, → one line per definite mismatch; an absent resource can fill the slot.",
673
+ "type": "object",
674
+ "additionalProperties": {
675
+ "type": "array",
676
+ "items": {
677
+ "type": "string"
678
+ }
679
+ }
680
+ }
681
+ }
682
+ },
683
+ "TemplateGraphData": {
684
+ "type": "object",
685
+ "required": [
686
+ "kindId",
687
+ "name",
688
+ "definition",
689
+ "graph",
690
+ "outputRefusals"
691
+ ],
692
+ "properties": {
693
+ "kindId": {
694
+ "type": "string",
695
+ "description": "Canonical `<module>.<Name>`."
696
+ },
697
+ "name": {
698
+ "type": "string"
699
+ },
700
+ "module": {
701
+ "type": "string"
702
+ },
703
+ "capability": {
704
+ "type": "string",
705
+ "description": "The kind's capability, inherited along `extends`."
706
+ },
707
+ "definition": {
708
+ "type": "object",
709
+ "description": "The definition document as analysed; its `metadata.source` is a document URI."
710
+ },
711
+ "graph": {
712
+ "$ref": "#/$defs/ModuleGraphData"
713
+ },
714
+ "outputRefusals": {
715
+ "description": "Per reference slot declaring an `outputType`, why each entry of the body cannot fill it, keyed by entry name.",
716
+ "type": "array",
717
+ "items": {
718
+ "$ref": "#/$defs/OutputRefusals"
719
+ }
720
+ }
721
+ }
722
+ },
723
+ "ReferenceSite": {
724
+ "type": "object",
725
+ "required": [
726
+ "source",
727
+ "path",
728
+ "target"
729
+ ],
730
+ "properties": {
731
+ "source": {
732
+ "description": "The resource writing the reference.",
335
733
  "type": "object",
336
734
  "required": [
337
735
  "kind",
@@ -347,27 +745,792 @@
347
745
  }
348
746
  },
349
747
  "path": {
350
- "type": "string"
748
+ "type": "string",
749
+ "description": "Concrete path of the slot within that resource."
750
+ },
751
+ "target": {
752
+ "type": "string",
753
+ "description": "The name the reference holds, as written."
351
754
  }
352
755
  }
353
756
  },
354
- "UpgradeImportsArguments": {
757
+ "ModuleGraphData": {
355
758
  "type": "object",
356
759
  "required": [
357
- "uri",
358
- "aliases"
760
+ "nodes",
761
+ "edges",
762
+ "regions",
763
+ "kinds"
359
764
  ],
360
765
  "properties": {
361
- "uri": {
362
- "type": "string"
766
+ "root": {
767
+ "$ref": "#/$defs/GraphNode"
363
768
  },
364
- "aliases": {
769
+ "nodes": {
365
770
  "type": "array",
366
771
  "items": {
367
- "type": "string"
772
+ "$ref": "#/$defs/GraphNode"
773
+ }
774
+ },
775
+ "edges": {
776
+ "type": "array",
777
+ "items": {
778
+ "$ref": "#/$defs/GraphEdge"
779
+ }
780
+ },
781
+ "regions": {
782
+ "type": "array",
783
+ "items": {
784
+ "$ref": "#/$defs/GraphRegion"
785
+ }
786
+ },
787
+ "kinds": {
788
+ "type": "array",
789
+ "items": {
790
+ "$ref": "#/$defs/GraphKind"
368
791
  }
369
792
  }
370
793
  }
794
+ },
795
+ "GraphNode": {
796
+ "type": "object",
797
+ "required": [
798
+ "id",
799
+ "kind",
800
+ "name",
801
+ "ownership",
802
+ "ports",
803
+ "rows",
804
+ "rowArrays"
805
+ ],
806
+ "properties": {
807
+ "id": {
808
+ "type": "string"
809
+ },
810
+ "kind": {
811
+ "type": "string",
812
+ "description": "The kind as written."
813
+ },
814
+ "name": {
815
+ "type": "string"
816
+ },
817
+ "capability": {
818
+ "type": "string"
819
+ },
820
+ "canonicalKind": {
821
+ "type": "string",
822
+ "description": "The canonical kind, when `kind` is not already canonical."
823
+ },
824
+ "unknownKind": {
825
+ "type": "boolean"
826
+ },
827
+ "ownership": {
828
+ "anyOf": [
829
+ {
830
+ "enum": [
831
+ "root",
832
+ "named",
833
+ "inline",
834
+ "scoped",
835
+ "imported",
836
+ "injected",
837
+ "enclosing",
838
+ "forwarded"
839
+ ]
840
+ },
841
+ {
842
+ "type": "string"
843
+ }
844
+ ]
845
+ },
846
+ "owner": {
847
+ "type": "string",
848
+ "description": "Node owning this declaration (`inline`, `scoped`)."
849
+ },
850
+ "ownerSite": {
851
+ "type": "string"
852
+ },
853
+ "module": {
854
+ "type": "string"
855
+ },
856
+ "external": {
857
+ "type": "boolean"
858
+ },
859
+ "alias": {
860
+ "type": "string"
861
+ },
862
+ "ports": {
863
+ "type": "array",
864
+ "items": {
865
+ "$ref": "#/$defs/GraphPort"
866
+ }
867
+ },
868
+ "rows": {
869
+ "type": "array",
870
+ "items": {
871
+ "$ref": "#/$defs/GraphRow"
872
+ }
873
+ },
874
+ "rowArrays": {
875
+ "type": "array",
876
+ "items": {
877
+ "type": "object",
878
+ "required": [
879
+ "field",
880
+ "kind"
881
+ ],
882
+ "properties": {
883
+ "field": {
884
+ "type": "string"
885
+ },
886
+ "kind": {
887
+ "anyOf": [
888
+ {
889
+ "enum": [
890
+ "step",
891
+ "entry",
892
+ "target",
893
+ "inline",
894
+ "reference",
895
+ "export"
896
+ ]
897
+ },
898
+ {
899
+ "type": "string"
900
+ }
901
+ ]
902
+ }
903
+ }
904
+ }
905
+ },
906
+ "throws": {
907
+ "type": "object",
908
+ "required": [
909
+ "codes",
910
+ "unbounded"
911
+ ],
912
+ "properties": {
913
+ "codes": {
914
+ "type": "array",
915
+ "items": {
916
+ "type": "string"
917
+ }
918
+ },
919
+ "unbounded": {
920
+ "type": "boolean"
921
+ }
922
+ }
923
+ },
924
+ "root": {
925
+ "type": "boolean"
926
+ },
927
+ "choice": {
928
+ "$ref": "#/$defs/GraphChoice"
929
+ },
930
+ "choices": {
931
+ "type": "array",
932
+ "items": {
933
+ "$ref": "#/$defs/GraphChoice"
934
+ }
935
+ },
936
+ "family": {
937
+ "$ref": "#/$defs/GraphRepeat"
938
+ }
939
+ }
940
+ },
941
+ "GraphPort": {
942
+ "type": "object",
943
+ "required": [
944
+ "slot",
945
+ "refs",
946
+ "capabilities",
947
+ "array",
948
+ "class",
949
+ "slots"
950
+ ],
951
+ "properties": {
952
+ "slot": {
953
+ "type": "string",
954
+ "description": "Field-map path with `[]` / `{}` markers."
955
+ },
956
+ "refs": {
957
+ "type": "array",
958
+ "items": {
959
+ "type": "string"
960
+ }
961
+ },
962
+ "capabilities": {
963
+ "type": "array",
964
+ "items": {
965
+ "type": "string"
966
+ }
967
+ },
968
+ "array": {
969
+ "type": "boolean"
970
+ },
971
+ "class": {
972
+ "anyOf": [
973
+ {
974
+ "enum": [
975
+ "flow",
976
+ "holds",
977
+ "shape",
978
+ "data"
979
+ ]
980
+ },
981
+ {
982
+ "type": "string"
983
+ }
984
+ ]
985
+ },
986
+ "slots": {
987
+ "type": "array",
988
+ "items": {
989
+ "type": "object",
990
+ "required": [
991
+ "path"
992
+ ],
993
+ "properties": {
994
+ "path": {
995
+ "type": "string"
996
+ },
997
+ "target": {
998
+ "type": "string"
999
+ },
1000
+ "targetNode": {
1001
+ "type": "string"
1002
+ },
1003
+ "inline": {
1004
+ "type": "boolean"
1005
+ }
1006
+ }
1007
+ }
1008
+ },
1009
+ "addPath": {
1010
+ "type": "string"
1011
+ },
1012
+ "rowOwned": {
1013
+ "type": "boolean"
1014
+ }
1015
+ }
1016
+ },
1017
+ "GraphRow": {
1018
+ "type": "object",
1019
+ "required": [
1020
+ "id",
1021
+ "kind",
1022
+ "path",
1023
+ "array",
1024
+ "index",
1025
+ "depth"
1026
+ ],
1027
+ "properties": {
1028
+ "id": {
1029
+ "type": "string"
1030
+ },
1031
+ "kind": {
1032
+ "anyOf": [
1033
+ {
1034
+ "enum": [
1035
+ "step",
1036
+ "entry",
1037
+ "target",
1038
+ "repeat",
1039
+ "inline",
1040
+ "reference",
1041
+ "export"
1042
+ ]
1043
+ },
1044
+ {
1045
+ "type": "string"
1046
+ }
1047
+ ]
1048
+ },
1049
+ "name": {
1050
+ "type": "string"
1051
+ },
1052
+ "path": {
1053
+ "type": "string"
1054
+ },
1055
+ "array": {
1056
+ "type": "string"
1057
+ },
1058
+ "index": {
1059
+ "type": "integer"
1060
+ },
1061
+ "depth": {
1062
+ "type": "integer"
1063
+ },
1064
+ "parent": {
1065
+ "type": "string"
1066
+ },
1067
+ "target": {
1068
+ "type": "string"
1069
+ },
1070
+ "targetNode": {
1071
+ "type": "string"
1072
+ },
1073
+ "inputs": {
1074
+ "type": "string"
1075
+ },
1076
+ "match": {
1077
+ "type": "object"
1078
+ },
1079
+ "variant": {
1080
+ "type": "string"
1081
+ },
1082
+ "variantLabel": {
1083
+ "type": "string"
1084
+ },
1085
+ "predicate": {
1086
+ "type": "string"
1087
+ },
1088
+ "catches": {
1089
+ "type": "boolean"
1090
+ },
1091
+ "dispatch": {
1092
+ "type": "object",
1093
+ "required": [
1094
+ "path",
1095
+ "refs"
1096
+ ],
1097
+ "properties": {
1098
+ "path": {
1099
+ "type": "string"
1100
+ },
1101
+ "refs": {
1102
+ "type": "array",
1103
+ "items": {
1104
+ "type": "string"
1105
+ }
1106
+ },
1107
+ "inline": {
1108
+ "type": "boolean"
1109
+ },
1110
+ "alternatives": {
1111
+ "type": "array",
1112
+ "items": {
1113
+ "type": "object",
1114
+ "required": [
1115
+ "path",
1116
+ "refs"
1117
+ ],
1118
+ "properties": {
1119
+ "path": {
1120
+ "type": "string"
1121
+ },
1122
+ "refs": {
1123
+ "type": "array",
1124
+ "items": {
1125
+ "type": "string"
1126
+ }
1127
+ }
1128
+ }
1129
+ }
1130
+ }
1131
+ }
1132
+ },
1133
+ "declares": {
1134
+ "type": "string"
1135
+ },
1136
+ "unknownKind": {
1137
+ "type": "boolean"
1138
+ },
1139
+ "repeat": {
1140
+ "$ref": "#/$defs/GraphRepeat"
1141
+ },
1142
+ "emitted": {
1143
+ "type": "string"
1144
+ }
1145
+ }
1146
+ },
1147
+ "GraphEdge": {
1148
+ "type": "object",
1149
+ "required": [
1150
+ "id",
1151
+ "from",
1152
+ "toName",
1153
+ "class",
1154
+ "use",
1155
+ "slot",
1156
+ "path"
1157
+ ],
1158
+ "properties": {
1159
+ "id": {
1160
+ "type": "string"
1161
+ },
1162
+ "from": {
1163
+ "type": "string"
1164
+ },
1165
+ "to": {
1166
+ "type": "string"
1167
+ },
1168
+ "toName": {
1169
+ "type": "string"
1170
+ },
1171
+ "class": {
1172
+ "anyOf": [
1173
+ {
1174
+ "enum": [
1175
+ "flow",
1176
+ "holds",
1177
+ "shape",
1178
+ "data"
1179
+ ]
1180
+ },
1181
+ {
1182
+ "type": "string"
1183
+ }
1184
+ ]
1185
+ },
1186
+ "use": {
1187
+ "type": "array",
1188
+ "items": {
1189
+ "anyOf": [
1190
+ {
1191
+ "enum": [
1192
+ "schema",
1193
+ "dependency",
1194
+ "call",
1195
+ "detached",
1196
+ "trigger.inbound",
1197
+ "trigger.consumer"
1198
+ ]
1199
+ },
1200
+ {
1201
+ "type": "string"
1202
+ }
1203
+ ]
1204
+ }
1205
+ },
1206
+ "slot": {
1207
+ "type": "string"
1208
+ },
1209
+ "path": {
1210
+ "type": "string"
1211
+ },
1212
+ "row": {
1213
+ "type": "string"
1214
+ },
1215
+ "inputs": {
1216
+ "type": "string"
1217
+ },
1218
+ "boot": {
1219
+ "type": "boolean"
1220
+ },
1221
+ "scoped": {
1222
+ "type": "boolean"
1223
+ },
1224
+ "read": {
1225
+ "type": "string"
1226
+ },
1227
+ "call": {
1228
+ "type": "string"
1229
+ }
1230
+ }
1231
+ },
1232
+ "GraphRegion": {
1233
+ "type": "object",
1234
+ "required": [
1235
+ "id",
1236
+ "kind",
1237
+ "owner",
1238
+ "site",
1239
+ "members"
1240
+ ],
1241
+ "properties": {
1242
+ "id": {
1243
+ "type": "string"
1244
+ },
1245
+ "kind": {
1246
+ "anyOf": [
1247
+ {
1248
+ "enum": [
1249
+ "inline",
1250
+ "scope",
1251
+ "zone"
1252
+ ]
1253
+ },
1254
+ {
1255
+ "type": "string"
1256
+ }
1257
+ ]
1258
+ },
1259
+ "owner": {
1260
+ "type": "string"
1261
+ },
1262
+ "site": {
1263
+ "type": "string"
1264
+ },
1265
+ "members": {
1266
+ "type": "array",
1267
+ "items": {
1268
+ "type": "string"
1269
+ }
1270
+ },
1271
+ "attributes": {
1272
+ "type": "object",
1273
+ "additionalProperties": {
1274
+ "type": "string"
1275
+ }
1276
+ },
1277
+ "boundaries": {
1278
+ "type": "array",
1279
+ "items": {
1280
+ "type": "object",
1281
+ "required": [
1282
+ "from",
1283
+ "toName",
1284
+ "escaping"
1285
+ ],
1286
+ "properties": {
1287
+ "from": {
1288
+ "type": "string"
1289
+ },
1290
+ "toName": {
1291
+ "type": "string"
1292
+ },
1293
+ "escaping": {
1294
+ "type": "array",
1295
+ "items": {
1296
+ "type": "string"
1297
+ }
1298
+ }
1299
+ }
1300
+ }
1301
+ }
1302
+ }
1303
+ },
1304
+ "GraphKind": {
1305
+ "type": "object",
1306
+ "required": [
1307
+ "id",
1308
+ "name",
1309
+ "abstract",
1310
+ "instances",
1311
+ "template",
1312
+ "own"
1313
+ ],
1314
+ "properties": {
1315
+ "id": {
1316
+ "type": "string",
1317
+ "description": "Canonical `<module>.<Name>`."
1318
+ },
1319
+ "name": {
1320
+ "type": "string"
1321
+ },
1322
+ "module": {
1323
+ "type": "string"
1324
+ },
1325
+ "abstract": {
1326
+ "type": "boolean"
1327
+ },
1328
+ "capability": {
1329
+ "type": "string"
1330
+ },
1331
+ "extendsId": {
1332
+ "type": "string"
1333
+ },
1334
+ "extendsName": {
1335
+ "type": "string"
1336
+ },
1337
+ "instances": {
1338
+ "type": "array",
1339
+ "items": {
1340
+ "type": "string"
1341
+ }
1342
+ },
1343
+ "template": {
1344
+ "type": "boolean"
1345
+ },
1346
+ "own": {
1347
+ "type": "boolean"
1348
+ },
1349
+ "exported": {
1350
+ "type": "boolean"
1351
+ }
1352
+ }
1353
+ },
1354
+ "DiagnosticFix": {
1355
+ "type": "object",
1356
+ "required": [
1357
+ "replacement"
1358
+ ],
1359
+ "properties": {
1360
+ "replacement": {
1361
+ "type": "string"
1362
+ },
1363
+ "tag": {
1364
+ "description": "The YAML tag the replacement is written behind. A receiver that does not know a tag offers no fix for it.",
1365
+ "anyOf": [
1366
+ {
1367
+ "enum": [
1368
+ "ref",
1369
+ "cel",
1370
+ "module-path"
1371
+ ]
1372
+ },
1373
+ {
1374
+ "type": "string"
1375
+ }
1376
+ ]
1377
+ }
1378
+ }
1379
+ },
1380
+ "TeloDiagnosticData": {
1381
+ "type": "object",
1382
+ "properties": {
1383
+ "fix": {
1384
+ "$ref": "#/$defs/DiagnosticFix"
1385
+ },
1386
+ "resource": {
1387
+ "type": "object",
1388
+ "required": [
1389
+ "kind",
1390
+ "name"
1391
+ ],
1392
+ "properties": {
1393
+ "kind": {
1394
+ "type": "string"
1395
+ },
1396
+ "name": {
1397
+ "type": "string"
1398
+ }
1399
+ }
1400
+ },
1401
+ "path": {
1402
+ "type": "string"
1403
+ },
1404
+ "configurations": {
1405
+ "type": "array",
1406
+ "items": {
1407
+ "type": "object"
1408
+ }
1409
+ }
1410
+ }
1411
+ },
1412
+ "UpgradeImportsArguments": {
1413
+ "type": "object",
1414
+ "required": [
1415
+ "uri",
1416
+ "aliases"
1417
+ ],
1418
+ "properties": {
1419
+ "uri": {
1420
+ "type": "string"
1421
+ },
1422
+ "aliases": {
1423
+ "type": "array",
1424
+ "items": {
1425
+ "type": "string"
1426
+ }
1427
+ }
1428
+ }
1429
+ },
1430
+ "GraphAlternative": {
1431
+ "type": "object",
1432
+ "required": [
1433
+ "key"
1434
+ ],
1435
+ "properties": {
1436
+ "key": {
1437
+ "description": "then, else, default, a case key, or absent (an if with no else whose condition is false).",
1438
+ "type": "string"
1439
+ },
1440
+ "kind": {
1441
+ "description": "At a declaration position, the kind the branch declares.",
1442
+ "type": "string"
1443
+ }
1444
+ }
1445
+ },
1446
+ "GraphChoice": {
1447
+ "type": "object",
1448
+ "required": [
1449
+ "path",
1450
+ "tag",
1451
+ "alternatives",
1452
+ "selected"
1453
+ ],
1454
+ "properties": {
1455
+ "path": {
1456
+ "description": "\"\" for the declaration itself, else the written path of the field.",
1457
+ "type": "string"
1458
+ },
1459
+ "tag": {
1460
+ "enum": [
1461
+ "if",
1462
+ "switch"
1463
+ ]
1464
+ },
1465
+ "alternatives": {
1466
+ "type": "array",
1467
+ "items": {
1468
+ "$ref": "#/$defs/GraphAlternative"
1469
+ }
1470
+ },
1471
+ "selected": {
1472
+ "description": "The alternative key the selected configuration takes; null when it takes none.",
1473
+ "oneOf": [
1474
+ {
1475
+ "type": "string"
1476
+ },
1477
+ {
1478
+ "type": "null"
1479
+ }
1480
+ ]
1481
+ }
1482
+ }
1483
+ },
1484
+ "GraphRepeat": {
1485
+ "type": "object",
1486
+ "required": [
1487
+ "source",
1488
+ "as"
1489
+ ],
1490
+ "properties": {
1491
+ "source": {
1492
+ "type": "string"
1493
+ },
1494
+ "as": {
1495
+ "type": "string"
1496
+ }
1497
+ }
1498
+ },
1499
+ "GraphDimension": {
1500
+ "type": "object",
1501
+ "required": [
1502
+ "key",
1503
+ "values",
1504
+ "default"
1505
+ ],
1506
+ "properties": {
1507
+ "key": {
1508
+ "type": "string"
1509
+ },
1510
+ "values": {
1511
+ "type": "array"
1512
+ },
1513
+ "default": {}
1514
+ }
1515
+ },
1516
+ "ViewModelConfigurations": {
1517
+ "description": "The configurations the owner's module graph can be drawn in: its dimensions and the assignment the graph is drawn in.",
1518
+ "type": "object",
1519
+ "required": [
1520
+ "dimensions",
1521
+ "selected"
1522
+ ],
1523
+ "properties": {
1524
+ "dimensions": {
1525
+ "type": "array",
1526
+ "items": {
1527
+ "$ref": "#/$defs/GraphDimension"
1528
+ }
1529
+ },
1530
+ "selected": {
1531
+ "type": "object"
1532
+ }
1533
+ }
371
1534
  }
372
1535
  }
373
1536
  }