altium-toolkit 1.0.9 → 1.1.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 (79) hide show
  1. package/docs/api.md +6 -2
  2. package/docs/model-format.md +29 -4
  3. package/docs/schemas/altium_toolkit/ci_artifact_bundle_a1.schema.json +80 -0
  4. package/docs/schemas/altium_toolkit/contract_gate_a1.schema.json +34 -0
  5. package/docs/schemas/altium_toolkit/draftsman_board_view_cache_a1.schema.json +115 -0
  6. package/docs/schemas/altium_toolkit/draftsman_digest_a1.schema.json +166 -0
  7. package/docs/schemas/altium_toolkit/host_capabilities_a1.schema.json +39 -0
  8. package/docs/schemas/altium_toolkit/library_merge_plan_a1.schema.json +56 -0
  9. package/docs/schemas/altium_toolkit/library_qa_a1.schema.json +70 -0
  10. package/docs/schemas/altium_toolkit/netlist_a1.schema.json +6 -0
  11. package/docs/schemas/altium_toolkit/normalized_model_a1.schema.json +856 -7
  12. package/docs/schemas/altium_toolkit/parser_compatibility_fuzz_a1.schema.json +25 -0
  13. package/docs/schemas/altium_toolkit/pcb_bom_profile_a1.schema.json +48 -0
  14. package/docs/schemas/altium_toolkit/pcb_layer_stack_a1.schema.json +98 -0
  15. package/docs/schemas/altium_toolkit/pcb_layer_stack_fidelity_a1.schema.json +66 -0
  16. package/docs/schemas/altium_toolkit/pcb_placed_footprint_extraction_a1.schema.json +31 -0
  17. package/docs/schemas/altium_toolkit/pcb_review_metadata_a1.schema.json +62 -0
  18. package/docs/schemas/altium_toolkit/pcb_rigid_flex_topology_a1.schema.json +52 -0
  19. package/docs/schemas/altium_toolkit/pcb_svg_semantics_a1.schema.json +27 -0
  20. package/docs/schemas/altium_toolkit/pcblib_parity_a1.schema.json +24 -0
  21. package/docs/schemas/altium_toolkit/project_bom_pnp_reconciliation_a1.schema.json +63 -0
  22. package/docs/schemas/altium_toolkit/project_bundle_a1.schema.json +6 -0
  23. package/docs/schemas/altium_toolkit/project_document_graph_a1.schema.json +33 -0
  24. package/docs/schemas/altium_toolkit/project_outjob_digest_a1.schema.json +46 -0
  25. package/docs/schemas/altium_toolkit/project_script_a1.schema.json +50 -0
  26. package/docs/schemas/altium_toolkit/schematic_render_ops_a1.schema.json +55 -0
  27. package/docs/schemas/altium_toolkit/schematic_template_extraction_a1.schema.json +37 -0
  28. package/docs/schemas/altium_toolkit/svg_model_cross_link_a1.schema.json +39 -0
  29. package/package.json +1 -1
  30. package/src/core/altium/AltiumParser.mjs +12 -2
  31. package/src/core/altium/CiArtifactBundleBuilder.mjs +213 -0
  32. package/src/core/altium/ContractGateReportBuilder.mjs +351 -0
  33. package/src/core/altium/DraftsmanBoardViewMetadataBuilder.mjs +653 -0
  34. package/src/core/altium/DraftsmanDigestParser.mjs +928 -0
  35. package/src/core/altium/DraftsmanImagePayloadManifestBuilder.mjs +178 -0
  36. package/src/core/altium/HostCapabilityDiagnosticsBuilder.mjs +271 -0
  37. package/src/core/altium/LibraryQaReportBuilder.mjs +504 -0
  38. package/src/core/altium/LibraryRenderManifestBuilder.mjs +172 -2
  39. package/src/core/altium/ParserCompatibilityFuzzer.mjs +192 -0
  40. package/src/core/altium/PcbBomProfileBuilder.mjs +263 -0
  41. package/src/core/altium/PcbComponentKindPolicy.mjs +146 -0
  42. package/src/core/altium/PcbLayerStackFidelityReportBuilder.mjs +141 -0
  43. package/src/core/altium/PcbLayerStackInterchangeParser.mjs +453 -0
  44. package/src/core/altium/PcbLayerStackQueryHelper.mjs +195 -0
  45. package/src/core/altium/PcbLayerStackReadModelBuilder.mjs +906 -0
  46. package/src/core/altium/PcbLayerStackSourceMetadataParser.mjs +488 -0
  47. package/src/core/altium/PcbLibModelParser.mjs +2 -0
  48. package/src/core/altium/PcbLibParityReportBuilder.mjs +242 -0
  49. package/src/core/altium/PcbModelParser.mjs +211 -22
  50. package/src/core/altium/PcbPadStackParser.mjs +171 -2
  51. package/src/core/altium/PcbPickPlacePositionResolver.mjs +11 -1
  52. package/src/core/altium/PcbPlacedFootprintManifestBuilder.mjs +338 -0
  53. package/src/core/altium/PcbPolygonRecordParser.mjs +120 -0
  54. package/src/core/altium/PcbRegionPrimitiveParser.mjs +71 -2
  55. package/src/core/altium/PcbReviewDrillMetadataBuilder.mjs +301 -0
  56. package/src/core/altium/PcbReviewMetadataBuilder.mjs +373 -0
  57. package/src/core/altium/PcbReviewPolygonRealizationBuilder.mjs +269 -0
  58. package/src/core/altium/PcbReviewRouteHighlightProfileBuilder.mjs +298 -0
  59. package/src/core/altium/PcbRigidFlexTopologyBuilder.mjs +171 -0
  60. package/src/core/altium/PcbRouteAnalysisBuilder.mjs +730 -0
  61. package/src/core/altium/PcbStatisticsBuilder.mjs +9 -0
  62. package/src/core/altium/PrintableTextDecoder.mjs +70 -6
  63. package/src/core/altium/PrjPcbModelParser.mjs +69 -2
  64. package/src/core/altium/PrjScrModelParser.mjs +386 -0
  65. package/src/core/altium/ProjectBomPnpReconciliationBuilder.mjs +237 -0
  66. package/src/core/altium/ProjectDesignBundleBuilder.mjs +76 -2
  67. package/src/core/altium/ProjectDocumentGraphBuilder.mjs +280 -0
  68. package/src/core/altium/ProjectNetlistExporter.mjs +5 -1
  69. package/src/core/altium/ProjectOutJobDigestBuilder.mjs +424 -13
  70. package/src/core/altium/SvgModelCrossLinkValidator.mjs +435 -0
  71. package/src/core/circuit-json/CircuitJsonModelAdapter.mjs +300 -96
  72. package/src/core/circuit-json/CircuitJsonModelAdapterPcbElements.mjs +244 -0
  73. package/src/core/circuit-json/CircuitJsonModelSchema.mjs +1 -1
  74. package/src/parser.mjs +21 -0
  75. package/src/ui/PcbFootprintPrimitiveSelector.mjs +13 -1
  76. package/src/ui/PcbScene3dBuilder.mjs +26 -4
  77. package/src/ui/PcbSvgRenderer.mjs +65 -0
  78. package/src/ui/SchematicRenderOpsSidecarBuilder.mjs +554 -0
  79. package/src/ui/SchematicSvgRenderer.mjs +48 -2
@@ -24,8 +24,10 @@
24
24
  "pcb",
25
25
  "pcb-library",
26
26
  "project",
27
+ "project-script",
27
28
  "project-annotation",
28
29
  "integrated-library",
30
+ "draftsman",
29
31
  "design-bundle"
30
32
  ]
31
33
  },
@@ -35,8 +37,10 @@
35
37
  "PcbDoc",
36
38
  "PcbLib",
37
39
  "PrjPcb",
40
+ "PrjScr",
38
41
  "Annotation",
39
42
  "IntLib",
43
+ "PCBDwf",
40
44
  "ProjectDesignBundle"
41
45
  ]
42
46
  },
@@ -157,7 +161,16 @@
157
161
  "components": {
158
162
  "type": "array",
159
163
  "items": {
160
- "$ref": "#/$defs/pcbComponent"
164
+ "allOf": [
165
+ {
166
+ "$ref": "#/$defs/pcbComponent"
167
+ }
168
+ ],
169
+ "properties": {
170
+ "componentKind": {
171
+ "$ref": "#/$defs/componentKindPolicy"
172
+ }
173
+ }
161
174
  }
162
175
  },
163
176
  "rules": {
@@ -166,6 +179,9 @@
166
179
  "$ref": "#/$defs/pcbRule"
167
180
  }
168
181
  },
182
+ "bomProfile": {
183
+ "$ref": "#/$defs/pcbBomProfile"
184
+ },
169
185
  "dimensions": {
170
186
  "type": "array",
171
187
  "items": {
@@ -187,6 +203,15 @@
187
203
  "pickPlace": {
188
204
  "$ref": "#/$defs/pickPlaceModel"
189
205
  },
206
+ "routeAnalysis": {
207
+ "$ref": "#/$defs/pcbRouteAnalysis"
208
+ },
209
+ "reviewMetadata": {
210
+ "$ref": "#/$defs/pcbReviewMetadata"
211
+ },
212
+ "footprintExtractionManifest": {
213
+ "$ref": "#/$defs/pcbPlacedFootprintExtraction"
214
+ },
190
215
  "embeddedFonts": {
191
216
  "$ref": "#/$defs/embeddedFonts"
192
217
  },
@@ -196,6 +221,12 @@
196
221
  "layerSubstacks": {
197
222
  "$ref": "#/$defs/layerSubstacks"
198
223
  },
224
+ "layerStackReadModel": {
225
+ "$ref": "#/$defs/pcbLayerStackReadModel"
226
+ },
227
+ "rigidFlexTopology": {
228
+ "$ref": "#/$defs/pcbRigidFlexTopology"
229
+ },
199
230
  "boardRegionContexts": {
200
231
  "$ref": "#/$defs/boardRegionContexts"
201
232
  },
@@ -281,12 +312,57 @@
281
312
  },
282
313
  "renderManifest": {
283
314
  "$ref": "#/$defs/libraryRenderManifest"
315
+ },
316
+ "parityReport": {
317
+ "$ref": "#/$defs/pcbLibraryParityReport"
284
318
  }
285
319
  },
286
320
  "additionalProperties": true
287
321
  },
288
322
  "project": {
289
- "type": "object"
323
+ "type": "object",
324
+ "properties": {
325
+ "documentGraph": {
326
+ "$ref": "#/$defs/projectDocumentGraph"
327
+ },
328
+ "outJobDigest": {
329
+ "$ref": "#/$defs/projectOutJobDigest"
330
+ }
331
+ },
332
+ "additionalProperties": true
333
+ },
334
+ "projectScript": {
335
+ "type": "object",
336
+ "properties": {
337
+ "name": {
338
+ "type": "string"
339
+ },
340
+ "documents": {
341
+ "type": "array",
342
+ "items": {
343
+ "type": "object",
344
+ "additionalProperties": true
345
+ }
346
+ },
347
+ "scripts": {
348
+ "type": "array",
349
+ "items": {
350
+ "type": "object",
351
+ "additionalProperties": true
352
+ }
353
+ },
354
+ "sections": {
355
+ "type": "array",
356
+ "items": {
357
+ "type": "object",
358
+ "additionalProperties": true
359
+ }
360
+ }
361
+ },
362
+ "additionalProperties": true
363
+ },
364
+ "units": {
365
+ "$ref": "#/$defs/units"
290
366
  },
291
367
  "variants": {
292
368
  "type": "array",
@@ -329,6 +405,14 @@
329
405
  "integratedLibrary": {
330
406
  "$ref": "#/$defs/integratedLibrary"
331
407
  },
408
+ "draftsman": {
409
+ "$ref": "#/$defs/draftsmanDigest",
410
+ "properties": {
411
+ "boardViewMetadata": {
412
+ "$ref": "#/$defs/draftsmanBoardViewCache"
413
+ }
414
+ }
415
+ },
332
416
  "bom": {
333
417
  "type": "array",
334
418
  "items": {
@@ -337,6 +421,9 @@
337
421
  },
338
422
  "pnp": {
339
423
  "$ref": "#/$defs/pickPlaceModel"
424
+ },
425
+ "reconciliation": {
426
+ "$ref": "#/$defs/projectBomPnpReconciliation"
340
427
  }
341
428
  },
342
429
  "oneOf": [
@@ -406,6 +493,17 @@
406
493
  }
407
494
  }
408
495
  },
496
+ {
497
+ "required": ["draftsman"],
498
+ "properties": {
499
+ "kind": {
500
+ "const": "draftsman"
501
+ },
502
+ "fileType": {
503
+ "const": "PCBDwf"
504
+ }
505
+ }
506
+ },
409
507
  {
410
508
  "required": ["project", "sheets", "schematic_hierarchy", "indexes"],
411
509
  "properties": {
@@ -451,6 +549,221 @@
451
549
  },
452
550
  "additionalProperties": true
453
551
  },
552
+ "projectDocumentGraph": {
553
+ "type": "object",
554
+ "required": ["schema", "summary", "documents", "groups", "indexes"],
555
+ "properties": {
556
+ "schema": {
557
+ "const": "altium-toolkit.project.document-graph.a1"
558
+ },
559
+ "summary": {
560
+ "type": "object",
561
+ "additionalProperties": true
562
+ },
563
+ "documents": {
564
+ "type": "array",
565
+ "items": {
566
+ "type": "object",
567
+ "additionalProperties": true
568
+ }
569
+ },
570
+ "groups": {
571
+ "type": "object",
572
+ "additionalProperties": true
573
+ },
574
+ "indexes": {
575
+ "type": "object",
576
+ "additionalProperties": true
577
+ }
578
+ },
579
+ "additionalProperties": true
580
+ },
581
+ "projectOutJobDigest": {
582
+ "type": "object",
583
+ "required": [
584
+ "schema",
585
+ "summary",
586
+ "documents",
587
+ "outputGroups",
588
+ "expectedArtifacts",
589
+ "outputsByDocumentPath"
590
+ ],
591
+ "properties": {
592
+ "schema": {
593
+ "const": "altium-toolkit.project.outjob-digest.a1"
594
+ },
595
+ "summary": {
596
+ "type": "object",
597
+ "additionalProperties": true
598
+ },
599
+ "documents": {
600
+ "type": "array",
601
+ "items": {
602
+ "type": "object",
603
+ "additionalProperties": true
604
+ }
605
+ },
606
+ "outputGroups": {
607
+ "type": "array",
608
+ "items": {
609
+ "type": "object",
610
+ "additionalProperties": true
611
+ }
612
+ },
613
+ "expectedArtifacts": {
614
+ "type": "object",
615
+ "additionalProperties": true
616
+ },
617
+ "outputsByDocumentPath": {
618
+ "type": "object",
619
+ "additionalProperties": true
620
+ }
621
+ },
622
+ "additionalProperties": true
623
+ },
624
+ "draftsmanDigest": {
625
+ "type": "object",
626
+ "required": ["schema", "pages"],
627
+ "properties": {
628
+ "schema": {
629
+ "const": "altium-toolkit.draftsman.digest.a1"
630
+ },
631
+ "sourceDocumentName": {
632
+ "type": "string"
633
+ },
634
+ "pages": {
635
+ "type": "array",
636
+ "items": {
637
+ "type": "object",
638
+ "additionalProperties": true
639
+ }
640
+ },
641
+ "styles": {
642
+ "type": "object",
643
+ "additionalProperties": true
644
+ },
645
+ "boardViewMetadata": {
646
+ "$ref": "#/$defs/draftsmanBoardViewCache"
647
+ },
648
+ "indexes": {
649
+ "type": "object",
650
+ "additionalProperties": true
651
+ }
652
+ },
653
+ "additionalProperties": true
654
+ },
655
+ "draftsmanBoardViewCache": {
656
+ "type": "object",
657
+ "required": [
658
+ "schema",
659
+ "summary",
660
+ "layerColors",
661
+ "pcbParameters",
662
+ "boardAssemblyViews",
663
+ "boardFabricationViews",
664
+ "boardProjections",
665
+ "generatedGeometry",
666
+ "cacheLayers",
667
+ "displayLayers",
668
+ "cachePrimitives",
669
+ "highlightGroups",
670
+ "layerTiles",
671
+ "diagnostics"
672
+ ],
673
+ "properties": {
674
+ "schema": {
675
+ "const": "altium-toolkit.draftsman.board-view-cache.a1"
676
+ },
677
+ "summary": {
678
+ "type": "object",
679
+ "additionalProperties": true
680
+ },
681
+ "layerColors": {
682
+ "type": "array",
683
+ "items": {
684
+ "type": "object",
685
+ "additionalProperties": true
686
+ }
687
+ },
688
+ "pcbParameters": {
689
+ "type": "object",
690
+ "additionalProperties": {
691
+ "type": "string"
692
+ }
693
+ },
694
+ "boardAssemblyViews": {
695
+ "type": "array",
696
+ "items": {
697
+ "type": "object",
698
+ "additionalProperties": true
699
+ }
700
+ },
701
+ "boardFabricationViews": {
702
+ "type": "array",
703
+ "items": {
704
+ "type": "object",
705
+ "additionalProperties": true
706
+ }
707
+ },
708
+ "boardProjections": {
709
+ "type": "array",
710
+ "items": {
711
+ "type": "object",
712
+ "additionalProperties": true
713
+ }
714
+ },
715
+ "generatedGeometry": {
716
+ "type": "array",
717
+ "items": {
718
+ "type": "object",
719
+ "additionalProperties": true
720
+ }
721
+ },
722
+ "cacheLayers": {
723
+ "type": "array",
724
+ "items": {
725
+ "type": "object",
726
+ "additionalProperties": true
727
+ }
728
+ },
729
+ "displayLayers": {
730
+ "type": "array",
731
+ "items": {
732
+ "type": "object",
733
+ "additionalProperties": true
734
+ }
735
+ },
736
+ "cachePrimitives": {
737
+ "type": "array",
738
+ "items": {
739
+ "type": "object",
740
+ "additionalProperties": true
741
+ }
742
+ },
743
+ "highlightGroups": {
744
+ "type": "array",
745
+ "items": {
746
+ "type": "object",
747
+ "additionalProperties": true
748
+ }
749
+ },
750
+ "layerTiles": {
751
+ "type": "array",
752
+ "items": {
753
+ "type": "object",
754
+ "additionalProperties": true
755
+ }
756
+ },
757
+ "diagnostics": {
758
+ "type": "array",
759
+ "items": {
760
+ "type": "object",
761
+ "additionalProperties": true
762
+ }
763
+ }
764
+ },
765
+ "additionalProperties": true
766
+ },
454
767
  "schematicRenderDiagnostics": {
455
768
  "type": "object",
456
769
  "required": ["schema", "fontFallbacks"],
@@ -617,6 +930,39 @@
617
930
  },
618
931
  "extendedPrimitiveInformation": {
619
932
  "$ref": "#/$defs/pcbExtendedPrimitiveInformationEntry"
933
+ },
934
+ "localStack": {
935
+ "$ref": "#/$defs/pcbPadLocalStack"
936
+ }
937
+ },
938
+ "additionalProperties": true
939
+ },
940
+ "pcbPadLocalStack": {
941
+ "type": "object",
942
+ "required": ["schema", "mode", "modeName", "source", "layers"],
943
+ "properties": {
944
+ "schema": {
945
+ "const": "altium-toolkit.pcb.pad-local-stack.a1"
946
+ },
947
+ "mode": {
948
+ "type": "number"
949
+ },
950
+ "modeName": {
951
+ "type": "string"
952
+ },
953
+ "source": {
954
+ "type": "string"
955
+ },
956
+ "layers": {
957
+ "type": "array",
958
+ "items": {
959
+ "type": "object",
960
+ "additionalProperties": true
961
+ }
962
+ },
963
+ "hole": {
964
+ "type": "object",
965
+ "additionalProperties": true
620
966
  }
621
967
  },
622
968
  "additionalProperties": true
@@ -1185,25 +1531,60 @@
1185
1531
  "height": {
1186
1532
  "type": ["number", "null"]
1187
1533
  },
1534
+ "componentKind": {
1535
+ "$ref": "#/$defs/componentKindPolicy"
1536
+ },
1188
1537
  "provenance": {
1189
1538
  "$ref": "#/$defs/pcbComponentProvenance"
1190
1539
  }
1191
1540
  },
1192
1541
  "additionalProperties": true
1193
1542
  },
1194
- "pcbComponentProvenance": {
1543
+ "componentKindPolicy": {
1195
1544
  "type": "object",
1545
+ "required": [
1546
+ "value",
1547
+ "name",
1548
+ "displayName",
1549
+ "includeInBom",
1550
+ "includeInNetlist",
1551
+ "includeInPnp"
1552
+ ],
1196
1553
  "properties": {
1197
- "channelOffset": {
1554
+ "value": {
1198
1555
  "type": "number"
1199
1556
  },
1200
- "sourceDesignator": {
1557
+ "name": {
1201
1558
  "type": "string"
1202
1559
  },
1203
- "sourceUniqueId": {
1560
+ "displayName": {
1204
1561
  "type": "string"
1205
1562
  },
1206
- "sourceUniqueIdSegments": {
1563
+ "includeInBom": {
1564
+ "type": "boolean"
1565
+ },
1566
+ "includeInNetlist": {
1567
+ "type": "boolean"
1568
+ },
1569
+ "includeInPnp": {
1570
+ "type": "boolean"
1571
+ }
1572
+ },
1573
+ "additionalProperties": true
1574
+ },
1575
+ "pcbComponentProvenance": {
1576
+ "type": "object",
1577
+ "properties": {
1578
+ "channelOffset": {
1579
+ "type": "number"
1580
+ },
1581
+ "sourceDesignator": {
1582
+ "type": "string"
1583
+ },
1584
+ "sourceUniqueId": {
1585
+ "type": "string"
1586
+ },
1587
+ "sourceUniqueIdSegments": {
1207
1588
  "type": "array",
1208
1589
  "items": {
1209
1590
  "type": "string"
@@ -1446,6 +1827,9 @@
1446
1827
  "type": "object",
1447
1828
  "required": ["positionMode", "entries", "modes"],
1448
1829
  "properties": {
1830
+ "units": {
1831
+ "$ref": "#/$defs/units"
1832
+ },
1449
1833
  "positionMode": {
1450
1834
  "enum": ["altium-pick-place", "component-origin"]
1451
1835
  },
@@ -1462,6 +1846,9 @@
1462
1846
  "type": "object",
1463
1847
  "required": ["positionMode", "entries"],
1464
1848
  "properties": {
1849
+ "units": {
1850
+ "$ref": "#/$defs/units"
1851
+ },
1465
1852
  "positionMode": {
1466
1853
  "const": "component-origin"
1467
1854
  },
@@ -1524,6 +1911,9 @@
1524
1911
  },
1525
1912
  "positionSource": {
1526
1913
  "type": "string"
1914
+ },
1915
+ "componentKind": {
1916
+ "$ref": "#/$defs/componentKindPolicy"
1527
1917
  }
1528
1918
  },
1529
1919
  "additionalProperties": true
@@ -1657,6 +2047,252 @@
1657
2047
  "additionalProperties": true
1658
2048
  }
1659
2049
  },
2050
+ "pcbBomProfile": {
2051
+ "type": "object",
2052
+ "required": [
2053
+ "schema",
2054
+ "source",
2055
+ "summary",
2056
+ "groups",
2057
+ "components",
2058
+ "exclusions"
2059
+ ],
2060
+ "properties": {
2061
+ "schema": {
2062
+ "const": "altium-toolkit.pcb.bom-profile.a1"
2063
+ },
2064
+ "source": {
2065
+ "type": "string"
2066
+ },
2067
+ "summary": {
2068
+ "type": "object",
2069
+ "additionalProperties": true
2070
+ },
2071
+ "groups": {
2072
+ "type": "array",
2073
+ "items": {
2074
+ "type": "object",
2075
+ "additionalProperties": true
2076
+ }
2077
+ },
2078
+ "components": {
2079
+ "type": "array",
2080
+ "items": {
2081
+ "type": "object",
2082
+ "additionalProperties": true
2083
+ }
2084
+ },
2085
+ "exclusions": {
2086
+ "type": "array",
2087
+ "items": {
2088
+ "type": "object",
2089
+ "additionalProperties": true
2090
+ }
2091
+ }
2092
+ },
2093
+ "additionalProperties": true
2094
+ },
2095
+ "pcbLayerStackReadModel": {
2096
+ "type": "object",
2097
+ "required": [
2098
+ "schema",
2099
+ "summary",
2100
+ "source",
2101
+ "layers",
2102
+ "substacks",
2103
+ "branches",
2104
+ "impedanceProfiles",
2105
+ "transmissionLines",
2106
+ "viaSpans",
2107
+ "backdrillSpans",
2108
+ "diagnostics"
2109
+ ],
2110
+ "properties": {
2111
+ "schema": {
2112
+ "const": "altium-toolkit.pcb.layer-stack.a1"
2113
+ },
2114
+ "summary": {
2115
+ "type": "object",
2116
+ "additionalProperties": true
2117
+ },
2118
+ "source": {
2119
+ "type": "object",
2120
+ "additionalProperties": true
2121
+ },
2122
+ "layers": {
2123
+ "type": "array",
2124
+ "items": {
2125
+ "type": "object",
2126
+ "additionalProperties": true
2127
+ }
2128
+ },
2129
+ "substacks": {
2130
+ "type": "array",
2131
+ "items": {
2132
+ "type": "object",
2133
+ "additionalProperties": true
2134
+ }
2135
+ },
2136
+ "branches": {
2137
+ "type": "array",
2138
+ "items": {
2139
+ "type": "object",
2140
+ "additionalProperties": true
2141
+ }
2142
+ },
2143
+ "impedanceProfiles": {
2144
+ "type": "array",
2145
+ "items": {
2146
+ "type": "object",
2147
+ "additionalProperties": true
2148
+ }
2149
+ },
2150
+ "transmissionLines": {
2151
+ "type": "array",
2152
+ "items": {
2153
+ "type": "object",
2154
+ "additionalProperties": true
2155
+ }
2156
+ },
2157
+ "viaSpans": {
2158
+ "type": "array",
2159
+ "items": {
2160
+ "type": "object",
2161
+ "additionalProperties": true
2162
+ }
2163
+ },
2164
+ "backdrillSpans": {
2165
+ "type": "array",
2166
+ "items": {
2167
+ "type": "object",
2168
+ "additionalProperties": true
2169
+ }
2170
+ },
2171
+ "fidelityReport": {
2172
+ "$ref": "#/$defs/pcbLayerStackFidelityReport"
2173
+ },
2174
+ "diagnostics": {
2175
+ "type": "array",
2176
+ "items": {
2177
+ "type": "object",
2178
+ "additionalProperties": true
2179
+ }
2180
+ }
2181
+ },
2182
+ "additionalProperties": true
2183
+ },
2184
+ "pcbLayerStackFidelityReport": {
2185
+ "type": "object",
2186
+ "required": [
2187
+ "schema",
2188
+ "sourceDocument",
2189
+ "summary",
2190
+ "capabilities",
2191
+ "semanticSections",
2192
+ "nativeCacheSections",
2193
+ "interchangeOnlySections",
2194
+ "unsupportedRegeneration",
2195
+ "diagnostics"
2196
+ ],
2197
+ "properties": {
2198
+ "schema": {
2199
+ "const": "altium-toolkit.pcb.layer-stack-fidelity.a1"
2200
+ },
2201
+ "sourceDocument": {
2202
+ "type": "string"
2203
+ },
2204
+ "summary": {
2205
+ "type": "object",
2206
+ "additionalProperties": true
2207
+ },
2208
+ "capabilities": {
2209
+ "type": "object",
2210
+ "additionalProperties": true
2211
+ },
2212
+ "semanticSections": {
2213
+ "type": "array",
2214
+ "items": {
2215
+ "type": "string"
2216
+ }
2217
+ },
2218
+ "nativeCacheSections": {
2219
+ "type": "array",
2220
+ "items": {
2221
+ "type": "string"
2222
+ }
2223
+ },
2224
+ "interchangeOnlySections": {
2225
+ "type": "array",
2226
+ "items": {
2227
+ "type": "string"
2228
+ }
2229
+ },
2230
+ "unsupportedRegeneration": {
2231
+ "type": "array",
2232
+ "items": {
2233
+ "type": "object",
2234
+ "additionalProperties": true
2235
+ }
2236
+ },
2237
+ "diagnostics": {
2238
+ "type": "array",
2239
+ "items": {
2240
+ "type": "object",
2241
+ "additionalProperties": true
2242
+ }
2243
+ }
2244
+ },
2245
+ "additionalProperties": true
2246
+ },
2247
+ "pcbRigidFlexTopology": {
2248
+ "type": "object",
2249
+ "required": [
2250
+ "schema",
2251
+ "summary",
2252
+ "substackRegionJoins",
2253
+ "branchGraph",
2254
+ "bendLines",
2255
+ "diagnostics"
2256
+ ],
2257
+ "properties": {
2258
+ "schema": {
2259
+ "const": "altium-toolkit.pcb.rigid-flex-topology.a1"
2260
+ },
2261
+ "summary": {
2262
+ "type": "object",
2263
+ "additionalProperties": true
2264
+ },
2265
+ "substackRegionJoins": {
2266
+ "type": "array",
2267
+ "items": {
2268
+ "type": "object",
2269
+ "additionalProperties": true
2270
+ }
2271
+ },
2272
+ "branchGraph": {
2273
+ "type": "array",
2274
+ "items": {
2275
+ "type": "object",
2276
+ "additionalProperties": true
2277
+ }
2278
+ },
2279
+ "bendLines": {
2280
+ "type": "array",
2281
+ "items": {
2282
+ "type": "object",
2283
+ "additionalProperties": true
2284
+ }
2285
+ },
2286
+ "diagnostics": {
2287
+ "type": "array",
2288
+ "items": {
2289
+ "type": "object",
2290
+ "additionalProperties": true
2291
+ }
2292
+ }
2293
+ },
2294
+ "additionalProperties": true
2295
+ },
1660
2296
  "embeddedFonts": {
1661
2297
  "type": "array",
1662
2298
  "items": {
@@ -1934,6 +2570,9 @@
1934
2570
  "schema": {
1935
2571
  "const": "altium-toolkit.pcb.statistics.a1"
1936
2572
  },
2573
+ "units": {
2574
+ "$ref": "#/$defs/units"
2575
+ },
1937
2576
  "board": {
1938
2577
  "type": "object",
1939
2578
  "additionalProperties": true
@@ -1957,6 +2596,195 @@
1957
2596
  },
1958
2597
  "additionalProperties": true
1959
2598
  },
2599
+ "pcbRouteAnalysis": {
2600
+ "type": "object",
2601
+ "required": ["schema", "units", "summary", "byNet"],
2602
+ "properties": {
2603
+ "schema": {
2604
+ "const": "altium-toolkit.pcb.route-analysis.a1"
2605
+ },
2606
+ "units": {
2607
+ "$ref": "#/$defs/units"
2608
+ },
2609
+ "summary": {
2610
+ "type": "object",
2611
+ "additionalProperties": true
2612
+ },
2613
+ "byNet": {
2614
+ "type": "array",
2615
+ "items": {
2616
+ "type": "object",
2617
+ "additionalProperties": true
2618
+ }
2619
+ },
2620
+ "classes": {
2621
+ "type": "array"
2622
+ },
2623
+ "differentialPairs": {
2624
+ "type": "array"
2625
+ }
2626
+ },
2627
+ "additionalProperties": true
2628
+ },
2629
+ "pcbReviewMetadata": {
2630
+ "type": "object",
2631
+ "required": [
2632
+ "schema",
2633
+ "summary",
2634
+ "routeGroups",
2635
+ "routeHighlightProfiles",
2636
+ "polygonRealizations",
2637
+ "drillReview",
2638
+ "boardAssemblyViews",
2639
+ "indexes"
2640
+ ],
2641
+ "properties": {
2642
+ "schema": {
2643
+ "const": "altium-toolkit.pcb.review-metadata.a1"
2644
+ },
2645
+ "summary": {
2646
+ "type": "object",
2647
+ "additionalProperties": true
2648
+ },
2649
+ "routeGroups": {
2650
+ "type": "array",
2651
+ "items": {
2652
+ "type": "object",
2653
+ "additionalProperties": true
2654
+ }
2655
+ },
2656
+ "routeHighlightProfiles": {
2657
+ "type": "array",
2658
+ "items": {
2659
+ "type": "object",
2660
+ "additionalProperties": true
2661
+ }
2662
+ },
2663
+ "polygonRealizations": {
2664
+ "type": "array",
2665
+ "items": {
2666
+ "type": "object",
2667
+ "additionalProperties": true
2668
+ }
2669
+ },
2670
+ "drillReview": {
2671
+ "type": "object",
2672
+ "additionalProperties": true
2673
+ },
2674
+ "boardAssemblyViews": {
2675
+ "type": "array",
2676
+ "items": {
2677
+ "type": "object",
2678
+ "additionalProperties": true
2679
+ }
2680
+ },
2681
+ "indexes": {
2682
+ "type": "object",
2683
+ "additionalProperties": true
2684
+ }
2685
+ },
2686
+ "additionalProperties": true
2687
+ },
2688
+ "pcbPlacedFootprintExtraction": {
2689
+ "type": "object",
2690
+ "required": [
2691
+ "schema",
2692
+ "sourceDocument",
2693
+ "summary",
2694
+ "outputs",
2695
+ "indexes"
2696
+ ],
2697
+ "properties": {
2698
+ "schema": {
2699
+ "const": "altium-toolkit.pcb.placed-footprint-extraction.a1"
2700
+ },
2701
+ "sourceDocument": {
2702
+ "type": "string"
2703
+ },
2704
+ "summary": {
2705
+ "type": "object",
2706
+ "additionalProperties": true
2707
+ },
2708
+ "outputs": {
2709
+ "type": "array",
2710
+ "items": {
2711
+ "type": "object",
2712
+ "additionalProperties": true
2713
+ }
2714
+ },
2715
+ "indexes": {
2716
+ "type": "object",
2717
+ "additionalProperties": true
2718
+ }
2719
+ },
2720
+ "additionalProperties": true
2721
+ },
2722
+ "projectBomPnpReconciliation": {
2723
+ "type": "object",
2724
+ "required": [
2725
+ "schema",
2726
+ "summary",
2727
+ "schematicBomDesignators",
2728
+ "pcbBomDesignators",
2729
+ "pnpDesignators",
2730
+ "effectiveBomDesignators",
2731
+ "noBomDesignators",
2732
+ "issues"
2733
+ ],
2734
+ "properties": {
2735
+ "schema": {
2736
+ "const": "altium-toolkit.project.bom-pnp-reconciliation.a1"
2737
+ },
2738
+ "summary": {
2739
+ "type": "object",
2740
+ "additionalProperties": true
2741
+ },
2742
+ "schematicBomDesignators": {
2743
+ "type": "array",
2744
+ "items": {
2745
+ "type": "string"
2746
+ }
2747
+ },
2748
+ "pcbBomDesignators": {
2749
+ "type": "array",
2750
+ "items": {
2751
+ "type": "string"
2752
+ }
2753
+ },
2754
+ "pnpDesignators": {
2755
+ "type": "array",
2756
+ "items": {
2757
+ "type": "string"
2758
+ }
2759
+ },
2760
+ "effectiveBomDesignators": {
2761
+ "type": "array",
2762
+ "items": {
2763
+ "type": "string"
2764
+ }
2765
+ },
2766
+ "noBomDesignators": {
2767
+ "type": "array",
2768
+ "items": {
2769
+ "type": "string"
2770
+ }
2771
+ },
2772
+ "issues": {
2773
+ "type": "array",
2774
+ "items": {
2775
+ "type": "object",
2776
+ "additionalProperties": true
2777
+ }
2778
+ }
2779
+ },
2780
+ "additionalProperties": true
2781
+ },
2782
+ "units": {
2783
+ "type": "object",
2784
+ "additionalProperties": {
2785
+ "type": "string"
2786
+ }
2787
+ },
1960
2788
  "libraryRenderManifest": {
1961
2789
  "type": "object",
1962
2790
  "properties": {
@@ -1983,6 +2811,27 @@
1983
2811
  },
1984
2812
  "additionalProperties": true
1985
2813
  },
2814
+ "pcbLibraryParityReport": {
2815
+ "type": "object",
2816
+ "required": ["schema", "summary", "footprints"],
2817
+ "properties": {
2818
+ "schema": {
2819
+ "const": "altium-toolkit.pcblib.parity.a1"
2820
+ },
2821
+ "summary": {
2822
+ "type": "object",
2823
+ "additionalProperties": true
2824
+ },
2825
+ "footprints": {
2826
+ "type": "array",
2827
+ "items": {
2828
+ "type": "object",
2829
+ "additionalProperties": true
2830
+ }
2831
+ }
2832
+ },
2833
+ "additionalProperties": true
2834
+ },
1986
2835
  "libraryIndexes": {
1987
2836
  "type": "object",
1988
2837
  "properties": {