@geotechcli/core 0.4.33 → 0.4.35

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 (50) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/ingest/geotech-document.d.ts +17 -0
  6. package/dist/ingest/geotech-document.d.ts.map +1 -1
  7. package/dist/ingest/geotech-document.js +258 -22
  8. package/dist/ingest/geotech-document.js.map +1 -1
  9. package/dist/ingest/geotech-extract.d.ts.map +1 -1
  10. package/dist/ingest/geotech-extract.js +6 -2
  11. package/dist/ingest/geotech-extract.js.map +1 -1
  12. package/dist/ingest/job-store.d.ts +1 -1
  13. package/dist/ingest/job-store.d.ts.map +1 -1
  14. package/dist/ingest/job-worker.d.ts.map +1 -1
  15. package/dist/ingest/job-worker.js +49 -16
  16. package/dist/ingest/job-worker.js.map +1 -1
  17. package/dist/llm/providers/hosted-beta.d.ts.map +1 -1
  18. package/dist/llm/providers/hosted-beta.js +1 -0
  19. package/dist/llm/providers/hosted-beta.js.map +1 -1
  20. package/dist/llm/providers/zhipu.d.ts.map +1 -1
  21. package/dist/llm/providers/zhipu.js +3 -0
  22. package/dist/llm/providers/zhipu.js.map +1 -1
  23. package/dist/llm/router.d.ts +2 -0
  24. package/dist/llm/router.d.ts.map +1 -1
  25. package/dist/llm/router.js +2 -0
  26. package/dist/llm/router.js.map +1 -1
  27. package/dist/llm/types.d.ts +1 -0
  28. package/dist/llm/types.d.ts.map +1 -1
  29. package/dist/llm/types.js.map +1 -1
  30. package/dist/meta/metadata.json +2 -2
  31. package/dist/report/html.d.ts.map +1 -1
  32. package/dist/report/html.js +226 -48
  33. package/dist/report/html.js.map +1 -1
  34. package/dist/report/ingest-dossier.d.ts +1 -0
  35. package/dist/report/ingest-dossier.d.ts.map +1 -1
  36. package/dist/report/ingest-dossier.js +211 -34
  37. package/dist/report/ingest-dossier.js.map +1 -1
  38. package/dist/vision/geotech-document.d.ts +1 -0
  39. package/dist/vision/geotech-document.d.ts.map +1 -1
  40. package/dist/vision/geotech-document.js +156 -5
  41. package/dist/vision/geotech-document.js.map +1 -1
  42. package/dist/vision/layout-ocr.d.ts +44 -0
  43. package/dist/vision/layout-ocr.d.ts.map +1 -0
  44. package/dist/vision/layout-ocr.js +216 -0
  45. package/dist/vision/layout-ocr.js.map +1 -0
  46. package/dist/vision/ocr.d.ts +5 -1
  47. package/dist/vision/ocr.d.ts.map +1 -1
  48. package/dist/vision/ocr.js +33 -2
  49. package/dist/vision/ocr.js.map +1 -1
  50. package/package.json +1 -1
@@ -8,6 +8,112 @@ function truncate(value, maxLength) {
8
8
  const normalized = value.replace(/\s+/g, ' ').trim();
9
9
  return normalized.length > maxLength ? `${normalized.slice(0, maxLength - 1).trim()}...` : normalized;
10
10
  }
11
+ const ENGINEERING_UNIT_PATTERN = /(?<![A-Za-z])(?:(?:kN|KN|MN|N|kg|g|gm|t)\/(?:m|cm|mm|cc)(?:\^?[23])?|(?:kg|g|gm)\/cm(?:\^?2|\^?3)?|t\/m(?:\^?2|\^?3)?|N\/mm(?:\^?2)?|m\/s|MPa|kPa|Pa|kN|MN|mm|cm|m|deg)\b/gi;
12
+ function humanizeNarrative(value) {
13
+ if (!value) {
14
+ return '';
15
+ }
16
+ const units = [];
17
+ const protectedValue = value.replace(ENGINEERING_UNIT_PATTERN, (unit) => {
18
+ units.push(unit);
19
+ return `@@${units.length - 1}@@`;
20
+ });
21
+ return protectedValue
22
+ .replace(/([a-z])([A-Z])/g, '$1 $2')
23
+ .replace(/([A-Za-z])(\d)/g, '$1 $2')
24
+ .replace(/(\d)([A-Za-z])/g, '$1 $2')
25
+ .replace(/\s*([=:/(),;%])\s*/g, '$1 ')
26
+ .replace(/\s+/g, ' ')
27
+ .replace(/@@(\d+)@@/g, (_match, index) => units[Number(index)] ?? '')
28
+ .replace(/(\d)((?:kN|KN|MN|N|kg|g|gm|t)\/(?:m|cm|mm|cc)(?:\^?[23])?|(?:kg|g|gm)\/cm(?:\^?2|\^?3)?|t\/m(?:\^?2|\^?3)?|N\/mm(?:\^?2)?|m\/s|MPa|kPa|Pa|kN|MN|mm|cm|m|deg)\b/g, '$1 $2')
29
+ .replace(/\s+/g, ' ')
30
+ .trim();
31
+ }
32
+ function looksLikeNoisyOcr(value) {
33
+ if (!value.trim()) {
34
+ return true;
35
+ }
36
+ const tokens = value.split(/\s+/).filter(Boolean);
37
+ if (tokens.length === 0) {
38
+ return true;
39
+ }
40
+ const longCompactTokens = tokens.filter((token) => token.length >= 28
41
+ || /[A-Za-z]{8,}\d/.test(token)
42
+ || /\d[A-Za-z]{8,}/.test(token)).length;
43
+ const denseSymbolCount = (value.match(/[<>{}[\]\\|_]/g) ?? []).length;
44
+ const numericTokenCount = tokens.filter((token) => /\d/.test(token)).length;
45
+ const measurementTokenCount = tokens.filter((token) => /(?:%|mm|cm|kg\/cm|t\/m|n>|spt|b\.?h\.?|is:?|depth|gravel|sand|silt|clay|density|limit|friction|cohesion)/i.test(token)).length;
46
+ const sentenceBreakCount = (value.match(/[.!?]/g) ?? []).length;
47
+ const tableHeadingCount = [
48
+ 'lab test',
49
+ 'laboratory test',
50
+ 'foundation size',
51
+ 'allowable bearing capacity',
52
+ 'natural moisture content',
53
+ 'plasticity index',
54
+ 'standard penetration',
55
+ ].filter((needle) => value.toLowerCase().includes(needle)).length;
56
+ return longCompactTokens >= Math.max(2, Math.ceil(tokens.length * 0.12))
57
+ || denseSymbolCount > Math.max(4, value.length * 0.025)
58
+ || (value.length > 240
59
+ && numericTokenCount >= 14
60
+ && measurementTokenCount >= 8
61
+ && sentenceBreakCount <= 4)
62
+ || (value.length > 280
63
+ && tableHeadingCount >= 2
64
+ && numericTokenCount >= 8);
65
+ }
66
+ function cleanNarrativeText(value, maxLength) {
67
+ const cleaned = humanizeNarrative(value);
68
+ if (!cleaned || looksLikeNoisyOcr(cleaned)) {
69
+ return '';
70
+ }
71
+ return truncate(cleaned, maxLength);
72
+ }
73
+ function cleanNarrativeList(values, limit, maxLength) {
74
+ return uniqueStrings(values
75
+ .map((value) => cleanNarrativeText(value, maxLength))
76
+ .filter(Boolean)).slice(0, limit);
77
+ }
78
+ function displayTableText(value, maxLength) {
79
+ const cleaned = humanizeNarrative(value);
80
+ return cleaned ? truncate(cleaned, maxLength) : '-';
81
+ }
82
+ function parameterCategory(name) {
83
+ const normalized = name.toLowerCase();
84
+ if (/spt|rqd|rmr|ucs|cohesion|friction|phi|strength|shear/i.test(normalized))
85
+ return 'Strength';
86
+ if (/unitweight|density|moisture|watercontent|liquid|plasticity|atterberg|gradation|gravel|sand|silt|clay/i.test(normalized))
87
+ return 'Index/lab';
88
+ if (/permeability|hydraulic|groundwater|watertable|seepage/i.test(normalized))
89
+ return 'Hydrogeology';
90
+ if (/settlement|bearing|subgrade|modulus|capacity/i.test(normalized))
91
+ return 'Design';
92
+ if (/depth|elevation|thickness/i.test(normalized))
93
+ return 'Geometry';
94
+ return 'Other';
95
+ }
96
+ function sourcePageText(value) {
97
+ const matches = [...(value ?? '').matchAll(/\bpage\s+(\d+)\b/gi)]
98
+ .map((match) => match[1])
99
+ .filter((entry) => Boolean(entry));
100
+ return matches.length > 0 ? [...new Set(matches)].join(', ') : '-';
101
+ }
102
+ function countGeotechPageStatuses(result) {
103
+ return result.pageAudits.reduce((counts, audit) => {
104
+ counts[audit.parseStatus] += 1;
105
+ return counts;
106
+ }, { parsed: 0, partial: 0, failed: 0 });
107
+ }
108
+ function geotechOutcomeSummary(result) {
109
+ const statusCounts = countGeotechPageStatuses(result);
110
+ const pageSummary = `${statusCounts.parsed} parsed, ${statusCounts.partial} partial, ${statusCounts.failed} failed`;
111
+ const signalSummary = `${result.materials.length} material observation(s), ${result.classifications.length} classification(s), and ${result.parameters.length} parameter(s) retained`;
112
+ const reviewSummary = result.reviewRequired
113
+ ? 'Human review is required before this can be treated as trusted engineering input.'
114
+ : 'No blocking review finding was retained.';
115
+ return `${result.source.successfulPages}/${result.source.totalPages} pages processed (${pageSummary}); ${signalSummary}. ${reviewSummary}`;
116
+ }
11
117
  function toneFromBoolean(value, inverted = false) {
12
118
  if (inverted) {
13
119
  return value ? 'danger' : 'good';
@@ -72,8 +178,9 @@ function buildFindingGroups(findings) {
72
178
  }
73
179
  function buildGeotechTables(result) {
74
180
  const tables = [];
181
+ const auditTables = [];
75
182
  if (result.source.segmentation?.mode === 'segmented-parent' && result.source.segmentation.segments?.length) {
76
- tables.push({
183
+ auditTables.push({
77
184
  title: 'Segment execution',
78
185
  description: `Hosted-beta best-result window: ${result.source.segmentation.effectivePageLimit ?? '-'} effective pages.`,
79
186
  columns: ['Segment', 'Pages', 'Status', 'Completed', 'Failed', 'Duration'],
@@ -87,14 +194,53 @@ function buildGeotechTables(result) {
87
194
  ]),
88
195
  });
89
196
  }
197
+ if (result.pageAudits.length > 0) {
198
+ auditTables.push({
199
+ title: 'Page audit matrix',
200
+ description: 'Per-page extraction status, source path, retained signal counts, and warning volume.',
201
+ columns: ['Page', 'Class', 'Status', 'Confidence', 'Source', 'Signals', 'Warnings'],
202
+ rows: result.pageAudits.map((audit) => [
203
+ String(audit.pageNumber),
204
+ audit.classification ?? 'unknown',
205
+ audit.parseStatus,
206
+ `${audit.confidence}%`,
207
+ audit.textHintSource,
208
+ [
209
+ audit.materialCount > 0 ? `${audit.materialCount} material` : null,
210
+ audit.classificationCount > 0 ? `${audit.classificationCount} class` : null,
211
+ audit.parameterCount > 0 ? `${audit.parameterCount} parameter` : null,
212
+ ].filter(Boolean).join(', ') || '-',
213
+ audit.warnings.length > 0 ? String(audit.warnings.length) : '-',
214
+ ]),
215
+ });
216
+ }
217
+ tables.push({
218
+ title: 'Key engineering parameters',
219
+ description: 'Grouped by engineering category. Source pages are inferred from extracted context when available; confidence is the document-level workflow confidence.',
220
+ columns: ['Category', 'Parameter', 'Value', 'Unit', 'Material', 'Source pages', 'Confidence', 'Context'],
221
+ rows: [...result.parameters]
222
+ .sort((left, right) => parameterCategory(left.name).localeCompare(parameterCategory(right.name))
223
+ || left.name.localeCompare(right.name))
224
+ .map((parameter) => [
225
+ parameterCategory(parameter.name),
226
+ displayTableText(parameter.name, 90),
227
+ displayTableText(parameter.valueText, 90),
228
+ displayTableText(parameter.unit, 32),
229
+ displayTableText(parameter.material, 110),
230
+ sourcePageText(parameter.context),
231
+ `${result.confidence}%`,
232
+ displayTableText(parameter.context, 180),
233
+ ]),
234
+ emptyState: 'No explicit engineering parameters were extracted.',
235
+ });
90
236
  tables.push({
91
237
  title: 'Material observations',
92
238
  columns: ['Kind', 'Description', 'USCS', 'Lithology'],
93
239
  rows: result.materials.map((material) => [
94
- material.kind,
95
- material.description,
96
- material.uscsSymbol ?? '-',
97
- material.lithology ?? '-',
240
+ displayTableText(material.kind, 48),
241
+ displayTableText(material.description, 180),
242
+ displayTableText(material.uscsSymbol, 24),
243
+ displayTableText(material.lithology, 90),
98
244
  ]),
99
245
  emptyState: 'No material observations were extracted.',
100
246
  });
@@ -102,24 +248,12 @@ function buildGeotechTables(result) {
102
248
  title: 'Classifications',
103
249
  columns: ['System', 'Value', 'Context'],
104
250
  rows: result.classifications.map((classification) => [
105
- classification.system,
106
- classification.value,
107
- classification.context ?? '-',
251
+ displayTableText(classification.system, 48),
252
+ displayTableText(classification.value, 110),
253
+ displayTableText(classification.context, 180),
108
254
  ]),
109
255
  emptyState: 'No formal classification systems were extracted.',
110
256
  });
111
- tables.push({
112
- title: 'Engineering parameters',
113
- columns: ['Parameter', 'Value', 'Unit', 'Material', 'Context'],
114
- rows: result.parameters.map((parameter) => [
115
- parameter.name,
116
- parameter.valueText,
117
- parameter.unit ?? '-',
118
- parameter.material ?? '-',
119
- parameter.context ?? '-',
120
- ]),
121
- emptyState: 'No explicit engineering parameters were extracted.',
122
- });
123
257
  if (result.contentChunks && result.contentChunks.length > 0) {
124
258
  tables.push({
125
259
  title: 'Document map',
@@ -130,12 +264,13 @@ function buildGeotechTables(result) {
130
264
  ? String(chunk.pageRange[0])
131
265
  : `${chunk.pageRange[0]}-${chunk.pageRange[1]}`,
132
266
  chunk.sectionType ?? '-',
133
- chunk.scope,
267
+ displayTableText(chunk.scope, 90),
134
268
  chunk.significance != null ? String(chunk.significance) : '-',
135
- chunk.headingAncestry[0] ?? '-',
269
+ displayTableText(chunk.headingAncestry[0], 180),
136
270
  ]),
137
271
  });
138
272
  }
273
+ tables.push(...auditTables);
139
274
  return tables;
140
275
  }
141
276
  function buildBoreholeTables(result) {
@@ -163,8 +298,17 @@ function buildGeotechPageCards(result) {
163
298
  }
164
299
  return result.pageAudits.map((audit) => {
165
300
  const chunk = chunkByPage.get(audit.pageNumber);
301
+ const stageBadges = uniqueStrings([
302
+ audit.textHintSource === 'native-text' ? 'native text' : undefined,
303
+ audit.textHintSource === 'pdfjs-text' ? 'pdf.js text' : undefined,
304
+ audit.textHintSource === 'local-ocr' ? 'local OCR' : undefined,
305
+ audit.textHintSource === 'glm-ocr' ? 'GLM-OCR' : undefined,
306
+ audit.textHintSource === 'vision-ocr' ? 'GLM vision OCR' : undefined,
307
+ audit.textHintSource === 'vision-visual' ? 'GLM-5V visual' : undefined,
308
+ result.synthesis?.sourcePages.includes(audit.pageNumber) ? 'GLM-5.1 synthesis' : undefined,
309
+ ]);
166
310
  const highlights = uniqueStrings([
167
- chunk?.text ? truncate(chunk.text, 220) : undefined,
311
+ chunk?.text ? displayTableText(chunk.text, 180) : undefined,
168
312
  audit.materialCount > 0 ? `${audit.materialCount} material observation(s)` : undefined,
169
313
  audit.classificationCount > 0 ? `${audit.classificationCount} classification(s)` : undefined,
170
314
  audit.parameterCount > 0 ? `${audit.parameterCount} parameter(s)` : undefined,
@@ -179,6 +323,7 @@ function buildGeotechPageCards(result) {
179
323
  sourceHint: audit.textHintSource,
180
324
  sectionType: chunk?.sectionType,
181
325
  scope: chunk?.scope,
326
+ stageBadges,
182
327
  highlights,
183
328
  warnings: audit.warnings,
184
329
  };
@@ -203,25 +348,55 @@ function buildBoreholePageCards(result) {
203
348
  }
204
349
  function buildGeotechSections(result) {
205
350
  const sections = [];
351
+ const statusCounts = countGeotechPageStatuses(result);
352
+ const cleanSummary = cleanNarrativeText(result.summary, 360);
206
353
  sections.push({
207
- title: 'Executive summary',
354
+ title: 'Report takeaways',
208
355
  paragraphs: uniqueStrings([
209
- result.summary,
356
+ ...(result.synthesis?.takeaways ?? []),
357
+ cleanSummary,
210
358
  result.documentClass ? `Document class: ${result.documentClass}.` : null,
211
- `Pages processed: ${result.source.successfulPages}/${result.source.totalPages}. Confidence: ${result.confidence}%.`,
359
+ geotechOutcomeSummary(result),
360
+ `Extraction posture: ${statusCounts.parsed} parsed page(s), ${statusCounts.partial} partial page(s), ${statusCounts.failed} failed page(s), ${result.inspectionSummary?.ocrRecoveredPageCount ?? 0} OCR/text recovery page(s). Confidence: ${result.confidence}%.`,
212
361
  'Workflow confidence and approval support review triage only; they do not replace engineering judgement, design checks, or source-page verification.',
213
362
  ]),
214
363
  });
215
- if (result.risks.length > 0) {
364
+ if ((result.synthesis?.groundModel.length ?? 0) > 0) {
365
+ sections.push({
366
+ title: 'Ground model',
367
+ paragraphs: cleanNarrativeList(result.synthesis?.groundModel ?? [], 10, 320),
368
+ });
369
+ }
370
+ if ((result.synthesis?.keyParameters.length ?? 0) > 0) {
371
+ sections.push({
372
+ title: 'Key parameters',
373
+ paragraphs: cleanNarrativeList(result.synthesis?.keyParameters ?? [], 12, 280),
374
+ });
375
+ }
376
+ if ((result.synthesis?.interpretation.length ?? 0) > 0) {
377
+ sections.push({
378
+ title: 'Interpretation',
379
+ paragraphs: cleanNarrativeList(result.synthesis?.interpretation ?? [], 10, 320),
380
+ });
381
+ }
382
+ if ((result.synthesis?.limitations.length ?? 0) > 0) {
383
+ sections.push({
384
+ title: 'Limitations',
385
+ paragraphs: cleanNarrativeList(result.synthesis?.limitations ?? [], 10, 320),
386
+ });
387
+ }
388
+ const risks = cleanNarrativeList(result.risks, 8, 300);
389
+ if (risks.length > 0) {
216
390
  sections.push({
217
391
  title: 'Risks',
218
- paragraphs: result.risks,
392
+ paragraphs: risks,
219
393
  });
220
394
  }
221
- if (result.recommendations.length > 0) {
395
+ const recommendations = cleanNarrativeList(result.recommendations, 10, 300);
396
+ if (recommendations.length > 0) {
222
397
  sections.push({
223
398
  title: 'Recommendations',
224
- paragraphs: result.recommendations,
399
+ paragraphs: recommendations,
225
400
  });
226
401
  }
227
402
  return sections;
@@ -238,13 +413,14 @@ function buildBoreholeSections(result) {
238
413
  }];
239
414
  }
240
415
  function buildGeotechMetrics(result) {
416
+ const statusCounts = countGeotechPageStatuses(result);
241
417
  return [
242
418
  { label: 'Pages processed', value: `${result.source.successfulPages}/${result.source.totalPages}`, tone: result.source.failedPages > 0 ? 'warning' : 'good' },
243
419
  { label: 'Confidence', value: `${result.confidence}%`, tone: toneFromParseStatus(result.parseStatus ?? 'parsed', result.confidence) },
420
+ { label: 'Page outcomes', value: `${statusCounts.parsed}/${result.pageAudits.length}`, detail: `${statusCounts.partial} partial, ${statusCounts.failed} failed`, tone: statusCounts.failed > 0 ? 'danger' : statusCounts.partial > 0 ? 'warning' : 'good' },
244
421
  { label: 'Materials', value: String(result.materials.length), detail: `${result.classifications.length} classifications`, tone: result.materials.length > 0 ? 'good' : 'warning' },
245
422
  { label: 'Parameters', value: String(result.parameters.length), detail: result.documentClass ?? 'No document class', tone: result.parameters.length > 0 ? 'good' : 'warning' },
246
- { label: 'Review required', value: result.reviewRequired ? 'Yes' : 'No', tone: toneFromBoolean(result.reviewRequired, true) },
247
- { label: 'Auto proceed', value: result.canAutoProceed ? 'Yes' : 'No', tone: toneFromBoolean(result.canAutoProceed) },
423
+ { label: 'OCR hints', value: String(result.inspectionSummary?.ocrRecoveredPageCount ?? 0), detail: `${result.inspectionSummary?.imageHeavyPageCount ?? 0} image-heavy pages`, tone: (result.inspectionSummary?.ocrRecoveredPageCount ?? 0) > 0 ? 'good' : 'neutral' },
248
424
  ];
249
425
  }
250
426
  function buildBoreholeMetrics(result) {
@@ -295,8 +471,9 @@ export function buildIngestDossier(result, options) {
295
471
  if (result.documentType === 'geotech-document') {
296
472
  const geotechResult = result;
297
473
  const title = geotechResult.title ?? 'Geotechnical ingest dossier';
298
- const summary = geotechResult.summary
299
- ?? `Geotechnical document ingest completed with ${geotechResult.materials.length} material observation(s) and ${geotechResult.parameters.length} parameter(s).`;
474
+ const cleanSummary = cleanNarrativeText(geotechResult.summary, 320);
475
+ const summary = cleanSummary
476
+ || geotechOutcomeSummary(geotechResult);
300
477
  return {
301
478
  title,
302
479
  subtitle: geotechResult.documentClass
@@ -1 +1 @@
1
- {"version":3,"file":"ingest-dossier.js","sourceRoot":"","sources":["../../src/report/ingest-dossier.ts"],"names":[],"mappings":"AAuGA,SAAS,aAAa,CAAC,MAAwC;IAC7D,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACvH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAgC,EAAE,SAAiB;IACnE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,OAAO,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;AACxG,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,QAAQ,GAAG,KAAK;IACvD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IACnC,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACpC,CAAC;AAED,SAAS,gBAAgB,CAAC,QAA4C;IACpE,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,WAAmB,EAAE,UAAkB;IAClE,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,WAAW,KAAK,SAAS,IAAI,UAAU,GAAG,EAAE,EAAE,CAAC;QACjD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,OAM7B;IACC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7F,CAAC;AAED,SAAS,kBAAkB,CACzB,QAOE;IAEF,MAAM,KAAK,GAA8C,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC5F,MAAM,MAAM,GAAG;QACb,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,cAAc;QACtB,QAAQ,EAAE,UAAU;KACZ,CAAC;IACX,MAAM,MAAM,GAAgC,EAAE,CAAC;IAE/C,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,QAAQ;aACnB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC;aAClD,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;QACnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,SAAS;QACX,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ;YACR,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC;YACvB,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC;YAChC,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAmC;IAC7D,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,KAAK,kBAAkB,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC3G,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,mBAAmB;YAC1B,WAAW,EAAE,mCAAmC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,kBAAkB,IAAI,GAAG,mBAAmB;YACvH,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC;YAC1E,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;gBACzD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;gBAC5B,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE;gBACzC,OAAO,CAAC,MAAM,IAAI,QAAQ;gBAC1B,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG;gBACrE,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG;gBAC/D,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;aAC/E,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CAAC;QACV,KAAK,EAAE,uBAAuB;QAC9B,OAAO,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC;QACrD,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;YACvC,QAAQ,CAAC,IAAI;YACb,QAAQ,CAAC,WAAW;YACpB,QAAQ,CAAC,UAAU,IAAI,GAAG;YAC1B,QAAQ,CAAC,SAAS,IAAI,GAAG;SAC1B,CAAC;QACF,UAAU,EAAE,0CAA0C;KACvD,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC;QACV,KAAK,EAAE,iBAAiB;QACxB,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;QACvC,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC;YACnD,cAAc,CAAC,MAAM;YACrB,cAAc,CAAC,KAAK;YACpB,cAAc,CAAC,OAAO,IAAI,GAAG;SAC9B,CAAC;QACF,UAAU,EAAE,kDAAkD;KAC/D,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC;QACV,KAAK,EAAE,wBAAwB;QAC/B,OAAO,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC;QAC9D,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC;YACzC,SAAS,CAAC,IAAI;YACd,SAAS,CAAC,SAAS;YACnB,SAAS,CAAC,IAAI,IAAI,GAAG;YACrB,SAAS,CAAC,QAAQ,IAAI,GAAG;YACzB,SAAS,CAAC,OAAO,IAAI,GAAG;SACzB,CAAC;QACF,UAAU,EAAE,oDAAoD;KACjE,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,cAAc;YACrB,WAAW,EAAE,6DAA6D;YAC1E,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC;YAC3D,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;gBACxC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBAC5B,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;gBACjD,KAAK,CAAC,WAAW,IAAI,GAAG;gBACxB,KAAK,CAAC,KAAK;gBACX,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG;gBAC7D,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,GAAG;aAChC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAoC;IAC/D,OAAO,CAAC;YACN,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,CAAC,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,QAAQ,CAAC;YACnF,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACvC,QAAQ,CAAC,UAAU;gBACnB,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG;gBAC/D,QAAQ,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG;gBACzE,GAAG,QAAQ,CAAC,UAAU,GAAG;gBACzB,QAAQ,CAAC,WAAW;aACrB,CAAC;YACF,UAAU,EAAE,8BAA8B;SAC3C,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAmC;IAChE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAuC,CAAC;IACnE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC;QAC/C,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YAC3C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAA+B,EAAE,EAAE;QAC/D,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,aAAa,CAAC;YAC/B,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YACnD,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,0BAA0B,CAAC,CAAC,CAAC,SAAS;YACtF,KAAK,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,mBAAmB,oBAAoB,CAAC,CAAC,CAAC,SAAS;YAC5F,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,eAAe,CAAC,CAAC,CAAC,SAAS;SAC9E,CAAC,CAAC;QAEH,OAAO;YACL,SAAS,EAAE,QAAQ,KAAK,CAAC,UAAU,EAAE;YACrC,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,WAAW,IAAI,QAAQ,KAAK,CAAC,UAAU,EAAE;YACpF,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,SAAS;YACjD,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC;YAC9D,UAAU,EAAE,KAAK,CAAC,cAAc;YAChC,WAAW,EAAE,KAAK,EAAE,WAAW;YAC/B,KAAK,EAAE,KAAK,EAAE,KAAK;YACnB,UAAU;YACV,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAoC;IAClE,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAA8B,EAAE,EAAE,CAAC,CAAC;QAChE,SAAS,EAAE,QAAQ,KAAK,CAAC,UAAU,EAAE;QACrC,KAAK,EAAE,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,aAAa;QACtD,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,SAAS;QACjD,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC;QAC9D,UAAU,EAAE,KAAK,CAAC,cAAc;QAChC,WAAW,EAAE,KAAK,CAAC,aAAa;QAChC,UAAU,EAAE,aAAa,CAAC;YACxB,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,qBAAqB,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,SAAS;YACtF,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC,CAAC,sBAAsB,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,SAAS;SAChG,CAAC;QACF,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAmC;IAC/D,MAAM,QAAQ,GAAoC,EAAE,CAAC;IAErD,QAAQ,CAAC,IAAI,CAAC;QACZ,KAAK,EAAE,mBAAmB;QAC1B,UAAU,EAAE,aAAa,CAAC;YACxB,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,IAAI;YACxE,oBAAoB,MAAM,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,iBAAiB,MAAM,CAAC,UAAU,IAAI;YACnH,qJAAqJ;SACtJ,CAAC;KACH,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,OAAO;YACd,UAAU,EAAE,MAAM,CAAC,KAAK;SACzB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,iBAAiB;YACxB,UAAU,EAAE,MAAM,CAAC,eAAe;SACnC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAoC;IACjE,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC;YACN,KAAK,EAAE,mBAAmB;YAC1B,UAAU,EAAE,aAAa,CAAC;gBACxB,aAAa,EAAE,OAAO;gBACtB,oBAAoB,MAAM,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,iBAAiB,MAAM,CAAC,UAAU,IAAI;gBACnH,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,YAAY,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,IAAI;aAC7E,CAAC;SACH,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAmC;IAC9D,OAAO;QACL,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE;QAC7J,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,WAAW,IAAI,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE;QACrI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,kBAAkB,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE;QAClL,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,aAAa,IAAI,mBAAmB,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE;QAC9K,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE;QAC7H,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;KACrH,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAoC;IAChE,OAAO;QACL,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE;QAC7J,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE;QAC3G,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE;QACzK,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE;QAC7H,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;KACrH,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAmC;IAC7D,OAAO;QACL,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE;QACtE,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,IAAI,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE;QAC1H,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS,EAAE,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,WAAW,IAAI,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE;QAChJ,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE;QAC7H,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;KACrH,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAoC;IAC/D,OAAO;QACL,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE;QACtE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE;QAChI,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE;QAC7H,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;KACrH,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAiC;IACzD,OAAO,aAAa,CAAC;QACnB,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI;QACxD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,wBAAwB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;QACpH,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,KAAK,kBAAkB;YACrD,CAAC,CAAC,4BAA4B,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,oBAAoB;YAC7I,CAAC,CAAC,IAAI;QACR,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,iCAAiC,CAAC,CAAC,CAAC,IAAI;QACtG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,2CAA2C,CAAC,CAAC,CAAC,IAAI;QACxG,2JAA2J;KAC5J,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAiC,EAAE,QAAiB;IACjF,OAAO,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,gBAAgB,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAAiC,EACjC,OAAmC;IAEnC,MAAM,WAAW,GAAG,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,SAAS,CAAC;IACxD,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,SAAS,CAAC;IAEhD,IAAI,MAAM,CAAC,YAAY,KAAK,kBAAkB,EAAE,CAAC;QAC/C,MAAM,aAAa,GAAG,MAAqC,CAAC;QAC5D,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,IAAI,6BAA6B,CAAC;QACnE,MAAM,OAAO,GACX,aAAa,CAAC,OAAO;eAClB,+CAA+C,aAAa,CAAC,SAAS,CAAC,MAAM,gCAAgC,aAAa,CAAC,UAAU,CAAC,MAAM,gBAAgB,CAAC;QAElK,OAAO;YACL,KAAK;YACL,QAAQ,EAAE,aAAa,CAAC,aAAa;gBACnC,CAAC,CAAC,GAAG,aAAa,CAAC,aAAa,UAAU;gBAC1C,CAAC,CAAC,+BAA+B;YACnC,OAAO;YACP,WAAW;YACX,YAAY,EAAE,aAAa,CAAC,YAAY;YACxC,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,MAAM,EAAE,kBAAkB,CAAC,aAAa,CAAC;YACzC,OAAO,EAAE,mBAAmB,CAAC,aAAa,CAAC;YAC3C,QAAQ,EAAE,kBAAkB,CAAC,CAAC,aAAa,CAAC,cAAc,IAAI,EAAE,CAA6B,CAAC;YAC9F,MAAM,EAAE,kBAAkB,CAAC,aAAa,CAAC;YACzC,SAAS,EAAE,qBAAqB,CAAC,aAAa,CAAC;YAC/C,QAAQ,EAAE,oBAAoB,CAAC,aAAa,CAAC;YAC7C,YAAY;YACZ,QAAQ;YACR,WAAW,EAAE,gBAAgB,CAAC,aAAa,CAAC;SAC7C,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,MAAsC,CAAC;IAC9D,MAAM,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAClD,OAAO;QACL,KAAK,EAAE,aAAa,EAAE,UAAU;YAC9B,CAAC,CAAC,sBAAsB,aAAa,CAAC,UAAU,EAAE;YAClD,CAAC,CAAC,yBAAyB;QAC7B,QAAQ,EAAE,sBAAsB;QAChC,OAAO,EACL,aAAa,EAAE,OAAO;eACnB,kCAAkC,cAAc,CAAC,SAAS,CAAC,MAAM,qBAAqB,cAAc,CAAC,MAAM,CAAC,eAAe,IAAI,cAAc,CAAC,MAAM,CAAC,UAAU,WAAW;QAC/K,WAAW;QACX,YAAY,EAAE,cAAc,CAAC,YAAY;QACzC,WAAW,EAAE,cAAc,CAAC,WAAW;QACvC,MAAM,EAAE,mBAAmB,CAAC,cAAc,CAAC;QAC3C,OAAO,EAAE,oBAAoB,CAAC,cAAc,CAAC;QAC7C,QAAQ,EAAE,kBAAkB,CAAC,CAAC,cAAc,CAAC,cAAc,IAAI,EAAE,CAA4B,CAAC;QAC9F,MAAM,EAAE,mBAAmB,CAAC,cAAc,CAAC;QAC3C,SAAS,EAAE,sBAAsB,CAAC,cAAc,CAAC;QACjD,QAAQ,EAAE,qBAAqB,CAAC,cAAc,CAAC;QAC/C,YAAY;QACZ,QAAQ;QACR,WAAW,EAAE,gBAAgB,CAAC,cAAc,CAAC;KAC9C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ingest-dossier.js","sourceRoot":"","sources":["../../src/report/ingest-dossier.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,7 @@ export interface GeotechDocumentContext {
27
27
  pageTextHint?: string;
28
28
  pageClassification?: string;
29
29
  textRecoveryAttempted?: boolean;
30
+ directVisualPreferred?: boolean;
30
31
  }
31
32
  export interface GeotechDocumentInsight extends ParseSafety {
32
33
  documentClass: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"geotech-document.d.ts","sourceRoot":"","sources":["../../src/vision/geotech-document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAML,KAAK,WAAW,EAEjB,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA4I3D,QAAA,MAAM,cAAc,oEAAqE,CAAC;AAE1F,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,0BAA0B,EAAE,CAAC;IACxC,eAAe,EAAE,6BAA6B,EAAE,CAAC;IACjD,UAAU,EAAE,2BAA2B,EAAE,CAAC;IAC1C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAigBD,wBAAgB,gDAAgD,CAC9D,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,sBAA2B,EACpC,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;CACnB,GACL,sBAAsB,GAAG,IAAI,CAyB/B;AAED,wBAAsB,mCAAmC,CACvD,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,sBAAsB,CAAC,CAoIjC;AAED,wBAAsB,4BAA4B,CAChD,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,sBAAsB,CAAC,CA4BjC"}
1
+ {"version":3,"file":"geotech-document.d.ts","sourceRoot":"","sources":["../../src/vision/geotech-document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAML,KAAK,WAAW,EAEjB,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA6M3D,QAAA,MAAM,cAAc,oEAAqE,CAAC;AAE1F,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,0BAA0B,EAAE,CAAC;IACxC,eAAe,EAAE,6BAA6B,EAAE,CAAC;IACjD,UAAU,EAAE,2BAA2B,EAAE,CAAC;IAC1C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAigBD,wBAAgB,gDAAgD,CAC9D,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,sBAA2B,EACpC,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;CACnB,GACL,sBAAsB,GAAG,IAAI,CAyB/B;AAED,wBAAsB,mCAAmC,CACvD,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,sBAAsB,CAAC,CAoIjC;AAiHD,wBAAsB,4BAA4B,CAChD,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,sBAAsB,CAAC,CAgCjC"}
@@ -1,11 +1,17 @@
1
- import { generateText } from '../llm/router.js';
1
+ import { generateDocumentVision, generateText, generateVision } from '../llm/router.js';
2
2
  import { clampConfidence, createParseSafety, deriveParseStatus, normalizeWarnings, parseJsonObject, } from './parse.js';
3
3
  import { transcribeDocumentImageText } from './index.js';
4
4
  function getHostedBetaGeotechDocumentMaxTokens(config, profile, requestedMaxTokens) {
5
5
  if (config.provider !== 'hosted-beta') {
6
6
  return requestedMaxTokens;
7
7
  }
8
- const cap = profile === 'structured-text' ? 700 : 850;
8
+ const capByProfile = {
9
+ 'structured-text': 700,
10
+ 'fallback-text': 850,
11
+ 'structured-vision': 850,
12
+ 'fallback-vision': 950,
13
+ };
14
+ const cap = capByProfile[profile];
9
15
  return Math.min(requestedMaxTokens, cap);
10
16
  }
11
17
  function isRecoverableTextRetryResponse(error) {
@@ -75,6 +81,54 @@ async function textWithRetry(prompt, config, systemPrompt, maxTokens) {
75
81
  usedFallback: true,
76
82
  };
77
83
  }
84
+ async function documentVisionWithRetry(imageBase64, mimeType, config, strictPrompt, softPrompt, systemPrompt, maxTokens) {
85
+ const start = Date.now();
86
+ const multimodalCall = mimeType === 'application/pdf'
87
+ ? generateDocumentVision
88
+ : generateVision;
89
+ const primaryMaxTokens = getHostedBetaGeotechDocumentMaxTokens(config, 'structured-vision', maxTokens);
90
+ const fallbackMaxTokens = getHostedBetaGeotechDocumentMaxTokens(config, 'fallback-vision', maxTokens + 250);
91
+ try {
92
+ const first = await multimodalCall(strictPrompt, imageBase64, mimeType, config, {
93
+ systemPrompt,
94
+ temperature: 0.1,
95
+ maxTokens: primaryMaxTokens,
96
+ });
97
+ if (first.text && first.text.trim().length > 10) {
98
+ return { text: first.text, latencyMs: first.latencyMs, usedFallback: false };
99
+ }
100
+ }
101
+ catch (error) {
102
+ if (!isRecoverableTextRetryResponse(error)) {
103
+ throw error;
104
+ }
105
+ await waitForRecoverableTextBackoff();
106
+ }
107
+ try {
108
+ const second = await multimodalCall(softPrompt, imageBase64, mimeType, config, {
109
+ systemPrompt: `${systemPrompt} Return best-effort structured information even when some cells or labels are only partly legible.`,
110
+ temperature: 0.2,
111
+ maxTokens: fallbackMaxTokens,
112
+ });
113
+ if (second.text && second.text.trim().length > 0) {
114
+ return {
115
+ text: second.text,
116
+ latencyMs: Date.now() - start,
117
+ usedFallback: true,
118
+ };
119
+ }
120
+ }
121
+ catch (error) {
122
+ if (!isRecoverableTextRetryResponse(error)) {
123
+ throw error;
124
+ }
125
+ }
126
+ return {
127
+ text: '',
128
+ latencyMs: Date.now() - start,
129
+ usedFallback: true,
130
+ };
131
+ }
78
132
  function combineWarnings(base, extra) {
79
133
  return [...new Set([...base, ...extra])];
80
134
  }
@@ -640,6 +694,98 @@ ${normalizedPageText.slice(0, 6000)}`;
640
694
  latencyMs: response.latencyMs,
641
695
  });
642
696
  }
697
+ async function extractGeotechDocumentFactsFromImage(imageBase64, mimeType, config, context = {}) {
698
+ const contextParts = [
699
+ context.pageNumber != null && context.totalPages != null
700
+ ? `Page ${context.pageNumber} of ${context.totalPages}`
701
+ : null,
702
+ context.pageClassification ? `Page classification: ${context.pageClassification}` : null,
703
+ context.textRecoveryAttempted ? 'OCR/text recovery was already attempted and did not produce usable text.' : null,
704
+ ].filter((value) => Boolean(value));
705
+ const sharedContext = contextParts.join('\n');
706
+ const strictPrompt = `Extract geotechnical engineering content directly from this document page image. Respond with ONLY a JSON object:
707
+ {
708
+ "documentClass": "<borehole-log|geology-log|lab-report|rock-mass-document|site-investigation-report|visual-appendix-document|geotechnical-document|unknown>",
709
+ "title": "<short visible page/report title or null>",
710
+ "summary": "<brief technical summary of the visible page>",
711
+ "materials": [
712
+ {
713
+ "kind": "<soil|rock|fill|groundwater|mixed|other>",
714
+ "description": "<visible ground type, soil/rock layer, lithology, or visual observation>",
715
+ "uscsSymbol": "<USCS symbol if visible or inferable from visible labels, otherwise null>",
716
+ "lithology": "<lithology if visible or null>"
717
+ }
718
+ ],
719
+ "classifications": [
720
+ {
721
+ "system": "<USCS|RMR|RQD|SPT|grain-size|other>",
722
+ "value": "<visible classification, chart value, or class label>",
723
+ "context": "<borehole/sample/depth/page context or null>"
724
+ }
725
+ ],
726
+ "parameters": [
727
+ {
728
+ "name": "<parameter key such as sptN, depth, clayPercent, siltPercent, sandPercent, gravelPercent, waterTableDepth, ucs, rqd, rmr>",
729
+ "valueText": "<visible printed or chart-derived value>",
730
+ "numericValue": <number or null>,
731
+ "unit": "<unit or null>",
732
+ "material": "<material/borehole/sample context or null>",
733
+ "context": "<visible source such as chart/table/borehole log/photo caption or null>"
734
+ }
735
+ ],
736
+ "risks": ["<visible engineering risk or limitation>"],
737
+ "recommendations": ["<specific review or follow-up recommendation>"],
738
+ "confidence": <number 0-100>,
739
+ "warnings": ["<warning>", "<warning>"]
740
+ }
741
+
742
+ Prioritize borehole IDs, depths, SPT N values, grain-size percentages, Atterberg/strength values, water table, strata descriptions, and foundation design values. For photos or figures with little tabular data, classify as visual-appendix-document and summarize what the image evidences instead of failing.
743
+
744
+ Context:
745
+ ${sharedContext}`;
746
+ const softPrompt = `Read this geotechnical report page visually. Extract any visible borehole log data, chart/table values, strata descriptions, laboratory values, SPT/depth values, or photo evidence. If it is mostly a figure or site photo, summarize the visible geotechnical evidence and mark limitations. Return concise JSON with documentClass, summary, materials, classifications, parameters, risks, recommendations, confidence, and warnings.
747
+
748
+ Context:
749
+ ${sharedContext}`;
750
+ const response = await documentVisionWithRetry(imageBase64, mimeType, config, strictPrompt, softPrompt, 'You are an expert geotechnical engineer extracting structured evidence directly from scanned report pages, graphs, tables, borehole logs, and site photographs. Respond with JSON only when possible.', 1200);
751
+ const parsed = parseJsonObject(response.text);
752
+ const fallback = extractGeotechDocumentFallback(response.text);
753
+ const mergedValue = {
754
+ ...(fallback.value ?? {}),
755
+ ...(parsed.value ?? {}),
756
+ };
757
+ const baseStatus = parsed.baseStatus !== 'failed' ? parsed.baseStatus : fallback.baseStatus;
758
+ const warnings = [...parsed.warnings, ...fallback.warnings];
759
+ if (response.usedFallback) {
760
+ warnings.push('Direct visual extraction required a fallback retry before structured parsing succeeded.');
761
+ }
762
+ if (!parsed.value && !fallback.value) {
763
+ return {
764
+ ...createParseSafety('failed', 0, combineWarnings(warnings, ['Direct visual extraction did not recover usable geotechnical content.'])),
765
+ documentClass: null,
766
+ title: null,
767
+ summary: null,
768
+ materials: [],
769
+ classifications: [],
770
+ parameters: [],
771
+ risks: [],
772
+ recommendations: [],
773
+ pageNumber: context.pageNumber ?? null,
774
+ totalPages: context.totalPages ?? null,
775
+ rawLLMText: response.text,
776
+ latencyMs: response.latencyMs,
777
+ };
778
+ }
779
+ return buildGeotechDocumentInsightFromValue({
780
+ mergedValue,
781
+ baseStatus,
782
+ warnings,
783
+ normalizedPageText: response.text,
784
+ context,
785
+ rawLLMText: response.text,
786
+ latencyMs: response.latencyMs,
787
+ });
788
+ }
643
789
  export async function interpretGeotechDocumentPage(imageBase64, mimeType, config, context = {}) {
644
790
  const seededText = typeof context.pageTextHint === 'string' && context.pageTextHint.trim().length >= 24
645
791
  ? context.pageTextHint.trim()
@@ -648,8 +794,11 @@ export async function interpretGeotechDocumentPage(imageBase64, mimeType, config
648
794
  const transcriptionWarnings = [];
649
795
  let transcriptionLatencyMs = 0;
650
796
  if (!text) {
651
- if (context.textRecoveryAttempted) {
652
- transcriptionWarnings.push('Upstream text recovery already failed to recover usable text; skipped a redundant OCR retry for this page.');
797
+ if (context.directVisualPreferred) {
798
+ transcriptionWarnings.push('OCR-only transcription was skipped for this image-only page; direct visual extraction was used to preserve charts, tables, and borehole log context.');
799
+ }
800
+ else if (context.textRecoveryAttempted) {
801
+ transcriptionWarnings.push('Upstream text recovery already failed to recover usable text; using direct visual extraction instead of repeating OCR.');
653
802
  }
654
803
  else {
655
804
  const transcription = await transcribeDocumentImageText(imageBase64, mimeType, config);
@@ -661,7 +810,9 @@ export async function interpretGeotechDocumentPage(imageBase64, mimeType, config
661
810
  }
662
811
  }
663
812
  }
664
- const extracted = await extractGeotechDocumentFactsFromText(text ?? '', config, context);
813
+ const extracted = text
814
+ ? await extractGeotechDocumentFactsFromText(text, config, context)
815
+ : await extractGeotechDocumentFactsFromImage(imageBase64, mimeType, config, context);
665
816
  return {
666
817
  ...extracted,
667
818
  warnings: combineWarnings(extracted.warnings, transcriptionWarnings),