@elqnt/agent-sdk 1.0.5 → 1.0.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 CHANGED
@@ -3,6 +3,7 @@
3
3
  var react = require('react');
4
4
  var chat = require('@elqnt/chat');
5
5
 
6
+ // src/hooks/useAgent/useAgent.ts
6
7
  function useAgentChat(config) {
7
8
  const {
8
9
  agentId,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/useAgentChat/useAgentChat.ts","../src/hooks/useAgentTools/useAgentTools.ts","../src/hooks/useAgent/useAgent.ts"],"names":["useState","useRef","useEffect","useCallback","useWebSocketChatBase","error"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * useAgentChat Hook\n *\n * A developer-friendly hook for connecting to and interacting with an AI agent via WebSocket.\n * This hook provides a simplified interface for chat functionality while maintaining\n * full control over the connection and message flow.\n *\n * @example\n * ```tsx\n * const {\n * messages,\n * sendMessage,\n * isConnected,\n * startNewChat\n * } = useAgentChat({\n * agentId: 'my-agent-id',\n * orgId: 'my-org-id',\n * serverBaseUrl: 'wss://chat.example.com',\n * userEmail: 'user@example.com'\n * });\n * ```\n *\n * @packageDocumentation\n */\n\nimport { useState, useCallback, useEffect, useRef } from \"react\";\nimport {\n useWebSocketChatBase,\n UseWebSocketChatBaseReturn,\n ChatEvent,\n ChatMessage,\n Chat,\n ChatUser,\n} from \"@elqnt/chat\";\nimport type {\n UseAgentChatConfig,\n UseAgentChatReturn,\n ConnectionState,\n AgentError,\n} from \"../../types\";\n\n/**\n * Hook for agent chat functionality\n *\n * Provides a simplified interface for interacting with AI agents via WebSocket,\n * including automatic connection management, message handling, and state management.\n *\n * @param config - Configuration object for the agent chat\n * @returns Object containing chat state and methods\n *\n * @public\n */\nexport function useAgentChat(\n config: UseAgentChatConfig\n): UseAgentChatReturn {\n const {\n agentId,\n orgId,\n serverBaseUrl,\n userEmail,\n features = {},\n onMessage,\n onConnect,\n onDisconnect,\n onToolCall,\n autoReconnect = true,\n reconnectDelay = 3000,\n debug = false,\n } = config;\n\n // State management\n const [messages, setMessages] = useState<ChatMessage[]>([]);\n const [currentChat, setCurrentChat] = useState<Chat | undefined>(undefined);\n const [users, setUsers] = useState<ChatUser[]>([]);\n const [currentChatUser, setCurrentChatUser] = useState<\n ChatUser | undefined\n >(undefined);\n const [isWaiting, setIsWaiting] = useState(false);\n const [isWaitingForAgent, setIsWaitingForAgent] = useState(false);\n const [chatKey, setChatKey] = useState<string | undefined>(undefined);\n\n // Refs\n const onMessageRef = useRef(onMessage);\n const onToolCallRef = useRef(onToolCall);\n\n // Update refs when callbacks change\n useEffect(() => {\n onMessageRef.current = onMessage;\n }, [onMessage]);\n\n useEffect(() => {\n onToolCallRef.current = onToolCall;\n }, [onToolCall]);\n\n // Message handler\n const handleMessage = useCallback(\n (event: ChatEvent) => {\n if (debug) {\n console.log(\"[useAgentChat] Received event:\", event.type, event);\n }\n\n // Handle different event types\n switch (event.type) {\n case \"new_chat_created\":\n const newChatKey = event.data?.chatKey as string;\n if (newChatKey) {\n setChatKey(newChatKey);\n }\n break;\n\n case \"load_chat_response\":\n const chat = event.data?.chat as Chat;\n if (chat) {\n setCurrentChat(chat);\n setChatKey(chat.key);\n setMessages(chat.messages || []);\n setUsers(chat.users || []);\n\n // Find current user\n const currentUser = chat.users?.find((u) => u.email === userEmail);\n setCurrentChatUser(currentUser);\n }\n break;\n\n case \"message\":\n const message = event.message;\n if (message) {\n setMessages((prev) => [...prev, message]);\n\n // Check if it's an agent message (stop waiting)\n if (message.role === \"ai\") {\n setIsWaiting(false);\n }\n }\n break;\n\n case \"typing\":\n // Agent is typing, start waiting\n setIsWaiting(true);\n break;\n\n case \"waiting_for_agent\":\n setIsWaitingForAgent(true);\n break;\n\n case \"agent_chat_assigned\":\n setIsWaitingForAgent(false);\n break;\n\n case \"chat_ended\":\n setChatKey(undefined);\n setCurrentChat(undefined);\n setMessages([]);\n setUsers([]);\n setCurrentChatUser(undefined);\n setIsWaiting(false);\n setIsWaitingForAgent(false);\n break;\n }\n\n // Call the user's onMessage callback\n if (onMessageRef.current) {\n onMessageRef.current(event);\n }\n },\n [debug, userEmail]\n );\n\n // Initialize WebSocket connection using the base hook\n const baseHook = useWebSocketChatBase({\n serverBaseUrl,\n orgId,\n clientType: \"customer\",\n product: \"hub\", // Default product, can be made configurable\n onMessage: handleMessage,\n retryConfig: autoReconnect\n ? {\n maxRetries: 10,\n intervals: [reconnectDelay, reconnectDelay * 2, reconnectDelay * 3],\n }\n : { maxRetries: 0 },\n debug,\n });\n\n // Connection state tracking\n useEffect(() => {\n if (baseHook.connectionState === \"connected\" && onConnect) {\n onConnect();\n } else if (baseHook.connectionState === \"disconnected\" && onDisconnect) {\n onDisconnect();\n }\n }, [baseHook.connectionState, onConnect, onDisconnect]);\n\n /**\n * Send a text message to the agent\n */\n const sendMessage = useCallback(\n async (content: string, attachments?: any[]): Promise<void> => {\n if (!chatKey) {\n throw new Error(\"No active chat session. Call startNewChat() first.\");\n }\n\n if (!content.trim()) {\n throw new Error(\"Message content cannot be empty.\");\n }\n\n setIsWaiting(true);\n\n const now = Date.now();\n const event: Omit<ChatEvent, \"timestamp\"> = {\n type: \"message\",\n orgId,\n chatKey,\n userId: userEmail,\n message: {\n id: `msg-${now}-${Math.random().toString(36).substr(2, 9)}`,\n role: \"user\",\n content,\n time: now,\n status: \"sending\",\n senderId: userEmail,\n createdAt: now,\n attachments,\n },\n data: {},\n };\n\n try {\n await baseHook.sendMessage(event, userEmail);\n } catch (error) {\n setIsWaiting(false);\n throw error;\n }\n },\n [chatKey, orgId, userEmail, baseHook]\n );\n\n /**\n * Start a new chat session\n */\n const startNewChat = useCallback(async (): Promise<void> => {\n if (debug) {\n console.log(\"[useAgentChat] Starting new chat...\");\n }\n\n // Connect if not already connected\n if (!baseHook.isConnected) {\n await baseHook.connect(userEmail);\n }\n\n // Request new chat from server\n const newChatKey = await baseHook.startNewChat(userEmail, {\n agentId,\n product: \"hub\",\n });\n\n setChatKey(newChatKey);\n setMessages([]);\n setUsers([]);\n setIsWaiting(false);\n setIsWaitingForAgent(false);\n\n if (debug) {\n console.log(\"[useAgentChat] New chat created:\", newChatKey);\n }\n }, [agentId, userEmail, baseHook, debug]);\n\n /**\n * End the current chat session\n */\n const endChat = useCallback(() => {\n if (!chatKey) return;\n\n const event: Omit<ChatEvent, \"timestamp\"> = {\n type: \"end_chat\",\n orgId,\n chatKey,\n userId: userEmail,\n data: {},\n };\n\n baseHook.sendMessage(event, userEmail);\n setChatKey(undefined);\n setMessages([]);\n setCurrentChat(undefined);\n setUsers([]);\n setIsWaiting(false);\n setIsWaitingForAgent(false);\n }, [chatKey, orgId, userEmail, baseHook]);\n\n /**\n * Reset the chat state (soft reset without disconnecting)\n */\n const resetChat = useCallback(() => {\n setChatKey(undefined);\n setMessages([]);\n setCurrentChat(undefined);\n setUsers([]);\n setCurrentChatUser(undefined);\n setIsWaiting(false);\n setIsWaitingForAgent(false);\n }, []);\n\n /**\n * Clear error state\n */\n const clearError = useCallback(() => {\n baseHook.clearError();\n }, [baseHook]);\n\n // Auto-connect on mount\n useEffect(() => {\n baseHook.connect(userEmail).catch((error) => {\n console.error(\"[useAgentChat] Failed to auto-connect:\", error);\n });\n }, []);\n\n // Map WebSocket error to AgentError\n const error: AgentError | undefined = baseHook.error\n ? {\n code: baseHook.error.code,\n message: baseHook.error.message,\n retryable: baseHook.error.retryable,\n timestamp: baseHook.error.timestamp,\n }\n : undefined;\n\n return {\n // Chat state\n messages,\n currentChat,\n users,\n currentChatUser,\n connectionState: baseHook.connectionState as ConnectionState,\n isConnected: baseHook.isConnected,\n isWaiting,\n isWaitingForAgent,\n status: currentChat?.status,\n chatKey,\n error,\n\n // Chat actions\n sendMessage,\n startNewChat,\n endChat,\n resetChat,\n disconnect: baseHook.disconnect,\n clearError,\n };\n}\n","/**\n * useAgentTools Hook\n *\n * A hook for executing client-side tools in response to agent tool calls.\n * Provides a registry for tool handlers and execution management.\n *\n * @example\n * ```tsx\n * const { executeClientTool, registerTool } = useAgentTools({\n * tools: {\n * 'search_products': async ({ query }) => {\n * const results = await api.search(query);\n * return { products: results };\n * },\n * 'track_order': async ({ orderId }) => {\n * const order = await api.getOrder(orderId);\n * return { status: order.status };\n * }\n * },\n * onToolExecuted: (toolName, result) => {\n * console.log(`Tool ${toolName} executed:`, result);\n * }\n * });\n * ```\n *\n * @packageDocumentation\n */\n\nimport { useState, useCallback, useRef, useEffect } from \"react\";\nimport { Tool } from \"@elqnt/agents\";\nimport type {\n UseAgentToolsConfig,\n UseAgentToolsReturn,\n ToolHandler,\n ToolHandlers,\n ToolExecutionResult,\n AgentError,\n} from \"../../types\";\n\n/**\n * Hook for managing and executing client-side agent tools\n *\n * Provides a registry for tool handlers and methods to execute tools\n * in response to agent requests. Supports dynamic tool registration\n * and execution tracking.\n *\n * @param config - Configuration object for agent tools\n * @returns Object containing tool management methods\n *\n * @public\n */\nexport function useAgentTools(\n config: UseAgentToolsConfig = {}\n): UseAgentToolsReturn {\n const {\n tools: initialTools = {},\n onToolExecuted,\n onToolError,\n debug = false,\n } = config;\n\n // State\n const [tools, setTools] = useState<Record<string, Tool>>({});\n\n // Refs for tool handlers\n const toolHandlersRef = useRef<ToolHandlers>(initialTools);\n const onToolExecutedRef = useRef(onToolExecuted);\n const onToolErrorRef = useRef(onToolError);\n\n // Update refs when callbacks change\n useEffect(() => {\n onToolExecutedRef.current = onToolExecuted;\n }, [onToolExecuted]);\n\n useEffect(() => {\n onToolErrorRef.current = onToolError;\n }, [onToolError]);\n\n // Update handlers when initial tools change\n useEffect(() => {\n toolHandlersRef.current = { ...toolHandlersRef.current, ...initialTools };\n }, [initialTools]);\n\n /**\n * Execute a client-side tool\n *\n * @param toolName - Name of the tool to execute\n * @param params - Parameters to pass to the tool\n * @returns Promise resolving to the tool's result\n *\n * @throws {Error} If the tool is not registered or execution fails\n *\n * @example\n * ```tsx\n * const result = await executeClientTool('search_products', {\n * query: 'laptop',\n * maxResults: 10\n * });\n * ```\n */\n const executeClientTool = useCallback(\n async <TResult = any>(\n toolName: string,\n params: any\n ): Promise<TResult> => {\n const startTime = Date.now();\n\n if (debug) {\n console.log(`[useAgentTools] Executing tool: ${toolName}`, params);\n }\n\n // Check if handler exists\n const handler = toolHandlersRef.current[toolName];\n if (!handler) {\n const error: AgentError = {\n code: \"TOOL_EXECUTION_FAILED\",\n message: `Tool handler not found: ${toolName}`,\n retryable: false,\n timestamp: Date.now(),\n details: { toolName, params },\n };\n\n if (onToolErrorRef.current) {\n onToolErrorRef.current(toolName, error);\n }\n\n throw new Error(error.message);\n }\n\n try {\n // Execute the tool handler\n const result = await handler(params);\n const executionTime = Date.now() - startTime;\n\n const executionResult: ToolExecutionResult<TResult> = {\n success: true,\n result,\n executionTime,\n };\n\n if (debug) {\n console.log(\n `[useAgentTools] Tool executed successfully: ${toolName}`,\n executionResult\n );\n }\n\n // Notify callback\n if (onToolExecutedRef.current) {\n onToolExecutedRef.current(toolName, executionResult);\n }\n\n return result;\n } catch (error) {\n const executionTime = Date.now() - startTime;\n const agentError: AgentError = {\n code: \"TOOL_EXECUTION_FAILED\",\n message:\n error instanceof Error\n ? error.message\n : \"Tool execution failed\",\n retryable: true,\n timestamp: Date.now(),\n details: { toolName, params, error },\n };\n\n const executionResult: ToolExecutionResult = {\n success: false,\n error: agentError,\n executionTime,\n };\n\n if (debug) {\n console.error(`[useAgentTools] Tool execution failed: ${toolName}`, agentError);\n }\n\n // Notify error callback\n if (onToolErrorRef.current) {\n onToolErrorRef.current(toolName, agentError);\n }\n\n // Notify execution callback\n if (onToolExecutedRef.current) {\n onToolExecutedRef.current(toolName, executionResult);\n }\n\n throw agentError;\n }\n },\n [debug]\n );\n\n /**\n * Register a new tool handler\n *\n * @param toolName - Name of the tool\n * @param handler - Handler function for the tool\n *\n * @example\n * ```tsx\n * registerTool('custom_tool', async (params) => {\n * return { result: 'success' };\n * });\n * ```\n */\n const registerTool = useCallback(\n (toolName: string, handler: ToolHandler) => {\n if (debug) {\n console.log(`[useAgentTools] Registering tool: ${toolName}`);\n }\n\n toolHandlersRef.current[toolName] = handler;\n\n // Optionally update tools state for UI purposes\n setTools((prev) => ({\n ...prev,\n [toolName]: {\n id: toolName,\n name: toolName,\n title: toolName,\n description: `Custom tool: ${toolName}`,\n inputSchema: { type: \"object\", properties: {} },\n configSchema: { type: \"object\", properties: {} },\n enabled: true,\n isSystem: false,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n },\n }));\n },\n [debug]\n );\n\n /**\n * Unregister a tool handler\n *\n * @param toolName - Name of the tool to unregister\n *\n * @example\n * ```tsx\n * unregisterTool('custom_tool');\n * ```\n */\n const unregisterTool = useCallback(\n (toolName: string) => {\n if (debug) {\n console.log(`[useAgentTools] Unregistering tool: ${toolName}`);\n }\n\n delete toolHandlersRef.current[toolName];\n\n setTools((prev) => {\n const newTools = { ...prev };\n delete newTools[toolName];\n return newTools;\n });\n },\n [debug]\n );\n\n /**\n * Check if a tool handler is registered\n *\n * @param toolName - Name of the tool\n * @returns True if the tool handler is registered\n *\n * @example\n * ```tsx\n * if (hasToolHandler('search_products')) {\n * // Tool is available\n * }\n * ```\n */\n const hasToolHandler = useCallback((toolName: string): boolean => {\n return toolName in toolHandlersRef.current;\n }, []);\n\n return {\n tools,\n executeClientTool,\n registerTool,\n unregisterTool,\n hasToolHandler,\n };\n}\n","/**\n * useAgent Hook\n *\n * The all-in-one hook for interacting with AI agents. Combines chat functionality,\n * tool execution, metadata management, CSAT surveys, and analytics tracking.\n *\n * This is the recommended hook for most use cases as it provides the complete\n * agent interaction experience out of the box.\n *\n * @example\n * ```tsx\n * const {\n * messages,\n * sendMessage,\n * isConnected,\n * executeClientTool,\n * metadata,\n * updateMetadata,\n * csatSurvey,\n * submitCSATResponse\n * } = useAgent({\n * agentId: 'my-agent-id',\n * orgId: 'my-org-id',\n * serverBaseUrl: 'wss://chat.example.com',\n * userEmail: 'user@example.com',\n * tools: {\n * 'search_products': async (params) => {\n * return await api.search(params.query);\n * }\n * }\n * });\n * ```\n *\n * @packageDocumentation\n */\n\nimport { useState, useCallback, useEffect, useRef } from \"react\";\nimport { Agent, CSATSurvey } from \"@elqnt/agents\";\nimport { useAgentChat } from \"../useAgentChat\";\nimport { useAgentTools } from \"../useAgentTools\";\nimport type {\n UseAgentConfig,\n UseAgentReturn,\n} from \"../../types\";\n\n/**\n * All-in-one hook for complete agent interaction\n *\n * Combines chat, tools, metadata, CSAT, and analytics into a single\n * convenient hook. This is the recommended starting point for most\n * agent implementations.\n *\n * @param config - Configuration object for the agent\n * @returns Object containing all agent interaction methods and state\n *\n * @public\n */\nexport function useAgent(config: UseAgentConfig): UseAgentReturn {\n const {\n agentId,\n tools: toolHandlers = {},\n initialMetadata = {},\n onCSATSubmit,\n debug = false,\n } = config;\n\n // State\n const [agent, setAgent] = useState<Agent | undefined>(undefined);\n const [metadata, setMetadata] = useState<Record<string, any>>(initialMetadata);\n const [csatSurvey, setCSATSurvey] = useState<CSATSurvey | undefined>(undefined);\n\n // Refs\n const onCSATSubmitRef = useRef(onCSATSubmit);\n\n // Update ref when callback changes\n useEffect(() => {\n onCSATSubmitRef.current = onCSATSubmit;\n }, [onCSATSubmit]);\n\n // Initialize chat functionality\n const chatHook = useAgentChat({\n ...config,\n onMessage: (event) => {\n // Handle CSAT survey events\n if (event.type === \"show_csat_survey\") {\n const survey = event.data?.survey as CSATSurvey;\n if (survey) {\n setCSATSurvey(survey);\n }\n }\n\n // Handle metadata updates\n if (event.type === \"sync_metadata_response\") {\n const newMetadata = event.data?.metadata;\n if (newMetadata) {\n setMetadata((prev) => ({ ...prev, ...newMetadata }));\n }\n }\n\n // Call the original onMessage if provided\n if (config.onMessage) {\n config.onMessage(event);\n }\n },\n onToolCall: (toolName, params) => {\n // Auto-execute client-side tools\n if (toolsHook.hasToolHandler(toolName)) {\n toolsHook\n .executeClientTool(toolName, params)\n .then((result) => {\n if (debug) {\n console.log(`[useAgent] Tool executed: ${toolName}`, result);\n }\n\n // Send result back to server\n const event = {\n type: \"tool_result\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey || \"\",\n userId: config.userEmail,\n data: {\n toolName,\n result,\n success: true,\n },\n };\n\n chatHook.sendMessage(JSON.stringify(event));\n })\n .catch((error) => {\n console.error(`[useAgent] Tool execution failed: ${toolName}`, error);\n\n // Send error back to server\n const event = {\n type: \"tool_result\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey || \"\",\n userId: config.userEmail,\n data: {\n toolName,\n error: error.message,\n success: false,\n },\n };\n\n chatHook.sendMessage(JSON.stringify(event));\n });\n }\n\n // Call the original onToolCall if provided\n if (config.onToolCall) {\n config.onToolCall(toolName, params);\n }\n },\n });\n\n // Initialize tools functionality\n const toolsHook = useAgentTools({\n tools: toolHandlers,\n debug,\n });\n\n /**\n * Update chat metadata\n *\n * @param updates - Partial metadata updates to apply\n *\n * @example\n * ```tsx\n * updateMetadata({\n * cartItems: [...metadata.cartItems, newItem],\n * lastActivity: Date.now()\n * });\n * ```\n */\n const updateMetadata = useCallback(\n (updates: Record<string, any>) => {\n const newMetadata = { ...metadata, ...updates };\n setMetadata(newMetadata);\n\n // Send metadata update to server if chat is active\n if (chatHook.chatKey && chatHook.isConnected) {\n const event = {\n type: \"update_metadata\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey,\n userId: config.userEmail,\n data: { metadata: newMetadata },\n };\n\n chatHook.sendMessage(JSON.stringify(event)).catch((error) => {\n console.error(\"[useAgent] Failed to update metadata:\", error);\n });\n }\n },\n [metadata, chatHook, config.orgId, config.userEmail]\n );\n\n /**\n * Clear all metadata\n *\n * @example\n * ```tsx\n * clearMetadata();\n * ```\n */\n const clearMetadata = useCallback(() => {\n setMetadata({});\n\n if (chatHook.chatKey && chatHook.isConnected) {\n const event = {\n type: \"update_metadata\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey,\n userId: config.userEmail,\n data: { metadata: {} },\n };\n\n chatHook.sendMessage(JSON.stringify(event)).catch((error) => {\n console.error(\"[useAgent] Failed to clear metadata:\", error);\n });\n }\n }, [chatHook, config.orgId, config.userEmail]);\n\n /**\n * Submit CSAT survey response\n *\n * @param response - CSAT response data\n *\n * @example\n * ```tsx\n * submitCSATResponse({\n * answers: [{ question: 'How satisfied?', rating: 5 }],\n * overallRating: 5\n * });\n * ```\n */\n const submitCSATResponse = useCallback(\n (response: {\n answers: { question: string; rating?: number; comment?: string }[];\n overallRating: number;\n }) => {\n if (!csatSurvey) {\n console.warn(\"[useAgent] No CSAT survey available\");\n return;\n }\n\n const event = {\n type: \"csat_response\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey || \"\",\n userId: config.userEmail,\n data: {\n response,\n },\n };\n\n chatHook.sendMessage(JSON.stringify(event)).then(() => {\n // Clear survey after submission\n setCSATSurvey(undefined);\n\n // Call callback if provided\n if (onCSATSubmitRef.current) {\n onCSATSubmitRef.current(response);\n }\n }).catch((error) => {\n console.error(\"[useAgent] Failed to submit CSAT response:\", error);\n });\n },\n [csatSurvey, chatHook, config.orgId, config.userEmail]\n );\n\n /**\n * Dismiss CSAT survey without submitting\n *\n * @example\n * ```tsx\n * dismissCSAT();\n * ```\n */\n const dismissCSAT = useCallback(() => {\n setCSATSurvey(undefined);\n }, []);\n\n /**\n * Log analytics event\n *\n * @param eventData - Event data to log\n *\n * @example\n * ```tsx\n * logEvent({\n * eventType: 'product_viewed',\n * productId: '123',\n * source: 'agent'\n * });\n * ```\n */\n const logEvent = useCallback(\n async (eventData: any): Promise<void> => {\n if (!config.features?.analytics) {\n return;\n }\n\n const event = {\n type: \"analytics_event\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey || \"\",\n userId: config.userEmail,\n data: {\n ...eventData,\n timestamp: Date.now(),\n agentId,\n },\n };\n\n try {\n await chatHook.sendMessage(JSON.stringify(event));\n } catch (error) {\n console.error(\"[useAgent] Failed to log analytics event:\", error);\n }\n },\n [config.features, config.orgId, config.userEmail, chatHook, agentId]\n );\n\n // Fetch agent configuration if not provided\n useEffect(() => {\n // TODO: Implement agent fetching from backend\n // For now, create a minimal agent object\n setAgent({\n id: agentId,\n orgId: config.orgId,\n product: \"hub\",\n type: \"react\",\n subType: \"react\",\n name: agentId,\n title: \"AI Agent\",\n description: \"AI-powered assistant\",\n status: \"active\",\n version: \"1.0.0\",\n provider: \"azure-openai\",\n model: \"gpt-4.1\",\n temperature: 0.7,\n maxTokens: 4000,\n systemPrompt: \"\",\n isDefault: false,\n isPublic: false,\n csatConfig: {\n enabled: false,\n survey: {\n questions: [],\n timeThreshold: 5,\n closeOnResponse: true,\n },\n },\n handoffConfig: {\n enabled: false,\n triggerKeywords: [],\n handoffMessage: \"\",\n },\n configSchema: {\n type: \"object\",\n properties: {},\n },\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n createdBy: config.userEmail,\n updatedBy: config.userEmail,\n } as Agent);\n }, [agentId, config.orgId]);\n\n return {\n // Agent info\n agent,\n\n // Chat functionality (from useAgentChat)\n messages: chatHook.messages,\n currentChat: chatHook.currentChat,\n users: chatHook.users,\n currentChatUser: chatHook.currentChatUser,\n connectionState: chatHook.connectionState,\n isConnected: chatHook.isConnected,\n isWaiting: chatHook.isWaiting,\n isWaitingForAgent: chatHook.isWaitingForAgent,\n status: chatHook.status,\n chatKey: chatHook.chatKey,\n error: chatHook.error,\n sendMessage: chatHook.sendMessage,\n startNewChat: chatHook.startNewChat,\n endChat: chatHook.endChat,\n resetChat: chatHook.resetChat,\n disconnect: chatHook.disconnect,\n clearError: chatHook.clearError,\n\n // Tools functionality (from useAgentTools)\n tools: toolsHook.tools,\n executeClientTool: toolsHook.executeClientTool,\n registerTool: toolsHook.registerTool,\n unregisterTool: toolsHook.unregisterTool,\n hasToolHandler: toolsHook.hasToolHandler,\n\n // Metadata management\n metadata,\n updateMetadata,\n clearMetadata,\n\n // CSAT\n csatSurvey,\n submitCSATResponse,\n dismissCSAT,\n\n // Analytics\n logEvent,\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/hooks/useAgentChat/useAgentChat.ts","../src/hooks/useAgentTools/useAgentTools.ts","../src/hooks/useAgent/useAgent.ts"],"names":["useState","useRef","useEffect","useCallback","useWebSocketChatBase","error"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * useAgentChat Hook\n *\n * A developer-friendly hook for connecting to and interacting with an AI agent via WebSocket.\n * This hook provides a simplified interface for chat functionality while maintaining\n * full control over the connection and message flow.\n *\n * @example\n * ```tsx\n * const {\n * messages,\n * sendMessage,\n * isConnected,\n * startNewChat\n * } = useAgentChat({\n * agentId: 'my-agent-id',\n * orgId: 'my-org-id',\n * serverBaseUrl: 'wss://chat.example.com',\n * userEmail: 'user@example.com'\n * });\n * ```\n *\n * @packageDocumentation\n */\n\nimport { useState, useCallback, useEffect, useRef } from \"react\";\nimport {\n useWebSocketChatBase,\n UseWebSocketChatBaseReturn,\n ChatEvent,\n ChatMessage,\n Chat,\n ChatUser,\n} from \"@elqnt/chat\";\nimport type {\n UseAgentChatConfig,\n UseAgentChatReturn,\n ConnectionState,\n AgentError,\n} from \"../../types\";\n\n/**\n * Hook for agent chat functionality\n *\n * Provides a simplified interface for interacting with AI agents via WebSocket,\n * including automatic connection management, message handling, and state management.\n *\n * @param config - Configuration object for the agent chat\n * @returns Object containing chat state and methods\n *\n * @public\n */\nexport function useAgentChat(\n config: UseAgentChatConfig\n): UseAgentChatReturn {\n const {\n agentId,\n orgId,\n serverBaseUrl,\n userEmail,\n features = {},\n onMessage,\n onConnect,\n onDisconnect,\n onToolCall,\n autoReconnect = true,\n reconnectDelay = 3000,\n debug = false,\n } = config;\n\n // State management\n const [messages, setMessages] = useState<ChatMessage[]>([]);\n const [currentChat, setCurrentChat] = useState<Chat | undefined>(undefined);\n const [users, setUsers] = useState<ChatUser[]>([]);\n const [currentChatUser, setCurrentChatUser] = useState<\n ChatUser | undefined\n >(undefined);\n const [isWaiting, setIsWaiting] = useState(false);\n const [isWaitingForAgent, setIsWaitingForAgent] = useState(false);\n const [chatKey, setChatKey] = useState<string | undefined>(undefined);\n\n // Refs\n const onMessageRef = useRef(onMessage);\n const onToolCallRef = useRef(onToolCall);\n\n // Update refs when callbacks change\n useEffect(() => {\n onMessageRef.current = onMessage;\n }, [onMessage]);\n\n useEffect(() => {\n onToolCallRef.current = onToolCall;\n }, [onToolCall]);\n\n // Message handler\n const handleMessage = useCallback(\n (event: ChatEvent) => {\n if (debug) {\n console.log(\"[useAgentChat] Received event:\", event.type, event);\n }\n\n // Handle different event types\n switch (event.type) {\n case \"new_chat_created\":\n const newChatKey = event.data?.chatKey as string;\n if (newChatKey) {\n setChatKey(newChatKey);\n }\n break;\n\n case \"load_chat_response\":\n const chat = event.data?.chat as Chat;\n if (chat) {\n setCurrentChat(chat);\n setChatKey(chat.key);\n setMessages(chat.messages || []);\n setUsers(chat.users || []);\n\n // Find current user\n const currentUser = chat.users?.find((u) => u.email === userEmail);\n setCurrentChatUser(currentUser);\n }\n break;\n\n case \"message\":\n const message = event.message;\n if (message) {\n setMessages((prev) => [...prev, message]);\n\n // Check if it's an agent message (stop waiting)\n if (message.role === \"ai\") {\n setIsWaiting(false);\n }\n }\n break;\n\n case \"typing\":\n // Agent is typing, start waiting\n setIsWaiting(true);\n break;\n\n case \"waiting_for_agent\":\n setIsWaitingForAgent(true);\n break;\n\n case \"agent_chat_assigned\":\n setIsWaitingForAgent(false);\n break;\n\n case \"chat_ended\":\n setChatKey(undefined);\n setCurrentChat(undefined);\n setMessages([]);\n setUsers([]);\n setCurrentChatUser(undefined);\n setIsWaiting(false);\n setIsWaitingForAgent(false);\n break;\n }\n\n // Call the user's onMessage callback\n if (onMessageRef.current) {\n onMessageRef.current(event);\n }\n },\n [debug, userEmail]\n );\n\n // Initialize WebSocket connection using the base hook\n const baseHook = useWebSocketChatBase({\n serverBaseUrl,\n orgId,\n clientType: \"customer\",\n product: \"hub\", // Default product, can be made configurable\n onMessage: handleMessage,\n retryConfig: autoReconnect\n ? {\n maxRetries: 10,\n intervals: [reconnectDelay, reconnectDelay * 2, reconnectDelay * 3],\n }\n : { maxRetries: 0 },\n debug,\n });\n\n // Connection state tracking\n useEffect(() => {\n if (baseHook.connectionState === \"connected\" && onConnect) {\n onConnect();\n } else if (baseHook.connectionState === \"disconnected\" && onDisconnect) {\n onDisconnect();\n }\n }, [baseHook.connectionState, onConnect, onDisconnect]);\n\n /**\n * Send a text message to the agent\n */\n const sendMessage = useCallback(\n async (content: string, attachments?: any[]): Promise<void> => {\n if (!chatKey) {\n throw new Error(\"No active chat session. Call startNewChat() first.\");\n }\n\n if (!content.trim()) {\n throw new Error(\"Message content cannot be empty.\");\n }\n\n setIsWaiting(true);\n\n const now = Date.now();\n const event: Omit<ChatEvent, \"timestamp\"> = {\n type: \"message\",\n orgId,\n chatKey,\n userId: userEmail,\n message: {\n id: `msg-${now}-${Math.random().toString(36).substr(2, 9)}`,\n role: \"user\",\n content,\n time: now,\n status: \"sending\",\n senderId: userEmail,\n createdAt: now,\n attachments,\n },\n data: {},\n };\n\n try {\n await baseHook.sendMessage(event, userEmail);\n } catch (error) {\n setIsWaiting(false);\n throw error;\n }\n },\n [chatKey, orgId, userEmail, baseHook]\n );\n\n /**\n * Start a new chat session\n */\n const startNewChat = useCallback(async (): Promise<void> => {\n if (debug) {\n console.log(\"[useAgentChat] Starting new chat...\");\n }\n\n // Connect if not already connected\n if (!baseHook.isConnected) {\n await baseHook.connect(userEmail);\n }\n\n // Request new chat from server\n const newChatKey = await baseHook.startNewChat(userEmail, {\n agentId,\n product: \"hub\",\n });\n\n setChatKey(newChatKey);\n setMessages([]);\n setUsers([]);\n setIsWaiting(false);\n setIsWaitingForAgent(false);\n\n if (debug) {\n console.log(\"[useAgentChat] New chat created:\", newChatKey);\n }\n }, [agentId, userEmail, baseHook, debug]);\n\n /**\n * End the current chat session\n */\n const endChat = useCallback(() => {\n if (!chatKey) return;\n\n const event: Omit<ChatEvent, \"timestamp\"> = {\n type: \"end_chat\",\n orgId,\n chatKey,\n userId: userEmail,\n data: {},\n };\n\n baseHook.sendMessage(event, userEmail);\n setChatKey(undefined);\n setMessages([]);\n setCurrentChat(undefined);\n setUsers([]);\n setIsWaiting(false);\n setIsWaitingForAgent(false);\n }, [chatKey, orgId, userEmail, baseHook]);\n\n /**\n * Reset the chat state (soft reset without disconnecting)\n */\n const resetChat = useCallback(() => {\n setChatKey(undefined);\n setMessages([]);\n setCurrentChat(undefined);\n setUsers([]);\n setCurrentChatUser(undefined);\n setIsWaiting(false);\n setIsWaitingForAgent(false);\n }, []);\n\n /**\n * Clear error state\n */\n const clearError = useCallback(() => {\n baseHook.clearError();\n }, [baseHook]);\n\n // Auto-connect on mount\n useEffect(() => {\n baseHook.connect(userEmail).catch((error) => {\n console.error(\"[useAgentChat] Failed to auto-connect:\", error);\n });\n }, []);\n\n // Map WebSocket error to AgentError\n const error: AgentError | undefined = baseHook.error\n ? {\n code: baseHook.error.code,\n message: baseHook.error.message,\n retryable: baseHook.error.retryable,\n timestamp: baseHook.error.timestamp,\n }\n : undefined;\n\n return {\n // Chat state\n messages,\n currentChat,\n users,\n currentChatUser,\n connectionState: baseHook.connectionState as ConnectionState,\n isConnected: baseHook.isConnected,\n isWaiting,\n isWaitingForAgent,\n status: currentChat?.status,\n chatKey,\n error,\n\n // Chat actions\n sendMessage,\n startNewChat,\n endChat,\n resetChat,\n disconnect: baseHook.disconnect,\n clearError,\n };\n}\n","/**\n * useAgentTools Hook\n *\n * A hook for executing client-side tools in response to agent tool calls.\n * Provides a registry for tool handlers and execution management.\n *\n * @example\n * ```tsx\n * const { executeClientTool, registerTool } = useAgentTools({\n * tools: {\n * 'search_products': async ({ query }) => {\n * const results = await api.search(query);\n * return { products: results };\n * },\n * 'track_order': async ({ orderId }) => {\n * const order = await api.getOrder(orderId);\n * return { status: order.status };\n * }\n * },\n * onToolExecuted: (toolName, result) => {\n * console.log(`Tool ${toolName} executed:`, result);\n * }\n * });\n * ```\n *\n * @packageDocumentation\n */\n\nimport { useState, useCallback, useRef, useEffect } from \"react\";\nimport { Tool } from \"@elqnt/agents\";\nimport type {\n UseAgentToolsConfig,\n UseAgentToolsReturn,\n ToolHandler,\n ToolHandlers,\n ToolExecutionResult,\n AgentError,\n} from \"../../types\";\n\n/**\n * Hook for managing and executing client-side agent tools\n *\n * Provides a registry for tool handlers and methods to execute tools\n * in response to agent requests. Supports dynamic tool registration\n * and execution tracking.\n *\n * @param config - Configuration object for agent tools\n * @returns Object containing tool management methods\n *\n * @public\n */\nexport function useAgentTools(\n config: UseAgentToolsConfig = {}\n): UseAgentToolsReturn {\n const {\n tools: initialTools = {},\n onToolExecuted,\n onToolError,\n debug = false,\n } = config;\n\n // State\n const [tools, setTools] = useState<Record<string, Tool>>({});\n\n // Refs for tool handlers\n const toolHandlersRef = useRef<ToolHandlers>(initialTools);\n const onToolExecutedRef = useRef(onToolExecuted);\n const onToolErrorRef = useRef(onToolError);\n\n // Update refs when callbacks change\n useEffect(() => {\n onToolExecutedRef.current = onToolExecuted;\n }, [onToolExecuted]);\n\n useEffect(() => {\n onToolErrorRef.current = onToolError;\n }, [onToolError]);\n\n // Update handlers when initial tools change\n useEffect(() => {\n toolHandlersRef.current = { ...toolHandlersRef.current, ...initialTools };\n }, [initialTools]);\n\n /**\n * Execute a client-side tool\n *\n * @param toolName - Name of the tool to execute\n * @param params - Parameters to pass to the tool\n * @returns Promise resolving to the tool's result\n *\n * @throws {Error} If the tool is not registered or execution fails\n *\n * @example\n * ```tsx\n * const result = await executeClientTool('search_products', {\n * query: 'laptop',\n * maxResults: 10\n * });\n * ```\n */\n const executeClientTool = useCallback(\n async <TResult = any>(\n toolName: string,\n params: any\n ): Promise<TResult> => {\n const startTime = Date.now();\n\n if (debug) {\n console.log(`[useAgentTools] Executing tool: ${toolName}`, params);\n }\n\n // Check if handler exists\n const handler = toolHandlersRef.current[toolName];\n if (!handler) {\n const error: AgentError = {\n code: \"TOOL_EXECUTION_FAILED\",\n message: `Tool handler not found: ${toolName}`,\n retryable: false,\n timestamp: Date.now(),\n details: { toolName, params },\n };\n\n if (onToolErrorRef.current) {\n onToolErrorRef.current(toolName, error);\n }\n\n throw new Error(error.message);\n }\n\n try {\n // Execute the tool handler\n const result = await handler(params);\n const executionTime = Date.now() - startTime;\n\n const executionResult: ToolExecutionResult<TResult> = {\n success: true,\n result,\n executionTime,\n };\n\n if (debug) {\n console.log(\n `[useAgentTools] Tool executed successfully: ${toolName}`,\n executionResult\n );\n }\n\n // Notify callback\n if (onToolExecutedRef.current) {\n onToolExecutedRef.current(toolName, executionResult);\n }\n\n return result;\n } catch (error) {\n const executionTime = Date.now() - startTime;\n const agentError: AgentError = {\n code: \"TOOL_EXECUTION_FAILED\",\n message:\n error instanceof Error\n ? error.message\n : \"Tool execution failed\",\n retryable: true,\n timestamp: Date.now(),\n details: { toolName, params, error },\n };\n\n const executionResult: ToolExecutionResult = {\n success: false,\n error: agentError,\n executionTime,\n };\n\n if (debug) {\n console.error(`[useAgentTools] Tool execution failed: ${toolName}`, agentError);\n }\n\n // Notify error callback\n if (onToolErrorRef.current) {\n onToolErrorRef.current(toolName, agentError);\n }\n\n // Notify execution callback\n if (onToolExecutedRef.current) {\n onToolExecutedRef.current(toolName, executionResult);\n }\n\n throw agentError;\n }\n },\n [debug]\n );\n\n /**\n * Register a new tool handler\n *\n * @param toolName - Name of the tool\n * @param handler - Handler function for the tool\n *\n * @example\n * ```tsx\n * registerTool('custom_tool', async (params) => {\n * return { result: 'success' };\n * });\n * ```\n */\n const registerTool = useCallback(\n (toolName: string, handler: ToolHandler) => {\n if (debug) {\n console.log(`[useAgentTools] Registering tool: ${toolName}`);\n }\n\n toolHandlersRef.current[toolName] = handler;\n\n // Optionally update tools state for UI purposes\n setTools((prev) => ({\n ...prev,\n [toolName]: {\n id: toolName,\n name: toolName,\n title: toolName,\n description: `Custom tool: ${toolName}`,\n inputSchema: { type: \"object\", properties: {} },\n configSchema: { type: \"object\", properties: {} },\n enabled: true,\n isSystem: false,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n },\n }));\n },\n [debug]\n );\n\n /**\n * Unregister a tool handler\n *\n * @param toolName - Name of the tool to unregister\n *\n * @example\n * ```tsx\n * unregisterTool('custom_tool');\n * ```\n */\n const unregisterTool = useCallback(\n (toolName: string) => {\n if (debug) {\n console.log(`[useAgentTools] Unregistering tool: ${toolName}`);\n }\n\n delete toolHandlersRef.current[toolName];\n\n setTools((prev) => {\n const newTools = { ...prev };\n delete newTools[toolName];\n return newTools;\n });\n },\n [debug]\n );\n\n /**\n * Check if a tool handler is registered\n *\n * @param toolName - Name of the tool\n * @returns True if the tool handler is registered\n *\n * @example\n * ```tsx\n * if (hasToolHandler('search_products')) {\n * // Tool is available\n * }\n * ```\n */\n const hasToolHandler = useCallback((toolName: string): boolean => {\n return toolName in toolHandlersRef.current;\n }, []);\n\n return {\n tools,\n executeClientTool,\n registerTool,\n unregisterTool,\n hasToolHandler,\n };\n}\n","/**\n * useAgent Hook\n *\n * The all-in-one hook for interacting with AI agents. Combines chat functionality,\n * tool execution, metadata management, CSAT surveys, and analytics tracking.\n *\n * This is the recommended hook for most use cases as it provides the complete\n * agent interaction experience out of the box.\n *\n * @example\n * ```tsx\n * const {\n * messages,\n * sendMessage,\n * isConnected,\n * executeClientTool,\n * metadata,\n * updateMetadata,\n * csatSurvey,\n * submitCSATResponse\n * } = useAgent({\n * agentId: 'my-agent-id',\n * orgId: 'my-org-id',\n * serverBaseUrl: 'wss://chat.example.com',\n * userEmail: 'user@example.com',\n * tools: {\n * 'search_products': async (params) => {\n * return await api.search(params.query);\n * }\n * }\n * });\n * ```\n *\n * @packageDocumentation\n */\n\nimport { useState, useCallback, useEffect, useRef } from \"react\";\nimport { Agent, CSATSurvey } from \"@elqnt/agents\";\nimport { useAgentChat } from \"../useAgentChat\";\nimport { useAgentTools } from \"../useAgentTools\";\nimport type {\n UseAgentConfig,\n UseAgentReturn,\n} from \"../../types\";\n\n/**\n * All-in-one hook for complete agent interaction\n *\n * Combines chat, tools, metadata, CSAT, and analytics into a single\n * convenient hook. This is the recommended starting point for most\n * agent implementations.\n *\n * @param config - Configuration object for the agent\n * @returns Object containing all agent interaction methods and state\n *\n * @public\n */\nexport function useAgent(config: UseAgentConfig): UseAgentReturn {\n const {\n agentId,\n tools: toolHandlers = {},\n initialMetadata = {},\n onCSATSubmit,\n debug = false,\n } = config;\n\n // State\n const [agent, setAgent] = useState<Agent | undefined>(undefined);\n const [metadata, setMetadata] = useState<Record<string, any>>(initialMetadata);\n const [csatSurvey, setCSATSurvey] = useState<CSATSurvey | undefined>(undefined);\n\n // Refs\n const onCSATSubmitRef = useRef(onCSATSubmit);\n\n // Update ref when callback changes\n useEffect(() => {\n onCSATSubmitRef.current = onCSATSubmit;\n }, [onCSATSubmit]);\n\n // Initialize chat functionality\n const chatHook = useAgentChat({\n ...config,\n onMessage: (event) => {\n // Handle CSAT survey events\n if (event.type === \"show_csat_survey\") {\n const survey = event.data?.survey as CSATSurvey;\n if (survey) {\n setCSATSurvey(survey);\n }\n }\n\n // Handle metadata updates\n if (event.type === \"sync_metadata_response\") {\n const newMetadata = event.data?.metadata;\n if (newMetadata) {\n setMetadata((prev) => ({ ...prev, ...newMetadata }));\n }\n }\n\n // Call the original onMessage if provided\n if (config.onMessage) {\n config.onMessage(event);\n }\n },\n onToolCall: (toolName, params) => {\n // Auto-execute client-side tools\n if (toolsHook.hasToolHandler(toolName)) {\n toolsHook\n .executeClientTool(toolName, params)\n .then((result) => {\n if (debug) {\n console.log(`[useAgent] Tool executed: ${toolName}`, result);\n }\n\n // Send result back to server\n const event = {\n type: \"tool_result\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey || \"\",\n userId: config.userEmail,\n data: {\n toolName,\n result,\n success: true,\n },\n };\n\n chatHook.sendMessage(JSON.stringify(event));\n })\n .catch((error) => {\n console.error(`[useAgent] Tool execution failed: ${toolName}`, error);\n\n // Send error back to server\n const event = {\n type: \"tool_result\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey || \"\",\n userId: config.userEmail,\n data: {\n toolName,\n error: error.message,\n success: false,\n },\n };\n\n chatHook.sendMessage(JSON.stringify(event));\n });\n }\n\n // Call the original onToolCall if provided\n if (config.onToolCall) {\n config.onToolCall(toolName, params);\n }\n },\n });\n\n // Initialize tools functionality\n const toolsHook = useAgentTools({\n tools: toolHandlers,\n debug,\n });\n\n /**\n * Update chat metadata\n *\n * @param updates - Partial metadata updates to apply\n *\n * @example\n * ```tsx\n * updateMetadata({\n * cartItems: [...metadata.cartItems, newItem],\n * lastActivity: Date.now()\n * });\n * ```\n */\n const updateMetadata = useCallback(\n (updates: Record<string, any>) => {\n const newMetadata = { ...metadata, ...updates };\n setMetadata(newMetadata);\n\n // Send metadata update to server if chat is active\n if (chatHook.chatKey && chatHook.isConnected) {\n const event = {\n type: \"update_metadata\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey,\n userId: config.userEmail,\n data: { metadata: newMetadata },\n };\n\n chatHook.sendMessage(JSON.stringify(event)).catch((error) => {\n console.error(\"[useAgent] Failed to update metadata:\", error);\n });\n }\n },\n [metadata, chatHook, config.orgId, config.userEmail]\n );\n\n /**\n * Clear all metadata\n *\n * @example\n * ```tsx\n * clearMetadata();\n * ```\n */\n const clearMetadata = useCallback(() => {\n setMetadata({});\n\n if (chatHook.chatKey && chatHook.isConnected) {\n const event = {\n type: \"update_metadata\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey,\n userId: config.userEmail,\n data: { metadata: {} },\n };\n\n chatHook.sendMessage(JSON.stringify(event)).catch((error) => {\n console.error(\"[useAgent] Failed to clear metadata:\", error);\n });\n }\n }, [chatHook, config.orgId, config.userEmail]);\n\n /**\n * Submit CSAT survey response\n *\n * @param response - CSAT response data\n *\n * @example\n * ```tsx\n * submitCSATResponse({\n * answers: [{ question: 'How satisfied?', rating: 5 }],\n * overallRating: 5\n * });\n * ```\n */\n const submitCSATResponse = useCallback(\n (response: {\n answers: { question: string; rating?: number; comment?: string }[];\n overallRating: number;\n }) => {\n if (!csatSurvey) {\n console.warn(\"[useAgent] No CSAT survey available\");\n return;\n }\n\n const event = {\n type: \"csat_response\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey || \"\",\n userId: config.userEmail,\n data: {\n response,\n },\n };\n\n chatHook.sendMessage(JSON.stringify(event)).then(() => {\n // Clear survey after submission\n setCSATSurvey(undefined);\n\n // Call callback if provided\n if (onCSATSubmitRef.current) {\n onCSATSubmitRef.current(response);\n }\n }).catch((error) => {\n console.error(\"[useAgent] Failed to submit CSAT response:\", error);\n });\n },\n [csatSurvey, chatHook, config.orgId, config.userEmail]\n );\n\n /**\n * Dismiss CSAT survey without submitting\n *\n * @example\n * ```tsx\n * dismissCSAT();\n * ```\n */\n const dismissCSAT = useCallback(() => {\n setCSATSurvey(undefined);\n }, []);\n\n /**\n * Log analytics event\n *\n * @param eventData - Event data to log\n *\n * @example\n * ```tsx\n * logEvent({\n * eventType: 'product_viewed',\n * productId: '123',\n * source: 'agent'\n * });\n * ```\n */\n const logEvent = useCallback(\n async (eventData: any): Promise<void> => {\n if (!config.features?.analytics) {\n return;\n }\n\n const event = {\n type: \"analytics_event\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey || \"\",\n userId: config.userEmail,\n data: {\n ...eventData,\n timestamp: Date.now(),\n agentId,\n },\n };\n\n try {\n await chatHook.sendMessage(JSON.stringify(event));\n } catch (error) {\n console.error(\"[useAgent] Failed to log analytics event:\", error);\n }\n },\n [config.features, config.orgId, config.userEmail, chatHook, agentId]\n );\n\n // Fetch agent configuration if not provided\n useEffect(() => {\n // TODO: Implement agent fetching from backend\n // For now, create a minimal agent object\n setAgent({\n id: agentId,\n orgId: config.orgId,\n product: \"hub\",\n type: \"react\",\n subType: \"react\",\n name: agentId,\n title: \"AI Agent\",\n description: \"AI-powered assistant\",\n status: \"active\",\n version: \"1.0.0\",\n provider: \"azure-openai\",\n model: \"gpt-4.1\",\n temperature: 0.7,\n maxTokens: 4000,\n systemPrompt: \"\",\n isDefault: false,\n isPublic: false,\n csatConfig: {\n enabled: false,\n survey: {\n questions: [],\n timeThreshold: 5,\n closeOnResponse: true,\n },\n },\n handoffConfig: {\n enabled: false,\n triggerKeywords: [],\n handoffMessage: \"\",\n },\n configSchema: {\n type: \"object\",\n properties: {},\n },\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n createdBy: config.userEmail,\n updatedBy: config.userEmail,\n } as Agent);\n }, [agentId, config.orgId]);\n\n return {\n // Agent info\n agent,\n\n // Chat functionality (from useAgentChat)\n messages: chatHook.messages,\n currentChat: chatHook.currentChat,\n users: chatHook.users,\n currentChatUser: chatHook.currentChatUser,\n connectionState: chatHook.connectionState,\n isConnected: chatHook.isConnected,\n isWaiting: chatHook.isWaiting,\n isWaitingForAgent: chatHook.isWaitingForAgent,\n status: chatHook.status,\n chatKey: chatHook.chatKey,\n error: chatHook.error,\n sendMessage: chatHook.sendMessage,\n startNewChat: chatHook.startNewChat,\n endChat: chatHook.endChat,\n resetChat: chatHook.resetChat,\n disconnect: chatHook.disconnect,\n clearError: chatHook.clearError,\n\n // Tools functionality (from useAgentTools)\n tools: toolsHook.tools,\n executeClientTool: toolsHook.executeClientTool,\n registerTool: toolsHook.registerTool,\n unregisterTool: toolsHook.unregisterTool,\n hasToolHandler: toolsHook.hasToolHandler,\n\n // Metadata management\n metadata,\n updateMetadata,\n clearMetadata,\n\n // CSAT\n csatSurvey,\n submitCSATResponse,\n dismissCSAT,\n\n // Analytics\n logEvent,\n };\n}\n"]}
package/dist/index.mjs CHANGED
@@ -1,6 +1,7 @@
1
1
  import { useState, useRef, useEffect, useCallback } from 'react';
2
2
  import { useWebSocketChatBase } from '@elqnt/chat';
3
3
 
4
+ // src/hooks/useAgent/useAgent.ts
4
5
  function useAgentChat(config) {
5
6
  const {
6
7
  agentId,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/useAgentChat/useAgentChat.ts","../src/hooks/useAgentTools/useAgentTools.ts","../src/hooks/useAgent/useAgent.ts"],"names":["error","useState","useRef","useEffect","useCallback"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * useAgentChat Hook\n *\n * A developer-friendly hook for connecting to and interacting with an AI agent via WebSocket.\n * This hook provides a simplified interface for chat functionality while maintaining\n * full control over the connection and message flow.\n *\n * @example\n * ```tsx\n * const {\n * messages,\n * sendMessage,\n * isConnected,\n * startNewChat\n * } = useAgentChat({\n * agentId: 'my-agent-id',\n * orgId: 'my-org-id',\n * serverBaseUrl: 'wss://chat.example.com',\n * userEmail: 'user@example.com'\n * });\n * ```\n *\n * @packageDocumentation\n */\n\nimport { useState, useCallback, useEffect, useRef } from \"react\";\nimport {\n useWebSocketChatBase,\n UseWebSocketChatBaseReturn,\n ChatEvent,\n ChatMessage,\n Chat,\n ChatUser,\n} from \"@elqnt/chat\";\nimport type {\n UseAgentChatConfig,\n UseAgentChatReturn,\n ConnectionState,\n AgentError,\n} from \"../../types\";\n\n/**\n * Hook for agent chat functionality\n *\n * Provides a simplified interface for interacting with AI agents via WebSocket,\n * including automatic connection management, message handling, and state management.\n *\n * @param config - Configuration object for the agent chat\n * @returns Object containing chat state and methods\n *\n * @public\n */\nexport function useAgentChat(\n config: UseAgentChatConfig\n): UseAgentChatReturn {\n const {\n agentId,\n orgId,\n serverBaseUrl,\n userEmail,\n features = {},\n onMessage,\n onConnect,\n onDisconnect,\n onToolCall,\n autoReconnect = true,\n reconnectDelay = 3000,\n debug = false,\n } = config;\n\n // State management\n const [messages, setMessages] = useState<ChatMessage[]>([]);\n const [currentChat, setCurrentChat] = useState<Chat | undefined>(undefined);\n const [users, setUsers] = useState<ChatUser[]>([]);\n const [currentChatUser, setCurrentChatUser] = useState<\n ChatUser | undefined\n >(undefined);\n const [isWaiting, setIsWaiting] = useState(false);\n const [isWaitingForAgent, setIsWaitingForAgent] = useState(false);\n const [chatKey, setChatKey] = useState<string | undefined>(undefined);\n\n // Refs\n const onMessageRef = useRef(onMessage);\n const onToolCallRef = useRef(onToolCall);\n\n // Update refs when callbacks change\n useEffect(() => {\n onMessageRef.current = onMessage;\n }, [onMessage]);\n\n useEffect(() => {\n onToolCallRef.current = onToolCall;\n }, [onToolCall]);\n\n // Message handler\n const handleMessage = useCallback(\n (event: ChatEvent) => {\n if (debug) {\n console.log(\"[useAgentChat] Received event:\", event.type, event);\n }\n\n // Handle different event types\n switch (event.type) {\n case \"new_chat_created\":\n const newChatKey = event.data?.chatKey as string;\n if (newChatKey) {\n setChatKey(newChatKey);\n }\n break;\n\n case \"load_chat_response\":\n const chat = event.data?.chat as Chat;\n if (chat) {\n setCurrentChat(chat);\n setChatKey(chat.key);\n setMessages(chat.messages || []);\n setUsers(chat.users || []);\n\n // Find current user\n const currentUser = chat.users?.find((u) => u.email === userEmail);\n setCurrentChatUser(currentUser);\n }\n break;\n\n case \"message\":\n const message = event.message;\n if (message) {\n setMessages((prev) => [...prev, message]);\n\n // Check if it's an agent message (stop waiting)\n if (message.role === \"ai\") {\n setIsWaiting(false);\n }\n }\n break;\n\n case \"typing\":\n // Agent is typing, start waiting\n setIsWaiting(true);\n break;\n\n case \"waiting_for_agent\":\n setIsWaitingForAgent(true);\n break;\n\n case \"agent_chat_assigned\":\n setIsWaitingForAgent(false);\n break;\n\n case \"chat_ended\":\n setChatKey(undefined);\n setCurrentChat(undefined);\n setMessages([]);\n setUsers([]);\n setCurrentChatUser(undefined);\n setIsWaiting(false);\n setIsWaitingForAgent(false);\n break;\n }\n\n // Call the user's onMessage callback\n if (onMessageRef.current) {\n onMessageRef.current(event);\n }\n },\n [debug, userEmail]\n );\n\n // Initialize WebSocket connection using the base hook\n const baseHook = useWebSocketChatBase({\n serverBaseUrl,\n orgId,\n clientType: \"customer\",\n product: \"hub\", // Default product, can be made configurable\n onMessage: handleMessage,\n retryConfig: autoReconnect\n ? {\n maxRetries: 10,\n intervals: [reconnectDelay, reconnectDelay * 2, reconnectDelay * 3],\n }\n : { maxRetries: 0 },\n debug,\n });\n\n // Connection state tracking\n useEffect(() => {\n if (baseHook.connectionState === \"connected\" && onConnect) {\n onConnect();\n } else if (baseHook.connectionState === \"disconnected\" && onDisconnect) {\n onDisconnect();\n }\n }, [baseHook.connectionState, onConnect, onDisconnect]);\n\n /**\n * Send a text message to the agent\n */\n const sendMessage = useCallback(\n async (content: string, attachments?: any[]): Promise<void> => {\n if (!chatKey) {\n throw new Error(\"No active chat session. Call startNewChat() first.\");\n }\n\n if (!content.trim()) {\n throw new Error(\"Message content cannot be empty.\");\n }\n\n setIsWaiting(true);\n\n const now = Date.now();\n const event: Omit<ChatEvent, \"timestamp\"> = {\n type: \"message\",\n orgId,\n chatKey,\n userId: userEmail,\n message: {\n id: `msg-${now}-${Math.random().toString(36).substr(2, 9)}`,\n role: \"user\",\n content,\n time: now,\n status: \"sending\",\n senderId: userEmail,\n createdAt: now,\n attachments,\n },\n data: {},\n };\n\n try {\n await baseHook.sendMessage(event, userEmail);\n } catch (error) {\n setIsWaiting(false);\n throw error;\n }\n },\n [chatKey, orgId, userEmail, baseHook]\n );\n\n /**\n * Start a new chat session\n */\n const startNewChat = useCallback(async (): Promise<void> => {\n if (debug) {\n console.log(\"[useAgentChat] Starting new chat...\");\n }\n\n // Connect if not already connected\n if (!baseHook.isConnected) {\n await baseHook.connect(userEmail);\n }\n\n // Request new chat from server\n const newChatKey = await baseHook.startNewChat(userEmail, {\n agentId,\n product: \"hub\",\n });\n\n setChatKey(newChatKey);\n setMessages([]);\n setUsers([]);\n setIsWaiting(false);\n setIsWaitingForAgent(false);\n\n if (debug) {\n console.log(\"[useAgentChat] New chat created:\", newChatKey);\n }\n }, [agentId, userEmail, baseHook, debug]);\n\n /**\n * End the current chat session\n */\n const endChat = useCallback(() => {\n if (!chatKey) return;\n\n const event: Omit<ChatEvent, \"timestamp\"> = {\n type: \"end_chat\",\n orgId,\n chatKey,\n userId: userEmail,\n data: {},\n };\n\n baseHook.sendMessage(event, userEmail);\n setChatKey(undefined);\n setMessages([]);\n setCurrentChat(undefined);\n setUsers([]);\n setIsWaiting(false);\n setIsWaitingForAgent(false);\n }, [chatKey, orgId, userEmail, baseHook]);\n\n /**\n * Reset the chat state (soft reset without disconnecting)\n */\n const resetChat = useCallback(() => {\n setChatKey(undefined);\n setMessages([]);\n setCurrentChat(undefined);\n setUsers([]);\n setCurrentChatUser(undefined);\n setIsWaiting(false);\n setIsWaitingForAgent(false);\n }, []);\n\n /**\n * Clear error state\n */\n const clearError = useCallback(() => {\n baseHook.clearError();\n }, [baseHook]);\n\n // Auto-connect on mount\n useEffect(() => {\n baseHook.connect(userEmail).catch((error) => {\n console.error(\"[useAgentChat] Failed to auto-connect:\", error);\n });\n }, []);\n\n // Map WebSocket error to AgentError\n const error: AgentError | undefined = baseHook.error\n ? {\n code: baseHook.error.code,\n message: baseHook.error.message,\n retryable: baseHook.error.retryable,\n timestamp: baseHook.error.timestamp,\n }\n : undefined;\n\n return {\n // Chat state\n messages,\n currentChat,\n users,\n currentChatUser,\n connectionState: baseHook.connectionState as ConnectionState,\n isConnected: baseHook.isConnected,\n isWaiting,\n isWaitingForAgent,\n status: currentChat?.status,\n chatKey,\n error,\n\n // Chat actions\n sendMessage,\n startNewChat,\n endChat,\n resetChat,\n disconnect: baseHook.disconnect,\n clearError,\n };\n}\n","/**\n * useAgentTools Hook\n *\n * A hook for executing client-side tools in response to agent tool calls.\n * Provides a registry for tool handlers and execution management.\n *\n * @example\n * ```tsx\n * const { executeClientTool, registerTool } = useAgentTools({\n * tools: {\n * 'search_products': async ({ query }) => {\n * const results = await api.search(query);\n * return { products: results };\n * },\n * 'track_order': async ({ orderId }) => {\n * const order = await api.getOrder(orderId);\n * return { status: order.status };\n * }\n * },\n * onToolExecuted: (toolName, result) => {\n * console.log(`Tool ${toolName} executed:`, result);\n * }\n * });\n * ```\n *\n * @packageDocumentation\n */\n\nimport { useState, useCallback, useRef, useEffect } from \"react\";\nimport { Tool } from \"@elqnt/agents\";\nimport type {\n UseAgentToolsConfig,\n UseAgentToolsReturn,\n ToolHandler,\n ToolHandlers,\n ToolExecutionResult,\n AgentError,\n} from \"../../types\";\n\n/**\n * Hook for managing and executing client-side agent tools\n *\n * Provides a registry for tool handlers and methods to execute tools\n * in response to agent requests. Supports dynamic tool registration\n * and execution tracking.\n *\n * @param config - Configuration object for agent tools\n * @returns Object containing tool management methods\n *\n * @public\n */\nexport function useAgentTools(\n config: UseAgentToolsConfig = {}\n): UseAgentToolsReturn {\n const {\n tools: initialTools = {},\n onToolExecuted,\n onToolError,\n debug = false,\n } = config;\n\n // State\n const [tools, setTools] = useState<Record<string, Tool>>({});\n\n // Refs for tool handlers\n const toolHandlersRef = useRef<ToolHandlers>(initialTools);\n const onToolExecutedRef = useRef(onToolExecuted);\n const onToolErrorRef = useRef(onToolError);\n\n // Update refs when callbacks change\n useEffect(() => {\n onToolExecutedRef.current = onToolExecuted;\n }, [onToolExecuted]);\n\n useEffect(() => {\n onToolErrorRef.current = onToolError;\n }, [onToolError]);\n\n // Update handlers when initial tools change\n useEffect(() => {\n toolHandlersRef.current = { ...toolHandlersRef.current, ...initialTools };\n }, [initialTools]);\n\n /**\n * Execute a client-side tool\n *\n * @param toolName - Name of the tool to execute\n * @param params - Parameters to pass to the tool\n * @returns Promise resolving to the tool's result\n *\n * @throws {Error} If the tool is not registered or execution fails\n *\n * @example\n * ```tsx\n * const result = await executeClientTool('search_products', {\n * query: 'laptop',\n * maxResults: 10\n * });\n * ```\n */\n const executeClientTool = useCallback(\n async <TResult = any>(\n toolName: string,\n params: any\n ): Promise<TResult> => {\n const startTime = Date.now();\n\n if (debug) {\n console.log(`[useAgentTools] Executing tool: ${toolName}`, params);\n }\n\n // Check if handler exists\n const handler = toolHandlersRef.current[toolName];\n if (!handler) {\n const error: AgentError = {\n code: \"TOOL_EXECUTION_FAILED\",\n message: `Tool handler not found: ${toolName}`,\n retryable: false,\n timestamp: Date.now(),\n details: { toolName, params },\n };\n\n if (onToolErrorRef.current) {\n onToolErrorRef.current(toolName, error);\n }\n\n throw new Error(error.message);\n }\n\n try {\n // Execute the tool handler\n const result = await handler(params);\n const executionTime = Date.now() - startTime;\n\n const executionResult: ToolExecutionResult<TResult> = {\n success: true,\n result,\n executionTime,\n };\n\n if (debug) {\n console.log(\n `[useAgentTools] Tool executed successfully: ${toolName}`,\n executionResult\n );\n }\n\n // Notify callback\n if (onToolExecutedRef.current) {\n onToolExecutedRef.current(toolName, executionResult);\n }\n\n return result;\n } catch (error) {\n const executionTime = Date.now() - startTime;\n const agentError: AgentError = {\n code: \"TOOL_EXECUTION_FAILED\",\n message:\n error instanceof Error\n ? error.message\n : \"Tool execution failed\",\n retryable: true,\n timestamp: Date.now(),\n details: { toolName, params, error },\n };\n\n const executionResult: ToolExecutionResult = {\n success: false,\n error: agentError,\n executionTime,\n };\n\n if (debug) {\n console.error(`[useAgentTools] Tool execution failed: ${toolName}`, agentError);\n }\n\n // Notify error callback\n if (onToolErrorRef.current) {\n onToolErrorRef.current(toolName, agentError);\n }\n\n // Notify execution callback\n if (onToolExecutedRef.current) {\n onToolExecutedRef.current(toolName, executionResult);\n }\n\n throw agentError;\n }\n },\n [debug]\n );\n\n /**\n * Register a new tool handler\n *\n * @param toolName - Name of the tool\n * @param handler - Handler function for the tool\n *\n * @example\n * ```tsx\n * registerTool('custom_tool', async (params) => {\n * return { result: 'success' };\n * });\n * ```\n */\n const registerTool = useCallback(\n (toolName: string, handler: ToolHandler) => {\n if (debug) {\n console.log(`[useAgentTools] Registering tool: ${toolName}`);\n }\n\n toolHandlersRef.current[toolName] = handler;\n\n // Optionally update tools state for UI purposes\n setTools((prev) => ({\n ...prev,\n [toolName]: {\n id: toolName,\n name: toolName,\n title: toolName,\n description: `Custom tool: ${toolName}`,\n inputSchema: { type: \"object\", properties: {} },\n configSchema: { type: \"object\", properties: {} },\n enabled: true,\n isSystem: false,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n },\n }));\n },\n [debug]\n );\n\n /**\n * Unregister a tool handler\n *\n * @param toolName - Name of the tool to unregister\n *\n * @example\n * ```tsx\n * unregisterTool('custom_tool');\n * ```\n */\n const unregisterTool = useCallback(\n (toolName: string) => {\n if (debug) {\n console.log(`[useAgentTools] Unregistering tool: ${toolName}`);\n }\n\n delete toolHandlersRef.current[toolName];\n\n setTools((prev) => {\n const newTools = { ...prev };\n delete newTools[toolName];\n return newTools;\n });\n },\n [debug]\n );\n\n /**\n * Check if a tool handler is registered\n *\n * @param toolName - Name of the tool\n * @returns True if the tool handler is registered\n *\n * @example\n * ```tsx\n * if (hasToolHandler('search_products')) {\n * // Tool is available\n * }\n * ```\n */\n const hasToolHandler = useCallback((toolName: string): boolean => {\n return toolName in toolHandlersRef.current;\n }, []);\n\n return {\n tools,\n executeClientTool,\n registerTool,\n unregisterTool,\n hasToolHandler,\n };\n}\n","/**\n * useAgent Hook\n *\n * The all-in-one hook for interacting with AI agents. Combines chat functionality,\n * tool execution, metadata management, CSAT surveys, and analytics tracking.\n *\n * This is the recommended hook for most use cases as it provides the complete\n * agent interaction experience out of the box.\n *\n * @example\n * ```tsx\n * const {\n * messages,\n * sendMessage,\n * isConnected,\n * executeClientTool,\n * metadata,\n * updateMetadata,\n * csatSurvey,\n * submitCSATResponse\n * } = useAgent({\n * agentId: 'my-agent-id',\n * orgId: 'my-org-id',\n * serverBaseUrl: 'wss://chat.example.com',\n * userEmail: 'user@example.com',\n * tools: {\n * 'search_products': async (params) => {\n * return await api.search(params.query);\n * }\n * }\n * });\n * ```\n *\n * @packageDocumentation\n */\n\nimport { useState, useCallback, useEffect, useRef } from \"react\";\nimport { Agent, CSATSurvey } from \"@elqnt/agents\";\nimport { useAgentChat } from \"../useAgentChat\";\nimport { useAgentTools } from \"../useAgentTools\";\nimport type {\n UseAgentConfig,\n UseAgentReturn,\n} from \"../../types\";\n\n/**\n * All-in-one hook for complete agent interaction\n *\n * Combines chat, tools, metadata, CSAT, and analytics into a single\n * convenient hook. This is the recommended starting point for most\n * agent implementations.\n *\n * @param config - Configuration object for the agent\n * @returns Object containing all agent interaction methods and state\n *\n * @public\n */\nexport function useAgent(config: UseAgentConfig): UseAgentReturn {\n const {\n agentId,\n tools: toolHandlers = {},\n initialMetadata = {},\n onCSATSubmit,\n debug = false,\n } = config;\n\n // State\n const [agent, setAgent] = useState<Agent | undefined>(undefined);\n const [metadata, setMetadata] = useState<Record<string, any>>(initialMetadata);\n const [csatSurvey, setCSATSurvey] = useState<CSATSurvey | undefined>(undefined);\n\n // Refs\n const onCSATSubmitRef = useRef(onCSATSubmit);\n\n // Update ref when callback changes\n useEffect(() => {\n onCSATSubmitRef.current = onCSATSubmit;\n }, [onCSATSubmit]);\n\n // Initialize chat functionality\n const chatHook = useAgentChat({\n ...config,\n onMessage: (event) => {\n // Handle CSAT survey events\n if (event.type === \"show_csat_survey\") {\n const survey = event.data?.survey as CSATSurvey;\n if (survey) {\n setCSATSurvey(survey);\n }\n }\n\n // Handle metadata updates\n if (event.type === \"sync_metadata_response\") {\n const newMetadata = event.data?.metadata;\n if (newMetadata) {\n setMetadata((prev) => ({ ...prev, ...newMetadata }));\n }\n }\n\n // Call the original onMessage if provided\n if (config.onMessage) {\n config.onMessage(event);\n }\n },\n onToolCall: (toolName, params) => {\n // Auto-execute client-side tools\n if (toolsHook.hasToolHandler(toolName)) {\n toolsHook\n .executeClientTool(toolName, params)\n .then((result) => {\n if (debug) {\n console.log(`[useAgent] Tool executed: ${toolName}`, result);\n }\n\n // Send result back to server\n const event = {\n type: \"tool_result\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey || \"\",\n userId: config.userEmail,\n data: {\n toolName,\n result,\n success: true,\n },\n };\n\n chatHook.sendMessage(JSON.stringify(event));\n })\n .catch((error) => {\n console.error(`[useAgent] Tool execution failed: ${toolName}`, error);\n\n // Send error back to server\n const event = {\n type: \"tool_result\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey || \"\",\n userId: config.userEmail,\n data: {\n toolName,\n error: error.message,\n success: false,\n },\n };\n\n chatHook.sendMessage(JSON.stringify(event));\n });\n }\n\n // Call the original onToolCall if provided\n if (config.onToolCall) {\n config.onToolCall(toolName, params);\n }\n },\n });\n\n // Initialize tools functionality\n const toolsHook = useAgentTools({\n tools: toolHandlers,\n debug,\n });\n\n /**\n * Update chat metadata\n *\n * @param updates - Partial metadata updates to apply\n *\n * @example\n * ```tsx\n * updateMetadata({\n * cartItems: [...metadata.cartItems, newItem],\n * lastActivity: Date.now()\n * });\n * ```\n */\n const updateMetadata = useCallback(\n (updates: Record<string, any>) => {\n const newMetadata = { ...metadata, ...updates };\n setMetadata(newMetadata);\n\n // Send metadata update to server if chat is active\n if (chatHook.chatKey && chatHook.isConnected) {\n const event = {\n type: \"update_metadata\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey,\n userId: config.userEmail,\n data: { metadata: newMetadata },\n };\n\n chatHook.sendMessage(JSON.stringify(event)).catch((error) => {\n console.error(\"[useAgent] Failed to update metadata:\", error);\n });\n }\n },\n [metadata, chatHook, config.orgId, config.userEmail]\n );\n\n /**\n * Clear all metadata\n *\n * @example\n * ```tsx\n * clearMetadata();\n * ```\n */\n const clearMetadata = useCallback(() => {\n setMetadata({});\n\n if (chatHook.chatKey && chatHook.isConnected) {\n const event = {\n type: \"update_metadata\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey,\n userId: config.userEmail,\n data: { metadata: {} },\n };\n\n chatHook.sendMessage(JSON.stringify(event)).catch((error) => {\n console.error(\"[useAgent] Failed to clear metadata:\", error);\n });\n }\n }, [chatHook, config.orgId, config.userEmail]);\n\n /**\n * Submit CSAT survey response\n *\n * @param response - CSAT response data\n *\n * @example\n * ```tsx\n * submitCSATResponse({\n * answers: [{ question: 'How satisfied?', rating: 5 }],\n * overallRating: 5\n * });\n * ```\n */\n const submitCSATResponse = useCallback(\n (response: {\n answers: { question: string; rating?: number; comment?: string }[];\n overallRating: number;\n }) => {\n if (!csatSurvey) {\n console.warn(\"[useAgent] No CSAT survey available\");\n return;\n }\n\n const event = {\n type: \"csat_response\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey || \"\",\n userId: config.userEmail,\n data: {\n response,\n },\n };\n\n chatHook.sendMessage(JSON.stringify(event)).then(() => {\n // Clear survey after submission\n setCSATSurvey(undefined);\n\n // Call callback if provided\n if (onCSATSubmitRef.current) {\n onCSATSubmitRef.current(response);\n }\n }).catch((error) => {\n console.error(\"[useAgent] Failed to submit CSAT response:\", error);\n });\n },\n [csatSurvey, chatHook, config.orgId, config.userEmail]\n );\n\n /**\n * Dismiss CSAT survey without submitting\n *\n * @example\n * ```tsx\n * dismissCSAT();\n * ```\n */\n const dismissCSAT = useCallback(() => {\n setCSATSurvey(undefined);\n }, []);\n\n /**\n * Log analytics event\n *\n * @param eventData - Event data to log\n *\n * @example\n * ```tsx\n * logEvent({\n * eventType: 'product_viewed',\n * productId: '123',\n * source: 'agent'\n * });\n * ```\n */\n const logEvent = useCallback(\n async (eventData: any): Promise<void> => {\n if (!config.features?.analytics) {\n return;\n }\n\n const event = {\n type: \"analytics_event\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey || \"\",\n userId: config.userEmail,\n data: {\n ...eventData,\n timestamp: Date.now(),\n agentId,\n },\n };\n\n try {\n await chatHook.sendMessage(JSON.stringify(event));\n } catch (error) {\n console.error(\"[useAgent] Failed to log analytics event:\", error);\n }\n },\n [config.features, config.orgId, config.userEmail, chatHook, agentId]\n );\n\n // Fetch agent configuration if not provided\n useEffect(() => {\n // TODO: Implement agent fetching from backend\n // For now, create a minimal agent object\n setAgent({\n id: agentId,\n orgId: config.orgId,\n product: \"hub\",\n type: \"react\",\n subType: \"react\",\n name: agentId,\n title: \"AI Agent\",\n description: \"AI-powered assistant\",\n status: \"active\",\n version: \"1.0.0\",\n provider: \"azure-openai\",\n model: \"gpt-4.1\",\n temperature: 0.7,\n maxTokens: 4000,\n systemPrompt: \"\",\n isDefault: false,\n isPublic: false,\n csatConfig: {\n enabled: false,\n survey: {\n questions: [],\n timeThreshold: 5,\n closeOnResponse: true,\n },\n },\n handoffConfig: {\n enabled: false,\n triggerKeywords: [],\n handoffMessage: \"\",\n },\n configSchema: {\n type: \"object\",\n properties: {},\n },\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n createdBy: config.userEmail,\n updatedBy: config.userEmail,\n } as Agent);\n }, [agentId, config.orgId]);\n\n return {\n // Agent info\n agent,\n\n // Chat functionality (from useAgentChat)\n messages: chatHook.messages,\n currentChat: chatHook.currentChat,\n users: chatHook.users,\n currentChatUser: chatHook.currentChatUser,\n connectionState: chatHook.connectionState,\n isConnected: chatHook.isConnected,\n isWaiting: chatHook.isWaiting,\n isWaitingForAgent: chatHook.isWaitingForAgent,\n status: chatHook.status,\n chatKey: chatHook.chatKey,\n error: chatHook.error,\n sendMessage: chatHook.sendMessage,\n startNewChat: chatHook.startNewChat,\n endChat: chatHook.endChat,\n resetChat: chatHook.resetChat,\n disconnect: chatHook.disconnect,\n clearError: chatHook.clearError,\n\n // Tools functionality (from useAgentTools)\n tools: toolsHook.tools,\n executeClientTool: toolsHook.executeClientTool,\n registerTool: toolsHook.registerTool,\n unregisterTool: toolsHook.unregisterTool,\n hasToolHandler: toolsHook.hasToolHandler,\n\n // Metadata management\n metadata,\n updateMetadata,\n clearMetadata,\n\n // CSAT\n csatSurvey,\n submitCSATResponse,\n dismissCSAT,\n\n // Analytics\n logEvent,\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/hooks/useAgentChat/useAgentChat.ts","../src/hooks/useAgentTools/useAgentTools.ts","../src/hooks/useAgent/useAgent.ts"],"names":["error","useState","useRef","useEffect","useCallback"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * useAgentChat Hook\n *\n * A developer-friendly hook for connecting to and interacting with an AI agent via WebSocket.\n * This hook provides a simplified interface for chat functionality while maintaining\n * full control over the connection and message flow.\n *\n * @example\n * ```tsx\n * const {\n * messages,\n * sendMessage,\n * isConnected,\n * startNewChat\n * } = useAgentChat({\n * agentId: 'my-agent-id',\n * orgId: 'my-org-id',\n * serverBaseUrl: 'wss://chat.example.com',\n * userEmail: 'user@example.com'\n * });\n * ```\n *\n * @packageDocumentation\n */\n\nimport { useState, useCallback, useEffect, useRef } from \"react\";\nimport {\n useWebSocketChatBase,\n UseWebSocketChatBaseReturn,\n ChatEvent,\n ChatMessage,\n Chat,\n ChatUser,\n} from \"@elqnt/chat\";\nimport type {\n UseAgentChatConfig,\n UseAgentChatReturn,\n ConnectionState,\n AgentError,\n} from \"../../types\";\n\n/**\n * Hook for agent chat functionality\n *\n * Provides a simplified interface for interacting with AI agents via WebSocket,\n * including automatic connection management, message handling, and state management.\n *\n * @param config - Configuration object for the agent chat\n * @returns Object containing chat state and methods\n *\n * @public\n */\nexport function useAgentChat(\n config: UseAgentChatConfig\n): UseAgentChatReturn {\n const {\n agentId,\n orgId,\n serverBaseUrl,\n userEmail,\n features = {},\n onMessage,\n onConnect,\n onDisconnect,\n onToolCall,\n autoReconnect = true,\n reconnectDelay = 3000,\n debug = false,\n } = config;\n\n // State management\n const [messages, setMessages] = useState<ChatMessage[]>([]);\n const [currentChat, setCurrentChat] = useState<Chat | undefined>(undefined);\n const [users, setUsers] = useState<ChatUser[]>([]);\n const [currentChatUser, setCurrentChatUser] = useState<\n ChatUser | undefined\n >(undefined);\n const [isWaiting, setIsWaiting] = useState(false);\n const [isWaitingForAgent, setIsWaitingForAgent] = useState(false);\n const [chatKey, setChatKey] = useState<string | undefined>(undefined);\n\n // Refs\n const onMessageRef = useRef(onMessage);\n const onToolCallRef = useRef(onToolCall);\n\n // Update refs when callbacks change\n useEffect(() => {\n onMessageRef.current = onMessage;\n }, [onMessage]);\n\n useEffect(() => {\n onToolCallRef.current = onToolCall;\n }, [onToolCall]);\n\n // Message handler\n const handleMessage = useCallback(\n (event: ChatEvent) => {\n if (debug) {\n console.log(\"[useAgentChat] Received event:\", event.type, event);\n }\n\n // Handle different event types\n switch (event.type) {\n case \"new_chat_created\":\n const newChatKey = event.data?.chatKey as string;\n if (newChatKey) {\n setChatKey(newChatKey);\n }\n break;\n\n case \"load_chat_response\":\n const chat = event.data?.chat as Chat;\n if (chat) {\n setCurrentChat(chat);\n setChatKey(chat.key);\n setMessages(chat.messages || []);\n setUsers(chat.users || []);\n\n // Find current user\n const currentUser = chat.users?.find((u) => u.email === userEmail);\n setCurrentChatUser(currentUser);\n }\n break;\n\n case \"message\":\n const message = event.message;\n if (message) {\n setMessages((prev) => [...prev, message]);\n\n // Check if it's an agent message (stop waiting)\n if (message.role === \"ai\") {\n setIsWaiting(false);\n }\n }\n break;\n\n case \"typing\":\n // Agent is typing, start waiting\n setIsWaiting(true);\n break;\n\n case \"waiting_for_agent\":\n setIsWaitingForAgent(true);\n break;\n\n case \"agent_chat_assigned\":\n setIsWaitingForAgent(false);\n break;\n\n case \"chat_ended\":\n setChatKey(undefined);\n setCurrentChat(undefined);\n setMessages([]);\n setUsers([]);\n setCurrentChatUser(undefined);\n setIsWaiting(false);\n setIsWaitingForAgent(false);\n break;\n }\n\n // Call the user's onMessage callback\n if (onMessageRef.current) {\n onMessageRef.current(event);\n }\n },\n [debug, userEmail]\n );\n\n // Initialize WebSocket connection using the base hook\n const baseHook = useWebSocketChatBase({\n serverBaseUrl,\n orgId,\n clientType: \"customer\",\n product: \"hub\", // Default product, can be made configurable\n onMessage: handleMessage,\n retryConfig: autoReconnect\n ? {\n maxRetries: 10,\n intervals: [reconnectDelay, reconnectDelay * 2, reconnectDelay * 3],\n }\n : { maxRetries: 0 },\n debug,\n });\n\n // Connection state tracking\n useEffect(() => {\n if (baseHook.connectionState === \"connected\" && onConnect) {\n onConnect();\n } else if (baseHook.connectionState === \"disconnected\" && onDisconnect) {\n onDisconnect();\n }\n }, [baseHook.connectionState, onConnect, onDisconnect]);\n\n /**\n * Send a text message to the agent\n */\n const sendMessage = useCallback(\n async (content: string, attachments?: any[]): Promise<void> => {\n if (!chatKey) {\n throw new Error(\"No active chat session. Call startNewChat() first.\");\n }\n\n if (!content.trim()) {\n throw new Error(\"Message content cannot be empty.\");\n }\n\n setIsWaiting(true);\n\n const now = Date.now();\n const event: Omit<ChatEvent, \"timestamp\"> = {\n type: \"message\",\n orgId,\n chatKey,\n userId: userEmail,\n message: {\n id: `msg-${now}-${Math.random().toString(36).substr(2, 9)}`,\n role: \"user\",\n content,\n time: now,\n status: \"sending\",\n senderId: userEmail,\n createdAt: now,\n attachments,\n },\n data: {},\n };\n\n try {\n await baseHook.sendMessage(event, userEmail);\n } catch (error) {\n setIsWaiting(false);\n throw error;\n }\n },\n [chatKey, orgId, userEmail, baseHook]\n );\n\n /**\n * Start a new chat session\n */\n const startNewChat = useCallback(async (): Promise<void> => {\n if (debug) {\n console.log(\"[useAgentChat] Starting new chat...\");\n }\n\n // Connect if not already connected\n if (!baseHook.isConnected) {\n await baseHook.connect(userEmail);\n }\n\n // Request new chat from server\n const newChatKey = await baseHook.startNewChat(userEmail, {\n agentId,\n product: \"hub\",\n });\n\n setChatKey(newChatKey);\n setMessages([]);\n setUsers([]);\n setIsWaiting(false);\n setIsWaitingForAgent(false);\n\n if (debug) {\n console.log(\"[useAgentChat] New chat created:\", newChatKey);\n }\n }, [agentId, userEmail, baseHook, debug]);\n\n /**\n * End the current chat session\n */\n const endChat = useCallback(() => {\n if (!chatKey) return;\n\n const event: Omit<ChatEvent, \"timestamp\"> = {\n type: \"end_chat\",\n orgId,\n chatKey,\n userId: userEmail,\n data: {},\n };\n\n baseHook.sendMessage(event, userEmail);\n setChatKey(undefined);\n setMessages([]);\n setCurrentChat(undefined);\n setUsers([]);\n setIsWaiting(false);\n setIsWaitingForAgent(false);\n }, [chatKey, orgId, userEmail, baseHook]);\n\n /**\n * Reset the chat state (soft reset without disconnecting)\n */\n const resetChat = useCallback(() => {\n setChatKey(undefined);\n setMessages([]);\n setCurrentChat(undefined);\n setUsers([]);\n setCurrentChatUser(undefined);\n setIsWaiting(false);\n setIsWaitingForAgent(false);\n }, []);\n\n /**\n * Clear error state\n */\n const clearError = useCallback(() => {\n baseHook.clearError();\n }, [baseHook]);\n\n // Auto-connect on mount\n useEffect(() => {\n baseHook.connect(userEmail).catch((error) => {\n console.error(\"[useAgentChat] Failed to auto-connect:\", error);\n });\n }, []);\n\n // Map WebSocket error to AgentError\n const error: AgentError | undefined = baseHook.error\n ? {\n code: baseHook.error.code,\n message: baseHook.error.message,\n retryable: baseHook.error.retryable,\n timestamp: baseHook.error.timestamp,\n }\n : undefined;\n\n return {\n // Chat state\n messages,\n currentChat,\n users,\n currentChatUser,\n connectionState: baseHook.connectionState as ConnectionState,\n isConnected: baseHook.isConnected,\n isWaiting,\n isWaitingForAgent,\n status: currentChat?.status,\n chatKey,\n error,\n\n // Chat actions\n sendMessage,\n startNewChat,\n endChat,\n resetChat,\n disconnect: baseHook.disconnect,\n clearError,\n };\n}\n","/**\n * useAgentTools Hook\n *\n * A hook for executing client-side tools in response to agent tool calls.\n * Provides a registry for tool handlers and execution management.\n *\n * @example\n * ```tsx\n * const { executeClientTool, registerTool } = useAgentTools({\n * tools: {\n * 'search_products': async ({ query }) => {\n * const results = await api.search(query);\n * return { products: results };\n * },\n * 'track_order': async ({ orderId }) => {\n * const order = await api.getOrder(orderId);\n * return { status: order.status };\n * }\n * },\n * onToolExecuted: (toolName, result) => {\n * console.log(`Tool ${toolName} executed:`, result);\n * }\n * });\n * ```\n *\n * @packageDocumentation\n */\n\nimport { useState, useCallback, useRef, useEffect } from \"react\";\nimport { Tool } from \"@elqnt/agents\";\nimport type {\n UseAgentToolsConfig,\n UseAgentToolsReturn,\n ToolHandler,\n ToolHandlers,\n ToolExecutionResult,\n AgentError,\n} from \"../../types\";\n\n/**\n * Hook for managing and executing client-side agent tools\n *\n * Provides a registry for tool handlers and methods to execute tools\n * in response to agent requests. Supports dynamic tool registration\n * and execution tracking.\n *\n * @param config - Configuration object for agent tools\n * @returns Object containing tool management methods\n *\n * @public\n */\nexport function useAgentTools(\n config: UseAgentToolsConfig = {}\n): UseAgentToolsReturn {\n const {\n tools: initialTools = {},\n onToolExecuted,\n onToolError,\n debug = false,\n } = config;\n\n // State\n const [tools, setTools] = useState<Record<string, Tool>>({});\n\n // Refs for tool handlers\n const toolHandlersRef = useRef<ToolHandlers>(initialTools);\n const onToolExecutedRef = useRef(onToolExecuted);\n const onToolErrorRef = useRef(onToolError);\n\n // Update refs when callbacks change\n useEffect(() => {\n onToolExecutedRef.current = onToolExecuted;\n }, [onToolExecuted]);\n\n useEffect(() => {\n onToolErrorRef.current = onToolError;\n }, [onToolError]);\n\n // Update handlers when initial tools change\n useEffect(() => {\n toolHandlersRef.current = { ...toolHandlersRef.current, ...initialTools };\n }, [initialTools]);\n\n /**\n * Execute a client-side tool\n *\n * @param toolName - Name of the tool to execute\n * @param params - Parameters to pass to the tool\n * @returns Promise resolving to the tool's result\n *\n * @throws {Error} If the tool is not registered or execution fails\n *\n * @example\n * ```tsx\n * const result = await executeClientTool('search_products', {\n * query: 'laptop',\n * maxResults: 10\n * });\n * ```\n */\n const executeClientTool = useCallback(\n async <TResult = any>(\n toolName: string,\n params: any\n ): Promise<TResult> => {\n const startTime = Date.now();\n\n if (debug) {\n console.log(`[useAgentTools] Executing tool: ${toolName}`, params);\n }\n\n // Check if handler exists\n const handler = toolHandlersRef.current[toolName];\n if (!handler) {\n const error: AgentError = {\n code: \"TOOL_EXECUTION_FAILED\",\n message: `Tool handler not found: ${toolName}`,\n retryable: false,\n timestamp: Date.now(),\n details: { toolName, params },\n };\n\n if (onToolErrorRef.current) {\n onToolErrorRef.current(toolName, error);\n }\n\n throw new Error(error.message);\n }\n\n try {\n // Execute the tool handler\n const result = await handler(params);\n const executionTime = Date.now() - startTime;\n\n const executionResult: ToolExecutionResult<TResult> = {\n success: true,\n result,\n executionTime,\n };\n\n if (debug) {\n console.log(\n `[useAgentTools] Tool executed successfully: ${toolName}`,\n executionResult\n );\n }\n\n // Notify callback\n if (onToolExecutedRef.current) {\n onToolExecutedRef.current(toolName, executionResult);\n }\n\n return result;\n } catch (error) {\n const executionTime = Date.now() - startTime;\n const agentError: AgentError = {\n code: \"TOOL_EXECUTION_FAILED\",\n message:\n error instanceof Error\n ? error.message\n : \"Tool execution failed\",\n retryable: true,\n timestamp: Date.now(),\n details: { toolName, params, error },\n };\n\n const executionResult: ToolExecutionResult = {\n success: false,\n error: agentError,\n executionTime,\n };\n\n if (debug) {\n console.error(`[useAgentTools] Tool execution failed: ${toolName}`, agentError);\n }\n\n // Notify error callback\n if (onToolErrorRef.current) {\n onToolErrorRef.current(toolName, agentError);\n }\n\n // Notify execution callback\n if (onToolExecutedRef.current) {\n onToolExecutedRef.current(toolName, executionResult);\n }\n\n throw agentError;\n }\n },\n [debug]\n );\n\n /**\n * Register a new tool handler\n *\n * @param toolName - Name of the tool\n * @param handler - Handler function for the tool\n *\n * @example\n * ```tsx\n * registerTool('custom_tool', async (params) => {\n * return { result: 'success' };\n * });\n * ```\n */\n const registerTool = useCallback(\n (toolName: string, handler: ToolHandler) => {\n if (debug) {\n console.log(`[useAgentTools] Registering tool: ${toolName}`);\n }\n\n toolHandlersRef.current[toolName] = handler;\n\n // Optionally update tools state for UI purposes\n setTools((prev) => ({\n ...prev,\n [toolName]: {\n id: toolName,\n name: toolName,\n title: toolName,\n description: `Custom tool: ${toolName}`,\n inputSchema: { type: \"object\", properties: {} },\n configSchema: { type: \"object\", properties: {} },\n enabled: true,\n isSystem: false,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n },\n }));\n },\n [debug]\n );\n\n /**\n * Unregister a tool handler\n *\n * @param toolName - Name of the tool to unregister\n *\n * @example\n * ```tsx\n * unregisterTool('custom_tool');\n * ```\n */\n const unregisterTool = useCallback(\n (toolName: string) => {\n if (debug) {\n console.log(`[useAgentTools] Unregistering tool: ${toolName}`);\n }\n\n delete toolHandlersRef.current[toolName];\n\n setTools((prev) => {\n const newTools = { ...prev };\n delete newTools[toolName];\n return newTools;\n });\n },\n [debug]\n );\n\n /**\n * Check if a tool handler is registered\n *\n * @param toolName - Name of the tool\n * @returns True if the tool handler is registered\n *\n * @example\n * ```tsx\n * if (hasToolHandler('search_products')) {\n * // Tool is available\n * }\n * ```\n */\n const hasToolHandler = useCallback((toolName: string): boolean => {\n return toolName in toolHandlersRef.current;\n }, []);\n\n return {\n tools,\n executeClientTool,\n registerTool,\n unregisterTool,\n hasToolHandler,\n };\n}\n","/**\n * useAgent Hook\n *\n * The all-in-one hook for interacting with AI agents. Combines chat functionality,\n * tool execution, metadata management, CSAT surveys, and analytics tracking.\n *\n * This is the recommended hook for most use cases as it provides the complete\n * agent interaction experience out of the box.\n *\n * @example\n * ```tsx\n * const {\n * messages,\n * sendMessage,\n * isConnected,\n * executeClientTool,\n * metadata,\n * updateMetadata,\n * csatSurvey,\n * submitCSATResponse\n * } = useAgent({\n * agentId: 'my-agent-id',\n * orgId: 'my-org-id',\n * serverBaseUrl: 'wss://chat.example.com',\n * userEmail: 'user@example.com',\n * tools: {\n * 'search_products': async (params) => {\n * return await api.search(params.query);\n * }\n * }\n * });\n * ```\n *\n * @packageDocumentation\n */\n\nimport { useState, useCallback, useEffect, useRef } from \"react\";\nimport { Agent, CSATSurvey } from \"@elqnt/agents\";\nimport { useAgentChat } from \"../useAgentChat\";\nimport { useAgentTools } from \"../useAgentTools\";\nimport type {\n UseAgentConfig,\n UseAgentReturn,\n} from \"../../types\";\n\n/**\n * All-in-one hook for complete agent interaction\n *\n * Combines chat, tools, metadata, CSAT, and analytics into a single\n * convenient hook. This is the recommended starting point for most\n * agent implementations.\n *\n * @param config - Configuration object for the agent\n * @returns Object containing all agent interaction methods and state\n *\n * @public\n */\nexport function useAgent(config: UseAgentConfig): UseAgentReturn {\n const {\n agentId,\n tools: toolHandlers = {},\n initialMetadata = {},\n onCSATSubmit,\n debug = false,\n } = config;\n\n // State\n const [agent, setAgent] = useState<Agent | undefined>(undefined);\n const [metadata, setMetadata] = useState<Record<string, any>>(initialMetadata);\n const [csatSurvey, setCSATSurvey] = useState<CSATSurvey | undefined>(undefined);\n\n // Refs\n const onCSATSubmitRef = useRef(onCSATSubmit);\n\n // Update ref when callback changes\n useEffect(() => {\n onCSATSubmitRef.current = onCSATSubmit;\n }, [onCSATSubmit]);\n\n // Initialize chat functionality\n const chatHook = useAgentChat({\n ...config,\n onMessage: (event) => {\n // Handle CSAT survey events\n if (event.type === \"show_csat_survey\") {\n const survey = event.data?.survey as CSATSurvey;\n if (survey) {\n setCSATSurvey(survey);\n }\n }\n\n // Handle metadata updates\n if (event.type === \"sync_metadata_response\") {\n const newMetadata = event.data?.metadata;\n if (newMetadata) {\n setMetadata((prev) => ({ ...prev, ...newMetadata }));\n }\n }\n\n // Call the original onMessage if provided\n if (config.onMessage) {\n config.onMessage(event);\n }\n },\n onToolCall: (toolName, params) => {\n // Auto-execute client-side tools\n if (toolsHook.hasToolHandler(toolName)) {\n toolsHook\n .executeClientTool(toolName, params)\n .then((result) => {\n if (debug) {\n console.log(`[useAgent] Tool executed: ${toolName}`, result);\n }\n\n // Send result back to server\n const event = {\n type: \"tool_result\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey || \"\",\n userId: config.userEmail,\n data: {\n toolName,\n result,\n success: true,\n },\n };\n\n chatHook.sendMessage(JSON.stringify(event));\n })\n .catch((error) => {\n console.error(`[useAgent] Tool execution failed: ${toolName}`, error);\n\n // Send error back to server\n const event = {\n type: \"tool_result\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey || \"\",\n userId: config.userEmail,\n data: {\n toolName,\n error: error.message,\n success: false,\n },\n };\n\n chatHook.sendMessage(JSON.stringify(event));\n });\n }\n\n // Call the original onToolCall if provided\n if (config.onToolCall) {\n config.onToolCall(toolName, params);\n }\n },\n });\n\n // Initialize tools functionality\n const toolsHook = useAgentTools({\n tools: toolHandlers,\n debug,\n });\n\n /**\n * Update chat metadata\n *\n * @param updates - Partial metadata updates to apply\n *\n * @example\n * ```tsx\n * updateMetadata({\n * cartItems: [...metadata.cartItems, newItem],\n * lastActivity: Date.now()\n * });\n * ```\n */\n const updateMetadata = useCallback(\n (updates: Record<string, any>) => {\n const newMetadata = { ...metadata, ...updates };\n setMetadata(newMetadata);\n\n // Send metadata update to server if chat is active\n if (chatHook.chatKey && chatHook.isConnected) {\n const event = {\n type: \"update_metadata\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey,\n userId: config.userEmail,\n data: { metadata: newMetadata },\n };\n\n chatHook.sendMessage(JSON.stringify(event)).catch((error) => {\n console.error(\"[useAgent] Failed to update metadata:\", error);\n });\n }\n },\n [metadata, chatHook, config.orgId, config.userEmail]\n );\n\n /**\n * Clear all metadata\n *\n * @example\n * ```tsx\n * clearMetadata();\n * ```\n */\n const clearMetadata = useCallback(() => {\n setMetadata({});\n\n if (chatHook.chatKey && chatHook.isConnected) {\n const event = {\n type: \"update_metadata\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey,\n userId: config.userEmail,\n data: { metadata: {} },\n };\n\n chatHook.sendMessage(JSON.stringify(event)).catch((error) => {\n console.error(\"[useAgent] Failed to clear metadata:\", error);\n });\n }\n }, [chatHook, config.orgId, config.userEmail]);\n\n /**\n * Submit CSAT survey response\n *\n * @param response - CSAT response data\n *\n * @example\n * ```tsx\n * submitCSATResponse({\n * answers: [{ question: 'How satisfied?', rating: 5 }],\n * overallRating: 5\n * });\n * ```\n */\n const submitCSATResponse = useCallback(\n (response: {\n answers: { question: string; rating?: number; comment?: string }[];\n overallRating: number;\n }) => {\n if (!csatSurvey) {\n console.warn(\"[useAgent] No CSAT survey available\");\n return;\n }\n\n const event = {\n type: \"csat_response\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey || \"\",\n userId: config.userEmail,\n data: {\n response,\n },\n };\n\n chatHook.sendMessage(JSON.stringify(event)).then(() => {\n // Clear survey after submission\n setCSATSurvey(undefined);\n\n // Call callback if provided\n if (onCSATSubmitRef.current) {\n onCSATSubmitRef.current(response);\n }\n }).catch((error) => {\n console.error(\"[useAgent] Failed to submit CSAT response:\", error);\n });\n },\n [csatSurvey, chatHook, config.orgId, config.userEmail]\n );\n\n /**\n * Dismiss CSAT survey without submitting\n *\n * @example\n * ```tsx\n * dismissCSAT();\n * ```\n */\n const dismissCSAT = useCallback(() => {\n setCSATSurvey(undefined);\n }, []);\n\n /**\n * Log analytics event\n *\n * @param eventData - Event data to log\n *\n * @example\n * ```tsx\n * logEvent({\n * eventType: 'product_viewed',\n * productId: '123',\n * source: 'agent'\n * });\n * ```\n */\n const logEvent = useCallback(\n async (eventData: any): Promise<void> => {\n if (!config.features?.analytics) {\n return;\n }\n\n const event = {\n type: \"analytics_event\",\n orgId: config.orgId,\n chatKey: chatHook.chatKey || \"\",\n userId: config.userEmail,\n data: {\n ...eventData,\n timestamp: Date.now(),\n agentId,\n },\n };\n\n try {\n await chatHook.sendMessage(JSON.stringify(event));\n } catch (error) {\n console.error(\"[useAgent] Failed to log analytics event:\", error);\n }\n },\n [config.features, config.orgId, config.userEmail, chatHook, agentId]\n );\n\n // Fetch agent configuration if not provided\n useEffect(() => {\n // TODO: Implement agent fetching from backend\n // For now, create a minimal agent object\n setAgent({\n id: agentId,\n orgId: config.orgId,\n product: \"hub\",\n type: \"react\",\n subType: \"react\",\n name: agentId,\n title: \"AI Agent\",\n description: \"AI-powered assistant\",\n status: \"active\",\n version: \"1.0.0\",\n provider: \"azure-openai\",\n model: \"gpt-4.1\",\n temperature: 0.7,\n maxTokens: 4000,\n systemPrompt: \"\",\n isDefault: false,\n isPublic: false,\n csatConfig: {\n enabled: false,\n survey: {\n questions: [],\n timeThreshold: 5,\n closeOnResponse: true,\n },\n },\n handoffConfig: {\n enabled: false,\n triggerKeywords: [],\n handoffMessage: \"\",\n },\n configSchema: {\n type: \"object\",\n properties: {},\n },\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n createdBy: config.userEmail,\n updatedBy: config.userEmail,\n } as Agent);\n }, [agentId, config.orgId]);\n\n return {\n // Agent info\n agent,\n\n // Chat functionality (from useAgentChat)\n messages: chatHook.messages,\n currentChat: chatHook.currentChat,\n users: chatHook.users,\n currentChatUser: chatHook.currentChatUser,\n connectionState: chatHook.connectionState,\n isConnected: chatHook.isConnected,\n isWaiting: chatHook.isWaiting,\n isWaitingForAgent: chatHook.isWaitingForAgent,\n status: chatHook.status,\n chatKey: chatHook.chatKey,\n error: chatHook.error,\n sendMessage: chatHook.sendMessage,\n startNewChat: chatHook.startNewChat,\n endChat: chatHook.endChat,\n resetChat: chatHook.resetChat,\n disconnect: chatHook.disconnect,\n clearError: chatHook.clearError,\n\n // Tools functionality (from useAgentTools)\n tools: toolsHook.tools,\n executeClientTool: toolsHook.executeClientTool,\n registerTool: toolsHook.registerTool,\n unregisterTool: toolsHook.unregisterTool,\n hasToolHandler: toolsHook.hasToolHandler,\n\n // Metadata management\n metadata,\n updateMetadata,\n clearMetadata,\n\n // CSAT\n csatSurvey,\n submitCSATResponse,\n dismissCSAT,\n\n // Analytics\n logEvent,\n };\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elqnt/agent-sdk",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "Eloquent Agent SDK - Build custom agent UIs with ease",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",