@faicad/faijs 0.33.1 → 0.35.2

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 (392) hide show
  1. package/dist/api/api-namespace.d.ts +14 -14
  2. package/dist/api/api-namespace.d.ts.map +1 -1
  3. package/dist/api/api-namespace.js +40 -14
  4. package/dist/api/api-namespace.js.map +1 -1
  5. package/dist/api/appearance.d.ts +47 -6
  6. package/dist/api/appearance.d.ts.map +1 -1
  7. package/dist/api/appearance.js.map +1 -1
  8. package/dist/api/assembly/solve-tree.d.ts +1 -0
  9. package/dist/api/assembly/solve-tree.d.ts.map +1 -1
  10. package/dist/api/assembly/solve-tree.js +42 -17
  11. package/dist/api/assembly/solve-tree.js.map +1 -1
  12. package/dist/api/assembly/solve.d.ts +1 -0
  13. package/dist/api/assembly/solve.d.ts.map +1 -1
  14. package/dist/api/assembly/solve.js.map +1 -1
  15. package/dist/api/assembly/solvers/global-solver.d.ts.map +1 -1
  16. package/dist/api/assembly/solvers/global-solver.js +130 -23
  17. package/dist/api/assembly/solvers/global-solver.js.map +1 -1
  18. package/dist/api/assembly/solvers/pose-from-delta.d.ts +9 -0
  19. package/dist/api/assembly/solvers/pose-from-delta.d.ts.map +1 -1
  20. package/dist/api/assembly/solvers/pose-from-delta.js +23 -0
  21. package/dist/api/assembly/solvers/pose-from-delta.js.map +1 -1
  22. package/dist/api/assembly/solvers/types.d.ts +20 -2
  23. package/dist/api/assembly/solvers/types.d.ts.map +1 -1
  24. package/dist/api/assembly/solvers/types.js.map +1 -1
  25. package/dist/api/chamfer.d.ts +7 -4
  26. package/dist/api/chamfer.d.ts.map +1 -1
  27. package/dist/api/chamfer.js +57 -13
  28. package/dist/api/chamfer.js.map +1 -1
  29. package/dist/api/draft.d.ts +7 -4
  30. package/dist/api/draft.d.ts.map +1 -1
  31. package/dist/api/draft.js +11 -6
  32. package/dist/api/draft.js.map +1 -1
  33. package/dist/api/edge-ref.d.ts +4 -4
  34. package/dist/api/edge-ref.js +4 -4
  35. package/dist/api/edge-ref.js.map +1 -1
  36. package/dist/api/extrude.d.ts +10 -6
  37. package/dist/api/extrude.d.ts.map +1 -1
  38. package/dist/api/extrude.js +50 -25
  39. package/dist/api/extrude.js.map +1 -1
  40. package/dist/api/face-ref.d.ts +4 -4
  41. package/dist/api/face-ref.js +4 -4
  42. package/dist/api/face-ref.js.map +1 -1
  43. package/dist/api/feature-repair.d.ts +6 -3
  44. package/dist/api/feature-repair.d.ts.map +1 -1
  45. package/dist/api/feature-repair.js +12 -7
  46. package/dist/api/feature-repair.js.map +1 -1
  47. package/dist/api/fillet-variable.d.ts +6 -2
  48. package/dist/api/fillet-variable.d.ts.map +1 -1
  49. package/dist/api/fillet-variable.js +24 -6
  50. package/dist/api/fillet-variable.js.map +1 -1
  51. package/dist/api/fillet.d.ts +7 -4
  52. package/dist/api/fillet.d.ts.map +1 -1
  53. package/dist/api/fillet.js +45 -12
  54. package/dist/api/fillet.js.map +1 -1
  55. package/dist/api/helix.d.ts +13 -13
  56. package/dist/api/helix.d.ts.map +1 -1
  57. package/dist/api/helix.js +19 -24
  58. package/dist/api/helix.js.map +1 -1
  59. package/dist/api/import-brep.d.ts +10 -18
  60. package/dist/api/import-brep.d.ts.map +1 -1
  61. package/dist/api/import-brep.js +17 -25
  62. package/dist/api/import-brep.js.map +1 -1
  63. package/dist/api/import-step.d.ts +10 -15
  64. package/dist/api/import-step.d.ts.map +1 -1
  65. package/dist/api/import-step.js +24 -29
  66. package/dist/api/import-step.js.map +1 -1
  67. package/dist/api/index.js +2 -2
  68. package/dist/api/index.js.map +1 -1
  69. package/dist/api/internal/export-members.js.map +1 -1
  70. package/dist/api/loft-advanced.d.ts +4 -0
  71. package/dist/api/loft-advanced.d.ts.map +1 -1
  72. package/dist/api/loft-advanced.js +4 -0
  73. package/dist/api/loft-advanced.js.map +1 -1
  74. package/dist/api/loft.d.ts +5 -3
  75. package/dist/api/loft.d.ts.map +1 -1
  76. package/dist/api/loft.js +5 -3
  77. package/dist/api/loft.js.map +1 -1
  78. package/dist/api/meta.d.ts +42 -6
  79. package/dist/api/meta.d.ts.map +1 -1
  80. package/dist/api/meta.js.map +1 -1
  81. package/dist/api/punch-hole.d.ts +5 -2
  82. package/dist/api/punch-hole.d.ts.map +1 -1
  83. package/dist/api/punch-hole.js +4 -1
  84. package/dist/api/punch-hole.js.map +1 -1
  85. package/dist/api/replicate.d.ts +4 -5
  86. package/dist/api/replicate.d.ts.map +1 -1
  87. package/dist/api/replicate.js +4 -5
  88. package/dist/api/replicate.js.map +1 -1
  89. package/dist/api/selectors-to-refs.d.ts +83 -0
  90. package/dist/api/selectors-to-refs.d.ts.map +1 -0
  91. package/dist/api/selectors-to-refs.js +211 -0
  92. package/dist/api/selectors-to-refs.js.map +1 -0
  93. package/dist/api/shell.d.ts +17 -8
  94. package/dist/api/shell.d.ts.map +1 -1
  95. package/dist/api/shell.js +45 -15
  96. package/dist/api/shell.js.map +1 -1
  97. package/dist/api/sketch-on-face.d.ts +12 -6
  98. package/dist/api/sketch-on-face.d.ts.map +1 -1
  99. package/dist/api/sketch-on-face.js +31 -4
  100. package/dist/api/sketch-on-face.js.map +1 -1
  101. package/dist/api/sketch-on-plane.d.ts +3 -0
  102. package/dist/api/sketch-on-plane.d.ts.map +1 -1
  103. package/dist/api/sketch-on-plane.js +3 -0
  104. package/dist/api/sketch-on-plane.js.map +1 -1
  105. package/dist/api/sketch-on-surface.d.ts +4 -1
  106. package/dist/api/sketch-on-surface.d.ts.map +1 -1
  107. package/dist/api/sketch-on-surface.js +4 -1
  108. package/dist/api/sketch-on-surface.js.map +1 -1
  109. package/dist/api/view/view-projection.d.ts.map +1 -1
  110. package/dist/api/view/view-projection.js +9 -2
  111. package/dist/api/view/view-projection.js.map +1 -1
  112. package/dist/brep/brep-chain.js +2 -2
  113. package/dist/brep/brep-chain.js.map +1 -1
  114. package/dist/brep/brep-ops.d.ts +1 -1
  115. package/dist/brep/brep-ops.js +1 -1
  116. package/dist/brep/brep-ops.js.map +1 -1
  117. package/dist/brep/engine/adapters/brep-mock.d.ts.map +1 -1
  118. package/dist/brep/engine/adapters/brep-mock.js +45 -0
  119. package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
  120. package/dist/brep/engine/primitives.d.ts +87 -3
  121. package/dist/brep/engine/primitives.d.ts.map +1 -1
  122. package/dist/brep/engine/primitives.js +1 -1
  123. package/dist/brep/engine/primitives.js.map +1 -1
  124. package/dist/brep/engine/registry.d.ts +33 -7
  125. package/dist/brep/engine/registry.d.ts.map +1 -1
  126. package/dist/brep/engine/registry.js +47 -16
  127. package/dist/brep/engine/registry.js.map +1 -1
  128. package/dist/brep/handle-bridge.d.ts +14 -15
  129. package/dist/brep/handle-bridge.d.ts.map +1 -1
  130. package/dist/brep/handle-bridge.js +35 -15
  131. package/dist/brep/handle-bridge.js.map +1 -1
  132. package/dist/brep/primitives-brep.js +2 -2
  133. package/dist/brep/primitives-brep.js.map +1 -1
  134. package/dist/brep/text/text-to-solid.d.ts +40 -3
  135. package/dist/brep/text/text-to-solid.d.ts.map +1 -1
  136. package/dist/brep/text/text-to-solid.js +104 -24
  137. package/dist/brep/text/text-to-solid.js.map +1 -1
  138. package/dist/brepkit-kernel/brepkitKernel.d.ts +2 -2
  139. package/dist/brepkit-kernel/brepkitKernel.d.ts.map +1 -1
  140. package/dist/brepkit-kernel/brepkitKernel.js +315 -36
  141. package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
  142. package/dist/brepkit-kernel/brepkitWasm.js +7 -7
  143. package/dist/brepkit-kernel/brepkitWasm.js.map +1 -1
  144. package/dist/brepkit-kernel/multi-version-test.d.ts +2 -2
  145. package/dist/brepkit-kernel/multi-version-test.d.ts.map +1 -1
  146. package/dist/brepkit-kernel/multi-version-test.js +6 -6
  147. package/dist/brepkit-kernel/multi-version-test.js.map +1 -1
  148. package/dist/browser.d.ts +2 -3
  149. package/dist/browser.d.ts.map +1 -1
  150. package/dist/browser.js +1 -2
  151. package/dist/browser.js.map +1 -1
  152. package/dist/cad-runtime/admit-compat-lib.d.ts +9 -1
  153. package/dist/cad-runtime/admit-compat-lib.d.ts.map +1 -1
  154. package/dist/cad-runtime/admit-compat-lib.js +11 -1
  155. package/dist/cad-runtime/admit-compat-lib.js.map +1 -1
  156. package/dist/cad-runtime/browser-lib-loader.d.ts +16 -11
  157. package/dist/cad-runtime/browser-lib-loader.d.ts.map +1 -1
  158. package/dist/cad-runtime/browser-lib-loader.js +16 -8
  159. package/dist/cad-runtime/browser-lib-loader.js.map +1 -1
  160. package/dist/cad-runtime/direct-executor.d.ts +62 -5
  161. package/dist/cad-runtime/direct-executor.d.ts.map +1 -1
  162. package/dist/cad-runtime/direct-executor.js +617 -42
  163. package/dist/cad-runtime/direct-executor.js.map +1 -1
  164. package/dist/cad-runtime/interp/closure.d.ts +3 -2
  165. package/dist/cad-runtime/interp/closure.d.ts.map +1 -1
  166. package/dist/cad-runtime/interp/closure.js.map +1 -1
  167. package/dist/cad-runtime/interp/env.d.ts +9 -6
  168. package/dist/cad-runtime/interp/env.d.ts.map +1 -1
  169. package/dist/cad-runtime/interp/env.js +4 -2
  170. package/dist/cad-runtime/interp/env.js.map +1 -1
  171. package/dist/cad-runtime/lib-decl.d.ts +121 -0
  172. package/dist/cad-runtime/lib-decl.d.ts.map +1 -0
  173. package/dist/cad-runtime/lib-decl.js +100 -0
  174. package/dist/cad-runtime/lib-decl.js.map +1 -0
  175. package/dist/cad-runtime/ports.d.ts +12 -0
  176. package/dist/cad-runtime/ports.d.ts.map +1 -1
  177. package/dist/cad-runtime/ports.js.map +1 -1
  178. package/dist/cad-runtime/runtime.d.ts +59 -5
  179. package/dist/cad-runtime/runtime.d.ts.map +1 -1
  180. package/dist/cad-runtime/runtime.js +237 -18
  181. package/dist/cad-runtime/runtime.js.map +1 -1
  182. package/dist/extra/browser.d.ts +9 -0
  183. package/dist/extra/browser.d.ts.map +1 -0
  184. package/dist/extra/browser.js +9 -0
  185. package/dist/extra/browser.js.map +1 -0
  186. package/dist/extra/editor-ops.d.ts +22 -0
  187. package/dist/extra/editor-ops.d.ts.map +1 -0
  188. package/dist/extra/editor-ops.js +21 -0
  189. package/dist/extra/editor-ops.js.map +1 -0
  190. package/dist/extra/extras/svg-extrude.d.ts +45 -0
  191. package/dist/extra/extras/svg-extrude.d.ts.map +1 -0
  192. package/dist/extra/extras/svg-extrude.js +110 -0
  193. package/dist/extra/extras/svg-extrude.js.map +1 -0
  194. package/dist/extra/extras/text-cjk.d.ts +36 -0
  195. package/dist/extra/extras/text-cjk.d.ts.map +1 -0
  196. package/dist/extra/extras/text-cjk.js +86 -0
  197. package/dist/extra/extras/text-cjk.js.map +1 -0
  198. package/dist/extra/extras/text-geometry.d.ts +69 -0
  199. package/dist/extra/extras/text-geometry.d.ts.map +1 -0
  200. package/dist/extra/extras/text-geometry.js +188 -0
  201. package/dist/extra/extras/text-geometry.js.map +1 -0
  202. package/dist/extra/index.d.ts +40 -0
  203. package/dist/extra/index.d.ts.map +1 -0
  204. package/dist/extra/index.js +40 -0
  205. package/dist/extra/index.js.map +1 -0
  206. package/dist/extra/mesh/drill-hole/DrillHoleCore.d.ts +94 -0
  207. package/dist/extra/mesh/drill-hole/DrillHoleCore.d.ts.map +1 -0
  208. package/dist/extra/mesh/drill-hole/DrillHoleCore.js +282 -0
  209. package/dist/extra/mesh/drill-hole/DrillHoleCore.js.map +1 -0
  210. package/dist/extra/mesh/drill-hole/drill-types.d.ts +34 -0
  211. package/dist/extra/mesh/drill-hole/drill-types.d.ts.map +1 -0
  212. package/dist/extra/mesh/drill-hole/drill-types.js +7 -0
  213. package/dist/extra/mesh/drill-hole/drill-types.js.map +1 -0
  214. package/dist/extra/mesh/engrave-decoration.d.ts +42 -0
  215. package/dist/extra/mesh/engrave-decoration.d.ts.map +1 -0
  216. package/dist/extra/mesh/engrave-decoration.js +39 -0
  217. package/dist/extra/mesh/engrave-decoration.js.map +1 -0
  218. package/dist/extra/mesh/fai_drill.d.ts +21 -0
  219. package/dist/extra/mesh/fai_drill.d.ts.map +1 -0
  220. package/dist/extra/mesh/fai_drill.js +89 -0
  221. package/dist/extra/mesh/fai_drill.js.map +1 -0
  222. package/dist/extra/mesh/fai_extrude.d.ts +24 -0
  223. package/dist/extra/mesh/fai_extrude.d.ts.map +1 -0
  224. package/dist/extra/mesh/fai_extrude.js +42 -0
  225. package/dist/extra/mesh/fai_extrude.js.map +1 -0
  226. package/dist/extra/mesh/fai_split.d.ts +164 -0
  227. package/dist/extra/mesh/fai_split.d.ts.map +1 -0
  228. package/dist/extra/mesh/fai_split.js +269 -0
  229. package/dist/extra/mesh/fai_split.js.map +1 -0
  230. package/dist/extra/mesh/primitives.d.ts +29 -0
  231. package/dist/extra/mesh/primitives.d.ts.map +1 -0
  232. package/dist/extra/mesh/primitives.js +41 -0
  233. package/dist/extra/mesh/primitives.js.map +1 -0
  234. package/dist/extra/op-names.d.ts +37 -0
  235. package/dist/extra/op-names.d.ts.map +1 -0
  236. package/dist/extra/op-names.js +46 -0
  237. package/dist/extra/op-names.js.map +1 -0
  238. package/dist/extra/ops/compound.d.ts +140 -0
  239. package/dist/extra/ops/compound.d.ts.map +1 -0
  240. package/dist/extra/ops/compound.js +167 -0
  241. package/dist/extra/ops/compound.js.map +1 -0
  242. package/dist/extra/ops/copy.d.ts +40 -0
  243. package/dist/extra/ops/copy.d.ts.map +1 -0
  244. package/dist/extra/ops/copy.js +83 -0
  245. package/dist/extra/ops/copy.js.map +1 -0
  246. package/dist/extra/ops/fai_drill.d.ts +51 -0
  247. package/dist/extra/ops/fai_drill.d.ts.map +1 -0
  248. package/dist/extra/ops/fai_drill.js +233 -0
  249. package/dist/extra/ops/fai_drill.js.map +1 -0
  250. package/dist/extra/ops/fai_extrude.d.ts +36 -0
  251. package/dist/extra/ops/fai_extrude.d.ts.map +1 -0
  252. package/dist/extra/ops/fai_extrude.js +84 -0
  253. package/dist/extra/ops/fai_extrude.js.map +1 -0
  254. package/dist/extra/ops/fai_split.d.ts +46 -0
  255. package/dist/extra/ops/fai_split.d.ts.map +1 -0
  256. package/dist/extra/ops/fai_split.js +235 -0
  257. package/dist/extra/ops/fai_split.js.map +1 -0
  258. package/dist/extra/ops/load.d.ts +49 -0
  259. package/dist/extra/ops/load.d.ts.map +1 -0
  260. package/dist/extra/ops/load.js +385 -0
  261. package/dist/extra/ops/load.js.map +1 -0
  262. package/dist/extra/ops/svg-extrude.d.ts +32 -0
  263. package/dist/extra/ops/svg-extrude.d.ts.map +1 -0
  264. package/dist/extra/ops/svg-extrude.js +74 -0
  265. package/dist/extra/ops/svg-extrude.js.map +1 -0
  266. package/dist/extra/ops/text.d.ts +34 -0
  267. package/dist/extra/ops/text.d.ts.map +1 -0
  268. package/dist/extra/ops/text.js +100 -0
  269. package/dist/extra/ops/text.js.map +1 -0
  270. package/dist/geometry2d/bridge/lift-on-plane.d.ts +8 -5
  271. package/dist/geometry2d/bridge/lift-on-plane.d.ts.map +1 -1
  272. package/dist/geometry2d/bridge/lift-on-plane.js +8 -5
  273. package/dist/geometry2d/bridge/lift-on-plane.js.map +1 -1
  274. package/dist/index.d.ts +6 -2
  275. package/dist/index.d.ts.map +1 -1
  276. package/dist/index.js +8 -2
  277. package/dist/index.js.map +1 -1
  278. package/dist/lang/symbol-table.d.ts +3 -3
  279. package/dist/lang/symbol-table.generated.d.ts +10 -0
  280. package/dist/lang/symbol-table.generated.d.ts.map +1 -1
  281. package/dist/lang/symbol-table.generated.js +10 -0
  282. package/dist/lang/symbol-table.generated.js.map +1 -1
  283. package/dist/lang/symbol-table.js +3 -3
  284. package/dist/lang/symbol-table.js.map +1 -1
  285. package/dist/math3d/index.d.ts +1 -1
  286. package/dist/math3d/index.js +1 -1
  287. package/dist/math3d/index.js.map +1 -1
  288. package/dist/mesh/engrave.d.ts +2 -3
  289. package/dist/mesh/engrave.d.ts.map +1 -1
  290. package/dist/mesh/engrave.js +4 -11
  291. package/dist/mesh/engrave.js.map +1 -1
  292. package/dist/mesh/index.d.ts +0 -2
  293. package/dist/mesh/index.d.ts.map +1 -1
  294. package/dist/mesh/index.js +0 -2
  295. package/dist/mesh/index.js.map +1 -1
  296. package/dist/mesh/primitives.d.ts +1 -1
  297. package/dist/mesh/primitives.js +1 -1
  298. package/dist/mesh/primitives.js.map +1 -1
  299. package/dist/node-host/cli.d.ts +20 -4
  300. package/dist/node-host/cli.d.ts.map +1 -1
  301. package/dist/node-host/cli.js +84 -35
  302. package/dist/node-host/cli.js.map +1 -1
  303. package/dist/node-host/execute-script.d.ts.map +1 -1
  304. package/dist/node-host/execute-script.js +3 -4
  305. package/dist/node-host/execute-script.js.map +1 -1
  306. package/dist/node-host/lib-package-json.d.ts +36 -0
  307. package/dist/node-host/lib-package-json.d.ts.map +1 -0
  308. package/dist/node-host/lib-package-json.js +73 -0
  309. package/dist/node-host/lib-package-json.js.map +1 -0
  310. package/dist/occt-kernel/occt-primitives.d.ts.map +1 -1
  311. package/dist/occt-kernel/occt-primitives.js +41 -0
  312. package/dist/occt-kernel/occt-primitives.js.map +1 -1
  313. package/dist/occt-kernel/occtKernel.d.ts +1 -1
  314. package/dist/occt-kernel/occtKernel.js +1 -1
  315. package/dist/occt-kernel/occtKernel.js.map +1 -1
  316. package/dist/runtime-state.d.ts +28 -1
  317. package/dist/runtime-state.d.ts.map +1 -1
  318. package/dist/runtime-state.js +14 -1
  319. package/dist/runtime-state.js.map +1 -1
  320. package/dist/sdk.d.ts +2 -2
  321. package/dist/sdk.d.ts.map +1 -1
  322. package/dist/sdk.js +11 -2
  323. package/dist/sdk.js.map +1 -1
  324. package/dist/sketch/bspline.d.ts +58 -0
  325. package/dist/sketch/bspline.d.ts.map +1 -0
  326. package/dist/sketch/bspline.js +104 -0
  327. package/dist/sketch/bspline.js.map +1 -0
  328. package/dist/sketch/canonical.d.ts +239 -0
  329. package/dist/sketch/canonical.d.ts.map +1 -0
  330. package/dist/sketch/canonical.js +17 -0
  331. package/dist/sketch/canonical.js.map +1 -0
  332. package/dist/sketch/contour.d.ts +43 -0
  333. package/dist/sketch/contour.d.ts.map +1 -0
  334. package/dist/sketch/contour.js +202 -0
  335. package/dist/sketch/contour.js.map +1 -0
  336. package/dist/sketch/dim-spec.d.ts +32 -0
  337. package/dist/sketch/dim-spec.d.ts.map +1 -0
  338. package/dist/sketch/dim-spec.js +112 -0
  339. package/dist/sketch/dim-spec.js.map +1 -0
  340. package/dist/sketch/faces.d.ts +45 -0
  341. package/dist/sketch/faces.d.ts.map +1 -0
  342. package/dist/sketch/faces.js +108 -0
  343. package/dist/sketch/faces.js.map +1 -0
  344. package/dist/sketch/fcstd-types.d.ts +194 -0
  345. package/dist/sketch/fcstd-types.d.ts.map +1 -0
  346. package/dist/sketch/fcstd-types.js +67 -0
  347. package/dist/sketch/fcstd-types.js.map +1 -0
  348. package/dist/sketch/index.d.ts +46 -0
  349. package/dist/sketch/index.d.ts.map +1 -0
  350. package/dist/sketch/index.js +39 -0
  351. package/dist/sketch/index.js.map +1 -0
  352. package/dist/sketch/node.d.ts +14 -0
  353. package/dist/sketch/node.d.ts.map +1 -0
  354. package/dist/sketch/node.js +43 -0
  355. package/dist/sketch/node.js.map +1 -0
  356. package/dist/sketch/op.d.ts +111 -0
  357. package/dist/sketch/op.d.ts.map +1 -0
  358. package/dist/sketch/op.js +185 -0
  359. package/dist/sketch/op.js.map +1 -0
  360. package/dist/sketch/planegcs-backend.d.ts +69 -0
  361. package/dist/sketch/planegcs-backend.d.ts.map +1 -0
  362. package/dist/sketch/planegcs-backend.js +812 -0
  363. package/dist/sketch/planegcs-backend.js.map +1 -0
  364. package/dist/sketch/project.d.ts +176 -0
  365. package/dist/sketch/project.d.ts.map +1 -0
  366. package/dist/sketch/project.js +656 -0
  367. package/dist/sketch/project.js.map +1 -0
  368. package/dist/sketch/shapes.d.ts +370 -0
  369. package/dist/sketch/shapes.d.ts.map +1 -0
  370. package/dist/sketch/shapes.js +959 -0
  371. package/dist/sketch/shapes.js.map +1 -0
  372. package/dist/sketch/solve.d.ts +21 -0
  373. package/dist/sketch/solve.d.ts.map +1 -0
  374. package/dist/sketch/solve.js +144 -0
  375. package/dist/sketch/solve.js.map +1 -0
  376. package/dist/sketch/solver-loader.d.ts +47 -0
  377. package/dist/sketch/solver-loader.d.ts.map +1 -0
  378. package/dist/sketch/solver-loader.js +77 -0
  379. package/dist/sketch/solver-loader.js.map +1 -0
  380. package/dist/sketch/solver.d.ts +63 -0
  381. package/dist/sketch/solver.d.ts.map +1 -0
  382. package/dist/sketch/solver.js +28 -0
  383. package/dist/sketch/solver.js.map +1 -0
  384. package/dist/sketch/verify.d.ts +53 -0
  385. package/dist/sketch/verify.d.ts.map +1 -0
  386. package/dist/sketch/verify.js +71 -0
  387. package/dist/sketch/verify.js.map +1 -0
  388. package/dist/weapp.d.ts +1 -1
  389. package/dist/weapp.d.ts.map +1 -1
  390. package/dist/weapp.js +1 -1
  391. package/dist/weapp.js.map +1 -1
  392. package/package.json +43 -11
@@ -31,9 +31,11 @@ import { type PartName } from '../identity.js';
31
31
  import type { ExecBackendChoice } from './exec-backend.js';
32
32
  import { type OpDimMap } from '../lang/metadata-extractor.js';
33
33
  import { type LibNamespace, type AssemblyKinematicsPose, type TessellationDensity } from '../runtime-state.js';
34
+ import { type LibDescription, type LibsUnderEngine } from './lib-decl.js';
34
35
  export { computeContentKey } from './content-key.js';
35
36
  export { stableFingerprint } from './content-key.js';
36
37
  import { type CompoundShape } from '../shape.js';
38
+ import type { AssemblyDecl } from '../extra/ops/compound.js';
37
39
  import type { PartNaming } from '../topology/naming/types.js';
38
40
  import { type DeterminismPolicy } from '../lang/determinism-scanner.js';
39
41
  /**
@@ -135,6 +137,16 @@ export interface ExecutionResult {
135
137
  * key 为 compound 变量名(PartName),value 为成员变量名列表。
136
138
  */
137
139
  compounds?: Map<PartName, PartName[]>;
140
+ /**
141
+ * F3(2026-10-15):`cad.assembly` 声明面 — 脚本里每个 assembly 语句的声明
142
+ * (name / memberNames / constraints / joints / solver + compound 引用)。
143
+ *
144
+ * 此前的缺口:约束/关节声明只存在 compound 的 behavior 槽,而 `getSlot` 未公开
145
+ * 导出 → 宿主持不到声明。本字段把声明面提到结果一级,宿主据此做**纯求解**
146
+ * (禁烘焙:不调 asm.solve()/do_assemble(),位姿只以 transform 数据在宿主侧
147
+ * 流动)。`group` 产物(无约束/关节)不进本字段;无 assembly 语句时为 undefined。
148
+ */
149
+ assemblies?: AssemblyDecl[];
138
150
  /** 被 touch 声明的原地修改 Shape 的持有变量名(装配变换后 collectResult 填充,去重) */
139
151
  changed?: PartName[];
140
152
  /**
@@ -317,12 +329,22 @@ export declare class CadRuntime {
317
329
  private readonly determinismPolicy;
318
330
  /** warn 档位下收集的确定性警告,合并进最终 ExecutionResult.infos。 */
319
331
  private determinismWarnings;
332
+ /**
333
+ * Reserved binding names — only `'cad'`. Once the engine registers `cad`
334
+ * (inside `createRuntime`), any subsequent `registerLib('cad', ...)` from
335
+ * the host is rejected. The `_cadReserved` flag is set by `createRuntime`
336
+ * immediately after the internal registration so the guard can distinguish
337
+ * the engine's own first registration from a host's attempt to override.
338
+ */
339
+ private static readonly RESERVED_BINDINGS;
320
340
  /** 宿主注册库(含 cad:由根门面 createRuntime 包装注入;注入编译产物 fn 的第二参 ns) */
321
341
  private readonly libs;
322
342
  /** 库内容身份表 (binding → content hash),增量 key 用(B2,§7.3) */
323
343
  private readonly libIds;
324
344
  /** import specifier → binding 映射(registerLib 的 packageName 声明;check ①.5 校验 specifier) */
325
345
  private readonly specifierToBinding;
346
+ /** 库级定位声明与来源(binding → { packageName, decl }),describeLib / libsUnder 读。 */
347
+ private readonly libDecls;
326
348
  private readonly namespaces;
327
349
  /** 默认命名空间绑定名(U10/R2):根门面经 registerLib(binding, ns, {default: true}) 显式声明;
328
350
  * 缺省 'cad'(与 parser 缺省 defaultNs 一致)。namespace 字段缺省的语句归属该绑定。 */
@@ -358,15 +380,46 @@ export declare class CadRuntime {
358
380
  * @param options - registration hints. `packageName` declares the npm package
359
381
  * backing this binding so `check()` can validate script import specifiers
360
382
  * against registered libraries (specifier mismatch = hard check error).
361
-
383
+ * `lib` / `peers` carry the library-level `faijs.lib` declaration (定位属性)
384
+ * and its `peerDependencies`; they are validated at assembly time
385
+ * (`assertLibDecl`) and feed `fn.engines ?? lib.platform` resolution.
386
+ * Engine constraints are resolved at admission, i.e. only on the lifted path,
387
+ * so two unhonourable shapes are rejected: (a) any declaration while admitted
388
+ * WITHOUT lifting, (b) a non-empty `lib.platform` when the library also
389
+ * exports a dual-op without its own `engines`.
362
390
  */
363
391
  registerLib(binding: string, ns: LibNamespace, options?: {
364
392
  default?: boolean;
365
393
  autoLift?: boolean;
366
394
  packageName?: string;
395
+ lib?: unknown;
396
+ peers?: Readonly<Record<string, string>>;
367
397
  }): void;
368
398
  /** The runtime's default namespace binding name (host-declared; 'cad' by default). */
369
399
  get defaultNs(): string;
400
+ /**
401
+ * 库调用方查询面(2026-10-14 §3.3 第 3 项):回答「这个库需要什么内核」。
402
+ *
403
+ * 返回该库的库级定位(`role` / `conformsTo` / `platform`)+ 逐函数的**有效**引擎
404
+ * 与产物名。`engines` 是装配期已解析的值(`fn.engines ?? lib.platform ?? 中立`),
405
+ * 所以「未写 `fn.engines` 的函数回报继承来的库级平台」是自动成立的——同一份声明
406
+ * 只有一个视图,不存在两处各自维护。
407
+ *
408
+ * @param binding - the statement-level binding name used at registration.
409
+ * @returns the library description, or `undefined` when no such binding is registered.
410
+ */
411
+ describeLib(binding: string): LibDescription | undefined;
412
+ /**
413
+ * 库调用方查询面(2026-10-14 §3.3 第 3 项):回答「给定引擎,这个库的哪些函数可以调用」。
414
+ *
415
+ * 判定与 `backend-dispatch.ts#decidePath` 的静态规则同源(中立 op = 全引擎可调;
416
+ * 声明了 `engines` 的 op 只在该集合内可调),因此拒绝项与实际执行前的拒绝**必然一致**。
417
+ * 只在确实被拒时给出 `reason`,可调项不带噪音字段。
418
+ *
419
+ * @param engineId - the BREP engine id to test against (e.g. `'occt'` / `'brepkit'`).
420
+ * @returns callable / statically-rejected split for the given engine.
421
+ */
422
+ libsUnder(engineId: string): LibsUnderEngine;
370
423
  /**
371
424
  * P4/P6 (unit-system D8): 汇总已注册 op 的量纲声明(callee → { paramDims, retDim }),
372
425
  * 供 extractMetadata 的 dimension pass 消费。键 = 脚本面 callee 名(含命名空间内成员名,
@@ -692,15 +745,16 @@ export declare class CadRuntime {
692
745
  * default library.
693
746
  *
694
747
  * This is the single public `createRuntime` entry point. Hosts get "engine +
695
- * standard library" in one call. If `libs` already contains a `cad` key, that
696
- * caller-supplied namespace is kept (not overwritten).
748
+ * standard library" in one call. The `cad` binding name is **reserved** —
749
+ * passing `libs.cad` throws (cad is engine-built-in and cannot be overridden).
750
+ * Hosts may still register third-party libraries under any other name.
697
751
  *
698
752
  * @param ports - the host-injected environment capabilities.
699
753
  * @param mode - the execution mode (default 'auto').
700
- * @param libs - the host-injected library namespaces. If `libs.cad` is omitted,
701
- * the built-in cad namespace is auto-registered as the default lib.
754
+ * @param libs - the host-injected library namespaces. Must NOT contain `cad`.
702
755
  * @param options - optional runtime options (e.g. `execBackend`, `tessellation`).
703
756
  * @returns a new CadRuntime with `cad` registered as the default namespace.
757
+ * @throws if `libs.cad` is present (cad is a reserved binding name).
704
758
  */
705
759
  export declare function createRuntime(ports: HostPorts, mode?: ExecutionMode, libs?: Record<string, LibNamespace>, options?: CadRuntimeOptions): CadRuntime;
706
760
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/runtime.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@
16
16
  * - group/assembly 重建
17
17
  * - window.dispatchEvent / toast
18
18
  */
19
- import { getBrepEngine, hasBrepEngine, getActiveBrepEngineId, getMeshSolidBackend } from '../brep/engine/registry.js';
19
+ import { getActiveBrepEngine, hasBrepEngine, getActiveBrepEngineId, getMeshSolidBackend } from '../brep/engine/registry.js';
20
20
  import { ensureOcctDefaultEngine } from '../brep/engine/adapters/occt.js';
21
21
  import { MeshSolidRegistry } from '../brep/mesh-solid.js';
22
22
  import { ParseError } from '../lang/parse-error.js';
@@ -29,13 +29,14 @@ import { computeLiveShapes, lineConsumes, blockConsumes } from './live-shapes.js
29
29
  import { extractMetadata } from '../lang/metadata-extractor.js';
30
30
  import { configureBackends, CONTRACT_VERSION, assertContractVersion, configureTessellation, } from '../runtime-state.js';
31
31
  import { admitCompatLib } from './admit-compat-lib.js';
32
+ import { assertLibDecl, } from './lib-decl.js';
32
33
  import { hasDualOp, dualOpMetaOf } from '../define-op.js';
33
34
  import { computeLibId } from './lib-id.js';
34
35
  import { computeContentKey, stableFingerprint } from './content-key.js';
35
36
  import { SCRIPT_UNIT_CONSTANTS } from '../units.js';
36
37
  export { computeContentKey } from './content-key.js';
37
38
  export { stableFingerprint } from './content-key.js';
38
- import { isCompoundLike, getSlot, ensureSlot } from '../shape.js';
39
+ import { isCompoundLike, brepOf, getSlot, ensureSlot } from '../shape.js';
39
40
  import { buildPartNaming } from '../topology/naming/build-naming.js';
40
41
  import { faceRowToHint } from '../topology/naming/geom-hint.js';
41
42
  import { HASH_UPPER_BOUND } from '../brep/face-evolution.js';
@@ -158,12 +159,28 @@ export class CadRuntime {
158
159
  determinismPolicy;
159
160
  /** warn 档位下收集的确定性警告,合并进最终 ExecutionResult.infos。 */
160
161
  determinismWarnings = [];
162
+ /**
163
+ * Reserved binding names — only `'cad'`. Once the engine registers `cad`
164
+ * (inside `createRuntime`), any subsequent `registerLib('cad', ...)` from
165
+ * the host is rejected. The `_cadReserved` flag is set by `createRuntime`
166
+ * immediately after the internal registration so the guard can distinguish
167
+ * the engine's own first registration from a host's attempt to override.
168
+ */
169
+ static RESERVED_BINDINGS = new Set(['cad']);
170
+ /**
171
+ * Reserved marker for the `cad` binding: set right after the engine's own
172
+ * registration so the guard can tell it apart from a host override attempt.
173
+ * @internal
174
+ */
175
+ _cadReserved = false;
161
176
  /** 宿主注册库(含 cad:由根门面 createRuntime 包装注入;注入编译产物 fn 的第二参 ns) */
162
177
  libs;
163
178
  /** 库内容身份表 (binding → content hash),增量 key 用(B2,§7.3) */
164
179
  libIds = new Map();
165
180
  /** import specifier → binding 映射(registerLib 的 packageName 声明;check ①.5 校验 specifier) */
166
181
  specifierToBinding = new Map();
182
+ /** 库级定位声明与来源(binding → { packageName, decl }),describeLib / libsUnder 读。 */
183
+ libDecls = new Map();
167
184
  namespaces;
168
185
  /** 默认命名空间绑定名(U10/R2):根门面经 registerLib(binding, ns, {default: true}) 显式声明;
169
186
  * 缺省 'cad'(与 parser 缺省 defaultNs 一致)。namespace 字段缺省的语句归属该绑定。 */
@@ -199,10 +216,37 @@ export class CadRuntime {
199
216
  * @param options - registration hints. `packageName` declares the npm package
200
217
  * backing this binding so `check()` can validate script import specifiers
201
218
  * against registered libraries (specifier mismatch = hard check error).
202
-
219
+ * `lib` / `peers` carry the library-level `faijs.lib` declaration (定位属性)
220
+ * and its `peerDependencies`; they are validated at assembly time
221
+ * (`assertLibDecl`) and feed `fn.engines ?? lib.platform` resolution.
222
+ * Engine constraints are resolved at admission, i.e. only on the lifted path,
223
+ * so two unhonourable shapes are rejected: (a) any declaration while admitted
224
+ * WITHOUT lifting, (b) a non-empty `lib.platform` when the library also
225
+ * exports a dual-op without its own `engines`.
203
226
  */
204
227
  registerLib(binding, ns, options) {
228
+ // Reserved binding guard (2026-10-13): `cad` is the only reserved name.
229
+ // The engine's own first registration (from `createRuntime`) sets the
230
+ // `_cadReserved` flag; any subsequent attempt to register or override
231
+ // `cad` from the host is rejected.
232
+ if (CadRuntime.RESERVED_BINDINGS.has(binding) && this._cadReserved) {
233
+ throw new Error(`E_CAD_RESERVED: "${binding}" is an engine-built-in reserved namespace. ` +
234
+ 'Hosts cannot register or override it. Use a different binding name ' +
235
+ 'for your custom library.');
236
+ }
205
237
  assertContractVersion(ns);
238
+ // 库级定位声明:装配期校验(形态 / 引擎 id / 单向 peer 约束)后再解析函数级有效引擎。
239
+ //
240
+ // 来源两条:调用方显式传入(`lib` / `peers`),或按 `packageName` 走 loader 的既有
241
+ // 读盘通道(`libMetaFor`,与自动装载同源同一次读盘)。显式传入优先——那是宿主覆盖
242
+ // 声明的手段。少了这条回落,`registerLib(ns, { packageName })` 这条同样合法的装配
243
+ // 路径会静默丢掉库自身 `package.json` 里的定位声明,`describeLib` 于是对调用方撒谎
244
+ // ——「声明了却不生效」正是本批要消灭的那类 bug。
245
+ const pkgName = options?.packageName;
246
+ const fromLoader = options?.lib === undefined && pkgName !== undefined
247
+ ? this.ports.libLoader?.libMetaFor?.(pkgName)
248
+ : undefined;
249
+ const decl = assertLibDecl(options?.lib ?? fromLoader?.lib, options?.peers ?? fromLoader?.peers, options?.packageName ?? binding);
206
250
  // B4: admit bare (non-dual-op) library functions through compatOp when
207
251
  // autoLift is true (or inferred true — the library has no dual-op).
208
252
  // Hard ordering: assertLibConforms runs inside admitCompatLib BEFORE
@@ -213,10 +257,62 @@ export class CadRuntime {
213
257
  // bare function is admitted with the default unmodeled provenance (see
214
258
  // admit-compat-lib.ts).
215
259
  const lift = options?.autoLift ?? !hasDualOp(ns);
260
+ // 引擎约束(库级 `faijs.lib.platform` 与函数级 `fn.engines`)只在**提升通路**上落地:
261
+ // admitCompatLib 包装裸函数并把解析后的有效引擎写进 op 元数据,分派侧只读元数据。
262
+ // 于是有两种「声明了却无法兑现」的形态,都在装配期当场拒绝——静默放行会让声明变成
263
+ // 空话,而这正是本批要消灭的那类 bug。
264
+ const nsEntries = Object.entries(ns);
265
+ /**
266
+ * **裸函数**上的 `fn.engines`(`typeof v === 'function'` 且不带 `DUAL_OP_META`)。
267
+ *
268
+ * dual-op 的引擎声明长在 op 自己的元数据里,由分派侧直接读——它**不经过**提升
269
+ * 通路,所以与本开关无关,不能算进下面的「死声明」判定。把两者混在一起会误拒
270
+ * 自带元数据的宿主命名空间:内置 `cad` 正是这种形态(46 个平台 op 各有
271
+ * `engines`,而它以 `autoLift=false` 注册)。
272
+ */
273
+ const bareDeclared = nsEntries
274
+ .filter(([, v]) => {
275
+ if (typeof v !== 'function' || dualOpMetaOf(v) !== undefined)
276
+ return false;
277
+ const e = v.engines;
278
+ return e !== undefined && e.length > 0;
279
+ })
280
+ .map(([name]) => name);
281
+ const libPlatform = decl?.platform ?? [];
282
+ if (!lift) {
283
+ // 不提升 ⇒ 裸函数不是 op,没有元数据可挂 ⇒ 它的 `fn.engines` 与库级 `platform`
284
+ // 都是死声明(dual-op 不在此列,见上)。
285
+ if (libPlatform.length > 0 || bareDeclared.length > 0) {
286
+ const what = [
287
+ ...(libPlatform.length > 0 ? [`faijs.lib.platform = [${libPlatform.join('/')}]`] : []),
288
+ ...(bareDeclared.length > 0 ? [`fn.engines on ${bareDeclared.join(', ')}`] : []),
289
+ ].join(' and ');
290
+ throw new Error(`[faijs] lib '${options?.packageName ?? binding}': ${what} declared, but the library is admitted ` +
291
+ 'WITHOUT lifting (autoLift=false) — the effective engine set is resolved at admission, which only ' +
292
+ 'exists on the lifted path. Register with autoLift: true (or declare faijs.autoLift: true), or drop ' +
293
+ 'the engine declarations.');
294
+ }
295
+ }
296
+ else if (libPlatform.length > 0) {
297
+ // 提升通路只包装裸函数:dual-op 自带元数据、注入不进去,所以它们必须自己声明 engines。
298
+ const uncovered = nsEntries
299
+ .filter(([, v]) => {
300
+ const meta = dualOpMetaOf(v);
301
+ return meta !== undefined && meta.engines === undefined;
302
+ })
303
+ .map(([name]) => name);
304
+ if (uncovered.length > 0) {
305
+ throw new Error(`[faijs] lib '${options?.packageName ?? binding}': faijs.lib.platform = [${libPlatform.join('/')}] ` +
306
+ `cannot cover dual-op function(s) ${uncovered.join(', ')} — a library-level platform is injected ` +
307
+ 'at admission, which only wraps bare functions; ops keep their own metadata. Declare `engines` ' +
308
+ 'on those ops (or drop the library-level platform).');
309
+ }
310
+ }
216
311
  const admitted = lift
217
- ? admitCompatLib(ns)
312
+ ? admitCompatLib(ns, decl?.platform)
218
313
  : ns;
219
314
  this.libs[binding] = admitted;
315
+ this.libDecls.set(binding, { packageName: options?.packageName, decl });
220
316
  this.libIds.set(binding, computeLibId(binding, ns));
221
317
  if (options?.packageName) {
222
318
  this.specifierToBinding.set(options.packageName, binding);
@@ -230,6 +326,74 @@ export class CadRuntime {
230
326
  get defaultNs() {
231
327
  return this.defaultNsName;
232
328
  }
329
+ /**
330
+ * 库调用方查询面(2026-10-14 §3.3 第 3 项):回答「这个库需要什么内核」。
331
+ *
332
+ * 返回该库的库级定位(`role` / `conformsTo` / `platform`)+ 逐函数的**有效**引擎
333
+ * 与产物名。`engines` 是装配期已解析的值(`fn.engines ?? lib.platform ?? 中立`),
334
+ * 所以「未写 `fn.engines` 的函数回报继承来的库级平台」是自动成立的——同一份声明
335
+ * 只有一个视图,不存在两处各自维护。
336
+ *
337
+ * @param binding - the statement-level binding name used at registration.
338
+ * @returns the library description, or `undefined` when no such binding is registered.
339
+ */
340
+ describeLib(binding) {
341
+ const ns = this.libs[binding];
342
+ if (!ns)
343
+ return undefined;
344
+ const meta = this.libDecls.get(binding);
345
+ const functions = [];
346
+ for (const [name, value] of Object.entries(ns)) {
347
+ if (typeof value !== 'function')
348
+ continue;
349
+ const opMeta = dualOpMetaOf(value);
350
+ functions.push({
351
+ name,
352
+ engines: opMeta?.engines,
353
+ outputs: opMeta?.outputs,
354
+ });
355
+ }
356
+ return {
357
+ binding,
358
+ packageName: meta?.packageName,
359
+ role: meta?.decl?.role ?? 'library',
360
+ conformsTo: meta?.decl?.conformsTo,
361
+ platform: meta?.decl?.platform ?? [],
362
+ functions,
363
+ };
364
+ }
365
+ /**
366
+ * 库调用方查询面(2026-10-14 §3.3 第 3 项):回答「给定引擎,这个库的哪些函数可以调用」。
367
+ *
368
+ * 判定与 `backend-dispatch.ts#decidePath` 的静态规则同源(中立 op = 全引擎可调;
369
+ * 声明了 `engines` 的 op 只在该集合内可调),因此拒绝项与实际执行前的拒绝**必然一致**。
370
+ * 只在确实被拒时给出 `reason`,可调项不带噪音字段。
371
+ *
372
+ * @param engineId - the BREP engine id to test against (e.g. `'occt'` / `'brepkit'`).
373
+ * @returns callable / statically-rejected split for the given engine.
374
+ */
375
+ libsUnder(engineId) {
376
+ const callable = [];
377
+ const rejected = [];
378
+ for (const [binding, ns] of Object.entries(this.libs)) {
379
+ for (const [name, value] of Object.entries(ns ?? {})) {
380
+ if (typeof value !== 'function')
381
+ continue;
382
+ const engines = dualOpMetaOf(value)?.engines;
383
+ if (engines === undefined || engines.length === 0 || engines.includes(engineId)) {
384
+ callable.push({ binding, name });
385
+ }
386
+ else {
387
+ rejected.push({
388
+ binding,
389
+ name,
390
+ reason: `requires engine ${engines.join('/')} (requested=${engineId})`,
391
+ });
392
+ }
393
+ }
394
+ }
395
+ return { engineId, callable, rejected };
396
+ }
233
397
  /**
234
398
  * P4/P6 (unit-system D8): 汇总已注册 op 的量纲声明(callee → { paramDims, retDim }),
235
399
  * 供 extractMetadata 的 dimension pass 消费。键 = 脚本面 callee 名(含命名空间内成员名,
@@ -364,7 +528,7 @@ export class CadRuntime {
364
528
  }
365
529
  const engine = this.mode === 'mesh' || !hasBrepEngine()
366
530
  ? null
367
- : await getBrepEngine();
531
+ : await getActiveBrepEngine();
368
532
  const kernel = engine?.primitives ?? null;
369
533
  this.kernel = kernel;
370
534
  this.brepChain = {
@@ -719,6 +883,8 @@ export class CadRuntime {
719
883
  const outputs = new Map();
720
884
  const shapeVarNames = new Set();
721
885
  const compounds = new Map();
886
+ // F3:cad.assembly 声明面(behavior.kind === 'assembly' 的 compound)
887
+ const assemblies = [];
722
888
  for (const name of de.listCtxKeys()) {
723
889
  const v = de.getCtxVar(name);
724
890
  if (!isShapeLike(v) && !isCompoundLike(v))
@@ -728,6 +894,17 @@ export class CadRuntime {
728
894
  if (isCompoundLike(v)) {
729
895
  const behavior = getSlot(v)?.behavior;
730
896
  compounds.set(asPartName(name), (behavior?.memberNames ?? []).map(asPartName));
897
+ // F3:只收 assembly 声明(group 无约束/关节,进声明面会让消费方对空约束集求解)
898
+ if (behavior?.kind === 'assembly') {
899
+ assemblies.push({
900
+ ...(behavior.name !== undefined ? { name: behavior.name } : {}),
901
+ memberNames: behavior.memberNames,
902
+ constraints: behavior.constraints,
903
+ joints: behavior.joints ?? [],
904
+ ...(behavior.solver !== undefined ? { solver: behavior.solver } : {}),
905
+ compound: v,
906
+ });
907
+ }
731
908
  }
732
909
  }
733
910
  // statementCache 同步(E8 getCachedOutput):direct 无语句 key——用行级身份键填
@@ -849,6 +1026,7 @@ export class CadRuntime {
849
1026
  topology: topology.size > 0 ? topology : undefined,
850
1027
  naming: naming.size > 0 ? naming : undefined,
851
1028
  compounds: compounds.size > 0 ? compounds : undefined,
1029
+ assemblies: assemblies.length > 0 ? assemblies : undefined,
852
1030
  kinematics: de.kinematicsSnapshot.size > 0 ? de.kinematicsSnapshot : undefined,
853
1031
  detectedUnits: de.detectedUnitsSnapshot.size > 0 ? de.detectedUnitsSnapshot : undefined,
854
1032
  multiPartCounts: de.multiPartCountSnapshot.size > 0 ? de.multiPartCountSnapshot : undefined,
@@ -959,7 +1137,8 @@ export class CadRuntime {
959
1137
  * import 表(UiMetadata.imports)驱动的自动装载。
960
1138
  */
961
1139
  async autoLoadLibsFromImports(imports) {
962
- if (!this.ports.libLoader)
1140
+ const loader = this.ports.libLoader;
1141
+ if (!loader)
963
1142
  return undefined;
964
1143
  for (const imp of imports) {
965
1144
  if (imp.kind !== 'namespace')
@@ -974,7 +1153,7 @@ export class CadRuntime {
974
1153
  continue; // 已注册(宿主注入或此前自动装载)→ 不覆盖
975
1154
  let ns;
976
1155
  try {
977
- ns = await this.ports.libLoader.loadLib(imp.packageName ?? imp.specifier ?? '');
1156
+ ns = await loader.loadLib(imp.packageName ?? imp.specifier ?? '');
978
1157
  }
979
1158
  catch (err) {
980
1159
  return {
@@ -990,9 +1169,16 @@ export class CadRuntime {
990
1169
  };
991
1170
  }
992
1171
  const resolved = imp.packageName ?? imp.specifier ?? '';
1172
+ // 库级定位声明(§3.3 第 1 项):来源是库自身 package.json 的 `faijs.lib` +
1173
+ // `peerDependencies`,与下面逐函数的实现事实是**两个不同维度**(`autoLiftFor`
1174
+ // 与 `libMetaFor` 同源同一次读盘)。此处只搬运原始值,校验与解析在
1175
+ // registerLib → assertLibDecl / admitCompatLib 里做,装配期一次完成。
1176
+ const libMeta = loader.libMetaFor?.(resolved);
993
1177
  this.registerLib(imp.localName, ns, {
994
- autoLift: this.ports.libLoader.options?.autoLiftFor?.(resolved) ?? this.ports.libLoader.options?.autoLift ?? !hasDualOp(ns),
1178
+ autoLift: loader.options?.autoLiftFor?.(resolved) ?? loader.options?.autoLift ?? !hasDualOp(ns),
995
1179
  packageName: imp.packageName,
1180
+ lib: libMeta?.lib,
1181
+ peers: libMeta?.peers,
996
1182
  });
997
1183
  }
998
1184
  return undefined;
@@ -1015,6 +1201,27 @@ export class CadRuntime {
1015
1201
  if (solid !== undefined && this.kernel) {
1016
1202
  ordinalToHash = Array.from(this.kernel.subShapeHashes(solid, 'face', HASH_UPPER_BOUND));
1017
1203
  }
1204
+ else if (this.kernel) {
1205
+ // compound 终端(多零件 load / 装配):无单一 solidCache 键——按 children
1206
+ // 声明序逐成员 subShapeHashes 拼接(与 buildCompoundTopologyRuntime 的合并
1207
+ // 面序同源:buildAssemblySelectorManifest 按 parts 数组序拼 face 行,序号
1208
+ // 对齐合并拓扑的 ordinal)。任一成员无 BREP solid → 放弃(保持 undefined,
1209
+ // 面/边行 role 显式 null,不伪造)。
1210
+ const v = this.directExecutor.getCtxVar(partName);
1211
+ if (isCompoundLike(v)) {
1212
+ const merged = [];
1213
+ for (const child of v.children ?? []) {
1214
+ const cs = brepOf(child);
1215
+ if (cs === undefined) {
1216
+ merged.length = 0;
1217
+ break;
1218
+ }
1219
+ merged.push(...Array.from(this.kernel.subShapeHashes(cs, 'face', HASH_UPPER_BOUND)));
1220
+ }
1221
+ if (merged.length > 0)
1222
+ ordinalToHash = merged;
1223
+ }
1224
+ }
1018
1225
  return {
1019
1226
  source: 'brep',
1020
1227
  partName,
@@ -1513,24 +1720,31 @@ import { createApiNamespace } from '../api/api-namespace.js';
1513
1720
  * default library.
1514
1721
  *
1515
1722
  * This is the single public `createRuntime` entry point. Hosts get "engine +
1516
- * standard library" in one call. If `libs` already contains a `cad` key, that
1517
- * caller-supplied namespace is kept (not overwritten).
1723
+ * standard library" in one call. The `cad` binding name is **reserved** —
1724
+ * passing `libs.cad` throws (cad is engine-built-in and cannot be overridden).
1725
+ * Hosts may still register third-party libraries under any other name.
1518
1726
  *
1519
1727
  * @param ports - the host-injected environment capabilities.
1520
1728
  * @param mode - the execution mode (default 'auto').
1521
- * @param libs - the host-injected library namespaces. If `libs.cad` is omitted,
1522
- * the built-in cad namespace is auto-registered as the default lib.
1729
+ * @param libs - the host-injected library namespaces. Must NOT contain `cad`.
1523
1730
  * @param options - optional runtime options (e.g. `execBackend`, `tessellation`).
1524
1731
  * @returns a new CadRuntime with `cad` registered as the default namespace.
1732
+ * @throws if `libs.cad` is present (cad is a reserved binding name).
1525
1733
  */
1526
1734
  export function createRuntime(ports, mode, libs, options) {
1527
- const rt = new CadRuntime(ports, mode, libs, options);
1528
- if (!libs?.cad) {
1529
- rt.registerLib('cad', createApiNamespace(), {
1530
- default: true,
1531
- packageName: '@faicad/faijs',
1532
- });
1735
+ if (libs && 'cad' in libs) {
1736
+ throw new Error('E_CAD_RESERVED: "cad" is an engine-built-in reserved namespace. ' +
1737
+ 'Hosts cannot override or replace it. Use a different name for your ' +
1738
+ 'custom library, or omit libs.cad to use the built-in cad namespace.');
1533
1739
  }
1740
+ const rt = new CadRuntime(ports, mode, libs, options);
1741
+ rt.registerLib('cad', createApiNamespace(), {
1742
+ default: true,
1743
+ packageName: '@faicad/faijs',
1744
+ });
1745
+ // Mark `cad` as reserved — any subsequent `registerLib('cad', ...)` from the
1746
+ // host will be rejected by the guard at the top of registerLib.
1747
+ rt._cadReserved = true;
1534
1748
  return rt;
1535
1749
  }
1536
1750
  /**
@@ -1548,6 +1762,11 @@ export function createRuntime(ports, mode, libs, options) {
1548
1762
  * @returns a new CadRuntime without cad registered.
1549
1763
  */
1550
1764
  export function createBareRuntime(ports, mode, libs, options) {
1765
+ if (libs && 'cad' in libs) {
1766
+ throw new Error('E_CAD_RESERVED: "cad" is an engine-built-in reserved namespace. ' +
1767
+ 'Hosts cannot register or override it. Use a different name for your ' +
1768
+ 'custom library, or use createRuntime() to get the built-in cad namespace.');
1769
+ }
1551
1770
  return new CadRuntime(ports, mode, libs, options);
1552
1771
  }
1553
1772
  //# sourceMappingURL=runtime.js.map