UNPKG

create-ai-chat-context-experimental

Version:

Phase 2: TypeScript rewrite - AI Chat Context & Memory System with conversation extraction and AICF format support (powered by aicf-core v2.1.0).

105 lines 4.07 kB
"use strict"; /** * This file is part of create-ai-chat-context-experimental. * Licensed under the GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later). * See LICENSE file for details. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.AugmentParser = void 0; const index_js_1 = require("../types/index.js"); const ParserUtils_js_1 = require("../utils/ParserUtils.js"); const MessageBuilder_js_1 = require("../utils/MessageBuilder.js"); const ErrorUtils_js_1 = require("../utils/ErrorUtils.js"); /** * Parse Augment LevelDB format * Extracts messages from Augment VSCode Extension storage */ class AugmentParser { /** * Parse raw Augment data into messages * * @param rawData - Raw data from Augment LevelDB * @param conversationId - Conversation ID * @returns Result with Message[] or error */ parse(rawData, conversationId) { try { if (!rawData || rawData.trim().length === 0) { return (0, index_js_1.Ok)([]); } const messages = this.extractMessages(rawData, conversationId); return (0, index_js_1.Ok)(messages); } catch (error) { return (0, index_js_1.Err)((0, ErrorUtils_js_1.handleError)(error, 'Failed to parse Augment data')); } } /** * Extract messages from raw Augment data * @param rawData - Raw data string * @param conversationId - Conversation ID * @returns Message[] */ extractMessages(rawData, conversationId) { const messages = []; let messageIndex = 0; // Extract user requests (allow escaped quotes) const requestPattern = /"request_message"\s*:\s*"((?:[^"\\]|\\.)+?)"/g; let requestMatch; while ((requestMatch = requestPattern.exec(rawData)) !== null) { const rawContent = requestMatch[1]; if (rawContent) { const content = (0, ParserUtils_js_1.cleanContent)(rawContent); if (content && content.length > 5) { const message = MessageBuilder_js_1.MessageBuilder.create({ prefix: 'augment-user', index: messageIndex, conversationId, role: 'user', content, }); messages.push(message); messageIndex++; } } } // Extract AI responses (allow escaped quotes) const responsePattern = /"response_text"\s*:\s*"((?:[^"\\]|\\.)+?)"/g; let responseMatch; while ((responseMatch = responsePattern.exec(rawData)) !== null) { const rawContent = responseMatch[1]; if (rawContent) { const content = (0, ParserUtils_js_1.cleanContent)(rawContent); if (content && content.length > 5) { const message = MessageBuilder_js_1.MessageBuilder.create({ prefix: 'augment-assistant', index: messageIndex, conversationId, role: 'assistant', content, }); messages.push(message); messageIndex++; } } } // Sort by message index to maintain order return messages.sort((a, b) => { const aIndex = parseInt(a.id.split('-').pop() ?? '0'); const bIndex = parseInt(b.id.split('-').pop() ?? '0'); return aIndex - bIndex; }); } /** * Detect if data is from Augment * @param rawData - Raw data * @returns true if data appears to be from Augment */ isAugmentData(rawData) { return (rawData.includes('request_message') || rawData.includes('response_text') || rawData.includes('conversationId')); } } exports.AugmentParser = AugmentParser; //# sourceMappingURL=AugmentParser.js.map