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.
Files changed (92) hide show
  1. package/README.md +304 -0
  2. package/dist/bridge/client.d.ts +16 -0
  3. package/dist/bridge/client.js +48 -0
  4. package/dist/bridge/client.js.map +1 -0
  5. package/dist/bridge/extension.d.ts +26 -0
  6. package/dist/bridge/extension.js +556 -0
  7. package/dist/bridge/extension.js.map +1 -0
  8. package/dist/bridge/manager.d.ts +37 -0
  9. package/dist/bridge/manager.js +225 -0
  10. package/dist/bridge/manager.js.map +1 -0
  11. package/dist/bridge/protocol.d.ts +68 -0
  12. package/dist/bridge/protocol.js +56 -0
  13. package/dist/bridge/protocol.js.map +1 -0
  14. package/dist/bridge/types.d.ts +52 -0
  15. package/dist/bridge/types.js +19 -0
  16. package/dist/bridge/types.js.map +1 -0
  17. package/dist/config/env.d.ts +98 -0
  18. package/dist/config/env.js +103 -0
  19. package/dist/config/env.js.map +1 -0
  20. package/dist/config/feature-flags.d.ts +16 -0
  21. package/dist/config/feature-flags.js +17 -0
  22. package/dist/config/feature-flags.js.map +1 -0
  23. package/dist/config/profiles.d.ts +10 -0
  24. package/dist/config/profiles.js +45 -0
  25. package/dist/config/profiles.js.map +1 -0
  26. package/dist/index.d.ts +2 -0
  27. package/dist/index.js +76 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/schemas/common.d.ts +123 -0
  30. package/dist/schemas/common.js +79 -0
  31. package/dist/schemas/common.js.map +1 -0
  32. package/dist/server/errors.d.ts +3 -0
  33. package/dist/server/errors.js +59 -0
  34. package/dist/server/errors.js.map +1 -0
  35. package/dist/server/factory.d.ts +17 -0
  36. package/dist/server/factory.js +60 -0
  37. package/dist/server/factory.js.map +1 -0
  38. package/dist/server/transports/http.d.ts +10 -0
  39. package/dist/server/transports/http.js +54 -0
  40. package/dist/server/transports/http.js.map +1 -0
  41. package/dist/storage/database.d.ts +19 -0
  42. package/dist/storage/database.js +136 -0
  43. package/dist/storage/database.js.map +1 -0
  44. package/dist/storage/index.d.ts +2 -0
  45. package/dist/storage/index.js +2 -0
  46. package/dist/storage/index.js.map +1 -0
  47. package/dist/storage/types.d.ts +26 -0
  48. package/dist/storage/types.js +9 -0
  49. package/dist/storage/types.js.map +1 -0
  50. package/dist/tools/L0_diagnostics.d.ts +6 -0
  51. package/dist/tools/L0_diagnostics.js +297 -0
  52. package/dist/tools/L0_diagnostics.js.map +1 -0
  53. package/dist/tools/L1_board.d.ts +6 -0
  54. package/dist/tools/L1_board.js +182 -0
  55. package/dist/tools/L1_board.js.map +1 -0
  56. package/dist/tools/L1_bom.d.ts +6 -0
  57. package/dist/tools/L1_bom.js +267 -0
  58. package/dist/tools/L1_bom.js.map +1 -0
  59. package/dist/tools/L1_drc_erc.d.ts +6 -0
  60. package/dist/tools/L1_drc_erc.js +235 -0
  61. package/dist/tools/L1_drc_erc.js.map +1 -0
  62. package/dist/tools/L1_export.d.ts +6 -0
  63. package/dist/tools/L1_export.js +214 -0
  64. package/dist/tools/L1_export.js.map +1 -0
  65. package/dist/tools/L1_schematic.d.ts +6 -0
  66. package/dist/tools/L1_schematic.js +182 -0
  67. package/dist/tools/L1_schematic.js.map +1 -0
  68. package/dist/tools/registry.d.ts +21 -0
  69. package/dist/tools/registry.js +55 -0
  70. package/dist/tools/registry.js.map +1 -0
  71. package/dist/tools/types.d.ts +53 -0
  72. package/dist/tools/types.js +2 -0
  73. package/dist/tools/types.js.map +1 -0
  74. package/dist/utils/logger.d.ts +4 -0
  75. package/dist/utils/logger.js +54 -0
  76. package/dist/utils/logger.js.map +1 -0
  77. package/dist/utils/redaction.d.ts +2 -0
  78. package/dist/utils/redaction.js +56 -0
  79. package/dist/utils/redaction.js.map +1 -0
  80. package/dist/vendors/digikey/client.d.ts +49 -0
  81. package/dist/vendors/digikey/client.js +200 -0
  82. package/dist/vendors/digikey/client.js.map +1 -0
  83. package/dist/vendors/jlcpcb/client.d.ts +79 -0
  84. package/dist/vendors/jlcpcb/client.js +156 -0
  85. package/dist/vendors/jlcpcb/client.js.map +1 -0
  86. package/dist/vendors/lcsc/client.d.ts +57 -0
  87. package/dist/vendors/lcsc/client.js +140 -0
  88. package/dist/vendors/lcsc/client.js.map +1 -0
  89. package/dist/vendors/mouser/client.d.ts +46 -0
  90. package/dist/vendors/mouser/client.js +141 -0
  91. package/dist/vendors/mouser/client.js.map +1 -0
  92. 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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,SAAS,kBAAkB,CACzB,QAAqD,EACrD,OAAkB;IAElB,QAAQ,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,sBAAsB;QAC5B,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,0FAA0F;QAC5F,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,CAAC,eAAe,CAAC;QAC3B,IAAI,EAAE,KAAK;QACX,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;SACrB;QACD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;SACtB,CAAC;QACF,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;YACtB,MAAM,EAAE,CAAC,CAAC,KAAK,CACb,CAAC,CAAC,MAAM,CAAC;gBACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;gBAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;gBAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC5B,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;gBACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;aACjD,CAAC,CACH;YACD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;YACrC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SACtC,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,GAAgB,EAAE,MAAe,EAAE,EAAE;YACnD,MAAM,EAAE,SAAS,EAAE,GAAG,MAA+B,CAAC;YACtD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;gBACxE,MAAM,MAAM,GAAG,MAMb,CAAC;gBACH,OAAO;oBACL,UAAU,EAAE,SAAS;oBACrB,MAAM,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACjC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;wBAClB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;wBAClB,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;wBAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;qBACf,CAAC,CAAC;oBACH,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;iBAC3B,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;oBACL,UAAU,EAAE,SAAS;oBACrB,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,IAAI;iBACpB,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,oFAAoF;QACtF,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,CAAC,eAAe,CAAC;QAC3B,IAAI,EAAE,KAAK;QACX,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;SACrB;QACD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;SACtB,CAAC;QACF,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;YACtB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;YAC5C,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;YACvD,MAAM,EAAE,CAAC,CAAC,KAAK,CACb,CAAC,CAAC,MAAM,CAAC;gBACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;gBAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;gBAChB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;gBACjD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC/B,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;gBACxD,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;aACtD,CAAC,CACH;YACD,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SACtC,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,GAAgB,EAAE,MAAe,EAAE,EAAE;YACnD,MAAM,EAAE,SAAS,EAAE,GAAG,MAA+B,CAAC;YACtD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;gBACxE,MAAM,IAAI,GAAG,MAWZ,CAAC;gBACF,OAAO;oBACL,UAAU,EAAE,SAAS;oBACrB,YAAY,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;oBAC1D,kBAAkB,EAAE,IAAI,CAAC,gBAAgB;oBACzC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACtC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;wBAClB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;wBAClB,YAAY,EAAE,CAAC,CAAC,WAAW;wBAC3B,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,mBAAmB,EAAE,CAAC,CAAC,kBAAkB;wBACzC,gBAAgB,EAAE,CAAC,CAAC,cAAc;qBACnC,CAAC,CAAC;iBACJ,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;oBACL,UAAU,EAAE,SAAS;oBACrB,YAAY,EAAE,CAAC;oBACf,MAAM,EAAE,EAAE;oBACV,aAAa,EAAE,IAAI;iBACpB,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,0BAA0B;QAChC,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,6EAA6E;QAC1F,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,CAAC,eAAe,CAAC;QAC3B,IAAI,EAAE,KAAK;QACX,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;SACrB;QACD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;SACtB,CAAC;QACF,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;YACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;YAC7C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;YAC9C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;YACnD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;YAC7C,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SACtC,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,IAAiB,EAAE,MAAe,EAAE,EAAE;YACpD,MAAM,EAAE,SAAS,EAAE,GAAG,MAA+B,CAAC;YACtD,OAAO;gBACL,UAAU,EAAE,SAAS;gBACrB,mBAAmB,EAAE,CAAC;gBACtB,aAAa,EAAE,IAAI;aACpB,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,wBAAwB;QAC9B,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,8EAA8E;QAC3F,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,CAAC,eAAe,CAAC;QAC3B,IAAI,EAAE,KAAK;QACX,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;SACrB;QACD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;SACtB,CAAC;QACF,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;YACtB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;YACpC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;YACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;YACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;YACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;YACrD,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SACtC,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,IAAiB,EAAE,MAAe,EAAE,EAAE;YACpD,MAAM,EAAE,SAAS,EAAE,GAAG,MAA+B,CAAC;YACtD,OAAO;gBACL,UAAU,EAAE,SAAS;gBACrB,IAAI,EAAE,CAAC;gBACP,MAAM,EAAE,CAAC;gBACT,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,CAAC;gBACP,aAAa,EAAE,IAAI;aACpB,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type ToolDefinition } from './types.js';
2
+ import { type EnvConfig } from '../config/env.js';
3
+ declare function registerBomTools(registry: {
4
+ register: (def: ToolDefinition) => void;
5
+ }, _config: EnvConfig): void;
6
+ export { registerBomTools };
@@ -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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"}
@@ -0,0 +1,6 @@
1
+ import { type ToolDefinition } from './types.js';
2
+ import { type EnvConfig } from '../config/env.js';
3
+ declare function registerDrcErcTools(registry: {
4
+ register: (def: ToolDefinition) => void;
5
+ }, _config: EnvConfig): void;
6
+ export { registerDrcErcTools };