easyeda-mcp-pro 0.3.2 → 0.5.2

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 (173) hide show
  1. package/README.md +369 -52
  2. package/dist/bom-quality/adapter.d.ts +90 -0
  3. package/dist/bom-quality/adapter.js +295 -0
  4. package/dist/bom-quality/adapter.js.map +1 -0
  5. package/dist/bom-quality/index.d.ts +10 -0
  6. package/dist/bom-quality/index.js +9 -0
  7. package/dist/bom-quality/index.js.map +1 -0
  8. package/dist/bom-quality/quality.d.ts +28 -0
  9. package/dist/bom-quality/quality.js +179 -0
  10. package/dist/bom-quality/quality.js.map +1 -0
  11. package/dist/bom-quality/types.d.ts +94 -0
  12. package/dist/bom-quality/types.js +12 -0
  13. package/dist/bom-quality/types.js.map +1 -0
  14. package/dist/bridge/manager.d.ts +41 -0
  15. package/dist/bridge/manager.js +334 -47
  16. package/dist/bridge/manager.js.map +1 -1
  17. package/dist/bridge/protocol.d.ts +48 -1
  18. package/dist/bridge/protocol.js +43 -1
  19. package/dist/bridge/protocol.js.map +1 -1
  20. package/dist/bridge/types.d.ts +6 -0
  21. package/dist/bridge/types.js +6 -0
  22. package/dist/bridge/types.js.map +1 -1
  23. package/dist/catalog/errors.d.ts +49 -0
  24. package/dist/catalog/errors.js +60 -0
  25. package/dist/catalog/errors.js.map +1 -0
  26. package/dist/catalog/index.d.ts +15 -0
  27. package/dist/catalog/index.js +17 -0
  28. package/dist/catalog/index.js.map +1 -0
  29. package/dist/catalog/schema.d.ts +268 -0
  30. package/dist/catalog/schema.js +245 -0
  31. package/dist/catalog/schema.js.map +1 -0
  32. package/dist/catalog/starter.d.ts +159 -0
  33. package/dist/catalog/starter.js +579 -0
  34. package/dist/catalog/starter.js.map +1 -0
  35. package/dist/catalog/validation.d.ts +48 -0
  36. package/dist/catalog/validation.js +263 -0
  37. package/dist/catalog/validation.js.map +1 -0
  38. package/dist/circuit/circuit-ir.d.ts +460 -0
  39. package/dist/circuit/circuit-ir.js +292 -0
  40. package/dist/circuit/circuit-ir.js.map +1 -0
  41. package/dist/circuit/compiler.d.ts +55 -0
  42. package/dist/circuit/compiler.js +197 -0
  43. package/dist/circuit/compiler.js.map +1 -0
  44. package/dist/circuit/design-intent.d.ts +94 -0
  45. package/dist/circuit/design-intent.js +118 -0
  46. package/dist/circuit/design-intent.js.map +1 -0
  47. package/dist/circuit/errors.d.ts +50 -0
  48. package/dist/circuit/errors.js +61 -0
  49. package/dist/circuit/errors.js.map +1 -0
  50. package/dist/circuit/index.d.ts +17 -0
  51. package/dist/circuit/index.js +18 -0
  52. package/dist/circuit/index.js.map +1 -0
  53. package/dist/circuit/types.d.ts +186 -0
  54. package/dist/circuit/types.js +123 -0
  55. package/dist/circuit/types.js.map +1 -0
  56. package/dist/cli/auto-setup.d.ts +5 -0
  57. package/dist/cli/auto-setup.js +355 -0
  58. package/dist/cli/auto-setup.js.map +1 -0
  59. package/dist/cli/client-definitions.d.ts +34 -0
  60. package/dist/cli/client-definitions.js +194 -0
  61. package/dist/cli/client-definitions.js.map +1 -0
  62. package/dist/cli/local-setup.d.ts +5 -1
  63. package/dist/cli/local-setup.js +40 -6
  64. package/dist/cli/local-setup.js.map +1 -1
  65. package/dist/config/env.d.ts +6 -1
  66. package/dist/config/env.js +93 -5
  67. package/dist/config/env.js.map +1 -1
  68. package/dist/config/profiles.js +4 -4
  69. package/dist/config/version.d.ts +1 -1
  70. package/dist/config/version.js +1 -1
  71. package/dist/export-manifest/errors.d.ts +55 -0
  72. package/dist/export-manifest/errors.js +69 -0
  73. package/dist/export-manifest/errors.js.map +1 -0
  74. package/dist/export-manifest/index.d.ts +10 -0
  75. package/dist/export-manifest/index.js +9 -0
  76. package/dist/export-manifest/index.js.map +1 -0
  77. package/dist/export-manifest/types.d.ts +170 -0
  78. package/dist/export-manifest/types.js +36 -0
  79. package/dist/export-manifest/types.js.map +1 -0
  80. package/dist/export-manifest/validation.d.ts +39 -0
  81. package/dist/export-manifest/validation.js +298 -0
  82. package/dist/export-manifest/validation.js.map +1 -0
  83. package/dist/index.js +20 -0
  84. package/dist/index.js.map +1 -1
  85. package/dist/net-validation/errors.d.ts +89 -0
  86. package/dist/net-validation/errors.js +69 -0
  87. package/dist/net-validation/errors.js.map +1 -0
  88. package/dist/net-validation/fixtures.d.ts +38 -0
  89. package/dist/net-validation/fixtures.js +215 -0
  90. package/dist/net-validation/fixtures.js.map +1 -0
  91. package/dist/net-validation/index.d.ts +10 -0
  92. package/dist/net-validation/index.js +9 -0
  93. package/dist/net-validation/index.js.map +1 -0
  94. package/dist/net-validation/schema.d.ts +118 -0
  95. package/dist/net-validation/schema.js +140 -0
  96. package/dist/net-validation/schema.js.map +1 -0
  97. package/dist/net-validation/validation.d.ts +45 -0
  98. package/dist/net-validation/validation.js +369 -0
  99. package/dist/net-validation/validation.js.map +1 -0
  100. package/dist/pcb-constraints/errors.d.ts +39 -0
  101. package/dist/pcb-constraints/errors.js +133 -0
  102. package/dist/pcb-constraints/errors.js.map +1 -0
  103. package/dist/pcb-constraints/index.d.ts +9 -0
  104. package/dist/pcb-constraints/index.js +9 -0
  105. package/dist/pcb-constraints/index.js.map +1 -0
  106. package/dist/pcb-constraints/types.d.ts +102 -0
  107. package/dist/pcb-constraints/types.js +7 -0
  108. package/dist/pcb-constraints/types.js.map +1 -0
  109. package/dist/pcb-constraints/validation.d.ts +70 -0
  110. package/dist/pcb-constraints/validation.js +309 -0
  111. package/dist/pcb-constraints/validation.js.map +1 -0
  112. package/dist/server/factory.js +2 -0
  113. package/dist/server/factory.js.map +1 -1
  114. package/dist/server/transports/http.d.ts +20 -1
  115. package/dist/server/transports/http.js +156 -34
  116. package/dist/server/transports/http.js.map +1 -1
  117. package/dist/storage/database.d.ts +25 -0
  118. package/dist/storage/database.js +126 -51
  119. package/dist/storage/database.js.map +1 -1
  120. package/dist/tools/{L0_diagnostics.d.ts → L0_diagnostics_api.d.ts} +2 -2
  121. package/dist/tools/L0_diagnostics_api.js +152 -0
  122. package/dist/tools/L0_diagnostics_api.js.map +1 -0
  123. package/dist/tools/L0_diagnostics_core.d.ts +6 -0
  124. package/dist/tools/{L0_diagnostics.js → L0_diagnostics_core.js} +50 -124
  125. package/dist/tools/L0_diagnostics_core.js.map +1 -0
  126. package/dist/tools/L1_board.js +20 -4
  127. package/dist/tools/L1_board.js.map +1 -1
  128. package/dist/tools/{L1_bom.d.ts → L1_bom_core.d.ts} +2 -2
  129. package/dist/tools/{L1_bom.js → L1_bom_core.js} +21 -101
  130. package/dist/tools/L1_bom_core.js.map +1 -0
  131. package/dist/tools/{L1_schematic.d.ts → L1_bom_sourcing.d.ts} +2 -2
  132. package/dist/tools/L1_bom_sourcing.js +265 -0
  133. package/dist/tools/L1_bom_sourcing.js.map +1 -0
  134. package/dist/tools/L1_drc_erc.js +15 -3
  135. package/dist/tools/L1_drc_erc.js.map +1 -1
  136. package/dist/tools/L1_export.js +20 -4
  137. package/dist/tools/L1_export.js.map +1 -1
  138. package/dist/tools/L1_pcb_constraints.d.ts +6 -0
  139. package/dist/tools/L1_pcb_constraints.js +234 -0
  140. package/dist/tools/L1_pcb_constraints.js.map +1 -0
  141. package/dist/tools/L1_pcb_write.js +26 -12
  142. package/dist/tools/L1_pcb_write.js.map +1 -1
  143. package/dist/tools/L1_schematic_read.d.ts +6 -0
  144. package/dist/tools/{L1_schematic.js → L1_schematic_read.js} +125 -190
  145. package/dist/tools/L1_schematic_read.js.map +1 -0
  146. package/dist/tools/L1_schematic_write.d.ts +6 -0
  147. package/dist/tools/L1_schematic_write.js +516 -0
  148. package/dist/tools/L1_schematic_write.js.map +1 -0
  149. package/dist/tools/register.js +15 -7
  150. package/dist/tools/register.js.map +1 -1
  151. package/dist/tools/registry.d.ts +41 -7
  152. package/dist/tools/registry.js +111 -12
  153. package/dist/tools/registry.js.map +1 -1
  154. package/dist/tools/types.d.ts +16 -0
  155. package/dist/utils/logger.d.ts +1 -1
  156. package/dist/utils/logger.js +1 -1
  157. package/dist/utils/logger.js.map +1 -1
  158. package/dist/vendors/base-http-client.d.ts +48 -0
  159. package/dist/vendors/base-http-client.js +75 -0
  160. package/dist/vendors/base-http-client.js.map +1 -0
  161. package/dist/vendors/digikey/client.js +10 -19
  162. package/dist/vendors/digikey/client.js.map +1 -1
  163. package/dist/vendors/jlcpcb/client.js +41 -70
  164. package/dist/vendors/jlcpcb/client.js.map +1 -1
  165. package/dist/vendors/lcsc/client.js +5 -18
  166. package/dist/vendors/lcsc/client.js.map +1 -1
  167. package/dist/vendors/mouser/client.js +4 -12
  168. package/dist/vendors/mouser/client.js.map +1 -1
  169. package/easyeda-bridge-extension.eext +0 -0
  170. package/package.json +41 -26
  171. package/dist/tools/L0_diagnostics.js.map +0 -1
  172. package/dist/tools/L1_bom.js.map +0 -1
  173. package/dist/tools/L1_schematic.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/net-validation/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * PCB constraints — error codes, issues, and factory helpers.
3
+ *
4
+ * Follows the same pattern as `CircuitError` and `NetValidationIssue`:
5
+ * const-object enums + structured issue interfaces + factory functions.
6
+ *
7
+ * @module
8
+ */
9
+ import type { PcbConstraintCode, PcbConstraintIssue } from './types.js';
10
+ export interface PcbConstraintCodeEntry {
11
+ code: PcbConstraintCode;
12
+ message: string;
13
+ severity: 'error' | 'warning';
14
+ remediationHint: string;
15
+ }
16
+ /**
17
+ * Map of friendly names to PCB constraint code entries.
18
+ * Each entry contains the actual code string, default message, severity, and remediation hint.
19
+ */
20
+ export declare const PcbConstraintCodeMap: Record<string, PcbConstraintCodeEntry>;
21
+ /**
22
+ * Create a single PCB constraint issue.
23
+ */
24
+ export declare function pcbConstraintIssue(code: PcbConstraintCode, message: string, opts?: {
25
+ severity?: 'error' | 'warning';
26
+ path?: string;
27
+ constraintType?: string;
28
+ constraintSeverity?: string;
29
+ remediationHint?: string;
30
+ details?: Record<string, unknown>;
31
+ }): PcbConstraintIssue;
32
+ /**
33
+ * Convenience: create an error-severity PCB constraint issue.
34
+ */
35
+ export declare function pcbError(code: PcbConstraintCode, message: string, opts?: Omit<Parameters<typeof pcbConstraintIssue>[2], 'severity'>): PcbConstraintIssue;
36
+ /**
37
+ * Convenience: create a warning-severity PCB constraint issue.
38
+ */
39
+ export declare function pcbWarning(code: PcbConstraintCode, message: string, opts?: Omit<Parameters<typeof pcbConstraintIssue>[2], 'severity'>): PcbConstraintIssue;
@@ -0,0 +1,133 @@
1
+ /**
2
+ * PCB constraints — error codes, issues, and factory helpers.
3
+ *
4
+ * Follows the same pattern as `CircuitError` and `NetValidationIssue`:
5
+ * const-object enums + structured issue interfaces + factory functions.
6
+ *
7
+ * @module
8
+ */
9
+ // ── Error code map ──────────────────────────────────────────────────────────
10
+ /**
11
+ * Map of friendly names to PCB constraint code entries.
12
+ * Each entry contains the actual code string, default message, severity, and remediation hint.
13
+ */
14
+ export const PcbConstraintCodeMap = {
15
+ MISSING_BOARD_OUTLINE: {
16
+ code: 'PCB_MISSING_OUTLINE',
17
+ message: 'Board outline is not defined',
18
+ severity: 'error',
19
+ remediationHint: 'Define a board outline with at least 3 polygon points in the PCB intent or board dimensions',
20
+ },
21
+ OUTLINE_TOO_SMALL: {
22
+ code: 'PCB_OUTLINE_TOO_SMALL',
23
+ message: 'Board outline dimensions are below recommended minimum',
24
+ severity: 'warning',
25
+ remediationHint: 'Verify the board dimensions are correct. Very small boards may be difficult to manufacture.',
26
+ },
27
+ LAYER_COUNT_MISMATCH: {
28
+ code: 'PCB_LAYER_COUNT_MISMATCH',
29
+ message: 'Layer count mismatch between intent and board',
30
+ severity: 'error',
31
+ remediationHint: 'For boards with more than 2 layers, a complete layer stackup is required for fabrication',
32
+ },
33
+ NO_LAYER_STACK: {
34
+ code: 'PCB_MISSING_STACKUP',
35
+ message: 'Detailed layer stackup is not defined',
36
+ severity: 'warning',
37
+ remediationHint: 'Define a layer stackup with thickness, material, and copper weight for each layer to ensure manufacturability',
38
+ },
39
+ NO_MOUNTING_HOLES: {
40
+ code: 'PCB_MISSING_MOUNTING_HOLES',
41
+ message: 'No mounting holes defined on the board',
42
+ severity: 'warning',
43
+ remediationHint: 'Add at least 4 mounting holes (one near each corner) for mechanical stability and assembly',
44
+ },
45
+ NO_NET_CLASSES: {
46
+ code: 'PCB_MISSING_NET_CLASSES',
47
+ message: 'No net classes with routing rules are defined',
48
+ severity: 'warning',
49
+ remediationHint: 'Define net classes for power, signal, and high-speed nets to enforce trace width and clearance rules',
50
+ },
51
+ INVALID_CLEARANCE: {
52
+ code: 'PCB_INVALID_CLEARANCE',
53
+ message: 'Net classes are defined but no clearance rules between them',
54
+ severity: 'warning',
55
+ remediationHint: 'Add clearance rules between each pair of net classes (e.g., power-to-signal, high-voltage-to-signal)',
56
+ },
57
+ NO_CLEARANCE_RULES: {
58
+ code: 'PCB_INVALID_CLEARANCE',
59
+ message: 'No clearance rules defined between net classes',
60
+ severity: 'warning',
61
+ remediationHint: 'Add clearance rules between each pair of net classes',
62
+ },
63
+ KEEPOUT_VIOLATION: {
64
+ code: 'PCB_KEEPOUT_VIOLATION',
65
+ message: 'Placement zones are defined but no keepout/restricted areas',
66
+ severity: 'warning',
67
+ remediationHint: 'Consider adding keepout areas to prevent component or track placement in restricted zones',
68
+ },
69
+ NO_KEEPOUT_AREAS: {
70
+ code: 'PCB_KEEPOUT_VIOLATION',
71
+ message: 'No keepout or restricted areas defined',
72
+ severity: 'warning',
73
+ remediationHint: 'Consider adding keepout areas to prevent component or track placement in restricted zones',
74
+ },
75
+ NO_PLACEMENT_ZONES: {
76
+ code: 'PCB_MISSING_PLACEMENT_ZONES',
77
+ message: 'No placement zones defined for component grouping',
78
+ severity: 'warning',
79
+ remediationHint: 'Define placement zones (power, analog, digital, etc.) to guide component placement and improve signal integrity',
80
+ },
81
+ MANUFACTURING_OPTIONS_WARNING: {
82
+ code: 'PCB_MISSING_MANUFACTURING_CONSTRAINTS',
83
+ message: 'Manufacturing process or production quantity is not specified',
84
+ severity: 'warning',
85
+ remediationHint: 'Specify the manufacturing process and target production quantity to select appropriate fabrication requirements',
86
+ },
87
+ NO_FIDUCIALS: {
88
+ code: 'PCB_FIDUCIAL_REQUIRED',
89
+ message: 'No fiducial marks defined for SMT assembly',
90
+ severity: 'warning',
91
+ remediationHint: 'Add at least 3 fiducial marks (global, near board corners) for pick-and-place machine alignment',
92
+ },
93
+ NO_TEST_PADS: {
94
+ code: 'PCB_CONSTRAINT_INTERNAL',
95
+ message: 'No test pads defined for board testing',
96
+ severity: 'warning',
97
+ remediationHint: 'Consider adding test pads for key nets to enable board-level testing and debugging',
98
+ },
99
+ HIGH_VOLTAGE_CLEARANCE: {
100
+ code: 'PCB_HIGH_VOLTAGE_CLEARANCE',
101
+ message: 'High-voltage domain detected but no clearance rules defined',
102
+ severity: 'error',
103
+ remediationHint: 'Define explicit creepage and clearance distances for high-voltage nets. Minimum 4mm clearance for 250V AC is recommended.',
104
+ },
105
+ };
106
+ // ── Factory helpers ────────────────────────────────────────────────────────
107
+ /**
108
+ * Create a single PCB constraint issue.
109
+ */
110
+ export function pcbConstraintIssue(code, message, opts) {
111
+ return {
112
+ code,
113
+ message,
114
+ severity: opts?.severity ?? 'error',
115
+ path: opts?.path,
116
+ constraintType: opts?.constraintType,
117
+ remediationHint: opts?.remediationHint ?? '',
118
+ details: opts?.details,
119
+ };
120
+ }
121
+ /**
122
+ * Convenience: create an error-severity PCB constraint issue.
123
+ */
124
+ export function pcbError(code, message, opts) {
125
+ return pcbConstraintIssue(code, message, { ...opts, severity: 'error' });
126
+ }
127
+ /**
128
+ * Convenience: create a warning-severity PCB constraint issue.
129
+ */
130
+ export function pcbWarning(code, message, opts) {
131
+ return pcbConstraintIssue(code, message, { ...opts, severity: 'warning' });
132
+ }
133
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/pcb-constraints/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * PCB constraints — public API barrel.
3
+ *
4
+ * @module
5
+ */
6
+ export { PcbConstraintCodeMap } from './errors.js';
7
+ export { pcbConstraintIssue, pcbError, pcbWarning } from './errors.js';
8
+ export type { PcbConstraintCode, PcbConstraintIssue, PcbConstraintResult, PcbConstraintInput, ConstraintReport, } from './types.js';
9
+ export { validatePcbConstraints, buildConstraintReport, fromPcbIntent } from './validation.js';
@@ -0,0 +1,9 @@
1
+ /**
2
+ * PCB constraints — public API barrel.
3
+ *
4
+ * @module
5
+ */
6
+ export { PcbConstraintCodeMap } from './errors.js';
7
+ export { pcbConstraintIssue, pcbError, pcbWarning } from './errors.js';
8
+ export { validatePcbConstraints, buildConstraintReport, fromPcbIntent } from './validation.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pcb-constraints/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASvE,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * PCB constraints — types for constraint validation output.
3
+ *
4
+ * @module
5
+ */
6
+ import type { ConstraintSeverity } from '../circuit/types.js';
7
+ /** Machine-readable code identifying a PCB constraint check. */
8
+ export type PcbConstraintCode = 'PCB_MISSING_OUTLINE' | 'PCB_OUTLINE_TOO_SMALL' | 'PCB_MISSING_STACKUP' | 'PCB_LAYER_COUNT_MISMATCH' | 'PCB_MISSING_MOUNTING_HOLES' | 'PCB_MISSING_NET_CLASSES' | 'PCB_INVALID_CLEARANCE' | 'PCB_KEEPOUT_VIOLATION' | 'PCB_MISSING_PLACEMENT_ZONES' | 'PCB_MISSING_MANUFACTURING_CONSTRAINTS' | 'PCB_FIDUCIAL_REQUIRED' | 'PCB_HIGH_VOLTAGE_CLEARANCE' | 'PCB_CONSTRAINT_INTERNAL';
9
+ /**
10
+ * A single PCB constraint issue (error or warning).
11
+ *
12
+ * Mirrors the pattern from net-validation/errors.ts.
13
+ */
14
+ export interface PcbConstraintIssue {
15
+ /** Machine-readable code. */
16
+ code: PcbConstraintCode;
17
+ /** Human-readable description. */
18
+ message: string;
19
+ /** Dot-notation path to the offending field. */
20
+ path?: string;
21
+ /** Whether this blocks validation or is advisory. */
22
+ severity: 'error' | 'warning';
23
+ /** The constraint type from CircuitIR (electrical, mechanical, pcb-layout, etc.). */
24
+ constraintType?: string;
25
+ /** The severity level from CircuitIR (required, recommended, informational). */
26
+ constraintSeverity?: ConstraintSeverity;
27
+ /** Actionable hint for the user. */
28
+ remediationHint: string;
29
+ /** Additional context. */
30
+ details?: Record<string, unknown>;
31
+ }
32
+ export interface PcbConstraintResult {
33
+ /** True when there are zero errors (warnings are allowed). */
34
+ valid: boolean;
35
+ /** Issues that block validation. */
36
+ errors: PcbConstraintIssue[];
37
+ /** Advisory issues. */
38
+ warnings: PcbConstraintIssue[];
39
+ /** Summary of how many constraints were checked. */
40
+ summary: {
41
+ totalChecks: number;
42
+ passed: number;
43
+ failed: number;
44
+ notApplicable: number;
45
+ };
46
+ }
47
+ /**
48
+ * Input contract for PCB constraint validation.
49
+ *
50
+ * Designed to be created from a CircuitIR or directly from board inspection
51
+ * data (easyeda_board_layers, easyeda_board_dimensions, etc.).
52
+ */
53
+ export interface PcbConstraintInput {
54
+ /** Board dimensions in mm. */
55
+ widthMm?: number;
56
+ heightMm?: number;
57
+ /** Number of copper layers. */
58
+ layerCount?: number;
59
+ /** Whether the board outline is defined. */
60
+ hasOutline?: boolean;
61
+ /** Whether mounting holes are present. */
62
+ mountingHoleCount?: number;
63
+ /** Whether a detailed layer stackup is defined. */
64
+ hasLayerStack?: boolean;
65
+ /** Whether net classes with routing rules are defined. */
66
+ hasNetClasses?: boolean;
67
+ /** Whether clearance rules are defined. */
68
+ hasClearanceRules?: boolean;
69
+ /** Whether keepout areas are defined. */
70
+ hasKeepoutAreas?: boolean;
71
+ /** Whether placement zones are defined. */
72
+ hasPlacementZones?: boolean;
73
+ /** Whether fiducials are defined. */
74
+ hasFiducials?: boolean;
75
+ /** Whether test pads are defined. */
76
+ hasTestPads?: boolean;
77
+ /** Whether the design contains high-voltage domains. */
78
+ hasHighVoltage?: boolean;
79
+ /** Manufacturing process (lead-free, lead-based, mixed). */
80
+ manufacturingProcess?: string;
81
+ /** Whether a quantity is specified. */
82
+ hasQuantity?: boolean;
83
+ }
84
+ /**
85
+ * A human-readable explanation of which constraints were applied and
86
+ * which remain manual/unchecked.
87
+ */
88
+ export interface ConstraintReport {
89
+ /** Constraint areas that were checked. */
90
+ checked: Array<{
91
+ area: string;
92
+ status: 'passed' | 'failed' | 'not-applicable';
93
+ details: string;
94
+ }>;
95
+ /** Constraints that cannot be verified automatically (require human review). */
96
+ manualReviewRequired: Array<{
97
+ area: string;
98
+ reason: string;
99
+ }>;
100
+ /** Overall verdict. */
101
+ verdict: 'approved' | 'needs-review' | 'rejected';
102
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * PCB constraints — types for constraint validation output.
3
+ *
4
+ * @module
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/pcb-constraints/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * PCB constraint validation rules.
3
+ *
4
+ * Implements constraint checks that operate on {@link PcbConstraintInput}
5
+ * and produce structured {@link PcbConstraintIssue}s.
6
+ *
7
+ * Rules:
8
+ * 1. Missing board outline (error)
9
+ * 2. Board outline too small (warning)
10
+ * 3. Missing layer stackup (warning)
11
+ * 4. Layer count mismatch between intent and board (error)
12
+ * 5. Missing mounting holes (warning)
13
+ * 6. Missing net classes (warning)
14
+ * 7. Invalid clearance / creepage (error)
15
+ * 8. Keepout area violations (error)
16
+ * 9. Missing placement zones (warning)
17
+ * 10. Missing manufacturing constraints (warning)
18
+ * 11. Fiducials recommended for SMT (warning)
19
+ * 12. High-voltage creepage/clearance (error)
20
+ *
21
+ * @module
22
+ */
23
+ import type { PcbConstraintInput, PcbConstraintResult } from './types.js';
24
+ /**
25
+ * Run all PCB constraint validation rules against board data.
26
+ *
27
+ * Orchestrates 12 rules:
28
+ * 1. Missing outline — error if board outline is not defined
29
+ * 2. Outline too small — warning if dimensions are below 5mm
30
+ * 3. Missing stackup — warning if no detailed layer stack
31
+ * 4. Layer count mismatch — error if >2 layers without stackup
32
+ * 5. Missing mounting holes — warning if zero mounting holes
33
+ * 6. Missing net classes — warning if no routing rules
34
+ * 7. Invalid clearance — warning if net classes but no clearance rules
35
+ * 8. Keepout violations — warning if zones but no keepouts
36
+ * 9. Missing placement zones — warning if multi-layer without zones
37
+ * 10. Missing mfg constraints — warning if process/quantity unspecified
38
+ * 11. Fiducials recommended — warning if SMT board without fiducials
39
+ * 12. High-voltage clearance — error if HV domain without proper clearance
40
+ */
41
+ export declare function validatePcbConstraints(input: PcbConstraintInput): PcbConstraintResult;
42
+ /**
43
+ * Build a human-readable constraint report explaining which constraints
44
+ * were applied and which require manual review.
45
+ */
46
+ export declare function buildConstraintReport(input: PcbConstraintInput, result: PcbConstraintResult): import('./types.js').ConstraintReport;
47
+ /**
48
+ * Create PcbConstraintInput from a CircuitIR PCB intent object.
49
+ */
50
+ export declare function fromPcbIntent(pcb: {
51
+ boardOutline?: unknown;
52
+ layerCount?: number;
53
+ widthMm?: number;
54
+ heightMm?: number;
55
+ layerStack?: unknown[];
56
+ netClasses?: unknown[];
57
+ clearanceRules?: unknown[];
58
+ keepoutAreas?: unknown[];
59
+ placementZones?: unknown[];
60
+ mountingHoles?: unknown[];
61
+ fiducials?: unknown[];
62
+ testPads?: unknown[];
63
+ manufacturingProcess?: string;
64
+ manufacturing?: {
65
+ process?: string;
66
+ quantity?: number;
67
+ };
68
+ quantity?: number;
69
+ highVoltage?: boolean;
70
+ }): PcbConstraintInput;