@distri/react 0.1.5 → 0.1.7
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/index.js +3 -14
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -14
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -185,7 +185,6 @@ function useChat({ agentId, contextId }) {
|
|
|
185
185
|
setMessages([]);
|
|
186
186
|
return;
|
|
187
187
|
}
|
|
188
|
-
console.log("inside: fetchMessages", client, contextId);
|
|
189
188
|
try {
|
|
190
189
|
setLoading(true);
|
|
191
190
|
setError(null);
|
|
@@ -200,7 +199,6 @@ function useChat({ agentId, contextId }) {
|
|
|
200
199
|
}
|
|
201
200
|
}, [client, contextId]);
|
|
202
201
|
(0, import_react3.useEffect)(() => {
|
|
203
|
-
console.log("useEffect", clientLoading, clientError, contextId, !clientLoading && !clientError && contextId);
|
|
204
202
|
if (!clientLoading && !clientError && contextId) {
|
|
205
203
|
fetchMessages();
|
|
206
204
|
} else {
|
|
@@ -229,9 +227,7 @@ function useChat({ agentId, contextId }) {
|
|
|
229
227
|
throw new Error("Invalid response format");
|
|
230
228
|
}
|
|
231
229
|
setMessages((prev) => {
|
|
232
|
-
console.log("message", message.messageId);
|
|
233
230
|
if (prev.find((msg) => msg.messageId === message.messageId)) {
|
|
234
|
-
console.log("message found", message.messageId);
|
|
235
231
|
return prev.map((msg) => {
|
|
236
232
|
if (msg.messageId === message.messageId) {
|
|
237
233
|
return {
|
|
@@ -242,7 +238,6 @@ function useChat({ agentId, contextId }) {
|
|
|
242
238
|
return msg;
|
|
243
239
|
});
|
|
244
240
|
} else {
|
|
245
|
-
console.log("message not found", message.messageId);
|
|
246
241
|
return [...prev, message];
|
|
247
242
|
}
|
|
248
243
|
});
|
|
@@ -263,30 +258,26 @@ function useChat({ agentId, contextId }) {
|
|
|
263
258
|
setError(null);
|
|
264
259
|
setIsStreaming(true);
|
|
265
260
|
if (abortControllerRef.current) {
|
|
266
|
-
console.log("aborting existing stream");
|
|
267
261
|
abortControllerRef.current.abort();
|
|
268
262
|
}
|
|
269
263
|
abortControllerRef.current = new AbortController();
|
|
270
264
|
const userMessage = import_core2.DistriClient.initMessage(input, "user", contextId);
|
|
271
265
|
setMessages((prev) => [...prev, userMessage]);
|
|
272
|
-
console.log("userMessage", userMessage);
|
|
273
266
|
const params = import_core2.DistriClient.initMessageParams(userMessage, {
|
|
274
267
|
blocking: false,
|
|
275
268
|
acceptedOutputModes: ["text/plain"],
|
|
276
269
|
...configuration
|
|
277
270
|
});
|
|
271
|
+
setIsStreaming(true);
|
|
278
272
|
const stream = await client.sendMessageStream(agentId, params);
|
|
279
273
|
for await (const event of stream) {
|
|
280
274
|
if (abortControllerRef.current?.signal.aborted) {
|
|
281
275
|
console.log("abort signal received");
|
|
282
276
|
break;
|
|
283
277
|
}
|
|
284
|
-
console.log("Stream event:", event);
|
|
285
278
|
let message = void 0;
|
|
286
279
|
if (event.kind === "message") {
|
|
287
280
|
message = event;
|
|
288
|
-
} else if (event.kind === "status-update") {
|
|
289
|
-
message = event.status.message;
|
|
290
281
|
}
|
|
291
282
|
if (!message)
|
|
292
283
|
continue;
|
|
@@ -305,15 +296,13 @@ function useChat({ agentId, contextId }) {
|
|
|
305
296
|
return [...prev, message];
|
|
306
297
|
}
|
|
307
298
|
});
|
|
308
|
-
if (event.kind === "status-update" && event.final) {
|
|
309
|
-
setIsStreaming(false);
|
|
310
|
-
break;
|
|
311
|
-
}
|
|
312
299
|
}
|
|
300
|
+
setIsStreaming(false);
|
|
313
301
|
} catch (err) {
|
|
314
302
|
if (err instanceof Error && err.name === "AbortError") {
|
|
315
303
|
return;
|
|
316
304
|
}
|
|
305
|
+
console.log("error", err);
|
|
317
306
|
setError(err instanceof Error ? err : new Error("Failed to stream message"));
|
|
318
307
|
} finally {
|
|
319
308
|
setLoading(false);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/DistriProvider.tsx","../src/useAgents.ts","../src/useChat.ts","../src/useThreads.ts"],"sourcesContent":["// Main exports for @distri/react package\n\nexport { DistriProvider, useDistri, useDistriClient } from './DistriProvider';\nexport { useAgents } from './useAgents';\nexport { useChat } from './useChat';\nexport { useThreads } from './useThreads';\n\nexport type { UseAgentsResult } from './useAgents';\nexport type { UseChatOptions, UseChatResult } from './useChat';\n\n// Re-export types from core for convenience\nexport type {\n DistriClientConfig,\n DistriAgent,\n DistriThread,\n AgentCard,\n Task,\n Message,\n TaskStatus,\n MessageSendParams\n} from '@distri/core';","import { createContext, useContext, useEffect, useState, ReactNode } from 'react';\nimport { DistriClient, DistriClientConfig } from '@distri/core';\n\ninterface DistriContextValue {\n client: DistriClient | null;\n error: Error | null;\n isLoading: boolean;\n}\n\nconst DistriContext = createContext<DistriContextValue>({\n client: null,\n error: null,\n isLoading: true\n});\n\ninterface DistriProviderProps {\n config: DistriClientConfig;\n children: ReactNode;\n}\n\nconst debug = (config: DistriClientConfig, ...args: any[]): void => {\n if (config.debug) {\n console.log('[DistriProvider]', ...args);\n }\n}\n\n\nexport function DistriProvider({ config, children }: DistriProviderProps) {\n const [client, setClient] = useState<DistriClient | null>(null);\n const [error, setError] = useState<Error | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n let currentClient: DistriClient | null = null;\n\n try {\n debug(config, '[DistriProvider] Initializing client with config:', config);\n currentClient = new DistriClient(config);\n setClient(currentClient);\n setError(null);\n setIsLoading(false);\n debug(config, '[DistriProvider] Client initialized successfully');\n } catch (err) {\n debug(config, '[DistriProvider] Failed to initialize client:', err);\n const error = err instanceof Error ? err : new Error('Failed to initialize client');\n setError(error);\n setClient(null);\n setIsLoading(false);\n }\n\n }, [config.baseUrl, config.apiVersion, config.debug]); // Only depend on key config values\n\n const contextValue: DistriContextValue = {\n client,\n error,\n isLoading\n };\n\n if (error) {\n console.error(config, '[DistriProvider] Rendering error state:', error.message);\n }\n\n if (isLoading) {\n debug(config, '[DistriProvider] Rendering loading state');\n }\n\n if (client) {\n debug(config, '[DistriProvider] Rendering with client available');\n }\n\n return (\n <DistriContext.Provider value={contextValue}>\n {children}\n </DistriContext.Provider>\n );\n}\n\nexport function useDistri(): DistriContextValue {\n const context = useContext(DistriContext);\n if (!context) {\n throw new Error('useDistri must be used within a DistriProvider');\n }\n return context;\n}\n\nexport function useDistriClient(): DistriClient {\n const { client, error, isLoading } = useDistri();\n\n if (isLoading) {\n throw new Error('Distri client is still loading');\n }\n\n if (error) {\n throw new Error(`Distri client initialization failed: ${error.message}`);\n }\n\n if (!client) {\n throw new Error('Distri client is not initialized');\n }\n\n return client;\n}","import { useState, useEffect, useCallback } from 'react';\nimport { DistriAgent } from '@distri/core';\nimport { useDistri } from './DistriProvider';\n\nexport interface UseAgentsResult {\n agents: DistriAgent[];\n loading: boolean;\n error: Error | null;\n refetch: () => Promise<void>;\n getAgent: (agentId: string) => Promise<DistriAgent>;\n}\n\nexport function useAgents(): UseAgentsResult {\n const { client, error: clientError, isLoading: clientLoading } = useDistri();\n const [agents, setAgents] = useState<DistriAgent[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchAgents = useCallback(async () => {\n if (!client) {\n console.log('[useAgents] Client not available, skipping fetch');\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n console.log('[useAgents] Fetching agents...');\n const fetchedAgents = await client.getAgents();\n console.log('[useAgents] Fetched agents:', fetchedAgents);\n setAgents(fetchedAgents);\n } catch (err) {\n console.error('[useAgents] Failed to fetch agents:', err);\n setError(err instanceof Error ? err : new Error('Failed to fetch agents'));\n } finally {\n setLoading(false);\n }\n }, [client]);\n\n const getAgent = useCallback(async (agentId: string): Promise<DistriAgent> => {\n if (!client) {\n throw new Error('Client not available');\n }\n\n try {\n const agent = await client.getAgent(agentId);\n \n // Update the agent in our local state if it exists\n setAgents(prev => prev.map(a => a.id === agentId ? agent : a));\n \n return agent;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to get agent');\n setError(error);\n throw error;\n }\n }, [client]);\n\n useEffect(() => {\n if (clientLoading) {\n console.log('[useAgents] Client is loading, waiting...');\n setLoading(true);\n return;\n }\n\n if (clientError) {\n console.error('[useAgents] Client error:', clientError);\n setError(clientError);\n setLoading(false);\n return;\n }\n\n if (client) {\n console.log('[useAgents] Client ready, fetching agents');\n fetchAgents();\n } else {\n console.log('[useAgents] No client available');\n setLoading(false);\n }\n }, [clientLoading, clientError, client, fetchAgents]);\n\n return {\n agents,\n loading: loading || clientLoading,\n error: error || clientError,\n refetch: fetchAgents,\n getAgent\n };\n}","import { useState, useEffect, useCallback, useRef } from 'react';\nimport {\n Message,\n MessageSendParams,\n TaskStatusUpdateEvent,\n DistriClient\n} from '@distri/core';\nimport { useDistri } from './DistriProvider';\n\nexport interface UseChatOptions {\n agentId: string;\n contextId?: string;\n}\n\nexport interface UseChatResult {\n loading: boolean;\n error: Error | null;\n messages: Message[];\n isStreaming: boolean;\n sendMessage: (text: string, configuration?: MessageSendParams['configuration']) => Promise<void>;\n sendMessageStream: (text: string, configuration?: MessageSendParams['configuration']) => Promise<void>;\n clearMessages: () => void;\n refreshMessages: () => Promise<void>;\n abort: () => void;\n}\n\nexport function useChat({ agentId, contextId }: UseChatOptions): UseChatResult {\n const { client, error: clientError, isLoading: clientLoading } = useDistri();\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [messages, setMessages] = useState<Message[]>([]);\n const [isStreaming, setIsStreaming] = useState(false);\n const abortControllerRef = useRef<AbortController | null>(null);\n\n const fetchMessages = useCallback(async () => {\n if (!client || !contextId) {\n setMessages([]);\n return;\n }\n\n console.log('inside: fetchMessages', client, contextId);\n\n try {\n setLoading(true);\n setError(null);\n const fetchedMessages = await client.getThreadMessages(contextId);\n setMessages(fetchedMessages);\n } catch (err) {\n console.error('[useThreadMessages] Failed to fetch messages:', err);\n setError(err instanceof Error ? err : new Error('Failed to fetch messages'));\n setMessages([]); // Clear messages on error\n } finally {\n setLoading(false);\n }\n }, [client, contextId]);\n\n useEffect(() => {\n console.log('useEffect', clientLoading, clientError, contextId, !clientLoading && !clientError && contextId);\n if (!clientLoading && !clientError && contextId) {\n fetchMessages();\n } else {\n setMessages([]);\n }\n }, [clientLoading, clientError, contextId, fetchMessages]);\n\n const sendMessage = useCallback(async (\n input: string,\n configuration?: MessageSendParams['configuration']\n ) => {\n if (!client) {\n setError(new Error('Client not available'));\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n\n const userMessage = DistriClient.initMessage(input, 'user', contextId);\n // Add user message to local state immediately\n setMessages(prev => [...prev, userMessage]);\n\n const params = DistriClient.initMessageParams(userMessage, configuration);\n\n const result = await client.sendMessage(agentId, params);\n\n let message = undefined;\n if (result.kind === 'message') {\n message = (result as Message);\n } else if (result.kind === 'task') {\n message = result.status.message as Message;\n }\n\n if (!message) {\n throw new Error('Invalid response format');\n }\n\n setMessages((prev: Message[]) => {\n console.log('message', message.messageId);\n if (prev.find(msg => msg.messageId === message.messageId)) {\n console.log('message found', message.messageId);\n return prev.map(msg => {\n if (msg.messageId === message.messageId) {\n return {\n ...msg,\n parts: [...msg.parts, ...message.parts],\n };\n }\n return msg;\n });\n } else {\n console.log('message not found', message.messageId);\n return [...prev, message];\n }\n });\n } catch (err) {\n console.error(err);\n setError(err instanceof Error ? err : new Error('Failed to send message'));\n } finally {\n setLoading(false);\n }\n }, [client, agentId]);\n\n const sendMessageStream = useCallback(async (\n input: string,\n configuration?: MessageSendParams['configuration']\n ) => {\n if (!client) {\n setError(new Error('Client not available'));\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n setIsStreaming(true);\n\n // Cancel any existing stream\n if (abortControllerRef.current) {\n console.log('aborting existing stream');\n abortControllerRef.current.abort();\n }\n abortControllerRef.current = new AbortController();\n\n const userMessage = DistriClient.initMessage(input, 'user', contextId);\n // Add user message to local state immediately\n setMessages(prev => [...prev, userMessage]);\n\n console.log('userMessage', userMessage);\n const params = DistriClient.initMessageParams(userMessage, {\n blocking: false,\n acceptedOutputModes: ['text/plain'],\n ...configuration\n });\n\n const stream = await client.sendMessageStream(agentId, params);\n\n for await (const event of stream) {\n if (abortControllerRef.current?.signal.aborted) {\n console.log('abort signal received');\n break;\n }\n\n console.log('Stream event:', event); // Debug logging\n\n let message = undefined;\n if (event.kind === 'message') {\n message = (event as Message);\n } else if (event.kind === 'status-update') {\n message = (event as TaskStatusUpdateEvent).status.message as Message;\n }\n\n if (!message) continue;\n setMessages((prev: Message[]) => {\n if (prev.find(msg => msg.messageId === message.messageId)) {\n return prev.map(msg => {\n if (msg.messageId === message.messageId) {\n return {\n ...msg,\n parts: [...msg.parts, ...message.parts],\n };\n }\n return msg;\n });\n } else {\n return [...prev, message];\n }\n });\n\n if (event.kind === 'status-update' && (event as TaskStatusUpdateEvent).final) {\n setIsStreaming(false);\n break;\n }\n }\n } catch (err) {\n if (err instanceof Error && err.name === 'AbortError') {\n // Stream was cancelled, not an error\n return;\n }\n\n setError(err instanceof Error ? err : new Error('Failed to stream message'));\n } finally {\n setLoading(false);\n setIsStreaming(false);\n }\n }, [client, agentId]);\n\n const clearMessages = useCallback(() => {\n setMessages([]);\n }, []);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n };\n }, []);\n\n const abort = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n }, []);\n\n return {\n loading: loading || clientLoading,\n error: error || clientError,\n messages,\n isStreaming,\n sendMessage,\n sendMessageStream,\n clearMessages,\n refreshMessages: fetchMessages,\n abort,\n };\n}","import { useState, useEffect, useCallback } from 'react';\nimport { DistriThread } from '@distri/core';\nimport { useDistri } from './DistriProvider';\n\nexport interface UseThreadsResult {\n threads: DistriThread[];\n loading: boolean;\n error: Error | null;\n refetch: () => Promise<void>;\n deleteThread: (threadId: string) => Promise<void>;\n fetchThread: (threadId: string) => Promise<DistriThread>;\n updateThread: (threadId: string, localId?: string) => Promise<void>;\n}\n\nexport function useThreads(): UseThreadsResult {\n const { client, error: clientError, isLoading: clientLoading } = useDistri();\n const [threads, setThreads] = useState<DistriThread[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchThreads = useCallback(async () => {\n if (!client) {\n console.log('[useThreads] Client not available, skipping fetch');\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n console.log('[useThreads] Fetching threads...');\n const fetchedThreads = await client.getThreads();\n console.log('[useThreads] Fetched threads:', fetchedThreads);\n setThreads(fetchedThreads);\n } catch (err) {\n console.error('[useThreads] Failed to fetch threads:', err);\n setError(err instanceof Error ? err : new Error('Failed to fetch threads'));\n } finally {\n setLoading(false);\n }\n }, [client]);\n\n const fetchThread = useCallback(async (threadId: string) => {\n if (!client) {\n throw new Error('Client not available');\n }\n try {\n const response = await client.getThread(threadId);\n return response;\n } catch (err) {\n console.error('[useThreads] Failed to fetch thread:', err);\n throw err;\n }\n }, [client]);\n\n const deleteThread = useCallback(async (threadId: string) => {\n if (!client) {\n throw new Error('Client not available');\n }\n\n try {\n // Try to delete from server (may not exist yet for local threads)\n const response = await fetch(`${client.baseUrl}/api/v1/threads/${threadId}`, {\n method: 'DELETE',\n });\n if (!response.ok) {\n throw new Error('Failed to delete thread');\n }\n\n // Remove from local state regardless of server response\n setThreads(prev => prev.filter(thread => thread.id !== threadId));\n } catch (err) {\n // Still remove from local state even if server delete fails\n setThreads(prev => prev.filter(thread => thread.id !== threadId));\n console.warn('Failed to delete thread from server, but removed locally:', err);\n }\n }, [client]);\n\n const updateThread = useCallback(async (threadId: string, localId?: string) => {\n if (!client) {\n return;\n }\n\n try {\n const response = await fetch(`${client.baseUrl}/api/v1/threads/${threadId}`);\n if (response.ok) {\n const updatedThread = await response.json();\n setThreads(prev => {\n // If a local thread with localId exists, replace it with the backend thread\n if (localId && prev.some(thread => thread.id === localId)) {\n return [\n updatedThread,\n ...prev.filter(thread => thread.id !== localId && thread.id !== threadId)\n ];\n }\n // Otherwise, just update by threadId\n return prev.map(thread =>\n thread.id === threadId ? updatedThread : thread\n );\n });\n }\n } catch (err) {\n console.warn('Failed to update thread:', err);\n }\n }, [client]);\n\n useEffect(() => {\n if (clientLoading) {\n console.log('[useThreads] Client is loading, waiting...');\n setLoading(true);\n return;\n }\n\n if (clientError) {\n console.error('[useThreads] Client error:', clientError);\n setError(clientError);\n setLoading(false);\n return;\n }\n\n if (client) {\n console.log('[useThreads] Client ready, fetching threads');\n fetchThreads();\n } else {\n console.log('[useThreads] No client available');\n setLoading(false);\n }\n }, [clientLoading, clientError, client, fetchThreads]);\n\n return {\n threads,\n loading: loading || clientLoading,\n error: error || clientError,\n refetch: fetchThreads,\n deleteThread,\n fetchThread,\n updateThread\n };\n}\n\nexport interface UseThreadMessagesOptions {\n threadId: string | null;\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAA0E;AAC1E,kBAAiD;AAsE7C;AA9DJ,IAAM,oBAAgB,4BAAkC;AAAA,EACtD,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,WAAW;AACb,CAAC;AAOD,IAAM,QAAQ,CAAC,WAA+B,SAAsB;AAClE,MAAI,OAAO,OAAO;AAChB,YAAQ,IAAI,oBAAoB,GAAG,IAAI;AAAA,EACzC;AACF;AAGO,SAAS,eAAe,EAAE,QAAQ,SAAS,GAAwB;AACxE,QAAM,CAAC,QAAQ,SAAS,QAAI,uBAA8B,IAAI;AAC9D,QAAM,CAAC,OAAO,QAAQ,QAAI,uBAAuB,IAAI;AACrD,QAAM,CAAC,WAAW,YAAY,QAAI,uBAAS,IAAI;AAE/C,8BAAU,MAAM;AACd,QAAI,gBAAqC;AAEzC,QAAI;AACF,YAAM,QAAQ,qDAAqD,MAAM;AACzE,sBAAgB,IAAI,yBAAa,MAAM;AACvC,gBAAU,aAAa;AACvB,eAAS,IAAI;AACb,mBAAa,KAAK;AAClB,YAAM,QAAQ,kDAAkD;AAAA,IAClE,SAAS,KAAK;AACZ,YAAM,QAAQ,iDAAiD,GAAG;AAClE,YAAMA,SAAQ,eAAe,QAAQ,MAAM,IAAI,MAAM,6BAA6B;AAClF,eAASA,MAAK;AACd,gBAAU,IAAI;AACd,mBAAa,KAAK;AAAA,IACpB;AAAA,EAEF,GAAG,CAAC,OAAO,SAAS,OAAO,YAAY,OAAO,KAAK,CAAC;AAEpD,QAAM,eAAmC;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,MAAI,OAAO;AACT,YAAQ,MAAM,QAAQ,2CAA2C,MAAM,OAAO;AAAA,EAChF;AAEA,MAAI,WAAW;AACb,UAAM,QAAQ,0CAA0C;AAAA,EAC1D;AAEA,MAAI,QAAQ;AACV,UAAM,QAAQ,kDAAkD;AAAA,EAClE;AAEA,SACE,4CAAC,cAAc,UAAd,EAAuB,OAAO,cAC5B,UACH;AAEJ;AAEO,SAAS,YAAgC;AAC9C,QAAM,cAAU,yBAAW,aAAa;AACxC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AACA,SAAO;AACT;AAEO,SAAS,kBAAgC;AAC9C,QAAM,EAAE,QAAQ,OAAO,UAAU,IAAI,UAAU;AAE/C,MAAI,WAAW;AACb,UAAM,IAAI,MAAM,gCAAgC;AAAA,EAClD;AAEA,MAAI,OAAO;AACT,UAAM,IAAI,MAAM,wCAAwC,MAAM,OAAO,EAAE;AAAA,EACzE;AAEA,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AAEA,SAAO;AACT;;;ACrGA,IAAAC,gBAAiD;AAY1C,SAAS,YAA6B;AAC3C,QAAM,EAAE,QAAQ,OAAO,aAAa,WAAW,cAAc,IAAI,UAAU;AAC3E,QAAM,CAAC,QAAQ,SAAS,QAAI,wBAAwB,CAAC,CAAC;AACtD,QAAM,CAAC,SAAS,UAAU,QAAI,wBAAS,IAAI;AAC3C,QAAM,CAAC,OAAO,QAAQ,QAAI,wBAAuB,IAAI;AAErD,QAAM,kBAAc,2BAAY,YAAY;AAC1C,QAAI,CAAC,QAAQ;AACX,cAAQ,IAAI,kDAAkD;AAC9D;AAAA,IACF;AAEA,QAAI;AACF,iBAAW,IAAI;AACf,eAAS,IAAI;AACb,cAAQ,IAAI,gCAAgC;AAC5C,YAAM,gBAAgB,MAAM,OAAO,UAAU;AAC7C,cAAQ,IAAI,+BAA+B,aAAa;AACxD,gBAAU,aAAa;AAAA,IACzB,SAAS,KAAK;AACZ,cAAQ,MAAM,uCAAuC,GAAG;AACxD,eAAS,eAAe,QAAQ,MAAM,IAAI,MAAM,wBAAwB,CAAC;AAAA,IAC3E,UAAE;AACA,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,eAAW,2BAAY,OAAO,YAA0C;AAC5E,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,sBAAsB;AAAA,IACxC;AAEA,QAAI;AACF,YAAM,QAAQ,MAAM,OAAO,SAAS,OAAO;AAG3C,gBAAU,UAAQ,KAAK,IAAI,OAAK,EAAE,OAAO,UAAU,QAAQ,CAAC,CAAC;AAE7D,aAAO;AAAA,IACT,SAAS,KAAK;AACZ,YAAMC,SAAQ,eAAe,QAAQ,MAAM,IAAI,MAAM,qBAAqB;AAC1E,eAASA,MAAK;AACd,YAAMA;AAAA,IACR;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,+BAAU,MAAM;AACd,QAAI,eAAe;AACjB,cAAQ,IAAI,2CAA2C;AACvD,iBAAW,IAAI;AACf;AAAA,IACF;AAEA,QAAI,aAAa;AACf,cAAQ,MAAM,6BAA6B,WAAW;AACtD,eAAS,WAAW;AACpB,iBAAW,KAAK;AAChB;AAAA,IACF;AAEA,QAAI,QAAQ;AACV,cAAQ,IAAI,2CAA2C;AACvD,kBAAY;AAAA,IACd,OAAO;AACL,cAAQ,IAAI,iCAAiC;AAC7C,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,eAAe,aAAa,QAAQ,WAAW,CAAC;AAEpD,SAAO;AAAA,IACL;AAAA,IACA,SAAS,WAAW;AAAA,IACpB,OAAO,SAAS;AAAA,IAChB,SAAS;AAAA,IACT;AAAA,EACF;AACF;;;ACxFA,IAAAC,gBAAyD;AACzD,IAAAC,eAKO;AAoBA,SAAS,QAAQ,EAAE,SAAS,UAAU,GAAkC;AAC7E,QAAM,EAAE,QAAQ,OAAO,aAAa,WAAW,cAAc,IAAI,UAAU;AAC3E,QAAM,CAAC,SAAS,UAAU,QAAI,wBAAS,KAAK;AAC5C,QAAM,CAAC,OAAO,QAAQ,QAAI,wBAAuB,IAAI;AACrD,QAAM,CAAC,UAAU,WAAW,QAAI,wBAAoB,CAAC,CAAC;AACtD,QAAM,CAAC,aAAa,cAAc,QAAI,wBAAS,KAAK;AACpD,QAAM,yBAAqB,sBAA+B,IAAI;AAE9D,QAAM,oBAAgB,2BAAY,YAAY;AAC5C,QAAI,CAAC,UAAU,CAAC,WAAW;AACzB,kBAAY,CAAC,CAAC;AACd;AAAA,IACF;AAEA,YAAQ,IAAI,yBAAyB,QAAQ,SAAS;AAEtD,QAAI;AACF,iBAAW,IAAI;AACf,eAAS,IAAI;AACb,YAAM,kBAAkB,MAAM,OAAO,kBAAkB,SAAS;AAChE,kBAAY,eAAe;AAAA,IAC7B,SAAS,KAAK;AACZ,cAAQ,MAAM,iDAAiD,GAAG;AAClE,eAAS,eAAe,QAAQ,MAAM,IAAI,MAAM,0BAA0B,CAAC;AAC3E,kBAAY,CAAC,CAAC;AAAA,IAChB,UAAE;AACA,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,QAAQ,SAAS,CAAC;AAEtB,+BAAU,MAAM;AACd,YAAQ,IAAI,aAAa,eAAe,aAAa,WAAW,CAAC,iBAAiB,CAAC,eAAe,SAAS;AAC3G,QAAI,CAAC,iBAAiB,CAAC,eAAe,WAAW;AAC/C,oBAAc;AAAA,IAChB,OAAO;AACL,kBAAY,CAAC,CAAC;AAAA,IAChB;AAAA,EACF,GAAG,CAAC,eAAe,aAAa,WAAW,aAAa,CAAC;AAEzD,QAAM,kBAAc,2BAAY,OAC9B,OACA,kBACG;AACH,QAAI,CAAC,QAAQ;AACX,eAAS,IAAI,MAAM,sBAAsB,CAAC;AAC1C;AAAA,IACF;AAEA,QAAI;AACF,iBAAW,IAAI;AACf,eAAS,IAAI;AAEb,YAAM,cAAc,0BAAa,YAAY,OAAO,QAAQ,SAAS;AAErE,kBAAY,UAAQ,CAAC,GAAG,MAAM,WAAW,CAAC;AAE1C,YAAM,SAAS,0BAAa,kBAAkB,aAAa,aAAa;AAExE,YAAM,SAAS,MAAM,OAAO,YAAY,SAAS,MAAM;AAEvD,UAAI,UAAU;AACd,UAAI,OAAO,SAAS,WAAW;AAC7B,kBAAW;AAAA,MACb,WAAW,OAAO,SAAS,QAAQ;AACjC,kBAAU,OAAO,OAAO;AAAA,MAC1B;AAEA,UAAI,CAAC,SAAS;AACZ,cAAM,IAAI,MAAM,yBAAyB;AAAA,MAC3C;AAEA,kBAAY,CAAC,SAAoB;AAC/B,gBAAQ,IAAI,WAAW,QAAQ,SAAS;AACxC,YAAI,KAAK,KAAK,SAAO,IAAI,cAAc,QAAQ,SAAS,GAAG;AACzD,kBAAQ,IAAI,iBAAiB,QAAQ,SAAS;AAC9C,iBAAO,KAAK,IAAI,SAAO;AACrB,gBAAI,IAAI,cAAc,QAAQ,WAAW;AACvC,qBAAO;AAAA,gBACL,GAAG;AAAA,gBACH,OAAO,CAAC,GAAG,IAAI,OAAO,GAAG,QAAQ,KAAK;AAAA,cACxC;AAAA,YACF;AACA,mBAAO;AAAA,UACT,CAAC;AAAA,QACH,OAAO;AACL,kBAAQ,IAAI,qBAAqB,QAAQ,SAAS;AAClD,iBAAO,CAAC,GAAG,MAAM,OAAO;AAAA,QAC1B;AAAA,MACF,CAAC;AAAA,IACH,SAAS,KAAK;AACZ,cAAQ,MAAM,GAAG;AACjB,eAAS,eAAe,QAAQ,MAAM,IAAI,MAAM,wBAAwB,CAAC;AAAA,IAC3E,UAAE;AACA,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,QAAQ,OAAO,CAAC;AAEpB,QAAM,wBAAoB,2BAAY,OACpC,OACA,kBACG;AACH,QAAI,CAAC,QAAQ;AACX,eAAS,IAAI,MAAM,sBAAsB,CAAC;AAC1C;AAAA,IACF;AAEA,QAAI;AACF,iBAAW,IAAI;AACf,eAAS,IAAI;AACb,qBAAe,IAAI;AAGnB,UAAI,mBAAmB,SAAS;AAC9B,gBAAQ,IAAI,0BAA0B;AACtC,2BAAmB,QAAQ,MAAM;AAAA,MACnC;AACA,yBAAmB,UAAU,IAAI,gBAAgB;AAEjD,YAAM,cAAc,0BAAa,YAAY,OAAO,QAAQ,SAAS;AAErE,kBAAY,UAAQ,CAAC,GAAG,MAAM,WAAW,CAAC;AAE1C,cAAQ,IAAI,eAAe,WAAW;AACtC,YAAM,SAAS,0BAAa,kBAAkB,aAAa;AAAA,QACzD,UAAU;AAAA,QACV,qBAAqB,CAAC,YAAY;AAAA,QAClC,GAAG;AAAA,MACL,CAAC;AAED,YAAM,SAAS,MAAM,OAAO,kBAAkB,SAAS,MAAM;AAE7D,uBAAiB,SAAS,QAAQ;AAChC,YAAI,mBAAmB,SAAS,OAAO,SAAS;AAC9C,kBAAQ,IAAI,uBAAuB;AACnC;AAAA,QACF;AAEA,gBAAQ,IAAI,iBAAiB,KAAK;AAElC,YAAI,UAAU;AACd,YAAI,MAAM,SAAS,WAAW;AAC5B,oBAAW;AAAA,QACb,WAAW,MAAM,SAAS,iBAAiB;AACzC,oBAAW,MAAgC,OAAO;AAAA,QACpD;AAEA,YAAI,CAAC;AAAS;AACd,oBAAY,CAAC,SAAoB;AAC/B,cAAI,KAAK,KAAK,SAAO,IAAI,cAAc,QAAQ,SAAS,GAAG;AACzD,mBAAO,KAAK,IAAI,SAAO;AACrB,kBAAI,IAAI,cAAc,QAAQ,WAAW;AACvC,uBAAO;AAAA,kBACL,GAAG;AAAA,kBACH,OAAO,CAAC,GAAG,IAAI,OAAO,GAAG,QAAQ,KAAK;AAAA,gBACxC;AAAA,cACF;AACA,qBAAO;AAAA,YACT,CAAC;AAAA,UACH,OAAO;AACL,mBAAO,CAAC,GAAG,MAAM,OAAO;AAAA,UAC1B;AAAA,QACF,CAAC;AAED,YAAI,MAAM,SAAS,mBAAoB,MAAgC,OAAO;AAC5E,yBAAe,KAAK;AACpB;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,KAAK;AACZ,UAAI,eAAe,SAAS,IAAI,SAAS,cAAc;AAErD;AAAA,MACF;AAEA,eAAS,eAAe,QAAQ,MAAM,IAAI,MAAM,0BAA0B,CAAC;AAAA,IAC7E,UAAE;AACA,iBAAW,KAAK;AAChB,qBAAe,KAAK;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,QAAQ,OAAO,CAAC;AAEpB,QAAM,oBAAgB,2BAAY,MAAM;AACtC,gBAAY,CAAC,CAAC;AAAA,EAChB,GAAG,CAAC,CAAC;AAGL,+BAAU,MAAM;AACd,WAAO,MAAM;AACX,UAAI,mBAAmB,SAAS;AAC9B,2BAAmB,QAAQ,MAAM;AAAA,MACnC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,YAAQ,2BAAY,MAAM;AAC9B,QAAI,mBAAmB,SAAS;AAC9B,yBAAmB,QAAQ,MAAM;AAAA,IACnC;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL,SAAS,WAAW;AAAA,IACpB,OAAO,SAAS;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IACjB;AAAA,EACF;AACF;;;AC7OA,IAAAC,gBAAiD;AAc1C,SAAS,aAA+B;AAC7C,QAAM,EAAE,QAAQ,OAAO,aAAa,WAAW,cAAc,IAAI,UAAU;AAC3E,QAAM,CAAC,SAAS,UAAU,QAAI,wBAAyB,CAAC,CAAC;AACzD,QAAM,CAAC,SAAS,UAAU,QAAI,wBAAS,IAAI;AAC3C,QAAM,CAAC,OAAO,QAAQ,QAAI,wBAAuB,IAAI;AAErD,QAAM,mBAAe,2BAAY,YAAY;AAC3C,QAAI,CAAC,QAAQ;AACX,cAAQ,IAAI,mDAAmD;AAC/D;AAAA,IACF;AAEA,QAAI;AACF,iBAAW,IAAI;AACf,eAAS,IAAI;AACb,cAAQ,IAAI,kCAAkC;AAC9C,YAAM,iBAAiB,MAAM,OAAO,WAAW;AAC/C,cAAQ,IAAI,iCAAiC,cAAc;AAC3D,iBAAW,cAAc;AAAA,IAC3B,SAAS,KAAK;AACZ,cAAQ,MAAM,yCAAyC,GAAG;AAC1D,eAAS,eAAe,QAAQ,MAAM,IAAI,MAAM,yBAAyB,CAAC;AAAA,IAC5E,UAAE;AACA,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,kBAAc,2BAAY,OAAO,aAAqB;AAC1D,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,sBAAsB;AAAA,IACxC;AACA,QAAI;AACF,YAAM,WAAW,MAAM,OAAO,UAAU,QAAQ;AAChD,aAAO;AAAA,IACT,SAAS,KAAK;AACZ,cAAQ,MAAM,wCAAwC,GAAG;AACzD,YAAM;AAAA,IACR;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,mBAAe,2BAAY,OAAO,aAAqB;AAC3D,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,sBAAsB;AAAA,IACxC;AAEA,QAAI;AAEF,YAAM,WAAW,MAAM,MAAM,GAAG,OAAO,OAAO,mBAAmB,QAAQ,IAAI;AAAA,QAC3E,QAAQ;AAAA,MACV,CAAC;AACD,UAAI,CAAC,SAAS,IAAI;AAChB,cAAM,IAAI,MAAM,yBAAyB;AAAA,MAC3C;AAGA,iBAAW,UAAQ,KAAK,OAAO,YAAU,OAAO,OAAO,QAAQ,CAAC;AAAA,IAClE,SAAS,KAAK;AAEZ,iBAAW,UAAQ,KAAK,OAAO,YAAU,OAAO,OAAO,QAAQ,CAAC;AAChE,cAAQ,KAAK,6DAA6D,GAAG;AAAA,IAC/E;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,mBAAe,2BAAY,OAAO,UAAkB,YAAqB;AAC7E,QAAI,CAAC,QAAQ;AACX;AAAA,IACF;AAEA,QAAI;AACF,YAAM,WAAW,MAAM,MAAM,GAAG,OAAO,OAAO,mBAAmB,QAAQ,EAAE;AAC3E,UAAI,SAAS,IAAI;AACf,cAAM,gBAAgB,MAAM,SAAS,KAAK;AAC1C,mBAAW,UAAQ;AAEjB,cAAI,WAAW,KAAK,KAAK,YAAU,OAAO,OAAO,OAAO,GAAG;AACzD,mBAAO;AAAA,cACL;AAAA,cACA,GAAG,KAAK,OAAO,YAAU,OAAO,OAAO,WAAW,OAAO,OAAO,QAAQ;AAAA,YAC1E;AAAA,UACF;AAEA,iBAAO,KAAK;AAAA,YAAI,YACd,OAAO,OAAO,WAAW,gBAAgB;AAAA,UAC3C;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,SAAS,KAAK;AACZ,cAAQ,KAAK,4BAA4B,GAAG;AAAA,IAC9C;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,+BAAU,MAAM;AACd,QAAI,eAAe;AACjB,cAAQ,IAAI,4CAA4C;AACxD,iBAAW,IAAI;AACf;AAAA,IACF;AAEA,QAAI,aAAa;AACf,cAAQ,MAAM,8BAA8B,WAAW;AACvD,eAAS,WAAW;AACpB,iBAAW,KAAK;AAChB;AAAA,IACF;AAEA,QAAI,QAAQ;AACV,cAAQ,IAAI,6CAA6C;AACzD,mBAAa;AAAA,IACf,OAAO;AACL,cAAQ,IAAI,kCAAkC;AAC9C,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,eAAe,aAAa,QAAQ,YAAY,CAAC;AAErD,SAAO;AAAA,IACL;AAAA,IACA,SAAS,WAAW;AAAA,IACpB,OAAO,SAAS;AAAA,IAChB,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":["error","import_react","error","import_react","import_core","import_react"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/DistriProvider.tsx","../src/useAgents.ts","../src/useChat.ts","../src/useThreads.ts"],"sourcesContent":["// Main exports for @distri/react package\n\nexport { DistriProvider, useDistri, useDistriClient } from './DistriProvider';\nexport { useAgents } from './useAgents';\nexport { useChat } from './useChat';\nexport { useThreads } from './useThreads';\n\nexport type { UseAgentsResult } from './useAgents';\nexport type { UseChatOptions, UseChatResult } from './useChat';\n\n// Re-export types from core for convenience\nexport type {\n DistriClientConfig,\n DistriAgent,\n DistriThread,\n AgentCard,\n Task,\n Message,\n TaskStatus,\n MessageSendParams\n} from '@distri/core';","import { createContext, useContext, useEffect, useState, ReactNode } from 'react';\nimport { DistriClient, DistriClientConfig } from '@distri/core';\n\ninterface DistriContextValue {\n client: DistriClient | null;\n error: Error | null;\n isLoading: boolean;\n}\n\nconst DistriContext = createContext<DistriContextValue>({\n client: null,\n error: null,\n isLoading: true\n});\n\ninterface DistriProviderProps {\n config: DistriClientConfig;\n children: ReactNode;\n}\n\nconst debug = (config: DistriClientConfig, ...args: any[]): void => {\n if (config.debug) {\n console.log('[DistriProvider]', ...args);\n }\n}\n\n\nexport function DistriProvider({ config, children }: DistriProviderProps) {\n const [client, setClient] = useState<DistriClient | null>(null);\n const [error, setError] = useState<Error | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n let currentClient: DistriClient | null = null;\n\n try {\n debug(config, '[DistriProvider] Initializing client with config:', config);\n currentClient = new DistriClient(config);\n setClient(currentClient);\n setError(null);\n setIsLoading(false);\n debug(config, '[DistriProvider] Client initialized successfully');\n } catch (err) {\n debug(config, '[DistriProvider] Failed to initialize client:', err);\n const error = err instanceof Error ? err : new Error('Failed to initialize client');\n setError(error);\n setClient(null);\n setIsLoading(false);\n }\n\n }, [config.baseUrl, config.apiVersion, config.debug]); // Only depend on key config values\n\n const contextValue: DistriContextValue = {\n client,\n error,\n isLoading\n };\n\n if (error) {\n console.error(config, '[DistriProvider] Rendering error state:', error.message);\n }\n\n if (isLoading) {\n debug(config, '[DistriProvider] Rendering loading state');\n }\n\n if (client) {\n debug(config, '[DistriProvider] Rendering with client available');\n }\n\n return (\n <DistriContext.Provider value={contextValue}>\n {children}\n </DistriContext.Provider>\n );\n}\n\nexport function useDistri(): DistriContextValue {\n const context = useContext(DistriContext);\n if (!context) {\n throw new Error('useDistri must be used within a DistriProvider');\n }\n return context;\n}\n\nexport function useDistriClient(): DistriClient {\n const { client, error, isLoading } = useDistri();\n\n if (isLoading) {\n throw new Error('Distri client is still loading');\n }\n\n if (error) {\n throw new Error(`Distri client initialization failed: ${error.message}`);\n }\n\n if (!client) {\n throw new Error('Distri client is not initialized');\n }\n\n return client;\n}","import { useState, useEffect, useCallback } from 'react';\nimport { DistriAgent } from '@distri/core';\nimport { useDistri } from './DistriProvider';\n\nexport interface UseAgentsResult {\n agents: DistriAgent[];\n loading: boolean;\n error: Error | null;\n refetch: () => Promise<void>;\n getAgent: (agentId: string) => Promise<DistriAgent>;\n}\n\nexport function useAgents(): UseAgentsResult {\n const { client, error: clientError, isLoading: clientLoading } = useDistri();\n const [agents, setAgents] = useState<DistriAgent[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchAgents = useCallback(async () => {\n if (!client) {\n console.log('[useAgents] Client not available, skipping fetch');\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n console.log('[useAgents] Fetching agents...');\n const fetchedAgents = await client.getAgents();\n console.log('[useAgents] Fetched agents:', fetchedAgents);\n setAgents(fetchedAgents);\n } catch (err) {\n console.error('[useAgents] Failed to fetch agents:', err);\n setError(err instanceof Error ? err : new Error('Failed to fetch agents'));\n } finally {\n setLoading(false);\n }\n }, [client]);\n\n const getAgent = useCallback(async (agentId: string): Promise<DistriAgent> => {\n if (!client) {\n throw new Error('Client not available');\n }\n\n try {\n const agent = await client.getAgent(agentId);\n \n // Update the agent in our local state if it exists\n setAgents(prev => prev.map(a => a.id === agentId ? agent : a));\n \n return agent;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to get agent');\n setError(error);\n throw error;\n }\n }, [client]);\n\n useEffect(() => {\n if (clientLoading) {\n console.log('[useAgents] Client is loading, waiting...');\n setLoading(true);\n return;\n }\n\n if (clientError) {\n console.error('[useAgents] Client error:', clientError);\n setError(clientError);\n setLoading(false);\n return;\n }\n\n if (client) {\n console.log('[useAgents] Client ready, fetching agents');\n fetchAgents();\n } else {\n console.log('[useAgents] No client available');\n setLoading(false);\n }\n }, [clientLoading, clientError, client, fetchAgents]);\n\n return {\n agents,\n loading: loading || clientLoading,\n error: error || clientError,\n refetch: fetchAgents,\n getAgent\n };\n}","import { useState, useEffect, useCallback, useRef } from 'react';\nimport {\n Message,\n MessageSendParams,\n DistriClient\n} from '@distri/core';\nimport { useDistri } from './DistriProvider';\n\nexport interface UseChatOptions {\n agentId: string;\n contextId?: string;\n}\n\nexport interface UseChatResult {\n loading: boolean;\n error: Error | null;\n messages: Message[];\n isStreaming: boolean;\n sendMessage: (text: string, configuration?: MessageSendParams['configuration']) => Promise<void>;\n sendMessageStream: (text: string, configuration?: MessageSendParams['configuration']) => Promise<void>;\n clearMessages: () => void;\n refreshMessages: () => Promise<void>;\n abort: () => void;\n}\n\nexport function useChat({ agentId, contextId }: UseChatOptions): UseChatResult {\n const { client, error: clientError, isLoading: clientLoading } = useDistri();\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [messages, setMessages] = useState<Message[]>([]);\n const [isStreaming, setIsStreaming] = useState(false);\n const abortControllerRef = useRef<AbortController | null>(null);\n\n const fetchMessages = useCallback(async () => {\n if (!client || !contextId) {\n setMessages([]);\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n const fetchedMessages = await client.getThreadMessages(contextId);\n setMessages(fetchedMessages);\n } catch (err) {\n console.error('[useThreadMessages] Failed to fetch messages:', err);\n setError(err instanceof Error ? err : new Error('Failed to fetch messages'));\n setMessages([]); // Clear messages on error\n } finally {\n setLoading(false);\n }\n }, [client, contextId]);\n\n useEffect(() => {\n if (!clientLoading && !clientError && contextId) {\n fetchMessages();\n } else {\n setMessages([]);\n }\n }, [clientLoading, clientError, contextId, fetchMessages]);\n\n const sendMessage = useCallback(async (\n input: string,\n configuration?: MessageSendParams['configuration']\n ) => {\n if (!client) {\n setError(new Error('Client not available'));\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n\n const userMessage = DistriClient.initMessage(input, 'user', contextId);\n // Add user message to local state immediately\n setMessages(prev => [...prev, userMessage]);\n\n const params = DistriClient.initMessageParams(userMessage, configuration);\n\n const result = await client.sendMessage(agentId, params);\n\n let message = undefined;\n if (result.kind === 'message') {\n message = (result as Message);\n } else if (result.kind === 'task') {\n message = result.status.message as Message;\n }\n\n if (!message) {\n throw new Error('Invalid response format');\n }\n\n setMessages((prev: Message[]) => {\n if (prev.find(msg => msg.messageId === message.messageId)) {\n return prev.map(msg => {\n if (msg.messageId === message.messageId) {\n return {\n ...msg,\n parts: [...msg.parts, ...message.parts],\n };\n }\n return msg;\n });\n } else {\n return [...prev, message];\n }\n });\n } catch (err) {\n console.error(err);\n setError(err instanceof Error ? err : new Error('Failed to send message'));\n } finally {\n setLoading(false);\n }\n }, [client, agentId]);\n\n const sendMessageStream = useCallback(async (\n input: string,\n configuration?: MessageSendParams['configuration']\n ) => {\n if (!client) {\n setError(new Error('Client not available'));\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n setIsStreaming(true);\n\n // Cancel any existing stream\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n abortControllerRef.current = new AbortController();\n\n const userMessage = DistriClient.initMessage(input, 'user', contextId);\n // Add user message to local state immediately\n setMessages(prev => [...prev, userMessage]);\n\n const params = DistriClient.initMessageParams(userMessage, {\n blocking: false,\n acceptedOutputModes: ['text/plain'],\n ...configuration\n });\n setIsStreaming(true);\n\n const stream = await client.sendMessageStream(agentId, params);\n\n for await (const event of stream) {\n\n if (abortControllerRef.current?.signal.aborted) {\n console.log('abort signal received');\n break;\n }\n\n let message = undefined;\n if (event.kind === 'message') {\n message = (event as Message);\n }\n\n if (!message) continue;\n setMessages((prev: Message[]) => {\n if (prev.find(msg => msg.messageId === message.messageId)) {\n return prev.map(msg => {\n if (msg.messageId === message.messageId) {\n return {\n ...msg,\n parts: [...msg.parts, ...message.parts],\n };\n }\n return msg;\n });\n } else {\n return [...prev, message];\n }\n });\n }\n setIsStreaming(false);\n } catch (err) {\n if (err instanceof Error && err.name === 'AbortError') {\n // Stream was cancelled, not an error\n return;\n }\n console.log('error', err);\n\n setError(err instanceof Error ? err : new Error('Failed to stream message'));\n } finally {\n setLoading(false);\n setIsStreaming(false);\n }\n }, [client, agentId]);\n\n const clearMessages = useCallback(() => {\n setMessages([]);\n }, []);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n };\n }, []);\n\n const abort = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n }, []);\n\n return {\n loading: loading || clientLoading,\n error: error || clientError,\n messages,\n isStreaming,\n sendMessage,\n sendMessageStream,\n clearMessages,\n refreshMessages: fetchMessages,\n abort,\n };\n}","import { useState, useEffect, useCallback } from 'react';\nimport { DistriThread } from '@distri/core';\nimport { useDistri } from './DistriProvider';\n\nexport interface UseThreadsResult {\n threads: DistriThread[];\n loading: boolean;\n error: Error | null;\n refetch: () => Promise<void>;\n deleteThread: (threadId: string) => Promise<void>;\n fetchThread: (threadId: string) => Promise<DistriThread>;\n updateThread: (threadId: string, localId?: string) => Promise<void>;\n}\n\nexport function useThreads(): UseThreadsResult {\n const { client, error: clientError, isLoading: clientLoading } = useDistri();\n const [threads, setThreads] = useState<DistriThread[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchThreads = useCallback(async () => {\n if (!client) {\n console.log('[useThreads] Client not available, skipping fetch');\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n console.log('[useThreads] Fetching threads...');\n const fetchedThreads = await client.getThreads();\n console.log('[useThreads] Fetched threads:', fetchedThreads);\n setThreads(fetchedThreads);\n } catch (err) {\n console.error('[useThreads] Failed to fetch threads:', err);\n setError(err instanceof Error ? err : new Error('Failed to fetch threads'));\n } finally {\n setLoading(false);\n }\n }, [client]);\n\n const fetchThread = useCallback(async (threadId: string) => {\n if (!client) {\n throw new Error('Client not available');\n }\n try {\n const response = await client.getThread(threadId);\n return response;\n } catch (err) {\n console.error('[useThreads] Failed to fetch thread:', err);\n throw err;\n }\n }, [client]);\n\n const deleteThread = useCallback(async (threadId: string) => {\n if (!client) {\n throw new Error('Client not available');\n }\n\n try {\n // Try to delete from server (may not exist yet for local threads)\n const response = await fetch(`${client.baseUrl}/api/v1/threads/${threadId}`, {\n method: 'DELETE',\n });\n if (!response.ok) {\n throw new Error('Failed to delete thread');\n }\n\n // Remove from local state regardless of server response\n setThreads(prev => prev.filter(thread => thread.id !== threadId));\n } catch (err) {\n // Still remove from local state even if server delete fails\n setThreads(prev => prev.filter(thread => thread.id !== threadId));\n console.warn('Failed to delete thread from server, but removed locally:', err);\n }\n }, [client]);\n\n const updateThread = useCallback(async (threadId: string, localId?: string) => {\n if (!client) {\n return;\n }\n\n try {\n const response = await fetch(`${client.baseUrl}/api/v1/threads/${threadId}`);\n if (response.ok) {\n const updatedThread = await response.json();\n setThreads(prev => {\n // If a local thread with localId exists, replace it with the backend thread\n if (localId && prev.some(thread => thread.id === localId)) {\n return [\n updatedThread,\n ...prev.filter(thread => thread.id !== localId && thread.id !== threadId)\n ];\n }\n // Otherwise, just update by threadId\n return prev.map(thread =>\n thread.id === threadId ? updatedThread : thread\n );\n });\n }\n } catch (err) {\n console.warn('Failed to update thread:', err);\n }\n }, [client]);\n\n useEffect(() => {\n if (clientLoading) {\n console.log('[useThreads] Client is loading, waiting...');\n setLoading(true);\n return;\n }\n\n if (clientError) {\n console.error('[useThreads] Client error:', clientError);\n setError(clientError);\n setLoading(false);\n return;\n }\n\n if (client) {\n console.log('[useThreads] Client ready, fetching threads');\n fetchThreads();\n } else {\n console.log('[useThreads] No client available');\n setLoading(false);\n }\n }, [clientLoading, clientError, client, fetchThreads]);\n\n return {\n threads,\n loading: loading || clientLoading,\n error: error || clientError,\n refetch: fetchThreads,\n deleteThread,\n fetchThread,\n updateThread\n };\n}\n\nexport interface UseThreadMessagesOptions {\n threadId: string | null;\n}"],"mappings":"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","names":["error","import_react","error","import_react","import_core","import_react"]}
|
package/dist/index.mjs
CHANGED
|
@@ -156,7 +156,6 @@ function useChat({ agentId, contextId }) {
|
|
|
156
156
|
setMessages([]);
|
|
157
157
|
return;
|
|
158
158
|
}
|
|
159
|
-
console.log("inside: fetchMessages", client, contextId);
|
|
160
159
|
try {
|
|
161
160
|
setLoading(true);
|
|
162
161
|
setError(null);
|
|
@@ -171,7 +170,6 @@ function useChat({ agentId, contextId }) {
|
|
|
171
170
|
}
|
|
172
171
|
}, [client, contextId]);
|
|
173
172
|
useEffect3(() => {
|
|
174
|
-
console.log("useEffect", clientLoading, clientError, contextId, !clientLoading && !clientError && contextId);
|
|
175
173
|
if (!clientLoading && !clientError && contextId) {
|
|
176
174
|
fetchMessages();
|
|
177
175
|
} else {
|
|
@@ -200,9 +198,7 @@ function useChat({ agentId, contextId }) {
|
|
|
200
198
|
throw new Error("Invalid response format");
|
|
201
199
|
}
|
|
202
200
|
setMessages((prev) => {
|
|
203
|
-
console.log("message", message.messageId);
|
|
204
201
|
if (prev.find((msg) => msg.messageId === message.messageId)) {
|
|
205
|
-
console.log("message found", message.messageId);
|
|
206
202
|
return prev.map((msg) => {
|
|
207
203
|
if (msg.messageId === message.messageId) {
|
|
208
204
|
return {
|
|
@@ -213,7 +209,6 @@ function useChat({ agentId, contextId }) {
|
|
|
213
209
|
return msg;
|
|
214
210
|
});
|
|
215
211
|
} else {
|
|
216
|
-
console.log("message not found", message.messageId);
|
|
217
212
|
return [...prev, message];
|
|
218
213
|
}
|
|
219
214
|
});
|
|
@@ -234,30 +229,26 @@ function useChat({ agentId, contextId }) {
|
|
|
234
229
|
setError(null);
|
|
235
230
|
setIsStreaming(true);
|
|
236
231
|
if (abortControllerRef.current) {
|
|
237
|
-
console.log("aborting existing stream");
|
|
238
232
|
abortControllerRef.current.abort();
|
|
239
233
|
}
|
|
240
234
|
abortControllerRef.current = new AbortController();
|
|
241
235
|
const userMessage = DistriClient2.initMessage(input, "user", contextId);
|
|
242
236
|
setMessages((prev) => [...prev, userMessage]);
|
|
243
|
-
console.log("userMessage", userMessage);
|
|
244
237
|
const params = DistriClient2.initMessageParams(userMessage, {
|
|
245
238
|
blocking: false,
|
|
246
239
|
acceptedOutputModes: ["text/plain"],
|
|
247
240
|
...configuration
|
|
248
241
|
});
|
|
242
|
+
setIsStreaming(true);
|
|
249
243
|
const stream = await client.sendMessageStream(agentId, params);
|
|
250
244
|
for await (const event of stream) {
|
|
251
245
|
if (abortControllerRef.current?.signal.aborted) {
|
|
252
246
|
console.log("abort signal received");
|
|
253
247
|
break;
|
|
254
248
|
}
|
|
255
|
-
console.log("Stream event:", event);
|
|
256
249
|
let message = void 0;
|
|
257
250
|
if (event.kind === "message") {
|
|
258
251
|
message = event;
|
|
259
|
-
} else if (event.kind === "status-update") {
|
|
260
|
-
message = event.status.message;
|
|
261
252
|
}
|
|
262
253
|
if (!message)
|
|
263
254
|
continue;
|
|
@@ -276,15 +267,13 @@ function useChat({ agentId, contextId }) {
|
|
|
276
267
|
return [...prev, message];
|
|
277
268
|
}
|
|
278
269
|
});
|
|
279
|
-
if (event.kind === "status-update" && event.final) {
|
|
280
|
-
setIsStreaming(false);
|
|
281
|
-
break;
|
|
282
|
-
}
|
|
283
270
|
}
|
|
271
|
+
setIsStreaming(false);
|
|
284
272
|
} catch (err) {
|
|
285
273
|
if (err instanceof Error && err.name === "AbortError") {
|
|
286
274
|
return;
|
|
287
275
|
}
|
|
276
|
+
console.log("error", err);
|
|
288
277
|
setError(err instanceof Error ? err : new Error("Failed to stream message"));
|
|
289
278
|
} finally {
|
|
290
279
|
setLoading(false);
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/DistriProvider.tsx","../src/useAgents.ts","../src/useChat.ts","../src/useThreads.ts"],"sourcesContent":["import { createContext, useContext, useEffect, useState, ReactNode } from 'react';\nimport { DistriClient, DistriClientConfig } from '@distri/core';\n\ninterface DistriContextValue {\n client: DistriClient | null;\n error: Error | null;\n isLoading: boolean;\n}\n\nconst DistriContext = createContext<DistriContextValue>({\n client: null,\n error: null,\n isLoading: true\n});\n\ninterface DistriProviderProps {\n config: DistriClientConfig;\n children: ReactNode;\n}\n\nconst debug = (config: DistriClientConfig, ...args: any[]): void => {\n if (config.debug) {\n console.log('[DistriProvider]', ...args);\n }\n}\n\n\nexport function DistriProvider({ config, children }: DistriProviderProps) {\n const [client, setClient] = useState<DistriClient | null>(null);\n const [error, setError] = useState<Error | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n let currentClient: DistriClient | null = null;\n\n try {\n debug(config, '[DistriProvider] Initializing client with config:', config);\n currentClient = new DistriClient(config);\n setClient(currentClient);\n setError(null);\n setIsLoading(false);\n debug(config, '[DistriProvider] Client initialized successfully');\n } catch (err) {\n debug(config, '[DistriProvider] Failed to initialize client:', err);\n const error = err instanceof Error ? err : new Error('Failed to initialize client');\n setError(error);\n setClient(null);\n setIsLoading(false);\n }\n\n }, [config.baseUrl, config.apiVersion, config.debug]); // Only depend on key config values\n\n const contextValue: DistriContextValue = {\n client,\n error,\n isLoading\n };\n\n if (error) {\n console.error(config, '[DistriProvider] Rendering error state:', error.message);\n }\n\n if (isLoading) {\n debug(config, '[DistriProvider] Rendering loading state');\n }\n\n if (client) {\n debug(config, '[DistriProvider] Rendering with client available');\n }\n\n return (\n <DistriContext.Provider value={contextValue}>\n {children}\n </DistriContext.Provider>\n );\n}\n\nexport function useDistri(): DistriContextValue {\n const context = useContext(DistriContext);\n if (!context) {\n throw new Error('useDistri must be used within a DistriProvider');\n }\n return context;\n}\n\nexport function useDistriClient(): DistriClient {\n const { client, error, isLoading } = useDistri();\n\n if (isLoading) {\n throw new Error('Distri client is still loading');\n }\n\n if (error) {\n throw new Error(`Distri client initialization failed: ${error.message}`);\n }\n\n if (!client) {\n throw new Error('Distri client is not initialized');\n }\n\n return client;\n}","import { useState, useEffect, useCallback } from 'react';\nimport { DistriAgent } from '@distri/core';\nimport { useDistri } from './DistriProvider';\n\nexport interface UseAgentsResult {\n agents: DistriAgent[];\n loading: boolean;\n error: Error | null;\n refetch: () => Promise<void>;\n getAgent: (agentId: string) => Promise<DistriAgent>;\n}\n\nexport function useAgents(): UseAgentsResult {\n const { client, error: clientError, isLoading: clientLoading } = useDistri();\n const [agents, setAgents] = useState<DistriAgent[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchAgents = useCallback(async () => {\n if (!client) {\n console.log('[useAgents] Client not available, skipping fetch');\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n console.log('[useAgents] Fetching agents...');\n const fetchedAgents = await client.getAgents();\n console.log('[useAgents] Fetched agents:', fetchedAgents);\n setAgents(fetchedAgents);\n } catch (err) {\n console.error('[useAgents] Failed to fetch agents:', err);\n setError(err instanceof Error ? err : new Error('Failed to fetch agents'));\n } finally {\n setLoading(false);\n }\n }, [client]);\n\n const getAgent = useCallback(async (agentId: string): Promise<DistriAgent> => {\n if (!client) {\n throw new Error('Client not available');\n }\n\n try {\n const agent = await client.getAgent(agentId);\n \n // Update the agent in our local state if it exists\n setAgents(prev => prev.map(a => a.id === agentId ? agent : a));\n \n return agent;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to get agent');\n setError(error);\n throw error;\n }\n }, [client]);\n\n useEffect(() => {\n if (clientLoading) {\n console.log('[useAgents] Client is loading, waiting...');\n setLoading(true);\n return;\n }\n\n if (clientError) {\n console.error('[useAgents] Client error:', clientError);\n setError(clientError);\n setLoading(false);\n return;\n }\n\n if (client) {\n console.log('[useAgents] Client ready, fetching agents');\n fetchAgents();\n } else {\n console.log('[useAgents] No client available');\n setLoading(false);\n }\n }, [clientLoading, clientError, client, fetchAgents]);\n\n return {\n agents,\n loading: loading || clientLoading,\n error: error || clientError,\n refetch: fetchAgents,\n getAgent\n };\n}","import { useState, useEffect, useCallback, useRef } from 'react';\nimport {\n Message,\n MessageSendParams,\n TaskStatusUpdateEvent,\n DistriClient\n} from '@distri/core';\nimport { useDistri } from './DistriProvider';\n\nexport interface UseChatOptions {\n agentId: string;\n contextId?: string;\n}\n\nexport interface UseChatResult {\n loading: boolean;\n error: Error | null;\n messages: Message[];\n isStreaming: boolean;\n sendMessage: (text: string, configuration?: MessageSendParams['configuration']) => Promise<void>;\n sendMessageStream: (text: string, configuration?: MessageSendParams['configuration']) => Promise<void>;\n clearMessages: () => void;\n refreshMessages: () => Promise<void>;\n abort: () => void;\n}\n\nexport function useChat({ agentId, contextId }: UseChatOptions): UseChatResult {\n const { client, error: clientError, isLoading: clientLoading } = useDistri();\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [messages, setMessages] = useState<Message[]>([]);\n const [isStreaming, setIsStreaming] = useState(false);\n const abortControllerRef = useRef<AbortController | null>(null);\n\n const fetchMessages = useCallback(async () => {\n if (!client || !contextId) {\n setMessages([]);\n return;\n }\n\n console.log('inside: fetchMessages', client, contextId);\n\n try {\n setLoading(true);\n setError(null);\n const fetchedMessages = await client.getThreadMessages(contextId);\n setMessages(fetchedMessages);\n } catch (err) {\n console.error('[useThreadMessages] Failed to fetch messages:', err);\n setError(err instanceof Error ? err : new Error('Failed to fetch messages'));\n setMessages([]); // Clear messages on error\n } finally {\n setLoading(false);\n }\n }, [client, contextId]);\n\n useEffect(() => {\n console.log('useEffect', clientLoading, clientError, contextId, !clientLoading && !clientError && contextId);\n if (!clientLoading && !clientError && contextId) {\n fetchMessages();\n } else {\n setMessages([]);\n }\n }, [clientLoading, clientError, contextId, fetchMessages]);\n\n const sendMessage = useCallback(async (\n input: string,\n configuration?: MessageSendParams['configuration']\n ) => {\n if (!client) {\n setError(new Error('Client not available'));\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n\n const userMessage = DistriClient.initMessage(input, 'user', contextId);\n // Add user message to local state immediately\n setMessages(prev => [...prev, userMessage]);\n\n const params = DistriClient.initMessageParams(userMessage, configuration);\n\n const result = await client.sendMessage(agentId, params);\n\n let message = undefined;\n if (result.kind === 'message') {\n message = (result as Message);\n } else if (result.kind === 'task') {\n message = result.status.message as Message;\n }\n\n if (!message) {\n throw new Error('Invalid response format');\n }\n\n setMessages((prev: Message[]) => {\n console.log('message', message.messageId);\n if (prev.find(msg => msg.messageId === message.messageId)) {\n console.log('message found', message.messageId);\n return prev.map(msg => {\n if (msg.messageId === message.messageId) {\n return {\n ...msg,\n parts: [...msg.parts, ...message.parts],\n };\n }\n return msg;\n });\n } else {\n console.log('message not found', message.messageId);\n return [...prev, message];\n }\n });\n } catch (err) {\n console.error(err);\n setError(err instanceof Error ? err : new Error('Failed to send message'));\n } finally {\n setLoading(false);\n }\n }, [client, agentId]);\n\n const sendMessageStream = useCallback(async (\n input: string,\n configuration?: MessageSendParams['configuration']\n ) => {\n if (!client) {\n setError(new Error('Client not available'));\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n setIsStreaming(true);\n\n // Cancel any existing stream\n if (abortControllerRef.current) {\n console.log('aborting existing stream');\n abortControllerRef.current.abort();\n }\n abortControllerRef.current = new AbortController();\n\n const userMessage = DistriClient.initMessage(input, 'user', contextId);\n // Add user message to local state immediately\n setMessages(prev => [...prev, userMessage]);\n\n console.log('userMessage', userMessage);\n const params = DistriClient.initMessageParams(userMessage, {\n blocking: false,\n acceptedOutputModes: ['text/plain'],\n ...configuration\n });\n\n const stream = await client.sendMessageStream(agentId, params);\n\n for await (const event of stream) {\n if (abortControllerRef.current?.signal.aborted) {\n console.log('abort signal received');\n break;\n }\n\n console.log('Stream event:', event); // Debug logging\n\n let message = undefined;\n if (event.kind === 'message') {\n message = (event as Message);\n } else if (event.kind === 'status-update') {\n message = (event as TaskStatusUpdateEvent).status.message as Message;\n }\n\n if (!message) continue;\n setMessages((prev: Message[]) => {\n if (prev.find(msg => msg.messageId === message.messageId)) {\n return prev.map(msg => {\n if (msg.messageId === message.messageId) {\n return {\n ...msg,\n parts: [...msg.parts, ...message.parts],\n };\n }\n return msg;\n });\n } else {\n return [...prev, message];\n }\n });\n\n if (event.kind === 'status-update' && (event as TaskStatusUpdateEvent).final) {\n setIsStreaming(false);\n break;\n }\n }\n } catch (err) {\n if (err instanceof Error && err.name === 'AbortError') {\n // Stream was cancelled, not an error\n return;\n }\n\n setError(err instanceof Error ? err : new Error('Failed to stream message'));\n } finally {\n setLoading(false);\n setIsStreaming(false);\n }\n }, [client, agentId]);\n\n const clearMessages = useCallback(() => {\n setMessages([]);\n }, []);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n };\n }, []);\n\n const abort = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n }, []);\n\n return {\n loading: loading || clientLoading,\n error: error || clientError,\n messages,\n isStreaming,\n sendMessage,\n sendMessageStream,\n clearMessages,\n refreshMessages: fetchMessages,\n abort,\n };\n}","import { useState, useEffect, useCallback } from 'react';\nimport { DistriThread } from '@distri/core';\nimport { useDistri } from './DistriProvider';\n\nexport interface UseThreadsResult {\n threads: DistriThread[];\n loading: boolean;\n error: Error | null;\n refetch: () => Promise<void>;\n deleteThread: (threadId: string) => Promise<void>;\n fetchThread: (threadId: string) => Promise<DistriThread>;\n updateThread: (threadId: string, localId?: string) => Promise<void>;\n}\n\nexport function useThreads(): UseThreadsResult {\n const { client, error: clientError, isLoading: clientLoading } = useDistri();\n const [threads, setThreads] = useState<DistriThread[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchThreads = useCallback(async () => {\n if (!client) {\n console.log('[useThreads] Client not available, skipping fetch');\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n console.log('[useThreads] Fetching threads...');\n const fetchedThreads = await client.getThreads();\n console.log('[useThreads] Fetched threads:', fetchedThreads);\n setThreads(fetchedThreads);\n } catch (err) {\n console.error('[useThreads] Failed to fetch threads:', err);\n setError(err instanceof Error ? err : new Error('Failed to fetch threads'));\n } finally {\n setLoading(false);\n }\n }, [client]);\n\n const fetchThread = useCallback(async (threadId: string) => {\n if (!client) {\n throw new Error('Client not available');\n }\n try {\n const response = await client.getThread(threadId);\n return response;\n } catch (err) {\n console.error('[useThreads] Failed to fetch thread:', err);\n throw err;\n }\n }, [client]);\n\n const deleteThread = useCallback(async (threadId: string) => {\n if (!client) {\n throw new Error('Client not available');\n }\n\n try {\n // Try to delete from server (may not exist yet for local threads)\n const response = await fetch(`${client.baseUrl}/api/v1/threads/${threadId}`, {\n method: 'DELETE',\n });\n if (!response.ok) {\n throw new Error('Failed to delete thread');\n }\n\n // Remove from local state regardless of server response\n setThreads(prev => prev.filter(thread => thread.id !== threadId));\n } catch (err) {\n // Still remove from local state even if server delete fails\n setThreads(prev => prev.filter(thread => thread.id !== threadId));\n console.warn('Failed to delete thread from server, but removed locally:', err);\n }\n }, [client]);\n\n const updateThread = useCallback(async (threadId: string, localId?: string) => {\n if (!client) {\n return;\n }\n\n try {\n const response = await fetch(`${client.baseUrl}/api/v1/threads/${threadId}`);\n if (response.ok) {\n const updatedThread = await response.json();\n setThreads(prev => {\n // If a local thread with localId exists, replace it with the backend thread\n if (localId && prev.some(thread => thread.id === localId)) {\n return [\n updatedThread,\n ...prev.filter(thread => thread.id !== localId && thread.id !== threadId)\n ];\n }\n // Otherwise, just update by threadId\n return prev.map(thread =>\n thread.id === threadId ? updatedThread : thread\n );\n });\n }\n } catch (err) {\n console.warn('Failed to update thread:', err);\n }\n }, [client]);\n\n useEffect(() => {\n if (clientLoading) {\n console.log('[useThreads] Client is loading, waiting...');\n setLoading(true);\n return;\n }\n\n if (clientError) {\n console.error('[useThreads] Client error:', clientError);\n setError(clientError);\n setLoading(false);\n return;\n }\n\n if (client) {\n console.log('[useThreads] Client ready, fetching threads');\n fetchThreads();\n } else {\n console.log('[useThreads] No client available');\n setLoading(false);\n }\n }, [clientLoading, clientError, client, fetchThreads]);\n\n return {\n threads,\n loading: loading || clientLoading,\n error: error || clientError,\n refetch: fetchThreads,\n deleteThread,\n fetchThread,\n updateThread\n };\n}\n\nexport interface UseThreadMessagesOptions {\n threadId: string | null;\n}"],"mappings":"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","names":["error","useState","useEffect","useState","error","useEffect","useState","useEffect","useCallback","DistriClient","useState","useCallback","useEffect","DistriClient","useState","useEffect","useCallback","useState","useCallback","useEffect"]}
|
|
1
|
+
{"version":3,"sources":["../src/DistriProvider.tsx","../src/useAgents.ts","../src/useChat.ts","../src/useThreads.ts"],"sourcesContent":["import { createContext, useContext, useEffect, useState, ReactNode } from 'react';\nimport { DistriClient, DistriClientConfig } from '@distri/core';\n\ninterface DistriContextValue {\n client: DistriClient | null;\n error: Error | null;\n isLoading: boolean;\n}\n\nconst DistriContext = createContext<DistriContextValue>({\n client: null,\n error: null,\n isLoading: true\n});\n\ninterface DistriProviderProps {\n config: DistriClientConfig;\n children: ReactNode;\n}\n\nconst debug = (config: DistriClientConfig, ...args: any[]): void => {\n if (config.debug) {\n console.log('[DistriProvider]', ...args);\n }\n}\n\n\nexport function DistriProvider({ config, children }: DistriProviderProps) {\n const [client, setClient] = useState<DistriClient | null>(null);\n const [error, setError] = useState<Error | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n let currentClient: DistriClient | null = null;\n\n try {\n debug(config, '[DistriProvider] Initializing client with config:', config);\n currentClient = new DistriClient(config);\n setClient(currentClient);\n setError(null);\n setIsLoading(false);\n debug(config, '[DistriProvider] Client initialized successfully');\n } catch (err) {\n debug(config, '[DistriProvider] Failed to initialize client:', err);\n const error = err instanceof Error ? err : new Error('Failed to initialize client');\n setError(error);\n setClient(null);\n setIsLoading(false);\n }\n\n }, [config.baseUrl, config.apiVersion, config.debug]); // Only depend on key config values\n\n const contextValue: DistriContextValue = {\n client,\n error,\n isLoading\n };\n\n if (error) {\n console.error(config, '[DistriProvider] Rendering error state:', error.message);\n }\n\n if (isLoading) {\n debug(config, '[DistriProvider] Rendering loading state');\n }\n\n if (client) {\n debug(config, '[DistriProvider] Rendering with client available');\n }\n\n return (\n <DistriContext.Provider value={contextValue}>\n {children}\n </DistriContext.Provider>\n );\n}\n\nexport function useDistri(): DistriContextValue {\n const context = useContext(DistriContext);\n if (!context) {\n throw new Error('useDistri must be used within a DistriProvider');\n }\n return context;\n}\n\nexport function useDistriClient(): DistriClient {\n const { client, error, isLoading } = useDistri();\n\n if (isLoading) {\n throw new Error('Distri client is still loading');\n }\n\n if (error) {\n throw new Error(`Distri client initialization failed: ${error.message}`);\n }\n\n if (!client) {\n throw new Error('Distri client is not initialized');\n }\n\n return client;\n}","import { useState, useEffect, useCallback } from 'react';\nimport { DistriAgent } from '@distri/core';\nimport { useDistri } from './DistriProvider';\n\nexport interface UseAgentsResult {\n agents: DistriAgent[];\n loading: boolean;\n error: Error | null;\n refetch: () => Promise<void>;\n getAgent: (agentId: string) => Promise<DistriAgent>;\n}\n\nexport function useAgents(): UseAgentsResult {\n const { client, error: clientError, isLoading: clientLoading } = useDistri();\n const [agents, setAgents] = useState<DistriAgent[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchAgents = useCallback(async () => {\n if (!client) {\n console.log('[useAgents] Client not available, skipping fetch');\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n console.log('[useAgents] Fetching agents...');\n const fetchedAgents = await client.getAgents();\n console.log('[useAgents] Fetched agents:', fetchedAgents);\n setAgents(fetchedAgents);\n } catch (err) {\n console.error('[useAgents] Failed to fetch agents:', err);\n setError(err instanceof Error ? err : new Error('Failed to fetch agents'));\n } finally {\n setLoading(false);\n }\n }, [client]);\n\n const getAgent = useCallback(async (agentId: string): Promise<DistriAgent> => {\n if (!client) {\n throw new Error('Client not available');\n }\n\n try {\n const agent = await client.getAgent(agentId);\n \n // Update the agent in our local state if it exists\n setAgents(prev => prev.map(a => a.id === agentId ? agent : a));\n \n return agent;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to get agent');\n setError(error);\n throw error;\n }\n }, [client]);\n\n useEffect(() => {\n if (clientLoading) {\n console.log('[useAgents] Client is loading, waiting...');\n setLoading(true);\n return;\n }\n\n if (clientError) {\n console.error('[useAgents] Client error:', clientError);\n setError(clientError);\n setLoading(false);\n return;\n }\n\n if (client) {\n console.log('[useAgents] Client ready, fetching agents');\n fetchAgents();\n } else {\n console.log('[useAgents] No client available');\n setLoading(false);\n }\n }, [clientLoading, clientError, client, fetchAgents]);\n\n return {\n agents,\n loading: loading || clientLoading,\n error: error || clientError,\n refetch: fetchAgents,\n getAgent\n };\n}","import { useState, useEffect, useCallback, useRef } from 'react';\nimport {\n Message,\n MessageSendParams,\n DistriClient\n} from '@distri/core';\nimport { useDistri } from './DistriProvider';\n\nexport interface UseChatOptions {\n agentId: string;\n contextId?: string;\n}\n\nexport interface UseChatResult {\n loading: boolean;\n error: Error | null;\n messages: Message[];\n isStreaming: boolean;\n sendMessage: (text: string, configuration?: MessageSendParams['configuration']) => Promise<void>;\n sendMessageStream: (text: string, configuration?: MessageSendParams['configuration']) => Promise<void>;\n clearMessages: () => void;\n refreshMessages: () => Promise<void>;\n abort: () => void;\n}\n\nexport function useChat({ agentId, contextId }: UseChatOptions): UseChatResult {\n const { client, error: clientError, isLoading: clientLoading } = useDistri();\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [messages, setMessages] = useState<Message[]>([]);\n const [isStreaming, setIsStreaming] = useState(false);\n const abortControllerRef = useRef<AbortController | null>(null);\n\n const fetchMessages = useCallback(async () => {\n if (!client || !contextId) {\n setMessages([]);\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n const fetchedMessages = await client.getThreadMessages(contextId);\n setMessages(fetchedMessages);\n } catch (err) {\n console.error('[useThreadMessages] Failed to fetch messages:', err);\n setError(err instanceof Error ? err : new Error('Failed to fetch messages'));\n setMessages([]); // Clear messages on error\n } finally {\n setLoading(false);\n }\n }, [client, contextId]);\n\n useEffect(() => {\n if (!clientLoading && !clientError && contextId) {\n fetchMessages();\n } else {\n setMessages([]);\n }\n }, [clientLoading, clientError, contextId, fetchMessages]);\n\n const sendMessage = useCallback(async (\n input: string,\n configuration?: MessageSendParams['configuration']\n ) => {\n if (!client) {\n setError(new Error('Client not available'));\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n\n const userMessage = DistriClient.initMessage(input, 'user', contextId);\n // Add user message to local state immediately\n setMessages(prev => [...prev, userMessage]);\n\n const params = DistriClient.initMessageParams(userMessage, configuration);\n\n const result = await client.sendMessage(agentId, params);\n\n let message = undefined;\n if (result.kind === 'message') {\n message = (result as Message);\n } else if (result.kind === 'task') {\n message = result.status.message as Message;\n }\n\n if (!message) {\n throw new Error('Invalid response format');\n }\n\n setMessages((prev: Message[]) => {\n if (prev.find(msg => msg.messageId === message.messageId)) {\n return prev.map(msg => {\n if (msg.messageId === message.messageId) {\n return {\n ...msg,\n parts: [...msg.parts, ...message.parts],\n };\n }\n return msg;\n });\n } else {\n return [...prev, message];\n }\n });\n } catch (err) {\n console.error(err);\n setError(err instanceof Error ? err : new Error('Failed to send message'));\n } finally {\n setLoading(false);\n }\n }, [client, agentId]);\n\n const sendMessageStream = useCallback(async (\n input: string,\n configuration?: MessageSendParams['configuration']\n ) => {\n if (!client) {\n setError(new Error('Client not available'));\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n setIsStreaming(true);\n\n // Cancel any existing stream\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n abortControllerRef.current = new AbortController();\n\n const userMessage = DistriClient.initMessage(input, 'user', contextId);\n // Add user message to local state immediately\n setMessages(prev => [...prev, userMessage]);\n\n const params = DistriClient.initMessageParams(userMessage, {\n blocking: false,\n acceptedOutputModes: ['text/plain'],\n ...configuration\n });\n setIsStreaming(true);\n\n const stream = await client.sendMessageStream(agentId, params);\n\n for await (const event of stream) {\n\n if (abortControllerRef.current?.signal.aborted) {\n console.log('abort signal received');\n break;\n }\n\n let message = undefined;\n if (event.kind === 'message') {\n message = (event as Message);\n }\n\n if (!message) continue;\n setMessages((prev: Message[]) => {\n if (prev.find(msg => msg.messageId === message.messageId)) {\n return prev.map(msg => {\n if (msg.messageId === message.messageId) {\n return {\n ...msg,\n parts: [...msg.parts, ...message.parts],\n };\n }\n return msg;\n });\n } else {\n return [...prev, message];\n }\n });\n }\n setIsStreaming(false);\n } catch (err) {\n if (err instanceof Error && err.name === 'AbortError') {\n // Stream was cancelled, not an error\n return;\n }\n console.log('error', err);\n\n setError(err instanceof Error ? err : new Error('Failed to stream message'));\n } finally {\n setLoading(false);\n setIsStreaming(false);\n }\n }, [client, agentId]);\n\n const clearMessages = useCallback(() => {\n setMessages([]);\n }, []);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n };\n }, []);\n\n const abort = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n }, []);\n\n return {\n loading: loading || clientLoading,\n error: error || clientError,\n messages,\n isStreaming,\n sendMessage,\n sendMessageStream,\n clearMessages,\n refreshMessages: fetchMessages,\n abort,\n };\n}","import { useState, useEffect, useCallback } from 'react';\nimport { DistriThread } from '@distri/core';\nimport { useDistri } from './DistriProvider';\n\nexport interface UseThreadsResult {\n threads: DistriThread[];\n loading: boolean;\n error: Error | null;\n refetch: () => Promise<void>;\n deleteThread: (threadId: string) => Promise<void>;\n fetchThread: (threadId: string) => Promise<DistriThread>;\n updateThread: (threadId: string, localId?: string) => Promise<void>;\n}\n\nexport function useThreads(): UseThreadsResult {\n const { client, error: clientError, isLoading: clientLoading } = useDistri();\n const [threads, setThreads] = useState<DistriThread[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchThreads = useCallback(async () => {\n if (!client) {\n console.log('[useThreads] Client not available, skipping fetch');\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n console.log('[useThreads] Fetching threads...');\n const fetchedThreads = await client.getThreads();\n console.log('[useThreads] Fetched threads:', fetchedThreads);\n setThreads(fetchedThreads);\n } catch (err) {\n console.error('[useThreads] Failed to fetch threads:', err);\n setError(err instanceof Error ? err : new Error('Failed to fetch threads'));\n } finally {\n setLoading(false);\n }\n }, [client]);\n\n const fetchThread = useCallback(async (threadId: string) => {\n if (!client) {\n throw new Error('Client not available');\n }\n try {\n const response = await client.getThread(threadId);\n return response;\n } catch (err) {\n console.error('[useThreads] Failed to fetch thread:', err);\n throw err;\n }\n }, [client]);\n\n const deleteThread = useCallback(async (threadId: string) => {\n if (!client) {\n throw new Error('Client not available');\n }\n\n try {\n // Try to delete from server (may not exist yet for local threads)\n const response = await fetch(`${client.baseUrl}/api/v1/threads/${threadId}`, {\n method: 'DELETE',\n });\n if (!response.ok) {\n throw new Error('Failed to delete thread');\n }\n\n // Remove from local state regardless of server response\n setThreads(prev => prev.filter(thread => thread.id !== threadId));\n } catch (err) {\n // Still remove from local state even if server delete fails\n setThreads(prev => prev.filter(thread => thread.id !== threadId));\n console.warn('Failed to delete thread from server, but removed locally:', err);\n }\n }, [client]);\n\n const updateThread = useCallback(async (threadId: string, localId?: string) => {\n if (!client) {\n return;\n }\n\n try {\n const response = await fetch(`${client.baseUrl}/api/v1/threads/${threadId}`);\n if (response.ok) {\n const updatedThread = await response.json();\n setThreads(prev => {\n // If a local thread with localId exists, replace it with the backend thread\n if (localId && prev.some(thread => thread.id === localId)) {\n return [\n updatedThread,\n ...prev.filter(thread => thread.id !== localId && thread.id !== threadId)\n ];\n }\n // Otherwise, just update by threadId\n return prev.map(thread =>\n thread.id === threadId ? updatedThread : thread\n );\n });\n }\n } catch (err) {\n console.warn('Failed to update thread:', err);\n }\n }, [client]);\n\n useEffect(() => {\n if (clientLoading) {\n console.log('[useThreads] Client is loading, waiting...');\n setLoading(true);\n return;\n }\n\n if (clientError) {\n console.error('[useThreads] Client error:', clientError);\n setError(clientError);\n setLoading(false);\n return;\n }\n\n if (client) {\n console.log('[useThreads] Client ready, fetching threads');\n fetchThreads();\n } else {\n console.log('[useThreads] No client available');\n setLoading(false);\n }\n }, [clientLoading, clientError, client, fetchThreads]);\n\n return {\n threads,\n loading: loading || clientLoading,\n error: error || clientError,\n refetch: fetchThreads,\n deleteThread,\n fetchThread,\n updateThread\n };\n}\n\nexport interface UseThreadMessagesOptions {\n threadId: string | null;\n}"],"mappings":"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","names":["error","useState","useEffect","useState","error","useEffect","useState","useEffect","useCallback","DistriClient","useState","useCallback","useEffect","DistriClient","useState","useEffect","useCallback","useState","useCallback","useEffect"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@distri/react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "React hooks and components for Distri Framework",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -17,12 +17,12 @@
|
|
|
17
17
|
"README.md"
|
|
18
18
|
],
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@distri/core": "0.1.5",
|
|
21
20
|
"react-markdown": "^9.0.0",
|
|
22
21
|
"react-syntax-highlighter": "^15.5.0"
|
|
23
22
|
},
|
|
24
23
|
"peerDependencies": {
|
|
25
|
-
"react": "^18.0.0"
|
|
24
|
+
"react": "^18.0.0",
|
|
25
|
+
"@distri/core": "0.1.7"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/react": "^18.0.0",
|