@geotechcli/core 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/geo/index.d.ts +2 -1
  2. package/dist/geo/index.d.ts.map +1 -1
  3. package/dist/geo/index.js +1 -0
  4. package/dist/geo/index.js.map +1 -1
  5. package/dist/geo/seepage.d.ts +62 -0
  6. package/dist/geo/seepage.d.ts.map +1 -0
  7. package/dist/geo/seepage.js +130 -0
  8. package/dist/geo/seepage.js.map +1 -0
  9. package/dist/index.d.ts +2 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +3 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/llm/providers/hosted-beta.d.ts.map +1 -1
  14. package/dist/llm/providers/hosted-beta.js +5 -2
  15. package/dist/llm/providers/hosted-beta.js.map +1 -1
  16. package/dist/llm/providers/zhipu.d.ts.map +1 -1
  17. package/dist/llm/providers/zhipu.js +3 -1
  18. package/dist/llm/providers/zhipu.js.map +1 -1
  19. package/dist/llm/util.d.ts +10 -0
  20. package/dist/llm/util.d.ts.map +1 -0
  21. package/dist/llm/util.js +54 -0
  22. package/dist/llm/util.js.map +1 -0
  23. package/dist/meta/metadata.json +1 -1
  24. package/dist/report/docx.d.ts +7 -0
  25. package/dist/report/docx.d.ts.map +1 -0
  26. package/dist/report/docx.js +173 -0
  27. package/dist/report/docx.js.map +1 -0
  28. package/dist/report/index.d.ts +2 -0
  29. package/dist/report/index.d.ts.map +1 -1
  30. package/dist/report/index.js +2 -0
  31. package/dist/report/index.js.map +1 -1
  32. package/dist/report/pdf.d.ts +7 -0
  33. package/dist/report/pdf.d.ts.map +1 -0
  34. package/dist/report/pdf.js +190 -0
  35. package/dist/report/pdf.js.map +1 -0
  36. package/dist/vision/index.d.ts.map +1 -1
  37. package/dist/vision/index.js +62 -12
  38. package/dist/vision/index.js.map +1 -1
  39. package/package.json +4 -1
@@ -1,9 +1,10 @@
1
1
  export { calculateBearingCapacity, type BearingCapacityResult, type BearingCapacityInput } from './bearing-capacity.js';
2
2
  export { classifyUSCS, classifyRMR89, classifyQSystem, type USCSResult, type RMR89Result, type QSystemResult } from './classification.js';
3
3
  export { calculateLiquefaction, type LiquefactionResult } from './liquefaction.js';
4
- export { calculateConsolidation, calculateSchmertmann, calculatePeckSettlement, type ConsolidationResult, type SchmertmannResult, type PeckSettlementResult, } from './settlement.js';
4
+ export { calculateConsolidation, calculateSchmertmann, calculatePeckSettlement, type ConsolidationInput, type ConsolidationResult, type SchmertmannInput, type SchmertmannResult, type PeckSettlementInput, type PeckSettlementResult, } from './settlement.js';
5
5
  export { predictTBMPerformance, selectTBMType, predictCutterWear } from './tunnel/index.js';
6
6
  export { calculatePileCapacity, type PileCapacityResult, type PileCapacityInput } from './pile-capacity.js';
7
7
  export { calculateSlopeStability, type SlopeStabilityResult, type SlopeStabilityInput } from './slope-stability.js';
8
8
  export { calculateLateralEarthPressure, type LateralEarthPressureResult, type LateralEarthPressureInput } from './lateral-earth-pressure.js';
9
+ export { calculateDupuitSeepage, calculateFlowNetSeepage, type DupuitSeepageInput, type FlowNetSeepageInput, type SeepageResult, } from './seepage.js';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/geo/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,KAAK,qBAAqB,EAAE,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACxH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC1I,OAAO,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5G,OAAO,EAAE,uBAAuB,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACpH,OAAO,EAAE,6BAA6B,EAAE,KAAK,0BAA0B,EAAE,KAAK,yBAAyB,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/geo/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,KAAK,qBAAqB,EAAE,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACxH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC1I,OAAO,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5G,OAAO,EAAE,uBAAuB,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACpH,OAAO,EAAE,6BAA6B,EAAE,KAAK,0BAA0B,EAAE,KAAK,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAC7I,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC"}
package/dist/geo/index.js CHANGED
@@ -6,4 +6,5 @@ export { predictTBMPerformance, selectTBMType, predictCutterWear } from './tunne
6
6
  export { calculatePileCapacity } from './pile-capacity.js';
7
7
  export { calculateSlopeStability } from './slope-stability.js';
8
8
  export { calculateLateralEarthPressure } from './lateral-earth-pressure.js';
9
+ export { calculateDupuitSeepage, calculateFlowNetSeepage, } from './seepage.js';
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/geo/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAyD,MAAM,uBAAuB,CAAC;AACxH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAyD,MAAM,qBAAqB,CAAC;AAC1I,OAAO,EAAE,qBAAqB,EAA2B,MAAM,mBAAmB,CAAC;AACnF,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,GAIxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAmD,MAAM,oBAAoB,CAAC;AAC5G,OAAO,EAAE,uBAAuB,EAAuD,MAAM,sBAAsB,CAAC;AACpH,OAAO,EAAE,6BAA6B,EAAmE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/geo/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAyD,MAAM,uBAAuB,CAAC;AACxH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAyD,MAAM,qBAAqB,CAAC;AAC1I,OAAO,EAAE,qBAAqB,EAA2B,MAAM,mBAAmB,CAAC;AACnF,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,GAOxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAmD,MAAM,oBAAoB,CAAC;AAC5G,OAAO,EAAE,uBAAuB,EAAuD,MAAM,sBAAsB,CAAC;AACpH,OAAO,EAAE,6BAA6B,EAAmE,MAAM,6BAA6B,CAAC;AAC7I,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GAIxB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { z } from 'zod';
2
+ export declare const DupuitSeepageInputSchema: z.ZodObject<{
3
+ hydraulicConductivity: z.ZodNumber;
4
+ upstreamHead: z.ZodNumber;
5
+ downstreamHead: z.ZodNumber;
6
+ seepageLength: z.ZodNumber;
7
+ specificGravity: z.ZodDefault<z.ZodNumber>;
8
+ voidRatio: z.ZodDefault<z.ZodNumber>;
9
+ }, "strip", z.ZodTypeAny, {
10
+ voidRatio: number;
11
+ hydraulicConductivity: number;
12
+ upstreamHead: number;
13
+ downstreamHead: number;
14
+ seepageLength: number;
15
+ specificGravity: number;
16
+ }, {
17
+ hydraulicConductivity: number;
18
+ upstreamHead: number;
19
+ downstreamHead: number;
20
+ seepageLength: number;
21
+ voidRatio?: number | undefined;
22
+ specificGravity?: number | undefined;
23
+ }>;
24
+ export type DupuitSeepageInput = z.infer<typeof DupuitSeepageInputSchema>;
25
+ export interface SeepageResult {
26
+ seepageFlow: number;
27
+ exitGradient: number;
28
+ criticalGradient: number;
29
+ pipingFOS: number;
30
+ heaveRisk: 'LOW' | 'MODERATE' | 'HIGH' | 'SEVERE';
31
+ heaveRiskDescription: string;
32
+ steps: string[];
33
+ }
34
+ export declare function calculateDupuitSeepage(input: DupuitSeepageInput): SeepageResult;
35
+ export declare const FlowNetSeepageInputSchema: z.ZodObject<{
36
+ hydraulicConductivity: z.ZodNumber;
37
+ totalHead: z.ZodNumber;
38
+ flowChannels: z.ZodNumber;
39
+ equipotentialDrops: z.ZodNumber;
40
+ specificGravity: z.ZodDefault<z.ZodNumber>;
41
+ voidRatio: z.ZodDefault<z.ZodNumber>;
42
+ criticalFlowPath: z.ZodOptional<z.ZodNumber>;
43
+ }, "strip", z.ZodTypeAny, {
44
+ voidRatio: number;
45
+ hydraulicConductivity: number;
46
+ specificGravity: number;
47
+ totalHead: number;
48
+ flowChannels: number;
49
+ equipotentialDrops: number;
50
+ criticalFlowPath?: number | undefined;
51
+ }, {
52
+ hydraulicConductivity: number;
53
+ totalHead: number;
54
+ flowChannels: number;
55
+ equipotentialDrops: number;
56
+ voidRatio?: number | undefined;
57
+ specificGravity?: number | undefined;
58
+ criticalFlowPath?: number | undefined;
59
+ }>;
60
+ export type FlowNetSeepageInput = z.infer<typeof FlowNetSeepageInputSchema>;
61
+ export declare function calculateFlowNetSeepage(input: FlowNetSeepageInput): SeepageResult;
62
+ //# sourceMappingURL=seepage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seepage.d.ts","sourceRoot":"","sources":["../../src/geo/seepage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;EAOnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;IAClD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,CA0D/E;AAMD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;EAQpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,mBAAmB,GAAG,aAAa,CAmDjF"}
@@ -0,0 +1,130 @@
1
+ import { z } from 'zod';
2
+ // ---------------------------------------------------------------------------
3
+ // Seepage Analysis Engine
4
+ // Methods: Dupuit-Forchheimer (unconfined) + Flow Net approximation
5
+ // Includes piping/heave safety checks per Terzaghi critical gradient
6
+ // ---------------------------------------------------------------------------
7
+ // ---------------------------------------------------------------------------
8
+ // 1. Dupuit-Forchheimer — Unconfined 2D Seepage
9
+ // ---------------------------------------------------------------------------
10
+ export const DupuitSeepageInputSchema = z.object({
11
+ hydraulicConductivity: z.number().positive().describe('Hydraulic conductivity k (m/s)'),
12
+ upstreamHead: z.number().nonnegative().describe('Upstream head h₁ (m)'),
13
+ downstreamHead: z.number().nonnegative().describe('Downstream head h₂ (m)'),
14
+ seepageLength: z.number().positive().describe('Seepage path length L (m)'),
15
+ specificGravity: z.number().positive().default(2.65).describe('Specific gravity Gs'),
16
+ voidRatio: z.number().positive().default(0.7).describe('Void ratio e₀'),
17
+ });
18
+ export function calculateDupuitSeepage(input) {
19
+ const v = DupuitSeepageInputSchema.parse(input);
20
+ const steps = [];
21
+ const { hydraulicConductivity: k, upstreamHead: h1, downstreamHead: h2, seepageLength: L, specificGravity: Gs, voidRatio: e } = v;
22
+ // Head difference
23
+ const H = h1 - h2;
24
+ steps.push(`Head difference: H = h₁ - h₂ = ${h1} - ${h2} = ${H.toFixed(2)} m`);
25
+ // Dupuit-Forchheimer flow: Q = k × (h₁² - h₂²) / (2L)
26
+ const Q = k * (h1 ** 2 - h2 ** 2) / (2 * L);
27
+ steps.push(`Seepage flow (Dupuit): Q = k(h₁² - h₂²) / (2L) = ${Q.toExponential(3)} m³/s per m`);
28
+ // Average hydraulic gradient
29
+ const iAvg = H / L;
30
+ steps.push(`Average hydraulic gradient: i_avg = H/L = ${iAvg.toFixed(4)}`);
31
+ // Exit gradient (at downstream face, assuming parabolic phreatic surface)
32
+ const iExit = H / (L * (h2 > 0 ? 1 : 0.5));
33
+ const iExitUsed = h2 > 0 ? iAvg : H / (0.5 * L);
34
+ steps.push(`Exit gradient: i_exit ≈ ${iExitUsed.toFixed(4)}`);
35
+ // Terzaghi critical gradient: i_cr = (Gs - 1) / (1 + e)
36
+ const iCritical = (Gs - 1) / (1 + e);
37
+ steps.push(`Critical gradient (Terzaghi): i_cr = (Gs - 1) / (1 + e) = (${Gs} - 1) / (1 + ${e}) = ${iCritical.toFixed(3)}`);
38
+ // Factor of safety against piping
39
+ const FOS = iExitUsed > 0 ? iCritical / iExitUsed : Infinity;
40
+ steps.push(`Factor of safety against piping: FS = i_cr / i_exit = ${FOS === Infinity ? '∞' : FOS.toFixed(2)}`);
41
+ // Risk classification
42
+ let heaveRisk;
43
+ let heaveRiskDescription;
44
+ if (FOS >= 5) {
45
+ heaveRisk = 'LOW';
46
+ heaveRiskDescription = 'Piping risk is low. Standard drainage measures are adequate.';
47
+ }
48
+ else if (FOS >= 3) {
49
+ heaveRisk = 'MODERATE';
50
+ heaveRiskDescription = 'Moderate piping risk. Consider filter design and drainage improvements.';
51
+ }
52
+ else if (FOS >= 1.5) {
53
+ heaveRisk = 'HIGH';
54
+ heaveRiskDescription = 'High piping risk. Filter and cutoff design is strongly recommended.';
55
+ }
56
+ else {
57
+ heaveRisk = 'SEVERE';
58
+ heaveRiskDescription = 'SEVERE: Exit gradient approaches critical. Immediate remedial measures required.';
59
+ }
60
+ steps.push(`Heave/piping risk: ${heaveRisk} (FS = ${FOS === Infinity ? '∞' : FOS.toFixed(2)})`);
61
+ return {
62
+ seepageFlow: parseFloat(Q.toExponential(4)),
63
+ exitGradient: parseFloat(iExitUsed.toFixed(4)),
64
+ criticalGradient: parseFloat(iCritical.toFixed(4)),
65
+ pipingFOS: FOS === Infinity ? 999 : parseFloat(FOS.toFixed(2)),
66
+ heaveRisk,
67
+ heaveRiskDescription,
68
+ steps,
69
+ };
70
+ }
71
+ // ---------------------------------------------------------------------------
72
+ // 2. Flow Net Method — Q = k × H × (Nf / Nd) per unit width
73
+ // ---------------------------------------------------------------------------
74
+ export const FlowNetSeepageInputSchema = z.object({
75
+ hydraulicConductivity: z.number().positive().describe('Hydraulic conductivity k (m/s)'),
76
+ totalHead: z.number().positive().describe('Total head loss H (m)'),
77
+ flowChannels: z.number().int().positive().describe('Number of flow channels Nf'),
78
+ equipotentialDrops: z.number().int().positive().describe('Number of equipotential drops Nd'),
79
+ specificGravity: z.number().positive().default(2.65),
80
+ voidRatio: z.number().positive().default(0.7),
81
+ criticalFlowPath: z.number().positive().optional().describe('Length of critical flow path for exit gradient (m)'),
82
+ });
83
+ export function calculateFlowNetSeepage(input) {
84
+ const v = FlowNetSeepageInputSchema.parse(input);
85
+ const steps = [];
86
+ const { hydraulicConductivity: k, totalHead: H, flowChannels: Nf, equipotentialDrops: Nd, specificGravity: Gs, voidRatio: e } = v;
87
+ // Flow net seepage: Q = k × H × (Nf / Nd)
88
+ const Q = k * H * (Nf / Nd);
89
+ steps.push(`Flow net seepage: Q = k × H × Nf/Nd = ${k} × ${H} × ${Nf}/${Nd} = ${Q.toExponential(3)} m³/s per m`);
90
+ // Exit gradient: Δh per last potential drop / last flow net square dimension
91
+ // For approximation: i_exit ≈ H / (Nd × last_square_size), use H/Nd as head per drop
92
+ const headPerDrop = H / Nd;
93
+ steps.push(`Head loss per equipotential drop: Δh = H/Nd = ${headPerDrop.toFixed(3)} m`);
94
+ // Exit gradient (approximate — last square assumed to have unit dimension 1m if not given)
95
+ const critPathLen = v.criticalFlowPath ?? 1.0;
96
+ const iExit = headPerDrop / critPathLen;
97
+ steps.push(`Exit gradient (approx): i_exit = Δh / critical_path = ${headPerDrop.toFixed(3)} / ${critPathLen} = ${iExit.toFixed(4)}`);
98
+ const iCritical = (Gs - 1) / (1 + e);
99
+ steps.push(`Critical gradient: i_cr = (Gs-1)/(1+e) = ${iCritical.toFixed(3)}`);
100
+ const FOS = iCritical / iExit;
101
+ steps.push(`Piping FS = i_cr / i_exit = ${FOS.toFixed(2)}`);
102
+ let heaveRisk;
103
+ let heaveRiskDescription;
104
+ if (FOS >= 5) {
105
+ heaveRisk = 'LOW';
106
+ heaveRiskDescription = 'Piping risk is low. Standard drainage measures are adequate.';
107
+ }
108
+ else if (FOS >= 3) {
109
+ heaveRisk = 'MODERATE';
110
+ heaveRiskDescription = 'Moderate piping risk. Consider filter design and drainage improvements.';
111
+ }
112
+ else if (FOS >= 1.5) {
113
+ heaveRisk = 'HIGH';
114
+ heaveRiskDescription = 'High piping risk. Filter and cutoff design is strongly recommended.';
115
+ }
116
+ else {
117
+ heaveRisk = 'SEVERE';
118
+ heaveRiskDescription = 'SEVERE: Exit gradient approaches critical. Immediate remedial measures required.';
119
+ }
120
+ return {
121
+ seepageFlow: parseFloat(Q.toExponential(4)),
122
+ exitGradient: parseFloat(iExit.toFixed(4)),
123
+ criticalGradient: parseFloat(iCritical.toFixed(4)),
124
+ pipingFOS: parseFloat(FOS.toFixed(2)),
125
+ heaveRisk,
126
+ heaveRiskDescription,
127
+ steps,
128
+ };
129
+ }
130
+ //# sourceMappingURL=seepage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seepage.js","sourceRoot":"","sources":["../../src/geo/seepage.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './llm/index.js';
2
+ export { sanitizeUpstreamError } from './llm/util.js';
2
3
  export * from './geo/index.js';
3
4
  export * from './config/index.js';
4
5
  export * from './meta/index.js';
@@ -10,7 +11,7 @@ export { runAgent, AgentConversation, type AgentStep, type AgentSession, type Ag
10
11
  export { runSwarm, type SwarmStep, type SwarmSession, type SwarmCallback, } from './agents/swarm.js';
11
12
  export { toolRegistry, type ToolDefinition, type ToolResult, } from './agents/tools.js';
12
13
  export { analyzeCoreBox, classifyRMRFromImage, classifySoilFromDescription, interpretBoreholeLog, queryGBRDocument, interpretSensorImage, type ParseSafety, type ParseStatus, type CoreBoxAnalysisResult, type HybridRMRResult, type SoilClassificationFromTextResult, type BoreholeInterpretation, type BoreholeLayer, type SensorInterpretation, } from './vision/index.js';
13
- export { generateReport, type GeneratedReport, type ReportSection } from './report/index.js';
14
+ export { generateReport, renderReportAsPdf, renderReportAsDocx, type GeneratedReport, type ReportSection } from './report/index.js';
14
15
  export { exportGeoJSON, exportBoreholeGeoJSON, exportDXF, exportBoreholeProfileDXF, exportCSV, exportJSON, type GeoJSONFeatureInput, type DXFEntity, } from './export/index.js';
15
16
  export { detectSoftware, generatePLAXISScript, generateFLACScript, generateRocscienceScript, type BridgeStatus, type ScriptTemplate, type SoftwareType, } from './bridge/index.js';
16
17
  export { InMemoryUsageStore, checkUsageAndAbuse, generateFingerprint, detectSuspiciousActivity, type UsageRecord, type UsageStore, type AbuseCheckResult, } from './llm/middleware/metering.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,7 @@
1
1
  // LLM provider layer
2
2
  export * from './llm/index.js';
3
+ // LLM error utilities
4
+ export { sanitizeUpstreamError } from './llm/util.js';
3
5
  // Geotechnical computation engines
4
6
  export * from './geo/index.js';
5
7
  // Configuration
@@ -18,7 +20,7 @@ export { runSwarm, } from './agents/swarm.js';
18
20
  export { toolRegistry, } from './agents/tools.js';
19
21
  export { analyzeCoreBox, classifyRMRFromImage, classifySoilFromDescription, interpretBoreholeLog, queryGBRDocument, interpretSensorImage, } from './vision/index.js';
20
22
  // Report generation
21
- export { generateReport } from './report/index.js';
23
+ export { generateReport, renderReportAsPdf, renderReportAsDocx } from './report/index.js';
22
24
  // Export formats
23
25
  export { exportGeoJSON, exportBoreholeGeoJSON, exportDXF, exportBoreholeProfileDXF, exportCSV, exportJSON, } from './export/index.js';
24
26
  // Software bridges
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,cAAc,gBAAgB,CAAC;AAE/B,mCAAmC;AACnC,cAAc,gBAAgB,CAAC;AAE/B,gBAAgB;AAChB,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAEhC,4BAA4B;AAC5B,cAAc,mBAAmB,CAAC;AAElC,qBAAqB;AACrB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAqD,MAAM,sBAAsB,CAAC;AAEzI,6BAA6B;AAC7B,OAAO,EACL,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EACpE,cAAc,EAAE,mBAAmB,EAAE,OAAO,EAAE,oBAAoB,EAClE,gBAAgB,EAAE,oBAAoB,EAAE,aAAa,EAAE,WAAW,EAClE,eAAe,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,sBAAsB,GAIxF,MAAM,oBAAoB,CAAC;AAE5B,uCAAuC;AACvC,OAAO,EAAE,iBAAiB,EAAiB,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EACL,QAAQ,EACR,iBAAiB,GAIlB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,QAAQ,GAIT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,YAAY,GAGb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,2BAA2B,EAC3B,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,GASrB,MAAM,mBAAmB,CAAC;AAE3B,oBAAoB;AACpB,OAAO,EAAE,cAAc,EAA4C,MAAM,mBAAmB,CAAC;AAE7F,iBAAiB;AACjB,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,SAAS,EACT,wBAAwB,EACxB,SAAS,EACT,UAAU,GAGX,MAAM,mBAAmB,CAAC;AAE3B,mBAAmB;AACnB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,GAIzB,MAAM,mBAAmB,CAAC;AAE3B,wBAAwB;AACxB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,GAIzB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE,qBAAqB;AACrB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,eAAe,GAEhB,MAAM,qBAAqB,CAAC;AAE7B,4CAA4C;AAC5C,OAAO,EACL,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAC3D,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,uBAAuB,EAClE,UAAU,EAAE,kBAAkB,EAAE,kBAAkB,EAClD,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,oBAAoB,EACnE,eAAe,EAAE,oBAAoB,EAAE,gBAAgB,GAExD,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,cAAc,gBAAgB,CAAC;AAE/B,sBAAsB;AACtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,mCAAmC;AACnC,cAAc,gBAAgB,CAAC;AAE/B,gBAAgB;AAChB,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAEhC,4BAA4B;AAC5B,cAAc,mBAAmB,CAAC;AAElC,qBAAqB;AACrB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAqD,MAAM,sBAAsB,CAAC;AAEzI,6BAA6B;AAC7B,OAAO,EACL,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EACpE,cAAc,EAAE,mBAAmB,EAAE,OAAO,EAAE,oBAAoB,EAClE,gBAAgB,EAAE,oBAAoB,EAAE,aAAa,EAAE,WAAW,EAClE,eAAe,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,sBAAsB,GAIxF,MAAM,oBAAoB,CAAC;AAE5B,uCAAuC;AACvC,OAAO,EAAE,iBAAiB,EAAiB,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EACL,QAAQ,EACR,iBAAiB,GAIlB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,QAAQ,GAIT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,YAAY,GAGb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,2BAA2B,EAC3B,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,GASrB,MAAM,mBAAmB,CAAC;AAE3B,oBAAoB;AACpB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,EAA4C,MAAM,mBAAmB,CAAC;AAEpI,iBAAiB;AACjB,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,SAAS,EACT,wBAAwB,EACxB,SAAS,EACT,UAAU,GAGX,MAAM,mBAAmB,CAAC;AAE3B,mBAAmB;AACnB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,GAIzB,MAAM,mBAAmB,CAAC;AAE3B,wBAAwB;AACxB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,GAIzB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE,qBAAqB;AACrB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,eAAe,GAEhB,MAAM,qBAAqB,CAAC;AAE7B,4CAA4C;AAC5C,OAAO,EACL,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAC3D,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,uBAAuB,EAClE,UAAU,EAAE,kBAAkB,EAAE,kBAAkB,EAClD,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,oBAAoB,EACnE,eAAe,EAAE,oBAAoB,EAAE,gBAAgB,GAExD,MAAM,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"hosted-beta.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/hosted-beta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EAEV,MAAM,aAAa,CAAC;AAmFrB,qBAAa,iBAAkB,YAAW,eAAe;IACvD,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAU;IACvC,QAAQ,CAAC,YAAY,SAAqB;IAC1C,QAAQ,CAAC,kBAAkB,SAA4B;IAEvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,CAAC,EAAE,MAAM;IAOtB,QAAQ,CACZ,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,kBAAkB,CAAC;CA8D/B"}
1
+ {"version":3,"file":"hosted-beta.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/hosted-beta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EAEV,MAAM,aAAa,CAAC;AAsFrB,qBAAa,iBAAkB,YAAW,eAAe;IACvD,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAU;IACvC,QAAQ,CAAC,YAAY,SAAqB;IAC1C,QAAQ,CAAC,kBAAkB,SAA4B;IAEvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,CAAC,EAAE,MAAM;IAOtB,QAAQ,CACZ,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,kBAAkB,CAAC;CA8D/B"}
@@ -1,4 +1,5 @@
1
1
  import { DEFAULT_LLM_MODEL, DEFAULT_LLM_VISION_MODEL, GEOTECHCLI_VERSION, } from '../../meta/index.js';
2
+ import { sanitizeUpstreamError } from '../util.js';
2
3
  function inferCallType(request) {
3
4
  const hasVisionInput = request.messages.some((message) => Array.isArray(message.content) &&
4
5
  message.content.some((part) => part.type === 'image_url'));
@@ -24,8 +25,10 @@ function readMessageContent(content) {
24
25
  .trim();
25
26
  }
26
27
  function formatHostedBetaError(status, data, fallback) {
27
- const message = data.error?.message?.trim() || fallback;
28
- const detail = data.error?.detail?.trim();
28
+ const rawMessage = data.error?.message?.trim() || fallback;
29
+ const message = sanitizeUpstreamError(rawMessage);
30
+ const rawDetail = data.error?.detail?.trim();
31
+ const detail = rawDetail ? sanitizeUpstreamError(rawDetail) : undefined;
29
32
  const remaining = typeof data.error?.remaining === 'number'
30
33
  ? ` Remaining today: ${data.error.remaining}.`
31
34
  : '';
@@ -1 +1 @@
1
- {"version":3,"file":"hosted-beta.js","sourceRoot":"","sources":["../../../src/llm/providers/hosted-beta.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hosted-beta.js","sourceRoot":"","sources":["../../../src/llm/providers/hosted-beta.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"zhipu.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/zhipu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACV,MAAM,aAAa,CAAC;AAuBrB,qBAAa,YAAa,YAAW,eAAe;IAClD,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IACjC,QAAQ,CAAC,YAAY,SAAqB;IAC1C,QAAQ,CAAC,kBAAkB,SAA4B;IAEvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,CAAC,EAAE,MAAM;IAItB,QAAQ,CACZ,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,kBAAkB,CAAC;CAqF/B"}
1
+ {"version":3,"file":"zhipu.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/zhipu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACV,MAAM,aAAa,CAAC;AAwBrB,qBAAa,YAAa,YAAW,eAAe;IAClD,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IACjC,QAAQ,CAAC,YAAY,SAAqB;IAC1C,QAAQ,CAAC,kBAAkB,SAA4B;IAEvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,CAAC,EAAE,MAAM;IAItB,QAAQ,CACZ,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,kBAAkB,CAAC;CAoF/B"}
@@ -1,4 +1,5 @@
1
1
  import { DEFAULT_LLM_MODEL, DEFAULT_LLM_VISION_MODEL, } from '../../meta/index.js';
2
+ import { sanitizeUpstreamError } from '../util.js';
2
3
  export class ZhipuAdapter {
3
4
  name = 'zhipu';
4
5
  defaultModel = DEFAULT_LLM_MODEL;
@@ -57,7 +58,8 @@ export class ZhipuAdapter {
57
58
  });
58
59
  if (!res.ok) {
59
60
  const errText = await res.text().catch(() => 'Unknown error');
60
- throw new Error(`Zhipu API error (${res.status}): ${errText}`);
61
+ const safeErr = sanitizeUpstreamError(errText);
62
+ throw new Error(`Zhipu API error (${res.status}): ${safeErr}`);
61
63
  }
62
64
  const data = (await res.json());
63
65
  const latencyMs = Date.now() - start;
@@ -1 +1 @@
1
- {"version":3,"file":"zhipu.js","sourceRoot":"","sources":["../../../src/llm/providers/zhipu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zhipu.js","sourceRoot":"","sources":["../../../src/llm/providers/zhipu.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Sanitize an upstream LLM provider error message so that only English text
3
+ * is ever shown to CLI users.
4
+ *
5
+ * 1. Direct map lookup for known Zhipu error strings.
6
+ * 2. CJK character detection → generic English replacement.
7
+ * 3. Otherwise return the original string unchanged.
8
+ */
9
+ export declare function sanitizeUpstreamError(raw: string | undefined | null): string;
10
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/llm/util.ts"],"names":[],"mappings":"AA4BA;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAuB5E"}
@@ -0,0 +1,54 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Upstream error sanitizer — ensures all error messages shown to CLI users
3
+ // are in English, regardless of what the upstream LLM provider returns.
4
+ // Zhipu/Z.AI API returns Chinese-language error strings that must be
5
+ // translated before surfacing to the user.
6
+ // ---------------------------------------------------------------------------
7
+ const UPSTREAM_ERROR_MAP = {
8
+ // Zhipu / Z.AI known error strings (Chinese → English)
9
+ '图片输入格式/解析错误': 'Image input format or parsing error. Use PNG or JPG (avoid raw PDFs).',
10
+ '请求参数错误': 'Invalid request parameters sent to the AI provider.',
11
+ '模型不存在': 'The requested AI model does not exist on the provider.',
12
+ '超出最大输入长度': 'Input exceeds the maximum token length. Try a shorter prompt or smaller image.',
13
+ '系统繁忙': 'The AI provider service is currently busy. Please try again shortly.',
14
+ '余额不足': 'The hosted beta AI account has insufficient credits. Contact support.',
15
+ '访问受限': 'Access to the AI provider is currently restricted.',
16
+ '内容过滤': 'The request was blocked by the AI provider content filter.',
17
+ '图片大小超限': 'Image size exceeds the provider limit. Resize the image and try again.',
18
+ '不支持的图片格式': 'Unsupported image format. Use PNG or JPG.',
19
+ '无效的API密钥': 'Invalid API key configured on the hosted beta server.',
20
+ };
21
+ /**
22
+ * CJK Unicode ranges: CJK Unified Ideographs, CJK Symbols, Fullwidth forms,
23
+ * Hiragana, Katakana, Hangul.
24
+ */
25
+ const CJK_PATTERN = /[\u4e00-\u9fff\u3000-\u303f\uff00-\uffef\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af]/;
26
+ /**
27
+ * Sanitize an upstream LLM provider error message so that only English text
28
+ * is ever shown to CLI users.
29
+ *
30
+ * 1. Direct map lookup for known Zhipu error strings.
31
+ * 2. CJK character detection → generic English replacement.
32
+ * 3. Otherwise return the original string unchanged.
33
+ */
34
+ export function sanitizeUpstreamError(raw) {
35
+ if (!raw)
36
+ return 'The AI provider returned an unspecified error.';
37
+ const trimmed = raw.trim();
38
+ // Direct known-error lookup (exact match)
39
+ if (UPSTREAM_ERROR_MAP[trimmed]) {
40
+ return UPSTREAM_ERROR_MAP[trimmed];
41
+ }
42
+ // Partial match — check if any known Chinese key is a substring
43
+ for (const [key, translation] of Object.entries(UPSTREAM_ERROR_MAP)) {
44
+ if (trimmed.includes(key)) {
45
+ return translation;
46
+ }
47
+ }
48
+ // Detect any CJK characters in the string
49
+ if (CJK_PATTERN.test(trimmed)) {
50
+ return 'The AI provider returned a non-English error. The image format or request may be unsupported. Try a PNG or JPG image file.';
51
+ }
52
+ return trimmed;
53
+ }
54
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/llm/util.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2EAA2E;AAC3E,wEAAwE;AACxE,qEAAqE;AACrE,2CAA2C;AAC3C,8EAA8E;AAE9E,MAAM,kBAAkB,GAA2B;IACjD,uDAAuD;IACvD,aAAa,EAAE,uEAAuE;IACtF,QAAQ,EAAE,qDAAqD;IAC/D,OAAO,EAAE,wDAAwD;IACjE,UAAU,EAAE,gFAAgF;IAC5F,MAAM,EAAE,sEAAsE;IAC9E,MAAM,EAAE,uEAAuE;IAC/E,MAAM,EAAE,oDAAoD;IAC5D,MAAM,EAAE,4DAA4D;IACpE,QAAQ,EAAE,wEAAwE;IAClF,UAAU,EAAE,2CAA2C;IACvD,UAAU,EAAE,uDAAuD;CACpE,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,GAAG,kFAAkF,CAAC;AAEvG;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAA8B;IAClE,IAAI,CAAC,GAAG;QAAE,OAAO,gDAAgD,CAAC;IAElE,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAE3B,0CAA0C;IAC1C,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,gEAAgE;IAChE,KAAK,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACpE,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,WAAW,CAAC;QACrB,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO,4HAA4H,CAAC;IACtI,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.2.0",
2
+ "version": "0.3.0",
3
3
  "defaults": {
4
4
  "provider": "hosted-beta",
5
5
  "model": "glm-5.1",
@@ -0,0 +1,7 @@
1
+ /**
2
+ * DOCX report renderer using the `docx` library (pure JS, Open XML).
3
+ * Converts a GeneratedReport into a professional Word document buffer.
4
+ */
5
+ import type { GeneratedReport } from './index.js';
6
+ export declare function renderReportAsDocx(report: GeneratedReport): Promise<Buffer>;
7
+ //# sourceMappingURL=docx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docx.d.ts","sourceRoot":"","sources":["../../src/report/docx.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAqClD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAkKjF"}
@@ -0,0 +1,173 @@
1
+ async function getDocx() {
2
+ try {
3
+ return await import('docx');
4
+ }
5
+ catch {
6
+ throw new Error('docx is required for DOCX export. Install it: npm install docx --workspace=@geotechcli/core');
7
+ }
8
+ }
9
+ /**
10
+ * Strip markdown syntax for plain text rendering.
11
+ */
12
+ function stripMd(text) {
13
+ return text
14
+ .replace(/\*\*(.+?)\*\*/g, '$1')
15
+ .replace(/\*(.+?)\*/g, '$1')
16
+ .replace(/`(.+?)`/g, '$1')
17
+ .replace(/\[([^\]]+)\]\([^)]+\)/g, '$1')
18
+ .trim();
19
+ }
20
+ function isTableSep(line) {
21
+ return /^\|[-: |]+\|$/.test(line.trim());
22
+ }
23
+ function isTableRow(line) {
24
+ return line.trim().startsWith('|') && !isTableSep(line);
25
+ }
26
+ function parseRow(line) {
27
+ return line.split('|').slice(1, -1).map(c => c.trim());
28
+ }
29
+ export async function renderReportAsDocx(report) {
30
+ const docx = await getDocx();
31
+ const { Document, Packer, Paragraph, TextRun, HeadingLevel, Table, TableRow, TableCell, WidthType, BorderStyle, AlignmentType, PageBreak, Header, Footer, } = docx;
32
+ const BRAND_COLOR = '00b8c8';
33
+ const DARK = '1a1a2e';
34
+ const allChildren = [];
35
+ // Title
36
+ allChildren.push(new Paragraph({
37
+ text: report.title,
38
+ heading: HeadingLevel.TITLE,
39
+ alignment: AlignmentType.CENTER,
40
+ spacing: { after: 300 },
41
+ run: { color: BRAND_COLOR },
42
+ }));
43
+ allChildren.push(new Paragraph({
44
+ children: [new TextRun({ text: `Generated by geotechCLI v0.3.0 · ${new Date().toISOString().split('T')[0]}`, color: '888899', size: 20 })],
45
+ alignment: AlignmentType.CENTER,
46
+ spacing: { after: 600 },
47
+ }));
48
+ // Sections
49
+ for (const section of report.sections) {
50
+ // Page break before each section (except first)
51
+ if (section !== report.sections[0]) {
52
+ allChildren.push(new Paragraph({ children: [new PageBreak()] }));
53
+ }
54
+ // Section heading
55
+ allChildren.push(new Paragraph({
56
+ text: section.title,
57
+ heading: HeadingLevel.HEADING_1,
58
+ spacing: { before: 200, after: 180 },
59
+ }));
60
+ // Parse content
61
+ const lines = section.content.split('\n');
62
+ let tableLines = [];
63
+ let inTable = false;
64
+ const flushTable = () => {
65
+ if (tableLines.length < 2) {
66
+ tableLines = [];
67
+ inTable = false;
68
+ return;
69
+ }
70
+ const dataLines = tableLines.filter(l => !isTableSep(l));
71
+ if (dataLines.length < 2) {
72
+ tableLines = [];
73
+ inTable = false;
74
+ return;
75
+ }
76
+ const headers = parseRow(dataLines[0]);
77
+ const rows = dataLines.slice(1).map(parseRow);
78
+ const colCount = headers.length;
79
+ const colWidth = Math.floor(9030 / colCount);
80
+ const headerRow = new TableRow({
81
+ children: headers.map(h => new TableCell({
82
+ children: [new Paragraph({
83
+ children: [new TextRun({ text: stripMd(h), bold: true, color: BRAND_COLOR })],
84
+ alignment: AlignmentType.LEFT,
85
+ })],
86
+ shading: { fill: 'f0f8fa' },
87
+ width: { size: colWidth, type: WidthType.DXA },
88
+ })),
89
+ tableHeader: true,
90
+ });
91
+ const dataRows = rows.map(row => new TableRow({
92
+ children: row.map(cell => new TableCell({
93
+ children: [new Paragraph({ children: [new TextRun({ text: stripMd(cell), color: DARK })] })],
94
+ width: { size: colWidth, type: WidthType.DXA },
95
+ })),
96
+ }));
97
+ allChildren.push(new Table({
98
+ rows: [headerRow, ...dataRows],
99
+ width: { size: 9030, type: WidthType.DXA },
100
+ borders: {
101
+ top: { style: BorderStyle.SINGLE, size: 1, color: 'ccccdd' },
102
+ bottom: { style: BorderStyle.SINGLE, size: 1, color: 'ccccdd' },
103
+ left: { style: BorderStyle.SINGLE, size: 1, color: 'ccccdd' },
104
+ right: { style: BorderStyle.SINGLE, size: 1, color: 'ccccdd' },
105
+ insideHorizontal: { style: BorderStyle.SINGLE, size: 1, color: 'ccccdd' },
106
+ insideVertical: { style: BorderStyle.SINGLE, size: 1, color: 'ccccdd' },
107
+ },
108
+ }));
109
+ allChildren.push(new Paragraph({ text: '', spacing: { after: 160 } }));
110
+ tableLines = [];
111
+ inTable = false;
112
+ };
113
+ for (const line of lines) {
114
+ if (isTableRow(line) || isTableSep(line)) {
115
+ inTable = true;
116
+ tableLines.push(line);
117
+ continue;
118
+ }
119
+ if (inTable)
120
+ flushTable();
121
+ const t = line.trim();
122
+ if (!t) {
123
+ allChildren.push(new Paragraph({ text: '' }));
124
+ continue;
125
+ }
126
+ if (/^##\s/.test(t)) {
127
+ allChildren.push(new Paragraph({ text: stripMd(t.replace(/^##\s+/, '')), heading: HeadingLevel.HEADING_2 }));
128
+ }
129
+ else if (/^###\s/.test(t)) {
130
+ allChildren.push(new Paragraph({ text: stripMd(t.replace(/^###\s+/, '')), heading: HeadingLevel.HEADING_3 }));
131
+ }
132
+ else if (/^[-*+]\s/.test(t)) {
133
+ allChildren.push(new Paragraph({
134
+ children: [new TextRun({ text: stripMd(t.replace(/^[-*+]\s+/, '')), color: DARK })],
135
+ bullet: { level: 0 },
136
+ spacing: { after: 60 },
137
+ }));
138
+ }
139
+ else {
140
+ allChildren.push(new Paragraph({
141
+ children: [new TextRun({ text: stripMd(t), color: DARK })],
142
+ spacing: { after: 100 },
143
+ }));
144
+ }
145
+ }
146
+ if (inTable)
147
+ flushTable();
148
+ }
149
+ const doc = new Document({
150
+ sections: [{
151
+ properties: {},
152
+ headers: {
153
+ default: new Header({
154
+ children: [new Paragraph({
155
+ children: [new TextRun({ text: `geotechCLI · ${report.title}`, color: '888899', size: 18 })],
156
+ alignment: AlignmentType.RIGHT,
157
+ })],
158
+ }),
159
+ },
160
+ footers: {
161
+ default: new Footer({
162
+ children: [new Paragraph({
163
+ children: [new TextRun({ text: 'geotechCLI — Confidential Engineering Report', color: '888899', size: 18 })],
164
+ alignment: AlignmentType.CENTER,
165
+ })],
166
+ }),
167
+ },
168
+ children: allChildren,
169
+ }],
170
+ });
171
+ return Buffer.from(await Packer.toBuffer(doc));
172
+ }
173
+ //# sourceMappingURL=docx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docx.js","sourceRoot":"","sources":["../../src/report/docx.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import type { LLMConfig } from '../llm/types.js';
2
+ export { renderReportAsPdf } from './pdf.js';
3
+ export { renderReportAsDocx } from './docx.js';
2
4
  export interface ReportSection {
3
5
  title: string;
4
6
  content: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/report/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,cAAc,CAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,OAAO,EAAE;IACP,IAAI,EAAE,UAAU,GAAG,oBAAoB,GAAG,eAAe,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC9F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,EACD,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,eAAe,CAAC,CA8D1B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/report/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,cAAc,CAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,OAAO,EAAE;IACP,IAAI,EAAE,UAAU,GAAG,oBAAoB,GAAG,eAAe,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC9F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,EACD,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,eAAe,CAAC,CA8D1B"}
@@ -1,4 +1,6 @@
1
1
  import { generateText } from '../llm/router.js';
2
+ export { renderReportAsPdf } from './pdf.js';
3
+ export { renderReportAsDocx } from './docx.js';
2
4
  export async function generateReport(analysisData, options, config) {
3
5
  const dataStr = JSON.stringify(analysisData, null, 2);
4
6
  const prompt = `Generate a professional geotechnical engineering report based on this analysis data:
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/report/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAchD,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,YAAqC,EACrC,OAOC,EACD,MAAiB;IAEjB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEtD,MAAM,MAAM,GAAG;;EAEf,OAAO;;;UAGC,OAAO,CAAC,IAAI;aACT,OAAO,CAAC,WAAW,IAAI,iBAAiB;cACvC,OAAO,CAAC,QAAQ,IAAI,eAAe;cACnC,OAAO,CAAC,QAAQ,IAAI,SAAS;EACzC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;+IAWyE,CAAC;IAE9I,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE;QAClD,YAAY,EAAE,8SAA8S;QAC5T,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,MAAM,YAAY,GAAG,mBAAmB,CAAC;IACzC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,IAAI,KAA6B,CAAC;IAElC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAE3B,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,IAAI,KAAK,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1D,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,SAAS,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5C,CAAC;IAED,eAAe;IACf,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO;QACL,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,aAAa,OAAO,CAAC,WAAW,IAAI,SAAS,EAAE;QACjI,QAAQ;QACR,YAAY,EAAE,QAAQ,CAAC,IAAI;QAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS;KAC9B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/report/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAc/C,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,YAAqC,EACrC,OAOC,EACD,MAAiB;IAEjB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEtD,MAAM,MAAM,GAAG;;EAEf,OAAO;;;UAGC,OAAO,CAAC,IAAI;aACT,OAAO,CAAC,WAAW,IAAI,iBAAiB;cACvC,OAAO,CAAC,QAAQ,IAAI,eAAe;cACnC,OAAO,CAAC,QAAQ,IAAI,SAAS;EACzC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;+IAWyE,CAAC;IAE9I,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE;QAClD,YAAY,EAAE,8SAA8S;QAC5T,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,MAAM,YAAY,GAAG,mBAAmB,CAAC;IACzC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,IAAI,KAA6B,CAAC;IAElC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAE3B,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,IAAI,KAAK,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1D,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,SAAS,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5C,CAAC;IAED,eAAe;IACf,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO;QACL,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,aAAa,OAAO,CAAC,WAAW,IAAI,SAAS,EAAE;QACjI,QAAQ;QACR,YAAY,EAAE,QAAQ,CAAC,IAAI;QAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS;KAC9B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * PDF report renderer using pdfkit (pure JS, no native deps).
3
+ * Converts a GeneratedReport (markdown sections) to a professional PDF buffer.
4
+ */
5
+ import type { GeneratedReport } from './index.js';
6
+ export declare function renderReportAsPdf(report: GeneratedReport): Promise<Buffer>;
7
+ //# sourceMappingURL=pdf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../src/report/pdf.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,YAAY,CAAC;AA4DjE,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAgIhF"}
@@ -0,0 +1,190 @@
1
+ // Dynamic import to avoid top-level require errors when pdfkit is installed
2
+ async function getPDFKit() {
3
+ try {
4
+ // @ts-ignore — pdfkit may not have perfect ESM types
5
+ const { default: PDFDocument } = await import('pdfkit');
6
+ return PDFDocument;
7
+ }
8
+ catch {
9
+ throw new Error('pdfkit is required for PDF export. Install it: npm install pdfkit --workspace=@geotechcli/core');
10
+ }
11
+ }
12
+ const BRAND_CYAN = '#00b8c8';
13
+ const TEXT_DARK = '#1a1a2e';
14
+ const TEXT_GRAY = '#555577';
15
+ const LINE_GRAY = '#ccccdd';
16
+ const PAGE_MARGIN = 56;
17
+ const FONT_TITLE = 'Helvetica-Bold';
18
+ const FONT_BODY = 'Helvetica';
19
+ const FONT_BOLD = 'Helvetica-Bold';
20
+ /**
21
+ * Strip markdown syntax for plain text rendering in PDF.
22
+ */
23
+ function stripMarkdown(text) {
24
+ return text
25
+ .replace(/^#{1,6}\s+/gm, '') // headings
26
+ .replace(/\*\*(.+?)\*\*/g, '$1') // bold
27
+ .replace(/\*(.+?)\*/g, '$1') // italic
28
+ .replace(/`(.+?)`/g, '$1') // inline code
29
+ .replace(/^\s*[-*+]\s+/gm, '• ') // bullets
30
+ .replace(/^\s*\d+\.\s+/gm, '') // numbered lists
31
+ .replace(/\|[-:| ]+\|/g, '') // table separators
32
+ .replace(/\[([^\]]+)\]\([^)]+\)/g, '$1') // links
33
+ .trim();
34
+ }
35
+ /**
36
+ * Detect if a line is a markdown table row.
37
+ */
38
+ function isTableLine(line) {
39
+ return line.trim().startsWith('|');
40
+ }
41
+ /**
42
+ * Parse a simple markdown table into headers and rows.
43
+ */
44
+ function parseMarkdownTable(block) {
45
+ const dataLines = block.filter(l => !l.replace(/\|/g, '').replace(/-/g, '').trim().match(/^[-:| ]*$/));
46
+ if (dataLines.length < 2)
47
+ return null;
48
+ const parse = (line) => line.split('|').slice(1, -1).map(c => c.trim());
49
+ const headers = parse(dataLines[0]);
50
+ const rows = dataLines.slice(1).map(parse);
51
+ return { headers, rows };
52
+ }
53
+ export async function renderReportAsPdf(report) {
54
+ const PDFDocument = await getPDFKit();
55
+ return new Promise((resolve, reject) => {
56
+ const doc = new PDFDocument({ margin: PAGE_MARGIN, size: 'A4' });
57
+ const chunks = [];
58
+ doc.on('data', (chunk) => chunks.push(chunk));
59
+ doc.on('end', () => resolve(Buffer.concat(chunks)));
60
+ doc.on('error', reject);
61
+ const pageWidth = doc.page.width - PAGE_MARGIN * 2;
62
+ // -----------------------------------------------------------------------
63
+ // Title page
64
+ // -----------------------------------------------------------------------
65
+ doc.rect(0, 0, doc.page.width, 8).fill(BRAND_CYAN);
66
+ doc.moveDown(2);
67
+ doc.font(FONT_TITLE).fontSize(22).fillColor(TEXT_DARK)
68
+ .text(report.title, PAGE_MARGIN, 80, { width: pageWidth, align: 'center' });
69
+ doc.moveDown(0.5);
70
+ doc.font(FONT_BODY).fontSize(11).fillColor(TEXT_GRAY)
71
+ .text(`Generated by geotechCLI v${process.env.npm_package_version ?? '0.3.0'}`, {
72
+ align: 'center',
73
+ });
74
+ doc.font(FONT_BODY).fontSize(10).fillColor(TEXT_GRAY)
75
+ .text(new Date().toISOString().split('T')[0], { align: 'center' });
76
+ doc.moveDown(2);
77
+ doc.moveTo(PAGE_MARGIN, doc.y).lineTo(doc.page.width - PAGE_MARGIN, doc.y)
78
+ .strokeColor(LINE_GRAY).lineWidth(1).stroke();
79
+ doc.moveDown(1.5);
80
+ // Table of contents (section names)
81
+ doc.font(FONT_BOLD).fontSize(12).fillColor(BRAND_CYAN).text('Contents', PAGE_MARGIN);
82
+ doc.moveDown(0.4);
83
+ for (const section of report.sections) {
84
+ doc.font(FONT_BODY).fontSize(10).fillColor(TEXT_DARK)
85
+ .text(`• ${section.title}`, PAGE_MARGIN + 12);
86
+ }
87
+ // -----------------------------------------------------------------------
88
+ // Content sections
89
+ // -----------------------------------------------------------------------
90
+ for (const section of report.sections) {
91
+ doc.addPage();
92
+ doc.rect(0, 0, doc.page.width, 5).fill(BRAND_CYAN);
93
+ doc.moveDown(1);
94
+ doc.font(FONT_TITLE).fontSize(14).fillColor(BRAND_CYAN)
95
+ .text(section.title, PAGE_MARGIN, 40, { width: pageWidth });
96
+ doc.moveDown(0.4);
97
+ doc.moveTo(PAGE_MARGIN, doc.y).lineTo(doc.page.width - PAGE_MARGIN, doc.y)
98
+ .strokeColor(BRAND_CYAN).lineWidth(1.5).stroke();
99
+ doc.moveDown(0.6);
100
+ // Render content line by line
101
+ const lines = section.content.split('\n');
102
+ let tableBuffer = [];
103
+ let inTable = false;
104
+ const flushTable = () => {
105
+ if (tableBuffer.length === 0)
106
+ return;
107
+ const parsed = parseMarkdownTable(tableBuffer);
108
+ if (parsed && doc.y < doc.page.height - 120) {
109
+ const colW = pageWidth / parsed.headers.length;
110
+ // Header row
111
+ let x = PAGE_MARGIN;
112
+ doc.font(FONT_BOLD).fontSize(8.5).fillColor(TEXT_DARK);
113
+ for (const h of parsed.headers) {
114
+ doc.text(h, x + 4, doc.y, { width: colW - 8, lineBreak: false });
115
+ x += colW;
116
+ }
117
+ doc.moveDown(0.3);
118
+ doc.moveTo(PAGE_MARGIN, doc.y).lineTo(doc.page.width - PAGE_MARGIN, doc.y)
119
+ .strokeColor(LINE_GRAY).lineWidth(0.5).stroke();
120
+ doc.moveDown(0.2);
121
+ // Data rows
122
+ doc.font(FONT_BODY).fontSize(8.5).fillColor(TEXT_DARK);
123
+ for (const row of parsed.rows) {
124
+ x = PAGE_MARGIN;
125
+ const rowY = doc.y;
126
+ for (const cell of row) {
127
+ doc.text(cell, x + 4, rowY, { width: colW - 8, lineBreak: false });
128
+ x += colW;
129
+ }
130
+ doc.moveDown(0.4);
131
+ }
132
+ doc.moveDown(0.4);
133
+ }
134
+ tableBuffer = [];
135
+ inTable = false;
136
+ };
137
+ for (const line of lines) {
138
+ if (isTableLine(line)) {
139
+ inTable = true;
140
+ tableBuffer.push(line);
141
+ continue;
142
+ }
143
+ if (inTable)
144
+ flushTable();
145
+ const stripped = strictRenderLine(line, doc, PAGE_MARGIN, pageWidth);
146
+ if (stripped !== null)
147
+ doc.moveDown(0.3);
148
+ }
149
+ if (inTable)
150
+ flushTable();
151
+ }
152
+ // -----------------------------------------------------------------------
153
+ // Footer on each page
154
+ // -----------------------------------------------------------------------
155
+ const range = doc.bufferedPageRange();
156
+ for (let i = range.start; i < range.start + range.count; i++) {
157
+ doc.switchToPage(i);
158
+ doc.font(FONT_BODY).fontSize(8).fillColor(TEXT_GRAY)
159
+ .text(`geotechCLI · ${report.title} · Page ${i + 1} of ${range.count}`, PAGE_MARGIN, doc.page.height - 36, { align: 'center', width: pageWidth });
160
+ }
161
+ doc.end();
162
+ });
163
+ }
164
+ /** Render a single non-table markdown line into the PDF. Returns null if empty line. */
165
+ function strictRenderLine(line, doc, margin, width) {
166
+ const trimmed = line.trim();
167
+ if (!trimmed)
168
+ return null;
169
+ if (/^#{1,2}\s/.test(trimmed)) {
170
+ const text = trimmed.replace(/^#{1,2}\s+/, '');
171
+ doc.font('Helvetica-Bold').fontSize(12).fillColor('#00b8c8').text(stripMarkdown(text), margin, undefined, { width });
172
+ return true;
173
+ }
174
+ if (/^#{3,6}\s/.test(trimmed)) {
175
+ const text = trimmed.replace(/^#{3,6}\s+/, '');
176
+ doc.font('Helvetica-Bold').fontSize(10.5).fillColor('#1a1a2e').text(stripMarkdown(text), margin, undefined, { width });
177
+ return true;
178
+ }
179
+ // Bullet
180
+ if (/^[-*+]\s/.test(trimmed)) {
181
+ const text = trimmed.replace(/^[-*+]\s+/, '');
182
+ doc.font('Helvetica').fontSize(10).fillColor('#1a1a2e')
183
+ .text('• ' + stripMarkdown(text), margin + 10, undefined, { width: width - 10 });
184
+ return true;
185
+ }
186
+ // Normal paragraph
187
+ doc.font('Helvetica').fontSize(10).fillColor('#1a1a2e').text(stripMarkdown(trimmed), margin, undefined, { width });
188
+ return true;
189
+ }
190
+ //# sourceMappingURL=pdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/report/pdf.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vision/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,EAQL,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAmC3D,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,qBAAqB,CAAC,CAwDhC;AAED,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,gBAAgB,EAAE;QAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;KACrC,CAAC;IACF,SAAS,EAAE;QACT,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,qBAAqB,EAAE,MAAM,CAAC;KAC/B,GAAG,IAAI,CAAC;IACT,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,eAAe,CAAC,CAiG1B;AAED,MAAM,WAAW,gCAAiC,SAAQ,WAAW;IACnE,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,mBAAmB,EAAE;QACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,CAAC;IACF,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,gCAAgC,CAAC,CAgE3C;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,sBAAsB,CAAC,CAyFjC;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAahD;AAED,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,oBAAoB,CAAC,CAqD/B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vision/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,43 @@
1
1
  import { generateVision, generateText } from '../llm/router.js';
2
2
  import { classifyRMR89 } from '../geo/classification.js';
3
3
  import { clampConfidence, createParseSafety, deriveParseStatus, normalizeWarnings, parseJsonObject, readNumber, readString, } from './parse.js';
4
+ // ---------------------------------------------------------------------------
5
+ // Vision retry helper — handles upstream empty-content failures
6
+ // ---------------------------------------------------------------------------
7
+ /**
8
+ * Execute a vision call with automatic retry on empty/null response.
9
+ * First attempt: strict JSON-only prompt at low temperature.
10
+ * Second attempt: softer plain-text prompt at higher temperature, same image.
11
+ * This handles GLM-5v-turbo returning empty content on the first call.
12
+ */
13
+ async function visionWithRetry(imageBase64, mimeType, config, strictPrompt, softPrompt, systemPrompt, maxTokens) {
14
+ const start = Date.now();
15
+ // Attempt 1: strict JSON prompt
16
+ try {
17
+ const r1 = await generateVision(strictPrompt, imageBase64, mimeType, config, {
18
+ systemPrompt,
19
+ temperature: 0.1,
20
+ maxTokens,
21
+ });
22
+ if (r1.text && r1.text.trim().length > 10) {
23
+ return { text: r1.text, latencyMs: r1.latencyMs, usedFallback: false };
24
+ }
25
+ }
26
+ catch {
27
+ // fall through to retry
28
+ }
29
+ // 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
+ });
35
+ return {
36
+ text: r2.text,
37
+ latencyMs: Date.now() - start,
38
+ usedFallback: true,
39
+ };
40
+ }
4
41
  const VALID_JOINT_CONDITIONS = [
5
42
  'very_good',
6
43
  'good',
@@ -26,7 +63,7 @@ function combineWarnings(base, extra) {
26
63
  return [...new Set([...base, ...extra])];
27
64
  }
28
65
  export async function analyzeCoreBox(imageBase64, mimeType, config) {
29
- const prompt = `Analyze this rock core box image. You MUST respond with ONLY a JSON object (no markdown, no backticks, no explanation) with these exact fields:
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:
30
67
  {
31
68
  "rqd": <number 0-100, Rock Quality Designation percentage>,
32
69
  "fractureSpacing": "<string: very close/close/moderate/wide/very wide>",
@@ -37,13 +74,20 @@ export async function analyzeCoreBox(imageBase64, mimeType, config) {
37
74
  "confidence": <number 0-100>,
38
75
  "warnings": ["<warning>", "<warning>"]
39
76
  }`;
40
- const response = await generateVision(prompt, imageBase64, mimeType, config, {
41
- systemPrompt: 'You are an expert engineering geologist performing core logging. Respond with JSON only.',
42
- temperature: 0.1,
43
- maxTokens: 900,
44
- });
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)
84
+ Provide approximate values even if uncertain.`;
85
+ const response = await visionWithRetry(imageBase64, mimeType, config, strictPrompt, softPrompt, 'You are an expert engineering geologist performing core logging. Respond with JSON only.', 900);
45
86
  const parsed = parseJsonObject(response.text);
46
87
  const warnings = [...parsed.warnings];
88
+ if (response.usedFallback) {
89
+ warnings.push('Vision model used plain-text fallback — values extracted from narrative response.');
90
+ }
47
91
  const rqd = readNumber(parsed.value, 'rqd', warnings);
48
92
  const fractureSpacing = readString(parsed.value, 'fractureSpacing', warnings);
49
93
  const weatheringGrade = readString(parsed.value, 'weatheringGrade', warnings);
@@ -66,7 +110,7 @@ export async function analyzeCoreBox(imageBase64, mimeType, config) {
66
110
  };
67
111
  }
68
112
  export async function classifyRMRFromImage(imageBase64, mimeType, config) {
69
- const prompt = `Analyze this rock exposure / tunnel face / core box image for Rock Mass Rating input parameters. Respond with ONLY a JSON object (no markdown):
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):
70
114
  {
71
115
  "estimatedUCS": <number in MPa, estimate from visual appearance>,
72
116
  "estimatedRQD": <number 0-100>,
@@ -76,13 +120,19 @@ export async function classifyRMRFromImage(imageBase64, mimeType, config) {
76
120
  "confidence": <number 0-100>,
77
121
  "warnings": ["<warning>", "<warning>"]
78
122
  }`;
79
- const response = await generateVision(prompt, imageBase64, mimeType, config, {
80
- systemPrompt: 'You are an expert rock mechanics engineer performing field classification. Respond with JSON only.',
81
- temperature: 0.1,
82
- maxTokens: 700,
83
- });
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
129
+ Give approximate values based on what you observe.`;
130
+ const response = await visionWithRetry(imageBase64, mimeType, config, strictPrompt, softPrompt, 'You are an expert rock mechanics engineer performing field classification. Respond with JSON only.', 700);
84
131
  const parsed = parseJsonObject(response.text);
85
132
  const warnings = [...parsed.warnings];
133
+ if (response.usedFallback) {
134
+ warnings.push('Vision model used plain-text fallback — values extracted from narrative response.');
135
+ }
86
136
  const estimatedUCS = readNumber(parsed.value, 'estimatedUCS', warnings);
87
137
  const estimatedRQD = readNumber(parsed.value, 'estimatedRQD', warnings);
88
138
  const estimatedSpacing = readNumber(parsed.value, 'estimatedSpacing', warnings);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vision/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vision/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geotechcli/core",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Shared computation and LLM engine for geotechCLI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -39,9 +39,12 @@
39
39
  "lint": "tsc --noEmit"
40
40
  },
41
41
  "dependencies": {
42
+ "docx": "^9.0.0",
43
+ "pdfkit": "^0.15.0",
42
44
  "zod": "^3.24.0"
43
45
  },
44
46
  "devDependencies": {
47
+ "@types/pdfkit": "^0.13.0",
45
48
  "typescript": "^5.7.0",
46
49
  "vitest": "^3.1.0"
47
50
  },