{"version":3,"sources":["jsdelivr-header.js","/npm/@orama/oramacore-events-parser@0.0.5/script/main.js"],"names":[],"mappings":"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","file":"/npm/@orama/oramacore-events-parser@0.0.5/script/main.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@orama/oramacore-events-parser@0.0.5/script/main.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EventsStreamTransformer = exports.PROGRESS_STEPS = exports.STATES_STEPS = void 0;\nexports.parseAnswerStream = parseAnswerStream;\nexports.parseNLPQueryStream = parseNLPQueryStream;\nexports.isAnswerFlowState = isAnswerFlowState;\nexports.isAdvancedAutoqueryState = isAdvancedAutoqueryState;\nexports.STATES_STEPS = [\n    // Main answer flow states\n    'initializing',\n    'handle_gpu_overload',\n    'get_llm_config',\n    'determine_query_strategy',\n    'simple_rag', // When simple RAG is selected\n    'advanced_autoquery', // When advanced autoquery is selected\n    'handle_system_prompt',\n    'optimize_query',\n    'execute_search',\n    'execute_before_answer_hook',\n    'generate_answer',\n    'generate_related_queries',\n    'completed',\n    'error',\n    // Advanced autoquery states (forwarded with prefix)\n    'advanced_autoquery_initializing',\n    'advanced_autoquery_analyzing_input',\n    'advanced_autoquery_query_optimized',\n    'advanced_autoquery_select_properties',\n    'advanced_autoquery_properties_selected',\n    'advanced_autoquery_combine_queries',\n    'advanced_autoquery_queries_combined',\n    'advanced_autoquery_generate_tracked_queries',\n    'advanced_autoquery_tracked_queries_generated',\n    'advanced_autoquery_execute_before_retrieval_hook',\n    'advanced_autoquery_hooks_executed',\n    'advanced_autoquery_execute_searches',\n    'advanced_autoquery_search_results',\n    'advanced_autoquery_completed',\n];\nexports.PROGRESS_STEPS = [\n    // Main answer flow progress steps (enum variant names)\n    'Initialize',\n    'HandleGPUOverload',\n    'GetLLMConfig',\n    'DetermineQueryStrategy',\n    'HandleSystemPrompt',\n    'OptimizeQuery',\n    'ExecuteSearch',\n    'ExecuteBeforeAnswerHook',\n    'GenerateAnswer',\n    'GenerateRelatedQueries',\n    'Completed',\n    'Error',\n    // Advanced autoquery progress steps\n    'AnalyzeInput',\n    'QueryOptimized',\n    'SelectProperties',\n    'PropertiesSelected',\n    'CombineQueriesAndProperties',\n    'QueriesCombined',\n    'GenerateTrackedQueries',\n    'TrackedQueriesGenerated',\n    'ExecuteBeforeRetrievalHook',\n    'HooksExecuted',\n    'ExecuteSearches',\n    'SearchResults',\n];\nclass EventsStreamTransformer extends TransformStream {\n    constructor() {\n        const decoder = new TextDecoder('utf-8', { ignoreBOM: false });\n        let buffer = '';\n        super({\n            start() {\n                buffer = '';\n            },\n            transform(chunk, controller) {\n                const chunkText = decoder.decode(chunk);\n                buffer += chunkText;\n                // Split on double newlines (end of SSE event)\n                let eventEnd = buffer.indexOf('\\n\\n');\n                while (eventEnd === -1 && buffer.indexOf('\\r\\n\\r\\n') !== -1) {\n                    eventEnd = buffer.indexOf('\\r\\n\\r\\n');\n                }\n                while (eventEnd !== -1) {\n                    // Support both \\n\\n and \\r\\n\\r\\n as event delimiters\n                    let delimiterLength = 2;\n                    if (buffer.slice(eventEnd, eventEnd + 4) === '\\r\\n\\r\\n') {\n                        delimiterLength = 4;\n                    }\n                    const eventBlock = buffer.slice(0, eventEnd);\n                    buffer = buffer.slice(eventEnd + delimiterLength);\n                    // Find the data line(s)\n                    const dataLines = eventBlock\n                        .split(/\\r?\\n/)\n                        .filter((line) => line.startsWith('data:'));\n                    for (const dataLine of dataLines) {\n                        const jsonStr = dataLine.replace(/^data:\\s*/, '');\n                        try {\n                            // Handle string events like \"acknowledged\"\n                            if (jsonStr.startsWith('\"') && jsonStr.endsWith('\"')) {\n                                const stringEvent = JSON.parse(jsonStr);\n                                controller.enqueue({ type: stringEvent });\n                                continue;\n                            }\n                            let parsed = JSON.parse(jsonStr);\n                            // Handle new nested structure\n                            if (typeof parsed === 'object' &&\n                                parsed !== null &&\n                                !('type' in parsed)) {\n                                // Convert nested format like {\"state_changed\": {...}} to {type: \"state_changed\", ...}\n                                const keys = Object.keys(parsed);\n                                if (keys.length === 1) {\n                                    const [eventType] = keys;\n                                    const eventData = parsed[eventType];\n                                    if (typeof eventData === 'object' && eventData !== null) {\n                                        parsed = { type: eventType, ...eventData };\n                                    }\n                                    else {\n                                        parsed = { type: eventType, data: eventData };\n                                    }\n                                }\n                            }\n                            controller.enqueue(parsed);\n                        }\n                        catch (e) {\n                            controller.enqueue({\n                                type: 'error',\n                                error: 'Invalid JSON in SSE data',\n                                state: 'parse_error',\n                            });\n                        }\n                    }\n                    // Find the next event\n                    eventEnd = buffer.indexOf('\\n\\n');\n                    if (eventEnd === -1 && buffer.indexOf('\\r\\n\\r\\n') !== -1) {\n                        eventEnd = buffer.indexOf('\\r\\n\\r\\n');\n                    }\n                }\n            },\n        });\n    }\n}\nexports.EventsStreamTransformer = EventsStreamTransformer;\nclass OramaEventEmitter {\n    constructor() {\n        Object.defineProperty(this, \"handlers\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: {}\n        });\n        Object.defineProperty(this, \"endHandlers\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: []\n        });\n        Object.defineProperty(this, \"done\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"resolveDone\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: () => { }\n        });\n        this.done = new Promise((resolve) => {\n            this.resolveDone = resolve;\n        });\n    }\n    on(event, handler) {\n        if (!this.handlers[event]) {\n            this.handlers[event] = [];\n        }\n        this.handlers[event].push(handler);\n        return this;\n    }\n    onStateChange(handler) {\n        return this.on('state_changed', handler);\n    }\n    onProgress(handler) {\n        return this.on('progress', handler);\n    }\n    onEnd(handler) {\n        this.endHandlers.push(handler);\n        return this;\n    }\n    emit(event) {\n        const hs = this.handlers[event.type];\n        if (hs) {\n            for (const h of hs)\n                h(event);\n        }\n        // Check for completion - updated for new event format\n        const shouldEnd = \n        // Success completion\n        (event.type === 'state_changed' &&\n            'state' in event &&\n            (event.state === 'completed' ||\n                event.state === 'advanced_autoquery_completed')) ||\n            // Terminal errors only\n            (event.type === 'error' &&\n                'is_terminal' in event &&\n                event.is_terminal === true);\n        if (shouldEnd) {\n            this._triggerEnd();\n        }\n    }\n    _triggerEnd() {\n        for (const handler of this.endHandlers) {\n            handler();\n        }\n    }\n    _markDone() {\n        this.resolveDone();\n    }\n}\nfunction isAnswerEvent(event) {\n    // First check for Answer-specific event types\n    if (event.type === 'acknowledged' ||\n        event.type === 'selected_llm' ||\n        event.type === 'optimizing_query' ||\n        event.type === 'answer_token' ||\n        event.type === 'related_queries' ||\n        event.type === 'result_action') {\n        return true;\n    }\n    // For overlapping types, include all since AnswerEvent is a superset\n    // The distinction is made at the parser level, not the type guard level\n    if (event.type === 'state_changed' ||\n        event.type === 'error' ||\n        event.type === 'progress' ||\n        event.type === 'search_results') {\n        return true;\n    }\n    return false;\n}\nfunction isAdvancedAutoqueryEvent(event) {\n    // Advanced autoquery events can have any state - the prefix logic only applies\n    // when they're forwarded through the answer stream\n    return (event.type === 'state_changed' ||\n        event.type === 'error' ||\n        event.type === 'progress' ||\n        event.type === 'search_results');\n}\nfunction parseAnswerStream(stream) {\n    const emitter = new OramaEventEmitter();\n    const transformer = new EventsStreamTransformer();\n    (async () => {\n        const reader = stream.pipeThrough(transformer).getReader();\n        while (true) {\n            const { value, done } = await reader.read();\n            if (done)\n                break;\n            if (isAnswerEvent(value))\n                emitter.emit(value);\n        }\n        // Give a small delay to ensure all events are emitted\n        await new Promise((resolve) => setTimeout(resolve, 0));\n        emitter._markDone();\n    })();\n    return emitter;\n}\nfunction parseNLPQueryStream(stream) {\n    const emitter = new OramaEventEmitter();\n    const transformer = new EventsStreamTransformer();\n    (async () => {\n        const reader = stream.pipeThrough(transformer).getReader();\n        while (true) {\n            const { value, done } = await reader.read();\n            if (done)\n                break;\n            if (isAdvancedAutoqueryEvent(value))\n                emitter.emit(value);\n        }\n        // Give a small delay to ensure all events are emitted\n        await new Promise((resolve) => setTimeout(resolve, 0));\n        emitter._markDone();\n    })();\n    return emitter;\n}\nfunction isAnswerFlowState(state) {\n    return !state.startsWith('advanced_autoquery_');\n}\nfunction isAdvancedAutoqueryState(state) {\n    return state.startsWith('advanced_autoquery_');\n}\n"]}