@ifc-lite/sdk 9.3.0 → 9.5.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 (71) hide show
  1. package/README.md +35 -0
  2. package/dist/review/capture-budget.d.ts.map +1 -1
  3. package/dist/review/capture-budget.js +9 -0
  4. package/dist/review/capture-budget.js.map +1 -1
  5. package/dist/review/capture-ownership.d.ts +12 -0
  6. package/dist/review/capture-ownership.d.ts.map +1 -0
  7. package/dist/review/capture-ownership.js +8 -0
  8. package/dist/review/capture-ownership.js.map +1 -0
  9. package/dist/review/capture-types.d.ts +14 -0
  10. package/dist/review/capture-types.d.ts.map +1 -1
  11. package/dist/review/cards.js +1 -1
  12. package/dist/review/cards.js.map +1 -1
  13. package/dist/review/clash-identity.d.ts +9 -0
  14. package/dist/review/clash-identity.d.ts.map +1 -0
  15. package/dist/review/clash-identity.js +18 -0
  16. package/dist/review/clash-identity.js.map +1 -0
  17. package/dist/review/clash.d.ts +25 -0
  18. package/dist/review/clash.d.ts.map +1 -0
  19. package/dist/review/clash.js +97 -0
  20. package/dist/review/clash.js.map +1 -0
  21. package/dist/review/identity.d.ts +1 -1
  22. package/dist/review/identity.d.ts.map +1 -1
  23. package/dist/review/identity.js +7 -2
  24. package/dist/review/identity.js.map +1 -1
  25. package/dist/review/native-captures.d.ts +4 -0
  26. package/dist/review/native-captures.d.ts.map +1 -1
  27. package/dist/review/native-captures.js +9 -6
  28. package/dist/review/native-captures.js.map +1 -1
  29. package/dist/review/native-identity-table.d.ts +8 -0
  30. package/dist/review/native-identity-table.d.ts.map +1 -0
  31. package/dist/review/native-identity-table.js +29 -0
  32. package/dist/review/native-identity-table.js.map +1 -0
  33. package/dist/review/portable-bindings.d.ts +7 -0
  34. package/dist/review/portable-bindings.d.ts.map +1 -0
  35. package/dist/review/portable-bindings.js +88 -0
  36. package/dist/review/portable-bindings.js.map +1 -0
  37. package/dist/review/portable-native-owners.d.ts +23 -0
  38. package/dist/review/portable-native-owners.d.ts.map +1 -0
  39. package/dist/review/portable-native-owners.js +127 -0
  40. package/dist/review/portable-native-owners.js.map +1 -0
  41. package/dist/review/portable-projection.d.ts +11 -0
  42. package/dist/review/portable-projection.d.ts.map +1 -0
  43. package/dist/review/portable-projection.js +104 -0
  44. package/dist/review/portable-projection.js.map +1 -0
  45. package/dist/review/portable-report-metadata.d.ts +1 -0
  46. package/dist/review/portable-report-metadata.d.ts.map +1 -1
  47. package/dist/review/portable-report-metadata.js +5 -2
  48. package/dist/review/portable-report-metadata.js.map +1 -1
  49. package/dist/review/portable-snapshot.d.ts +89 -0
  50. package/dist/review/portable-snapshot.d.ts.map +1 -0
  51. package/dist/review/portable-snapshot.js +164 -0
  52. package/dist/review/portable-snapshot.js.map +1 -0
  53. package/dist/review/portable-source-contract.d.ts +3 -0
  54. package/dist/review/portable-source-contract.d.ts.map +1 -0
  55. package/dist/review/portable-source-contract.js +8 -0
  56. package/dist/review/portable-source-contract.js.map +1 -0
  57. package/dist/review/portable-validation-evidence.d.ts +2 -1
  58. package/dist/review/portable-validation-evidence.d.ts.map +1 -1
  59. package/dist/review/portable-validation-evidence.js +3 -1
  60. package/dist/review/portable-validation-evidence.js.map +1 -1
  61. package/dist/review/saved-validation.d.ts +16 -0
  62. package/dist/review/saved-validation.d.ts.map +1 -0
  63. package/dist/review/saved-validation.js +31 -0
  64. package/dist/review/saved-validation.js.map +1 -0
  65. package/dist/review/types.d.ts +2 -0
  66. package/dist/review/types.d.ts.map +1 -1
  67. package/dist/review.d.ts +5 -0
  68. package/dist/review.d.ts.map +1 -1
  69. package/dist/review.js +5 -0
  70. package/dist/review.js.map +1 -1
  71. package/package.json +9 -9
@@ -0,0 +1,164 @@
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
+ import { buildCards } from './cards.js';
5
+ import { reviewValueFits } from './capture-budget.js';
6
+ import { decodeSavedAnalysisRun } from './portable-analysis.js';
7
+ import { validateSavedReport } from './portable-saved-validation.js';
8
+ import { analysisBinding, validationBinding } from './portable-bindings.js';
9
+ import { withPortableOwners } from './portable-native-owners.js';
10
+ import { projectPortableAnalysis, projectPortableValidation } from './portable-projection.js';
11
+ import { FINDING_SOURCE_KINDS } from './types.js';
12
+ function selectors(value, maximum) {
13
+ if (value === undefined)
14
+ return undefined;
15
+ if (!Array.isArray(value) || value.length > maximum || value.some(x => typeof x !== 'string' || x.length > 1_024)) {
16
+ throw new Error('Review selectors must be bounded string arrays');
17
+ }
18
+ return value.slice();
19
+ }
20
+ function records(value) {
21
+ if (value === undefined)
22
+ return [];
23
+ if (!Array.isArray(value) || value.length > 32)
24
+ throw new Error('Portable Review libraries must be arrays of at most 32 records');
25
+ return value;
26
+ }
27
+ /** Supplied records remain imported history, even when full source bytes and GUIDs bind.
28
+ * No producer, storage, editor, reconciliation or publication is invoked here.
29
+ */
30
+ export async function readPortableReview(captures, liveModels, request, allowed) {
31
+ const selected = selectors(request.sources, 5) ?? [...FINDING_SOURCE_KINDS];
32
+ if (selected.some(x => !FINDING_SOURCE_KINDS.some(kind => kind === x)))
33
+ throw new Error('Unknown Review source kind');
34
+ const requested = selectors(request.modelIds, 64);
35
+ const cap = request.maxFindings ?? 128;
36
+ if (typeof cap !== 'number' || !Number.isSafeInteger(cap) || cap < 0 || cap > 512)
37
+ throw new Error('Review row limit must be an integer from 0 to 512');
38
+ const admitted = (id) => allowed(id) && (!requested || requested.includes(id));
39
+ const scopedModels = () => liveModels().filter(model => admitted(model.id));
40
+ const empty = (refusal) => {
41
+ const cards = buildCards([], []);
42
+ return { origin: 'imported', retention: null, latestAttempt: null, findings: [], runs: [],
43
+ provenance: [], coverage: [], records: [], bindings: [],
44
+ cards: cards.cards, totals: cards.totals,
45
+ sources: selected.map(source => ({ source: source, state: source === 'validation' || source === 'clash' ? 'unavailable' : 'unsupported', refusal })),
46
+ bounds: { knownFindings: null, omittedFindings: null, rowLimit: cap, textLimit: 512,
47
+ clippedTextFields: 0, knownFindingsScope: 'supplied-historical-records', nativeCoverageComplete: false, presentationComplete: false } };
48
+ };
49
+ if (requested?.some(id => !allowed(id)))
50
+ return empty('scope');
51
+ if (!reviewValueFits(request))
52
+ return empty('work-bound');
53
+ const preflight = captures.portableEvidenceRefusal(request);
54
+ if (preflight)
55
+ return empty(preflight);
56
+ // Copy after the bounded walk, so caller mutation during source awaits cannot
57
+ // substitute another library for the one admitted at this boundary.
58
+ const frozen = structuredClone(request);
59
+ const analyses = [], reports = [];
60
+ for (const value of records(frozen.savedAnalysisRuns)) {
61
+ const saved = decodeSavedAnalysisRun(value);
62
+ if (!saved)
63
+ return empty('invalid-record');
64
+ analyses.push(saved);
65
+ }
66
+ for (const value of records(frozen.savedValidationReports)) {
67
+ if (!validateSavedReport(value))
68
+ return empty('invalid-record');
69
+ reports.push(value);
70
+ }
71
+ if (analyses.length + reports.length > 32)
72
+ return empty('work-bound');
73
+ const ids = [...analyses.map(run => `analysis:${run.id}`), ...reports.map(report => `report:${report.id}`)];
74
+ if (new Set(ids).size !== ids.length)
75
+ return empty('record-ambiguous');
76
+ // A mixed analysis library declares no kind by its mere presence. A typed
77
+ // validation-report collection, including an explicit empty one, does.
78
+ const present = (source) => source === 'clash' ? analyses.some(saved => saved.kind === 'clash')
79
+ : source === 'validation' ? analyses.some(saved => saved.kind === 'validation') || frozen.savedValidationReports !== undefined : false;
80
+ const project = (owners, unavailable = new Map()) => {
81
+ const findings = [], runs = [], bindings = [];
82
+ const append = (result, format, id, refusal) => {
83
+ for (const run of result.runs)
84
+ runs.push(run);
85
+ for (const finding of result.findings) {
86
+ const identities = finding.elements.map(element => [owners.find(owner => owner.model.id === element.modelId)?.sourceSHA256 ?? null, element.globalId]);
87
+ finding.lineage = JSON.stringify([refusal ? ['unbound-record', format, id] : ['verified-source-elements', identities], finding.lineage]);
88
+ findings.push(finding);
89
+ }
90
+ };
91
+ for (const saved of analyses) {
92
+ if (!selected.includes(saved.kind === 'clash' ? 'clash' : 'validation'))
93
+ continue;
94
+ const refusal = analysisBinding(saved, owners, unavailable);
95
+ bindings.push({ id: saved.id, format: 'saved-analysis-run', state: refusal ? 'unbound' : 'bound', refusal });
96
+ const result = projectPortableAnalysis(saved, refusal ? [] : owners);
97
+ append(result, 'saved-analysis-run', saved.id, refusal);
98
+ }
99
+ for (const saved of reports) {
100
+ if (!selected.includes('validation'))
101
+ continue;
102
+ const refusal = validationBinding(saved, owners, unavailable);
103
+ bindings.push({ id: saved.id, format: 'saved-validation-report', state: refusal ? 'unbound' : 'bound', refusal });
104
+ const result = projectPortableValidation(saved, refusal ? [] : owners);
105
+ append(result, 'saved-validation-report', saved.id, refusal);
106
+ }
107
+ let clippedTextFields = 0;
108
+ const text = (value) => {
109
+ if (value.length <= 512)
110
+ return value;
111
+ clippedTextFields++;
112
+ const split = value.charCodeAt(511) >= 0xD800 && value.charCodeAt(511) <= 0xDBFF
113
+ && value.charCodeAt(512) >= 0xDC00 && value.charCodeAt(512) <= 0xDFFF;
114
+ return value.slice(0, split ? 511 : 512);
115
+ };
116
+ // Bounds describe the complete supplied finding inventory, not merely the
117
+ // retained rows. Source truncation or gaps keep population/omission unknown.
118
+ const inventoryKnown = reports.filter(() => selected.includes('validation')).every(saved => saved.snapshot.kind === 'ids-report' && saved.snapshot.elementEvidence !== undefined
119
+ && saved.snapshot.elementEvidence.omitted === 0 && saved.snapshot.elementEvidence.gaps.length === 0
120
+ // #7372: summaries count failed entities (warnings have their own bucket
121
+ // for rules), not failed specifications/cardinality-only outcomes.
122
+ && saved.snapshot.elementEvidence.rows.length === saved.snapshot.summary.failed + (saved.snapshot.summary.warnings ?? 0))
123
+ && analyses.filter(saved => selected.includes(saved.kind === 'clash' ? 'clash' : 'validation')).every(saved => saved.kind === 'clash' ? !saved.result.truncated : saved.report.specificationResults.every(spec => !spec.error && !spec.setResultsTruncated && spec.passedCount + spec.failedCount === spec.applicableCount
124
+ && spec.entityResults.reduce((failed, row) => failed + Number(!row.passed), 0) === spec.failedCount));
125
+ const visible = findings.slice(0, cap);
126
+ for (const finding of visible) {
127
+ finding.title = text(finding.title);
128
+ finding.detail = finding.detail.map(text);
129
+ finding.storeys = finding.storeys.map(text);
130
+ finding.disciplines = finding.disciplines.map(text);
131
+ for (const element of finding.elements)
132
+ if (element.name !== undefined)
133
+ element.name = text(element.name);
134
+ }
135
+ for (const run of runs) {
136
+ run.label = text(run.label);
137
+ for (const gap of run.incomplete)
138
+ if (gap.detail !== undefined)
139
+ gap.detail = text(gap.detail);
140
+ }
141
+ const models = owners.map(owner => ({ ...owner.model, sourceIdentity: owner.sourceSHA256,
142
+ expressIdOf: (GlobalId) => owner.identities.get(GlobalId) ?? 0,
143
+ globalIdOf: (expressId) => owner.GlobalIds.get(expressId) ?? '' }));
144
+ const cards = buildCards(visible, models);
145
+ const response = { ...empty(''), findings: visible, runs, bindings,
146
+ records: [...analyses.filter(saved => selected.includes(saved.kind === 'clash' ? 'clash' : 'validation')).map(value => ({ format: 'saved-analysis-run', value })),
147
+ ...reports.filter(() => selected.includes('validation')).map(value => ({ format: 'saved-validation-report', value }))], cards: cards.cards, totals: cards.totals,
148
+ sources: selected.map(source => ({ source: source, state: source === 'validation' || source === 'clash' ? present(source) ? 'available' : 'not-run' : 'unsupported' })),
149
+ bounds: { knownFindings: inventoryKnown ? findings.length : null, omittedFindings: inventoryKnown ? findings.length - visible.length : null, rowLimit: cap, textLimit: 512,
150
+ clippedTextFields, knownFindingsScope: 'supplied-historical-records', nativeCoverageComplete: false,
151
+ presentationComplete: inventoryKnown && findings.length <= cap && !clippedTextFields } };
152
+ if (!reviewValueFits(response))
153
+ return empty('work-bound');
154
+ const final = captures.portableEvidenceRefusal(response);
155
+ return final ? empty(final) : response;
156
+ };
157
+ if (frozen.savedAnalysisRuns === undefined && frozen.savedValidationReports === undefined)
158
+ return empty('records-unavailable');
159
+ if (!analyses.length && !reports.length)
160
+ return project([]);
161
+ const result = await withPortableOwners(scopedModels, admitted, project);
162
+ return result.ok ? result.value : empty(result.refusal);
163
+ }
164
+ //# sourceMappingURL=portable-snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-snapshot.js","sourceRoot":"","sources":["../../src/review/portable-snapshot.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,sBAAsB,EAAyB,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAA8B,MAAM,gCAAgC,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAsB,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAyF,MAAM,YAAY,CAAC;AAMzI,SAAS,SAAS,CAAC,KAAc,EAAE,OAAe;IAChD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC;QAClH,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;AACvB,CAAC;AACD,SAAS,OAAO,CAAC,KAAc;IAC7B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IAClI,OAAO,KAAK,CAAC;AACf,CAAC;AACD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAA8B,EAAE,UAA8C,EACrH,OAA8B,EAAE,OAAgC;IAChE,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,CAAC;IAC5E,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACtH,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC;IACvC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACxJ,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACvF,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,EAAE;QAChC,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,MAAM,EAAE,UAAmB,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAqB,EAAE,IAAI,EAAE,EAAkB;YACnI,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAgF,EAAE,QAAQ,EAAE,EAAkF;YACrN,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM;YACxC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAA2B,EAAE,KAAK,EAAE,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;YACzK,MAAM,EAAE,EAAE,aAAa,EAAE,IAAqB,EAAE,eAAe,EAAE,IAAqB,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG;gBACnH,iBAAiB,EAAE,CAAC,EAAE,kBAAkB,EAAE,6BAAsC,EAAE,sBAAsB,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,EAAE,CAAC;IACvJ,CAAC,CAAC;IACF,IAAI,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/D,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,QAAQ,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,SAAS;QAAE,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC;IACvC,8EAA8E;IAC9E,oEAAoE;IACpE,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAuB,EAAE,EAAE,OAAO,GAA4B,EAAE,CAAC;IAC/E,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5G,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACvE,0EAA0E;IAC1E,uEAAuE;IACvE,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;QACrG,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,MAAM,CAAC,sBAAsB,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IACzI,MAAM,OAAO,GAAG,CAAC,MAAgC,EAAE,cAA4E,IAAI,GAAG,EAAE,EAAE,EAAE;QAC1I,MAAM,QAAQ,GAAoB,EAAE,EAAE,IAAI,GAAiB,EAAE,EAAE,QAAQ,GAAiF,EAAE,CAAC;QAC3J,MAAM,MAAM,GAAG,CAAC,MAA2B,EAAE,MAAc,EAAE,EAAU,EAAE,OAAsB,EAAE,EAAE;YACjG,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtC,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,IAAI,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACvJ,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;gBACzI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;gBAAE,SAAS;YAClF,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YAC7G,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACrE,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,SAAS;YAC/C,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAC9D,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,yBAAyB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YAClH,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACvE,MAAM,CAAC,MAAM,EAAE,yBAAyB,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE;YAC7B,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;gBAAE,OAAO,KAAK,CAAC;YACtC,iBAAiB,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM;mBAC3E,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC;YACxE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC,CAAC;QACF,0EAA0E;QAC1E,6EAA6E;QAC7E,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CACzF,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,KAAK,SAAS;eACjF,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YACnG,yEAAyE;YACzE,mEAAmE;eAChE,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;eACtH,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAC5G,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAChG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,eAAe;mBACrG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5G,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvC,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/E,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAAC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACjG,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ;gBAAE,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;oBAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5G,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC5B,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU;gBAAE,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;oBAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChG,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,CAAC,YAAY;YACtF,WAAW,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;YACtE,UAAU,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9E,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ;YAChE,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC/J,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,yBAAyB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM;YAClK,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAA2B,EAAE,KAAK,EAAE,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;YAC5L,MAAM,EAAE,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG;gBACxK,iBAAiB,EAAE,kBAAkB,EAAE,6BAAsC,EAAE,sBAAsB,EAAE,KAAK;gBAC5G,oBAAoB,EAAE,cAAc,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;QAC7F,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QACzD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACzC,CAAC,CAAC;IACF,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,IAAI,MAAM,CAAC,sBAAsB,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC/H,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Full source identity, distinct from the historical sampled fingerprint. */
2
+ export declare function isFullSourceSHA256(value: unknown): value is string;
3
+ //# sourceMappingURL=portable-source-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-source-contract.d.ts","sourceRoot":"","sources":["../../src/review/portable-source-contract.ts"],"names":[],"mappings":"AAIA,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAElE"}
@@ -0,0 +1,8 @@
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
+ /** Full source identity, distinct from the historical sampled fingerprint. */
5
+ export function isFullSourceSHA256(value) {
6
+ return typeof value === 'string' && /^[0-9a-f]{64}$/.test(value);
7
+ }
8
+ //# sourceMappingURL=portable-source-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-source-contract.js","sourceRoot":"","sources":["../../src/review/portable-source-contract.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC"}
@@ -1,4 +1,3 @@
1
- /** Canonical saved failure evidence wire contract shared by document import and native Review (#7372). */
2
1
  export declare const SAVED_VALIDATION_LIMITS: {
3
2
  readonly rows: 2000;
4
3
  readonly sourceRows: 50000;
@@ -15,6 +14,8 @@ export interface SavedValidationElement {
15
14
  GlobalId: string | null;
16
15
  modelName: string | null;
17
16
  modelFingerprint?: string;
17
+ /** Optional producer-captured full source identity; absence remains historical/unbound. */
18
+ modelContentHash?: string;
18
19
  ifcType: string;
19
20
  Name?: string;
20
21
  title: string;
@@ -1 +1 @@
1
- {"version":3,"file":"portable-validation-evidence.d.ts","sourceRoot":"","sources":["../../src/review/portable-validation-evidence.ts"],"names":[],"mappings":"AAIA,0GAA0G;AAC1G,eAAO,MAAM,uBAAuB;;;;;;;;CAG1B,CAAC;AAWX,MAAM,WAAW,sBAAsB;IACrC,0FAA0F;IAC1F,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,QAAQ,GAAG,SAAS,CAAC;IACnC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,mGAAmG;IACnG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,qFAAqF;AACrF,MAAM,WAAW,yBAAyB;IACxC,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,qGAAqG;IACrG,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/C;AACD,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,EAAE,sBAAsB,EAAE,CAAC;IAC/B,0FAA0F;IAC1F,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,0HAA0H;IAC1H,UAAU,CAAC,EAAE,yBAAyB,CAAC;CACxC;AAgBD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,sBAAsB,CAQxF;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAQlI"}
1
+ {"version":3,"file":"portable-validation-evidence.d.ts","sourceRoot":"","sources":["../../src/review/portable-validation-evidence.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,uBAAuB;;;;;;;;CAG1B,CAAC;AAWX,MAAM,WAAW,sBAAsB;IACrC,0FAA0F;IAC1F,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2FAA2F;IAC3F,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,QAAQ,GAAG,SAAS,CAAC;IACnC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,mGAAmG;IACnG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,qFAAqF;AACrF,MAAM,WAAW,yBAAyB;IACxC,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,qGAAqG;IACrG,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/C;AACD,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,EAAE,sBAAsB,EAAE,CAAC;IAC/B,0FAA0F;IAC1F,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,0HAA0H;IAC1H,UAAU,CAAC,EAAE,yBAAyB,CAAC;CACxC;AAgBD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,sBAAsB,CASxF;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAQlI"}
@@ -2,6 +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
  /** Canonical saved failure evidence wire contract shared by document import and native Review (#7372). */
5
+ import { isFullSourceSHA256 } from './portable-source-contract.js';
5
6
  export const SAVED_VALIDATION_LIMITS = {
6
7
  rows: 2_000, sourceRows: 50_000, rowBytes: 8_192, totalBytes: 1_048_576,
7
8
  text: 1_024, checks: 1_024, definitionBytes: 131_072,
@@ -14,7 +15,7 @@ const CHECK_LIMIT = SAVED_VALIDATION_LIMITS.checks;
14
15
  const DEFINITION_BYTE_LIMIT = SAVED_VALIDATION_LIMITS.definitionBytes;
15
16
  const DIGEST = /^xxh64:[0-9a-f]{16}$/;
16
17
  const EVIDENCE_FIELDS = new Set(['version', 'rows', 'observed', 'omitted', 'gaps', 'definition']);
17
- const ROW_FIELDS = new Set(['id', 'specificationId', 'GlobalId', 'modelName', 'modelFingerprint', 'ifcType', 'Name', 'title', 'nativeStatus', 'detail', 'signature']);
18
+ const ROW_FIELDS = new Set(['id', 'specificationId', 'GlobalId', 'modelName', 'modelFingerprint', 'modelContentHash', 'ifcType', 'Name', 'title', 'nativeStatus', 'detail', 'signature']);
18
19
  const digest = (value) => typeof value === 'string' && DIGEST.test(value);
19
20
  function validDefinition(value) {
20
21
  if (value === undefined)
@@ -33,6 +34,7 @@ const count = (value) => Number.isSafeInteger(value) && Number(value) >= 0;
33
34
  export function isSavedValidationElement(value) {
34
35
  if (!record(value) || Object.keys(value).some(key => !ROW_FIELDS.has(key)) || !text(value.id, 128) || !text(value.specificationId) || (value.GlobalId !== null && !text(value.GlobalId, 200))
35
36
  || (value.modelName !== null && !text(value.modelName)) || (value.modelFingerprint !== undefined && !text(value.modelFingerprint, 256))
37
+ || (value.modelContentHash !== undefined && !isFullSourceSHA256(value.modelContentHash))
36
38
  || !text(value.ifcType, 200) || (value.Name !== undefined && (typeof value.Name !== 'string' || value.Name.length > TEXT_LIMIT))
37
39
  || typeof value.title !== 'string' || value.title.length > TEXT_LIMIT
38
40
  || (value.nativeStatus !== 'failed' && value.nativeStatus !== 'warning') || !Array.isArray(value.detail)
@@ -1 +1 @@
1
- {"version":3,"file":"portable-validation-evidence.js","sourceRoot":"","sources":["../../src/review/portable-validation-evidence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"portable-validation-evidence.js","sourceRoot":"","sources":["../../src/review/portable-validation-evidence.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,0GAA0G;AAC1G,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS;IACvE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO;CAC5C,CAAC;AACX,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,IAAI,CAAC;AACzD,MAAM,cAAc,GAAG,uBAAuB,CAAC,QAAQ,CAAC;AACxD,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,UAAU,CAAC;AAC5D,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC;AAChD,MAAM,WAAW,GAAG,uBAAuB,CAAC,MAAM,CAAC;AACnD,MAAM,qBAAqB,GAAG,uBAAuB,CAAC,eAAe,CAAC;AACtE,MAAM,MAAM,GAAG,sBAAsB,CAAC;AACtC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;AAClG,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;AAuC1L,MAAM,MAAM,GAAG,CAAC,KAAc,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpG,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;WAC9G,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW;WACjE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,qBAAqB;QAAE,OAAO,KAAK,CAAC;IACtG,MAAM,MAAM,GAAc,KAAK,CAAC,MAAM,CAAC;IACvC,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;WACnH,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAE,KAAwB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC;AACzF,CAAC;AAED,MAAM,MAAM,GAAG,CAAC,KAAc,EAAoC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnI,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,MAAc,UAAU,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;AACjJ,MAAM,KAAK,GAAG,CAAC,KAAc,EAAmB,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACrG,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;WACxL,CAAC,KAAK,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;WACpI,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;WACrF,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;WAC7H,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU;WAClE,CAAC,KAAK,CAAC,YAAY,KAAK,QAAQ,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;WACrG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrJ,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,IAAI,cAAc,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAAc,EAAE,EAAU,EAAE,MAAgD;IAC1H,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,mBAAmB;WAC1K,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO;WACvG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;WAC3F,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM;WACtJ,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,gBAAgB,EAAE,CAAC;QACnF,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,8DAA8D,EAAE,CAAC,CAAC;IACrG,CAAC;AACH,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { SavedValidationReport } from './portable-saved-validation.js';
2
+ import type { SavedValidationElement } from './portable-validation-evidence.js';
3
+ import type { FindingLifecycle, FindingSourceResult, ReviewMessage, RunGap } from './types.js';
4
+ /** One projection of the actual saved failure rows. Re-examination and human
5
+ * decisions remain with the native caller; importing alone supplies neither.
6
+ */
7
+ export declare function savedValidationFacts<Message extends ReviewMessage = ReviewMessage>(saved: SavedValidationReport, options?: {
8
+ incomplete?: RunGap<Message>[];
9
+ /** Host-verified full source and GUID proof; absent preserves legacy name-only handling. */
10
+ identityAvailable?: (row: SavedValidationElement) => boolean;
11
+ outcome?: (row: SavedValidationElement) => {
12
+ lifecycle: FindingLifecycle;
13
+ notes?: Message[];
14
+ } | undefined;
15
+ }): FindingSourceResult<Message>;
16
+ //# sourceMappingURL=saved-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saved-validation.d.ts","sourceRoot":"","sources":["../../src/review/saved-validation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAc,mBAAmB,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAG3G;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,SAAS,aAAa,GAAG,aAAa,EAAE,KAAK,EAAE,qBAAqB,EAC9G,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,4FAA4F;IAC5F,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,sBAAsB,KAAK,OAAO,CAAC;IAC7D,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,sBAAsB,KAAK;QAAE,SAAS,EAAE,gBAAgB,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GAAG,SAAS,CAAA;CAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAyBlJ"}
@@ -0,0 +1,31 @@
1
+ import { typeDisciplines } from './disciplines.js';
2
+ /** One projection of the actual saved failure rows. Re-examination and human
3
+ * decisions remain with the native caller; importing alone supplies neither.
4
+ */
5
+ export function savedValidationFacts(saved, options = {}) {
6
+ const snapshot = saved.snapshot;
7
+ if (snapshot.kind !== 'ids-report')
8
+ return { runs: [], findings: [] };
9
+ const captured = snapshot.elementEvidence;
10
+ const run = { id: JSON.stringify(['saved-validation', saved.id]), source: 'validation', temporal: 'historical',
11
+ label: snapshot.sourceName, capturedAt: snapshot.generatedAt, complete: false,
12
+ models: snapshot.reportModels?.map(model => model.name) ?? [],
13
+ incomplete: [...(options.incomplete ?? [{ code: 'partial-source', detail: 'Imported history is not independent native execution.' }]),
14
+ ...(captured?.gaps.map(detail => ({ code: 'partial-source', detail })) ?? [])] };
15
+ return { runs: [run], findings: (captured?.rows ?? []).map(row => {
16
+ const outcome = options.outcome?.(row);
17
+ const identityAvailable = !!row.GlobalId && (!!row.modelName || options.identityAvailable?.(row) === true);
18
+ return { id: JSON.stringify([run.id, row.id]),
19
+ lineage: JSON.stringify(['saved-validation', snapshot.sourceName, row.specificationId, row.modelName, row.GlobalId, row.id]),
20
+ source: 'validation', run, elements: row.GlobalId ? [{ globalId: row.GlobalId, modelId: null, modelName: row.modelName,
21
+ ifcType: row.ifcType, ...(row.Name !== undefined ? { name: row.Name } : {}),
22
+ ...(!identityAvailable ? { nativeUnresolved: 'unmatched' } : {}) }] : [],
23
+ nativeStatus: row.nativeStatus, title: row.title, detail: [...row.detail,
24
+ ...(row.modelFingerprint ? [`source fingerprint ${row.modelFingerprint}`] : []),
25
+ ...(!identityAvailable ? ['Saved durable identity unavailable'] : [])],
26
+ ...(outcome?.notes ? { notes: outcome.notes } : {}),
27
+ lifecycle: outcome?.lifecycle ?? 'not-evaluated', disciplines: typeDisciplines(row.ifcType), storeys: [],
28
+ evidence: { kind: 'saved-validation', reportId: saved.id, rowId: row.id }, };
29
+ }) };
30
+ }
31
+ //# sourceMappingURL=saved-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saved-validation.js","sourceRoot":"","sources":["../../src/review/saved-validation.ts"],"names":[],"mappings":"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"}
@@ -146,6 +146,8 @@ export interface FindingSourceResult<Message extends ReviewMessage = ReviewMessa
146
146
  }
147
147
  /** A model as the review layer sees it: identity plus a GlobalId lookup. */
148
148
  export interface ReviewModel {
149
+ /** Full source identity verified by the host for this read. Omit for legacy name-only models. */
150
+ sourceIdentity?: string;
149
151
  id: string;
150
152
  name: string;
151
153
  /** Returns a positive express id, or a value <= 0 when the GlobalId is not in the model. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/review/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/review/types.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,0FAA0F;AAC1F,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;CACpD;AAED,4CAA4C;AAC5C,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,YAAY,GAAG,YAAY,GAAG,KAAK,GAAG,QAAQ,CAAC;AAGzF,eAAO,MAAM,oBAAoB,EAA2C,SAAS,iBAAiB,EAAE,CAAC;AAEzG;;;;GAIG;AACH,MAAM,WAAW,UAAU,CAAC,OAAO,SAAS,aAAa,GAAG,aAAa;IACvE,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,SAAS,GAAG,YAAY,CAAC;IACnC,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,qGAAqG;IACrG,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,gGAAgG;IAChG,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9B,qDAAqD;IACrD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,aAAa,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,sBAAsB,GACzH,gBAAgB,GAAG,kBAAkB,CAAC;AAI1C,eAAO,MAAM,aAAa,EAAoC,SAAS,UAAU,EAAE,CAAC;AACpF,qHAAqH;AACrH,MAAM,WAAW,MAAM,CAAC,OAAO,SAAS,aAAa,GAAG,aAAa;IAAI,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE;AAE/H,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC7B,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,qHAAqH;IACrH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,wFAAwF;IACxF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qGAAqG;IACrG,gBAAgB,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC;CAC9C;AAED,yEAAyE;AACzE,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC5E;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,yBAAyB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACnF;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACtF;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,KAAK,GAAG,YAAY,GAAG,SAAS,GAAG,oBAAoB,GAAG,eAAe,GAAG,QAAQ,CAAC;AAEjI,MAAM,WAAW,aAAa,CAAC,OAAO,SAAS,aAAa,GAAG,aAAa;IAC1E,gDAAgD;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACzB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,uGAAuG;IACvG,YAAY,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,wFAAwF;IACxF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,+GAA+G;IAC/G,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,iGAAiG;IACjG,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,wDAAwD;AACxD,MAAM,WAAW,mBAAmB,CAAC,OAAO,SAAS,aAAa,GAAG,aAAa;IAChF,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5B,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;CACpC;AAED,4EAA4E;AAC5E,MAAM,WAAW,WAAW;IAC1B,iGAAiG;IACjG,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,4FAA4F;IAC5F,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,QAAQ,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa,CAAC,OAAO,SAAS,aAAa,GAAG,aAAa;IAC1E,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;CACvE"}
package/dist/review.d.ts CHANGED
@@ -24,4 +24,9 @@ export type { IdsReportCheckSummary, IdsReportRuleSummary, IdsReportCardinality,
24
24
  export { validateManualReportBlock } from './review/portable-manual-report.js';
25
25
  export type { ManualReportVerdict, ManualReportCounts, ManualReportItem, ManualReportBlock } from './review/portable-manual-report.js';
26
26
  export * from './review/portable-saved-validation.js';
27
+ export { clashFindings, clashGlobalId } from './review/clash.js';
28
+ export { clashDisciplineCandidates, clashOccurrenceKey } from './review/clash-identity.js';
29
+ export { createNativeReviewIdentityTable } from './review/native-identity-table.js';
30
+ export { savedValidationFacts } from './review/saved-validation.js';
31
+ export { readPortableReview } from './review/portable-snapshot.js';
27
32
  //# sourceMappingURL=review.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../src/review.ts"],"names":[],"mappings":"AAIA,uFAAuF;AACvF,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAC9F,gBAAgB,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9G,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAE5J,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAC9I,YAAY,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAE3I,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAE1F,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAChG,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAC3J,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvI,cAAc,uCAAuC,CAAC"}
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../src/review.ts"],"names":[],"mappings":"AAIA,uFAAuF;AACvF,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAC9F,gBAAgB,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9G,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAE5J,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAC9I,YAAY,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAE3I,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAE1F,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAChG,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAC3J,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvI,cAAc,uCAAuC,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC"}
package/dist/review.js CHANGED
@@ -20,4 +20,9 @@ export * from './review/portable-report-metadata.js';
20
20
  export { reportBlockSourceKind, validateIdsReportBlock } from './review/portable-ids-report.js';
21
21
  export { validateManualReportBlock } from './review/portable-manual-report.js';
22
22
  export * from './review/portable-saved-validation.js';
23
+ export { clashFindings, clashGlobalId } from './review/clash.js';
24
+ export { clashDisciplineCandidates, clashOccurrenceKey } from './review/clash-identity.js';
25
+ export { createNativeReviewIdentityTable } from './review/native-identity-table.js';
26
+ export { savedValidationFacts } from './review/saved-validation.js';
27
+ export { readPortableReview } from './review/portable-snapshot.js';
23
28
  //# sourceMappingURL=review.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"review.js","sourceRoot":"","sources":["../src/review.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,uFAAuF;AACvF,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGxE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAuB,MAAM,sBAAsB,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,0FAA0F;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAG9I,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAGhF,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEhG,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAE/E,cAAc,uCAAuC,CAAC"}
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../src/review.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,uFAAuF;AACvF,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGxE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAuB,MAAM,sBAAsB,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,0FAA0F;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAG9I,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAGhF,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEhG,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAE/E,cAAc,uCAAuC,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/sdk",
3
- "version": "9.3.0",
3
+ "version": "9.5.0",
4
4
  "description": "Scripting SDK for ifc-lite — the bim.* API for BIM automation",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -24,21 +24,21 @@
24
24
  "@ifc-lite/drawing-2d": "^4.2.0",
25
25
  "@ifc-lite/data": "^6.2.0",
26
26
  "@ifc-lite/encoding": "^2.3.0",
27
- "@ifc-lite/ids": "^3.3.3",
27
+ "@ifc-lite/ids-authoring": "^0.2.4",
28
+ "@ifc-lite/ids": "^3.3.4",
28
29
  "@ifc-lite/lens": "^2.2.0",
29
- "@ifc-lite/ids-authoring": "^0.2.3",
30
- "@ifc-lite/export": "^4.11.0",
31
- "@ifc-lite/lists": "^3.1.3",
32
- "@ifc-lite/parser": "^9.5.0",
33
30
  "@ifc-lite/mutations": "^3.2.0",
31
+ "@ifc-lite/lists": "^3.1.5",
32
+ "@ifc-lite/parser": "^9.5.0",
33
+ "@ifc-lite/query": "^2.5.2",
34
34
  "@ifc-lite/spatial": "^1.15.0",
35
- "@ifc-lite/query": "^2.5.2"
35
+ "@ifc-lite/export": "^4.11.0"
36
36
  },
37
37
  "devDependencies": {
38
38
  "typescript": "^6.0.3",
39
39
  "vitest": "^5.0.3",
40
- "@ifc-lite/export": "^4.11.0",
41
- "@ifc-lite/wasm": "^10.4.0"
40
+ "@ifc-lite/wasm": "^10.4.0",
41
+ "@ifc-lite/export": "^4.11.0"
42
42
  },
43
43
  "license": "MPL-2.0",
44
44
  "author": "Louis True",