@absolutejs/absolute 0.19.0-beta.438 → 0.19.0-beta.439

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -445,6 +445,7 @@ var handleRAGRetrieved = (state, action) => {
445
445
  const conversation = getOrCreate(state, action.conversationId);
446
446
  const message = getOrCreateAssistantMessage(conversation, action.messageId, action.conversationId);
447
447
  message.sources = action.sources;
448
+ message.retrievedAt = Date.now();
448
449
  conversation.messages = [...conversation.messages];
449
450
  };
450
451
  var handleToolStatus = (state, action) => {
@@ -895,5 +896,5 @@ export {
895
896
  createAIStream
896
897
  };
897
898
 
898
- //# debugId=DD02FD09848D3D2A64756E2164756E21
899
+ //# debugId=253EC4A33623255164756E2164756E21
899
900
  //# sourceMappingURL=index.js.map
@@ -5,12 +5,12 @@
5
5
  "import type { AIClientMessage, AIServerMessage } from './ai';\nimport type { HMRClientMessage } from './messages';\n\n/* Type guard for AI client messages */\nexport const isValidAIClientMessage = (\n\tdata: unknown\n): data is AIClientMessage => {\n\tif (!data || typeof data !== 'object') {\n\t\treturn false;\n\t}\n\n\tif (!('type' in data) || typeof data.type !== 'string') {\n\t\treturn false;\n\t}\n\n\tswitch (data.type) {\n\t\tcase 'message':\n\t\t\treturn 'content' in data && typeof data.content === 'string';\n\t\tcase 'cancel':\n\t\t\treturn (\n\t\t\t\t'conversationId' in data &&\n\t\t\t\ttypeof data.conversationId === 'string'\n\t\t\t);\n\t\tcase 'branch':\n\t\t\treturn (\n\t\t\t\t'messageId' in data &&\n\t\t\t\ttypeof data.messageId === 'string' &&\n\t\t\t\t'content' in data &&\n\t\t\t\ttypeof data.content === 'string' &&\n\t\t\t\t'conversationId' in data &&\n\t\t\t\ttypeof data.conversationId === 'string'\n\t\t\t);\n\t\tdefault:\n\t\t\treturn false;\n\t}\n};\n\n/* Type guard for AI server messages */\nexport const isValidAIServerMessage = (\n\tdata: unknown\n): data is AIServerMessage => {\n\tif (!data || typeof data !== 'object') {\n\t\treturn false;\n\t}\n\n\tif (!('type' in data) || typeof data.type !== 'string') {\n\t\treturn false;\n\t}\n\n\tswitch (data.type) {\n\t\tcase 'chunk':\n\t\t\treturn (\n\t\t\t\t'content' in data &&\n\t\t\t\ttypeof data.content === 'string' &&\n\t\t\t\t'messageId' in data &&\n\t\t\t\t'conversationId' in data\n\t\t\t);\n\t\tcase 'thinking':\n\t\t\treturn (\n\t\t\t\t'content' in data &&\n\t\t\t\ttypeof data.content === 'string' &&\n\t\t\t\t'messageId' in data &&\n\t\t\t\t'conversationId' in data\n\t\t\t);\n\t\tcase 'tool_status':\n\t\t\treturn (\n\t\t\t\t'name' in data &&\n\t\t\t\t'status' in data &&\n\t\t\t\t'messageId' in data &&\n\t\t\t\t'conversationId' in data\n\t\t\t);\n\t\tcase 'image':\n\t\t\treturn (\n\t\t\t\t'data' in data &&\n\t\t\t\ttypeof data.data === 'string' &&\n\t\t\t\t'format' in data &&\n\t\t\t\ttypeof data.format === 'string' &&\n\t\t\t\t'isPartial' in data &&\n\t\t\t\ttypeof data.isPartial === 'boolean' &&\n\t\t\t\t'messageId' in data &&\n\t\t\t\t'conversationId' in data\n\t\t\t);\n\t\tcase 'complete':\n\t\t\treturn 'messageId' in data && 'conversationId' in data;\n\t\tcase 'rag_retrieved':\n\t\t\treturn (\n\t\t\t\t'conversationId' in data &&\n\t\t\t\t'messageId' in data &&\n\t\t\t\t'sources' in data &&\n\t\t\t\tArray.isArray(data.sources)\n\t\t\t);\n\t\tcase 'error':\n\t\t\treturn 'message' in data && typeof data.message === 'string';\n\t\tdefault:\n\t\t\treturn false;\n\t}\n};\n\n/* Type guard for HMR client messages */\nexport const isValidHMRClientMessage = (\n\tdata: unknown\n): data is HMRClientMessage => {\n\tif (!data || typeof data !== 'object') {\n\t\treturn false;\n\t}\n\n\tif (!('type' in data) || typeof data.type !== 'string') {\n\t\treturn false;\n\t}\n\n\tswitch (data.type) {\n\t\tcase 'ping':\n\t\t\treturn true;\n\t\tcase 'ready':\n\t\t\treturn true;\n\t\tcase 'request-rebuild':\n\t\t\treturn true;\n\t\tcase 'hydration-error':\n\t\t\treturn true;\n\t\tcase 'hmr-timing':\n\t\t\treturn true;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n};\n",
6
6
  "import type { AIServerMessage } from '../../../types/ai';\n\nexport const serverMessageToAction = (msg: AIServerMessage) => {\n\tswitch (msg.type) {\n\t\tcase 'chunk':\n\t\t\treturn {\n\t\t\t\tcontent: msg.content,\n\t\t\t\tconversationId: msg.conversationId,\n\t\t\t\tmessageId: msg.messageId,\n\t\t\t\ttype: 'chunk' as const\n\t\t\t};\n\t\tcase 'thinking':\n\t\t\treturn {\n\t\t\t\tcontent: msg.content,\n\t\t\t\tconversationId: msg.conversationId,\n\t\t\t\tmessageId: msg.messageId,\n\t\t\t\ttype: 'thinking' as const\n\t\t\t};\n\t\tcase 'tool_status':\n\t\t\treturn {\n\t\t\t\tconversationId: msg.conversationId,\n\t\t\t\tinput: msg.input,\n\t\t\t\tmessageId: msg.messageId,\n\t\t\t\tname: msg.name,\n\t\t\t\tresult: msg.result,\n\t\t\t\tstatus: msg.status,\n\t\t\t\ttype: 'tool_status' as const\n\t\t\t};\n\t\tcase 'image':\n\t\t\treturn {\n\t\t\t\tconversationId: msg.conversationId,\n\t\t\t\tdata: msg.data,\n\t\t\t\tformat: msg.format,\n\t\t\t\timageId: msg.imageId,\n\t\t\t\tisPartial: msg.isPartial,\n\t\t\t\tmessageId: msg.messageId,\n\t\t\t\trevisedPrompt: msg.revisedPrompt,\n\t\t\t\ttype: 'image' as const\n\t\t\t};\n\t\tcase 'complete':\n\t\t\treturn {\n\t\t\t\tconversationId: msg.conversationId,\n\t\t\t\tdurationMs: msg.durationMs,\n\t\t\t\tmessageId: msg.messageId,\n\t\t\t\tmodel: msg.model,\n\t\t\t\tsources: msg.sources,\n\t\t\t\ttype: 'complete' as const,\n\t\t\t\tusage: msg.usage\n\t\t\t};\n\t\tcase 'rag_retrieved':\n\t\t\treturn {\n\t\t\t\tconversationId: msg.conversationId,\n\t\t\t\tmessageId: msg.messageId,\n\t\t\t\tsources: msg.sources,\n\t\t\t\ttype: 'rag_retrieved' as const\n\t\t\t};\n\t\tcase 'error':\n\t\t\treturn { message: msg.message, type: 'error' as const };\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n",
7
7
  "import type {\n\tAIClientMessage,\n\tAIConnectionOptions,\n\tAIServerMessage\n} from '../../../types/ai';\nimport { isValidAIServerMessage } from '../../../types/typeGuards';\n\nconst WS_OPEN = 1;\nconst WS_NORMAL_CLOSURE = 1000;\nconst WS_CLOSED = 3;\nconst DEFAULT_PING_INTERVAL = 30_000;\nconst RECONNECT_INITIAL_DELAY = 500;\nconst RECONNECT_POLL_INTERVAL = 300;\nconst DEFAULT_MAX_RECONNECT_ATTEMPTS = 60;\n\ntype AIConnectionState = {\n\tisConnected: boolean;\n\tpingInterval: ReturnType<typeof setInterval> | null;\n\treconnectAttempts: number;\n\treconnectTimeout: ReturnType<typeof setTimeout> | null;\n\tws: WebSocket | null;\n};\n\ntype AIConnectionHandle = {\n\tclose: () => void;\n\tgetReadyState: () => number;\n\tsend: (msg: AIClientMessage) => void;\n\tsubscribe: (callback: (msg: AIServerMessage) => void) => () => void;\n};\n\n// eslint-disable-next-line no-empty-function\nconst noop = () => {};\nconst noopUnsubscribe = () => noop;\n\nconst NOOP_CONNECTION: AIConnectionHandle = {\n\tclose: noop,\n\tsend: noop,\n\tsubscribe: noopUnsubscribe,\n\tgetReadyState: () => WS_CLOSED\n};\n\nconst buildWsUrl = (path: string) => {\n\tconst { hostname, port, protocol } = window.location;\n\tconst wsProtocol = protocol === 'https:' ? 'wss:' : 'ws:';\n\tconst portSuffix = port ? `:${port}` : '';\n\n\treturn `${wsProtocol}//${hostname}${portSuffix}${path}`;\n};\n\nconst parseServerMessage = (event: MessageEvent) => {\n\tlet data: unknown;\n\n\ttry {\n\t\tdata = JSON.parse(String(event.data));\n\t} catch {\n\t\treturn null;\n\t}\n\n\tif (\n\t\tdata &&\n\t\ttypeof data === 'object' &&\n\t\t'type' in data &&\n\t\tdata.type === 'pong'\n\t) {\n\t\treturn null;\n\t}\n\n\tif (!isValidAIServerMessage(data)) {\n\t\treturn null;\n\t}\n\n\treturn data;\n};\n\nexport const createAIConnection = (\n\tpath: string,\n\toptions: AIConnectionOptions = {}\n) => {\n\tif (typeof window === 'undefined') {\n\t\treturn NOOP_CONNECTION;\n\t}\n\n\tconst shouldReconnect = options.reconnect !== false;\n\tconst pingInterval = options.pingInterval ?? DEFAULT_PING_INTERVAL;\n\tconst maxReconnectAttempts =\n\t\toptions.maxReconnectAttempts ?? DEFAULT_MAX_RECONNECT_ATTEMPTS;\n\n\tconst listeners = new Set<(msg: AIServerMessage) => void>();\n\n\tconst connState: AIConnectionState = {\n\t\tisConnected: false,\n\t\tpingInterval: null,\n\t\treconnectAttempts: 0,\n\t\treconnectTimeout: null,\n\t\tws: null\n\t};\n\n\tconst clearTimers = () => {\n\t\tif (connState.pingInterval) {\n\t\t\tclearInterval(connState.pingInterval);\n\t\t\tconnState.pingInterval = null;\n\t\t}\n\n\t\tif (connState.reconnectTimeout) {\n\t\t\tclearTimeout(connState.reconnectTimeout);\n\t\t\tconnState.reconnectTimeout = null;\n\t\t}\n\t};\n\n\tconst scheduleReconnect = () => {\n\t\tconnState.reconnectAttempts++;\n\t\tconst delay =\n\t\t\tconnState.reconnectAttempts === 1\n\t\t\t\t? RECONNECT_INITIAL_DELAY\n\t\t\t\t: RECONNECT_POLL_INTERVAL;\n\n\t\tconnState.reconnectTimeout = setTimeout(() => {\n\t\t\tif (connState.reconnectAttempts > maxReconnectAttempts) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconnect();\n\t\t}, delay);\n\t};\n\n\tconst connect = () => {\n\t\tconst url = buildWsUrl(path);\n\t\tconst wsInstance = new WebSocket(url, options.protocols);\n\n\t\twsInstance.onopen = () => {\n\t\t\tconnState.isConnected = true;\n\t\t\tconnState.reconnectAttempts = 0;\n\n\t\t\tconnState.pingInterval = setInterval(() => {\n\t\t\t\tif (\n\t\t\t\t\twsInstance.readyState === WS_OPEN &&\n\t\t\t\t\tconnState.isConnected\n\t\t\t\t) {\n\t\t\t\t\twsInstance.send(JSON.stringify({ type: 'ping' }));\n\t\t\t\t}\n\t\t\t}, pingInterval);\n\t\t};\n\n\t\twsInstance.onmessage = (event: MessageEvent) => {\n\t\t\tconst message = parseServerMessage(event);\n\n\t\t\tif (!message) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlisteners.forEach((listener) => listener(message));\n\t\t};\n\n\t\twsInstance.onclose = (event: CloseEvent) => {\n\t\t\tconnState.isConnected = false;\n\t\t\tclearTimers();\n\n\t\t\tconst shouldAttemptReconnect =\n\t\t\t\tshouldReconnect &&\n\t\t\t\tevent.code !== WS_NORMAL_CLOSURE &&\n\t\t\t\tconnState.reconnectAttempts < maxReconnectAttempts;\n\n\t\t\tif (shouldAttemptReconnect) {\n\t\t\t\tscheduleReconnect();\n\t\t\t}\n\t\t};\n\n\t\twsInstance.onerror = () => {\n\t\t\t// Error is followed by close event, reconnection handled there\n\t\t};\n\n\t\tconnState.ws = wsInstance;\n\t};\n\n\tconst send = (msg: AIClientMessage) => {\n\t\tif (connState.ws?.readyState === WS_OPEN) {\n\t\t\tconnState.ws.send(JSON.stringify(msg));\n\t\t}\n\t};\n\n\tconst subscribe = (callback: (msg: AIServerMessage) => void) => {\n\t\tlisteners.add(callback);\n\n\t\treturn () => {\n\t\t\tlisteners.delete(callback);\n\t\t};\n\t};\n\n\tconst close = () => {\n\t\tclearTimers();\n\n\t\tif (connState.ws) {\n\t\t\tconnState.ws.close(WS_NORMAL_CLOSURE);\n\t\t\tconnState.ws = null;\n\t\t}\n\n\t\tconnState.isConnected = false;\n\t\tlisteners.clear();\n\t};\n\n\tconst getReadyState = () => connState.ws?.readyState ?? WS_CLOSED;\n\n\tconnect();\n\n\treturn { close, getReadyState, send, subscribe };\n};\n",
8
- "import type {\n\tAIConversation,\n\tRAGSource,\n\tAIImageData,\n\tAIMessage,\n\tAIStreamState,\n\tAIStoreAction,\n\tAIToolCall\n} from '../../../types/ai';\n\nconst EMPTY_STATE: AIStreamState = {\n\tactiveConversationId: null,\n\tconversations: new Map(),\n\terror: null,\n\tisStreaming: false\n};\n\nconst initialActiveConversationId: string | null = null;\nconst initialError: string | null = null;\n\n// eslint-disable-next-line absolute/no-useless-function -- returns a new instance each call\nconst freshState = () => ({\n\tactiveConversationId: initialActiveConversationId,\n\tconversations: new Map<string, AIConversation>(),\n\terror: initialError,\n\tisStreaming: false\n});\n\nconst findAssistantMessage = (\n\tconversation: AIConversation,\n\tmessageId: string\n) =>\n\tconversation.messages.find(\n\t\t(msg) => msg.id === messageId && msg.role === 'assistant'\n\t);\n\nconst getOrCreate = (state: AIStreamState, conversationId: string) => {\n\tlet conversation = state.conversations.get(conversationId);\n\n\tif (!conversation) {\n\t\tconversation = {\n\t\t\tcreatedAt: Date.now(),\n\t\t\tid: conversationId,\n\t\t\tmessages: []\n\t\t};\n\t\tstate.conversations.set(conversationId, conversation);\n\t}\n\n\treturn conversation;\n};\n\nconst handleSend = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'send' }\n) => {\n\tconst conversation = getOrCreate(state, action.conversationId);\n\tconst message: AIMessage = {\n\t\tattachments: action.attachments,\n\t\tcontent: action.content,\n\t\tconversationId: action.conversationId,\n\t\tid: action.messageId,\n\t\trole: 'user',\n\t\ttimestamp: Date.now()\n\t};\n\n\tconversation.messages = [...conversation.messages, message];\n\tstate.activeConversationId = action.conversationId;\n\tstate.error = null;\n\tstate.isStreaming = true;\n};\n\nconst handleChunk = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'chunk' }\n) => {\n\tconst conversation = getOrCreate(state, action.conversationId);\n\tconst existingIdx = conversation.messages.findIndex(\n\t\t(msg) => msg.id === action.messageId && msg.role === 'assistant'\n\t);\n\n\tif (existingIdx >= 0) {\n\t\tconst prevContent = conversation.messages[existingIdx]?.content ?? '';\n\t\tconversation.messages = conversation.messages.map((msg, idx) =>\n\t\t\tidx === existingIdx\n\t\t\t\t? { ...msg, content: prevContent + action.content }\n\t\t\t\t: msg\n\t\t);\n\n\t\treturn;\n\t}\n\n\tconst message: AIMessage = {\n\t\tcontent: action.content,\n\t\tconversationId: action.conversationId,\n\t\tid: action.messageId,\n\t\tisStreaming: true,\n\t\trole: 'assistant',\n\t\ttimestamp: Date.now()\n\t};\n\n\tconversation.messages = [...conversation.messages, message];\n};\n\nconst handleThinking = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'thinking' }\n) => {\n\tconst conversation = getOrCreate(state, action.conversationId);\n\tconst existingIdx = conversation.messages.findIndex(\n\t\t(msg) => msg.id === action.messageId && msg.role === 'assistant'\n\t);\n\n\tif (existingIdx >= 0) {\n\t\tconst prevThinking = conversation.messages[existingIdx]?.thinking ?? '';\n\t\tconversation.messages = conversation.messages.map((msg, idx) =>\n\t\t\tidx === existingIdx\n\t\t\t\t? { ...msg, thinking: prevThinking + action.content }\n\t\t\t\t: msg\n\t\t);\n\n\t\treturn;\n\t}\n\n\tconst message: AIMessage = {\n\t\tcontent: '',\n\t\tconversationId: action.conversationId,\n\t\tid: action.messageId,\n\t\tisStreaming: true,\n\t\trole: 'assistant',\n\t\tthinking: action.content,\n\t\ttimestamp: Date.now()\n\t};\n\n\tconversation.messages = [...conversation.messages, message];\n};\n\nconst upsertToolCall = (message: AIMessage, toolCall: AIToolCall) => {\n\tif (!message.toolCalls) {\n\t\tmessage.toolCalls = [toolCall];\n\n\t\treturn;\n\t}\n\n\tconst existingIdx = message.toolCalls.findIndex(\n\t\t(existing) => existing.name === toolCall.name\n\t);\n\n\tif (existingIdx >= 0) {\n\t\tmessage.toolCalls[existingIdx] = toolCall;\n\t} else {\n\t\tmessage.toolCalls = [...message.toolCalls, toolCall];\n\t}\n};\n\nconst getOrCreateAssistantMessage = (\n\tconversation: AIConversation,\n\tmessageId: string,\n\tconversationId: string\n) => {\n\tconst existing = findAssistantMessage(conversation, messageId);\n\n\tif (existing) {\n\t\treturn existing;\n\t}\n\n\tconst message: AIMessage = {\n\t\tcontent: '',\n\t\tconversationId,\n\t\tid: messageId,\n\t\tisStreaming: true,\n\t\trole: 'assistant',\n\t\ttimestamp: Date.now()\n\t};\n\tconversation.messages = [...conversation.messages, message];\n\n\treturn message;\n};\n\nconst handleRAGRetrieved = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'rag_retrieved' }\n) => {\n\tconst conversation = getOrCreate(state, action.conversationId);\n\tconst message = getOrCreateAssistantMessage(\n\t\tconversation,\n\t\taction.messageId,\n\t\taction.conversationId\n\t);\n\n\tmessage.sources = action.sources;\n\tconversation.messages = [...conversation.messages];\n};\n\nconst handleToolStatus = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'tool_status' }\n) => {\n\tconst conversation = getOrCreate(state, action.conversationId);\n\tconst message = getOrCreateAssistantMessage(\n\t\tconversation,\n\t\taction.messageId,\n\t\taction.conversationId\n\t);\n\n\tconst toolCall: AIToolCall = {\n\t\tid: action.messageId,\n\t\tinput: action.input,\n\t\tname: action.name,\n\t\tresult: action.status === 'complete' ? (action.result ?? '') : undefined\n\t};\n\n\tupsertToolCall(message, toolCall);\n\tconversation.messages = [...conversation.messages];\n};\n\nconst markMessageComplete = (\n\tconversation: AIConversation,\n\tmessageId: string,\n\tusage?: { inputTokens: number; outputTokens: number },\n\tdurationMs?: number,\n\tmodel?: string,\n\tsources?: RAGSource[]\n) => {\n\tconversation.messages = conversation.messages.map((msg) =>\n\t\tmsg.id === messageId && msg.role === 'assistant'\n\t\t\t? {\n\t\t\t\t\t...msg,\n\t\t\t\t\tdurationMs,\n\t\t\t\t\tisStreaming: false,\n\t\t\t\t\tmodel,\n\t\t\t\t\tsources: sources ?? msg.sources,\n\t\t\t\t\tusage\n\t\t\t\t}\n\t\t\t: msg\n\t);\n};\n\nconst NOT_FOUND = -1;\n\nconst findExistingImageById = (\n\timages: AIImageData[],\n\timageId: string | undefined\n) => {\n\tif (!imageId) return NOT_FOUND;\n\n\treturn images.findIndex((img) => img.imageId === imageId);\n};\n\nconst findReplaceablePartialIndex = (images: AIImageData[]) => {\n\tconst lastIdx = images.length - 1;\n\n\tif (lastIdx >= 0 && images[lastIdx]?.isPartial) {\n\t\treturn lastIdx;\n\t}\n\n\treturn NOT_FOUND;\n};\n\nconst upsertImage = (message: AIMessage, imageData: AIImageData) => {\n\tif (!message.images) {\n\t\tmessage.images = [imageData];\n\n\t\treturn;\n\t}\n\n\tconst existingIdx = findExistingImageById(\n\t\tmessage.images,\n\t\timageData.imageId\n\t);\n\n\tif (existingIdx >= 0) {\n\t\tmessage.images[existingIdx] = imageData;\n\n\t\treturn;\n\t}\n\n\tconst replaceableIdx = findReplaceablePartialIndex(message.images);\n\n\tif (replaceableIdx >= 0) {\n\t\tmessage.images[replaceableIdx] = imageData;\n\n\t\treturn;\n\t}\n\n\tmessage.images = [...message.images, imageData];\n};\n\nconst handleImage = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'image' }\n) => {\n\tconst conversation = getOrCreate(state, action.conversationId);\n\tconst message = getOrCreateAssistantMessage(\n\t\tconversation,\n\t\taction.messageId,\n\t\taction.conversationId\n\t);\n\n\tupsertImage(message, {\n\t\tdata: action.data,\n\t\tformat: action.format,\n\t\timageId: action.imageId,\n\t\tisPartial: action.isPartial,\n\t\trevisedPrompt: action.revisedPrompt\n\t});\n\n\tconversation.messages = [...conversation.messages];\n};\n\nconst handleComplete = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'complete' }\n) => {\n\tconst conversation = state.conversations.get(action.conversationId);\n\n\tif (conversation) {\n\t\tmarkMessageComplete(\n\t\t\tconversation,\n\t\t\taction.messageId,\n\t\t\taction.usage,\n\t\t\taction.durationMs,\n\t\t\taction.model,\n\t\t\taction.sources\n\t\t);\n\t}\n\n\tstate.isStreaming = false;\n};\n\nconst markConversationStreamsComplete = (conversation: AIConversation) => {\n\tconst streamingMessages = conversation.messages.filter(\n\t\t(msg) => msg.isStreaming\n\t);\n\n\tif (streamingMessages.length === 0) {\n\t\treturn;\n\t}\n\n\tfor (const msg of streamingMessages) {\n\t\tmsg.isStreaming = false;\n\t}\n\n\tconversation.messages = [...conversation.messages];\n};\n\nconst markAllStreamsComplete = (state: AIStreamState) => {\n\tfor (const [, conversation] of state.conversations) {\n\t\tmarkConversationStreamsComplete(conversation);\n\t}\n};\n\nconst handleBranch = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'branch' }\n) => {\n\tconst source = state.conversations.get(action.oldConversationId);\n\n\tif (!source) {\n\t\treturn;\n\t}\n\n\tconst cutoffIndex = source.messages.findIndex(\n\t\t(msg) => msg.id === action.fromMessageId\n\t);\n\n\tif (cutoffIndex < 0) {\n\t\treturn;\n\t}\n\n\tconst branchedMessages = source.messages\n\t\t.slice(0, cutoffIndex + 1)\n\t\t.map((msg) => ({ ...msg, conversationId: action.newConversationId }));\n\n\tconst newConversation: AIConversation = {\n\t\tcreatedAt: Date.now(),\n\t\tid: action.newConversationId,\n\t\tmessages: branchedMessages\n\t};\n\n\tstate.conversations.set(action.newConversationId, newConversation);\n\tstate.activeConversationId = action.newConversationId;\n};\n\nconst applyAction = (state: AIStreamState, action: AIStoreAction) => {\n\tswitch (action.type) {\n\t\tcase 'send':\n\t\t\thandleSend(state, action);\n\t\t\tbreak;\n\t\tcase 'chunk':\n\t\t\thandleChunk(state, action);\n\t\t\tbreak;\n\t\tcase 'thinking':\n\t\t\thandleThinking(state, action);\n\t\t\tbreak;\n\t\tcase 'tool_status':\n\t\t\thandleToolStatus(state, action);\n\t\t\tbreak;\n\t\tcase 'image':\n\t\t\thandleImage(state, action);\n\t\t\tbreak;\n\t\tcase 'complete':\n\t\t\thandleComplete(state, action);\n\t\t\tbreak;\n\t\tcase 'error':\n\t\t\tstate.error = action.message;\n\t\t\tstate.isStreaming = false;\n\t\t\tbreak;\n\t\tcase 'rag_retrieved':\n\t\t\thandleRAGRetrieved(state, action);\n\t\t\tbreak;\n\t\tcase 'cancel':\n\t\t\tstate.isStreaming = false;\n\t\t\tmarkAllStreamsComplete(state);\n\t\t\tbreak;\n\t\tcase 'branch':\n\t\t\thandleBranch(state, action);\n\t\t\tbreak;\n\t\tcase 'set_conversation':\n\t\t\tstate.activeConversationId = action.conversationId;\n\t\t\tbreak;\n\t}\n};\n\nexport const createAIMessageStore = () => {\n\tlet state = freshState();\n\tconst subscribers = new Set<() => void>();\n\n\treturn {\n\t\tdispatch: (action: AIStoreAction) => {\n\t\t\tapplyAction(state, action);\n\t\t\t// New reference so useSyncExternalStore detects the change\n\t\t\tstate = { ...state, conversations: new Map(state.conversations) };\n\t\t\tsubscribers.forEach((callback) => callback());\n\t\t},\n\t\tgetServerSnapshot: () => EMPTY_STATE,\n\t\tgetSnapshot: () => state,\n\t\tsubscribe: (callback: () => void) => {\n\t\t\tsubscribers.add(callback);\n\n\t\t\treturn () => {\n\t\t\t\tsubscribers.delete(callback);\n\t\t\t};\n\t\t}\n\t};\n};\n",
8
+ "import type {\n\tAIConversation,\n\tRAGSource,\n\tAIImageData,\n\tAIMessage,\n\tAIStreamState,\n\tAIStoreAction,\n\tAIToolCall\n} from '../../../types/ai';\n\nconst EMPTY_STATE: AIStreamState = {\n\tactiveConversationId: null,\n\tconversations: new Map(),\n\terror: null,\n\tisStreaming: false\n};\n\nconst initialActiveConversationId: string | null = null;\nconst initialError: string | null = null;\n\n// eslint-disable-next-line absolute/no-useless-function -- returns a new instance each call\nconst freshState = () => ({\n\tactiveConversationId: initialActiveConversationId,\n\tconversations: new Map<string, AIConversation>(),\n\terror: initialError,\n\tisStreaming: false\n});\n\nconst findAssistantMessage = (\n\tconversation: AIConversation,\n\tmessageId: string\n) =>\n\tconversation.messages.find(\n\t\t(msg) => msg.id === messageId && msg.role === 'assistant'\n\t);\n\nconst getOrCreate = (state: AIStreamState, conversationId: string) => {\n\tlet conversation = state.conversations.get(conversationId);\n\n\tif (!conversation) {\n\t\tconversation = {\n\t\t\tcreatedAt: Date.now(),\n\t\t\tid: conversationId,\n\t\t\tmessages: []\n\t\t};\n\t\tstate.conversations.set(conversationId, conversation);\n\t}\n\n\treturn conversation;\n};\n\nconst handleSend = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'send' }\n) => {\n\tconst conversation = getOrCreate(state, action.conversationId);\n\tconst message: AIMessage = {\n\t\tattachments: action.attachments,\n\t\tcontent: action.content,\n\t\tconversationId: action.conversationId,\n\t\tid: action.messageId,\n\t\trole: 'user',\n\t\ttimestamp: Date.now()\n\t};\n\n\tconversation.messages = [...conversation.messages, message];\n\tstate.activeConversationId = action.conversationId;\n\tstate.error = null;\n\tstate.isStreaming = true;\n};\n\nconst handleChunk = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'chunk' }\n) => {\n\tconst conversation = getOrCreate(state, action.conversationId);\n\tconst existingIdx = conversation.messages.findIndex(\n\t\t(msg) => msg.id === action.messageId && msg.role === 'assistant'\n\t);\n\n\tif (existingIdx >= 0) {\n\t\tconst prevContent = conversation.messages[existingIdx]?.content ?? '';\n\t\tconversation.messages = conversation.messages.map((msg, idx) =>\n\t\t\tidx === existingIdx\n\t\t\t\t? { ...msg, content: prevContent + action.content }\n\t\t\t\t: msg\n\t\t);\n\n\t\treturn;\n\t}\n\n\tconst message: AIMessage = {\n\t\tcontent: action.content,\n\t\tconversationId: action.conversationId,\n\t\tid: action.messageId,\n\t\tisStreaming: true,\n\t\trole: 'assistant',\n\t\ttimestamp: Date.now()\n\t};\n\n\tconversation.messages = [...conversation.messages, message];\n};\n\nconst handleThinking = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'thinking' }\n) => {\n\tconst conversation = getOrCreate(state, action.conversationId);\n\tconst existingIdx = conversation.messages.findIndex(\n\t\t(msg) => msg.id === action.messageId && msg.role === 'assistant'\n\t);\n\n\tif (existingIdx >= 0) {\n\t\tconst prevThinking = conversation.messages[existingIdx]?.thinking ?? '';\n\t\tconversation.messages = conversation.messages.map((msg, idx) =>\n\t\t\tidx === existingIdx\n\t\t\t\t? { ...msg, thinking: prevThinking + action.content }\n\t\t\t\t: msg\n\t\t);\n\n\t\treturn;\n\t}\n\n\tconst message: AIMessage = {\n\t\tcontent: '',\n\t\tconversationId: action.conversationId,\n\t\tid: action.messageId,\n\t\tisStreaming: true,\n\t\trole: 'assistant',\n\t\tthinking: action.content,\n\t\ttimestamp: Date.now()\n\t};\n\n\tconversation.messages = [...conversation.messages, message];\n};\n\nconst upsertToolCall = (message: AIMessage, toolCall: AIToolCall) => {\n\tif (!message.toolCalls) {\n\t\tmessage.toolCalls = [toolCall];\n\n\t\treturn;\n\t}\n\n\tconst existingIdx = message.toolCalls.findIndex(\n\t\t(existing) => existing.name === toolCall.name\n\t);\n\n\tif (existingIdx >= 0) {\n\t\tmessage.toolCalls[existingIdx] = toolCall;\n\t} else {\n\t\tmessage.toolCalls = [...message.toolCalls, toolCall];\n\t}\n};\n\nconst getOrCreateAssistantMessage = (\n\tconversation: AIConversation,\n\tmessageId: string,\n\tconversationId: string\n) => {\n\tconst existing = findAssistantMessage(conversation, messageId);\n\n\tif (existing) {\n\t\treturn existing;\n\t}\n\n\tconst message: AIMessage = {\n\t\tcontent: '',\n\t\tconversationId,\n\t\tid: messageId,\n\t\tisStreaming: true,\n\t\trole: 'assistant',\n\t\ttimestamp: Date.now()\n\t};\n\tconversation.messages = [...conversation.messages, message];\n\n\treturn message;\n};\n\nconst handleRAGRetrieved = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'rag_retrieved' }\n) => {\n\tconst conversation = getOrCreate(state, action.conversationId);\n\tconst message = getOrCreateAssistantMessage(\n\t\tconversation,\n\t\taction.messageId,\n\t\taction.conversationId\n\t);\n\n\tmessage.sources = action.sources;\n\tmessage.retrievedAt = Date.now();\n\tconversation.messages = [...conversation.messages];\n};\n\nconst handleToolStatus = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'tool_status' }\n) => {\n\tconst conversation = getOrCreate(state, action.conversationId);\n\tconst message = getOrCreateAssistantMessage(\n\t\tconversation,\n\t\taction.messageId,\n\t\taction.conversationId\n\t);\n\n\tconst toolCall: AIToolCall = {\n\t\tid: action.messageId,\n\t\tinput: action.input,\n\t\tname: action.name,\n\t\tresult: action.status === 'complete' ? (action.result ?? '') : undefined\n\t};\n\n\tupsertToolCall(message, toolCall);\n\tconversation.messages = [...conversation.messages];\n};\n\nconst markMessageComplete = (\n\tconversation: AIConversation,\n\tmessageId: string,\n\tusage?: { inputTokens: number; outputTokens: number },\n\tdurationMs?: number,\n\tmodel?: string,\n\tsources?: RAGSource[]\n) => {\n\tconversation.messages = conversation.messages.map((msg) =>\n\t\tmsg.id === messageId && msg.role === 'assistant'\n\t\t\t? {\n\t\t\t\t\t...msg,\n\t\t\t\t\tdurationMs,\n\t\t\t\t\tisStreaming: false,\n\t\t\t\t\tmodel,\n\t\t\t\t\tsources: sources ?? msg.sources,\n\t\t\t\t\tusage\n\t\t\t\t}\n\t\t\t: msg\n\t);\n};\n\nconst NOT_FOUND = -1;\n\nconst findExistingImageById = (\n\timages: AIImageData[],\n\timageId: string | undefined\n) => {\n\tif (!imageId) return NOT_FOUND;\n\n\treturn images.findIndex((img) => img.imageId === imageId);\n};\n\nconst findReplaceablePartialIndex = (images: AIImageData[]) => {\n\tconst lastIdx = images.length - 1;\n\n\tif (lastIdx >= 0 && images[lastIdx]?.isPartial) {\n\t\treturn lastIdx;\n\t}\n\n\treturn NOT_FOUND;\n};\n\nconst upsertImage = (message: AIMessage, imageData: AIImageData) => {\n\tif (!message.images) {\n\t\tmessage.images = [imageData];\n\n\t\treturn;\n\t}\n\n\tconst existingIdx = findExistingImageById(\n\t\tmessage.images,\n\t\timageData.imageId\n\t);\n\n\tif (existingIdx >= 0) {\n\t\tmessage.images[existingIdx] = imageData;\n\n\t\treturn;\n\t}\n\n\tconst replaceableIdx = findReplaceablePartialIndex(message.images);\n\n\tif (replaceableIdx >= 0) {\n\t\tmessage.images[replaceableIdx] = imageData;\n\n\t\treturn;\n\t}\n\n\tmessage.images = [...message.images, imageData];\n};\n\nconst handleImage = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'image' }\n) => {\n\tconst conversation = getOrCreate(state, action.conversationId);\n\tconst message = getOrCreateAssistantMessage(\n\t\tconversation,\n\t\taction.messageId,\n\t\taction.conversationId\n\t);\n\n\tupsertImage(message, {\n\t\tdata: action.data,\n\t\tformat: action.format,\n\t\timageId: action.imageId,\n\t\tisPartial: action.isPartial,\n\t\trevisedPrompt: action.revisedPrompt\n\t});\n\n\tconversation.messages = [...conversation.messages];\n};\n\nconst handleComplete = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'complete' }\n) => {\n\tconst conversation = state.conversations.get(action.conversationId);\n\n\tif (conversation) {\n\t\tmarkMessageComplete(\n\t\t\tconversation,\n\t\t\taction.messageId,\n\t\t\taction.usage,\n\t\t\taction.durationMs,\n\t\t\taction.model,\n\t\t\taction.sources\n\t\t);\n\t}\n\n\tstate.isStreaming = false;\n};\n\nconst markConversationStreamsComplete = (conversation: AIConversation) => {\n\tconst streamingMessages = conversation.messages.filter(\n\t\t(msg) => msg.isStreaming\n\t);\n\n\tif (streamingMessages.length === 0) {\n\t\treturn;\n\t}\n\n\tfor (const msg of streamingMessages) {\n\t\tmsg.isStreaming = false;\n\t}\n\n\tconversation.messages = [...conversation.messages];\n};\n\nconst markAllStreamsComplete = (state: AIStreamState) => {\n\tfor (const [, conversation] of state.conversations) {\n\t\tmarkConversationStreamsComplete(conversation);\n\t}\n};\n\nconst handleBranch = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'branch' }\n) => {\n\tconst source = state.conversations.get(action.oldConversationId);\n\n\tif (!source) {\n\t\treturn;\n\t}\n\n\tconst cutoffIndex = source.messages.findIndex(\n\t\t(msg) => msg.id === action.fromMessageId\n\t);\n\n\tif (cutoffIndex < 0) {\n\t\treturn;\n\t}\n\n\tconst branchedMessages = source.messages\n\t\t.slice(0, cutoffIndex + 1)\n\t\t.map((msg) => ({ ...msg, conversationId: action.newConversationId }));\n\n\tconst newConversation: AIConversation = {\n\t\tcreatedAt: Date.now(),\n\t\tid: action.newConversationId,\n\t\tmessages: branchedMessages\n\t};\n\n\tstate.conversations.set(action.newConversationId, newConversation);\n\tstate.activeConversationId = action.newConversationId;\n};\n\nconst applyAction = (state: AIStreamState, action: AIStoreAction) => {\n\tswitch (action.type) {\n\t\tcase 'send':\n\t\t\thandleSend(state, action);\n\t\t\tbreak;\n\t\tcase 'chunk':\n\t\t\thandleChunk(state, action);\n\t\t\tbreak;\n\t\tcase 'thinking':\n\t\t\thandleThinking(state, action);\n\t\t\tbreak;\n\t\tcase 'tool_status':\n\t\t\thandleToolStatus(state, action);\n\t\t\tbreak;\n\t\tcase 'image':\n\t\t\thandleImage(state, action);\n\t\t\tbreak;\n\t\tcase 'complete':\n\t\t\thandleComplete(state, action);\n\t\t\tbreak;\n\t\tcase 'error':\n\t\t\tstate.error = action.message;\n\t\t\tstate.isStreaming = false;\n\t\t\tbreak;\n\t\tcase 'rag_retrieved':\n\t\t\thandleRAGRetrieved(state, action);\n\t\t\tbreak;\n\t\tcase 'cancel':\n\t\t\tstate.isStreaming = false;\n\t\t\tmarkAllStreamsComplete(state);\n\t\t\tbreak;\n\t\tcase 'branch':\n\t\t\thandleBranch(state, action);\n\t\t\tbreak;\n\t\tcase 'set_conversation':\n\t\t\tstate.activeConversationId = action.conversationId;\n\t\t\tbreak;\n\t}\n};\n\nexport const createAIMessageStore = () => {\n\tlet state = freshState();\n\tconst subscribers = new Set<() => void>();\n\n\treturn {\n\t\tdispatch: (action: AIStoreAction) => {\n\t\t\tapplyAction(state, action);\n\t\t\t// New reference so useSyncExternalStore detects the change\n\t\t\tstate = { ...state, conversations: new Map(state.conversations) };\n\t\t\tsubscribers.forEach((callback) => callback());\n\t\t},\n\t\tgetServerSnapshot: () => EMPTY_STATE,\n\t\tgetSnapshot: () => state,\n\t\tsubscribe: (callback: () => void) => {\n\t\t\tsubscribers.add(callback);\n\n\t\t\treturn () => {\n\t\t\t\tsubscribers.delete(callback);\n\t\t\t};\n\t\t}\n\t};\n};\n",
9
9
  "import type { AIServerMessage } from '../../types/ai';\nimport { isValidAIClientMessage } from '../../types/typeGuards';\n\nexport const generateId = () => crypto.randomUUID();\n\nexport const parseAIMessage = (raw: unknown) => {\n\tif (raw === null || raw === undefined) {\n\t\treturn null;\n\t}\n\n\tlet text: string;\n\n\tif (typeof raw === 'string') {\n\t\ttext = raw;\n\t} else if (raw instanceof ArrayBuffer) {\n\t\ttext = new TextDecoder().decode(raw);\n\t} else if (ArrayBuffer.isView(raw)) {\n\t\ttext = new TextDecoder().decode(raw);\n\t} else if (typeof raw === 'object') {\n\t\tif (isValidAIClientMessage(raw)) {\n\t\t\treturn raw;\n\t\t}\n\n\t\treturn null;\n\t} else {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst parsed: unknown = JSON.parse(text);\n\n\t\tif (isValidAIClientMessage(parsed)) {\n\t\t\treturn parsed;\n\t\t}\n\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n};\n\nexport const serializeAIMessage = (msg: AIServerMessage) => JSON.stringify(msg);\n",
10
10
  "import type {\n\tAIAttachment,\n\tAIMessage,\n\tAIServerMessage\n} from '../../../types/ai';\nimport { serverMessageToAction } from './actions';\nimport { createAIConnection } from './connection';\nimport { createAIMessageStore } from './messageStore';\nimport { generateId } from '../protocol';\n\nexport const createAIStream = (path: string, conversationId?: string) => {\n\tconst connection = createAIConnection(path);\n\tconst store = createAIMessageStore();\n\tconst listeners = new Set<() => void>();\n\n\tlet currentError: string | null = null;\n\tlet currentIsStreaming = false;\n\tlet currentMessages: AIMessage[] = [];\n\tlet activeConversationId: string | null = conversationId ?? null;\n\n\tconst syncState = () => {\n\t\tconst snapshot = store.getSnapshot();\n\t\tconst convId = activeConversationId ?? snapshot.activeConversationId;\n\t\tconst conversation = convId\n\t\t\t? snapshot.conversations.get(convId)\n\t\t\t: undefined;\n\t\tactiveConversationId = convId ?? snapshot.activeConversationId;\n\t\tcurrentError = snapshot.error;\n\t\tcurrentIsStreaming = snapshot.isStreaming;\n\t\tcurrentMessages = conversation?.messages ?? [];\n\t\tlisteners.forEach((listener) => listener());\n\t};\n\n\tconst unsubscribeStore = store.subscribe(syncState);\n\n\tconst unsubscribeConnection = connection.subscribe(\n\t\t(msg: AIServerMessage) => {\n\t\t\tconst action = serverMessageToAction(msg);\n\t\t\tif (action) {\n\t\t\t\tstore.dispatch(action);\n\t\t\t}\n\t\t}\n\t);\n\n\tconst branch = (messageId: string, content: string) => {\n\t\tif (activeConversationId) {\n\t\t\tconnection.send({\n\t\t\t\tcontent,\n\t\t\t\tconversationId: activeConversationId,\n\t\t\t\tmessageId,\n\t\t\t\ttype: 'branch'\n\t\t\t});\n\t\t}\n\t};\n\n\tconst cancel = () => {\n\t\tif (activeConversationId) {\n\t\t\tstore.dispatch({ type: 'cancel' });\n\t\t\tconnection.send({\n\t\t\t\tconversationId: activeConversationId,\n\t\t\t\ttype: 'cancel'\n\t\t\t});\n\t\t}\n\t};\n\n\tconst destroy = () => {\n\t\tunsubscribeStore();\n\t\tunsubscribeConnection();\n\t\tconnection.close();\n\t\tlisteners.clear();\n\t};\n\n\tconst send = (content: string, attachments?: AIAttachment[]) => {\n\t\tconst convId = activeConversationId ?? generateId();\n\t\tconst msgId = generateId();\n\n\t\tstore.dispatch({\n\t\t\tattachments,\n\t\t\tcontent,\n\t\t\tconversationId: convId,\n\t\t\tmessageId: msgId,\n\t\t\ttype: 'send'\n\t\t});\n\n\t\tconnection.send({\n\t\t\tattachments,\n\t\t\tcontent,\n\t\t\tconversationId: convId,\n\t\t\ttype: 'message'\n\t\t});\n\t};\n\n\tconst subscribe = (callback: () => void) => {\n\t\tlisteners.add(callback);\n\n\t\treturn () => {\n\t\t\tlisteners.delete(callback);\n\t\t};\n\t};\n\n\treturn {\n\t\tbranch,\n\t\tcancel,\n\t\tdestroy,\n\t\tsend,\n\t\tsubscribe,\n\t\tget error() {\n\t\t\treturn currentError;\n\t\t},\n\t\tget isStreaming() {\n\t\t\treturn currentIsStreaming;\n\t\t},\n\t\tget messages() {\n\t\t\treturn currentMessages;\n\t\t}\n\t};\n};\n",
11
11
  "import type {\n\tRAGBackendsResponse,\n\tRAGDocumentChunksResponse,\n\tRAGDocumentIngestInput,\n\tRAGDocumentChunk,\n\tRAGDocumentsResponse,\n\tRAGIngestResponse,\n\tRAGMutationResponse,\n\tRAGSearchRequest,\n\tRAGSource,\n\tRAGStatusResponse\n} from '../../../types/ai';\n\ntype FetchLike = typeof fetch;\n\nexport type RAGClientOptions = {\n\tpath: string;\n\tfetch?: FetchLike;\n};\n\nconst jsonHeaders = {\n\t'Content-Type': 'application/json'\n};\n\nconst normalizeBasePath = (path: string) =>\n\tpath.endsWith('/') ? path.slice(0, -1) : path;\n\nconst parseJson = async <T>(response: Response): Promise<T> => {\n\tconst payload = (await response.json()) as T;\n\treturn payload;\n};\n\nconst toErrorMessage = async (response: Response) => {\n\ttry {\n\t\tconst payload = (await response.json()) as { error?: string };\n\t\tif (typeof payload.error === 'string' && payload.error) {\n\t\t\treturn payload.error;\n\t\t}\n\t} catch {\n\t\t// fall through\n\t}\n\n\treturn `Request failed with status ${response.status}`;\n};\n\nexport const createRAGClient = (options: RAGClientOptions) => {\n\tconst basePath = normalizeBasePath(options.path);\n\tconst fetchImpl = options.fetch ?? fetch;\n\n\treturn {\n\t\tasync ingest(chunks: RAGDocumentChunk[]): Promise<RAGIngestResponse> {\n\t\t\tconst response = await fetchImpl(`${basePath}/ingest`, {\n\t\t\t\tbody: JSON.stringify({ chunks }),\n\t\t\t\theaders: jsonHeaders,\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\terror: await toErrorMessage(response)\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGIngestResponse>(response);\n\t\t},\n\n\t\tasync ingestDocuments(\n\t\t\tinput: RAGDocumentIngestInput\n\t\t): Promise<RAGIngestResponse> {\n\t\t\tconst response = await fetchImpl(`${basePath}/ingest`, {\n\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\theaders: jsonHeaders,\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\terror: await toErrorMessage(response)\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGIngestResponse>(response);\n\t\t},\n\n\t\tasync search(input: RAGSearchRequest): Promise<RAGSource[]> {\n\t\t\tconst response = await fetchImpl(`${basePath}/search`, {\n\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\theaders: jsonHeaders,\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload = await parseJson<{\n\t\t\t\tok: boolean;\n\t\t\t\tresults?: RAGSource[];\n\t\t\t\terror?: string;\n\t\t\t}>(response);\n\n\t\t\tif (!payload.ok) {\n\t\t\t\tthrow new Error(payload.error ?? 'RAG search failed');\n\t\t\t}\n\n\t\t\treturn payload.results ?? [];\n\t\t},\n\n\t\tasync status(): Promise<RAGStatusResponse> {\n\t\t\tconst response = await fetchImpl(`${basePath}/status`);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<RAGStatusResponse>(response);\n\t\t},\n\n\t\tasync documents(kind?: string): Promise<RAGDocumentsResponse> {\n\t\t\tconst query = kind ? `?kind=${encodeURIComponent(kind)}` : '';\n\t\t\tconst response = await fetchImpl(`${basePath}/documents${query}`);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<RAGDocumentsResponse>(response);\n\t\t},\n\n\t\tasync createDocument(\n\t\t\tinput: RAGDocumentIngestInput['documents'][number]\n\t\t): Promise<RAGMutationResponse> {\n\t\t\tconst response = await fetchImpl(`${basePath}/documents`, {\n\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\theaders: jsonHeaders,\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\terror: await toErrorMessage(response)\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGMutationResponse>(response);\n\t\t},\n\n\t\tasync documentChunks(id: string): Promise<RAGDocumentChunksResponse> {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/documents/${encodeURIComponent(id)}/chunks`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tconst error = await toErrorMessage(response);\n\t\t\t\treturn { ok: false, error };\n\t\t\t}\n\n\t\t\treturn parseJson<RAGDocumentChunksResponse>(response);\n\t\t},\n\n\t\tasync deleteDocument(id: string): Promise<RAGMutationResponse> {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/documents/${encodeURIComponent(id)}`,\n\t\t\t\t{\n\t\t\t\t\tmethod: 'DELETE'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\terror: await toErrorMessage(response)\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGMutationResponse>(response);\n\t\t},\n\n\t\tasync reseed(): Promise<RAGMutationResponse> {\n\t\t\tconst response = await fetchImpl(`${basePath}/reseed`, {\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\terror: await toErrorMessage(response)\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGMutationResponse>(response);\n\t\t},\n\n\t\tasync reset(): Promise<RAGMutationResponse> {\n\t\t\tconst response = await fetchImpl(`${basePath}/reset`, {\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\terror: await toErrorMessage(response)\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGMutationResponse>(response);\n\t\t},\n\n\t\tasync backends(): Promise<RAGBackendsResponse> {\n\t\t\tconst response = await fetchImpl(`${basePath}/backends`);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<RAGBackendsResponse>(response);\n\t\t},\n\n\t\tasync clearIndex(): Promise<{ ok: boolean }> {\n\t\t\tconst response = await fetchImpl(`${basePath}/index`, {\n\t\t\t\tmethod: 'DELETE'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<{ ok: boolean }>(response);\n\t\t}\n\t};\n};\n\nexport type RAGClient = ReturnType<typeof createRAGClient>;\n"
12
12
  ],
13
- "mappings": "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",
14
- "debugId": "DD02FD09848D3D2A64756E2164756E21",
13
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIa,yBAAyB,CACrC,SAC6B;AAAA,EAC7B,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,IACtC,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,EAAE,UAAU,SAAS,OAAO,KAAK,SAAS,UAAU;AAAA,IACvD,OAAO;AAAA,EACR;AAAA,EAEA,QAAQ,KAAK;AAAA,SACP;AAAA,MACJ,OAAO,aAAa,QAAQ,OAAO,KAAK,YAAY;AAAA,SAChD;AAAA,MACJ,OACC,oBAAoB,QACpB,OAAO,KAAK,mBAAmB;AAAA,SAE5B;AAAA,MACJ,OACC,eAAe,QACf,OAAO,KAAK,cAAc,YAC1B,aAAa,QACb,OAAO,KAAK,YAAY,YACxB,oBAAoB,QACpB,OAAO,KAAK,mBAAmB;AAAA;AAAA,MAGhC,OAAO;AAAA;AAAA,GAKG,yBAAyB,CACrC,SAC6B;AAAA,EAC7B,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,IACtC,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,EAAE,UAAU,SAAS,OAAO,KAAK,SAAS,UAAU;AAAA,IACvD,OAAO;AAAA,EACR;AAAA,EAEA,QAAQ,KAAK;AAAA,SACP;AAAA,MACJ,OACC,aAAa,QACb,OAAO,KAAK,YAAY,YACxB,eAAe,QACf,oBAAoB;AAAA,SAEjB;AAAA,MACJ,OACC,aAAa,QACb,OAAO,KAAK,YAAY,YACxB,eAAe,QACf,oBAAoB;AAAA,SAEjB;AAAA,MACJ,OACC,UAAU,QACV,YAAY,QACZ,eAAe,QACf,oBAAoB;AAAA,SAEjB;AAAA,MACJ,OACC,UAAU,QACV,OAAO,KAAK,SAAS,YACrB,YAAY,QACZ,OAAO,KAAK,WAAW,YACvB,eAAe,QACf,OAAO,KAAK,cAAc,aAC1B,eAAe,QACf,oBAAoB;AAAA,SAEjB;AAAA,MACJ,OAAO,eAAe,QAAQ,oBAAoB;AAAA,SAC9C;AAAA,MACJ,OACC,oBAAoB,QACpB,eAAe,QACf,aAAa,QACb,MAAM,QAAQ,KAAK,OAAO;AAAA,SAEvB;AAAA,MACJ,OAAO,aAAa,QAAQ,OAAO,KAAK,YAAY;AAAA;AAAA,MAEpD,OAAO;AAAA;AAAA,GAKG,0BAA0B,CACtC,SAC8B;AAAA,EAC9B,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,IACtC,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,EAAE,UAAU,SAAS,OAAO,KAAK,SAAS,UAAU;AAAA,IACvD,OAAO;AAAA,EACR;AAAA,EAEA,QAAQ,KAAK;AAAA,SACP;AAAA,MACJ,OAAO;AAAA,SACH;AAAA,MACJ,OAAO;AAAA,SACH;AAAA,MACJ,OAAO;AAAA,SACH;AAAA,MACJ,OAAO;AAAA,SACH;AAAA,MACJ,OAAO;AAAA;AAAA,MAEP,OAAO;AAAA;AAAA;;;ACxHH,IAAM,wBAAwB,CAAC,QAAyB;AAAA,EAC9D,QAAQ,IAAI;AAAA,SACN;AAAA,MACJ,OAAO;AAAA,QACN,SAAS,IAAI;AAAA,QACb,gBAAgB,IAAI;AAAA,QACpB,WAAW,IAAI;AAAA,QACf,MAAM;AAAA,MACP;AAAA,SACI;AAAA,MACJ,OAAO;AAAA,QACN,SAAS,IAAI;AAAA,QACb,gBAAgB,IAAI;AAAA,QACpB,WAAW,IAAI;AAAA,QACf,MAAM;AAAA,MACP;AAAA,SACI;AAAA,MACJ,OAAO;AAAA,QACN,gBAAgB,IAAI;AAAA,QACpB,OAAO,IAAI;AAAA,QACX,WAAW,IAAI;AAAA,QACf,MAAM,IAAI;AAAA,QACV,QAAQ,IAAI;AAAA,QACZ,QAAQ,IAAI;AAAA,QACZ,MAAM;AAAA,MACP;AAAA,SACI;AAAA,MACJ,OAAO;AAAA,QACN,gBAAgB,IAAI;AAAA,QACpB,MAAM,IAAI;AAAA,QACV,QAAQ,IAAI;AAAA,QACZ,SAAS,IAAI;AAAA,QACb,WAAW,IAAI;AAAA,QACf,WAAW,IAAI;AAAA,QACf,eAAe,IAAI;AAAA,QACnB,MAAM;AAAA,MACP;AAAA,SACI;AAAA,MACJ,OAAO;AAAA,QACN,gBAAgB,IAAI;AAAA,QACpB,YAAY,IAAI;AAAA,QAChB,WAAW,IAAI;AAAA,QACf,OAAO,IAAI;AAAA,QACX,SAAS,IAAI;AAAA,QACb,MAAM;AAAA,QACN,OAAO,IAAI;AAAA,MACZ;AAAA,SACI;AAAA,MACJ,OAAO;AAAA,QACN,gBAAgB,IAAI;AAAA,QACpB,WAAW,IAAI;AAAA,QACf,SAAS,IAAI;AAAA,QACb,MAAM;AAAA,MACP;AAAA,SACI;AAAA,MACJ,OAAO,EAAE,SAAS,IAAI,SAAS,MAAM,QAAiB;AAAA;AAAA,MAEtD,OAAO;AAAA;AAAA;;;ACpDV,IAAM,UAAU;AAChB,IAAM,oBAAoB;AAC1B,IAAM,YAAY;AAClB,IAAM,wBAAwB;AAC9B,IAAM,0BAA0B;AAChC,IAAM,0BAA0B;AAChC,IAAM,iCAAiC;AAkBvC,IAAM,OAAO,MAAM;AACnB,IAAM,kBAAkB,MAAM;AAE9B,IAAM,kBAAsC;AAAA,EAC3C,OAAO;AAAA,EACP,MAAM;AAAA,EACN,WAAW;AAAA,EACX,eAAe,MAAM;AACtB;AAEA,IAAM,aAAa,CAAC,SAAiB;AAAA,EACpC,QAAQ,UAAU,MAAM,aAAa,OAAO;AAAA,EAC5C,MAAM,aAAa,aAAa,WAAW,SAAS;AAAA,EACpD,MAAM,aAAa,OAAO,IAAI,SAAS;AAAA,EAEvC,OAAO,GAAG,eAAe,WAAW,aAAa;AAAA;AAGlD,IAAM,qBAAqB,CAAC,UAAwB;AAAA,EACnD,IAAI;AAAA,EAEJ,IAAI;AAAA,IACH,OAAO,KAAK,MAAM,OAAO,MAAM,IAAI,CAAC;AAAA,IACnC,MAAM;AAAA,IACP,OAAO;AAAA;AAAA,EAGR,IACC,QACA,OAAO,SAAS,YAChB,UAAU,QACV,KAAK,SAAS,QACb;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,CAAC,uBAAuB,IAAI,GAAG;AAAA,IAClC,OAAO;AAAA,EACR;AAAA,EAEA,OAAO;AAAA;AAGD,IAAM,qBAAqB,CACjC,MACA,UAA+B,CAAC,MAC5B;AAAA,EACJ,IAAI,OAAO,WAAW,aAAa;AAAA,IAClC,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,kBAAkB,QAAQ,cAAc;AAAA,EAC9C,MAAM,eAAe,QAAQ,gBAAgB;AAAA,EAC7C,MAAM,uBACL,QAAQ,wBAAwB;AAAA,EAEjC,MAAM,YAAY,IAAI;AAAA,EAEtB,MAAM,YAA+B;AAAA,IACpC,aAAa;AAAA,IACb,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,kBAAkB;AAAA,IAClB,IAAI;AAAA,EACL;AAAA,EAEA,MAAM,cAAc,MAAM;AAAA,IACzB,IAAI,UAAU,cAAc;AAAA,MAC3B,cAAc,UAAU,YAAY;AAAA,MACpC,UAAU,eAAe;AAAA,IAC1B;AAAA,IAEA,IAAI,UAAU,kBAAkB;AAAA,MAC/B,aAAa,UAAU,gBAAgB;AAAA,MACvC,UAAU,mBAAmB;AAAA,IAC9B;AAAA;AAAA,EAGD,MAAM,oBAAoB,MAAM;AAAA,IAC/B,UAAU;AAAA,IACV,MAAM,QACL,UAAU,sBAAsB,IAC7B,0BACA;AAAA,IAEJ,UAAU,mBAAmB,WAAW,MAAM;AAAA,MAC7C,IAAI,UAAU,oBAAoB,sBAAsB;AAAA,QACvD;AAAA,MACD;AAAA,MAEA,QAAQ;AAAA,OACN,KAAK;AAAA;AAAA,EAGT,MAAM,UAAU,MAAM;AAAA,IACrB,MAAM,MAAM,WAAW,IAAI;AAAA,IAC3B,MAAM,aAAa,IAAI,UAAU,KAAK,QAAQ,SAAS;AAAA,IAEvD,WAAW,SAAS,MAAM;AAAA,MACzB,UAAU,cAAc;AAAA,MACxB,UAAU,oBAAoB;AAAA,MAE9B,UAAU,eAAe,YAAY,MAAM;AAAA,QAC1C,IACC,WAAW,eAAe,WAC1B,UAAU,aACT;AAAA,UACD,WAAW,KAAK,KAAK,UAAU,EAAE,MAAM,OAAO,CAAC,CAAC;AAAA,QACjD;AAAA,SACE,YAAY;AAAA;AAAA,IAGhB,WAAW,YAAY,CAAC,UAAwB;AAAA,MAC/C,MAAM,UAAU,mBAAmB,KAAK;AAAA,MAExC,IAAI,CAAC,SAAS;AAAA,QACb;AAAA,MACD;AAAA,MAEA,UAAU,QAAQ,CAAC,aAAa,SAAS,OAAO,CAAC;AAAA;AAAA,IAGlD,WAAW,UAAU,CAAC,UAAsB;AAAA,MAC3C,UAAU,cAAc;AAAA,MACxB,YAAY;AAAA,MAEZ,MAAM,yBACL,mBACA,MAAM,SAAS,qBACf,UAAU,oBAAoB;AAAA,MAE/B,IAAI,wBAAwB;AAAA,QAC3B,kBAAkB;AAAA,MACnB;AAAA;AAAA,IAGD,WAAW,UAAU,MAAM;AAAA,IAI3B,UAAU,KAAK;AAAA;AAAA,EAGhB,MAAM,OAAO,CAAC,QAAyB;AAAA,IACtC,IAAI,UAAU,IAAI,eAAe,SAAS;AAAA,MACzC,UAAU,GAAG,KAAK,KAAK,UAAU,GAAG,CAAC;AAAA,IACtC;AAAA;AAAA,EAGD,MAAM,YAAY,CAAC,aAA6C;AAAA,IAC/D,UAAU,IAAI,QAAQ;AAAA,IAEtB,OAAO,MAAM;AAAA,MACZ,UAAU,OAAO,QAAQ;AAAA;AAAA;AAAA,EAI3B,MAAM,QAAQ,MAAM;AAAA,IACnB,YAAY;AAAA,IAEZ,IAAI,UAAU,IAAI;AAAA,MACjB,UAAU,GAAG,MAAM,iBAAiB;AAAA,MACpC,UAAU,KAAK;AAAA,IAChB;AAAA,IAEA,UAAU,cAAc;AAAA,IACxB,UAAU,MAAM;AAAA;AAAA,EAGjB,MAAM,gBAAgB,MAAM,UAAU,IAAI,cAAc;AAAA,EAExD,QAAQ;AAAA,EAER,OAAO,EAAE,OAAO,eAAe,MAAM,UAAU;AAAA;;;AClMhD,IAAM,cAA6B;AAAA,EAClC,sBAAsB;AAAA,EACtB,eAAe,IAAI;AAAA,EACnB,OAAO;AAAA,EACP,aAAa;AACd;AAEA,IAAM,8BAA6C;AACnD,IAAM,eAA8B;AAGpC,IAAM,aAAa,OAAO;AAAA,EACzB,sBAAsB;AAAA,EACtB,eAAe,IAAI;AAAA,EACnB,OAAO;AAAA,EACP,aAAa;AACd;AAEA,IAAM,uBAAuB,CAC5B,cACA,cAEA,aAAa,SAAS,KACrB,CAAC,QAAQ,IAAI,OAAO,aAAa,IAAI,SAAS,WAC/C;AAED,IAAM,cAAc,CAAC,OAAsB,mBAA2B;AAAA,EACrE,IAAI,eAAe,MAAM,cAAc,IAAI,cAAc;AAAA,EAEzD,IAAI,CAAC,cAAc;AAAA,IAClB,eAAe;AAAA,MACd,WAAW,KAAK,IAAI;AAAA,MACpB,IAAI;AAAA,MACJ,UAAU,CAAC;AAAA,IACZ;AAAA,IACA,MAAM,cAAc,IAAI,gBAAgB,YAAY;AAAA,EACrD;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,aAAa,CAClB,OACA,WACI;AAAA,EACJ,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,UAAqB;AAAA,IAC1B,aAAa,OAAO;AAAA,IACpB,SAAS,OAAO;AAAA,IAChB,gBAAgB,OAAO;AAAA,IACvB,IAAI,OAAO;AAAA,IACX,MAAM;AAAA,IACN,WAAW,KAAK,IAAI;AAAA,EACrB;AAAA,EAEA,aAAa,WAAW,CAAC,GAAG,aAAa,UAAU,OAAO;AAAA,EAC1D,MAAM,uBAAuB,OAAO;AAAA,EACpC,MAAM,QAAQ;AAAA,EACd,MAAM,cAAc;AAAA;AAGrB,IAAM,cAAc,CACnB,OACA,WACI;AAAA,EACJ,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,cAAc,aAAa,SAAS,UACzC,CAAC,QAAQ,IAAI,OAAO,OAAO,aAAa,IAAI,SAAS,WACtD;AAAA,EAEA,IAAI,eAAe,GAAG;AAAA,IACrB,MAAM,cAAc,aAAa,SAAS,cAAc,WAAW;AAAA,IACnE,aAAa,WAAW,aAAa,SAAS,IAAI,CAAC,KAAK,QACvD,QAAQ,cACL,KAAK,KAAK,SAAS,cAAc,OAAO,QAAQ,IAChD,GACJ;AAAA,IAEA;AAAA,EACD;AAAA,EAEA,MAAM,UAAqB;AAAA,IAC1B,SAAS,OAAO;AAAA,IAChB,gBAAgB,OAAO;AAAA,IACvB,IAAI,OAAO;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,WAAW,KAAK,IAAI;AAAA,EACrB;AAAA,EAEA,aAAa,WAAW,CAAC,GAAG,aAAa,UAAU,OAAO;AAAA;AAG3D,IAAM,iBAAiB,CACtB,OACA,WACI;AAAA,EACJ,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,cAAc,aAAa,SAAS,UACzC,CAAC,QAAQ,IAAI,OAAO,OAAO,aAAa,IAAI,SAAS,WACtD;AAAA,EAEA,IAAI,eAAe,GAAG;AAAA,IACrB,MAAM,eAAe,aAAa,SAAS,cAAc,YAAY;AAAA,IACrE,aAAa,WAAW,aAAa,SAAS,IAAI,CAAC,KAAK,QACvD,QAAQ,cACL,KAAK,KAAK,UAAU,eAAe,OAAO,QAAQ,IAClD,GACJ;AAAA,IAEA;AAAA,EACD;AAAA,EAEA,MAAM,UAAqB;AAAA,IAC1B,SAAS;AAAA,IACT,gBAAgB,OAAO;AAAA,IACvB,IAAI,OAAO;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,UAAU,OAAO;AAAA,IACjB,WAAW,KAAK,IAAI;AAAA,EACrB;AAAA,EAEA,aAAa,WAAW,CAAC,GAAG,aAAa,UAAU,OAAO;AAAA;AAG3D,IAAM,iBAAiB,CAAC,SAAoB,aAAyB;AAAA,EACpE,IAAI,CAAC,QAAQ,WAAW;AAAA,IACvB,QAAQ,YAAY,CAAC,QAAQ;AAAA,IAE7B;AAAA,EACD;AAAA,EAEA,MAAM,cAAc,QAAQ,UAAU,UACrC,CAAC,aAAa,SAAS,SAAS,SAAS,IAC1C;AAAA,EAEA,IAAI,eAAe,GAAG;AAAA,IACrB,QAAQ,UAAU,eAAe;AAAA,EAClC,EAAO;AAAA,IACN,QAAQ,YAAY,CAAC,GAAG,QAAQ,WAAW,QAAQ;AAAA;AAAA;AAIrD,IAAM,8BAA8B,CACnC,cACA,WACA,mBACI;AAAA,EACJ,MAAM,WAAW,qBAAqB,cAAc,SAAS;AAAA,EAE7D,IAAI,UAAU;AAAA,IACb,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,UAAqB;AAAA,IAC1B,SAAS;AAAA,IACT;AAAA,IACA,IAAI;AAAA,IACJ,aAAa;AAAA,IACb,MAAM;AAAA,IACN,WAAW,KAAK,IAAI;AAAA,EACrB;AAAA,EACA,aAAa,WAAW,CAAC,GAAG,aAAa,UAAU,OAAO;AAAA,EAE1D,OAAO;AAAA;AAGR,IAAM,qBAAqB,CAC1B,OACA,WACI;AAAA,EACJ,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,UAAU,4BACf,cACA,OAAO,WACP,OAAO,cACR;AAAA,EAEA,QAAQ,UAAU,OAAO;AAAA,EACzB,QAAQ,cAAc,KAAK,IAAI;AAAA,EAC/B,aAAa,WAAW,CAAC,GAAG,aAAa,QAAQ;AAAA;AAGlD,IAAM,mBAAmB,CACxB,OACA,WACI;AAAA,EACJ,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,UAAU,4BACf,cACA,OAAO,WACP,OAAO,cACR;AAAA,EAEA,MAAM,WAAuB;AAAA,IAC5B,IAAI,OAAO;AAAA,IACX,OAAO,OAAO;AAAA,IACd,MAAM,OAAO;AAAA,IACb,QAAQ,OAAO,WAAW,aAAc,OAAO,UAAU,KAAM;AAAA,EAChE;AAAA,EAEA,eAAe,SAAS,QAAQ;AAAA,EAChC,aAAa,WAAW,CAAC,GAAG,aAAa,QAAQ;AAAA;AAGlD,IAAM,sBAAsB,CAC3B,cACA,WACA,OACA,YACA,OACA,YACI;AAAA,EACJ,aAAa,WAAW,aAAa,SAAS,IAAI,CAAC,QAClD,IAAI,OAAO,aAAa,IAAI,SAAS,cAClC;AAAA,OACG;AAAA,IACH;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA,SAAS,WAAW,IAAI;AAAA,IACxB;AAAA,EACD,IACC,GACJ;AAAA;AAGD,IAAM,YAAY;AAElB,IAAM,wBAAwB,CAC7B,QACA,YACI;AAAA,EACJ,IAAI,CAAC;AAAA,IAAS,OAAO;AAAA,EAErB,OAAO,OAAO,UAAU,CAAC,QAAQ,IAAI,YAAY,OAAO;AAAA;AAGzD,IAAM,8BAA8B,CAAC,WAA0B;AAAA,EAC9D,MAAM,UAAU,OAAO,SAAS;AAAA,EAEhC,IAAI,WAAW,KAAK,OAAO,UAAU,WAAW;AAAA,IAC/C,OAAO;AAAA,EACR;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,cAAc,CAAC,SAAoB,cAA2B;AAAA,EACnE,IAAI,CAAC,QAAQ,QAAQ;AAAA,IACpB,QAAQ,SAAS,CAAC,SAAS;AAAA,IAE3B;AAAA,EACD;AAAA,EAEA,MAAM,cAAc,sBACnB,QAAQ,QACR,UAAU,OACX;AAAA,EAEA,IAAI,eAAe,GAAG;AAAA,IACrB,QAAQ,OAAO,eAAe;AAAA,IAE9B;AAAA,EACD;AAAA,EAEA,MAAM,iBAAiB,4BAA4B,QAAQ,MAAM;AAAA,EAEjE,IAAI,kBAAkB,GAAG;AAAA,IACxB,QAAQ,OAAO,kBAAkB;AAAA,IAEjC;AAAA,EACD;AAAA,EAEA,QAAQ,SAAS,CAAC,GAAG,QAAQ,QAAQ,SAAS;AAAA;AAG/C,IAAM,cAAc,CACnB,OACA,WACI;AAAA,EACJ,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,UAAU,4BACf,cACA,OAAO,WACP,OAAO,cACR;AAAA,EAEA,YAAY,SAAS;AAAA,IACpB,MAAM,OAAO;AAAA,IACb,QAAQ,OAAO;AAAA,IACf,SAAS,OAAO;AAAA,IAChB,WAAW,OAAO;AAAA,IAClB,eAAe,OAAO;AAAA,EACvB,CAAC;AAAA,EAED,aAAa,WAAW,CAAC,GAAG,aAAa,QAAQ;AAAA;AAGlD,IAAM,iBAAiB,CACtB,OACA,WACI;AAAA,EACJ,MAAM,eAAe,MAAM,cAAc,IAAI,OAAO,cAAc;AAAA,EAElE,IAAI,cAAc;AAAA,IACjB,oBACC,cACA,OAAO,WACP,OAAO,OACP,OAAO,YACP,OAAO,OACP,OAAO,OACR;AAAA,EACD;AAAA,EAEA,MAAM,cAAc;AAAA;AAGrB,IAAM,kCAAkC,CAAC,iBAAiC;AAAA,EACzE,MAAM,oBAAoB,aAAa,SAAS,OAC/C,CAAC,QAAQ,IAAI,WACd;AAAA,EAEA,IAAI,kBAAkB,WAAW,GAAG;AAAA,IACnC;AAAA,EACD;AAAA,EAEA,WAAW,OAAO,mBAAmB;AAAA,IACpC,IAAI,cAAc;AAAA,EACnB;AAAA,EAEA,aAAa,WAAW,CAAC,GAAG,aAAa,QAAQ;AAAA;AAGlD,IAAM,yBAAyB,CAAC,UAAyB;AAAA,EACxD,cAAc,iBAAiB,MAAM,eAAe;AAAA,IACnD,gCAAgC,YAAY;AAAA,EAC7C;AAAA;AAGD,IAAM,eAAe,CACpB,OACA,WACI;AAAA,EACJ,MAAM,SAAS,MAAM,cAAc,IAAI,OAAO,iBAAiB;AAAA,EAE/D,IAAI,CAAC,QAAQ;AAAA,IACZ;AAAA,EACD;AAAA,EAEA,MAAM,cAAc,OAAO,SAAS,UACnC,CAAC,QAAQ,IAAI,OAAO,OAAO,aAC5B;AAAA,EAEA,IAAI,cAAc,GAAG;AAAA,IACpB;AAAA,EACD;AAAA,EAEA,MAAM,mBAAmB,OAAO,SAC9B,MAAM,GAAG,cAAc,CAAC,EACxB,IAAI,CAAC,SAAS,KAAK,KAAK,gBAAgB,OAAO,kBAAkB,EAAE;AAAA,EAErE,MAAM,kBAAkC;AAAA,IACvC,WAAW,KAAK,IAAI;AAAA,IACpB,IAAI,OAAO;AAAA,IACX,UAAU;AAAA,EACX;AAAA,EAEA,MAAM,cAAc,IAAI,OAAO,mBAAmB,eAAe;AAAA,EACjE,MAAM,uBAAuB,OAAO;AAAA;AAGrC,IAAM,cAAc,CAAC,OAAsB,WAA0B;AAAA,EACpE,QAAQ,OAAO;AAAA,SACT;AAAA,MACJ,WAAW,OAAO,MAAM;AAAA,MACxB;AAAA,SACI;AAAA,MACJ,YAAY,OAAO,MAAM;AAAA,MACzB;AAAA,SACI;AAAA,MACJ,eAAe,OAAO,MAAM;AAAA,MAC5B;AAAA,SACI;AAAA,MACJ,iBAAiB,OAAO,MAAM;AAAA,MAC9B;AAAA,SACI;AAAA,MACJ,YAAY,OAAO,MAAM;AAAA,MACzB;AAAA,SACI;AAAA,MACJ,eAAe,OAAO,MAAM;AAAA,MAC5B;AAAA,SACI;AAAA,MACJ,MAAM,QAAQ,OAAO;AAAA,MACrB,MAAM,cAAc;AAAA,MACpB;AAAA,SACI;AAAA,MACJ,mBAAmB,OAAO,MAAM;AAAA,MAChC;AAAA,SACI;AAAA,MACJ,MAAM,cAAc;AAAA,MACpB,uBAAuB,KAAK;AAAA,MAC5B;AAAA,SACI;AAAA,MACJ,aAAa,OAAO,MAAM;AAAA,MAC1B;AAAA,SACI;AAAA,MACJ,MAAM,uBAAuB,OAAO;AAAA,MACpC;AAAA;AAAA;AAII,IAAM,uBAAuB,MAAM;AAAA,EACzC,IAAI,QAAQ,WAAW;AAAA,EACvB,MAAM,cAAc,IAAI;AAAA,EAExB,OAAO;AAAA,IACN,UAAU,CAAC,WAA0B;AAAA,MACpC,YAAY,OAAO,MAAM;AAAA,MAEzB,QAAQ,KAAK,OAAO,eAAe,IAAI,IAAI,MAAM,aAAa,EAAE;AAAA,MAChE,YAAY,QAAQ,CAAC,aAAa,SAAS,CAAC;AAAA;AAAA,IAE7C,mBAAmB,MAAM;AAAA,IACzB,aAAa,MAAM;AAAA,IACnB,WAAW,CAAC,aAAyB;AAAA,MACpC,YAAY,IAAI,QAAQ;AAAA,MAExB,OAAO,MAAM;AAAA,QACZ,YAAY,OAAO,QAAQ;AAAA;AAAA;AAAA,EAG9B;AAAA;;;ACzbM,IAAM,aAAa,MAAM,OAAO,WAAW;AAE3C,IAAM,iBAAiB,CAAC,QAAiB;AAAA,EAC/C,IAAI,QAAQ,QAAQ,QAAQ,WAAW;AAAA,IACtC,OAAO;AAAA,EACR;AAAA,EAEA,IAAI;AAAA,EAEJ,IAAI,OAAO,QAAQ,UAAU;AAAA,IAC5B,OAAO;AAAA,EACR,EAAO,SAAI,eAAe,aAAa;AAAA,IACtC,OAAO,IAAI,YAAY,EAAE,OAAO,GAAG;AAAA,EACpC,EAAO,SAAI,YAAY,OAAO,GAAG,GAAG;AAAA,IACnC,OAAO,IAAI,YAAY,EAAE,OAAO,GAAG;AAAA,EACpC,EAAO,SAAI,OAAO,QAAQ,UAAU;AAAA,IACnC,IAAI,uBAAuB,GAAG,GAAG;AAAA,MAChC,OAAO;AAAA,IACR;AAAA,IAEA,OAAO;AAAA,EACR,EAAO;AAAA,IACN,OAAO;AAAA;AAAA,EAGR,IAAI;AAAA,IACH,MAAM,SAAkB,KAAK,MAAM,IAAI;AAAA,IAEvC,IAAI,uBAAuB,MAAM,GAAG;AAAA,MACnC,OAAO;AAAA,IACR;AAAA,IAEA,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIF,IAAM,qBAAqB,CAAC,QAAyB,KAAK,UAAU,GAAG;;;AC/BvE,IAAM,iBAAiB,CAAC,MAAc,mBAA4B;AAAA,EACxE,MAAM,aAAa,mBAAmB,IAAI;AAAA,EAC1C,MAAM,QAAQ,qBAAqB;AAAA,EACnC,MAAM,YAAY,IAAI;AAAA,EAEtB,IAAI,eAA8B;AAAA,EAClC,IAAI,qBAAqB;AAAA,EACzB,IAAI,kBAA+B,CAAC;AAAA,EACpC,IAAI,uBAAsC,kBAAkB;AAAA,EAE5D,MAAM,YAAY,MAAM;AAAA,IACvB,MAAM,WAAW,MAAM,YAAY;AAAA,IACnC,MAAM,SAAS,wBAAwB,SAAS;AAAA,IAChD,MAAM,eAAe,SAClB,SAAS,cAAc,IAAI,MAAM,IACjC;AAAA,IACH,uBAAuB,UAAU,SAAS;AAAA,IAC1C,eAAe,SAAS;AAAA,IACxB,qBAAqB,SAAS;AAAA,IAC9B,kBAAkB,cAAc,YAAY,CAAC;AAAA,IAC7C,UAAU,QAAQ,CAAC,aAAa,SAAS,CAAC;AAAA;AAAA,EAG3C,MAAM,mBAAmB,MAAM,UAAU,SAAS;AAAA,EAElD,MAAM,wBAAwB,WAAW,UACxC,CAAC,QAAyB;AAAA,IACzB,MAAM,SAAS,sBAAsB,GAAG;AAAA,IACxC,IAAI,QAAQ;AAAA,MACX,MAAM,SAAS,MAAM;AAAA,IACtB;AAAA,GAEF;AAAA,EAEA,MAAM,SAAS,CAAC,WAAmB,YAAoB;AAAA,IACtD,IAAI,sBAAsB;AAAA,MACzB,WAAW,KAAK;AAAA,QACf;AAAA,QACA,gBAAgB;AAAA,QAChB;AAAA,QACA,MAAM;AAAA,MACP,CAAC;AAAA,IACF;AAAA;AAAA,EAGD,MAAM,SAAS,MAAM;AAAA,IACpB,IAAI,sBAAsB;AAAA,MACzB,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC;AAAA,MACjC,WAAW,KAAK;AAAA,QACf,gBAAgB;AAAA,QAChB,MAAM;AAAA,MACP,CAAC;AAAA,IACF;AAAA;AAAA,EAGD,MAAM,UAAU,MAAM;AAAA,IACrB,iBAAiB;AAAA,IACjB,sBAAsB;AAAA,IACtB,WAAW,MAAM;AAAA,IACjB,UAAU,MAAM;AAAA;AAAA,EAGjB,MAAM,OAAO,CAAC,SAAiB,gBAAiC;AAAA,IAC/D,MAAM,SAAS,wBAAwB,WAAW;AAAA,IAClD,MAAM,QAAQ,WAAW;AAAA,IAEzB,MAAM,SAAS;AAAA,MACd;AAAA,MACA;AAAA,MACA,gBAAgB;AAAA,MAChB,WAAW;AAAA,MACX,MAAM;AAAA,IACP,CAAC;AAAA,IAED,WAAW,KAAK;AAAA,MACf;AAAA,MACA;AAAA,MACA,gBAAgB;AAAA,MAChB,MAAM;AAAA,IACP,CAAC;AAAA;AAAA,EAGF,MAAM,YAAY,CAAC,aAAyB;AAAA,IAC3C,UAAU,IAAI,QAAQ;AAAA,IAEtB,OAAO,MAAM;AAAA,MACZ,UAAU,OAAO,QAAQ;AAAA;AAAA;AAAA,EAI3B,OAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,QACI,KAAK,GAAG;AAAA,MACX,OAAO;AAAA;AAAA,QAEJ,WAAW,GAAG;AAAA,MACjB,OAAO;AAAA;AAAA,QAEJ,QAAQ,GAAG;AAAA,MACd,OAAO;AAAA;AAAA,EAET;AAAA;;AC/FD,IAAM,cAAc;AAAA,EACnB,gBAAgB;AACjB;AAEA,IAAM,oBAAoB,CAAC,SAC1B,KAAK,SAAS,GAAG,IAAI,KAAK,MAAM,GAAG,EAAE,IAAI;AAE1C,IAAM,YAAY,OAAU,aAAmC;AAAA,EAC9D,MAAM,UAAW,MAAM,SAAS,KAAK;AAAA,EACrC,OAAO;AAAA;AAGR,IAAM,iBAAiB,OAAO,aAAuB;AAAA,EACpD,IAAI;AAAA,IACH,MAAM,UAAW,MAAM,SAAS,KAAK;AAAA,IACrC,IAAI,OAAO,QAAQ,UAAU,YAAY,QAAQ,OAAO;AAAA,MACvD,OAAO,QAAQ;AAAA,IAChB;AAAA,IACC,MAAM;AAAA,EAIR,OAAO,8BAA8B,SAAS;AAAA;AAGxC,IAAM,kBAAkB,CAAC,YAA8B;AAAA,EAC7D,MAAM,WAAW,kBAAkB,QAAQ,IAAI;AAAA,EAC/C,MAAM,YAAY,QAAQ,SAAS;AAAA,EAEnC,OAAO;AAAA,SACA,OAAM,CAAC,QAAwD;AAAA,MACpE,MAAM,WAAW,MAAM,UAAU,GAAG,mBAAmB;AAAA,QACtD,MAAM,KAAK,UAAU,EAAE,OAAO,CAAC;AAAA,QAC/B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,OAAO;AAAA,UACN,IAAI;AAAA,UACJ,OAAO,MAAM,eAAe,QAAQ;AAAA,QACrC;AAAA,MACD;AAAA,MAEA,OAAO,UAA6B,QAAQ;AAAA;AAAA,SAGvC,gBAAe,CACpB,OAC6B;AAAA,MAC7B,MAAM,WAAW,MAAM,UAAU,GAAG,mBAAmB;AAAA,QACtD,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,OAAO;AAAA,UACN,IAAI;AAAA,UACJ,OAAO,MAAM,eAAe,QAAQ;AAAA,QACrC;AAAA,MACD;AAAA,MAEA,OAAO,UAA6B,QAAQ;AAAA;AAAA,SAGvC,OAAM,CAAC,OAA+C;AAAA,MAC3D,MAAM,WAAW,MAAM,UAAU,GAAG,mBAAmB;AAAA,QACtD,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,MAAM,UAAU,MAAM,UAInB,QAAQ;AAAA,MAEX,IAAI,CAAC,QAAQ,IAAI;AAAA,QAChB,MAAM,IAAI,MAAM,QAAQ,SAAS,mBAAmB;AAAA,MACrD;AAAA,MAEA,OAAO,QAAQ,WAAW,CAAC;AAAA;AAAA,SAGtB,OAAM,GAA+B;AAAA,MAC1C,MAAM,WAAW,MAAM,UAAU,GAAG,iBAAiB;AAAA,MAErD,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,OAAO,UAA6B,QAAQ;AAAA;AAAA,SAGvC,UAAS,CAAC,MAA8C;AAAA,MAC7D,MAAM,QAAQ,OAAO,SAAS,mBAAmB,IAAI,MAAM;AAAA,MAC3D,MAAM,WAAW,MAAM,UAAU,GAAG,qBAAqB,OAAO;AAAA,MAEhE,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,OAAO,UAAgC,QAAQ;AAAA;AAAA,SAG1C,eAAc,CACnB,OAC+B;AAAA,MAC/B,MAAM,WAAW,MAAM,UAAU,GAAG,sBAAsB;AAAA,QACzD,MAAM,KAAK,UAAU,KAAK;AAAA,QAC1B,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,OAAO;AAAA,UACN,IAAI;AAAA,UACJ,OAAO,MAAM,eAAe,QAAQ;AAAA,QACrC;AAAA,MACD;AAAA,MAEA,OAAO,UAA+B,QAAQ;AAAA;AAAA,SAGzC,eAAc,CAAC,IAAgD;AAAA,MACpE,MAAM,WAAW,MAAM,UACtB,GAAG,sBAAsB,mBAAmB,EAAE,UAC/C;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,QAAQ,MAAM,eAAe,QAAQ;AAAA,QAC3C,OAAO,EAAE,IAAI,OAAO,MAAM;AAAA,MAC3B;AAAA,MAEA,OAAO,UAAqC,QAAQ;AAAA;AAAA,SAG/C,eAAc,CAAC,IAA0C;AAAA,MAC9D,MAAM,WAAW,MAAM,UACtB,GAAG,sBAAsB,mBAAmB,EAAE,KAC9C;AAAA,QACC,QAAQ;AAAA,MACT,CACD;AAAA,MAEA,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,OAAO;AAAA,UACN,IAAI;AAAA,UACJ,OAAO,MAAM,eAAe,QAAQ;AAAA,QACrC;AAAA,MACD;AAAA,MAEA,OAAO,UAA+B,QAAQ;AAAA;AAAA,SAGzC,OAAM,GAAiC;AAAA,MAC5C,MAAM,WAAW,MAAM,UAAU,GAAG,mBAAmB;AAAA,QACtD,QAAQ;AAAA,MACT,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,OAAO;AAAA,UACN,IAAI;AAAA,UACJ,OAAO,MAAM,eAAe,QAAQ;AAAA,QACrC;AAAA,MACD;AAAA,MAEA,OAAO,UAA+B,QAAQ;AAAA;AAAA,SAGzC,MAAK,GAAiC;AAAA,MAC3C,MAAM,WAAW,MAAM,UAAU,GAAG,kBAAkB;AAAA,QACrD,QAAQ;AAAA,MACT,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,OAAO;AAAA,UACN,IAAI;AAAA,UACJ,OAAO,MAAM,eAAe,QAAQ;AAAA,QACrC;AAAA,MACD;AAAA,MAEA,OAAO,UAA+B,QAAQ;AAAA;AAAA,SAGzC,SAAQ,GAAiC;AAAA,MAC9C,MAAM,WAAW,MAAM,UAAU,GAAG,mBAAmB;AAAA,MAEvD,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,OAAO,UAA+B,QAAQ;AAAA;AAAA,SAGzC,WAAU,GAA6B;AAAA,MAC5C,MAAM,WAAW,MAAM,UAAU,GAAG,kBAAkB;AAAA,QACrD,QAAQ;AAAA,MACT,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QACjB,MAAM,IAAI,MAAM,MAAM,eAAe,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEA,OAAO,UAA2B,QAAQ;AAAA;AAAA,EAE5C;AAAA;",
14
+ "debugId": "253EC4A33623255164756E2164756E21",
15
15
  "names": []
16
16
  }
package/dist/ai/index.js CHANGED
@@ -3084,6 +3084,15 @@ var getLatestAssistantMessage = (messages) => {
3084
3084
  return;
3085
3085
  };
3086
3086
  var getLatestRAGSources = (messages) => getLatestAssistantMessage(messages)?.sources ?? [];
3087
+ var getLatestRetrievedMessage = (messages) => {
3088
+ for (let index = messages.length - 1;index >= 0; index -= 1) {
3089
+ const message = messages[index];
3090
+ if (message?.role === "assistant" && (message.sources?.length ?? 0) > 0) {
3091
+ return message;
3092
+ }
3093
+ }
3094
+ return;
3095
+ };
3087
3096
  var buildRAGSourceGroups = (sources) => {
3088
3097
  const groups = new Map;
3089
3098
  for (const source of sources) {
@@ -3138,6 +3147,21 @@ var buildRAGCitations = (sources) => {
3138
3147
  return left.label.localeCompare(right.label);
3139
3148
  });
3140
3149
  };
3150
+ var buildRAGRetrievedState = (messages) => {
3151
+ const message = getLatestRetrievedMessage(messages);
3152
+ if (!message) {
3153
+ return null;
3154
+ }
3155
+ const sources = message.sources ?? [];
3156
+ return {
3157
+ citations: buildRAGCitations(sources),
3158
+ conversationId: message.conversationId,
3159
+ messageId: message.id,
3160
+ retrievedAt: message.retrievedAt,
3161
+ sourceGroups: buildRAGSourceGroups(sources),
3162
+ sources
3163
+ };
3164
+ };
3141
3165
  var resolveRAGStreamStage = ({
3142
3166
  error,
3143
3167
  isStreaming,
@@ -4142,5 +4166,5 @@ export {
4142
4166
  aiChat
4143
4167
  };
4144
4168
 
4145
- //# debugId=B8CEC739283D0C5D64756E2164756E21
4169
+ //# debugId=C4FB024A221A442464756E2164756E21
4146
4170
  //# sourceMappingURL=index.js.map