easyeda-mcp-pro 0.17.1 → 0.19.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 (41) hide show
  1. package/README.md +5 -0
  2. package/dist/circuit/compiler.d.ts +7 -4
  3. package/dist/circuit/compiler.js +95 -29
  4. package/dist/circuit/compiler.js.map +1 -1
  5. package/dist/circuit/component-planning.d.ts +63 -0
  6. package/dist/circuit/component-planning.js +140 -0
  7. package/dist/circuit/component-planning.js.map +1 -0
  8. package/dist/circuit/index.d.ts +2 -0
  9. package/dist/circuit/index.js +2 -0
  10. package/dist/circuit/index.js.map +1 -1
  11. package/dist/config/version.d.ts +1 -1
  12. package/dist/config/version.js +1 -1
  13. package/dist/remote/approval-policy.d.ts +33 -0
  14. package/dist/remote/approval-policy.js +41 -0
  15. package/dist/remote/approval-policy.js.map +1 -0
  16. package/dist/remote/gateway.d.ts +74 -0
  17. package/dist/remote/gateway.js +484 -0
  18. package/dist/remote/gateway.js.map +1 -0
  19. package/dist/remote/index.d.ts +6 -0
  20. package/dist/remote/index.js +7 -0
  21. package/dist/remote/index.js.map +1 -0
  22. package/dist/remote/observability.d.ts +27 -0
  23. package/dist/remote/observability.js +37 -0
  24. package/dist/remote/observability.js.map +1 -0
  25. package/dist/remote/protocol.d.ts +322 -0
  26. package/dist/remote/protocol.js +104 -0
  27. package/dist/remote/protocol.js.map +1 -0
  28. package/dist/remote/scope.d.ts +16 -0
  29. package/dist/remote/scope.js +25 -0
  30. package/dist/remote/scope.js.map +1 -0
  31. package/dist/remote/session-router.d.ts +56 -0
  32. package/dist/remote/session-router.js +147 -0
  33. package/dist/remote/session-router.js.map +1 -0
  34. package/dist/server/transports/http.d.ts +7 -1
  35. package/dist/server/transports/http.js +68 -12
  36. package/dist/server/transports/http.js.map +1 -1
  37. package/dist/server/transports/oauth-resource-metadata.d.ts +12 -0
  38. package/dist/server/transports/oauth-resource-metadata.js +52 -0
  39. package/dist/server/transports/oauth-resource-metadata.js.map +1 -0
  40. package/easyeda-bridge-extension.eext +0 -0
  41. package/package.json +1 -1
package/README.md CHANGED
@@ -25,6 +25,9 @@
25
25
  <a href="https://www.bestpractices.dev/projects/13406">
26
26
  <img src="https://www.bestpractices.dev/projects/13406/badge" alt="OpenSSF Best Practices" />
27
27
  </a>
28
+ <a href="https://scorecard.dev/viewer/?uri=github.com/oaslananka/easyeda-mcp-pro">
29
+ <img src="https://api.scorecard.dev/projects/github.com/oaslananka/easyeda-mcp-pro/badge" alt="OpenSSF Scorecard" />
30
+ </a>
28
31
  <a href="https://github.com/oaslananka/easyeda-mcp-pro/security/policy">
29
32
  <img src="https://img.shields.io/badge/security-policy-blue" alt="Security policy" />
30
33
  </a>
@@ -40,6 +43,8 @@
40
43
  <a href="docs/vendor-terms.md">Vendor Terms and Unsupported Workflows</a>
41
44
  ·
42
45
  <a href="docs/OPENSSF_BEST_PRACTICES.md">OpenSSF Best Practices</a>
46
+ ·
47
+ <a href="docs/REMOTE_MCP_MODES.md">Remote MCP Modes</a>
43
48
  </p>
44
49
 
45
50
  </div>
@@ -10,10 +10,13 @@
10
10
  * 1. Validates the input DesignIntent.
11
11
  * 2. Transforms functional block requirements into Blocks.
12
12
  * 3. Creates power Rails from the DesignIntent's rail requirements.
13
- * 4. Creates empty Device slots with traceability refs.
14
- * 5. Generates placeholder Nets for each power rail.
15
- * 6. Copies manufacturing, mechanical, and safety intent into CircuitIR fields.
16
- * 7. Preserves all traceability IDs.
13
+ * 4. Plans one candidate Device per Block: a deterministic refdes, a
14
+ * component role, and a package-family hint (see component-planning.ts).
15
+ * 5. Generates power Nets for each rail plus a synthesized common-ground Net.
16
+ * 6. Wires device/power-domain load relationships when unambiguous, and
17
+ * synthesizes candidate connector Interfaces.
18
+ * 7. Copies manufacturing, mechanical, and safety intent into CircuitIR fields.
19
+ * 8. Preserves all traceability IDs.
17
20
  *
18
21
  * @module
19
22
  */
@@ -10,10 +10,13 @@
10
10
  * 1. Validates the input DesignIntent.
11
11
  * 2. Transforms functional block requirements into Blocks.
12
12
  * 3. Creates power Rails from the DesignIntent's rail requirements.
13
- * 4. Creates empty Device slots with traceability refs.
14
- * 5. Generates placeholder Nets for each power rail.
15
- * 6. Copies manufacturing, mechanical, and safety intent into CircuitIR fields.
16
- * 7. Preserves all traceability IDs.
13
+ * 4. Plans one candidate Device per Block: a deterministic refdes, a
14
+ * component role, and a package-family hint (see component-planning.ts).
15
+ * 5. Generates power Nets for each rail plus a synthesized common-ground Net.
16
+ * 6. Wires device/power-domain load relationships when unambiguous, and
17
+ * synthesizes candidate connector Interfaces.
18
+ * 7. Copies manufacturing, mechanical, and safety intent into CircuitIR fields.
19
+ * 8. Preserves all traceability IDs.
17
20
  *
18
21
  * @module
19
22
  */
@@ -21,6 +24,7 @@ import { DesignIntentSchema } from './design-intent.js';
21
24
  import { CircuitIRSchema, CIRCUIT_IR_SCHEMA_VERSION, } from './circuit-ir.js';
22
25
  import { ValidationStatus, NetType, ConstraintSeverity } from './types.js';
23
26
  import { CircuitError, CircuitErrorCode, fromZodError } from './errors.js';
27
+ import { planComponents, getDeviceRole } from './component-planning.js';
24
28
  // ── Defaults ──────────────────────────────────────────────────────────────
25
29
  const DEFAULT_OPTIONS = {
26
30
  skipValidation: false,
@@ -54,22 +58,6 @@ function compilePowerRails(designIntent, blocks) {
54
58
  };
55
59
  });
56
60
  }
57
- function compileDeviceStubs(blocks) {
58
- // We create one stub Device per block as a placeholder. The user fills
59
- // in actual MPNs during the planning step.
60
- return blocks.map((block) => ({
61
- id: `dev-${block.id}`,
62
- ref: `U?`,
63
- mpn: undefined,
64
- manufacturer: undefined,
65
- package: undefined,
66
- datasheet: '',
67
- lcsc: undefined,
68
- blockRef: block.id,
69
- designIntentRef: block.designIntentRef,
70
- metadata: [],
71
- }));
72
- }
73
61
  function compilePowerDomainId(rail) {
74
62
  return `pd-${rail.id}`;
75
63
  }
@@ -102,6 +90,77 @@ function compilePowerDomains(rails) {
102
90
  metadata: [],
103
91
  }));
104
92
  }
93
+ /**
94
+ * Synthesize a single common-ground net. Every board with at least one power
95
+ * rail needs a ground reference; this net is intentionally board-wide (not
96
+ * tied to a specific rail or power domain) since DesignIntent does not model
97
+ * multiple isolated ground planes.
98
+ */
99
+ function compileGroundNet(rails) {
100
+ if (rails.length === 0)
101
+ return [];
102
+ return [
103
+ {
104
+ id: 'net-gnd',
105
+ name: 'GND',
106
+ type: NetType.Ground,
107
+ nodes: [],
108
+ designIntentRef: [],
109
+ metadata: [{ key: 'source', value: 'synthesized-common-ground' }],
110
+ },
111
+ ];
112
+ }
113
+ /**
114
+ * Synthesize a candidate Interface entry for each block whose planned
115
+ * component role is `connector`. Pinout is intentionally empty — DesignIntent
116
+ * does not specify pin-level connector detail — but the Interface node makes
117
+ * the connector's existence and traceability explicit before schematic entry.
118
+ */
119
+ function compileInterfaceStubs(blocks, devices) {
120
+ const deviceByBlockRef = new Map(devices.map((d) => [d.blockRef, d]));
121
+ return blocks
122
+ .filter((block) => {
123
+ const device = deviceByBlockRef.get(block.id);
124
+ return device ? getDeviceRole(device) === 'connector' : false;
125
+ })
126
+ .map((block) => ({
127
+ id: `iface-${block.id}`,
128
+ name: block.name,
129
+ type: 'connector',
130
+ pinout: [],
131
+ blockRef: block.id,
132
+ designIntentRef: block.designIntentRef,
133
+ }));
134
+ }
135
+ /**
136
+ * Attach each device to the power domain it most plausibly draws from or
137
+ * supplies, and back-fill each power domain's `loadDeviceRefs`.
138
+ *
139
+ * This is intentionally conservative: DesignIntent does not specify which
140
+ * rail a given functional block operates on, so device-level power-domain
141
+ * assignment is only attempted when the design has exactly one rail overall
142
+ * (an unambiguous case). For multi-rail designs the compiler emits a warning
143
+ * instead of guessing a wrong rail assignment.
144
+ */
145
+ function wirePowerDomainLoads(devices, rails, powerDomains) {
146
+ const warnings = [];
147
+ if (rails.length !== 1 || powerDomains.length !== 1) {
148
+ if (rails.length > 1) {
149
+ warnings.push(`Design declares ${rails.length} power rails; automatic device-to-rail power-domain ` +
150
+ `assignment was skipped because DesignIntent does not specify which rail each block ` +
151
+ `operates on. Assign each Device.powerDomainRef manually during CircuitIR review.`);
152
+ }
153
+ return { devices, powerDomains, warnings };
154
+ }
155
+ const domain = powerDomains[0];
156
+ if (!domain) {
157
+ return { devices, powerDomains, warnings };
158
+ }
159
+ const loadDeviceRefs = devices.map((device) => device.id);
160
+ const updatedDevices = devices.map((device) => ({ ...device, powerDomainRef: domain.id }));
161
+ const updatedDomains = powerDomains.map((pd) => pd.id === domain.id ? { ...pd, loadDeviceRefs } : pd);
162
+ return { devices: updatedDevices, powerDomains: updatedDomains, warnings };
163
+ }
105
164
  function compileSignalClasses(designIntent, powerNets) {
106
165
  const classes = [
107
166
  {
@@ -175,7 +234,7 @@ function compilePhysicalConstraints(designIntent) {
175
234
  }
176
235
  return constraints;
177
236
  }
178
- function buildCircuitIR(designIntent, blocks, rails, devices, nets, powerDomains, signalClasses, physicalConstraints, opts) {
237
+ function buildCircuitIR(designIntent, blocks, rails, devices, nets, powerDomains, signalClasses, physicalConstraints, interfaces, opts) {
179
238
  return {
180
239
  $schema: CIRCUIT_IR_SCHEMA_VERSION,
181
240
  metadata: {
@@ -191,7 +250,7 @@ function buildCircuitIR(designIntent, blocks, rails, devices, nets, powerDomains
191
250
  powerDomains,
192
251
  signalClasses,
193
252
  physicalConstraints,
194
- interfaces: [],
253
+ interfaces,
195
254
  constraints: [],
196
255
  bom: { excludeRefs: [], preferredVendors: [] },
197
256
  pcb: {
@@ -247,16 +306,23 @@ export function compile(input, options) {
247
306
  const blocks = compileBlocks(designIntent);
248
307
  // ── 3. Compile Power Rails ──────────────────────────────────────────────
249
308
  const rails = compilePowerRails(designIntent, blocks);
250
- // ── 4. Create Device stubs ──────────────────────────────────────────────
251
- const devices = compileDeviceStubs(blocks);
252
- // ── 5. Create power nets ───────────────────────────────────────────────
253
- const nets = compilePowerNets(rails);
309
+ // ── 4. Plan candidate component roles, refdes, and package hints ───────
310
+ const componentPlan = planComponents(blocks);
311
+ warnings.push(...componentPlan.warnings);
312
+ // ── 5. Create power + ground nets ───────────────────────────────────────
313
+ const powerNets = compilePowerNets(rails);
314
+ const groundNet = compileGroundNet(rails);
315
+ const nets = [...powerNets, ...groundNet];
254
316
  // ── 6. Compile professional planning context ───────────────────────────
255
- const powerDomains = compilePowerDomains(rails);
256
- const signalClasses = compileSignalClasses(designIntent, nets);
317
+ const powerDomainWiring = wirePowerDomainLoads(componentPlan.devices, rails, compilePowerDomains(rails));
318
+ warnings.push(...powerDomainWiring.warnings);
319
+ const devices = powerDomainWiring.devices;
320
+ const powerDomains = powerDomainWiring.powerDomains;
321
+ const signalClasses = compileSignalClasses(designIntent, powerNets);
257
322
  const physicalConstraints = compilePhysicalConstraints(designIntent);
323
+ const interfaces = compileInterfaceStubs(blocks, devices);
258
324
  // ── 7. Build CircuitIR ──────────────────────────────────────────────────
259
- const circuitIR = buildCircuitIR(designIntent, blocks, rails, devices, nets, powerDomains, signalClasses, physicalConstraints, opts);
325
+ const circuitIR = buildCircuitIR(designIntent, blocks, rails, devices, nets, powerDomains, signalClasses, physicalConstraints, interfaces, opts);
260
326
  // ── 8. Validate output CircuitIR ────────────────────────────────────────
261
327
  const parsed = CircuitIRSchema.safeParse(circuitIR);
262
328
  if (!parsed.success) {
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/circuit/compiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/circuit/compiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Component role and refdes planning for CircuitIR device synthesis.
3
+ *
4
+ * Replaces generic `U?` device stubs with a deterministic, traceable
5
+ * component-role plan: a refdes family, a package/footprint hint, and a
6
+ * planning-state marker that differentiates a confidently-classified
7
+ * candidate device from a low-confidence placeholder.
8
+ *
9
+ * This module intentionally does not select real MPNs, manufacturers, or
10
+ * footprints — it narrows the search space (role + refdes + package family)
11
+ * so a human, BOM-sourcing tool, or downstream planning step can make the
12
+ * final manufacturable selection. See docs/circuit-ir.md for the full
13
+ * synthesis pipeline this module is part of.
14
+ *
15
+ * @module
16
+ */
17
+ import type { Block, Device } from './circuit-ir.js';
18
+ export type ComponentRole = 'power-regulator' | 'mcu-module' | 'sensor' | 'communication-ic' | 'analog-ic' | 'connector' | 'protection-diode' | 'fuse' | 'passive-support' | 'generic-ic';
19
+ /** Confidence that the role was inferred correctly from the DesignIntent block. */
20
+ export type RoleConfidence = 'high' | 'low';
21
+ export interface ComponentRolePlan {
22
+ role: ComponentRole;
23
+ confidence: RoleConfidence;
24
+ }
25
+ /** Deterministic refdes family per component role, matching common schematic convention. */
26
+ export declare const ROLE_REFDES_PREFIX: Record<ComponentRole, string>;
27
+ /** Conservative package/footprint family hint per role — not a final footprint selection. */
28
+ export declare const ROLE_PACKAGE_HINT: Record<ComponentRole, string>;
29
+ /** Metadata keys the compiler attaches to each planned Device. */
30
+ export declare const COMPONENT_PLAN_METADATA_KEYS: {
31
+ readonly role: "role";
32
+ readonly packageHint: "packageHint";
33
+ readonly planningState: "planningState";
34
+ };
35
+ /**
36
+ * Determine a component role for a Block from its `type` and free-text
37
+ * `description` (the compiled block's purpose). Keyword matches on the
38
+ * description take priority over the coarse `type` field because the
39
+ * DesignIntent functional-block `type` is intentionally low-resolution
40
+ * (e.g. "power-management" covers both regulators and passive filter
41
+ * stages).
42
+ */
43
+ export declare function determineComponentRole(block: {
44
+ type: string;
45
+ description?: string;
46
+ }): ComponentRolePlan;
47
+ export interface ComponentPlanResult {
48
+ devices: Device[];
49
+ warnings: string[];
50
+ }
51
+ /**
52
+ * Plan one candidate Device per Block: a deterministic refdes, a component
53
+ * role, and a package-family hint, recorded as Device metadata alongside
54
+ * a `planningState` of `candidate` (role inferred with high confidence) or
55
+ * `placeholder` (role could not be determined; manual classification
56
+ * required).
57
+ *
58
+ * Refdes numbering is deterministic and stable across repeated compiles of
59
+ * the same DesignIntent, because it is derived solely from block order.
60
+ */
61
+ export declare function planComponents(blocks: Block[]): ComponentPlanResult;
62
+ /** Read a Device's planned component role back out of its metadata, if present. */
63
+ export declare function getDeviceRole(device: Device): ComponentRole | undefined;
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Component role and refdes planning for CircuitIR device synthesis.
3
+ *
4
+ * Replaces generic `U?` device stubs with a deterministic, traceable
5
+ * component-role plan: a refdes family, a package/footprint hint, and a
6
+ * planning-state marker that differentiates a confidently-classified
7
+ * candidate device from a low-confidence placeholder.
8
+ *
9
+ * This module intentionally does not select real MPNs, manufacturers, or
10
+ * footprints — it narrows the search space (role + refdes + package family)
11
+ * so a human, BOM-sourcing tool, or downstream planning step can make the
12
+ * final manufacturable selection. See docs/circuit-ir.md for the full
13
+ * synthesis pipeline this module is part of.
14
+ *
15
+ * @module
16
+ */
17
+ import { BlockType } from './types.js';
18
+ /** Deterministic refdes family per component role, matching common schematic convention. */
19
+ export const ROLE_REFDES_PREFIX = {
20
+ 'power-regulator': 'U',
21
+ 'mcu-module': 'U',
22
+ sensor: 'U',
23
+ 'communication-ic': 'U',
24
+ 'analog-ic': 'U',
25
+ connector: 'J',
26
+ 'protection-diode': 'D',
27
+ fuse: 'F',
28
+ 'passive-support': 'C',
29
+ 'generic-ic': 'U',
30
+ };
31
+ /** Conservative package/footprint family hint per role — not a final footprint selection. */
32
+ export const ROLE_PACKAGE_HINT = {
33
+ 'power-regulator': 'SOT-23-5 or TO-220 (select by current/thermal rating)',
34
+ 'mcu-module': 'QFN/LQFP or module footprint (select by MCU family)',
35
+ sensor: 'Manufacturer-specific package (verify against the selected sensor datasheet)',
36
+ 'communication-ic': 'SOIC/QFN (select by the selected transceiver/PHY datasheet)',
37
+ 'analog-ic': 'SOIC/SOT package (select by the selected part datasheet)',
38
+ connector: 'THT or SMD connector footprint (select by mechanical/mating requirements)',
39
+ 'protection-diode': 'SOD-123/SMA (select by clamping voltage and current rating)',
40
+ fuse: '0603/1206 SMD fuse or THT fuse holder (select by current rating)',
41
+ 'passive-support': '0402/0603 SMD passive (select values during schematic entry)',
42
+ 'generic-ic': 'TBD — insufficient design intent to suggest a package family',
43
+ };
44
+ /** Metadata keys the compiler attaches to each planned Device. */
45
+ export const COMPONENT_PLAN_METADATA_KEYS = {
46
+ role: 'role',
47
+ packageHint: 'packageHint',
48
+ planningState: 'planningState',
49
+ };
50
+ /**
51
+ * Determine a component role for a Block from its `type` and free-text
52
+ * `description` (the compiled block's purpose). Keyword matches on the
53
+ * description take priority over the coarse `type` field because the
54
+ * DesignIntent functional-block `type` is intentionally low-resolution
55
+ * (e.g. "power-management" covers both regulators and passive filter
56
+ * stages).
57
+ */
58
+ export function determineComponentRole(block) {
59
+ const text = `${block.type} ${block.description ?? ''}`.toLowerCase();
60
+ if (text.includes('connector') ||
61
+ text.includes('header') ||
62
+ text.includes('usb') ||
63
+ text.includes('jack')) {
64
+ return { role: 'connector', confidence: 'high' };
65
+ }
66
+ if (text.includes('fuse') || text.includes('polyfuse') || text.includes('ptc')) {
67
+ return { role: 'fuse', confidence: 'high' };
68
+ }
69
+ if (text.includes('filter') || text.includes('decoupl') || text.includes('bypass')) {
70
+ return { role: 'passive-support', confidence: 'high' };
71
+ }
72
+ switch (block.type) {
73
+ case BlockType.PowerManagement:
74
+ return { role: 'power-regulator', confidence: 'high' };
75
+ case BlockType.Microcontroller:
76
+ return { role: 'mcu-module', confidence: 'high' };
77
+ case BlockType.Sensor:
78
+ return { role: 'sensor', confidence: 'high' };
79
+ case BlockType.Communication:
80
+ return { role: 'communication-ic', confidence: 'high' };
81
+ case BlockType.Interface:
82
+ return { role: 'connector', confidence: 'high' };
83
+ case BlockType.Protection:
84
+ return { role: 'protection-diode', confidence: 'high' };
85
+ case BlockType.Analog:
86
+ return { role: 'analog-ic', confidence: 'high' };
87
+ default:
88
+ return { role: 'generic-ic', confidence: 'low' };
89
+ }
90
+ }
91
+ /**
92
+ * Plan one candidate Device per Block: a deterministic refdes, a component
93
+ * role, and a package-family hint, recorded as Device metadata alongside
94
+ * a `planningState` of `candidate` (role inferred with high confidence) or
95
+ * `placeholder` (role could not be determined; manual classification
96
+ * required).
97
+ *
98
+ * Refdes numbering is deterministic and stable across repeated compiles of
99
+ * the same DesignIntent, because it is derived solely from block order.
100
+ */
101
+ export function planComponents(blocks) {
102
+ const refdesCounters = {};
103
+ const warnings = [];
104
+ const devices = blocks.map((block) => {
105
+ const plan = determineComponentRole({ type: block.type, description: block.description });
106
+ const prefix = ROLE_REFDES_PREFIX[plan.role];
107
+ refdesCounters[prefix] = (refdesCounters[prefix] ?? 0) + 1;
108
+ const ref = `${prefix}${refdesCounters[prefix]}`;
109
+ const planningState = plan.confidence === 'high' ? 'candidate' : 'placeholder';
110
+ if (planningState === 'placeholder') {
111
+ warnings.push(`Block "${block.name}" (${block.id}): insufficient design intent to determine a ` +
112
+ `component role; using a generic placeholder device (${ref}). Provide a more ` +
113
+ `specific block type or purpose to enable manufacturable candidate planning.`);
114
+ }
115
+ const device = {
116
+ id: `dev-${block.id}`,
117
+ ref,
118
+ mpn: undefined,
119
+ manufacturer: undefined,
120
+ package: undefined,
121
+ datasheet: '',
122
+ lcsc: undefined,
123
+ blockRef: block.id,
124
+ designIntentRef: block.designIntentRef,
125
+ metadata: [
126
+ { key: COMPONENT_PLAN_METADATA_KEYS.role, value: plan.role },
127
+ { key: COMPONENT_PLAN_METADATA_KEYS.packageHint, value: ROLE_PACKAGE_HINT[plan.role] },
128
+ { key: COMPONENT_PLAN_METADATA_KEYS.planningState, value: planningState },
129
+ ],
130
+ };
131
+ return device;
132
+ });
133
+ return { devices, warnings };
134
+ }
135
+ /** Read a Device's planned component role back out of its metadata, if present. */
136
+ export function getDeviceRole(device) {
137
+ const value = device.metadata.find((m) => m.key === COMPONENT_PLAN_METADATA_KEYS.role)?.value;
138
+ return value;
139
+ }
140
+ //# sourceMappingURL=component-planning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-planning.js","sourceRoot":"","sources":["../../src/circuit/component-planning.ts"],"names":[],"mappings":"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"}
@@ -15,3 +15,5 @@ export { CircuitIRSchema, CIRCUIT_IR_SCHEMA_VERSION, BlockSchema, DeviceSchema,
15
15
  export type { CircuitIR, Block, Device, Net, NetNode, PowerRail, Interface, InterfacePin, Constraint, BomIntent, PcbIntent, ManufacturingIntent, } from './circuit-ir.js';
16
16
  export { compile, setValidationStatus, isReadyForEasyEDA } from './compiler.js';
17
17
  export type { CompileOptions, CompileResult } from './compiler.js';
18
+ export { ROLE_REFDES_PREFIX, ROLE_PACKAGE_HINT, COMPONENT_PLAN_METADATA_KEYS, determineComponentRole, planComponents, getDeviceRole, } from './component-planning.js';
19
+ export type { ComponentRole, RoleConfidence, ComponentRolePlan, ComponentPlanResult, } from './component-planning.js';
@@ -15,4 +15,6 @@ export { DesignIntentSchema, DESIGN_INTENT_SCHEMA_VERSION, validateDesignIntent,
15
15
  export { CircuitIRSchema, CIRCUIT_IR_SCHEMA_VERSION, BlockSchema, DeviceSchema, NetSchema, NetNodeSchema, PowerRailSchema, InterfaceSchema, InterfacePinSchema, ConstraintSchema, BomIntentSchema, PcbIntentSchema, ManufacturingIntentSchema, validateCircuitIR, isCircuitIR, } from './circuit-ir.js';
16
16
  // Compiler
17
17
  export { compile, setValidationStatus, isReadyForEasyEDA } from './compiler.js';
18
+ // Component planning
19
+ export { ROLE_REFDES_PREFIX, ROLE_PACKAGE_HINT, COMPONENT_PLAN_METADATA_KEYS, determineComponentRole, planComponents, getDeviceRole, } from './component-planning.js';
18
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/circuit/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG5F,QAAQ;AACR,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,eAAe;AACf,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,oBAAoB,EACpB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAG5B,YAAY;AACZ,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,WAAW,EACX,YAAY,EACZ,SAAS,EACT,aAAa,EACb,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,WAAW,GACZ,MAAM,iBAAiB,CAAC;AAgBzB,WAAW;AACX,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/circuit/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG5F,QAAQ;AACR,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,eAAe;AACf,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,oBAAoB,EACpB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAG5B,YAAY;AACZ,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,WAAW,EACX,YAAY,EACZ,SAAS,EACT,aAAa,EACb,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,WAAW,GACZ,MAAM,iBAAiB,CAAC;AAgBzB,WAAW;AACX,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGhF,qBAAqB;AACrB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,4BAA4B,EAC5B,sBAAsB,EACtB,cAAc,EACd,aAAa,GACd,MAAM,yBAAyB,CAAC"}
@@ -1 +1 @@
1
- export declare const SERVER_VERSION = "0.17.1";
1
+ export declare const SERVER_VERSION = "0.19.0";
@@ -1,2 +1,2 @@
1
- export const SERVER_VERSION = '0.17.1'; // x-release-please-version
1
+ export const SERVER_VERSION = '0.19.0'; // x-release-please-version
2
2
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,33 @@
1
+ import type { ActiveProject, RemoteRiskLevel } from './protocol.js';
2
+ export interface ApprovalRequestInput {
3
+ approvalId: string;
4
+ userId: string;
5
+ sessionId: string;
6
+ toolName: string;
7
+ riskLevel: RemoteRiskLevel;
8
+ inputHash: string;
9
+ actionSummary: string;
10
+ activeProject?: ActiveProject;
11
+ expiresAt: Date;
12
+ }
13
+ export type ApprovalDecision = 'approved' | 'rejected' | 'timeout';
14
+ export interface ApprovalRecord extends ApprovalRequestInput {
15
+ decision?: ApprovalDecision;
16
+ decidedAt?: Date;
17
+ }
18
+ export declare function requiresApproval(riskLevel: RemoteRiskLevel): boolean;
19
+ export declare function isDestructiveRisk(riskLevel: RemoteRiskLevel): boolean;
20
+ export declare class ApprovalStore {
21
+ private readonly approvals;
22
+ request(input: ApprovalRequestInput): ApprovalRecord;
23
+ resolve(approvalId: string, decision: ApprovalDecision, now?: Date): ApprovalRecord | undefined;
24
+ consumeApproved(input: {
25
+ approvalId: string;
26
+ userId: string;
27
+ sessionId: string;
28
+ toolName: string;
29
+ inputHash: string;
30
+ now?: Date;
31
+ }): boolean;
32
+ get(approvalId: string): ApprovalRecord | undefined;
33
+ }
@@ -0,0 +1,41 @@
1
+ export function requiresApproval(riskLevel) {
2
+ return riskLevel !== 'read';
3
+ }
4
+ export function isDestructiveRisk(riskLevel) {
5
+ return riskLevel === 'destructive';
6
+ }
7
+ export class ApprovalStore {
8
+ approvals = new Map();
9
+ request(input) {
10
+ const record = { ...input };
11
+ this.approvals.set(input.approvalId, record);
12
+ return record;
13
+ }
14
+ resolve(approvalId, decision, now = new Date()) {
15
+ const record = this.approvals.get(approvalId);
16
+ if (!record)
17
+ return undefined;
18
+ record.decision = now.getTime() > record.expiresAt.getTime() ? 'timeout' : decision;
19
+ record.decidedAt = now;
20
+ return record;
21
+ }
22
+ consumeApproved(input) {
23
+ const record = this.approvals.get(input.approvalId);
24
+ if (!record)
25
+ return false;
26
+ const now = input.now ?? new Date();
27
+ const matches = record.userId === input.userId &&
28
+ record.sessionId === input.sessionId &&
29
+ record.toolName === input.toolName &&
30
+ record.inputHash === input.inputHash &&
31
+ record.decision === 'approved' &&
32
+ record.expiresAt.getTime() > now.getTime();
33
+ if (matches)
34
+ this.approvals.delete(input.approvalId);
35
+ return matches;
36
+ }
37
+ get(approvalId) {
38
+ return this.approvals.get(approvalId);
39
+ }
40
+ }
41
+ //# sourceMappingURL=approval-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval-policy.js","sourceRoot":"","sources":["../../src/remote/approval-policy.ts"],"names":[],"mappings":"AAqBA,MAAM,UAAU,gBAAgB,CAAC,SAA0B;IACzD,OAAO,SAAS,KAAK,MAAM,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAA0B;IAC1D,OAAO,SAAS,KAAK,aAAa,CAAC;AACrC,CAAC;AAED,MAAM,OAAO,aAAa;IACP,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;IAE/D,OAAO,CAAC,KAA2B;QACjC,MAAM,MAAM,GAAmB,EAAE,GAAG,KAAK,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,CACL,UAAkB,EAClB,QAA0B,EAC1B,GAAG,GAAG,IAAI,IAAI,EAAE;QAEhB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAC9B,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QACpF,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,eAAe,CAAC,KAOf;QACC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;QACpC,MAAM,OAAO,GACX,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAC9B,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;YACpC,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;YAClC,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;YACpC,MAAM,CAAC,QAAQ,KAAK,UAAU;YAC9B,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC7C,IAAI,OAAO;YAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,GAAG,CAAC,UAAkB;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;CACF"}