@windypro-rourou/dsh-eda 0.1.0 → 0.1.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.
Files changed (407) hide show
  1. package/README.md +71 -119
  2. package/cordis.patch.yml +9 -7
  3. package/lib/board.js +80 -0
  4. package/lib/client.js +2 -2
  5. package/lib/index.js +339 -11
  6. package/lib/installer.js +4 -4
  7. package/lib/skill.js +138 -0
  8. package/package.json +12 -2
  9. package/skill/INDEX.md +193 -0
  10. package/skill/README.official.md +125 -0
  11. package/skill/README.zh-Hans.official.md +125 -0
  12. package/skill/SKILL.md +746 -0
  13. package/skill/format/index.md +152 -0
  14. package/skill/format/pcb/3d.md +166 -0
  15. package/skill/format/pcb/attr.md +63 -0
  16. package/skill/format/pcb/common.md +306 -0
  17. package/skill/format/pcb/component.md +132 -0
  18. package/skill/format/pcb/dimension.md +58 -0
  19. package/skill/format/pcb/index.md +17 -0
  20. package/skill/format/pcb/obj.md +43 -0
  21. package/skill/format/pcb/pad_via.md +151 -0
  22. package/skill/format/pcb/panel.md +64 -0
  23. package/skill/format/pcb/partition.md +43 -0
  24. package/skill/format/pcb/primitive.md +196 -0
  25. package/skill/format/pcb/rule.md +71 -0
  26. package/skill/format/pcb/shape.md +441 -0
  27. package/skill/format/pcb/text.md +62 -0
  28. package/skill/format/project/blob.md +30 -0
  29. package/skill/format/project/common.md +42 -0
  30. package/skill/format/project/group.md +62 -0
  31. package/skill/format/project/index.md +12 -0
  32. package/skill/format/project/instance.md +32 -0
  33. package/skill/format/project/meta.md +189 -0
  34. package/skill/format/project/variant.md +30 -0
  35. package/skill/format/schematic/attr.md +41 -0
  36. package/skill/format/schematic/common.md +47 -0
  37. package/skill/format/schematic/component.md +91 -0
  38. package/skill/format/schematic/index.md +14 -0
  39. package/skill/format/schematic/obj.md +41 -0
  40. package/skill/format/schematic/pin.md +59 -0
  41. package/skill/format/schematic/shape.md +231 -0
  42. package/skill/format/schematic/structure.md +53 -0
  43. package/skill/format/schematic/table.md +109 -0
  44. package/skill/format/schematic/text.md +47 -0
  45. package/skill/format/schematic/wire.md +132 -0
  46. package/skill/guide/ancillary-projects/pro-api-sdk.md +1 -0
  47. package/skill/guide/ancillary-projects/pro-api-types.md +5 -0
  48. package/skill/guide/ancillary-projects.md +10 -0
  49. package/skill/guide/error-handling.md +38 -0
  50. package/skill/guide/extension-json.md +135 -0
  51. package/skill/guide/extensions-marketplace.md +61 -0
  52. package/skill/guide/how-to-start.md +301 -0
  53. package/skill/guide/i18n.md +57 -0
  54. package/skill/guide/index.md +7 -0
  55. package/skill/guide/inline-frame.md +20 -0
  56. package/skill/guide/invoke-apis.md +81 -0
  57. package/skill/guide/stability.md +37 -0
  58. package/skill/references/_index.md +398 -0
  59. package/skill/references/_quick-reference.md +3028 -0
  60. package/skill/references/classes/DMT_Board.md +533 -0
  61. package/skill/references/classes/DMT_EditorControl.md +1736 -0
  62. package/skill/references/classes/DMT_Event.md +356 -0
  63. package/skill/references/classes/DMT_Folder.md +775 -0
  64. package/skill/references/classes/DMT_Panel.md +531 -0
  65. package/skill/references/classes/DMT_Pcb.md +575 -0
  66. package/skill/references/classes/DMT_Project.md +573 -0
  67. package/skill/references/classes/DMT_Schematic.md +1477 -0
  68. package/skill/references/classes/DMT_SelectControl.md +96 -0
  69. package/skill/references/classes/DMT_Team.md +172 -0
  70. package/skill/references/classes/DMT_Workspace.md +198 -0
  71. package/skill/references/classes/EDA.md +961 -0
  72. package/skill/references/classes/IPCB_ComplexPolygon.md +299 -0
  73. package/skill/references/classes/IPCB_Polygon.md +175 -0
  74. package/skill/references/classes/IPCB_PrimitiveArc.md +1901 -0
  75. package/skill/references/classes/IPCB_PrimitiveAttribute.md +2993 -0
  76. package/skill/references/classes/IPCB_PrimitiveComponent.md +2627 -0
  77. package/skill/references/classes/IPCB_PrimitiveComponentPad.md +410 -0
  78. package/skill/references/classes/IPCB_PrimitiveDimension.md +1419 -0
  79. package/skill/references/classes/IPCB_PrimitiveFill.md +1325 -0
  80. package/skill/references/classes/IPCB_PrimitiveImage.md +1461 -0
  81. package/skill/references/classes/IPCB_PrimitiveLine.md +1639 -0
  82. package/skill/references/classes/IPCB_PrimitiveObject.md +1700 -0
  83. package/skill/references/classes/IPCB_PrimitivePad.md +3155 -0
  84. package/skill/references/classes/IPCB_PrimitivePolyline.md +1193 -0
  85. package/skill/references/classes/IPCB_PrimitivePour.md +1858 -0
  86. package/skill/references/classes/IPCB_PrimitivePoured.md +556 -0
  87. package/skill/references/classes/IPCB_PrimitiveRegion.md +1332 -0
  88. package/skill/references/classes/IPCB_PrimitiveString.md +2315 -0
  89. package/skill/references/classes/IPCB_PrimitiveVia.md +1588 -0
  90. package/skill/references/classes/ISCH_PrimitiveArc.md +1676 -0
  91. package/skill/references/classes/ISCH_PrimitiveAttribute.md +2541 -0
  92. package/skill/references/classes/ISCH_PrimitiveBus.md +973 -0
  93. package/skill/references/classes/ISCH_PrimitiveCbbSymbolComponent.md +260 -0
  94. package/skill/references/classes/ISCH_PrimitiveCircle.md +1392 -0
  95. package/skill/references/classes/ISCH_PrimitiveComponent.md +2913 -0
  96. package/skill/references/classes/ISCH_PrimitiveComponentPin.md +155 -0
  97. package/skill/references/classes/ISCH_PrimitiveObject.md +960 -0
  98. package/skill/references/classes/ISCH_PrimitivePin.md +2402 -0
  99. package/skill/references/classes/ISCH_PrimitivePolygon.md +1028 -0
  100. package/skill/references/classes/ISCH_PrimitiveRectangle.md +1777 -0
  101. package/skill/references/classes/ISCH_PrimitiveText.md +1771 -0
  102. package/skill/references/classes/ISCH_PrimitiveWire.md +973 -0
  103. package/skill/references/classes/LIB_3DModel.md +780 -0
  104. package/skill/references/classes/LIB_Cbb.md +957 -0
  105. package/skill/references/classes/LIB_Classification.md +965 -0
  106. package/skill/references/classes/LIB_Device.md +1221 -0
  107. package/skill/references/classes/LIB_Footprint.md +1153 -0
  108. package/skill/references/classes/LIB_LibrariesList.md +329 -0
  109. package/skill/references/classes/LIB_PanelLibrary.md +855 -0
  110. package/skill/references/classes/LIB_SelectControl.md +89 -0
  111. package/skill/references/classes/LIB_SimulationModel.md +821 -0
  112. package/skill/references/classes/LIB_Symbol.md +1195 -0
  113. package/skill/references/classes/PCB_Document.md +1754 -0
  114. package/skill/references/classes/PCB_Drc.md +3375 -0
  115. package/skill/references/classes/PCB_Event.md +1081 -0
  116. package/skill/references/classes/PCB_Layer.md +1911 -0
  117. package/skill/references/classes/PCB_ManufactureData.md +2968 -0
  118. package/skill/references/classes/PCB_MathPolygon.md +785 -0
  119. package/skill/references/classes/PCB_Net.md +1128 -0
  120. package/skill/references/classes/PCB_Primitive.md +217 -0
  121. package/skill/references/classes/PCB_PrimitiveArc.md +894 -0
  122. package/skill/references/classes/PCB_PrimitiveAttribute.md +717 -0
  123. package/skill/references/classes/PCB_PrimitiveComponent.md +1050 -0
  124. package/skill/references/classes/PCB_PrimitiveDimension.md +833 -0
  125. package/skill/references/classes/PCB_PrimitiveFill.md +861 -0
  126. package/skill/references/classes/PCB_PrimitiveImage.md +875 -0
  127. package/skill/references/classes/PCB_PrimitiveLine.md +858 -0
  128. package/skill/references/classes/PCB_PrimitiveObject.md +800 -0
  129. package/skill/references/classes/PCB_PrimitivePad.md +944 -0
  130. package/skill/references/classes/PCB_PrimitivePolyline.md +819 -0
  131. package/skill/references/classes/PCB_PrimitivePour.md +845 -0
  132. package/skill/references/classes/PCB_PrimitivePoured.md +363 -0
  133. package/skill/references/classes/PCB_PrimitiveRegion.md +799 -0
  134. package/skill/references/classes/PCB_PrimitiveString.md +910 -0
  135. package/skill/references/classes/PCB_PrimitiveVia.md +765 -0
  136. package/skill/references/classes/PCB_RayTracerEngine.md +263 -0
  137. package/skill/references/classes/PCB_SelectControl.md +495 -0
  138. package/skill/references/classes/PNL_Document.md +83 -0
  139. package/skill/references/classes/SCH_Document.md +809 -0
  140. package/skill/references/classes/SCH_Drc.md +242 -0
  141. package/skill/references/classes/SCH_Event.md +583 -0
  142. package/skill/references/classes/SCH_ManufactureData.md +1205 -0
  143. package/skill/references/classes/SCH_Net.md +200 -0
  144. package/skill/references/classes/SCH_Netlist.md +191 -0
  145. package/skill/references/classes/SCH_Primitive.md +337 -0
  146. package/skill/references/classes/SCH_PrimitiveArc.md +692 -0
  147. package/skill/references/classes/SCH_PrimitiveAttribute.md +590 -0
  148. package/skill/references/classes/SCH_PrimitiveBus.md +624 -0
  149. package/skill/references/classes/SCH_PrimitiveCircle.md +683 -0
  150. package/skill/references/classes/SCH_PrimitiveComponent.md +2240 -0
  151. package/skill/references/classes/SCH_PrimitiveObject.md +666 -0
  152. package/skill/references/classes/SCH_PrimitivePin.md +754 -0
  153. package/skill/references/classes/SCH_PrimitivePolygon.md +627 -0
  154. package/skill/references/classes/SCH_PrimitiveRectangle.md +731 -0
  155. package/skill/references/classes/SCH_PrimitiveText.md +746 -0
  156. package/skill/references/classes/SCH_PrimitiveWire.md +703 -0
  157. package/skill/references/classes/SCH_SelectControl.md +520 -0
  158. package/skill/references/classes/SCH_SimulationEngine.md +133 -0
  159. package/skill/references/classes/SCH_Utils.md +121 -0
  160. package/skill/references/classes/SYS_ClientUrl.md +173 -0
  161. package/skill/references/classes/SYS_Dialog.md +825 -0
  162. package/skill/references/classes/SYS_Environment.md +502 -0
  163. package/skill/references/classes/SYS_FileManager.md +1686 -0
  164. package/skill/references/classes/SYS_FileSystem.md +1171 -0
  165. package/skill/references/classes/SYS_FontManager.md +224 -0
  166. package/skill/references/classes/SYS_FormatConversion.md +349 -0
  167. package/skill/references/classes/SYS_HeaderMenu.md +479 -0
  168. package/skill/references/classes/SYS_I18n.md +861 -0
  169. package/skill/references/classes/SYS_IFrame.md +535 -0
  170. package/skill/references/classes/SYS_LoadingAndProgressBar.md +246 -0
  171. package/skill/references/classes/SYS_Log.md +424 -0
  172. package/skill/references/classes/SYS_Math.md +1565 -0
  173. package/skill/references/classes/SYS_Message.md +363 -0
  174. package/skill/references/classes/SYS_MessageBox.md +285 -0
  175. package/skill/references/classes/SYS_MessageBus.md +1618 -0
  176. package/skill/references/classes/SYS_PanelControl.md +696 -0
  177. package/skill/references/classes/SYS_RightClickMenu.md +175 -0
  178. package/skill/references/classes/SYS_Setting.md +85 -0
  179. package/skill/references/classes/SYS_ShortcutKey.md +623 -0
  180. package/skill/references/classes/SYS_Storage.md +484 -0
  181. package/skill/references/classes/SYS_Timer.md +447 -0
  182. package/skill/references/classes/SYS_ToastMessage.md +194 -0
  183. package/skill/references/classes/SYS_Tool.md +241 -0
  184. package/skill/references/classes/SYS_Unit.md +594 -0
  185. package/skill/references/classes/SYS_WebSocket.md +401 -0
  186. package/skill/references/classes/SYS_Window.md +850 -0
  187. package/skill/references/enums/EDMT_EditorDocumentType.md +279 -0
  188. package/skill/references/enums/EDMT_EditorSplitScreenDirection.md +48 -0
  189. package/skill/references/enums/EDMT_EditorTabEventType.md +63 -0
  190. package/skill/references/enums/EDMT_IndicatorMarkerType.md +81 -0
  191. package/skill/references/enums/EDMT_ItemType.md +158 -0
  192. package/skill/references/enums/EDMT_ProjectCollaborationMode.md +48 -0
  193. package/skill/references/enums/ELIB_DeviceJlcLibraryCategory.md +48 -0
  194. package/skill/references/enums/ELIB_LibraryType.md +114 -0
  195. package/skill/references/enums/ELIB_PreviewType.md +70 -0
  196. package/skill/references/enums/ELIB_SimulationModelType.md +48 -0
  197. package/skill/references/enums/ELIB_SymbolType.md +125 -0
  198. package/skill/references/enums/EPCB_AutoRoutingCornerStyle.md +48 -0
  199. package/skill/references/enums/EPCB_AutoRoutingExistingPrimitiveMode.md +48 -0
  200. package/skill/references/enums/EPCB_AutoRoutingOptimization.md +48 -0
  201. package/skill/references/enums/EPCB_DocumentCanvasUpdateCalculationActiveStatus.md +48 -0
  202. package/skill/references/enums/EPCB_DocumentRatlineCalculatingActiveStatus.md +52 -0
  203. package/skill/references/enums/EPCB_InactiveLayerDisplayMode.md +59 -0
  204. package/skill/references/enums/EPCB_LayerColorConfiguration.md +81 -0
  205. package/skill/references/enums/EPCB_LayerId.md +882 -0
  206. package/skill/references/enums/EPCB_LayerStatus.md +59 -0
  207. package/skill/references/enums/EPCB_LayerType.md +114 -0
  208. package/skill/references/enums/EPCB_MouseEventType.md +59 -0
  209. package/skill/references/enums/EPCB_NetEventType.md +59 -0
  210. package/skill/references/enums/EPCB_PcbPlateType.md +48 -0
  211. package/skill/references/enums/EPCB_PdfOutputMethod.md +59 -0
  212. package/skill/references/enums/EPCB_PrimitiveArcInteractiveMode.md +48 -0
  213. package/skill/references/enums/EPCB_PrimitiveDimensionType.md +59 -0
  214. package/skill/references/enums/EPCB_PrimitiveEventType.md +59 -0
  215. package/skill/references/enums/EPCB_PrimitiveFillMode.md +63 -0
  216. package/skill/references/enums/EPCB_PrimitivePadHeatWeldingConnectionMethod.md +59 -0
  217. package/skill/references/enums/EPCB_PrimitivePadHoleType.md +59 -0
  218. package/skill/references/enums/EPCB_PrimitivePadShapeType.md +81 -0
  219. package/skill/references/enums/EPCB_PrimitivePadType.md +59 -0
  220. package/skill/references/enums/EPCB_PrimitivePourFillMethod.md +59 -0
  221. package/skill/references/enums/EPCB_PrimitiveRegionRuleType.md +96 -0
  222. package/skill/references/enums/EPCB_PrimitiveStringAlignMode.md +125 -0
  223. package/skill/references/enums/EPCB_PrimitiveType.md +202 -0
  224. package/skill/references/enums/EPCB_PrimitiveViaType.md +59 -0
  225. package/skill/references/enums/ESCH_DynamicSimulationEnginePullEventType.md +103 -0
  226. package/skill/references/enums/ESCH_DynamicSimulationEnginePushEventType.md +81 -0
  227. package/skill/references/enums/ESCH_ExportDocumentFileType.md +59 -0
  228. package/skill/references/enums/ESCH_MouseEventType.md +48 -0
  229. package/skill/references/enums/ESCH_PrimitiveComponentType.md +125 -0
  230. package/skill/references/enums/ESCH_PrimitiveEventType.md +70 -0
  231. package/skill/references/enums/ESCH_PrimitiveFillStyle.md +114 -0
  232. package/skill/references/enums/ESCH_PrimitiveLineType.md +70 -0
  233. package/skill/references/enums/ESCH_PrimitivePinShape.md +70 -0
  234. package/skill/references/enums/ESCH_PrimitivePinType.md +147 -0
  235. package/skill/references/enums/ESCH_PrimitiveTextAlignMode.md +125 -0
  236. package/skill/references/enums/ESCH_PrimitiveType.md +180 -0
  237. package/skill/references/enums/ESCH_SimulationNetlistType.md +37 -0
  238. package/skill/references/enums/ESCH_SpiceSimulationEnginePullEventType.md +48 -0
  239. package/skill/references/enums/ESCH_SpiceSimulationEnginePushEventType.md +70 -0
  240. package/skill/references/enums/ESYS_BottomPanelTab.md +81 -0
  241. package/skill/references/enums/ESYS_HeaderMenuEnvironment.md +158 -0
  242. package/skill/references/enums/ESYS_ImportProjectBoardOutlineSource.md +52 -0
  243. package/skill/references/enums/ESYS_ImportProjectImportOption.md +59 -0
  244. package/skill/references/enums/ESYS_ImportProjectSchematicObjectStyle.md +48 -0
  245. package/skill/references/enums/ESYS_ImportProjectViaSolderMaskExpansion.md +52 -0
  246. package/skill/references/enums/ESYS_LeftPanelTab.md +81 -0
  247. package/skill/references/enums/ESYS_LogType.md +103 -0
  248. package/skill/references/enums/ESYS_NetlistType.md +114 -0
  249. package/skill/references/enums/ESYS_RightPanelTab.md +202 -0
  250. package/skill/references/enums/ESYS_ShortcutKeyEffectiveEditorRange.md +191 -0
  251. package/skill/references/enums/ESYS_ShortcutKeyEffectiveEditorScene.md +92 -0
  252. package/skill/references/enums/ESYS_StartPageQuickStartItem.md +206 -0
  253. package/skill/references/enums/ESYS_Theme.md +48 -0
  254. package/skill/references/enums/ESYS_ToastMessageType.md +81 -0
  255. package/skill/references/enums/ESYS_Unit.md +103 -0
  256. package/skill/references/enums/ESYS_WindowEventType.md +48 -0
  257. package/skill/references/enums/ESYS_WindowOpenTarget.md +48 -0
  258. package/skill/references/enums/NetportDeviceName.md +147 -0
  259. package/skill/references/enums/SchToolBarDeviceName.md +279 -0
  260. package/skill/references/interfaces/BoardProps.md +169 -0
  261. package/skill/references/interfaces/ButtonProps.md +169 -0
  262. package/skill/references/interfaces/CheckBoxProps.md +196 -0
  263. package/skill/references/interfaces/ComponentPropsMap.md +448 -0
  264. package/skill/references/interfaces/DialogProps.md +385 -0
  265. package/skill/references/interfaces/FlexItemProps.md +116 -0
  266. package/skill/references/interfaces/FlexProps.md +224 -0
  267. package/skill/references/interfaces/GridItemProps.md +143 -0
  268. package/skill/references/interfaces/GridProps.md +143 -0
  269. package/skill/references/interfaces/IDMT_BoardItem.md +171 -0
  270. package/skill/references/interfaces/IDMT_BriefProjectItem.md +171 -0
  271. package/skill/references/interfaces/IDMT_EditorDocumentItem.md +169 -0
  272. package/skill/references/interfaces/IDMT_EditorSplitScreenItem.md +173 -0
  273. package/skill/references/interfaces/IDMT_EditorTabItem.md +169 -0
  274. package/skill/references/interfaces/IDMT_FolderItem.md +225 -0
  275. package/skill/references/interfaces/IDMT_IndicatorMarkerShape.md +393 -0
  276. package/skill/references/interfaces/IDMT_PanelItem.md +144 -0
  277. package/skill/references/interfaces/IDMT_PcbItem.md +171 -0
  278. package/skill/references/interfaces/IDMT_ProjectItem.md +143 -0
  279. package/skill/references/interfaces/IDMT_SchematicItem.md +225 -0
  280. package/skill/references/interfaces/IDMT_SchematicPageItem.md +198 -0
  281. package/skill/references/interfaces/IDMT_TeamItem.md +144 -0
  282. package/skill/references/interfaces/IDMT_WorkspaceItem.md +117 -0
  283. package/skill/references/interfaces/IDesignPortal.md +103 -0
  284. package/skill/references/interfaces/ILIB_3DModelItem.md +198 -0
  285. package/skill/references/interfaces/ILIB_3DModelSearchItem.md +277 -0
  286. package/skill/references/interfaces/ILIB_CbbItem.md +225 -0
  287. package/skill/references/interfaces/ILIB_CbbSearchItem.md +277 -0
  288. package/skill/references/interfaces/ILIB_ClassificationIndex.md +150 -0
  289. package/skill/references/interfaces/ILIB_DeviceAssociationItem.md +210 -0
  290. package/skill/references/interfaces/ILIB_DeviceExtendPropertyItem.md +304 -0
  291. package/skill/references/interfaces/ILIB_DeviceItem.md +279 -0
  292. package/skill/references/interfaces/ILIB_DevicePropertiesForSearch.md +250 -0
  293. package/skill/references/interfaces/ILIB_DeviceSearchItem.md +521 -0
  294. package/skill/references/interfaces/ILIB_ExtendLibrary3DModelFunctions.md +64 -0
  295. package/skill/references/interfaces/ILIB_ExtendLibraryCbbFunctions.md +99 -0
  296. package/skill/references/interfaces/ILIB_ExtendLibraryClassificationIndex.md +150 -0
  297. package/skill/references/interfaces/ILIB_ExtendLibraryDeviceFunctions.md +157 -0
  298. package/skill/references/interfaces/ILIB_ExtendLibraryFootprintFunctions.md +63 -0
  299. package/skill/references/interfaces/ILIB_ExtendLibraryFunctions.md +123 -0
  300. package/skill/references/interfaces/ILIB_ExtendLibraryItem.md +97 -0
  301. package/skill/references/interfaces/ILIB_ExtendLibraryItemIndex.md +98 -0
  302. package/skill/references/interfaces/ILIB_ExtendLibrarySearchProperty.md +115 -0
  303. package/skill/references/interfaces/ILIB_ExtendLibrarySearchResult.md +169 -0
  304. package/skill/references/interfaces/ILIB_ExtendLibrarySearchResultDataLine.md +234 -0
  305. package/skill/references/interfaces/ILIB_ExtendLibrarySymbolFunctions.md +105 -0
  306. package/skill/references/interfaces/ILIB_ExtendLibraryUserIndex.md +96 -0
  307. package/skill/references/interfaces/ILIB_FootprintItem.md +198 -0
  308. package/skill/references/interfaces/ILIB_FootprintPropertiesForSearch.md +61 -0
  309. package/skill/references/interfaces/ILIB_FootprintSearchItem.md +277 -0
  310. package/skill/references/interfaces/ILIB_LibraryInfo.md +92 -0
  311. package/skill/references/interfaces/ILIB_LibraryItem.md +115 -0
  312. package/skill/references/interfaces/ILIB_PanelLibraryItem.md +198 -0
  313. package/skill/references/interfaces/ILIB_PanelLibrarySearchItem.md +277 -0
  314. package/skill/references/interfaces/ILIB_SimulationModelItem.md +306 -0
  315. package/skill/references/interfaces/ILIB_SimulationModelSearchItem.md +304 -0
  316. package/skill/references/interfaces/ILIB_SymbolItem.md +279 -0
  317. package/skill/references/interfaces/ILIB_SymbolPropertiesForSearch.md +61 -0
  318. package/skill/references/interfaces/ILIB_SymbolSearchItem.md +304 -0
  319. package/skill/references/interfaces/IPCB_AutoLayoutResult.md +169 -0
  320. package/skill/references/interfaces/IPCB_AutoRoutingProps.md +220 -0
  321. package/skill/references/interfaces/IPCB_AutoRoutingResult.md +169 -0
  322. package/skill/references/interfaces/IPCB_BomPropertiesTableColumns.md +169 -0
  323. package/skill/references/interfaces/IPCB_DifferentialPairItem.md +115 -0
  324. package/skill/references/interfaces/IPCB_DiscretizeOptions.md +65 -0
  325. package/skill/references/interfaces/IPCB_DiscretizedPoint.md +88 -0
  326. package/skill/references/interfaces/IPCB_EqualLengthNetGroupItem.md +115 -0
  327. package/skill/references/interfaces/IPCB_LayerItem.md +277 -0
  328. package/skill/references/interfaces/IPCB_NetClassItem.md +115 -0
  329. package/skill/references/interfaces/IPCB_NetInfo.md +115 -0
  330. package/skill/references/interfaces/IPCB_PadPairGroupItem.md +88 -0
  331. package/skill/references/interfaces/IPCB_PadPairMinWireLengthItem.md +88 -0
  332. package/skill/references/interfaces/IPCB_PhysicalStackingConfiguration.md +115 -0
  333. package/skill/references/interfaces/IPCB_Primitive.md +218 -0
  334. package/skill/references/interfaces/IPCB_PrimitiveAPI.md +175 -0
  335. package/skill/references/interfaces/IPCB_PrimitivePadHeatWelding.md +151 -0
  336. package/skill/references/interfaces/IPCB_PrimitivePouredPourFill.md +142 -0
  337. package/skill/references/interfaces/IPCB_PrimitiveSolderMaskAndPasteMaskExpansion.md +154 -0
  338. package/skill/references/interfaces/IPCB_SubstratePhysicalProperties.md +88 -0
  339. package/skill/references/interfaces/IRawNet.md +103 -0
  340. package/skill/references/interfaces/IRawPureSchematic.md +80 -0
  341. package/skill/references/interfaces/IRawSchematic.md +103 -0
  342. package/skill/references/interfaces/IRawWire.md +149 -0
  343. package/skill/references/interfaces/ISCH_DrcError.md +142 -0
  344. package/skill/references/interfaces/ISCH_DrcErrorPrimitive.md +142 -0
  345. package/skill/references/interfaces/ISCH_ExportPngResolution.md +94 -0
  346. package/skill/references/interfaces/ISCH_NetInfo.md +88 -0
  347. package/skill/references/interfaces/ISCH_Primitive.md +219 -0
  348. package/skill/references/interfaces/ISCH_PrimitiveAPI.md +175 -0
  349. package/skill/references/interfaces/ISCH_ProjectNetInfo.md +142 -0
  350. package/skill/references/interfaces/ISCH_WireInfo.md +169 -0
  351. package/skill/references/interfaces/ISYS_FileSystemFileList.md +169 -0
  352. package/skill/references/interfaces/ISYS_HeaderMenuSub1MenuItem.md +174 -0
  353. package/skill/references/interfaces/ISYS_HeaderMenuSub2MenuItem.md +147 -0
  354. package/skill/references/interfaces/ISYS_HeaderMenuTopMenuItem.md +115 -0
  355. package/skill/references/interfaces/ISYS_HeaderMenus.md +408 -0
  356. package/skill/references/interfaces/ISYS_LogLine.md +115 -0
  357. package/skill/references/interfaces/ISYS_MathBBox.md +142 -0
  358. package/skill/references/interfaces/ISYS_MathPoint.md +88 -0
  359. package/skill/references/interfaces/ISYS_MathPolygonWithHoles.md +92 -0
  360. package/skill/references/interfaces/ISYS_MessageBusTask.md +115 -0
  361. package/skill/references/interfaces/ISYS_MultilingualLanguagesData.md +13 -0
  362. package/skill/references/interfaces/ISYS_PcbComparisonResponse.md +115 -0
  363. package/skill/references/interfaces/ISYS_RightClickMenuItem.md +174 -0
  364. package/skill/references/interfaces/ISYS_ShortcutKeyData.md +169 -0
  365. package/skill/references/interfaces/ISYS_ShortcutKeyDataWithCallFn.md +62 -0
  366. package/skill/references/interfaces/ISYS_ShortcutKeyDataWithUserDefinedShortcutKey.md +62 -0
  367. package/skill/references/interfaces/ISYS_WindowEventListenerRemovableObject.md +109 -0
  368. package/skill/references/interfaces/IconProps.md +88 -0
  369. package/skill/references/interfaces/ImageProps.md +115 -0
  370. package/skill/references/interfaces/InputProps.md +520 -0
  371. package/skill/references/interfaces/ListChildren.md +223 -0
  372. package/skill/references/interfaces/ListProps.md +223 -0
  373. package/skill/references/interfaces/ModalProps.md +358 -0
  374. package/skill/references/interfaces/RadioGroupProps.md +196 -0
  375. package/skill/references/interfaces/RadioItem.md +115 -0
  376. package/skill/references/interfaces/ScrollerProps.md +169 -0
  377. package/skill/references/interfaces/SelectListItem.md +142 -0
  378. package/skill/references/interfaces/SelectProps.md +169 -0
  379. package/skill/references/interfaces/SlotProps.md +88 -0
  380. package/skill/references/interfaces/StyleProps.md +385 -0
  381. package/skill/references/interfaces/TextAreaProps.md +196 -0
  382. package/skill/references/interfaces/TextProps.md +169 -0
  383. package/skill/references/types/ISYS_LanguageKeyValuePairs.md +13 -0
  384. package/skill/references/types/TPCB_LayerTypesOfInnerLayer.md +12 -0
  385. package/skill/references/types/TPCB_LayersInTheSelectable.md +43 -0
  386. package/skill/references/types/TPCB_LayersOfComponent.md +12 -0
  387. package/skill/references/types/TPCB_LayersOfCopper.md +16 -0
  388. package/skill/references/types/TPCB_LayersOfCustom.md +42 -0
  389. package/skill/references/types/TPCB_LayersOfDimension.md +17 -0
  390. package/skill/references/types/TPCB_LayersOfFill.md +29 -0
  391. package/skill/references/types/TPCB_LayersOfImage.md +23 -0
  392. package/skill/references/types/TPCB_LayersOfInner.md +42 -0
  393. package/skill/references/types/TPCB_LayersOfLine.md +26 -0
  394. package/skill/references/types/TPCB_LayersOfObject.md +13 -0
  395. package/skill/references/types/TPCB_LayersOfPad.md +12 -0
  396. package/skill/references/types/TPCB_LayersOfRegion.md +12 -0
  397. package/skill/references/types/TPCB_NumberOfCopperLayers.md +10 -0
  398. package/skill/references/types/TPCB_PolygonSourceArray.md +83 -0
  399. package/skill/references/types/TPCB_PrimitiveDimensionCoordinateSet.md +67 -0
  400. package/skill/references/types/TPCB_PrimitivePadHole.md +31 -0
  401. package/skill/references/types/TPCB_PrimitivePadShape.md +62 -0
  402. package/skill/references/types/TPCB_PrimitiveSpecialPadShape.md +20 -0
  403. package/skill/references/types/TSYS_MathPolygonGroup.md +16 -0
  404. package/skill/references/types/TSYS_MathPolygonInput.md +21 -0
  405. package/skill/references/types/TSYS_PcbComparisonErrorCode.md +10 -0
  406. package/skill/references/types/TSYS_ShortcutKeys.md +97 -0
  407. package/skill/user-guide/using-extension.md +47 -0
package/README.md CHANGED
@@ -1,146 +1,98 @@
1
- # dsh-lichuang-eda(嘉立创 EDA 助手)
1
+ # dsh-lichuang-eda (JCL-EDA)
2
2
 
3
- 面向 0 基础开发者,在 DSH Web GUI 里自动生成**嘉立创 EDA(专业版/标准版)原理图 / PCB 草图**的插件。
3
+ 面向 **0 基础开发者** 的 DeepSeek Harness(DSH) 插件:用自然语言,在 **嘉立创 EDA(专业版·网页版为主)** 里自动生成原理图 / PCB 草图,并给出导入与打样引导。
4
4
 
5
- > **定位 = 平台层**:本插件提供官方桥的 **一键安装 / 启动 / 连接 / 状态**、执行**官方 `eda.*` API** 的双手(`eda_exec` + 校验工具)、以及**离线兜底**(`eda_generate_schematic_json`)。
6
- > **生成电路图 = 在对话里进行(skill 式直觉)**:用户说"嘉立创EDA,启动!帮我画一个…"→ agent 用 `eda_exec` 逐步执行官方 `eda.*` API 在用户的**云端画板**实时画。官方文档/样例已随桥 vendored 到 `~/.dsh/eda/bridge/`(`docs/`、`user-guide/`、`guide/`、`format/` 目录),agent 先 `read` 再调用。
7
- > 仅使用**官方栈**:官方桥 `easyeda/easyeda-api-skill` + 官方扩展 **Run API Gateway** + 官方 API(prodocs.easyeda.com)。**无任何第三方后端**。
5
+ > 设计主张:**不用"截图找坐标"的 computer-use,而用嘉立创官方 API + WebSocket 桥接**,直接驱动用户正在浏览器里打开的在线专业版画板——确定性高、所见即所得。
8
6
 
9
- ## 目录结构
7
+ ## 安装(开箱即用,三步)
10
8
 
11
- ```
12
- plugin/
13
- ├── package.json # 包清单:dsh.bundle.patch / dsh.client / exports(. 和 ./client)
14
- ├── cordis.patch.yml # bundle patch:向 web profile 名册插入插件行(id: eda)
15
- ├── lib/
16
- │ ├── index.js # 宿主端:apply() 注册 10 个 agent 工具 + 5 条路由 + 系统提示
17
- │ ├── backend.js # 官方桥适配层:spawn bridge-server.mjs + 端口发现(49620-49629) + /execute
18
- │ └── client.js # 浏览器端(React,无构建步骤):侧边栏入口 + 工作台面板
19
- ├── installer.js # 一键安装官方桥:下载官方源码包 → 解压 → 离线 vendoring ws(npm 兜底)→ 验证
20
- ├── selfcheck.mjs # 自检脚本:stub ctx 挂载插件,断言 DSH 四表面(见「测试 / 自检」)
21
- ├── fixtures/
22
- │ └── mock-bridge.mjs # mock 官方桥(HTTP/WS),供 backend 单测
23
- ├── test/
24
- │ ├── status.test.mjs # 状态工具/路由
25
- │ ├── generate.test.mjs # 离线生成端到端 + 桥接门控
26
- │ └── backend.test.mjs # EdaBackend 官方桥客户端 + installer
27
- └── README.md
28
- ```
9
+ ```bash
10
+ # 1) 安装到 DSH web profile(GitHub 源,或 npm: npm i @windypro-rourou/dsh-eda)
11
+ cd ~/.dsh/profiles/web && npm i github:WindyPro-rourou/JCL-EDA
29
12
 
30
- > 依赖仓库根的 `src/`(生成器/校验/翻译层)与 `docs/`(调研/引导文档)。**独立打包发布时需把 `src/` 一并纳入包**(见「不确定/未验证」#6)。
31
-
32
- ## 已注册的 agent 工具(13 个)
33
-
34
- | 工具 | 用途 | 可用性 |
35
- |---|---|---|
36
- | `eda_status` | 插件/官方桥状态(装没装 / 端口 / 是否就绪) | ✅ |
37
- | `eda_template_list` | 模板卡目录(含 supported 标记,如实标注) | ✅ |
38
- | `eda_translate_request` | 中文需求 → 结构化设计草稿(只翻译不生成) | ✅ |
39
- | `eda_generate_schematic_json` | **离线兜底**:需求/模板 → 可导入嘉立创 EDA 标准版的原理图 JSON + 结构/连通性校验,产物写入 `~/.dsh/eda/output/` | ✅ |
40
- | `eda_bridge_install` | **一键安装官方桥**(下载官方 easyeda-api-skill → 解压 → 离线 vendoring ws(npm 兜底)→ 验证 bridge-server.mjs) | ✅ 纯函数已测;网络安装真机待验 |
41
- | `eda_backend_connect` | 启动/连接官方桥(bridge-server.mjs,端口 49620-49629 + health 探测) | 🧪 mock 已测,真机待验 |
42
- | `eda_exec` | **云端实时生成的双手**:执行任意官方 `eda.*` 代码(需已连接);自动记录每步新建的图元(可撤回) | 🧪 桥接门控,真机待验 |
43
- | `eda_pick_spot` | **框内定位**:读页面尺寸(A4≈1170×825,10mil)+已有图元 → 返回互不冲突的框内网格空位(边距80/网格100/间距150);放元件前必调 | ✅ 算法 5 例单测;桥读 mock/真机待验 |
44
- | `eda_capabilities` | **能力清单**:官方 eda.* API 结构化能力目录(域/方法/用法/坑/实测片段)——agent 规划时主动查询后调用 | ✅ 内置数据,注册已测 |
45
- | `eda_snapshot` | **紧急保存**:画板现场(`.epro2` 专业版完整恢复 + 预览 SVG + 网表/BOM)+ agent 动作日志 → `~/.dsh/eda/snapshots/`;每步独立降级,断连也能留档步骤 | 🧪 mock 已测(11 例)+ 真机 0 降级 |
46
- | `eda_sch_drc` | 对当前画板跑原理图 DRC(官方 `eda.sch_Drc.check(true,false,true)`——**verbose 重载**) | 🧪 需已连接 |
47
- | `eda_get_netlist` | 导出当前网表(**File.text() 修正**:直接返回 File 会序列化 `{}`) | 🧪 需已连接 |
48
- | `eda_get_bom` | 导出 BOM(**二进制 xlsx 走 base64**,返回 名称/大小 摘要) | 🧪 需已连接 |
13
+ # 2) 在 profile 的 cordis.patch.yml 追加一行(已有则跳过)
14
+ - insert:
15
+ - id: eda
16
+ name: '@windypro-rourou/dsh-eda'
49
17
 
50
- **生命周期**:插件加载时若检测到官方桥已安装,**自动启动并自动连接**(无需人工);面板实时显示 装没装 / 端口 / 是否就绪。
18
+ # 3) 重启 DSH Web GUI → 侧边栏出现「嘉立创 EDA」
19
+ ```
51
20
 
52
- **面板 = 平台仪表盘/监看器**(生成发生在对话里,agent 通过 `eda_exec` 驱动官方 `eda.*` API):
53
- - 顶部紧凑连接卡 + 可折叠连接教程(默认收起);已连接时显示「💬 去对话里说:嘉立创EDA,启动!」CTA(点击复制)。
54
- - 主体 **「Agent 正在使用官方 API」记录式时间线**(参考 DSH 会话轨迹,3s 轮询 `GET /activity`):
55
- - **持久化**:每一步(序号/时间/动作/耗时/结果/会话)落盘 `~/.dsh/eda/activity.jsonl`——重启不空、历史可回溯;
56
- - **撤回**:每个 `eda_exec` 步骤自动记录新建/删除的图元 id(前后快照 diff),面板「撤回」按钮可一键删除该步新建图元(删除的不可恢复,如实提示);
57
- - **清空记录**:卡片头部一键清空(内存+磁盘);
58
- - 点击条目展开完整代码/结果/撤回数据;pending 态「执行中…」;长任务/短任务均实时滚入;
59
- - 空态展示"你可以让 agent 做…"能力速览(不空白)。
60
- - **按会话隔离**:每条活动记录携带调用方会话 id(工具执行上下文 `exec.agent.id`);面板默认跟随最新会话,多会话时可下拉切换;无会话的(面板按钮点击)归为「平台操作」。
61
- - 底部 **「紧急保存」**:一键把画板现场抓到本地(`.epro2` 专业版完整恢复 + 预览 SVG 通用可看 + 网表/BOM 数据 + agent 动作日志 → `~/.dsh/eda/snapshots/`)——云端没同步上也能找回最后工程;画板未连接时仍保存动作日志留档。v0 离线生成(标准版 JSON,仅电阻/LED)保留为对话内工具 `eda_generate_schematic_json`,不再占用面板。
21
+ 插件加载后**全自动**:自动启动官方桥 → 面板顶部连接卡 + 教程(一键安装官方桥/启动/官方扩展 Run API Gateway/刷新)→ 状态变绿即连上你的云端画板;生成直接在对话里说「嘉立创EDA,启动!…」。
62
22
 
63
- **兼容性边界(如实)**:官方 API 仅能导出 epro/epro2(专业版原生)与 PDF/PNG/SVG,**没有「标准版 v6 JSON」导出通道**;因此紧急保存 = 专业版完整恢复 + 通用预览 + 数据文件,标准版可编辑需走离线重建(简单电路)。
23
+ ## 项目定位(最终形态)
64
24
 
65
- **实战经验(真机固化,详见 `docs/eda-conversation-skill.md` 附四~附六)**:框内定位规则(10mil/A4≈1170×825/边距80/网格100/间距150,先 `eda_pick_spot` 再放件);网表/BOM/DRC 的正确用法(`File.text()` / base64 / `check(true,false,true)`);已知官方缺陷(`importChanges`、`setNetlist`、`getNetlist('EasyEDA')`、板框无 API、`getAll` 间歇失败)。
25
+ 本插件 = **平台层**,**生成电路图 = 在对话里进行(skill 式直觉)**:
66
26
 
67
- **会话说明**:`/activity` 返回 `{ activities, currentSid, sessions }`;`?sid=` 固定到某会话,缺省跟随最新。
27
+ - **插件 = 平台层**:负责官方桥的 **一键安装 / 启动 / 连接 / 状态**,并在连接后提供执行**官方 `eda.*` API** 的双手(`eda_exec` + 框内定位 `eda_pick_spot` + 能力清单 `eda_capabilities` + 校验工具)+ **离线兜底**(`eda_generate_schematic_json`)。
28
+ - **生成电路图 = 在对话里直接进行**:用户直接对 AI 说"嘉立创EDA,启动!帮我画一个…",agent 用 `eda_exec` 逐步执行官方 `eda.*` API 在用户的**云端画板**实时画(放元件→引脚级连线→网络标志→DRC/网表/BOM→PCB 元件/过孔/走线→截图)。官方文档/样例已随桥 vendored 到 `~/.dsh/eda/bridge/`,agent 先 `read` 再调用。
29
+ - **离线生成 = 兜底**:仅无法连接画板时使用(本地产出可导入嘉立创 EDA 标准版的 JSON,写 `~/.dsh/eda/output/`)。
30
+ - **面板 = 记录式时间线**:每一步(序号/动作/耗时/结果/会话)落盘 `~/.dsh/eda/activity.jsonl`(重启不空),支持**撤回该步**(自动记录新建图元,一键删除)、**清空记录**、**紧急保存**(`.epro2` + SVG 预览 + 网表/BOM + 动作日志 → `~/.dsh/eda/snapshots/`)。
68
31
 
69
- ## 路由
32
+ > 仅使用**官方栈**:官方桥 `easyeda/easyeda-api-skill` + 官方扩展 **Run API Gateway** + 官方 API(prodocs.easyeda.com)。**无任何第三方后端**(easyeda-agent / jlcmcp / easyeda-mcp-pro 已弃用,详见 `docs/eda-backend-research.md` §0.6)。
70
33
 
71
- - `GET /api/dsh-eda/status` — 状态(loopback-only)
72
- - `GET /api/dsh-eda/activity` — 记录式时间线(`?sid=` 可固定会话;loopback-only)
73
- - `POST /api/dsh-eda/activity/clear` — 清空时间线(内存+磁盘)
74
- - `POST /api/dsh-eda/activity/revoke?id=N` — 撤回步骤 N(删除该步新建图元)
75
- - `GET /api/dsh-eda/templates` — 模板目录
76
- - `POST /api/dsh-eda/bridge` — 启动/复用官方桥
77
- - `POST /api/dsh-eda/install` — 一键安装官方桥
78
- - `POST /api/dsh-eda/generate` — 离线生成(`{ description?, template? }` → 结果 JSON)
79
- - `POST /api/dsh-eda/snapshot` — 紧急保存(画板现场 + 动作日志 → `~/.dsh/eda/snapshots/`)
34
+ ## 为什么做这个
80
35
 
81
- ## 测试 / 自检
36
+ - 0 基础用户不会画电路图,会说中文需求,希望**有人替他把图画出来**、还能拿去嘉立创打样。
37
+ - 嘉立创 EDA 专业版提供官方 API,官方 `easyeda-api-skill` 把「官方桥 + 官方 eda.* API」封装成 AI harness 可用的「画板之手」。
38
+ - 本项目把这些**复用**起来,包装成一个 DSH 插件 + 中文引导,做「自然语言 → 电路图」的桥。
82
39
 
83
- ```bash
84
- # 前置:@deepseek-ai/dsh-tools 可解析(工作区已有 junction,缺失时重建:
85
- # mklink /J F:\dsh-lichuang\node_modules\@deepseek-ai C:\Users\35081\.dsh\profiles\node_modules\@deepseek-ai )
86
- # 本机 npm.ps1 被 PowerShell ExecutionPolicy 禁用时,用 npm.cmd:
87
- # C:\Program Files\nodejs\npm.cmd run test:all
40
+ ## 目录结构(仓库根 = 插件包)
88
41
 
89
- # 自检脚本(stub ctx,断言四表面)
90
- node plugin/selfcheck.mjs
42
+ ```
43
+ ├─ lib/ ← 插件本体(服务端:apply() 17 工具/7 路由/系统提示 + 时间线/快照/布局/能力清单)
44
+ │ ├─ index.js / backend.js / installer.js / snapshot.js / activity.js / layout.js / capabilities.js
45
+ │ └─ client.js ← 浏览器端:平台仪表盘(连接卡/轨迹时间线/撤回/清空/紧急保存)
46
+ ├─ src/ ← 离线生成器(标准版 JSON:json-gen / validate / nl-to-design + 14 例测试)
47
+ ├─ cordis.patch.yml ← 热插拔挂载(插入到 DSH web profile roster)
48
+ ├─ test/ fixtures/ ← 插件单测(52 例)与 mock 桥
49
+ ├─ scripts/publish.mjs ← npm 发布脚本(lib+src+patch 进包)
50
+ ├─ docs/ ← 调研/引导/格式/真机实测修正(eda-conversation-skill.md 附二~附六)
51
+ └─ package.json ← @windypro-rourou/dsh-eda(files 含 lib/src/patch;npm i github:… 即装)
52
+ ```
91
53
 
92
- # 插件单元测试(沙箱受限用 --experimental-test-isolation=none;普通终端可直接跑)
93
- node --experimental-test-isolation=none --test "plugin/test/*.test.mjs"
54
+ ## 已注册的 agent 工具(17 个)
55
+
56
+ | 工具 | 用途 |
57
+ |---|---|
58
+ | `eda_status` | 插件/官方桥状态(装没装 / 端口 / 是否就绪) |
59
+ | `eda_template_list` / `eda_translate_request` | 模板卡目录 / 中文需求→结构化草稿(离线兜底用) |
60
+ | `eda_generate_schematic_json` | **离线兜底**:需求/模板 → 可导入标准版原理图 JSON + 结构/连通性校验 |
61
+ | `eda_bridge_install` / `eda_backend_connect` | 一键安装官方桥 / 启动·连接官方桥 |
62
+ | `eda_exec` | **云端实时生成的双手**:执行任意官方 `eda.*` 代码(需已连接;自动记录新建图元→可撤回) |
63
+ | `eda_pick_spot` | **框内定位**:读页面尺寸+已有图元 → 返回互不冲突的框内网格空位(放元件前必调) |
64
+ | `eda_capabilities` | **能力清单**:官方 eda.* API 结构化目录(域/方法/用法/坑/实测片段)——agent 主动查询 |
65
+ | `eda_board_overview` | **画板全览**:当前文档图元/网络/页面尺寸摘要(agent 的眼睛,画前画后都可用) |
66
+ | `eda_trace` | **现场截图**:缩放适配 → PNG 存 `~/.dsh/eda/shots/`(效果确认/视觉留档) |
67
+ | `eda_snapshot` | **紧急保存**:画板现场(`.epro2`+SVG 预览+网表/BOM)+ 动作日志 → `~/.dsh/eda/snapshots/` |
68
+ | `eda_verify` | **一键验收**:DRC + 网表 + BOM 一次返回(画完即验) |
69
+ | `eda_skill_read` | **官方 skill 全库查阅**:读 SKILL.md / references/classes/*.md / guide 等官方文档(写 eda.* 前必查) |
70
+ | `eda_sch_drc` / `eda_get_netlist` / `eda_get_bom` | DRC(verbose)/ 网表(File.text)/ BOM(二进制 xlsx→base64) |
94
71
 
95
- # 生成器单元测试(14 例)
96
- node --test --experimental-test-isolation=none src/json-gen.test.js
72
+ **生命周期**:插件加载时若检测到官方桥已安装,**自动启动并自动连接**(无需人工);面板实时显示 装没装 / 端口 / 是否就绪。
97
73
 
98
- # v6 样本校验(62 项结构 + 13 项工程包装/连通)
99
- node src/validate.mjs
100
- node src/validate2.mjs
74
+ **限制(诚实说明)**:v0 离线生成器仅支持 **电阻 / LED** 两种符号;云端实时生成能力以官方 `eda.*` API 为准(**已知边界见 `docs/eda-conversation-skill.md` 附五缺陷速查表**:importChanges/setNetlist 不可靠、板框无 API、getNetlist('EasyEDA') 挂起、getAll 间歇失败等)。
101
75
 
102
- # 一键全部门禁(根目录)
103
- npm run test:all
104
- ```
76
+ ## 如何运行 / 开发
105
77
 
106
- **当前实测通过**:插件 **27/27**、生成器 **14/14**、自检 **OK**、v6 样本 **62/62 + 13/13**,全部 0 失败。
78
+ > 见上方「安装(开箱即用,三步)」。开发自检:`npm run test:all`(json-gen 14 例 + 插件 52 例 + 自检)与 `npm run check`;发布:`node scripts/publish.mjs [--dry]`(需 `$env:NPM_TOKEN`);**发版**:`node scripts/release.mjs --version=0.1.1`(需 `$env:NPM_TOKEN` + `$env:GH_TOKEN`,自动 bump → npm publish → GitHub push,走本机代理)。插件规范详见 `docs/plugin-spec.md` 与 `docs/plugin.md`。
107
79
 
108
- 覆盖:`eda_status` 严格 schema/render、路由 200/405、`provide`/section;官方桥客户端(端口发现/health/`/execute`/`sch.drc` 等动作);离线生成端到端(中文需求 → JSON 结构+连通性通过、不识别的需求报错、桥接门控报错);installer(官方仓库/市场地址、`~/.dsh/eda/bridge` 路径、幂等安装标志);生成器 14 例(结构 lint、sheet 级网表自检、design 级连通性、故意做坏的 3 种电路必须报错、main 产物可复现)。
80
+ ## 当前进度
109
81
 
110
- ## 如何在 DSH 里加载
82
+ - [x] DSH 插件规范 + 官方桥(easyeda-api-skill)安装/启动/连接/自愈
83
+ - [x] 云端实时全流程真机验证(esp32_multitool):14 大类放置(原理图+PCB)、引脚级连线、焊盘级布线、DRC/网表/BOM、PCB 元件/过孔/走线、截图、紧急保存(详见 `docs/verification-report.md`)
84
+ - [x] 面板记录式时间线(持久化/撤回/清空)+ 紧急保存 + 框内定位 + 能力清单
85
+ - [x] 安装发布链路:`npm i github:WindyPro-rourou/JCL-EDA` 开箱即用;npm 包 `@windypro-rourou/dsh-eda@0.1.0`
111
86
 
112
- 参考 dsh-logcat(`~/.dsh/profiles/web` 即本机 web profile),三选一、**不要同时用**:
87
+ **测试(全部通过)**:插件 52/52、生成器 14/14、自检 OK、v6 样本 62/62 + 13/13。
88
+
89
+ ## 测试门禁
113
90
 
114
91
  ```bash
115
- # 方式一:本地路径(bundle 层)
116
- dsh plugin --profile web add link:F:\dsh-lichuang\plugin
117
- # 方式二:源码本地链接(profile node_modules)+ 在 profile 的 cordis.patch.yml 追加:
118
- # - insert:
119
- # - id: eda
120
- # name: '@dsh-lichuang/dsh-eda'
121
- # 方式三:发布 npm 后
122
- dsh plugin --profile web add @dsh-lichuang/dsh-eda
92
+ npm run test:all # json-gen 测试 + 插件自检 + 插件测试(52 例)
93
+ npm run check # 语法检查(index/client/backend)
94
+ npm run gen # 重新生成 src/output/demo*.json
123
95
  ```
124
96
 
125
- 装完后**重启 GUI** 生效。
126
-
127
- ## 验证清单(当前实测状态)
128
-
129
- - [x] `node plugin/selfcheck.mjs`(OK)
130
- - [x] `node --test ... plugin/test/*.test.mjs`(27 pass,0 fail)
131
- - [x] `node --test ... src/json-gen.test.js`(14 pass)
132
- - [x] `node src/validate.mjs`(62/62)· `node src/validate2.mjs`(13/13)
133
- - [x] `node --check plugin/lib/{index,client,backend}.js`(语法通过)
134
- - [x] v6 真实导出样本逐字段校验通过(`docs/ref/SCH_ESP32-PICO-D4_smart_watch_2023-09-02.json`)
135
- - [ ] `dsh plugin --profile web add link:...` 实测 + GUI 重启后侧边栏出现「嘉立创 EDA」入口
136
- - [ ] 生成的标准版 JSON 在**真实嘉立创 EDA 标准版**里导入(无报错)
137
- - [ ] **真机(云端实时端到端)**:登录浏览器打开专业版画板 → 装官方扩展 Run API Gateway → `eda_backend_connect` 启动/连接官方桥 → **扩展连桥后 `eda_status.connected` 为 `true`** → `eda_exec` 放元件/连线/网络标签 → `eda_sch_drc`/`eda_get_netlist`/`eda_get_bom`
138
-
139
- ## 不确定 / 未验证(诚实标注)
140
-
141
- 1. **云端实时端到端(最重要)**:官方桥(bridge-server.mjs)与官方扩展 Run API Gateway 的**真机联通**未验证。诚实做法:扩展在编辑器连上桥后,`eda_status` 返回 `connected:true` 即为联通信号(本插件据此对外宣称"就绪")。在此之前,`eda_exec`/`eda_sch_drc`/`eda_get_netlist`/`eda_get_bom` 会在未连接时返回明确门控错误,不会伪造结果。
142
- 2. **「能被嘉立创 EDA 标准版无报错导入」**:生成物与真实 v6 导出样本逐键同构、结构/连通性全自动断言通过,但**未在真实编辑器实测导入**(无账号/编辑器)。官方「EasyEDA 源文件对话框粘贴 Apply」是最低成本自检路径。
143
- 3. **官方桥的网络安装**:`eda_bridge_install` 的下载/解压/装依赖逻辑已测(`isBridgeInstalled`/路径/幂等/离线 vendoring ws),但**真实下载官方源码包**需联网,本机待真机/网络可用时验证。
144
- 4. **`dsh plugin --profile web add link:` 语法 / client bundle 装载 / `inject=["slots"]`**:照抄 logcat,未在本机实测。
145
- 5. **v0 离线生成器符号**:仅支持 **电阻 / LED**;模板卡里标 ⏳ 的是暂不支持,不会编造。
146
- 6. **打包边界**:`lib/index.js` 以相对路径 `../../src/...` 引入生成器/校验/翻译层(monorepo 布局)。独立发布需将 `src/` 纳入包或改为打包构建。
97
+ > 沙箱受限时:`npm run test:json` / `npm run test:plugin` 已内置 `--experimental-test-isolation=none`。
98
+ > 本机 `npm.ps1` 被 PowerShell ExecutionPolicy 禁用时,用 `npm.cmd`(如 `C:\Program Files\nodejs\npm.cmd run test:all`)。
package/cordis.patch.yml CHANGED
@@ -1,9 +1,11 @@
1
- # dsh-lichuang-eda bundle patch: inserts the eda plugin row into the web
2
- # profile roster. Applied as a profile bundle layer over dsh-base; the row is
3
- # a bare plugin by package name — the node half (exports ".") runs in the
4
- # host process (/api/dsh-eda routes, agent tools, system-prompt section), and
5
- # the `dsh.client` declaration in package.json makes the browser half
6
- # (exports "./client", served at /plugins/eda/client.js) load in the web GUI.
1
+ # @windypro-rourou/dsh-eda bundle patch: inserts the JCL-EDA plugin row into
2
+ # the web profile roster. Applied as a profile bundle layer over dsh-base.
3
+ # Install: npm i @windypro-rourou/dsh-eda (or git: github:WindyPro-rourou/JCL-EDA)
4
+ # into the profile's node_modules, then insert the row below and restart the
5
+ # DSH Web GUI. The node half (exports ".") runs in the host process
6
+ # (/api/dsh-eda routes, agent tools, system-prompt section); the `dsh.client`
7
+ # declaration in package.json makes the browser half (exports "./client",
8
+ # served at /plugins/@windypro-rourou/dsh-eda/client.js) load in the web GUI.
7
9
  - insert:
8
10
  - id: eda
9
- name: '@dsh-lichuang/dsh-eda'
11
+ name: '@windypro-rourou/dsh-eda'
package/lib/board.js ADDED
@@ -0,0 +1,80 @@
1
+ /**
2
+ * dsh-lichuang-eda — 画板认知与验收(board)模块。
3
+ *
4
+ * - buildOverview: 把桥返回的原始图元数据规范化为 agent 可读摘要
5
+ * (元件清单/导线/网络/引脚可选);
6
+ * - pickSpotsPcb: PCB 版框内定位(无页面概念 → 基于已有图元 bbox 外扩网格);
7
+ * - saveTrace: 截图 base64 落盘(~/.dsh/eda/shots/)。
8
+ * 纯函数可单测;桥调用在工具层。
9
+ */
10
+ import { promises as fsp } from 'node:fs'
11
+ import { homedir } from 'node:os'
12
+ import { join } from 'node:path'
13
+
14
+ export function defaultShotsDir() {
15
+ return join(homedir(), '.dsh', 'eda', 'shots')
16
+ }
17
+
18
+ /** 规范化原理图/Pcb 原始图元(桥端映射结果)为摘要。 */
19
+ export function buildOverview(raw, { full = false } = {}) {
20
+ const out = {
21
+ domain: raw?.domain ?? 'sch',
22
+ doc: raw?.doc ?? null,
23
+ pageSize: raw?.pageSize ?? null,
24
+ componentCount: (raw?.components ?? []).length,
25
+ wireCount: raw?.wireCount ?? 0,
26
+ viaCount: raw?.viaCount ?? 0,
27
+ lineCount: raw?.lineCount ?? 0,
28
+ nets: (raw?.nets ?? []).slice(0, 60),
29
+ componentsPreview: (raw?.components ?? []).slice(0, full ? 200 : 40).map((c) => ({
30
+ designator: c.d ?? '?',
31
+ name: c.n ?? '',
32
+ type: c.t ?? '',
33
+ x: c.x,
34
+ y: c.y,
35
+ net: c.net ?? '',
36
+ })),
37
+ truncated: (raw?.components ?? []).length > (full ? 200 : 40),
38
+ }
39
+ return out
40
+ }
41
+
42
+ /** PCB 定位:无页面边界 → 以已有图元 bbox 外扩网格选点(互不冲突)。 */
43
+ export function pickSpotsPcb(used = [], count = 1, { gap = 600, grid = 300 } = {}) {
44
+ const xs = used.map((u) => u.x)
45
+ const ys = used.map((u) => u.y)
46
+ const minX = xs.length ? Math.min(...xs) - 2 * gap : 0
47
+ const maxX = xs.length ? Math.max(...xs) + 2 * gap : 2 * gap
48
+ const rowBase = ys.length ? Math.max(...ys) : 0
49
+ const spots = []
50
+ const conflict = (x, y) =>
51
+ used.some((u) => Math.abs(u.x - x) < gap && Math.abs(u.y - y) < gap) ||
52
+ spots.some((s) => Math.abs(s.x - x) < gap && Math.abs(s.y - y) < gap)
53
+ // 从 bbox 上方外侧起,向上排 3 行、左右展开;不够再从下方排 2 行
54
+ const rows = [rowBase + gap, rowBase + gap + grid, rowBase + gap + 2 * grid, rowBase - gap, rowBase - gap - grid]
55
+ for (const y of rows) {
56
+ if (y < -3 * gap) continue
57
+ let x = maxX + grid
58
+ while (x >= minX - grid && spots.length < count) {
59
+ if (!conflict(x, y)) spots.push({ x, y })
60
+ x -= grid
61
+ }
62
+ if (spots.length >= count) break
63
+ }
64
+ return spots
65
+ }
66
+
67
+ /** 截图 base64 → PNG 落盘,返回 { ok, path, size, type }。 */
68
+ export async function saveTrace(b64, { dir = defaultShotsDir(), name = null } = {}) {
69
+ if (typeof b64 !== 'string' || b64 === '') return { ok: false, error: '截图数据为空' }
70
+ const stamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19)
71
+ const file = name ? `${name}-${stamp}.png` : `board-${stamp}.png`
72
+ const target = join(dir, file)
73
+ try {
74
+ await fsp.mkdir(dir, { recursive: true })
75
+ await fsp.writeFile(target, Buffer.from(b64, 'base64'))
76
+ return { ok: true, path: target, size: Buffer.from(b64, 'base64').length, file }
77
+ } catch (error) {
78
+ return { ok: false, error: error instanceof Error ? error.message : String(error) }
79
+ }
80
+ }
package/lib/client.js CHANGED
@@ -10,10 +10,10 @@
10
10
  *
11
11
  * Bundle format: `window.__ModuleLoader__.load({id, factory})` (lazy CJS) —
12
12
  * the only client bundle format the web shell materializes. The apply/inject
13
- * export shape and ctx.effect disposer follow dsh-logcat's lib/client.js.
13
+ * export shape and ctx.effect disposer follow the DSH client-bundle contract.
14
14
  */
15
15
  window.__ModuleLoader__.load({
16
- id: "@dsh-lichuang/dsh-eda",
16
+ id: "@windypro-rourou/dsh-eda",
17
17
  factory: (require) => {
18
18
  var module = { exports: {} };
19
19
  var exports = module.exports;