'use client' import { useMemo } from 'react' import { useCompliance } from './hooks-core' // ============================================================================= // RAG HOOKS // ============================================================================= export function useRAG() { const { rag } = useCompliance() return useMemo( () => ({ search: rag.search.bind(rag), searchByRegulation: rag.searchByRegulation.bind(rag), searchByArticle: rag.searchByArticle.bind(rag), ask: rag.ask.bind(rag), askAboutRegulation: rag.askAboutRegulation.bind(rag), explainArticle: rag.explainArticle.bind(rag), checkCompliance: rag.checkCompliance.bind(rag), getQuickAnswer: rag.getQuickAnswer.bind(rag), findRelevantArticles: rag.findRelevantArticles.bind(rag), availableRegulations: rag.getAvailableRegulations(), chatHistory: rag.getChatHistory(), clearChatHistory: rag.clearChatHistory.bind(rag), startNewSession: rag.startNewSession.bind(rag), }), [rag] ) } // ============================================================================= // SECURITY HOOKS // ============================================================================= export function useSecurity() { const { security, state } = useCompliance() return useMemo( () => ({ // SBOM sbom: state.sbom, components: security.getComponents(), vulnerableComponents: security.getVulnerableComponents(), licenseSummary: security.getLicenseSummary(), // Issues issues: state.securityIssues, openIssues: security.getOpenIssues(), criticalIssues: security.getCriticalIssues(), getIssuesBySeverity: security.getIssuesBySeverity.bind(security), getIssuesByTool: security.getIssuesByTool.bind(security), // Backlog backlog: state.securityBacklog, overdueBacklogItems: security.getOverdueBacklogItems(), // Scanning startScan: security.startScan.bind(security), getScanResult: security.getScanResult.bind(security), lastScanResult: security.getLastScanResult(), // Summary summary: security.getSecuritySummary(), securityScore: security.getSecurityScore(), availableTools: security.getAvailableTools(), }), [security, state] ) }