@faicad/faijs 0.19.0 → 0.22.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/dist/api/brep-mirror/joinery-brep.d.ts.map +1 -1
  2. package/dist/api/brep-mirror/joinery-brep.js +3 -1
  3. package/dist/api/brep-mirror/joinery-brep.js.map +1 -1
  4. package/dist/api/generated/script-face-manifest.d.ts +4 -0
  5. package/dist/api/generated/script-face-manifest.d.ts.map +1 -1
  6. package/dist/api/generated/script-face-manifest.js.map +1 -1
  7. package/dist/api/knurl.d.ts.map +1 -1
  8. package/dist/api/knurl.js +1 -0
  9. package/dist/api/knurl.js.map +1 -1
  10. package/dist/api/primitives.d.ts +4 -3
  11. package/dist/api/primitives.d.ts.map +1 -1
  12. package/dist/api/primitives.js +9 -3
  13. package/dist/api/primitives.js.map +1 -1
  14. package/dist/api/profile.d.ts +34 -5
  15. package/dist/api/profile.d.ts.map +1 -1
  16. package/dist/api/profile.js +60 -9
  17. package/dist/api/profile.js.map +1 -1
  18. package/dist/api/punch-hole.d.ts +3 -0
  19. package/dist/api/punch-hole.d.ts.map +1 -1
  20. package/dist/api/punch-hole.js.map +1 -1
  21. package/dist/api/sketch-on-plane.d.ts +12 -6
  22. package/dist/api/sketch-on-plane.d.ts.map +1 -1
  23. package/dist/api/sketch-on-plane.js +11 -8
  24. package/dist/api/sketch-on-plane.js.map +1 -1
  25. package/dist/api/surface/arg-spec.d.ts +8 -0
  26. package/dist/api/surface/arg-spec.d.ts.map +1 -1
  27. package/dist/api/surface/arg-spec.js.map +1 -1
  28. package/dist/api/transform.d.ts +5 -5
  29. package/dist/api/transform.d.ts.map +1 -1
  30. package/dist/api/transform.js +12 -10
  31. package/dist/api/transform.js.map +1 -1
  32. package/dist/api/xml-dom.d.ts +27 -0
  33. package/dist/api/xml-dom.d.ts.map +1 -0
  34. package/dist/api/xml-dom.js +45 -0
  35. package/dist/api/xml-dom.js.map +1 -0
  36. package/dist/brep/brep-ops.d.ts +4 -4
  37. package/dist/brep/brep-ops.d.ts.map +1 -1
  38. package/dist/brep/brep-ops.js +8 -6
  39. package/dist/brep/brep-ops.js.map +1 -1
  40. package/dist/brep/brep-topology.d.ts.map +1 -1
  41. package/dist/brep/brep-topology.js +3 -1
  42. package/dist/brep/brep-topology.js.map +1 -1
  43. package/dist/brep/export/export-model.d.ts +79 -0
  44. package/dist/brep/export/export-model.d.ts.map +1 -0
  45. package/dist/brep/export/export-model.js +335 -0
  46. package/dist/brep/export/export-model.js.map +1 -0
  47. package/dist/brep/primitives-brep.d.ts.map +1 -1
  48. package/dist/brep/primitives-brep.js +3 -1
  49. package/dist/brep/primitives-brep.js.map +1 -1
  50. package/dist/brepkit-kernel/brepkitKernel.d.ts.map +1 -1
  51. package/dist/brepkit-kernel/brepkitKernel.js +4 -2
  52. package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
  53. package/dist/cad-runtime/direct-executor.d.ts +4 -0
  54. package/dist/cad-runtime/direct-executor.d.ts.map +1 -1
  55. package/dist/cad-runtime/direct-executor.js +17 -1
  56. package/dist/cad-runtime/direct-executor.js.map +1 -1
  57. package/dist/cad-runtime/runtime.d.ts +24 -1
  58. package/dist/cad-runtime/runtime.d.ts.map +1 -1
  59. package/dist/cad-runtime/runtime.js +53 -3
  60. package/dist/cad-runtime/runtime.js.map +1 -1
  61. package/dist/define-op.d.ts +22 -0
  62. package/dist/define-op.d.ts.map +1 -1
  63. package/dist/define-op.js +15 -0
  64. package/dist/define-op.js.map +1 -1
  65. package/dist/env-agnostic.d.ts +7 -7
  66. package/dist/env-agnostic.d.ts.map +1 -1
  67. package/dist/env-agnostic.js +3 -3
  68. package/dist/env-agnostic.js.map +1 -1
  69. package/dist/geometry2d/bridge/lift-on-plane.d.ts.map +1 -1
  70. package/dist/geometry2d/bridge/lift-on-plane.js +6 -0
  71. package/dist/geometry2d/bridge/lift-on-plane.js.map +1 -1
  72. package/dist/geometry2d/pen-sketcher.d.ts +25 -0
  73. package/dist/geometry2d/pen-sketcher.d.ts.map +1 -1
  74. package/dist/geometry2d/pen-sketcher.js +43 -0
  75. package/dist/geometry2d/pen-sketcher.js.map +1 -1
  76. package/dist/lang/code-to-args.d.ts +29 -3
  77. package/dist/lang/code-to-args.d.ts.map +1 -1
  78. package/dist/lang/code-to-args.js +41 -2
  79. package/dist/lang/code-to-args.js.map +1 -1
  80. package/dist/lang/codegen.d.ts +45 -1
  81. package/dist/lang/codegen.d.ts.map +1 -1
  82. package/dist/lang/codegen.js +135 -6
  83. package/dist/lang/codegen.js.map +1 -1
  84. package/dist/lang/host-arg.d.ts +6 -0
  85. package/dist/lang/host-arg.d.ts.map +1 -1
  86. package/dist/lang/host-arg.js.map +1 -1
  87. package/dist/lang/metadata-extractor.d.ts +25 -0
  88. package/dist/lang/metadata-extractor.d.ts.map +1 -1
  89. package/dist/lang/metadata-extractor.js +289 -25
  90. package/dist/lang/metadata-extractor.js.map +1 -1
  91. package/dist/lang/parse-error.d.ts +7 -1
  92. package/dist/lang/parse-error.d.ts.map +1 -1
  93. package/dist/lang/parse-error.js.map +1 -1
  94. package/dist/lang/security-scanner.d.ts +9 -1
  95. package/dist/lang/security-scanner.d.ts.map +1 -1
  96. package/dist/lang/security-scanner.js +38 -1
  97. package/dist/lang/security-scanner.js.map +1 -1
  98. package/dist/mesh/io.d.ts +62 -9
  99. package/dist/mesh/io.d.ts.map +1 -1
  100. package/dist/mesh/io.js +124 -17
  101. package/dist/mesh/io.js.map +1 -1
  102. package/dist/mesh/threemf-loader.d.ts +15 -0
  103. package/dist/mesh/threemf-loader.d.ts.map +1 -0
  104. package/dist/mesh/threemf-loader.js +163 -0
  105. package/dist/mesh/threemf-loader.js.map +1 -0
  106. package/dist/mesh/transform.d.ts +2 -2
  107. package/dist/mesh/transform.d.ts.map +1 -1
  108. package/dist/mesh/transform.js +3 -3
  109. package/dist/mesh/transform.js.map +1 -1
  110. package/dist/mesh/types.d.ts +1 -1
  111. package/dist/mesh/types.d.ts.map +1 -1
  112. package/dist/mesh/types.js.map +1 -1
  113. package/dist/node-host/cli.d.ts.map +1 -1
  114. package/dist/node-host/cli.js +53 -26
  115. package/dist/node-host/cli.js.map +1 -1
  116. package/dist/occt-kernel/occtKernel.d.ts.map +1 -1
  117. package/dist/occt-kernel/occtKernel.js +4 -2
  118. package/dist/occt-kernel/occtKernel.js.map +1 -1
  119. package/dist/occt-kernel/topologyExt.d.ts.map +1 -1
  120. package/dist/occt-kernel/topologyExt.js +4 -1
  121. package/dist/occt-kernel/topologyExt.js.map +1 -1
  122. package/dist/runtime-state.d.ts +18 -0
  123. package/dist/runtime-state.d.ts.map +1 -1
  124. package/dist/runtime-state.js +23 -0
  125. package/dist/runtime-state.js.map +1 -1
  126. package/dist/sdk.d.ts +1 -1
  127. package/dist/sdk.d.ts.map +1 -1
  128. package/dist/sdk.js +1 -1
  129. package/dist/sdk.js.map +1 -1
  130. package/dist/tolerance.d.ts +38 -0
  131. package/dist/tolerance.d.ts.map +1 -0
  132. package/dist/tolerance.js +40 -0
  133. package/dist/tolerance.js.map +1 -0
  134. package/dist/topology/naming/score.js +3 -3
  135. package/dist/topology/naming/score.js.map +1 -1
  136. package/dist/units.d.ts +248 -0
  137. package/dist/units.d.ts.map +1 -0
  138. package/dist/units.js +397 -0
  139. package/dist/units.js.map +1 -0
  140. package/package.json +11 -2
@@ -27,6 +27,7 @@ import type { SelectorRuntimeData } from '../topology/build-selector-runtime.js'
27
27
  import type { SelectorRuntime } from '../topology/types.js';
28
28
  import { type PartName } from '../identity.js';
29
29
  import type { ExecBackendChoice } from './exec-backend.js';
30
+ import { type OpDimMap } from '../lang/metadata-extractor.js';
30
31
  import { type StdlibNamespace, type AssemblyKinematicsPose } from '../runtime-state.js';
31
32
  export { computeContentKey } from './content-key.js';
32
33
  export { stableFingerprint } from './content-key.js';
@@ -38,7 +39,7 @@ import { type DeterminismPolicy } from '../lang/determinism-scanner.js';
38
39
  */
39
40
  export interface CheckError {
40
41
  /** The stage that produced the error ('keep' = keep directive validation). */
41
- stage: 'parse' | 'symbol' | 'reference' | 'keep' | 'security';
42
+ stage: 'parse' | 'symbol' | 'reference' | 'keep' | 'security' | 'dimension';
42
43
  message: string;
43
44
  line?: number;
44
45
  stmtId?: string;
@@ -146,6 +147,12 @@ export interface ExecutionResult {
146
147
  * 消费语义(asm.solve() 保持 R0 语句形态,与 do_assemble 现状一致)。
147
148
  */
148
149
  kinematics?: Map<PartName, AssemblyKinematicsPose>;
150
+ /**
151
+ * 文件声明单位(unit-system §10.6):load 语句读出的「文件自己声明的单位」,
152
+ * key 为 PartName。元数据(宿主写进 sourceUnit、导出目标判定),不参与几何
153
+ * 运算——坐标已是基准值,按它再缩放 = 双重换算。
154
+ */
155
+ detectedUnits?: Map<PartName, string>;
149
156
  }
150
157
  /**
151
158
  * Options controlling a single CadRuntime execution. All inputs are code text
@@ -340,6 +347,22 @@ export declare class CadRuntime {
340
347
  }): void;
341
348
  /** The runtime's default namespace binding name (host-declared; 'cad' by default). */
342
349
  get defaultNs(): string;
350
+ /**
351
+ * P4/P6 (unit-system D8): 汇总已注册 op 的量纲声明(callee → { paramDims, retDim }),
352
+ * 供 extractMetadata 的 dimension pass 消费。键 = 脚本面 callee 名(含命名空间内成员名,
353
+ * 如 `cad.box`)。未声明量纲的 op / 非 op 函数跳过。lang/ 不依赖 op 注册表——由本运行时
354
+ * 在此注入,符合 D8「校验器怎么拿到声明」分层。
355
+ */
356
+ private buildOpDims;
357
+ /**
358
+ * Public accessor for the op dimension declarations built by {@link buildOpDims}
359
+ * (unit-system G4): hosts need the same callee → { paramDims, retDim, slotMap }
360
+ * map the dimension pass consumes so they can serialize with correct unit
361
+ * literals without keeping a second copy of the table.
362
+ *
363
+ * @returns the op dimension map (paramDims / retDim / slotMap per op name).
364
+ */
365
+ getOpDims(): OpDimMap;
343
366
  constructor(ports: HostPorts, mode?: ExecutionMode, libs?: Record<string, StdlibNamespace>, options?: CadRuntimeOptions);
344
367
  /**
345
368
  * 认领全局 backends 配置(P2 修复):全局 backends 是单例,任何 runtime 创建都会
@@ -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":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAI9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAKxD,OAAO,EAAc,KAAK,QAAQ,EAAe,MAAM,aAAa,CAAA;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAIvD,OAAO,EAAoC,KAAK,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC5F,OAAO,EAEkB,KAAK,eAAe,EAC3C,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAA;AAMzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAuC,KAAK,aAAa,EAAE,MAAM,UAAU,CAAA;AAClF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAI1D,OAAO,EAA8C,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAShH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,8EAA8E;IAC9E,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CAAA;IAC3E,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+FAA+F;IAC/F,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,iDAAiD;IACjD,MAAM,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CACnD;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAA;AAE1D;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,QAAQ,EAAE,QAAQ,CAAA;IAClB,iBAAiB;IACjB,MAAM,EAAE,cAAc,CAAA;IACtB,6BAA6B;IAC7B,IAAI,EAAE,mBAAmB,CAAA;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,GAAG,aAAa,CAAC,CAAA;IAC7C,iCAAiC;IACjC,SAAS,EAAE,cAAc,CAAA;IACzB,aAAa;IACb,SAAS,EAAE,aAAa,EAAE,CAAA;IAC1B,cAAc;IACd,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,8HAA8H;IAC9H,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7F,yDAAyD;IACzD,UAAU,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,CAAC,CAAA;IACxE;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IACtC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IAClC;;;OAGG;IACH,SAAS,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;IACrC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAA;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACrC;;;;OAIG;IACH,UAAU,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAA;IAClD;;;;OAIG;IACH,aAAa,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,sCAAsC;IACtC,aAAa,CAAC,EAAE;QAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAA;IACxF,6CAA6C;IAC7C,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACzD;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;IAClC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAKD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAE7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAiBnE;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAExC,+DAA+D;IAC/D,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC5B,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM;;IAH3B,+DAA+D;IACtD,WAAW,EAAE,MAAM;IAC5B,+DAA+D;IACtD,UAAU,EAAE,MAAM;CAS9B;AA2BD,YAAY,EAAE,iBAAiB,EAAE,CAAA;AAEjC;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAA;IAC/B;;;;OAIG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAA;CAChC;AAED;;;;;;;;;GASG;AACH,qBAAa,UAAU;IACrB,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,kCAAkC;IAClC,QAAQ,CAAC,YAAY,EAAG,QAAQ,CAAS;IAEzC,4DAA4D;IAC5D,OAAO,CAAC,cAAc,CAIlB;IAEJ,yEAAyE;IACzE,OAAO,CAAC,eAAe,CAAsB;IAC7C,wCAAwC;IACxC,OAAO,CAAC,cAAc,CAAoB;IAG1C,OAAO,CAAC,qBAAqB,CAAsB;IACnD,OAAO,CAAC,qBAAqB,CAAsB;IACnD,OAAO,CAAC,4BAA4B,CAAsB;IAC1D,OAAO,CAAC,iBAAiB,CAAQ;IAEjC;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAkC;IAEpD,2DAA2D;IAC3D,OAAO,CAAC,kBAAkB,CAA6C;IAEvE,+EAA+E;IAC/E,OAAO,CAAC,cAAc,CAA+B;IAErD,+DAA+D;IAC/D,OAAO,CAAC,MAAM,CAA6B;IAE3C;;;OAGG;IACH,OAAO,CAAC,SAAS,CAA8B;IAE/C;;;;OAIG;IACH,OAAO,CAAC,aAAa,CAAoC;IAEzD,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAE/C,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAE5C,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,oDAAoD;IACpD,OAAO,CAAC,mBAAmB,CAAe;IAE1C,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiC;IACtD,wDAAwD;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,yFAAyF;IACzF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA4B;IAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC;qEACiE;IACjE,OAAO,CAAC,aAAa,CAAQ;IAE7B;;;;;;;;;OASG;IACH;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IA0BpJ,sFAAsF;IACtF,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAkBnB;;;;;;;OAOG;IACH,SAAS,IAAI,QAAQ;gBAKnB,KAAK,EAAE,SAAS,EAChB,IAAI,GAAE,aAAsB,EAC5B,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAM,EAC1C,OAAO,GAAE,iBAAsB;IA+BjC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,aAAa;IAoCrB;;;;;OAKG;YACW,eAAe;IAuB7B;;;;;;;;;OASG;YACW,iBAAiB;IAmB/B,mCAAmC;IACnC,MAAM,KAAK,cAAc,IAAI,MAAM,GAAG,IAAI,CAEzC;IAED;;;;;;OAMG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAI5E;;;;;;;;OAQG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAI3E;;;;;;;;OAQG;YACW,kBAAkB;IAmDhC,4FAA4F;IAC5F,OAAO,CAAC,uBAAuB;IAU/B,2DAA2D;IAC3D,OAAO,CAAC,iBAAiB;IAWzB;;;;OAIG;YACW,iBAAiB;IAoC/B,0EAA0E;IAC1E,OAAO,CAAC,iBAAiB;IAMzB;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;;OAGG;YACW,gBAAgB;IAK9B;;;;OAIG;YACW,gBAAgB;IA6C9B,gEAAgE;IAChE,OAAO,CAAC,YAAY;IAUpB;;;;OAIG;YACW,uBAAuB;IA8BrC,yEAAyE;YAC3D,eAAe;IAyB7B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IA4G3B,gEAAgE;IAChE,OAAO,CAAC,MAAM,CAAC,cAAc;IAO7B;;;;;;;OAOG;IACH,OAAO,CAAC,yBAAyB;IAuDjC,6DAA6D;IAC7D,OAAO,CAAC,gBAAgB;IAoBxB;;;;OAIG;YACW,uBAAuB;IAqCrC;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAkCxB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA0B1B;;;;;;;;;;;;OAYG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAM/F;;;;OAIG;IACH,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,SAAS;IAItD;;;;;OAKG;IACH,sBAAsB,CACpB,QAAQ,EAAE,QAAQ,GACjB;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,CAAA;KAAE,GAAG,SAAS;IAIhF;;;;;;OAMG;IACH,qBAAqB,CACnB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,KAAK,EACb,gBAAgB,EAAE,MAAM,GACvB,IAAI;IAQP,uDAAuD;IACvD,mBAAmB,IAAI,IAAI;IAO3B;;;;;;;;;;OAUG;IACH,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,mBAAmB,GAAG,IAAI;IAWxF;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,GAAG,SAAS;IAIzD;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIxC;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,eAAe,GAAG,IAAI;IAsB7D;;;;;;;;OAQG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;IAiChC;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;;;;;;;;;;;;;;;OAgBG;YACW,iBAAiB;IAqK/B;;OAEG;YACW,cAAc;IAqB5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;;OAGG;IACH,OAAO,IAAI,IAAI;CAchB;AAID;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,UAAU,CAErJ"}
@@ -28,9 +28,10 @@ import { computeLiveShapes, lineConsumes, blockConsumes } from './live-shapes.js
28
28
  import { extractMetadata } from '../lang/metadata-extractor.js';
29
29
  import { configureBackends, CONTRACT_VERSION, assertContractVersion, } from '../runtime-state.js';
30
30
  import { admitCompatLib } from './admit-compat-lib.js';
31
- import { hasDualOp } from '../define-op.js';
31
+ import { hasDualOp, dualOpMetaOf } from '../define-op.js';
32
32
  import { computeLibId } from './lib-id.js';
33
33
  import { computeContentKey, stableFingerprint } from './content-key.js';
34
+ import { SCRIPT_UNIT_CONSTANTS } from '../units.js';
34
35
  export { computeContentKey } from './content-key.js';
35
36
  export { stableFingerprint } from './content-key.js';
36
37
  import { isCompoundLike, getSlot, ensureSlot } from '../shape.js';
@@ -223,6 +224,43 @@ export class CadRuntime {
223
224
  get defaultNs() {
224
225
  return this.defaultNsName;
225
226
  }
227
+ /**
228
+ * P4/P6 (unit-system D8): 汇总已注册 op 的量纲声明(callee → { paramDims, retDim }),
229
+ * 供 extractMetadata 的 dimension pass 消费。键 = 脚本面 callee 名(含命名空间内成员名,
230
+ * 如 `cad.box`)。未声明量纲的 op / 非 op 函数跳过。lang/ 不依赖 op 注册表——由本运行时
231
+ * 在此注入,符合 D8「校验器怎么拿到声明」分层。
232
+ */
233
+ buildOpDims() {
234
+ const out = {};
235
+ for (const [binding, ns] of Object.entries(this.libs)) {
236
+ if (!ns || typeof ns !== 'object')
237
+ continue;
238
+ for (const [name, value] of Object.entries(ns)) {
239
+ if (typeof value !== 'function')
240
+ continue;
241
+ const meta = dualOpMetaOf(value);
242
+ if (!meta || (!meta.paramDims && !meta.retDim))
243
+ continue;
244
+ out[`${binding}.${name}`] = {
245
+ paramDims: meta.paramDims,
246
+ retDim: meta.retDim,
247
+ ...(meta.slotMap ? { slotMap: meta.slotMap } : {}),
248
+ };
249
+ }
250
+ }
251
+ return out;
252
+ }
253
+ /**
254
+ * Public accessor for the op dimension declarations built by {@link buildOpDims}
255
+ * (unit-system G4): hosts need the same callee → { paramDims, retDim, slotMap }
256
+ * map the dimension pass consumes so they can serialize with correct unit
257
+ * literals without keeping a second copy of the table.
258
+ *
259
+ * @returns the op dimension map (paramDims / retDim / slotMap per op name).
260
+ */
261
+ getOpDims() {
262
+ return this.buildOpDims();
263
+ }
226
264
  constructor(ports, mode = 'auto', libs = {}, options = {}) {
227
265
  this.ports = ports;
228
266
  this.mode = mode;
@@ -230,6 +268,15 @@ export class CadRuntime {
230
268
  this.namespaces = { ...libs };
231
269
  this.securityPolicy = options.security ?? 'strict';
232
270
  this.determinismPolicy = options.determinism ?? 'error';
271
+ // P6/D7: register script-side unit constants (MM, INCH, DEGREE, …) on globalThis.
272
+ // Both the VM backend (new Function resolves free identifiers from the global scope)
273
+ // and the interpreter backend (env.ts reads globalThis[name] for S4_SAFE_GLOBALS)
274
+ // need these values. Idempotent — safe to call across multiple runtime instances.
275
+ const g = globalThis;
276
+ for (const [name, value] of Object.entries(SCRIPT_UNIT_CONSTANTS)) {
277
+ if (!(name in g))
278
+ g[name] = value;
279
+ }
233
280
  this.directExecutor = new DirectExecutor({
234
281
  namespaces: this.namespaces,
235
282
  setSolid: (partName, solid) => { this.solidCache.set(partName, solid); },
@@ -775,6 +822,7 @@ export class CadRuntime {
775
822
  naming: naming.size > 0 ? naming : undefined,
776
823
  compounds: compounds.size > 0 ? compounds : undefined,
777
824
  kinematics: de.kinematicsSnapshot.size > 0 ? de.kinematicsSnapshot : undefined,
825
+ detectedUnits: de.detectedUnitsSnapshot.size > 0 ? de.detectedUnitsSnapshot : undefined,
778
826
  changed: deChanged ? deChanged.map(asPartName) : undefined,
779
827
  activeValues: activeValues.size > 0 ? activeValues : undefined,
780
828
  };
@@ -1115,7 +1163,7 @@ export class CadRuntime {
1115
1163
  */
1116
1164
  check(code) {
1117
1165
  try {
1118
- const meta = extractMetadata(code, { defaultNs: this.defaultNsName, security: this.securityPolicy, namespaces: Object.keys(this.libs) });
1166
+ const meta = extractMetadata(code, { defaultNs: this.defaultNsName, security: this.securityPolicy, namespaces: Object.keys(this.libs), opDims: this.buildOpDims() });
1119
1167
  return {
1120
1168
  ok: true,
1121
1169
  errors: [],
@@ -1128,7 +1176,9 @@ export class CadRuntime {
1128
1176
  }
1129
1177
  catch (err) {
1130
1178
  if (err instanceof ParseError) {
1131
- const stage = err.code === 'E_SECURITY' ? 'security' : 'parse';
1179
+ const stage = err.code === 'E_SECURITY' ? 'security'
1180
+ : err.code === 'E_DIM_BARE_NUMBER' || err.code === 'E_DIM_MISMATCH' || err.code === 'E_DIM_UNKNOWN_UNIT' ? 'dimension'
1181
+ : 'parse';
1132
1182
  return {
1133
1183
  ok: false,
1134
1184
  errors: [{ stage, message: err.message, line: err.line, ...(err.code ? { code: err.code } : {}), ...(err.ruleId ? { ruleId: err.ruleId } : {}) }],