geotechcli 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/ai.d.ts +8 -0
- package/dist/commands/ai.d.ts.map +1 -0
- package/dist/commands/ai.js +780 -0
- package/dist/commands/ai.js.map +1 -0
- package/dist/commands/bearing.d.ts +3 -0
- package/dist/commands/bearing.d.ts.map +1 -0
- package/dist/commands/bearing.js +64 -0
- package/dist/commands/bearing.js.map +1 -0
- package/dist/commands/bridge.d.ts +3 -0
- package/dist/commands/bridge.d.ts.map +1 -0
- package/dist/commands/bridge.js +87 -0
- package/dist/commands/bridge.js.map +1 -0
- package/dist/commands/classify.d.ts +3 -0
- package/dist/commands/classify.d.ts.map +1 -0
- package/dist/commands/classify.js +122 -0
- package/dist/commands/classify.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +97 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/export.d.ts +3 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +85 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/liquefaction.d.ts +3 -0
- package/dist/commands/liquefaction.d.ts.map +1 -0
- package/dist/commands/liquefaction.js +94 -0
- package/dist/commands/liquefaction.js.map +1 -0
- package/dist/commands/pile.d.ts +3 -0
- package/dist/commands/pile.d.ts.map +1 -0
- package/dist/commands/pile.js +88 -0
- package/dist/commands/pile.js.map +1 -0
- package/dist/commands/retaining.d.ts +3 -0
- package/dist/commands/retaining.d.ts.map +1 -0
- package/dist/commands/retaining.js +71 -0
- package/dist/commands/retaining.js.map +1 -0
- package/dist/commands/slope.d.ts +3 -0
- package/dist/commands/slope.d.ts.map +1 -0
- package/dist/commands/slope.js +80 -0
- package/dist/commands/slope.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +76 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/tunnel.d.ts +3 -0
- package/dist/commands/tunnel.d.ts.map +1 -0
- package/dist/commands/tunnel.js +145 -0
- package/dist/commands/tunnel.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +83 -0
- package/dist/index.js.map +1 -0
- package/dist/ui/terminal.d.ts +21 -0
- package/dist/ui/terminal.d.ts.map +1 -0
- package/dist/ui/terminal.js +153 -0
- package/dist/ui/terminal.js.map +1 -0
- package/dist/util/flags.d.ts +13 -0
- package/dist/util/flags.d.ts.map +1 -0
- package/dist/util/flags.js +25 -0
- package/dist/util/flags.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"liquefaction.d.ts","sourceRoot":"","sources":["../../src/commands/liquefaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6GlE"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { calculateLiquefaction } from '@geotechcli/core';
|
|
3
|
+
import { heading, keyValue, renderTable, renderSteps, renderJSON, warn, success } from '../ui/terminal.js';
|
|
4
|
+
import { addGlobalFlags, getGlobalFlags } from '../util/flags.js';
|
|
5
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
6
|
+
export function registerLiquefactionCommand(program) {
|
|
7
|
+
const cmd = new Command('liquefaction')
|
|
8
|
+
.description('Seismic liquefaction triggering analysis')
|
|
9
|
+
.requiredOption('--pga <g>', 'Peak ground acceleration amax (g)', parseFloat)
|
|
10
|
+
.requiredOption('--magnitude <Mw>', 'Earthquake moment magnitude', parseFloat)
|
|
11
|
+
.option('--method <n>', 'Method: boulanger-idriss-2014|nceer', 'boulanger-idriss-2014')
|
|
12
|
+
.option('--spt-profile <file>', 'CSV file with columns: depth,sptN,finesContent,unitWeight,waterTableDepth')
|
|
13
|
+
.option('--depth <m>', 'Single layer depth (m)', parseFloat)
|
|
14
|
+
.option('--spt <N>', 'Single layer SPT N-value', parseFloat)
|
|
15
|
+
.option('--fines <percent>', 'Single layer fines content (%)', parseFloat, 5)
|
|
16
|
+
.action((opts) => {
|
|
17
|
+
const flags = getGlobalFlags(opts);
|
|
18
|
+
let layers;
|
|
19
|
+
if (opts.sptProfile) {
|
|
20
|
+
// Parse CSV
|
|
21
|
+
const csv = readFileSync(opts.sptProfile, 'utf-8');
|
|
22
|
+
const lines = csv.trim().split('\n');
|
|
23
|
+
const header = lines[0].toLowerCase();
|
|
24
|
+
const hasHeader = header.includes('depth');
|
|
25
|
+
layers = (hasHeader ? lines.slice(1) : lines).map((line) => {
|
|
26
|
+
const cols = line.split(',').map((c) => parseFloat(c.trim()));
|
|
27
|
+
return {
|
|
28
|
+
depth: cols[0],
|
|
29
|
+
sptN: cols[1],
|
|
30
|
+
finesContent: cols[2] ?? 5,
|
|
31
|
+
unitWeight: cols[3] ?? 18,
|
|
32
|
+
waterTableDepth: cols[4] ?? 1,
|
|
33
|
+
};
|
|
34
|
+
}).filter((l) => !isNaN(l.depth) && !isNaN(l.sptN));
|
|
35
|
+
}
|
|
36
|
+
else if (opts.depth && opts.spt !== undefined) {
|
|
37
|
+
layers = [{
|
|
38
|
+
depth: opts.depth,
|
|
39
|
+
sptN: opts.spt,
|
|
40
|
+
finesContent: opts.fines,
|
|
41
|
+
unitWeight: 18,
|
|
42
|
+
waterTableDepth: 1,
|
|
43
|
+
}];
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// Demo layers
|
|
47
|
+
layers = [
|
|
48
|
+
{ depth: 2.0, sptN: 8, finesContent: 15, unitWeight: 17, waterTableDepth: 1.5 },
|
|
49
|
+
{ depth: 4.5, sptN: 12, finesContent: 10, unitWeight: 18, waterTableDepth: 1.5 },
|
|
50
|
+
{ depth: 7.0, sptN: 6, finesContent: 25, unitWeight: 17.5, waterTableDepth: 1.5 },
|
|
51
|
+
{ depth: 10.0, sptN: 22, finesContent: 5, unitWeight: 19, waterTableDepth: 1.5 },
|
|
52
|
+
];
|
|
53
|
+
if (!flags.json) {
|
|
54
|
+
warn('No SPT profile provided — using demo data. Use --spt-profile <file> for real analysis.');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (flags.dryRun) {
|
|
58
|
+
console.log(` [dry-run] Would calculate liquefaction (${opts.method}):`);
|
|
59
|
+
console.log(` Mw=${opts.magnitude}, PGA=${opts.pga}g, ${layers.length} layer(s)`);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const result = calculateLiquefaction({
|
|
63
|
+
layers,
|
|
64
|
+
earthquakeMagnitude: opts.magnitude,
|
|
65
|
+
pga: opts.pga,
|
|
66
|
+
method: opts.method,
|
|
67
|
+
});
|
|
68
|
+
if (flags.json) {
|
|
69
|
+
renderJSON(result);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (flags.quiet) {
|
|
73
|
+
const severe = result.layers.filter(l => l.potential === 'SEVERE' || l.potential === 'HIGH').length;
|
|
74
|
+
console.log(`${severe}/${result.layers.length}`);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
heading(`Liquefaction Analysis — ${result.method === 'boulanger-idriss-2014' ? 'Boulanger & Idriss (2014)' : 'NCEER Simplified'}`);
|
|
78
|
+
keyValue('Earthquake magnitude (Mw)', opts.magnitude);
|
|
79
|
+
keyValue('Peak ground acceleration', `${opts.pga}g`);
|
|
80
|
+
renderTable(['Depth (m)', 'N₁₆₀', '(N₁)₆₀cs', 'CSR', 'CRR', 'FS', 'Potential'], result.layers.map((l) => [
|
|
81
|
+
l.depth, l.N160, l.N160cs, l.CSR, l.CRR, l.factorOfSafety, l.potential,
|
|
82
|
+
]));
|
|
83
|
+
keyValue('Estimated settlement', `${result.estimatedSettlement} mm`);
|
|
84
|
+
renderSteps(result.steps, flags.verbose);
|
|
85
|
+
if (flags.output) {
|
|
86
|
+
writeFileSync(flags.output, JSON.stringify(result, null, 2));
|
|
87
|
+
success(`Results saved to ${flags.output}`);
|
|
88
|
+
}
|
|
89
|
+
console.log('');
|
|
90
|
+
});
|
|
91
|
+
addGlobalFlags(cmd);
|
|
92
|
+
program.addCommand(cmd);
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=liquefaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"liquefaction.js","sourceRoot":"","sources":["../../src/commands/liquefaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pile.d.ts","sourceRoot":"","sources":["../../src/commands/pile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuF1D"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { calculatePileCapacity } from '@geotechcli/core';
|
|
4
|
+
import { heading, keyValue, renderJSON, renderTable, renderSteps, success } from '../ui/terminal.js';
|
|
5
|
+
import { addGlobalFlags, getGlobalFlags } from '../util/flags.js';
|
|
6
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
7
|
+
export function registerPileCommand(program) {
|
|
8
|
+
const cmd = new Command('pile')
|
|
9
|
+
.description('Pile capacity analysis — α-method, β-method, SPT-based (Meyerhof 1976)')
|
|
10
|
+
.requiredOption('--diameter <m>', 'Pile diameter (m)', parseFloat)
|
|
11
|
+
.requiredOption('--length <m>', 'Embedded pile length (m)', parseFloat)
|
|
12
|
+
.option('--type <type>', 'Pile type: driven, bored, cfa', 'driven')
|
|
13
|
+
.option('--shape <shape>', 'Pile shape: circular, square, h-section', 'circular')
|
|
14
|
+
.option('--method <method>', 'Method: alpha, beta, spt-meyerhof, auto', 'auto')
|
|
15
|
+
.option('--fs <n>', 'Factor of safety', parseFloat, 2.5)
|
|
16
|
+
.option('--gwt <m>', 'Water table depth (m)', parseFloat, 999)
|
|
17
|
+
.option('--layers <file>', 'JSON file with soil layers')
|
|
18
|
+
.option('--su <kPa>', 'Undrained shear strength for single-layer analysis', parseFloat)
|
|
19
|
+
.option('--phi <deg>', 'Friction angle for single-layer analysis', parseFloat)
|
|
20
|
+
.option('--gamma <kN/m3>', 'Unit weight', parseFloat, 18)
|
|
21
|
+
.option('--spt <N>', 'SPT N-value for single-layer analysis', parseFloat)
|
|
22
|
+
.action(async (opts) => {
|
|
23
|
+
const flags = getGlobalFlags(opts);
|
|
24
|
+
let layers;
|
|
25
|
+
if (opts.layers) {
|
|
26
|
+
layers = JSON.parse(readFileSync(opts.layers, 'utf-8'));
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
const soilType = opts.su ? 'clay' : opts.phi ? 'sand' : opts.spt ? 'sand' : 'clay';
|
|
30
|
+
layers = [{
|
|
31
|
+
thickness: opts.length,
|
|
32
|
+
soilType,
|
|
33
|
+
undrained_shear_strength: opts.su,
|
|
34
|
+
friction_angle: opts.phi,
|
|
35
|
+
unit_weight: opts.gamma,
|
|
36
|
+
spt_n: opts.spt,
|
|
37
|
+
}];
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
// --dry-run
|
|
41
|
+
if (flags.dryRun) {
|
|
42
|
+
console.log(` [dry-run] Would calculate pile capacity (${opts.method}):`);
|
|
43
|
+
console.log(` D=${opts.diameter}m, L=${opts.length}m, type=${opts.type}, ${layers.length} layer(s)`);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const result = calculatePileCapacity({
|
|
47
|
+
pileDiameter: opts.diameter,
|
|
48
|
+
pileLength: opts.length,
|
|
49
|
+
pileType: opts.type,
|
|
50
|
+
pileShape: opts.shape,
|
|
51
|
+
layers,
|
|
52
|
+
waterTableDepth: opts.gwt,
|
|
53
|
+
factorOfSafety: opts.fs,
|
|
54
|
+
method: opts.method,
|
|
55
|
+
});
|
|
56
|
+
if (flags.json) {
|
|
57
|
+
renderJSON(result);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (flags.quiet) {
|
|
61
|
+
console.log(`${result.allowableCapacity}`);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
heading('Pile Capacity Analysis');
|
|
65
|
+
keyValue('Method', result.method);
|
|
66
|
+
keyValue('Pile', `${result.pileType} ${opts.shape}, D=${result.pileDiameter}m, L=${result.pileLength}m`);
|
|
67
|
+
keyValue('Shaft resistance Qs', `${result.shaftResistance} kN`);
|
|
68
|
+
keyValue('Base resistance Qb', `${result.baseResistance} kN`);
|
|
69
|
+
keyValue('Ultimate capacity Qu', `${result.ultimateCapacity} kN`);
|
|
70
|
+
keyValue('Allowable capacity Qa', `${result.allowableCapacity} kN (FS=${result.factorOfSafety})`);
|
|
71
|
+
if (result.shaftFrictionPerLayer.length > 1) {
|
|
72
|
+
renderTable(['Depth (m)', 'Thick (m)', 'Soil', 'fs (kPa)', 'Qs (kN)'], result.shaftFrictionPerLayer.map((l) => [l.depth.toFixed(1), l.thickness.toFixed(1), l.soilType, l.unitShaftFriction, l.shaftResistance]));
|
|
73
|
+
}
|
|
74
|
+
renderSteps(result.steps, flags.verbose);
|
|
75
|
+
if (flags.output) {
|
|
76
|
+
writeFileSync(flags.output, JSON.stringify(result, null, 2));
|
|
77
|
+
success(`Results saved to ${flags.output}`);
|
|
78
|
+
}
|
|
79
|
+
console.log('');
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
console.log(chalk.red(` ✗ ${err instanceof Error ? err.message : String(err)}`));
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
addGlobalFlags(cmd);
|
|
86
|
+
program.addCommand(cmd);
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=pile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pile.js","sourceRoot":"","sources":["../../src/commands/pile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retaining.d.ts","sourceRoot":"","sources":["../../src/commands/retaining.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsE/D"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { calculateLateralEarthPressure } from '@geotechcli/core';
|
|
4
|
+
import { heading, keyValue, renderJSON, renderTable, renderSteps, success } from '../ui/terminal.js';
|
|
5
|
+
import { addGlobalFlags, getGlobalFlags } from '../util/flags.js';
|
|
6
|
+
import { writeFileSync } from 'node:fs';
|
|
7
|
+
export function registerRetainingCommand(program) {
|
|
8
|
+
const cmd = new Command('retaining')
|
|
9
|
+
.description('Lateral earth pressure — Rankine / Coulomb methods')
|
|
10
|
+
.requiredOption('--height <m>', 'Wall height (m)', parseFloat)
|
|
11
|
+
.requiredOption('--phi <deg>', 'Soil friction angle (degrees)', parseFloat)
|
|
12
|
+
.option('--cohesion <kPa>', 'Soil cohesion (kPa)', parseFloat, 0)
|
|
13
|
+
.option('--gamma <kN/m3>', 'Soil unit weight (kN/m³)', parseFloat, 18)
|
|
14
|
+
.option('--method <m>', 'Method: rankine, coulomb', 'rankine')
|
|
15
|
+
.option('--state <s>', 'Pressure state: active, passive, at_rest', 'active')
|
|
16
|
+
.option('--delta <deg>', 'Wall friction angle δ (degrees) — Coulomb', parseFloat, 0)
|
|
17
|
+
.option('--beta <deg>', 'Backfill slope angle (degrees)', parseFloat, 0)
|
|
18
|
+
.option('--gwt <m>', 'Water table depth (m)', parseFloat, 999)
|
|
19
|
+
.option('--surcharge <kPa>', 'Surcharge on backfill (kPa)', parseFloat, 0)
|
|
20
|
+
.action(async (opts) => {
|
|
21
|
+
const flags = getGlobalFlags(opts);
|
|
22
|
+
try {
|
|
23
|
+
if (flags.dryRun) {
|
|
24
|
+
console.log(` [dry-run] Would calculate ${opts.method} ${opts.state} earth pressure:`);
|
|
25
|
+
console.log(` H=${opts.height}m, φ=${opts.phi}°, c=${opts.cohesion}kPa, δ=${opts.delta}°`);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const result = calculateLateralEarthPressure({
|
|
29
|
+
wallHeight: opts.height,
|
|
30
|
+
soilLayers: [{ thickness: opts.height * 2, unitWeight: opts.gamma, cohesion: opts.cohesion, frictionAngle: opts.phi }],
|
|
31
|
+
method: opts.method,
|
|
32
|
+
pressureState: opts.state,
|
|
33
|
+
wallFrictionAngle: opts.delta,
|
|
34
|
+
backfillAngle: opts.beta,
|
|
35
|
+
wallInclination: 0,
|
|
36
|
+
waterTableDepth: opts.gwt,
|
|
37
|
+
surcharge: opts.surcharge,
|
|
38
|
+
});
|
|
39
|
+
if (flags.json) {
|
|
40
|
+
renderJSON(result);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (flags.quiet) {
|
|
44
|
+
console.log(`${result.coefficient}`);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
heading(`Lateral Earth Pressure (${result.method} — ${result.pressureState})`);
|
|
48
|
+
keyValue('Coefficient K', `${result.coefficient}`);
|
|
49
|
+
keyValue('Total force', `${result.totalForce} kN/m`);
|
|
50
|
+
keyValue('Point of application', `${result.pointOfApplication} m from base`);
|
|
51
|
+
keyValue('Overturning moment', `${result.overturningMoment} kN·m/m`);
|
|
52
|
+
if (flags.verbose) {
|
|
53
|
+
renderTable(['Depth (m)', 'σ_h (kPa)', 'u (kPa)', 'Total (kPa)'], result.pressureDistribution
|
|
54
|
+
.filter((_, i) => i % 2 === 0)
|
|
55
|
+
.map((p) => [p.depth, p.pressure, p.waterPressure, p.totalPressure]));
|
|
56
|
+
}
|
|
57
|
+
renderSteps(result.steps, flags.verbose);
|
|
58
|
+
if (flags.output) {
|
|
59
|
+
writeFileSync(flags.output, JSON.stringify(result, null, 2));
|
|
60
|
+
success(`Results saved to ${flags.output}`);
|
|
61
|
+
}
|
|
62
|
+
console.log('');
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
console.log(chalk.red(` ✗ ${err instanceof Error ? err.message : String(err)}`));
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
addGlobalFlags(cmd);
|
|
69
|
+
program.addCommand(cmd);
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=retaining.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retaining.js","sourceRoot":"","sources":["../../src/commands/retaining.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slope.d.ts","sourceRoot":"","sources":["../../src/commands/slope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4E3D"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { calculateSlopeStability } from '@geotechcli/core';
|
|
4
|
+
import { heading, keyValue, renderJSON, renderSteps, success } from '../ui/terminal.js';
|
|
5
|
+
import { addGlobalFlags, getGlobalFlags } from '../util/flags.js';
|
|
6
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
7
|
+
export function registerSlopeCommand(program) {
|
|
8
|
+
const cmd = new Command('slope')
|
|
9
|
+
.description('Slope stability — Bishop Simplified method')
|
|
10
|
+
.requiredOption('--height <m>', 'Slope height (m)', parseFloat)
|
|
11
|
+
.requiredOption('--angle <deg>', 'Slope angle from horizontal (degrees)', parseFloat)
|
|
12
|
+
.option('--cohesion <kPa>', 'Soil cohesion c\' (kPa)', parseFloat, 10)
|
|
13
|
+
.option('--phi <deg>', 'Friction angle φ\' (degrees)', parseFloat, 25)
|
|
14
|
+
.option('--gamma <kN/m3>', 'Unit weight (kN/m³)', parseFloat, 18)
|
|
15
|
+
.option('--gwt <m>', 'Water table depth from crest (m)', parseFloat, 999)
|
|
16
|
+
.option('--kh <n>', 'Horizontal seismic coefficient', parseFloat, 0)
|
|
17
|
+
.option('--surcharge <kPa>', 'Surcharge at crest (kPa)', parseFloat, 0)
|
|
18
|
+
.option('--slices <n>', 'Number of slices', parseInt, 10)
|
|
19
|
+
.option('--layers <file>', 'JSON file with soil layers')
|
|
20
|
+
.action(async (opts) => {
|
|
21
|
+
const flags = getGlobalFlags(opts);
|
|
22
|
+
let soilLayers;
|
|
23
|
+
if (opts.layers) {
|
|
24
|
+
soilLayers = JSON.parse(readFileSync(opts.layers, 'utf-8'));
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
soilLayers = [{
|
|
28
|
+
thickness: opts.height * 2,
|
|
29
|
+
unitWeight: opts.gamma,
|
|
30
|
+
cohesion: opts.cohesion,
|
|
31
|
+
frictionAngle: opts.phi,
|
|
32
|
+
}];
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
if (flags.dryRun) {
|
|
36
|
+
console.log(` [dry-run] Would calculate slope stability (Bishop Simplified):`);
|
|
37
|
+
console.log(` H=${opts.height}m, angle=${opts.angle}°, ${soilLayers.length} layer(s), kh=${opts.kh}`);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const result = calculateSlopeStability({
|
|
41
|
+
slopeHeight: opts.height,
|
|
42
|
+
slopeAngle: opts.angle,
|
|
43
|
+
soilLayers,
|
|
44
|
+
waterTableDepth: opts.gwt,
|
|
45
|
+
surcharge: opts.surcharge,
|
|
46
|
+
seismicCoefficient: opts.kh,
|
|
47
|
+
numberOfSlices: opts.slices,
|
|
48
|
+
method: 'bishop',
|
|
49
|
+
});
|
|
50
|
+
if (flags.json) {
|
|
51
|
+
renderJSON(result);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (flags.quiet) {
|
|
55
|
+
console.log(`${result.factorOfSafety}`);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
heading('Slope Stability Analysis (Bishop Simplified)');
|
|
59
|
+
keyValue('Slope', `H=${opts.height}m, angle=${opts.angle}°`);
|
|
60
|
+
keyValue('Factor of Safety', `${result.factorOfSafety}`);
|
|
61
|
+
const color = result.stabilityClass === 'STABLE' ? chalk.green
|
|
62
|
+
: result.stabilityClass === 'MARGINAL' ? chalk.yellow
|
|
63
|
+
: chalk.red;
|
|
64
|
+
keyValue('Classification', color(result.stabilityClass));
|
|
65
|
+
keyValue('Critical circle', `R=${result.criticalCircle.radius}m at (${result.criticalCircle.centerX}, ${result.criticalCircle.centerY})`);
|
|
66
|
+
renderSteps(result.steps, flags.verbose);
|
|
67
|
+
if (flags.output) {
|
|
68
|
+
writeFileSync(flags.output, JSON.stringify(result, null, 2));
|
|
69
|
+
success(`Results saved to ${flags.output}`);
|
|
70
|
+
}
|
|
71
|
+
console.log('');
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
console.log(chalk.red(` ✗ ${err instanceof Error ? err.message : String(err)}`));
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
addGlobalFlags(cmd);
|
|
78
|
+
program.addCommand(cmd);
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=slope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slope.js","sourceRoot":"","sources":["../../src/commands/slope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmF5D"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { loadConfig, buildLLMConfig, generateText, GEOTECHCLI_VERSION, DEFAULT_LLM_MODEL, DEFAULT_LLM_VISION_MODEL, } from '@geotechcli/core';
|
|
2
|
+
import { heading, keyValue, warn, renderJSON } from '../ui/terminal.js';
|
|
3
|
+
import ora from 'ora';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
export function registerStatusCommand(program) {
|
|
6
|
+
program
|
|
7
|
+
.command('status')
|
|
8
|
+
.description('Check system status, LLM connectivity, and auth tier')
|
|
9
|
+
.option('--json', 'Output raw JSON')
|
|
10
|
+
.action(async (opts) => {
|
|
11
|
+
const config = loadConfig();
|
|
12
|
+
const llmConfig = buildLLMConfig();
|
|
13
|
+
const usesHostedBeta = llmConfig.provider === 'hosted-beta';
|
|
14
|
+
const status = {
|
|
15
|
+
version: GEOTECHCLI_VERSION,
|
|
16
|
+
provider: config.llm.provider,
|
|
17
|
+
model: config.llm.model || DEFAULT_LLM_MODEL,
|
|
18
|
+
visionModel: config.llm.vision_model || DEFAULT_LLM_VISION_MODEL,
|
|
19
|
+
tier: config.auth.tier,
|
|
20
|
+
apiKeySet: Boolean(llmConfig.apiKey),
|
|
21
|
+
requiresUserApiKey: !usesHostedBeta,
|
|
22
|
+
connectivity: 'unknown',
|
|
23
|
+
latencyMs: 0,
|
|
24
|
+
};
|
|
25
|
+
if (opts.json && !usesHostedBeta && !llmConfig.apiKey) {
|
|
26
|
+
status.connectivity = 'no_api_key';
|
|
27
|
+
renderJSON(status);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (!opts.json) {
|
|
31
|
+
heading('geotechCLI Status');
|
|
32
|
+
keyValue('Version', status.version);
|
|
33
|
+
keyValue('LLM provider', config.llm.provider);
|
|
34
|
+
keyValue('Model', status.model);
|
|
35
|
+
keyValue('Vision model', status.visionModel);
|
|
36
|
+
keyValue('Tier', config.auth.tier);
|
|
37
|
+
keyValue('API key', usesHostedBeta
|
|
38
|
+
? chalk.gray('not required for hosted beta')
|
|
39
|
+
: status.apiKeySet
|
|
40
|
+
? chalk.green('set')
|
|
41
|
+
: chalk.yellow('not set'));
|
|
42
|
+
}
|
|
43
|
+
if (usesHostedBeta || llmConfig.apiKey) {
|
|
44
|
+
const spinner = opts.json ? null : ora({ text: 'Testing LLM connectivity...', indent: 2 }).start();
|
|
45
|
+
try {
|
|
46
|
+
const response = await generateText('Reply with exactly: OK', llmConfig, { maxTokens: 10, temperature: 0 });
|
|
47
|
+
status.connectivity = 'online';
|
|
48
|
+
status.latencyMs = response.latencyMs;
|
|
49
|
+
if (spinner) {
|
|
50
|
+
spinner.succeed(`LLM online — ${response.latencyMs}ms latency (${response.model})`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
55
|
+
status.connectivity = /rate limit/i.test(message) ? 'rate_limited' : 'error';
|
|
56
|
+
if (spinner) {
|
|
57
|
+
spinner.fail(`LLM unreachable: ${message.slice(0, 120)}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
if (!opts.json) {
|
|
63
|
+
warn('No provider API key configured. Switch to hosted beta or set your own provider key.');
|
|
64
|
+
warn('Hosted beta default: geotech config set llm.provider hosted-beta');
|
|
65
|
+
warn('Deterministic calculations work without an API key.');
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (opts.json) {
|
|
69
|
+
renderJSON(status);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
console.log('');
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../src/commands/tunnel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiJ7D"}
|