geospec 0.1.0-beta.8 → 0.4.1-next.322

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 (116) hide show
  1. package/README.md +75 -17
  2. package/agent/doctrine.md +2 -1
  3. package/agent/geospec-authoring/SKILL.md +3 -2
  4. package/agent/geospec-authoring/api-index.md +20 -89
  5. package/agent/geospec-authoring/api-types.md +4 -481
  6. package/agent/geospec-authoring/public-api-functions.md +64 -3
  7. package/agent/geospec-authoring/public-api-index.md +245 -310
  8. package/agent/geospec-authoring/public-api-types-2.md +402 -348
  9. package/agent/geospec-authoring/public-api-types-3.md +204 -60
  10. package/agent/geospec-authoring/public-api-types.md +335 -850
  11. package/agent/resources.js +12 -12
  12. package/agent/skills.json +2 -2
  13. package/dist/assertion-client/client.d.mts +17 -16
  14. package/dist/assertion-client/client.mjs +1 -1
  15. package/dist/cli/check.mjs +2 -0
  16. package/dist/cli/cli.d.mts +48 -0
  17. package/dist/cli/cli.mjs +47 -0
  18. package/dist/cli/index.d.mts +3 -0
  19. package/dist/cli/index.mjs +1 -0
  20. package/dist/cli/main.d.mts +1 -0
  21. package/dist/cli/main.mjs +2 -0
  22. package/dist/cli/node-host.d.mts +27 -0
  23. package/dist/cli/node-host.mjs +1 -0
  24. package/dist/cli/wire-value.mjs +1 -0
  25. package/dist/config/define-config.d.mts +14 -0
  26. package/dist/config/define-config.mjs +2 -0
  27. package/dist/config/index.d.mts +4 -2
  28. package/dist/config/index.mjs +1 -1
  29. package/dist/config/node/index.mjs +1 -1
  30. package/dist/config/node/load.d.mts +4 -4
  31. package/dist/config/node/load.mjs +1 -1
  32. package/dist/config/read-geospec-config.d.mts +51 -0
  33. package/dist/config/read-geospec-config.mjs +3 -0
  34. package/dist/config/types.d.mts +15 -27
  35. package/dist/config/validate.mjs +1 -1
  36. package/dist/create-geospec.d.mts +7 -6
  37. package/dist/engine/client.d.mts +18 -16
  38. package/dist/engine/client.mjs +1 -1
  39. package/dist/engine/matchers.d.mts +10 -11
  40. package/dist/engine/pmi.types.d.mts +11 -12
  41. package/dist/engine/protocol.d.mts +7 -8
  42. package/dist/engine/protocol.mjs +1 -1
  43. package/dist/geometry-unit.d.mts +2 -3
  44. package/dist/index.d.mts +2 -2
  45. package/dist/index.mjs +1 -1
  46. package/dist/mesh/index.d.mts +2 -2
  47. package/dist/mesh/types.d.mts +8 -505
  48. package/dist/model/errors.d.mts +2 -3
  49. package/dist/model/load-model.d.mts +3 -4
  50. package/dist/model/mesh-evidence-matchers.d.mts +2 -3
  51. package/dist/model/native-model-loader.d.mts +14 -17
  52. package/dist/model/native-model-loader.mjs +1 -1
  53. package/dist/model/node/command-exporter.d.mts +5 -4
  54. package/dist/model/node/command-exporter.mjs +1 -1
  55. package/dist/model/node/index.mjs +1 -1
  56. package/dist/model/region-scope.d.mts +3 -6
  57. package/dist/model/region-scope.mjs +1 -1
  58. package/dist/model/subject.d.mts +2 -5
  59. package/dist/model/subject.mjs +1 -1
  60. package/dist/model/types.d.mts +19 -20
  61. package/dist/runner/collector.d.mts +7 -8
  62. package/dist/runner/collector.mjs +3 -1
  63. package/dist/runner/discovery.d.mts +10 -11
  64. package/dist/runner/discovery.mjs +5 -1
  65. package/dist/runner/filter.d.mts +6 -7
  66. package/dist/runner/filter.mjs +3 -1
  67. package/dist/runner/index.d.mts +4 -2
  68. package/dist/runner/index.mjs +1 -1
  69. package/dist/runner/native/index.mjs +1 -1
  70. package/dist/runner/native/native-pool-grants.d.mts +2 -3
  71. package/dist/runner/native/native-serial-runner.d.mts +4 -7
  72. package/dist/runner/native/native-serial-runner.mjs +1 -1
  73. package/dist/runner/node/engine.d.mts +39 -0
  74. package/dist/runner/node/engine.mjs +1 -0
  75. package/dist/runner/node/index.d.mts +4 -1
  76. package/dist/runner/node/index.mjs +1 -1
  77. package/dist/runner/node/node-vm-filesystem.d.mts +4 -5
  78. package/dist/runner/node/node-vm-filesystem.mjs +1 -1
  79. package/dist/runner/node/pool-runner.d.mts +76 -0
  80. package/dist/runner/node/pool-runner.mjs +1 -0
  81. package/dist/runner/node/pool-worker-entry.d.mts +46 -0
  82. package/dist/runner/node/pool-worker-entry.mjs +1 -0
  83. package/dist/runner/pool/events.mjs +1 -1
  84. package/dist/runner/pool/pool-messages.d.mts +10 -9
  85. package/dist/runner/pool/pool.d.mts +5 -7
  86. package/dist/runner/pool/pool.mjs +1 -1
  87. package/dist/runner/pool/shard-timings.d.mts +3 -4
  88. package/dist/runner/pool/worker-host.d.mts +7 -6
  89. package/dist/runner/pool/worker-host.mjs +1 -1
  90. package/dist/runner/run-geospec-module.d.mts +2 -3
  91. package/dist/runner/run-geospec-module.mjs +7 -7
  92. package/dist/runner/timeout-codes.d.mts +6 -8
  93. package/dist/runner/types.d.mts +65 -59
  94. package/dist/runner/worker/index.d.mts +1 -1
  95. package/dist/runner/worker/no-matching-tests-issue.d.mts +3 -4
  96. package/dist/runner/worker/runner-types.d.mts +17 -16
  97. package/dist/runner/worker/serial-runner.mjs +1 -1
  98. package/dist/selector/types.d.mts +22 -23
  99. package/dist/step/types.d.mts +4 -119
  100. package/dist/support/filesystem-errors.mjs +1 -0
  101. package/dist/support/hash.mjs +1 -0
  102. package/dist/support/path.mjs +1 -0
  103. package/dist/support/sha256.mjs +1 -0
  104. package/dist/support/types.d.mts +38 -0
  105. package/dist/vitest/adapter.d.mts +5 -6
  106. package/dist/vitest/adapter.mjs +1 -1
  107. package/dist/vitest/index.d.mts +0 -1
  108. package/dist/vitest/index.mjs +1 -1
  109. package/dist/vitest/node/index.d.mts +2 -0
  110. package/dist/vitest/node/index.mjs +1 -0
  111. package/dist/vitest/node/setup-project.d.mts +60 -0
  112. package/dist/vitest/node/setup-project.mjs +1 -0
  113. package/dist/vm/plain-module-vm.d.mts +13 -0
  114. package/dist/vm/plain-module-vm.mjs +8 -0
  115. package/dist/vm/types.d.mts +142 -0
  116. package/package.json +31 -10
package/README.md CHANGED
@@ -9,7 +9,7 @@ registry, and host integration. It executes no geometry on its own: every claim
9
9
  is evaluated by the compiled
10
10
  [`geospec-engine`](https://github.com/taucad/geospec/tree/main/packages/geospec-engine) core that
11
11
  the host passes to the runner. Tau's desktop/browser composition and the
12
- [`geospec` CLI](../geospec-engine/README.md) supply that engine. Authored tests
12
+ [`geospec` CLI](#runner-configuration) supply that engine. Authored tests
13
13
  do not import or select an engine, and nothing registers one globally.
14
14
 
15
15
  The following is a `*.geospec.ts` module for the CLI or Tau `test_model`:
@@ -68,14 +68,74 @@ qualification, and filtered requirements remain outside the demonstrated scope.
68
68
 
69
69
  ### Runner configuration
70
70
 
71
- Install [`@taucad/geospec-engine`](../geospec-engine) for its `geospec` CLI or
72
- Node worker pool. To embed a serial runner, pass a compiled engine to
73
- `createNativeGeoSpecRunner` from `geospec/runner/native`; it builds the native
74
- model loader and releases every admitted subject after each run. These use the
75
- same compiled composition. Other embeddings must qualify their actual binding,
76
- input representation and supported domain; shared authoring syntax alone does
77
- not establish verdict equivalence. The CLI's flags and pool options are
78
- documented in that package's README.
71
+ The `geospec` bin runs a project's specs on the compiled engine from
72
+ [`geospec-engine`](https://github.com/taucad/geospec/tree/main/packages/geospec-engine):
73
+ the native addon when this platform has one, else its WASM build. Models that
74
+ are not STEP or GLB come from the `exporters` the project's `geospec.config.*`
75
+ declares, imported once in each pool worker; without one, such a load refuses
76
+ with `GEOSPEC_EXPORTER_MISSING`.
77
+
78
+ ```bash
79
+ geospec run .
80
+ geospec run . --include "parts/**/*.geospec.ts"
81
+ geospec run . --file main.geospec.ts --test-name-pattern volume
82
+ geospec run . --workers # worker pool, auto-sized
83
+ geospec run . --workers 4 --shard-timeout 600000
84
+ geospec run . --config ci.geospec.config.ts
85
+ geospec run . --json
86
+ ```
87
+
88
+ **Spec imports.** The CLI bundles each spec with native esbuild over the
89
+ project: a spec may import project files and the GeoSpec builtins (`geospec`,
90
+ `geospec/model`, `geospec/config`). An npm package or URL import refuses with
91
+ `BUNDLER_FAILED` and a message naming the specifier; nothing is fetched or
92
+ installed. A host that resolves packages passes its own module VM as
93
+ `createModuleVm` (`CreateModuleVm` in `geospec/runner`; for a Node pool,
94
+ `moduleVmModule`). Tau's hosts inject Tau's esbuild VM this way. A browser host
95
+ has no default VM and must inject one.
96
+
97
+ | Flag | Meaning |
98
+ | --------------------------------------- | --------------------------------------------------------------------------------------------------------- |
99
+ | `--file <path>` | GeoSpec file or directory root; repeatable. Empty input discovers from the project root. |
100
+ | `--include <glob>` / `--exclude <glob>` | Vitest-style file globs; repeatable. Include defaults to `**/*.geospec.{ts,js}`. |
101
+ | `-t`, `--test-name-pattern <re>` | JavaScript regular expression matched against the full `suite > test` name. |
102
+ | `--test-timeout <ms>` | Timeout for each async test callback. |
103
+ | `--workers [n]` | Run in a worker pool. Default is one; omit the count after the flag to request available CPU parallelism. |
104
+ | `--shard-timeout <ms>` | Per-shard **non-verdict** watchdog. Off by default. |
105
+ | `--bail` | Stop after the first red file. Interactive use only — a reward run wants the complete red set. |
106
+ | `--config <path>` | The `geospec.config.*` to use instead of the one in the project root. |
107
+ | `--json` | Print exactly one JSON result document on stdout and nothing else. |
108
+
109
+ A flag replaces the config field of the same name. **The exit code is the
110
+ verdict.** `0` only when the run succeeded; any failure, any run-level issue,
111
+ and an empty selection are all `1`.
112
+
113
+ ### Checking a file with no spec
114
+
115
+ `geospec check` runs one bundled validity spec on a STEP or GLB file, so a
116
+ first use needs no `*.geospec.ts`. It takes the same runner, engine and report
117
+ as `geospec run`; the file's folder is the project root.
118
+
119
+ ```bash
120
+ geospec check bracket.step
121
+ geospec check assembly.glb --components 3 --json
122
+ ```
123
+
124
+ Each claim is its own test: no error diagnostics, closed edge incidence
125
+ (`toBeWatertight`) and a bounding box with positive size on every axis, plus
126
+ mesh integrity for a GLB or a valid BRep with closed shells for a STEP file.
127
+ `--components <n>` adds an exact connected-component count. A claim the engine
128
+ cannot decide is reported as inconclusive, never as a pass, and the exit code is
129
+ the verdict.
130
+
131
+ To embed the pool, use `createGeoSpecNodePoolRunner` from `geospec/runner/node`;
132
+ each worker owns one engine and its own exporters, and live subjects never
133
+ cross worker boundaries. To run serially in this process, pass an engine from
134
+ `createNodeGeoSpecEngine` to `createNativeGeoSpecRunner` from
135
+ `geospec/runner/native`; it builds the native model loader and releases every
136
+ admitted subject after each run. Other embeddings must qualify their actual
137
+ binding, input representation and supported domain; shared authoring syntax
138
+ alone does not establish verdict equivalence.
79
139
 
80
140
  The filters below are the shared vocabulary of the CLI, the embedded runners
81
141
  and the Tau `test_model` tool:
@@ -146,7 +206,7 @@ matches the exact retained primitive label, including any ordinal suffix.
146
206
  Inspect that label and preserve cardinality instead of guessing an occurrence
147
207
  path. Mesh input does not invent assembly ancestry or analytic faces; missing
148
208
  measure, probe or ordering evidence refuses, even through query negation.
149
- The STEP Body index currently exposes per-occurrence solid aggregates, so do
209
+ The STEP Body index exposes per-occurrence solid aggregates, so do
150
210
  not assume its Body count maps one-to-one to mesh material roots.
151
211
 
152
212
  Whole-Body contact requires no interior overlap and boundary separation within
@@ -161,9 +221,9 @@ import { loadModel } from 'geospec/model';
161
221
  const subject = await loadModel({ file: 'part.step', format: 'step' });
162
222
  ```
163
223
 
164
- For CAD source, `loadModel({ file: 'main.ts', format: 'step' })` asks the host to export STEP. The configured compiled engine admits the exact returned bytes through its OCCT binding. Export and source provenance do not by themselves certify a geometric requirement.
224
+ For CAD source, `loadModel({ file: 'main.ts', format: 'step' })` asks the host to export STEP. The configured compiled engine admits the exact returned bytes through its OCCT binding. Export and source provenance do not by themselves establish a geometric requirement.
165
225
 
166
- Measurement matchers currently support mesh evidence and prefer exact BRep evidence when it is present:
226
+ Measurement matchers support mesh evidence and prefer exact BRep evidence when it is present:
167
227
 
168
228
  ```ts
169
229
  expectGeo(subject).toHaveSurfaceArea({ value: 12_345, tolerance: 1 });
@@ -196,21 +256,19 @@ expectGeo(subject).toHaveVoidContinuity({
196
256
  These are requirement examples, not a claim that every admitted model supports
197
257
  them. `toHaveVoidContinuity` requires the declared path, material and isolation
198
258
  proposition to be proved in a qualified domain. A sampled cross-section cannot
199
- certify a continuous minimum: the general sampled profile refuses a requested
259
+ establish a continuous minimum: the general sampled profile refuses a requested
200
260
  `minCrossSection`. Restricted nominal analytic domains have separate premises;
201
261
  general mesh lumen, wall and motion qualification remains incomplete.
202
262
 
203
263
  Likewise, watertight edge incidence does not prove manifold validity, a Boolean
204
- fuse or material connectivity. Bounds and playback cannot certify contact,
264
+ fuse or material connectivity. Bounds and playback cannot establish contact,
205
265
  clearance, containment or sealing. Preserve intended geometry and tolerances;
206
266
  report unavailable evidence instead of replacing the requirement with a proxy.
207
267
 
208
268
  The [canonical API index](agent/geospec-authoring/api-index.md) describes
209
269
  ordinary authoring. The separate
210
270
  [complete public API index](agent/geospec-authoring/public-api-index.md)
211
- retains host and framework contracts. A low-level
212
- `GeometrySubject` input is not interchangeable with the opaque subject returned
213
- by canonical `loadModel`.
271
+ retains host and framework contracts.
214
272
 
215
273
  When a geometry assertion needs a parameter variant, pass that variant directly to `loadModel`. Omitting `parameters` exercises the defaults authored by the model:
216
274
 
package/agent/doctrine.md CHANGED
@@ -22,7 +22,7 @@ describe('main geometry', () => {
22
22
  });
23
23
  ```
24
24
 
25
- Specs are always TypeScript or JavaScript, whatever the model's kernel: `loadModel({ file })` evaluates `main.ts`, `main.tsx`, `main.py`, `main.scad`, `main.kcl` or `main.cs` through Tau's runtime. `test_model` discovers `*.geospec.ts` and `*.geospec.js` only.
25
+ Specs are always TypeScript or JavaScript, whatever the model's kernel: `loadModel({ file })` evaluates `main.ts`, `main.tsx`, `main.py`, `main.scad`, `main.kcl` or `main.cs` through the exporter the host or the project's `geospec.config.ts` supplies. On Tau projects that is Tau's runtime, configured in `tau.config.ts`; never set GeoSpec exporters there. `test_model` discovers `*.geospec.ts` and `*.geospec.js` only.
26
26
 
27
27
  Every matcher takes one expectation object:
28
28
 
@@ -36,6 +36,7 @@ Every matcher takes one expectation object:
36
36
  - `loadModel({ file, workUnitLimit })` sets the default claim budget for that subject, and `expectGeo(model, { workUnitLimit })` overrides it for one chain. The budget is a positive integer no greater than 512000000. A `MATCHER_TIMEOUT` refusal reports `details.limit` and, when measured, `details.used`; its `test_model` row (category `work-budget`) names in `limit.retry` the one `workUnitLimit` that can decide the claim, or `null` at the host maximum. Never treat the refusal as a pass.
37
37
  - `loadModel({ file, region: { min: [x, y, z], max: [x, y, z] } })` makes a separate claim about one millimetre box, never a stand-in for a whole-model claim. The kernel crops before export (PicoVoxel trims Voxels parts), and other kernels, STEP loads and unconfirmed crops refuse with a typed diagnostic. A cropped subject answers only bounding box, volume, surface area, mass and center of mass of its region, and its assertions record the region. Every other matcher on it refuses with `GEOSPEC_REGION_WHOLE_MODEL_CLAIM`. Name the region in the test, and keep whole-model claims on whole-model loads.
38
38
  - A host or engine limit leaves a claim undecided, never false: `test_model` reports it as inconclusive with category `analysis-limit`, `resource-limit` or `work-budget` and a typed `limit` naming the limit and its numbers. Keep the model as designed: never coarsen, shrink or crop it to fit. Only a `work-budget` row's `limit.retry` is a retry, and `testTimeout` only answers a `timeout` row; report every other limit row as not decided at this capacity.
39
+ - An unknown or mistyped expectation field refuses only that claim, with `GEOSPEC_INVALID_EXPECTATION` naming `details.field`; its `test_model` row is inconclusive, category `invalid-expectation`. Fix the expectation and keep the assertion.
39
40
  - `toHaveCenterOfMass({ point, tolerance })` takes an exact point. Per-axis ranges such as `{ y: { greaterThan: 1 } }` are refused.
40
41
 
41
42
  ## Ceilings
@@ -29,7 +29,7 @@ describe('main geometry', () => {
29
29
  });
30
30
  ```
31
31
 
32
- Specs are always TypeScript or JavaScript, whatever the model's kernel: `loadModel({ file })` evaluates `main.ts`, `main.tsx`, `main.py`, `main.scad`, `main.kcl` or `main.cs` through Tau's runtime. `test_model` discovers `*.geospec.ts` and `*.geospec.js` only.
32
+ Specs are always TypeScript or JavaScript, whatever the model's kernel: `loadModel({ file })` evaluates `main.ts`, `main.tsx`, `main.py`, `main.scad`, `main.kcl` or `main.cs` through the exporter the host or the project's `geospec.config.ts` supplies. On Tau projects that is Tau's runtime, configured in `tau.config.ts`; never set GeoSpec exporters there. `test_model` discovers `*.geospec.ts` and `*.geospec.js` only.
33
33
 
34
34
  Every matcher takes one expectation object:
35
35
 
@@ -43,6 +43,7 @@ Every matcher takes one expectation object:
43
43
  - `loadModel({ file, workUnitLimit })` sets the default claim budget for that subject, and `expectGeo(model, { workUnitLimit })` overrides it for one chain. The budget is a positive integer no greater than 512000000. A `MATCHER_TIMEOUT` refusal reports `details.limit` and, when measured, `details.used`; its `test_model` row (category `work-budget`) names in `limit.retry` the one `workUnitLimit` that can decide the claim, or `null` at the host maximum. Never treat the refusal as a pass.
44
44
  - `loadModel({ file, region: { min: [x, y, z], max: [x, y, z] } })` makes a separate claim about one millimetre box, never a stand-in for a whole-model claim. The kernel crops before export (PicoVoxel trims Voxels parts), and other kernels, STEP loads and unconfirmed crops refuse with a typed diagnostic. A cropped subject answers only bounding box, volume, surface area, mass and center of mass of its region, and its assertions record the region. Every other matcher on it refuses with `GEOSPEC_REGION_WHOLE_MODEL_CLAIM`. Name the region in the test, and keep whole-model claims on whole-model loads.
45
45
  - A host or engine limit leaves a claim undecided, never false: `test_model` reports it as inconclusive with category `analysis-limit`, `resource-limit` or `work-budget` and a typed `limit` naming the limit and its numbers. Keep the model as designed: never coarsen, shrink or crop it to fit. Only a `work-budget` row's `limit.retry` is a retry, and `testTimeout` only answers a `timeout` row; report every other limit row as not decided at this capacity.
46
+ - An unknown or mistyped expectation field refuses only that claim, with `GEOSPEC_INVALID_EXPECTATION` naming `details.field`; its `test_model` row is inconclusive, category `invalid-expectation`. Fix the expectation and keep the assertion.
46
47
  - `toHaveCenterOfMass({ point, tolerance })` takes an exact point. Per-axis ranges such as `{ y: { greaterThan: 1 } }` are refused.
47
48
 
48
49
  ## Ceilings
@@ -485,7 +486,7 @@ LoadModelSourceOptions: {
485
486
 
486
487
  ## API reference
487
488
 
488
- To read any other signature, find its name in `api-index.md`, which lists all 368 symbols by file with the lines that hold each, and read that range of the named file.
489
+ To read any other signature, find its name in `api-index.md`, which lists all 299 symbols by file with the lines that hold each, and read that range of the named file.
489
490
 
490
491
  - `api-functions.md` — Functions
491
492
  - `api-constants.md` — Constants
@@ -1,6 +1,6 @@
1
1
  # geospec API index
2
2
 
3
- geospec 0.1.0-beta.8 · 368 symbols · extracted by TypeScript 5.9.3.
3
+ geospec 0.4.0 · 299 symbols · extracted by TypeScript 5.9.3.
4
4
 
5
5
  Every symbol appears here exactly once. The heading above each block names the file with its signature, and each top-level symbol names the lines of that file which hold its declaration and members: read only that range.
6
6
 
@@ -37,7 +37,7 @@ GeoSpecAssertion (type) [lines 16-66] [9 members] — Geometry assertion collect
37
37
  GeoSpecAssertion.report (property) — Exact compiled assertion report, including core-owned bytes and polarity
38
38
  GeoSpecAssertion.loadId (property) — The host load which admitted this assertion's subject
39
39
  GeoSpecAssertion.region (property) — The crop this assertion's subject was loaded with
40
- GeoSpecAssertion.durationMs (property) — Wall-clock cost of matcher evaluation in milliseconds (R1
40
+ GeoSpecAssertion.durationMs (property) — Wall-clock cost of matcher evaluation in milliseconds (budgeted matchers only)
41
41
  GeoSpecAssemblyOccurrenceExpectation (type) [lines 68-91] [3 members] — Assembly occurrence rule accepted by `expectGeo(...).toHaveAssemblyOccurrences(...)`
42
42
  GeoSpecAssemblyOccurrenceExpectation.name (property)
43
43
  GeoSpecAssemblyOccurrenceExpectation.count (property)
@@ -203,85 +203,16 @@ GeoSpecVoidWaypoint (type) [lines 818-821] — One void-continuity waypoint
203
203
  GeoSpecVolumeExpectation (type) [lines 823-831] [2 members] — Volume expectation accepted by `expectGeo(...).toHaveVolume(...)`
204
204
  GeoSpecVolumeExpectation.value (property)
205
205
  GeoSpecVolumeExpectation.tolerance (property)
206
- BrepEvidence (type) [lines 833-1058] [11 members] — Basic exact or topology-derived BRep evidence consumed by early feature…
207
- BrepEvidence.validity (property)
208
- BrepEvidence.topologyCounts (property)
209
- BrepEvidence.boundingBox (property)
210
- BrepEvidence.massProperties (property)
211
- BrepEvidence.planarFaces (property)
212
- BrepEvidence.cylindricalFaces (property)
213
- BrepEvidence.circularHoles (property)
214
- BrepEvidence.circularHolePatterns (property)
215
- BrepEvidence.chamferFeatures (property)
216
- BrepEvidence.filletFeatures (property)
217
- BrepEvidence.minimumWallThickness (property)
218
- GeometryFileFormat (type) [lines 1060-1061] — Geometry file formats understood by GeoSpec provenance
219
- GeometryCapability (type) [lines 1063-1081] [2 members] — Capability exposed by a loaded subject
220
- GeometryCapability.kind (property)
221
- GeometryCapability.feature (property)
222
- GeometryDiagnostic (type) [lines 1083-1111] [6 members] — Diagnostic emitted by GeoSpec loaders, analyzers, and matchers
206
+ GeometryDiagnostic (type) [lines 833-861] [6 members] — Diagnostic emitted by GeoSpec loaders, analyzers, and matchers
223
207
  GeometryDiagnostic.code (property)
224
208
  GeometryDiagnostic.severity (property)
225
209
  GeometryDiagnostic.message (property)
226
210
  GeometryDiagnostic.suggestion (property)
227
211
  GeometryDiagnostic.spatial (property)
228
212
  GeometryDiagnostic.details (property)
229
- GeometryProvenance (type) [lines 1113-1133] [6 members] — Provenance recorded by GeoSpec loaders
230
- GeometryProvenance.source (property)
231
- GeometryProvenance.unit (property)
232
- GeometryProvenance.loader (property)
233
- GeometryProvenance.contentHash (property)
234
- GeometryProvenance.parameters (property)
235
- GeometryProvenance.exportIntent (property)
236
- GeometrySource (type) [lines 1135-1152] [5 members] — Source metadata for a loaded geometry subject
237
- GeometrySource.kind (property)
238
- GeometrySource.format (property)
239
- GeometrySource.path (property)
240
- GeometrySource.name (property)
241
- GeometrySource.byteLength (property)
242
- GeometrySubject (type) [lines 1154-1183] [8 members] — Canonical P0 object under test for GeoSpec
243
- GeometrySubject.kind (property)
244
- GeometrySubject.subjectId (property) — Opaque engine-owned identifier used by every protocol claim
245
- GeometrySubject.mesh (property)
246
- GeometrySubject.brep (property)
247
- GeometrySubject.step (property)
248
- GeometrySubject.provenance (property)
249
- GeometrySubject.capabilities (property)
250
- GeometrySubject.diagnostics (property)
251
- GeometrySubjectMeshEvidence (type) [lines 1185-1193] [2 members] — Wire-safe mesh summary carried by an opaque geometry subject
252
- GeometrySubjectMeshEvidence.format (property)
253
- GeometrySubjectMeshEvidence.stats (property)
254
- MeshEvidence (type) [lines 1195-1203] [2 members] — Mesh evidence loaded from geometry bytes or buffers
255
- MeshEvidence.format (property)
256
- MeshEvidence.stats (property)
257
- MeshFileFormat (type) [lines 1205-1206] — Geometry file formats supported by the P0 mesh loader
258
- MeshQualityStats (type) [lines 1208-1261] [8 members] — Triangle quality and scalar mesh metrics used by P0 GeoSpec…
259
- MeshQualityStats.triangleCount (property)
260
- MeshQualityStats.nonFiniteVertices (property)
261
- MeshQualityStats.degenerateTriangles (property)
262
- MeshQualityStats.duplicateFaces (property)
263
- MeshQualityStats.triangles (property)
264
- MeshQualityStats.surfaceArea (property)
265
- MeshQualityStats.signedVolume (property)
266
- MeshQualityStats.centerOfMass (property)
267
- MeshTriangle (type) [lines 1263-1286] [7 members] — One triangle from mesh evidence, in geometry document coordinates
268
- MeshTriangle.primitive (property)
269
- MeshTriangle.triangleIndex (property)
270
- MeshTriangle.a (property)
271
- MeshTriangle.b (property)
272
- MeshTriangle.c (property)
273
- MeshTriangle.center (property)
274
- MeshTriangle.area (property)
275
- StepEvidence (type) [lines 1288-1338] [6 members] — STEP/XDE evidence extracted while loading a STEP subject
276
- StepEvidence.schema (property)
277
- StepEvidence.unit (property)
278
- StepEvidence.productStructure (property)
279
- StepEvidence.readStrategy (property)
280
- StepEvidence.capabilities (property)
281
- StepEvidence.xde (property) — Structured AP242 XDE read result (occurrences, subshape names, datum placements)
282
- Vec3 (type) [lines 1340-1341] — Numeric 3D vector
283
- GeoSpecVec3 (type) [lines 1343-1344] — Numeric 3D vector
284
- CreateModelLoaderOptions (type) [lines 1346-1393] [9 members] — Defaults accepted by {@link import ('./load-model.js').createModelLoader}
213
+ Vec3 (type) [lines 863-864] — Numeric 3D vector
214
+ GeoSpecVec3 (type) [lines 866-867] — Numeric 3D vector
215
+ CreateModelLoaderOptions (type) [lines 869-916] [9 members] — Defaults accepted by {@link import ('./load-model.js').createModelLoader}
285
216
  CreateModelLoaderOptions.engine (property) — Initialized compiled engine supplied by the host, never selected by…
286
217
  CreateModelLoaderOptions.readSource (property) — Rooted host reader for direct filesystem or URL sources
287
218
  CreateModelLoaderOptions.format (property) — Geometry format to export when an individual call does not…
@@ -291,16 +222,16 @@ CreateModelLoaderOptions (type) [lines 1346-1393] [9 members] — Defaults accep
291
222
  CreateModelLoaderOptions.mesh (property) — Whether STEP loading should also produce mesh evidence
292
223
  CreateModelLoaderOptions.meshLinearTolerance (property) — Linear tolerance used while meshing exact BRep evidence
293
224
  CreateModelLoaderOptions.meshAngularToleranceDegrees (property) — Angular tolerance in degrees used while meshing exact BRep evidence
294
- GeoSpecExporterCapabilities (type) [lines 1395-1417] [4 members] — What a {@link GeoSpecModelExporter} declares it can do
225
+ GeoSpecExporterCapabilities (type) [lines 918-940] [4 members] — What a {@link GeoSpecModelExporter} declares it can do
295
226
  GeoSpecExporterCapabilities.formats (property) — The formats `export` produces
296
227
  GeoSpecExporterCapabilities.parameters (property) — Accepts `parameters`
297
228
  GeoSpecExporterCapabilities.region (property) — Crops to `region` (an axis-aligned millimetre box) before export
298
229
  GeoSpecExporterCapabilities.inlineSources (property) — Accepts `inline` sources, which back `loadModel({ code })`
299
- GeoSpecExportFormat (type) [lines 1419-1420] — Formats a {@link GeoSpecModelExporter} may produce from a source-kind file
300
- GeoSpecLoadRegion (type) [lines 1422-1430] [2 members] — Axis-aligned crop box in canonical Z-up millimetres
230
+ GeoSpecExportFormat (type) [lines 942-943] — Formats a {@link GeoSpecModelExporter} may produce from a source-kind file
231
+ GeoSpecLoadRegion (type) [lines 945-953] [2 members] — Axis-aligned crop box in canonical Z-up millimetres
301
232
  GeoSpecLoadRegion.min (property)
302
233
  GeoSpecLoadRegion.max (property)
303
- GeoSpecModelArtifact (type) [lines 1432-1475] [7 members] — The bytes an exporter returns, in the canonical Z-up millimetre…
234
+ GeoSpecModelArtifact (type) [lines 955-998] [7 members] — The bytes an exporter returns, in the canonical Z-up millimetre…
304
235
  GeoSpecModelArtifact.bytes (property)
305
236
  GeoSpecModelArtifact.format (property)
306
237
  GeoSpecModelArtifact.sourceUnit (property) — Unit of raw GLB coordinates
@@ -308,14 +239,14 @@ GeoSpecModelArtifact (type) [lines 1432-1475] [7 members] — The bytes an expor
308
239
  GeoSpecModelArtifact.consumedSources (property) — Every source file the export read, as a path from…
309
240
  GeoSpecModelArtifact.diagnostics (property) — Notices from a successful export, admitted with the subject so…
310
241
  GeoSpecModelArtifact.exportOptions (property) — The export options the exporter applied, recorded in the load…
311
- GeoSpecModelExporter (type) [lines 1477-1511] [6 members] — Turns a source-kind model file into GLB or STEP bytes…
242
+ GeoSpecModelExporter (type) [lines 1000-1034] [6 members] — Turns a source-kind model file into GLB or STEP bytes…
312
243
  GeoSpecModelExporter.id (property)
313
244
  GeoSpecModelExporter.extensions (property)
314
245
  GeoSpecModelExporter.capabilities (property)
315
246
  GeoSpecModelExporter.export (method)
316
247
  GeoSpecModelExporter.revision (method) — The sources an export of `file` would read now, without…
317
248
  GeoSpecModelExporter.close (method) — Releases what the exporter created for one scope
318
- GeoSpecModelExportRequest (type) [lines 1513-1557] [8 members] — One export request
249
+ GeoSpecModelExportRequest (type) [lines 1036-1080] [8 members] — One export request
319
250
  GeoSpecModelExportRequest.file (property) — Entry file, as a path from the project root
320
251
  GeoSpecModelExportRequest.projectPath (property) — Absolute project root the exporter resolves `file` and its imports…
321
252
  GeoSpecModelExportRequest.format (property)
@@ -324,12 +255,12 @@ GeoSpecModelExportRequest (type) [lines 1513-1557] [8 members] — One export re
324
255
  GeoSpecModelExportRequest.region (property) — Millimetre crop box
325
256
  GeoSpecModelExportRequest.inline (property) — Source text keyed by project-relative path
326
257
  GeoSpecModelExportRequest.signal (property)
327
- GeoSpecModelFormat (type) [lines 1559-1560] — Geometry formats accepted by {@link import ('./load-model.js').loadModel}
328
- GeoSpecModelLoader (type) [lines 1562-1563] — Function shape used by GeoSpec runners to provide model loading…
329
- ManagedGeoSpecModelLoader (type) [lines 1565-1571] [1 members] — A configured loader whose admissions can be released with its…
258
+ GeoSpecModelFormat (type) [lines 1082-1083] — Geometry formats accepted by {@link import ('./load-model.js').loadModel}
259
+ GeoSpecModelLoader (type) [lines 1085-1086] — Function shape used by GeoSpec runners to provide model loading…
260
+ ManagedGeoSpecModelLoader (type) [lines 1088-1094] [1 members] — A configured loader whose admissions can be released with its…
330
261
  ManagedGeoSpecModelLoader.dispose (method)
331
- GeoSpecConsumedSources (type) [lines 1573-1577] — The source files one export read, each with its SHA-256…
332
- LoadModelCodeOptions (type) [lines 1579-1651] [12 members] — Inline code-CAD model load options
262
+ GeoSpecConsumedSources (type) [lines 1096-1100] — The source files one export read, each with its SHA-256…
263
+ LoadModelCodeOptions (type) [lines 1102-1174] [12 members] — Inline code-CAD model load options
333
264
  LoadModelCodeOptions.code (property) — Source files keyed by project-relative path
334
265
  LoadModelCodeOptions.file (property) — Entry path to render from {@link code }
335
266
  LoadModelCodeOptions.rootDir (property) — Not accepted
@@ -342,7 +273,7 @@ LoadModelCodeOptions (type) [lines 1579-1651] [12 members] — Inline code-CAD m
342
273
  LoadModelCodeOptions.meshAngularToleranceDegrees (property) — Angular tolerance in degrees used while meshing exact BRep evidence
343
274
  LoadModelCodeOptions.workUnitLimit (property) — Default work-unit budget for every claim on this subject
344
275
  LoadModelCodeOptions.region (property) — Axis-aligned millimetre box the exporter crops the model to before…
345
- LoadModelFileOptions (type) [lines 1653-1727] [11 members] — Filesystem-backed model load options
276
+ LoadModelFileOptions (type) [lines 1176-1250] [11 members] — Filesystem-backed model load options
346
277
  LoadModelFileOptions.file (property) — Model file to render, as a path from the project…
347
278
  LoadModelFileOptions.rootDir (property) — Project-relative folder `file` resolves in, for a suite that loads…
348
279
  LoadModelFileOptions.projectPath (property) — Absolute project root passed to the exporter
@@ -354,7 +285,7 @@ LoadModelFileOptions (type) [lines 1653-1727] [11 members] — Filesystem-backed
354
285
  LoadModelFileOptions.meshAngularToleranceDegrees (property) — Angular tolerance in degrees used while meshing exact BRep evidence
355
286
  LoadModelFileOptions.workUnitLimit (property) — Default work-unit budget for every claim on this subject
356
287
  LoadModelFileOptions.region (property) — Axis-aligned millimetre box the exporter crops the model to before…
357
- LoadModelOptions (type) [lines 1729-1754] [8 members] — Options accepted by {@link import ('./load-model.js').loadModel}
288
+ LoadModelOptions (type) [lines 1252-1277] [8 members] — Options accepted by {@link import ('./load-model.js').loadModel}
358
289
  LoadModelOptions.rootDir (property) — Project-relative folder `file` resolves in, for a suite that loads…
359
290
  LoadModelOptions.format (property) — Geometry format to export
360
291
  LoadModelOptions.parameters (property) — Explicit parameters passed to the exporter
@@ -363,7 +294,7 @@ LoadModelOptions (type) [lines 1729-1754] [8 members] — Options accepted by {@
363
294
  LoadModelOptions.meshLinearTolerance (property) — Linear tolerance used while meshing exact BRep evidence
364
295
  LoadModelOptions.meshAngularToleranceDegrees (property) — Angular tolerance in degrees used while meshing exact BRep evidence
365
296
  LoadModelOptions.workUnitLimit (property) — Default work-unit budget for every claim on this subject
366
- LoadModelSourceOptions (type) [lines 1756-1836] [13 members] — Direct geometry-source model load options
297
+ LoadModelSourceOptions (type) [lines 1279-1359] [13 members] — Direct geometry-source model load options
367
298
  LoadModelSourceOptions.source (property) — Geometry bytes, path, browser file/blob, or in-memory mesh buffer
368
299
  LoadModelSourceOptions.resources (property) — Named external resources consumed alongside the direct geometry bytes
369
300
  LoadModelSourceOptions.rootDir (property) — Project-relative folder a path `source` and each resource path resolve…