@bldrs-ai/conway 1.430.1294 → 1.431.1296

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.
@@ -30,7 +30,7 @@ var import_node_process = require("node:process");
30
30
  var readline = __toESM(require("node:readline"), 1);
31
31
 
32
32
  // compiled/src/version/version.js
33
- var versionString = "Conway v1.430.1294";
33
+ var versionString = "Conway v1.431.1296";
34
34
 
35
35
  // compiled/dependencies/conway-geom/interface/conway_geometry.js
36
36
  var wasmType = "";
@@ -71065,7 +71065,7 @@ var ColumnarIndexSink = class {
71065
71065
  let complexEntries;
71066
71066
  for (const [localID, entry] of this.retained_) {
71067
71067
  if (entry.multiMapping !== void 0) {
71068
- (complexEntries ??= /* @__PURE__ */ new Map()).set(localID, entry);
71068
+ (complexEntries ??= /* @__PURE__ */ new Map()).set(localID, cloneIndexEntry(entry));
71069
71069
  }
71070
71070
  }
71071
71071
  return {
@@ -71080,6 +71080,25 @@ var ColumnarIndexSink = class {
71080
71080
  };
71081
71081
  }
71082
71082
  };
71083
+ function cloneIndexEntry(entry) {
71084
+ const clone = {
71085
+ address: entry.address,
71086
+ length: entry.length
71087
+ };
71088
+ if (entry.typeID !== void 0) {
71089
+ clone.typeID = entry.typeID;
71090
+ }
71091
+ if (entry.expressID !== void 0) {
71092
+ clone.expressID = entry.expressID;
71093
+ }
71094
+ if (entry.inlineEntities !== void 0) {
71095
+ clone.inlineEntities = entry.inlineEntities;
71096
+ }
71097
+ if (entry.multiMapping !== void 0) {
71098
+ clone.multiMapping = entry.multiMapping.map(cloneIndexEntry);
71099
+ }
71100
+ return clone;
71101
+ }
71083
71102
  function concatColumn(segments, column, rows, finalLength) {
71084
71103
  const result = new Uint32Array(finalLength);
71085
71104
  for (let segment = 0; segment * SEGMENT_ROWS < rows; ++segment) {
@@ -14965,7 +14965,7 @@ ${t5.join("\n")}` : "";
14965
14965
  var import_process = require("process");
14966
14966
 
14967
14967
  // compiled/src/version/version.js
14968
- var versionString = "Conway v1.430.1294";
14968
+ var versionString = "Conway v1.431.1296";
14969
14969
 
14970
14970
  // compiled/dependencies/conway-geom/interface/conway_geometry.js
14971
14971
  function pThreadsAllowed() {
@@ -86910,7 +86910,7 @@ var ColumnarIndexSink = class {
86910
86910
  let complexEntries;
86911
86911
  for (const [localID, entry] of this.retained_) {
86912
86912
  if (entry.multiMapping !== void 0) {
86913
- (complexEntries ??= /* @__PURE__ */ new Map()).set(localID, entry);
86913
+ (complexEntries ??= /* @__PURE__ */ new Map()).set(localID, cloneIndexEntry(entry));
86914
86914
  }
86915
86915
  }
86916
86916
  return {
@@ -86925,6 +86925,25 @@ var ColumnarIndexSink = class {
86925
86925
  };
86926
86926
  }
86927
86927
  };
86928
+ function cloneIndexEntry(entry) {
86929
+ const clone = {
86930
+ address: entry.address,
86931
+ length: entry.length
86932
+ };
86933
+ if (entry.typeID !== void 0) {
86934
+ clone.typeID = entry.typeID;
86935
+ }
86936
+ if (entry.expressID !== void 0) {
86937
+ clone.expressID = entry.expressID;
86938
+ }
86939
+ if (entry.inlineEntities !== void 0) {
86940
+ clone.inlineEntities = entry.inlineEntities;
86941
+ }
86942
+ if (entry.multiMapping !== void 0) {
86943
+ clone.multiMapping = entry.multiMapping.map(cloneIndexEntry);
86944
+ }
86945
+ return clone;
86946
+ }
86928
86947
  function concatColumn(segments, column, rows, finalLength) {
86929
86948
  const result = new Uint32Array(finalLength);
86930
86949
  for (let segment = 0; segment * SEGMENT_ROWS < rows; ++segment) {
@@ -15943,7 +15943,7 @@ var ParsingBuffer = class {
15943
15943
  };
15944
15944
 
15945
15945
  // compiled/src/version/version.js
15946
- var versionString = "Conway v1.430.1294";
15946
+ var versionString = "Conway v1.431.1296";
15947
15947
 
15948
15948
  // compiled/dependencies/conway-geom/interface/conway_geometry.js
15949
15949
  function pThreadsAllowed() {
@@ -84133,12 +84133,24 @@ ${error.stack} - expressID: #${face_.expressID}`);
84133
84133
  }
84134
84134
  }
84135
84135
  for (const contextDependentShapeRepresentation of contextDependentShapeRepresentations) {
84136
- const assembly = contextDependentShapeRepresentation.represented_product_relation;
84136
+ let assembly;
84137
+ let shapeRelationship;
84138
+ try {
84139
+ assembly = contextDependentShapeRepresentation.represented_product_relation;
84140
+ shapeRelationship = contextDependentShapeRepresentation.representation_relation;
84141
+ } catch {
84142
+ continue;
84143
+ }
84137
84144
  const owningLocalID = assembly.localID;
84138
- const shapeRelationship = contextDependentShapeRepresentation.representation_relation;
84139
84145
  shapeRepresentationRelationshipsSeen.add(shapeRelationship.localID);
84140
- let sourceShape = shapeRelationship.rep_1;
84141
- let targetShape = shapeRelationship.rep_2;
84146
+ let sourceShape;
84147
+ let targetShape;
84148
+ try {
84149
+ sourceShape = shapeRelationship.rep_1;
84150
+ targetShape = shapeRelationship.rep_2;
84151
+ } catch {
84152
+ continue;
84153
+ }
84142
84154
  let orientationFlipped = false;
84143
84155
  try {
84144
84156
  const nauo = assembly.definition;
@@ -84155,7 +84167,13 @@ ${error.stack} - expressID: #${face_.expressID}`);
84155
84167
  }
84156
84168
  } catch {
84157
84169
  }
84158
- const [transform, isContinue] = this.doTransforms(shapeRelationship, sourceShape, targetShape, owningLocalID, orientationFlipped);
84170
+ let transform;
84171
+ let isContinue;
84172
+ try {
84173
+ [transform, isContinue] = this.doTransforms(shapeRelationship, sourceShape, targetShape, owningLocalID, orientationFlipped);
84174
+ } catch {
84175
+ continue;
84176
+ }
84159
84177
  if (isContinue) {
84160
84178
  continue;
84161
84179
  }
@@ -84188,9 +84206,17 @@ ${error.stack} - expressID: #${face_.expressID}`);
84188
84206
  }
84189
84207
  const owningLocalID = shapeRelationship.localID;
84190
84208
  shapeRepresentationRelationshipsSeen.add(owningLocalID);
84191
- const sourceShape = shapeRelationship.rep_2;
84192
- const targetShape = shapeRelationship.rep_1;
84193
- const [transform, isContinue] = this.doTransforms(shapeRelationship, sourceShape, targetShape, owningLocalID);
84209
+ let sourceShape;
84210
+ let targetShape;
84211
+ let transform;
84212
+ let isContinue;
84213
+ try {
84214
+ sourceShape = shapeRelationship.rep_2;
84215
+ targetShape = shapeRelationship.rep_1;
84216
+ [transform, isContinue] = this.doTransforms(shapeRelationship, sourceShape, targetShape, owningLocalID);
84217
+ } catch {
84218
+ continue;
84219
+ }
84194
84220
  if (isContinue) {
84195
84221
  continue;
84196
84222
  }
@@ -84218,11 +84244,17 @@ ${error.stack} - expressID: #${face_.expressID}`);
84218
84244
  }
84219
84245
  const shapeDefinitions = model.types(shape_definition_representation);
84220
84246
  for (const shapeDefinitionRepresentation of shapeDefinitions) {
84221
- const shapeRepresentation = shapeDefinitionRepresentation.used_representation;
84222
- if (!(shapeRepresentation instanceof shape_representation)) {
84247
+ let shapeRepresentation;
84248
+ let definition;
84249
+ try {
84250
+ shapeRepresentation = shapeDefinitionRepresentation.used_representation;
84251
+ if (!(shapeRepresentation instanceof shape_representation)) {
84252
+ continue;
84253
+ }
84254
+ definition = shapeDefinitionRepresentation.definition;
84255
+ } catch {
84223
84256
  continue;
84224
84257
  }
84225
- const definition = shapeDefinitionRepresentation.definition;
84226
84258
  const owningElementLocalID = definition.localID;
84227
84259
  let treeNode = treeMap.get(shapeRepresentation.localID);
84228
84260
  const hasMappedNode = treeNode !== void 0;
@@ -84239,11 +84271,15 @@ ${error.stack} - expressID: #${face_.expressID}`);
84239
84271
  mappedTreeNode.owningLocalID = owningElementLocalID;
84240
84272
  if (!hasMappedNode) {
84241
84273
  mappedTreeNode.processed = true;
84242
- const sourceShapeContext = shapeRepresentation.context_of_items.findVariant(global_unit_assigned_context)?.units?.find((unit) => unit.findVariant(length_unit))?.findVariant(length_unit);
84243
84274
  let scaleTransform = void 0;
84244
- if (sourceShapeContext !== void 0) {
84245
- const sourceUnitInM = this.convertToMetres(sourceShapeContext) ?? 1;
84246
- scaleTransform = this.uniformScaleAffine(this.identity3DNativeMatrix, 1 / sourceUnitInM);
84275
+ try {
84276
+ const sourceShapeContext = shapeRepresentation.context_of_items.findVariant(global_unit_assigned_context)?.units?.find((unit) => unit.findVariant(length_unit))?.findVariant(length_unit);
84277
+ if (sourceShapeContext !== void 0) {
84278
+ const sourceUnitInM = this.convertToMetres(sourceShapeContext) ?? 1;
84279
+ scaleTransform = this.uniformScaleAffine(this.identity3DNativeMatrix, 1 / sourceUnitInM);
84280
+ }
84281
+ } catch {
84282
+ scaleTransform = void 0;
84247
84283
  }
84248
84284
  pendingRoots.push({
84249
84285
  node: mappedTreeNode,
@@ -84270,12 +84306,16 @@ ${error.stack} - expressID: #${face_.expressID}`);
84270
84306
  }
84271
84307
  for (const [sourceID, mappedNode] of treeMap.entries()) {
84272
84308
  if ((mappedNode.parents ?? 0) === 0 && mappedNode.thunk !== void 0 && mappedNode.processed !== true) {
84273
- const shapeRepresentation = this.model.getTypedElementByLocalID(sourceID, shape_representation);
84274
- const sourceShapeContext = shapeRepresentation.context_of_items.findVariant(global_unit_assigned_context)?.units?.find((unit) => unit.findVariant(length_unit))?.findVariant(length_unit);
84275
84309
  let scaleTransform = void 0;
84276
- if (sourceShapeContext !== void 0) {
84277
- const sourceUnitInM = this.convertToMetres(sourceShapeContext) ?? 1;
84278
- scaleTransform = this.uniformScaleAffine(this.identity3DNativeMatrix, 1 / sourceUnitInM);
84310
+ try {
84311
+ const shapeRepresentation = this.model.getTypedElementByLocalID(sourceID, shape_representation);
84312
+ const sourceShapeContext = shapeRepresentation.context_of_items.findVariant(global_unit_assigned_context)?.units?.find((unit) => unit.findVariant(length_unit))?.findVariant(length_unit);
84313
+ if (sourceShapeContext !== void 0) {
84314
+ const sourceUnitInM = this.convertToMetres(sourceShapeContext) ?? 1;
84315
+ scaleTransform = this.uniformScaleAffine(this.identity3DNativeMatrix, 1 / sourceUnitInM);
84316
+ }
84317
+ } catch {
84318
+ scaleTransform = void 0;
84279
84319
  }
84280
84320
  pendingRoots.push({ node: mappedNode, scaleTransform });
84281
84321
  }
@@ -944,7 +944,7 @@ var EntityTypesIfcCount = 909;
944
944
  var entity_types_ifc_gen_default = EntityTypesIfc;
945
945
 
946
946
  // compiled/src/version/version.js
947
- var versionString = "Conway v1.430.1294";
947
+ var versionString = "Conway v1.431.1296";
948
948
 
949
949
  // compiled/dependencies/conway-geom/interface/conway_geometry.js
950
950
  var wasmType = "";
@@ -71063,7 +71063,7 @@ var ColumnarIndexSink = class {
71063
71063
  let complexEntries;
71064
71064
  for (const [localID, entry] of this.retained_) {
71065
71065
  if (entry.multiMapping !== void 0) {
71066
- (complexEntries ??= /* @__PURE__ */ new Map()).set(localID, entry);
71066
+ (complexEntries ??= /* @__PURE__ */ new Map()).set(localID, cloneIndexEntry(entry));
71067
71067
  }
71068
71068
  }
71069
71069
  return {
@@ -71078,6 +71078,25 @@ var ColumnarIndexSink = class {
71078
71078
  };
71079
71079
  }
71080
71080
  };
71081
+ function cloneIndexEntry(entry) {
71082
+ const clone = {
71083
+ address: entry.address,
71084
+ length: entry.length
71085
+ };
71086
+ if (entry.typeID !== void 0) {
71087
+ clone.typeID = entry.typeID;
71088
+ }
71089
+ if (entry.expressID !== void 0) {
71090
+ clone.expressID = entry.expressID;
71091
+ }
71092
+ if (entry.inlineEntities !== void 0) {
71093
+ clone.inlineEntities = entry.inlineEntities;
71094
+ }
71095
+ if (entry.multiMapping !== void 0) {
71096
+ clone.multiMapping = entry.multiMapping.map(cloneIndexEntry);
71097
+ }
71098
+ return clone;
71099
+ }
71081
71100
  function concatColumn(segments, column, rows, finalLength) {
71082
71101
  const result = new Uint32Array(finalLength);
71083
71102
  for (let segment = 0; segment * SEGMENT_ROWS < rows; ++segment) {
@@ -1 +1 @@
1
- {"version":3,"file":"ap214_geometry_extraction.d.ts","sourceRoot":"","sources":["../../../src/AP214E3_2010/ap214_geometry_extraction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ap214_geometry_extraction.d.ts","sourceRoot":"","sources":["../../../src/AP214E3_2010/ap214_geometry_extraction.ts"],"names":[],"mappings":"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"}
@@ -3065,9 +3065,21 @@ export class AP214GeometryExtraction {
3065
3065
  }
3066
3066
  }
3067
3067
  for (const contextDependentShapeRepresentation of contextDependentShapeRepresentations) {
3068
- const assembly = contextDependentShapeRepresentation.represented_product_relation;
3068
+ // Per-record containment: reference getters throw on
3069
+ // malformed/dangling records (a mid-parse PREFIX model — the
3070
+ // preview channel's snapshots — always has a truncated tail).
3071
+ // One bad edge record skips, it must not abort the whole
3072
+ // preparation.
3073
+ let assembly;
3074
+ let shapeRelationship;
3075
+ try {
3076
+ assembly = contextDependentShapeRepresentation.represented_product_relation;
3077
+ shapeRelationship = contextDependentShapeRepresentation.representation_relation;
3078
+ }
3079
+ catch {
3080
+ continue;
3081
+ }
3069
3082
  const owningLocalID = assembly.localID;
3070
- const shapeRelationship = contextDependentShapeRepresentation.representation_relation;
3071
3083
  shapeRepresentationRelationshipsSeen.add(shapeRelationship.localID);
3072
3084
  /* Exporters disagree on the rep_1/rep_2 order of an assembly
3073
3085
  * placement relationship: as1-style files write (child, parent),
@@ -3081,8 +3093,15 @@ export class AP214GeometryExtraction {
3081
3093
  * SDR-bound product definition against them, and keep the legacy
3082
3094
  * (child, parent) reading when the match is ambiguous/unresolvable.
3083
3095
  */
3084
- let sourceShape = shapeRelationship.rep_1;
3085
- let targetShape = shapeRelationship.rep_2;
3096
+ let sourceShape;
3097
+ let targetShape;
3098
+ try {
3099
+ sourceShape = shapeRelationship.rep_1;
3100
+ targetShape = shapeRelationship.rep_2;
3101
+ }
3102
+ catch {
3103
+ continue;
3104
+ }
3086
3105
  let orientationFlipped = false;
3087
3106
  try {
3088
3107
  const nauo = assembly.definition;
@@ -3103,7 +3122,15 @@ export class AP214GeometryExtraction {
3103
3122
  catch {
3104
3123
  // Malformed NAUO/PDS reference — keep the legacy orientation.
3105
3124
  }
3106
- const [transform, isContinue] = this.doTransforms(shapeRelationship, sourceShape, targetShape, owningLocalID, orientationFlipped);
3125
+ let transform;
3126
+ let isContinue;
3127
+ try {
3128
+ [transform, isContinue] = this.doTransforms(shapeRelationship, sourceShape, targetShape, owningLocalID, orientationFlipped);
3129
+ }
3130
+ catch {
3131
+ // Malformed transform record (prefix truncation) — skip the edge.
3132
+ continue;
3133
+ }
3107
3134
  if (isContinue) {
3108
3135
  continue;
3109
3136
  }
@@ -3144,9 +3171,21 @@ export class AP214GeometryExtraction {
3144
3171
  * source and rep_2 is the target, whereas in
3145
3172
  * context_dependent_shape_representation, the relationship is inverted.
3146
3173
  */
3147
- const sourceShape = shapeRelationship.rep_2;
3148
- const targetShape = shapeRelationship.rep_1;
3149
- const [transform, isContinue] = this.doTransforms(shapeRelationship, sourceShape, targetShape, owningLocalID);
3174
+ let sourceShape;
3175
+ let targetShape;
3176
+ let transform;
3177
+ let isContinue;
3178
+ try {
3179
+ sourceShape = shapeRelationship.rep_2;
3180
+ targetShape = shapeRelationship.rep_1;
3181
+ [transform, isContinue] =
3182
+ this.doTransforms(shapeRelationship, sourceShape, targetShape, owningLocalID);
3183
+ }
3184
+ catch {
3185
+ // Malformed relationship/transform record (prefix truncation)
3186
+ // — skip the edge.
3187
+ continue;
3188
+ }
3150
3189
  if (isContinue) {
3151
3190
  continue;
3152
3191
  }
@@ -3176,12 +3215,20 @@ export class AP214GeometryExtraction {
3176
3215
  }
3177
3216
  const shapeDefinitions = model.types(shape_definition_representation);
3178
3217
  for (const shapeDefinitionRepresentation of shapeDefinitions) {
3179
- const shapeRepresentation = shapeDefinitionRepresentation.used_representation;
3180
- if (!(shapeRepresentation instanceof shape_representation)) {
3218
+ let shapeRepresentation;
3219
+ let definition;
3220
+ try {
3221
+ shapeRepresentation = shapeDefinitionRepresentation.used_representation;
3222
+ if (!(shapeRepresentation instanceof shape_representation)) {
3223
+ continue;
3224
+ }
3225
+ definition = shapeDefinitionRepresentation.definition;
3226
+ }
3227
+ catch {
3228
+ // Malformed SDR record (prefix truncation) — skip it.
3181
3229
  continue;
3182
3230
  }
3183
3231
  //this.scene.clearParentStack()
3184
- const definition = shapeDefinitionRepresentation.definition;
3185
3232
  const owningElementLocalID = definition.localID;
3186
3233
  let treeNode = treeMap.get(shapeRepresentation.localID);
3187
3234
  const hasMappedNode = treeNode !== void 0;
@@ -3199,13 +3246,19 @@ export class AP214GeometryExtraction {
3199
3246
  mappedTreeNode.owningLocalID = owningElementLocalID;
3200
3247
  if (!hasMappedNode) {
3201
3248
  mappedTreeNode.processed = true;
3202
- const sourceShapeContext = shapeRepresentation.context_of_items.findVariant(global_unit_assigned_context)?.units?.
3203
- find(unit => unit.findVariant(length_unit))?.findVariant(length_unit);
3204
3249
  let scaleTransform = void 0;
3205
- if (sourceShapeContext !== void 0) {
3206
- const sourceUnitInM = (this.convertToMetres(sourceShapeContext) ?? 1);
3207
- scaleTransform =
3208
- this.uniformScaleAffine(this.identity3DNativeMatrix, 1 / sourceUnitInM);
3250
+ try {
3251
+ const sourceShapeContext = shapeRepresentation.context_of_items.findVariant(global_unit_assigned_context)?.units?.
3252
+ find(unit => unit.findVariant(length_unit))?.findVariant(length_unit);
3253
+ if (sourceShapeContext !== void 0) {
3254
+ const sourceUnitInM = (this.convertToMetres(sourceShapeContext) ?? 1);
3255
+ scaleTransform =
3256
+ this.uniformScaleAffine(this.identity3DNativeMatrix, 1 / sourceUnitInM);
3257
+ }
3258
+ }
3259
+ catch {
3260
+ // Malformed unit context (prefix truncation) — no unit scale.
3261
+ scaleTransform = void 0;
3209
3262
  }
3210
3263
  // not an assembly mapped item — capture as a pending root
3211
3264
  // instead of executing inline (these nodes are childless by
@@ -3240,14 +3293,20 @@ export class AP214GeometryExtraction {
3240
3293
  // them.
3241
3294
  for (const [sourceID, mappedNode] of treeMap.entries()) {
3242
3295
  if ((mappedNode.parents ?? 0) === 0 && mappedNode.thunk !== void 0 && mappedNode.processed !== true) {
3243
- const shapeRepresentation = this.model.getTypedElementByLocalID(sourceID, shape_representation);
3244
- const sourceShapeContext = shapeRepresentation.context_of_items.findVariant(global_unit_assigned_context)?.units?.
3245
- find(unit => unit.findVariant(length_unit))?.findVariant(length_unit);
3246
3296
  let scaleTransform = void 0;
3247
- if (sourceShapeContext !== void 0) {
3248
- const sourceUnitInM = (this.convertToMetres(sourceShapeContext) ?? 1);
3249
- scaleTransform =
3250
- this.uniformScaleAffine(this.identity3DNativeMatrix, 1 / sourceUnitInM);
3297
+ try {
3298
+ const shapeRepresentation = this.model.getTypedElementByLocalID(sourceID, shape_representation);
3299
+ const sourceShapeContext = shapeRepresentation.context_of_items.findVariant(global_unit_assigned_context)?.units?.
3300
+ find(unit => unit.findVariant(length_unit))?.findVariant(length_unit);
3301
+ if (sourceShapeContext !== void 0) {
3302
+ const sourceUnitInM = (this.convertToMetres(sourceShapeContext) ?? 1);
3303
+ scaleTransform =
3304
+ this.uniformScaleAffine(this.identity3DNativeMatrix, 1 / sourceUnitInM);
3305
+ }
3306
+ }
3307
+ catch {
3308
+ // Malformed unit context (prefix truncation) — no unit scale.
3309
+ scaleTransform = void 0;
3251
3310
  }
3252
3311
  pendingRoots.push({ node: mappedNode, scaleTransform });
3253
3312
  }
@@ -182,4 +182,108 @@ describe("StreamedPreviewChannel", () => {
182
182
  api.CloseModel(classicID);
183
183
  api.CloseModel(deferredID);
184
184
  }, 240000);
185
+ test("a throwing prefix build retires the attempt, not the channel", () => {
186
+ // Mid-parse prefixes can be structurally incomplete and the adapter's
187
+ // generation build can THROW (AP214's assembly-tree prep does on
188
+ // dangling references — this killed the whole STEP preview). The
189
+ // channel must swallow the attempt and succeed on a later, larger
190
+ // prefix. The sink is complete here, so growth is simulated by
191
+ // inflating the reported record count past the retry gate.
192
+ const sink = buildSink();
193
+ const realRecords = sink.topLevelCount;
194
+ let reportedRecords = realRecords;
195
+ const growingSink = {
196
+ get topLevelCount() {
197
+ return reportedRecords;
198
+ },
199
+ snapshot: () => sink.snapshot(),
200
+ };
201
+ let buildAttempts = 0;
202
+ const inner = ifcPreviewAdapter();
203
+ const flakyAdapter = {
204
+ buildGeneration: (source, wasm, columns) => {
205
+ if (buildAttempts++ === 0) {
206
+ throw new Error("structurally incomplete prefix");
207
+ }
208
+ return inner.buildGeneration(source, wasm, columns);
209
+ },
210
+ };
211
+ const payloads = [];
212
+ const channel = new StreamedPreviewChannel(data, conwayGeometry, growingSink, flakyAdapter, true, (mesh) => payloads.push(mesh), void 0, void 0, 1);
213
+ // First drain: the build throws — no payloads, but the channel
214
+ // survives the attempt.
215
+ channel.drainForTest();
216
+ expect(buildAttempts).toBe(1);
217
+ expect(payloads.length).toBe(0);
218
+ // Same record count: the failure gate must hold the retry.
219
+ channel.drainForTest();
220
+ expect(buildAttempts).toBe(1);
221
+ // The index "grows" past the gate: the retry builds and drains fully.
222
+ reportedRecords = realRecords * 4;
223
+ channel.drainForTest();
224
+ expect(buildAttempts).toBe(2);
225
+ expect(payloads.length).toBeGreaterThan(0);
226
+ }, 240000);
227
+ test("retryEmptyUnits re-runs empty units on later generations", () => {
228
+ // AP214-style schema: the unit list is fixed up front but the
229
+ // geometry units reference arrives later in the file. The channel
230
+ // must re-run units that captured nothing against each richer
231
+ // generation, and stop retrying a unit once it captures.
232
+ const UNIT_COUNT = 3;
233
+ const runsPerGeneration = [];
234
+ let reportedRecords = 2048;
235
+ const fakeSink = {
236
+ get topLevelCount() {
237
+ return reportedRecords;
238
+ },
239
+ snapshot: () => ({}),
240
+ };
241
+ const disposed = [];
242
+ const makeGeneration = (generationIndex) => {
243
+ const runs = [];
244
+ runsPerGeneration.push(runs);
245
+ return {
246
+ // Empty scene: units "execute" but never capture, so no unit
247
+ // ever completes and every generation re-runs all of them.
248
+ scene: { *walk() { } },
249
+ unitCount: UNIT_COUNT,
250
+ linearScalingFactor: 1,
251
+ runUnits: (from) => {
252
+ runs.push(from);
253
+ return 1;
254
+ },
255
+ geometryExpressID: () => void 0,
256
+ recenter: false,
257
+ dispose: () => disposed.push(generationIndex),
258
+ };
259
+ };
260
+ let generationIndex = 0;
261
+ const adapter = {
262
+ retryEmptyUnits: true,
263
+ buildGeneration: () => makeGeneration(generationIndex++),
264
+ };
265
+ const channel = new StreamedPreviewChannel(data, conwayGeometry, fakeSink, adapter, false, () => { }, void 0, void 0, 1);
266
+ const forceTick = () => {
267
+ /* eslint-disable @typescript-eslint/no-explicit-any */
268
+ channel.lastInlineTick_ = 0;
269
+ channel.tickIntervalMs_ = 0;
270
+ /* eslint-enable @typescript-eslint/no-explicit-any */
271
+ channel.maybeTickInline();
272
+ };
273
+ // Generation 1: all units run once (none capture).
274
+ forceTick();
275
+ expect(runsPerGeneration[0]).toEqual([0, 1, 2]);
276
+ // Same record count: growth-gated, no rebuild, no re-runs.
277
+ forceTick();
278
+ expect(runsPerGeneration.length).toBe(1);
279
+ expect(runsPerGeneration[0]).toEqual([0, 1, 2]);
280
+ // Records double: a fresh generation re-runs every empty unit and
281
+ // the outgoing generation is disposed.
282
+ reportedRecords *= 4;
283
+ forceTick();
284
+ expect(runsPerGeneration.length).toBe(2);
285
+ expect(runsPerGeneration[1]).toEqual([0, 1, 2]);
286
+ expect(disposed).toContain(0);
287
+ channel.stop();
288
+ }, 240000);
185
289
  });
@@ -72,6 +72,19 @@ export interface PreviewPrefixGeneration {
72
72
  * the preview channel that knows what a "model" or a "unit" is.
73
73
  */
74
74
  export interface PreviewSchemaAdapter {
75
+ /**
76
+ * Retry semantics for schemas whose unit list is FIXED up front while
77
+ * the geometry those units reference arrives throughout the file
78
+ * (AP214: the assembly tree sits at the head, solids follow). Without
79
+ * this, the first generation "consumes" every unit against a prefix
80
+ * that has no geometry yet and later, richer generations report no
81
+ * new units — the channel then never emits anything. With it, the
82
+ * channel re-runs units that emitted no instances against each new
83
+ * generation, and marks a unit done only once it captures something.
84
+ * Leave unset for schemas whose units keep appearing with the parse
85
+ * (IFC products) — re-running those would be quadratic for no gain.
86
+ */
87
+ readonly retryEmptyUnits?: boolean;
75
88
  /**
76
89
  * Build a generation over the given prefix columns.
77
90
  *
@@ -146,11 +159,21 @@ export declare class StreamedPreviewChannel {
146
159
  /** Ordinal cursor into the unit list (see the adapter's stability
147
160
  * notes). */
148
161
  private unitOrdinal_;
162
+ /** Retry mode (adapter.retryEmptyUnits): ordinals that captured ≥ 1
163
+ * instance — done for good, skipped on later generations. */
164
+ private readonly completedUnits_;
165
+ /** Retry mode: scan position within the CURRENT generation (resets to
166
+ * 0 on every new generation so empty units get re-run). */
167
+ private retryScan_;
149
168
  /** Geometry expressIDs whose payload has been emitted (cross-generation
150
169
  * dedup for mapped/shared geometry). */
151
170
  private readonly emittedGeometry_;
152
171
  private generation_?;
153
172
  private lastSnapshotRecords_;
173
+ /** Records at the last snapshot whose generation build THREW (a
174
+ * structurally incomplete prefix) — gates retries to index growth so a
175
+ * throwing prefix build can't hot-loop every tick. */
176
+ private lastFailedSnapshotRecords_;
154
177
  /**
155
178
  * @param data The (fully resident) source buffer the parse is indexing.
156
179
  * @param conwaywasm The shared geometry wasm wrapper (sequential use only
@@ -202,6 +225,15 @@ export declare class StreamedPreviewChannel {
202
225
  * @return {boolean} True when a generation with pending units exists.
203
226
  */
204
227
  private ensureGeneration_;
228
+ /**
229
+ * Does the given generation still have units this channel would run —
230
+ * retry mode: not-yet-captured ordinals ahead of the scan; classic
231
+ * mode: ordinals beyond the global forward-only cursor.
232
+ *
233
+ * @param generation The generation to check.
234
+ * @return {boolean} True when a tick can make progress on it.
235
+ */
236
+ private hasPendingUnits_;
205
237
  /**
206
238
  * Walk the current generation's scene and emit every not-yet-captured
207
239
  * placed instance as a payload — the preview twin of the durable delta
@@ -209,6 +241,9 @@ export declare class StreamedPreviewChannel {
209
241
  * for IFC, bare composition for AP214) so preview and durable
210
242
  * placements coincide, but copying geometry OUT of the wasm heap
211
243
  * instead of retaining native references.
244
+ *
245
+ * @return {number} Instances emitted by this pass (retry mode uses
246
+ * this to attribute unit completion).
212
247
  */
213
248
  private captureNewInstances_;
214
249
  /**