@geotechcli/core 0.3.0 → 0.4.1

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 (72) hide show
  1. package/dist/agents/brain.d.ts +1 -0
  2. package/dist/agents/brain.d.ts.map +1 -1
  3. package/dist/agents/brain.js +45 -41
  4. package/dist/agents/brain.js.map +1 -1
  5. package/dist/agents/bridge-tools.js +15 -3
  6. package/dist/agents/bridge-tools.js.map +1 -1
  7. package/dist/agents/case-file.d.ts +52 -0
  8. package/dist/agents/case-file.d.ts.map +1 -0
  9. package/dist/agents/case-file.js +657 -0
  10. package/dist/agents/case-file.js.map +1 -0
  11. package/dist/agents/contracts.d.ts +232 -0
  12. package/dist/agents/contracts.d.ts.map +1 -0
  13. package/dist/agents/contracts.js +14 -0
  14. package/dist/agents/contracts.js.map +1 -0
  15. package/dist/agents/data-tools.js +11 -3
  16. package/dist/agents/data-tools.js.map +1 -1
  17. package/dist/agents/deliverable-tools.d.ts +2 -0
  18. package/dist/agents/deliverable-tools.d.ts.map +1 -0
  19. package/dist/agents/deliverable-tools.js +497 -0
  20. package/dist/agents/deliverable-tools.js.map +1 -0
  21. package/dist/agents/evidence.d.ts +21 -0
  22. package/dist/agents/evidence.d.ts.map +1 -0
  23. package/dist/agents/evidence.js +302 -0
  24. package/dist/agents/evidence.js.map +1 -0
  25. package/dist/agents/orchestrator.js +13 -13
  26. package/dist/agents/sandbox.d.ts.map +1 -1
  27. package/dist/agents/sandbox.js +84 -31
  28. package/dist/agents/sandbox.js.map +1 -1
  29. package/dist/agents/swarm.d.ts +2 -0
  30. package/dist/agents/swarm.d.ts.map +1 -1
  31. package/dist/agents/swarm.js +177 -152
  32. package/dist/agents/swarm.js.map +1 -1
  33. package/dist/agents/tool-normalization.d.ts +4 -0
  34. package/dist/agents/tool-normalization.d.ts.map +1 -0
  35. package/dist/agents/tool-normalization.js +92 -0
  36. package/dist/agents/tool-normalization.js.map +1 -0
  37. package/dist/bridge/index.js +87 -87
  38. package/dist/geo/pile-capacity.d.ts.map +1 -1
  39. package/dist/geo/pile-capacity.js +47 -8
  40. package/dist/geo/pile-capacity.js.map +1 -1
  41. package/dist/geo/slope-stability.d.ts.map +1 -1
  42. package/dist/geo/slope-stability.js +9 -6
  43. package/dist/geo/slope-stability.js.map +1 -1
  44. package/dist/index.d.ts +4 -1
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +4 -1
  47. package/dist/index.js.map +1 -1
  48. package/dist/llm/middleware/metering.js +14 -14
  49. package/dist/meta/metadata.json +4 -4
  50. package/dist/report/casefile.d.ts +207 -0
  51. package/dist/report/casefile.d.ts.map +1 -0
  52. package/dist/report/casefile.js +438 -0
  53. package/dist/report/casefile.js.map +1 -0
  54. package/dist/report/docx.d.ts +0 -4
  55. package/dist/report/docx.d.ts.map +1 -1
  56. package/dist/report/docx.js +6 -1
  57. package/dist/report/docx.js.map +1 -1
  58. package/dist/report/index.d.ts +1 -0
  59. package/dist/report/index.d.ts.map +1 -1
  60. package/dist/report/index.js +21 -20
  61. package/dist/report/index.js.map +1 -1
  62. package/dist/report/pdf.d.ts +0 -4
  63. package/dist/report/pdf.d.ts.map +1 -1
  64. package/dist/report/pdf.js +6 -1
  65. package/dist/report/pdf.js.map +1 -1
  66. package/dist/vision/index.d.ts.map +1 -1
  67. package/dist/vision/index.js +270 -117
  68. package/dist/vision/index.js.map +1 -1
  69. package/dist/vision/parse.d.ts.map +1 -1
  70. package/dist/vision/parse.js +18 -0
  71. package/dist/vision/parse.js.map +1 -1
  72. package/package.json +58 -58
@@ -4,11 +4,18 @@ import { clampConfidence, createParseSafety, deriveParseStatus, normalizeWarning
4
4
  // ---------------------------------------------------------------------------
5
5
  // Vision retry helper — handles upstream empty-content failures
6
6
  // ---------------------------------------------------------------------------
7
+ function isRecoverableVisionEmptyResponse(error) {
8
+ const message = error instanceof Error ? error.message.toLowerCase() : String(error).toLowerCase();
9
+ return (message.includes('returned no content') ||
10
+ message.includes('did not contain assistant text') ||
11
+ message.includes('no completion choices') ||
12
+ message.includes('empty completion'));
13
+ }
7
14
  /**
8
15
  * Execute a vision call with automatic retry on empty/null response.
9
16
  * First attempt: strict JSON-only prompt at low temperature.
10
17
  * Second attempt: softer plain-text prompt at higher temperature, same image.
11
- * This handles GLM-5v-turbo returning empty content on the first call.
18
+ * This handles hosted-beta vision models returning empty content on the first call.
12
19
  */
13
20
  async function visionWithRetry(imageBase64, mimeType, config, strictPrompt, softPrompt, systemPrompt, maxTokens) {
14
21
  const start = Date.now();
@@ -23,17 +30,33 @@ async function visionWithRetry(imageBase64, mimeType, config, strictPrompt, soft
23
30
  return { text: r1.text, latencyMs: r1.latencyMs, usedFallback: false };
24
31
  }
25
32
  }
26
- catch {
27
- // fall through to retry
33
+ catch (error) {
34
+ if (!isRecoverableVisionEmptyResponse(error)) {
35
+ throw error;
36
+ }
28
37
  }
29
38
  // Attempt 2: softer plain text prompt
30
- const r2 = await generateVision(softPrompt, imageBase64, mimeType, config, {
31
- systemPrompt: systemPrompt + ' Be concise but thorough. You must provide values even if approximate.',
32
- temperature: 0.3,
33
- maxTokens: maxTokens + 200,
34
- });
39
+ try {
40
+ const r2 = await generateVision(softPrompt, imageBase64, mimeType, config, {
41
+ systemPrompt: systemPrompt + ' Be concise but thorough. You must provide values even if approximate.',
42
+ temperature: 0.3,
43
+ maxTokens: maxTokens + 200,
44
+ });
45
+ if (r2.text && r2.text.trim().length > 0) {
46
+ return {
47
+ text: r2.text,
48
+ latencyMs: Date.now() - start,
49
+ usedFallback: true,
50
+ };
51
+ }
52
+ }
53
+ catch (error) {
54
+ if (!isRecoverableVisionEmptyResponse(error)) {
55
+ throw error;
56
+ }
57
+ }
35
58
  return {
36
- text: r2.text,
59
+ text: '',
37
60
  latencyMs: Date.now() - start,
38
61
  usedFallback: true,
39
62
  };
@@ -62,25 +85,137 @@ function asEnumValue(value, allowed, warnings, key) {
62
85
  function combineWarnings(base, extra) {
63
86
  return [...new Set([...base, ...extra])];
64
87
  }
88
+ function splitSentences(rawText) {
89
+ return rawText
90
+ .replace(/\s+/g, ' ')
91
+ .split(/(?<=[.!?])\s+/)
92
+ .map((sentence) => sentence.trim())
93
+ .filter(Boolean);
94
+ }
95
+ function firstMatchingSentence(rawText, predicate) {
96
+ return splitSentences(rawText).find(predicate) ?? null;
97
+ }
98
+ function inferSensorType(rawText) {
99
+ const normalized = rawText.toLowerCase();
100
+ if (normalized.includes('piezometer'))
101
+ return 'piezometer';
102
+ if (normalized.includes('inclinometer'))
103
+ return 'inclinometer';
104
+ if (normalized.includes('extensometer'))
105
+ return 'extensometer';
106
+ if (normalized.includes('load cell'))
107
+ return 'load_cell';
108
+ if (normalized.includes('settlement plate'))
109
+ return 'settlement_plate';
110
+ if (normalized.includes('tiltmeter'))
111
+ return 'tiltmeter';
112
+ return null;
113
+ }
114
+ function inferSensorEvaluation(rawText) {
115
+ const normalized = rawText.toLowerCase();
116
+ if (/(critical|alarm|urgent|failure|unsafe|exceed)/.test(normalized))
117
+ return 'critical';
118
+ if (/(warning|alert|watch|caution|elevated)/.test(normalized))
119
+ return 'warning';
120
+ if (/(normal|stable|within limit|acceptable|no significant movement)/.test(normalized))
121
+ return 'normal';
122
+ return null;
123
+ }
124
+ function extractSensorFallback(rawText) {
125
+ if (!rawText.trim()) {
126
+ return { value: null, baseStatus: 'failed', warnings: [] };
127
+ }
128
+ const sensorType = inferSensorType(rawText);
129
+ const measurements = firstMatchingSentence(rawText, (sentence) => /\d/.test(sentence) || /(reading|pressure|head|displacement|settlement|movement|trend)/i.test(sentence));
130
+ const interpretation = firstMatchingSentence(rawText, (sentence) => /(indicat|show|suggest|trend|behavio|movement|response)/i.test(sentence)) ?? splitSentences(rawText)[0] ?? null;
131
+ const evaluation = inferSensorEvaluation(rawText);
132
+ const recommendations = firstMatchingSentence(rawText, (sentence) => /(recommend|should|monitor|inspect|review|action|recheck)/i.test(sentence));
133
+ const presentCount = [sensorType, measurements, interpretation, evaluation, recommendations]
134
+ .filter((value) => value != null && value !== '')
135
+ .length;
136
+ if (presentCount === 0) {
137
+ return { value: null, baseStatus: 'failed', warnings: [] };
138
+ }
139
+ return {
140
+ value: {
141
+ sensorType,
142
+ measurements,
143
+ interpretation,
144
+ evaluation,
145
+ recommendations,
146
+ },
147
+ baseStatus: 'partial',
148
+ warnings: ['Vision model returned narrative text; extracted partial structured sensor fields.'],
149
+ };
150
+ }
151
+ function inferUscsFromText(rawText) {
152
+ const match = rawText.match(/\b(GW|GP|GM|GC|SW|SP|SM|SC|ML|CL|OL|MH|CH|OH|PT)\b/i);
153
+ return match ? match[1].toUpperCase() : null;
154
+ }
155
+ function extractBoreholeFallback(rawText, boreholeId) {
156
+ if (!rawText.trim()) {
157
+ return { value: null, baseStatus: 'failed', warnings: [] };
158
+ }
159
+ const layers = [];
160
+ const layerRegex = /(\d+(?:\.\d+)?)\s*(?:-|to)\s*(\d+(?:\.\d+)?)\s*m[:\s-]*([^\n.;]+)/gi;
161
+ for (const match of rawText.matchAll(layerRegex)) {
162
+ const description = match[3]?.trim() ?? '';
163
+ const sptMatch = description.match(/(?:spt|n)[-=\s:]*?(\d+(?:\.\d+)?)/i);
164
+ layers.push({
165
+ depthFrom: Number(match[1]),
166
+ depthTo: Number(match[2]),
167
+ description,
168
+ uscsSymbol: inferUscsFromText(description),
169
+ sptN: sptMatch ? Number(sptMatch[1]) : null,
170
+ waterContent: null,
171
+ notes: null,
172
+ });
173
+ }
174
+ const totalDepthMatch = rawText.match(/total depth[^0-9]*(\d+(?:\.\d+)?)\s*m/i)
175
+ ?? rawText.match(/depth[^0-9]*(\d+(?:\.\d+)?)\s*m/i);
176
+ const waterTableMatch = rawText.match(/water table[^0-9]*(\d+(?:\.\d+)?)\s*m/i)
177
+ ?? rawText.match(/gwl[^0-9]*(\d+(?:\.\d+)?)\s*m/i);
178
+ const boreholeMatch = rawText.match(/\bBH[-_\s]?[A-Z0-9]+\b/i);
179
+ const summary = firstMatchingSentence(rawText, (sentence) => /(summary|consist|encountered|profile|strata|predominant)/i.test(sentence)) ?? splitSentences(rawText)[0] ?? null;
180
+ const value = {};
181
+ if (boreholeMatch?.[0] || boreholeId)
182
+ value.boreholeId = (boreholeMatch?.[0] ?? boreholeId)?.replace(/\s+/g, '');
183
+ if (totalDepthMatch?.[1])
184
+ value.totalDepth = Number(totalDepthMatch[1]);
185
+ if (waterTableMatch?.[1])
186
+ value.waterTableDepth = Number(waterTableMatch[1]);
187
+ if (layers.length > 0)
188
+ value.layers = layers;
189
+ if (summary)
190
+ value.summary = summary;
191
+ if (Object.keys(value).length === 0) {
192
+ return { value: null, baseStatus: 'failed', warnings: [] };
193
+ }
194
+ return {
195
+ value,
196
+ baseStatus: 'partial',
197
+ warnings: ['Vision model returned narrative text; extracted partial structured borehole fields.'],
198
+ };
199
+ }
65
200
  export async function analyzeCoreBox(imageBase64, mimeType, config) {
66
- const strictPrompt = `Analyze this rock core box image. You MUST respond with ONLY a JSON object (no markdown, no backticks, no explanation) with these exact fields:
67
- {
68
- "rqd": <number 0-100, Rock Quality Designation percentage>,
69
- "fractureSpacing": "<string: very close/close/moderate/wide/very wide>",
70
- "weatheringGrade": "<string: W1-Fresh/W2-Slightly/W3-Moderately/W4-Highly/W5-Completely/W6-Residual>",
71
- "rockType": "<string: identified lithology>",
72
- "coreRecovery": <number 0-100, percentage>,
73
- "discontinuities": "<string: description of joint surfaces, infilling, roughness>",
74
- "confidence": <number 0-100>,
75
- "warnings": ["<warning>", "<warning>"]
201
+ const strictPrompt = `Analyze this rock core box image. You MUST respond with ONLY a JSON object (no markdown, no backticks, no explanation) with these exact fields:
202
+ {
203
+ "rqd": <number 0-100, Rock Quality Designation percentage>,
204
+ "fractureSpacing": "<string: very close/close/moderate/wide/very wide>",
205
+ "weatheringGrade": "<string: W1-Fresh/W2-Slightly/W3-Moderately/W4-Highly/W5-Completely/W6-Residual>",
206
+ "rockType": "<string: identified lithology>",
207
+ "coreRecovery": <number 0-100, percentage>,
208
+ "discontinuities": "<string: description of joint surfaces, infilling, roughness>",
209
+ "confidence": <number 0-100>,
210
+ "warnings": ["<warning>", "<warning>"]
76
211
  }`;
77
- const softPrompt = `Examine this rock core box image and describe:
78
- 1. RQD (Rock Quality Designation) as a percentage 0-100
79
- 2. Fracture spacing (very close / close / moderate / wide / very wide)
80
- 3. Weathering grade (W1-Fresh through W6-Residual)
81
- 4. Rock type / lithology
82
- 5. Core recovery percentage
83
- 6. Discontinuity description (surfaces, infilling, roughness)
212
+ const softPrompt = `Examine this rock core box image and describe:
213
+ 1. RQD (Rock Quality Designation) as a percentage 0-100
214
+ 2. Fracture spacing (very close / close / moderate / wide / very wide)
215
+ 3. Weathering grade (W1-Fresh through W6-Residual)
216
+ 4. Rock type / lithology
217
+ 5. Core recovery percentage
218
+ 6. Discontinuity description (surfaces, infilling, roughness)
84
219
  Provide approximate values even if uncertain.`;
85
220
  const response = await visionWithRetry(imageBase64, mimeType, config, strictPrompt, softPrompt, 'You are an expert engineering geologist performing core logging. Respond with JSON only.', 900);
86
221
  const parsed = parseJsonObject(response.text);
@@ -110,22 +245,22 @@ Provide approximate values even if uncertain.`;
110
245
  };
111
246
  }
112
247
  export async function classifyRMRFromImage(imageBase64, mimeType, config) {
113
- const strictPrompt = `Analyze this rock exposure / tunnel face / core box image for Rock Mass Rating input parameters. Respond with ONLY a JSON object (no markdown):
114
- {
115
- "estimatedUCS": <number in MPa, estimate from visual appearance>,
116
- "estimatedRQD": <number 0-100>,
117
- "estimatedSpacing": <number in meters, mean discontinuity spacing>,
118
- "jointCondition": "<very_good|good|fair|poor|very_poor>",
119
- "groundwaterCondition": "<dry|damp|wet|dripping|flowing>",
120
- "confidence": <number 0-100>,
121
- "warnings": ["<warning>", "<warning>"]
248
+ const strictPrompt = `Analyze this rock exposure / tunnel face / core box image for Rock Mass Rating input parameters. Respond with ONLY a JSON object (no markdown):
249
+ {
250
+ "estimatedUCS": <number in MPa, estimate from visual appearance>,
251
+ "estimatedRQD": <number 0-100>,
252
+ "estimatedSpacing": <number in meters, mean discontinuity spacing>,
253
+ "jointCondition": "<very_good|good|fair|poor|very_poor>",
254
+ "groundwaterCondition": "<dry|damp|wet|dripping|flowing>",
255
+ "confidence": <number 0-100>,
256
+ "warnings": ["<warning>", "<warning>"]
122
257
  }`;
123
- const softPrompt = `Look at this rock mass image and estimate:
124
- 1. Uniaxial compressive strength UCS in MPa (from rock appearance)
125
- 2. Rock Quality Designation RQD as % 0-100
126
- 3. Mean discontinuity spacing in meters
127
- 4. Joint condition: very_good, good, fair, poor, or very_poor
128
- 5. Groundwater condition: dry, damp, wet, dripping, or flowing
258
+ const softPrompt = `Look at this rock mass image and estimate:
259
+ 1. Uniaxial compressive strength UCS in MPa (from rock appearance)
260
+ 2. Rock Quality Designation RQD as % 0-100
261
+ 3. Mean discontinuity spacing in meters
262
+ 4. Joint condition: very_good, good, fair, poor, or very_poor
263
+ 5. Groundwater condition: dry, damp, wet, dripping, or flowing
129
264
  Give approximate values based on what you observe.`;
130
265
  const response = await visionWithRetry(imageBase64, mimeType, config, strictPrompt, softPrompt, 'You are an expert rock mechanics engineer performing field classification. Respond with JSON only.', 700);
131
266
  const parsed = parseJsonObject(response.text);
@@ -185,19 +320,19 @@ Give approximate values based on what you observe.`;
185
320
  };
186
321
  }
187
322
  export async function classifySoilFromDescription(description, config) {
188
- const prompt = `Given this soil description: "${description}"
189
-
190
- Classify the soil and estimate engineering properties. Respond with ONLY a JSON object:
191
- {
192
- "uscsSymbol": "<USCS symbol e.g. CL, SM, GP>",
193
- "uscsName": "<full name e.g. Lean Clay, Silty Sand>",
194
- "estimatedFrictionAngle": <degrees>,
195
- "estimatedCohesion": <kPa>,
196
- "estimatedUnitWeight": <kN/m3>,
197
- "estimatedPermeability": "<e.g. 1e-7 m/s>",
198
- "engineeringNotes": "<brief note on behavior, compressibility, strength>",
199
- "confidence": <number 0-100>,
200
- "warnings": ["<warning>", "<warning>"]
323
+ const prompt = `Given this soil description: "${description}"
324
+
325
+ Classify the soil and estimate engineering properties. Respond with ONLY a JSON object:
326
+ {
327
+ "uscsSymbol": "<USCS symbol e.g. CL, SM, GP>",
328
+ "uscsName": "<full name e.g. Lean Clay, Silty Sand>",
329
+ "estimatedFrictionAngle": <degrees>,
330
+ "estimatedCohesion": <kPa>,
331
+ "estimatedUnitWeight": <kN/m3>,
332
+ "estimatedPermeability": "<e.g. 1e-7 m/s>",
333
+ "engineeringNotes": "<brief note on behavior, compressibility, strength>",
334
+ "confidence": <number 0-100>,
335
+ "warnings": ["<warning>", "<warning>"]
201
336
  }`;
202
337
  const response = await generateText(prompt, config, {
203
338
  systemPrompt: 'You are an expert geotechnical engineer. Classify soils based on verbal descriptions using USCS and estimate engineering properties. Respond with JSON only.',
@@ -233,37 +368,46 @@ Classify the soil and estimate engineering properties. Respond with ONLY a JSON
233
368
  };
234
369
  }
235
370
  export async function interpretBoreholeLog(imageBase64, mimeType, config, boreholeId) {
236
- const prompt = `Extract structured data from this borehole log image. Respond with ONLY a JSON object:
237
- {
238
- "boreholeId": "<ID if visible, or 'BH-unknown'>",
239
- "totalDepth": <number in meters>,
240
- "waterTableDepth": <number in meters or null>,
241
- "layers": [
242
- {
243
- "depthFrom": <m>,
244
- "depthTo": <m>,
245
- "description": "<soil/rock description>",
246
- "uscsSymbol": "<USCS if identifiable>",
247
- "sptN": <number or null>,
248
- "waterContent": <percent or null>,
249
- "notes": "<any additional notes>"
250
- }
251
- ],
252
- "summary": "<brief engineering summary of the borehole>",
253
- "confidence": <number 0-100>,
254
- "warnings": ["<warning>", "<warning>"]
371
+ const strictPrompt = `Extract structured data from this borehole log image. Respond with ONLY a JSON object:
372
+ {
373
+ "boreholeId": "<ID if visible, or 'BH-unknown'>",
374
+ "totalDepth": <number in meters>,
375
+ "waterTableDepth": <number in meters or null>,
376
+ "layers": [
377
+ {
378
+ "depthFrom": <m>,
379
+ "depthTo": <m>,
380
+ "description": "<soil/rock description>",
381
+ "uscsSymbol": "<USCS if identifiable>",
382
+ "sptN": <number or null>,
383
+ "waterContent": <percent or null>,
384
+ "notes": "<any additional notes>"
385
+ }
386
+ ],
387
+ "summary": "<brief engineering summary of the borehole>",
388
+ "confidence": <number 0-100>,
389
+ "warnings": ["<warning>", "<warning>"]
255
390
  }`;
256
- const response = await generateVision(prompt, imageBase64, mimeType, config, {
257
- systemPrompt: 'You are an expert geotechnical engineer extracting data from borehole log documents. Be precise with depths, descriptions, and test values. Respond with JSON only.',
258
- temperature: 0.1,
259
- maxTokens: 2200,
260
- });
391
+ const softPrompt = `Read this borehole log carefully and extract the key structured data:
392
+ 1. Borehole ID if visible
393
+ 2. Total depth in meters
394
+ 3. Water table depth if shown
395
+ 4. Each stratigraphic layer with depthFrom, depthTo, description, USCS symbol, SPT N, water content, and notes
396
+ 5. A brief engineering summary
397
+ Provide approximate values where necessary, but keep the structure complete.`;
398
+ const response = await visionWithRetry(imageBase64, mimeType, config, strictPrompt, softPrompt, 'You are an expert geotechnical engineer extracting data from borehole log documents. Be precise with depths, descriptions, and test values. Respond with JSON only.', 1500);
261
399
  const parsed = parseJsonObject(response.text);
262
- const warnings = [...parsed.warnings];
263
- const parsedLayers = Array.isArray(parsed.value?.layers)
264
- ? parsed.value?.layers
400
+ const narrativeFallback = extractBoreholeFallback(response.text, boreholeId);
401
+ const mergedValue = {
402
+ ...(narrativeFallback.value ?? {}),
403
+ ...(parsed.value ?? {}),
404
+ };
405
+ const baseStatus = parsed.baseStatus !== 'failed' ? parsed.baseStatus : narrativeFallback.baseStatus;
406
+ const warnings = [...parsed.warnings, ...narrativeFallback.warnings];
407
+ const parsedLayers = Array.isArray(mergedValue.layers)
408
+ ? mergedValue.layers
265
409
  : [];
266
- if (!Array.isArray(parsed.value?.layers)) {
410
+ if (!Array.isArray(mergedValue.layers)) {
267
411
  warnings.push('Missing or invalid "layers" array.');
268
412
  }
269
413
  const layers = parsedLayers.map((layer) => {
@@ -280,16 +424,16 @@ export async function interpretBoreholeLog(imageBase64, mimeType, config, boreho
280
424
  warnings.push(...layerWarnings.map((warning) => `Layer warning: ${warning}`));
281
425
  return item;
282
426
  });
283
- const totalDepth = readNumber(parsed.value, 'totalDepth', warnings);
284
- const waterTableDepth = parsed.value?.waterTableDepth == null
427
+ const totalDepth = readNumber(mergedValue, 'totalDepth', warnings);
428
+ const waterTableDepth = mergedValue.waterTableDepth == null
285
429
  ? null
286
- : readNumber(parsed.value, 'waterTableDepth', warnings);
287
- const summary = readString(parsed.value, 'summary', warnings);
288
- const resolvedBoreholeId = readString(parsed.value, 'boreholeId', []) ?? boreholeId ?? 'BH-unknown';
289
- const confidence = clampConfidence(parsed.value?.confidence, parsed.baseStatus === 'parsed' ? 75 : 0);
290
- const status = deriveParseStatus(parsed.baseStatus, [totalDepth, summary, layers.length > 0 ? 'layers' : null].filter((value) => value !== null)
430
+ : readNumber(mergedValue, 'waterTableDepth', warnings);
431
+ const summary = readString(mergedValue, 'summary', warnings);
432
+ const resolvedBoreholeId = readString(mergedValue, 'boreholeId', []) ?? boreholeId ?? 'BH-unknown';
433
+ const confidence = clampConfidence(mergedValue.confidence, baseStatus === 'parsed' ? 75 : baseStatus === 'partial' ? 58 : 0);
434
+ const status = deriveParseStatus(baseStatus, [totalDepth, summary, layers.length > 0 ? 'layers' : null].filter((value) => value !== null)
291
435
  .length, 3);
292
- const safety = createParseSafety(status, confidence, combineWarnings(warnings, normalizeWarnings(parsed.value?.warnings)));
436
+ const safety = createParseSafety(status, confidence, combineWarnings(warnings, normalizeWarnings(mergedValue.warnings)));
293
437
  return {
294
438
  ...safety,
295
439
  boreholeId: resolvedBoreholeId,
@@ -302,38 +446,47 @@ export async function interpretBoreholeLog(imageBase64, mimeType, config, boreho
302
446
  };
303
447
  }
304
448
  export async function queryGBRDocument(question, documentBase64, mimeType, config) {
305
- const response = await generateVision(`Based on this Geotechnical Baseline Report, answer the following question:\n\n${question}\n\nProvide a concise, technically accurate answer with specific values and page/section references where possible.`, documentBase64, mimeType, config, {
306
- systemPrompt: 'You are an expert geotechnical engineer analyzing a Geotechnical Baseline Report (GBR). Provide precise, actionable answers referencing specific data from the document.',
307
- maxTokens: 2000,
308
- });
449
+ const response = await visionWithRetry(documentBase64, mimeType, config, `Based on this Geotechnical Baseline Report, answer the following question with a concise, technically accurate response and specific page/section references where possible:\n\n${question}`, `Read this Geotechnical Baseline Report and answer the question directly:\n\n${question}\n\nUse specific values, limits, assumptions, and references if they are visible in the document.`, 'You are an expert geotechnical engineer analyzing a Geotechnical Baseline Report (GBR). Provide precise, actionable answers referencing specific data from the document.', 2000);
450
+ if (!response.text.trim()) {
451
+ throw new Error('Hosted beta upstream returned no content. The document could not be interpreted. Try a smaller PNG or JPG export of the relevant pages.');
452
+ }
309
453
  return { answer: response.text, latencyMs: response.latencyMs };
310
454
  }
311
455
  export async function interpretSensorImage(imageBase64, mimeType, config) {
312
- const prompt = `Analyze this geotechnical sensor data image. Respond with ONLY a JSON object:
313
- {
314
- "sensorType": "<inclinometer|piezometer|extensometer|load_cell|settlement_plate|tiltmeter|other>",
315
- "measurements": "<key readings and values observed>",
316
- "interpretation": "<what the data shows about ground/structure behavior>",
317
- "evaluation": "<whether conditions are normal, warning, or critical>",
318
- "recommendations": "<recommended actions if any>",
319
- "confidence": <number 0-100>,
320
- "warnings": ["<warning>", "<warning>"]
456
+ const strictPrompt = `Analyze this geotechnical sensor data image. Respond with ONLY a JSON object:
457
+ {
458
+ "sensorType": "<inclinometer|piezometer|extensometer|load_cell|settlement_plate|tiltmeter|other>",
459
+ "measurements": "<key readings and values observed>",
460
+ "interpretation": "<what the data shows about ground/structure behavior>",
461
+ "evaluation": "<whether conditions are normal, warning, or critical>",
462
+ "recommendations": "<recommended actions if any>",
463
+ "confidence": <number 0-100>,
464
+ "warnings": ["<warning>", "<warning>"]
321
465
  }`;
322
- const response = await generateVision(prompt, imageBase64, mimeType, config, {
323
- systemPrompt: 'You are an expert geotechnical instrumentation engineer. Interpret sensor data precisely.',
324
- temperature: 0.1,
325
- maxTokens: 1100,
326
- });
466
+ const softPrompt = `Inspect this geotechnical instrumentation image and extract:
467
+ 1. Sensor type
468
+ 2. Key readings and visible values
469
+ 3. What the measurements indicate about ground or structural behavior
470
+ 4. Whether the condition appears normal, warning, or critical
471
+ 5. Recommended follow-up actions if any
472
+ If the display is partially unreadable, provide the best approximate interpretation from the visible chart or text.`;
473
+ const response = await visionWithRetry(imageBase64, mimeType, config, strictPrompt, softPrompt, 'You are an expert geotechnical instrumentation engineer. Interpret sensor data precisely.', 800);
327
474
  const parsed = parseJsonObject(response.text);
328
- const warnings = [...parsed.warnings];
329
- const sensorType = readString(parsed.value, 'sensorType', warnings);
330
- const measurements = readString(parsed.value, 'measurements', warnings);
331
- const interpretation = readString(parsed.value, 'interpretation', warnings);
332
- const evaluation = readString(parsed.value, 'evaluation', warnings);
333
- const recommendations = readString(parsed.value, 'recommendations', warnings);
334
- const confidence = clampConfidence(parsed.value?.confidence, parsed.baseStatus === 'parsed' ? 70 : 0);
335
- const status = deriveParseStatus(parsed.baseStatus, [sensorType, measurements, interpretation, evaluation, recommendations].filter((value) => value !== null).length, 5);
336
- const safety = createParseSafety(status, confidence, combineWarnings(warnings, normalizeWarnings(parsed.value?.warnings)));
475
+ const narrativeFallback = extractSensorFallback(response.text);
476
+ const mergedValue = {
477
+ ...(narrativeFallback.value ?? {}),
478
+ ...(parsed.value ?? {}),
479
+ };
480
+ const baseStatus = parsed.baseStatus !== 'failed' ? parsed.baseStatus : narrativeFallback.baseStatus;
481
+ const warnings = [...parsed.warnings, ...narrativeFallback.warnings];
482
+ const sensorType = readString(mergedValue, 'sensorType', warnings);
483
+ const measurements = readString(mergedValue, 'measurements', warnings);
484
+ const interpretation = readString(mergedValue, 'interpretation', warnings);
485
+ const evaluation = readString(mergedValue, 'evaluation', warnings);
486
+ const recommendations = readString(mergedValue, 'recommendations', warnings);
487
+ const confidence = clampConfidence(mergedValue.confidence, baseStatus === 'parsed' ? 70 : baseStatus === 'partial' ? 55 : 0);
488
+ const status = deriveParseStatus(baseStatus, [sensorType, measurements, interpretation, evaluation, recommendations].filter((value) => value !== null).length, 5);
489
+ const safety = createParseSafety(status, confidence, combineWarnings(warnings, normalizeWarnings(mergedValue.warnings)));
337
490
  return {
338
491
  ...safety,
339
492
  sensorType,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vision/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,UAAU,GAEX,MAAM,YAAY,CAAC;AAIpB,8EAA8E;AAC9E,gEAAgE;AAChE,8EAA8E;AAE9E;;;;;GAKG;AACH,KAAK,UAAU,eAAe,CAC5B,WAAmB,EACnB,QAAgB,EAChB,MAAiB,EACjB,YAAoB,EACpB,UAAkB,EAClB,YAAoB,EACpB,SAAiB;IAEjB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEzB,gCAAgC;IAChC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE;YAC3E,YAAY;YACZ,WAAW,EAAE,GAAG;YAChB,SAAS;SACV,CAAC,CAAC;QACH,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAC1C,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QACzE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wBAAwB;IAC1B,CAAC;IAED,sCAAsC;IACtC,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE;QACzE,YAAY,EAAE,YAAY,GAAG,wEAAwE;QACrG,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,SAAS,GAAG,GAAG;KAC3B,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;QAC7B,YAAY,EAAE,IAAI;KACnB,CAAC;AACJ,CAAC;AAED,MAAM,sBAAsB,GAAG;IAC7B,WAAW;IACX,MAAM;IACN,MAAM;IACN,MAAM;IACN,WAAW;CACH,CAAC;AAEX,MAAM,4BAA4B,GAAG;IACnC,KAAK;IACL,MAAM;IACN,KAAK;IACL,UAAU;IACV,SAAS;CACD,CAAC;AAEX,SAAS,WAAW,CAClB,KAAoB,EACpB,OAAU,EACV,QAAkB,EAClB,GAAW;IAEX,IAAI,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAkB,CAAC,EAAE,CAAC;QAClD,OAAO,KAAkB,CAAC;IAC5B,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,UAAU,GAAG,qBAAqB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,IAAc,EAAE,KAAe;IACtD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAaD,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,WAAmB,EACnB,QAAgB,EAChB,MAAiB;IAEjB,MAAM,YAAY,GAAG;;;;;;;;;;EAUrB,CAAC;IAED,MAAM,UAAU,GAAG;;;;;;;8CAOyB,CAAC;IAE7C,MAAM,QAAQ,GAAG,MAAM,eAAe,CACpC,WAAW,EAAE,QAAQ,EAAE,MAAM,EAC7B,YAAY,EAAE,UAAU,EACxB,0FAA0F,EAC1F,GAAG,CACJ,CAAC;IAEF,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;IACrG,CAAC;IACD,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC9E,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;IACxE,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,eAAe,CAChC,MAAM,CAAC,KAAK,EAAE,UAAU,EACxB,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CACxC,CAAC;IAEF,MAAM,MAAM,GAAG,iBAAiB,CAC9B,MAAM,CAAC,UAAU,EACjB,CAAC,GAAG,EAAE,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC,MAAM,CACrF,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAC1B,CAAC,MAAM,EACR,CAAC,CACF,CAAC;IACF,MAAM,MAAM,GAAG,iBAAiB,CAC9B,MAAM,EACN,UAAU,EACV,eAAe,CAAC,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CACrE,CAAC;IAEF,OAAO;QACL,GAAG,MAAM;QACT,GAAG;QACH,eAAe;QACf,eAAe;QACf,QAAQ;QACR,YAAY;QACZ,eAAe;QACf,WAAW,EAAE,QAAQ,CAAC,IAAI;QAC1B,SAAS,EAAE,QAAQ,CAAC,SAAS;KAC9B,CAAC;AACJ,CAAC;AAoBD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,WAAmB,EACnB,QAAgB,EAChB,MAAiB;IAEjB,MAAM,YAAY,GAAG;;;;;;;;;EASrB,CAAC;IAED,MAAM,UAAU,GAAG;;;;;;mDAM8B,CAAC;IAElD,MAAM,QAAQ,GAAG,MAAM,eAAe,CACpC,WAAW,EAAE,QAAQ,EAAE,MAAM,EAC7B,YAAY,EAAE,UAAU,EACxB,oGAAoG,EACpG,GAAG,CACJ,CAAC;IAEF,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;IACrG,CAAC;IACD,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;IACxE,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAChF,MAAM,cAAc,GAAG,WAAW,CAChC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EACpD,sBAAsB,EACtB,QAAQ,EACR,gBAAgB,CACjB,CAAC;IACF,MAAM,oBAAoB,GAAG,WAAW,CACtC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,sBAAsB,EAAE,QAAQ,CAAC,EAC1D,4BAA4B,EAC5B,QAAQ,EACR,sBAAsB,CACvB,CAAC;IACF,MAAM,UAAU,GAAG,eAAe,CAChC,MAAM,CAAC,KAAK,EAAE,UAAU,EACxB,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CACxC,CAAC;IAEF,MAAM,MAAM,GAAG,iBAAiB,CAC9B,MAAM,CAAC,UAAU,EACjB;QACE,YAAY;QACZ,YAAY;QACZ,gBAAgB;QAChB,cAAc;QACd,oBAAoB;KACrB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,EAC1C,CAAC,CACF,CAAC;IACF,MAAM,MAAM,GAAG,iBAAiB,CAC9B,MAAM,EACN,UAAU,EACV,eAAe,CAAC,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CACrE,CAAC;IAEF,MAAM,gBAAgB,GAAG;QACvB,YAAY;QACZ,YAAY;QACZ,gBAAgB;QAChB,cAAc;QACd,oBAAoB;KACrB,CAAC;IAEF,IAAI,SAAS,GAAiC,IAAI,CAAC;IACnD,IACE,MAAM,CAAC,cAAc;QACrB,YAAY,KAAK,IAAI;QACrB,YAAY,KAAK,IAAI;QACrB,gBAAgB,KAAK,IAAI;QACzB,cAAc,KAAK,IAAI;QACvB,oBAAoB,KAAK,IAAI,EAC7B,CAAC;QACD,MAAM,MAAM,GAAG,aAAa,CAAC;YAC3B,GAAG,EAAE,YAAY;YACjB,GAAG,EAAE,YAAY;YACjB,OAAO,EAAE,gBAAgB;YACzB,SAAS,EAAE,cAAc;YACzB,WAAW,EAAE,oBAAoB;YACjC,qBAAqB,EAAE,CAAC;SACzB,CAAC,CAAC;QACH,SAAS,GAAG;YACV,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;SACpD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,MAAM;QACT,gBAAgB;QAChB,SAAS;QACT,aAAa,EAAE,QAAQ,CAAC,IAAI;QAC5B,SAAS,EAAE,QAAQ,CAAC,SAAS;KAC9B,CAAC;AACJ,CAAC;AAgBD,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,WAAmB,EACnB,MAAiB;IAEjB,MAAM,MAAM,GAAG,iCAAiC,WAAW;;;;;;;;;;;;;EAa3D,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE;QAClD,YAAY,EAAE,8JAA8J;QAC5K,WAAW,EAAE,GAAG;QAChB,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,GAAG;KACf,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IACnF,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,qBAAqB,EAAE,QAAQ,CAAC,CAAC;IAC7E,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,uBAAuB,EAAE,QAAQ,CAAC,CAAC;IACjF,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAChF,MAAM,UAAU,GAAG,eAAe,CAChC,MAAM,CAAC,KAAK,EAAE,UAAU,EACxB,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CACxC,CAAC;IAEF,MAAM,MAAM,GAAG,iBAAiB,CAC9B,MAAM,CAAC,UAAU,EACjB,CAAC,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,MAAM,CAC9E,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAC1B,CAAC,MAAM,EACR,CAAC,CACF,CAAC;IACF,MAAM,MAAM,GAAG,iBAAiB,CAC9B,MAAM,EACN,UAAU,EACV,eAAe,CAAC,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CACrE,CAAC;IAEF,OAAO;QACL,GAAG,MAAM;QACT,WAAW;QACX,UAAU;QACV,QAAQ;QACR,mBAAmB,EAAE;YACnB,aAAa;YACb,QAAQ;YACR,UAAU;YACV,YAAY;SACb;QACD,gBAAgB;QAChB,UAAU,EAAE,QAAQ,CAAC,IAAI;KAC1B,CAAC;AACJ,CAAC;AAsBD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,WAAmB,EACnB,QAAgB,EAChB,MAAiB,EACjB,UAAmB;IAEnB,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;EAmBf,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE;QAC3E,YAAY,EAAE,qKAAqK;QACnL,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;QACtD,CAAC,CAAE,MAAM,CAAC,KAAK,EAAE,MAAoC;QACrD,CAAC,CAAC,EAAE,CAAC;IAEP,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;QACzC,QAAQ,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,MAAM,GAAoB,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACzD,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,MAAM,IAAI,GAAkB;YAC1B,SAAS,EAAE,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,aAAa,CAAC;YACxD,OAAO,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC;YACpD,WAAW,EAAE,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC;YAC5D,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC;YAC/C,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC;YAC1E,YAAY,EACV,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,aAAa,CAAC;YACtF,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;SACtC,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,eAAe,GACnB,MAAM,CAAC,KAAK,EAAE,eAAe,IAAI,IAAI;QACnC,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC9D,MAAM,kBAAkB,GACtB,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,IAAI,UAAU,IAAI,YAAY,CAAC;IAC3E,MAAM,UAAU,GAAG,eAAe,CAChC,MAAM,CAAC,KAAK,EAAE,UAAU,EACxB,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CACxC,CAAC;IAEF,MAAM,MAAM,GAAG,iBAAiB,CAC9B,MAAM,CAAC,UAAU,EACjB,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC;SACzF,MAAM,EACT,CAAC,CACF,CAAC;IACF,MAAM,MAAM,GAAG,iBAAiB,CAC9B,MAAM,EACN,UAAU,EACV,eAAe,CAAC,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CACrE,CAAC;IAEF,OAAO;QACL,GAAG,MAAM;QACT,UAAU,EAAE,kBAAkB;QAC9B,UAAU;QACV,eAAe;QACf,MAAM;QACN,OAAO;QACP,UAAU,EAAE,QAAQ,CAAC,IAAI;QACzB,SAAS,EAAE,QAAQ,CAAC,SAAS;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB,EAChB,cAAsB,EACtB,QAAgB,EAChB,MAAiB;IAEjB,MAAM,QAAQ,GAAG,MAAM,cAAc,CACnC,iFAAiF,QAAQ,qHAAqH,EAC9M,cAAc,EACd,QAAQ,EACR,MAAM,EACN;QACE,YAAY,EAAE,0KAA0K;QACxL,SAAS,EAAE,IAAI;KAChB,CACF,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;AAClE,CAAC;AAYD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,WAAmB,EACnB,QAAgB,EAChB,MAAiB;IAEjB,MAAM,MAAM,GAAG;;;;;;;;;EASf,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE;QAC3E,YAAY,EAAE,2FAA2F;QACzG,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;IACxE,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,eAAe,CAChC,MAAM,CAAC,KAAK,EAAE,UAAU,EACxB,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CACxC,CAAC;IAEF,MAAM,MAAM,GAAG,iBAAiB,CAC9B,MAAM,CAAC,UAAU,EACjB,CAAC,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,MAAM,CAC5E,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAC1B,CAAC,MAAM,EACR,CAAC,CACF,CAAC;IACF,MAAM,MAAM,GAAG,iBAAiB,CAC9B,MAAM,EACN,UAAU,EACV,eAAe,CAAC,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CACrE,CAAC;IAEF,OAAO;QACL,GAAG,MAAM;QACT,UAAU;QACV,YAAY;QACZ,cAAc;QACd,UAAU;QACV,eAAe;QACf,UAAU,EAAE,QAAQ,CAAC,IAAI;QACzB,SAAS,EAAE,QAAQ,CAAC,SAAS;KAC9B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vision/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/vision/parse.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,UAAU,EAAE,WAAW,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAID,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CA4BnE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAK1D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIxE;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,WAAW,EACvB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,WAAW,CAKb;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAAE,GACjB,WAAW,CAOb;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACtC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAAE,GACjB,MAAM,GAAG,IAAI,CAKf;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACtC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAAE,GACjB,MAAM,GAAG,IAAI,CAMf"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/vision/parse.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,UAAU,EAAE,WAAW,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAID,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CA8CnE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAK1D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIxE;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,WAAW,EACvB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,WAAW,CAKb;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAAE,GACjB,WAAW,CAOb;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACtC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAAE,GACjB,MAAM,GAAG,IAAI,CAKf;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACtC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAAE,GACjB,MAAM,GAAG,IAAI,CAMf"}
@@ -20,6 +20,24 @@ export function parseJsonObject(rawText) {
20
20
  return { value: parsed, baseStatus: 'parsed', warnings: [] };
21
21
  }
22
22
  catch {
23
+ const objectStart = cleaned.indexOf('{');
24
+ const objectEnd = cleaned.lastIndexOf('}');
25
+ if (objectStart >= 0 && objectEnd > objectStart) {
26
+ try {
27
+ const extracted = cleaned.slice(objectStart, objectEnd + 1);
28
+ const parsed = JSON.parse(extracted);
29
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
30
+ return {
31
+ value: parsed,
32
+ baseStatus: 'partial',
33
+ warnings: ['Model response included extra text; extracted the JSON object from the response.'],
34
+ };
35
+ }
36
+ }
37
+ catch {
38
+ // Fall through to the default invalid-JSON error.
39
+ }
40
+ }
23
41
  return {
24
42
  value: null,
25
43
  baseStatus: 'failed',
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/vision/parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/vision/parse.ts"],"names":[],"mappings":"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"}