ai-ip-plugin
Version:
AI-IP Plugin for MCP Workflow Management with SSE streaming and event handling
86 lines • 2.16 kB
JavaScript
;
/**
* Data parsing utility functions
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.parsePolisherContent = parsePolisherContent;
exports.parseSSEData = parseSSEData;
exports.parseAudioResult = parseAudioResult;
exports.isValidJSON = isValidJSON;
exports.safeJSONParse = safeJSONParse;
/**
* Parse polisher content
*/
function parsePolisherContent(text) {
const txt = text.replace(/\\n/g, '\n');
const reasoningMatch = txt.match(/"reasoning"\s*:\s*"([^"]*)"/);
const contentMatch = txt.match(/"content"\s*:\s*"([^"]*)"/);
const reasoning = reasoningMatch ? reasoningMatch[1] : '';
const content = contentMatch ? contentMatch[1] : '';
return { reasoning, content };
}
/**
* Parse SSE stream data
*/
function parseSSEData(chunk) {
const results = [];
const parts = chunk.split('\n\n');
for (const part of parts) {
if (!part.trim())
continue;
let event = 'message';
let data = '';
for (const line of part.split('\n')) {
if (line.startsWith('event:')) {
event = line.replace('event:', '').trim();
}
else if (line.startsWith('data:')) {
data += line.replace('data:', '').trim();
}
}
let parsed = data;
try {
parsed = JSON.parse(data);
}
catch {
// Keep as string if not valid JSON
}
results.push({ event, data: parsed });
}
return results;
}
/**
* Parse audio result content
*/
function parseAudioResult(toolResult, uuid) {
return JSON.stringify({
merged_audio: toolResult.merged_audio,
speed: toolResult.speed,
voice_id: toolResult.voice_id,
uuid: uuid
});
}
/**
* Validate JSON string
*/
function isValidJSON(str) {
try {
JSON.parse(str);
return true;
}
catch {
return false;
}
}
/**
* Safe JSON parse
*/
function safeJSONParse(str, defaultValue) {
try {
return JSON.parse(str);
}
catch {
return defaultValue;
}
}
//# sourceMappingURL=parser.js.map