pi-outpost 0.8.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 (109) hide show
  1. package/dist/contract/conformance/index.json +31 -0
  2. package/dist/contract/conformance/invalid/container-as-endpoint.json +26 -0
  3. package/dist/contract/conformance/invalid/container-duplicate-id.json +24 -0
  4. package/dist/contract/conformance/invalid/container-unknown-membership.json +20 -0
  5. package/dist/contract/conformance/invalid/containers-over-the-ceiling.json +220 -0
  6. package/dist/contract/conformance/valid/graph-containers-at-the-ceiling.json +216 -0
  7. package/dist/contract/conformance/valid/graph-proposal-moves-a-member.json +28 -0
  8. package/dist/contract/conformance/valid/graph-with-containers.json +55 -0
  9. package/dist/contract/conformance/valid/graph-with-empty-container.json +24 -0
  10. package/dist/contract/conformance/valid/sequence-with-containers.json +45 -0
  11. package/dist/contract/schemas/structured-exchange-1.json +40 -0
  12. package/dist/contract/validate-structured-exchange.mjs +68 -0
  13. package/dist/pi-outpost.mjs +199 -80
  14. package/dist/pi-outpost.sea.mjs +265 -146
  15. package/dist/sea-prep.blob +0 -0
  16. package/dist/skills/structured-exchange/SKILL.md +40 -0
  17. package/dist/skills/structured-exchange/structured-exchange-1.json +40 -0
  18. package/dist/web/assets/{PdfViewer-x2xiBxe4.js → PdfViewer-CEAp6biY.js} +2 -2
  19. package/dist/web/assets/{abnfDiagram-N423BO3Z-kee00MEd.js → abnfDiagram-N423BO3Z-BE4AMXSH.js} +1 -1
  20. package/dist/web/assets/architecture-TIHT7OUA-DgTbwInB.js +1 -0
  21. package/dist/web/assets/{architectureDiagram-T3A2C74G-FQrRA7W5.js → architectureDiagram-T3A2C74G-tjG-eidb.js} +1 -1
  22. package/dist/web/assets/{blockDiagram-VBNYF7ZC-DvskKqA0.js → blockDiagram-VBNYF7ZC-Bwzla1cD.js} +1 -1
  23. package/dist/web/assets/{c4Diagram-5PPSVZJV-BZRDgGhx.js → c4Diagram-5PPSVZJV-BbNH9mqH.js} +1 -1
  24. package/dist/web/assets/channel-CXbqHDJA.js +1 -0
  25. package/dist/web/assets/{chunk-2GRJ4B5K-BKAhH8lI.js → chunk-2GRJ4B5K-BTjPaaWT.js} +1 -1
  26. package/dist/web/assets/{chunk-3NCLNEKW-CDW_UFrj.js → chunk-3NCLNEKW-DfGGO5Az.js} +1 -1
  27. package/dist/web/assets/{chunk-4I5QYGJK-DexlHym3.js → chunk-4I5QYGJK-Bajr_p-3.js} +1 -1
  28. package/dist/web/assets/{chunk-5RXB4S5H-Dy5vrF_c.js → chunk-5RXB4S5H-CbDXtSwX.js} +1 -1
  29. package/dist/web/assets/{chunk-6Q2QTUOP-CgZiYapq.js → chunk-6Q2QTUOP-Cj5IB9-q.js} +1 -1
  30. package/dist/web/assets/{chunk-7Z6QIM7H-CJnQz0bE.js → chunk-7Z6QIM7H-BIsTfYEd.js} +1 -1
  31. package/dist/web/assets/{chunk-GF5L2VYU-CNU1cTmN.js → chunk-GF5L2VYU-CYLPBeKA.js} +1 -1
  32. package/dist/web/assets/{chunk-I66GZJ75-CAg8Cp7h.js → chunk-I66GZJ75-BjZt7BZl.js} +3 -3
  33. package/dist/web/assets/{chunk-J7OUQ5F2-DPUu4PC3.js → chunk-J7OUQ5F2-B3gViRUp.js} +2 -2
  34. package/dist/web/assets/{chunk-JQJVKLGR-BvvzMzOD.js → chunk-JQJVKLGR-Dg177seh.js} +1 -1
  35. package/dist/web/assets/{chunk-KBJHAD2P-CU234oZY.js → chunk-KBJHAD2P-B_2jByMg.js} +1 -1
  36. package/dist/web/assets/{chunk-NSK5VX7P-DC9AvBMO.js → chunk-NSK5VX7P-B5w-3_Ed.js} +1 -1
  37. package/dist/web/assets/{chunk-QR6OTTB3-NGKRGHT-.js → chunk-QR6OTTB3-DCJRxmQT.js} +1 -1
  38. package/dist/web/assets/{chunk-UBXNYLIW-BdEuaF2V.js → chunk-UBXNYLIW-DBuIxFzr.js} +1 -1
  39. package/dist/web/assets/{chunk-W5SLKNZC-DI52N2zG.js → chunk-W5SLKNZC-B-cGIOQF.js} +1 -1
  40. package/dist/web/assets/{chunk-WRU74C26-Z4jYNWlA.js → chunk-WRU74C26-CLOxZV1w.js} +1 -1
  41. package/dist/web/assets/classDiagram-JCYQIIEL-lv93WkUc.js +1 -0
  42. package/dist/web/assets/classDiagram-v2-OCEON4UE-lv93WkUc.js +1 -0
  43. package/dist/web/assets/{cynefin-VYW2F7L2-pqhisvct.js → cynefin-VYW2F7L2-Bk96SN7L.js} +1 -1
  44. package/dist/web/assets/{cynefinDiagram-MW4NZA55-dph1hMaU.js → cynefinDiagram-MW4NZA55-ooeswKGp.js} +1 -1
  45. package/dist/web/assets/{dagre-VZM6K2ZE-dkUSGnsd.js → dagre-VZM6K2ZE-CSwH_rTA.js} +1 -1
  46. package/dist/web/assets/{diagram-7IWD3JNH-Dr227O8k.js → diagram-7IWD3JNH-DVtrh_uV.js} +1 -1
  47. package/dist/web/assets/{diagram-B4RE2ZJO-ntl1e6sh.js → diagram-B4RE2ZJO-CYE5VmiD.js} +1 -1
  48. package/dist/web/assets/{diagram-LBJQPF4R-DOjM-sZd.js → diagram-LBJQPF4R-BYOlHlmg.js} +1 -1
  49. package/dist/web/assets/{diagram-Q27KOJAE-B-MjzCeJ.js → diagram-Q27KOJAE-DJWxpvu9.js} +1 -1
  50. package/dist/web/assets/{diagram-UB23O5K3-DC7MbtQl.js → diagram-UB23O5K3-B1g-vwj0.js} +1 -1
  51. package/dist/web/assets/{ebnfDiagram-BXEA7PRR-y-LOEsHH.js → ebnfDiagram-BXEA7PRR-BX8Jv2Vd.js} +1 -1
  52. package/dist/web/assets/{erDiagram-JOGREHBK-k8AoIy3Q.js → erDiagram-JOGREHBK-9hxklGu2.js} +1 -1
  53. package/dist/web/assets/eventmodeling-45OFAUF4-CSvMsqcO.js +1 -0
  54. package/dist/web/assets/flowDiagram-UKHOOZJN-CPmAOaGQ.js +1 -0
  55. package/dist/web/assets/{ganttDiagram-PKOTCBZU-BzS1g8HQ.js → ganttDiagram-PKOTCBZU-D0kAnvoM.js} +1 -1
  56. package/dist/web/assets/{gitGraph-TEB2WS4Q-Dc63nekB.js → gitGraph-TEB2WS4Q-C9UMPCgj.js} +1 -1
  57. package/dist/web/assets/{gitGraphDiagram-DS77QQ5N-BTWw_ecn.js → gitGraphDiagram-DS77QQ5N-6tPgqwE6.js} +1 -1
  58. package/dist/web/assets/index-CZwzQTfU.css +2 -0
  59. package/dist/web/assets/index-De86t3J_.js +323 -0
  60. package/dist/web/assets/{info-DKCQHKI2-D_28_vN7.js → info-DKCQHKI2-BBV4qqmE.js} +1 -1
  61. package/dist/web/assets/{infoDiagram-6WML65LV-77gNLZvi.js → infoDiagram-6WML65LV-Bmhc86CN.js} +1 -1
  62. package/dist/web/assets/{ishikawaDiagram-WSZJBQD7-7XDMgYt5.js → ishikawaDiagram-WSZJBQD7-5wn4Yv2C.js} +1 -1
  63. package/dist/web/assets/{journeyDiagram-NVQOT4AX-vsyfZeiY.js → journeyDiagram-NVQOT4AX-DJLLpQlS.js} +1 -1
  64. package/dist/web/assets/{kanban-definition-27J2QSJJ-DQ5g-1NC.js → kanban-definition-27J2QSJJ-7h9EMbUW.js} +1 -1
  65. package/dist/web/assets/{line-DtXn_0p6.js → line-Uu7s3CmK.js} +1 -1
  66. package/dist/web/assets/{mermaid-parser.core-Dyx1WWw_.js → mermaid-parser.core-DwpLoctN.js} +3 -3
  67. package/dist/web/assets/{mermaid.core-uKmrA7tr.js → mermaid.core-CRSZr8Y7.js} +3 -3
  68. package/dist/web/assets/{mindmap-definition-FAOFIHXS-BYgTwh7C.js → mindmap-definition-FAOFIHXS-DPic1KLK.js} +1 -1
  69. package/dist/web/assets/{packet-7NZHBO7P-BZKnuEXR.js → packet-7NZHBO7P-CMRjleUu.js} +1 -1
  70. package/dist/web/assets/{pdf-pU3WmOmo.js → pdf-DGJrgWix.js} +1 -1
  71. package/dist/web/assets/{pegDiagram-VL7TDLO6-CBsL2dth.js → pegDiagram-VL7TDLO6-CdECC4cs.js} +1 -1
  72. package/dist/web/assets/{pie-RZYD4A2V-DGE1bbOE.js → pie-RZYD4A2V-C5X4oGn0.js} +1 -1
  73. package/dist/web/assets/{pieDiagram-7S7Q4E2Y-BwURarOq.js → pieDiagram-7S7Q4E2Y-Bvs4Q2O-.js} +1 -1
  74. package/dist/web/assets/{quadrantDiagram-CIZ2JOQS-BqFQ2trs.js → quadrantDiagram-CIZ2JOQS-FsUrYDg7.js} +1 -1
  75. package/dist/web/assets/{radar-I7S5WNFK-Bg6p9yp7.js → radar-I7S5WNFK-tvx7HrZO.js} +1 -1
  76. package/dist/web/assets/{railroad-3IZDKUUU-DNI6o4Em.js → railroad-3IZDKUUU-DBks1QD-.js} +1 -1
  77. package/dist/web/assets/railroad-abnf-AHOZXSZD-BnvB29Nv.js +1 -0
  78. package/dist/web/assets/railroad-ebnf-EBAXGLYW-BUSDQ0vn.js +1 -0
  79. package/dist/web/assets/railroad-peg-LSFZ7HO6-CZV0givf.js +1 -0
  80. package/dist/web/assets/{railroadDiagram-AXF67PYL-oEpcqk-W.js → railroadDiagram-AXF67PYL-CBvFYCmN.js} +1 -1
  81. package/dist/web/assets/{requirementDiagram-LRYGKXZP-BKxgubC8.js → requirementDiagram-LRYGKXZP-C-rumttI.js} +1 -1
  82. package/dist/web/assets/{sankeyDiagram-W5VNT64P-DR5jQRd_.js → sankeyDiagram-W5VNT64P-ClOK2cdj.js} +1 -1
  83. package/dist/web/assets/{sequenceDiagram-SI44F4Z6-C7L40Nsa.js → sequenceDiagram-SI44F4Z6-B0pKllVj.js} +1 -1
  84. package/dist/web/assets/{stateDiagram-OKZ733FA-D3mb8r39.js → stateDiagram-OKZ733FA-BoAWywzk.js} +1 -1
  85. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-CHrsco-w.js +1 -0
  86. package/dist/web/assets/{swimlanes-SLNWSIFB-BEeA1QZ_.js → swimlanes-SLNWSIFB-cdgjeXSf.js} +1 -1
  87. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-DPjAUQdL.js +8 -0
  88. package/dist/web/assets/{timeline-definition-Z64GVDOM-DJzDXvxa.js → timeline-definition-Z64GVDOM-ByMPGIEh.js} +1 -1
  89. package/dist/web/assets/{treeView-QDETBFTQ-C7Ygr33N.js → treeView-QDETBFTQ-zBqwQF47.js} +1 -1
  90. package/dist/web/assets/{treemap-6X3UGDF4-Cvo79BWQ.js → treemap-6X3UGDF4-C2U9S2di.js} +1 -1
  91. package/dist/web/assets/{vennDiagram-T6HMQDX7-K4-0i3bx.js → vennDiagram-T6HMQDX7-CyJfOcB0.js} +1 -1
  92. package/dist/web/assets/{wardley-OPB4EBWU-vPJ7z6yC.js → wardley-OPB4EBWU-CDxzQuvF.js} +1 -1
  93. package/dist/web/assets/{wardleyDiagram-T6FBY63Y-ZMc27dHf.js → wardleyDiagram-T6FBY63Y-IO8_CDTG.js} +1 -1
  94. package/dist/web/assets/{xychartDiagram-ELKLHX3M-CC9smjjw.js → xychartDiagram-ELKLHX3M-UUfxFEDc.js} +1 -1
  95. package/dist/web/index.html +2 -2
  96. package/package.json +1 -1
  97. package/dist/web/assets/architecture-TIHT7OUA-s5QlE0U9.js +0 -1
  98. package/dist/web/assets/channel-Ca0hg8PC.js +0 -1
  99. package/dist/web/assets/classDiagram-JCYQIIEL-D6TSE_k7.js +0 -1
  100. package/dist/web/assets/classDiagram-v2-OCEON4UE-D6TSE_k7.js +0 -1
  101. package/dist/web/assets/eventmodeling-45OFAUF4-CtFKjGJF.js +0 -1
  102. package/dist/web/assets/flowDiagram-UKHOOZJN-j1XVLSIh.js +0 -1
  103. package/dist/web/assets/index-BWflhMWc.js +0 -323
  104. package/dist/web/assets/index-DpjN669x.css +0 -2
  105. package/dist/web/assets/railroad-abnf-AHOZXSZD-BNrH9Ci1.js +0 -1
  106. package/dist/web/assets/railroad-ebnf-EBAXGLYW-Dz3SvEbQ.js +0 -1
  107. package/dist/web/assets/railroad-peg-LSFZ7HO6-DTIkD36f.js +0 -1
  108. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-Dmyli1R9.js +0 -1
  109. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-CGGlb8e_.js +0 -8
@@ -24,6 +24,26 @@
24
24
  "type": "string",
25
25
  "maxLength": 500
26
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
+ },
27
47
  "kind": {
28
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.",
29
49
  "type": "string",
@@ -51,6 +71,9 @@
51
71
  },
52
72
  "set": {
53
73
  "$ref": "#/$defs/elementChange"
74
+ },
75
+ "container": {
76
+ "$ref": "#/$defs/localId"
54
77
  }
55
78
  },
56
79
  "if": {
@@ -185,6 +208,9 @@
185
208
  },
186
209
  "kind": {
187
210
  "$ref": "#/$defs/kind"
211
+ },
212
+ "container": {
213
+ "$ref": "#/$defs/localId"
188
214
  }
189
215
  }
190
216
  },
@@ -257,6 +283,13 @@
257
283
  "items": {
258
284
  "$ref": "#/$defs/edge"
259
285
  }
286
+ },
287
+ "containers": {
288
+ "type": "array",
289
+ "maxItems": 50,
290
+ "items": {
291
+ "$ref": "#/$defs/container"
292
+ }
260
293
  }
261
294
  }
262
295
  },
@@ -282,6 +315,13 @@
282
315
  "items": {
283
316
  "$ref": "#/$defs/message"
284
317
  }
318
+ },
319
+ "containers": {
320
+ "type": "array",
321
+ "maxItems": 50,
322
+ "items": {
323
+ "$ref": "#/$defs/container"
324
+ }
285
325
  }
286
326
  }
287
327
  },
@@ -114,6 +114,11 @@ function relationshipsOf(envelope) {
114
114
  if (envelope.kind === "sequence") return envelope.data.messages;
115
115
  return [];
116
116
  }
117
+ function containersOf(envelope) {
118
+ if (envelope.kind === "graph") return envelope.data.containers ?? [];
119
+ if (envelope.kind === "sequence") return envelope.data.containers ?? [];
120
+ return [];
121
+ }
117
122
  function elementsPointer(envelope) {
118
123
  return envelope.kind === "graph" ? "/data/nodes" : "/data/participants";
119
124
  }
@@ -167,6 +172,29 @@ function validateStructuredExchangeSemantics(envelope) {
167
172
  });
168
173
  }
169
174
  });
175
+ const seenContainers = /* @__PURE__ */ new Map();
176
+ containersOf(envelope).forEach((container, index3) => {
177
+ const first = seenContainers.get(container.id);
178
+ if (first === void 0) seenContainers.set(container.id, index3);
179
+ else {
180
+ issues.push({
181
+ rule: "duplicate-container-identifier",
182
+ path: `/data/containers/${index3}/id`,
183
+ message: `container "${container.id}" is already declared at /data/containers/${first}`
184
+ });
185
+ }
186
+ });
187
+ elements.forEach((element, index3) => {
188
+ for (const [field, named] of [["container", element.container], ["set/container", element.set?.container]]) {
189
+ if (named !== void 0 && !seenContainers.has(named)) {
190
+ issues.push({
191
+ rule: "unresolved-container",
192
+ path: `${elementsAt}/${index3}/${field}`,
193
+ message: `"${named}" is not a container declared in /data/containers`
194
+ });
195
+ }
196
+ }
197
+ });
170
198
  const relationshipsAt = relationshipsPointer(envelope);
171
199
  relationshipsOf(envelope).forEach((relationship, index3) => {
172
200
  for (const side of ["from", "to"]) {
@@ -8202,6 +8230,26 @@ var structured_exchange_1_default = {
8202
8230
  type: "string",
8203
8231
  maxLength: 500
8204
8232
  },
8233
+ container: {
8234
+ 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.",
8235
+ type: "object",
8236
+ additionalProperties: false,
8237
+ required: [
8238
+ "id",
8239
+ "label"
8240
+ ],
8241
+ properties: {
8242
+ id: {
8243
+ $ref: "#/$defs/localId"
8244
+ },
8245
+ label: {
8246
+ $ref: "#/$defs/label"
8247
+ },
8248
+ kind: {
8249
+ $ref: "#/$defs/kind"
8250
+ }
8251
+ }
8252
+ },
8205
8253
  kind: {
8206
8254
  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.",
8207
8255
  type: "string",
@@ -8229,6 +8277,9 @@ var structured_exchange_1_default = {
8229
8277
  },
8230
8278
  set: {
8231
8279
  $ref: "#/$defs/elementChange"
8280
+ },
8281
+ container: {
8282
+ $ref: "#/$defs/localId"
8232
8283
  }
8233
8284
  },
8234
8285
  if: {
@@ -8363,6 +8414,9 @@ var structured_exchange_1_default = {
8363
8414
  },
8364
8415
  kind: {
8365
8416
  $ref: "#/$defs/kind"
8417
+ },
8418
+ container: {
8419
+ $ref: "#/$defs/localId"
8366
8420
  }
8367
8421
  }
8368
8422
  },
@@ -8435,6 +8489,13 @@ var structured_exchange_1_default = {
8435
8489
  items: {
8436
8490
  $ref: "#/$defs/edge"
8437
8491
  }
8492
+ },
8493
+ containers: {
8494
+ type: "array",
8495
+ maxItems: 50,
8496
+ items: {
8497
+ $ref: "#/$defs/container"
8498
+ }
8438
8499
  }
8439
8500
  }
8440
8501
  },
@@ -8460,6 +8521,13 @@ var structured_exchange_1_default = {
8460
8521
  items: {
8461
8522
  $ref: "#/$defs/message"
8462
8523
  }
8524
+ },
8525
+ containers: {
8526
+ type: "array",
8527
+ maxItems: 50,
8528
+ items: {
8529
+ $ref: "#/$defs/container"
8530
+ }
8463
8531
  }
8464
8532
  }
8465
8533
  },