071faa482c
纳入 AGC Cargo workspace 的统一 rustfmt 检查与格式化入口 完成项目 TypeScript/Prettier 与 Rust 全量格式化 修复 Pingora expected executable 门禁的空白敏感误报 同步开发运维文档与 AGC skill pack 格式化忽略规则
34 lines
832 B
TypeScript
34 lines
832 B
TypeScript
export function parseJsonResponseText(text: string) {
|
|
const trimmed = text.trim();
|
|
if (!trimmed) {
|
|
throw new Error('LLM returned an empty response.');
|
|
}
|
|
|
|
const fencedMatch = trimmed.match(/```(?:json)?\s*([\s\S]*?)```/iu);
|
|
if (fencedMatch?.[1]) {
|
|
return JSON.parse(fencedMatch[1].trim());
|
|
}
|
|
|
|
const firstBrace = trimmed.indexOf('{');
|
|
const lastBrace = trimmed.lastIndexOf('}');
|
|
if (firstBrace >= 0 && lastBrace > firstBrace) {
|
|
return JSON.parse(trimmed.slice(firstBrace, lastBrace + 1));
|
|
}
|
|
|
|
return JSON.parse(trimmed);
|
|
}
|
|
|
|
export function parseLineListContent(text: string, maxItems = 3) {
|
|
return text
|
|
.replace(/\r/g, '')
|
|
.split('\n')
|
|
.map((line) =>
|
|
line
|
|
.trim()
|
|
.replace(/^[-*\d.)\s]+/u, '')
|
|
.trim(),
|
|
)
|
|
.filter(Boolean)
|
|
.slice(0, maxItems);
|
|
}
|