easyeda-mcp-pro 0.16.0 → 0.17.1
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.
- package/README.md +80 -13
- package/dist/config/profiles.js +3 -3
- package/dist/config/version.d.ts +1 -1
- package/dist/config/version.js +1 -1
- package/dist/quote-gating/index.d.ts +2 -0
- package/dist/quote-gating/index.js +2 -0
- package/dist/quote-gating/index.js.map +1 -0
- package/dist/quote-gating/types.d.ts +87 -0
- package/dist/quote-gating/types.js +3 -0
- package/dist/quote-gating/types.js.map +1 -0
- package/dist/quote-gating/workflow.d.ts +3 -0
- package/dist/quote-gating/workflow.js +120 -0
- package/dist/quote-gating/workflow.js.map +1 -0
- package/dist/tools/L1_export.js +151 -0
- package/dist/tools/L1_export.js.map +1 -1
- package/dist/vendors/jlcpcb/client.d.ts +3 -4
- package/dist/vendors/jlcpcb/client.js +8 -7
- package/dist/vendors/jlcpcb/client.js.map +1 -1
- package/easyeda-bridge-extension.eext +0 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -1,19 +1,49 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center">
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
# easyeda-mcp-pro
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
[](https://www.bestpractices.dev/projects/13406)
|
|
9
|
-
[](https://deepwiki.com/oaslananka/easyeda-mcp-pro)
|
|
5
|
+
<p>
|
|
6
|
+
Production-grade MCP server for EasyEDA Pro: safe PCB design inspection, BOM sourcing, manufacturing export, and AI-assisted hardware review.
|
|
7
|
+
</p>
|
|
10
8
|
|
|
11
|
-
<p
|
|
12
|
-
<a href="https://
|
|
13
|
-
<img src="https://
|
|
9
|
+
<p>
|
|
10
|
+
<a href="https://github.com/oaslananka/easyeda-mcp-pro/actions/workflows/ci.yml">
|
|
11
|
+
<img src="https://github.com/oaslananka/easyeda-mcp-pro/actions/workflows/ci.yml/badge.svg" alt="CI status" />
|
|
12
|
+
</a>
|
|
13
|
+
<a href="https://www.npmjs.com/package/easyeda-mcp-pro">
|
|
14
|
+
<img src="https://img.shields.io/npm/v/easyeda-mcp-pro.svg?logo=npm" alt="npm version" />
|
|
15
|
+
</a>
|
|
16
|
+
<a href="https://www.npmjs.com/package/easyeda-mcp-pro">
|
|
17
|
+
<img src="https://img.shields.io/npm/dt/easyeda-mcp-pro?logo=npm&label=total%20downloads" alt="npm total downloads" />
|
|
18
|
+
</a>
|
|
19
|
+
<a href="https://www.npmjs.com/package/easyeda-mcp-pro">
|
|
20
|
+
<img src="https://img.shields.io/node/v/easyeda-mcp-pro" alt="supported Node.js version" />
|
|
21
|
+
</a>
|
|
22
|
+
<a href="https://opensource.org/licenses/MIT">
|
|
23
|
+
<img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT" />
|
|
24
|
+
</a>
|
|
25
|
+
<a href="https://www.bestpractices.dev/projects/13406">
|
|
26
|
+
<img src="https://www.bestpractices.dev/projects/13406/badge" alt="OpenSSF Best Practices" />
|
|
27
|
+
</a>
|
|
28
|
+
<a href="https://github.com/oaslananka/easyeda-mcp-pro/security/policy">
|
|
29
|
+
<img src="https://img.shields.io/badge/security-policy-blue" alt="Security policy" />
|
|
30
|
+
</a>
|
|
31
|
+
<a href="https://deepwiki.com/oaslananka/easyeda-mcp-pro">
|
|
32
|
+
<img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki" />
|
|
14
33
|
</a>
|
|
15
34
|
</p>
|
|
16
35
|
|
|
36
|
+
<p>
|
|
37
|
+
<strong>Compliance docs:</strong>
|
|
38
|
+
<a href="THIRD_PARTY_NOTICES.md">Third-Party Notices</a>
|
|
39
|
+
·
|
|
40
|
+
<a href="docs/vendor-terms.md">Vendor Terms and Unsupported Workflows</a>
|
|
41
|
+
·
|
|
42
|
+
<a href="docs/OPENSSF_BEST_PRACTICES.md">OpenSSF Best Practices</a>
|
|
43
|
+
</p>
|
|
44
|
+
|
|
45
|
+
</div>
|
|
46
|
+
|
|
17
47
|
---
|
|
18
48
|
|
|
19
49
|
## Quick Start
|
|
@@ -46,7 +76,7 @@ For advanced configurations, manual instructions, and specific clients, see [Ins
|
|
|
46
76
|
|
|
47
77
|
## Overview
|
|
48
78
|
|
|
49
|
-
easyeda-mcp-pro is a [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that bridges AI assistants with hardware design workflows in EasyEDA Pro. It exposes
|
|
79
|
+
easyeda-mcp-pro is a [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that bridges AI assistants with hardware design workflows in EasyEDA Pro. It exposes up to 60 profile-gated MCP tools for schematic inspection and editing, controlled EasyEDA Pro API calls, BOM management, design rule checks, PCB board analysis, fabrication exports, diagnostics, and supplier integration.
|
|
50
80
|
|
|
51
81
|
The server connects to EasyEDA Pro via a WebSocket bridge extension, enabling real-time access to open project data. It integrates with JLCPCB, LCSC, Mouser, and DigiKey for BOM sourcing and pricing.
|
|
52
82
|
|
|
@@ -456,6 +486,24 @@ When `OAUTH_ENABLED=true`, every request to `/mcp` must include an `Authorizatio
|
|
|
456
486
|
|
|
457
487
|
The server enforces startup safety checks: **non-loopback `HTTP_HOST` without OAuth is rejected**, and `HTTP_AUTH_DISABLED=true` is rejected outside non-production loopback deployments.
|
|
458
488
|
|
|
489
|
+
### Docker defaults
|
|
490
|
+
|
|
491
|
+
The Docker image starts in HTTP mode with `HTTP_HOST=127.0.0.1` so the default container boot path is safe and passes the same startup safety checks as local HTTP mode. For an externally reachable container, override the bind address and configure OAuth plus an explicit origin allowlist:
|
|
492
|
+
|
|
493
|
+
```bash
|
|
494
|
+
docker run --rm \
|
|
495
|
+
-e HTTP_HOST=0.0.0.0 \
|
|
496
|
+
-e ALLOWED_ORIGINS=https://your-client.example.com \
|
|
497
|
+
-e OAUTH_ENABLED=true \
|
|
498
|
+
-e OAUTH_ISSUER=https://issuer.example.com/ \
|
|
499
|
+
-e OAUTH_JWKS_URI=https://issuer.example.com/.well-known/jwks.json \
|
|
500
|
+
-e OAUTH_AUDIENCE=easyeda-mcp-pro \
|
|
501
|
+
-p 127.0.0.1:3000:3000 \
|
|
502
|
+
ghcr.io/oaslananka/easyeda-mcp-pro:latest
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
Do not expose non-loopback HTTP without OAuth. Use a reverse proxy or platform gateway for TLS termination and external access.
|
|
506
|
+
|
|
459
507
|
#### HTTP Security Features
|
|
460
508
|
|
|
461
509
|
- **Rate limiting**: Per-IP sliding window (configurable via `HTTP_RATE_LIMIT_MAX`), returns `429 Too Many Requests` with retry-after header
|
|
@@ -468,7 +516,14 @@ See `.env.example` for the complete list of configuration variables.
|
|
|
468
516
|
|
|
469
517
|
## MCP Tools
|
|
470
518
|
|
|
471
|
-
The server currently registers
|
|
519
|
+
The server currently registers up to 60 profile-gated tools. Tools are filtered by the active `TOOL_PROFILE`:
|
|
520
|
+
|
|
521
|
+
- `core`: 42 tools
|
|
522
|
+
- `pro`: 47 tools
|
|
523
|
+
- `full`: 56 tools
|
|
524
|
+
- `dev`: 60 tools
|
|
525
|
+
|
|
526
|
+
`core` exposes the standard workflow tools, `pro` adds manufacturing exports, `full` adds controlled documented EasyEDA API calls, and `dev` adds runtime probes for debugging.
|
|
472
527
|
|
|
473
528
|
Capability scopes add a second authorization layer when `TOOL_SCOPES` is set. Leave it empty for the default local all-capabilities mode, or restrict it with comma/space separated scopes such as `diagnostics:read`, `schematic:read`, `schematic:write`, `bom:read`, `bom:source`, `checks:read`, `pcb:read`, `pcb:write`, `export:write`, `api:read`, `api:write`, and `bridge:execute`.
|
|
474
529
|
|
|
@@ -568,7 +623,7 @@ The schematic write APIs use EasyEDA Pro extension APIs that EasyEDA currently m
|
|
|
568
623
|
│ (via Plugin) │ Protocol │ └───────────────┘ │
|
|
569
624
|
└─────────────────┘ │ ┌───────────────┐ │
|
|
570
625
|
│ │ ToolRegistry │ │
|
|
571
|
-
│ │
|
|
626
|
+
│ │ (up to 60 tools) │ │
|
|
572
627
|
│ └───────────────┘ │
|
|
573
628
|
│ ┌───────────────┐ │
|
|
574
629
|
│ │ Storage │──┼──► SQLite
|
|
@@ -712,6 +767,18 @@ This repository uses automated workflows to manage dependencies and releases:
|
|
|
712
767
|
|
|
713
768
|
---
|
|
714
769
|
|
|
770
|
+
## Support the project
|
|
771
|
+
|
|
772
|
+
If this project helps you save time while working with EasyEDA Pro, BOM workflows, or MCP integrations, you can support ongoing development here:
|
|
773
|
+
|
|
774
|
+
<p align="left">
|
|
775
|
+
<a href="https://www.buymeacoffee.com/oaslananka">
|
|
776
|
+
<img src="https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20coffee&emoji=%E2%98%95&slug=oaslananka&button_colour=FFDD00&font_colour=000000&font_family=Inter&outline_colour=000000&coffee_colour=ffffff" alt="Buy me a coffee" />
|
|
777
|
+
</a>
|
|
778
|
+
</p>
|
|
779
|
+
|
|
780
|
+
---
|
|
781
|
+
|
|
715
782
|
## License
|
|
716
783
|
|
|
717
784
|
[MIT](LICENSE)
|
package/dist/config/profiles.js
CHANGED
|
@@ -10,21 +10,21 @@ export const PROFILE_DEFINITIONS = {
|
|
|
10
10
|
name: 'pro',
|
|
11
11
|
label: 'Pro',
|
|
12
12
|
description: 'Adds pick-and-place, PDF, netlist export for manufacturing workflows',
|
|
13
|
-
approxToolCount: '
|
|
13
|
+
approxToolCount: '47',
|
|
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: '
|
|
20
|
+
approxToolCount: '56',
|
|
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: '
|
|
27
|
+
approxToolCount: '60',
|
|
28
28
|
isDefault: false,
|
|
29
29
|
},
|
|
30
30
|
experimental: {
|
package/dist/config/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SERVER_VERSION = "0.
|
|
1
|
+
export declare const SERVER_VERSION = "0.17.1";
|
package/dist/config/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const SERVER_VERSION = '0.
|
|
1
|
+
export const SERVER_VERSION = '0.17.1'; // x-release-please-version
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/quote-gating/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/** Quote workflow gating and confirmation types. */
|
|
2
|
+
export type QuoteProvider = 'jlcpcb' | 'custom';
|
|
3
|
+
export type QuoteAction = 'estimate' | 'verify_quote' | 'place_order';
|
|
4
|
+
export type QuoteWorkflowStatus = 'ready' | 'blocked' | 'requires_confirmation';
|
|
5
|
+
export type QuoteRiskLevel = 'low' | 'medium' | 'high' | 'critical';
|
|
6
|
+
export interface QuoteBoardSpec {
|
|
7
|
+
boardCount: number;
|
|
8
|
+
layers: number;
|
|
9
|
+
widthMm: number;
|
|
10
|
+
heightMm: number;
|
|
11
|
+
thicknessMm?: number;
|
|
12
|
+
surfaceFinish?: string;
|
|
13
|
+
solderMask?: string;
|
|
14
|
+
copperWeight?: string;
|
|
15
|
+
assembly?: boolean;
|
|
16
|
+
stencil?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface QuoteCostBreakdownItem {
|
|
19
|
+
item: string;
|
|
20
|
+
cost: number;
|
|
21
|
+
}
|
|
22
|
+
export interface QuoteCostSnapshot {
|
|
23
|
+
total?: number;
|
|
24
|
+
currency?: string;
|
|
25
|
+
breakdown?: QuoteCostBreakdownItem[];
|
|
26
|
+
estimated: boolean;
|
|
27
|
+
nonBinding: boolean;
|
|
28
|
+
verifiedAt?: string;
|
|
29
|
+
source: 'local-estimate' | 'vendor-api' | 'user-provided';
|
|
30
|
+
}
|
|
31
|
+
export interface QuoteConfirmationInput {
|
|
32
|
+
confirmed?: boolean;
|
|
33
|
+
confirmationText?: string;
|
|
34
|
+
userId?: string;
|
|
35
|
+
reason?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface QuoteWorkflowInput {
|
|
38
|
+
provider: QuoteProvider;
|
|
39
|
+
action: QuoteAction;
|
|
40
|
+
projectId?: string;
|
|
41
|
+
board: QuoteBoardSpec;
|
|
42
|
+
quote?: QuoteCostSnapshot;
|
|
43
|
+
confirmation?: QuoteConfirmationInput;
|
|
44
|
+
vendorTermsReviewed?: boolean;
|
|
45
|
+
productionFilesReady?: boolean;
|
|
46
|
+
exportManifestVerified?: boolean;
|
|
47
|
+
productionReviewPassed?: boolean;
|
|
48
|
+
allowedPaidOperations?: boolean;
|
|
49
|
+
}
|
|
50
|
+
export interface QuoteGateIssue {
|
|
51
|
+
code: 'QUOTE_VENDOR_TERMS_NOT_REVIEWED' | 'QUOTE_PRODUCTION_FILES_NOT_READY' | 'QUOTE_EXPORT_MANIFEST_NOT_VERIFIED' | 'QUOTE_PRODUCTION_REVIEW_NOT_PASSED' | 'QUOTE_PAID_OPERATION_UNSUPPORTED' | 'QUOTE_CONFIRMATION_REQUIRED' | 'QUOTE_NON_BINDING_ESTIMATE' | 'QUOTE_BOARD_SPEC_RISK';
|
|
52
|
+
severity: 'error' | 'warning' | 'info';
|
|
53
|
+
message: string;
|
|
54
|
+
remediationHint: string;
|
|
55
|
+
details?: Record<string, unknown>;
|
|
56
|
+
}
|
|
57
|
+
export interface QuoteAuditEvent {
|
|
58
|
+
id: string;
|
|
59
|
+
createdAt: string;
|
|
60
|
+
provider: QuoteProvider;
|
|
61
|
+
action: QuoteAction;
|
|
62
|
+
projectId?: string;
|
|
63
|
+
confirmed: boolean;
|
|
64
|
+
userId?: string;
|
|
65
|
+
confirmationText?: string;
|
|
66
|
+
reason?: string;
|
|
67
|
+
paidOperationAttempted: boolean;
|
|
68
|
+
paidOperationAllowed: boolean;
|
|
69
|
+
}
|
|
70
|
+
export interface QuoteWorkflowReport {
|
|
71
|
+
provider: QuoteProvider;
|
|
72
|
+
action: QuoteAction;
|
|
73
|
+
projectId: string;
|
|
74
|
+
status: QuoteWorkflowStatus;
|
|
75
|
+
allowed: boolean;
|
|
76
|
+
quote: QuoteCostSnapshot;
|
|
77
|
+
risk: {
|
|
78
|
+
level: QuoteRiskLevel;
|
|
79
|
+
paidOperation: boolean;
|
|
80
|
+
humanConfirmationRequired: boolean;
|
|
81
|
+
nonBindingEstimate: boolean;
|
|
82
|
+
vendorTermsReviewed: boolean;
|
|
83
|
+
};
|
|
84
|
+
issues: QuoteGateIssue[];
|
|
85
|
+
audit: QuoteAuditEvent;
|
|
86
|
+
summary: string;
|
|
87
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/quote-gating/types.ts"],"names":[],"mappings":"AAAA,oDAAoD"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { QuoteWorkflowInput, QuoteWorkflowReport } from './types.js';
|
|
2
|
+
export declare function evaluateQuoteWorkflow(input: QuoteWorkflowInput): QuoteWorkflowReport;
|
|
3
|
+
export declare const QUOTE_CONFIRMATION_TEXT = "I understand this quote workflow is non-binding and no paid order will be placed by this tool";
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
const REQUIRED_CONFIRMATION = 'I understand this quote workflow is non-binding and no paid order will be placed by this tool';
|
|
3
|
+
function issue(code, severity, message, remediationHint, details) {
|
|
4
|
+
return { code, severity, message, remediationHint, details };
|
|
5
|
+
}
|
|
6
|
+
function auditId(input) {
|
|
7
|
+
return `quote_${createHash('sha256').update(JSON.stringify(input)).digest('hex').slice(0, 16)}`;
|
|
8
|
+
}
|
|
9
|
+
function paidOperation(action) {
|
|
10
|
+
return action === 'place_order';
|
|
11
|
+
}
|
|
12
|
+
function confirmationSatisfied(input) {
|
|
13
|
+
return Boolean(input.confirmation?.confirmed === true &&
|
|
14
|
+
input.confirmation.confirmationText === REQUIRED_CONFIRMATION &&
|
|
15
|
+
input.confirmation.userId);
|
|
16
|
+
}
|
|
17
|
+
function normalizeQuote(input) {
|
|
18
|
+
return {
|
|
19
|
+
total: input.quote?.total,
|
|
20
|
+
currency: input.quote?.currency ?? 'USD',
|
|
21
|
+
breakdown: input.quote?.breakdown ?? [],
|
|
22
|
+
estimated: input.quote?.estimated ?? true,
|
|
23
|
+
nonBinding: true,
|
|
24
|
+
verifiedAt: input.quote?.verifiedAt,
|
|
25
|
+
source: input.quote?.source ?? 'local-estimate',
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function boardSpecRisk(input) {
|
|
29
|
+
const issues = [];
|
|
30
|
+
if (input.board.boardCount <= 0 ||
|
|
31
|
+
input.board.layers <= 0 ||
|
|
32
|
+
input.board.widthMm <= 0 ||
|
|
33
|
+
input.board.heightMm <= 0) {
|
|
34
|
+
issues.push(issue('QUOTE_BOARD_SPEC_RISK', 'error', 'Board quote specification contains non-positive dimensions, layer count, or quantity', 'Provide positive board dimensions, layer count, and quantity before requesting a quote snapshot.', { board: input.board }));
|
|
35
|
+
}
|
|
36
|
+
if (input.board.assembly && !input.exportManifestVerified) {
|
|
37
|
+
issues.push(issue('QUOTE_EXPORT_MANIFEST_NOT_VERIFIED', 'error', 'Assembly quote requires a verified export manifest', 'Verify Gerber, drill, BOM, pick-place, and QA artifacts before assembly quote review.'));
|
|
38
|
+
}
|
|
39
|
+
return issues;
|
|
40
|
+
}
|
|
41
|
+
function riskLevel(issues, isPaid) {
|
|
42
|
+
if (isPaid)
|
|
43
|
+
return 'critical';
|
|
44
|
+
if (issues.some((entry) => entry.severity === 'error'))
|
|
45
|
+
return 'high';
|
|
46
|
+
if (issues.some((entry) => entry.severity === 'warning'))
|
|
47
|
+
return 'medium';
|
|
48
|
+
return 'low';
|
|
49
|
+
}
|
|
50
|
+
function statusFor(issues, isPaid, confirmed) {
|
|
51
|
+
if (issues.some((entry) => entry.severity === 'error'))
|
|
52
|
+
return 'blocked';
|
|
53
|
+
if (isPaid && !confirmed)
|
|
54
|
+
return 'requires_confirmation';
|
|
55
|
+
return 'ready';
|
|
56
|
+
}
|
|
57
|
+
export function evaluateQuoteWorkflow(input) {
|
|
58
|
+
const issues = [];
|
|
59
|
+
const isPaid = paidOperation(input.action);
|
|
60
|
+
const confirmed = confirmationSatisfied(input);
|
|
61
|
+
const quote = normalizeQuote(input);
|
|
62
|
+
issues.push(...boardSpecRisk(input));
|
|
63
|
+
if (!input.vendorTermsReviewed) {
|
|
64
|
+
issues.push(issue('QUOTE_VENDOR_TERMS_NOT_REVIEWED', 'warning', 'Vendor terms have not been marked as reviewed', 'Review current vendor terms, supported operations, and account restrictions before relying on quote output.'));
|
|
65
|
+
}
|
|
66
|
+
if (!input.productionFilesReady) {
|
|
67
|
+
issues.push(issue('QUOTE_PRODUCTION_FILES_NOT_READY', 'warning', 'Production files are not marked as ready', 'Generate and verify Gerber, drill, BOM, pick-place, manifest, and QA artifacts before quote review.'));
|
|
68
|
+
}
|
|
69
|
+
if (!input.productionReviewPassed) {
|
|
70
|
+
issues.push(issue('QUOTE_PRODUCTION_REVIEW_NOT_PASSED', 'warning', 'Production review has not passed', 'Run PCB production review and resolve blocking manufacturing findings before quote review.'));
|
|
71
|
+
}
|
|
72
|
+
if (quote.nonBinding || quote.estimated) {
|
|
73
|
+
issues.push(issue('QUOTE_NON_BINDING_ESTIMATE', 'info', 'Quote output is an estimate and must be treated as non-binding until verified by the vendor UI or approved API', 'Show the estimate to a human reviewer and re-check final cost, shipping, taxes, coupons, and lead time before purchase.', { source: quote.source, estimated: quote.estimated }));
|
|
74
|
+
}
|
|
75
|
+
if (isPaid) {
|
|
76
|
+
issues.push(issue('QUOTE_PAID_OPERATION_UNSUPPORTED', 'error', 'Paid/order-like operations are intentionally unsupported by this workflow', 'Use the vendor UI or an approved external procurement workflow after human review. This tool only prepares quote/audit evidence.'));
|
|
77
|
+
if (!confirmed) {
|
|
78
|
+
issues.push(issue('QUOTE_CONFIRMATION_REQUIRED', 'error', 'Explicit human confirmation is required for order-like intent', `Set confirmation.confirmed=true, confirmation.userId, and confirmation.confirmationText exactly to: ${REQUIRED_CONFIRMATION}`));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const status = statusFor(issues, isPaid, confirmed);
|
|
82
|
+
const allowed = status === 'ready' && !isPaid;
|
|
83
|
+
const audit = {
|
|
84
|
+
id: auditId(input),
|
|
85
|
+
createdAt: new Date().toISOString(),
|
|
86
|
+
provider: input.provider,
|
|
87
|
+
action: input.action,
|
|
88
|
+
projectId: input.projectId,
|
|
89
|
+
confirmed,
|
|
90
|
+
userId: input.confirmation?.userId,
|
|
91
|
+
confirmationText: input.confirmation?.confirmationText,
|
|
92
|
+
reason: input.confirmation?.reason,
|
|
93
|
+
paidOperationAttempted: isPaid,
|
|
94
|
+
paidOperationAllowed: false,
|
|
95
|
+
};
|
|
96
|
+
const errorCount = issues.filter((entry) => entry.severity === 'error').length;
|
|
97
|
+
const warningCount = issues.filter((entry) => entry.severity === 'warning').length;
|
|
98
|
+
return {
|
|
99
|
+
provider: input.provider,
|
|
100
|
+
action: input.action,
|
|
101
|
+
projectId: input.projectId ?? '',
|
|
102
|
+
status,
|
|
103
|
+
allowed,
|
|
104
|
+
quote,
|
|
105
|
+
risk: {
|
|
106
|
+
level: riskLevel(issues, isPaid),
|
|
107
|
+
paidOperation: isPaid,
|
|
108
|
+
humanConfirmationRequired: isPaid,
|
|
109
|
+
nonBindingEstimate: quote.nonBinding || quote.estimated,
|
|
110
|
+
vendorTermsReviewed: Boolean(input.vendorTermsReviewed),
|
|
111
|
+
},
|
|
112
|
+
issues,
|
|
113
|
+
audit,
|
|
114
|
+
summary: allowed
|
|
115
|
+
? 'Quote workflow is ready for human review. No paid operation will be performed.'
|
|
116
|
+
: `Quote workflow blocked or requires review: ${errorCount} error(s), ${warningCount} warning(s). No paid operation will be performed.`,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
export const QUOTE_CONFIRMATION_TEXT = REQUIRED_CONFIRMATION;
|
|
120
|
+
//# sourceMappingURL=workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/quote-gating/workflow.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/L1_export.js
CHANGED
|
@@ -1,6 +1,41 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { validatePcbConstraints } from '../pcb-constraints/index.js';
|
|
3
3
|
import { generateProductionQaArtifacts } from '../production-qa/index.js';
|
|
4
|
+
import { evaluateQuoteWorkflow } from '../quote-gating/index.js';
|
|
5
|
+
const quoteBoardSchema = z.object({
|
|
6
|
+
boardCount: z.number().int().positive(),
|
|
7
|
+
layers: z.number().int().positive(),
|
|
8
|
+
widthMm: z.number().positive(),
|
|
9
|
+
heightMm: z.number().positive(),
|
|
10
|
+
thicknessMm: z.number().positive().optional(),
|
|
11
|
+
surfaceFinish: z.string().optional(),
|
|
12
|
+
solderMask: z.string().optional(),
|
|
13
|
+
copperWeight: z.string().optional(),
|
|
14
|
+
assembly: z.boolean().optional(),
|
|
15
|
+
stencil: z.boolean().optional(),
|
|
16
|
+
});
|
|
17
|
+
const quoteSnapshotSchema = z.object({
|
|
18
|
+
total: z.number().nonnegative().optional(),
|
|
19
|
+
currency: z.string().optional(),
|
|
20
|
+
breakdown: z.array(z.object({ item: z.string(), cost: z.number().nonnegative() })).optional(),
|
|
21
|
+
estimated: z.boolean().optional(),
|
|
22
|
+
nonBinding: z.boolean().optional(),
|
|
23
|
+
verifiedAt: z.string().optional(),
|
|
24
|
+
source: z.enum(['local-estimate', 'vendor-api', 'user-provided']).optional(),
|
|
25
|
+
});
|
|
26
|
+
const quoteConfirmationSchema = z.object({
|
|
27
|
+
confirmed: z.boolean().optional(),
|
|
28
|
+
confirmationText: z.string().optional(),
|
|
29
|
+
userId: z.string().optional(),
|
|
30
|
+
reason: z.string().optional(),
|
|
31
|
+
});
|
|
32
|
+
const quoteGateIssueSchema = z.object({
|
|
33
|
+
code: z.string(),
|
|
34
|
+
severity: z.enum(['error', 'warning', 'info']),
|
|
35
|
+
message: z.string(),
|
|
36
|
+
remediationHint: z.string(),
|
|
37
|
+
details: z.record(z.string(), z.unknown()).optional(),
|
|
38
|
+
});
|
|
4
39
|
const productionReviewBoardDataSchema = z.object({}).passthrough();
|
|
5
40
|
const productionReviewIssueSchema = z.object({
|
|
6
41
|
code: z.string(),
|
|
@@ -83,6 +118,122 @@ const qaArtifactSchema = z.object({
|
|
|
83
118
|
required: z.boolean(),
|
|
84
119
|
});
|
|
85
120
|
function registerExportTools(registry, _config) {
|
|
121
|
+
registry.register({
|
|
122
|
+
name: 'easyeda_jlcpcb_quote_workflow',
|
|
123
|
+
title: 'JLCPCB quote workflow gate',
|
|
124
|
+
description: 'Prepare a non-binding JLCPCB quote workflow snapshot with explicit human-review gates and audit evidence. This tool never places orders or performs paid operations.',
|
|
125
|
+
profile: 'pro',
|
|
126
|
+
evidence: ['official-docs', 'inferred'],
|
|
127
|
+
risk: 'medium',
|
|
128
|
+
confirmWrite: false,
|
|
129
|
+
group: 'export',
|
|
130
|
+
version: '1.0.0',
|
|
131
|
+
annotations: {
|
|
132
|
+
readOnlyHint: true,
|
|
133
|
+
destructiveHint: false,
|
|
134
|
+
idempotentHint: true,
|
|
135
|
+
},
|
|
136
|
+
inputSchema: z.object({
|
|
137
|
+
provider: z.enum(['jlcpcb', 'custom']).default('jlcpcb'),
|
|
138
|
+
action: z.enum(['estimate', 'verify_quote', 'place_order']).default('estimate'),
|
|
139
|
+
projectId: z.string().optional(),
|
|
140
|
+
board: quoteBoardSchema,
|
|
141
|
+
quote: quoteSnapshotSchema.optional(),
|
|
142
|
+
confirmation: quoteConfirmationSchema.optional(),
|
|
143
|
+
vendorTermsReviewed: z.boolean().optional(),
|
|
144
|
+
productionFilesReady: z.boolean().optional(),
|
|
145
|
+
exportManifestVerified: z.boolean().optional(),
|
|
146
|
+
productionReviewPassed: z.boolean().optional(),
|
|
147
|
+
allowedPaidOperations: z.boolean().optional(),
|
|
148
|
+
}),
|
|
149
|
+
outputSchema: z.object({
|
|
150
|
+
provider: z.string(),
|
|
151
|
+
action: z.string(),
|
|
152
|
+
project_id: z.string(),
|
|
153
|
+
status: z.string(),
|
|
154
|
+
allowed: z.boolean(),
|
|
155
|
+
quote: z.object({
|
|
156
|
+
total: z.number().optional(),
|
|
157
|
+
currency: z.string().optional(),
|
|
158
|
+
breakdown: z.array(z.object({ item: z.string(), cost: z.number() })).optional(),
|
|
159
|
+
estimated: z.boolean(),
|
|
160
|
+
non_binding: z.boolean(),
|
|
161
|
+
verified_at: z.string().optional(),
|
|
162
|
+
source: z.string(),
|
|
163
|
+
}),
|
|
164
|
+
risk: z.object({
|
|
165
|
+
level: z.string(),
|
|
166
|
+
paid_operation: z.boolean(),
|
|
167
|
+
human_confirmation_required: z.boolean(),
|
|
168
|
+
non_binding_estimate: z.boolean(),
|
|
169
|
+
vendor_terms_reviewed: z.boolean(),
|
|
170
|
+
}),
|
|
171
|
+
issues: z.array(quoteGateIssueSchema),
|
|
172
|
+
audit: z.object({
|
|
173
|
+
id: z.string(),
|
|
174
|
+
created_at: z.string(),
|
|
175
|
+
provider: z.string(),
|
|
176
|
+
action: z.string(),
|
|
177
|
+
project_id: z.string().optional(),
|
|
178
|
+
confirmed: z.boolean(),
|
|
179
|
+
user_id: z.string().optional(),
|
|
180
|
+
confirmation_text: z.string().optional(),
|
|
181
|
+
reason: z.string().optional(),
|
|
182
|
+
paid_operation_attempted: z.boolean(),
|
|
183
|
+
paid_operation_allowed: z.boolean(),
|
|
184
|
+
}),
|
|
185
|
+
summary: z.string(),
|
|
186
|
+
unsupported_operations: z.array(z.string()),
|
|
187
|
+
}),
|
|
188
|
+
handler: async (_ctx, params) => {
|
|
189
|
+
const report = evaluateQuoteWorkflow(params);
|
|
190
|
+
return {
|
|
191
|
+
provider: report.provider,
|
|
192
|
+
action: report.action,
|
|
193
|
+
project_id: report.projectId,
|
|
194
|
+
status: report.status,
|
|
195
|
+
allowed: report.allowed,
|
|
196
|
+
quote: {
|
|
197
|
+
total: report.quote.total,
|
|
198
|
+
currency: report.quote.currency,
|
|
199
|
+
breakdown: report.quote.breakdown,
|
|
200
|
+
estimated: report.quote.estimated,
|
|
201
|
+
non_binding: report.quote.nonBinding,
|
|
202
|
+
verified_at: report.quote.verifiedAt,
|
|
203
|
+
source: report.quote.source,
|
|
204
|
+
},
|
|
205
|
+
risk: {
|
|
206
|
+
level: report.risk.level,
|
|
207
|
+
paid_operation: report.risk.paidOperation,
|
|
208
|
+
human_confirmation_required: report.risk.humanConfirmationRequired,
|
|
209
|
+
non_binding_estimate: report.risk.nonBindingEstimate,
|
|
210
|
+
vendor_terms_reviewed: report.risk.vendorTermsReviewed,
|
|
211
|
+
},
|
|
212
|
+
issues: report.issues,
|
|
213
|
+
audit: {
|
|
214
|
+
id: report.audit.id,
|
|
215
|
+
created_at: report.audit.createdAt,
|
|
216
|
+
provider: report.audit.provider,
|
|
217
|
+
action: report.audit.action,
|
|
218
|
+
project_id: report.audit.projectId,
|
|
219
|
+
confirmed: report.audit.confirmed,
|
|
220
|
+
user_id: report.audit.userId,
|
|
221
|
+
confirmation_text: report.audit.confirmationText,
|
|
222
|
+
reason: report.audit.reason,
|
|
223
|
+
paid_operation_attempted: report.audit.paidOperationAttempted,
|
|
224
|
+
paid_operation_allowed: report.audit.paidOperationAllowed,
|
|
225
|
+
},
|
|
226
|
+
summary: report.summary,
|
|
227
|
+
unsupported_operations: [
|
|
228
|
+
'place_order',
|
|
229
|
+
'checkout',
|
|
230
|
+
'payment',
|
|
231
|
+
'coupon_apply',
|
|
232
|
+
'shipping_purchase',
|
|
233
|
+
],
|
|
234
|
+
};
|
|
235
|
+
},
|
|
236
|
+
});
|
|
86
237
|
registry.register({
|
|
87
238
|
name: 'easyeda_production_qa_artifacts',
|
|
88
239
|
title: 'Generate production QA artifacts',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"L1_export.js","sourceRoot":"","sources":["../../src/tools/L1_export.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"L1_export.js","sourceRoot":"","sources":["../../src/tools/L1_export.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,11 +59,10 @@ export declare class JlcpcbClient {
|
|
|
59
59
|
*/
|
|
60
60
|
getQuote(request: JlcPcbOrderRequest): Promise<JlcPcbQuoteResult>;
|
|
61
61
|
/**
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* @returns Order result containing the order ID
|
|
62
|
+
* Paid/order-like operations are intentionally unsupported by this MCP package.
|
|
63
|
+
* Use the quote gating workflow to prepare audit evidence, then complete procurement outside the agent.
|
|
65
64
|
*/
|
|
66
|
-
placeOrder(
|
|
65
|
+
placeOrder(_request: JlcPcbOrderRequest): Promise<JlcPcbOrderResult>;
|
|
67
66
|
/**
|
|
68
67
|
* Get the current status of an existing JLCPCB order.
|
|
69
68
|
* @param orderId - The JLCPCB order ID
|
|
@@ -94,14 +94,15 @@ export class JlcpcbClient {
|
|
|
94
94
|
});
|
|
95
95
|
}
|
|
96
96
|
/**
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
* @returns Order result containing the order ID
|
|
97
|
+
* Paid/order-like operations are intentionally unsupported by this MCP package.
|
|
98
|
+
* Use the quote gating workflow to prepare audit evidence, then complete procurement outside the agent.
|
|
100
99
|
*/
|
|
101
|
-
async placeOrder(
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
100
|
+
async placeOrder(_request) {
|
|
101
|
+
throw new EasyEdaMcpError({
|
|
102
|
+
code: 'FEATURE_DISABLED',
|
|
103
|
+
message: 'JLCPCB order placement is intentionally unsupported by easyeda-mcp-pro.',
|
|
104
|
+
suggestion: 'Use easyeda_jlcpcb_quote_workflow for quote/audit preparation, then complete any purchase manually in an approved procurement workflow.',
|
|
105
|
+
retryable: false,
|
|
105
106
|
});
|
|
106
107
|
}
|
|
107
108
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/vendors/jlcpcb/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/vendors/jlcpcb/client.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "easyeda-mcp-pro",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.1",
|
|
4
4
|
"mcpName": "io.github.oaslananka/easyeda-mcp-pro",
|
|
5
5
|
"description": "MCP server for EasyEDA Pro: PCB inspection, BOM, exports, and hardware review.",
|
|
6
6
|
"keywords": [
|
|
@@ -72,7 +72,8 @@
|
|
|
72
72
|
"check:metadata": "node scripts/check-metadata.mjs",
|
|
73
73
|
"inventory:capture": "tsx scripts/capture-runtime-inventory.mts",
|
|
74
74
|
"inventory:diff": "tsx scripts/diff-runtime-inventory.mts",
|
|
75
|
-
"eval:golden": "tsx scripts/run-evals.mts"
|
|
75
|
+
"eval:golden": "tsx scripts/run-evals.mts",
|
|
76
|
+
"eval:golden:update": "tsx scripts/run-evals.mts --update-baseline"
|
|
76
77
|
},
|
|
77
78
|
"dependencies": {
|
|
78
79
|
"@modelcontextprotocol/sdk": "^1.29.0",
|