pi-outpost 0.7.0 → 0.9.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 (147) hide show
  1. package/dist/contract/README.md +190 -0
  2. package/dist/contract/conformance/README.md +54 -0
  3. package/dist/contract/conformance/index.json +165 -0
  4. package/dist/contract/conformance/invalid/change-without-reference.json +17 -0
  5. package/dist/contract/conformance/invalid/change-without-target.json +10 -0
  6. package/dist/contract/conformance/invalid/container-as-endpoint.json +26 -0
  7. package/dist/contract/conformance/invalid/container-duplicate-id.json +24 -0
  8. package/dist/contract/conformance/invalid/container-unknown-membership.json +20 -0
  9. package/dist/contract/conformance/invalid/containers-over-the-ceiling.json +220 -0
  10. package/dist/contract/conformance/invalid/duplicate-identifier.json +17 -0
  11. package/dist/contract/conformance/invalid/duplicate-reference-twice.json +24 -0
  12. package/dist/contract/conformance/invalid/duplicate-reference.json +23 -0
  13. package/dist/contract/conformance/invalid/empty-change.json +15 -0
  14. package/dist/contract/conformance/invalid/kind-data-mismatch.json +13 -0
  15. package/dist/contract/conformance/invalid/label-past-ceiling.json +13 -0
  16. package/dist/contract/conformance/invalid/new-element-without-label.json +12 -0
  17. package/dist/contract/conformance/invalid/new-relationship-without-kind.json +22 -0
  18. package/dist/contract/conformance/invalid/relationship-change-without-target.json +13 -0
  19. package/dist/contract/conformance/invalid/relationship-without-endpoints.json +19 -0
  20. package/dist/contract/conformance/invalid/removal-without-target.json +19 -0
  21. package/dist/contract/conformance/invalid/removal-without-type.json +19 -0
  22. package/dist/contract/conformance/invalid/row-column-mismatch.json +15 -0
  23. package/dist/contract/conformance/invalid/table-with-empty-removals.json +6 -0
  24. package/dist/contract/conformance/invalid/table-with-removal.json +20 -0
  25. package/dist/contract/conformance/invalid/table-with-target.json +15 -0
  26. package/dist/contract/conformance/invalid/too-many-element-kinds.json +340 -0
  27. package/dist/contract/conformance/invalid/too-many-relationship-kinds.json +665 -0
  28. package/dist/contract/conformance/invalid/undeclared-property.json +14 -0
  29. package/dist/contract/conformance/invalid/unknown-version.json +13 -0
  30. package/dist/contract/conformance/invalid/unresolved-endpoint.json +19 -0
  31. package/dist/contract/conformance/valid/graph-at-the-kind-ceiling.json +650 -0
  32. package/dist/contract/conformance/valid/graph-containers-at-the-ceiling.json +216 -0
  33. package/dist/contract/conformance/valid/graph-minimal.json +13 -0
  34. package/dist/contract/conformance/valid/graph-proposal-addition-only.json +14 -0
  35. package/dist/contract/conformance/valid/graph-proposal-context-element.json +24 -0
  36. package/dist/contract/conformance/valid/graph-proposal-declared-change.json +18 -0
  37. package/dist/contract/conformance/valid/graph-proposal-field-patch.json +17 -0
  38. package/dist/contract/conformance/valid/graph-proposal-moves-a-member.json +28 -0
  39. package/dist/contract/conformance/valid/graph-proposal-named-context.json +25 -0
  40. package/dist/contract/conformance/valid/graph-proposal-reattachment.json +30 -0
  41. package/dist/contract/conformance/valid/graph-with-containers.json +55 -0
  42. package/dist/contract/conformance/valid/graph-with-empty-container.json +24 -0
  43. package/dist/contract/conformance/valid/graph-with-typed-relationship.json +24 -0
  44. package/dist/contract/conformance/valid/sequence-minimal.json +13 -0
  45. package/dist/contract/conformance/valid/sequence-ordered.json +28 -0
  46. package/dist/contract/conformance/valid/sequence-with-containers.json +45 -0
  47. package/dist/contract/conformance/valid/table-minimal.json +20 -0
  48. package/dist/contract/schemas/structured-exchange-1.json +368 -0
  49. package/dist/contract/validate-structured-exchange.mjs +8670 -0
  50. package/dist/pi-outpost.mjs +13091 -3628
  51. package/dist/pi-outpost.sea.mjs +17422 -7961
  52. package/dist/sea-prep.blob +0 -0
  53. package/dist/skills/README.md +22 -0
  54. package/dist/skills/structured-exchange/SKILL.md +256 -0
  55. package/dist/skills/structured-exchange/structured-exchange-1.json +368 -0
  56. package/dist/web/assets/{PdfViewer-DqktVuQi.js → PdfViewer-CEAp6biY.js} +2 -2
  57. package/dist/web/assets/{abnfDiagram-N423BO3Z-DTFllthO.js → abnfDiagram-N423BO3Z-BE4AMXSH.js} +1 -1
  58. package/dist/web/assets/architecture-TIHT7OUA-DgTbwInB.js +1 -0
  59. package/dist/web/assets/{architectureDiagram-T3A2C74G-z58o8Htx.js → architectureDiagram-T3A2C74G-tjG-eidb.js} +1 -1
  60. package/dist/web/assets/{blockDiagram-VBNYF7ZC-DunlRCsF.js → blockDiagram-VBNYF7ZC-Bwzla1cD.js} +1 -1
  61. package/dist/web/assets/{c4Diagram-5PPSVZJV-BnXZSwmd.js → c4Diagram-5PPSVZJV-BbNH9mqH.js} +1 -1
  62. package/dist/web/assets/channel-CXbqHDJA.js +1 -0
  63. package/dist/web/assets/{chunk-2GRJ4B5K-DMD6wv-7.js → chunk-2GRJ4B5K-BTjPaaWT.js} +1 -1
  64. package/dist/web/assets/{chunk-3NCLNEKW-DcwPPr-p.js → chunk-3NCLNEKW-DfGGO5Az.js} +1 -1
  65. package/dist/web/assets/{chunk-4I5QYGJK-CpI4oXUq.js → chunk-4I5QYGJK-Bajr_p-3.js} +1 -1
  66. package/dist/web/assets/{chunk-5RXB4S5H-vLnKsYcD.js → chunk-5RXB4S5H-CbDXtSwX.js} +1 -1
  67. package/dist/web/assets/{chunk-6Q2QTUOP-C2P_VKtw.js → chunk-6Q2QTUOP-Cj5IB9-q.js} +1 -1
  68. package/dist/web/assets/{chunk-7Z6QIM7H-9Vj99wwd.js → chunk-7Z6QIM7H-BIsTfYEd.js} +1 -1
  69. package/dist/web/assets/{chunk-GF5L2VYU-Cna6JsDy.js → chunk-GF5L2VYU-CYLPBeKA.js} +1 -1
  70. package/dist/web/assets/{chunk-I66GZJ75-Crrt_0-l.js → chunk-I66GZJ75-BjZt7BZl.js} +3 -3
  71. package/dist/web/assets/{chunk-J7OUQ5F2-NnE94fab.js → chunk-J7OUQ5F2-B3gViRUp.js} +2 -2
  72. package/dist/web/assets/{chunk-JQJVKLGR-DV6jrsII.js → chunk-JQJVKLGR-Dg177seh.js} +1 -1
  73. package/dist/web/assets/{chunk-KBJHAD2P-96NXxGM6.js → chunk-KBJHAD2P-B_2jByMg.js} +1 -1
  74. package/dist/web/assets/{chunk-NSK5VX7P-D8DkQ2AO.js → chunk-NSK5VX7P-B5w-3_Ed.js} +1 -1
  75. package/dist/web/assets/{chunk-QR6OTTB3-BCLPnKlE.js → chunk-QR6OTTB3-DCJRxmQT.js} +1 -1
  76. package/dist/web/assets/{chunk-UBXNYLIW-DswC9lJa.js → chunk-UBXNYLIW-DBuIxFzr.js} +1 -1
  77. package/dist/web/assets/{chunk-W5SLKNZC-CPDEB8Hp.js → chunk-W5SLKNZC-B-cGIOQF.js} +1 -1
  78. package/dist/web/assets/{chunk-WRU74C26-DCZH8Rwq.js → chunk-WRU74C26-CLOxZV1w.js} +1 -1
  79. package/dist/web/assets/classDiagram-JCYQIIEL-lv93WkUc.js +1 -0
  80. package/dist/web/assets/classDiagram-v2-OCEON4UE-lv93WkUc.js +1 -0
  81. package/dist/web/assets/{cynefin-VYW2F7L2-cIE_7dpt.js → cynefin-VYW2F7L2-Bk96SN7L.js} +1 -1
  82. package/dist/web/assets/{cynefinDiagram-MW4NZA55-D2MrYar5.js → cynefinDiagram-MW4NZA55-ooeswKGp.js} +1 -1
  83. package/dist/web/assets/{dagre-VZM6K2ZE-BagJQZYc.js → dagre-VZM6K2ZE-CSwH_rTA.js} +1 -1
  84. package/dist/web/assets/{diagram-7IWD3JNH-BwKHjjQ-.js → diagram-7IWD3JNH-DVtrh_uV.js} +1 -1
  85. package/dist/web/assets/{diagram-B4RE2ZJO-BJmMpny4.js → diagram-B4RE2ZJO-CYE5VmiD.js} +1 -1
  86. package/dist/web/assets/{diagram-LBJQPF4R-D3PE9vwZ.js → diagram-LBJQPF4R-BYOlHlmg.js} +1 -1
  87. package/dist/web/assets/{diagram-Q27KOJAE-oiQW2yMD.js → diagram-Q27KOJAE-DJWxpvu9.js} +1 -1
  88. package/dist/web/assets/{diagram-UB23O5K3-lKRQ-OEd.js → diagram-UB23O5K3-B1g-vwj0.js} +1 -1
  89. package/dist/web/assets/{ebnfDiagram-BXEA7PRR-B7T7YLs8.js → ebnfDiagram-BXEA7PRR-BX8Jv2Vd.js} +1 -1
  90. package/dist/web/assets/{erDiagram-JOGREHBK-BB-xsqVL.js → erDiagram-JOGREHBK-9hxklGu2.js} +1 -1
  91. package/dist/web/assets/eventmodeling-45OFAUF4-CSvMsqcO.js +1 -0
  92. package/dist/web/assets/flowDiagram-UKHOOZJN-CPmAOaGQ.js +1 -0
  93. package/dist/web/assets/{ganttDiagram-PKOTCBZU-BnmC1zyp.js → ganttDiagram-PKOTCBZU-D0kAnvoM.js} +1 -1
  94. package/dist/web/assets/{gitGraph-TEB2WS4Q-DFCnvCQm.js → gitGraph-TEB2WS4Q-C9UMPCgj.js} +1 -1
  95. package/dist/web/assets/{gitGraphDiagram-DS77QQ5N-CVU7rVHy.js → gitGraphDiagram-DS77QQ5N-6tPgqwE6.js} +1 -1
  96. package/dist/web/assets/index-CZwzQTfU.css +2 -0
  97. package/dist/web/assets/index-De86t3J_.js +323 -0
  98. package/dist/web/assets/{info-DKCQHKI2-C8DZu4NS.js → info-DKCQHKI2-BBV4qqmE.js} +1 -1
  99. package/dist/web/assets/{infoDiagram-6WML65LV-BSYvkU5b.js → infoDiagram-6WML65LV-Bmhc86CN.js} +1 -1
  100. package/dist/web/assets/{ishikawaDiagram-WSZJBQD7-B6uWyt8M.js → ishikawaDiagram-WSZJBQD7-5wn4Yv2C.js} +1 -1
  101. package/dist/web/assets/{journeyDiagram-NVQOT4AX-CTrfVU7d.js → journeyDiagram-NVQOT4AX-DJLLpQlS.js} +1 -1
  102. package/dist/web/assets/{kanban-definition-27J2QSJJ-DsBfco54.js → kanban-definition-27J2QSJJ-7h9EMbUW.js} +1 -1
  103. package/dist/web/assets/{line-C6m1STwY.js → line-Uu7s3CmK.js} +1 -1
  104. package/dist/web/assets/{mermaid-parser.core-DbS7gJe7.js → mermaid-parser.core-DwpLoctN.js} +3 -3
  105. package/dist/web/assets/{mermaid.core-Blq4BYkb.js → mermaid.core-CRSZr8Y7.js} +3 -3
  106. package/dist/web/assets/{mindmap-definition-FAOFIHXS-BWL0h6Uq.js → mindmap-definition-FAOFIHXS-DPic1KLK.js} +1 -1
  107. package/dist/web/assets/{packet-7NZHBO7P-CryH8SNn.js → packet-7NZHBO7P-CMRjleUu.js} +1 -1
  108. package/dist/web/assets/{pdf-BxEVw97_.js → pdf-DGJrgWix.js} +1 -1
  109. package/dist/web/assets/{pegDiagram-VL7TDLO6-CWrJoBL8.js → pegDiagram-VL7TDLO6-CdECC4cs.js} +1 -1
  110. package/dist/web/assets/{pie-RZYD4A2V-DsuD2v_v.js → pie-RZYD4A2V-C5X4oGn0.js} +1 -1
  111. package/dist/web/assets/{pieDiagram-7S7Q4E2Y-D6-xXQ5p.js → pieDiagram-7S7Q4E2Y-Bvs4Q2O-.js} +1 -1
  112. package/dist/web/assets/{quadrantDiagram-CIZ2JOQS-CMlYXuHz.js → quadrantDiagram-CIZ2JOQS-FsUrYDg7.js} +1 -1
  113. package/dist/web/assets/{radar-I7S5WNFK-CjUoPns1.js → radar-I7S5WNFK-tvx7HrZO.js} +1 -1
  114. package/dist/web/assets/{railroad-3IZDKUUU-Dv7YQd2U.js → railroad-3IZDKUUU-DBks1QD-.js} +1 -1
  115. package/dist/web/assets/railroad-abnf-AHOZXSZD-BnvB29Nv.js +1 -0
  116. package/dist/web/assets/railroad-ebnf-EBAXGLYW-BUSDQ0vn.js +1 -0
  117. package/dist/web/assets/railroad-peg-LSFZ7HO6-CZV0givf.js +1 -0
  118. package/dist/web/assets/{railroadDiagram-AXF67PYL-bzfj9r2a.js → railroadDiagram-AXF67PYL-CBvFYCmN.js} +1 -1
  119. package/dist/web/assets/{requirementDiagram-LRYGKXZP-B7PaiV8r.js → requirementDiagram-LRYGKXZP-C-rumttI.js} +1 -1
  120. package/dist/web/assets/{sankeyDiagram-W5VNT64P-DEKRi7gf.js → sankeyDiagram-W5VNT64P-ClOK2cdj.js} +1 -1
  121. package/dist/web/assets/{sequenceDiagram-SI44F4Z6-BB2FYR31.js → sequenceDiagram-SI44F4Z6-B0pKllVj.js} +1 -1
  122. package/dist/web/assets/{stateDiagram-OKZ733FA-BnQwJgUG.js → stateDiagram-OKZ733FA-BoAWywzk.js} +1 -1
  123. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-CHrsco-w.js +1 -0
  124. package/dist/web/assets/{swimlanes-SLNWSIFB-omoGGO13.js → swimlanes-SLNWSIFB-cdgjeXSf.js} +1 -1
  125. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-DPjAUQdL.js +8 -0
  126. package/dist/web/assets/{timeline-definition-Z64GVDOM-D0C35XAV.js → timeline-definition-Z64GVDOM-ByMPGIEh.js} +1 -1
  127. package/dist/web/assets/{treeView-QDETBFTQ-D21D9o06.js → treeView-QDETBFTQ-zBqwQF47.js} +1 -1
  128. package/dist/web/assets/{treemap-6X3UGDF4-DsNn3HqU.js → treemap-6X3UGDF4-C2U9S2di.js} +1 -1
  129. package/dist/web/assets/{vennDiagram-T6HMQDX7-Cg1oGxJi.js → vennDiagram-T6HMQDX7-CyJfOcB0.js} +1 -1
  130. package/dist/web/assets/{wardley-OPB4EBWU-Df-Ugyh4.js → wardley-OPB4EBWU-CDxzQuvF.js} +1 -1
  131. package/dist/web/assets/{wardleyDiagram-T6FBY63Y-DKiQg0PU.js → wardleyDiagram-T6FBY63Y-IO8_CDTG.js} +1 -1
  132. package/dist/web/assets/{xychartDiagram-ELKLHX3M-DecoU60Y.js → xychartDiagram-ELKLHX3M-UUfxFEDc.js} +1 -1
  133. package/dist/web/index.html +2 -2
  134. package/package.json +2 -2
  135. package/dist/web/assets/architecture-TIHT7OUA-CfWIx3bb.js +0 -1
  136. package/dist/web/assets/channel-By9fNdgM.js +0 -1
  137. package/dist/web/assets/classDiagram-JCYQIIEL-CbRWDDDS.js +0 -1
  138. package/dist/web/assets/classDiagram-v2-OCEON4UE-CbRWDDDS.js +0 -1
  139. package/dist/web/assets/eventmodeling-45OFAUF4-CIh5g1Zv.js +0 -1
  140. package/dist/web/assets/flowDiagram-UKHOOZJN-DWTzsyQN.js +0 -1
  141. package/dist/web/assets/index-Ct33KYcg.js +0 -321
  142. package/dist/web/assets/index-DFy_CqqQ.css +0 -2
  143. package/dist/web/assets/railroad-abnf-AHOZXSZD-Cr90hvNI.js +0 -1
  144. package/dist/web/assets/railroad-ebnf-EBAXGLYW-BhLKG67T.js +0 -1
  145. package/dist/web/assets/railroad-peg-LSFZ7HO6-Ct2bnVSV.js +0 -1
  146. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-CsdKarH7.js +0 -1
  147. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-KAs6WWZH.js +0 -8
@@ -0,0 +1,368 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "urn:structured-exchange:1",
4
+ "title": "Structured exchange envelope v1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema",
9
+ "kind",
10
+ "data"
11
+ ],
12
+ "$defs": {
13
+ "ref": {
14
+ "type": "string",
15
+ "minLength": 1,
16
+ "maxLength": 200
17
+ },
18
+ "localId": {
19
+ "type": "string",
20
+ "minLength": 1,
21
+ "maxLength": 200
22
+ },
23
+ "label": {
24
+ "type": "string",
25
+ "maxLength": 500
26
+ },
27
+ "container": {
28
+ "description": "A named group of elements or participants. Grouping only: relationships connect elements and cross container boundaries freely, and a container carries no relationship of its own.",
29
+ "type": "object",
30
+ "additionalProperties": false,
31
+ "required": [
32
+ "id",
33
+ "label"
34
+ ],
35
+ "properties": {
36
+ "id": {
37
+ "$ref": "#/$defs/localId"
38
+ },
39
+ "label": {
40
+ "$ref": "#/$defs/label"
41
+ },
42
+ "kind": {
43
+ "$ref": "#/$defs/kind"
44
+ }
45
+ }
46
+ },
47
+ "kind": {
48
+ "description": "The producing tool's type or stereotype for this thing \u2014 'block', 'sensor', 'power', 'thermal'. Free text, because the vocabulary belongs to the domain and not to this contract. Carries meaning, not presentation: a reader may colour by it, and a consumer may map it back to its own type system.",
49
+ "type": "string",
50
+ "minLength": 1,
51
+ "maxLength": 100
52
+ },
53
+ "element": {
54
+ "type": "object",
55
+ "additionalProperties": false,
56
+ "required": [
57
+ "id"
58
+ ],
59
+ "properties": {
60
+ "id": {
61
+ "$ref": "#/$defs/localId"
62
+ },
63
+ "ref": {
64
+ "$ref": "#/$defs/ref"
65
+ },
66
+ "label": {
67
+ "$ref": "#/$defs/label"
68
+ },
69
+ "kind": {
70
+ "$ref": "#/$defs/kind"
71
+ },
72
+ "set": {
73
+ "$ref": "#/$defs/elementChange"
74
+ },
75
+ "container": {
76
+ "$ref": "#/$defs/localId"
77
+ }
78
+ },
79
+ "if": {
80
+ "not": {
81
+ "required": [
82
+ "ref"
83
+ ]
84
+ }
85
+ },
86
+ "then": {
87
+ "required": [
88
+ "label"
89
+ ]
90
+ }
91
+ },
92
+ "edge": {
93
+ "type": "object",
94
+ "additionalProperties": false,
95
+ "required": [
96
+ "from",
97
+ "to"
98
+ ],
99
+ "properties": {
100
+ "from": {
101
+ "$ref": "#/$defs/localId"
102
+ },
103
+ "to": {
104
+ "$ref": "#/$defs/localId"
105
+ },
106
+ "kind": {
107
+ "$ref": "#/$defs/kind"
108
+ },
109
+ "ref": {
110
+ "$ref": "#/$defs/ref"
111
+ },
112
+ "label": {
113
+ "$ref": "#/$defs/label"
114
+ },
115
+ "set": {
116
+ "$ref": "#/$defs/edgeChange"
117
+ }
118
+ },
119
+ "if": {
120
+ "not": {
121
+ "required": [
122
+ "ref"
123
+ ]
124
+ }
125
+ },
126
+ "then": {
127
+ "required": [
128
+ "kind"
129
+ ]
130
+ }
131
+ },
132
+ "message": {
133
+ "type": "object",
134
+ "additionalProperties": false,
135
+ "required": [
136
+ "from",
137
+ "to"
138
+ ],
139
+ "properties": {
140
+ "from": {
141
+ "$ref": "#/$defs/localId"
142
+ },
143
+ "to": {
144
+ "$ref": "#/$defs/localId"
145
+ },
146
+ "ref": {
147
+ "$ref": "#/$defs/ref"
148
+ },
149
+ "label": {
150
+ "$ref": "#/$defs/label"
151
+ },
152
+ "set": {
153
+ "$ref": "#/$defs/messageChange"
154
+ }
155
+ },
156
+ "if": {
157
+ "not": {
158
+ "required": [
159
+ "ref"
160
+ ]
161
+ }
162
+ },
163
+ "then": {
164
+ "required": [
165
+ "label"
166
+ ]
167
+ }
168
+ },
169
+ "removal": {
170
+ "type": "object",
171
+ "additionalProperties": false,
172
+ "required": [
173
+ "type",
174
+ "ref"
175
+ ],
176
+ "properties": {
177
+ "type": {
178
+ "enum": [
179
+ "element",
180
+ "relationship"
181
+ ]
182
+ },
183
+ "ref": {
184
+ "$ref": "#/$defs/ref"
185
+ },
186
+ "label": {
187
+ "$ref": "#/$defs/label"
188
+ },
189
+ "kind": {
190
+ "$ref": "#/$defs/kind"
191
+ },
192
+ "from": {
193
+ "$ref": "#/$defs/localId"
194
+ },
195
+ "to": {
196
+ "$ref": "#/$defs/localId"
197
+ }
198
+ },
199
+ "description": "Something to take out of the target, named by the reference the authority knows it by. The other fields describe it and never identify it: they exist so a reader can see what they are approving the removal of. This application holds one document, not the authority's model, so without them a removal is an opaque identifier and the reader is asked to approve the deletion of something they cannot see."
200
+ },
201
+ "elementChange": {
202
+ "type": "object",
203
+ "additionalProperties": false,
204
+ "minProperties": 1,
205
+ "properties": {
206
+ "label": {
207
+ "$ref": "#/$defs/label"
208
+ },
209
+ "kind": {
210
+ "$ref": "#/$defs/kind"
211
+ },
212
+ "container": {
213
+ "$ref": "#/$defs/localId"
214
+ }
215
+ }
216
+ },
217
+ "edgeChange": {
218
+ "type": "object",
219
+ "additionalProperties": false,
220
+ "minProperties": 1,
221
+ "properties": {
222
+ "kind": {
223
+ "$ref": "#/$defs/kind"
224
+ },
225
+ "label": {
226
+ "$ref": "#/$defs/label"
227
+ }
228
+ }
229
+ },
230
+ "messageChange": {
231
+ "type": "object",
232
+ "additionalProperties": false,
233
+ "minProperties": 1,
234
+ "properties": {
235
+ "label": {
236
+ "$ref": "#/$defs/label"
237
+ }
238
+ }
239
+ }
240
+ },
241
+ "properties": {
242
+ "schema": {
243
+ "const": "urn:structured-exchange:1"
244
+ },
245
+ "kind": {
246
+ "enum": [
247
+ "graph",
248
+ "sequence",
249
+ "table"
250
+ ]
251
+ },
252
+ "target": {
253
+ "$ref": "#/$defs/ref"
254
+ },
255
+ "removals": {
256
+ "type": "array",
257
+ "maxItems": 500,
258
+ "items": {
259
+ "$ref": "#/$defs/removal"
260
+ }
261
+ },
262
+ "data": {
263
+ "oneOf": [
264
+ {
265
+ "type": "object",
266
+ "additionalProperties": false,
267
+ "required": [
268
+ "nodes",
269
+ "edges"
270
+ ],
271
+ "properties": {
272
+ "nodes": {
273
+ "type": "array",
274
+ "minItems": 1,
275
+ "maxItems": 500,
276
+ "items": {
277
+ "$ref": "#/$defs/element"
278
+ }
279
+ },
280
+ "edges": {
281
+ "type": "array",
282
+ "maxItems": 2000,
283
+ "items": {
284
+ "$ref": "#/$defs/edge"
285
+ }
286
+ },
287
+ "containers": {
288
+ "type": "array",
289
+ "maxItems": 50,
290
+ "items": {
291
+ "$ref": "#/$defs/container"
292
+ }
293
+ }
294
+ }
295
+ },
296
+ {
297
+ "type": "object",
298
+ "additionalProperties": false,
299
+ "required": [
300
+ "participants",
301
+ "messages"
302
+ ],
303
+ "properties": {
304
+ "participants": {
305
+ "type": "array",
306
+ "minItems": 1,
307
+ "maxItems": 100,
308
+ "items": {
309
+ "$ref": "#/$defs/element"
310
+ }
311
+ },
312
+ "messages": {
313
+ "type": "array",
314
+ "maxItems": 1000,
315
+ "items": {
316
+ "$ref": "#/$defs/message"
317
+ }
318
+ },
319
+ "containers": {
320
+ "type": "array",
321
+ "maxItems": 50,
322
+ "items": {
323
+ "$ref": "#/$defs/container"
324
+ }
325
+ }
326
+ }
327
+ },
328
+ {
329
+ "type": "object",
330
+ "additionalProperties": false,
331
+ "required": [
332
+ "columns",
333
+ "rows"
334
+ ],
335
+ "properties": {
336
+ "columns": {
337
+ "type": "array",
338
+ "minItems": 1,
339
+ "maxItems": 50,
340
+ "items": {
341
+ "type": "string",
342
+ "minLength": 1,
343
+ "maxLength": 200
344
+ }
345
+ },
346
+ "rows": {
347
+ "type": "array",
348
+ "maxItems": 5000,
349
+ "items": {
350
+ "type": "array",
351
+ "items": {
352
+ "type": [
353
+ "string",
354
+ "number",
355
+ "boolean",
356
+ "null"
357
+ ],
358
+ "maxLength": 1000
359
+ },
360
+ "maxItems": 50
361
+ }
362
+ }
363
+ }
364
+ }
365
+ ]
366
+ }
367
+ }
368
+ }