@ifc-lite/clash 1.7.0 → 1.9.0

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 (89) hide show
  1. package/README.md +18 -0
  2. package/dist/adapters/ifcx.d.ts.map +1 -1
  3. package/dist/adapters/ifcx.js +22 -36
  4. package/dist/adapters/ifcx.js.map +1 -1
  5. package/dist/adapters/shared.d.ts +61 -0
  6. package/dist/adapters/shared.d.ts.map +1 -0
  7. package/dist/adapters/shared.js +143 -0
  8. package/dist/adapters/shared.js.map +1 -0
  9. package/dist/adapters/step.d.ts +62 -3
  10. package/dist/adapters/step.d.ts.map +1 -1
  11. package/dist/adapters/step.js +180 -89
  12. package/dist/adapters/step.js.map +1 -1
  13. package/dist/analysis.d.ts +10 -1
  14. package/dist/analysis.d.ts.map +1 -1
  15. package/dist/analysis.js +20 -0
  16. package/dist/analysis.js.map +1 -1
  17. package/dist/contact/index.d.ts +14 -0
  18. package/dist/contact/index.d.ts.map +1 -1
  19. package/dist/contact/index.js +14 -0
  20. package/dist/contact/index.js.map +1 -1
  21. package/dist/contact/min-distance.d.ts +87 -0
  22. package/dist/contact/min-distance.d.ts.map +1 -0
  23. package/dist/contact/min-distance.js +255 -0
  24. package/dist/contact/min-distance.js.map +1 -0
  25. package/dist/contact/narrow-phase.d.ts +3 -2
  26. package/dist/contact/narrow-phase.d.ts.map +1 -1
  27. package/dist/contact/narrow-phase.js +32 -14
  28. package/dist/contact/narrow-phase.js.map +1 -1
  29. package/dist/contact/shared-faces.js +10 -1
  30. package/dist/contact/shared-faces.js.map +1 -1
  31. package/dist/contact/tri-tri.d.ts +33 -7
  32. package/dist/contact/tri-tri.d.ts.map +1 -1
  33. package/dist/contact/tri-tri.js +37 -14
  34. package/dist/contact/tri-tri.js.map +1 -1
  35. package/dist/duplicate-metric.d.ts +26 -8
  36. package/dist/duplicate-metric.d.ts.map +1 -1
  37. package/dist/duplicate-metric.js +26 -8
  38. package/dist/duplicate-metric.js.map +1 -1
  39. package/dist/duplicates.d.ts +9 -0
  40. package/dist/duplicates.d.ts.map +1 -1
  41. package/dist/duplicates.js +53 -18
  42. package/dist/duplicates.js.map +1 -1
  43. package/dist/engine-ts/broad.js +20 -2
  44. package/dist/engine-ts/broad.js.map +1 -1
  45. package/dist/engine-ts/depth.d.ts +99 -0
  46. package/dist/engine-ts/depth.d.ts.map +1 -0
  47. package/dist/engine-ts/depth.js +172 -0
  48. package/dist/engine-ts/depth.js.map +1 -0
  49. package/dist/engine-ts/kernel.d.ts +3 -1
  50. package/dist/engine-ts/kernel.d.ts.map +1 -1
  51. package/dist/engine-ts/narrow.d.ts +7 -1
  52. package/dist/engine-ts/narrow.d.ts.map +1 -1
  53. package/dist/engine-ts/narrow.js +53 -95
  54. package/dist/engine-ts/narrow.js.map +1 -1
  55. package/dist/engine-ts/obb.d.ts +116 -0
  56. package/dist/engine-ts/obb.d.ts.map +1 -0
  57. package/dist/engine-ts/obb.js +331 -0
  58. package/dist/engine-ts/obb.js.map +1 -0
  59. package/dist/engine-ts/orchestrator.d.ts.map +1 -1
  60. package/dist/engine-ts/orchestrator.js +3 -13
  61. package/dist/engine-ts/orchestrator.js.map +1 -1
  62. package/dist/engine-ts/tri-mesh.d.ts +88 -22
  63. package/dist/engine-ts/tri-mesh.d.ts.map +1 -1
  64. package/dist/engine-ts/tri-mesh.js +155 -48
  65. package/dist/engine-ts/tri-mesh.js.map +1 -1
  66. package/dist/engine-ts/ts-kernel.d.ts.map +1 -1
  67. package/dist/engine-ts/ts-kernel.js +1 -0
  68. package/dist/engine-ts/ts-kernel.js.map +1 -1
  69. package/dist/engine-wasm/wasm-kernel.d.ts.map +1 -1
  70. package/dist/engine-wasm/wasm-kernel.js +7 -0
  71. package/dist/engine-wasm/wasm-kernel.js.map +1 -1
  72. package/dist/index.d.ts +2 -2
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +2 -2
  75. package/dist/index.js.map +1 -1
  76. package/dist/math/aabb.d.ts +10 -1
  77. package/dist/math/aabb.d.ts.map +1 -1
  78. package/dist/math/aabb.js +33 -13
  79. package/dist/math/aabb.js.map +1 -1
  80. package/dist/selectors.d.ts.map +1 -1
  81. package/dist/selectors.js +20 -4
  82. package/dist/selectors.js.map +1 -1
  83. package/dist/triage.d.ts.map +1 -1
  84. package/dist/triage.js +11 -3
  85. package/dist/triage.js.map +1 -1
  86. package/dist/types.d.ts +39 -0
  87. package/dist/types.d.ts.map +1 -1
  88. package/dist/types.js.map +1 -1
  89. package/package.json +10 -9
@@ -1 +1 @@
1
- {"version":3,"file":"triage.d.ts","sourceRoot":"","sources":["../src/triage.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;CAC/C;AAED,iFAAiF;AACjF,wBAAgB,uBAAuB,IAAI,MAAM,CAsBhD;AAUD,qEAAqE;AACrE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CA4ClE;AAQD,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,iBAAiB,CAoBxF"}
1
+ {"version":3,"file":"triage.d.ts","sourceRoot":"","sources":["../src/triage.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAS,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;CAC/C;AAED,iFAAiF;AACjF,wBAAgB,uBAAuB,IAAI,MAAM,CAsBhD;AAUD,qEAAqE;AACrE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CA4ClE;AAgBD,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,iBAAiB,CAoBxF"}
package/dist/triage.js CHANGED
@@ -65,14 +65,22 @@ export function buildTriageUserMessage(result) {
65
65
  for (const c of important) {
66
66
  const aLabel = c.a.name || c.a.key.slice(0, 8);
67
67
  const bLabel = c.b.name || c.b.key.slice(0, 8);
68
- lines.push(`- [${c.severity}] ${c.a.tag} "${aLabel}" vs ${c.b.tag} "${bLabel}" — ${formatDistance(c.distance)} (rule: ${c.rule})`);
68
+ lines.push(`- [${c.severity}] ${c.a.tag} "${aLabel}" vs ${c.b.tag} "${bLabel}" — ${formatDistance(c.distance, c.distanceKind)} (rule: ${c.rule})`);
69
69
  }
70
70
  }
71
71
  return lines.join('\n');
72
72
  }
73
- function formatDistance(distance) {
73
+ /**
74
+ * Render a signed clash distance for the LLM triage prompt. `distanceKind`
75
+ * absent or `'estimate'` means the value is a box dimension read off the
76
+ * AABBs, not a mesh measurement (see `Clash.distanceKind`) — labelled so the
77
+ * prompt does not hand the LLM a bare number it will report as a precise
78
+ * penetration depth.
79
+ */
80
+ function formatDistance(distance, distanceKind) {
81
+ const estimated = distanceKind !== 'mesh';
74
82
  return distance < 0
75
- ? `penetration ${Math.abs(distance).toFixed(3)} m`
83
+ ? `penetration ${estimated ? '~' : ''}${Math.abs(distance).toFixed(3)} m${estimated ? ' (AABB estimate)' : ''}`
76
84
  : `gap ${distance.toFixed(3)} m`;
77
85
  }
78
86
  /** Parse the LLM's JSON response into a structured triage result. */
@@ -1 +1 @@
1
- {"version":3,"file":"triage.js","sourceRoot":"","sources":["../src/triage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"triage.js","sourceRoot":"","sources":["../src/triage.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -107,6 +107,39 @@ export interface ClashSettings {
107
107
  signal?: AbortSignal;
108
108
  onProgress?: (p: ClashProgress) => void;
109
109
  }
110
+ /**
111
+ * How a clash's `distance` was obtained — the two are NOT interchangeable and
112
+ * were indistinguishable in the output before this field existed.
113
+ *
114
+ * - `'mesh'` — measured on the triangle meshes. For `clearance` it is the
115
+ * exact triangle-to-triangle gap. For `touch` it is usually that same exact
116
+ * gap, with one exception: a pair whose every candidate depth falls below
117
+ * the pair's f32 precision floor also reports `touch`, with `distance: 0`
118
+ * and `distanceKind: 'mesh'` — there the 0 is a CLASSIFICATION (the
119
+ * surfaces are flush to within what the f32 source coordinates can
120
+ * represent; nothing is measurably penetrating), not a measured gap.
121
+ * For a hard clash it is the exact
122
+ * box-box penetration depth (minimum translation distance along a
123
+ * separating axis, Gottschalk), certified only when BOTH elements are —
124
+ * within tolerance — rectangular boxes (`obb.ts`); this replaced an
125
+ * earlier "deepest crossing-triangle vertex" probe that was a sampling
126
+ * artifact, converging to 0 as a mesh was retessellated instead of to the
127
+ * true depth (PR #2536).
128
+ * - `'estimate'` — read off the two element AABBs: the smallest overlapping box
129
+ * dimension. Reported for a hard clash whenever the narrow phase could not
130
+ * certify a box-box depth. That happens in four shapes, all common in real
131
+ * models: either element is not (confirmed) a box; surfaces that only
132
+ * coincide (stacked layers sharing a footprint); one solid modelled wholly
133
+ * inside another; and a member piercing clean through the other — even
134
+ * when BOTH are boxes, because the box-box minimum-translation-distance is
135
+ * then dominated by the piercing member's own extent along the shared
136
+ * axis, not by the material it actually crossed, and is withheld from
137
+ * `'mesh'` for exactly that reason. The value is then a property of the two
138
+ * BOXES, not of the solids — it can equal an element's own thickness rather
139
+ * than how far the two actually interpenetrate. Treat it as an indication of
140
+ * scale, not as a measurement.
141
+ */
142
+ export type ClashDistanceKind = 'mesh' | 'estimate';
110
143
  export interface Clash {
111
144
  /** Stable id: derived from the two durable keys + rule id. */
112
145
  id: string;
@@ -116,6 +149,12 @@ export interface Clash {
116
149
  status: ClashStatus;
117
150
  /** Signed: `<0` penetration depth, `>0` gap. */
118
151
  distance: number;
152
+ /**
153
+ * Provenance of `distance`. The engine always sets it; it is optional only so
154
+ * that a clash rehydrated from a run recorded before this field existed stays
155
+ * assignable — absent means "unknown", never "measured".
156
+ */
157
+ distanceKind?: ClashDistanceKind;
119
158
  /** True contact point (hard) or closest-point midpoint (clearance/touch). */
120
159
  point: Vec3;
121
160
  /** Overlap region (hard) or closest-segment box (clearance/touch). */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAuJ/D,sEAAsE;AACtE,MAAM,CAAC,MAAM,qBAAqB,GAAiC,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAEpG,iEAAiE;AACjE,MAAM,CAAC,MAAM,2BAA2B,GAAsB,MAAM,CAAC;AA8DrE,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,SAAS,EAAE,KAAK;IAChB,oBAAoB,EAAE,IAAI;CAClB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA+L/D,sEAAsE;AACtE,MAAM,CAAC,MAAM,qBAAqB,GAAiC,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAEpG,iEAAiE;AACjE,MAAM,CAAC,MAAM,2BAA2B,GAAsB,MAAM,CAAC;AA8DrE,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,SAAS,EAAE,KAAK;IAChB,oBAAoB,EAAE,IAAI;CAClB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/clash",
3
- "version": "1.7.0",
3
+ "version": "1.9.0",
4
4
  "description": "Clash detection for IFC-Lite — representation-agnostic core engine + source adapters",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -33,17 +33,18 @@
33
33
  }
34
34
  },
35
35
  "dependencies": {
36
- "@ifc-lite/spatial": "^1.14.13",
37
- "@ifc-lite/geometry": "^3.8.3",
38
- "@ifc-lite/parser": "^4.1.0",
39
- "@ifc-lite/query": "^1.14.16",
40
- "@ifc-lite/bcf": "^1.18.1",
41
- "@ifc-lite/ifcx": "^2.3.6",
42
- "@ifc-lite/wasm": "^4.6.0"
36
+ "@ifc-lite/spatial": "^1.14.14",
37
+ "@ifc-lite/geometry": "^3.8.4",
38
+ "@ifc-lite/query": "^1.14.17",
39
+ "@ifc-lite/bcf": "^1.18.2",
40
+ "@ifc-lite/parser": "^4.2.0",
41
+ "@ifc-lite/ifcx": "^2.3.7",
42
+ "@ifc-lite/wasm": "^5.0.0"
43
43
  },
44
44
  "devDependencies": {
45
45
  "typescript": "^6.0.3",
46
- "vitest": "^4.1.10"
46
+ "vitest": "^4.1.10",
47
+ "@ifc-lite/world-frame-fixtures": "^0.1.0"
47
48
  },
48
49
  "license": "MPL-2.0",
49
50
  "author": "Louis True",