@ifc-lite/sdk 9.0.0 → 9.3.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 (175) hide show
  1. package/README.md +60 -0
  2. package/dist/cost-store-backend.d.ts +2 -0
  3. package/dist/cost-store-backend.d.ts.map +1 -1
  4. package/dist/cost-store-backend.js.map +1 -1
  5. package/dist/group-store-backend.d.ts +5 -0
  6. package/dist/group-store-backend.d.ts.map +1 -0
  7. package/dist/group-store-backend.js +43 -0
  8. package/dist/group-store-backend.js.map +1 -0
  9. package/dist/headless-mutate.d.ts +0 -10
  10. package/dist/headless-mutate.d.ts.map +1 -1
  11. package/dist/headless-mutate.js +8 -2
  12. package/dist/headless-mutate.js.map +1 -1
  13. package/dist/host.d.ts +2 -0
  14. package/dist/host.d.ts.map +1 -1
  15. package/dist/host.js +34 -11
  16. package/dist/host.js.map +1 -1
  17. package/dist/index.d.ts +6 -9
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +4 -4
  20. package/dist/index.js.map +1 -1
  21. package/dist/namespaces/ids-authoring.d.ts +74 -0
  22. package/dist/namespaces/ids-authoring.d.ts.map +1 -0
  23. package/dist/namespaces/ids-authoring.js +99 -0
  24. package/dist/namespaces/ids-authoring.js.map +1 -0
  25. package/dist/namespaces/ids.d.ts +4 -0
  26. package/dist/namespaces/ids.d.ts.map +1 -1
  27. package/dist/namespaces/ids.js +11 -0
  28. package/dist/namespaces/ids.js.map +1 -1
  29. package/dist/namespaces/mutate.d.ts +3 -3
  30. package/dist/namespaces/mutate.d.ts.map +1 -1
  31. package/dist/namespaces/mutate.js +7 -3
  32. package/dist/namespaces/mutate.js.map +1 -1
  33. package/dist/namespaces/store-group.d.ts +9 -0
  34. package/dist/namespaces/store-group.d.ts.map +1 -0
  35. package/dist/namespaces/store-group.js +31 -0
  36. package/dist/namespaces/store-group.js.map +1 -0
  37. package/dist/namespaces/store-modelling.d.ts +42 -1
  38. package/dist/namespaces/store-modelling.d.ts.map +1 -1
  39. package/dist/namespaces/store-modelling.js +119 -0
  40. package/dist/namespaces/store-modelling.js.map +1 -1
  41. package/dist/namespaces/store.d.ts +14 -13
  42. package/dist/namespaces/store.d.ts.map +1 -1
  43. package/dist/namespaces/store.js +10 -9
  44. package/dist/namespaces/store.js.map +1 -1
  45. package/dist/review/bcf.d.ts +10 -0
  46. package/dist/review/bcf.d.ts.map +1 -0
  47. package/dist/review/bcf.js +33 -0
  48. package/dist/review/bcf.js.map +1 -0
  49. package/dist/review/capture-budget.d.ts +6 -0
  50. package/dist/review/capture-budget.d.ts.map +1 -0
  51. package/dist/review/capture-budget.js +47 -0
  52. package/dist/review/capture-budget.js.map +1 -0
  53. package/dist/review/capture-retention.d.ts +47 -0
  54. package/dist/review/capture-retention.d.ts.map +1 -0
  55. package/dist/review/capture-retention.js +141 -0
  56. package/dist/review/capture-retention.js.map +1 -0
  57. package/dist/review/capture-types.d.ts +57 -0
  58. package/dist/review/capture-types.d.ts.map +1 -0
  59. package/dist/review/capture-types.js +5 -0
  60. package/dist/review/capture-types.js.map +1 -0
  61. package/dist/review/cards.d.ts +60 -0
  62. package/dist/review/cards.d.ts.map +1 -0
  63. package/dist/review/cards.js +90 -0
  64. package/dist/review/cards.js.map +1 -0
  65. package/dist/review/disciplines.d.ts +3 -0
  66. package/dist/review/disciplines.d.ts.map +1 -0
  67. package/dist/review/disciplines.js +10 -0
  68. package/dist/review/disciplines.js.map +1 -0
  69. package/dist/review/identity.d.ts +27 -0
  70. package/dist/review/identity.d.ts.map +1 -0
  71. package/dist/review/identity.js +42 -0
  72. package/dist/review/identity.js.map +1 -0
  73. package/dist/review/native-captures.d.ts +21 -0
  74. package/dist/review/native-captures.d.ts.map +1 -0
  75. package/dist/review/native-captures.js +325 -0
  76. package/dist/review/native-captures.js.map +1 -0
  77. package/dist/review/native-snapshot.d.ts +47 -0
  78. package/dist/review/native-snapshot.d.ts.map +1 -0
  79. package/dist/review/native-snapshot.js +98 -0
  80. package/dist/review/native-snapshot.js.map +1 -0
  81. package/dist/review/portable-analysis-binding.d.ts +29 -0
  82. package/dist/review/portable-analysis-binding.d.ts.map +1 -0
  83. package/dist/review/portable-analysis-binding.js +60 -0
  84. package/dist/review/portable-analysis-binding.js.map +1 -0
  85. package/dist/review/portable-analysis.d.ts +103 -0
  86. package/dist/review/portable-analysis.d.ts.map +1 -0
  87. package/dist/review/portable-analysis.js +119 -0
  88. package/dist/review/portable-analysis.js.map +1 -0
  89. package/dist/review/portable-automation-provenance.d.ts +32 -0
  90. package/dist/review/portable-automation-provenance.d.ts.map +1 -0
  91. package/dist/review/portable-automation-provenance.js +68 -0
  92. package/dist/review/portable-automation-provenance.js.map +1 -0
  93. package/dist/review/portable-ids-report.d.ts +125 -0
  94. package/dist/review/portable-ids-report.d.ts.map +1 -0
  95. package/dist/review/portable-ids-report.js +124 -0
  96. package/dist/review/portable-ids-report.js.map +1 -0
  97. package/dist/review/portable-manual-report.d.ts +66 -0
  98. package/dist/review/portable-manual-report.d.ts.map +1 -0
  99. package/dist/review/portable-manual-report.js +121 -0
  100. package/dist/review/portable-manual-report.js.map +1 -0
  101. package/dist/review/portable-report-metadata.d.ts +42 -0
  102. package/dist/review/portable-report-metadata.d.ts.map +1 -0
  103. package/dist/review/portable-report-metadata.js +41 -0
  104. package/dist/review/portable-report-metadata.js.map +1 -0
  105. package/dist/review/portable-saved-validation.d.ts +12 -0
  106. package/dist/review/portable-saved-validation.d.ts.map +1 -0
  107. package/dist/review/portable-saved-validation.js +32 -0
  108. package/dist/review/portable-saved-validation.js.map +1 -0
  109. package/dist/review/portable-validation-evidence.d.ts +53 -0
  110. package/dist/review/portable-validation-evidence.d.ts.map +1 -0
  111. package/dist/review/portable-validation-evidence.js +52 -0
  112. package/dist/review/portable-validation-evidence.js.map +1 -0
  113. package/dist/review/snapshot.d.ts +15 -0
  114. package/dist/review/snapshot.d.ts.map +1 -0
  115. package/dist/review/snapshot.js +25 -0
  116. package/dist/review/snapshot.js.map +1 -0
  117. package/dist/review/types.d.ts +167 -0
  118. package/dist/review/types.d.ts.map +1 -0
  119. package/dist/review/types.js +11 -0
  120. package/dist/review/types.js.map +1 -0
  121. package/dist/review/validation.d.ts +14 -0
  122. package/dist/review/validation.d.ts.map +1 -0
  123. package/dist/review/validation.js +57 -0
  124. package/dist/review/validation.js.map +1 -0
  125. package/dist/review.d.ts +27 -0
  126. package/dist/review.d.ts.map +1 -0
  127. package/dist/review.js +23 -0
  128. package/dist/review.js.map +1 -0
  129. package/dist/schedule-types.d.ts +4 -0
  130. package/dist/schedule-types.d.ts.map +1 -1
  131. package/dist/store-align-command.d.ts +13 -0
  132. package/dist/store-align-command.d.ts.map +1 -0
  133. package/dist/store-align-command.js +31 -0
  134. package/dist/store-align-command.js.map +1 -0
  135. package/dist/store-authoring-exports.d.ts +10 -0
  136. package/dist/store-authoring-exports.d.ts.map +1 -0
  137. package/dist/store-authoring-exports.js +9 -0
  138. package/dist/store-authoring-exports.js.map +1 -0
  139. package/dist/store-authoring-types.d.ts +8 -0
  140. package/dist/store-authoring-types.d.ts.map +1 -0
  141. package/dist/store-authoring-types.js +2 -0
  142. package/dist/store-authoring-types.js.map +1 -0
  143. package/dist/store-group-types.d.ts +20 -0
  144. package/dist/store-group-types.d.ts.map +1 -0
  145. package/dist/store-group-types.js +2 -0
  146. package/dist/store-group-types.js.map +1 -0
  147. package/dist/store-modelling-backend.d.ts.map +1 -1
  148. package/dist/store-modelling-backend.js +61 -1
  149. package/dist/store-modelling-backend.js.map +1 -1
  150. package/dist/store-modelling-types.d.ts +31 -2
  151. package/dist/store-modelling-types.d.ts.map +1 -1
  152. package/dist/store-ordinary-backend.d.ts +10 -0
  153. package/dist/store-ordinary-backend.d.ts.map +1 -0
  154. package/dist/store-ordinary-backend.js +27 -0
  155. package/dist/store-ordinary-backend.js.map +1 -0
  156. package/dist/store-physical-backend.d.ts +5 -0
  157. package/dist/store-physical-backend.d.ts.map +1 -0
  158. package/dist/store-physical-backend.js +51 -0
  159. package/dist/store-physical-backend.js.map +1 -0
  160. package/dist/store-physical-types.d.ts +33 -0
  161. package/dist/store-physical-types.d.ts.map +1 -0
  162. package/dist/store-physical-types.js +5 -0
  163. package/dist/store-physical-types.js.map +1 -0
  164. package/dist/store-room-auto-all.d.ts +5 -0
  165. package/dist/store-room-auto-all.d.ts.map +1 -0
  166. package/dist/store-room-auto-all.js +94 -0
  167. package/dist/store-room-auto-all.js.map +1 -0
  168. package/dist/store-room-command.d.ts +91 -0
  169. package/dist/store-room-command.d.ts.map +1 -0
  170. package/dist/store-room-command.js +197 -0
  171. package/dist/store-room-command.js.map +1 -0
  172. package/dist/types.d.ts +12 -24
  173. package/dist/types.d.ts.map +1 -1
  174. package/dist/types.js.map +1 -1
  175. package/package.json +21 -14
@@ -2,7 +2,7 @@
2
2
  * License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
4
  import { isInstantiable, isKnownType, normalizeIfcTypeName } from '@ifc-lite/parser';
5
- import { StoreModellingNamespace } from './store-modelling.js';
5
+ import { StoreGroupNamespace } from './store-group.js';
6
6
  /**
7
7
  * `bim.store` — document-level edits on a parsed model.
8
8
  *
@@ -18,7 +18,7 @@ import { StoreModellingNamespace } from './store-modelling.js';
18
18
  * Changes accumulate in a per-model overlay and are flushed to the IFC
19
19
  * file on the next `bim.export.ifc({ applyMutations: true })`.
20
20
  */
21
- export class StoreNamespace extends StoreModellingNamespace {
21
+ export class StoreNamespace extends StoreGroupNamespace {
22
22
  /**
23
23
  * Inject a new entity into the active model. Returns an `EntityRef`
24
24
  * pointing at the freshly-allocated expressId.
@@ -100,8 +100,9 @@ export class StoreNamespace extends StoreModellingNamespace {
100
100
  * so the column appears next to the existing model on export.
101
101
  *
102
102
  * `Position` is the base centre in storey-local coordinates (metres),
103
- * `Width`×`Depth` is the centred rectangular cross-section, and
104
- * `Height` is the +Z extrusion length.
103
+ * `Width`×`Depth` selects a centred rectangle; `Profile` selects the
104
+ * canonical parameterised section. `RefDirection` turns its local X axis
105
+ * in the storey plane, and `Height` is the +Z extrusion length.
105
106
  *
106
107
  * @example
107
108
  * const storeyId = bim.query.byType('IfcBuildingStorey')[0].ref.expressId;
@@ -137,9 +138,9 @@ export class StoreNamespace extends StoreModellingNamespace {
137
138
  return this.backend.store.addSlab(modelId, storeyExpressId, params);
138
139
  }
139
140
  /**
140
- * Add an IfcBeam between `Start` and `End` with a centred rectangular
141
- * cross-section (`Width` × `Height`). Local Z is the beam axis so the
142
- * extrusion runs along the beam.
141
+ * Add an IfcBeam between `Start` and `End` with a centred rectangle
142
+ * (`Width` × `Height`) or parameterised `Profile`. Local Z is the beam
143
+ * axis so the extrusion runs along the beam.
143
144
  */
144
145
  addBeam(modelId, storeyExpressId, params) {
145
146
  return this.backend.store.addBeam(modelId, storeyExpressId, params);
@@ -179,8 +180,8 @@ export class StoreNamespace extends StoreModellingNamespace {
179
180
  }
180
181
  /**
181
182
  * Add an IfcMember (generic structural member — brace, post, strut)
182
- * between `Start` and `End`. Same axial extrusion as `addBeam`;
183
- * choose the PredefinedType to disambiguate the role.
183
+ * between `Start` and `End`. Same rectangular or parameterised Profile
184
+ * extrusion as `addBeam`; choose PredefinedType to disambiguate the role.
184
185
  */
185
186
  addMember(modelId, storeyExpressId, params) {
186
187
  return this.backend.store.addMember(modelId, storeyExpressId, params);
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/namespaces/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/namespaces/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * BCF topics as coordination records. A topic's elements are the IfcGuids its
3
+ * viewpoints select or colour; BCF names no model, so a GlobalId present in two
4
+ * loaded models stays ambiguous. The topic status is the topic's own and is
5
+ * never changed by the review workspace.
6
+ */
7
+ import type { BCFProject } from '@ifc-lite/bcf';
8
+ import type { ReviewMessage, FindingSourceResult } from './types.js';
9
+ export declare function bcfFindings<Message extends ReviewMessage = ReviewMessage>(project: BCFProject | null): FindingSourceResult<Message>;
10
+ //# sourceMappingURL=bcf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bcf.d.ts","sourceRoot":"","sources":["../../src/review/bcf.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAY,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAc,mBAAmB,EAAiB,MAAM,YAAY,CAAC;AAYhG,wBAAgB,WAAW,CAAC,OAAO,SAAS,aAAa,GAAG,aAAa,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAanI"}
@@ -0,0 +1,33 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ function topicGuids(topic) {
5
+ const guids = new Set();
6
+ for (const viewpoint of topic.viewpoints) {
7
+ const components = viewpoint.components;
8
+ for (const component of components?.selection ?? [])
9
+ if (component.ifcGuid)
10
+ guids.add(component.ifcGuid);
11
+ for (const coloring of components?.coloring ?? [])
12
+ for (const component of coloring.components)
13
+ if (component.ifcGuid)
14
+ guids.add(component.ifcGuid);
15
+ }
16
+ return [...guids];
17
+ }
18
+ export function bcfFindings(project) {
19
+ if (!project || project.topics.size === 0)
20
+ return { runs: [], findings: [] };
21
+ const run = { id: 'bcf:project', source: 'bcf', temporal: 'current', label: project.name || 'BCF',
22
+ capturedAt: null, complete: true, incomplete: [], models: [] };
23
+ const findings = [...project.topics.values()].map(topic => ({
24
+ id: `${run.id}#${topic.guid}`, lineage: `bcf|${topic.guid}`, source: 'bcf', run,
25
+ elements: topicGuids(topic).map(globalId => ({ globalId, modelId: null, modelName: null })),
26
+ nativeStatus: topic.topicStatus ?? '', title: topic.title,
27
+ detail: [topic.topicType, topic.priority ? `priority ${topic.priority}` : '', topic.assignedTo ? `assigned ${topic.assignedTo}` : '',
28
+ topic.labels?.length ? `labels ${topic.labels.join(', ')}` : ''].filter((line) => !!line),
29
+ lifecycle: 'record', disciplines: [], storeys: [], evidence: { kind: 'bcf', topicGuid: topic.guid },
30
+ }));
31
+ return { runs: [run], findings };
32
+ }
33
+ //# sourceMappingURL=bcf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bcf.js","sourceRoot":"","sources":["../../src/review/bcf.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAY/D,SAAS,UAAU,CAAC,KAAe;IACjC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACxC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,SAAS,IAAI,EAAE;YAAE,IAAI,SAAS,CAAC,OAAO;gBAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACzG,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,QAAQ,IAAI,EAAE;YAAE,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,UAAU;gBAAE,IAAI,SAAS,CAAC,OAAO;oBAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACtJ,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,WAAW,CAAgD,OAA0B;IACnG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC7E,MAAM,GAAG,GAAwB,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,KAAK;QACpH,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACjE,MAAM,QAAQ,GAA6B,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpF,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;QAC/E,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3F,YAAY,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK;QACzD,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE;YAClI,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3G,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE;KACpG,CAAC,CAAC,CAAC;IACJ,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC;AACnC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /** #7372: reject a whole capture instead of retaining a silently partial graph. */
2
+ export declare function reviewValueFits(value: unknown): boolean;
3
+ export declare function reviewSHA256(bytes: Uint8Array): Promise<string>;
4
+ /** Both raw and JSON-escaped credentials are excluded from cross-tool facts. */
5
+ export declare function reviewContainsSecret(serialized: string, values: readonly string[]): boolean;
6
+ //# sourceMappingURL=capture-budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-budget.d.ts","sourceRoot":"","sources":["../../src/review/capture-budget.ts"],"names":[],"mappings":"AAIA,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAqBvD;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAGrE;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAG3F"}
@@ -0,0 +1,47 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /** #7372: reject a whole capture instead of retaining a silently partial graph. */
5
+ export function reviewValueFits(value) {
6
+ const pending = [{ value, depth: 0 }];
7
+ let work = 0;
8
+ let text = 0;
9
+ while (pending.length) {
10
+ const item = pending.pop();
11
+ if (!item || ++work > 100_000 || item.depth > 24)
12
+ return false;
13
+ const x = item.value;
14
+ if (typeof x === 'string') {
15
+ if (x.length > 16_384 || (text += x.length) > 1_048_576)
16
+ return false;
17
+ }
18
+ else if (typeof x === 'number') {
19
+ if (!Number.isFinite(x))
20
+ return false;
21
+ }
22
+ else if (x instanceof Date) {
23
+ if (!Number.isFinite(x.getTime()))
24
+ return false;
25
+ }
26
+ else if (x !== null && typeof x === 'object') {
27
+ const children = Array.isArray(x) ? x : Object.values(x);
28
+ if (children.length > 10_000 || pending.length + children.length > 100_000)
29
+ return false;
30
+ for (const child of children)
31
+ pending.push({ value: child, depth: item.depth + 1 });
32
+ }
33
+ else if (x !== null && x !== undefined && typeof x !== 'boolean')
34
+ return false;
35
+ }
36
+ return true;
37
+ }
38
+ export async function reviewSHA256(bytes) {
39
+ const hash = await crypto.subtle.digest('SHA-256', new Uint8Array(bytes));
40
+ return [...new Uint8Array(hash)].map(x => x.toString(16).padStart(2, '0')).join('');
41
+ }
42
+ /** Both raw and JSON-escaped credentials are excluded from cross-tool facts. */
43
+ export function reviewContainsSecret(serialized, values) {
44
+ return values.some(value => value.length > 0 && (serialized.includes(value)
45
+ || serialized.includes(JSON.stringify(value).slice(1, -1))));
46
+ }
47
+ //# sourceMappingURL=capture-budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-budget.js","sourceRoot":"","sources":["../../src/review/capture-budget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import type { NativeReviewModel, NativeReviewResult, ReviewCaptureToken, ReviewRunProvenance, ReviewSourceProof, ReviewSpecificationCoverage } from './capture-types.js';
2
+ import type { FindingSourceResult } from './types.js';
3
+ export interface OwnedTarget {
4
+ model: NativeReviewModel;
5
+ view: ReturnType<NativeReviewModel['mutationView']>;
6
+ revision: number;
7
+ proof: ReviewSourceProof;
8
+ }
9
+ export interface CaptureAttempt {
10
+ token: ReviewCaptureToken;
11
+ models: readonly NativeReviewModel[];
12
+ order: number | null;
13
+ outcome: 'pending' | 'succeeded' | 'failed' | 'aborted' | 'refused' | 'superseded';
14
+ refusal?: NativeReviewResult['refusal'];
15
+ targets?: OwnedTarget[];
16
+ provenance?: ReviewRunProvenance;
17
+ superseded: boolean;
18
+ proofHistoryUncertain?: boolean;
19
+ laterFailure?: NativeReviewResult['refusal'];
20
+ }
21
+ export interface SettledCapture {
22
+ attempt: CaptureAttempt;
23
+ targets: OwnedTarget[];
24
+ provenance: ReviewRunProvenance;
25
+ facts: FindingSourceResult;
26
+ coverage: ReviewSpecificationCoverage[];
27
+ laterFailure?: NativeReviewResult['refusal'];
28
+ }
29
+ /** Two bounded roles: pending reservations and latest successful native contexts. */
30
+ export declare class CaptureRetention {
31
+ readonly capacity: number;
32
+ readonly pending: Map<string, CaptureAttempt>;
33
+ readonly settled: Map<string, SettledCapture>;
34
+ latest: CaptureAttempt | null;
35
+ inventoryOmitted: boolean;
36
+ captureRefusal: 'capture-bound' | null;
37
+ private order;
38
+ constructor(capacity: number);
39
+ private nextOrder;
40
+ private replaceLatest;
41
+ refuse(models: readonly NativeReviewModel[], refusal: NativeReviewResult['refusal']): void;
42
+ reserve(models: readonly NativeReviewModel[]): CaptureAttempt | null;
43
+ prepare(attempt: CaptureAttempt, targets: OwnedTarget[], provenance: ReviewRunProvenance): void;
44
+ fail(attempt: CaptureAttempt, refusal: NativeReviewResult['refusal'], outcome: 'failed' | 'aborted' | 'refused'): void;
45
+ complete(attempt: CaptureAttempt, facts: FindingSourceResult, coverage: ReviewSpecificationCoverage[]): void;
46
+ }
47
+ //# sourceMappingURL=capture-retention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-retention.d.ts","sourceRoot":"","sources":["../../src/review/capture-retention.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAC1F,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,iBAAiB,CAAC;IACzB,IAAI,EAAE,UAAU,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,iBAAiB,CAAC;CAC1B;AACD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACrC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC;IACnF,OAAO,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,YAAY,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;CAC9C;AACD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,UAAU,EAAE,mBAAmB,CAAC;IAChC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,QAAQ,EAAE,2BAA2B,EAAE,CAAC;IACxC,YAAY,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;CAC9C;AAYD,qFAAqF;AACrF,qBAAa,gBAAgB;IAOf,QAAQ,CAAC,QAAQ,EAAE,MAAM;IANrC,QAAQ,CAAC,OAAO,8BAAqC;IACrD,QAAQ,CAAC,OAAO,8BAAqC;IACrD,MAAM,EAAE,cAAc,GAAG,IAAI,CAAQ;IACrC,gBAAgB,UAAS;IACzB,cAAc,EAAE,eAAe,GAAG,IAAI,CAAQ;IAC9C,OAAO,CAAC,KAAK,CAAK;gBACG,QAAQ,EAAE,MAAM;IAErC,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,aAAa;IAWrB,MAAM,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,EAAE,OAAO,EAAE,kBAAkB,CAAC,SAAS,CAAC,GAAG,IAAI;IAI1F,OAAO,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,GAAG,cAAc,GAAG,IAAI;IAOpE,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,mBAAmB,GAAG,IAAI;IAO/F,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,kBAAkB,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI;IAetH,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,2BAA2B,EAAE,GAAG,IAAI;CAgC7G"}
@@ -0,0 +1,141 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ function sameContext(a, b) {
5
+ if (!a.provenance || !b.provenance || !a.targets || !b.targets)
6
+ return false;
7
+ return a.provenance.producer === b.provenance.producer
8
+ && a.provenance.definitionSHA256 === b.provenance.definitionSHA256
9
+ && a.targets.length === b.targets.length && a.targets.every(target => b.targets?.some(other => target.model.id === other.model.id && target.model.owner === other.model.owner
10
+ && target.model.store === other.model.store && target.model.source === other.model.source
11
+ && target.proof.sourceSHA256 === other.proof.sourceSHA256
12
+ && target.proof.sourceByteLength === other.proof.sourceByteLength));
13
+ }
14
+ /** Two bounded roles: pending reservations and latest successful native contexts. */
15
+ export class CaptureRetention {
16
+ capacity;
17
+ pending = new Map();
18
+ settled = new Map();
19
+ latest = null;
20
+ inventoryOmitted = false;
21
+ captureRefusal = null;
22
+ order = 0;
23
+ constructor(capacity) {
24
+ this.capacity = capacity;
25
+ }
26
+ nextOrder() {
27
+ // Only relative ordering among at most 65 live records matters. Resequence
28
+ // before a fixed bound; never accumulate lifetime counters or tombstones.
29
+ if (this.order >= 128) {
30
+ const records = new Set([...this.pending.values(), ...[...this.settled.values()].map(x => x.attempt),
31
+ ...(this.latest ? [this.latest] : [])]);
32
+ const ordered = [...records].filter(x => x.order !== null).sort((a, b) => (a.order ?? 0) - (b.order ?? 0));
33
+ ordered.forEach((item, index) => { item.order = index + 1; });
34
+ this.order = ordered.length;
35
+ }
36
+ return ++this.order;
37
+ }
38
+ replaceLatest(next) {
39
+ const previous = this.latest;
40
+ if (previous?.refusal && previous.provenance && previous.targets) {
41
+ for (const pending of this.pending.values()) {
42
+ if ((pending.order ?? -1) >= (previous.order ?? -1))
43
+ continue;
44
+ if (!pending.targets)
45
+ pending.proofHistoryUncertain = true;
46
+ else if (sameContext(previous, pending))
47
+ pending.laterFailure = previous.refusal;
48
+ }
49
+ }
50
+ this.latest = next;
51
+ }
52
+ refuse(models, refusal) {
53
+ this.replaceLatest({ token: { runId: crypto.randomUUID() }, models, order: this.nextOrder(),
54
+ outcome: 'refused', refusal, superseded: false });
55
+ }
56
+ reserve(models) {
57
+ if (this.pending.size >= this.capacity) {
58
+ this.refuse(models, 'work-bound');
59
+ return null;
60
+ }
61
+ const attempt = { token: { runId: crypto.randomUUID() }, models, order: this.nextOrder(),
62
+ outcome: 'pending', superseded: false };
63
+ this.pending.set(attempt.token.runId, attempt);
64
+ this.replaceLatest(attempt);
65
+ return attempt;
66
+ }
67
+ prepare(attempt, targets, provenance) {
68
+ if (this.pending.get(attempt.token.runId) !== attempt)
69
+ throw new Error('Native Review reservation is no longer pending');
70
+ // Proof completion cannot turn an older attempt into the latest operation.
71
+ attempt.targets = targets;
72
+ attempt.provenance = provenance;
73
+ if ([...this.settled.values()].some(capture => sameContext(attempt, capture.attempt)
74
+ && (capture.attempt.order ?? -1) > (attempt.order ?? -1)))
75
+ attempt.superseded = true;
76
+ }
77
+ fail(attempt, refusal, outcome) {
78
+ if (this.pending.get(attempt.token.runId) !== attempt)
79
+ return;
80
+ this.pending.delete(attempt.token.runId);
81
+ attempt.outcome = outcome;
82
+ attempt.refusal = refusal;
83
+ for (const other of this.pending.values()) {
84
+ if (sameContext(attempt, other) && (attempt.order ?? -1) > (other.order ?? -1))
85
+ other.laterFailure = refusal;
86
+ // A proven failure that is no longer latest has no retained descriptor
87
+ // for a later proof to compare. Preserve bounded uncertainty instead of
88
+ // treating an older, currently unproven context as a current success.
89
+ else if (this.latest !== attempt && attempt.provenance && attempt.targets && !other.targets
90
+ && (other.order ?? -1) < (attempt.order ?? -1))
91
+ other.proofHistoryUncertain = true;
92
+ }
93
+ for (const capture of this.settled.values()) {
94
+ if (sameContext(attempt, capture.attempt) && (attempt.order ?? -1) > (capture.attempt.order ?? -1))
95
+ capture.laterFailure = refusal;
96
+ }
97
+ }
98
+ complete(attempt, facts, coverage) {
99
+ if (!attempt.targets || !attempt.provenance || attempt.order === null)
100
+ throw new Error('Native Review reservation has no producer proof');
101
+ const matching = [...this.settled.values()].find(capture => sameContext(attempt, capture.attempt));
102
+ this.pending.delete(attempt.token.runId);
103
+ if (attempt.superseded || matching && (matching.attempt.order ?? -1) > attempt.order) {
104
+ attempt.outcome = 'superseded';
105
+ return;
106
+ }
107
+ const latest = this.latest;
108
+ if (latest?.refusal && (latest.order ?? -1) > attempt.order && sameContext(attempt, latest)) {
109
+ attempt.laterFailure = latest.refusal;
110
+ }
111
+ if (attempt.proofHistoryUncertain) {
112
+ // Missing bounded history cannot prove that this old proof was not
113
+ // superseded. Refuse its capture, preserving the independent report.
114
+ attempt.outcome = 'refused';
115
+ attempt.refusal = 'capture-bound';
116
+ this.captureRefusal = 'capture-bound';
117
+ this.inventoryOmitted = true;
118
+ return;
119
+ }
120
+ for (const other of this.pending.values()) {
121
+ if (sameContext(attempt, other) && (other.order ?? Number.POSITIVE_INFINITY) < attempt.order)
122
+ other.superseded = true;
123
+ }
124
+ if (matching)
125
+ this.settled.delete(matching.attempt.token.runId);
126
+ else if (this.settled.size >= this.capacity) {
127
+ const oldest = this.settled.keys().next().value;
128
+ if (oldest === undefined)
129
+ throw new Error('Native Review retention has no settled context to retire');
130
+ for (const other of this.pending.values()) {
131
+ if (!other.targets && (other.order ?? -1) < attempt.order)
132
+ other.proofHistoryUncertain = true;
133
+ }
134
+ this.settled.delete(oldest);
135
+ this.inventoryOmitted = true;
136
+ }
137
+ attempt.outcome = 'succeeded';
138
+ this.settled.set(attempt.token.runId, { attempt, targets: attempt.targets, provenance: attempt.provenance, facts, coverage, ...(attempt.laterFailure ? { laterFailure: attempt.laterFailure } : {}) });
139
+ }
140
+ }
141
+ //# sourceMappingURL=capture-retention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-retention.js","sourceRoot":"","sources":["../../src/review/capture-retention.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAgC/D,SAAS,WAAW,CAAC,CAAiB,EAAE,CAAiB;IACvD,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC7E,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ;WACjD,CAAC,CAAC,UAAU,CAAC,gBAAgB,KAAK,CAAC,CAAC,UAAU,CAAC,gBAAgB;WAC/D,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAC5F,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK;WAC3E,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM;WACtF,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,KAAK,CAAC,YAAY;WACtD,MAAM,CAAC,KAAK,CAAC,gBAAgB,KAAK,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,qFAAqF;AACrF,MAAM,OAAO,gBAAgB;IAON;IANZ,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC5C,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IACrD,MAAM,GAA0B,IAAI,CAAC;IACrC,gBAAgB,GAAG,KAAK,CAAC;IACzB,cAAc,GAA2B,IAAI,CAAC;IACtC,KAAK,GAAG,CAAC,CAAC;IAClB,YAAqB,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;IAAG,CAAC;IAEjC,SAAS;QACf,2EAA2E;QAC3E,0EAA0E;QAC1E,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;gBAClG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3G,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7F,CAAC;QACD,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IACO,aAAa,CAAC,IAAoB;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7B,IAAI,QAAQ,EAAE,OAAO,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACjE,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC5C,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;oBAAE,SAAS;gBAC9D,IAAI,CAAC,OAAO,CAAC,OAAO;oBAAE,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;qBACtD,IAAI,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC;oBAAE,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC;YACnF,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,MAAM,CAAC,MAAoC,EAAE,OAAsC;QACjF,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE;YACzF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,CAAC,MAAoC;QAC1C,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QAC3F,MAAM,OAAO,GAAmB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE;YACtG,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5E,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,CAAC,OAAuB,EAAE,OAAsB,EAAE,UAA+B;QACtF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACzH,2EAA2E;QAC3E,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;QAC3D,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;eAC/E,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IACzF,CAAC;IACD,IAAI,CAAC,OAAuB,EAAE,OAAsC,EAAE,OAAyC;QAC7G,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,OAAO;YAAE,OAAO;QAC9D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAC/F,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;gBAAE,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC;YAC7G,uEAAuE;YACvE,wEAAwE;YACxE,sEAAsE;iBACjE,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO;mBACtF,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;gBAAE,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC;QACvF,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5C,IAAI,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;QACrI,CAAC;IACH,CAAC;IACD,QAAQ,CAAC,OAAuB,EAAE,KAA0B,EAAE,QAAuC;QACnG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QAC1I,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACnG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC,UAAU,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;YACrF,OAAO,CAAC,OAAO,GAAG,YAAY,CAAC;YAAC,OAAO;QACzC,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;YAC5F,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC;QACxC,CAAC;QACD,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;YAClC,mEAAmE;YACnE,qEAAqE;YACrE,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;YAAC,OAAO,CAAC,OAAO,GAAG,eAAe,CAAC;YAAC,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC;YACtG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAAC,OAAO;QACvC,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,KAAK;gBAAE,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;QACxH,CAAC;QACD,IAAI,QAAQ;YAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAC3D,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAChD,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;YACtG,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK;oBAAE,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC;YAChG,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC5D,CAAC;QACD,OAAO,CAAC,OAAO,GAAG,WAAW,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACzM,CAAC;CACF"}
@@ -0,0 +1,57 @@
1
+ import type { IfcSourceBytes } from '@ifc-lite/parser';
2
+ import type { ReviewModel, FindingSourceResult } from './types.js';
3
+ /** A real host-owned source. Reading this contract never allocates an editor. */
4
+ export interface NativeReviewModel extends ReviewModel {
5
+ readonly owner: object;
6
+ readonly store: object;
7
+ readonly source: IfcSourceBytes;
8
+ mutationView(): {
9
+ getMutationRevision(): number;
10
+ } | null;
11
+ }
12
+ export interface ReviewSourceProof {
13
+ readonly modelId: string;
14
+ readonly sourceSHA256: string;
15
+ readonly sourceByteLength: number;
16
+ }
17
+ export interface ReviewRunProvenance {
18
+ readonly runId: string;
19
+ readonly producer: 'ids' | 'rules';
20
+ readonly definitionSHA256: string;
21
+ readonly capturedAt: string;
22
+ readonly sources: readonly ReviewSourceProof[];
23
+ readonly origin: 'captured';
24
+ }
25
+ export interface ReviewSpecificationCoverage {
26
+ readonly specificationId: string;
27
+ readonly applicableCount: number;
28
+ readonly passedCount: number;
29
+ readonly failedCount: number;
30
+ readonly detailRows: number;
31
+ }
32
+ export interface NativeReviewResult extends FindingSourceResult {
33
+ provenance: ReviewRunProvenance[];
34
+ retention?: {
35
+ policy: 'latest-successful-native-context';
36
+ limit: number;
37
+ inventoryOmitted: boolean;
38
+ omittedHistoricalRuns: null;
39
+ captureRefusal: 'capture-bound' | null;
40
+ };
41
+ latestAttempt?: {
42
+ state: 'pending' | 'succeeded' | 'failed' | 'aborted' | 'refused' | 'superseded';
43
+ refusal?: NativeReviewResult['refusal'];
44
+ proof: ReviewRunProvenance | null;
45
+ } | null;
46
+ coverage: Array<{
47
+ runId: string;
48
+ specifications: ReviewSpecificationCoverage[];
49
+ }>;
50
+ availability: 'available' | 'not-run' | 'unavailable';
51
+ /** Closed host facts, never a raw exception or unauthorized model label. */
52
+ refusal?: 'source-unavailable' | 'work-bound' | 'capture-bound' | 'target-changed' | 'scope' | 'sensitive-input' | 'producer-pending' | 'producer-failed' | 'aborted';
53
+ }
54
+ export interface ReviewCaptureToken {
55
+ readonly runId: string;
56
+ }
57
+ //# sourceMappingURL=capture-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-types.d.ts","sourceRoot":"","sources":["../../src/review/capture-types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEnE,iFAAiF;AACjF,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,YAAY,IAAI;QAAE,mBAAmB,IAAI,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC1D;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAG,OAAO,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC7D,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,SAAS,CAAC,EAAE;QAAE,MAAM,EAAE,kCAAkC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,OAAO,CAAC;QAAC,qBAAqB,EAAE,IAAI,CAAC;QAAC,cAAc,EAAE,eAAe,GAAG,IAAI,CAAA;KAAE,CAAC;IAC1K,aAAa,CAAC,EAAE;QAAE,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC;QACjG,OAAO,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACtF,QAAQ,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,2BAA2B,EAAE,CAAA;KAAE,CAAC,CAAC;IAClF,YAAY,EAAE,WAAW,GAAG,SAAS,GAAG,aAAa,CAAC;IACtD,4EAA4E;IAC5E,OAAO,CAAC,EAAE,oBAAoB,GAAG,YAAY,GAAG,eAAe,GAAG,gBAAgB,GAAG,OAAO,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,SAAS,CAAC;CACvK;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB"}
@@ -0,0 +1,5 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ export {};
5
+ //# sourceMappingURL=capture-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-types.js","sourceRoot":"","sources":["../../src/review/capture-types.ts"],"names":[],"mappings":"AAAA;;+DAE+D"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Coordination cards (P18, #6922): findings that refer to exactly the same
3
+ * set of validated elements form one card. Cards are not transitive clusters:
4
+ * a clash between A and B is its own card, and links to the card of findings
5
+ * on A alone as *related* instead of absorbing it, so no finding is ever in
6
+ * two cards and one busy element cannot swallow the whole model.
7
+ *
8
+ * A finding with any element that does not resolve to exactly one loaded
9
+ * model (ambiguous, missing, or unresolved by its native source) is never
10
+ * merged: it gets a card of its own marked unvalidated.
11
+ */
12
+ import { type ElementResolution } from './identity.js';
13
+ import type { FindingElement, FindingSourceKind, ReviewFinding, ReviewModel, ReviewMessage } from './types.js';
14
+ export interface CardElement extends FindingElement {
15
+ /** Durable key when validated; null otherwise. */
16
+ key: string | null;
17
+ resolution: ElementResolution['state'];
18
+ /** Live express id in `resolvedModelId` when validated. */
19
+ expressId: number | null;
20
+ resolvedModelId: string | null;
21
+ }
22
+ /**
23
+ * `current`: an analysis observes it now. `not-evaluated`: only historical
24
+ * evidence, and no complete compatible run looked again. `resolution-candidate`:
25
+ * only historical evidence, every item re-examined by a complete current run
26
+ * and no longer observed; a human decides. `record`: only coordination records (BCF topics or saved grouping receipts).
27
+ */
28
+ export type CardState = 'current' | 'not-evaluated' | 'resolution-candidate' | 'record';
29
+ export interface CoordinationCard<Message extends ReviewMessage = ReviewMessage> {
30
+ /** Durable identity: the sorted validated element keys, or the single finding for an unvalidated card. */
31
+ key: string;
32
+ identity: 'validated' | 'unvalidated';
33
+ elements: CardElement[];
34
+ findings: ReviewFinding<Message>[];
35
+ sources: FindingSourceKind[];
36
+ state: CardState;
37
+ /** BCF topic GUIDs among the findings. */
38
+ topics: string[];
39
+ /** Cards sharing at least one validated element with this one. */
40
+ related: string[];
41
+ disciplines: string[];
42
+ storeys: string[];
43
+ models: string[];
44
+ }
45
+ /** Each total counts a different thing; none is derived from another. */
46
+ export interface ReviewTotals {
47
+ uniqueElements: number;
48
+ unverifiedElements: number;
49
+ currentFindings: number;
50
+ historicalFindings: number;
51
+ cards: number;
52
+ topics: number;
53
+ }
54
+ export declare function buildCards<Message extends ReviewMessage>(findings: readonly ReviewFinding<Message>[], models: readonly ReviewModel[]): {
55
+ cards: CoordinationCard<Message>[];
56
+ totals: ReviewTotals;
57
+ };
58
+ /** Totals for the exact cards included in an action, independently of workspace filters. */
59
+ export declare function totalsForCards<Message extends ReviewMessage>(cards: readonly CoordinationCard<Message>[]): ReviewTotals;
60
+ //# sourceMappingURL=cards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cards.d.ts","sourceRoot":"","sources":["../../src/review/cards.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,EAA8B,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE/G,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,kDAAkD;IAClD,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACvC,2DAA2D;IAC3D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,eAAe,GAAG,sBAAsB,GAAG,QAAQ,CAAC;AAExF,MAAM,WAAW,gBAAgB,CAAC,OAAO,SAAS,aAAa,GAAG,aAAa;IAC7E,0GAA0G;IAC1G,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,WAAW,GAAG,aAAa,CAAC;IACtC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;IACnC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kEAAkE;IAClE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,yEAAyE;AACzE,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAcD,wBAAgB,UAAU,CAAC,OAAO,SAAS,aAAa,EAAE,QAAQ,EAAE,SAAS,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG;IAAE,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CA0CnM;AAED,4FAA4F;AAC5F,wBAAgB,cAAc,CAAC,OAAO,SAAS,aAAa,EAAE,KAAK,EAAE,SAAS,gBAAgB,CAAC,OAAO,CAAC,EAAE,GAAG,YAAY,CAYvH"}