@faicad/faijs 0.13.1 → 0.14.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 (341) hide show
  1. package/dist/api/api-namespace.d.ts.map +1 -1
  2. package/dist/api/api-namespace.js +30 -4
  3. package/dist/api/api-namespace.js.map +1 -1
  4. package/dist/api/boolean.d.ts +19 -0
  5. package/dist/api/boolean.d.ts.map +1 -1
  6. package/dist/api/boolean.js +51 -10
  7. package/dist/api/boolean.js.map +1 -1
  8. package/dist/api/chamfer.d.ts.map +1 -1
  9. package/dist/api/chamfer.js +8 -7
  10. package/dist/api/chamfer.js.map +1 -1
  11. package/dist/api/compound-geom.d.ts +45 -0
  12. package/dist/api/compound-geom.d.ts.map +1 -0
  13. package/dist/api/compound-geom.js +85 -0
  14. package/dist/api/compound-geom.js.map +1 -0
  15. package/dist/api/compound.d.ts +2 -0
  16. package/dist/api/compound.d.ts.map +1 -1
  17. package/dist/api/compound.js +2 -0
  18. package/dist/api/compound.js.map +1 -1
  19. package/dist/api/copy.d.ts +1 -0
  20. package/dist/api/copy.d.ts.map +1 -1
  21. package/dist/api/copy.js +4 -2
  22. package/dist/api/copy.js.map +1 -1
  23. package/dist/api/edge-ref.d.ts +3 -2
  24. package/dist/api/edge-ref.d.ts.map +1 -1
  25. package/dist/api/edge-ref.js +10 -6
  26. package/dist/api/edge-ref.js.map +1 -1
  27. package/dist/api/engrave.d.ts.map +1 -1
  28. package/dist/api/engrave.js +1 -0
  29. package/dist/api/engrave.js.map +1 -1
  30. package/dist/api/extrude.d.ts.map +1 -1
  31. package/dist/api/extrude.js +131 -3
  32. package/dist/api/extrude.js.map +1 -1
  33. package/dist/api/face-ref.d.ts.map +1 -1
  34. package/dist/api/face-ref.js +7 -4
  35. package/dist/api/face-ref.js.map +1 -1
  36. package/dist/api/fai_drill.d.ts +1 -1
  37. package/dist/api/fai_drill.d.ts.map +1 -1
  38. package/dist/api/fai_drill.js +31 -18
  39. package/dist/api/fai_drill.js.map +1 -1
  40. package/dist/api/fai_extrude.d.ts +1 -1
  41. package/dist/api/fai_extrude.d.ts.map +1 -1
  42. package/dist/api/fai_extrude.js +2 -1
  43. package/dist/api/fai_extrude.js.map +1 -1
  44. package/dist/api/fai_split.d.ts +1 -1
  45. package/dist/api/fai_split.d.ts.map +1 -1
  46. package/dist/api/fai_split.js +2 -1
  47. package/dist/api/fai_split.js.map +1 -1
  48. package/dist/api/fillet.d.ts.map +1 -1
  49. package/dist/api/fillet.js +6 -5
  50. package/dist/api/fillet.js.map +1 -1
  51. package/dist/api/generated/operations.js +16 -16
  52. package/dist/api/generated/operations.js.map +1 -1
  53. package/dist/api/generated/script-face-manifest.d.ts.map +1 -1
  54. package/dist/api/generated/script-face-manifest.js +0 -1
  55. package/dist/api/generated/script-face-manifest.js.map +1 -1
  56. package/dist/api/generated/script-face.d.ts +1 -4
  57. package/dist/api/generated/script-face.d.ts.map +1 -1
  58. package/dist/api/generated/script-face.js +2 -3
  59. package/dist/api/generated/script-face.js.map +1 -1
  60. package/dist/api/generated/sketching.js +1 -1
  61. package/dist/api/generated/sketching.js.map +1 -1
  62. package/dist/api/generated/topology.d.ts +0 -48
  63. package/dist/api/generated/topology.d.ts.map +1 -1
  64. package/dist/api/generated/topology.js +20 -62
  65. package/dist/api/generated/topology.js.map +1 -1
  66. package/dist/api/import-brep.d.ts +36 -0
  67. package/dist/api/import-brep.d.ts.map +1 -0
  68. package/dist/api/import-brep.js +72 -0
  69. package/dist/api/import-brep.js.map +1 -0
  70. package/dist/api/import-step.d.ts +28 -0
  71. package/dist/api/import-step.d.ts.map +1 -0
  72. package/dist/api/import-step.js +57 -0
  73. package/dist/api/import-step.js.map +1 -0
  74. package/dist/api/index.d.ts +7 -2
  75. package/dist/api/index.d.ts.map +1 -1
  76. package/dist/api/index.js +19 -5
  77. package/dist/api/index.js.map +1 -1
  78. package/dist/api/internal/compat-op.d.ts +2 -0
  79. package/dist/api/internal/compat-op.d.ts.map +1 -1
  80. package/dist/api/internal/compat-op.js +10 -2
  81. package/dist/api/internal/compat-op.js.map +1 -1
  82. package/dist/api/knurl.d.ts.map +1 -1
  83. package/dist/api/knurl.js +1 -0
  84. package/dist/api/knurl.js.map +1 -1
  85. package/dist/api/load.d.ts +3 -1
  86. package/dist/api/load.d.ts.map +1 -1
  87. package/dist/api/load.js +3 -1
  88. package/dist/api/load.js.map +1 -1
  89. package/dist/api/pattern.d.ts +32 -0
  90. package/dist/api/pattern.d.ts.map +1 -0
  91. package/dist/api/pattern.js +121 -0
  92. package/dist/api/pattern.js.map +1 -0
  93. package/dist/api/place.d.ts +35 -0
  94. package/dist/api/place.d.ts.map +1 -0
  95. package/dist/api/place.js +113 -0
  96. package/dist/api/place.js.map +1 -0
  97. package/dist/api/primitives.d.ts.map +1 -1
  98. package/dist/api/primitives.js +10 -3
  99. package/dist/api/primitives.js.map +1 -1
  100. package/dist/api/screw.d.ts.map +1 -1
  101. package/dist/api/screw.js +1 -0
  102. package/dist/api/screw.js.map +1 -1
  103. package/dist/api/sdf.d.ts.map +1 -1
  104. package/dist/api/sdf.js +1 -0
  105. package/dist/api/sdf.js.map +1 -1
  106. package/dist/api/sketch.d.ts.map +1 -1
  107. package/dist/api/sketch.js +1 -0
  108. package/dist/api/sketch.js.map +1 -1
  109. package/dist/api/split.d.ts +31 -0
  110. package/dist/api/split.d.ts.map +1 -0
  111. package/dist/api/split.js +96 -0
  112. package/dist/api/split.js.map +1 -0
  113. package/dist/api/surface/arg-spec.d.ts +9 -0
  114. package/dist/api/surface/arg-spec.d.ts.map +1 -1
  115. package/dist/api/surface/arg-spec.js +49 -30
  116. package/dist/api/surface/arg-spec.js.map +1 -1
  117. package/dist/api/svgExtrude.d.ts.map +1 -1
  118. package/dist/api/svgExtrude.js +1 -0
  119. package/dist/api/svgExtrude.js.map +1 -1
  120. package/dist/api/text.d.ts.map +1 -1
  121. package/dist/api/text.js +1 -0
  122. package/dist/api/text.js.map +1 -1
  123. package/dist/api/topo-resolve.d.ts.map +1 -1
  124. package/dist/api/topo-resolve.js +65 -3
  125. package/dist/api/topo-resolve.js.map +1 -1
  126. package/dist/api/transform.d.ts +4 -0
  127. package/dist/api/transform.d.ts.map +1 -1
  128. package/dist/api/transform.js +44 -12
  129. package/dist/api/transform.js.map +1 -1
  130. package/dist/brep/brep-ops.d.ts +34 -1
  131. package/dist/brep/brep-ops.d.ts.map +1 -1
  132. package/dist/brep/brep-ops.js +62 -22
  133. package/dist/brep/brep-ops.js.map +1 -1
  134. package/dist/brep/engine/adapters/brep-mock.d.ts.map +1 -1
  135. package/dist/brep/engine/adapters/brep-mock.js +8 -0
  136. package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
  137. package/dist/brep/engine/adapters/brepkit.d.ts.map +1 -1
  138. package/dist/brep/engine/adapters/brepkit.js +6 -1
  139. package/dist/brep/engine/adapters/brepkit.js.map +1 -1
  140. package/dist/brep/engine/adapters/occt.d.ts.map +1 -1
  141. package/dist/brep/engine/adapters/occt.js +24 -1
  142. package/dist/brep/engine/adapters/occt.js.map +1 -1
  143. package/dist/brep/engine/primitives.d.ts +17 -0
  144. package/dist/brep/engine/primitives.d.ts.map +1 -1
  145. package/dist/brep/engine/primitives.js.map +1 -1
  146. package/dist/brep/engine/types.d.ts +49 -6
  147. package/dist/brep/engine/types.d.ts.map +1 -1
  148. package/dist/brep/engine/types.js.map +1 -1
  149. package/dist/brep/export/step.d.ts.map +1 -1
  150. package/dist/brep/export/step.js +6 -1
  151. package/dist/brep/export/step.js.map +1 -1
  152. package/dist/brep/face-evolution.d.ts +78 -8
  153. package/dist/brep/face-evolution.d.ts.map +1 -1
  154. package/dist/brep/face-evolution.js +130 -17
  155. package/dist/brep/face-evolution.js.map +1 -1
  156. package/dist/brepkit-kernel/brepkitKernel.d.ts +1 -1
  157. package/dist/brepkit-kernel/brepkitKernel.d.ts.map +1 -1
  158. package/dist/brepkit-kernel/brepkitKernel.js +27 -1
  159. package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
  160. package/dist/browser.d.ts +0 -2
  161. package/dist/browser.d.ts.map +1 -1
  162. package/dist/browser.js +2 -2
  163. package/dist/browser.js.map +1 -1
  164. package/dist/cad-runtime/admit-compat-lib.d.ts +19 -1
  165. package/dist/cad-runtime/admit-compat-lib.d.ts.map +1 -1
  166. package/dist/cad-runtime/admit-compat-lib.js +21 -1
  167. package/dist/cad-runtime/admit-compat-lib.js.map +1 -1
  168. package/dist/cad-runtime/backend-dispatch.d.ts +44 -3
  169. package/dist/cad-runtime/backend-dispatch.d.ts.map +1 -1
  170. package/dist/cad-runtime/backend-dispatch.js +46 -3
  171. package/dist/cad-runtime/backend-dispatch.js.map +1 -1
  172. package/dist/cad-runtime/browser-lib-loader.d.ts +2 -0
  173. package/dist/cad-runtime/browser-lib-loader.d.ts.map +1 -1
  174. package/dist/cad-runtime/browser-lib-loader.js +9 -1
  175. package/dist/cad-runtime/browser-lib-loader.js.map +1 -1
  176. package/dist/cad-runtime/direct-executor.d.ts.map +1 -1
  177. package/dist/cad-runtime/direct-executor.js +14 -4
  178. package/dist/cad-runtime/direct-executor.js.map +1 -1
  179. package/dist/cad-runtime/module-registry.d.ts +3 -1
  180. package/dist/cad-runtime/module-registry.d.ts.map +1 -1
  181. package/dist/cad-runtime/module-registry.js +13 -1
  182. package/dist/cad-runtime/module-registry.js.map +1 -1
  183. package/dist/cad-runtime/ports.d.ts +7 -0
  184. package/dist/cad-runtime/ports.d.ts.map +1 -1
  185. package/dist/cad-runtime/ports.js.map +1 -1
  186. package/dist/cad-runtime/runtime-concurrent-error.d.ts +38 -0
  187. package/dist/cad-runtime/runtime-concurrent-error.d.ts.map +1 -0
  188. package/dist/cad-runtime/runtime-concurrent-error.js +43 -0
  189. package/dist/cad-runtime/runtime-concurrent-error.js.map +1 -0
  190. package/dist/cad-runtime/runtime.d.ts +54 -2
  191. package/dist/cad-runtime/runtime.d.ts.map +1 -1
  192. package/dist/cad-runtime/runtime.js +186 -10
  193. package/dist/cad-runtime/runtime.js.map +1 -1
  194. package/dist/define-op.d.ts +22 -0
  195. package/dist/define-op.d.ts.map +1 -1
  196. package/dist/define-op.js +82 -12
  197. package/dist/define-op.js.map +1 -1
  198. package/dist/fcstd/attachment.d.ts +72 -0
  199. package/dist/fcstd/attachment.d.ts.map +1 -0
  200. package/dist/fcstd/attachment.js +93 -0
  201. package/dist/fcstd/attachment.js.map +1 -0
  202. package/dist/fcstd/build-fai-zip.d.ts +11 -0
  203. package/dist/fcstd/build-fai-zip.d.ts.map +1 -1
  204. package/dist/fcstd/build-fai-zip.js +21 -8
  205. package/dist/fcstd/build-fai-zip.js.map +1 -1
  206. package/dist/fcstd/cli.d.ts +3 -0
  207. package/dist/fcstd/cli.d.ts.map +1 -0
  208. package/dist/fcstd/cli.js +37 -0
  209. package/dist/fcstd/cli.js.map +1 -0
  210. package/dist/fcstd/codegen.d.ts +23 -1
  211. package/dist/fcstd/codegen.d.ts.map +1 -1
  212. package/dist/fcstd/codegen.js +159 -48
  213. package/dist/fcstd/codegen.js.map +1 -1
  214. package/dist/fcstd/container.d.ts +16 -1
  215. package/dist/fcstd/container.d.ts.map +1 -1
  216. package/dist/fcstd/container.js +12 -1
  217. package/dist/fcstd/container.js.map +1 -1
  218. package/dist/fcstd/contour.d.ts +9 -1
  219. package/dist/fcstd/contour.d.ts.map +1 -1
  220. package/dist/fcstd/contour.js +28 -18
  221. package/dist/fcstd/contour.js.map +1 -1
  222. package/dist/fcstd/convert.d.ts +31 -2
  223. package/dist/fcstd/convert.d.ts.map +1 -1
  224. package/dist/fcstd/convert.js +73 -22
  225. package/dist/fcstd/convert.js.map +1 -1
  226. package/dist/fcstd/document.d.ts +8 -1
  227. package/dist/fcstd/document.d.ts.map +1 -1
  228. package/dist/fcstd/document.js +4 -1
  229. package/dist/fcstd/document.js.map +1 -1
  230. package/dist/fcstd/expressions.d.ts +14 -1
  231. package/dist/fcstd/expressions.d.ts.map +1 -1
  232. package/dist/fcstd/expressions.js +11 -1
  233. package/dist/fcstd/expressions.js.map +1 -1
  234. package/dist/fcstd/external-geo.d.ts +27 -2
  235. package/dist/fcstd/external-geo.d.ts.map +1 -1
  236. package/dist/fcstd/external-geo.js +23 -2
  237. package/dist/fcstd/external-geo.js.map +1 -1
  238. package/dist/fcstd/feature-translate.d.ts +85 -3
  239. package/dist/fcstd/feature-translate.d.ts.map +1 -1
  240. package/dist/fcstd/feature-translate.js +189 -9
  241. package/dist/fcstd/feature-translate.js.map +1 -1
  242. package/dist/fcstd/index.d.ts +23 -0
  243. package/dist/fcstd/index.d.ts.map +1 -0
  244. package/dist/fcstd/index.js +19 -0
  245. package/dist/fcstd/index.js.map +1 -0
  246. package/dist/fcstd/placement.d.ts +49 -6
  247. package/dist/fcstd/placement.d.ts.map +1 -1
  248. package/dist/fcstd/placement.js +46 -6
  249. package/dist/fcstd/placement.js.map +1 -1
  250. package/dist/fcstd/planegcs-backend.d.ts +16 -1
  251. package/dist/fcstd/planegcs-backend.d.ts.map +1 -1
  252. package/dist/fcstd/planegcs-backend.js +16 -1
  253. package/dist/fcstd/planegcs-backend.js.map +1 -1
  254. package/dist/fcstd/sketch-parse.d.ts +43 -0
  255. package/dist/fcstd/sketch-parse.d.ts.map +1 -1
  256. package/dist/fcstd/sketch-parse.js +26 -0
  257. package/dist/fcstd/sketch-parse.js.map +1 -1
  258. package/dist/fcstd/sketch-solver.d.ts +20 -2
  259. package/dist/fcstd/sketch-solver.d.ts.map +1 -1
  260. package/dist/fcstd/sketch-solver.js +6 -1
  261. package/dist/fcstd/sketch-solver.js.map +1 -1
  262. package/dist/fcstd/sketch-verify.d.ts +19 -1
  263. package/dist/fcstd/sketch-verify.d.ts.map +1 -1
  264. package/dist/fcstd/sketch-verify.js +14 -1
  265. package/dist/fcstd/sketch-verify.js.map +1 -1
  266. package/dist/fcstd/structural-types.d.ts +83 -0
  267. package/dist/fcstd/structural-types.d.ts.map +1 -0
  268. package/dist/fcstd/structural-types.js +116 -0
  269. package/dist/fcstd/structural-types.js.map +1 -0
  270. package/dist/fcstd/unpack.d.ts +21 -2
  271. package/dist/fcstd/unpack.d.ts.map +1 -1
  272. package/dist/fcstd/unpack.js +11 -2
  273. package/dist/fcstd/unpack.js.map +1 -1
  274. package/dist/fcstd-convert.d.ts +30 -0
  275. package/dist/fcstd-convert.d.ts.map +1 -0
  276. package/dist/fcstd-convert.js +27 -0
  277. package/dist/fcstd-convert.js.map +1 -0
  278. package/dist/index.d.ts +1 -0
  279. package/dist/index.d.ts.map +1 -1
  280. package/dist/index.js.map +1 -1
  281. package/dist/lang/determinism-scanner.d.ts +62 -0
  282. package/dist/lang/determinism-scanner.d.ts.map +1 -0
  283. package/dist/lang/determinism-scanner.js +619 -0
  284. package/dist/lang/determinism-scanner.js.map +1 -0
  285. package/dist/lang/symbol-table.generated.d.ts +7 -3
  286. package/dist/lang/symbol-table.generated.d.ts.map +1 -1
  287. package/dist/lang/symbol-table.generated.js +7 -3
  288. package/dist/lang/symbol-table.generated.js.map +1 -1
  289. package/dist/mesh/index.d.ts.map +1 -1
  290. package/dist/mesh/index.js +3 -2
  291. package/dist/mesh/index.js.map +1 -1
  292. package/dist/node-host/cli.d.ts.map +1 -1
  293. package/dist/node-host/cli.js +56 -2
  294. package/dist/node-host/cli.js.map +1 -1
  295. package/dist/runtime-state.d.ts +18 -6
  296. package/dist/runtime-state.d.ts.map +1 -1
  297. package/dist/runtime-state.js +9 -1
  298. package/dist/runtime-state.js.map +1 -1
  299. package/dist/shape.d.ts +15 -0
  300. package/dist/shape.d.ts.map +1 -1
  301. package/dist/shape.js +26 -3
  302. package/dist/shape.js.map +1 -1
  303. package/dist/topology/naming/build-naming.d.ts +14 -30
  304. package/dist/topology/naming/build-naming.d.ts.map +1 -1
  305. package/dist/topology/naming/build-naming.js +21 -54
  306. package/dist/topology/naming/build-naming.js.map +1 -1
  307. package/dist/topology/naming/capture-topo-ref.d.ts.map +1 -1
  308. package/dist/topology/naming/capture-topo-ref.js +5 -0
  309. package/dist/topology/naming/capture-topo-ref.js.map +1 -1
  310. package/dist/topology/naming/index.d.ts +3 -0
  311. package/dist/topology/naming/index.d.ts.map +1 -1
  312. package/dist/topology/naming/index.js +3 -0
  313. package/dist/topology/naming/index.js.map +1 -1
  314. package/dist/topology/naming/lineage-resolve.d.ts +80 -0
  315. package/dist/topology/naming/lineage-resolve.d.ts.map +1 -0
  316. package/dist/topology/naming/lineage-resolve.js +120 -0
  317. package/dist/topology/naming/lineage-resolve.js.map +1 -0
  318. package/dist/topology/naming/lineage.d.ts +349 -0
  319. package/dist/topology/naming/lineage.d.ts.map +1 -0
  320. package/dist/topology/naming/lineage.js +398 -0
  321. package/dist/topology/naming/lineage.js.map +1 -0
  322. package/dist/topology/naming/migrate.d.ts +41 -0
  323. package/dist/topology/naming/migrate.d.ts.map +1 -0
  324. package/dist/topology/naming/migrate.js +88 -0
  325. package/dist/topology/naming/migrate.js.map +1 -0
  326. package/dist/topology/naming/role-name.d.ts +176 -0
  327. package/dist/topology/naming/role-name.d.ts.map +1 -0
  328. package/dist/topology/naming/role-name.js +344 -0
  329. package/dist/topology/naming/role-name.js.map +1 -0
  330. package/dist/topology/naming/roles.d.ts +20 -22
  331. package/dist/topology/naming/roles.d.ts.map +1 -1
  332. package/dist/topology/naming/roles.js +51 -49
  333. package/dist/topology/naming/roles.js.map +1 -1
  334. package/dist/topology/naming/types.d.ts +65 -18
  335. package/dist/topology/naming/types.d.ts.map +1 -1
  336. package/dist/topology/naming/types.js.map +1 -1
  337. package/dist/weapp.d.ts +22 -0
  338. package/dist/weapp.d.ts.map +1 -0
  339. package/dist/weapp.js +23 -0
  340. package/dist/weapp.js.map +1 -0
  341. package/package.json +18 -5
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * brepkit-kernel/brepkitKernel — brepkit 内核 → faijs BrepEngineApi 适配器(v1 白名单)
3
3
  *
4
- * 设计要点(对应 3d_editor/docs/plans/2026-09-18-weapp-voice-ai-modeling-design.md §5):
4
+ * 设计要点(对应 3d_editor 项目的 weapp-voice-ai-modeling 设计计划 §5):
5
5
  * - 句柄:brepkit u32 句柄与 faijs BrepHandle(number) 同构,直通零转换;
6
6
  * - 拓扑红线:meshShape 用 tessellateSolidGrouped 输出 faceGroups,与三角化几何同源;
7
7
  * - 面溯源:布尔/倒角走 *WithEvolution,映射为 BrepEvolutionData(hash 编码);
@@ -520,6 +520,32 @@ export async function createBrepkitPrimitives() {
520
520
  intersectWithHistory(_a, _b, _inputFaceHashes, _hashUpperBound) {
521
521
  return unsupported('intersectWithHistory');
522
522
  },
523
+ // Phase 0.1 补齐的 7 个:brepkit 适配器 v1 未实现 —— 如实抛错,不伪造。
524
+ // ⚠️ 这些桩**不能**被当作"已实现"来探测:`typeof api.xWithHistory === 'function'`
525
+ // 恒为真。Phase 0.2 起适配器的 `evolution` 是逐核函数**名单**
526
+ // (`adapters/brepkit.ts` = ['fuse','cut','fillet']),名单才是唯一真相来源;
527
+ // 声明多写一项 = 让该 op 静默通过静态判定后死在这些桩上(红线违规)。
528
+ translateWithHistory(_shape, _dx, _dy, _dz, _inputFaceHashes, _hashUpperBound) {
529
+ return unsupported('translateWithHistory');
530
+ },
531
+ rotateWithHistory(_shape, _axis, _angleRad, _inputFaceHashes, _hashUpperBound) {
532
+ return unsupported('rotateWithHistory');
533
+ },
534
+ mirrorWithHistory(_shape, _point, _normal, _inputFaceHashes, _hashUpperBound) {
535
+ return unsupported('mirrorWithHistory');
536
+ },
537
+ scaleWithHistory(_shape, _center, _factor, _inputFaceHashes, _hashUpperBound) {
538
+ return unsupported('scaleWithHistory');
539
+ },
540
+ shellWithHistory(_solid, _faces, _thickness, _tolerance, _inputFaceHashes, _hashUpperBound) {
541
+ return unsupported('shellWithHistory');
542
+ },
543
+ offsetWithHistory(_solid, _distance, _tolerance, _inputFaceHashes, _hashUpperBound) {
544
+ return unsupported('offsetWithHistory');
545
+ },
546
+ thickenWithHistory(_shape, _thickness, _tolerance, _inputFaceHashes, _hashUpperBound) {
547
+ return unsupported('thickenWithHistory');
548
+ },
523
549
  // ── XCAF 装配(v1 关闭) ──
524
550
  createXCAFDocument() { return unsupported('createXCAFDocument'); },
525
551
  importXCAFFromSTEP(_stepData) { return unsupported('importXCAFFromSTEP'); },
@@ -1 +1 @@
1
- {"version":3,"file":"brepkitKernel.js","sourceRoot":"","sources":["../../src/brepkit-kernel/brepkitKernel.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * brepkit-kernel/brepkitKernel — brepkit 内核 → faijs BrepEngineApi 适配器(v1 白名单)\n *\n * 设计要点(对应 3d_editor/docs/plans/2026-09-18-weapp-voice-ai-modeling-design.md §5):\n * - 句柄:brepkit u32 句柄与 faijs BrepHandle(number) 同构,直通零转换;\n * - 拓扑红线:meshShape 用 tessellateSolidGrouped 输出 faceGroups,与三角化几何同源;\n * - 面溯源:布尔/倒角走 *WithEvolution,映射为 BrepEvolutionData(hash 编码);\n * - 链纪律:kernel.meshFallbackCount 计数差 > 0 → getMeshFallbackCount 暴露给宿主,\n * 由宿主标记 BREP 链中断(不在此层静默处理);\n * - v1 白名单之外的方法:显式抛错(报错好于掩盖,禁止空实现假成功)。\n */\n\nimport { initBrepkitWasm, type BrepKitKernel } from './brepkitWasm'\nimport type { BrepEngineApi } from '../brep/engine/primitives'\nimport type {\n BrepBoundingBox,\n BrepCurveParameters,\n BrepEdgeData,\n BrepEvolutionData,\n BrepHandle,\n BrepMeshResult,\n BrepSubShapeType,\n BrepTessellateOptions,\n BrepUvBounds,\n BrepVec3,\n BrepXcafDocument,\n} from '../brep/engine/types'\n\n// ── 句柄桥接:brepkit number 句柄 ↔ BrepHandle(零运行时成本,与 occt 适配器同构) ──\nconst asHandle = (n: number): BrepHandle => n as BrepHandle\nconst asNum = (h: BrepHandle): number => h as unknown as number\nconst arr = (x: ArrayLike<number> | number[]): number[] => Array.from(x as ArrayLike<number>)\n\n/**\n * brepkit 几何查询返回值归一为 number[]。\n *\n * 关键事实(npm brepkit-wasm d.ts 与本地 web-target 胶水一致):\n * getSurfaceDomain / getFaceNormal / evaluateSurfaceNormal / evaluateSurface /\n * evaluateEdgeCurve / evaluateEdgeCurveD1 / getEdgeCurveParameters / centerOfMass\n * 返回 **Float64Array**(不是 JSON 字符串);\n * 仅 getAnalyticSurfaceParams / getNurbsCurveData / tessellateSolidGrouped /\n * *WithEvolution 返回 JSON 字符串。\n *\n * 历史 bug:曾误以为全部返回 JSON 字符串而统一 JSON.parse,导致\n * `String(Float64Array)` 变成逗号拼接数字串(如 \"-1000000,1000000,...\"),\n * JSON.parse 在第一个逗号处抛 \"Unexpected non-whitespace character after JSON\"。\n * 这里同时兼容:JSON 字符串 / TypedArray / 普通数组 / {x,y,z} / 数字键对象。\n */\nfunction toNumArray(v: unknown): number[] {\n if (typeof v === 'string') {\n const parsed: unknown = JSON.parse(v)\n if (Array.isArray(parsed)) return parsed.map(Number)\n if (parsed && typeof parsed === 'object') {\n const o = parsed as Record<string, unknown>\n if (typeof o.x === 'number') return [o.x, Number(o.y), Number(o.z)]\n if (o[0] !== undefined) {\n const out: number[] = []\n for (let i = 0; o[i] !== undefined; i++) out.push(Number(o[i]))\n return out\n }\n }\n return []\n }\n if (v && typeof v === 'object') {\n if (Array.isArray(v)) return v.map(Number)\n if ('length' in v) return Array.from(v as ArrayLike<number>, Number)\n const o = v as Record<string, unknown>\n if (typeof o.x === 'number') return [o.x, Number(o.y), Number(o.z)]\n if (o[0] !== undefined) {\n const out: number[] = []\n for (let i = 0; o[i] !== undefined; i++) out.push(Number(o[i]))\n return out\n }\n }\n return []\n}\n\n/** v1 白名单外的方法统一抛错(携带适配器上下文与 v1 范围说明)。 */\nfunction unsupported(name: string): never {\n throw new Error(`[brepkit-kernel] BrepEngineApi.${name} 不在 brepkit 适配器 v1 白名单内(能力表见设计文档 §5.2)。该操作请在 OCCT 链执行,或等待适配器扩展。`)\n}\n\n/** 面稳定指纹:解析曲面参数 + 面积 → FNV-1a → 取模上界(跨操作可追溯,与句柄无关)。 */\nfunction faceFingerprint(kernel: BrepKitKernel, face: number, upperBound: number): number {\n let params = ''\n try { params = String(kernel.getAnalyticSurfaceParams(face) ?? '') } catch { /* 非解析面 */ }\n let area = 0\n try { area = Number(kernel.faceArea?.(face, 0.1) ?? 0) } catch { /* 查询失败用 0 */ }\n const basis = `${params}|${area.toFixed(6)}`\n let h = 0x811c9dc5\n for (let i = 0; i < basis.length; i++) {\n h ^= basis.charCodeAt(i)\n h = Math.imul(h, 0x01000193) >>> 0\n }\n return upperBound > 0 ? h % upperBound : h\n}\n\n/** 面演化数据(BrepEvolutionData):brepkit evolution JSON → hash 编码三元组。 */\nfunction mapEvolution(\n kernel: BrepKitKernel,\n raw: string,\n resultHandle: number,\n inputFaceHashes: number[],\n hashUpperBound: number,\n): BrepEvolutionData {\n // raw: {solid, evolution:{modified:{oldHandle:[newHandles]}, generated:{oldHandle:[new]}, deleted:[oldHandles]}}\n const parsed = JSON.parse(raw) as {\n solid: number\n evolution: { modified: Record<string, number[]>; generated: Record<string, number[]>; deleted: number[] }\n }\n const evo = parsed.evolution ?? { modified: {}, generated: {}, deleted: [] }\n const modifiedKeys = new Set(Object.keys(evo.modified ?? {}).map(Number))\n const deletedKeys = new Set((evo.deleted ?? []).map(Number))\n // 输入面 hash → 是否被改/删:通过该输入面在输入 hash 快照中的位置无法直接回溯句柄,\n // 诚实映射:modified/deleted 用\"发生变化的输入句柄数 == 输入面数\"的对齐近似——\n // v1 精确溯源依赖 per-shape hash 注册表(subShapeHashes 时登记 hash↔handle)。\n const registry = hashRegistry.get(kernel)\n const modified: number[] = []\n const deleted: number[] = []\n if (registry) {\n for (const [hash, handle] of registry) {\n if (modifiedKeys.has(handle)) modified.push(hash)\n if (deletedKeys.has(handle)) deleted.push(hash)\n }\n }\n // generated:结果实体的新面 hash(数量按 generated 表展开)\n const generated: number[] = []\n for (const news of Object.values(evo.generated ?? {})) {\n for (const nh of news) generated.push(faceFingerprint(kernel, nh, hashUpperBound))\n }\n // 更新注册表:结果实体 faces 的最新 hash 登记(供下一次演化对齐)\n try {\n const faces = arr(kernel.getSolidFaces(resultHandle))\n const reg = registry ?? new Map<number, number>()\n for (const f of faces) reg.set(faceFingerprint(kernel, f, hashUpperBound), f)\n hashRegistry.set(kernel, reg)\n } catch { /* 非实体结果跳过登记 */ }\n return { result: asHandle(resultHandle), modified, generated, deleted }\n}\n\n/** per-kernel 的 hash↔handle 登记表(fuseWithHistory 溯源对齐用)。 */\nconst hashRegistry = new WeakMap<BrepKitKernel, Map<number, number>>()\n\n/** brepkit 适配器返回类型:BrepEngineApi + brepkit 专属诊断。 */\ntype BrepkitEngineExtras = BrepEngineApi & { getMeshFallbackCount(): number }\n\n/**\n * 创建 brepkit BrepEngineApi 实现(v1 白名单)。\n * 与 occt 的 initOcctWasm 同位:返回满足引擎契约的原语集合。\n * @returns a promise resolving to the BrepEngineApi implementation plus brepkit-specific\n * diagnostics (`getMeshFallbackCount`).\n */\nexport async function createBrepkitPrimitives(): Promise<BrepkitEngineExtras> {\n const kernel = await initBrepkitWasm()\n liveKernel = kernel\n let lastFallbackCount = 0\n // 已知面句柄集合:getSubShapes(shape,'face') 返回的面在此登记;\n // getSubShapes(handle,'edge'/'vertex') 据此分发到 face 级或 solid 级 API。\n const knownFaces = new Set<number>()\n const readFallback = (): number => {\n try {\n return typeof kernel.meshFallbackCount === 'function' ? Number(kernel.meshFallbackCount()) : 0\n } catch { return 0 }\n }\n /** 布尔类操作后登记回退计数差(§5.4:宿主每步读取,>0 即链中断)。 */\n const trackFallback = <T>(r: T): T => { lastFallbackCount = readFallback(); return r }\n\n const api = {\n // ── 生命周期 ──\n release(_shape: BrepHandle): void { /* GC 型:brepkit 句柄由内核统一管理,无逐句柄 free API */ },\n /** 内核级诊断:距上次读取的 mesh 布尔回退计数差(>0 = BREP 链已中断)。 */\n getMeshFallbackCount(): number {\n const now = readFallback()\n const delta = now - lastFallbackCount\n lastFallbackCount = now\n return delta\n },\n\n // ── 实体图元 ──\n makeBox(dx: number, dy: number, dz: number): BrepHandle { return asHandle(kernel.makeBox(dx, dy, dz)) },\n makeBoxFromCorners(corner1: BrepVec3, corner2: BrepVec3): BrepHandle {\n const dx = Math.abs(corner2.x - corner1.x), dy = Math.abs(corner2.y - corner1.y), dz = Math.abs(corner2.z - corner1.z)\n const h = kernel.makeBox(dx, dy, dz)\n return asHandle(kernel.transformSolid(h, translationMatrix(\n Math.min(corner1.x, corner2.x), Math.min(corner1.y, corner2.y), Math.min(corner1.z, corner2.z),\n )))\n },\n makeCylinder(radius: number, height: number): BrepHandle { return asHandle(kernel.makeCylinder(radius, height)) },\n makeSphere(radius: number): BrepHandle { return asHandle(kernel.makeSphere(radius, 32)) },\n makeCone(r1: number, r2: number, height: number): BrepHandle { return asHandle(kernel.makeCone(r1, r2, height)) },\n makeRectangle(_width: number, _height: number): BrepHandle { return unsupported('makeRectangle') },\n\n // ── 造型运算 ──\n extrude(_shape: BrepHandle, _dx: number, _dy: number, _dz: number): BrepHandle { return unsupported('extrude') },\n loft(_wires: BrepHandle[], _isSolid: boolean, _ruled: boolean): BrepHandle { return unsupported('loft') },\n\n // ── 布尔与分割 ──\n fuse(a: BrepHandle, b: BrepHandle): BrepHandle { return asHandle(trackFallback(kernel.fuse(asNum(a), asNum(b)))) },\n cut(a: BrepHandle, b: BrepHandle): BrepHandle { return asHandle(trackFallback(kernel.cut(asNum(a), asNum(b)))) },\n common(a: BrepHandle, b: BrepHandle): BrepHandle { return asHandle(trackFallback(kernel.common(asNum(a), asNum(b)))) },\n intersect(a: BrepHandle, b: BrepHandle): BrepHandle { return asHandle(trackFallback(kernel.common(asNum(a), asNum(b)))) },\n section(_a: BrepHandle, _b: BrepHandle): BrepHandle { return unsupported('section') },\n fuseAll(shapes: BrepHandle[]): BrepHandle {\n return asHandle(trackFallback(kernel.fuseAll(Int32Array.from(shapes.map(asNum)))))\n },\n\n // ── 倒角与圆角 ──\n chamfer(solid: BrepHandle, edges: BrepHandle[], distance: number): BrepHandle {\n return asHandle(trackFallback(kernel.chamfer(asNum(solid), Int32Array.from(edges.map(asNum)), distance)))\n },\n chamferDistAngle(solid: BrepHandle, edges: BrepHandle[], distance: number, angleDeg: number): BrepHandle {\n return asHandle(trackFallback(kernel.chamferDistanceAngle(asNum(solid), Int32Array.from(edges.map(asNum)), distance, angleDeg)))\n },\n fillet(solid: BrepHandle, edges: BrepHandle[], radius: number): BrepHandle {\n return asHandle(trackFallback(kernel.fillet(asNum(solid), Int32Array.from(edges.map(asNum)), radius)))\n },\n filletVariable(solid: BrepHandle, edge: BrepHandle, startRadius: number, endRadius: number): BrepHandle {\n return asHandle(trackFallback(kernel.filletVariable(asNum(solid), asNum(edge), startRadius, endRadius)))\n },\n filletWithHistory(solid: BrepHandle, edges: BrepHandle[], radius: number, inputFaceHashes: number[], hashUpperBound: number): BrepEvolutionData {\n const raw = kernel.filletWithEvolution(asNum(solid), Int32Array.from(edges.map(asNum)), radius)\n return mapEvolution(kernel, raw, JSON.parse(raw).solid, inputFaceHashes, hashUpperBound)\n },\n chamferWithHistory(_solid: BrepHandle, _edges: BrepHandle[], _distance: number, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n // brepkit 无 chamferWithEvolution → 等距倒角演化不支持,诚实报错(能力表 evolution 仅覆盖 fuse/cut/fillet)\n return unsupported('chamferWithHistory')\n },\n\n // ── 变换 ──\n // ⚠️ brepkit 的 transformSolid 是「原地修改、返回 undefined」——必须先 copySolid\n // 复制出新句柄再变换,否则会篡改调用方手里的原实体(单测 2026-09-19 实证)。\n translate(shape: BrepHandle, dx: number, dy: number, dz: number): BrepHandle {\n const c = kernel.copySolid(asNum(shape))\n kernel.transformSolid(c, translationMatrix(dx, dy, dz))\n return asHandle(c)\n },\n scale(shape: BrepHandle, center: BrepVec3, factor: number): BrepHandle {\n const c = kernel.copySolid(asNum(shape))\n kernel.transformSolid(c, scaleMatrix(center, factor))\n return asHandle(c)\n },\n transform(shape: BrepHandle, matrix: number[]): BrepHandle {\n const c = kernel.copySolid(asNum(shape))\n kernel.transformSolid(c, matrix)\n return asHandle(c)\n },\n located(shape: BrepHandle, matrix: number[]): BrepHandle {\n const c = kernel.copySolid(asNum(shape))\n kernel.transformSolid(c, matrix)\n return asHandle(c)\n },\n generalTransform(shape: BrepHandle, matrix: number[]): BrepHandle {\n const c = kernel.copySolid(asNum(shape))\n kernel.transformSolid(c, matrix)\n return asHandle(c)\n },\n copy(shape: BrepHandle): BrepHandle { return asHandle(kernel.copySolid(asNum(shape))) },\n\n // ── 曲线构造 ──\n makeLineEdge(start: BrepVec3, end: BrepVec3): BrepHandle {\n return asHandle(kernel.makeLineEdge(start.x, start.y, start.z, end.x, end.y, end.z))\n },\n makeArcEdge(_start: BrepVec3, _mid: BrepVec3, _end: BrepVec3): BrepHandle { return unsupported('makeArcEdge') },\n makeBezierEdge(_controlPoints: BrepVec3[]): BrepHandle { return unsupported('makeBezierEdge') },\n\n // ── 拓扑构造 ──\n makeWire(edges: BrepHandle[]): BrepHandle {\n return asHandle(kernel.makeWire(Int32Array.from(edges.map(asNum)), false))\n },\n makeFace(wire: BrepHandle): BrepHandle { return asHandle(kernel.makeFaceFromWire(asNum(wire))) },\n makeCompound(shapes: BrepHandle[]): BrepHandle {\n return asHandle(kernel.makeCompound(Int32Array.from(shapes.map(asNum))))\n },\n sewAndSolidify(faces: BrepHandle[], tolerance?: number): BrepHandle {\n return asHandle(kernel.sewFaces(Int32Array.from(faces.map(asNum)), tolerance ?? 1e-6))\n },\n buildTriFace(_a: BrepVec3, _b: BrepVec3, _c: BrepVec3): BrepHandle { return unsupported('buildTriFace') },\n addHolesInFace(face: BrepHandle, holeWires: BrepHandle[]): BrepHandle {\n return asHandle(kernel.addHolesToFace(asNum(face), Int32Array.from(holeWires.map(asNum))))\n },\n\n // ── 三角化(BREP→mesh 唯一出口) ──\n meshShape(shape: BrepHandle, options?: BrepTessellateOptions): BrepMeshResult {\n const deflection = options?.linearDeflection ?? 0.1\n const angular = options?.angularDeflection ?? 0.5\n const raw = kernel.tessellateSolidGrouped(asNum(shape), deflection, angular)\n const m = JSON.parse(raw) as { positions: number[]; normals: number[]; indices: number[]; faceOffsets: number[] }\n // faceOffsets 形如 [start0, start1, ..., totalEnd]:以「索引数组单位」计的每面偏移(2026-09-19 实测),\n // 除以 3 换算为 faijs 契约的三角形单位 [triStart, triCount, faceHash]\n const fo = m.faceOffsets\n const faceCount = Math.max(0, fo.length - 1)\n const faceHashes: number[] = []\n try {\n const faces = arr(kernel.getSolidFaces(asNum(shape)))\n for (let i = 0; i < faceCount && i < faces.length; i++) faceHashes.push(faceFingerprint(kernel, faces[i], 1e9))\n } catch { /* 非实体:faceHash 置 0 */ }\n const faceGroups = new Int32Array(faceCount * 3)\n for (let i = 0; i < faceCount; i++) {\n faceGroups[i * 3] = fo[i] / 3\n faceGroups[i * 3 + 1] = (fo[i + 1] - fo[i]) / 3\n faceGroups[i * 3 + 2] = faceHashes[i] ?? 0\n }\n return {\n positions: new Float32Array(m.positions),\n normals: new Float32Array(m.normals),\n indices: new Uint32Array(m.indices),\n vertexCount: m.positions.length / 3,\n triangleCount: m.indices.length / 3,\n faceGroups,\n faceCount,\n }\n },\n wireframe(shape: BrepHandle, deflection?: number): BrepEdgeData {\n const d = deflection ?? 0.1\n // JsEdgeLines:edgeCount/offsets/positions 均为属性(offsets/positions 为 TypedArray,2026-09-19 实测)\n const me = kernel.meshEdgesAll(asNum(shape), d, 0.5) as {\n edgeCount: number; offsets: ArrayLike<number>; positions: ArrayLike<number>\n }\n const edgeCount = Number(me.edgeCount)\n const offsets = arr(me.offsets)\n const positions = arr(me.positions)\n const edgeGroups = new Int32Array(edgeCount * 3)\n for (let i = 0; i < edgeCount; i++) {\n const start = offsets[i] ?? 0\n const count = (offsets[i + 1] ?? positions.length / 3) - start\n edgeGroups[i * 3] = start\n edgeGroups[i * 3 + 1] = count\n edgeGroups[i * 3 + 2] = i // 线框 hash 用序号(wireframe 不参与跨操作溯源)\n }\n return { points: new Float32Array(positions), edgeGroups, pointCount: positions.length, edgeCount }\n },\n\n // ── 拓扑查询 ──\n // 注意:拓扑 manifest(topologyExt.buildSelectorManifestCore)会在「面句柄」上调用\n // getSubShapes(face, 'edge'/'vertex'),而 brepkit 的 getSolidEdges/getSolidVertices\n // 只接受 solid 句柄;brepkit 提供 getFaceEdges(face)/getFaceVertices(face)。\n // brepkit 没有 shape-type 分类 API,且 getFaceEdges(solid) 不抛错(会返回某一面的边),\n // 不能用 try/catch 探测。改用「已知面集」:每次枚举面时把面句柄记入 knownFaces,\n // edge/vertex 查询时按句柄是否在 knownFaces 里分发到 face 级或 solid 级 API。\n getSubShapes(shape: BrepHandle, type: BrepSubShapeType): BrepHandle[] {\n const s = asNum(shape)\n let list: number[]\n if (type === 'face') {\n // 输入可能是 solid 或 shell\n try { list = arr(kernel.getSolidFaces(s)) }\n catch { list = arr(kernel.getShellFaces?.(s) ?? []) }\n for (const f of list) knownFaces.add(f)\n } else if (type === 'edge') {\n list = knownFaces.has(s)\n ? arr(kernel.getFaceEdges(s))\n : arr(kernel.getSolidEdges(s))\n } else if (type === 'vertex') {\n list = knownFaces.has(s)\n ? arr(kernel.getFaceVertices(s))\n : arr(kernel.getSolidVertices(s))\n } else if (type === 'shell') {\n list = arr(kernel.getSolidShells?.(s) ?? [])\n } else if (type === 'solid') {\n // 输入可能是 compound(多实体)或单个 solid。\n try { list = arr(kernel.getCompoundSolids(s)) }\n catch { list = [s] }\n } else {\n return unsupported(`getSubShapes(${type})`)\n }\n return list.map(asHandle)\n },\n queryBatch(shapes: BrepHandle[]): Array<{ area: number }> {\n return shapes.map(h => {\n try { return { area: Number(kernel.faceArea(asNum(h))) } } catch { return { area: 0 } }\n })\n },\n subShapeHashes(shape: BrepHandle, type: BrepSubShapeType, hashUpperBound: number): number[] {\n if (type !== 'face') return unsupported(`subShapeHashes(${type})`)\n const faces = arr(kernel.getSolidFaces(asNum(shape)))\n const hashes = faces.map(f => faceFingerprint(kernel, f, hashUpperBound))\n // 登记 hash↔handle(fuseWithHistory 溯源对齐依赖此表)\n const reg = hashRegistry.get(kernel) ?? new Map<number, number>()\n faces.forEach((f, i) => reg.set(hashes[i], f))\n hashRegistry.set(kernel, reg)\n return hashes\n },\n hashCode(shape: BrepHandle, upperBound: number): number {\n return faceFingerprint(kernel, asNum(shape), upperBound)\n },\n isSame(a: BrepHandle, b: BrepHandle): boolean { return asNum(a) === asNum(b) },\n isSolid(shape: BrepHandle): boolean {\n try { return arr(kernel.getSolidFaces(asNum(shape))).length > 0 } catch { return false }\n },\n shapeOrientation(shape: BrepHandle): string {\n try { return String(kernel.getShapeOrientation(asNum(shape))) } catch { return 'forward' }\n },\n\n // ── 几何求值 ──\n curveType(edge: BrepHandle): string { return String(kernel.getEdgeCurveType(asNum(edge))) },\n curvePointAtParam(edge: BrepHandle, param: number): BrepVec3 {\n // evaluateEdgeCurve 返回 Float64Array [x,y,z](非 JSON 字符串)\n return vec3Of(toNumArray(kernel.evaluateEdgeCurve(asNum(edge), param)))\n },\n curveTangent(edge: BrepHandle, param: number): BrepVec3 {\n // evaluateEdgeCurveD1 返回 Float64Array [px,py,pz, tx,ty,tz](点+切向量)\n const d = toNumArray(kernel.evaluateEdgeCurveD1(asNum(edge), param))\n return { x: d[3] ?? 0, y: d[4] ?? 0, z: d[5] ?? 0 }\n },\n curveParameters(edge: BrepHandle): BrepCurveParameters {\n // getEdgeCurveParameters 返回 Float64Array [first, last]\n const d = toNumArray(kernel.getEdgeCurveParameters(asNum(edge)))\n return { first: d[0] ?? 0, last: d[d.length - 1] ?? 1 }\n },\n curveIsClosed(edge: BrepHandle): boolean {\n // brepkit 无直接 edge-isClosed API;按曲线类型 + Nurbs 元数据判定:\n // CIRCLE/ELLIPSE 类曲线恒闭合;LINE 恒不闭合;\n // 其他曲线尝试 getNurbsCurveData().closed,拿不到时按不闭合处理(保守,不报错)。\n try {\n const t = String(kernel.getEdgeCurveType(asNum(edge))).toUpperCase()\n if (t === 'CIRCLE' || t === 'ELLIPSE') return true\n if (t === 'LINE') return false\n } catch { /* 类型查询失败走 Nurbs 元数据 */ }\n try {\n const raw = kernel.getNurbsCurveData(asNum(edge))\n if (typeof raw === 'string') {\n const p = JSON.parse(raw) as { closed?: boolean; periodic?: boolean }\n return !!p.closed || !!p.periodic\n }\n if (raw && typeof raw === 'object') {\n const o = raw as Record<string, unknown>\n return !!(o.closed || o.periodic)\n }\n } catch { /* 非 Nurbs 边 */ }\n return false\n },\n curveLength(edge: BrepHandle): number { return Number(kernel.edgeLength(asNum(edge))) },\n surfaceType(face: BrepHandle): string { return String(kernel.getSurfaceType(asNum(face))) },\n surfaceNormal(face: BrepHandle, u: number, v: number): BrepVec3 {\n // evaluateSurfaceNormal(face,u,v) 返回 Float64Array [nx,ny,nz];\n // 注意:getFaceNormal(face) 只接受 face 一个参数,不带 u/v,不能用于参数空间法向。\n return vec3Of(toNumArray(kernel.evaluateSurfaceNormal(asNum(face), u, v)))\n },\n pointOnSurface(face: BrepHandle, u: number, v: number): BrepVec3 {\n // evaluateSurface 返回 Float64Array [x,y,z]\n return vec3Of(toNumArray(kernel.evaluateSurface(asNum(face), u, v)))\n },\n uvBounds(face: BrepHandle): BrepUvBounds {\n // getSurfaceDomain 返回 Float64Array [uMin,uMax,vMin,vMax]\n const d = toNumArray(kernel.getSurfaceDomain(asNum(face)))\n return { uMin: d[0] ?? 0, uMax: d[1] ?? 1, vMin: d[2] ?? 0, vMax: d[3] ?? 1 }\n },\n getSurfaceCenterOfMass(face: BrepHandle): BrepVec3 {\n // brepkit 无 per-face 质心 API;用 UV 域中点在曲面上求值作为面中心近似\n // (与 OCCT 路径的「面中心用于命名/拾取锚点」语义一致,不追求精确质心)。\n const b = this.uvBounds(face)\n return this.pointOnSurface(face, (b.uMin + b.uMax) / 2, (b.vMin + b.vMax) / 2)\n },\n getFaceCylinderData(face: BrepHandle): { radius: number } | null {\n try {\n const p = JSON.parse(kernel.getAnalyticSurfaceParams(asNum(face))) as { type?: string; radius?: number }\n if (p?.type === 'cylinder' && typeof p.radius === 'number') return { radius: p.radius }\n } catch { /* 非解析面 */ }\n return null\n },\n getNurbsCurveData(edge: BrepHandle): { degree: number; periodic: boolean; rational: boolean } | null {\n try {\n const p = JSON.parse(kernel.getNurbsCurveData(asNum(edge))) as { degree?: number; periodic?: boolean; rational?: boolean }\n if (p && typeof p.degree === 'number') return { degree: p.degree, periodic: !!p.periodic, rational: !!p.rational }\n } catch { /* 非 Nurbs 边 */ }\n return null\n },\n\n // ── 测量 ──\n getBoundingBox(shape: BrepHandle, _useTriangulation?: boolean): BrepBoundingBox {\n const b = kernel.boundingBox(asNum(shape)) as ArrayLike<number>\n return { xmin: b[0], ymin: b[1], zmin: b[2], xmax: b[3], ymax: b[4], zmax: b[5] }\n },\n getVolume(shape: BrepHandle): number { return Number(kernel.volume(asNum(shape), 0.05)) },\n getCenterOfMass(shape: BrepHandle): BrepVec3 {\n // centerOfMass 返回 Float64Array [x,y,z](非 JSON 字符串)\n return vec3Of(toNumArray(kernel.centerOfMass(asNum(shape), 0.05)))\n },\n\n // ── 校验与修复 ──\n isValid(_shape: BrepHandle): boolean { return unsupported('isValid') },\n unifySameDomain(shape: BrepHandle): BrepHandle { return shape /* brepkit 无对应 API;恒等返回(不丢句柄) */ },\n healSolid(shape: BrepHandle, _tolerance?: number): BrepHandle { return asHandle(kernel.healSolid(asNum(shape))) },\n fixShape(shape: BrepHandle): BrepHandle { return asHandle(kernel.healSolid(asNum(shape))) },\n fixFaceOrientations(shape: BrepHandle): BrepHandle { return asHandle(kernel.fixFaceOrientations(asNum(shape))) },\n removeDegenerateEdges(_shape: BrepHandle): BrepHandle { return unsupported('removeDegenerateEdges') },\n\n // ── IO ──\n importStep(data: string | ArrayBuffer): BrepHandle {\n const text = typeof data === 'string' ? data : new TextDecoder().decode(data)\n return asHandle(kernel.importStep(text))\n },\n exportStep(shape: BrepHandle): string {\n // brepkit exportStep 返回 UTF-8 字节(Uint8Array),需解码为 STEP 文本(2026-09-19 实测)\n const bytes = kernel.exportStep(asNum(shape))\n return typeof bytes === 'string' ? bytes : new TextDecoder().decode(bytes)\n },\n importStl(_data: string | ArrayBuffer): BrepHandle { return unsupported('importStl') },\n fromBREP(data: string): BrepHandle {\n const bytes = Uint8Array.from(atobPolyfill(data))\n return asHandle(kernel.deserializeSolid(bytes))\n },\n\n // ── 面演化(可选能力槽) ──\n cutWithHistory(a: BrepHandle, b: BrepHandle, inputFaceHashes: number[], hashUpperBound: number): BrepEvolutionData {\n const raw = kernel.cutWithEvolution(asNum(a), asNum(b))\n return mapEvolution(kernel, raw, JSON.parse(raw).solid, inputFaceHashes, hashUpperBound)\n },\n fuseWithHistory(a: BrepHandle, b: BrepHandle, inputFaceHashes: number[], hashUpperBound: number): BrepEvolutionData {\n const raw = kernel.fuseWithEvolution(asNum(a), asNum(b))\n return mapEvolution(kernel, raw, JSON.parse(raw).solid, inputFaceHashes, hashUpperBound)\n },\n intersectWithHistory(_a: BrepHandle, _b: BrepHandle, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n return unsupported('intersectWithHistory')\n },\n\n // ── XCAF 装配(v1 关闭) ──\n createXCAFDocument(): BrepXcafDocument { return unsupported('createXCAFDocument') },\n importXCAFFromSTEP(_stepData: string): BrepXcafDocument { return unsupported('importXCAFFromSTEP') },\n }\n return api\n}\n\n// ── 工具 ──\n\n/** 4×4 行主序平移矩阵(brepkit transformSolid 格式:平移在最后一列,index 3/7/11;2026-09-19 实测)。 */\nfunction translationMatrix(dx: number, dy: number, dz: number): number[] {\n return [\n 1, 0, 0, dx,\n 0, 1, 0, dy,\n 0, 0, 1, dz,\n 0, 0, 0, 1,\n ]\n}\n\n/** 4×4 行主序缩放矩阵(绕 center 缩放)。 */\nfunction scaleMatrix(center: BrepVec3, factor: number): number[] {\n return [\n factor, 0, 0, center.x * (1 - factor),\n 0, factor, 0, center.y * (1 - factor),\n 0, 0, factor, center.z * (1 - factor),\n 0, 0, 0, 1,\n ]\n}\n\n/** wasm 返回的点/向量形态归一(数组 [x,y,z] 或 {x,y,z})。 */\nfunction vec3Of(p: number[] | { x: number; y: number; z: number }): BrepVec3 {\n if (Array.isArray(p)) return { x: p[0], y: p[1], z: p[2] }\n return { x: Number(p.x), y: Number(p.y), z: Number(p.z) }\n}\n\n/** base64 解码(node 与浏览器通用,避免直接依赖 Buffer)。 */\nfunction atobPolyfill(s: string): string {\n if (typeof atob === 'function') return atob(s)\n\n return Buffer.from(s, 'base64').toString('binary')\n}\n\n/** 释放内核单例(测试收尾用;宿主常驻不需调用)。 */\nlet liveKernel: BrepKitKernel | null = null\n\n/** 释放内核单例(测试收尾用;宿主常驻不需调用)。 */\nexport function disposeBrepkit(): void {\n try {\n if (liveKernel?.free) liveKernel.free()\n } catch { /* 已释放 */ }\n liveKernel = null\n}\n\n/** brepkit 适配器原语集类型(BrepEngineApi + brepkit 专属诊断 getMeshFallbackCount)。 */\nexport type BrepkitPrimitives = Awaited<ReturnType<typeof createBrepkitPrimitives>>\n"]}
1
+ {"version":3,"file":"brepkitKernel.js","sourceRoot":"","sources":["../../src/brepkit-kernel/brepkitKernel.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * brepkit-kernel/brepkitKernel — brepkit 内核 → faijs BrepEngineApi 适配器(v1 白名单)\n *\n * 设计要点(对应 3d_editor 项目的 weapp-voice-ai-modeling 设计计划 §5):\n * - 句柄:brepkit u32 句柄与 faijs BrepHandle(number) 同构,直通零转换;\n * - 拓扑红线:meshShape 用 tessellateSolidGrouped 输出 faceGroups,与三角化几何同源;\n * - 面溯源:布尔/倒角走 *WithEvolution,映射为 BrepEvolutionData(hash 编码);\n * - 链纪律:kernel.meshFallbackCount 计数差 > 0 → getMeshFallbackCount 暴露给宿主,\n * 由宿主标记 BREP 链中断(不在此层静默处理);\n * - v1 白名单之外的方法:显式抛错(报错好于掩盖,禁止空实现假成功)。\n */\n\nimport { initBrepkitWasm, type BrepKitKernel } from './brepkitWasm'\nimport type { BrepEngineApi } from '../brep/engine/primitives'\nimport type {\n BrepBoundingBox,\n BrepCurveParameters,\n BrepEdgeData,\n BrepEvolutionData,\n BrepHandle,\n BrepMeshResult,\n BrepSubShapeType,\n BrepTessellateOptions,\n BrepUvBounds,\n BrepVec3,\n BrepXcafDocument,\n} from '../brep/engine/types'\n\n// ── 句柄桥接:brepkit number 句柄 ↔ BrepHandle(零运行时成本,与 occt 适配器同构) ──\nconst asHandle = (n: number): BrepHandle => n as BrepHandle\nconst asNum = (h: BrepHandle): number => h as unknown as number\nconst arr = (x: ArrayLike<number> | number[]): number[] => Array.from(x as ArrayLike<number>)\n\n/**\n * brepkit 几何查询返回值归一为 number[]。\n *\n * 关键事实(npm brepkit-wasm d.ts 与本地 web-target 胶水一致):\n * getSurfaceDomain / getFaceNormal / evaluateSurfaceNormal / evaluateSurface /\n * evaluateEdgeCurve / evaluateEdgeCurveD1 / getEdgeCurveParameters / centerOfMass\n * 返回 **Float64Array**(不是 JSON 字符串);\n * 仅 getAnalyticSurfaceParams / getNurbsCurveData / tessellateSolidGrouped /\n * *WithEvolution 返回 JSON 字符串。\n *\n * 历史 bug:曾误以为全部返回 JSON 字符串而统一 JSON.parse,导致\n * `String(Float64Array)` 变成逗号拼接数字串(如 \"-1000000,1000000,...\"),\n * JSON.parse 在第一个逗号处抛 \"Unexpected non-whitespace character after JSON\"。\n * 这里同时兼容:JSON 字符串 / TypedArray / 普通数组 / {x,y,z} / 数字键对象。\n */\nfunction toNumArray(v: unknown): number[] {\n if (typeof v === 'string') {\n const parsed: unknown = JSON.parse(v)\n if (Array.isArray(parsed)) return parsed.map(Number)\n if (parsed && typeof parsed === 'object') {\n const o = parsed as Record<string, unknown>\n if (typeof o.x === 'number') return [o.x, Number(o.y), Number(o.z)]\n if (o[0] !== undefined) {\n const out: number[] = []\n for (let i = 0; o[i] !== undefined; i++) out.push(Number(o[i]))\n return out\n }\n }\n return []\n }\n if (v && typeof v === 'object') {\n if (Array.isArray(v)) return v.map(Number)\n if ('length' in v) return Array.from(v as ArrayLike<number>, Number)\n const o = v as Record<string, unknown>\n if (typeof o.x === 'number') return [o.x, Number(o.y), Number(o.z)]\n if (o[0] !== undefined) {\n const out: number[] = []\n for (let i = 0; o[i] !== undefined; i++) out.push(Number(o[i]))\n return out\n }\n }\n return []\n}\n\n/** v1 白名单外的方法统一抛错(携带适配器上下文与 v1 范围说明)。 */\nfunction unsupported(name: string): never {\n throw new Error(`[brepkit-kernel] BrepEngineApi.${name} 不在 brepkit 适配器 v1 白名单内(能力表见设计文档 §5.2)。该操作请在 OCCT 链执行,或等待适配器扩展。`)\n}\n\n/** 面稳定指纹:解析曲面参数 + 面积 → FNV-1a → 取模上界(跨操作可追溯,与句柄无关)。 */\nfunction faceFingerprint(kernel: BrepKitKernel, face: number, upperBound: number): number {\n let params = ''\n try { params = String(kernel.getAnalyticSurfaceParams(face) ?? '') } catch { /* 非解析面 */ }\n let area = 0\n try { area = Number(kernel.faceArea?.(face, 0.1) ?? 0) } catch { /* 查询失败用 0 */ }\n const basis = `${params}|${area.toFixed(6)}`\n let h = 0x811c9dc5\n for (let i = 0; i < basis.length; i++) {\n h ^= basis.charCodeAt(i)\n h = Math.imul(h, 0x01000193) >>> 0\n }\n return upperBound > 0 ? h % upperBound : h\n}\n\n/** 面演化数据(BrepEvolutionData):brepkit evolution JSON → hash 编码三元组。 */\nfunction mapEvolution(\n kernel: BrepKitKernel,\n raw: string,\n resultHandle: number,\n inputFaceHashes: number[],\n hashUpperBound: number,\n): BrepEvolutionData {\n // raw: {solid, evolution:{modified:{oldHandle:[newHandles]}, generated:{oldHandle:[new]}, deleted:[oldHandles]}}\n const parsed = JSON.parse(raw) as {\n solid: number\n evolution: { modified: Record<string, number[]>; generated: Record<string, number[]>; deleted: number[] }\n }\n const evo = parsed.evolution ?? { modified: {}, generated: {}, deleted: [] }\n const modifiedKeys = new Set(Object.keys(evo.modified ?? {}).map(Number))\n const deletedKeys = new Set((evo.deleted ?? []).map(Number))\n // 输入面 hash → 是否被改/删:通过该输入面在输入 hash 快照中的位置无法直接回溯句柄,\n // 诚实映射:modified/deleted 用\"发生变化的输入句柄数 == 输入面数\"的对齐近似——\n // v1 精确溯源依赖 per-shape hash 注册表(subShapeHashes 时登记 hash↔handle)。\n const registry = hashRegistry.get(kernel)\n const modified: number[] = []\n const deleted: number[] = []\n if (registry) {\n for (const [hash, handle] of registry) {\n if (modifiedKeys.has(handle)) modified.push(hash)\n if (deletedKeys.has(handle)) deleted.push(hash)\n }\n }\n // generated:结果实体的新面 hash(数量按 generated 表展开)\n const generated: number[] = []\n for (const news of Object.values(evo.generated ?? {})) {\n for (const nh of news) generated.push(faceFingerprint(kernel, nh, hashUpperBound))\n }\n // 更新注册表:结果实体 faces 的最新 hash 登记(供下一次演化对齐)\n try {\n const faces = arr(kernel.getSolidFaces(resultHandle))\n const reg = registry ?? new Map<number, number>()\n for (const f of faces) reg.set(faceFingerprint(kernel, f, hashUpperBound), f)\n hashRegistry.set(kernel, reg)\n } catch { /* 非实体结果跳过登记 */ }\n return { result: asHandle(resultHandle), modified, generated, deleted }\n}\n\n/** per-kernel 的 hash↔handle 登记表(fuseWithHistory 溯源对齐用)。 */\nconst hashRegistry = new WeakMap<BrepKitKernel, Map<number, number>>()\n\n/** brepkit 适配器返回类型:BrepEngineApi + brepkit 专属诊断。 */\ntype BrepkitEngineExtras = BrepEngineApi & { getMeshFallbackCount(): number }\n\n/**\n * 创建 brepkit BrepEngineApi 实现(v1 白名单)。\n * 与 occt 的 initOcctWasm 同位:返回满足引擎契约的原语集合。\n * @returns a promise resolving to the BrepEngineApi implementation plus brepkit-specific\n * diagnostics (`getMeshFallbackCount`).\n */\nexport async function createBrepkitPrimitives(): Promise<BrepkitEngineExtras> {\n const kernel = await initBrepkitWasm()\n liveKernel = kernel\n let lastFallbackCount = 0\n // 已知面句柄集合:getSubShapes(shape,'face') 返回的面在此登记;\n // getSubShapes(handle,'edge'/'vertex') 据此分发到 face 级或 solid 级 API。\n const knownFaces = new Set<number>()\n const readFallback = (): number => {\n try {\n return typeof kernel.meshFallbackCount === 'function' ? Number(kernel.meshFallbackCount()) : 0\n } catch { return 0 }\n }\n /** 布尔类操作后登记回退计数差(§5.4:宿主每步读取,>0 即链中断)。 */\n const trackFallback = <T>(r: T): T => { lastFallbackCount = readFallback(); return r }\n\n const api = {\n // ── 生命周期 ──\n release(_shape: BrepHandle): void { /* GC 型:brepkit 句柄由内核统一管理,无逐句柄 free API */ },\n /** 内核级诊断:距上次读取的 mesh 布尔回退计数差(>0 = BREP 链已中断)。 */\n getMeshFallbackCount(): number {\n const now = readFallback()\n const delta = now - lastFallbackCount\n lastFallbackCount = now\n return delta\n },\n\n // ── 实体图元 ──\n makeBox(dx: number, dy: number, dz: number): BrepHandle { return asHandle(kernel.makeBox(dx, dy, dz)) },\n makeBoxFromCorners(corner1: BrepVec3, corner2: BrepVec3): BrepHandle {\n const dx = Math.abs(corner2.x - corner1.x), dy = Math.abs(corner2.y - corner1.y), dz = Math.abs(corner2.z - corner1.z)\n const h = kernel.makeBox(dx, dy, dz)\n return asHandle(kernel.transformSolid(h, translationMatrix(\n Math.min(corner1.x, corner2.x), Math.min(corner1.y, corner2.y), Math.min(corner1.z, corner2.z),\n )))\n },\n makeCylinder(radius: number, height: number): BrepHandle { return asHandle(kernel.makeCylinder(radius, height)) },\n makeSphere(radius: number): BrepHandle { return asHandle(kernel.makeSphere(radius, 32)) },\n makeCone(r1: number, r2: number, height: number): BrepHandle { return asHandle(kernel.makeCone(r1, r2, height)) },\n makeRectangle(_width: number, _height: number): BrepHandle { return unsupported('makeRectangle') },\n\n // ── 造型运算 ──\n extrude(_shape: BrepHandle, _dx: number, _dy: number, _dz: number): BrepHandle { return unsupported('extrude') },\n loft(_wires: BrepHandle[], _isSolid: boolean, _ruled: boolean): BrepHandle { return unsupported('loft') },\n\n // ── 布尔与分割 ──\n fuse(a: BrepHandle, b: BrepHandle): BrepHandle { return asHandle(trackFallback(kernel.fuse(asNum(a), asNum(b)))) },\n cut(a: BrepHandle, b: BrepHandle): BrepHandle { return asHandle(trackFallback(kernel.cut(asNum(a), asNum(b)))) },\n common(a: BrepHandle, b: BrepHandle): BrepHandle { return asHandle(trackFallback(kernel.common(asNum(a), asNum(b)))) },\n intersect(a: BrepHandle, b: BrepHandle): BrepHandle { return asHandle(trackFallback(kernel.common(asNum(a), asNum(b)))) },\n section(_a: BrepHandle, _b: BrepHandle): BrepHandle { return unsupported('section') },\n fuseAll(shapes: BrepHandle[]): BrepHandle {\n return asHandle(trackFallback(kernel.fuseAll(Int32Array.from(shapes.map(asNum)))))\n },\n\n // ── 倒角与圆角 ──\n chamfer(solid: BrepHandle, edges: BrepHandle[], distance: number): BrepHandle {\n return asHandle(trackFallback(kernel.chamfer(asNum(solid), Int32Array.from(edges.map(asNum)), distance)))\n },\n chamferDistAngle(solid: BrepHandle, edges: BrepHandle[], distance: number, angleDeg: number): BrepHandle {\n return asHandle(trackFallback(kernel.chamferDistanceAngle(asNum(solid), Int32Array.from(edges.map(asNum)), distance, angleDeg)))\n },\n fillet(solid: BrepHandle, edges: BrepHandle[], radius: number): BrepHandle {\n return asHandle(trackFallback(kernel.fillet(asNum(solid), Int32Array.from(edges.map(asNum)), radius)))\n },\n filletVariable(solid: BrepHandle, edge: BrepHandle, startRadius: number, endRadius: number): BrepHandle {\n return asHandle(trackFallback(kernel.filletVariable(asNum(solid), asNum(edge), startRadius, endRadius)))\n },\n filletWithHistory(solid: BrepHandle, edges: BrepHandle[], radius: number, inputFaceHashes: number[], hashUpperBound: number): BrepEvolutionData {\n const raw = kernel.filletWithEvolution(asNum(solid), Int32Array.from(edges.map(asNum)), radius)\n return mapEvolution(kernel, raw, JSON.parse(raw).solid, inputFaceHashes, hashUpperBound)\n },\n chamferWithHistory(_solid: BrepHandle, _edges: BrepHandle[], _distance: number, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n // brepkit 无 chamferWithEvolution → 等距倒角演化不支持,诚实报错(能力表 evolution 仅覆盖 fuse/cut/fillet)\n return unsupported('chamferWithHistory')\n },\n\n // ── 变换 ──\n // ⚠️ brepkit 的 transformSolid 是「原地修改、返回 undefined」——必须先 copySolid\n // 复制出新句柄再变换,否则会篡改调用方手里的原实体(单测 2026-09-19 实证)。\n translate(shape: BrepHandle, dx: number, dy: number, dz: number): BrepHandle {\n const c = kernel.copySolid(asNum(shape))\n kernel.transformSolid(c, translationMatrix(dx, dy, dz))\n return asHandle(c)\n },\n scale(shape: BrepHandle, center: BrepVec3, factor: number): BrepHandle {\n const c = kernel.copySolid(asNum(shape))\n kernel.transformSolid(c, scaleMatrix(center, factor))\n return asHandle(c)\n },\n transform(shape: BrepHandle, matrix: number[]): BrepHandle {\n const c = kernel.copySolid(asNum(shape))\n kernel.transformSolid(c, matrix)\n return asHandle(c)\n },\n located(shape: BrepHandle, matrix: number[]): BrepHandle {\n const c = kernel.copySolid(asNum(shape))\n kernel.transformSolid(c, matrix)\n return asHandle(c)\n },\n generalTransform(shape: BrepHandle, matrix: number[]): BrepHandle {\n const c = kernel.copySolid(asNum(shape))\n kernel.transformSolid(c, matrix)\n return asHandle(c)\n },\n copy(shape: BrepHandle): BrepHandle { return asHandle(kernel.copySolid(asNum(shape))) },\n\n // ── 曲线构造 ──\n makeLineEdge(start: BrepVec3, end: BrepVec3): BrepHandle {\n return asHandle(kernel.makeLineEdge(start.x, start.y, start.z, end.x, end.y, end.z))\n },\n makeArcEdge(_start: BrepVec3, _mid: BrepVec3, _end: BrepVec3): BrepHandle { return unsupported('makeArcEdge') },\n makeBezierEdge(_controlPoints: BrepVec3[]): BrepHandle { return unsupported('makeBezierEdge') },\n\n // ── 拓扑构造 ──\n makeWire(edges: BrepHandle[]): BrepHandle {\n return asHandle(kernel.makeWire(Int32Array.from(edges.map(asNum)), false))\n },\n makeFace(wire: BrepHandle): BrepHandle { return asHandle(kernel.makeFaceFromWire(asNum(wire))) },\n makeCompound(shapes: BrepHandle[]): BrepHandle {\n return asHandle(kernel.makeCompound(Int32Array.from(shapes.map(asNum))))\n },\n sewAndSolidify(faces: BrepHandle[], tolerance?: number): BrepHandle {\n return asHandle(kernel.sewFaces(Int32Array.from(faces.map(asNum)), tolerance ?? 1e-6))\n },\n buildTriFace(_a: BrepVec3, _b: BrepVec3, _c: BrepVec3): BrepHandle { return unsupported('buildTriFace') },\n addHolesInFace(face: BrepHandle, holeWires: BrepHandle[]): BrepHandle {\n return asHandle(kernel.addHolesToFace(asNum(face), Int32Array.from(holeWires.map(asNum))))\n },\n\n // ── 三角化(BREP→mesh 唯一出口) ──\n meshShape(shape: BrepHandle, options?: BrepTessellateOptions): BrepMeshResult {\n const deflection = options?.linearDeflection ?? 0.1\n const angular = options?.angularDeflection ?? 0.5\n const raw = kernel.tessellateSolidGrouped(asNum(shape), deflection, angular)\n const m = JSON.parse(raw) as { positions: number[]; normals: number[]; indices: number[]; faceOffsets: number[] }\n // faceOffsets 形如 [start0, start1, ..., totalEnd]:以「索引数组单位」计的每面偏移(2026-09-19 实测),\n // 除以 3 换算为 faijs 契约的三角形单位 [triStart, triCount, faceHash]\n const fo = m.faceOffsets\n const faceCount = Math.max(0, fo.length - 1)\n const faceHashes: number[] = []\n try {\n const faces = arr(kernel.getSolidFaces(asNum(shape)))\n for (let i = 0; i < faceCount && i < faces.length; i++) faceHashes.push(faceFingerprint(kernel, faces[i], 1e9))\n } catch { /* 非实体:faceHash 置 0 */ }\n const faceGroups = new Int32Array(faceCount * 3)\n for (let i = 0; i < faceCount; i++) {\n faceGroups[i * 3] = fo[i] / 3\n faceGroups[i * 3 + 1] = (fo[i + 1] - fo[i]) / 3\n faceGroups[i * 3 + 2] = faceHashes[i] ?? 0\n }\n return {\n positions: new Float32Array(m.positions),\n normals: new Float32Array(m.normals),\n indices: new Uint32Array(m.indices),\n vertexCount: m.positions.length / 3,\n triangleCount: m.indices.length / 3,\n faceGroups,\n faceCount,\n }\n },\n wireframe(shape: BrepHandle, deflection?: number): BrepEdgeData {\n const d = deflection ?? 0.1\n // JsEdgeLines:edgeCount/offsets/positions 均为属性(offsets/positions 为 TypedArray,2026-09-19 实测)\n const me = kernel.meshEdgesAll(asNum(shape), d, 0.5) as {\n edgeCount: number; offsets: ArrayLike<number>; positions: ArrayLike<number>\n }\n const edgeCount = Number(me.edgeCount)\n const offsets = arr(me.offsets)\n const positions = arr(me.positions)\n const edgeGroups = new Int32Array(edgeCount * 3)\n for (let i = 0; i < edgeCount; i++) {\n const start = offsets[i] ?? 0\n const count = (offsets[i + 1] ?? positions.length / 3) - start\n edgeGroups[i * 3] = start\n edgeGroups[i * 3 + 1] = count\n edgeGroups[i * 3 + 2] = i // 线框 hash 用序号(wireframe 不参与跨操作溯源)\n }\n return { points: new Float32Array(positions), edgeGroups, pointCount: positions.length, edgeCount }\n },\n\n // ── 拓扑查询 ──\n // 注意:拓扑 manifest(topologyExt.buildSelectorManifestCore)会在「面句柄」上调用\n // getSubShapes(face, 'edge'/'vertex'),而 brepkit 的 getSolidEdges/getSolidVertices\n // 只接受 solid 句柄;brepkit 提供 getFaceEdges(face)/getFaceVertices(face)。\n // brepkit 没有 shape-type 分类 API,且 getFaceEdges(solid) 不抛错(会返回某一面的边),\n // 不能用 try/catch 探测。改用「已知面集」:每次枚举面时把面句柄记入 knownFaces,\n // edge/vertex 查询时按句柄是否在 knownFaces 里分发到 face 级或 solid 级 API。\n getSubShapes(shape: BrepHandle, type: BrepSubShapeType): BrepHandle[] {\n const s = asNum(shape)\n let list: number[]\n if (type === 'face') {\n // 输入可能是 solid 或 shell\n try { list = arr(kernel.getSolidFaces(s)) }\n catch { list = arr(kernel.getShellFaces?.(s) ?? []) }\n for (const f of list) knownFaces.add(f)\n } else if (type === 'edge') {\n list = knownFaces.has(s)\n ? arr(kernel.getFaceEdges(s))\n : arr(kernel.getSolidEdges(s))\n } else if (type === 'vertex') {\n list = knownFaces.has(s)\n ? arr(kernel.getFaceVertices(s))\n : arr(kernel.getSolidVertices(s))\n } else if (type === 'shell') {\n list = arr(kernel.getSolidShells?.(s) ?? [])\n } else if (type === 'solid') {\n // 输入可能是 compound(多实体)或单个 solid。\n try { list = arr(kernel.getCompoundSolids(s)) }\n catch { list = [s] }\n } else {\n return unsupported(`getSubShapes(${type})`)\n }\n return list.map(asHandle)\n },\n queryBatch(shapes: BrepHandle[]): Array<{ area: number }> {\n return shapes.map(h => {\n try { return { area: Number(kernel.faceArea(asNum(h))) } } catch { return { area: 0 } }\n })\n },\n subShapeHashes(shape: BrepHandle, type: BrepSubShapeType, hashUpperBound: number): number[] {\n if (type !== 'face') return unsupported(`subShapeHashes(${type})`)\n const faces = arr(kernel.getSolidFaces(asNum(shape)))\n const hashes = faces.map(f => faceFingerprint(kernel, f, hashUpperBound))\n // 登记 hash↔handle(fuseWithHistory 溯源对齐依赖此表)\n const reg = hashRegistry.get(kernel) ?? new Map<number, number>()\n faces.forEach((f, i) => reg.set(hashes[i], f))\n hashRegistry.set(kernel, reg)\n return hashes\n },\n hashCode(shape: BrepHandle, upperBound: number): number {\n return faceFingerprint(kernel, asNum(shape), upperBound)\n },\n isSame(a: BrepHandle, b: BrepHandle): boolean { return asNum(a) === asNum(b) },\n isSolid(shape: BrepHandle): boolean {\n try { return arr(kernel.getSolidFaces(asNum(shape))).length > 0 } catch { return false }\n },\n shapeOrientation(shape: BrepHandle): string {\n try { return String(kernel.getShapeOrientation(asNum(shape))) } catch { return 'forward' }\n },\n\n // ── 几何求值 ──\n curveType(edge: BrepHandle): string { return String(kernel.getEdgeCurveType(asNum(edge))) },\n curvePointAtParam(edge: BrepHandle, param: number): BrepVec3 {\n // evaluateEdgeCurve 返回 Float64Array [x,y,z](非 JSON 字符串)\n return vec3Of(toNumArray(kernel.evaluateEdgeCurve(asNum(edge), param)))\n },\n curveTangent(edge: BrepHandle, param: number): BrepVec3 {\n // evaluateEdgeCurveD1 返回 Float64Array [px,py,pz, tx,ty,tz](点+切向量)\n const d = toNumArray(kernel.evaluateEdgeCurveD1(asNum(edge), param))\n return { x: d[3] ?? 0, y: d[4] ?? 0, z: d[5] ?? 0 }\n },\n curveParameters(edge: BrepHandle): BrepCurveParameters {\n // getEdgeCurveParameters 返回 Float64Array [first, last]\n const d = toNumArray(kernel.getEdgeCurveParameters(asNum(edge)))\n return { first: d[0] ?? 0, last: d[d.length - 1] ?? 1 }\n },\n curveIsClosed(edge: BrepHandle): boolean {\n // brepkit 无直接 edge-isClosed API;按曲线类型 + Nurbs 元数据判定:\n // CIRCLE/ELLIPSE 类曲线恒闭合;LINE 恒不闭合;\n // 其他曲线尝试 getNurbsCurveData().closed,拿不到时按不闭合处理(保守,不报错)。\n try {\n const t = String(kernel.getEdgeCurveType(asNum(edge))).toUpperCase()\n if (t === 'CIRCLE' || t === 'ELLIPSE') return true\n if (t === 'LINE') return false\n } catch { /* 类型查询失败走 Nurbs 元数据 */ }\n try {\n const raw = kernel.getNurbsCurveData(asNum(edge))\n if (typeof raw === 'string') {\n const p = JSON.parse(raw) as { closed?: boolean; periodic?: boolean }\n return !!p.closed || !!p.periodic\n }\n if (raw && typeof raw === 'object') {\n const o = raw as Record<string, unknown>\n return !!(o.closed || o.periodic)\n }\n } catch { /* 非 Nurbs 边 */ }\n return false\n },\n curveLength(edge: BrepHandle): number { return Number(kernel.edgeLength(asNum(edge))) },\n surfaceType(face: BrepHandle): string { return String(kernel.getSurfaceType(asNum(face))) },\n surfaceNormal(face: BrepHandle, u: number, v: number): BrepVec3 {\n // evaluateSurfaceNormal(face,u,v) 返回 Float64Array [nx,ny,nz];\n // 注意:getFaceNormal(face) 只接受 face 一个参数,不带 u/v,不能用于参数空间法向。\n return vec3Of(toNumArray(kernel.evaluateSurfaceNormal(asNum(face), u, v)))\n },\n pointOnSurface(face: BrepHandle, u: number, v: number): BrepVec3 {\n // evaluateSurface 返回 Float64Array [x,y,z]\n return vec3Of(toNumArray(kernel.evaluateSurface(asNum(face), u, v)))\n },\n uvBounds(face: BrepHandle): BrepUvBounds {\n // getSurfaceDomain 返回 Float64Array [uMin,uMax,vMin,vMax]\n const d = toNumArray(kernel.getSurfaceDomain(asNum(face)))\n return { uMin: d[0] ?? 0, uMax: d[1] ?? 1, vMin: d[2] ?? 0, vMax: d[3] ?? 1 }\n },\n getSurfaceCenterOfMass(face: BrepHandle): BrepVec3 {\n // brepkit 无 per-face 质心 API;用 UV 域中点在曲面上求值作为面中心近似\n // (与 OCCT 路径的「面中心用于命名/拾取锚点」语义一致,不追求精确质心)。\n const b = this.uvBounds(face)\n return this.pointOnSurface(face, (b.uMin + b.uMax) / 2, (b.vMin + b.vMax) / 2)\n },\n getFaceCylinderData(face: BrepHandle): { radius: number } | null {\n try {\n const p = JSON.parse(kernel.getAnalyticSurfaceParams(asNum(face))) as { type?: string; radius?: number }\n if (p?.type === 'cylinder' && typeof p.radius === 'number') return { radius: p.radius }\n } catch { /* 非解析面 */ }\n return null\n },\n getNurbsCurveData(edge: BrepHandle): { degree: number; periodic: boolean; rational: boolean } | null {\n try {\n const p = JSON.parse(kernel.getNurbsCurveData(asNum(edge))) as { degree?: number; periodic?: boolean; rational?: boolean }\n if (p && typeof p.degree === 'number') return { degree: p.degree, periodic: !!p.periodic, rational: !!p.rational }\n } catch { /* 非 Nurbs 边 */ }\n return null\n },\n\n // ── 测量 ──\n getBoundingBox(shape: BrepHandle, _useTriangulation?: boolean): BrepBoundingBox {\n const b = kernel.boundingBox(asNum(shape)) as ArrayLike<number>\n return { xmin: b[0], ymin: b[1], zmin: b[2], xmax: b[3], ymax: b[4], zmax: b[5] }\n },\n getVolume(shape: BrepHandle): number { return Number(kernel.volume(asNum(shape), 0.05)) },\n getCenterOfMass(shape: BrepHandle): BrepVec3 {\n // centerOfMass 返回 Float64Array [x,y,z](非 JSON 字符串)\n return vec3Of(toNumArray(kernel.centerOfMass(asNum(shape), 0.05)))\n },\n\n // ── 校验与修复 ──\n isValid(_shape: BrepHandle): boolean { return unsupported('isValid') },\n unifySameDomain(shape: BrepHandle): BrepHandle { return shape /* brepkit 无对应 API;恒等返回(不丢句柄) */ },\n healSolid(shape: BrepHandle, _tolerance?: number): BrepHandle { return asHandle(kernel.healSolid(asNum(shape))) },\n fixShape(shape: BrepHandle): BrepHandle { return asHandle(kernel.healSolid(asNum(shape))) },\n fixFaceOrientations(shape: BrepHandle): BrepHandle { return asHandle(kernel.fixFaceOrientations(asNum(shape))) },\n removeDegenerateEdges(_shape: BrepHandle): BrepHandle { return unsupported('removeDegenerateEdges') },\n\n // ── IO ──\n importStep(data: string | ArrayBuffer): BrepHandle {\n const text = typeof data === 'string' ? data : new TextDecoder().decode(data)\n return asHandle(kernel.importStep(text))\n },\n exportStep(shape: BrepHandle): string {\n // brepkit exportStep 返回 UTF-8 字节(Uint8Array),需解码为 STEP 文本(2026-09-19 实测)\n const bytes = kernel.exportStep(asNum(shape))\n return typeof bytes === 'string' ? bytes : new TextDecoder().decode(bytes)\n },\n importStl(_data: string | ArrayBuffer): BrepHandle { return unsupported('importStl') },\n fromBREP(data: string): BrepHandle {\n const bytes = Uint8Array.from(atobPolyfill(data))\n return asHandle(kernel.deserializeSolid(bytes))\n },\n\n // ── 面演化(可选能力槽) ──\n cutWithHistory(a: BrepHandle, b: BrepHandle, inputFaceHashes: number[], hashUpperBound: number): BrepEvolutionData {\n const raw = kernel.cutWithEvolution(asNum(a), asNum(b))\n return mapEvolution(kernel, raw, JSON.parse(raw).solid, inputFaceHashes, hashUpperBound)\n },\n fuseWithHistory(a: BrepHandle, b: BrepHandle, inputFaceHashes: number[], hashUpperBound: number): BrepEvolutionData {\n const raw = kernel.fuseWithEvolution(asNum(a), asNum(b))\n return mapEvolution(kernel, raw, JSON.parse(raw).solid, inputFaceHashes, hashUpperBound)\n },\n intersectWithHistory(_a: BrepHandle, _b: BrepHandle, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n return unsupported('intersectWithHistory')\n },\n // Phase 0.1 补齐的 7 个:brepkit 适配器 v1 未实现 —— 如实抛错,不伪造。\n // ⚠️ 这些桩**不能**被当作\"已实现\"来探测:`typeof api.xWithHistory === 'function'`\n // 恒为真。Phase 0.2 起适配器的 `evolution` 是逐核函数**名单**\n // (`adapters/brepkit.ts` = ['fuse','cut','fillet']),名单才是唯一真相来源;\n // 声明多写一项 = 让该 op 静默通过静态判定后死在这些桩上(红线违规)。\n translateWithHistory(_shape: BrepHandle, _dx: number, _dy: number, _dz: number, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n return unsupported('translateWithHistory')\n },\n rotateWithHistory(_shape: BrepHandle, _axis: { point: BrepVec3; direction: BrepVec3 }, _angleRad: number, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n return unsupported('rotateWithHistory')\n },\n mirrorWithHistory(_shape: BrepHandle, _point: BrepVec3, _normal: BrepVec3, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n return unsupported('mirrorWithHistory')\n },\n scaleWithHistory(_shape: BrepHandle, _center: BrepVec3, _factor: number, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n return unsupported('scaleWithHistory')\n },\n shellWithHistory(_solid: BrepHandle, _faces: BrepHandle[], _thickness: number, _tolerance: number, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n return unsupported('shellWithHistory')\n },\n offsetWithHistory(_solid: BrepHandle, _distance: number, _tolerance: number, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n return unsupported('offsetWithHistory')\n },\n thickenWithHistory(_shape: BrepHandle, _thickness: number, _tolerance: number, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n return unsupported('thickenWithHistory')\n },\n\n // ── XCAF 装配(v1 关闭) ──\n createXCAFDocument(): BrepXcafDocument { return unsupported('createXCAFDocument') },\n importXCAFFromSTEP(_stepData: string): BrepXcafDocument { return unsupported('importXCAFFromSTEP') },\n }\n return api\n}\n\n// ── 工具 ──\n\n/** 4×4 行主序平移矩阵(brepkit transformSolid 格式:平移在最后一列,index 3/7/11;2026-09-19 实测)。 */\nfunction translationMatrix(dx: number, dy: number, dz: number): number[] {\n return [\n 1, 0, 0, dx,\n 0, 1, 0, dy,\n 0, 0, 1, dz,\n 0, 0, 0, 1,\n ]\n}\n\n/** 4×4 行主序缩放矩阵(绕 center 缩放)。 */\nfunction scaleMatrix(center: BrepVec3, factor: number): number[] {\n return [\n factor, 0, 0, center.x * (1 - factor),\n 0, factor, 0, center.y * (1 - factor),\n 0, 0, factor, center.z * (1 - factor),\n 0, 0, 0, 1,\n ]\n}\n\n/** wasm 返回的点/向量形态归一(数组 [x,y,z] 或 {x,y,z})。 */\nfunction vec3Of(p: number[] | { x: number; y: number; z: number }): BrepVec3 {\n if (Array.isArray(p)) return { x: p[0], y: p[1], z: p[2] }\n return { x: Number(p.x), y: Number(p.y), z: Number(p.z) }\n}\n\n/** base64 解码(node 与浏览器通用,避免直接依赖 Buffer)。 */\nfunction atobPolyfill(s: string): string {\n if (typeof atob === 'function') return atob(s)\n\n return Buffer.from(s, 'base64').toString('binary')\n}\n\n/** 释放内核单例(测试收尾用;宿主常驻不需调用)。 */\nlet liveKernel: BrepKitKernel | null = null\n\n/** 释放内核单例(测试收尾用;宿主常驻不需调用)。 */\nexport function disposeBrepkit(): void {\n try {\n if (liveKernel?.free) liveKernel.free()\n } catch { /* 已释放 */ }\n liveKernel = null\n}\n\n/** brepkit 适配器原语集类型(BrepEngineApi + brepkit 专属诊断 getMeshFallbackCount)。 */\nexport type BrepkitPrimitives = Awaited<ReturnType<typeof createBrepkitPrimitives>>\n"]}
package/dist/browser.d.ts CHANGED
@@ -44,7 +44,6 @@ export type { ExecutionResult, ExecuteOptions, CheckResult, CheckError, PartTopo
44
44
  export type { HostPorts, CsgBackend, SdfBackend, FontProvider, TextureSampler, AssetResolver, EventSink, ExecutionMode, LibLoader, MeshData, PlaneParams, SplitResult as CsgSplitResult, DovetailGrooveParams as PortDovetailGrooveParams, DowelSplitParams as PortDowelSplitParams, StraightTenonSplitParams as PortStraightTenonSplitParams, } from './cad-runtime/ports.js';
45
45
  export { setManifoldWasmUrl, getManifoldWasmUrl } from './mesh/manifold-loader.js';
46
46
  export { setOcctWasmInitFn } from './occt-kernel/occtKernel.js';
47
- export { setBrepkitWasmInitFn, initBrepkitWasm, isBrepkitInitialized } from './brepkit-kernel/brepkitWasm.js';
48
47
  export { setFontLoader, getFontLoader, loadFont, ensureDefaultFont, getFont, clearFonts } from './brep/text/fontRegistry.js';
49
48
  export type { FontLoader } from './brep/text/fontRegistry.js';
50
49
  export { setKnurlTextureLoader } from './mesh/knurl/textureLoader.js';
@@ -63,7 +62,6 @@ export { importStep, importStepMultiPart, exportStep, releaseSolid, ensureOcctKe
63
62
  export type { ImportStepResult, ImportStepPartResult, ExportStepOptions } from './occt-kernel/highLevelApi.js';
64
63
  export type { OcctKernel, ShapeHandle, WasmTessellatedMesh, Mesh, MeshDeflectionOptions } from './occt-kernel/highLevelApi.js';
65
64
  export { registerOcctBrepEngine, OCCT_BREP_ENGINE_ID } from './brep/engine/adapters/occt.js';
66
- export { registerBrepkitBrepEngine, BREPKIT_BREP_ENGINE_ID, ensureBrepkitDefaultEngine } from './brep/engine/adapters/brepkit.js';
67
65
  export { registerBrepEngine, getBrepEngine, hasBrepEngine, getActiveBrepEngineId, freezeEngineRegistries, } from './brep/engine/registry.js';
68
66
  export type { BrepEngine, BrepEngineProvider } from './brep/engine/registry.js';
69
67
  export type { BrepEngineApi } from './brep/engine/primitives.js';
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
package/dist/browser.js CHANGED
@@ -37,7 +37,8 @@ export { createPreviewExec } from './cad-runtime/preview-exec.js';
37
37
  // 外部资源注入点
38
38
  export { setManifoldWasmUrl, getManifoldWasmUrl } from './mesh/manifold-loader.js';
39
39
  export { setOcctWasmInitFn } from './occt-kernel/occtKernel.js';
40
- export { setBrepkitWasmInitFn, initBrepkitWasm, isBrepkitInitialized } from './brepkit-kernel/brepkitWasm.js';
40
+ // brepkit(weapp 专用 BREP 引擎)不在此导出——见 weapp.ts 与
41
+ // docs/plans/2026-09-20-weapp-host-entry-design.md。
41
42
  export { setFontLoader, getFontLoader, loadFont, ensureDefaultFont, getFont, clearFonts } from './brep/text/fontRegistry.js';
42
43
  export { setKnurlTextureLoader } from './mesh/knurl/textureLoader.js';
43
44
  // L3 Browser Host 工厂
@@ -54,7 +55,6 @@ export { WorkerSdfBackend } from './browser-host/worker-sdf-backend.js';
54
55
  export { importStep, importStepMultiPart, exportStep, releaseSolid, ensureOcctKernel, disposeOcct, exportStepFromSolidsHighLevel } from './occt-kernel/highLevelApi.js';
55
56
  // ── BREP 引擎注册(宿主装配;引擎可切换——occt 只是默认实现) ──
56
57
  export { registerOcctBrepEngine, OCCT_BREP_ENGINE_ID } from './brep/engine/adapters/occt.js';
57
- export { registerBrepkitBrepEngine, BREPKIT_BREP_ENGINE_ID, ensureBrepkitDefaultEngine } from './brep/engine/adapters/brepkit.js';
58
58
  export { registerBrepEngine, getBrepEngine, hasBrepEngine, getActiveBrepEngineId, freezeEngineRegistries, } from './brep/engine/registry.js';
59
59
  export { buildTopologyAdjacency } from './occt-kernel/topologyExt.js';
60
60
  // keep-syntax(P7):宿主守卫——outputs 现含 compound,消费端须区分
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACL,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAC9D,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAC/D,4BAA4B,EAAE,6BAA6B,EAAE,qBAAqB,EAClF,gBAAgB,GACjB,MAAM,iBAAiB,CAAA;AAexB,OAAO,EACL,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAClE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAChE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAC5B,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,GACjD,MAAM,YAAY,CAAA;AAUnB,OAAO,EACL,cAAc,EAAE,cAAc,GAC/B,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,0DAA0D;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAK3D,qCAAqC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAMlD,OAAO,EACL,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EACrE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,GACnD,MAAM,iBAAiB,CAAA;AAExB,8DAA8D;AAC9D,kDAAkD;AAClD,8DAA8D;AAE9D,yDAAyD;AACzD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAa9D,UAAU;AACV,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAC1G,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAEzH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAElE,qBAAqB;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAEnD,yEAAyE;AACzE,kDAAkD;AAClD,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAI3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AAEpE,+CAA+C;AAC/C,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAA;AAKpK,2CAA2C;AAC3C,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACzF,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAA;AAC9H,OAAO,EACL,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,qBAAqB,EAAE,sBAAsB,GAChG,MAAM,wBAAwB,CAAA;AAO/B,OAAO,EAAE,sBAAsB,EAA0B,MAAM,2BAA2B,CAAA;AAE1F,mDAAmD;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAgB1C,+EAA+E;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAA;AAE5E,OAAO;AACP,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAEjE,0DAA0D;AAC1D,cAAc,mBAAmB,CAAA;AAEjC,iDAAiD;AACjD,4BAA4B;AAC5B,gFAAgF;AAChF,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAA;AAClG,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAG/D,YAAY;AACZ,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAQrC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAI1E,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAKrE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAM5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAE3G,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAc5D,8DAA8D;AAC9D,oBAAoB;AACpB,8DAA8D;AAE9D,gCAAgC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC7E,OAAO,EACL,kBAAkB,EAAE,kBAAkB,EAAE,0BAA0B,GACnE,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC5E,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAC1J,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAEhF,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAE/D,YAAY;AACZ,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACxE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,oBAAoB,EAAwB,MAAM,sBAAsB,CAAA;AAC5G,OAAO,EAAE,iBAAiB,EAA6B,MAAM,2BAA2B,CAAA;AAExF,qBAAqB;AACrB,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAC1H,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EACL,eAAe,EAAE,oBAAoB,EAAE,mBAAmB,EAC1D,eAAe,EAAE,mBAAmB,GACrC,MAAM,8BAA8B,CAAA;AAErC,eAAe;AACf,OAAO,EACL,YAAY,EACZ,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EACxD,QAAQ,EAAE,OAAO,EAAE,UAAU,EAC7B,SAAS,EAAE,SAAS,EAAE,WAAW,EACjC,QAAQ,EAAE,aAAa,GACxB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAE9E,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAEzH,iDAAiD;AACjD,cAAc,OAAO,CAAA","sourcesContent":["/**\n * @faicad/faijs/browser — Browser-safe exports (F6: A/B/C/D 四类收敛)\n *\n * Excludes L3 Node Host modules (node-host/*) that depend on node:fs/node:path.\n * Use this entry point in browser/worker contexts to avoid pulling in Node.js code.\n *\n * For full exports (including Node.js), use @faicad/faijs instead.\n *\n * 导出分类(契约 §11 白名单四类):\n * - A 类 = lang/ 全部导出(脚本类型 + 构建辅助 + 接口约定类型 + 常量)\n * - B 类 = cad-runtime/ + createBrowserPorts + 外部资源注入点 + 执行位置选项\n * - C 类 = 执行产物类型(Shape + 拓扑数据类型 + buildSelectorRuntimeMaps)\n * - D 类 = 辅助函数 + 预览 API(明确导出后使用)\n *\n * Phase 2 收尾完成:deprecated 区已删除。宿主如需执行/读取几何,一律走\n * CadRuntime.execute / 高层 API(importStep/exportStep/ensureOcctKernel);\n * 主线程 CSG/SDF 预览走 previewMeshIntersect / runSdfMain。\n */\n\nexport {\n configureBackends, getBackends, setCurrentStmt, getCurrentStmt,\n keep, keepHidden, getRuntimeState, nameOf, setName, setKeepSink,\n setPendingAssemblyTransforms, takePendingAssemblyTransforms, assertContractVersion,\n CONTRACT_VERSION,\n} from './runtime-state'\nexport type {\n Backends, FaijsRuntimeState, ShapeSlot, KeepSink, RuntimeExecutionMode,\n AssemblyTransform, StdlibFn, StdlibNamespace,\n} from './runtime-state'\n\n// ═══════════════════════════════════════════════════════════\n// identity:品牌类型 + 信任点(f0,零依赖)\n// ═══════════════════════════════════════════════════════════\n\nexport type {\n FileId, InnerId, ScopedId, StmtId, PartName, GroupName,\n RefId, ReferenceId, SelectorKey, OccurrenceId, ShapeId,\n FaceId, EdgeId, NodeId, StatementId, FaceSelector,\n} from './identity'\nexport {\n asFileId, asInnerId, asScopedId, asStmtId, asPartName, asGroupName,\n asRefId, asReferenceId, asSelectorKey, asOccurrenceId, asShapeId,\n asFaceId, asEdgeId, asNodeId,\n toScopedId, splitScopedId, isScopedId, toInnerId,\n} from './identity'\n\n// ═══════════════════════════════════════════════════════════\n// A 类:lang/ 文本面导出(IR 是引擎内部实现细节,不导出;公开面只有代码文本工具与结果类型)\n// ═══════════════════════════════════════════════════════════\n\nexport type {\n Vec3, JsonValue,\n TerminalShape, ParamDef,\n} from './lang/types'\nexport {\n derivePartName, getMaxModelNum,\n} from './lang/allocate-id'\nexport type { DerivePartNameInput, DerivePartNameResult } from './lang/allocate-id'\nexport { fmtNum, formatCodeLine } from './lang/codegen'\nexport type { FormatCodeLineInput } from './lang/codegen'\nexport { analyzeCode } from './lang/statement-summary'\nexport type { StatementSummary } from './lang/statement-summary'\nexport { codeToArgs } from './lang/code-to-args'\nexport type { CodeToArgsResult } from './lang/code-to-args'\n// MetadataExtractor — 无 IR 元数据提取器(UI 通道语义源;UiMetadata 全量)\nexport { extractMetadata } from './lang/metadata-extractor'\nexport type {\n UiMetadata, ArgSource, ParamEntry, ImportEntry, FunctionEntry, BlockEntry, KeepEntry,\n ExtractMetadataOptions,\n} from './lang/metadata-extractor'\n// 参数表达式编辑(P0-C/P0-D):实时校验层 + 编辑面板纯函数\nexport { validateExpression } from './lang/expr-validate'\nexport type { ExprValidateInput, ExprValidateResult } from './lang/expr-validate'\nexport { editArgSource } from './lang/source-edit'\nexport type { EditSourceError } from './lang/source-edit'\n// HostArg — 宿主友好位置参数类型(IR 屏蔽层)\nexport type {\n HostArg, HostRef, HostVarRef, HostParamRef, HostCallRef, HostExprRef, HostRefKind,\n} from './lang/host-arg'\nexport {\n isHostVarRef, isHostParamRef, isHostCallRef, isHostExprRef, isHostRef,\n hostArgToDisplay, hostArgToLiteral, HOST_REF_KINDS,\n} from './lang/host-arg'\n\n// ═══════════════════════════════════════════════════════════\n// B 类:cad-runtime/ + createBrowserPorts + 外部资源注入点\n// ═══════════════════════════════════════════════════════════\n\n// D1(2026-09-19):浏览器入口同样自注册 cad(与 index.ts 同源包装,避免门面注入)。\nexport { CadRuntime, createRuntime, AppendPrefixError } from './cad-runtime/createRuntimeWithCad'\nexport { createPreviewExec } from './cad-runtime/preview-exec'\nexport type { PreviewExec } from './cad-runtime/preview-exec'\nexport type { ExecutionResult, ExecuteOptions, CheckResult, CheckError, PartTopology, TopologySource } from './cad-runtime/runtime'\nexport type {\n HostPorts,\n CsgBackend, SdfBackend, FontProvider, TextureSampler,\n AssetResolver, EventSink, ExecutionMode, LibLoader,\n MeshData, PlaneParams, SplitResult as CsgSplitResult,\n DovetailGrooveParams as PortDovetailGrooveParams,\n DowelSplitParams as PortDowelSplitParams,\n StraightTenonSplitParams as PortStraightTenonSplitParams,\n} from './cad-runtime/ports'\n\n// 外部资源注入点\nexport { setManifoldWasmUrl, getManifoldWasmUrl } from './mesh/manifold-loader'\nexport { setOcctWasmInitFn } from './occt-kernel/occtKernel'\nexport { setBrepkitWasmInitFn, initBrepkitWasm, isBrepkitInitialized } from './brepkit-kernel/brepkitWasm'\nexport { setFontLoader, getFontLoader, loadFont, ensureDefaultFont, getFont, clearFonts } from './brep/text/fontRegistry'\nexport type { FontLoader } from './brep/text/fontRegistry'\nexport { setKnurlTextureLoader } from './mesh/knurl/textureLoader'\n\n// L3 Browser Host 工厂\nexport { createBrowserPorts } from './browser-host'\nexport type { CreateBrowserPortsOptions } from './browser-host'\n// D3-Browser(§9.4):CDN 通用 libLoader 工厂(a/b 混合)。**不**被 createBrowserPorts\n// 默认装配——demo 的源码 alias HMR 路径必须零网络;CDN 装载由主机显式注入。\nexport { createBrowserLibLoader, DEFAULT_CDN_BASE } from './cad-runtime/browser-lib-loader'\nexport type {\n BrowserLibLoader, BrowserLibMeta, CreateBrowserLibLoaderOptions,\n} from './cad-runtime/browser-lib-loader'\nexport { BrowserEventSink } from './browser-host/browser-event-sink'\nexport { BrowserFontProvider } from './browser-host/browser-font-provider'\nexport type { BrowserFontProviderOptions } from './browser-host/browser-font-provider'\nexport { FetchAssetResolver } from './browser-host/fetch-asset-resolver'\nexport type { FetchAssetResolverOptions } from './browser-host/fetch-asset-resolver'\nexport { WorkerCsgBackend } from './browser-host/worker-csg-backend'\nexport { WorkerSdfBackend } from './browser-host/worker-sdf-backend'\n\n// E12.2: OCCT 高层 API(B 类——宿主用这些替代底层 kernel 函数)\nexport { importStep, importStepMultiPart, exportStep, releaseSolid, ensureOcctKernel, disposeOcct, exportStepFromSolidsHighLevel } from './occt-kernel/highLevelApi'\nexport type { ImportStepResult, ImportStepPartResult, ExportStepOptions } from './occt-kernel/highLevelApi'\n// 高层 API 的类型签名依赖的 OCCT 句柄/内核类型(D 类,公共契约)\nexport type { OcctKernel, ShapeHandle, WasmTessellatedMesh, Mesh, MeshDeflectionOptions } from './occt-kernel/highLevelApi'\n\n// ── BREP 引擎注册(宿主装配;引擎可切换——occt 只是默认实现) ──\nexport { registerOcctBrepEngine, OCCT_BREP_ENGINE_ID } from './brep/engine/adapters/occt'\nexport { registerBrepkitBrepEngine, BREPKIT_BREP_ENGINE_ID, ensureBrepkitDefaultEngine } from './brep/engine/adapters/brepkit'\nexport {\n registerBrepEngine, getBrepEngine, hasBrepEngine, getActiveBrepEngineId, freezeEngineRegistries,\n} from './brep/engine/registry'\nexport type { BrepEngine, BrepEngineProvider } from './brep/engine/registry'\nexport type { BrepEngineApi } from './brep/engine/primitives'\nexport type {\n BrepHandle, BrepMeshResult, BrepBoundingBox, BrepVec3, BrepCapabilities,\n BrepEvolutionData, BrepXcafDocument,\n} from './brep/engine/types'\nexport { buildTopologyAdjacency, type TopologyAdjacency } from './occt-kernel/topologyExt'\n\n// keep-syntax(P7):宿主守卫——outputs 现含 compound,消费端须区分\nexport { isCompoundLike } from './shape'\nexport { isMeshShape } from './mesh/types'\n\n// ═══════════════════════════════════════════════════════════\n// C 类:执行产物类型(Shape + 拓扑数据类型 + buildSelectorRuntimeMaps)\n// ═══════════════════════════════════════════════════════════\n\nexport type { Shape } from './mesh/types'\n\n// 拓扑数据类型\nexport type { SelectorRuntimeData } from './topology/build-selector-runtime'\nexport type {\n SelectorRuntime, SelectorBundle, SelectorManifest, SelectorBuffers,\n FaceRow, EdgeRow, Reference,\n BufferViewDescriptor, SelectorProxy,\n} from './topology/types'\n\n// buildSelectorRuntimeMaps: C 类(从 SelectorRuntimeData 构建 SelectorRuntime Maps)\nexport { buildSelectorRuntimeMaps } from './topology/build-selector-runtime'\n\n// 拓扑常量\nexport { TOPOLOGY_FACE_ID_NONE } from './topology/build-face-ids'\n\n// ── TopoRef 命名层(§3.7/§3.8:命名属于核心公共能力,随 browser/node 走)──\nexport * from './topology/naming'\n\n// D 类辅助:拓扑构建函数(宿主在加载时刻调用,构建 mesh/primitive 近似拓扑)\n// 注意:这些只在加载/创建时刻合法,变更后不重新生成\n// BREP 真拓扑通过 CadRuntime.buildBrepTopology() 获取,不再直接导出 buildSolidTopologyRuntime\nexport { buildSelectorRuntime, buildSelectorRuntimeData } from './topology/build-selector-runtime'\nexport { buildFaceIdsForPart } from './topology/build-face-ids'\nexport type { SolidTopologyResult } from './brep/brep-topology'\n\n// C 类辅助:面查询\nexport { faceAt } from './mesh/query'\nexport type {\n BoundingBox, FaceDescriptor,\n BoxParams, SphereParams, CylinderParams, ConeParams, WedgeParams,\n TextParams, SvgExtrudeParams, SdfParams,\n DrillParams, ExtrudeParams, EngraveParams, KnurlParams,\n SplitPlane, SplitResult,\n} from './mesh/types'\nexport { NRAD_DEFAULT, NRAD_MIN, NRAD_MAX, clampNRad } from './mesh/types'\n\n// SDF 类型\nexport type { SdfMeshData } from './sdf/sdf-runner'\nexport { SDF_TEMPLATES, DEFAULT_SDF_TEMPLATE } from './sdf/templates'\nexport type {\n SdfMeta, SdfBox, SdfParamDef, SdfTemplateCategory,\n SdfWorkerInput, SdfWorkerMessage,\n} from './sdf/types'\nexport { boxToTuple, parseParamDefs, defaultParamValues } from './sdf/types'\n\n// Primitive 类型\nexport type {\n PrimitiveType, PrimitiveParamsRecord, PrimitiveArgsRecord, PrimitiveMeta,\n} from './primitives/types'\nexport { nextPrimitiveColor } from './primitives/types'\nexport type { ScrewParams, ScrewSpec, ScrewSystem } from './primitives/screw/screw-db'\nexport { getScrewSpec, getScrewSpecs, threadToPitchMm, SCREW_HEAD_DIMS } from './primitives/screw/screw-db'\nexport type { CjkFontResult } from './primitives/text/cjk'\nexport { loadSystemCjkFont, containsCjk, isCjkChar } from './primitives/text/cjk'\nexport { getOpentypeFont } from './primitives/text-geometry'\n\n// Boolean/CSG 辅助类型\nexport type { ExtrudeParts, ExtrudeOffsetMode } from './boolean/extrude-helpers'\nexport type { JoineryMeshData } from './boolean/joinery-shapes'\nexport type {\n ManifoldMeshData, BooleanOperation,\n DovetailGrooveParams, DowelSplitParams, StraightTenonSplitParams,\n} from './boolean/geo-convert'\nexport type { TextureData } from './mesh/knurl/textureLoader'\nexport type { KnurlBounds } from './mesh/knurl/KnurlGenerator'\nexport type { DrillBrepParams, SplitBrepParams, SplitBrepResult, ExtrudeBrepParams } from './brep/brep-ops'\nexport type { PrimitiveToBrepResult, PrimitiveParams } from './primitives/brep-primitives'\n\n// ═══════════════════════════════════════════════════════════\n// D 类:辅助函数 + 预览 API\n// ═══════════════════════════════════════════════════════════\n\n// 预览 API(D 类——宿主用这些做交互预览,不提交几何)\nexport { cad } from './mesh'\nexport { deriveNormals } from './boolean/deriveNormals'\nexport { computeSection, buildExtrudedProfile } from './boolean/cross-section'\nexport { buildExtrudeParts, makeWorldPlane } from './boolean/extrude-helpers'\nexport {\n buildWedgeGeometry, buildDowelGeometry, buildStraightTenonGeometry,\n} from './boolean/joinery-shapes'\nexport { geoToManifoldMesh, manifoldMeshToGeo } from './boolean/geo-convert'\nexport { manifoldToMeshData, weldPositionsWorker, dovetailBooleanSplit, dowelOrTenonBooleanSplit, chainBoolean, meshToManifold } from './boolean/csg-core'\nexport { previewMeshIntersect } from './boolean/manifold-preview'\nexport type { ManifoldMeshData as PreviewManifoldMeshData } from './boolean/manifold-preview'\nexport { svgToExtrudedGeometry, parseSvgShapes } from './primitives/svg-extrude'\nexport type { SvgExtrudeOptions } from './primitives/svg-extrude'\nexport { createTextGeometry, opentypePathToGeometry } from './primitives/text-geometry'\nexport { runSdfInline } from './sdf/sdf-core'\nexport { runSdf as runSdfMain } from './sdf/sdf-runner'\nexport type { SdfMeshData as PreviewSdfMesh } from './sdf/sdf-runner'\nexport { createMixedTextGeometry } from './primitives/text/cjk'\n\n// Knurl D 类\nexport { applyKnurlDisplacement, KNURL_DEFAULTS } from './mesh/knurl/KnurlGenerator'\nexport { subdivide } from './mesh/knurl/subdivision'\nexport { loadKnurlingTexture } from './mesh/knurl/textureLoader'\nexport { QuantizedPointMap, weldVertices } from './mesh/knurl/meshIndex'\nexport { computeUV, MODE_TRIPLANAR, getCubicBlendWeights, type MappingSettings } from './mesh/knurl/mapping'\nexport { applyDisplacement, type DisplacementSettings } from './mesh/knurl/displacement'\n\n// Primitive D 类(预览用)\nexport { mergeBufferGeometries, makePrimitiveGeo, DEFAULT_SIZE, applyPrimitiveOffset } from './primitives/mesh-primitives'\nexport { makeScrew } from './primitives/screw/screw'\nexport {\n extractMeshData, primitiveToBrepSolid, geometryToBrepSolid,\n brepSolidToStep, primitiveToBrepStep,\n} from './primitives/brep-primitives'\n\n// BREP 辅助(D 类)\nexport {\n solidToShape,\n translateBrep, rotateBrep, scaleBrep, applyTransformBrep,\n fuseBrep, cutBrep, commonBrep,\n drillBrep, splitBrep, extrudeBrep,\n loadBrep, matrixToArray,\n} from './brep/brep-ops'\nexport { getSolidBoundingBox } from './brep/brep-utils'\nexport { buildStlBufferFromMesh } from './brep/export/stl'\nexport { exportStepFromSolid, exportStepFromSolids } from './brep/export/step'\nexport type { StepExportEntry } from './brep/export/step'\nexport { reconstructSolidFromMesh, meshToAsciiStl, cadShapeIsValid, meshToStepBrep } from './occt-kernel/meshReconstruct'\n\n// ── L3 API 面(P6/D1:原 packages/stdlib 迁入 core)──\nexport * from './api'\n"]}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @faicad/faijs/browser — Browser-safe exports (F6: A/B/C/D 四类收敛)\n *\n * Excludes L3 Node Host modules (node-host/*) that depend on node:fs/node:path.\n * Use this entry point in browser/worker contexts to avoid pulling in Node.js code.\n *\n * For full exports (including Node.js), use @faicad/faijs instead.\n *\n * 导出分类(契约 §11 白名单四类):\n * - A 类 = lang/ 全部导出(脚本类型 + 构建辅助 + 接口约定类型 + 常量)\n * - B 类 = cad-runtime/ + createBrowserPorts + 外部资源注入点 + 执行位置选项\n * - C 类 = 执行产物类型(Shape + 拓扑数据类型 + buildSelectorRuntimeMaps)\n * - D 类 = 辅助函数 + 预览 API(明确导出后使用)\n *\n * Phase 2 收尾完成:deprecated 区已删除。宿主如需执行/读取几何,一律走\n * CadRuntime.execute / 高层 API(importStep/exportStep/ensureOcctKernel);\n * 主线程 CSG/SDF 预览走 previewMeshIntersect / runSdfMain。\n */\n\nexport {\n configureBackends, getBackends, setCurrentStmt, getCurrentStmt,\n keep, keepHidden, getRuntimeState, nameOf, setName, setKeepSink,\n setPendingAssemblyTransforms, takePendingAssemblyTransforms, assertContractVersion,\n CONTRACT_VERSION,\n} from './runtime-state'\nexport type {\n Backends, FaijsRuntimeState, ShapeSlot, KeepSink, RuntimeExecutionMode,\n AssemblyTransform, StdlibFn, StdlibNamespace,\n} from './runtime-state'\n\n// ═══════════════════════════════════════════════════════════\n// identity:品牌类型 + 信任点(f0,零依赖)\n// ═══════════════════════════════════════════════════════════\n\nexport type {\n FileId, InnerId, ScopedId, StmtId, PartName, GroupName,\n RefId, ReferenceId, SelectorKey, OccurrenceId, ShapeId,\n FaceId, EdgeId, NodeId, StatementId, FaceSelector,\n} from './identity'\nexport {\n asFileId, asInnerId, asScopedId, asStmtId, asPartName, asGroupName,\n asRefId, asReferenceId, asSelectorKey, asOccurrenceId, asShapeId,\n asFaceId, asEdgeId, asNodeId,\n toScopedId, splitScopedId, isScopedId, toInnerId,\n} from './identity'\n\n// ═══════════════════════════════════════════════════════════\n// A 类:lang/ 文本面导出(IR 是引擎内部实现细节,不导出;公开面只有代码文本工具与结果类型)\n// ═══════════════════════════════════════════════════════════\n\nexport type {\n Vec3, JsonValue,\n TerminalShape, ParamDef,\n} from './lang/types'\nexport {\n derivePartName, getMaxModelNum,\n} from './lang/allocate-id'\nexport type { DerivePartNameInput, DerivePartNameResult } from './lang/allocate-id'\nexport { fmtNum, formatCodeLine } from './lang/codegen'\nexport type { FormatCodeLineInput } from './lang/codegen'\nexport { analyzeCode } from './lang/statement-summary'\nexport type { StatementSummary } from './lang/statement-summary'\nexport { codeToArgs } from './lang/code-to-args'\nexport type { CodeToArgsResult } from './lang/code-to-args'\n// MetadataExtractor — 无 IR 元数据提取器(UI 通道语义源;UiMetadata 全量)\nexport { extractMetadata } from './lang/metadata-extractor'\nexport type {\n UiMetadata, ArgSource, ParamEntry, ImportEntry, FunctionEntry, BlockEntry, KeepEntry,\n ExtractMetadataOptions,\n} from './lang/metadata-extractor'\n// 参数表达式编辑(P0-C/P0-D):实时校验层 + 编辑面板纯函数\nexport { validateExpression } from './lang/expr-validate'\nexport type { ExprValidateInput, ExprValidateResult } from './lang/expr-validate'\nexport { editArgSource } from './lang/source-edit'\nexport type { EditSourceError } from './lang/source-edit'\n// HostArg — 宿主友好位置参数类型(IR 屏蔽层)\nexport type {\n HostArg, HostRef, HostVarRef, HostParamRef, HostCallRef, HostExprRef, HostRefKind,\n} from './lang/host-arg'\nexport {\n isHostVarRef, isHostParamRef, isHostCallRef, isHostExprRef, isHostRef,\n hostArgToDisplay, hostArgToLiteral, HOST_REF_KINDS,\n} from './lang/host-arg'\n\n// ═══════════════════════════════════════════════════════════\n// B 类:cad-runtime/ + createBrowserPorts + 外部资源注入点\n// ═══════════════════════════════════════════════════════════\n\n// D1(2026-09-19):浏览器入口同样自注册 cad(与 index.ts 同源包装,避免门面注入)。\nexport { CadRuntime, createRuntime, AppendPrefixError } from './cad-runtime/createRuntimeWithCad'\nexport { createPreviewExec } from './cad-runtime/preview-exec'\nexport type { PreviewExec } from './cad-runtime/preview-exec'\nexport type { ExecutionResult, ExecuteOptions, CheckResult, CheckError, PartTopology, TopologySource } from './cad-runtime/runtime'\nexport type {\n HostPorts,\n CsgBackend, SdfBackend, FontProvider, TextureSampler,\n AssetResolver, EventSink, ExecutionMode, LibLoader,\n MeshData, PlaneParams, SplitResult as CsgSplitResult,\n DovetailGrooveParams as PortDovetailGrooveParams,\n DowelSplitParams as PortDowelSplitParams,\n StraightTenonSplitParams as PortStraightTenonSplitParams,\n} from './cad-runtime/ports'\n\n// 外部资源注入点\nexport { setManifoldWasmUrl, getManifoldWasmUrl } from './mesh/manifold-loader'\nexport { setOcctWasmInitFn } from './occt-kernel/occtKernel'\n// brepkit(weapp 专用 BREP 引擎)不在此导出——见 weapp.ts 与\n// docs/plans/2026-09-20-weapp-host-entry-design.md。\nexport { setFontLoader, getFontLoader, loadFont, ensureDefaultFont, getFont, clearFonts } from './brep/text/fontRegistry'\nexport type { FontLoader } from './brep/text/fontRegistry'\nexport { setKnurlTextureLoader } from './mesh/knurl/textureLoader'\n\n// L3 Browser Host 工厂\nexport { createBrowserPorts } from './browser-host'\nexport type { CreateBrowserPortsOptions } from './browser-host'\n// D3-Browser(§9.4):CDN 通用 libLoader 工厂(a/b 混合)。**不**被 createBrowserPorts\n// 默认装配——demo 的源码 alias HMR 路径必须零网络;CDN 装载由主机显式注入。\nexport { createBrowserLibLoader, DEFAULT_CDN_BASE } from './cad-runtime/browser-lib-loader'\nexport type {\n BrowserLibLoader, BrowserLibMeta, CreateBrowserLibLoaderOptions,\n} from './cad-runtime/browser-lib-loader'\nexport { BrowserEventSink } from './browser-host/browser-event-sink'\nexport { BrowserFontProvider } from './browser-host/browser-font-provider'\nexport type { BrowserFontProviderOptions } from './browser-host/browser-font-provider'\nexport { FetchAssetResolver } from './browser-host/fetch-asset-resolver'\nexport type { FetchAssetResolverOptions } from './browser-host/fetch-asset-resolver'\nexport { WorkerCsgBackend } from './browser-host/worker-csg-backend'\nexport { WorkerSdfBackend } from './browser-host/worker-sdf-backend'\n\n// E12.2: OCCT 高层 API(B 类——宿主用这些替代底层 kernel 函数)\nexport { importStep, importStepMultiPart, exportStep, releaseSolid, ensureOcctKernel, disposeOcct, exportStepFromSolidsHighLevel } from './occt-kernel/highLevelApi'\nexport type { ImportStepResult, ImportStepPartResult, ExportStepOptions } from './occt-kernel/highLevelApi'\n// 高层 API 的类型签名依赖的 OCCT 句柄/内核类型(D 类,公共契约)\nexport type { OcctKernel, ShapeHandle, WasmTessellatedMesh, Mesh, MeshDeflectionOptions } from './occt-kernel/highLevelApi'\n\n// ── BREP 引擎注册(宿主装配;引擎可切换——occt 只是默认实现) ──\nexport { registerOcctBrepEngine, OCCT_BREP_ENGINE_ID } from './brep/engine/adapters/occt'\nexport {\n registerBrepEngine, getBrepEngine, hasBrepEngine, getActiveBrepEngineId, freezeEngineRegistries,\n} from './brep/engine/registry'\nexport type { BrepEngine, BrepEngineProvider } from './brep/engine/registry'\nexport type { BrepEngineApi } from './brep/engine/primitives'\nexport type {\n BrepHandle, BrepMeshResult, BrepBoundingBox, BrepVec3, BrepCapabilities,\n BrepEvolutionData, BrepXcafDocument,\n} from './brep/engine/types'\nexport { buildTopologyAdjacency, type TopologyAdjacency } from './occt-kernel/topologyExt'\n\n// keep-syntax(P7):宿主守卫——outputs 现含 compound,消费端须区分\nexport { isCompoundLike } from './shape'\nexport { isMeshShape } from './mesh/types'\n\n// ═══════════════════════════════════════════════════════════\n// C 类:执行产物类型(Shape + 拓扑数据类型 + buildSelectorRuntimeMaps)\n// ═══════════════════════════════════════════════════════════\n\nexport type { Shape } from './mesh/types'\n\n// 拓扑数据类型\nexport type { SelectorRuntimeData } from './topology/build-selector-runtime'\nexport type {\n SelectorRuntime, SelectorBundle, SelectorManifest, SelectorBuffers,\n FaceRow, EdgeRow, Reference,\n BufferViewDescriptor, SelectorProxy,\n} from './topology/types'\n\n// buildSelectorRuntimeMaps: C 类(从 SelectorRuntimeData 构建 SelectorRuntime Maps)\nexport { buildSelectorRuntimeMaps } from './topology/build-selector-runtime'\n\n// 拓扑常量\nexport { TOPOLOGY_FACE_ID_NONE } from './topology/build-face-ids'\n\n// ── TopoRef 命名层(§3.7/§3.8:命名属于核心公共能力,随 browser/node 走)──\nexport * from './topology/naming'\n\n// D 类辅助:拓扑构建函数(宿主在加载时刻调用,构建 mesh/primitive 近似拓扑)\n// 注意:这些只在加载/创建时刻合法,变更后不重新生成\n// BREP 真拓扑通过 CadRuntime.buildBrepTopology() 获取,不再直接导出 buildSolidTopologyRuntime\nexport { buildSelectorRuntime, buildSelectorRuntimeData } from './topology/build-selector-runtime'\nexport { buildFaceIdsForPart } from './topology/build-face-ids'\nexport type { SolidTopologyResult } from './brep/brep-topology'\n\n// C 类辅助:面查询\nexport { faceAt } from './mesh/query'\nexport type {\n BoundingBox, FaceDescriptor,\n BoxParams, SphereParams, CylinderParams, ConeParams, WedgeParams,\n TextParams, SvgExtrudeParams, SdfParams,\n DrillParams, ExtrudeParams, EngraveParams, KnurlParams,\n SplitPlane, SplitResult,\n} from './mesh/types'\nexport { NRAD_DEFAULT, NRAD_MIN, NRAD_MAX, clampNRad } from './mesh/types'\n\n// SDF 类型\nexport type { SdfMeshData } from './sdf/sdf-runner'\nexport { SDF_TEMPLATES, DEFAULT_SDF_TEMPLATE } from './sdf/templates'\nexport type {\n SdfMeta, SdfBox, SdfParamDef, SdfTemplateCategory,\n SdfWorkerInput, SdfWorkerMessage,\n} from './sdf/types'\nexport { boxToTuple, parseParamDefs, defaultParamValues } from './sdf/types'\n\n// Primitive 类型\nexport type {\n PrimitiveType, PrimitiveParamsRecord, PrimitiveArgsRecord, PrimitiveMeta,\n} from './primitives/types'\nexport { nextPrimitiveColor } from './primitives/types'\nexport type { ScrewParams, ScrewSpec, ScrewSystem } from './primitives/screw/screw-db'\nexport { getScrewSpec, getScrewSpecs, threadToPitchMm, SCREW_HEAD_DIMS } from './primitives/screw/screw-db'\nexport type { CjkFontResult } from './primitives/text/cjk'\nexport { loadSystemCjkFont, containsCjk, isCjkChar } from './primitives/text/cjk'\nexport { getOpentypeFont } from './primitives/text-geometry'\n\n// Boolean/CSG 辅助类型\nexport type { ExtrudeParts, ExtrudeOffsetMode } from './boolean/extrude-helpers'\nexport type { JoineryMeshData } from './boolean/joinery-shapes'\nexport type {\n ManifoldMeshData, BooleanOperation,\n DovetailGrooveParams, DowelSplitParams, StraightTenonSplitParams,\n} from './boolean/geo-convert'\nexport type { TextureData } from './mesh/knurl/textureLoader'\nexport type { KnurlBounds } from './mesh/knurl/KnurlGenerator'\nexport type { DrillBrepParams, SplitBrepParams, SplitBrepResult, ExtrudeBrepParams } from './brep/brep-ops'\nexport type { PrimitiveToBrepResult, PrimitiveParams } from './primitives/brep-primitives'\n\n// ═══════════════════════════════════════════════════════════\n// D 类:辅助函数 + 预览 API\n// ═══════════════════════════════════════════════════════════\n\n// 预览 API(D 类——宿主用这些做交互预览,不提交几何)\nexport { cad } from './mesh'\nexport { deriveNormals } from './boolean/deriveNormals'\nexport { computeSection, buildExtrudedProfile } from './boolean/cross-section'\nexport { buildExtrudeParts, makeWorldPlane } from './boolean/extrude-helpers'\nexport {\n buildWedgeGeometry, buildDowelGeometry, buildStraightTenonGeometry,\n} from './boolean/joinery-shapes'\nexport { geoToManifoldMesh, manifoldMeshToGeo } from './boolean/geo-convert'\nexport { manifoldToMeshData, weldPositionsWorker, dovetailBooleanSplit, dowelOrTenonBooleanSplit, chainBoolean, meshToManifold } from './boolean/csg-core'\nexport { previewMeshIntersect } from './boolean/manifold-preview'\nexport type { ManifoldMeshData as PreviewManifoldMeshData } from './boolean/manifold-preview'\nexport { svgToExtrudedGeometry, parseSvgShapes } from './primitives/svg-extrude'\nexport type { SvgExtrudeOptions } from './primitives/svg-extrude'\nexport { createTextGeometry, opentypePathToGeometry } from './primitives/text-geometry'\nexport { runSdfInline } from './sdf/sdf-core'\nexport { runSdf as runSdfMain } from './sdf/sdf-runner'\nexport type { SdfMeshData as PreviewSdfMesh } from './sdf/sdf-runner'\nexport { createMixedTextGeometry } from './primitives/text/cjk'\n\n// Knurl D 类\nexport { applyKnurlDisplacement, KNURL_DEFAULTS } from './mesh/knurl/KnurlGenerator'\nexport { subdivide } from './mesh/knurl/subdivision'\nexport { loadKnurlingTexture } from './mesh/knurl/textureLoader'\nexport { QuantizedPointMap, weldVertices } from './mesh/knurl/meshIndex'\nexport { computeUV, MODE_TRIPLANAR, getCubicBlendWeights, type MappingSettings } from './mesh/knurl/mapping'\nexport { applyDisplacement, type DisplacementSettings } from './mesh/knurl/displacement'\n\n// Primitive D 类(预览用)\nexport { mergeBufferGeometries, makePrimitiveGeo, DEFAULT_SIZE, applyPrimitiveOffset } from './primitives/mesh-primitives'\nexport { makeScrew } from './primitives/screw/screw'\nexport {\n extractMeshData, primitiveToBrepSolid, geometryToBrepSolid,\n brepSolidToStep, primitiveToBrepStep,\n} from './primitives/brep-primitives'\n\n// BREP 辅助(D 类)\nexport {\n solidToShape,\n translateBrep, rotateBrep, scaleBrep, applyTransformBrep,\n fuseBrep, cutBrep, commonBrep,\n drillBrep, splitBrep, extrudeBrep,\n loadBrep, matrixToArray,\n} from './brep/brep-ops'\nexport { getSolidBoundingBox } from './brep/brep-utils'\nexport { buildStlBufferFromMesh } from './brep/export/stl'\nexport { exportStepFromSolid, exportStepFromSolids } from './brep/export/step'\nexport type { StepExportEntry } from './brep/export/step'\nexport { reconstructSolidFromMesh, meshToAsciiStl, cadShapeIsValid, meshToStepBrep } from './occt-kernel/meshReconstruct'\n\n// ── L3 API 面(P6/D1:原 packages/stdlib 迁入 core)──\nexport * from './api'\n"]}
@@ -14,6 +14,19 @@
14
14
  *
15
15
  * @module
16
16
  */
17
+ import type { Provenance } from '../topology/naming/lineage.js';
18
+ /** Library-level naming default (registerLib option; per-function `fn.naming` wins). */
19
+ export interface LibNamingOptions {
20
+ /** Default provenance for bare functions that carry no `fn.naming`. */
21
+ naming?: Provenance;
22
+ }
23
+ /**
24
+ * Phase 2.11-③(D11 裁决):blanket 默认已废除。裸函数既无 `fn.naming` 也无库级
25
+ * `options.naming` 时**硬失败**——「能力缺口的正解是补能力或报错,不是加旁路开关」
26
+ * (项目红线)。曾经这里硬编码一条 `unmodeled: 'bare function lift, provenance
27
+ * not declared'` 兜底,正是 D11 否决的那个旁路;三库显式声明(2.11-②)落地后,
28
+ * 它没有存在的理由。
29
+ */
17
30
  /**
18
31
  * Establish an admission-stage wrapper namespace for registerLib.
19
32
  *
@@ -22,8 +35,13 @@
22
35
  * function is lifted through compatOp so it cannot silently bypass the
23
36
  * statement-level boundary contract (B4).
24
37
  *
38
+ * Naming declaration precedence (Phase 2.11-①/③): `fn.naming` (function-level)
39
+ * → `options.naming` (library-level default) → **hard fail** (no default value).
40
+ *
25
41
  * @param ns the library namespace object being registered.
42
+ * @param options admission options (library-level naming default).
26
43
  * @returns the admitted namespace (bare functions replaced by compatOp facades).
44
+ * @throws Error when a bare function has neither `fn.naming` nor a library-level default.
27
45
  */
28
- export declare function admitCompatLib(ns: Record<string, unknown>): Record<string, unknown>;
46
+ export declare function admitCompatLib(ns: Record<string, unknown>, options?: LibNamingOptions): Record<string, unknown>;
29
47
  //# sourceMappingURL=admit-compat-lib.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"admit-compat-lib.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/admit-compat-lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYnF"}
1
+ {"version":3,"file":"admit-compat-lib.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/admit-compat-lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAY5D,wFAAwF;AACxF,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,MAAM,CAAC,EAAE,UAAU,CAAA;CACpB;AAED;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsB/G"}
@@ -16,6 +16,13 @@
16
16
  */
17
17
  import { assertLibConforms, DUAL_OP_META } from '../define-op.js';
18
18
  import { compatOp } from '../api/internal/compat-op.js';
19
+ /**
20
+ * Phase 2.11-③(D11 裁决):blanket 默认已废除。裸函数既无 `fn.naming` 也无库级
21
+ * `options.naming` 时**硬失败**——「能力缺口的正解是补能力或报错,不是加旁路开关」
22
+ * (项目红线)。曾经这里硬编码一条 `unmodeled: 'bare function lift, provenance
23
+ * not declared'` 兜底,正是 D11 否决的那个旁路;三库显式声明(2.11-②)落地后,
24
+ * 它没有存在的理由。
25
+ */
19
26
  /**
20
27
  * Establish an admission-stage wrapper namespace for registerLib.
21
28
  *
@@ -24,10 +31,15 @@ import { compatOp } from '../api/internal/compat-op.js';
24
31
  * function is lifted through compatOp so it cannot silently bypass the
25
32
  * statement-level boundary contract (B4).
26
33
  *
34
+ * Naming declaration precedence (Phase 2.11-①/③): `fn.naming` (function-level)
35
+ * → `options.naming` (library-level default) → **hard fail** (no default value).
36
+ *
27
37
  * @param ns the library namespace object being registered.
38
+ * @param options admission options (library-level naming default).
28
39
  * @returns the admitted namespace (bare functions replaced by compatOp facades).
40
+ * @throws Error when a bare function has neither `fn.naming` nor a library-level default.
29
41
  */
30
- export function admitCompatLib(ns) {
42
+ export function admitCompatLib(ns, options) {
31
43
  assertLibConforms(ns);
32
44
  const out = {};
33
45
  for (const [name, v] of Object.entries(ns)) {
@@ -39,9 +51,17 @@ export function admitCompatLib(ns) {
39
51
  out[name] = v;
40
52
  continue;
41
53
  }
54
+ const declared = v.naming ?? options?.naming;
55
+ if (!declared) {
56
+ throw new Error(`[faijs] lib function '${name}' is a bare function with no naming declaration. ` +
57
+ `Attach fn.naming (Provenance) to the function, or pass registerLib(..., { naming }) / ` +
58
+ `declare "faijs": { "naming": { "kind": "unmodeled", "reason": "..." } } in package.json. ` +
59
+ `Undeclared provenance is a hard error (Phase 2.11-③ / plan D11): no blanket default exists.`);
60
+ }
42
61
  out[name] = compatOp(v, {
43
62
  name,
44
63
  outputs: v.outputs, // only fn.outputs; no other annotation name is recognized (§3.6)
64
+ naming: declared,
45
65
  });
46
66
  }
47
67
  return out;