@absolutejs/absolute 0.19.0-beta.435 → 0.19.0-beta.437
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.
- package/dist/ai/client/index.js +60 -1
- package/dist/ai/client/index.js.map +3 -3
- package/dist/ai/index.js +199 -2
- package/dist/ai/index.js.map +4 -4
- package/dist/ai-client/angular/ai/index.js +59 -0
- package/dist/ai-client/react/ai/index.js +346 -126
- package/dist/ai-client/vue/ai/index.js +59 -0
- package/dist/angular/ai/index.js +60 -1
- package/dist/angular/ai/index.js.map +3 -3
- package/dist/angular/index.js +4 -3
- package/dist/angular/index.js.map +4 -4
- package/dist/angular/server.js +2 -2
- package/dist/angular/server.js.map +1 -1
- package/dist/build.js +2 -2
- package/dist/build.js.map +1 -1
- package/dist/client/index.js +2 -1
- package/dist/client/index.js.map +3 -3
- package/dist/index.js +4 -3
- package/dist/index.js.map +4 -4
- package/dist/react/ai/index.js +600 -294
- package/dist/react/ai/index.js.map +12 -8
- package/dist/react/index.js +3 -2
- package/dist/react/index.js.map +4 -4
- package/dist/src/ai/client/ragClient.d.ts +7 -1
- package/dist/src/ai/rag/chat.d.ts +120 -2
- package/dist/src/react/ai/index.d.ts +3 -0
- package/dist/src/react/ai/useRAG.d.ts +31 -0
- package/dist/src/react/ai/useRAGChunkPreview.d.ts +11 -0
- package/dist/src/react/ai/useRAGDocuments.d.ts +10 -0
- package/dist/src/react/ai/useRAGIndexAdmin.d.ts +16 -0
- package/dist/svelte/ai/index.js +60 -1
- package/dist/svelte/ai/index.js.map +3 -3
- package/dist/svelte/index.js +3 -2
- package/dist/svelte/index.js.map +4 -4
- package/dist/types/ai.d.ts +73 -0
- package/dist/vue/ai/index.js +60 -1
- package/dist/vue/ai/index.js.map +3 -3
- package/dist/vue/components/index.js +11 -2
- package/dist/vue/components/index.js.map +3 -3
- package/dist/vue/index.js +13 -3
- package/dist/vue/index.js.map +5 -5
- package/package.json +1 -1
|
@@ -1,25 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../types/typeGuards.ts", "../src/
|
|
3
|
+
"sources": ["../types/typeGuards.ts", "../src/ai/client/actions.ts", "../src/ai/client/connection.ts", "../src/ai/client/messageStore.ts", "../src/ai/protocol.ts", "../src/ai/client/createAIStream.ts", "../src/ai/client/ragClient.ts", "../src/react/ai/AIStreamProvider.tsx", "../src/react/ai/useAIStream.ts", "../src/react/ai/useRAGChunkPreview.ts", "../src/react/ai/useRAG.ts", "../src/react/ai/useRAGCitations.ts", "../src/ai/rag/presentation.ts", "../src/react/ai/useRAGDocuments.ts", "../src/react/ai/useRAGIngest.ts", "../src/react/ai/useRAGIndexAdmin.ts", "../src/react/ai/useRAGSearch.ts", "../src/react/ai/useRAGSources.ts", "../src/react/ai/useRAGStatus.ts", "../src/react/ai/useRAGStream.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
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
|
-
"import
|
|
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
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",
|
|
9
|
-
"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",
|
|
10
|
-
"import { useCallback, useEffect, useRef, useSyncExternalStore } from 'react';\nimport type { AIAttachment } from '../../../types/ai';\nimport { serverMessageToAction } from '../../ai/client/actions';\nimport { createAIConnection } from '../../ai/client/connection';\nimport { createAIMessageStore } from '../../ai/client/messageStore';\nimport { generateId } from '../../ai/protocol';\nimport { useAIStreamContext } from './AIStreamProvider';\n\nexport const useAIStream = (path?: string, conversationId?: string) => {\n\tconst context = useAIStreamContext();\n\tconst standaloneRef = useRef<{\n\t\tconnection: ReturnType<typeof createAIConnection>;\n\t\tstore: ReturnType<typeof createAIMessageStore>;\n\t} | null>(null);\n\n\tconst isStandalone = !context;\n\n\tif (isStandalone && !standaloneRef.current && path) {\n\t\tconst connection = createAIConnection(path);\n\t\tconst store = createAIMessageStore();\n\t\tstandaloneRef.current = { connection, store };\n\t}\n\n\tconst resolved = context ?? standaloneRef.current;\n\tif (!resolved) {\n\t\tthrow new Error(\n\t\t\t'useAIStream requires either an AIStreamProvider or a path argument'\n\t\t);\n\t}\n\n\tconst { connection, store } = resolved;\n\n\tuseEffect(() => {\n\t\tif (!isStandalone) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst unsubscribe = connection.subscribe((msg) => {\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\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t\tconnection.close();\n\t\t};\n\t}, [connection, isStandalone, store]);\n\n\tconst state = useSyncExternalStore(\n\t\tstore.subscribe,\n\t\tstore.getSnapshot,\n\t\tstore.getServerSnapshot\n\t);\n\n\tconst activeConvId = conversationId ?? state.activeConversationId;\n\tconst conversation = activeConvId\n\t\t? state.conversations.get(activeConvId)\n\t\t: undefined;\n\tconst messages = conversation?.messages ?? [];\n\n\tconst send = useCallback(\n\t\t(content: string, attachments?: AIAttachment[]) => {\n\t\t\tconst convId = activeConvId ?? generateId();\n\t\t\tconst msgId = generateId();\n\n\t\t\tstore.dispatch({\n\t\t\t\tattachments,\n\t\t\t\tcontent,\n\t\t\t\tconversationId: convId,\n\t\t\t\tmessageId: msgId,\n\t\t\t\ttype: 'send'\n\t\t\t});\n\n\t\t\tconnection.send({\n\t\t\t\tattachments,\n\t\t\t\tcontent,\n\t\t\t\tconversationId: convId,\n\t\t\t\ttype: 'message'\n\t\t\t});\n\t\t},\n\t\t[activeConvId, connection, store]\n\t);\n\n\tconst cancel = useCallback(() => {\n\t\tif (activeConvId) {\n\t\t\tstore.dispatch({ type: 'cancel' });\n\t\t\tconnection.send({ conversationId: activeConvId, type: 'cancel' });\n\t\t}\n\t}, [activeConvId, connection, store]);\n\n\tconst branch = useCallback(\n\t\t(messageId: string, content: string) => {\n\t\t\tif (activeConvId) {\n\t\t\t\tconnection.send({\n\t\t\t\t\tcontent,\n\t\t\t\t\tconversationId: activeConvId,\n\t\t\t\t\tmessageId,\n\t\t\t\t\ttype: 'branch'\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[activeConvId, connection]\n\t);\n\n\treturn {\n\t\tbranch,\n\t\tcancel,\n\t\terror: state.error,\n\t\tisStreaming: state.isStreaming,\n\t\tmessages,\n\t\tsend\n\t};\n};\n",
|
|
11
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",
|
|
12
|
-
"import {
|
|
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
|
+
"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 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
|
+
"import {\n\tcreateContext,\n\tuseContext,\n\tuseEffect,\n\tuseRef,\n\ttype ReactNode\n} from 'react';\nimport { createAIConnection } from '../../ai/client/connection';\nimport { createAIMessageStore } from '../../ai/client/messageStore';\nimport { serverMessageToAction } from '../../ai/client/actions';\n\ntype AIStreamContextValue = {\n\tconnection: ReturnType<typeof createAIConnection>;\n\tstore: ReturnType<typeof createAIMessageStore>;\n};\n\nconst AIStreamContext = createContext<AIStreamContextValue | null>(null);\n\nexport const AIStreamProvider = ({\n\tchildren,\n\tpath\n}: {\n\tchildren: ReactNode;\n\tpath: string;\n}) => {\n\tconst ref = useRef<AIStreamContextValue | null>(null);\n\n\tif (!ref.current) {\n\t\tconst connection = createAIConnection(path);\n\t\tconst store = createAIMessageStore();\n\t\tref.current = { connection, store };\n\t}\n\n\tuseEffect(() => {\n\t\tconst { current } = ref;\n\t\tif (!current) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst { connection, store } = current;\n\n\t\tconst unsubscribe = connection.subscribe((msg) => {\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\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t\tconnection.close();\n\t\t};\n\t}, []);\n\n\treturn (\n\t\t<AIStreamContext.Provider value={ref.current}>\n\t\t\t{children}\n\t\t</AIStreamContext.Provider>\n\t);\n};\n\nexport const useAIStreamContext = () => useContext(AIStreamContext);\n",
|
|
13
|
+
"import { useCallback, useEffect, useRef, useSyncExternalStore } from 'react';\nimport type { AIAttachment } from '../../../types/ai';\nimport { serverMessageToAction } from '../../ai/client/actions';\nimport { createAIConnection } from '../../ai/client/connection';\nimport { createAIMessageStore } from '../../ai/client/messageStore';\nimport { generateId } from '../../ai/protocol';\nimport { useAIStreamContext } from './AIStreamProvider';\n\nexport const useAIStream = (path?: string, conversationId?: string) => {\n\tconst context = useAIStreamContext();\n\tconst standaloneRef = useRef<{\n\t\tconnection: ReturnType<typeof createAIConnection>;\n\t\tstore: ReturnType<typeof createAIMessageStore>;\n\t} | null>(null);\n\n\tconst isStandalone = !context;\n\n\tif (isStandalone && !standaloneRef.current && path) {\n\t\tconst connection = createAIConnection(path);\n\t\tconst store = createAIMessageStore();\n\t\tstandaloneRef.current = { connection, store };\n\t}\n\n\tconst resolved = context ?? standaloneRef.current;\n\tif (!resolved) {\n\t\tthrow new Error(\n\t\t\t'useAIStream requires either an AIStreamProvider or a path argument'\n\t\t);\n\t}\n\n\tconst { connection, store } = resolved;\n\n\tuseEffect(() => {\n\t\tif (!isStandalone) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst unsubscribe = connection.subscribe((msg) => {\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\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t\tconnection.close();\n\t\t};\n\t}, [connection, isStandalone, store]);\n\n\tconst state = useSyncExternalStore(\n\t\tstore.subscribe,\n\t\tstore.getSnapshot,\n\t\tstore.getServerSnapshot\n\t);\n\n\tconst activeConvId = conversationId ?? state.activeConversationId;\n\tconst conversation = activeConvId\n\t\t? state.conversations.get(activeConvId)\n\t\t: undefined;\n\tconst messages = conversation?.messages ?? [];\n\n\tconst send = useCallback(\n\t\t(content: string, attachments?: AIAttachment[]) => {\n\t\t\tconst convId = activeConvId ?? generateId();\n\t\t\tconst msgId = generateId();\n\n\t\t\tstore.dispatch({\n\t\t\t\tattachments,\n\t\t\t\tcontent,\n\t\t\t\tconversationId: convId,\n\t\t\t\tmessageId: msgId,\n\t\t\t\ttype: 'send'\n\t\t\t});\n\n\t\t\tconnection.send({\n\t\t\t\tattachments,\n\t\t\t\tcontent,\n\t\t\t\tconversationId: convId,\n\t\t\t\ttype: 'message'\n\t\t\t});\n\t\t},\n\t\t[activeConvId, connection, store]\n\t);\n\n\tconst cancel = useCallback(() => {\n\t\tif (activeConvId) {\n\t\t\tstore.dispatch({ type: 'cancel' });\n\t\t\tconnection.send({ conversationId: activeConvId, type: 'cancel' });\n\t\t}\n\t}, [activeConvId, connection, store]);\n\n\tconst branch = useCallback(\n\t\t(messageId: string, content: string) => {\n\t\t\tif (activeConvId) {\n\t\t\t\tconnection.send({\n\t\t\t\t\tcontent,\n\t\t\t\t\tconversationId: activeConvId,\n\t\t\t\t\tmessageId,\n\t\t\t\t\ttype: 'branch'\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[activeConvId, connection]\n\t);\n\n\treturn {\n\t\tbranch,\n\t\tcancel,\n\t\terror: state.error,\n\t\tisStreaming: state.isStreaming,\n\t\tmessages,\n\t\tsend\n\t};\n};\n",
|
|
14
|
+
"import { useCallback, useMemo, useState } from 'react';\nimport type { RAGDocumentChunkPreview } from '../../../types/ai';\nimport { createRAGClient } from '../../ai/client';\n\nexport const useRAGChunkPreview = (path: string) => {\n\tconst client = useMemo(() => createRAGClient({ path }), [path]);\n\tconst [preview, setPreview] = useState<RAGDocumentChunkPreview | null>(null);\n\tconst [isLoading, setIsLoading] = useState(false);\n\tconst [error, setError] = useState<string | null>(null);\n\n\tconst inspect = useCallback(\n\t\tasync (id: string) => {\n\t\t\tsetIsLoading(true);\n\t\t\tsetError(null);\n\n\t\t\ttry {\n\t\t\t\tconst response = await client.documentChunks(id);\n\t\t\t\tif (!response.ok) {\n\t\t\t\t\tthrow new Error(response.error);\n\t\t\t\t}\n\n\t\t\t\tsetPreview(response);\n\t\t\t\treturn response;\n\t\t\t} catch (err) {\n\t\t\t\tconst message =\n\t\t\t\t\terr instanceof Error\n\t\t\t\t\t\t? err.message\n\t\t\t\t\t\t: 'Failed to load RAG chunk preview';\n\t\t\t\tsetError(message);\n\t\t\t\tthrow err;\n\t\t\t} finally {\n\t\t\t\tsetIsLoading(false);\n\t\t\t}\n\t\t},\n\t\t[client]\n\t);\n\n\tconst clear = useCallback(() => {\n\t\tsetPreview(null);\n\t\tsetError(null);\n\t\tsetIsLoading(false);\n\t}, []);\n\n\treturn {\n\t\tclear,\n\t\terror,\n\t\tinspect,\n\t\tisLoading,\n\t\tpreview\n\t};\n};\n\nexport type UseRAGChunkPreviewResult = ReturnType<typeof useRAGChunkPreview>;\n",
|
|
15
|
+
"import { useMemo } from 'react';\nimport { useRAGChunkPreview } from './useRAGChunkPreview';\nimport { useRAGCitations } from './useRAGCitations';\nimport { useRAGDocuments } from './useRAGDocuments';\nimport { useRAGIngest } from './useRAGIngest';\nimport { useRAGIndexAdmin } from './useRAGIndexAdmin';\nimport { useRAGSearch } from './useRAGSearch';\nimport { useRAGSources } from './useRAGSources';\nimport { useRAGStatus } from './useRAGStatus';\nimport { useRAGStream } from './useRAGStream';\n\nexport type UseRAGOptions = {\n\tautoLoadStatus?: boolean;\n\tconversationId?: string;\n\tstreamPath?: string;\n};\n\nexport const useRAG = (path: string, options: UseRAGOptions = {}) => {\n\tconst search = useRAGSearch(path);\n\tconst ingest = useRAGIngest(path);\n\tconst status = useRAGStatus(path, options.autoLoadStatus ?? true);\n\tconst documents = useRAGDocuments(path);\n\tconst chunkPreview = useRAGChunkPreview(path);\n\tconst index = useRAGIndexAdmin(path);\n\tconst stream = useRAGStream(options.streamPath ?? path, options.conversationId);\n\tconst sources = useRAGSources(stream.messages);\n\tconst citations = useRAGCitations(sources.sources);\n\n\treturn useMemo(\n\t\t() => ({\n\t\t\tcitations,\n\t\t\tchunkPreview,\n\t\t\tdocuments,\n\t\t\tingest,\n\t\t\tindex,\n\t\t\tsearch,\n\t\t\tsources,\n\t\t\tstatus,\n\t\t\tstream\n\t\t}),\n\t\t[citations, chunkPreview, documents, ingest, index, search, sources, status, stream]\n\t);\n};\n\nexport type UseRAGResult = ReturnType<typeof useRAG>;\n",
|
|
13
16
|
"import { useMemo } from 'react';\nimport type { RAGSource } from '../../../types/ai';\nimport {\n\tbuildRAGCitations,\n\tbuildRAGSourceGroups\n} from '../../ai/rag/presentation';\n\nexport const useRAGCitations = (sources: RAGSource[]) => {\n\tconst citations = useMemo(() => buildRAGCitations(sources), [sources]);\n\tconst sourceGroups = useMemo(() => buildRAGSourceGroups(sources), [sources]);\n\n\treturn {\n\t\tcitations,\n\t\thasCitations: citations.length > 0,\n\t\tsourceGroups\n\t};\n};\n\nexport type UseRAGCitationsResult = ReturnType<typeof useRAGCitations>;\n",
|
|
14
17
|
"import type {\n\tAIMessage,\n\tRAGCitation,\n\tRAGSource,\n\tRAGSourceGroup,\n\tRAGStreamStage\n} from '../../../types/ai';\n\nconst buildSourceGroupKey = (source: RAGSource) =>\n\tsource.source ?? source.title ?? source.chunkId;\n\nconst buildSourceLabel = (source: RAGSource) =>\n\tsource.source ?? source.title ?? source.chunkId;\n\nexport const getLatestAssistantMessage = (messages: AIMessage[]) => {\n\tfor (let index = messages.length - 1; index >= 0; index -= 1) {\n\t\tconst message = messages[index];\n\t\tif (message?.role === 'assistant') {\n\t\t\treturn message;\n\t\t}\n\t}\n\n\treturn undefined;\n};\n\nexport const getLatestRAGSources = (messages: AIMessage[]) =>\n\tgetLatestAssistantMessage(messages)?.sources ?? [];\n\nexport const buildRAGSourceGroups = (\n\tsources: RAGSource[]\n): RAGSourceGroup[] => {\n\tconst groups = new Map<string, RAGSourceGroup>();\n\n\tfor (const source of sources) {\n\t\tconst key = buildSourceGroupKey(source);\n\t\tconst existing = groups.get(key);\n\n\t\tif (existing) {\n\t\t\texisting.bestScore = Math.max(existing.bestScore, source.score);\n\t\t\texisting.count += 1;\n\t\t\texisting.chunks.push(source);\n\t\t\tcontinue;\n\t\t}\n\n\t\tgroups.set(key, {\n\t\t\tbestScore: source.score,\n\t\t\tchunks: [source],\n\t\t\tcount: 1,\n\t\t\tkey,\n\t\t\tlabel: buildSourceLabel(source),\n\t\t\tsource: source.source,\n\t\t\ttitle: source.title\n\t\t});\n\t}\n\n\treturn [...groups.values()].sort((left, right) => {\n\t\tif (right.bestScore !== left.bestScore) {\n\t\t\treturn right.bestScore - left.bestScore;\n\t\t}\n\n\t\treturn left.label.localeCompare(right.label);\n\t});\n};\n\nexport const buildRAGCitations = (sources: RAGSource[]): RAGCitation[] => {\n\tconst unique = new Map<string, RAGCitation>();\n\n\tfor (const source of sources) {\n\t\tconst key = source.chunkId;\n\t\tconst existing = unique.get(key);\n\n\t\tif (existing && existing.score >= source.score) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tunique.set(key, {\n\t\t\tchunkId: source.chunkId,\n\t\t\tkey,\n\t\t\tlabel: buildSourceLabel(source),\n\t\t\tmetadata: source.metadata,\n\t\t\tscore: source.score,\n\t\t\tsource: source.source,\n\t\t\ttext: source.text,\n\t\t\ttitle: source.title\n\t\t});\n\t}\n\n\treturn [...unique.values()].sort((left, right) => {\n\t\tif (right.score !== left.score) {\n\t\t\treturn right.score - left.score;\n\t\t}\n\n\t\treturn left.label.localeCompare(right.label);\n\t});\n};\n\nexport const resolveRAGStreamStage = ({\n\terror,\n\tisStreaming,\n\tmessages\n}: {\n\terror: string | null;\n\tisStreaming: boolean;\n\tmessages: AIMessage[];\n}): RAGStreamStage => {\n\tif (error) {\n\t\treturn 'error';\n\t}\n\n\tconst assistantMessage = getLatestAssistantMessage(messages);\n\tif (!assistantMessage) {\n\t\treturn isStreaming ? 'submitting' : 'idle';\n\t}\n\n\tif (!isStreaming) {\n\t\treturn 'complete';\n\t}\n\n\tconst hasSources = (assistantMessage.sources?.length ?? 0) > 0;\n\tconst hasContent =\n\t\tassistantMessage.content.trim().length > 0 ||\n\t\tassistantMessage.thinking?.trim().length ||\n\t\t(assistantMessage.toolCalls?.length ?? 0) > 0 ||\n\t\t(assistantMessage.images?.length ?? 0) > 0;\n\n\tif (hasSources && !hasContent) {\n\t\treturn 'retrieved';\n\t}\n\n\treturn 'streaming';\n};\n",
|
|
18
|
+
"import { useCallback, useMemo, useState } from 'react';\nimport type { RAGDocumentsResponse, RAGIndexedDocument } from '../../../types/ai';\nimport { createRAGClient } from '../../ai/client';\n\nexport const useRAGDocuments = (path: string) => {\n\tconst client = useMemo(() => createRAGClient({ path }), [path]);\n\tconst [documents, setDocuments] = useState<RAGIndexedDocument[]>([]);\n\tconst [isLoading, setIsLoading] = useState(false);\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [lastResponse, setLastResponse] = useState<RAGDocumentsResponse | null>(\n\t\tnull\n\t);\n\n\tconst load = useCallback(\n\t\tasync (kind?: string) => {\n\t\t\tsetIsLoading(true);\n\t\t\tsetError(null);\n\n\t\t\ttry {\n\t\t\t\tconst response = await client.documents(kind);\n\t\t\t\tsetDocuments(response.documents);\n\t\t\t\tsetLastResponse(response);\n\t\t\t\treturn response;\n\t\t\t} catch (err) {\n\t\t\t\tconst message =\n\t\t\t\t\terr instanceof Error ? err.message : 'Failed to load RAG documents';\n\t\t\t\tsetError(message);\n\t\t\t\tthrow err;\n\t\t\t} finally {\n\t\t\t\tsetIsLoading(false);\n\t\t\t}\n\t\t},\n\t\t[client]\n\t);\n\n\tconst reset = useCallback(() => {\n\t\tsetDocuments([]);\n\t\tsetError(null);\n\t\tsetLastResponse(null);\n\t\tsetIsLoading(false);\n\t}, []);\n\n\treturn {\n\t\tdocuments,\n\t\terror,\n\t\tisLoading,\n\t\tlastResponse,\n\t\tload,\n\t\treset\n\t};\n};\n\nexport type UseRAGDocumentsResult = ReturnType<typeof useRAGDocuments>;\n",
|
|
15
19
|
"import { useCallback, useMemo, useState } from 'react';\nimport type {\n\tRAGDocumentChunk,\n\tRAGDocumentIngestInput,\n\tRAGIngestResponse\n} from '../../../types/ai';\nimport { createRAGClient } from '../../ai/client/ragClient';\n\nexport const useRAGIngest = (path: string) => {\n\tconst client = useMemo(() => createRAGClient({ path }), [path]);\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [isIngesting, setIsIngesting] = useState(false);\n\tconst [lastIngestCount, setLastIngestCount] = useState<number | null>(null);\n\tconst [lastDocumentCount, setLastDocumentCount] = useState<number | null>(null);\n\tconst [lastResponse, setLastResponse] = useState<RAGIngestResponse | null>(null);\n\n\tconst ingestChunks = useCallback(\n\t\tasync (chunks: RAGDocumentChunk[]) => {\n\t\t\tsetIsIngesting(true);\n\t\t\tsetError(null);\n\n\t\t\ttry {\n\t\t\t\tconst response = await client.ingest(chunks);\n\t\t\t\tif (!response.ok) {\n\t\t\t\t\tthrow new Error(response.error ?? 'RAG ingest failed');\n\t\t\t\t}\n\n\t\t\t\tsetLastIngestCount(response.count ?? chunks.length);\n\t\t\t\tsetLastDocumentCount(null);\n\t\t\t\tsetLastResponse(response);\n\t\t\t\treturn response;\n\t\t\t} catch (caught) {\n\t\t\t\tconst message =\n\t\t\t\t\tcaught instanceof Error ? caught.message : String(caught);\n\t\t\t\tsetError(message);\n\t\t\t\tthrow caught;\n\t\t\t} finally {\n\t\t\t\tsetIsIngesting(false);\n\t\t\t}\n\t\t},\n\t\t[client]\n\t);\n\n\tconst ingestDocuments = useCallback(\n\t\tasync (input: RAGDocumentIngestInput) => {\n\t\t\tsetIsIngesting(true);\n\t\t\tsetError(null);\n\n\t\t\ttry {\n\t\t\t\tconst response = await client.ingestDocuments(input);\n\t\t\t\tif (!response.ok) {\n\t\t\t\t\tthrow new Error(response.error ?? 'RAG ingest failed');\n\t\t\t\t}\n\n\t\t\t\tsetLastIngestCount(response.count ?? null);\n\t\t\t\tsetLastDocumentCount(\n\t\t\t\t\tresponse.documentCount ?? input.documents.length\n\t\t\t\t);\n\t\t\t\tsetLastResponse(response);\n\t\t\t\treturn response;\n\t\t\t} catch (caught) {\n\t\t\t\tconst message =\n\t\t\t\t\tcaught instanceof Error ? caught.message : String(caught);\n\t\t\t\tsetError(message);\n\t\t\t\tthrow caught;\n\t\t\t} finally {\n\t\t\t\tsetIsIngesting(false);\n\t\t\t}\n\t\t},\n\t\t[client]\n\t);\n\n\tconst clearIndex = useCallback(async () => {\n\t\tsetIsIngesting(true);\n\t\tsetError(null);\n\n\t\ttry {\n\t\t\tawait client.clearIndex();\n\t\t\tsetLastIngestCount(0);\n\t\t\tsetLastDocumentCount(0);\n\t\t\tsetLastResponse(null);\n\t\t} catch (caught) {\n\t\t\tconst message =\n\t\t\t\tcaught instanceof Error ? caught.message : String(caught);\n\t\t\tsetError(message);\n\t\t\tthrow caught;\n\t\t} finally {\n\t\t\tsetIsIngesting(false);\n\t\t}\n\t}, [client]);\n\n\tconst reset = useCallback(() => {\n\t\tsetError(null);\n\t\tsetLastDocumentCount(null);\n\t\tsetLastIngestCount(null);\n\t\tsetLastResponse(null);\n\t}, []);\n\n\treturn {\n\t\tclearIndex,\n\t\terror,\n\t\tingest: ingestChunks,\n\t\tingestChunks,\n\t\tingestDocuments,\n\t\tisIngesting,\n\t\tlastDocumentCount,\n\t\tlastIngestCount,\n\t\tlastResponse,\n\t\treset\n\t};\n};\n\nexport type UseRAGIngestResult = ReturnType<typeof useRAGIngest>;\n",
|
|
16
|
-
"import type {\n\
|
|
20
|
+
"import { useCallback, useMemo, useState } from 'react';\nimport type {\n\tRAGBackendsResponse,\n\tRAGMutationResponse\n} from '../../../types/ai';\nimport { createRAGClient } from '../../ai/client';\n\nexport const useRAGIndexAdmin = (path: string) => {\n\tconst client = useMemo(() => createRAGClient({ path }), [path]);\n\tconst [isLoading, setIsLoading] = useState(false);\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [lastMutation, setLastMutation] = useState<RAGMutationResponse | null>(\n\t\tnull\n\t);\n\tconst [backends, setBackends] = useState<RAGBackendsResponse | null>(null);\n\n\tconst run = useCallback(\n\t\tasync <T,>(operation: () => Promise<T>) => {\n\t\t\tsetIsLoading(true);\n\t\t\tsetError(null);\n\n\t\t\ttry {\n\t\t\t\treturn await operation();\n\t\t\t} catch (err) {\n\t\t\t\tconst message =\n\t\t\t\t\terr instanceof Error\n\t\t\t\t\t\t? err.message\n\t\t\t\t\t\t: 'RAG index administration failed';\n\t\t\t\tsetError(message);\n\t\t\t\tthrow err;\n\t\t\t} finally {\n\t\t\t\tsetIsLoading(false);\n\t\t\t}\n\t\t},\n\t\t[]\n\t);\n\n\tconst deleteDocument = useCallback(\n\t\tasync (id: string) =>\n\t\t\trun(async () => {\n\t\t\t\tconst response = await client.deleteDocument(id);\n\t\t\t\tsetLastMutation(response);\n\t\t\t\tif (!response.ok) {\n\t\t\t\t\tthrow new Error(response.error ?? 'Failed to delete document');\n\t\t\t\t}\n\t\t\t\treturn response;\n\t\t\t}),\n\t\t[client, run]\n\t);\n\n\tconst reseed = useCallback(\n\t\tasync () =>\n\t\t\trun(async () => {\n\t\t\t\tconst response = await client.reseed();\n\t\t\t\tsetLastMutation(response);\n\t\t\t\tif (!response.ok) {\n\t\t\t\t\tthrow new Error(response.error ?? 'Failed to reseed index');\n\t\t\t\t}\n\t\t\t\treturn response;\n\t\t\t}),\n\t\t[client, run]\n\t);\n\n\tconst reset = useCallback(\n\t\tasync () =>\n\t\t\trun(async () => {\n\t\t\t\tconst response = await client.reset();\n\t\t\t\tsetLastMutation(response);\n\t\t\t\tif (!response.ok) {\n\t\t\t\t\tthrow new Error(response.error ?? 'Failed to reset index');\n\t\t\t\t}\n\t\t\t\treturn response;\n\t\t\t}),\n\t\t[client, run]\n\t);\n\n\tconst loadBackends = useCallback(\n\t\tasync () =>\n\t\t\trun(async () => {\n\t\t\t\tconst response = await client.backends();\n\t\t\t\tsetBackends(response);\n\t\t\t\treturn response;\n\t\t\t}),\n\t\t[client, run]\n\t);\n\n\tconst clearIndex = useCallback(\n\t\tasync () =>\n\t\t\trun(async () => {\n\t\t\t\tconst response = await client.clearIndex();\n\t\t\t\tconst mutation = { ok: response.ok } satisfies RAGMutationResponse;\n\t\t\t\tsetLastMutation(mutation);\n\t\t\t\treturn mutation;\n\t\t\t}),\n\t\t[client, run]\n\t);\n\n\tconst resetState = useCallback(() => {\n\t\tsetIsLoading(false);\n\t\tsetError(null);\n\t\tsetLastMutation(null);\n\t\tsetBackends(null);\n\t}, []);\n\n\treturn {\n\t\tbackends,\n\t\tclearIndex,\n\t\tdeleteDocument,\n\t\terror,\n\t\tisLoading,\n\t\tlastMutation,\n\t\tloadBackends,\n\t\treseed,\n\t\treset,\n\t\tresetState\n\t};\n};\n\nexport type UseRAGIndexAdminResult = ReturnType<typeof useRAGIndexAdmin>;\n",
|
|
17
21
|
"import { useCallback, useMemo, useState } from 'react';\nimport type { RAGSearchRequest, RAGSource } from '../../../types/ai';\nimport { createRAGClient } from '../../ai/client/ragClient';\n\nexport const useRAGSearch = (path: string) => {\n\tconst client = useMemo(() => createRAGClient({ path }), [path]);\n\tconst [results, setResults] = useState<RAGSource[]>([]);\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [isSearching, setIsSearching] = useState(false);\n\tconst [hasSearched, setHasSearched] = useState(false);\n\tconst [lastRequest, setLastRequest] = useState<RAGSearchRequest | null>(null);\n\n\tconst search = useCallback(\n\t\tasync (input: RAGSearchRequest) => {\n\t\t\tsetIsSearching(true);\n\t\t\tsetError(null);\n\t\t\tsetLastRequest(input);\n\n\t\t\ttry {\n\t\t\t\tconst nextResults = await client.search(input);\n\t\t\t\tsetResults(nextResults);\n\t\t\t\tsetHasSearched(true);\n\t\t\t\treturn nextResults;\n\t\t\t} catch (caught) {\n\t\t\t\tconst message =\n\t\t\t\t\tcaught instanceof Error ? caught.message : String(caught);\n\t\t\t\tsetError(message);\n\t\t\t\tthrow caught;\n\t\t\t} finally {\n\t\t\t\tsetIsSearching(false);\n\t\t\t}\n\t\t},\n\t\t[client]\n\t);\n\n\tconst reset = useCallback(() => {\n\t\tsetError(null);\n\t\tsetHasSearched(false);\n\t\tsetLastRequest(null);\n\t\tsetResults([]);\n\t}, []);\n\n\treturn {\n\t\terror,\n\t\thasSearched,\n\t\tisSearching,\n\t\tlastRequest,\n\t\treset,\n\t\tresults,\n\t\tsearch,\n\t\tsetResults\n\t};\n};\n\nexport type UseRAGSearchResult = ReturnType<typeof useRAGSearch>;\n",
|
|
18
22
|
"import { useMemo } from 'react';\nimport type { AIMessage } from '../../../types/ai';\nimport {\n\tbuildRAGSourceGroups,\n\tgetLatestAssistantMessage,\n\tgetLatestRAGSources\n} from '../../ai/rag/presentation';\n\nexport const useRAGSources = (messages: AIMessage[]) => {\n\tconst latestAssistantMessage = useMemo(\n\t\t() => getLatestAssistantMessage(messages),\n\t\t[messages]\n\t);\n\tconst sources = useMemo(() => getLatestRAGSources(messages), [messages]);\n\tconst sourceGroups = useMemo(() => buildRAGSourceGroups(sources), [sources]);\n\n\treturn {\n\t\thasSources: sources.length > 0,\n\t\tlatestAssistantMessage,\n\t\tsourceGroups,\n\t\tsources\n\t};\n};\n\nexport type UseRAGSourcesResult = ReturnType<typeof useRAGSources>;\n",
|
|
19
23
|
"import { useCallback, useEffect, useMemo, useState } from 'react';\nimport type {\n\tRAGBackendCapabilities,\n\tRAGVectorStoreStatus\n} from '../../../types/ai';\nimport { createRAGClient } from '../../ai/client/ragClient';\n\nexport const useRAGStatus = (path: string, autoLoad = true) => {\n\tconst client = useMemo(() => createRAGClient({ path }), [path]);\n\tconst [status, setStatus] = useState<RAGVectorStoreStatus | undefined>();\n\tconst [capabilities, setCapabilities] =\n\t\tuseState<RAGBackendCapabilities | undefined>();\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [isLoading, setIsLoading] = useState(autoLoad);\n\n\tconst refresh = useCallback(async () => {\n\t\tsetIsLoading(true);\n\t\tsetError(null);\n\n\t\ttry {\n\t\t\tconst response = await client.status();\n\t\t\tsetStatus(response.status);\n\t\t\tsetCapabilities(response.capabilities);\n\t\t\treturn response;\n\t\t} catch (caught) {\n\t\t\tconst message =\n\t\t\t\tcaught instanceof Error ? caught.message : String(caught);\n\t\t\tsetError(message);\n\t\t\tthrow caught;\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, [client]);\n\n\tconst reset = useCallback(() => {\n\t\tsetCapabilities(undefined);\n\t\tsetError(null);\n\t\tsetIsLoading(false);\n\t\tsetStatus(undefined);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (!autoLoad) {\n\t\t\tsetIsLoading(false);\n\t\t\treturn;\n\t\t}\n\n\t\tvoid refresh();\n\t}, [autoLoad, refresh]);\n\n\treturn {\n\t\tcapabilities,\n\t\terror,\n\t\tisLoading,\n\t\trefresh,\n\t\treset,\n\t\tstatus\n\t};\n};\n\nexport type UseRAGStatusResult = ReturnType<typeof useRAGStatus>;\n",
|
|
20
24
|
"import { useCallback, useMemo } from 'react';\nimport type { AIAttachment } from '../../../types/ai';\nimport {\n\tbuildRAGCitations,\n\tbuildRAGSourceGroups,\n\tgetLatestAssistantMessage,\n\tgetLatestRAGSources,\n\tresolveRAGStreamStage\n} from '../../ai/rag/presentation';\nimport { useAIStream } from './useAIStream';\n\nexport const useRAGStream = (path?: string, conversationId?: string) => {\n\tconst stream = useAIStream(path, conversationId);\n\n\tconst latestAssistantMessage = useMemo(\n\t\t() => getLatestAssistantMessage(stream.messages),\n\t\t[stream.messages]\n\t);\n\tconst sources = useMemo(\n\t\t() => getLatestRAGSources(stream.messages),\n\t\t[stream.messages]\n\t);\n\tconst sourceGroups = useMemo(() => buildRAGSourceGroups(sources), [sources]);\n\tconst citations = useMemo(() => buildRAGCitations(sources), [sources]);\n\tconst stage = useMemo(\n\t\t() =>\n\t\t\tresolveRAGStreamStage({\n\t\t\t\terror: stream.error,\n\t\t\t\tisStreaming: stream.isStreaming,\n\t\t\t\tmessages: stream.messages\n\t\t\t}),\n\t\t[stream.error, stream.isStreaming, stream.messages]\n\t);\n\n\tconst query = useCallback(\n\t\t(content: string, attachments?: AIAttachment[]) => {\n\t\t\tstream.send(content, attachments);\n\t\t},\n\t\t[stream]\n\t);\n\n\treturn {\n\t\t...stream,\n\t\tcitations,\n\t\thasSources: sources.length > 0,\n\t\tlatestAssistantMessage,\n\t\tquery,\n\t\tsourceGroups,\n\t\tsources,\n\t\tstage\n\t};\n};\n\nexport type UseRAGStreamResult = ReturnType<typeof useRAGStream>;\n"
|
|
21
25
|
],
|
|
22
|
-
"mappings": "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",
|
|
23
|
-
"debugId": "
|
|
26
|
+
"mappings": "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",
|
|
27
|
+
"debugId": "1512F3E572D165FB64756E2164756E21",
|
|
24
28
|
"names": []
|
|
25
29
|
}
|
package/dist/react/index.js
CHANGED
|
@@ -1757,6 +1757,7 @@ var streamSwapRuntime = () => {
|
|
|
1757
1757
|
return;
|
|
1758
1758
|
}
|
|
1759
1759
|
node.innerHTML = html;
|
|
1760
|
+
node.setAttribute("data-absolute-slot-state", "resolved");
|
|
1760
1761
|
window.dispatchEvent(new CustomEvent(SLOT_PATCH_EVENT, {
|
|
1761
1762
|
detail: { html, id, payload }
|
|
1762
1763
|
}));
|
|
@@ -1823,7 +1824,7 @@ var renderStreamingSlotsRuntimeTag = (nonce, runtimePreludeScript) => {
|
|
|
1823
1824
|
].filter(Boolean).join(";");
|
|
1824
1825
|
return `<script${createNonceAttr(nonce)}>${escapeScriptContent(runtimeBody)}</script>`;
|
|
1825
1826
|
};
|
|
1826
|
-
var renderStreamingSlotPlaceholder = (id, fallbackHtml = "") => `<div id="${createSlotPlaceholderId(id)}" data-absolute-slot="true">${fallbackHtml}</div>`;
|
|
1827
|
+
var renderStreamingSlotPlaceholder = (id, fallbackHtml = "") => `<div id="${createSlotPlaceholderId(id)}" data-absolute-slot="true" data-absolute-slot-state="fallback">${fallbackHtml}</div>`;
|
|
1827
1828
|
var renderStreamingSlotPatchTag = (id, payload, nonce) => `<script${createNonceAttr(nonce)}>${escapeScriptContent(createSlotPatchStatement(id, payload))}</script>`;
|
|
1828
1829
|
var injectHtmlIntoHead = (html, injection) => {
|
|
1829
1830
|
const closingHeadIndex = html.indexOf(CLOSING_HEAD_TAG);
|
|
@@ -2503,5 +2504,5 @@ export {
|
|
|
2503
2504
|
Island
|
|
2504
2505
|
};
|
|
2505
2506
|
|
|
2506
|
-
//# debugId=
|
|
2507
|
+
//# debugId=DEAE28BDFBC23BC264756E2164756E21
|
|
2507
2508
|
//# sourceMappingURL=index.js.map
|