UNPKG

arcananex-synapse

Version:

Agentic AI framework

61 lines (50 loc) 1.38 kB
// Define the structure of the raw input export interface RawData { message: { content: string; role: string; }; usage: { promptTokens: number; completionTokens: number; totalTokens: number; }; raw: unknown; } // Adapter class to extract content values export class LlmResponseAdapter { constructor(private rawData: RawData) {} extractContent(): string | object { const procesedContent = this.parseIfJsonOrMarkdown( this.rawData.message.content ); if (typeof procesedContent === "string") { return this.tryParseJson(procesedContent); } return procesedContent; } private parseIfJsonOrMarkdown(text: string): string | object { const jsonRegex = /```json\s([\s\S]*?)```/; const markdownRegex = /```markdown\s([\s\S]*?)```/; const jsonMatch = text.match(jsonRegex); if (jsonMatch) { try { return JSON.parse(jsonMatch[1].trim()); } catch { return text; // Return original text if parsing fails } } const markdownMatch = text.match(markdownRegex); if (markdownMatch) { return markdownMatch[1].trim(); // Extract Markdown text } return text; } private tryParseJson(text: string): object | string { try { return JSON.parse(text); } catch { return text; // Return original text if parsing fails } } }