@faicad/faijs 0.30.9 → 0.31.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 (284) hide show
  1. package/dist/api/align/index.d.ts +64 -0
  2. package/dist/api/align/index.d.ts.map +1 -0
  3. package/dist/api/align/index.js +101 -0
  4. package/dist/api/align/index.js.map +1 -0
  5. package/dist/api/api-namespace.d.ts +5 -4
  6. package/dist/api/api-namespace.d.ts.map +1 -1
  7. package/dist/api/api-namespace.js +36 -4
  8. package/dist/api/api-namespace.js.map +1 -1
  9. package/dist/api/boolean-op/index.d.ts +65 -0
  10. package/dist/api/boolean-op/index.d.ts.map +1 -0
  11. package/dist/api/boolean-op/index.js +113 -0
  12. package/dist/api/boolean-op/index.js.map +1 -0
  13. package/dist/api/boolean.d.ts.map +1 -1
  14. package/dist/api/boolean.js +15 -27
  15. package/dist/api/boolean.js.map +1 -1
  16. package/dist/api/brep-operations/healingFns.d.ts +13 -0
  17. package/dist/api/brep-operations/healingFns.d.ts.map +1 -1
  18. package/dist/api/brep-operations/healingFns.js +28 -1
  19. package/dist/api/brep-operations/healingFns.js.map +1 -1
  20. package/dist/api/brep-operations/topologyFns.d.ts +27 -6
  21. package/dist/api/brep-operations/topologyFns.d.ts.map +1 -1
  22. package/dist/api/brep-operations/topologyFns.js +46 -22
  23. package/dist/api/brep-operations/topologyFns.js.map +1 -1
  24. package/dist/api/chamfer.d.ts +5 -4
  25. package/dist/api/chamfer.d.ts.map +1 -1
  26. package/dist/api/chamfer.js +12 -11
  27. package/dist/api/chamfer.js.map +1 -1
  28. package/dist/api/curve-sketch/index.d.ts.map +1 -1
  29. package/dist/api/curve-sketch/index.js +9 -3
  30. package/dist/api/curve-sketch/index.js.map +1 -1
  31. package/dist/api/draft.d.ts.map +1 -1
  32. package/dist/api/draft.js +1 -3
  33. package/dist/api/draft.js.map +1 -1
  34. package/dist/api/engrave.d.ts.map +1 -1
  35. package/dist/api/engrave.js +3 -13
  36. package/dist/api/engrave.js.map +1 -1
  37. package/dist/api/export-3mf.d.ts +73 -0
  38. package/dist/api/export-3mf.d.ts.map +1 -0
  39. package/dist/api/export-3mf.js +121 -0
  40. package/dist/api/export-3mf.js.map +1 -0
  41. package/dist/api/export-brep.d.ts +6 -0
  42. package/dist/api/export-brep.d.ts.map +1 -1
  43. package/dist/api/export-brep.js +11 -2
  44. package/dist/api/export-brep.js.map +1 -1
  45. package/dist/api/export-step.d.ts +67 -0
  46. package/dist/api/export-step.d.ts.map +1 -0
  47. package/dist/api/export-step.js +98 -0
  48. package/dist/api/export-step.js.map +1 -0
  49. package/dist/api/export-stl.d.ts +8 -0
  50. package/dist/api/export-stl.d.ts.map +1 -1
  51. package/dist/api/export-stl.js +23 -8
  52. package/dist/api/export-stl.js.map +1 -1
  53. package/dist/api/feature-repair.d.ts +1 -1
  54. package/dist/api/feature-repair.d.ts.map +1 -1
  55. package/dist/api/feature-repair.js +1 -7
  56. package/dist/api/feature-repair.js.map +1 -1
  57. package/dist/api/fillet-variable.d.ts.map +1 -1
  58. package/dist/api/fillet-variable.js +0 -1
  59. package/dist/api/fillet-variable.js.map +1 -1
  60. package/dist/api/fillet.d.ts +3 -3
  61. package/dist/api/fillet.d.ts.map +1 -1
  62. package/dist/api/fillet.js +3 -4
  63. package/dist/api/fillet.js.map +1 -1
  64. package/dist/api/generated/operations.js +6 -6
  65. package/dist/api/generated/operations.js.map +1 -1
  66. package/dist/api/generated/script-face-manifest.d.ts +1 -1
  67. package/dist/api/generated/script-face-manifest.js +3 -3
  68. package/dist/api/generated/script-face-manifest.js.map +1 -1
  69. package/dist/api/generated/script-face.d.ts +1 -1
  70. package/dist/api/generated/script-face.js +1 -1
  71. package/dist/api/generated/script-face.js.map +1 -1
  72. package/dist/api/generated/sketching.js +1 -1
  73. package/dist/api/generated/sketching.js.map +1 -1
  74. package/dist/api/generated/topology.js +10 -10
  75. package/dist/api/generated/topology.js.map +1 -1
  76. package/dist/api/helix.d.ts +1 -1
  77. package/dist/api/helix.js +1 -1
  78. package/dist/api/helix.js.map +1 -1
  79. package/dist/api/index.d.ts +4 -1
  80. package/dist/api/index.d.ts.map +1 -1
  81. package/dist/api/index.js +16 -4
  82. package/dist/api/index.js.map +1 -1
  83. package/dist/api/internal/compat-op.d.ts +6 -6
  84. package/dist/api/internal/compat-op.d.ts.map +1 -1
  85. package/dist/api/internal/compat-op.js +7 -9
  86. package/dist/api/internal/compat-op.js.map +1 -1
  87. package/dist/api/internal/export-members.d.ts +80 -0
  88. package/dist/api/internal/export-members.d.ts.map +1 -0
  89. package/dist/api/internal/export-members.js +104 -0
  90. package/dist/api/internal/export-members.js.map +1 -0
  91. package/dist/api/internal/l3-bridge.d.ts +17 -0
  92. package/dist/api/internal/l3-bridge.d.ts.map +1 -1
  93. package/dist/api/internal/l3-bridge.js +23 -1
  94. package/dist/api/internal/l3-bridge.js.map +1 -1
  95. package/dist/api/measure-query/index.d.ts +262 -0
  96. package/dist/api/measure-query/index.d.ts.map +1 -0
  97. package/dist/api/measure-query/index.js +390 -0
  98. package/dist/api/measure-query/index.js.map +1 -0
  99. package/dist/api/pattern.d.ts.map +1 -1
  100. package/dist/api/pattern.js +0 -3
  101. package/dist/api/pattern.js.map +1 -1
  102. package/dist/api/primitives.d.ts +6 -6
  103. package/dist/api/primitives.d.ts.map +1 -1
  104. package/dist/api/primitives.js +12 -11
  105. package/dist/api/primitives.js.map +1 -1
  106. package/dist/api/profile.d.ts.map +1 -1
  107. package/dist/api/profile.js +0 -1
  108. package/dist/api/profile.js.map +1 -1
  109. package/dist/api/punch-hole.d.ts.map +1 -1
  110. package/dist/api/punch-hole.js +0 -1
  111. package/dist/api/punch-hole.js.map +1 -1
  112. package/dist/api/replicate.d.ts +5 -7
  113. package/dist/api/replicate.d.ts.map +1 -1
  114. package/dist/api/replicate.js +18 -56
  115. package/dist/api/replicate.js.map +1 -1
  116. package/dist/api/section-by-plane.d.ts.map +1 -1
  117. package/dist/api/section-by-plane.js +0 -1
  118. package/dist/api/section-by-plane.js.map +1 -1
  119. package/dist/api/shell.d.ts +1 -1
  120. package/dist/api/shell.d.ts.map +1 -1
  121. package/dist/api/shell.js +11 -2
  122. package/dist/api/shell.js.map +1 -1
  123. package/dist/api/sketch-on-face.d.ts +3 -3
  124. package/dist/api/sketch-on-face.d.ts.map +1 -1
  125. package/dist/api/sketch-on-face.js +6 -4
  126. package/dist/api/sketch-on-face.js.map +1 -1
  127. package/dist/api/sketch-on-plane.d.ts.map +1 -1
  128. package/dist/api/sketch-on-plane.js +0 -1
  129. package/dist/api/sketch-on-plane.js.map +1 -1
  130. package/dist/api/split-by-plane.d.ts.map +1 -1
  131. package/dist/api/split-by-plane.js +0 -1
  132. package/dist/api/split-by-plane.js.map +1 -1
  133. package/dist/api/split.d.ts +1 -1
  134. package/dist/api/split.js +1 -1
  135. package/dist/api/split.js.map +1 -1
  136. package/dist/api/surface/arg-spec.d.ts +3 -12
  137. package/dist/api/surface/arg-spec.d.ts.map +1 -1
  138. package/dist/api/surface/arg-spec.js +19 -26
  139. package/dist/api/surface/arg-spec.js.map +1 -1
  140. package/dist/api/sweep.d.ts +15 -3
  141. package/dist/api/sweep.d.ts.map +1 -1
  142. package/dist/api/sweep.js +5 -3
  143. package/dist/api/sweep.js.map +1 -1
  144. package/dist/api/thicken.d.ts.map +1 -1
  145. package/dist/api/thicken.js +11 -2
  146. package/dist/api/thicken.js.map +1 -1
  147. package/dist/api/transform.d.ts +3 -3
  148. package/dist/api/transform.d.ts.map +1 -1
  149. package/dist/api/transform.js +47 -17
  150. package/dist/api/transform.js.map +1 -1
  151. package/dist/boolean/index.d.ts +23 -0
  152. package/dist/boolean/index.d.ts.map +1 -0
  153. package/dist/boolean/index.js +27 -0
  154. package/dist/boolean/index.js.map +1 -0
  155. package/dist/brep/brep-chain.d.ts +1 -19
  156. package/dist/brep/brep-chain.d.ts.map +1 -1
  157. package/dist/brep/brep-chain.js +0 -1
  158. package/dist/brep/brep-chain.js.map +1 -1
  159. package/dist/brep/brep-ops.d.ts +4 -1
  160. package/dist/brep/brep-ops.d.ts.map +1 -1
  161. package/dist/brep/brep-ops.js +9 -5
  162. package/dist/brep/brep-ops.js.map +1 -1
  163. package/dist/brep/engine/adapters/brep-mock.d.ts.map +1 -1
  164. package/dist/brep/engine/adapters/brep-mock.js +0 -3
  165. package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
  166. package/dist/brep/engine/adapters/brepkit.d.ts +4 -3
  167. package/dist/brep/engine/adapters/brepkit.d.ts.map +1 -1
  168. package/dist/brep/engine/adapters/brepkit.js +4 -98
  169. package/dist/brep/engine/adapters/brepkit.js.map +1 -1
  170. package/dist/brep/engine/adapters/occt.d.ts.map +1 -1
  171. package/dist/brep/engine/adapters/occt.js +0 -144
  172. package/dist/brep/engine/adapters/occt.js.map +1 -1
  173. package/dist/brep/engine/native-history.d.ts +27 -0
  174. package/dist/brep/engine/native-history.d.ts.map +1 -0
  175. package/dist/brep/engine/native-history.js +54 -0
  176. package/dist/brep/engine/native-history.js.map +1 -0
  177. package/dist/brep/engine/registry.d.ts +2 -4
  178. package/dist/brep/engine/registry.d.ts.map +1 -1
  179. package/dist/brep/engine/registry.js +1 -1
  180. package/dist/brep/engine/registry.js.map +1 -1
  181. package/dist/brep/engine/types.d.ts +35 -77
  182. package/dist/brep/engine/types.d.ts.map +1 -1
  183. package/dist/brep/engine/types.js.map +1 -1
  184. package/dist/brep/export/export-model.d.ts +21 -0
  185. package/dist/brep/export/export-model.d.ts.map +1 -1
  186. package/dist/brep/export/export-model.js +171 -73
  187. package/dist/brep/export/export-model.js.map +1 -1
  188. package/dist/brep/export/step.d.ts +17 -1
  189. package/dist/brep/export/step.d.ts.map +1 -1
  190. package/dist/brep/export/step.js +133 -0
  191. package/dist/brep/export/step.js.map +1 -1
  192. package/dist/brep/export/stl.d.ts +22 -1
  193. package/dist/brep/export/stl.d.ts.map +1 -1
  194. package/dist/brep/export/stl.js +58 -10
  195. package/dist/brep/export/stl.js.map +1 -1
  196. package/dist/brep/export/transform12.d.ts +47 -0
  197. package/dist/brep/export/transform12.d.ts.map +1 -0
  198. package/dist/brep/export/transform12.js +87 -0
  199. package/dist/brep/export/transform12.js.map +1 -0
  200. package/dist/brep/face-evolution.d.ts +53 -0
  201. package/dist/brep/face-evolution.d.ts.map +1 -1
  202. package/dist/brep/face-evolution.js +65 -0
  203. package/dist/brep/face-evolution.js.map +1 -1
  204. package/dist/browser-host/index.d.ts +4 -1
  205. package/dist/browser-host/index.d.ts.map +1 -1
  206. package/dist/browser-host/index.js +7 -1
  207. package/dist/browser-host/index.js.map +1 -1
  208. package/dist/browser.d.ts +4 -8
  209. package/dist/browser.d.ts.map +1 -1
  210. package/dist/browser.js +4 -26
  211. package/dist/browser.js.map +1 -1
  212. package/dist/cad-runtime/backend-dispatch.d.ts +13 -58
  213. package/dist/cad-runtime/backend-dispatch.d.ts.map +1 -1
  214. package/dist/cad-runtime/backend-dispatch.js +22 -80
  215. package/dist/cad-runtime/backend-dispatch.js.map +1 -1
  216. package/dist/cad-runtime/content-key.d.ts +3 -3
  217. package/dist/cad-runtime/content-key.js +3 -3
  218. package/dist/cad-runtime/content-key.js.map +1 -1
  219. package/dist/cad-runtime/ports.d.ts +28 -0
  220. package/dist/cad-runtime/ports.d.ts.map +1 -1
  221. package/dist/cad-runtime/ports.js.map +1 -1
  222. package/dist/cad-runtime/runtime.d.ts +33 -12
  223. package/dist/cad-runtime/runtime.d.ts.map +1 -1
  224. package/dist/cad-runtime/runtime.js +44 -48
  225. package/dist/cad-runtime/runtime.js.map +1 -1
  226. package/dist/define-op.d.ts +6 -11
  227. package/dist/define-op.d.ts.map +1 -1
  228. package/dist/define-op.js +3 -20
  229. package/dist/define-op.js.map +1 -1
  230. package/dist/env-agnostic.d.ts +2 -2
  231. package/dist/env-agnostic.d.ts.map +1 -1
  232. package/dist/env-agnostic.js +1 -1
  233. package/dist/env-agnostic.js.map +1 -1
  234. package/dist/index.d.ts +13 -64
  235. package/dist/index.d.ts.map +1 -1
  236. package/dist/index.js +17 -75
  237. package/dist/index.js.map +1 -1
  238. package/dist/lang/symbol-table.generated.d.ts +17 -0
  239. package/dist/lang/symbol-table.generated.d.ts.map +1 -1
  240. package/dist/lang/symbol-table.generated.js +17 -0
  241. package/dist/lang/symbol-table.generated.js.map +1 -1
  242. package/dist/mesh/index.d.ts +18 -23
  243. package/dist/mesh/index.d.ts.map +1 -1
  244. package/dist/mesh/index.js +18 -20
  245. package/dist/mesh/index.js.map +1 -1
  246. package/dist/mesh/io.d.ts +42 -14
  247. package/dist/mesh/io.d.ts.map +1 -1
  248. package/dist/mesh/io.js +77 -13
  249. package/dist/mesh/io.js.map +1 -1
  250. package/dist/mesh/threemf-loader.d.ts +38 -4
  251. package/dist/mesh/threemf-loader.d.ts.map +1 -1
  252. package/dist/mesh/threemf-loader.js +115 -34
  253. package/dist/mesh/threemf-loader.js.map +1 -1
  254. package/dist/mesh/types.d.ts +30 -0
  255. package/dist/mesh/types.d.ts.map +1 -1
  256. package/dist/mesh/types.js.map +1 -1
  257. package/dist/node-host/execute-script.d.ts +2 -1
  258. package/dist/node-host/execute-script.d.ts.map +1 -1
  259. package/dist/node-host/execute-script.js +5 -4
  260. package/dist/node-host/execute-script.js.map +1 -1
  261. package/dist/node-host/index.d.ts +1 -0
  262. package/dist/node-host/index.d.ts.map +1 -1
  263. package/dist/node-host/index.js +4 -0
  264. package/dist/node-host/index.js.map +1 -1
  265. package/dist/primitives/index.d.ts +19 -0
  266. package/dist/primitives/index.d.ts.map +1 -0
  267. package/dist/primitives/index.js +21 -0
  268. package/dist/primitives/index.js.map +1 -0
  269. package/dist/runtime-state.d.ts +63 -29
  270. package/dist/runtime-state.d.ts.map +1 -1
  271. package/dist/runtime-state.js +57 -0
  272. package/dist/runtime-state.js.map +1 -1
  273. package/dist/sdf/index.d.ts +12 -0
  274. package/dist/sdf/index.d.ts.map +1 -0
  275. package/dist/sdf/index.js +13 -0
  276. package/dist/sdf/index.js.map +1 -0
  277. package/dist/sdk.d.ts +0 -1
  278. package/dist/sdk.d.ts.map +1 -1
  279. package/dist/sdk.js.map +1 -1
  280. package/dist/weapp.d.ts +2 -2
  281. package/dist/weapp.d.ts.map +1 -1
  282. package/dist/weapp.js +1 -1
  283. package/dist/weapp.js.map +1 -1
  284. package/package.json +276 -35
@@ -1 +1 @@
1
- {"version":3,"file":"content-key.js","sourceRoot":"","sources":["../../src/cad-runtime/content-key.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * content-key — mesh 内容哈希(statementKey / plan 增量判定共用)\n *\n * 从 runtime.ts 提取为独立模块,供 CadRuntime 与 DirectExecutor 共享。\n */\n\n/** FNV-1a 哈希(typed array 逐元素) */\nfunction hashTypedArray(arr: Float32Array | Uint32Array): string {\n let hash = 0x811c9dc5\n const len = arr.length\n for (let i = 0; i < len; i++) {\n hash ^= arr[i]\n hash = Math.imul(hash, 0x01000193)\n }\n hash ^= len\n hash = Math.imul(hash, 0x01000193)\n return (hash >>> 0).toString(16).padStart(8, '0')\n}\n\n/**\n * Compute the mesh content key (hash of positions and indices) used to decide\n * incremental execution.\n * @param positions - the mesh vertex positions.\n * @param indices - the mesh triangle indices.\n * @returns the content key string.\n */\nexport function computeContentKey(positions: Float32Array, indices: Uint32Array): string {\n const posHash = hashTypedArray(positions)\n const idxHash = hashTypedArray(indices)\n return `${posHash}_${idxHash}_${positions.length}_${indices.length}`\n}\n\n// ── stableFingerprint (P0-3) ──\n\n/**\n * Compute a deterministic fingerprint for an arbitrary value, used by the\n * incremental update gates (G6/G7/G8) to detect whether params, libIds, or\n * partTransform have changed since the last successful execution.\n *\n * Design constraints:\n * - `undefined` and `null` are normalized to `null` (so \"no params\" and\n * \"empty object params\" are not treated as different).\n * - Object keys are sorted before hashing (iteration order independent).\n * - Circular references are detected and represented stably (no infinite loop).\n * - Functions and Symbols have a deterministic degradation rule (type-tagged).\n * - Arrays preserve element order (position-sensitive).\n * @param value - the value to fingerprint (params / libIds / partTransform).\n * @returns a hex string fingerprint.\n */\nexport function stableFingerprint(value: unknown): string {\n const seen = new WeakSet<object>()\n let hash = 0x811c9dc5\n\n const mix = (s: string): void => {\n for (let i = 0; i < s.length; i++) {\n hash ^= s.charCodeAt(i)\n hash = Math.imul(hash, 0x01000193)\n }\n }\n\n const visit = (v: unknown, depth: number): void => {\n if (depth > 50) { mix('!depth!'); return }\n\n // Normalize undefined/null to null\n if (v === undefined || v === null) { mix('null'); return }\n\n const t = typeof v\n\n if (t === 'boolean') { mix(v ? 'B1' : 'B0'); return }\n if (t === 'number') { mix('N:' + v); return }\n if (t === 'string') { mix('S:' + v); return }\n if (t === 'bigint') { mix('G:' + v.toString()); return }\n if (t === 'symbol') { mix('SYM:' + ((v as symbol).description ?? '')); return }\n if (t === 'function') { mix('FN'); return }\n\n // Object / array\n const obj = v as object\n if (seen.has(obj)) { mix('!cycle!'); return }\n seen.add(obj)\n\n if (Array.isArray(v)) {\n mix('A[' + v.length + ']')\n for (const el of v) visit(el, depth + 1)\n return\n }\n\n // Map: sort by key string for stable order\n if (v instanceof Map) {\n const entries = [...v.entries()].sort((a, b) =>\n String(a[0]) < String(b[0]) ? -1 : String(a[0]) > String(b[0]) ? 1 : 0,\n )\n mix('M[' + entries.length + ']')\n for (const [k, val] of entries) {\n mix('K:' + String(k) + ':')\n visit(val, depth + 1)\n }\n return\n }\n\n // Set: sort members for stable order\n if (v instanceof Set) {\n const members = [...v].sort((a, b) =>\n String(a) < String(b) ? -1 : String(a) > String(b) ? 1 : 0,\n )\n mix('SET[' + members.length + ']')\n for (const m of members) visit(m, depth + 1)\n return\n }\n\n // Plain object: sort keys\n const keys = Object.keys(obj).sort()\n mix('O{' + keys.length + '}')\n for (const k of keys) {\n mix('k:' + k + ':')\n visit((obj as Record<string, unknown>)[k], depth + 1)\n }\n }\n\n visit(value, 0)\n hash ^= 0xff\n hash = Math.imul(hash, 0x01000193)\n return (hash >>> 0).toString(16).padStart(8, '0')\n}\n"]}
1
+ {"version":3,"file":"content-key.js","sourceRoot":"","sources":["../../src/cad-runtime/content-key.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * content-key — mesh 内容哈希(statementKey / plan 增量判定共用)\n *\n * 从 runtime.ts 提取为独立模块,供 CadRuntime 与 DirectExecutor 共享。\n */\n\n/** FNV-1a 哈希(typed array 逐元素) */\nfunction hashTypedArray(arr: Float32Array | Uint32Array): string {\n let hash = 0x811c9dc5\n const len = arr.length\n for (let i = 0; i < len; i++) {\n hash ^= arr[i]\n hash = Math.imul(hash, 0x01000193)\n }\n hash ^= len\n hash = Math.imul(hash, 0x01000193)\n return (hash >>> 0).toString(16).padStart(8, '0')\n}\n\n/**\n * Compute the mesh content key (hash of positions and indices) used to decide\n * incremental execution.\n * @param positions - the mesh vertex positions.\n * @param indices - the mesh triangle indices.\n * @returns the content key string.\n */\nexport function computeContentKey(positions: Float32Array, indices: Uint32Array): string {\n const posHash = hashTypedArray(positions)\n const idxHash = hashTypedArray(indices)\n return `${posHash}_${idxHash}_${positions.length}_${indices.length}`\n}\n\n// ── stableFingerprint (P0-3) ──\n\n/**\n * Compute a deterministic fingerprint for an arbitrary value, used by the\n * incremental update gates (G6/G7) to detect whether params or libIds have\n * changed since the last successful execution.\n *\n * Design constraints:\n * - `undefined` and `null` are normalized to `null` (so \"no params\" and\n * \"empty object params\" are not treated as different).\n * - Object keys are sorted before hashing (iteration order independent).\n * - Circular references are detected and represented stably (no infinite loop).\n * - Functions and Symbols have a deterministic degradation rule (type-tagged).\n * - Arrays preserve element order (position-sensitive).\n * @param value - the value to fingerprint (params / libIds).\n * @returns a hex string fingerprint.\n */\nexport function stableFingerprint(value: unknown): string {\n const seen = new WeakSet<object>()\n let hash = 0x811c9dc5\n\n const mix = (s: string): void => {\n for (let i = 0; i < s.length; i++) {\n hash ^= s.charCodeAt(i)\n hash = Math.imul(hash, 0x01000193)\n }\n }\n\n const visit = (v: unknown, depth: number): void => {\n if (depth > 50) { mix('!depth!'); return }\n\n // Normalize undefined/null to null\n if (v === undefined || v === null) { mix('null'); return }\n\n const t = typeof v\n\n if (t === 'boolean') { mix(v ? 'B1' : 'B0'); return }\n if (t === 'number') { mix('N:' + v); return }\n if (t === 'string') { mix('S:' + v); return }\n if (t === 'bigint') { mix('G:' + v.toString()); return }\n if (t === 'symbol') { mix('SYM:' + ((v as symbol).description ?? '')); return }\n if (t === 'function') { mix('FN'); return }\n\n // Object / array\n const obj = v as object\n if (seen.has(obj)) { mix('!cycle!'); return }\n seen.add(obj)\n\n if (Array.isArray(v)) {\n mix('A[' + v.length + ']')\n for (const el of v) visit(el, depth + 1)\n return\n }\n\n // Map: sort by key string for stable order\n if (v instanceof Map) {\n const entries = [...v.entries()].sort((a, b) =>\n String(a[0]) < String(b[0]) ? -1 : String(a[0]) > String(b[0]) ? 1 : 0,\n )\n mix('M[' + entries.length + ']')\n for (const [k, val] of entries) {\n mix('K:' + String(k) + ':')\n visit(val, depth + 1)\n }\n return\n }\n\n // Set: sort members for stable order\n if (v instanceof Set) {\n const members = [...v].sort((a, b) =>\n String(a) < String(b) ? -1 : String(a) > String(b) ? 1 : 0,\n )\n mix('SET[' + members.length + ']')\n for (const m of members) visit(m, depth + 1)\n return\n }\n\n // Plain object: sort keys\n const keys = Object.keys(obj).sort()\n mix('O{' + keys.length + '}')\n for (const k of keys) {\n mix('k:' + k + ':')\n visit((obj as Record<string, unknown>)[k], depth + 1)\n }\n }\n\n visit(value, 0)\n hash ^= 0xff\n hash = Math.imul(hash, 0x01000193)\n return (hash >>> 0).toString(16).padStart(8, '0')\n}\n"]}
@@ -184,6 +184,26 @@ export interface ProjectLoader {
184
184
  /** 模块内容指纹(增量缓存用;不提供则每次全量重读重执行)。 */
185
185
  fingerprint?(moduleKey: string): Promise<string>;
186
186
  }
187
+ /**
188
+ * 宿主环境——脚本面导出命令的可用性判据。
189
+ *
190
+ * - `'node'`:Node.js 进程(CLI、进程内嵌)。落盘发生在用户自己的机器上,
191
+ * 不构成跨域外泄,因此开放;
192
+ * - `'browser'`:web 页面 / web worker。页面内脚本发起下载正是 CSP、
193
+ * 用户手势要求与 drive-by download 防护所针对的模式;
194
+ * - `'weapp'`:小程序 worker。落盘同样属于宿主能力的范畴。
195
+ *
196
+ * 只有 `'node'` 宿主开放脚本面导出命令(`cad.exportStl` / `cad.exportBrep`),
197
+ * 其余值(含未声明)执行即报 `E_HOST_UNSUPPORTED`。理由:`.fai.js` 是可由 AI
198
+ * 生成任意代码的文本、属不受信输入(`lang/security-scanner.ts` 的静态门禁自认
199
+ * 不是沙箱),而导出把「往哪写、写几份、写什么」的决定权交给脚本文本。浏览器 /
200
+ * 小程序里要导出模型,必须由宿主提供的入口触发——用户点的按钮,或宿主自己调用的
201
+ * 库面字节通道(`exportModel(Sync)` / `exportStepFromSolids*` 等)。
202
+ *
203
+ * 宿主在端口装配期声明一次;运行期不探测环境(`typeof process` 那类判断只留在
204
+ * 内核装载器里选 wasm 装载通道)。未声明按非 node 处理(fail-closed,不兜底)。
205
+ */
206
+ export type HostEnv = 'node' | 'browser' | 'weapp';
187
207
  /**
188
208
  * Host 在 createRuntime 时注入的全部环境能力。
189
209
  *
@@ -197,6 +217,14 @@ export interface HostPorts {
197
217
  texture?: TextureSampler;
198
218
  assets?: AssetResolver;
199
219
  events: EventSink;
220
+ /**
221
+ * 宿主环境(装配期声明一次;未声明 → 脚本面导出命令一律拒绝)。
222
+ *
223
+ * 保持可选而不设为必填:`HostPorts` 是公开类型,设必填会把与本次能力无关的
224
+ * 机械改动压到仓内近百处只给 `events` 的装配点上;读取端 fail-closed(漏声明 =
225
+ * 非 node)效果等价于必填。见 {@link HostEnv}。
226
+ */
227
+ hostEnv?: HostEnv;
200
228
  /** 库加载器(execute 自动装载未注册库;check 用它做 specifier 预检)。可选——无则仅手工 registerLib。 */
201
229
  libLoader?: LibLoader;
202
230
  /** 项目文件加载器(相对 specifier 的多文件模块,§4.5)。可选——不提供则单文件行为不变。 */
@@ -1 +1 @@
1
- {"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/ports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/ports.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ports.js","sourceRoot":"","sources":["../../src/cad-runtime/ports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG","sourcesContent":["/**\n * Ports 接口定义 — Host 注入的环境能力\n *\n *\n * L2 CadRuntime 通过这些接口获取所有环境能力(CSG 计算、SDF 求值、字体、纹理、资产、事件)。\n * 不直接 import 任何 ?worker、window、document、zustand store——这些由 Host 实现。\n *\n * 两个宿主各自实现:\n * - browser host: WorkerCsgBackend / WorkerSdfBackend / BrowserFontProvider / ...\n * - node host (P3): InlineCsgBackend / InlineSdfBackend / NodeFontProvider / ...\n */\n\nimport type { PartName } from '../identity'\nimport type { LibNamespace } from '../runtime-state'\n\n// ── 共享类型 ──\n\n/** 网格数据(与 csg.ts ManifoldMeshData 同构) */\nexport interface MeshData {\n positions: Float32Array\n indices: Uint32Array\n}\n\n/** 平面参数 */\nexport interface PlaneParams {\n normal: [number, number, number]\n offset: number\n}\n\n// Re-export joinery param types from boolean/geo-convert to ensure\n// structural identity across CsgBackend interface and implementations.\nexport type {\n DovetailGrooveParams,\n DowelSplitParams,\n StraightTenonSplitParams,\n} from '../boolean/geo-convert'\nimport type {\n DovetailGrooveParams,\n DowelSplitParams,\n StraightTenonSplitParams,\n} from '../boolean/geo-convert'\n\n/** 分割结果 */\nexport interface SplitResult {\n front: MeshData\n back: MeshData\n wedge: MeshData | null\n}\n\n// ── CsgBackend ──\n\n/**\n * CSG 后端接口 — mesh 路径的布尔/分割操作。\n *\n * browser 实现:WorkerCsgBackend(经 csg-worker postMessage)\n * node 实现 (P3):InlineCsgBackend(主线程直跑 manifold-3d)\n */\nexport interface CsgBackend {\n boolean(op: 'union' | 'subtract' | 'intersect', meshes: MeshData[]): Promise<MeshData>\n splitPlane(mesh: MeshData, plane: PlaneParams): Promise<{ front: MeshData; back: MeshData }>\n splitDovetail(\n mesh: MeshData,\n params: {\n planeNormal: [number, number, number]\n planeDistance: number\n planeCenter: [number, number, number]\n widthDir: [number, number, number]\n bboxWidthOnWidthDir: number\n groove: DovetailGrooveParams\n },\n ): Promise<SplitResult>\n splitDowel(\n mesh: MeshData,\n params: {\n planeNormal: [number, number, number]\n planeDistance: number\n planeCenter: [number, number, number]\n widthDir: [number, number, number]\n dowel: DowelSplitParams\n selectedSections?: number[] | null\n },\n ): Promise<SplitResult>\n splitStraightTenon(\n mesh: MeshData,\n params: {\n planeNormal: [number, number, number]\n planeDistance: number\n planeCenter: [number, number, number]\n widthDir: [number, number, number]\n tenon: StraightTenonSplitParams\n selectedSections?: number[] | null\n },\n ): Promise<SplitResult>\n}\n\n// ── SdfBackend ──\n\n/**\n * SDF 后端接口 — SDF 求值。\n *\n * browser 实现:WorkerSdfBackend(经 sdf-worker postMessage)\n * node 实现 (P3):InlineSdfBackend(主线程直跑)\n */\nexport interface SdfBackend {\n runSdf(\n code: string,\n params: Record<string, number>,\n bounds: [number, number, number, number, number, number],\n edgeLength: number,\n level?: number,\n tolerance?: number,\n ): Promise<MeshData>\n}\n\n// ── FontProvider ──\n\n/**\n * 字体提供者接口。\n *\n * browser 实现:BrowserFontProvider(?url + fetch + fontRegistry DI)\n * node 实现 (P3):NodeFontProvider(fs 字体加载)\n */\nexport interface FontProvider {\n /** 加载字体字节(按 key/path),返回 ArrayBuffer */\n loadFont(key: string): Promise<ArrayBuffer>\n /** 列出可用字体 key(node 端为资产目录,browser 端为注册表) */\n listFonts(): string[]\n}\n\n// ── TextureSampler ──\n\n/**\n * 纹理采样接口 — knurl 纹理。\n *\n * browser 实现:CanvasTextureSampler(Image + canvas)\n * node 实现 (P3):纯数据解码\n */\nexport interface TextureSampler {\n /** 采样纹理在 (u, v) 处的值 [0,1] */\n sample(u: number, v: number): number\n /** 纹理尺寸 */\n readonly width: number\n readonly height: number\n}\n\n// ── AssetResolver ──\n\n/**\n * 资产解析接口 — load* 操作的字节来源。\n *\n * browser 实现:FaicadAssetResolver(faicad 会话缓存)\n * node 实现 (P3):FsAssetResolver(--assets 目录/manifest)\n */\nexport interface AssetResolver {\n /** loadByKey 的 headless 等价物 */\n resolveByKey(key: string): Promise<{ bytes: ArrayBuffer; format?: string }>\n /** 本地文件路径(browser 下抛错) */\n resolveFile(path: string): Promise<ArrayBuffer>\n /** 网络 URL(两环境通用) */\n resolveUrl(url: string): Promise<ArrayBuffer>\n}\n\n// ── EventSink ──\n\n/**\n * 事件通知接口 — BREP 丢失等事件。\n *\n * browser 实现:BrowserEventSink(window.dispatchEvent → toast)\n * node 实现 (P3):CliEventSink(写入 stderr + 收集到 events 数组)\n */\nexport interface EventSink {\n emit(event: 'part-brep-lost', detail: { partName: PartName; callee: string; reason: string }): void\n}\n\n// ── LibLoader ──\n\n/**\n * 库加载器接口 — 按 packageName 自动装载未注册的第三方库。\n *\n * 宿主实现:\n * - node CLI(createNodePorts):白名单 + Node 原生 `import(name)`(monorepo\n * workspace symlink 直接把裸包解析到包源码)。\n * - browser / demo:静态 `LIB_MODULES` 映射表(value 必须是静态字面量\n * specifier,Vite/Rollup 才能静态分析打包;禁止变量传参的 import(name))。\n * - vitest:复用浏览器映射表写法 + `await import('@faicad/…')`(alias 落位活源码)。\n */\nexport interface LibLoader {\n /** 按 packageName 加载库模块,返回其导出命名空间对象(与 registerLib 的 ns 同形)。 */\n loadLib(packageName: string): Promise<LibNamespace>\n /** 列出当前可加载的 packageName(check 阶段同步校验 import specifier 用)。 */\n listLibs(): string[]\n /** 自动装载的注册选项;缺省由推断式决定(有 dual-op 的库不提升,全裸函数库自动提升,与手动注入一致)。 */\n options?: {\n autoLift?: boolean\n /**\n * 按 packageName 的逐库 `autoLift` 覆盖(优先于 `options.autoLift`)。\n * 返回 `undefined` 时回落到全局选项 / 推断式。用于别名库:如 cq-compat 在\n * 浏览器 host 被全局 autoLift 提升后,compat 边界会改变实参形态,破坏其\n * 内部「以 Shape 受众」的借面逻辑(原 CLI 即按 autoLift=false 运行)。\n * 逐库关掉提升恢复 CLI 等价行为。\n */\n autoLiftFor?: (packageName: string) => boolean | undefined\n }\n /**\n * 可选源码扫描钩子(§6.2 ②):宿主返回库源码时走同一 SecurityScanner(A4,固定 strict);\n * 不提供或返回 undefined 则跳过。不改 loadLib 返回值——返回 LibNamespace,\n * 往里挂 source 会被 admitCompatLib 当成导出值并污染命名空间。\n * @param packageName - the npm package name.\n * @returns the library source text if available, otherwise undefined.\n */\n loadSource?(packageName: string): Promise<string | undefined>\n}\n\n// ── ProjectLoader ──\n\n/**\n * 项目文件加载器(多文件,§4.5)——按 moduleKey 读取/枚举项目内 .fai.js 模块源码。\n *\n * moduleKey 约定:host 决定字符串形态(项目根相对路径等);引擎只做最小归一\n * (POSIX 斜杠、去掉 `./`/`../`/前导 `/` 前缀),随后按 `listModules()` 精确匹配。\n *\n * host 实现:\n * - 3d_editor / browser:项目文件表 + session 内缓存;\n * - node / vitest:内存映射表或 fs 读取(fixture 目录)。\n */\nexport interface ProjectLoader {\n /** 列出当前可加载的 moduleKey(装载前预检 / 错误提示用)。 */\n listModules(): string[]\n /** 按 moduleKey 读取模块源码(.fai.js 文本)。 */\n readSource(moduleKey: string): Promise<string>\n /** 模块内容指纹(增量缓存用;不提供则每次全量重读重执行)。 */\n fingerprint?(moduleKey: string): Promise<string>\n}\n\n// ── HostPorts 汇总 ──\n\n/**\n * Host 在 createRuntime 时注入的全部环境能力。\n *\n * 所有字段可选——node 测试环境可只提供 occt kernel(不注入 csg/sdf),\n * BREP-path ops 不依赖这些 Port。\n */\nexport interface HostPorts {\n csg?: CsgBackend\n sdf?: SdfBackend\n fonts?: FontProvider\n texture?: TextureSampler\n assets?: AssetResolver\n events: EventSink // events 必填——断链通知是基础能力\n /** 库加载器(execute 自动装载未注册库;check 用它做 specifier 预检)。可选——无则仅手工 registerLib。 */\n libLoader?: LibLoader\n /** 项目文件加载器(相对 specifier 的多文件模块,§4.5)。可选——不提供则单文件行为不变。 */\n projectLoader?: ProjectLoader\n}\n\n// ── 执行模式 ──\n\n/**\n * 执行模式(设计文档 §4.4)。\n *\n * - `auto`(默认):优先 BREP,断链后自动切 mesh + EventSink 通知\n * - `brep`:强制 BREP,断链即报错 E_BREP_UNSUPPORTED,不自动切换\n * - `mesh`:全部走 mesh 路径\n */\nexport type ExecutionMode = 'auto' | 'brep' | 'mesh'\n"]}
1
+ {"version":3,"file":"ports.js","sourceRoot":"","sources":["../../src/cad-runtime/ports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG","sourcesContent":["/**\n * Ports 接口定义 — Host 注入的环境能力\n *\n *\n * L2 CadRuntime 通过这些接口获取所有环境能力(CSG 计算、SDF 求值、字体、纹理、资产、事件)。\n * 不直接 import 任何 ?worker、window、document、zustand store——这些由 Host 实现。\n *\n * 两个宿主各自实现:\n * - browser host: WorkerCsgBackend / WorkerSdfBackend / BrowserFontProvider / ...\n * - node host (P3): InlineCsgBackend / InlineSdfBackend / NodeFontProvider / ...\n */\n\nimport type { PartName } from '../identity'\nimport type { LibNamespace } from '../runtime-state'\n\n// ── 共享类型 ──\n\n/** 网格数据(与 csg.ts ManifoldMeshData 同构) */\nexport interface MeshData {\n positions: Float32Array\n indices: Uint32Array\n}\n\n/** 平面参数 */\nexport interface PlaneParams {\n normal: [number, number, number]\n offset: number\n}\n\n// Re-export joinery param types from boolean/geo-convert to ensure\n// structural identity across CsgBackend interface and implementations.\nexport type {\n DovetailGrooveParams,\n DowelSplitParams,\n StraightTenonSplitParams,\n} from '../boolean/geo-convert'\nimport type {\n DovetailGrooveParams,\n DowelSplitParams,\n StraightTenonSplitParams,\n} from '../boolean/geo-convert'\n\n/** 分割结果 */\nexport interface SplitResult {\n front: MeshData\n back: MeshData\n wedge: MeshData | null\n}\n\n// ── CsgBackend ──\n\n/**\n * CSG 后端接口 — mesh 路径的布尔/分割操作。\n *\n * browser 实现:WorkerCsgBackend(经 csg-worker postMessage)\n * node 实现 (P3):InlineCsgBackend(主线程直跑 manifold-3d)\n */\nexport interface CsgBackend {\n boolean(op: 'union' | 'subtract' | 'intersect', meshes: MeshData[]): Promise<MeshData>\n splitPlane(mesh: MeshData, plane: PlaneParams): Promise<{ front: MeshData; back: MeshData }>\n splitDovetail(\n mesh: MeshData,\n params: {\n planeNormal: [number, number, number]\n planeDistance: number\n planeCenter: [number, number, number]\n widthDir: [number, number, number]\n bboxWidthOnWidthDir: number\n groove: DovetailGrooveParams\n },\n ): Promise<SplitResult>\n splitDowel(\n mesh: MeshData,\n params: {\n planeNormal: [number, number, number]\n planeDistance: number\n planeCenter: [number, number, number]\n widthDir: [number, number, number]\n dowel: DowelSplitParams\n selectedSections?: number[] | null\n },\n ): Promise<SplitResult>\n splitStraightTenon(\n mesh: MeshData,\n params: {\n planeNormal: [number, number, number]\n planeDistance: number\n planeCenter: [number, number, number]\n widthDir: [number, number, number]\n tenon: StraightTenonSplitParams\n selectedSections?: number[] | null\n },\n ): Promise<SplitResult>\n}\n\n// ── SdfBackend ──\n\n/**\n * SDF 后端接口 — SDF 求值。\n *\n * browser 实现:WorkerSdfBackend(经 sdf-worker postMessage)\n * node 实现 (P3):InlineSdfBackend(主线程直跑)\n */\nexport interface SdfBackend {\n runSdf(\n code: string,\n params: Record<string, number>,\n bounds: [number, number, number, number, number, number],\n edgeLength: number,\n level?: number,\n tolerance?: number,\n ): Promise<MeshData>\n}\n\n// ── FontProvider ──\n\n/**\n * 字体提供者接口。\n *\n * browser 实现:BrowserFontProvider(?url + fetch + fontRegistry DI)\n * node 实现 (P3):NodeFontProvider(fs 字体加载)\n */\nexport interface FontProvider {\n /** 加载字体字节(按 key/path),返回 ArrayBuffer */\n loadFont(key: string): Promise<ArrayBuffer>\n /** 列出可用字体 key(node 端为资产目录,browser 端为注册表) */\n listFonts(): string[]\n}\n\n// ── TextureSampler ──\n\n/**\n * 纹理采样接口 — knurl 纹理。\n *\n * browser 实现:CanvasTextureSampler(Image + canvas)\n * node 实现 (P3):纯数据解码\n */\nexport interface TextureSampler {\n /** 采样纹理在 (u, v) 处的值 [0,1] */\n sample(u: number, v: number): number\n /** 纹理尺寸 */\n readonly width: number\n readonly height: number\n}\n\n// ── AssetResolver ──\n\n/**\n * 资产解析接口 — load* 操作的字节来源。\n *\n * browser 实现:FaicadAssetResolver(faicad 会话缓存)\n * node 实现 (P3):FsAssetResolver(--assets 目录/manifest)\n */\nexport interface AssetResolver {\n /** loadByKey 的 headless 等价物 */\n resolveByKey(key: string): Promise<{ bytes: ArrayBuffer; format?: string }>\n /** 本地文件路径(browser 下抛错) */\n resolveFile(path: string): Promise<ArrayBuffer>\n /** 网络 URL(两环境通用) */\n resolveUrl(url: string): Promise<ArrayBuffer>\n}\n\n// ── EventSink ──\n\n/**\n * 事件通知接口 — BREP 丢失等事件。\n *\n * browser 实现:BrowserEventSink(window.dispatchEvent → toast)\n * node 实现 (P3):CliEventSink(写入 stderr + 收集到 events 数组)\n */\nexport interface EventSink {\n emit(event: 'part-brep-lost', detail: { partName: PartName; callee: string; reason: string }): void\n}\n\n// ── LibLoader ──\n\n/**\n * 库加载器接口 — 按 packageName 自动装载未注册的第三方库。\n *\n * 宿主实现:\n * - node CLI(createNodePorts):白名单 + Node 原生 `import(name)`(monorepo\n * workspace symlink 直接把裸包解析到包源码)。\n * - browser / demo:静态 `LIB_MODULES` 映射表(value 必须是静态字面量\n * specifier,Vite/Rollup 才能静态分析打包;禁止变量传参的 import(name))。\n * - vitest:复用浏览器映射表写法 + `await import('@faicad/…')`(alias 落位活源码)。\n */\nexport interface LibLoader {\n /** 按 packageName 加载库模块,返回其导出命名空间对象(与 registerLib 的 ns 同形)。 */\n loadLib(packageName: string): Promise<LibNamespace>\n /** 列出当前可加载的 packageName(check 阶段同步校验 import specifier 用)。 */\n listLibs(): string[]\n /** 自动装载的注册选项;缺省由推断式决定(有 dual-op 的库不提升,全裸函数库自动提升,与手动注入一致)。 */\n options?: {\n autoLift?: boolean\n /**\n * 按 packageName 的逐库 `autoLift` 覆盖(优先于 `options.autoLift`)。\n * 返回 `undefined` 时回落到全局选项 / 推断式。用于别名库:如 cq-compat 在\n * 浏览器 host 被全局 autoLift 提升后,compat 边界会改变实参形态,破坏其\n * 内部「以 Shape 受众」的借面逻辑(原 CLI 即按 autoLift=false 运行)。\n * 逐库关掉提升恢复 CLI 等价行为。\n */\n autoLiftFor?: (packageName: string) => boolean | undefined\n }\n /**\n * 可选源码扫描钩子(§6.2 ②):宿主返回库源码时走同一 SecurityScanner(A4,固定 strict);\n * 不提供或返回 undefined 则跳过。不改 loadLib 返回值——返回 LibNamespace,\n * 往里挂 source 会被 admitCompatLib 当成导出值并污染命名空间。\n * @param packageName - the npm package name.\n * @returns the library source text if available, otherwise undefined.\n */\n loadSource?(packageName: string): Promise<string | undefined>\n}\n\n// ── ProjectLoader ──\n\n/**\n * 项目文件加载器(多文件,§4.5)——按 moduleKey 读取/枚举项目内 .fai.js 模块源码。\n *\n * moduleKey 约定:host 决定字符串形态(项目根相对路径等);引擎只做最小归一\n * (POSIX 斜杠、去掉 `./`/`../`/前导 `/` 前缀),随后按 `listModules()` 精确匹配。\n *\n * host 实现:\n * - 3d_editor / browser:项目文件表 + session 内缓存;\n * - node / vitest:内存映射表或 fs 读取(fixture 目录)。\n */\nexport interface ProjectLoader {\n /** 列出当前可加载的 moduleKey(装载前预检 / 错误提示用)。 */\n listModules(): string[]\n /** 按 moduleKey 读取模块源码(.fai.js 文本)。 */\n readSource(moduleKey: string): Promise<string>\n /** 模块内容指纹(增量缓存用;不提供则每次全量重读重执行)。 */\n fingerprint?(moduleKey: string): Promise<string>\n}\n\n// ── 宿主环境 ──\n\n/**\n * 宿主环境——脚本面导出命令的可用性判据。\n *\n * - `'node'`:Node.js 进程(CLI、进程内嵌)。落盘发生在用户自己的机器上,\n * 不构成跨域外泄,因此开放;\n * - `'browser'`:web 页面 / web worker。页面内脚本发起下载正是 CSP、\n * 用户手势要求与 drive-by download 防护所针对的模式;\n * - `'weapp'`:小程序 worker。落盘同样属于宿主能力的范畴。\n *\n * 只有 `'node'` 宿主开放脚本面导出命令(`cad.exportStl` / `cad.exportBrep`),\n * 其余值(含未声明)执行即报 `E_HOST_UNSUPPORTED`。理由:`.fai.js` 是可由 AI\n * 生成任意代码的文本、属不受信输入(`lang/security-scanner.ts` 的静态门禁自认\n * 不是沙箱),而导出把「往哪写、写几份、写什么」的决定权交给脚本文本。浏览器 /\n * 小程序里要导出模型,必须由宿主提供的入口触发——用户点的按钮,或宿主自己调用的\n * 库面字节通道(`exportModel(Sync)` / `exportStepFromSolids*` 等)。\n *\n * 宿主在端口装配期声明一次;运行期不探测环境(`typeof process` 那类判断只留在\n * 内核装载器里选 wasm 装载通道)。未声明按非 node 处理(fail-closed,不兜底)。\n */\nexport type HostEnv = 'node' | 'browser' | 'weapp'\n\n// ── HostPorts 汇总 ──\n\n/**\n * Host 在 createRuntime 时注入的全部环境能力。\n *\n * 所有字段可选——node 测试环境可只提供 occt kernel(不注入 csg/sdf),\n * BREP-path ops 不依赖这些 Port。\n */\nexport interface HostPorts {\n csg?: CsgBackend\n sdf?: SdfBackend\n fonts?: FontProvider\n texture?: TextureSampler\n assets?: AssetResolver\n events: EventSink // events 必填——断链通知是基础能力\n /**\n * 宿主环境(装配期声明一次;未声明 → 脚本面导出命令一律拒绝)。\n *\n * 保持可选而不设为必填:`HostPorts` 是公开类型,设必填会把与本次能力无关的\n * 机械改动压到仓内近百处只给 `events` 的装配点上;读取端 fail-closed(漏声明 =\n * 非 node)效果等价于必填。见 {@link HostEnv}。\n */\n hostEnv?: HostEnv\n /** 库加载器(execute 自动装载未注册库;check 用它做 specifier 预检)。可选——无则仅手工 registerLib。 */\n libLoader?: LibLoader\n /** 项目文件加载器(相对 specifier 的多文件模块,§4.5)。可选——不提供则单文件行为不变。 */\n projectLoader?: ProjectLoader\n}\n\n// ── 执行模式 ──\n\n/**\n * 执行模式(设计文档 §4.4)。\n *\n * - `auto`(默认):优先 BREP,断链后自动切 mesh + EventSink 通知\n * - `brep`:强制 BREP,断链即报错 E_BREP_UNSUPPORTED,不自动切换\n * - `mesh`:全部走 mesh 路径\n */\nexport type ExecutionMode = 'auto' | 'brep' | 'mesh'\n"]}
@@ -30,7 +30,7 @@ import type { ImportModel } from '../mesh/import-model.js';
30
30
  import { type PartName } from '../identity.js';
31
31
  import type { ExecBackendChoice } from './exec-backend.js';
32
32
  import { type OpDimMap } from '../lang/metadata-extractor.js';
33
- import { type LibNamespace, type AssemblyKinematicsPose } from '../runtime-state.js';
33
+ import { type LibNamespace, type AssemblyKinematicsPose, type TessellationDensity } from '../runtime-state.js';
34
34
  export { computeContentKey } from './content-key.js';
35
35
  export { stableFingerprint } from './content-key.js';
36
36
  import { type CompoundShape } from '../shape.js';
@@ -176,11 +176,6 @@ export interface ExecutionResult {
176
176
  export interface ExecuteOptions {
177
177
  /** The parameter table. */
178
178
  params?: Record<string, unknown>;
179
- /** partTransform(世界→局部坐标偏移 + 单位缩放) */
180
- partTransform?: {
181
- position: [number, number, number];
182
- scale?: [number, number, number];
183
- };
184
179
  /** 语句前钩子(用于 undo 逐语句快照);参数为语句 id(sN)与语句下标 */
185
180
  beforeStatement?: (stmtId: string, index: number) => void;
186
181
  /**
@@ -250,6 +245,12 @@ export interface CadRuntimeOptions {
250
245
  * `ports.libLoader.loadSource` 获取(宿主未提供则跳过库扫描)。
251
246
  */
252
247
  determinism?: DeterminismPolicy;
248
+ /**
249
+ * 全局三角化密度(宿主可调,proposal 2026-10-07)。缺省 2π/64 rad /
250
+ * 0.1 mm。对应 OpenSCAD $fa(angularDeflection,弧度)/ $fs
251
+ * (linearDeflection,mm)。per-primitive `segments` 仍优先于全局配置。
252
+ */
253
+ tessellation?: TessellationDensity;
253
254
  }
254
255
  /**
255
256
  * CadRuntime is the execution core of the L2 orchestration layer.
@@ -276,7 +277,6 @@ export declare class CadRuntime {
276
277
  private accumulatedIds;
277
278
  private lastParamsFingerprint;
278
279
  private lastLibIdsFingerprint;
279
- private lastPartTransformFingerprint;
280
280
  private lastHadKinematics;
281
281
  /**
282
282
  * PartName → OCCT 实体句柄,跨 execute 存活,持有所有权(顶替释放/删除/dispose 的唯一操作对象)。
@@ -688,13 +688,34 @@ export declare class CadRuntime {
688
688
  dispose(): void;
689
689
  }
690
690
  /**
691
- * Create a CadRuntime instance.
691
+ * Create a CadRuntime with the built-in `cad` namespace auto-registered as the
692
+ * default library.
693
+ *
694
+ * This is the single public `createRuntime` entry point. Hosts get "engine +
695
+ * standard library" in one call. If `libs` already contains a `cad` key, that
696
+ * caller-supplied namespace is kept (not overwritten).
697
+ *
692
698
  * @param ports - the host-injected environment capabilities.
693
699
  * @param mode - the execution mode (default 'auto').
694
- * @param libs - the host-injected library namespaces (including `cad`, which the
695
- * root facade injects automatically; core does not assemble it by default).
696
- * @param options - optional runtime options (e.g. `executor: 'direct' | 'module'`).
697
- * @returns a new CadRuntime.
700
+ * @param libs - the host-injected library namespaces. If `libs.cad` is omitted,
701
+ * the built-in cad namespace is auto-registered as the default lib.
702
+ * @param options - optional runtime options (e.g. `execBackend`, `tessellation`).
703
+ * @returns a new CadRuntime with `cad` registered as the default namespace.
698
704
  */
699
705
  export declare function createRuntime(ports: HostPorts, mode?: ExecutionMode, libs?: Record<string, LibNamespace>, options?: CadRuntimeOptions): CadRuntime;
706
+ /**
707
+ * Create a bare CadRuntime without auto-registering the built-in `cad` namespace.
708
+ *
709
+ * For hosts that want a pure engine (e.g. only using the parser / runtime
710
+ * framework with a custom op set). `CadRuntime` itself can also be constructed
711
+ * directly via `new CadRuntime(...)` — this function is the named factory
712
+ * counterpart to avoid creating another same-name variant.
713
+ *
714
+ * @param ports - the host-injected environment capabilities.
715
+ * @param mode - the execution mode (default 'auto').
716
+ * @param libs - the host-injected library namespaces (no cad auto-registration).
717
+ * @param options - optional runtime options.
718
+ * @returns a new CadRuntime without cad registered.
719
+ */
720
+ export declare function createBareRuntime(ports: HostPorts, mode?: ExecutionMode, libs?: Record<string, LibNamespace>, options?: CadRuntimeOptions): CadRuntime;
700
721
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/runtime.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@ import { DirectExecutor } from './direct-executor.js';
27
27
  import { ModuleRegistry, ModuleRegistryError, isRelativeSpecifier } from './module-registry.js';
28
28
  import { computeLiveShapes, lineConsumes, blockConsumes } from './live-shapes.js';
29
29
  import { extractMetadata } from '../lang/metadata-extractor.js';
30
- import { configureBackends, CONTRACT_VERSION, assertContractVersion, } from '../runtime-state.js';
30
+ import { configureBackends, CONTRACT_VERSION, assertContractVersion, configureTessellation, } from '../runtime-state.js';
31
31
  import { admitCompatLib } from './admit-compat-lib.js';
32
32
  import { hasDualOp, dualOpMetaOf } from '../define-op.js';
33
33
  import { computeLibId } from './lib-id.js';
@@ -118,7 +118,6 @@ export class CadRuntime {
118
118
  // P0 增量闸门用:上次成功执行的指纹快照
119
119
  lastParamsFingerprint = null;
120
120
  lastLibIdsFingerprint = null;
121
- lastPartTransformFingerprint = null;
122
121
  lastHadKinematics = false;
123
122
  /**
124
123
  * PartName → OCCT 实体句柄,跨 execute 存活,持有所有权(顶替释放/删除/dispose 的唯一操作对象)。
@@ -275,6 +274,8 @@ export class CadRuntime {
275
274
  this.namespaces = { ...libs };
276
275
  this.securityPolicy = options.security ?? 'strict';
277
276
  this.determinismPolicy = options.determinism ?? 'error';
277
+ if (options.tessellation)
278
+ configureTessellation(options.tessellation);
278
279
  // P6/D7: register script-side unit constants (MM, INCH, DEGREE, …) on globalThis.
279
280
  // Both the VM backend (new Function resolves free identifiers from the global scope)
280
281
  // and the interpreter backend (env.ts reads globalThis[name] for S4_SAFE_GLOBALS)
@@ -318,11 +319,8 @@ export class CadRuntime {
318
319
  get brepEngineId() {
319
320
  return getActiveBrepEngineId();
320
321
  },
321
- get brepCapabilities() {
322
- return brepChainOf()?.capabilities;
323
- },
324
- get partTransform() {
325
- return brepChainOf()?.partTransform;
322
+ get hostEnv() {
323
+ return portsOf().hostEnv;
326
324
  },
327
325
  },
328
326
  kernel: {
@@ -370,7 +368,6 @@ export class CadRuntime {
370
368
  this.brepChain = {
371
369
  solidCache: this.solidCache,
372
370
  kernel,
373
- capabilities: engine?.capabilities,
374
371
  faceEvolutionCache: this.faceEvolutionCache,
375
372
  roleTableCache: this.roleTableCache,
376
373
  meshShapeCache: new Map(),
@@ -541,13 +538,7 @@ export class CadRuntime {
541
538
  const moduleLoad = await this.loadDirectModuleImports(meta, opts?.entryKey);
542
539
  if (!('seed' in moduleLoad))
543
540
  return moduleLoad;
544
- const brepChain = await this.ensureBrepChain();
545
- if (opts?.partTransform?.position) {
546
- brepChain.partTransform = {
547
- position: opts.partTransform.position,
548
- scale: opts.partTransform.scale,
549
- };
550
- }
541
+ await this.ensureBrepChain();
551
542
  const outcome = await de.execute(code, {
552
543
  imports: moduleLoad.seed,
553
544
  params: opts?.params,
@@ -634,13 +625,7 @@ export class CadRuntime {
634
625
  const moduleLoad = await this.loadDirectModuleImports(meta, opts?.entryKey);
635
626
  if (!('seed' in moduleLoad))
636
627
  return moduleLoad;
637
- const brepChain = await this.ensureBrepChain();
638
- if (opts?.partTransform?.position) {
639
- brepChain.partTransform = {
640
- position: opts.partTransform.position,
641
- scale: opts.partTransform.scale,
642
- };
643
- }
628
+ await this.ensureBrepChain();
644
629
  const outcome = await de.append(code, {
645
630
  imports: moduleLoad.seed,
646
631
  params: opts?.params,
@@ -1376,11 +1361,6 @@ export class CadRuntime {
1376
1361
  if (libIdsFp !== this.lastLibIdsFingerprint) {
1377
1362
  return this.executeDirectText(newCode, opts);
1378
1363
  }
1379
- // G8: partTransform 变化
1380
- const ptFp = stableFingerprint(opts?.partTransform ?? null);
1381
- if (ptFp !== this.lastPartTransformFingerprint) {
1382
- return this.executeDirectText(newCode, opts);
1383
- }
1384
1364
  // G5: 上一轮产生了装配运动学位姿
1385
1365
  if (this.lastHadKinematics) {
1386
1366
  return this.executeDirectText(newCode, opts);
@@ -1450,14 +1430,6 @@ export class CadRuntime {
1450
1430
  }
1451
1431
  // ── 派生缓存失效 ──
1452
1432
  this.releasePartCaches(replayKeys.map((k) => asPartName(k)));
1453
- // ── BREP 链与 partTransform 同步 ──
1454
- const brepChain = await this.ensureBrepChain();
1455
- if (opts?.partTransform?.position) {
1456
- brepChain.partTransform = {
1457
- position: opts.partTransform.position,
1458
- scale: opts.partTransform.scale,
1459
- };
1460
- }
1461
1433
  // ── 重放 ──
1462
1434
  // G4 already checked: no relative imports → moduleLoad.seed = {}
1463
1435
  const libLoadFailure = await this.autoLoadLibsFromImports(meta.imports);
@@ -1493,13 +1465,7 @@ export class CadRuntime {
1493
1465
  const libLoadFailure = await this.autoLoadLibsFromImports(meta.imports);
1494
1466
  if (libLoadFailure)
1495
1467
  return libLoadFailure;
1496
- const brepChain = await this.ensureBrepChain();
1497
- if (opts?.partTransform?.position) {
1498
- brepChain.partTransform = {
1499
- position: opts.partTransform.position,
1500
- scale: opts.partTransform.scale,
1501
- };
1502
- }
1468
+ await this.ensureBrepChain();
1503
1469
  de.clearRoundState();
1504
1470
  return this.collectDirectResult(meta, opts);
1505
1471
  }
@@ -1510,7 +1476,6 @@ export class CadRuntime {
1510
1476
  this.lastParamsFingerprint = stableFingerprint(opts?.params ?? null);
1511
1477
  const libIdsEntries = [...this.libIds.entries()].sort((a, b) => a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0);
1512
1478
  this.lastLibIdsFingerprint = stableFingerprint(libIdsEntries);
1513
- this.lastPartTransformFingerprint = stableFingerprint(opts?.partTransform ?? null);
1514
1479
  this.lastHadKinematics = this.directExecutor.kinematicsSnapshot.size > 0;
1515
1480
  }
1516
1481
  // ── 公开:释放 ──
@@ -1539,16 +1504,47 @@ export class CadRuntime {
1539
1504
  }
1540
1505
  }
1541
1506
  // ── 工厂函数 ──
1507
+ import { createApiNamespace } from '../api/api-namespace.js';
1542
1508
  /**
1543
- * Create a CadRuntime instance.
1509
+ * Create a CadRuntime with the built-in `cad` namespace auto-registered as the
1510
+ * default library.
1511
+ *
1512
+ * This is the single public `createRuntime` entry point. Hosts get "engine +
1513
+ * standard library" in one call. If `libs` already contains a `cad` key, that
1514
+ * caller-supplied namespace is kept (not overwritten).
1515
+ *
1544
1516
  * @param ports - the host-injected environment capabilities.
1545
1517
  * @param mode - the execution mode (default 'auto').
1546
- * @param libs - the host-injected library namespaces (including `cad`, which the
1547
- * root facade injects automatically; core does not assemble it by default).
1548
- * @param options - optional runtime options (e.g. `executor: 'direct' | 'module'`).
1549
- * @returns a new CadRuntime.
1518
+ * @param libs - the host-injected library namespaces. If `libs.cad` is omitted,
1519
+ * the built-in cad namespace is auto-registered as the default lib.
1520
+ * @param options - optional runtime options (e.g. `execBackend`, `tessellation`).
1521
+ * @returns a new CadRuntime with `cad` registered as the default namespace.
1550
1522
  */
1551
1523
  export function createRuntime(ports, mode, libs, options) {
1524
+ const rt = new CadRuntime(ports, mode, libs, options);
1525
+ if (!libs?.cad) {
1526
+ rt.registerLib('cad', createApiNamespace(), {
1527
+ default: true,
1528
+ packageName: '@faicad/faijs',
1529
+ });
1530
+ }
1531
+ return rt;
1532
+ }
1533
+ /**
1534
+ * Create a bare CadRuntime without auto-registering the built-in `cad` namespace.
1535
+ *
1536
+ * For hosts that want a pure engine (e.g. only using the parser / runtime
1537
+ * framework with a custom op set). `CadRuntime` itself can also be constructed
1538
+ * directly via `new CadRuntime(...)` — this function is the named factory
1539
+ * counterpart to avoid creating another same-name variant.
1540
+ *
1541
+ * @param ports - the host-injected environment capabilities.
1542
+ * @param mode - the execution mode (default 'auto').
1543
+ * @param libs - the host-injected library namespaces (no cad auto-registration).
1544
+ * @param options - optional runtime options.
1545
+ * @returns a new CadRuntime without cad registered.
1546
+ */
1547
+ export function createBareRuntime(ports, mode, libs, options) {
1552
1548
  return new CadRuntime(ports, mode, libs, options);
1553
1549
  }
1554
1550
  //# sourceMappingURL=runtime.js.map