husteno-o feat: code review system, type safety, error handling, AI provider fallback · 9/9/2026
5ccaeae
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import { ValidationError } from "@devpulse/core";
import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
export function formatJson(input: string, indent = 2): string {
try {
const parsed = JSON.parse(input);
return JSON.stringify(parsed, null, indent);
} catch (err: unknown) {
const msg = err instanceof Error ? err.message : String(err);
throw new ValidationError(`Invalid JSON: ${msg}`);
}
}
export function minifyJson(input: string): string {
try {
const parsed = JSON.parse(input);
return JSON.stringify(parsed);
} catch (err: unknown) {
const msg = err instanceof Error ? err.message : String(err);
throw new ValidationError(`Invalid JSON: ${msg}`);
}
}
export function validateJson(input: string): { valid: boolean; error?: string; type?: string } {
try {
const parsed = JSON.parse(input);
const type = Array.isArray(parsed) ? "array" : typeof parsed;
return { valid: true, type };
} catch (err: unknown) {
return { valid: false, error: err instanceof Error ? err.message : String(err) };
}
}
export function formatYaml(input: string): string {
try {
const parsed = parseYaml(input);
return stringifyYaml(parsed);
} catch (err: unknown) {
const msg = err instanceof Error ? err.message : String(err);
throw new ValidationError(`Invalid YAML: ${msg}`);
}
}
export function yamlToJson(yamlInput: string): string {
try {
const parsed = parseYaml(yamlInput);
return JSON.stringify(parsed, null, 2);
} catch (err: unknown) {
const msg = err instanceof Error ? err.message : String(err);
throw new ValidationError(`Failed to convert YAML to JSON: ${msg}`);
}
}
export function jsonToYaml(jsonInput: string): string {
try {
const parsed = JSON.parse(jsonInput);
return stringifyYaml(parsed);
} catch (err: unknown) {
const msg = err instanceof Error ? err.message : String(err);
throw new ValidationError(`Failed to convert JSON to YAML: ${msg}`);
}
}
export function formatSql(sql: string): string {
if (!sql.trim()) return "";
const keywords = [
"SELECT",
"FROM",
"WHERE",
"AND",
"OR",
"ORDER BY",
"GROUP BY",
"HAVING",
"LIMIT",
"OFFSET",
"JOIN",
"LEFT JOIN",
"RIGHT JOIN",
"INNER JOIN",
"OUTER JOIN",
"INSERT INTO",
"VALUES",
"UPDATE",
"SET",
"DELETE FROM",
"CREATE TABLE",
"ALTER TABLE",
"DROP TABLE",
];
let formatted = sql.trim().replace(/\s+/g, " ");
for (const kw of keywords) {
const regex = new RegExp(`\\b${kw}\\b`, "gi");
formatted = formatted.replace(regex, (match) => `\n${match.toUpperCase()}`);
}
return formatted.trim();
}