@faicad/faijs 0.13.1 → 0.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/dist/api/api-namespace.d.ts.map +1 -1
  2. package/dist/api/api-namespace.js +30 -4
  3. package/dist/api/api-namespace.js.map +1 -1
  4. package/dist/api/boolean.d.ts +19 -0
  5. package/dist/api/boolean.d.ts.map +1 -1
  6. package/dist/api/boolean.js +51 -10
  7. package/dist/api/boolean.js.map +1 -1
  8. package/dist/api/chamfer.d.ts.map +1 -1
  9. package/dist/api/chamfer.js +8 -7
  10. package/dist/api/chamfer.js.map +1 -1
  11. package/dist/api/compound-geom.d.ts +45 -0
  12. package/dist/api/compound-geom.d.ts.map +1 -0
  13. package/dist/api/compound-geom.js +85 -0
  14. package/dist/api/compound-geom.js.map +1 -0
  15. package/dist/api/compound.d.ts +2 -0
  16. package/dist/api/compound.d.ts.map +1 -1
  17. package/dist/api/compound.js +2 -0
  18. package/dist/api/compound.js.map +1 -1
  19. package/dist/api/copy.d.ts +1 -0
  20. package/dist/api/copy.d.ts.map +1 -1
  21. package/dist/api/copy.js +4 -2
  22. package/dist/api/copy.js.map +1 -1
  23. package/dist/api/edge-ref.d.ts +3 -2
  24. package/dist/api/edge-ref.d.ts.map +1 -1
  25. package/dist/api/edge-ref.js +10 -6
  26. package/dist/api/edge-ref.js.map +1 -1
  27. package/dist/api/engrave.d.ts.map +1 -1
  28. package/dist/api/engrave.js +1 -0
  29. package/dist/api/engrave.js.map +1 -1
  30. package/dist/api/extrude.d.ts.map +1 -1
  31. package/dist/api/extrude.js +131 -3
  32. package/dist/api/extrude.js.map +1 -1
  33. package/dist/api/face-ref.d.ts.map +1 -1
  34. package/dist/api/face-ref.js +7 -4
  35. package/dist/api/face-ref.js.map +1 -1
  36. package/dist/api/fai_drill.d.ts +1 -1
  37. package/dist/api/fai_drill.d.ts.map +1 -1
  38. package/dist/api/fai_drill.js +31 -18
  39. package/dist/api/fai_drill.js.map +1 -1
  40. package/dist/api/fai_extrude.d.ts +1 -1
  41. package/dist/api/fai_extrude.d.ts.map +1 -1
  42. package/dist/api/fai_extrude.js +2 -1
  43. package/dist/api/fai_extrude.js.map +1 -1
  44. package/dist/api/fai_split.d.ts +1 -1
  45. package/dist/api/fai_split.d.ts.map +1 -1
  46. package/dist/api/fai_split.js +2 -1
  47. package/dist/api/fai_split.js.map +1 -1
  48. package/dist/api/fillet.d.ts.map +1 -1
  49. package/dist/api/fillet.js +6 -5
  50. package/dist/api/fillet.js.map +1 -1
  51. package/dist/api/generated/operations.js +16 -16
  52. package/dist/api/generated/operations.js.map +1 -1
  53. package/dist/api/generated/script-face-manifest.d.ts.map +1 -1
  54. package/dist/api/generated/script-face-manifest.js +0 -1
  55. package/dist/api/generated/script-face-manifest.js.map +1 -1
  56. package/dist/api/generated/script-face.d.ts +1 -4
  57. package/dist/api/generated/script-face.d.ts.map +1 -1
  58. package/dist/api/generated/script-face.js +2 -3
  59. package/dist/api/generated/script-face.js.map +1 -1
  60. package/dist/api/generated/sketching.js +1 -1
  61. package/dist/api/generated/sketching.js.map +1 -1
  62. package/dist/api/generated/topology.d.ts +0 -48
  63. package/dist/api/generated/topology.d.ts.map +1 -1
  64. package/dist/api/generated/topology.js +20 -62
  65. package/dist/api/generated/topology.js.map +1 -1
  66. package/dist/api/import-brep.d.ts +36 -0
  67. package/dist/api/import-brep.d.ts.map +1 -0
  68. package/dist/api/import-brep.js +72 -0
  69. package/dist/api/import-brep.js.map +1 -0
  70. package/dist/api/import-step.d.ts +28 -0
  71. package/dist/api/import-step.d.ts.map +1 -0
  72. package/dist/api/import-step.js +57 -0
  73. package/dist/api/import-step.js.map +1 -0
  74. package/dist/api/index.d.ts +7 -2
  75. package/dist/api/index.d.ts.map +1 -1
  76. package/dist/api/index.js +19 -5
  77. package/dist/api/index.js.map +1 -1
  78. package/dist/api/internal/compat-op.d.ts +2 -0
  79. package/dist/api/internal/compat-op.d.ts.map +1 -1
  80. package/dist/api/internal/compat-op.js +10 -2
  81. package/dist/api/internal/compat-op.js.map +1 -1
  82. package/dist/api/knurl.d.ts.map +1 -1
  83. package/dist/api/knurl.js +1 -0
  84. package/dist/api/knurl.js.map +1 -1
  85. package/dist/api/load.d.ts +3 -1
  86. package/dist/api/load.d.ts.map +1 -1
  87. package/dist/api/load.js +3 -1
  88. package/dist/api/load.js.map +1 -1
  89. package/dist/api/pattern.d.ts +32 -0
  90. package/dist/api/pattern.d.ts.map +1 -0
  91. package/dist/api/pattern.js +121 -0
  92. package/dist/api/pattern.js.map +1 -0
  93. package/dist/api/place.d.ts +35 -0
  94. package/dist/api/place.d.ts.map +1 -0
  95. package/dist/api/place.js +113 -0
  96. package/dist/api/place.js.map +1 -0
  97. package/dist/api/primitives.d.ts.map +1 -1
  98. package/dist/api/primitives.js +10 -3
  99. package/dist/api/primitives.js.map +1 -1
  100. package/dist/api/screw.d.ts.map +1 -1
  101. package/dist/api/screw.js +1 -0
  102. package/dist/api/screw.js.map +1 -1
  103. package/dist/api/sdf.d.ts.map +1 -1
  104. package/dist/api/sdf.js +1 -0
  105. package/dist/api/sdf.js.map +1 -1
  106. package/dist/api/sketch.d.ts.map +1 -1
  107. package/dist/api/sketch.js +1 -0
  108. package/dist/api/sketch.js.map +1 -1
  109. package/dist/api/split.d.ts +31 -0
  110. package/dist/api/split.d.ts.map +1 -0
  111. package/dist/api/split.js +96 -0
  112. package/dist/api/split.js.map +1 -0
  113. package/dist/api/surface/arg-spec.d.ts +9 -0
  114. package/dist/api/surface/arg-spec.d.ts.map +1 -1
  115. package/dist/api/surface/arg-spec.js +49 -30
  116. package/dist/api/surface/arg-spec.js.map +1 -1
  117. package/dist/api/svgExtrude.d.ts.map +1 -1
  118. package/dist/api/svgExtrude.js +1 -0
  119. package/dist/api/svgExtrude.js.map +1 -1
  120. package/dist/api/text.d.ts.map +1 -1
  121. package/dist/api/text.js +1 -0
  122. package/dist/api/text.js.map +1 -1
  123. package/dist/api/topo-resolve.d.ts.map +1 -1
  124. package/dist/api/topo-resolve.js +65 -3
  125. package/dist/api/topo-resolve.js.map +1 -1
  126. package/dist/api/transform.d.ts +4 -0
  127. package/dist/api/transform.d.ts.map +1 -1
  128. package/dist/api/transform.js +44 -12
  129. package/dist/api/transform.js.map +1 -1
  130. package/dist/brep/brep-ops.d.ts +34 -1
  131. package/dist/brep/brep-ops.d.ts.map +1 -1
  132. package/dist/brep/brep-ops.js +62 -22
  133. package/dist/brep/brep-ops.js.map +1 -1
  134. package/dist/brep/engine/adapters/brep-mock.d.ts.map +1 -1
  135. package/dist/brep/engine/adapters/brep-mock.js +8 -0
  136. package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
  137. package/dist/brep/engine/adapters/brepkit.d.ts.map +1 -1
  138. package/dist/brep/engine/adapters/brepkit.js +6 -1
  139. package/dist/brep/engine/adapters/brepkit.js.map +1 -1
  140. package/dist/brep/engine/adapters/occt.d.ts.map +1 -1
  141. package/dist/brep/engine/adapters/occt.js +24 -1
  142. package/dist/brep/engine/adapters/occt.js.map +1 -1
  143. package/dist/brep/engine/primitives.d.ts +17 -0
  144. package/dist/brep/engine/primitives.d.ts.map +1 -1
  145. package/dist/brep/engine/primitives.js.map +1 -1
  146. package/dist/brep/engine/types.d.ts +49 -6
  147. package/dist/brep/engine/types.d.ts.map +1 -1
  148. package/dist/brep/engine/types.js.map +1 -1
  149. package/dist/brep/export/step.d.ts.map +1 -1
  150. package/dist/brep/export/step.js +6 -1
  151. package/dist/brep/export/step.js.map +1 -1
  152. package/dist/brep/face-evolution.d.ts +78 -8
  153. package/dist/brep/face-evolution.d.ts.map +1 -1
  154. package/dist/brep/face-evolution.js +130 -17
  155. package/dist/brep/face-evolution.js.map +1 -1
  156. package/dist/brepkit-kernel/brepkitKernel.d.ts +1 -1
  157. package/dist/brepkit-kernel/brepkitKernel.d.ts.map +1 -1
  158. package/dist/brepkit-kernel/brepkitKernel.js +27 -1
  159. package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
  160. package/dist/browser.d.ts +0 -2
  161. package/dist/browser.d.ts.map +1 -1
  162. package/dist/browser.js +2 -2
  163. package/dist/browser.js.map +1 -1
  164. package/dist/cad-runtime/admit-compat-lib.d.ts +19 -1
  165. package/dist/cad-runtime/admit-compat-lib.d.ts.map +1 -1
  166. package/dist/cad-runtime/admit-compat-lib.js +21 -1
  167. package/dist/cad-runtime/admit-compat-lib.js.map +1 -1
  168. package/dist/cad-runtime/backend-dispatch.d.ts +44 -3
  169. package/dist/cad-runtime/backend-dispatch.d.ts.map +1 -1
  170. package/dist/cad-runtime/backend-dispatch.js +46 -3
  171. package/dist/cad-runtime/backend-dispatch.js.map +1 -1
  172. package/dist/cad-runtime/browser-lib-loader.d.ts +2 -0
  173. package/dist/cad-runtime/browser-lib-loader.d.ts.map +1 -1
  174. package/dist/cad-runtime/browser-lib-loader.js +9 -1
  175. package/dist/cad-runtime/browser-lib-loader.js.map +1 -1
  176. package/dist/cad-runtime/direct-executor.d.ts.map +1 -1
  177. package/dist/cad-runtime/direct-executor.js +14 -4
  178. package/dist/cad-runtime/direct-executor.js.map +1 -1
  179. package/dist/cad-runtime/module-registry.d.ts +3 -1
  180. package/dist/cad-runtime/module-registry.d.ts.map +1 -1
  181. package/dist/cad-runtime/module-registry.js +13 -1
  182. package/dist/cad-runtime/module-registry.js.map +1 -1
  183. package/dist/cad-runtime/ports.d.ts +7 -0
  184. package/dist/cad-runtime/ports.d.ts.map +1 -1
  185. package/dist/cad-runtime/ports.js.map +1 -1
  186. package/dist/cad-runtime/runtime-concurrent-error.d.ts +38 -0
  187. package/dist/cad-runtime/runtime-concurrent-error.d.ts.map +1 -0
  188. package/dist/cad-runtime/runtime-concurrent-error.js +43 -0
  189. package/dist/cad-runtime/runtime-concurrent-error.js.map +1 -0
  190. package/dist/cad-runtime/runtime.d.ts +54 -2
  191. package/dist/cad-runtime/runtime.d.ts.map +1 -1
  192. package/dist/cad-runtime/runtime.js +186 -10
  193. package/dist/cad-runtime/runtime.js.map +1 -1
  194. package/dist/define-op.d.ts +22 -0
  195. package/dist/define-op.d.ts.map +1 -1
  196. package/dist/define-op.js +82 -12
  197. package/dist/define-op.js.map +1 -1
  198. package/dist/fcstd/attachment.d.ts +72 -0
  199. package/dist/fcstd/attachment.d.ts.map +1 -0
  200. package/dist/fcstd/attachment.js +93 -0
  201. package/dist/fcstd/attachment.js.map +1 -0
  202. package/dist/fcstd/build-fai-zip.d.ts +11 -0
  203. package/dist/fcstd/build-fai-zip.d.ts.map +1 -1
  204. package/dist/fcstd/build-fai-zip.js +21 -8
  205. package/dist/fcstd/build-fai-zip.js.map +1 -1
  206. package/dist/fcstd/cli.d.ts +3 -0
  207. package/dist/fcstd/cli.d.ts.map +1 -0
  208. package/dist/fcstd/cli.js +37 -0
  209. package/dist/fcstd/cli.js.map +1 -0
  210. package/dist/fcstd/codegen.d.ts +23 -1
  211. package/dist/fcstd/codegen.d.ts.map +1 -1
  212. package/dist/fcstd/codegen.js +159 -48
  213. package/dist/fcstd/codegen.js.map +1 -1
  214. package/dist/fcstd/container.d.ts +16 -1
  215. package/dist/fcstd/container.d.ts.map +1 -1
  216. package/dist/fcstd/container.js +12 -1
  217. package/dist/fcstd/container.js.map +1 -1
  218. package/dist/fcstd/contour.d.ts +9 -1
  219. package/dist/fcstd/contour.d.ts.map +1 -1
  220. package/dist/fcstd/contour.js +28 -18
  221. package/dist/fcstd/contour.js.map +1 -1
  222. package/dist/fcstd/convert.d.ts +31 -2
  223. package/dist/fcstd/convert.d.ts.map +1 -1
  224. package/dist/fcstd/convert.js +73 -22
  225. package/dist/fcstd/convert.js.map +1 -1
  226. package/dist/fcstd/document.d.ts +8 -1
  227. package/dist/fcstd/document.d.ts.map +1 -1
  228. package/dist/fcstd/document.js +4 -1
  229. package/dist/fcstd/document.js.map +1 -1
  230. package/dist/fcstd/expressions.d.ts +14 -1
  231. package/dist/fcstd/expressions.d.ts.map +1 -1
  232. package/dist/fcstd/expressions.js +11 -1
  233. package/dist/fcstd/expressions.js.map +1 -1
  234. package/dist/fcstd/external-geo.d.ts +27 -2
  235. package/dist/fcstd/external-geo.d.ts.map +1 -1
  236. package/dist/fcstd/external-geo.js +23 -2
  237. package/dist/fcstd/external-geo.js.map +1 -1
  238. package/dist/fcstd/feature-translate.d.ts +85 -3
  239. package/dist/fcstd/feature-translate.d.ts.map +1 -1
  240. package/dist/fcstd/feature-translate.js +189 -9
  241. package/dist/fcstd/feature-translate.js.map +1 -1
  242. package/dist/fcstd/index.d.ts +23 -0
  243. package/dist/fcstd/index.d.ts.map +1 -0
  244. package/dist/fcstd/index.js +19 -0
  245. package/dist/fcstd/index.js.map +1 -0
  246. package/dist/fcstd/placement.d.ts +49 -6
  247. package/dist/fcstd/placement.d.ts.map +1 -1
  248. package/dist/fcstd/placement.js +46 -6
  249. package/dist/fcstd/placement.js.map +1 -1
  250. package/dist/fcstd/planegcs-backend.d.ts +16 -1
  251. package/dist/fcstd/planegcs-backend.d.ts.map +1 -1
  252. package/dist/fcstd/planegcs-backend.js +16 -1
  253. package/dist/fcstd/planegcs-backend.js.map +1 -1
  254. package/dist/fcstd/sketch-parse.d.ts +43 -0
  255. package/dist/fcstd/sketch-parse.d.ts.map +1 -1
  256. package/dist/fcstd/sketch-parse.js +26 -0
  257. package/dist/fcstd/sketch-parse.js.map +1 -1
  258. package/dist/fcstd/sketch-solver.d.ts +20 -2
  259. package/dist/fcstd/sketch-solver.d.ts.map +1 -1
  260. package/dist/fcstd/sketch-solver.js +6 -1
  261. package/dist/fcstd/sketch-solver.js.map +1 -1
  262. package/dist/fcstd/sketch-verify.d.ts +19 -1
  263. package/dist/fcstd/sketch-verify.d.ts.map +1 -1
  264. package/dist/fcstd/sketch-verify.js +14 -1
  265. package/dist/fcstd/sketch-verify.js.map +1 -1
  266. package/dist/fcstd/structural-types.d.ts +83 -0
  267. package/dist/fcstd/structural-types.d.ts.map +1 -0
  268. package/dist/fcstd/structural-types.js +116 -0
  269. package/dist/fcstd/structural-types.js.map +1 -0
  270. package/dist/fcstd/unpack.d.ts +21 -2
  271. package/dist/fcstd/unpack.d.ts.map +1 -1
  272. package/dist/fcstd/unpack.js +11 -2
  273. package/dist/fcstd/unpack.js.map +1 -1
  274. package/dist/fcstd-convert.d.ts +30 -0
  275. package/dist/fcstd-convert.d.ts.map +1 -0
  276. package/dist/fcstd-convert.js +27 -0
  277. package/dist/fcstd-convert.js.map +1 -0
  278. package/dist/index.d.ts +1 -0
  279. package/dist/index.d.ts.map +1 -1
  280. package/dist/index.js.map +1 -1
  281. package/dist/lang/determinism-scanner.d.ts +62 -0
  282. package/dist/lang/determinism-scanner.d.ts.map +1 -0
  283. package/dist/lang/determinism-scanner.js +619 -0
  284. package/dist/lang/determinism-scanner.js.map +1 -0
  285. package/dist/lang/symbol-table.generated.d.ts +7 -3
  286. package/dist/lang/symbol-table.generated.d.ts.map +1 -1
  287. package/dist/lang/symbol-table.generated.js +7 -3
  288. package/dist/lang/symbol-table.generated.js.map +1 -1
  289. package/dist/mesh/index.d.ts.map +1 -1
  290. package/dist/mesh/index.js +3 -2
  291. package/dist/mesh/index.js.map +1 -1
  292. package/dist/node-host/cli.d.ts.map +1 -1
  293. package/dist/node-host/cli.js +56 -2
  294. package/dist/node-host/cli.js.map +1 -1
  295. package/dist/runtime-state.d.ts +18 -6
  296. package/dist/runtime-state.d.ts.map +1 -1
  297. package/dist/runtime-state.js +9 -1
  298. package/dist/runtime-state.js.map +1 -1
  299. package/dist/shape.d.ts +15 -0
  300. package/dist/shape.d.ts.map +1 -1
  301. package/dist/shape.js +26 -3
  302. package/dist/shape.js.map +1 -1
  303. package/dist/topology/naming/build-naming.d.ts +14 -30
  304. package/dist/topology/naming/build-naming.d.ts.map +1 -1
  305. package/dist/topology/naming/build-naming.js +21 -54
  306. package/dist/topology/naming/build-naming.js.map +1 -1
  307. package/dist/topology/naming/capture-topo-ref.d.ts.map +1 -1
  308. package/dist/topology/naming/capture-topo-ref.js +5 -0
  309. package/dist/topology/naming/capture-topo-ref.js.map +1 -1
  310. package/dist/topology/naming/index.d.ts +3 -0
  311. package/dist/topology/naming/index.d.ts.map +1 -1
  312. package/dist/topology/naming/index.js +3 -0
  313. package/dist/topology/naming/index.js.map +1 -1
  314. package/dist/topology/naming/lineage-resolve.d.ts +80 -0
  315. package/dist/topology/naming/lineage-resolve.d.ts.map +1 -0
  316. package/dist/topology/naming/lineage-resolve.js +120 -0
  317. package/dist/topology/naming/lineage-resolve.js.map +1 -0
  318. package/dist/topology/naming/lineage.d.ts +349 -0
  319. package/dist/topology/naming/lineage.d.ts.map +1 -0
  320. package/dist/topology/naming/lineage.js +398 -0
  321. package/dist/topology/naming/lineage.js.map +1 -0
  322. package/dist/topology/naming/migrate.d.ts +41 -0
  323. package/dist/topology/naming/migrate.d.ts.map +1 -0
  324. package/dist/topology/naming/migrate.js +88 -0
  325. package/dist/topology/naming/migrate.js.map +1 -0
  326. package/dist/topology/naming/role-name.d.ts +176 -0
  327. package/dist/topology/naming/role-name.d.ts.map +1 -0
  328. package/dist/topology/naming/role-name.js +344 -0
  329. package/dist/topology/naming/role-name.js.map +1 -0
  330. package/dist/topology/naming/roles.d.ts +20 -22
  331. package/dist/topology/naming/roles.d.ts.map +1 -1
  332. package/dist/topology/naming/roles.js +51 -49
  333. package/dist/topology/naming/roles.js.map +1 -1
  334. package/dist/topology/naming/types.d.ts +65 -18
  335. package/dist/topology/naming/types.d.ts.map +1 -1
  336. package/dist/topology/naming/types.js.map +1 -1
  337. package/dist/weapp.d.ts +22 -0
  338. package/dist/weapp.d.ts.map +1 -0
  339. package/dist/weapp.js +23 -0
  340. package/dist/weapp.js.map +1 -0
  341. package/package.json +18 -5
@@ -48,6 +48,7 @@ export const ARG_SPEC = [
48
48
  params: ['majorRadius', 'minorRadius', 'options'],
49
49
  formClass: 'A',
50
50
  scriptFace: true,
51
+ naming: { kind: 'unmodeled', reason: 'construct vocabulary pending Phase 3' },
51
52
  },
52
53
  {
53
54
  name: 'fuse',
@@ -60,6 +61,7 @@ export const ARG_SPEC = [
60
61
  params: ['a', 'b', 'options'],
61
62
  formClass: 'A',
62
63
  scriptFace: true,
64
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
63
65
  },
64
66
  {
65
67
  name: 'getBounds',
@@ -1425,30 +1427,35 @@ export const ARG_SPEC = [
1425
1427
  reason: 'faijs 侧 cad.extrude 由手写平台 op 覆盖(api/extrude.ts:对象形态 + upTo 拉伸到面/到支持体端面)。本投影只作为「长度形态」的引擎被手写 op 委托调用(vendored 是唯一拉伸引擎,既有 cad.extrude(face,[x,y,z]) 语义零漂移),生成模块符号不直接进 cad 命名空间 by design(同 fillet 口径)。',
1426
1428
  args: 'extrude(face: Shape, height: number|Vec3) → Shape|extrude(face: Shape, params: { length? | upTo, normal?, mode?, baseFeature?, offset? }) → Shape',
1427
1429
  params: ['face', 'height'], formClass: 'A',
1430
+ naming: { kind: 'construct', newFaces: { via: 'explicit', vocab: [{ kind: 'semantic', name: 'top' }, { kind: 'semantic', name: 'bottom' }] } },
1428
1431
  },
1429
1432
  {
1430
1433
  name: 'revolve', source: 'operations/api.js#revolve', kind: 'brep-op', module: 'operations',
1431
1434
  geometryArgs: [0], reason: 'shapeable 面 → Result(Shape3D),brep-op',
1432
1435
  args: 'revolve(face: Shape, options?: RevolveOptions): Shape',
1433
1436
  params: ['face', 'options'], formClass: 'A',
1437
+ naming: { kind: 'construct', newFaces: { via: 'explicit', vocab: [{ kind: 'semantic', name: 'top' }, { kind: 'semantic', name: 'bottom' }, { kind: 'wall', index: 0 }] } },
1434
1438
  },
1435
1439
  {
1436
1440
  name: 'sweep', source: 'operations/extrudeFns.js#sweep', kind: 'brep-op', module: 'operations',
1437
1441
  geometryArgs: [0, 1], reason: 'wire + spine → Result(Shape3D|tuple),默认单产物,brep-op',
1438
1442
  args: 'sweep(wire: Shape, spine: Shape, config?: SweepOptions, shellMode?: boolean): Shape',
1439
1443
  params: ['wire', 'spine', 'config', 'shellMode'], formClass: 'A',
1444
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
1440
1445
  },
1441
1446
  {
1442
1447
  name: 'complexExtrude', source: 'operations/extrudeFns.js#complexExtrude', kind: 'brep-op', module: 'operations',
1443
1448
  geometryArgs: [0], reason: 'wire → Result(Shape3D),brep-op',
1444
1449
  args: 'complexExtrude(wire: Shape, center: Vec3, normal: Vec3, profile?: ExtrusionProfile): Shape',
1445
1450
  params: ['wire', 'center', 'normal', 'profile'], formClass: 'A',
1451
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
1446
1452
  },
1447
1453
  {
1448
1454
  name: 'twistExtrude', source: 'operations/extrudeFns.js#twistExtrude', kind: 'brep-op', module: 'operations',
1449
1455
  geometryArgs: [0], reason: 'wire → Result(Shape3D),brep-op',
1450
1456
  args: 'twistExtrude(wire: Shape, angleDegrees: number, center: Vec3, normal: Vec3): Shape',
1451
1457
  params: ['wire', 'angleDegrees', 'center', 'normal'], formClass: 'A',
1458
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
1452
1459
  },
1453
1460
  {
1454
1461
  name: 'linearPattern', source: 'operations/patternFns.js#linearPattern', kind: 'brep-op', module: 'operations',
@@ -1456,6 +1463,7 @@ export const ARG_SPEC = [
1456
1463
  args: 'linearPattern(shape: Shape, direction: Vec3, count: number, spacing: number): Shape',
1457
1464
  params: ['shape', 'direction', 'count', 'spacing'], formClass: 'A',
1458
1465
  scriptFace: true,
1466
+ naming: { kind: 'replicate', k: 0 },
1459
1467
  },
1460
1468
  {
1461
1469
  name: 'circularPattern', source: 'operations/patternFns.js#circularPattern', kind: 'brep-op', module: 'operations',
@@ -1463,6 +1471,7 @@ export const ARG_SPEC = [
1463
1471
  args: 'circularPattern(shape: Shape, axis: Vec3, count: number, fullAngle?: number, center?: Vec3): Shape',
1464
1472
  params: ['shape', 'axis', 'count', 'fullAngle', 'center'], formClass: 'A',
1465
1473
  scriptFace: true,
1474
+ naming: { kind: 'replicate', k: 0 },
1466
1475
  },
1467
1476
  {
1468
1477
  name: 'gridPattern', source: 'operations/patternFns.js#gridPattern', kind: 'brep-op', module: 'operations',
@@ -1470,12 +1479,14 @@ export const ARG_SPEC = [
1470
1479
  args: 'gridPattern(shape: Shape, directionX: Vec3, directionY: Vec3, countX: number, countY: number, spacingX: number, spacingY: number): Shape',
1471
1480
  params: ['shape', 'directionX', 'directionY', 'countX', 'countY', 'spacingX', 'spacingY'], formClass: 'A',
1472
1481
  scriptFace: true,
1482
+ naming: { kind: 'replicate', k: 0 },
1473
1483
  },
1474
1484
  {
1475
1485
  name: 'roof', source: 'operations/roofFns.js#roof', kind: 'brep-op', module: 'operations',
1476
1486
  geometryArgs: [0], reason: 'wire → Result(ValidSolid)→solid,brep-op',
1477
1487
  args: 'roof(wire: Shape, options?: RoofOptions): Shape',
1478
1488
  params: ['wire', 'options'], formClass: 'A',
1489
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
1479
1490
  },
1480
1491
  {
1481
1492
  name: 'drill', source: 'operations/compoundOpsFns.js#drill', kind: 'brep-op', module: 'operations',
@@ -1483,6 +1494,7 @@ export const ARG_SPEC = [
1483
1494
  args: 'drill(shape: Shape, options: DrillOptions): Shape',
1484
1495
  params: ['shape', 'options'], formClass: 'A',
1485
1496
  scriptFace: true,
1497
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
1486
1498
  },
1487
1499
  {
1488
1500
  name: 'pocket', source: 'operations/compoundOpsFns.js#pocket', kind: 'brep-op', module: 'operations',
@@ -1490,6 +1502,7 @@ export const ARG_SPEC = [
1490
1502
  args: 'pocket(shape: Shape, options: PocketOptions): Shape',
1491
1503
  params: ['shape', 'options'], formClass: 'A',
1492
1504
  scriptFace: true,
1505
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
1493
1506
  },
1494
1507
  {
1495
1508
  name: 'boss', source: 'operations/compoundOpsFns.js#boss', kind: 'brep-op', module: 'operations',
@@ -1497,6 +1510,7 @@ export const ARG_SPEC = [
1497
1510
  args: 'boss(shape: Shape, options: BossOptions): Shape',
1498
1511
  params: ['shape', 'options'], formClass: 'A',
1499
1512
  scriptFace: true,
1513
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
1500
1514
  },
1501
1515
  {
1502
1516
  name: 'mirrorJoin', source: 'operations/compoundOpsFns.js#mirrorJoin', kind: 'brep-op', module: 'operations',
@@ -1504,6 +1518,7 @@ export const ARG_SPEC = [
1504
1518
  args: 'mirrorJoin(shape: Shape, options?: MirrorJoinOptions): Shape',
1505
1519
  params: ['shape', 'options'], formClass: 'A',
1506
1520
  scriptFace: true,
1521
+ naming: { kind: 'replicate', k: 2 },
1507
1522
  },
1508
1523
  {
1509
1524
  name: 'rectangularPattern', source: 'operations/compoundOpsFns.js#rectangularPattern', kind: 'brep-op', module: 'operations',
@@ -1511,12 +1526,14 @@ export const ARG_SPEC = [
1511
1526
  args: 'rectangularPattern(shape: Shape, options: RectangularPatternOptions): Shape',
1512
1527
  params: ['shape', 'options'], formClass: 'A',
1513
1528
  scriptFace: true,
1529
+ naming: { kind: 'replicate', k: 0 },
1514
1530
  },
1515
1531
  {
1516
1532
  name: 'thread', source: 'operations/threadFns.js#thread', kind: 'brep-op', module: 'operations',
1517
1533
  geometryArgs: [], reason: '仅参数构造 → Result(Shape3D),单产物,brep-op',
1518
1534
  args: 'thread(options: ThreadOptions): Shape',
1519
1535
  params: ['options'], formClass: 'B1',
1536
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
1520
1537
  },
1521
1538
  {
1522
1539
  name: 'convexHull', source: 'operations/convexHullFns.js#convexHull', kind: 'brep-op', module: 'operations',
@@ -1524,6 +1541,7 @@ export const ARG_SPEC = [
1524
1541
  args: 'convexHull(points: Vec3[]): Shape',
1525
1542
  params: ['points'], formClass: 'A',
1526
1543
  scriptFace: true,
1544
+ naming: { kind: 'unmodeled', reason: 'construct vocabulary pending Phase 3' },
1527
1545
  },
1528
1546
  {
1529
1547
  // ---- skip:状态 DSL/多产物/数组入参/host IO/kernel 入参 ----
@@ -2215,6 +2233,7 @@ export const ARG_SPEC = [
2215
2233
  returnsResult: false,
2216
2234
  params: ['xLength', 'yLength', 'zLength'], formClass: 'A',
2217
2235
  scriptFace: true,
2236
+ naming: { kind: 'unmodeled', reason: 'construct vocabulary pending Phase 3' },
2218
2237
  },
2219
2238
  // 47 × skip(状态化草图/绘图 DSL 族)
2220
2239
  {
@@ -2472,32 +2491,23 @@ export const ARG_SPEC = [
2472
2491
  // 投影到 brepjs 契约,但**不投 scriptFace**(faijs 侧由手写 dual-op 覆盖,生成模块
2473
2492
  // 符号为孤儿 by design)。
2474
2493
  {
2475
- name: 'box', source: 'topology/primitiveFns.js#box', kind: 'brep-op',
2476
- geometryArgs: [], returnsResult: false,
2494
+ name: 'box', source: 'topology/primitiveFns.js#box', kind: 'skip',
2477
2495
  args: 'box(width: number, depth: number, height: number, options?: BoxOptions): Shape',
2478
- reason: 'faijs 侧由手写 dual-op 覆盖(§4.1 A 决策,mesh+brep 双实现);本条目仅投影到 vendored 盒契约,生成模块符号为孤儿 by design,scriptFace 不投(避免与手写 box 撞名)。',
2479
- params: ['width', 'depth', 'height', 'options'], formClass: 'A',
2480
- scriptFace: false,
2496
+ reason: 'overridden by handwritten api/primitives.ts (box dual-op, mesh+brep)',
2481
2497
  },
2482
2498
  {
2483
2499
  name: 'sphere', source: 'topology/primitiveFns.js#sphere', kind: 'skip',
2484
2500
  reason: 'faijs 同名 sphere(§5.1 双形态同 box),生成层不重复投影',
2485
2501
  },
2486
2502
  {
2487
- name: 'cylinder', source: 'topology/primitiveFns.js#cylinder', kind: 'brep-op',
2488
- geometryArgs: [], returnsResult: false,
2503
+ name: 'cylinder', source: 'topology/primitiveFns.js#cylinder', kind: 'skip',
2489
2504
  args: 'cylinder(radius: number, height: number, options?: CylinderOptions): Shape',
2490
- reason: 'faijs 侧由手写 dual-op 覆盖(§4.3 A 决策,mesh+brep 双实现,at/centered BASE 语义);本条目仅投影到 vendored 圆柱契约,生成模块符号为孤儿 by design,scriptFace 不投(避免与手写 cylinder 撞名)。',
2491
- params: ['radius', 'height', 'options'], formClass: 'A',
2492
- scriptFace: false,
2505
+ reason: 'overridden by handwritten api/primitives.ts (cylinder dual-op, mesh+brep)',
2493
2506
  },
2494
2507
  {
2495
- name: 'cone', source: 'topology/primitiveFns.js#cone', kind: 'brep-op',
2496
- geometryArgs: [], returnsResult: false,
2508
+ name: 'cone', source: 'topology/primitiveFns.js#cone', kind: 'skip',
2497
2509
  args: 'cone(radiusBottom: number, radiusTop: number, height: number, options?: ConeOptions): Shape',
2498
- reason: 'faijs 侧由手写 dual-op 覆盖(§4.1 P 决策,mesh+brep 双实现,at/centered BASE 语义);本条目仅投影到 vendored 圆锥契约,生成模块符号为孤儿 by design,scriptFace 不投(避免与手写 cone 撞名)。',
2499
- params: ['radiusBottom', 'radiusTop', 'height', 'options'], formClass: 'A',
2500
- scriptFace: false,
2510
+ reason: 'overridden by handwritten api/primitives.ts (cone dual-op, mesh+brep)',
2501
2511
  },
2502
2512
  {
2503
2513
  name: 'ellipsoid', source: 'topology/primitiveFns.js#ellipsoid', kind: 'brep-op',
@@ -2506,6 +2516,7 @@ export const ARG_SPEC = [
2506
2516
  reason: '纯数值整件构造(rx/ry/rz → ValidSolid),brep-op',
2507
2517
  params: ['rx', 'ry', 'rz', 'options'], formClass: 'A',
2508
2518
  scriptFace: true,
2519
+ naming: { kind: 'unmodeled', reason: 'construct vocabulary pending Phase 3' },
2509
2520
  },
2510
2521
  {
2511
2522
  name: 'addHoles', source: 'topology/primitiveFns.js#addHoles', kind: 'skip',
@@ -2606,14 +2617,12 @@ export const ARG_SPEC = [
2606
2617
  + '3d_editor UI 不得暴露;将来暴露前必须先补 mesh 实现。',
2607
2618
  params: ['shape', 'angle', 'options'], formClass: 'A',
2608
2619
  scriptFace: true,
2620
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
2609
2621
  },
2610
2622
  {
2611
- name: 'scale', source: 'topology/api.js#scale', kind: 'brep-op',
2612
- geometryArgs: [0], returnsResult: false,
2623
+ name: 'scale', source: 'topology/api.js#scale', kind: 'skip',
2613
2624
  args: 'scale(shape: Shape, factor: number, options?: { center?: Vec3 }): Shape',
2614
- reason: 'faijs 侧由手写 dual-op 覆盖(§4.6 裁决 4/2:scale = vendored 等比 + center 不动点,mesh+brep 双实现);本条目仅投影到 vendored scale 契约,生成模块符号为孤儿 by design,scriptFace 不投(避免与手写 scale 撞名)。',
2615
- params: ['shape', 'factor', 'options'], formClass: 'A',
2616
- scriptFace: false,
2625
+ reason: 'overridden by handwritten api/transform.ts (scale dual-op, mesh+brep)',
2617
2626
  },
2618
2627
  {
2619
2628
  name: 'mirror', source: 'topology/api.js#mirror', kind: 'brep-op',
@@ -2622,6 +2631,7 @@ export const ARG_SPEC = [
2622
2631
  reason: 'faijs 无同名 mirror,整件反射 → brep-op',
2623
2632
  params: ['shape', 'options'], formClass: 'A',
2624
2633
  scriptFace: true,
2634
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
2625
2635
  },
2626
2636
  {
2627
2637
  name: 'clone', source: 'topology/api.js#clone', kind: 'brep-op',
@@ -2630,6 +2640,7 @@ export const ARG_SPEC = [
2630
2640
  reason: 'faijs 用 copy(不同名),整件克隆(Result<T>)→ brep-op',
2631
2641
  params: ['shape'], formClass: 'A',
2632
2642
  scriptFace: true,
2643
+ naming: { kind: 'identity' },
2633
2644
  },
2634
2645
  {
2635
2646
  name: 'applyMatrix', source: 'topology/api.js#applyMatrix', kind: 'brep-op',
@@ -2638,6 +2649,7 @@ export const ARG_SPEC = [
2638
2649
  reason: 'faijs 用 applyTransform(不同名),整件矩阵变换 → brep-op',
2639
2650
  params: ['shape', 'matrix'], formClass: 'A',
2640
2651
  scriptFace: true,
2652
+ naming: { kind: 'identity' },
2641
2653
  },
2642
2654
  {
2643
2655
  name: 'transformCopy', source: 'topology/api.js#transformCopy', kind: 'brep-op',
@@ -2646,6 +2658,7 @@ export const ARG_SPEC = [
2646
2658
  reason: 'faijs 无同名,克隆+复合变换 → brep-op',
2647
2659
  params: ['shape', 'composed'], formClass: 'A',
2648
2660
  scriptFace: true,
2661
+ naming: { kind: 'identity' },
2649
2662
  },
2650
2663
  {
2651
2664
  name: 'locate', source: 'topology/api.js#locate', kind: 'brep-op',
@@ -2654,18 +2667,20 @@ export const ARG_SPEC = [
2654
2667
  reason: 'faijs 无同名,整件定位变换 → brep-op',
2655
2668
  params: ['shape', 'placement'], formClass: 'A',
2656
2669
  scriptFace: true,
2670
+ naming: { kind: 'identity' },
2657
2671
  },
2658
2672
  {
2659
2673
  name: 'composeTransforms', source: 'topology/api.js#composeTransforms', kind: 'pure',
2660
2674
  reason: '变换函数组合器(纯数据,无 Shape 参数)',
2661
2675
  },
2662
2676
  {
2663
- name: 'cut', source: 'topology/api.js#cut', kind: 'brep-op',
2677
+ name: 'cut', source: 'topology/api.js#cut', kind: 'skip',
2664
2678
  geometryArgs: [0, 1], returnsResult: true,
2665
2679
  args: 'cut(base: Shape, tool: Shape, options?: BooleanOptions): Shape',
2666
- reason: 'faijs 用 subtract(不同名),布尔减 → brep-op',
2680
+ reason: 'overridden by handwritten boolean.ts:cut (Phase 3 roleTable propagation)',
2667
2681
  params: ['base', 'tool', 'options'], formClass: 'A',
2668
2682
  scriptFace: true,
2683
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
2669
2684
  },
2670
2685
  {
2671
2686
  name: 'fuseAll', source: 'topology/api.js#fuseAll', kind: 'skip',
@@ -2686,8 +2701,8 @@ export const ARG_SPEC = [
2686
2701
  name: 'section', source: 'topology/api.js#section', kind: 'brep-op',
2687
2702
  geometryArgs: [0], returnsResult: true,
2688
2703
  args: 'section(shape: Shape, plane: PlaneInput): Shape',
2689
- reason: 'faijs 无同名截面查询(平面入参非几何)→ brep-op',
2690
2704
  params: ['shape', 'plane'], formClass: 'A',
2705
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
2691
2706
  },
2692
2707
  {
2693
2708
  name: 'sectionToFace', source: 'topology/api.js#sectionToFace', kind: 'skip',
@@ -2700,18 +2715,16 @@ export const ARG_SPEC = [
2700
2715
  reason: 'faijs split 已更名 fai_split,上游工具切件 split 空出 → brep-op(§5.1 D-SPLIT;tools 暂登记几何首参,数组切件经 faijs 侧适配)',
2701
2716
  params: ['shape', 'tools'], formClass: 'A',
2702
2717
  scriptFace: true,
2718
+ naming: { kind: 'subdivide' },
2703
2719
  },
2704
2720
  {
2705
2721
  name: 'slice', source: 'topology/api.js#slice', kind: 'skip',
2706
2722
  reason: 'planes 数组入参且返回 AnyShape[](多产物),skip',
2707
2723
  },
2708
2724
  {
2709
- name: 'fillet', source: 'topology/api.js#fillet', kind: 'brep-op',
2710
- geometryArgs: [0], returnsResult: true,
2725
+ name: 'fillet', source: 'topology/api.js#fillet', kind: 'skip',
2711
2726
  args: 'fillet(shape: Shape, edges?, radius | [r1,r2]): Shape',
2712
- reason: 'D-FILLET:faijs 侧由手写 dual-op 覆盖(§2.1 等半径 + filletWithHistory roleTable 传播);本条目仅投影到 vendored fillet 契约,生成模块符号为孤儿 by design,scriptFace 不投(避免与手写 fillet 撞名)。',
2713
- params: ['shape', 'edges', 'radius'], formClass: 'A',
2714
- scriptFace: false,
2727
+ reason: 'overridden by handwritten api/fillet.ts (fillet dual-op, roleTable propagation)',
2715
2728
  },
2716
2729
  {
2717
2730
  name: 'chamfer', source: 'topology/api.js#chamfer', kind: 'skip',
@@ -2721,8 +2734,8 @@ export const ARG_SPEC = [
2721
2734
  name: 'shell', source: 'topology/api.js#shell', kind: 'brep-op',
2722
2735
  geometryArgs: [0], returnsResult: true,
2723
2736
  args: 'shell(shape: Shape, faces?: Shape[], thickness: number): Shape',
2724
- reason: 'faijs 无同名抽壳 → brep-op(faces 可选,整件抽壳可表达)',
2725
2737
  params: ['shape', 'faces', 'thickness'], formClass: 'A',
2738
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
2726
2739
  },
2727
2740
  {
2728
2741
  name: 'offset', source: 'topology/api.js#offset', kind: 'brep-op',
@@ -2731,6 +2744,7 @@ export const ARG_SPEC = [
2731
2744
  reason: 'faijs 无同名偏置 → brep-op',
2732
2745
  params: ['shape', 'distance'], formClass: 'A',
2733
2746
  scriptFace: true,
2747
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
2734
2748
  },
2735
2749
  {
2736
2750
  name: 'thicken', source: 'topology/api.js#thicken', kind: 'skip',
@@ -2747,6 +2761,7 @@ export const ARG_SPEC = [
2747
2761
  reason: 'faijs 无同名整件修复 → brep-op',
2748
2762
  params: ['shape'], formClass: 'A',
2749
2763
  scriptFace: true,
2764
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
2750
2765
  },
2751
2766
  {
2752
2767
  name: 'simplify', source: 'topology/api.js#simplify', kind: 'brep-op',
@@ -2755,6 +2770,7 @@ export const ARG_SPEC = [
2755
2770
  reason: 'faijs 无同名整件简化 → brep-op',
2756
2771
  params: ['shape'], formClass: 'A',
2757
2772
  scriptFace: true,
2773
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
2758
2774
  },
2759
2775
  {
2760
2776
  name: 'mesh', source: 'topology/api.js#mesh', kind: 'skip',
@@ -3050,6 +3066,7 @@ export const ARG_SPEC = [
3050
3066
  reason: '整件自动修复(Result<Shape>),brep-op',
3051
3067
  params: ['shape', 'options'], formClass: 'A',
3052
3068
  scriptFace: true,
3069
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
3053
3070
  },
3054
3071
  {
3055
3072
  name: 'fixShape', source: 'topology/healingFns.js#fixShape', kind: 'brep-op',
@@ -3058,6 +3075,7 @@ export const ARG_SPEC = [
3058
3075
  reason: '整件修复(Result<Shape>),brep-op',
3059
3076
  params: ['shape'], formClass: 'A',
3060
3077
  scriptFace: true,
3078
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
3061
3079
  },
3062
3080
  {
3063
3081
  name: 'healSolid', source: 'topology/healingFns.js#healSolid', kind: 'brep-op',
@@ -3066,13 +3084,14 @@ export const ARG_SPEC = [
3066
3084
  reason: 'Solid 修复(Result<ValidSolid>),brep-op',
3067
3085
  params: ['solid'], formClass: 'A',
3068
3086
  scriptFace: true,
3087
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
3069
3088
  },
3070
3089
  {
3071
3090
  name: 'fixSelfIntersection', source: 'topology/healingFns.js#fixSelfIntersection', kind: 'brep-op',
3072
3091
  geometryArgs: [0], returnsResult: true,
3073
3092
  args: 'fixSelfIntersection(shape: Shape): Shape',
3074
- reason: '整件自交修复(Result<Shape>),brep-op',
3075
3093
  params: ['shape'], formClass: 'A',
3094
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
3076
3095
  },
3077
3096
  {
3078
3097
  name: 'healFace', source: 'topology/healingFns.js#healFace', kind: 'skip',