pi-outpost 0.7.0 → 0.8.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 (138) 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 +134 -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/duplicate-identifier.json +17 -0
  7. package/dist/contract/conformance/invalid/duplicate-reference-twice.json +24 -0
  8. package/dist/contract/conformance/invalid/duplicate-reference.json +23 -0
  9. package/dist/contract/conformance/invalid/empty-change.json +15 -0
  10. package/dist/contract/conformance/invalid/kind-data-mismatch.json +13 -0
  11. package/dist/contract/conformance/invalid/label-past-ceiling.json +13 -0
  12. package/dist/contract/conformance/invalid/new-element-without-label.json +12 -0
  13. package/dist/contract/conformance/invalid/new-relationship-without-kind.json +22 -0
  14. package/dist/contract/conformance/invalid/relationship-change-without-target.json +13 -0
  15. package/dist/contract/conformance/invalid/relationship-without-endpoints.json +19 -0
  16. package/dist/contract/conformance/invalid/removal-without-target.json +19 -0
  17. package/dist/contract/conformance/invalid/removal-without-type.json +19 -0
  18. package/dist/contract/conformance/invalid/row-column-mismatch.json +15 -0
  19. package/dist/contract/conformance/invalid/table-with-empty-removals.json +6 -0
  20. package/dist/contract/conformance/invalid/table-with-removal.json +20 -0
  21. package/dist/contract/conformance/invalid/table-with-target.json +15 -0
  22. package/dist/contract/conformance/invalid/too-many-element-kinds.json +340 -0
  23. package/dist/contract/conformance/invalid/too-many-relationship-kinds.json +665 -0
  24. package/dist/contract/conformance/invalid/undeclared-property.json +14 -0
  25. package/dist/contract/conformance/invalid/unknown-version.json +13 -0
  26. package/dist/contract/conformance/invalid/unresolved-endpoint.json +19 -0
  27. package/dist/contract/conformance/valid/graph-at-the-kind-ceiling.json +650 -0
  28. package/dist/contract/conformance/valid/graph-minimal.json +13 -0
  29. package/dist/contract/conformance/valid/graph-proposal-addition-only.json +14 -0
  30. package/dist/contract/conformance/valid/graph-proposal-context-element.json +24 -0
  31. package/dist/contract/conformance/valid/graph-proposal-declared-change.json +18 -0
  32. package/dist/contract/conformance/valid/graph-proposal-field-patch.json +17 -0
  33. package/dist/contract/conformance/valid/graph-proposal-named-context.json +25 -0
  34. package/dist/contract/conformance/valid/graph-proposal-reattachment.json +30 -0
  35. package/dist/contract/conformance/valid/graph-with-typed-relationship.json +24 -0
  36. package/dist/contract/conformance/valid/sequence-minimal.json +13 -0
  37. package/dist/contract/conformance/valid/sequence-ordered.json +28 -0
  38. package/dist/contract/conformance/valid/table-minimal.json +20 -0
  39. package/dist/contract/schemas/structured-exchange-1.json +328 -0
  40. package/dist/contract/validate-structured-exchange.mjs +8602 -0
  41. package/dist/pi-outpost.mjs +12971 -3627
  42. package/dist/pi-outpost.sea.mjs +17254 -7912
  43. package/dist/sea-prep.blob +0 -0
  44. package/dist/skills/README.md +22 -0
  45. package/dist/skills/structured-exchange/SKILL.md +216 -0
  46. package/dist/skills/structured-exchange/structured-exchange-1.json +328 -0
  47. package/dist/web/assets/{PdfViewer-DqktVuQi.js → PdfViewer-x2xiBxe4.js} +2 -2
  48. package/dist/web/assets/{abnfDiagram-N423BO3Z-DTFllthO.js → abnfDiagram-N423BO3Z-kee00MEd.js} +1 -1
  49. package/dist/web/assets/architecture-TIHT7OUA-s5QlE0U9.js +1 -0
  50. package/dist/web/assets/{architectureDiagram-T3A2C74G-z58o8Htx.js → architectureDiagram-T3A2C74G-FQrRA7W5.js} +1 -1
  51. package/dist/web/assets/{blockDiagram-VBNYF7ZC-DunlRCsF.js → blockDiagram-VBNYF7ZC-DvskKqA0.js} +1 -1
  52. package/dist/web/assets/{c4Diagram-5PPSVZJV-BnXZSwmd.js → c4Diagram-5PPSVZJV-BZRDgGhx.js} +1 -1
  53. package/dist/web/assets/channel-Ca0hg8PC.js +1 -0
  54. package/dist/web/assets/{chunk-2GRJ4B5K-DMD6wv-7.js → chunk-2GRJ4B5K-BKAhH8lI.js} +1 -1
  55. package/dist/web/assets/{chunk-3NCLNEKW-DcwPPr-p.js → chunk-3NCLNEKW-CDW_UFrj.js} +1 -1
  56. package/dist/web/assets/{chunk-4I5QYGJK-CpI4oXUq.js → chunk-4I5QYGJK-DexlHym3.js} +1 -1
  57. package/dist/web/assets/{chunk-5RXB4S5H-vLnKsYcD.js → chunk-5RXB4S5H-Dy5vrF_c.js} +1 -1
  58. package/dist/web/assets/{chunk-6Q2QTUOP-C2P_VKtw.js → chunk-6Q2QTUOP-CgZiYapq.js} +1 -1
  59. package/dist/web/assets/{chunk-7Z6QIM7H-9Vj99wwd.js → chunk-7Z6QIM7H-CJnQz0bE.js} +1 -1
  60. package/dist/web/assets/{chunk-GF5L2VYU-Cna6JsDy.js → chunk-GF5L2VYU-CNU1cTmN.js} +1 -1
  61. package/dist/web/assets/{chunk-I66GZJ75-Crrt_0-l.js → chunk-I66GZJ75-CAg8Cp7h.js} +3 -3
  62. package/dist/web/assets/{chunk-J7OUQ5F2-NnE94fab.js → chunk-J7OUQ5F2-DPUu4PC3.js} +2 -2
  63. package/dist/web/assets/{chunk-JQJVKLGR-DV6jrsII.js → chunk-JQJVKLGR-BvvzMzOD.js} +1 -1
  64. package/dist/web/assets/{chunk-KBJHAD2P-96NXxGM6.js → chunk-KBJHAD2P-CU234oZY.js} +1 -1
  65. package/dist/web/assets/{chunk-NSK5VX7P-D8DkQ2AO.js → chunk-NSK5VX7P-DC9AvBMO.js} +1 -1
  66. package/dist/web/assets/{chunk-QR6OTTB3-BCLPnKlE.js → chunk-QR6OTTB3-NGKRGHT-.js} +1 -1
  67. package/dist/web/assets/{chunk-UBXNYLIW-DswC9lJa.js → chunk-UBXNYLIW-BdEuaF2V.js} +1 -1
  68. package/dist/web/assets/{chunk-W5SLKNZC-CPDEB8Hp.js → chunk-W5SLKNZC-DI52N2zG.js} +1 -1
  69. package/dist/web/assets/{chunk-WRU74C26-DCZH8Rwq.js → chunk-WRU74C26-Z4jYNWlA.js} +1 -1
  70. package/dist/web/assets/classDiagram-JCYQIIEL-D6TSE_k7.js +1 -0
  71. package/dist/web/assets/classDiagram-v2-OCEON4UE-D6TSE_k7.js +1 -0
  72. package/dist/web/assets/{cynefin-VYW2F7L2-cIE_7dpt.js → cynefin-VYW2F7L2-pqhisvct.js} +1 -1
  73. package/dist/web/assets/{cynefinDiagram-MW4NZA55-D2MrYar5.js → cynefinDiagram-MW4NZA55-dph1hMaU.js} +1 -1
  74. package/dist/web/assets/{dagre-VZM6K2ZE-BagJQZYc.js → dagre-VZM6K2ZE-dkUSGnsd.js} +1 -1
  75. package/dist/web/assets/{diagram-7IWD3JNH-BwKHjjQ-.js → diagram-7IWD3JNH-Dr227O8k.js} +1 -1
  76. package/dist/web/assets/{diagram-B4RE2ZJO-BJmMpny4.js → diagram-B4RE2ZJO-ntl1e6sh.js} +1 -1
  77. package/dist/web/assets/{diagram-LBJQPF4R-D3PE9vwZ.js → diagram-LBJQPF4R-DOjM-sZd.js} +1 -1
  78. package/dist/web/assets/{diagram-Q27KOJAE-oiQW2yMD.js → diagram-Q27KOJAE-B-MjzCeJ.js} +1 -1
  79. package/dist/web/assets/{diagram-UB23O5K3-lKRQ-OEd.js → diagram-UB23O5K3-DC7MbtQl.js} +1 -1
  80. package/dist/web/assets/{ebnfDiagram-BXEA7PRR-B7T7YLs8.js → ebnfDiagram-BXEA7PRR-y-LOEsHH.js} +1 -1
  81. package/dist/web/assets/{erDiagram-JOGREHBK-BB-xsqVL.js → erDiagram-JOGREHBK-k8AoIy3Q.js} +1 -1
  82. package/dist/web/assets/eventmodeling-45OFAUF4-CtFKjGJF.js +1 -0
  83. package/dist/web/assets/flowDiagram-UKHOOZJN-j1XVLSIh.js +1 -0
  84. package/dist/web/assets/{ganttDiagram-PKOTCBZU-BnmC1zyp.js → ganttDiagram-PKOTCBZU-BzS1g8HQ.js} +1 -1
  85. package/dist/web/assets/{gitGraph-TEB2WS4Q-DFCnvCQm.js → gitGraph-TEB2WS4Q-Dc63nekB.js} +1 -1
  86. package/dist/web/assets/{gitGraphDiagram-DS77QQ5N-CVU7rVHy.js → gitGraphDiagram-DS77QQ5N-BTWw_ecn.js} +1 -1
  87. package/dist/web/assets/index-BWflhMWc.js +323 -0
  88. package/dist/web/assets/index-DpjN669x.css +2 -0
  89. package/dist/web/assets/{info-DKCQHKI2-C8DZu4NS.js → info-DKCQHKI2-D_28_vN7.js} +1 -1
  90. package/dist/web/assets/{infoDiagram-6WML65LV-BSYvkU5b.js → infoDiagram-6WML65LV-77gNLZvi.js} +1 -1
  91. package/dist/web/assets/{ishikawaDiagram-WSZJBQD7-B6uWyt8M.js → ishikawaDiagram-WSZJBQD7-7XDMgYt5.js} +1 -1
  92. package/dist/web/assets/{journeyDiagram-NVQOT4AX-CTrfVU7d.js → journeyDiagram-NVQOT4AX-vsyfZeiY.js} +1 -1
  93. package/dist/web/assets/{kanban-definition-27J2QSJJ-DsBfco54.js → kanban-definition-27J2QSJJ-DQ5g-1NC.js} +1 -1
  94. package/dist/web/assets/{line-C6m1STwY.js → line-DtXn_0p6.js} +1 -1
  95. package/dist/web/assets/{mermaid-parser.core-DbS7gJe7.js → mermaid-parser.core-Dyx1WWw_.js} +3 -3
  96. package/dist/web/assets/{mermaid.core-Blq4BYkb.js → mermaid.core-uKmrA7tr.js} +3 -3
  97. package/dist/web/assets/{mindmap-definition-FAOFIHXS-BWL0h6Uq.js → mindmap-definition-FAOFIHXS-BYgTwh7C.js} +1 -1
  98. package/dist/web/assets/{packet-7NZHBO7P-CryH8SNn.js → packet-7NZHBO7P-BZKnuEXR.js} +1 -1
  99. package/dist/web/assets/{pdf-BxEVw97_.js → pdf-pU3WmOmo.js} +1 -1
  100. package/dist/web/assets/{pegDiagram-VL7TDLO6-CWrJoBL8.js → pegDiagram-VL7TDLO6-CBsL2dth.js} +1 -1
  101. package/dist/web/assets/{pie-RZYD4A2V-DsuD2v_v.js → pie-RZYD4A2V-DGE1bbOE.js} +1 -1
  102. package/dist/web/assets/{pieDiagram-7S7Q4E2Y-D6-xXQ5p.js → pieDiagram-7S7Q4E2Y-BwURarOq.js} +1 -1
  103. package/dist/web/assets/{quadrantDiagram-CIZ2JOQS-CMlYXuHz.js → quadrantDiagram-CIZ2JOQS-BqFQ2trs.js} +1 -1
  104. package/dist/web/assets/{radar-I7S5WNFK-CjUoPns1.js → radar-I7S5WNFK-Bg6p9yp7.js} +1 -1
  105. package/dist/web/assets/{railroad-3IZDKUUU-Dv7YQd2U.js → railroad-3IZDKUUU-DNI6o4Em.js} +1 -1
  106. package/dist/web/assets/railroad-abnf-AHOZXSZD-BNrH9Ci1.js +1 -0
  107. package/dist/web/assets/railroad-ebnf-EBAXGLYW-Dz3SvEbQ.js +1 -0
  108. package/dist/web/assets/railroad-peg-LSFZ7HO6-DTIkD36f.js +1 -0
  109. package/dist/web/assets/{railroadDiagram-AXF67PYL-bzfj9r2a.js → railroadDiagram-AXF67PYL-oEpcqk-W.js} +1 -1
  110. package/dist/web/assets/{requirementDiagram-LRYGKXZP-B7PaiV8r.js → requirementDiagram-LRYGKXZP-BKxgubC8.js} +1 -1
  111. package/dist/web/assets/{sankeyDiagram-W5VNT64P-DEKRi7gf.js → sankeyDiagram-W5VNT64P-DR5jQRd_.js} +1 -1
  112. package/dist/web/assets/{sequenceDiagram-SI44F4Z6-BB2FYR31.js → sequenceDiagram-SI44F4Z6-C7L40Nsa.js} +1 -1
  113. package/dist/web/assets/{stateDiagram-OKZ733FA-BnQwJgUG.js → stateDiagram-OKZ733FA-D3mb8r39.js} +1 -1
  114. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-Dmyli1R9.js +1 -0
  115. package/dist/web/assets/{swimlanes-SLNWSIFB-omoGGO13.js → swimlanes-SLNWSIFB-BEeA1QZ_.js} +1 -1
  116. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-CGGlb8e_.js +8 -0
  117. package/dist/web/assets/{timeline-definition-Z64GVDOM-D0C35XAV.js → timeline-definition-Z64GVDOM-DJzDXvxa.js} +1 -1
  118. package/dist/web/assets/{treeView-QDETBFTQ-D21D9o06.js → treeView-QDETBFTQ-C7Ygr33N.js} +1 -1
  119. package/dist/web/assets/{treemap-6X3UGDF4-DsNn3HqU.js → treemap-6X3UGDF4-Cvo79BWQ.js} +1 -1
  120. package/dist/web/assets/{vennDiagram-T6HMQDX7-Cg1oGxJi.js → vennDiagram-T6HMQDX7-K4-0i3bx.js} +1 -1
  121. package/dist/web/assets/{wardley-OPB4EBWU-Df-Ugyh4.js → wardley-OPB4EBWU-vPJ7z6yC.js} +1 -1
  122. package/dist/web/assets/{wardleyDiagram-T6FBY63Y-DKiQg0PU.js → wardleyDiagram-T6FBY63Y-ZMc27dHf.js} +1 -1
  123. package/dist/web/assets/{xychartDiagram-ELKLHX3M-DecoU60Y.js → xychartDiagram-ELKLHX3M-CC9smjjw.js} +1 -1
  124. package/dist/web/index.html +2 -2
  125. package/package.json +2 -2
  126. package/dist/web/assets/architecture-TIHT7OUA-CfWIx3bb.js +0 -1
  127. package/dist/web/assets/channel-By9fNdgM.js +0 -1
  128. package/dist/web/assets/classDiagram-JCYQIIEL-CbRWDDDS.js +0 -1
  129. package/dist/web/assets/classDiagram-v2-OCEON4UE-CbRWDDDS.js +0 -1
  130. package/dist/web/assets/eventmodeling-45OFAUF4-CIh5g1Zv.js +0 -1
  131. package/dist/web/assets/flowDiagram-UKHOOZJN-DWTzsyQN.js +0 -1
  132. package/dist/web/assets/index-Ct33KYcg.js +0 -321
  133. package/dist/web/assets/index-DFy_CqqQ.css +0 -2
  134. package/dist/web/assets/railroad-abnf-AHOZXSZD-Cr90hvNI.js +0 -1
  135. package/dist/web/assets/railroad-ebnf-EBAXGLYW-BhLKG67T.js +0 -1
  136. package/dist/web/assets/railroad-peg-LSFZ7HO6-Ct2bnVSV.js +0 -1
  137. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-CsdKarH7.js +0 -1
  138. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-KAs6WWZH.js +0 -8
@@ -0,0 +1,17 @@
1
+ {
2
+ "schema": "urn:structured-exchange:1",
3
+ "kind": "graph",
4
+ "target": "artifact-1",
5
+ "data": {
6
+ "nodes": [
7
+ {
8
+ "id": "a",
9
+ "ref": "EL-1",
10
+ "set": {
11
+ "label": "renamed"
12
+ }
13
+ }
14
+ ],
15
+ "edges": []
16
+ }
17
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "schema": "urn:structured-exchange:1",
3
+ "kind": "graph",
4
+ "target": "artifact-1",
5
+ "data": {
6
+ "nodes": [
7
+ {
8
+ "id": "billing",
9
+ "ref": "EL-12",
10
+ "label": "Billing"
11
+ },
12
+ {
13
+ "id": "ledger",
14
+ "label": "Ledger"
15
+ }
16
+ ],
17
+ "edges": [
18
+ {
19
+ "from": "ledger",
20
+ "to": "billing",
21
+ "kind": "calls"
22
+ }
23
+ ]
24
+ }
25
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "schema": "urn:structured-exchange:1",
3
+ "kind": "graph",
4
+ "target": "artifact-1",
5
+ "removals": [
6
+ {
7
+ "type": "relationship",
8
+ "ref": "REL-1"
9
+ }
10
+ ],
11
+ "data": {
12
+ "nodes": [
13
+ {
14
+ "id": "a",
15
+ "ref": "EL-1"
16
+ },
17
+ {
18
+ "id": "c",
19
+ "ref": "EL-3"
20
+ }
21
+ ],
22
+ "edges": [
23
+ {
24
+ "from": "a",
25
+ "to": "c",
26
+ "kind": "composition"
27
+ }
28
+ ]
29
+ }
30
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "schema": "urn:structured-exchange:1",
3
+ "kind": "graph",
4
+ "data": {
5
+ "nodes": [
6
+ {
7
+ "id": "a",
8
+ "label": "A"
9
+ },
10
+ {
11
+ "id": "b",
12
+ "label": "B"
13
+ }
14
+ ],
15
+ "edges": [
16
+ {
17
+ "from": "a",
18
+ "to": "b",
19
+ "kind": "composition",
20
+ "label": "owns"
21
+ }
22
+ ]
23
+ }
24
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "schema": "urn:structured-exchange:1",
3
+ "kind": "sequence",
4
+ "data": {
5
+ "participants": [
6
+ {
7
+ "id": "p",
8
+ "label": "P"
9
+ }
10
+ ],
11
+ "messages": []
12
+ }
13
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "schema": "urn:structured-exchange:1",
3
+ "kind": "sequence",
4
+ "data": {
5
+ "participants": [
6
+ {
7
+ "id": "a",
8
+ "label": "A"
9
+ },
10
+ {
11
+ "id": "b",
12
+ "label": "B"
13
+ }
14
+ ],
15
+ "messages": [
16
+ {
17
+ "from": "a",
18
+ "to": "b",
19
+ "label": "first"
20
+ },
21
+ {
22
+ "from": "b",
23
+ "to": "a",
24
+ "label": "second"
25
+ }
26
+ ]
27
+ }
28
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "schema": "urn:structured-exchange:1",
3
+ "kind": "table",
4
+ "data": {
5
+ "columns": [
6
+ "left",
7
+ "right"
8
+ ],
9
+ "rows": [
10
+ [
11
+ "a",
12
+ "b"
13
+ ],
14
+ [
15
+ "c",
16
+ null
17
+ ]
18
+ ]
19
+ }
20
+ }
@@ -0,0 +1,328 @@
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
+ "kind": {
28
+ "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.",
29
+ "type": "string",
30
+ "minLength": 1,
31
+ "maxLength": 100
32
+ },
33
+ "element": {
34
+ "type": "object",
35
+ "additionalProperties": false,
36
+ "required": [
37
+ "id"
38
+ ],
39
+ "properties": {
40
+ "id": {
41
+ "$ref": "#/$defs/localId"
42
+ },
43
+ "ref": {
44
+ "$ref": "#/$defs/ref"
45
+ },
46
+ "label": {
47
+ "$ref": "#/$defs/label"
48
+ },
49
+ "kind": {
50
+ "$ref": "#/$defs/kind"
51
+ },
52
+ "set": {
53
+ "$ref": "#/$defs/elementChange"
54
+ }
55
+ },
56
+ "if": {
57
+ "not": {
58
+ "required": [
59
+ "ref"
60
+ ]
61
+ }
62
+ },
63
+ "then": {
64
+ "required": [
65
+ "label"
66
+ ]
67
+ }
68
+ },
69
+ "edge": {
70
+ "type": "object",
71
+ "additionalProperties": false,
72
+ "required": [
73
+ "from",
74
+ "to"
75
+ ],
76
+ "properties": {
77
+ "from": {
78
+ "$ref": "#/$defs/localId"
79
+ },
80
+ "to": {
81
+ "$ref": "#/$defs/localId"
82
+ },
83
+ "kind": {
84
+ "$ref": "#/$defs/kind"
85
+ },
86
+ "ref": {
87
+ "$ref": "#/$defs/ref"
88
+ },
89
+ "label": {
90
+ "$ref": "#/$defs/label"
91
+ },
92
+ "set": {
93
+ "$ref": "#/$defs/edgeChange"
94
+ }
95
+ },
96
+ "if": {
97
+ "not": {
98
+ "required": [
99
+ "ref"
100
+ ]
101
+ }
102
+ },
103
+ "then": {
104
+ "required": [
105
+ "kind"
106
+ ]
107
+ }
108
+ },
109
+ "message": {
110
+ "type": "object",
111
+ "additionalProperties": false,
112
+ "required": [
113
+ "from",
114
+ "to"
115
+ ],
116
+ "properties": {
117
+ "from": {
118
+ "$ref": "#/$defs/localId"
119
+ },
120
+ "to": {
121
+ "$ref": "#/$defs/localId"
122
+ },
123
+ "ref": {
124
+ "$ref": "#/$defs/ref"
125
+ },
126
+ "label": {
127
+ "$ref": "#/$defs/label"
128
+ },
129
+ "set": {
130
+ "$ref": "#/$defs/messageChange"
131
+ }
132
+ },
133
+ "if": {
134
+ "not": {
135
+ "required": [
136
+ "ref"
137
+ ]
138
+ }
139
+ },
140
+ "then": {
141
+ "required": [
142
+ "label"
143
+ ]
144
+ }
145
+ },
146
+ "removal": {
147
+ "type": "object",
148
+ "additionalProperties": false,
149
+ "required": [
150
+ "type",
151
+ "ref"
152
+ ],
153
+ "properties": {
154
+ "type": {
155
+ "enum": [
156
+ "element",
157
+ "relationship"
158
+ ]
159
+ },
160
+ "ref": {
161
+ "$ref": "#/$defs/ref"
162
+ },
163
+ "label": {
164
+ "$ref": "#/$defs/label"
165
+ },
166
+ "kind": {
167
+ "$ref": "#/$defs/kind"
168
+ },
169
+ "from": {
170
+ "$ref": "#/$defs/localId"
171
+ },
172
+ "to": {
173
+ "$ref": "#/$defs/localId"
174
+ }
175
+ },
176
+ "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."
177
+ },
178
+ "elementChange": {
179
+ "type": "object",
180
+ "additionalProperties": false,
181
+ "minProperties": 1,
182
+ "properties": {
183
+ "label": {
184
+ "$ref": "#/$defs/label"
185
+ },
186
+ "kind": {
187
+ "$ref": "#/$defs/kind"
188
+ }
189
+ }
190
+ },
191
+ "edgeChange": {
192
+ "type": "object",
193
+ "additionalProperties": false,
194
+ "minProperties": 1,
195
+ "properties": {
196
+ "kind": {
197
+ "$ref": "#/$defs/kind"
198
+ },
199
+ "label": {
200
+ "$ref": "#/$defs/label"
201
+ }
202
+ }
203
+ },
204
+ "messageChange": {
205
+ "type": "object",
206
+ "additionalProperties": false,
207
+ "minProperties": 1,
208
+ "properties": {
209
+ "label": {
210
+ "$ref": "#/$defs/label"
211
+ }
212
+ }
213
+ }
214
+ },
215
+ "properties": {
216
+ "schema": {
217
+ "const": "urn:structured-exchange:1"
218
+ },
219
+ "kind": {
220
+ "enum": [
221
+ "graph",
222
+ "sequence",
223
+ "table"
224
+ ]
225
+ },
226
+ "target": {
227
+ "$ref": "#/$defs/ref"
228
+ },
229
+ "removals": {
230
+ "type": "array",
231
+ "maxItems": 500,
232
+ "items": {
233
+ "$ref": "#/$defs/removal"
234
+ }
235
+ },
236
+ "data": {
237
+ "oneOf": [
238
+ {
239
+ "type": "object",
240
+ "additionalProperties": false,
241
+ "required": [
242
+ "nodes",
243
+ "edges"
244
+ ],
245
+ "properties": {
246
+ "nodes": {
247
+ "type": "array",
248
+ "minItems": 1,
249
+ "maxItems": 500,
250
+ "items": {
251
+ "$ref": "#/$defs/element"
252
+ }
253
+ },
254
+ "edges": {
255
+ "type": "array",
256
+ "maxItems": 2000,
257
+ "items": {
258
+ "$ref": "#/$defs/edge"
259
+ }
260
+ }
261
+ }
262
+ },
263
+ {
264
+ "type": "object",
265
+ "additionalProperties": false,
266
+ "required": [
267
+ "participants",
268
+ "messages"
269
+ ],
270
+ "properties": {
271
+ "participants": {
272
+ "type": "array",
273
+ "minItems": 1,
274
+ "maxItems": 100,
275
+ "items": {
276
+ "$ref": "#/$defs/element"
277
+ }
278
+ },
279
+ "messages": {
280
+ "type": "array",
281
+ "maxItems": 1000,
282
+ "items": {
283
+ "$ref": "#/$defs/message"
284
+ }
285
+ }
286
+ }
287
+ },
288
+ {
289
+ "type": "object",
290
+ "additionalProperties": false,
291
+ "required": [
292
+ "columns",
293
+ "rows"
294
+ ],
295
+ "properties": {
296
+ "columns": {
297
+ "type": "array",
298
+ "minItems": 1,
299
+ "maxItems": 50,
300
+ "items": {
301
+ "type": "string",
302
+ "minLength": 1,
303
+ "maxLength": 200
304
+ }
305
+ },
306
+ "rows": {
307
+ "type": "array",
308
+ "maxItems": 5000,
309
+ "items": {
310
+ "type": "array",
311
+ "items": {
312
+ "type": [
313
+ "string",
314
+ "number",
315
+ "boolean",
316
+ "null"
317
+ ],
318
+ "maxLength": 1000
319
+ },
320
+ "maxItems": 50
321
+ }
322
+ }
323
+ }
324
+ }
325
+ ]
326
+ }
327
+ }
328
+ }