@faicad/faijs 0.14.1 → 0.16.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 (338) hide show
  1. package/dist/api/api-namespace.d.ts +7 -0
  2. package/dist/api/api-namespace.d.ts.map +1 -1
  3. package/dist/api/api-namespace.js +23 -22
  4. package/dist/api/api-namespace.js.map +1 -1
  5. package/dist/api/boolean.d.ts.map +1 -1
  6. package/dist/api/boolean.js +26 -8
  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 +4 -1
  10. package/dist/api/chamfer.js.map +1 -1
  11. package/dist/api/generated/cad/script-face.d.ts +1 -1
  12. package/dist/api/generated/cad/script-face.d.ts.map +1 -1
  13. package/dist/api/generated/cad/script-face.js +1 -2
  14. package/dist/api/generated/cad/script-face.js.map +1 -1
  15. package/dist/api/generated/operations.js +16 -16
  16. package/dist/api/generated/operations.js.map +1 -1
  17. package/dist/api/generated/script-face-manifest.d.ts.map +1 -1
  18. package/dist/api/generated/script-face-manifest.js +0 -1
  19. package/dist/api/generated/script-face-manifest.js.map +1 -1
  20. package/dist/api/generated/script-face.d.ts +1 -4
  21. package/dist/api/generated/script-face.d.ts.map +1 -1
  22. package/dist/api/generated/script-face.js +2 -3
  23. package/dist/api/generated/script-face.js.map +1 -1
  24. package/dist/api/generated/sketching.js +1 -1
  25. package/dist/api/generated/sketching.js.map +1 -1
  26. package/dist/api/generated/topology.d.ts +0 -8
  27. package/dist/api/generated/topology.d.ts.map +1 -1
  28. package/dist/api/generated/topology.js +19 -26
  29. package/dist/api/generated/topology.js.map +1 -1
  30. package/dist/api/index.d.ts +1 -10
  31. package/dist/api/index.d.ts.map +1 -1
  32. package/dist/api/index.js +10 -18
  33. package/dist/api/index.js.map +1 -1
  34. package/dist/api/internal/compat-projection.d.ts +3 -1
  35. package/dist/api/internal/compat-projection.d.ts.map +1 -1
  36. package/dist/api/internal/compat-projection.js +8 -5
  37. package/dist/api/internal/compat-projection.js.map +1 -1
  38. package/dist/api/internal/replica-role-table.d.ts +36 -0
  39. package/dist/api/internal/replica-role-table.d.ts.map +1 -0
  40. package/dist/api/internal/replica-role-table.js +73 -0
  41. package/dist/api/internal/replica-role-table.js.map +1 -0
  42. package/dist/api/internal/result-unwrap.d.ts +3 -1
  43. package/dist/api/internal/result-unwrap.d.ts.map +1 -1
  44. package/dist/api/internal/result-unwrap.js +2 -2
  45. package/dist/api/internal/result-unwrap.js.map +1 -1
  46. package/dist/api/occt-kernel-bridge.d.ts +105 -27
  47. package/dist/api/occt-kernel-bridge.d.ts.map +1 -1
  48. package/dist/api/occt-kernel-bridge.js +255 -41
  49. package/dist/api/occt-kernel-bridge.js.map +1 -1
  50. package/dist/api/pattern.d.ts.map +1 -1
  51. package/dist/api/pattern.js +25 -61
  52. package/dist/api/pattern.js.map +1 -1
  53. package/dist/api/replicate.d.ts +145 -0
  54. package/dist/api/replicate.d.ts.map +1 -0
  55. package/dist/api/replicate.js +351 -0
  56. package/dist/api/replicate.js.map +1 -0
  57. package/dist/api/revolve.d.ts +36 -0
  58. package/dist/api/revolve.d.ts.map +1 -0
  59. package/dist/api/revolve.js +165 -0
  60. package/dist/api/revolve.js.map +1 -0
  61. package/dist/api/surface/arg-spec.d.ts +8 -0
  62. package/dist/api/surface/arg-spec.d.ts.map +1 -1
  63. package/dist/api/surface/arg-spec.js +37 -36
  64. package/dist/api/surface/arg-spec.js.map +1 -1
  65. package/dist/api/surface/projection-overrides.d.ts.map +1 -1
  66. package/dist/api/surface/projection-overrides.js +6 -0
  67. package/dist/api/surface/projection-overrides.js.map +1 -1
  68. package/dist/boolean/deriveNormals.d.ts +5 -4
  69. package/dist/boolean/deriveNormals.d.ts.map +1 -1
  70. package/dist/boolean/deriveNormals.js +24 -7
  71. package/dist/boolean/deriveNormals.js.map +1 -1
  72. package/dist/brep/engine/adapters/brep-mock.d.ts.map +1 -1
  73. package/dist/brep/engine/adapters/brep-mock.js +58 -0
  74. package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
  75. package/dist/brep/engine/adapters/brepkit.d.ts.map +1 -1
  76. package/dist/brep/engine/adapters/brepkit.js +39 -1
  77. package/dist/brep/engine/adapters/brepkit.js.map +1 -1
  78. package/dist/brep/engine/adapters/occt.d.ts +1 -5
  79. package/dist/brep/engine/adapters/occt.d.ts.map +1 -1
  80. package/dist/brep/engine/adapters/occt.js +232 -18
  81. package/dist/brep/engine/adapters/occt.js.map +1 -1
  82. package/dist/brep/engine/primitives.d.ts +79 -0
  83. package/dist/brep/engine/primitives.d.ts.map +1 -1
  84. package/dist/brep/engine/primitives.js.map +1 -1
  85. package/dist/brep/engine/types.d.ts +18 -1
  86. package/dist/brep/engine/types.d.ts.map +1 -1
  87. package/dist/brep/engine/types.js.map +1 -1
  88. package/dist/brepkit-kernel/brepkitKernel.d.ts.map +1 -1
  89. package/dist/brepkit-kernel/brepkitKernel.js +81 -11
  90. package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
  91. package/dist/browser.d.ts +6 -28
  92. package/dist/browser.d.ts.map +1 -1
  93. package/dist/browser.js +6 -17
  94. package/dist/browser.js.map +1 -1
  95. package/dist/cad-runtime/admit-compat-lib.d.ts +13 -18
  96. package/dist/cad-runtime/admit-compat-lib.d.ts.map +1 -1
  97. package/dist/cad-runtime/admit-compat-lib.js +25 -18
  98. package/dist/cad-runtime/admit-compat-lib.js.map +1 -1
  99. package/dist/cad-runtime/backend-dispatch.d.ts +4 -2
  100. package/dist/cad-runtime/backend-dispatch.d.ts.map +1 -1
  101. package/dist/cad-runtime/backend-dispatch.js +2 -0
  102. package/dist/cad-runtime/backend-dispatch.js.map +1 -1
  103. package/dist/cad-runtime/browser-lib-loader.d.ts +4 -6
  104. package/dist/cad-runtime/browser-lib-loader.d.ts.map +1 -1
  105. package/dist/cad-runtime/browser-lib-loader.js +4 -9
  106. package/dist/cad-runtime/browser-lib-loader.js.map +1 -1
  107. package/dist/cad-runtime/ports.d.ts +0 -7
  108. package/dist/cad-runtime/ports.d.ts.map +1 -1
  109. package/dist/cad-runtime/ports.js.map +1 -1
  110. package/dist/cad-runtime/runtime.d.ts +1 -3
  111. package/dist/cad-runtime/runtime.d.ts.map +1 -1
  112. package/dist/cad-runtime/runtime.js +13 -18
  113. package/dist/cad-runtime/runtime.js.map +1 -1
  114. package/dist/env-agnostic.d.ts +38 -0
  115. package/dist/env-agnostic.d.ts.map +1 -0
  116. package/dist/env-agnostic.js +29 -0
  117. package/dist/env-agnostic.js.map +1 -0
  118. package/dist/fcstd/codegen.d.ts.map +1 -1
  119. package/dist/fcstd/codegen.js +8 -1
  120. package/dist/fcstd/codegen.js.map +1 -1
  121. package/dist/fcstd/expressions.d.ts +24 -0
  122. package/dist/fcstd/expressions.d.ts.map +1 -1
  123. package/dist/fcstd/expressions.js +91 -0
  124. package/dist/fcstd/expressions.js.map +1 -1
  125. package/dist/fcstd/feature-translate.d.ts.map +1 -1
  126. package/dist/fcstd/feature-translate.js +16 -2
  127. package/dist/fcstd/feature-translate.js.map +1 -1
  128. package/dist/fcstd/structural-types.d.ts.map +1 -1
  129. package/dist/fcstd/structural-types.js +5 -0
  130. package/dist/fcstd/structural-types.js.map +1 -1
  131. package/dist/index.d.ts +7 -24
  132. package/dist/index.d.ts.map +1 -1
  133. package/dist/index.js +10 -16
  134. package/dist/index.js.map +1 -1
  135. package/dist/lang/determinism-scanner.d.ts +9 -0
  136. package/dist/lang/determinism-scanner.d.ts.map +1 -1
  137. package/dist/lang/determinism-scanner.js +7 -1
  138. package/dist/lang/determinism-scanner.js.map +1 -1
  139. package/dist/lang/symbol-table.d.ts +31 -0
  140. package/dist/lang/symbol-table.d.ts.map +1 -1
  141. package/dist/lang/symbol-table.generated.d.ts +6 -16
  142. package/dist/lang/symbol-table.generated.d.ts.map +1 -1
  143. package/dist/lang/symbol-table.generated.js +6 -16
  144. package/dist/lang/symbol-table.generated.js.map +1 -1
  145. package/dist/lang/symbol-table.js +50 -1
  146. package/dist/lang/symbol-table.js.map +1 -1
  147. package/dist/mesh/creased-normals.d.ts +50 -0
  148. package/dist/mesh/creased-normals.d.ts.map +1 -0
  149. package/dist/mesh/creased-normals.js +114 -0
  150. package/dist/mesh/creased-normals.js.map +1 -0
  151. package/dist/mesh/decoration-provider.d.ts +53 -0
  152. package/dist/mesh/decoration-provider.d.ts.map +1 -0
  153. package/dist/mesh/decoration-provider.js +21 -0
  154. package/dist/mesh/decoration-provider.js.map +1 -0
  155. package/dist/mesh/engrave.d.ts +4 -0
  156. package/dist/mesh/engrave.d.ts.map +1 -1
  157. package/dist/mesh/engrave.js +22 -31
  158. package/dist/mesh/engrave.js.map +1 -1
  159. package/dist/mesh/index.d.ts +5 -14
  160. package/dist/mesh/index.d.ts.map +1 -1
  161. package/dist/mesh/index.js +7 -19
  162. package/dist/mesh/index.js.map +1 -1
  163. package/dist/mesh/io.d.ts +2 -1
  164. package/dist/mesh/io.d.ts.map +1 -1
  165. package/dist/mesh/io.js +5 -7
  166. package/dist/mesh/io.js.map +1 -1
  167. package/dist/mesh/primitives.d.ts +5 -18
  168. package/dist/mesh/primitives.d.ts.map +1 -1
  169. package/dist/mesh/primitives.js +4 -48
  170. package/dist/mesh/primitives.js.map +1 -1
  171. package/dist/mesh/stl-loader.d.ts +23 -0
  172. package/dist/mesh/stl-loader.d.ts.map +1 -0
  173. package/dist/mesh/stl-loader.js +139 -0
  174. package/dist/mesh/stl-loader.js.map +1 -0
  175. package/dist/module-resolver/parse-imports.d.ts +37 -0
  176. package/dist/module-resolver/parse-imports.d.ts.map +1 -0
  177. package/dist/module-resolver/parse-imports.js +39 -0
  178. package/dist/module-resolver/parse-imports.js.map +1 -0
  179. package/dist/module-resolver/resolver.d.ts +1 -1
  180. package/dist/module-resolver/resolver.js +2 -2
  181. package/dist/module-resolver/resolver.js.map +1 -1
  182. package/dist/node-host/cli.d.ts.map +1 -1
  183. package/dist/node-host/cli.js +1 -22
  184. package/dist/node-host/cli.js.map +1 -1
  185. package/dist/primitives/text/cjk-font.d.ts +42 -0
  186. package/dist/primitives/text/cjk-font.d.ts.map +1 -0
  187. package/dist/primitives/text/cjk-font.js +86 -0
  188. package/dist/primitives/text/cjk-font.js.map +1 -0
  189. package/dist/sdk.d.ts +2 -2
  190. package/dist/sdk.js +2 -2
  191. package/dist/sdk.js.map +1 -1
  192. package/dist/symbol-table.d.ts +15 -0
  193. package/dist/symbol-table.d.ts.map +1 -0
  194. package/dist/symbol-table.js +14 -0
  195. package/dist/symbol-table.js.map +1 -0
  196. package/dist/topology/naming/lineage-resolve.js +1 -1
  197. package/dist/topology/naming/lineage-resolve.js.map +1 -1
  198. package/dist/vendored/brepjs/kernel/index.d.ts +5 -0
  199. package/dist/vendored/brepjs/kernel/index.d.ts.map +1 -1
  200. package/dist/vendored/brepjs/kernel/index.js +11 -0
  201. package/dist/vendored/brepjs/kernel/index.js.map +1 -1
  202. package/dist/weapp.d.ts +3 -3
  203. package/dist/weapp.d.ts.map +1 -1
  204. package/dist/weapp.js +6 -3
  205. package/dist/weapp.js.map +1 -1
  206. package/package.json +16 -14
  207. package/dist/api/compat/index.d.ts +0 -173
  208. package/dist/api/compat/index.d.ts.map +0 -1
  209. package/dist/api/compat/index.js +0 -222
  210. package/dist/api/compat/index.js.map +0 -1
  211. package/dist/api/compound.d.ts +0 -110
  212. package/dist/api/compound.d.ts.map +0 -1
  213. package/dist/api/compound.js +0 -164
  214. package/dist/api/compound.js.map +0 -1
  215. package/dist/api/copy.d.ts +0 -40
  216. package/dist/api/copy.d.ts.map +0 -1
  217. package/dist/api/copy.js +0 -83
  218. package/dist/api/copy.js.map +0 -1
  219. package/dist/api/fai_drill.d.ts +0 -46
  220. package/dist/api/fai_drill.d.ts.map +0 -1
  221. package/dist/api/fai_drill.js +0 -243
  222. package/dist/api/fai_drill.js.map +0 -1
  223. package/dist/api/fai_extrude.d.ts +0 -36
  224. package/dist/api/fai_extrude.d.ts.map +0 -1
  225. package/dist/api/fai_extrude.js +0 -79
  226. package/dist/api/fai_extrude.js.map +0 -1
  227. package/dist/api/fai_split.d.ts +0 -46
  228. package/dist/api/fai_split.d.ts.map +0 -1
  229. package/dist/api/fai_split.js +0 -254
  230. package/dist/api/fai_split.js.map +0 -1
  231. package/dist/api/load.d.ts +0 -41
  232. package/dist/api/load.d.ts.map +0 -1
  233. package/dist/api/load.js +0 -84
  234. package/dist/api/load.js.map +0 -1
  235. package/dist/api/svgExtrude.d.ts +0 -32
  236. package/dist/api/svgExtrude.d.ts.map +0 -1
  237. package/dist/api/svgExtrude.js +0 -74
  238. package/dist/api/svgExtrude.js.map +0 -1
  239. package/dist/api/text.d.ts +0 -34
  240. package/dist/api/text.d.ts.map +0 -1
  241. package/dist/api/text.js +0 -101
  242. package/dist/api/text.js.map +0 -1
  243. package/dist/brep/text/fontTestHelper.d.ts +0 -30
  244. package/dist/brep/text/fontTestHelper.d.ts.map +0 -1
  245. package/dist/brep/text/fontTestHelper.js +0 -57
  246. package/dist/brep/text/fontTestHelper.js.map +0 -1
  247. package/dist/cad-runtime/module-executor.d.ts +0 -271
  248. package/dist/cad-runtime/module-executor.d.ts.map +0 -1
  249. package/dist/cad-runtime/module-executor.js +0 -630
  250. package/dist/cad-runtime/module-executor.js.map +0 -1
  251. package/dist/cad-runtime/terminal-dag.d.ts +0 -65
  252. package/dist/cad-runtime/terminal-dag.d.ts.map +0 -1
  253. package/dist/cad-runtime/terminal-dag.js +0 -167
  254. package/dist/cad-runtime/terminal-dag.js.map +0 -1
  255. package/dist/faqts/browser.d.ts +0 -16
  256. package/dist/faqts/browser.d.ts.map +0 -1
  257. package/dist/faqts/browser.js +0 -13
  258. package/dist/faqts/browser.js.map +0 -1
  259. package/dist/faqts/exec-blob.d.ts +0 -14
  260. package/dist/faqts/exec-blob.d.ts.map +0 -1
  261. package/dist/faqts/exec-blob.js +0 -22
  262. package/dist/faqts/exec-blob.js.map +0 -1
  263. package/dist/faqts/exec-node.d.ts +0 -15
  264. package/dist/faqts/exec-node.d.ts.map +0 -1
  265. package/dist/faqts/exec-node.js +0 -29
  266. package/dist/faqts/exec-node.js.map +0 -1
  267. package/dist/faqts/imports.d.ts +0 -74
  268. package/dist/faqts/imports.d.ts.map +0 -1
  269. package/dist/faqts/imports.js +0 -95
  270. package/dist/faqts/imports.js.map +0 -1
  271. package/dist/faqts/index.d.ts +0 -22
  272. package/dist/faqts/index.d.ts.map +0 -1
  273. package/dist/faqts/index.js +0 -21
  274. package/dist/faqts/index.js.map +0 -1
  275. package/dist/faqts/node.d.ts +0 -23
  276. package/dist/faqts/node.d.ts.map +0 -1
  277. package/dist/faqts/node.js +0 -23
  278. package/dist/faqts/node.js.map +0 -1
  279. package/dist/faqts/run.d.ts +0 -62
  280. package/dist/faqts/run.d.ts.map +0 -1
  281. package/dist/faqts/run.js +0 -62
  282. package/dist/faqts/run.js.map +0 -1
  283. package/dist/faqts/transform.d.ts +0 -43
  284. package/dist/faqts/transform.d.ts.map +0 -1
  285. package/dist/faqts/transform.js +0 -35
  286. package/dist/faqts/transform.js.map +0 -1
  287. package/dist/lang/compile.d.ts +0 -50
  288. package/dist/lang/compile.d.ts.map +0 -1
  289. package/dist/lang/compile.js +0 -368
  290. package/dist/lang/compile.js.map +0 -1
  291. package/dist/lang/keep.d.ts +0 -109
  292. package/dist/lang/keep.d.ts.map +0 -1
  293. package/dist/lang/keep.js +0 -226
  294. package/dist/lang/keep.js.map +0 -1
  295. package/dist/lang/parser.d.ts +0 -91
  296. package/dist/lang/parser.d.ts.map +0 -1
  297. package/dist/lang/parser.js +0 -1594
  298. package/dist/lang/parser.js.map +0 -1
  299. package/dist/mesh/drill-hole/DrillHoleCore.d.ts +0 -90
  300. package/dist/mesh/drill-hole/DrillHoleCore.d.ts.map +0 -1
  301. package/dist/mesh/drill-hole/DrillHoleCore.js +0 -287
  302. package/dist/mesh/drill-hole/DrillHoleCore.js.map +0 -1
  303. package/dist/mesh/drill-hole/drill-types.d.ts +0 -34
  304. package/dist/mesh/drill-hole/drill-types.d.ts.map +0 -1
  305. package/dist/mesh/drill-hole/drill-types.js +0 -7
  306. package/dist/mesh/drill-hole/drill-types.js.map +0 -1
  307. package/dist/mesh/fai_drill.d.ts +0 -21
  308. package/dist/mesh/fai_drill.d.ts.map +0 -1
  309. package/dist/mesh/fai_drill.js +0 -92
  310. package/dist/mesh/fai_drill.js.map +0 -1
  311. package/dist/mesh/fai_extrude.d.ts +0 -24
  312. package/dist/mesh/fai_extrude.d.ts.map +0 -1
  313. package/dist/mesh/fai_extrude.js +0 -42
  314. package/dist/mesh/fai_extrude.js.map +0 -1
  315. package/dist/mesh/fai_split.d.ts +0 -164
  316. package/dist/mesh/fai_split.d.ts.map +0 -1
  317. package/dist/mesh/fai_split.js +0 -269
  318. package/dist/mesh/fai_split.js.map +0 -1
  319. package/dist/primitives/svg-extrude.d.ts +0 -43
  320. package/dist/primitives/svg-extrude.d.ts.map +0 -1
  321. package/dist/primitives/svg-extrude.js +0 -78
  322. package/dist/primitives/svg-extrude.js.map +0 -1
  323. package/dist/primitives/text/cjk.d.ts +0 -61
  324. package/dist/primitives/text/cjk.d.ts.map +0 -1
  325. package/dist/primitives/text/cjk.js +0 -215
  326. package/dist/primitives/text/cjk.js.map +0 -1
  327. package/dist/primitives/text-geometry.d.ts +0 -47
  328. package/dist/primitives/text-geometry.d.ts.map +0 -1
  329. package/dist/primitives/text-geometry.js +0 -127
  330. package/dist/primitives/text-geometry.js.map +0 -1
  331. package/dist/test-helpers.d.ts +0 -31
  332. package/dist/test-helpers.d.ts.map +0 -1
  333. package/dist/test-helpers.js +0 -55
  334. package/dist/test-helpers.js.map +0 -1
  335. package/dist/vendored/brepjs/core/kernelReentrancy.d.ts +0 -41
  336. package/dist/vendored/brepjs/core/kernelReentrancy.d.ts.map +0 -1
  337. package/dist/vendored/brepjs/core/kernelReentrancy.js +0 -68
  338. package/dist/vendored/brepjs/core/kernelReentrancy.js.map +0 -1
package/dist/browser.d.ts CHANGED
@@ -16,27 +16,7 @@
16
16
  * CadRuntime.execute / 高层 API(importStep/exportStep/ensureOcctKernel);
17
17
  * 主线程 CSG/SDF 预览走 previewMeshIntersect / runSdfMain。
18
18
  */
19
- export { configureBackends, getBackends, setCurrentStmt, getCurrentStmt, keep, keepHidden, getRuntimeState, nameOf, setName, setKeepSink, setPendingAssemblyTransforms, takePendingAssemblyTransforms, assertContractVersion, CONTRACT_VERSION, } from './runtime-state.js';
20
- export type { Backends, FaijsRuntimeState, ShapeSlot, KeepSink, RuntimeExecutionMode, AssemblyTransform, StdlibFn, StdlibNamespace, } from './runtime-state.js';
21
- export type { FileId, InnerId, ScopedId, StmtId, PartName, GroupName, RefId, ReferenceId, SelectorKey, OccurrenceId, ShapeId, FaceId, EdgeId, NodeId, StatementId, FaceSelector, } from './identity.js';
22
- export { asFileId, asInnerId, asScopedId, asStmtId, asPartName, asGroupName, asRefId, asReferenceId, asSelectorKey, asOccurrenceId, asShapeId, asFaceId, asEdgeId, asNodeId, toScopedId, splitScopedId, isScopedId, toInnerId, } from './identity.js';
23
- export type { Vec3, JsonValue, TerminalShape, ParamDef, } from './lang/types.js';
24
- export { derivePartName, getMaxModelNum, } from './lang/allocate-id.js';
25
- export type { DerivePartNameInput, DerivePartNameResult } from './lang/allocate-id.js';
26
- export { fmtNum, formatCodeLine } from './lang/codegen.js';
27
- export type { FormatCodeLineInput } from './lang/codegen.js';
28
- export { analyzeCode } from './lang/statement-summary.js';
29
- export type { StatementSummary } from './lang/statement-summary.js';
30
- export { codeToArgs } from './lang/code-to-args.js';
31
- export type { CodeToArgsResult } from './lang/code-to-args.js';
32
- export { extractMetadata } from './lang/metadata-extractor.js';
33
- export type { UiMetadata, ArgSource, ParamEntry, ImportEntry, FunctionEntry, BlockEntry, KeepEntry, ExtractMetadataOptions, } from './lang/metadata-extractor.js';
34
- export { validateExpression } from './lang/expr-validate.js';
35
- export type { ExprValidateInput, ExprValidateResult } from './lang/expr-validate.js';
36
- export { editArgSource } from './lang/source-edit.js';
37
- export type { EditSourceError } from './lang/source-edit.js';
38
- export type { HostArg, HostRef, HostVarRef, HostParamRef, HostCallRef, HostExprRef, HostRefKind, } from './lang/host-arg.js';
39
- export { isHostVarRef, isHostParamRef, isHostCallRef, isHostExprRef, isHostRef, hostArgToDisplay, hostArgToLiteral, HOST_REF_KINDS, } from './lang/host-arg.js';
19
+ export * from './env-agnostic.js';
40
20
  export { CadRuntime, createRuntime, AppendPrefixError } from './cad-runtime/createRuntimeWithCad.js';
41
21
  export { createPreviewExec } from './cad-runtime/preview-exec.js';
42
22
  export type { PreviewExec } from './cad-runtime/preview-exec.js';
@@ -89,9 +69,8 @@ export type { PrimitiveType, PrimitiveParamsRecord, PrimitiveArgsRecord, Primiti
89
69
  export { nextPrimitiveColor } from './primitives/types.js';
90
70
  export type { ScrewParams, ScrewSpec, ScrewSystem } from './primitives/screw/screw-db.js';
91
71
  export { getScrewSpec, getScrewSpecs, threadToPitchMm, SCREW_HEAD_DIMS } from './primitives/screw/screw-db.js';
92
- export type { CjkFontResult } from './primitives/text/cjk.js';
93
- export { loadSystemCjkFont, containsCjk, isCjkChar } from './primitives/text/cjk.js';
94
- export { getOpentypeFont } from './primitives/text-geometry.js';
72
+ export type { CjkFontResult } from './primitives/text/cjk-font.js';
73
+ export { loadSystemCjkFont, containsCjk, isCjkChar } from './primitives/text/cjk-font.js';
95
74
  export type { ExtrudeParts, ExtrudeOffsetMode } from './boolean/extrude-helpers.js';
96
75
  export type { JoineryMeshData } from './boolean/joinery-shapes.js';
97
76
  export type { ManifoldMeshData, BooleanOperation, DovetailGrooveParams, DowelSplitParams, StraightTenonSplitParams, } from './boolean/geo-convert.js';
@@ -108,13 +87,11 @@ export { geoToManifoldMesh, manifoldMeshToGeo } from './boolean/geo-convert.js';
108
87
  export { manifoldToMeshData, weldPositionsWorker, dovetailBooleanSplit, dowelOrTenonBooleanSplit, chainBoolean, meshToManifold } from './boolean/csg-core.js';
109
88
  export { previewMeshIntersect } from './boolean/manifold-preview.js';
110
89
  export type { ManifoldMeshData as PreviewManifoldMeshData } from './boolean/manifold-preview.js';
111
- export { svgToExtrudedGeometry, parseSvgShapes } from './primitives/svg-extrude.js';
112
- export type { SvgExtrudeOptions } from './primitives/svg-extrude.js';
113
- export { createTextGeometry, opentypePathToGeometry } from './primitives/text-geometry.js';
90
+ export { setEngraveDecorationProvider, getEngraveDecorationProvider } from './mesh/decoration-provider.js';
91
+ export type { EngraveDecorationProvider, EngraveDecorationParams } from './mesh/decoration-provider.js';
114
92
  export { runSdfInline } from './sdf/sdf-core.js';
115
93
  export { runSdf as runSdfMain } from './sdf/sdf-runner.js';
116
94
  export type { SdfMeshData as PreviewSdfMesh } from './sdf/sdf-runner.js';
117
- export { createMixedTextGeometry } from './primitives/text/cjk.js';
118
95
  export { applyKnurlDisplacement, KNURL_DEFAULTS } from './mesh/knurl/KnurlGenerator.js';
119
96
  export { subdivide } from './mesh/knurl/subdivision.js';
120
97
  export { loadKnurlingTexture } from './mesh/knurl/textureLoader.js';
@@ -131,4 +108,5 @@ export { exportStepFromSolid, exportStepFromSolids } from './brep/export/step.js
131
108
  export type { StepExportEntry } from './brep/export/step.js';
132
109
  export { reconstructSolidFromMesh, meshToAsciiStl, cadShapeIsValid, meshToStepBrep } from './occt-kernel/meshReconstruct.js';
133
110
  export * from './api/index.js';
111
+ export type { Vec3 } from './lang/types.js';
134
112
  //# sourceMappingURL=browser.d.ts.map
@@ -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
@@ -16,18 +16,9 @@
16
16
  * CadRuntime.execute / 高层 API(importStep/exportStep/ensureOcctKernel);
17
17
  * 主线程 CSG/SDF 预览走 previewMeshIntersect / runSdfMain。
18
18
  */
19
- export { configureBackends, getBackends, setCurrentStmt, getCurrentStmt, keep, keepHidden, getRuntimeState, nameOf, setName, setKeepSink, setPendingAssemblyTransforms, takePendingAssemblyTransforms, assertContractVersion, CONTRACT_VERSION, } from './runtime-state.js';
20
- export { asFileId, asInnerId, asScopedId, asStmtId, asPartName, asGroupName, asRefId, asReferenceId, asSelectorKey, asOccurrenceId, asShapeId, asFaceId, asEdgeId, asNodeId, toScopedId, splitScopedId, isScopedId, toInnerId, } from './identity.js';
21
- export { derivePartName, getMaxModelNum, } from './lang/allocate-id.js';
22
- export { fmtNum, formatCodeLine } from './lang/codegen.js';
23
- export { analyzeCode } from './lang/statement-summary.js';
24
- export { codeToArgs } from './lang/code-to-args.js';
25
- // MetadataExtractor — 无 IR 元数据提取器(UI 通道语义源;UiMetadata 全量)
26
- export { extractMetadata } from './lang/metadata-extractor.js';
27
- // 参数表达式编辑(P0-C/P0-D):实时校验层 + 编辑面板纯函数
28
- export { validateExpression } from './lang/expr-validate.js';
29
- export { editArgSource } from './lang/source-edit.js';
30
- export { isHostVarRef, isHostParamRef, isHostCallRef, isHostExprRef, isHostRef, hostArgToDisplay, hostArgToLiteral, HOST_REF_KINDS, } from './lang/host-arg.js';
19
+ // 共享面(env-agnostic:identity + runtime-state + lang/*)——手写清单已收敛,
20
+ // 三处 umbrella(index/browser/weapp)统一 re-export,防漂移。
21
+ export * from './env-agnostic.js';
31
22
  // ═══════════════════════════════════════════════════════════
32
23
  // B 类:cad-runtime/ + createBrowserPorts + 外部资源注入点
33
24
  // ═══════════════════════════════════════════════════════════
@@ -78,8 +69,7 @@ export { SDF_TEMPLATES, DEFAULT_SDF_TEMPLATE } from './sdf/templates.js';
78
69
  export { boxToTuple, parseParamDefs, defaultParamValues } from './sdf/types.js';
79
70
  export { nextPrimitiveColor } from './primitives/types.js';
80
71
  export { getScrewSpec, getScrewSpecs, threadToPitchMm, SCREW_HEAD_DIMS } from './primitives/screw/screw-db.js';
81
- export { loadSystemCjkFont, containsCjk, isCjkChar } from './primitives/text/cjk.js';
82
- export { getOpentypeFont } from './primitives/text-geometry.js';
72
+ export { loadSystemCjkFont, containsCjk, isCjkChar } from './primitives/text/cjk-font.js';
83
73
  // ═══════════════════════════════════════════════════════════
84
74
  // D 类:辅助函数 + 预览 API
85
75
  // ═══════════════════════════════════════════════════════════
@@ -92,11 +82,10 @@ export { buildWedgeGeometry, buildDowelGeometry, buildStraightTenonGeometry, } f
92
82
  export { geoToManifoldMesh, manifoldMeshToGeo } from './boolean/geo-convert.js';
93
83
  export { manifoldToMeshData, weldPositionsWorker, dovetailBooleanSplit, dowelOrTenonBooleanSplit, chainBoolean, meshToManifold } from './boolean/csg-core.js';
94
84
  export { previewMeshIntersect } from './boolean/manifold-preview.js';
95
- export { svgToExtrudedGeometry, parseSvgShapes } from './primitives/svg-extrude.js';
96
- export { createTextGeometry, opentypePathToGeometry } from './primitives/text-geometry.js';
85
+ // 宿主注入的 mesh 装饰几何(cad.engrave 的文字/SVG 几何链在 @faicad/faijs-extra)
86
+ export { setEngraveDecorationProvider, getEngraveDecorationProvider } from './mesh/decoration-provider.js';
97
87
  export { runSdfInline } from './sdf/sdf-core.js';
98
88
  export { runSdf as runSdfMain } from './sdf/sdf-runner.js';
99
- export { createMixedTextGeometry } from './primitives/text/cjk.js';
100
89
  // Knurl D 类
101
90
  export { applyKnurlDisplacement, KNURL_DEFAULTS } from './mesh/knurl/KnurlGenerator.js';
102
91
  export { subdivide } from './mesh/knurl/subdivision.js';
@@ -1 +1 @@
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"]}
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\n// 共享面(env-agnostic:identity + runtime-state + lang/*)——手写清单已收敛,\n// 三处 umbrella(index/browser/weapp)统一 re-export,防漂移。\nexport * from './env-agnostic'\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'\n// B 组(svg 挤出 / 3D 文字几何链)已随 @faicad/faijs-extra 迁出;留 core 的是\n// 零 three 的 CJK 字符判定与系统字体装载。\nexport type { CjkFontResult } from './primitives/text/cjk-font'\nexport { loadSystemCjkFont, containsCjk, isCjkChar } from './primitives/text/cjk-font'\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'\n// 宿主注入的 mesh 装饰几何(cad.engrave 的文字/SVG 几何链在 @faicad/faijs-extra)\nexport { setEngraveDecorationProvider, getEngraveDecorationProvider } from './mesh/decoration-provider'\nexport type { EngraveDecorationProvider, EngraveDecorationParams } from './mesh/decoration-provider'\nexport { runSdfInline } from './sdf/sdf-core'\nexport { runSdf as runSdfMain } from './sdf/sdf-runner'\nexport type { SdfMeshData as PreviewSdfMesh } from './sdf/sdf-runner'\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// Vec3 双源消歧:env-agnostic(lang/types)与 api(mesh/types)均有 Vec3,\n// 显式 re-export 定为 lang 版(与收敛前 browser.ts 的具名导出一致)。\nexport type { Vec3 } from './lang/types'\n"]}
@@ -12,21 +12,18 @@
12
12
  * Multi-output annotation: the only contract name is `fn.outputs` (the
13
13
  * `outputs` defineOp option); the legacy name is deleted repo-wide.
14
14
  *
15
+ * Naming (2026-09-23): library authors no longer declare face naming
16
+ * (`faijs.naming` / `fn.naming` / `namingFor` removed). A library is a black-box
17
+ * part producer — its functions output parts, not single-op geometry, so no
18
+ * per-function or per-library naming declaration can carry information
19
+ * (design: docs/plans/2026-09-23-relax-lib-naming-design.md). Every bare
20
+ * function is admitted with the fixed default `unmodeled` provenance: its
21
+ * faces carry no stable identity and face references degrade to geometric
22
+ * matching. Op-level naming (defineOp's `DUAL_OP_META.naming` / roleTable)
23
+ * remains the only place where face naming is declared.
24
+ *
15
25
  * @module
16
26
  */
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
- */
30
27
  /**
31
28
  * Establish an admission-stage wrapper namespace for registerLib.
32
29
  *
@@ -35,13 +32,11 @@ export interface LibNamingOptions {
35
32
  * function is lifted through compatOp so it cannot silently bypass the
36
33
  * statement-level boundary contract (B4).
37
34
  *
38
- * Naming declaration precedence (Phase 2.11-①/③): `fn.naming` (function-level)
39
- * → `options.naming` (library-level default) → **hard fail** (no default value).
35
+ * Every bare function is admitted with `BARE_LIFT_DEFAULT_NAMING`
36
+ * (unmodeled); no naming declaration is read or required (2026-09-23).
40
37
  *
41
38
  * @param ns the library namespace object being registered.
42
- * @param options admission options (library-level naming default).
43
39
  * @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.
45
40
  */
46
- export declare function admitCompatLib(ns: Record<string, unknown>, options?: LibNamingOptions): Record<string, unknown>;
41
+ export declare function admitCompatLib(ns: Record<string, unknown>): Record<string, unknown>;
47
42
  //# 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;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"}
1
+ {"version":3,"file":"admit-compat-lib.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/admit-compat-lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAsBH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAanF"}
@@ -12,17 +12,33 @@
12
12
  * Multi-output annotation: the only contract name is `fn.outputs` (the
13
13
  * `outputs` defineOp option); the legacy name is deleted repo-wide.
14
14
  *
15
+ * Naming (2026-09-23): library authors no longer declare face naming
16
+ * (`faijs.naming` / `fn.naming` / `namingFor` removed). A library is a black-box
17
+ * part producer — its functions output parts, not single-op geometry, so no
18
+ * per-function or per-library naming declaration can carry information
19
+ * (design: docs/plans/2026-09-23-relax-lib-naming-design.md). Every bare
20
+ * function is admitted with the fixed default `unmodeled` provenance: its
21
+ * faces carry no stable identity and face references degrade to geometric
22
+ * matching. Op-level naming (defineOp's `DUAL_OP_META.naming` / roleTable)
23
+ * remains the only place where face naming is declared.
24
+ *
15
25
  * @module
16
26
  */
17
27
  import { assertLibConforms, DUAL_OP_META } from '../define-op.js';
18
28
  import { compatOp } from '../api/internal/compat-op.js';
19
29
  /**
20
- * Phase 2.11-③(D11 裁决):blanket 默认已废除。裸函数既无 `fn.naming` 也无库级
21
- * `options.naming` 时**硬失败**——「能力缺口的正解是补能力或报错,不是加旁路开关」
22
- * (项目红线)。曾经这里硬编码一条 `unmodeled: 'bare function lift, provenance
23
- * not declared'` 兜底,正是 D11 否决的那个旁路;三库显式声明(2.11-②)落地后,
24
- * 它没有存在的理由。
30
+ * Default provenance for every bare library function (2026-09-23).
31
+ *
32
+ * Library functions are black-box part producers: no per-function or
33
+ * per-library naming declaration exists (see file header). Faces of library
34
+ * output get no stable identity — face references degrade to geometric
35
+ * matching. The `default:` reason prefix distinguishes this implicit category
36
+ * from a library author's explicit unmodeled accounting.
25
37
  */
38
+ const BARE_LIFT_DEFAULT_NAMING = {
39
+ kind: 'unmodeled',
40
+ reason: 'default: bare library function lift — library parts have no op-level face naming',
41
+ };
26
42
  /**
27
43
  * Establish an admission-stage wrapper namespace for registerLib.
28
44
  *
@@ -31,15 +47,13 @@ import { compatOp } from '../api/internal/compat-op.js';
31
47
  * function is lifted through compatOp so it cannot silently bypass the
32
48
  * statement-level boundary contract (B4).
33
49
  *
34
- * Naming declaration precedence (Phase 2.11-①/③): `fn.naming` (function-level)
35
- * → `options.naming` (library-level default) → **hard fail** (no default value).
50
+ * Every bare function is admitted with `BARE_LIFT_DEFAULT_NAMING`
51
+ * (unmodeled); no naming declaration is read or required (2026-09-23).
36
52
  *
37
53
  * @param ns the library namespace object being registered.
38
- * @param options admission options (library-level naming default).
39
54
  * @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.
41
55
  */
42
- export function admitCompatLib(ns, options) {
56
+ export function admitCompatLib(ns) {
43
57
  assertLibConforms(ns);
44
58
  const out = {};
45
59
  for (const [name, v] of Object.entries(ns)) {
@@ -51,17 +65,10 @@ export function admitCompatLib(ns, options) {
51
65
  out[name] = v;
52
66
  continue;
53
67
  }
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
- }
61
68
  out[name] = compatOp(v, {
62
69
  name,
63
70
  outputs: v.outputs, // only fn.outputs; no other annotation name is recognized (§3.6)
64
- naming: declared,
71
+ naming: BARE_LIFT_DEFAULT_NAMING,
65
72
  });
66
73
  }
67
74
  return out;
@@ -1 +1 @@
1
- {"version":3,"file":"admit-compat-lib.js","sourceRoot":"","sources":["../../src/cad-runtime/admit-compat-lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAmBpD;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,cAAc,CAAC,EAA2B,EAAE,OAA0B;IACpF,iBAAiB,CAAC,EAAE,CAAC,CAAA;IACrB,MAAM,GAAG,GAA4B,EAAE,CAAA;IACvC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,SAAQ;QAAC,CAAC;QACxD,IAAK,CAAwC,CAAC,YAAY,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,SAAQ;QAAC,CAAC;QACxF,MAAM,QAAQ,GAAI,CAAmB,CAAC,MAAM,IAAI,OAAO,EAAE,MAAM,CAAA;QAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,mDAAmD;gBAChF,wFAAwF;gBACxF,2FAA2F;gBAC3F,6FAA6F,CAC9F,CAAA;QACH,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAiC,EAAE;YACtD,IAAI;YACJ,OAAO,EAAG,CAAoB,CAAC,OAAO,EAAE,iEAAiE;YACzG,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC","sourcesContent":["/**\n * admit-compat-lib — registerLib's admission-stage enhancement (B4 fix).\n *\n * Design: docs/plans/2026-09-03-faijs-brepjs-compat-api.md §4.3.3\n *\n * Hard ordering constraint: assertLibConforms runs BEFORE wrapping — DUAL_OP_META\n * hangs on the function object with enumerable:false (define-op.ts) and\n * assertLibConforms iterates values via Object.values to judge metadata; a\n * wrap-first admission would let bare functions silently skip the whole strict\n * validation pass (verified in practice, R8).\n *\n * Multi-output annotation: the only contract name is `fn.outputs` (the\n * `outputs` defineOp option); the legacy name is deleted repo-wide.\n *\n * @module\n */\n\nimport { assertLibConforms, DUAL_OP_META } from '../define-op'\nimport { compatOp } from '../api/internal/compat-op'\nimport type { Provenance } from '../topology/naming/lineage'\n\ntype OutputsCarrier = { outputs?: string[] }\n\n/**\n * Function-level naming annotation (Phase 2.11-①): the only contract name is\n * `fn.naming` (mirrors `fn.outputs`). A library author attaches a `Provenance`\n * to a bare exported function so the lifter records the op's true face-mapping\n * category instead of the blanket `unmodeled` default.\n */\ntype NamingCarrier = { naming?: Provenance }\n\n/** Library-level naming default (registerLib option; per-function `fn.naming` wins). */\nexport interface LibNamingOptions {\n /** Default provenance for bare functions that carry no `fn.naming`. */\n naming?: Provenance\n}\n\n/**\n * Phase 2.11-③(D11 裁决):blanket 默认已废除。裸函数既无 `fn.naming` 也无库级\n * `options.naming` 时**硬失败**——「能力缺口的正解是补能力或报错,不是加旁路开关」\n * (项目红线)。曾经这里硬编码一条 `unmodeled: 'bare function lift, provenance\n * not declared'` 兜底,正是 D11 否决的那个旁路;三库显式声明(2.11-②)落地后,\n * 它没有存在的理由。\n */\n\n/**\n * Establish an admission-stage wrapper namespace for registerLib.\n *\n * Non-functions (contractVersion / resource objects) and native dual-ops\n * (already carrying DUAL_OP_META) pass through just as they are; any bare\n * function is lifted through compatOp so it cannot silently bypass the\n * statement-level boundary contract (B4).\n *\n * Naming declaration precedence (Phase 2.11-①/③): `fn.naming` (function-level)\n * → `options.naming` (library-level default) → **hard fail** (no default value).\n *\n * @param ns the library namespace object being registered.\n * @param options admission options (library-level naming default).\n * @returns the admitted namespace (bare functions replaced by compatOp facades).\n * @throws Error when a bare function has neither `fn.naming` nor a library-level default.\n */\nexport function admitCompatLib(ns: Record<string, unknown>, options?: LibNamingOptions): Record<string, unknown> {\n assertLibConforms(ns)\n const out: Record<string, unknown> = {}\n for (const [name, v] of Object.entries(ns)) {\n if (typeof v !== 'function') { out[name] = v; continue }\n if ((v as unknown as Record<string, unknown>)[DUAL_OP_META]) { out[name] = v; continue }\n const declared = (v as NamingCarrier).naming ?? options?.naming\n if (!declared) {\n throw new Error(\n `[faijs] lib function '${name}' is a bare function with no naming declaration. ` +\n `Attach fn.naming (Provenance) to the function, or pass registerLib(..., { naming }) / ` +\n `declare \"faijs\": { \"naming\": { \"kind\": \"unmodeled\", \"reason\": \"...\" } } in package.json. ` +\n `Undeclared provenance is a hard error (Phase 2.11-③ / plan D11): no blanket default exists.`,\n )\n }\n out[name] = compatOp(v as (...a: unknown[]) => unknown, {\n name,\n outputs: (v as OutputsCarrier).outputs, // only fn.outputs; no other annotation name is recognized (§3.6)\n naming: declared,\n })\n }\n return out\n}"]}
1
+ {"version":3,"file":"admit-compat-lib.js","sourceRoot":"","sources":["../../src/cad-runtime/admit-compat-lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAKpD;;;;;;;;GAQG;AACH,MAAM,wBAAwB,GAAe;IAC3C,IAAI,EAAE,WAAW;IACjB,MAAM,EAAE,kFAAkF;CAC3F,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,EAA2B;IACxD,iBAAiB,CAAC,EAAE,CAAC,CAAA;IACrB,MAAM,GAAG,GAA4B,EAAE,CAAA;IACvC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,SAAQ;QAAC,CAAC;QACxD,IAAK,CAAwC,CAAC,YAAY,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,SAAQ;QAAC,CAAC;QACxF,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAiC,EAAE;YACtD,IAAI;YACJ,OAAO,EAAG,CAAoB,CAAC,OAAO,EAAE,iEAAiE;YACzG,MAAM,EAAE,wBAAwB;SACjC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC","sourcesContent":["/**\n * admit-compat-lib — registerLib's admission-stage enhancement (B4 fix).\n *\n * Design: docs/plans/2026-09-03-faijs-brepjs-compat-api.md §4.3.3\n *\n * Hard ordering constraint: assertLibConforms runs BEFORE wrapping — DUAL_OP_META\n * hangs on the function object with enumerable:false (define-op.ts) and\n * assertLibConforms iterates values via Object.values to judge metadata; a\n * wrap-first admission would let bare functions silently skip the whole strict\n * validation pass (verified in practice, R8).\n *\n * Multi-output annotation: the only contract name is `fn.outputs` (the\n * `outputs` defineOp option); the legacy name is deleted repo-wide.\n *\n * Naming (2026-09-23): library authors no longer declare face naming\n * (`faijs.naming` / `fn.naming` / `namingFor` removed). A library is a black-box\n * part producer — its functions output parts, not single-op geometry, so no\n * per-function or per-library naming declaration can carry information\n * (design: docs/plans/2026-09-23-relax-lib-naming-design.md). Every bare\n * function is admitted with the fixed default `unmodeled` provenance: its\n * faces carry no stable identity and face references degrade to geometric\n * matching. Op-level naming (defineOp's `DUAL_OP_META.naming` / roleTable)\n * remains the only place where face naming is declared.\n *\n * @module\n */\n\nimport { assertLibConforms, DUAL_OP_META } from '../define-op'\nimport { compatOp } from '../api/internal/compat-op'\nimport type { Provenance } from '../topology/naming/lineage'\n\ntype OutputsCarrier = { outputs?: string[] }\n\n/**\n * Default provenance for every bare library function (2026-09-23).\n *\n * Library functions are black-box part producers: no per-function or\n * per-library naming declaration exists (see file header). Faces of library\n * output get no stable identity — face references degrade to geometric\n * matching. The `default:` reason prefix distinguishes this implicit category\n * from a library author's explicit unmodeled accounting.\n */\nconst BARE_LIFT_DEFAULT_NAMING: Provenance = {\n kind: 'unmodeled',\n reason: 'default: bare library function lift — library parts have no op-level face naming',\n}\n\n/**\n * Establish an admission-stage wrapper namespace for registerLib.\n *\n * Non-functions (contractVersion / resource objects) and native dual-ops\n * (already carrying DUAL_OP_META) pass through just as they are; any bare\n * function is lifted through compatOp so it cannot silently bypass the\n * statement-level boundary contract (B4).\n *\n * Every bare function is admitted with `BARE_LIFT_DEFAULT_NAMING`\n * (unmodeled); no naming declaration is read or required (2026-09-23).\n *\n * @param ns the library namespace object being registered.\n * @returns the admitted namespace (bare functions replaced by compatOp facades).\n */\nexport function admitCompatLib(ns: Record<string, unknown>): Record<string, unknown> {\n assertLibConforms(ns)\n const out: Record<string, unknown> = {}\n for (const [name, v] of Object.entries(ns)) {\n if (typeof v !== 'function') { out[name] = v; continue }\n if ((v as unknown as Record<string, unknown>)[DUAL_OP_META]) { out[name] = v; continue }\n out[name] = compatOp(v as (...a: unknown[]) => unknown, {\n name,\n outputs: (v as OutputsCarrier).outputs, // only fn.outputs; no other annotation name is recognized (§3.6)\n naming: BARE_LIFT_DEFAULT_NAMING,\n })\n }\n return out\n}\n"]}
@@ -13,7 +13,7 @@
13
13
  * 不依赖 cad-runtime 的任何其他模块,因此不构成循环。
14
14
  * P4b(可选)把函数拆成 brep/mesh 双实现后,此依赖会自然消失。
15
15
  */
16
- import type { BrepEvolutionKind } from '../brep/engine/types.js';
16
+ import type { BrepEvolutionKind, BrepMethodKind } from '../brep/engine/types.js';
17
17
  import type { Shape } from '../mesh/types.js';
18
18
  /** 静态判定的两个可能结果:走 BREP 链或 mesh 链。 */
19
19
  export type BrepPath = 'brep' | 'mesh';
@@ -26,7 +26,7 @@ export type BrepPath = 'brep' | 'mesh';
26
26
  * op 现在必须声明**具体**要哪个核函数(如 `['cut']`),引擎声明**具体**提供哪些
27
27
  * (`evolution: ['fuse','cut','fillet']`)。见 `brep/engine/types.ts` 的 `BrepEvolutionKind`。
28
28
  */
29
- export type BrepCapabilityName = 'heal' | 'directEdit' | 'advSurface' | 'assembly' | 'meshLift' | BrepEvolutionKind;
29
+ export type BrepCapabilityName = 'heal' | 'directEdit' | 'advSurface' | 'assembly' | 'meshLift' | BrepEvolutionKind | BrepMethodKind;
30
30
  /**
31
31
  * 引擎能力声明的宽松镜像(`runtime-state.Backends.config.brepCapabilities` 同构;
32
32
  * 该模块须零依赖,故不复用 `BrepCapabilities`)。
@@ -34,6 +34,8 @@ export type BrepCapabilityName = 'heal' | 'directEdit' | 'advSurface' | 'assembl
34
34
  export interface EngineCapabilitiesLike {
35
35
  /** 本引擎实际提供的 `*WithHistory` 核函数名。 */
36
36
  evolution?: readonly string[];
37
+ /** 本引擎实际提供的非演化内核方法名(`BrepMethodKind`)。 */
38
+ methods?: readonly string[];
37
39
  heal?: boolean;
38
40
  directEdit?: boolean;
39
41
  advSurface?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"backend-dispatch.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/backend-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAE1C,oCAAoC;AACpC,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;AAEtC;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,YAAY,GAAG,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,iBAAiB,CAAA;AAEnH;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,oCAAoC;IACpC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,sBAAsB,GAAG,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAUjG;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,GAAG,SAAS,GAClD,kBAAkB,GAAG,SAAS,CAIhC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,KAAK,EAAE,EACf,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EACzC,kBAAkB,CAAC,EAAE,kBAAkB,GACtC,QAAQ,CAiDV"}
1
+ {"version":3,"file":"backend-dispatch.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/backend-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC7E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAE1C,oCAAoC;AACpC,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;AAEtC;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GACN,YAAY,GACZ,YAAY,GACZ,UAAU,GACV,UAAU,GACV,iBAAiB,GACjB,cAAc,CAAA;AAElB;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,oCAAoC;IACpC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC7B,0CAA0C;IAC1C,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,sBAAsB,GAAG,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAWjG;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,GAAG,SAAS,GAClD,kBAAkB,GAAG,SAAS,CAIhC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,KAAK,EAAE,EACf,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EACzC,kBAAkB,CAAC,EAAE,kBAAkB,GACtC,QAAQ,CAiDV"}
@@ -26,6 +26,8 @@ export function engineCapabilitySet(caps) {
26
26
  return set;
27
27
  for (const kind of caps.evolution ?? [])
28
28
  set.add(kind);
29
+ for (const method of caps.methods ?? [])
30
+ set.add(method);
29
31
  if (caps.heal)
30
32
  set.add('heal');
31
33
  if (caps.directEdit)
@@ -1 +1 @@
1
- {"version":3,"file":"backend-dispatch.js","sourceRoot":"","sources":["../../src/cad-runtime/backend-dispatch.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * backend-dispatch — BREP/mesh 路径静态判定(引擎侧)\n *\n *\n * 红线(AGENTS.md):BREP 链是否可用,由静态规则在执行前判定,\n * **禁止运行时 try-catch 回退**。BREP 路径抛异常 = 设计缺陷或 bug,必须直接报错暴露。\n *\n * 本文件从 src/stdlib/internal/resolve-path.ts 迁移而来:判定是引擎的职责,\n * 不该由每个库函数各自调用。\n *\n * ⚠️ 分层例外:本文件位于 cad-runtime/ 但被 stdlib/ import。\n * 这是安全的——它只依赖 runtime-state / stdlib/shape / mesh/types,\n * 不依赖 cad-runtime 的任何其他模块,因此不构成循环。\n * P4b(可选)把函数拆成 brep/mesh 双实现后,此依赖会自然消失。\n */\n\nimport { getBackends, getCurrentStmt, BrepUnsupportedError, MeshUnsupportedError } from '../runtime-state'\nimport { hasBrep } from '../shape'\nimport type { BrepEvolutionKind } from '../brep/engine/types'\nimport type { Shape } from '../mesh/types'\n\n/** 静态判定的两个可能结果:走 BREP 链或 mesh 链。 */\nexport type BrepPath = 'brep' | 'mesh'\n\n/**\n * 能力名:族级布尔位(`BrepCapabilities` 里类型为 boolean 的字段)**加上**逐核函数的\n * 面演化名(`BrepEvolutionKind`,`evolution` 名单里的条目)。\n *\n * ⚠️ `'evolution'` 已从本联合中**移除**(2026-09-22 Phase 0.2):它曾是\"面演化族\"的\n * 族级名,但族级声明会多报能力(内核可只提供部分 `*WithHistory`)→ 静态判定失效。\n * op 现在必须声明**具体**要哪个核函数(如 `['cut']`),引擎声明**具体**提供哪些\n * (`evolution: ['fuse','cut','fillet']`)。见 `brep/engine/types.ts` 的 `BrepEvolutionKind`。\n */\nexport type BrepCapabilityName = 'heal' | 'directEdit' | 'advSurface' | 'assembly' | 'meshLift' | BrepEvolutionKind\n\n/**\n * 引擎能力声明的宽松镜像(`runtime-state.Backends.config.brepCapabilities` 同构;\n * 该模块须零依赖,故不复用 `BrepCapabilities`)。\n */\nexport interface EngineCapabilitiesLike {\n /** 本引擎实际提供的 `*WithHistory` 核函数名。 */\n evolution?: readonly string[]\n heal?: boolean\n directEdit?: boolean\n advSurface?: boolean\n assembly?: boolean\n meshLift?: boolean\n}\n\n/**\n * 引擎能力声明 → 受支持能力名集合(族级布尔位 + `evolution` 名单展开成逐个核函数名)。\n * @param caps - 当前引擎的能力声明(缺省 = 空集,即什么都不支持)。\n * @returns 该引擎声明支持的 `BrepCapabilityName` 集合。\n */\nexport function engineCapabilitySet(caps: EngineCapabilitiesLike | undefined): ReadonlySet<string> {\n const set = new Set<string>()\n if (!caps) return set\n for (const kind of caps.evolution ?? []) set.add(kind)\n if (caps.heal) set.add('heal')\n if (caps.directEdit) set.add('directEdit')\n if (caps.advSurface) set.add('advSurface')\n if (caps.assembly) set.add('assembly')\n if (caps.meshLift) set.add('meshLift')\n return set\n}\n\n/**\n * 声明列表中第一个**当前引擎不具备**的能力名(全具备则 `undefined`)。\n *\n * 读的是运行时配置里的能力声明(与 `dispatchPath` 同一来源),因此调用点与分派点\n * 对\"缺哪个能力\"的判断必然一致——不会出现\"defineOp 认为缺 evolution、dispatch 认为具备\"。\n * @param declared - op 声明的能力名列表(来自 `DualOpMeta.capabilities`)。\n * @returns 第一个缺失的能力名,或 undefined。\n */\nexport function firstMissingCapability(\n declared: readonly BrepCapabilityName[] | undefined,\n): BrepCapabilityName | undefined {\n if (!declared?.length) return undefined\n const supported = engineCapabilitySet(getBackends().config.brepCapabilities)\n return declared.find((cap) => !supported.has(cap))\n}\n\n/**\n * Decide whether this invocation takes the BREP or the mesh backend path.\n *\n * Bidirectional dispatch (defineOp contract, D1/D1b/D2):\n * - `impls` carries mesh/brep implementation presence (function reference or\n * undefined, fixed at defineOp construction — static).\n * - `mode='mesh'` → always mesh; missing mesh implementation (brep-only)\n * throws `MeshUnsupportedError`.\n * - `mode='brep'` → missing brep / input off chain / missing capability throws\n * `BrepUnsupportedError`.\n * - `mode='auto'` → brep when brep exists and all inputs are on the chain;\n * otherwise mesh when mesh exists; brep-only with a broken input chain (or\n * missing capability) throws `MeshUnsupportedError` — no mesh to fall back to.\n *\n * Capability routing (requiredCapability): when the current engine (registry)\n * lacks a declared capability, brep mode throws a BrepUnsupportedError (an\n * explicit error, never a silent fallback) while auto mode statically degrades\n * to mesh (never fabricating a missing capability). The capability is matched\n * against the engine's declaration as a set of concrete names: family booleans\n * plus the engine's `evolution` list of `*WithHistory` kernel function names\n * (Phase 0.2 — a family-level `evolution: true` would over-report, since a\n * kernel may provide only a subset of the evolution family).\n *\n * Red line unchanged: static dispatch, no runtime try-catch fallback. The\n * decision happens before the implementation runs and is never revised after a\n * failed execution.\n *\n * Third-party library authors never call this directly — `defineOp` (SDK)\n * invokes it inside its wrapper; authors only declare the implementation set.\n * @param inputs - the shapes feeding the operation, used to test whether all\n * lie on the BREP chain.\n * @param impls - the operation's implementation set: `mesh`/`brep` presence\n * (function reference or undefined; fixed at defineOp construction).\n * @param requiredCapability - an optional capability the operation declares;\n * a missing capability routes the dispatch.\n * @returns the selected backend path: 'brep' or 'mesh'.\n */\nexport function dispatchPath(\n inputs: Shape[],\n impls: { mesh?: unknown; brep?: unknown },\n requiredCapability?: BrepCapabilityName,\n): BrepPath {\n const { config } = getBackends()\n\n if (config.mode === 'mesh') {\n if (!impls.mesh) {\n throw new MeshUnsupportedError('E_MESH_UNSUPPORTED: function has no mesh implementation', getCurrentStmt())\n }\n return 'mesh'\n }\n const currentStmt = getCurrentStmt()\n // 引擎能力声明 → 具体能力名集合(族级布尔位 + evolution 名单逐核函数展开)。\n const supported = engineCapabilitySet(config.brepCapabilities)\n\n if (config.mode === 'brep') {\n if (!impls.brep) {\n throw new BrepUnsupportedError('E_BREP_UNSUPPORTED: function has no BREP implementation', currentStmt)\n }\n if (!inputs.every(hasBrep)) {\n throw new BrepUnsupportedError('E_BREP_UNSUPPORTED: input is not BREP', currentStmt)\n }\n // 能力路由:brep 模式缺能力 → 明确报错,不静默回退\n if (requiredCapability && !supported.has(requiredCapability)) {\n throw new BrepUnsupportedError(\n `E_BREP_UNSUPPORTED: current engine lacks capability '${requiredCapability}' (brepEngineId=${config.brepEngineId ?? '<none>'})`,\n currentStmt,\n )\n }\n return 'brep'\n }\n\n // auto 模式:能力路由(缺能力 → 静态降级走 mesh;brep-only 无 mesh 可降 → 明确报错)\n if (requiredCapability && !supported.has(requiredCapability)) {\n if (!impls.mesh) {\n throw new MeshUnsupportedError(\n `E_MESH_UNSUPPORTED: current engine lacks capability '${requiredCapability}' and function has no mesh implementation`,\n currentStmt,\n )\n }\n return 'mesh'\n }\n\n if (impls.brep && inputs.every(hasBrep)) return 'brep'\n if (!impls.mesh) {\n throw new MeshUnsupportedError(\n 'E_MESH_UNSUPPORTED: input is not BREP and function has no mesh implementation',\n currentStmt,\n )\n }\n return 'mesh'\n}\n"]}
1
+ {"version":3,"file":"backend-dispatch.js","sourceRoot":"","sources":["../../src/cad-runtime/backend-dispatch.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * backend-dispatch — BREP/mesh 路径静态判定(引擎侧)\n *\n *\n * 红线(AGENTS.md):BREP 链是否可用,由静态规则在执行前判定,\n * **禁止运行时 try-catch 回退**。BREP 路径抛异常 = 设计缺陷或 bug,必须直接报错暴露。\n *\n * 本文件从 src/stdlib/internal/resolve-path.ts 迁移而来:判定是引擎的职责,\n * 不该由每个库函数各自调用。\n *\n * ⚠️ 分层例外:本文件位于 cad-runtime/ 但被 stdlib/ import。\n * 这是安全的——它只依赖 runtime-state / stdlib/shape / mesh/types,\n * 不依赖 cad-runtime 的任何其他模块,因此不构成循环。\n * P4b(可选)把函数拆成 brep/mesh 双实现后,此依赖会自然消失。\n */\n\nimport { getBackends, getCurrentStmt, BrepUnsupportedError, MeshUnsupportedError } from '../runtime-state'\nimport { hasBrep } from '../shape'\nimport type { BrepEvolutionKind, BrepMethodKind } from '../brep/engine/types'\nimport type { Shape } from '../mesh/types'\n\n/** 静态判定的两个可能结果:走 BREP 链或 mesh 链。 */\nexport type BrepPath = 'brep' | 'mesh'\n\n/**\n * 能力名:族级布尔位(`BrepCapabilities` 里类型为 boolean 的字段)**加上**逐核函数的\n * 面演化名(`BrepEvolutionKind`,`evolution` 名单里的条目)。\n *\n * ⚠️ `'evolution'` 已从本联合中**移除**(2026-09-22 Phase 0.2):它曾是\"面演化族\"的\n * 族级名,但族级声明会多报能力(内核可只提供部分 `*WithHistory`)→ 静态判定失效。\n * op 现在必须声明**具体**要哪个核函数(如 `['cut']`),引擎声明**具体**提供哪些\n * (`evolution: ['fuse','cut','fillet']`)。见 `brep/engine/types.ts` 的 `BrepEvolutionKind`。\n */\nexport type BrepCapabilityName =\n | 'heal'\n | 'directEdit'\n | 'advSurface'\n | 'assembly'\n | 'meshLift'\n | BrepEvolutionKind\n | BrepMethodKind\n\n/**\n * 引擎能力声明的宽松镜像(`runtime-state.Backends.config.brepCapabilities` 同构;\n * 该模块须零依赖,故不复用 `BrepCapabilities`)。\n */\nexport interface EngineCapabilitiesLike {\n /** 本引擎实际提供的 `*WithHistory` 核函数名。 */\n evolution?: readonly string[]\n /** 本引擎实际提供的非演化内核方法名(`BrepMethodKind`)。 */\n methods?: readonly string[]\n heal?: boolean\n directEdit?: boolean\n advSurface?: boolean\n assembly?: boolean\n meshLift?: boolean\n}\n\n/**\n * 引擎能力声明 → 受支持能力名集合(族级布尔位 + `evolution` 名单展开成逐个核函数名)。\n * @param caps - 当前引擎的能力声明(缺省 = 空集,即什么都不支持)。\n * @returns 该引擎声明支持的 `BrepCapabilityName` 集合。\n */\nexport function engineCapabilitySet(caps: EngineCapabilitiesLike | undefined): ReadonlySet<string> {\n const set = new Set<string>()\n if (!caps) return set\n for (const kind of caps.evolution ?? []) set.add(kind)\n for (const method of caps.methods ?? []) set.add(method)\n if (caps.heal) set.add('heal')\n if (caps.directEdit) set.add('directEdit')\n if (caps.advSurface) set.add('advSurface')\n if (caps.assembly) set.add('assembly')\n if (caps.meshLift) set.add('meshLift')\n return set\n}\n\n/**\n * 声明列表中第一个**当前引擎不具备**的能力名(全具备则 `undefined`)。\n *\n * 读的是运行时配置里的能力声明(与 `dispatchPath` 同一来源),因此调用点与分派点\n * 对\"缺哪个能力\"的判断必然一致——不会出现\"defineOp 认为缺 evolution、dispatch 认为具备\"。\n * @param declared - op 声明的能力名列表(来自 `DualOpMeta.capabilities`)。\n * @returns 第一个缺失的能力名,或 undefined。\n */\nexport function firstMissingCapability(\n declared: readonly BrepCapabilityName[] | undefined,\n): BrepCapabilityName | undefined {\n if (!declared?.length) return undefined\n const supported = engineCapabilitySet(getBackends().config.brepCapabilities)\n return declared.find((cap) => !supported.has(cap))\n}\n\n/**\n * Decide whether this invocation takes the BREP or the mesh backend path.\n *\n * Bidirectional dispatch (defineOp contract, D1/D1b/D2):\n * - `impls` carries mesh/brep implementation presence (function reference or\n * undefined, fixed at defineOp construction — static).\n * - `mode='mesh'` → always mesh; missing mesh implementation (brep-only)\n * throws `MeshUnsupportedError`.\n * - `mode='brep'` → missing brep / input off chain / missing capability throws\n * `BrepUnsupportedError`.\n * - `mode='auto'` → brep when brep exists and all inputs are on the chain;\n * otherwise mesh when mesh exists; brep-only with a broken input chain (or\n * missing capability) throws `MeshUnsupportedError` — no mesh to fall back to.\n *\n * Capability routing (requiredCapability): when the current engine (registry)\n * lacks a declared capability, brep mode throws a BrepUnsupportedError (an\n * explicit error, never a silent fallback) while auto mode statically degrades\n * to mesh (never fabricating a missing capability). The capability is matched\n * against the engine's declaration as a set of concrete names: family booleans\n * plus the engine's `evolution` list of `*WithHistory` kernel function names\n * (Phase 0.2 — a family-level `evolution: true` would over-report, since a\n * kernel may provide only a subset of the evolution family).\n *\n * Red line unchanged: static dispatch, no runtime try-catch fallback. The\n * decision happens before the implementation runs and is never revised after a\n * failed execution.\n *\n * Third-party library authors never call this directly — `defineOp` (SDK)\n * invokes it inside its wrapper; authors only declare the implementation set.\n * @param inputs - the shapes feeding the operation, used to test whether all\n * lie on the BREP chain.\n * @param impls - the operation's implementation set: `mesh`/`brep` presence\n * (function reference or undefined; fixed at defineOp construction).\n * @param requiredCapability - an optional capability the operation declares;\n * a missing capability routes the dispatch.\n * @returns the selected backend path: 'brep' or 'mesh'.\n */\nexport function dispatchPath(\n inputs: Shape[],\n impls: { mesh?: unknown; brep?: unknown },\n requiredCapability?: BrepCapabilityName,\n): BrepPath {\n const { config } = getBackends()\n\n if (config.mode === 'mesh') {\n if (!impls.mesh) {\n throw new MeshUnsupportedError('E_MESH_UNSUPPORTED: function has no mesh implementation', getCurrentStmt())\n }\n return 'mesh'\n }\n const currentStmt = getCurrentStmt()\n // 引擎能力声明 → 具体能力名集合(族级布尔位 + evolution 名单逐核函数展开)。\n const supported = engineCapabilitySet(config.brepCapabilities)\n\n if (config.mode === 'brep') {\n if (!impls.brep) {\n throw new BrepUnsupportedError('E_BREP_UNSUPPORTED: function has no BREP implementation', currentStmt)\n }\n if (!inputs.every(hasBrep)) {\n throw new BrepUnsupportedError('E_BREP_UNSUPPORTED: input is not BREP', currentStmt)\n }\n // 能力路由:brep 模式缺能力 → 明确报错,不静默回退\n if (requiredCapability && !supported.has(requiredCapability)) {\n throw new BrepUnsupportedError(\n `E_BREP_UNSUPPORTED: current engine lacks capability '${requiredCapability}' (brepEngineId=${config.brepEngineId ?? '<none>'})`,\n currentStmt,\n )\n }\n return 'brep'\n }\n\n // auto 模式:能力路由(缺能力 → 静态降级走 mesh;brep-only 无 mesh 可降 → 明确报错)\n if (requiredCapability && !supported.has(requiredCapability)) {\n if (!impls.mesh) {\n throw new MeshUnsupportedError(\n `E_MESH_UNSUPPORTED: current engine lacks capability '${requiredCapability}' and function has no mesh implementation`,\n currentStmt,\n )\n }\n return 'mesh'\n }\n\n if (impls.brep && inputs.every(hasBrep)) return 'brep'\n if (!impls.mesh) {\n throw new MeshUnsupportedError(\n 'E_MESH_UNSUPPORTED: input is not BREP and function has no mesh implementation',\n currentStmt,\n )\n }\n return 'mesh'\n}\n"]}
@@ -13,9 +13,9 @@
13
13
  * `` `${cdnBase}${pkg}@${version}/+esm` `` 直链,版本精确 pin 到已发布版本,保证
14
14
  * 可复现与缓存命中;release 产物用。
15
15
  *
16
- * 别名归一:脚本 specifier 常是短名(demo 的 `.fai.js` 写 `gear-lib-demo` /
17
- * `sheetmetal`),而 CDN 上是 npm 全名(`@faicad/gear-lib-demo`)。`aliases` 把
18
- * specifier 映到包名后再装载,与 node 侧 `CLI_SHORT_NAMES` 归一同一职责。
16
+ * 别名归一:脚本 specifier 常是短名(demo 的 `.fai.js` 写 `sheetmetal`),而 CDN 上
17
+ * 是 npm 全名(`@faicad/sheetmetal`)。`aliases` 把 specifier 映到包名后再装载,
18
+ * 与 node 侧 `CLI_SHORT_NAMES` 归一同一职责。
19
19
  *
20
20
  * `autoLiftFor` 是**同步**回调(`runtime.ts` 在装载后立即取值),所以逐库
21
21
  * `faijs.autoLift` 必须**预先**可用:主机从构建期产物 `lib-meta.json`
@@ -32,8 +32,6 @@ export declare const DEFAULT_CDN_BASE = "https://cdn.jsdelivr.net/npm/";
32
32
  export interface BrowserLibMeta {
33
33
  /** `package.json` 的 `faijs.autoLift` 外置字段(D3-autoLift)。 */
34
34
  autoLift?: boolean;
35
- /** Phase 2.11-②:`package.json` 的 `faijs.naming` 外置字段(库级 provenance 声明)。 */
36
- naming?: import('../topology/naming/lineage.js').Provenance;
37
35
  }
38
36
  /** `createBrowserLibLoader` 的选项。 */
39
37
  export interface CreateBrowserLibLoaderOptions {
@@ -41,7 +39,7 @@ export interface CreateBrowserLibLoaderOptions {
41
39
  cdnBase?: string;
42
40
  /** 方案 b:精确 pin 的 `packageName → version`(`versions.json`);提供即走直链。 */
43
41
  versions?: Record<string, string>;
44
- /** 别名表:脚本 import specifier → npm 包名(如 `gear-lib-demo` → `@faicad/gear-lib-demo`)。 */
42
+ /** 别名表:脚本 import specifier → npm 包名(如 `sheetmetal` → `@faicad/sheetmetal`)。 */
45
43
  aliases?: Record<string, string>;
46
44
  /** 允许装载的 **npm 包名**白名单;缺省不限制(生产建议显式给)。 */
47
45
  libs?: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"browser-lib-loader.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/browser-lib-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGxC,uDAAuD;AACvD,eAAO,MAAM,gBAAgB,kCAAkC,CAAA;AAE/D,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,OAAO,4BAA4B,EAAE,UAAU,CAAA;CACzD;AAED,oCAAoC;AACpC,MAAM,WAAW,6BAA6B;IAC5C,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACrC,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAChD,uEAAuE;IACvE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAED,oCAAoC;AACpC,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD;;;;OAIG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9B;AAOD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,GAAE,6BAAkC,GAAG,gBAAgB,CAiFjG"}
1
+ {"version":3,"file":"browser-lib-loader.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/browser-lib-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGxC,uDAAuD;AACvD,eAAO,MAAM,gBAAgB,kCAAkC,CAAA;AAE/D,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,oCAAoC;AACpC,MAAM,WAAW,6BAA6B;IAC5C,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACrC,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAChD,uEAAuE;IACvE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAED,oCAAoC;AACpC,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD;;;;OAIG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9B;AAOD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,GAAE,6BAAkC,GAAG,gBAAgB,CA6EjG"}
@@ -13,9 +13,9 @@
13
13
  * `` `${cdnBase}${pkg}@${version}/+esm` `` 直链,版本精确 pin 到已发布版本,保证
14
14
  * 可复现与缓存命中;release 产物用。
15
15
  *
16
- * 别名归一:脚本 specifier 常是短名(demo 的 `.fai.js` 写 `gear-lib-demo` /
17
- * `sheetmetal`),而 CDN 上是 npm 全名(`@faicad/gear-lib-demo`)。`aliases` 把
18
- * specifier 映到包名后再装载,与 node 侧 `CLI_SHORT_NAMES` 归一同一职责。
16
+ * 别名归一:脚本 specifier 常是短名(demo 的 `.fai.js` 写 `sheetmetal`),而 CDN 上
17
+ * 是 npm 全名(`@faicad/sheetmetal`)。`aliases` 把 specifier 映到包名后再装载,
18
+ * 与 node 侧 `CLI_SHORT_NAMES` 归一同一职责。
19
19
  *
20
20
  * `autoLiftFor` 是**同步**回调(`runtime.ts` 在装载后立即取值),所以逐库
21
21
  * `faijs.autoLift` 必须**预先**可用:主机从构建期产物 `lib-meta.json`
@@ -85,8 +85,6 @@ export function createBrowserLibLoader(opts = {}) {
85
85
  ...(opts.autoLift === undefined ? {} : { autoLift: opts.autoLift }),
86
86
  // 逐库 autoLift 优先于全局:未声明 → undefined → 回落全局 / runtime 推断式。
87
87
  autoLiftFor: (name) => meta[pkgOf(name)]?.autoLift,
88
- // Phase 2.11-②:逐库 naming(lib-meta.json 的 faijs.naming),未声明 → undefined → blanket 兜底。
89
- namingFor: (name) => meta[pkgOf(name)]?.naming,
90
88
  },
91
89
  prefetchMeta: async () => {
92
90
  if (!fetchImpl)
@@ -102,13 +100,10 @@ export function createBrowserLibLoader(opts = {}) {
102
100
  return;
103
101
  const pj = (await res.json());
104
102
  const lifted = pj.faijs?.autoLift;
105
- const naming = pj.faijs?.naming;
106
103
  const entry = {};
107
104
  if (typeof lifted === 'boolean')
108
105
  entry.autoLift = lifted;
109
- if (naming && typeof naming === 'object' && typeof naming.kind === 'string')
110
- entry.naming = naming;
111
- if (entry.autoLift !== undefined || entry.naming !== undefined)
106
+ if (entry.autoLift !== undefined)
112
107
  meta[pkg] = entry;
113
108
  }
114
109
  catch {