easyeda-mcp-pro 0.8.0 → 0.10.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.
@@ -64,9 +64,9 @@ export declare const PinMappingSchema: z.ZodObject<{
64
64
  type: z.ZodOptional<z.ZodEnum<{
65
65
  output: "output";
66
66
  input: "input";
67
+ analog: "analog";
67
68
  power: "power";
68
69
  ground: "ground";
69
- analog: "analog";
70
70
  bidirectional: "bidirectional";
71
71
  "open-drain": "open-drain";
72
72
  "pass-through": "pass-through";
@@ -118,9 +118,9 @@ export declare const DeviceEntrySchema: z.ZodObject<{
118
118
  type: z.ZodOptional<z.ZodEnum<{
119
119
  output: "output";
120
120
  input: "input";
121
+ analog: "analog";
121
122
  power: "power";
122
123
  ground: "ground";
123
- analog: "analog";
124
124
  bidirectional: "bidirectional";
125
125
  "open-drain": "open-drain";
126
126
  "pass-through": "pass-through";
@@ -191,9 +191,9 @@ export declare const DeviceCatalogSchema: z.ZodObject<{
191
191
  type: z.ZodOptional<z.ZodEnum<{
192
192
  output: "output";
193
193
  input: "input";
194
+ analog: "analog";
194
195
  power: "power";
195
196
  ground: "ground";
196
- analog: "analog";
197
197
  bidirectional: "bidirectional";
198
198
  "open-drain": "open-drain";
199
199
  "pass-through": "pass-through";
@@ -123,13 +123,13 @@ export declare const SignalClassSchema: z.ZodObject<{
123
123
  name: z.ZodString;
124
124
  kind: z.ZodEnum<{
125
125
  reset: "reset";
126
- power: "power";
127
- ground: "ground";
128
126
  analog: "analog";
129
127
  digital: "digital";
128
+ power: "power";
129
+ ground: "ground";
130
+ clock: "clock";
130
131
  usb: "usb";
131
132
  rf: "rf";
132
- clock: "clock";
133
133
  i2c: "i2c";
134
134
  spi: "spi";
135
135
  uart: "uart";
@@ -184,8 +184,8 @@ export declare const PhysicalConstraintSchema: z.ZodObject<{
184
184
  board: "board";
185
185
  net: "net";
186
186
  interface: "interface";
187
- device: "device";
188
187
  block: "block";
188
+ device: "device";
189
189
  zone: "zone";
190
190
  }>;
191
191
  targetRef: z.ZodOptional<z.ZodString>;
@@ -465,13 +465,13 @@ export declare const CircuitIRSchema: z.ZodObject<{
465
465
  name: z.ZodString;
466
466
  kind: z.ZodEnum<{
467
467
  reset: "reset";
468
- power: "power";
469
- ground: "ground";
470
468
  analog: "analog";
471
469
  digital: "digital";
470
+ power: "power";
471
+ ground: "ground";
472
+ clock: "clock";
472
473
  usb: "usb";
473
474
  rf: "rf";
474
- clock: "clock";
475
475
  i2c: "i2c";
476
476
  spi: "spi";
477
477
  uart: "uart";
@@ -525,8 +525,8 @@ export declare const CircuitIRSchema: z.ZodObject<{
525
525
  board: "board";
526
526
  net: "net";
527
527
  interface: "interface";
528
- device: "device";
529
528
  block: "block";
529
+ device: "device";
530
530
  zone: "zone";
531
531
  }>;
532
532
  targetRef: z.ZodOptional<z.ZodString>;
@@ -3,35 +3,35 @@ export const PROFILE_DEFINITIONS = {
3
3
  name: 'core',
4
4
  label: 'Core',
5
5
  description: 'High-confidence tools: diagnostics, EasyEDA API inventory, schematic, BOM, DRC/ERC, board layers/stackup, Gerber export',
6
- approxToolCount: '38',
6
+ approxToolCount: '40',
7
7
  isDefault: true,
8
8
  },
9
9
  pro: {
10
10
  name: 'pro',
11
11
  label: 'Pro',
12
12
  description: 'Adds pick-and-place, PDF, netlist export for manufacturing workflows',
13
- approxToolCount: '41',
13
+ approxToolCount: '43',
14
14
  isDefault: false,
15
15
  },
16
16
  full: {
17
17
  name: 'full',
18
18
  label: 'Full',
19
19
  description: 'Adds controlled documented EasyEDA API method calls for full runtime control without raw JavaScript execution',
20
- approxToolCount: '48',
20
+ approxToolCount: '50',
21
21
  isDefault: false,
22
22
  },
23
23
  dev: {
24
24
  name: 'dev',
25
25
  label: 'Dev',
26
26
  description: 'Adds diagnostics probes for bridge methods and live component runtime shape inspection',
27
- approxToolCount: '52',
27
+ approxToolCount: '54',
28
28
  isDefault: false,
29
29
  },
30
30
  experimental: {
31
31
  name: 'experimental',
32
32
  label: 'Experimental',
33
33
  description: 'MCP Apps, Tasks, simulation, autorouter, AI action plans',
34
- approxToolCount: '50',
34
+ approxToolCount: '52',
35
35
  isDefault: false,
36
36
  },
37
37
  };
@@ -1 +1 @@
1
- export declare const SERVER_VERSION = "0.8.0";
1
+ export declare const SERVER_VERSION = "0.10.0";
@@ -1,2 +1,2 @@
1
- export const SERVER_VERSION = '0.8.0'; // x-release-please-version
1
+ export const SERVER_VERSION = '0.10.0'; // x-release-please-version
2
2
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/config/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,2BAA2B"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/config/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,2BAA2B"}
@@ -28,6 +28,20 @@ export declare const NetValidationCode: {
28
28
  readonly NetNamingConvention: "NET_NAMING_CONVENTION";
29
29
  /** Net associated with AC/high-voltage lacks protective naming. */
30
30
  readonly NetProtectedDomain: "NET_PROTECTED_DOMAIN";
31
+ /** Multiple actively-driven outputs or power sources are tied together. */
32
+ readonly NetOutputContention: "NET_OUTPUT_CONTENTION";
33
+ /** A signal net has inputs but no driver, pull, or passive source. */
34
+ readonly NetFloatingInput: "NET_FLOATING_INPUT";
35
+ /** A power rail has conflicting power sources/regulators. */
36
+ readonly NetPowerConflict: "NET_POWER_CONFLICT";
37
+ /** A signal net only connects passive pins and cannot be driven. */
38
+ readonly NetPassiveOnly: "NET_PASSIVE_ONLY";
39
+ /** A required power/ground pin is missing or connected to the wrong class of net. */
40
+ readonly NetUnpoweredDevice: "NET_UNPOWERED_DEVICE";
41
+ /** A device marked as requiring decoupling has no local capacitor across rail and ground. */
42
+ readonly NetMissingDecoupling: "NET_MISSING_DECOUPLING";
43
+ /** A pin expected voltage is incompatible with the connected net voltage. */
44
+ readonly NetVoltageMismatch: "NET_VOLTAGE_MISMATCH";
31
45
  /** Validation could not be completed due to an internal error. */
32
46
  readonly NetValidationInternal: "NET_VALIDATION_INTERNAL";
33
47
  };
@@ -33,6 +33,21 @@ export const NetValidationCode = {
33
33
  NetNamingConvention: 'NET_NAMING_CONVENTION',
34
34
  /** Net associated with AC/high-voltage lacks protective naming. */
35
35
  NetProtectedDomain: 'NET_PROTECTED_DOMAIN',
36
+ // ── Semantic ERC ─────────────────────────────────────────────────────
37
+ /** Multiple actively-driven outputs or power sources are tied together. */
38
+ NetOutputContention: 'NET_OUTPUT_CONTENTION',
39
+ /** A signal net has inputs but no driver, pull, or passive source. */
40
+ NetFloatingInput: 'NET_FLOATING_INPUT',
41
+ /** A power rail has conflicting power sources/regulators. */
42
+ NetPowerConflict: 'NET_POWER_CONFLICT',
43
+ /** A signal net only connects passive pins and cannot be driven. */
44
+ NetPassiveOnly: 'NET_PASSIVE_ONLY',
45
+ /** A required power/ground pin is missing or connected to the wrong class of net. */
46
+ NetUnpoweredDevice: 'NET_UNPOWERED_DEVICE',
47
+ /** A device marked as requiring decoupling has no local capacitor across rail and ground. */
48
+ NetMissingDecoupling: 'NET_MISSING_DECOUPLING',
49
+ /** A pin expected voltage is incompatible with the connected net voltage. */
50
+ NetVoltageMismatch: 'NET_VOLTAGE_MISMATCH',
36
51
  // ── General ──────────────────────────────────────────────────────────
37
52
  /** Validation could not be completed due to an internal error. */
38
53
  NetValidationInternal: 'NET_VALIDATION_INTERNAL',
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/net-validation/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,6EAA6E;AAE7E,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,wEAAwE;IAExE,gDAAgD;IAChD,WAAW,EAAE,cAAc;IAC3B,4CAA4C;IAC5C,gBAAgB,EAAE,oBAAoB;IACtC,yDAAyD;IACzD,kBAAkB,EAAE,sBAAsB;IAE1C,wEAAwE;IAExE,qCAAqC;IACrC,eAAe,EAAE,mBAAmB;IACpC,sCAAsC;IACtC,gBAAgB,EAAE,oBAAoB;IACtC,2DAA2D;IAC3D,0BAA0B,EAAE,+BAA+B;IAC3D,mDAAmD;IACnD,yBAAyB,EAAE,8BAA8B;IAEzD,wEAAwE;IAExE,wDAAwD;IACxD,yBAAyB,EAAE,8BAA8B;IAEzD,wEAAwE;IAExE,gEAAgE;IAChE,mBAAmB,EAAE,uBAAuB;IAC5C,mEAAmE;IACnE,kBAAkB,EAAE,sBAAsB;IAE1C,wEAAwE;IAExE,kEAAkE;IAClE,qBAAqB,EAAE,yBAAyB;CACxC,CAAC;AA+CX,6EAA6E;AAE7E;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAuB,EACvB,OAAe,EACf,IAQC;IAED,OAAO;QACL,IAAI;QACJ,OAAO;QACP,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,OAAO;QACnC,IAAI,EAAE,IAAI,EAAE,IAAI;QAChB,OAAO,EAAE,IAAI,EAAE,OAAO;QACtB,YAAY,EAAE,IAAI,EAAE,YAAY;QAChC,GAAG,EAAE,IAAI,EAAE,GAAG;QACd,eAAe,EAAE,IAAI,EAAE,eAAe,IAAI,EAAE;QAC5C,OAAO,EAAE,IAAI,EAAE,OAAO;KACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CACtB,IAAuB,EACvB,OAAe,EACf,IAAiE;IAEjE,OAAO,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,IAAuB,EACvB,OAAe,EACf,IAAiE;IAEjE,OAAO,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7E,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/net-validation/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,6EAA6E;AAE7E,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,wEAAwE;IAExE,gDAAgD;IAChD,WAAW,EAAE,cAAc;IAC3B,4CAA4C;IAC5C,gBAAgB,EAAE,oBAAoB;IACtC,yDAAyD;IACzD,kBAAkB,EAAE,sBAAsB;IAE1C,wEAAwE;IAExE,qCAAqC;IACrC,eAAe,EAAE,mBAAmB;IACpC,sCAAsC;IACtC,gBAAgB,EAAE,oBAAoB;IACtC,2DAA2D;IAC3D,0BAA0B,EAAE,+BAA+B;IAC3D,mDAAmD;IACnD,yBAAyB,EAAE,8BAA8B;IAEzD,wEAAwE;IAExE,wDAAwD;IACxD,yBAAyB,EAAE,8BAA8B;IAEzD,wEAAwE;IAExE,gEAAgE;IAChE,mBAAmB,EAAE,uBAAuB;IAC5C,mEAAmE;IACnE,kBAAkB,EAAE,sBAAsB;IAE1C,wEAAwE;IAExE,2EAA2E;IAC3E,mBAAmB,EAAE,uBAAuB;IAC5C,sEAAsE;IACtE,gBAAgB,EAAE,oBAAoB;IACtC,6DAA6D;IAC7D,gBAAgB,EAAE,oBAAoB;IACtC,oEAAoE;IACpE,cAAc,EAAE,kBAAkB;IAClC,qFAAqF;IACrF,kBAAkB,EAAE,sBAAsB;IAC1C,6FAA6F;IAC7F,oBAAoB,EAAE,wBAAwB;IAC9C,6EAA6E;IAC7E,kBAAkB,EAAE,sBAAsB;IAE1C,wEAAwE;IAExE,kEAAkE;IAClE,qBAAqB,EAAE,yBAAyB;CACxC,CAAC;AA+CX,6EAA6E;AAE7E;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAuB,EACvB,OAAe,EACf,IAQC;IAED,OAAO;QACL,IAAI;QACJ,OAAO;QACP,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,OAAO;QACnC,IAAI,EAAE,IAAI,EAAE,IAAI;QAChB,OAAO,EAAE,IAAI,EAAE,OAAO;QACtB,YAAY,EAAE,IAAI,EAAE,YAAY;QAChC,GAAG,EAAE,IAAI,EAAE,GAAG;QACd,eAAe,EAAE,IAAI,EAAE,eAAe,IAAI,EAAE;QAC5C,OAAO,EAAE,IAAI,EAAE,OAAO;KACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CACtB,IAAuB,EACvB,OAAe,EACf,IAAiE;IAEjE,OAAO,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,IAAuB,EACvB,OAAe,EACf,IAAiE;IAEjE,OAAO,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7E,CAAC"}
@@ -6,5 +6,5 @@
6
6
  export { NetValidationCode, netValidationIssue, netError, netWarning } from './errors.js';
7
7
  export type { NetValidationCode as NetValidationCodeType, NetValidationIssue, NetValidationResult, } from './errors.js';
8
8
  export { NetDomain, NET_DOMAIN_PATTERNS, NET_TYPE_EXPECTED_DOMAIN, RESERVED_NET_NAMES, REQUIRED_POWER_NETS, REQUIRED_GROUND_NETS, } from './schema.js';
9
- export type { NetValidationEntry, DeviceValidationEntry, InterfaceValidationEntry, NetValidationInput, } from './schema.js';
9
+ export type { NetValidationEntry, NetValidationNode, DeviceValidationEntry, InterfaceValidationEntry, NetValidationInput, PinElectricalType, PinValidationMetadata, } from './schema.js';
10
10
  export { validateNets, validateNetsOrThrow } from './validation.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/net-validation/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAO1F,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAQrB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/net-validation/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAO1F,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAWrB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -66,6 +66,35 @@ export declare const NET_TYPE_EXPECTED_DOMAIN: Record<string, NetDomain[]>;
66
66
  * so that validation can operate on net data from any source
67
67
  * (CircuitIR, EasyEDA bridge, hand-authored test data).
68
68
  */
69
+ export type PinElectricalType = 'input' | 'output' | 'bidirectional' | 'passive' | 'power_input' | 'power_output' | 'power_source' | 'open_drain' | 'tri_state' | 'no_connect';
70
+ /** How a pin should be interpreted by semantic ERC. */
71
+ export interface PinValidationMetadata {
72
+ /** Pin number or name as it appears in net nodes. */
73
+ pin: string;
74
+ /** Human-readable pin name, e.g. VDD, GND, EN, OUT. */
75
+ name?: string;
76
+ /** Electrical type used for compatibility checks. */
77
+ electricalType: PinElectricalType;
78
+ /** Whether this pin must be connected for the device to be valid. */
79
+ required?: boolean;
80
+ /** Expected net classification for required power/ground/signal pins. */
81
+ expectedNetType?: 'power' | 'signal' | 'ground';
82
+ /** Expected nominal voltage for voltage-domain checks. */
83
+ expectedVoltage?: number;
84
+ /** Whether this pin intentionally allows no-connect. */
85
+ noConnectAllowed?: boolean;
86
+ }
87
+ /** A connected device pin, optionally carrying semantic pin metadata. */
88
+ export interface NetValidationNode {
89
+ deviceRef: string;
90
+ pin: string;
91
+ /** Optional per-node electrical type; device pin metadata takes precedence when both exist. */
92
+ electricalType?: PinElectricalType;
93
+ /** Optional human-readable pin name. */
94
+ pinName?: string;
95
+ /** Optional expected nominal voltage for this pin. */
96
+ expectedVoltage?: number;
97
+ }
69
98
  export interface NetValidationEntry {
70
99
  /** Unique net identifier. */
71
100
  id: string;
@@ -73,11 +102,10 @@ export interface NetValidationEntry {
73
102
  name: string;
74
103
  /** Net type classification. */
75
104
  type: 'power' | 'signal' | 'ground';
105
+ /** Optional nominal voltage for voltage-domain checks. */
106
+ voltage?: number;
76
107
  /** Connected device pins, may be empty for floating nets. */
77
- nodes: Array<{
78
- deviceRef: string;
79
- pin: string;
80
- }>;
108
+ nodes: NetValidationNode[];
81
109
  }
82
110
  /**
83
111
  * A minimal device representation for validation.
@@ -89,6 +117,10 @@ export interface DeviceValidationEntry {
89
117
  ref: string;
90
118
  /** Functional category for determining required pins. */
91
119
  category?: string;
120
+ /** Semantic pin metadata used by ERC rules. */
121
+ pins?: PinValidationMetadata[];
122
+ /** Require at least one local capacitor between each power input rail and ground. */
123
+ requiresDecoupling?: boolean;
92
124
  }
93
125
  /**
94
126
  * A hierarchical port / interface for cross-sheet validation.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Net validation — wire-name and topology validation rules.
3
3
  *
4
- * Implements 10 validation rules that operate on {@link NetValidationInput}
4
+ * Implements 17 validation rules that operate on {@link NetValidationInput}
5
5
  * and produce structured {@link NetValidationIssue}s.
6
6
  *
7
7
  * Rules:
@@ -34,6 +34,13 @@ import type { NetValidationInput } from './schema.js';
34
34
  * 8. Cross-sheet consistency — error if same-name interfaces have different pinouts
35
35
  * 9. Naming convention — warning if power/ground nets have non-standard names
36
36
  * 10. Protected domain — error if high-voltage net lacks protective naming
37
+ * 11. Output contention — error if multiple active outputs drive one signal
38
+ * 12. Floating input — warning if input net has no driver or pull
39
+ * 13. Power conflict — error if multiple sources drive one rail
40
+ * 14. Passive-only signal — warning if a signal net has only passive nodes
41
+ * 15. Required power pins — error if required pins are missing/miswired
42
+ * 16. Decoupling expectation — warning if required local decoupling is absent
43
+ * 17. Voltage mismatch — error if expected pin voltage conflicts with net voltage
37
44
  */
38
45
  export declare function validateNets(input: NetValidationInput): NetValidationResult;
39
46
  /**