@geotechcli/core 0.4.71 → 0.4.73
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.
- package/dist/agents/provider-operating-contract.d.ts +1 -1
- package/dist/agents/provider-operating-contract.d.ts.map +1 -1
- package/dist/agents/provider-operating-contract.js +2 -0
- package/dist/agents/provider-operating-contract.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/ingest/document-evidence-packet.d.ts +22 -22
- package/dist/meta/metadata.json +1 -1
- package/dist/project-workflow/index.d.ts +4 -0
- package/dist/project-workflow/index.d.ts.map +1 -0
- package/dist/project-workflow/index.js +4 -0
- package/dist/project-workflow/index.js.map +1 -0
- package/dist/report/index.d.ts +1 -0
- package/dist/report/index.d.ts.map +1 -1
- package/dist/report/index.js +1 -0
- package/dist/report/index.js.map +1 -1
- package/dist/report/project-workflow.d.ts +4 -0
- package/dist/report/project-workflow.d.ts.map +1 -0
- package/dist/report/project-workflow.js +72 -0
- package/dist/report/project-workflow.js.map +1 -0
- package/dist/workspace/index.d.ts +2 -0
- package/dist/workspace/index.d.ts.map +1 -1
- package/dist/workspace/index.js +2 -0
- package/dist/workspace/index.js.map +1 -1
- package/dist/workspace/project-workflow-executor.d.ts +92 -0
- package/dist/workspace/project-workflow-executor.d.ts.map +1 -0
- package/dist/workspace/project-workflow-executor.js +496 -0
- package/dist/workspace/project-workflow-executor.js.map +1 -0
- package/dist/workspace/project-workflow-router.d.ts +74 -0
- package/dist/workspace/project-workflow-router.d.ts.map +1 -0
- package/dist/workspace/project-workflow-router.js +262 -0
- package/dist/workspace/project-workflow-router.js.map +1 -0
- package/package.json +5 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-workflow-executor.d.ts","sourceRoot":"","sources":["../../src/workspace/project-workflow-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,496 @@
|
|
|
1
|
+
export function runProjectWorkflow(options) {
|
|
2
|
+
const generatedAt = options.now ?? new Date().toISOString();
|
|
3
|
+
const runId = options.runId ?? `workflow_${generatedAt.replace(/\D/g, '').slice(0, 17)}`;
|
|
4
|
+
const findings = buildFindings(options.manifest, options.task);
|
|
5
|
+
const actions = buildActions(options.manifest, options.task);
|
|
6
|
+
const charts = options.task === 'visualization' ? buildVisualizationCharts(options.manifest) : [];
|
|
7
|
+
const status = deriveWorkflowStatus(options.manifest, findings, charts, options.task);
|
|
8
|
+
const summary = buildSummary(options.manifest, options.task, status, findings, actions, charts);
|
|
9
|
+
const taskLabel = taskTitle(options.task);
|
|
10
|
+
const toolCalls = [
|
|
11
|
+
{
|
|
12
|
+
type: 'tool_call',
|
|
13
|
+
tool: 'workspace.project_workflow_executor',
|
|
14
|
+
status,
|
|
15
|
+
summary: `${taskLabel} evaluated deterministically from workspace manifest, GroundModel, verifier, and schema evidence.`,
|
|
16
|
+
},
|
|
17
|
+
];
|
|
18
|
+
if (charts.length > 0) {
|
|
19
|
+
toolCalls.push({
|
|
20
|
+
type: 'tool_call',
|
|
21
|
+
tool: 'viz.project_chart_specs',
|
|
22
|
+
status: 'pass',
|
|
23
|
+
summary: `${charts.length} deterministic chart spec(s) prepared from GroundModel evidence.`,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
schemaVersion: 'geotech.project-workflow-run.v1',
|
|
28
|
+
runId,
|
|
29
|
+
task: options.task,
|
|
30
|
+
generatedAt,
|
|
31
|
+
status,
|
|
32
|
+
providerContract: {
|
|
33
|
+
providerNeutral: true,
|
|
34
|
+
purpose: 'deterministic-project-workflow',
|
|
35
|
+
llmRole: 'none',
|
|
36
|
+
},
|
|
37
|
+
workspace: {
|
|
38
|
+
rootPath: options.manifest.rootPath,
|
|
39
|
+
totalFiles: options.manifest.summary.totalFiles,
|
|
40
|
+
supportedFiles: options.manifest.summary.supportedFiles,
|
|
41
|
+
branches: options.manifest.summary.branches,
|
|
42
|
+
},
|
|
43
|
+
summary,
|
|
44
|
+
findings,
|
|
45
|
+
actions,
|
|
46
|
+
charts,
|
|
47
|
+
artifacts: [
|
|
48
|
+
{ kind: 'json', path: `.geotech/runs/${runId}/workflow_result.json`, description: 'Deterministic workflow result' },
|
|
49
|
+
{ kind: 'markdown', path: `.geotech/runs/${runId}/workflow_report.md`, description: 'Human-readable deterministic workflow report' },
|
|
50
|
+
...(charts.length > 0
|
|
51
|
+
? [{ kind: 'chart-spec', path: `.geotech/runs/${runId}/workflow_result.json#charts`, description: 'Deterministic visualization chart specs' }]
|
|
52
|
+
: []),
|
|
53
|
+
],
|
|
54
|
+
trace: {
|
|
55
|
+
steps: [
|
|
56
|
+
{
|
|
57
|
+
type: 'tool_call',
|
|
58
|
+
name: 'workspace.project_workflow_executor',
|
|
59
|
+
status,
|
|
60
|
+
detail: `${taskLabel} used provider-neutral manifest evidence only.`,
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
type: 'review_gate',
|
|
64
|
+
name: 'engineering_review_required',
|
|
65
|
+
status: status === 'blocked' ? 'blocked' : 'review',
|
|
66
|
+
detail: 'Project workflow output supports engineering review and must not be treated as final design without human approval.',
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
toolCalls,
|
|
71
|
+
modelCalls: [],
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function buildFindings(manifest, task) {
|
|
75
|
+
const findings = [];
|
|
76
|
+
const push = (finding) => {
|
|
77
|
+
findings.push({ id: `finding_${String(findings.length + 1).padStart(3, '0')}`, ...finding });
|
|
78
|
+
};
|
|
79
|
+
if (manifest.summary.supportedFiles === 0) {
|
|
80
|
+
push({
|
|
81
|
+
severity: 'blocking',
|
|
82
|
+
title: 'No supported project evidence indexed',
|
|
83
|
+
detail: 'The workspace scan did not find supported geotechnical files for this workflow.',
|
|
84
|
+
evidenceIds: [],
|
|
85
|
+
recommendation: 'Add AGS, CSV/XLSX, PDF, image, GIS, CAD, or JSON geotechnical evidence and rerun project discovery.',
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
for (const warning of manifest.warnings.slice(0, 8)) {
|
|
89
|
+
push({
|
|
90
|
+
severity: 'warning',
|
|
91
|
+
title: 'Workspace warning',
|
|
92
|
+
detail: warning,
|
|
93
|
+
evidenceIds: [],
|
|
94
|
+
recommendation: 'Review the workspace scan warning before using downstream workflow output.',
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
if (task === 'data-quality') {
|
|
98
|
+
addDataQualityFindings(manifest, push);
|
|
99
|
+
}
|
|
100
|
+
if (task === 'ground-model') {
|
|
101
|
+
addGroundModelFindings(manifest, push);
|
|
102
|
+
}
|
|
103
|
+
if (task === 'risk-analysis') {
|
|
104
|
+
addRiskFindings(manifest, push);
|
|
105
|
+
}
|
|
106
|
+
if (task === 'anomaly-detection') {
|
|
107
|
+
addAnomalyFindings(manifest, push);
|
|
108
|
+
}
|
|
109
|
+
if (task === 'recommendations') {
|
|
110
|
+
addRecommendationFindings(manifest, push);
|
|
111
|
+
}
|
|
112
|
+
if (task === 'visualization') {
|
|
113
|
+
addVisualizationFindings(manifest, push);
|
|
114
|
+
}
|
|
115
|
+
if (findings.length === 0) {
|
|
116
|
+
push({
|
|
117
|
+
severity: 'info',
|
|
118
|
+
title: 'No deterministic issues found',
|
|
119
|
+
detail: `${taskTitle(task)} did not find obvious blockers in the current workspace evidence.`,
|
|
120
|
+
evidenceIds: [],
|
|
121
|
+
recommendation: 'Continue with engineering review and deeper extraction where required.',
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return findings;
|
|
125
|
+
}
|
|
126
|
+
function addDataQualityFindings(manifest, push) {
|
|
127
|
+
if (manifest.summary.skippedFiles > 0) {
|
|
128
|
+
push({
|
|
129
|
+
severity: 'warning',
|
|
130
|
+
title: 'Skipped files present',
|
|
131
|
+
detail: `${manifest.summary.skippedFiles} file(s) were skipped by workspace discovery.`,
|
|
132
|
+
evidenceIds: [],
|
|
133
|
+
recommendation: 'Confirm whether skipped files include project-critical drawings, reports, or monitoring data.',
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
for (const file of filesWithWarnings(manifest).slice(0, 8)) {
|
|
137
|
+
push({
|
|
138
|
+
severity: 'warning',
|
|
139
|
+
title: `File warning: ${file.path}`,
|
|
140
|
+
detail: file.classification.warnings.join('; '),
|
|
141
|
+
evidenceIds: [`file:${file.path}`],
|
|
142
|
+
source: file.path,
|
|
143
|
+
recommendation: 'Inspect this source before relying on its extracted schema or classification.',
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
const duplicateNames = duplicated(manifest.files.map((file) => file.name.toLowerCase()));
|
|
147
|
+
for (const name of duplicateNames.slice(0, 5)) {
|
|
148
|
+
push({
|
|
149
|
+
severity: 'info',
|
|
150
|
+
title: `Duplicate filename: ${name}`,
|
|
151
|
+
detail: 'Multiple files share the same filename, which may indicate duplicate exports or repeated evidence packages.',
|
|
152
|
+
evidenceIds: manifest.files.filter((file) => file.name.toLowerCase() === name).map((file) => `file:${file.path}`),
|
|
153
|
+
recommendation: 'Check whether duplicate filenames refer to unique revisions or redundant evidence.',
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
function addGroundModelFindings(manifest, push) {
|
|
158
|
+
const model = manifest.groundModel;
|
|
159
|
+
if (!model || model.stats.evidenceRefs === 0) {
|
|
160
|
+
push({
|
|
161
|
+
severity: 'blocking',
|
|
162
|
+
title: 'GroundModel evidence not available',
|
|
163
|
+
detail: 'The manifest does not contain evidence-bound boreholes, strata, parameters, or groundwater observations.',
|
|
164
|
+
evidenceIds: [],
|
|
165
|
+
recommendation: 'Add structured borehole/log/lab data or ingest PDFs before ground-model interpretation.',
|
|
166
|
+
});
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
for (const warning of model.warnings.slice(0, 8)) {
|
|
170
|
+
push({
|
|
171
|
+
severity: 'warning',
|
|
172
|
+
title: 'GroundModel warning',
|
|
173
|
+
detail: warning,
|
|
174
|
+
evidenceIds: [],
|
|
175
|
+
recommendation: 'Verify the GroundModel source evidence and extracted field mapping.',
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
addVerifierFindings(manifest.verifier?.findings ?? [], push);
|
|
179
|
+
}
|
|
180
|
+
function addRiskFindings(manifest, push) {
|
|
181
|
+
const model = manifest.groundModel;
|
|
182
|
+
if (!manifest.verifier) {
|
|
183
|
+
push({
|
|
184
|
+
severity: 'blocking',
|
|
185
|
+
title: 'Verifier output missing',
|
|
186
|
+
detail: 'Risk analysis needs GroundModel verifier findings and workflow readiness.',
|
|
187
|
+
evidenceIds: [],
|
|
188
|
+
recommendation: 'Build or refresh GroundModel verification before risk analysis.',
|
|
189
|
+
});
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
addVerifierFindings(manifest.verifier.findings, push, 'risk');
|
|
193
|
+
if (model && model.stats.boreholes > 0 && model.stats.groundwaterObservations === 0) {
|
|
194
|
+
push({
|
|
195
|
+
severity: 'risk',
|
|
196
|
+
title: 'Groundwater data missing',
|
|
197
|
+
detail: 'Borehole evidence exists, but no groundwater observations are bound to evidence.',
|
|
198
|
+
evidenceIds: model.boreholes.flatMap((borehole) => borehole.evidenceIds).slice(0, 8),
|
|
199
|
+
recommendation: 'Confirm groundwater strikes, standpipe readings, or an explicit dry/unknown groundwater assumption before design use.',
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
function addAnomalyFindings(manifest, push) {
|
|
204
|
+
const model = manifest.groundModel;
|
|
205
|
+
if (manifest.summary.supportedFiles < 2) {
|
|
206
|
+
push({
|
|
207
|
+
severity: 'warning',
|
|
208
|
+
title: 'Limited cross-source comparison',
|
|
209
|
+
detail: 'Anomaly detection is stronger when multiple independent files or data tables can be compared.',
|
|
210
|
+
evidenceIds: manifest.files.map((file) => `file:${file.path}`).slice(0, 8),
|
|
211
|
+
recommendation: 'Add AGS, tabular, PDF, or monitoring sources to improve cross-source conflict checks.',
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
for (const rejected of model?.rejectedObservations ?? []) {
|
|
215
|
+
push({
|
|
216
|
+
severity: rejected.kind === 'spt' ? 'warning' : 'info',
|
|
217
|
+
title: `Rejected ${rejected.kind} observation`,
|
|
218
|
+
detail: rejected.reason,
|
|
219
|
+
source: rejected.sourcePath,
|
|
220
|
+
evidenceIds: rejected.evidenceIds,
|
|
221
|
+
recommendation: 'Review the source value and confirm whether it is project data or a standards/reference number.',
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
addVerifierFindings((manifest.verifier?.findings ?? []).filter((finding) => /duplicate|negative|rejected|missing|conflict/i.test(finding.code)), push);
|
|
225
|
+
}
|
|
226
|
+
function addRecommendationFindings(manifest, push) {
|
|
227
|
+
const workflows = manifest.verifier?.calculationReadiness.workflows ?? [];
|
|
228
|
+
if (workflows.length === 0) {
|
|
229
|
+
push({
|
|
230
|
+
severity: 'blocking',
|
|
231
|
+
title: 'No calculation readiness routes',
|
|
232
|
+
detail: 'No calculation workflow readiness records are available for recommendation routing.',
|
|
233
|
+
evidenceIds: [],
|
|
234
|
+
recommendation: 'Refresh workspace analysis with GroundModel and calculation readiness enabled.',
|
|
235
|
+
});
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
for (const workflow of workflows.filter((item) => item.status === 'blocked').slice(0, 8)) {
|
|
239
|
+
push({
|
|
240
|
+
severity: 'warning',
|
|
241
|
+
title: `${workflow.label} blocked`,
|
|
242
|
+
detail: `Missing: ${workflow.missing.join(', ') || 'required inputs'}.`,
|
|
243
|
+
evidenceIds: workflow.evidenceIds,
|
|
244
|
+
recommendation: workflow.recommendation,
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
function addVisualizationFindings(manifest, push) {
|
|
249
|
+
const model = manifest.groundModel;
|
|
250
|
+
if (!model) {
|
|
251
|
+
push({
|
|
252
|
+
severity: 'blocking',
|
|
253
|
+
title: 'Visualization source model missing',
|
|
254
|
+
detail: 'No GroundModel exists for deterministic project visualization.',
|
|
255
|
+
evidenceIds: [],
|
|
256
|
+
recommendation: 'Add borehole, coordinate, SPT, groundwater, or lab evidence and rerun workspace analysis.',
|
|
257
|
+
});
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
if (!model.map?.points.length) {
|
|
261
|
+
push({
|
|
262
|
+
severity: 'warning',
|
|
263
|
+
title: 'Map visualization gated by coordinates',
|
|
264
|
+
detail: 'GroundModel exists, but no plottable coordinate points were found.',
|
|
265
|
+
evidenceIds: model.boreholes.flatMap((borehole) => borehole.evidenceIds).slice(0, 8),
|
|
266
|
+
recommendation: 'Add borehole coordinate evidence and declare/confirm CRS before map or cross-section output.',
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
function addVerifierFindings(findings, push, defaultSeverity) {
|
|
271
|
+
for (const finding of findings.slice(0, 12)) {
|
|
272
|
+
push({
|
|
273
|
+
severity: defaultSeverity ?? mapVerifierSeverity(finding.severity),
|
|
274
|
+
title: finding.code.replace(/_/g, ' '),
|
|
275
|
+
detail: finding.message,
|
|
276
|
+
evidenceIds: finding.evidenceIds,
|
|
277
|
+
recommendation: finding.recommendation,
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
function buildActions(manifest, task) {
|
|
282
|
+
const actions = [];
|
|
283
|
+
const push = (action) => {
|
|
284
|
+
actions.push({ id: `action_${String(actions.length + 1).padStart(3, '0')}`, ...action });
|
|
285
|
+
};
|
|
286
|
+
if (task === 'recommendations' || task === 'risk-analysis' || task === 'ground-model') {
|
|
287
|
+
for (const workflow of manifest.verifier?.calculationReadiness.workflows ?? []) {
|
|
288
|
+
push(actionFromReadiness(workflow));
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
if (task === 'data-quality') {
|
|
292
|
+
push({
|
|
293
|
+
label: 'Review workspace manifest and missing data',
|
|
294
|
+
status: manifest.summary.supportedFiles > 0 ? 'ready' : 'blocked',
|
|
295
|
+
missing: manifest.summary.supportedFiles > 0 ? [] : ['supported geotechnical evidence'],
|
|
296
|
+
evidenceIds: manifest.files.map((file) => `file:${file.path}`).slice(0, 8),
|
|
297
|
+
recommendation: manifest.summary.recommendations[0] ?? 'Add recognized project evidence and rerun workspace discovery.',
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
if (task === 'anomaly-detection') {
|
|
301
|
+
push({
|
|
302
|
+
label: 'Review rejected observations and verifier findings',
|
|
303
|
+
status: manifest.groundModel?.rejectedObservations.length || manifest.verifier?.findings.length ? 'needs_input' : 'ready',
|
|
304
|
+
missing: manifest.summary.supportedFiles > 1 ? [] : ['multiple comparable evidence sources'],
|
|
305
|
+
evidenceIds: manifest.groundModel?.rejectedObservations.flatMap((item) => item.evidenceIds).slice(0, 8) ?? [],
|
|
306
|
+
recommendation: 'Use source-page/evidence review before promoting anomalies into project decisions.',
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
if (task === 'visualization') {
|
|
310
|
+
const charts = buildVisualizationCharts(manifest);
|
|
311
|
+
push({
|
|
312
|
+
label: 'Generate deterministic project visualizations',
|
|
313
|
+
status: charts.length > 0 ? 'ready' : 'blocked',
|
|
314
|
+
missing: charts.length > 0 ? [] : ['GroundModel chart evidence'],
|
|
315
|
+
evidenceIds: manifest.groundModel?.evidence.map((item) => item.id).slice(0, 8) ?? [],
|
|
316
|
+
recommendation: charts.length > 0
|
|
317
|
+
? 'Render chart specs through the CLI/web visualization layer after CRS and review gates are accepted.'
|
|
318
|
+
: 'Add coordinate, SPT, groundwater, or lab evidence to unlock visualization specs.',
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
return actions;
|
|
322
|
+
}
|
|
323
|
+
function actionFromReadiness(workflow) {
|
|
324
|
+
return {
|
|
325
|
+
label: workflow.label,
|
|
326
|
+
status: workflow.status === 'ready' ? 'ready' : workflow.status === 'ready_with_assumptions' ? 'needs_input' : 'blocked',
|
|
327
|
+
command: workflow.commandTemplate,
|
|
328
|
+
missing: workflow.missing,
|
|
329
|
+
evidenceIds: workflow.evidenceIds,
|
|
330
|
+
recommendation: workflow.recommendation,
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
function buildVisualizationCharts(manifest) {
|
|
334
|
+
const model = manifest.groundModel;
|
|
335
|
+
if (!model)
|
|
336
|
+
return [];
|
|
337
|
+
const charts = [];
|
|
338
|
+
if (model.map?.points.length) {
|
|
339
|
+
charts.push({
|
|
340
|
+
id: 'ground-model-map',
|
|
341
|
+
title: 'GroundModel Map',
|
|
342
|
+
kind: 'map',
|
|
343
|
+
xLabel: model.map.coordinateType === 'geographic' ? 'Longitude' : 'Easting / local X',
|
|
344
|
+
yLabel: model.map.coordinateType === 'geographic' ? 'Latitude' : 'Northing / local Y',
|
|
345
|
+
series: [{
|
|
346
|
+
id: 'locations',
|
|
347
|
+
label: 'Investigation locations',
|
|
348
|
+
points: model.map.points.map((point) => ({
|
|
349
|
+
x: point.x,
|
|
350
|
+
y: point.y,
|
|
351
|
+
label: point.label,
|
|
352
|
+
evidenceIds: point.sourceEvidenceIds,
|
|
353
|
+
})),
|
|
354
|
+
}],
|
|
355
|
+
warnings: model.map.warnings,
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
const sptSeries = model.boreholes
|
|
359
|
+
.filter((borehole) => borehole.sptTests.length > 0)
|
|
360
|
+
.map((borehole) => ({
|
|
361
|
+
id: `spt-${borehole.id}`,
|
|
362
|
+
label: `${borehole.id} SPT N`,
|
|
363
|
+
points: borehole.sptTests.map((test) => ({
|
|
364
|
+
x: test.nValue,
|
|
365
|
+
y: test.depth,
|
|
366
|
+
label: `${borehole.id} ${test.depth}m`,
|
|
367
|
+
evidenceIds: test.evidenceIds,
|
|
368
|
+
})),
|
|
369
|
+
}));
|
|
370
|
+
if (sptSeries.length > 0) {
|
|
371
|
+
charts.push({
|
|
372
|
+
id: 'spt-depth',
|
|
373
|
+
title: 'SPT N-value by Depth',
|
|
374
|
+
kind: 'xy',
|
|
375
|
+
xLabel: 'SPT N-value',
|
|
376
|
+
yLabel: 'Depth (m)',
|
|
377
|
+
series: sptSeries,
|
|
378
|
+
warnings: [],
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
const groundwaterSeries = model.boreholes
|
|
382
|
+
.filter((borehole) => borehole.groundwater.length > 0)
|
|
383
|
+
.map((borehole) => ({
|
|
384
|
+
id: `groundwater-${borehole.id}`,
|
|
385
|
+
label: `${borehole.id} groundwater`,
|
|
386
|
+
points: borehole.groundwater.map((item, index) => ({
|
|
387
|
+
x: index + 1,
|
|
388
|
+
y: item.depth,
|
|
389
|
+
label: `${borehole.id} ${item.depth}m`,
|
|
390
|
+
evidenceIds: item.evidenceIds,
|
|
391
|
+
})),
|
|
392
|
+
}));
|
|
393
|
+
if (groundwaterSeries.length > 0) {
|
|
394
|
+
charts.push({
|
|
395
|
+
id: 'groundwater-depth',
|
|
396
|
+
title: 'Groundwater Observations',
|
|
397
|
+
kind: 'xy',
|
|
398
|
+
xLabel: 'Observation',
|
|
399
|
+
yLabel: 'Depth (m)',
|
|
400
|
+
series: groundwaterSeries,
|
|
401
|
+
warnings: [],
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
const labParameters = numericDepthParameters(model).slice(0, 6);
|
|
405
|
+
if (labParameters.length > 0) {
|
|
406
|
+
charts.push({
|
|
407
|
+
id: 'lab-parameters-depth',
|
|
408
|
+
title: 'Lab Parameters by Depth',
|
|
409
|
+
kind: 'xy',
|
|
410
|
+
xLabel: 'Value',
|
|
411
|
+
yLabel: 'Depth (m)',
|
|
412
|
+
series: labParameters.map(([name, parameters]) => ({
|
|
413
|
+
id: `parameter-${slug(name)}`,
|
|
414
|
+
label: name,
|
|
415
|
+
points: parameters.map((parameter) => ({
|
|
416
|
+
x: Number(parameter.value),
|
|
417
|
+
y: parameter.depth ?? 0,
|
|
418
|
+
label: parameter.boreholeId ?? parameter.sampleId,
|
|
419
|
+
evidenceIds: parameter.evidenceIds,
|
|
420
|
+
})),
|
|
421
|
+
})),
|
|
422
|
+
warnings: [],
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
return charts;
|
|
426
|
+
}
|
|
427
|
+
function numericDepthParameters(model) {
|
|
428
|
+
const grouped = new Map();
|
|
429
|
+
for (const parameter of model.parameters) {
|
|
430
|
+
if (typeof parameter.value !== 'number' || parameter.depth == null)
|
|
431
|
+
continue;
|
|
432
|
+
const group = grouped.get(parameter.name) ?? [];
|
|
433
|
+
group.push(parameter);
|
|
434
|
+
grouped.set(parameter.name, group);
|
|
435
|
+
}
|
|
436
|
+
return [...grouped.entries()].filter(([, parameters]) => parameters.length > 0);
|
|
437
|
+
}
|
|
438
|
+
function buildSummary(manifest, task, status, findings, actions, charts) {
|
|
439
|
+
const model = manifest.groundModel;
|
|
440
|
+
return [
|
|
441
|
+
`${taskTitle(task)} completed as a deterministic, provider-neutral project workflow with status ${status}.`,
|
|
442
|
+
`Workspace evidence: ${manifest.summary.supportedFiles}/${manifest.summary.totalFiles} supported files, branches ${manifest.summary.branches.join(', ') || 'none'}.`,
|
|
443
|
+
model
|
|
444
|
+
? `GroundModel evidence: ${model.stats.boreholes} boreholes, ${model.stats.strata} strata, ${model.stats.sptTests} SPT tests, ${model.stats.parameters} parameters, ${model.stats.evidenceRefs} evidence refs.`
|
|
445
|
+
: 'GroundModel evidence is not available in this manifest.',
|
|
446
|
+
`Findings: ${findings.filter((item) => item.severity === 'blocking').length} blocking, ${findings.filter((item) => item.severity === 'risk').length} risk, ${findings.filter((item) => item.severity === 'warning').length} warning, ${findings.filter((item) => item.severity === 'info').length} info.`,
|
|
447
|
+
actions.length > 0 ? `Actions prepared: ${actions.length}.` : 'No downstream action routes were prepared.',
|
|
448
|
+
charts.length > 0 ? `Visualization chart specs prepared: ${charts.length}.` : 'No visualization chart specs were prepared.',
|
|
449
|
+
];
|
|
450
|
+
}
|
|
451
|
+
function deriveWorkflowStatus(manifest, findings, charts, task) {
|
|
452
|
+
if (findings.some((finding) => finding.severity === 'blocking'))
|
|
453
|
+
return 'blocked';
|
|
454
|
+
if (task === 'visualization' && charts.length === 0)
|
|
455
|
+
return 'blocked';
|
|
456
|
+
if (manifest.verifier?.status === 'blocking')
|
|
457
|
+
return 'blocked';
|
|
458
|
+
if (findings.some((finding) => finding.severity === 'risk' || finding.severity === 'warning'))
|
|
459
|
+
return 'review';
|
|
460
|
+
if (manifest.verifier?.status === 'review')
|
|
461
|
+
return 'review';
|
|
462
|
+
return 'pass';
|
|
463
|
+
}
|
|
464
|
+
function filesWithWarnings(manifest) {
|
|
465
|
+
return manifest.files.filter((file) => file.classification.warnings.length > 0);
|
|
466
|
+
}
|
|
467
|
+
function duplicated(values) {
|
|
468
|
+
return [...new Set(values.filter((value, index) => values.indexOf(value) !== index))];
|
|
469
|
+
}
|
|
470
|
+
function mapVerifierSeverity(severity) {
|
|
471
|
+
if (severity === 'blocking')
|
|
472
|
+
return 'blocking';
|
|
473
|
+
if (severity === 'review')
|
|
474
|
+
return 'warning';
|
|
475
|
+
return 'info';
|
|
476
|
+
}
|
|
477
|
+
function taskTitle(task) {
|
|
478
|
+
switch (task) {
|
|
479
|
+
case 'data-quality':
|
|
480
|
+
return 'Data quality';
|
|
481
|
+
case 'ground-model':
|
|
482
|
+
return 'Ground-model interpretation';
|
|
483
|
+
case 'risk-analysis':
|
|
484
|
+
return 'Risk analysis';
|
|
485
|
+
case 'anomaly-detection':
|
|
486
|
+
return 'Anomaly detection';
|
|
487
|
+
case 'recommendations':
|
|
488
|
+
return 'Recommendations';
|
|
489
|
+
case 'visualization':
|
|
490
|
+
return 'Visualization';
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
function slug(value) {
|
|
494
|
+
return value.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '') || 'parameter';
|
|
495
|
+
}
|
|
496
|
+
//# sourceMappingURL=project-workflow-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-workflow-executor.js","sourceRoot":"","sources":["../../src/workspace/project-workflow-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { LLMConfig } from '../llm/types.js';
|
|
2
|
+
import { type ProviderOperatingContract } from '../agents/provider-operating-contract.js';
|
|
3
|
+
import type { ProjectManifest } from './manifest.js';
|
|
4
|
+
import type { ProjectWorkflowTask } from './project-workflow-executor.js';
|
|
5
|
+
export type ProjectWorkflowRouteExecutionMode = 'deterministic-sequence' | 'needs-selection';
|
|
6
|
+
export interface ProjectWorkflowRouteRejectedTask {
|
|
7
|
+
value: string;
|
|
8
|
+
reason: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ProjectWorkflowRouterSelection {
|
|
11
|
+
tasks: ProjectWorkflowTask[];
|
|
12
|
+
rejectedTasks: ProjectWorkflowRouteRejectedTask[];
|
|
13
|
+
rationale: string[];
|
|
14
|
+
}
|
|
15
|
+
export interface ProjectWorkflowRoutePlan {
|
|
16
|
+
schemaVersion: 'geotech.project-workflow-route-plan.v1';
|
|
17
|
+
routeId: string;
|
|
18
|
+
runId: string;
|
|
19
|
+
generatedAt: string;
|
|
20
|
+
prompt: string;
|
|
21
|
+
executionMode: ProjectWorkflowRouteExecutionMode;
|
|
22
|
+
tasks: ProjectWorkflowTask[];
|
|
23
|
+
confidence: number;
|
|
24
|
+
rationale: string[];
|
|
25
|
+
rejectedTasks: ProjectWorkflowRouteRejectedTask[];
|
|
26
|
+
providerContract: {
|
|
27
|
+
providerNeutral: true;
|
|
28
|
+
purpose: 'project-workflow-routing';
|
|
29
|
+
llmRole: 'planner-reviewer-only';
|
|
30
|
+
deterministicExecutionRequired: true;
|
|
31
|
+
allowedTasks: ProjectWorkflowTask[];
|
|
32
|
+
disallowedActions: string[];
|
|
33
|
+
providerProfile?: ProviderOperatingContract['profile'];
|
|
34
|
+
contextStrategy?: ProviderOperatingContract['contextStrategy'];
|
|
35
|
+
reviewGates?: string[];
|
|
36
|
+
};
|
|
37
|
+
evidenceSummary?: {
|
|
38
|
+
supportedFiles: number;
|
|
39
|
+
branches: string[];
|
|
40
|
+
hasGroundModel: boolean;
|
|
41
|
+
hasVerifier: boolean;
|
|
42
|
+
};
|
|
43
|
+
trace: {
|
|
44
|
+
steps: Array<{
|
|
45
|
+
type: 'router' | 'review_gate';
|
|
46
|
+
status: 'pass' | 'review' | 'blocked';
|
|
47
|
+
detail: string;
|
|
48
|
+
}>;
|
|
49
|
+
};
|
|
50
|
+
modelCalls: [];
|
|
51
|
+
}
|
|
52
|
+
export interface RouteProjectWorkflowRequestOptions {
|
|
53
|
+
prompt: string;
|
|
54
|
+
manifest?: ProjectManifest;
|
|
55
|
+
requestedTasks?: Array<ProjectWorkflowTask | string>;
|
|
56
|
+
llmSelection?: unknown;
|
|
57
|
+
providerConfig?: Pick<LLMConfig, 'provider' | 'modelId' | 'visionModelId'>;
|
|
58
|
+
runId?: string;
|
|
59
|
+
now?: string;
|
|
60
|
+
}
|
|
61
|
+
export interface BuildProjectWorkflowRouterPromptOptions {
|
|
62
|
+
prompt: string;
|
|
63
|
+
manifest?: ProjectManifest;
|
|
64
|
+
providerConfig?: Pick<LLMConfig, 'provider' | 'modelId' | 'visionModelId'>;
|
|
65
|
+
compact?: boolean;
|
|
66
|
+
}
|
|
67
|
+
export declare const PROJECT_WORKFLOW_ROUTER_TASKS: ProjectWorkflowTask[];
|
|
68
|
+
export declare const PROJECT_WORKFLOW_ROUTE_MIN_CONFIDENCE = 0.6;
|
|
69
|
+
export declare function normalizeProjectWorkflowRouteTask(value: unknown): ProjectWorkflowTask | undefined;
|
|
70
|
+
export declare function parseProjectWorkflowRouterSelection(raw: unknown): ProjectWorkflowRouterSelection;
|
|
71
|
+
export declare function inferProjectWorkflowRouteTasks(prompt: string): ProjectWorkflowRouterSelection;
|
|
72
|
+
export declare function routeProjectWorkflowRequest(options: RouteProjectWorkflowRequestOptions): ProjectWorkflowRoutePlan;
|
|
73
|
+
export declare function buildProjectWorkflowRouterPrompt(options: BuildProjectWorkflowRouterPromptOptions): string;
|
|
74
|
+
//# sourceMappingURL=project-workflow-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-workflow-router.d.ts","sourceRoot":"","sources":["../../src/workspace/project-workflow-router.ts"],"names":[],"mappings":"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"}
|