easyeda-mcp-pro 0.2.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.
- package/README.md +304 -0
- package/dist/bridge/client.d.ts +16 -0
- package/dist/bridge/client.js +48 -0
- package/dist/bridge/client.js.map +1 -0
- package/dist/bridge/extension.d.ts +26 -0
- package/dist/bridge/extension.js +556 -0
- package/dist/bridge/extension.js.map +1 -0
- package/dist/bridge/manager.d.ts +37 -0
- package/dist/bridge/manager.js +225 -0
- package/dist/bridge/manager.js.map +1 -0
- package/dist/bridge/protocol.d.ts +68 -0
- package/dist/bridge/protocol.js +56 -0
- package/dist/bridge/protocol.js.map +1 -0
- package/dist/bridge/types.d.ts +52 -0
- package/dist/bridge/types.js +19 -0
- package/dist/bridge/types.js.map +1 -0
- package/dist/config/env.d.ts +98 -0
- package/dist/config/env.js +103 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/feature-flags.d.ts +16 -0
- package/dist/config/feature-flags.js +17 -0
- package/dist/config/feature-flags.js.map +1 -0
- package/dist/config/profiles.d.ts +10 -0
- package/dist/config/profiles.js +45 -0
- package/dist/config/profiles.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +76 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/common.d.ts +123 -0
- package/dist/schemas/common.js +79 -0
- package/dist/schemas/common.js.map +1 -0
- package/dist/server/errors.d.ts +3 -0
- package/dist/server/errors.js +59 -0
- package/dist/server/errors.js.map +1 -0
- package/dist/server/factory.d.ts +17 -0
- package/dist/server/factory.js +60 -0
- package/dist/server/factory.js.map +1 -0
- package/dist/server/transports/http.d.ts +10 -0
- package/dist/server/transports/http.js +54 -0
- package/dist/server/transports/http.js.map +1 -0
- package/dist/storage/database.d.ts +19 -0
- package/dist/storage/database.js +136 -0
- package/dist/storage/database.js.map +1 -0
- package/dist/storage/index.d.ts +2 -0
- package/dist/storage/index.js +2 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/types.d.ts +26 -0
- package/dist/storage/types.js +9 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/tools/L0_diagnostics.d.ts +6 -0
- package/dist/tools/L0_diagnostics.js +297 -0
- package/dist/tools/L0_diagnostics.js.map +1 -0
- package/dist/tools/L1_board.d.ts +6 -0
- package/dist/tools/L1_board.js +182 -0
- package/dist/tools/L1_board.js.map +1 -0
- package/dist/tools/L1_bom.d.ts +6 -0
- package/dist/tools/L1_bom.js +267 -0
- package/dist/tools/L1_bom.js.map +1 -0
- package/dist/tools/L1_drc_erc.d.ts +6 -0
- package/dist/tools/L1_drc_erc.js +235 -0
- package/dist/tools/L1_drc_erc.js.map +1 -0
- package/dist/tools/L1_export.d.ts +6 -0
- package/dist/tools/L1_export.js +214 -0
- package/dist/tools/L1_export.js.map +1 -0
- package/dist/tools/L1_schematic.d.ts +6 -0
- package/dist/tools/L1_schematic.js +182 -0
- package/dist/tools/L1_schematic.js.map +1 -0
- package/dist/tools/registry.d.ts +21 -0
- package/dist/tools/registry.js +55 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/types.d.ts +53 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/utils/logger.d.ts +4 -0
- package/dist/utils/logger.js +54 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/redaction.d.ts +2 -0
- package/dist/utils/redaction.js +56 -0
- package/dist/utils/redaction.js.map +1 -0
- package/dist/vendors/digikey/client.d.ts +49 -0
- package/dist/vendors/digikey/client.js +200 -0
- package/dist/vendors/digikey/client.js.map +1 -0
- package/dist/vendors/jlcpcb/client.d.ts +79 -0
- package/dist/vendors/jlcpcb/client.js +156 -0
- package/dist/vendors/jlcpcb/client.js.map +1 -0
- package/dist/vendors/lcsc/client.d.ts +57 -0
- package/dist/vendors/lcsc/client.js +140 -0
- package/dist/vendors/lcsc/client.js.map +1 -0
- package/dist/vendors/mouser/client.d.ts +46 -0
- package/dist/vendors/mouser/client.js +141 -0
- package/dist/vendors/mouser/client.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
function registerBoardTools(registry, _config) {
|
|
3
|
+
registry.register({
|
|
4
|
+
name: 'easyeda_board_layers',
|
|
5
|
+
title: 'List PCB layers',
|
|
6
|
+
description: 'List all layers in the PCB design including signal, power, plane, and mechanical layers.',
|
|
7
|
+
profile: 'core',
|
|
8
|
+
evidence: ['official-docs'],
|
|
9
|
+
risk: 'low',
|
|
10
|
+
annotations: {
|
|
11
|
+
readOnlyHint: true,
|
|
12
|
+
idempotentHint: true,
|
|
13
|
+
},
|
|
14
|
+
inputSchema: z.object({
|
|
15
|
+
projectId: z.string(),
|
|
16
|
+
}),
|
|
17
|
+
outputSchema: z.object({
|
|
18
|
+
project_id: z.string(),
|
|
19
|
+
layers: z.array(z.object({
|
|
20
|
+
name: z.string(),
|
|
21
|
+
type: z.string(),
|
|
22
|
+
color: z.string().optional(),
|
|
23
|
+
visible: z.boolean(),
|
|
24
|
+
order: z.number().int().nonnegative().optional(),
|
|
25
|
+
})),
|
|
26
|
+
total: z.number().int().nonnegative(),
|
|
27
|
+
not_available: z.boolean().optional(),
|
|
28
|
+
}),
|
|
29
|
+
handler: async (ctx, params) => {
|
|
30
|
+
const { projectId } = params;
|
|
31
|
+
try {
|
|
32
|
+
const result = await ctx.bridge.call('board.listLayers', { projectId });
|
|
33
|
+
const layers = result;
|
|
34
|
+
return {
|
|
35
|
+
project_id: projectId,
|
|
36
|
+
layers: (layers ?? []).map((l) => ({
|
|
37
|
+
name: l.name ?? '',
|
|
38
|
+
type: l.type ?? '',
|
|
39
|
+
color: l.color,
|
|
40
|
+
visible: l.visible ?? true,
|
|
41
|
+
order: l.order,
|
|
42
|
+
})),
|
|
43
|
+
total: layers?.length ?? 0,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return {
|
|
48
|
+
project_id: projectId,
|
|
49
|
+
layers: [],
|
|
50
|
+
total: 0,
|
|
51
|
+
not_available: true,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
registry.register({
|
|
57
|
+
name: 'easyeda_board_stackup',
|
|
58
|
+
title: 'Get board stackup',
|
|
59
|
+
description: 'Get the PCB layer stackup including thickness, material, and dielectric constants.',
|
|
60
|
+
profile: 'core',
|
|
61
|
+
evidence: ['official-docs'],
|
|
62
|
+
risk: 'low',
|
|
63
|
+
annotations: {
|
|
64
|
+
readOnlyHint: true,
|
|
65
|
+
idempotentHint: true,
|
|
66
|
+
},
|
|
67
|
+
inputSchema: z.object({
|
|
68
|
+
projectId: z.string(),
|
|
69
|
+
}),
|
|
70
|
+
outputSchema: z.object({
|
|
71
|
+
project_id: z.string(),
|
|
72
|
+
total_layers: z.number().int().nonnegative(),
|
|
73
|
+
board_thickness_mm: z.number().nonnegative().optional(),
|
|
74
|
+
layers: z.array(z.object({
|
|
75
|
+
name: z.string(),
|
|
76
|
+
type: z.string(),
|
|
77
|
+
thickness_mm: z.number().nonnegative().optional(),
|
|
78
|
+
material: z.string().optional(),
|
|
79
|
+
dielectric_constant: z.number().nonnegative().optional(),
|
|
80
|
+
copper_weight_oz: z.number().nonnegative().optional(),
|
|
81
|
+
})),
|
|
82
|
+
not_available: z.boolean().optional(),
|
|
83
|
+
}),
|
|
84
|
+
handler: async (ctx, params) => {
|
|
85
|
+
const { projectId } = params;
|
|
86
|
+
try {
|
|
87
|
+
const result = await ctx.bridge.call('board.getStackup', { projectId });
|
|
88
|
+
const data = result;
|
|
89
|
+
return {
|
|
90
|
+
project_id: projectId,
|
|
91
|
+
total_layers: data.totalLayers ?? data.layers?.length ?? 0,
|
|
92
|
+
board_thickness_mm: data.boardThicknessMm,
|
|
93
|
+
layers: (data.layers ?? []).map((l) => ({
|
|
94
|
+
name: l.name ?? '',
|
|
95
|
+
type: l.type ?? '',
|
|
96
|
+
thickness_mm: l.thicknessMm,
|
|
97
|
+
material: l.material,
|
|
98
|
+
dielectric_constant: l.dielectricConstant,
|
|
99
|
+
copper_weight_oz: l.copperWeightOz,
|
|
100
|
+
})),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return {
|
|
105
|
+
project_id: projectId,
|
|
106
|
+
total_layers: 0,
|
|
107
|
+
layers: [],
|
|
108
|
+
not_available: true,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
registry.register({
|
|
114
|
+
name: 'easyeda_board_dimensions',
|
|
115
|
+
title: 'Get board dimensions',
|
|
116
|
+
description: 'Get the PCB board outline dimensions, shape, and mounting hole information.',
|
|
117
|
+
profile: 'core',
|
|
118
|
+
evidence: ['official-docs'],
|
|
119
|
+
risk: 'low',
|
|
120
|
+
annotations: {
|
|
121
|
+
readOnlyHint: true,
|
|
122
|
+
idempotentHint: true,
|
|
123
|
+
},
|
|
124
|
+
inputSchema: z.object({
|
|
125
|
+
projectId: z.string(),
|
|
126
|
+
}),
|
|
127
|
+
outputSchema: z.object({
|
|
128
|
+
project_id: z.string(),
|
|
129
|
+
width_mm: z.number().nonnegative().optional(),
|
|
130
|
+
height_mm: z.number().nonnegative().optional(),
|
|
131
|
+
shape: z.string().optional(),
|
|
132
|
+
mounting_hole_count: z.number().int().nonnegative(),
|
|
133
|
+
area_mm2: z.number().nonnegative().optional(),
|
|
134
|
+
not_available: z.boolean().optional(),
|
|
135
|
+
}),
|
|
136
|
+
handler: async (_ctx, params) => {
|
|
137
|
+
const { projectId } = params;
|
|
138
|
+
return {
|
|
139
|
+
project_id: projectId,
|
|
140
|
+
mounting_hole_count: 0,
|
|
141
|
+
not_available: true,
|
|
142
|
+
};
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
registry.register({
|
|
146
|
+
name: 'easyeda_board_features',
|
|
147
|
+
title: 'Get board features',
|
|
148
|
+
description: 'Get counts of board features including vias, tracks, copper zones, and pads.',
|
|
149
|
+
profile: 'core',
|
|
150
|
+
evidence: ['official-docs'],
|
|
151
|
+
risk: 'low',
|
|
152
|
+
annotations: {
|
|
153
|
+
readOnlyHint: true,
|
|
154
|
+
idempotentHint: true,
|
|
155
|
+
},
|
|
156
|
+
inputSchema: z.object({
|
|
157
|
+
projectId: z.string(),
|
|
158
|
+
}),
|
|
159
|
+
outputSchema: z.object({
|
|
160
|
+
project_id: z.string(),
|
|
161
|
+
vias: z.number().int().nonnegative(),
|
|
162
|
+
tracks: z.number().int().nonnegative(),
|
|
163
|
+
zones: z.number().int().nonnegative(),
|
|
164
|
+
pads: z.number().int().nonnegative(),
|
|
165
|
+
components: z.number().int().nonnegative().optional(),
|
|
166
|
+
not_available: z.boolean().optional(),
|
|
167
|
+
}),
|
|
168
|
+
handler: async (_ctx, params) => {
|
|
169
|
+
const { projectId } = params;
|
|
170
|
+
return {
|
|
171
|
+
project_id: projectId,
|
|
172
|
+
vias: 0,
|
|
173
|
+
tracks: 0,
|
|
174
|
+
zones: 0,
|
|
175
|
+
pads: 0,
|
|
176
|
+
not_available: true,
|
|
177
|
+
};
|
|
178
|
+
},
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
export { registerBoardTools };
|
|
182
|
+
//# sourceMappingURL=L1_board.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"L1_board.js","sourceRoot":"","sources":["../../src/tools/L1_board.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
function registerBomTools(registry, _config) {
|
|
3
|
+
registry.register({
|
|
4
|
+
name: 'easyeda_bom_generate',
|
|
5
|
+
title: 'Generate BOM',
|
|
6
|
+
description: 'Generate a bill of materials for the project with grouping and formatting options.',
|
|
7
|
+
profile: 'core',
|
|
8
|
+
evidence: ['official-docs'],
|
|
9
|
+
risk: 'low',
|
|
10
|
+
annotations: {
|
|
11
|
+
readOnlyHint: true,
|
|
12
|
+
idempotentHint: true,
|
|
13
|
+
},
|
|
14
|
+
inputSchema: z.object({
|
|
15
|
+
projectId: z.string(),
|
|
16
|
+
format: z.enum(['csv', 'json', 'xlsx']).default('json'),
|
|
17
|
+
groupBy: z.enum(['value', 'lcsc', 'footprint']).default('value'),
|
|
18
|
+
}),
|
|
19
|
+
outputSchema: z.object({
|
|
20
|
+
project_id: z.string(),
|
|
21
|
+
format: z.string(),
|
|
22
|
+
group_by: z.string(),
|
|
23
|
+
entries: z.array(z.object({
|
|
24
|
+
reference: z.string(),
|
|
25
|
+
value: z.string(),
|
|
26
|
+
footprint: z.string(),
|
|
27
|
+
lcsc: z.string().optional(),
|
|
28
|
+
quantity: z.number().int().nonnegative(),
|
|
29
|
+
manufacturer: z.string().optional(),
|
|
30
|
+
})),
|
|
31
|
+
total_entries: z.number().int().nonnegative(),
|
|
32
|
+
not_available: z.boolean().optional(),
|
|
33
|
+
}),
|
|
34
|
+
handler: async (ctx, params) => {
|
|
35
|
+
const { projectId, format, groupBy } = params;
|
|
36
|
+
try {
|
|
37
|
+
const result = await ctx.bridge.call('bom.generate', { projectId, format, groupBy });
|
|
38
|
+
const entries = result;
|
|
39
|
+
return {
|
|
40
|
+
project_id: projectId,
|
|
41
|
+
format,
|
|
42
|
+
group_by: groupBy,
|
|
43
|
+
entries: (entries ?? []).map((e) => ({
|
|
44
|
+
reference: e.reference ?? '',
|
|
45
|
+
value: e.value ?? '',
|
|
46
|
+
footprint: e.footprint ?? '',
|
|
47
|
+
lcsc: e.lcsc,
|
|
48
|
+
quantity: e.quantity ?? 0,
|
|
49
|
+
manufacturer: e.manufacturer,
|
|
50
|
+
})),
|
|
51
|
+
total_entries: entries?.length ?? 0,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return {
|
|
56
|
+
project_id: projectId,
|
|
57
|
+
format,
|
|
58
|
+
group_by: groupBy,
|
|
59
|
+
entries: [],
|
|
60
|
+
total_entries: 0,
|
|
61
|
+
not_available: true,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
registry.register({
|
|
67
|
+
name: 'easyeda_bom_validate',
|
|
68
|
+
title: 'Validate BOM',
|
|
69
|
+
description: 'Validate the project BOM against LCSC inventory to identify missing, obsolete, or alternate parts.',
|
|
70
|
+
profile: 'core',
|
|
71
|
+
evidence: ['official-docs'],
|
|
72
|
+
risk: 'medium',
|
|
73
|
+
annotations: {
|
|
74
|
+
readOnlyHint: true,
|
|
75
|
+
idempotentHint: true,
|
|
76
|
+
},
|
|
77
|
+
inputSchema: z.object({
|
|
78
|
+
projectId: z.string(),
|
|
79
|
+
}),
|
|
80
|
+
outputSchema: z.object({
|
|
81
|
+
project_id: z.string(),
|
|
82
|
+
total_parts: z.number().int().nonnegative(),
|
|
83
|
+
missing_parts: z.array(z.object({
|
|
84
|
+
reference: z.string(),
|
|
85
|
+
value: z.string(),
|
|
86
|
+
lcsc: z.string().optional(),
|
|
87
|
+
})),
|
|
88
|
+
obsolete_parts: z.array(z.object({
|
|
89
|
+
reference: z.string(),
|
|
90
|
+
value: z.string(),
|
|
91
|
+
lcsc: z.string().optional(),
|
|
92
|
+
replacement: z.string().optional(),
|
|
93
|
+
})),
|
|
94
|
+
alternate_available: z.array(z.object({
|
|
95
|
+
reference: z.string(),
|
|
96
|
+
value: z.string(),
|
|
97
|
+
lcsc: z.string().optional(),
|
|
98
|
+
alternates: z.array(z.object({
|
|
99
|
+
lcsc: z.string(),
|
|
100
|
+
description: z.string().optional(),
|
|
101
|
+
})),
|
|
102
|
+
})),
|
|
103
|
+
not_available: z.boolean().optional(),
|
|
104
|
+
}),
|
|
105
|
+
handler: async (ctx, params) => {
|
|
106
|
+
const { projectId } = params;
|
|
107
|
+
try {
|
|
108
|
+
const result = await ctx.bridge.call('bom.validate', { projectId });
|
|
109
|
+
const data = result;
|
|
110
|
+
return {
|
|
111
|
+
project_id: projectId,
|
|
112
|
+
total_parts: data.totalParts ?? 0,
|
|
113
|
+
missing_parts: (data.missing ?? []).map((m) => ({
|
|
114
|
+
reference: m.reference ?? '',
|
|
115
|
+
value: m.value ?? '',
|
|
116
|
+
lcsc: m.lcsc,
|
|
117
|
+
})),
|
|
118
|
+
obsolete_parts: (data.obsolete ?? []).map((o) => ({
|
|
119
|
+
reference: o.reference ?? '',
|
|
120
|
+
value: o.value ?? '',
|
|
121
|
+
lcsc: o.lcsc,
|
|
122
|
+
replacement: o.replacement,
|
|
123
|
+
})),
|
|
124
|
+
alternate_available: (data.alternates ?? []).map((a) => ({
|
|
125
|
+
reference: a.reference ?? '',
|
|
126
|
+
value: a.value ?? '',
|
|
127
|
+
lcsc: a.lcsc,
|
|
128
|
+
alternates: (a.alternates ?? []).map((alt) => ({
|
|
129
|
+
lcsc: alt.lcsc ?? '',
|
|
130
|
+
description: alt.description,
|
|
131
|
+
})),
|
|
132
|
+
})),
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return {
|
|
137
|
+
project_id: projectId,
|
|
138
|
+
total_parts: 0,
|
|
139
|
+
missing_parts: [],
|
|
140
|
+
obsolete_parts: [],
|
|
141
|
+
alternate_available: [],
|
|
142
|
+
not_available: true,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
});
|
|
147
|
+
registry.register({
|
|
148
|
+
name: 'easyeda_bom_export',
|
|
149
|
+
title: 'Export BOM',
|
|
150
|
+
description: 'Export the bill of materials to a file on disk in the specified format.',
|
|
151
|
+
profile: 'core',
|
|
152
|
+
evidence: ['official-docs'],
|
|
153
|
+
risk: 'low',
|
|
154
|
+
annotations: {
|
|
155
|
+
readOnlyHint: false,
|
|
156
|
+
destructiveHint: false,
|
|
157
|
+
},
|
|
158
|
+
inputSchema: z.object({
|
|
159
|
+
projectId: z.string(),
|
|
160
|
+
format: z.enum(['csv', 'json', 'xlsx']).default('csv'),
|
|
161
|
+
filePath: z.string(),
|
|
162
|
+
}),
|
|
163
|
+
outputSchema: z.object({
|
|
164
|
+
project_id: z.string(),
|
|
165
|
+
format: z.string(),
|
|
166
|
+
file_path: z.string(),
|
|
167
|
+
exported: z.boolean(),
|
|
168
|
+
entry_count: z.number().int().nonnegative().optional(),
|
|
169
|
+
not_available: z.boolean().optional(),
|
|
170
|
+
}),
|
|
171
|
+
handler: async (ctx, params) => {
|
|
172
|
+
const { projectId, format, filePath } = params;
|
|
173
|
+
try {
|
|
174
|
+
const result = await ctx.bridge.call('bom.generate', {
|
|
175
|
+
projectId,
|
|
176
|
+
format,
|
|
177
|
+
exportPath: filePath,
|
|
178
|
+
});
|
|
179
|
+
const data = result;
|
|
180
|
+
return {
|
|
181
|
+
project_id: projectId,
|
|
182
|
+
format,
|
|
183
|
+
file_path: filePath,
|
|
184
|
+
exported: true,
|
|
185
|
+
entry_count: data.entryCount ?? 0,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
return {
|
|
190
|
+
project_id: projectId,
|
|
191
|
+
format,
|
|
192
|
+
file_path: filePath,
|
|
193
|
+
exported: false,
|
|
194
|
+
not_available: true,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
});
|
|
199
|
+
registry.register({
|
|
200
|
+
name: 'easyeda_bom_sourcing',
|
|
201
|
+
title: 'Get BOM sourcing info',
|
|
202
|
+
description: 'Retrieve pricing and availability information for all parts in the project BOM from specified suppliers.',
|
|
203
|
+
profile: 'core',
|
|
204
|
+
evidence: ['official-docs'],
|
|
205
|
+
risk: 'medium',
|
|
206
|
+
annotations: {
|
|
207
|
+
readOnlyHint: true,
|
|
208
|
+
idempotentHint: true,
|
|
209
|
+
},
|
|
210
|
+
inputSchema: z.object({
|
|
211
|
+
projectId: z.string(),
|
|
212
|
+
suppliers: z.array(z.string()).optional(),
|
|
213
|
+
}),
|
|
214
|
+
outputSchema: z.object({
|
|
215
|
+
project_id: z.string(),
|
|
216
|
+
parts: z.array(z.object({
|
|
217
|
+
reference: z.string(),
|
|
218
|
+
value: z.string(),
|
|
219
|
+
lcsc: z.string().optional(),
|
|
220
|
+
sourcing: z.array(z.object({
|
|
221
|
+
supplier: z.string(),
|
|
222
|
+
in_stock: z.boolean(),
|
|
223
|
+
quantity_available: z.number().int().nonnegative().optional(),
|
|
224
|
+
unit_price: z.number().nonnegative().optional(),
|
|
225
|
+
currency: z.string().optional(),
|
|
226
|
+
lead_time_days: z.number().int().nonnegative().optional(),
|
|
227
|
+
})),
|
|
228
|
+
})),
|
|
229
|
+
total_parts: z.number().int().nonnegative(),
|
|
230
|
+
not_available: z.boolean().optional(),
|
|
231
|
+
}),
|
|
232
|
+
handler: async (ctx, params) => {
|
|
233
|
+
const { projectId, suppliers } = params;
|
|
234
|
+
try {
|
|
235
|
+
const result = await ctx.bridge.call('inventory.search', { projectId, suppliers });
|
|
236
|
+
const data = result;
|
|
237
|
+
return {
|
|
238
|
+
project_id: projectId,
|
|
239
|
+
parts: (data ?? []).map((p) => ({
|
|
240
|
+
reference: p.reference ?? '',
|
|
241
|
+
value: p.value ?? '',
|
|
242
|
+
lcsc: p.lcsc,
|
|
243
|
+
sourcing: (p.sourcing ?? []).map((s) => ({
|
|
244
|
+
supplier: s.supplier ?? '',
|
|
245
|
+
in_stock: s.inStock ?? false,
|
|
246
|
+
quantity_available: s.quantityAvailable,
|
|
247
|
+
unit_price: s.unitPrice,
|
|
248
|
+
currency: s.currency,
|
|
249
|
+
lead_time_days: s.leadTimeDays,
|
|
250
|
+
})),
|
|
251
|
+
})),
|
|
252
|
+
total_parts: data?.length ?? 0,
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
return {
|
|
257
|
+
project_id: projectId,
|
|
258
|
+
parts: [],
|
|
259
|
+
total_parts: 0,
|
|
260
|
+
not_available: true,
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
export { registerBomTools };
|
|
267
|
+
//# sourceMappingURL=L1_bom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"L1_bom.js","sourceRoot":"","sources":["../../src/tools/L1_bom.ts"],"names":[],"mappings":"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"}
|