@omiron33/omi-neuron-web 0.1.0 → 0.1.2
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/README.md +6 -2
- package/dist/NeuronWeb-DG5ICk2K.d.cts +113 -0
- package/dist/NeuronWeb-DbcYoeQE.d.ts +113 -0
- package/dist/api/index.cjs +32 -32
- package/dist/api/index.js +1 -1
- package/dist/{chunk-XNR42GCJ.js → chunk-6LW4KNAU.js} +2 -2
- package/dist/{chunk-XNR42GCJ.js.map → chunk-6LW4KNAU.js.map} +1 -1
- package/dist/chunk-GPDX3O37.js +1194 -0
- package/dist/chunk-GPDX3O37.js.map +1 -0
- package/dist/chunk-KC7V76I3.cjs +1220 -0
- package/dist/chunk-KC7V76I3.cjs.map +1 -0
- package/dist/{chunk-RTSFO7BW.cjs → chunk-OBZGUYGW.cjs} +2 -2
- package/dist/{chunk-RTSFO7BW.cjs.map → chunk-OBZGUYGW.cjs.map} +1 -1
- package/dist/cli/index.cjs +4 -4
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.js +4 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/index.cjs +51 -46
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/visualization/index.cjs +21 -478
- package/dist/visualization/index.cjs.map +1 -1
- package/dist/visualization/index.d.cts +29 -77
- package/dist/visualization/index.d.ts +29 -77
- package/dist/visualization/index.js +1 -458
- package/dist/visualization/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/schemas/cluster.ts","../src/core/events/helpers.ts","../src/core/events/middleware/logging.ts","../src/core/events/middleware/validation.ts","../src/core/analysis/data-processor.ts","../src/config/index.ts","../src/react/context.ts","../src/react/hooks/useNeuronContext.ts","../src/react/hooks/useNeuronGraph.ts","../src/react/hooks/useNeuronNodes.ts","../src/react/hooks/useNeuronAnalysis.ts","../src/react/hooks/useNeuronSettings.ts","../src/react/hooks/useNeuronSearch.ts","../src/react/hooks/useNeuronEvents.ts","../src/react/api-client.ts","../src/react/NeuronWebProvider.tsx","../src/index.ts"],"names":["useState","useCallback","useEffect"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from 'zod';\n\nexport const clusteringConfigSchema = z.object({\n algorithm: z.enum(['kmeans', 'dbscan', 'hierarchical']),\n clusterCount: z.coerce.number().int().min(1).optional(),\n minClusterSize: z.coerce.number().int().min(1).optional(),\n similarityThreshold: z.coerce.number().min(0).max(1).optional(),\n epsilon: z.coerce.number().min(0).optional(),\n minSamples: z.coerce.number().int().min(1).optional(),\n});\n\nexport const clusterCreateSchema = z.object({\n label: z.string().min(1).max(255),\n clusterType: z.string().max(100).optional(),\n centroid: z.array(z.number()).optional(),\n memberCount: z.number().int().min(0).optional(),\n avgSimilarity: z.number().min(0).max(1).optional(),\n cohesion: z.number().min(0).max(1).optional(),\n description: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const clusterUpdateSchema = clusterCreateSchema.partial();\n\nexport type ClusteringConfigInput = z.infer<typeof clusteringConfigSchema>;\nexport type ClusterCreateInput = z.infer<typeof clusterCreateSchema>;\nexport type ClusterUpdateInput = z.infer<typeof clusterUpdateSchema>;\n","import type {\n AnalysisCompletedEventPayload,\n AnalysisFailedEventPayload,\n AnalysisProgressEventPayload,\n AnalysisStartedEventPayload,\n EdgeCreatedEventPayload,\n EdgeDeletedEventPayload,\n EdgeUpdatedEventPayload,\n EventSource,\n NeuronEvent,\n NeuronEventType,\n NodeBatchCreatedEventPayload,\n NodeCreatedEventPayload,\n NodeDeletedEventPayload,\n NodeUpdatedEventPayload,\n} from '../types/events';\nimport { createEvent } from './event-bus';\n\nexport const createNodeEvent = (\n type: 'node:created' | 'node:updated' | 'node:deleted' | 'node:batch_created',\n payload:\n | NodeCreatedEventPayload\n | NodeUpdatedEventPayload\n | NodeDeletedEventPayload\n | NodeBatchCreatedEventPayload,\n source: EventSource = 'system'\n): NeuronEvent => createEvent(type, payload, source);\n\nexport const createEdgeEvent = (\n type: 'edge:created' | 'edge:updated' | 'edge:deleted',\n payload: EdgeCreatedEventPayload | EdgeUpdatedEventPayload | EdgeDeletedEventPayload,\n source: EventSource = 'system'\n): NeuronEvent => createEvent(type, payload, source);\n\nexport const createAnalysisEvent = (\n type: 'analysis:started' | 'analysis:progress' | 'analysis:completed' | 'analysis:failed',\n payload:\n | AnalysisStartedEventPayload\n | AnalysisProgressEventPayload\n | AnalysisCompletedEventPayload\n | AnalysisFailedEventPayload,\n source: EventSource = 'analysis'\n): NeuronEvent => createEvent(type, payload, source);\n\nexport const createGenericEvent = <T>(\n type: NeuronEventType,\n payload: T,\n source: EventSource = 'system'\n): NeuronEvent<T> => createEvent(type, payload, source);\n","import type { EventMiddleware } from '../event-bus';\n\nexport const loggingMiddleware: EventMiddleware = (event, next) => {\n // eslint-disable-next-line no-console\n console.debug(`[omi-neuron:event] ${event.type}`, event);\n void next();\n};\n","import type { EventMiddleware } from '../event-bus';\n\nexport const validationMiddleware: EventMiddleware = (event, next) => {\n if (!event.type) {\n throw new Error('Event missing type');\n }\n if (!event.timestamp) {\n throw new Error('Event missing timestamp');\n }\n return next();\n};\n","import slugify from 'slugify';\nimport { nodeCreateSchema } from '../schemas/node';\nimport type { NeuronNodeCreate } from '../types/node';\n\nexport interface ProcessingOptions {\n skipDuplicates?: boolean;\n updateOnConflict?: boolean;\n defaultNodeType?: string;\n defaultDomain?: string;\n contentFields?: string[];\n labelField?: string;\n slugField?: string;\n metadataFields?: string[];\n}\n\nconst stripHtml = (value: string) => value.replace(/<[^>]+>/g, ' ');\n\nconst normalizeValue = (value: unknown): string | undefined => {\n if (value === null || value === undefined) return undefined;\n if (value instanceof Date) return value.toISOString();\n if (Array.isArray(value)) return value.map((item) => normalizeValue(item)).filter(Boolean).join(' ');\n if (typeof value === 'object') return JSON.stringify(value);\n return String(value);\n};\n\nconst flattenObject = (obj: Record<string, unknown>, prefix = ''): Record<string, unknown> => {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n const nextKey = prefix ? `${prefix}.${key}` : key;\n if (value && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date)) {\n Object.assign(result, flattenObject(value as Record<string, unknown>, nextKey));\n } else {\n result[nextKey] = value;\n }\n }\n return result;\n};\n\nexport class DataProcessor {\n constructor(private options: ProcessingOptions = {}) {}\n\n processItem(item: Record<string, unknown>): NeuronNodeCreate {\n const flattened = flattenObject(item);\n const labelField = this.options.labelField ?? 'label';\n const label = normalizeValue(flattened[labelField]) ?? 'Untitled';\n\n const slugField = this.options.slugField;\n const slug = slugField ? normalizeValue(flattened[slugField]) : undefined;\n\n const content = this.extractContent(flattened);\n const metadata = this.extractMetadata(flattened);\n\n const node: NeuronNodeCreate = {\n slug,\n label,\n nodeType: this.options.defaultNodeType,\n domain: this.options.defaultDomain,\n content,\n metadata,\n };\n\n return nodeCreateSchema.parse(node);\n }\n\n processBatch(items: Record<string, unknown>[]): {\n nodes: NeuronNodeCreate[];\n errors: Array<{ index: number; error: string }>;\n } {\n const nodes: NeuronNodeCreate[] = [];\n const errors: Array<{ index: number; error: string }> = [];\n\n items.forEach((item, index) => {\n try {\n nodes.push(this.processItem(item));\n } catch (error) {\n errors.push({\n index,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n });\n\n return { nodes, errors };\n }\n\n processJSON(json: string): NeuronNodeCreate[] {\n const parsed = JSON.parse(json);\n if (Array.isArray(parsed)) {\n return this.processBatch(parsed).nodes;\n }\n return [this.processItem(parsed)];\n }\n\n processCSV(csv: string): NeuronNodeCreate[] {\n const lines = csv.trim().split(/\\r?\\n/);\n if (lines.length === 0) return [];\n const headers = lines[0].split(',').map((h) => h.trim());\n const items = lines.slice(1).map((line) => {\n const values = line.split(',');\n const item: Record<string, unknown> = {};\n headers.forEach((header, idx) => {\n item[header] = values[idx]?.trim();\n });\n return item;\n });\n return this.processBatch(items).nodes;\n }\n\n generateSlug(label: string, existingSlugs: Set<string> = new Set()): string {\n const base = slugify(label, { lower: true, strict: true, trim: true }).slice(0, 255);\n if (!existingSlugs.has(base)) return base;\n let suffix = 1;\n let slug = `${base}-${suffix}`;\n while (existingSlugs.has(slug)) {\n suffix += 1;\n slug = `${base}-${suffix}`;\n }\n return slug;\n }\n\n extractContent(item: Record<string, unknown>): string {\n const fields = this.options.contentFields ?? ['label', 'summary', 'description', 'content'];\n const parts = fields\n .map((field) => normalizeValue(item[field]))\n .filter((value): value is string => Boolean(value));\n const joined = parts.join(' ');\n return stripHtml(joined).replace(/\\s+/g, ' ').trim();\n }\n\n detectDuplicates(nodes: NeuronNodeCreate[]): {\n unique: NeuronNodeCreate[];\n duplicates: Array<{ node: NeuronNodeCreate; reason: string }>;\n } {\n const seen = new Set<string>();\n const unique: NeuronNodeCreate[] = [];\n const duplicates: Array<{ node: NeuronNodeCreate; reason: string }> = [];\n\n nodes.forEach((node) => {\n const slug = node.slug ?? this.generateSlug(node.label, seen);\n if (seen.has(slug)) {\n duplicates.push({ node, reason: `Duplicate slug: ${slug}` });\n return;\n }\n seen.add(slug);\n unique.push({ ...node, slug });\n });\n\n return { unique, duplicates };\n }\n\n private extractMetadata(item: Record<string, unknown>): Record<string, unknown> | undefined {\n if (!this.options.metadataFields?.length) return undefined;\n const metadata: Record<string, unknown> = {};\n this.options.metadataFields.forEach((field) => {\n if (field in item) {\n metadata[field] = item[field];\n }\n });\n return Object.keys(metadata).length > 0 ? metadata : undefined;\n }\n}\n","import type { NeuronConfig } from '../core/types/settings';\n\nexport const defineNeuronConfig = (config: NeuronConfig): NeuronConfig => config;\n","import { createContext } from 'react';\nimport type { NeuronSettings, NeuronConfig } from '../core/types/settings';\nimport type { NeuronEvent } from '../core/types/events';\nimport type { EventBus } from '../core/events/event-bus';\nimport type { NeuronApiClient } from './api-client';\n\nexport interface ErrorContext {\n message: string;\n}\n\nexport interface NeuronContextValue {\n config: NeuronConfig;\n settings: NeuronSettings;\n api: NeuronApiClient;\n events: EventBus;\n isInitialized: boolean;\n error: Error | null;\n updateSettings: (settings: Partial<NeuronSettings>) => Promise<void>;\n resetSettings: () => Promise<void>;\n onEvent?: (event: NeuronEvent) => void;\n onError?: (error: Error, context: ErrorContext) => void;\n}\n\nexport const NeuronContext = createContext<NeuronContextValue | null>(null);\n","import { useContext } from 'react';\nimport { NeuronContext } from '../context';\n\nexport function useNeuronContext() {\n const context = useContext(NeuronContext);\n if (!context) {\n throw new Error('useNeuronContext must be used within NeuronWebProvider');\n }\n return context;\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport type {\n GraphFilters,\n NeuronVisualCluster,\n NeuronVisualEdge,\n NeuronVisualNode,\n} from '../../core/types';\nimport type { GetGraphParams, FindPathResponse } from '../../core/types/api';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport interface UseNeuronGraphOptions {\n domains?: string[];\n nodeTypes?: string[];\n minEdgeStrength?: number;\n autoRefresh?: boolean;\n refreshInterval?: number;\n}\n\nexport function useNeuronGraph(options?: UseNeuronGraphOptions) {\n const { api } = useNeuronContext();\n const [nodes, setNodes] = useState<NeuronVisualNode[]>([]);\n const [edges, setEdges] = useState<NeuronVisualEdge[]>([]);\n const [clusters, setClusters] = useState<NeuronVisualCluster[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [filters, setFilters] = useState<GraphFilters>({});\n const [selectedNode, setSelectedNode] = useState<string | null>(null);\n\n const fetchGraph = useCallback(async () => {\n setIsLoading(true);\n try {\n const params: GetGraphParams = {\n domains: options?.domains,\n nodeTypes: options?.nodeTypes,\n minEdgeStrength: options?.minEdgeStrength,\n };\n const response = await api.graph.get(params);\n setNodes(response.nodes);\n setEdges(response.edges);\n setClusters(response.clusters ?? []);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n }, [api, options]);\n\n useEffect(() => {\n void fetchGraph();\n }, [fetchGraph]);\n\n const expandFromNode = async (nodeId: string, depth = 1) => {\n const response = await api.graph.expand({ fromNodeIds: [nodeId], depth, direction: 'both' });\n setNodes(response.nodes);\n setEdges(response.edges);\n };\n\n const findPath = async (fromId: string, toId: string): Promise<FindPathResponse['paths'][number]> => {\n const response = await api.graph.findPath({ fromNodeId: fromId, toNodeId: toId });\n return response.paths[0];\n };\n\n return {\n nodes,\n edges,\n clusters,\n isLoading,\n error,\n filters,\n setFilters: (next: Partial<GraphFilters>) => setFilters((prev) => ({ ...prev, ...next })),\n clearFilters: () => setFilters({}),\n selectedNode: selectedNode ? nodes.find((node) => node.id === selectedNode) ?? null : null,\n selectNode: (nodeId: string | null) => setSelectedNode(nodeId),\n clearSelection: () => setSelectedNode(null),\n refetch: fetchGraph,\n expandFromNode,\n findPath,\n };\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport type { ListNodesParams, NeuronNode, NeuronNodeCreate, NeuronNodeUpdate } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport interface UseNeuronNodesOptions {\n initialFilters?: ListNodesParams;\n pageSize?: number;\n}\n\nexport function useNeuronNodes(options?: UseNeuronNodesOptions) {\n const { api } = useNeuronContext();\n const [nodes, setNodes] = useState<NeuronNode[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [page, setPage] = useState(1);\n const [totalPages, setTotalPages] = useState(1);\n\n const fetchNodes = useCallback(async () => {\n setIsLoading(true);\n try {\n const response = await api.nodes.list({\n ...options?.initialFilters,\n page,\n limit: options?.pageSize ?? 50,\n });\n setNodes(response.nodes);\n setTotalPages(response.pagination.totalPages ?? 1);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n }, [api, options, page]);\n\n useEffect(() => {\n void fetchNodes();\n }, [fetchNodes]);\n\n return {\n nodes,\n isLoading,\n error,\n createNode: async (data: NeuronNodeCreate) => {\n const response = await api.nodes.create({ nodes: [data] });\n await fetchNodes();\n return response.created[0];\n },\n updateNode: async (id: string, data: NeuronNodeUpdate) => {\n const updated = await api.nodes.update(id, data);\n await fetchNodes();\n return updated as NeuronNode;\n },\n deleteNode: async (id: string) => {\n await api.nodes.delete(id);\n await fetchNodes();\n },\n batchCreate: async (nodesInput: NeuronNodeCreate[]) => {\n const response = await api.nodes.create({ nodes: nodesInput });\n await fetchNodes();\n return response.created;\n },\n search: async (query: string) => {\n const response = await api.nodes.list({ search: query });\n setNodes(response.nodes);\n },\n pagination: {\n page,\n totalPages,\n hasNext: page < totalPages,\n hasPrev: page > 1,\n },\n setPage,\n nextPage: () => setPage((prev) => Math.min(prev + 1, totalPages)),\n prevPage: () => setPage((prev) => Math.max(prev - 1, 1)),\n };\n}\n","import { useState } from 'react';\nimport type { AnalysisRequest, AnalysisResponse, AnalysisRun } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport function useNeuronAnalysis() {\n const { api } = useNeuronContext();\n const [activeJobs, setActiveJobs] = useState<AnalysisRun[]>([]);\n const [jobHistory, setJobHistory] = useState<AnalysisRun[]>([]);\n const [isRunning, setIsRunning] = useState(false);\n const [currentProgress, setCurrentProgress] = useState<number | null>(null);\n\n const startAnalysis = async (request: AnalysisRequest): Promise<AnalysisResponse> => {\n setIsRunning(true);\n const response = await api.analyze.start(request);\n setActiveJobs((prev) => [...prev, { ...(response as unknown as AnalysisRun) }]);\n return response;\n };\n\n const cancelJob = async (jobId: string) => {\n await api.analyze.cancel(jobId);\n setActiveJobs((prev) => prev.filter((job) => job.id !== jobId));\n };\n\n const getJobStatus = async (jobId: string) => {\n const response = await api.analyze.getStatus(jobId);\n setJobHistory((prev) => [...prev, response.job]);\n setIsRunning(false);\n setCurrentProgress(response.job.progress ?? null);\n return response.job;\n };\n\n return {\n activeJobs,\n jobHistory,\n startAnalysis,\n cancelJob,\n getJobStatus,\n isRunning,\n currentProgress,\n };\n}\n","import { useState } from 'react';\nimport type { NeuronSettings, NeuronSettingsUpdate, VisualizationSettings } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport function useNeuronSettings() {\n const { settings, api, updateSettings } = useNeuronContext();\n const [isLoading] = useState(false);\n const [isUpdating, setIsUpdating] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const update = async (updates: NeuronSettingsUpdate) => {\n try {\n setIsUpdating(true);\n await updateSettings(updates as Partial<NeuronSettings>);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsUpdating(false);\n }\n };\n\n const reset = async (sections?: string[]) => {\n await api.settings.reset();\n if (sections?.length) {\n await update({});\n }\n };\n\n return {\n settings,\n isLoading,\n isUpdating,\n error,\n updateSettings: update,\n resetSettings: reset,\n setDomainColor: async (domain: string, color: string) => {\n await update({\n visualization: {\n ...(settings.visualization as VisualizationSettings),\n domainColors: { ...settings.visualization.domainColors, [domain]: color },\n },\n });\n },\n setVisualization: async (updates: Partial<VisualizationSettings>) => {\n await update({ visualization: updates });\n },\n };\n}\n","import { useState } from 'react';\nimport type { FindSimilarOptions, SearchResult, SemanticSearchOptions } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport function useNeuronSearch() {\n const { api } = useNeuronContext();\n const [results, setResults] = useState<SearchResult[]>([]);\n const [isSearching, setIsSearching] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const search = async (query: string, options?: SemanticSearchOptions) => {\n setIsSearching(true);\n try {\n const response = await api.search.semantic({ query, ...options });\n setResults(response.results as SearchResult[]);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsSearching(false);\n }\n };\n\n const findSimilar = async (nodeId: string, options?: FindSimilarOptions) => {\n setIsSearching(true);\n try {\n const response = await api.search.similar({ nodeId, ...options });\n setResults(response.results as SearchResult[]);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsSearching(false);\n }\n };\n\n return {\n results,\n isSearching,\n error,\n search,\n findSimilar,\n clearResults: () => setResults([]),\n };\n}\n","import { useEffect } from 'react';\nimport type { AnalysisRun, NeuronEventType, NeuronNode } from '../../core/types';\nimport type {\n AnalysisCompletedEventPayload,\n AnalysisFailedEventPayload,\n AnalysisProgressEventPayload,\n AnalysisStartedEventPayload,\n EventHandler,\n EventSubscription,\n NodeCreatedEventPayload,\n NodeDeletedEventPayload,\n NodeUpdatedEventPayload,\n} from '../../core/types/events';\nimport { useNeuronContext } from './useNeuronContext';\nimport { createEvent } from '../../core/events/event-bus';\n\nexport function useNeuronEvents() {\n const { events } = useNeuronContext();\n\n return {\n subscribe: <T>(type: NeuronEventType, handler: EventHandler<T>) => {\n useEffect(() => {\n const sub = events.subscribe(type, handler);\n return () => sub.unsubscribe();\n }, [type, handler]);\n },\n emit: <T>(type: NeuronEventType, payload: T) => {\n events.emit(createEvent(type, payload, 'ui'));\n },\n };\n}\n\nexport function useNodeEvents(handlers: {\n onCreated?: (node: NeuronNode) => void;\n onUpdated?: (node: NeuronNode) => void;\n onDeleted?: (nodeId: string) => void;\n}): void {\n const { events } = useNeuronContext();\n\n useEffect(() => {\n const subs: EventSubscription[] = [];\n if (handlers.onCreated) {\n subs.push(\n events.subscribe('node:created', (event) =>\n handlers.onCreated?.((event.payload as NodeCreatedEventPayload).node)\n )\n );\n }\n if (handlers.onUpdated) {\n subs.push(\n events.subscribe('node:updated', (event) =>\n handlers.onUpdated?.((event.payload as NodeUpdatedEventPayload).node)\n )\n );\n }\n if (handlers.onDeleted) {\n subs.push(\n events.subscribe('node:deleted', (event) =>\n handlers.onDeleted?.((event.payload as NodeDeletedEventPayload).nodeId)\n )\n );\n }\n return () => subs.forEach((sub) => sub.unsubscribe());\n }, [handlers]);\n}\n\nexport function useAnalysisEvents(handlers: {\n onStarted?: (jobId: string) => void;\n onProgress?: (jobId: string, progress: number) => void;\n onCompleted?: (job: AnalysisRun) => void;\n onFailed?: (jobId: string, error: string) => void;\n}): void {\n const { events } = useNeuronContext();\n\n useEffect(() => {\n const subs: EventSubscription[] = [];\n if (handlers.onStarted) {\n subs.push(\n events.subscribe('analysis:started', (event) =>\n handlers.onStarted?.((event.payload as AnalysisStartedEventPayload).jobId)\n )\n );\n }\n if (handlers.onProgress) {\n subs.push(\n events.subscribe('analysis:progress', (event) => {\n const payload = event.payload as AnalysisProgressEventPayload;\n return handlers.onProgress?.(payload.jobId, payload.progress);\n })\n );\n }\n if (handlers.onCompleted) {\n subs.push(\n events.subscribe('analysis:completed', (event) =>\n handlers.onCompleted?.((event.payload as AnalysisCompletedEventPayload).job)\n )\n );\n }\n if (handlers.onFailed) {\n subs.push(\n events.subscribe('analysis:failed', (event) => {\n const payload = event.payload as AnalysisFailedEventPayload;\n return handlers.onFailed?.(payload.jobId, payload.error);\n })\n );\n }\n return () => subs.forEach((sub) => sub.unsubscribe());\n }, [handlers]);\n}\n","import type {\n AnalysisRequest,\n AnalysisResponse,\n CancelAnalysisResponse,\n CreateEdgesRequest,\n CreateEdgesResponse,\n CreateNodesRequest,\n CreateNodesResponse,\n DeleteEdgeResponse,\n DeleteNodeResponse,\n ExpandGraphRequest,\n ExpandGraphResponse,\n FindPathRequest,\n FindPathResponse,\n FindSimilarRequest,\n FindSimilarResponse,\n GetAnalysisJobResponse,\n GetGraphParams,\n GetGraphResponse,\n GetNodeResponse,\n GetSettingsResponse,\n ListEdgesParams,\n ListEdgesResponse,\n ListNodesParams,\n ListNodesResponse,\n SemanticSearchRequest,\n SemanticSearchResponse,\n UpdateEdgeRequest,\n UpdateNodeRequest,\n UpdateSettingsRequest,\n UpdateSettingsResponse,\n ResetSettingsResponse,\n} from '../core/types/api';\n\nexport class NeuronApiClient {\n constructor(private basePath: string) {}\n\n private async request<T>(path: string, options?: RequestInit): Promise<T> {\n const response = await fetch(`${this.basePath}${path}`, {\n headers: { 'Content-Type': 'application/json' },\n ...options,\n });\n if (!response.ok) {\n throw new Error(`Request failed: ${response.status}`);\n }\n return response.json() as Promise<T>;\n }\n\n nodes = {\n list: (params?: ListNodesParams) =>\n this.request<ListNodesResponse>(`/nodes?${new URLSearchParams(params as Record<string, string>)}`),\n get: (id: string) => this.request<GetNodeResponse>(`/nodes/${id}`),\n create: (data: CreateNodesRequest) =>\n this.request<CreateNodesResponse>('/nodes', { method: 'POST', body: JSON.stringify(data) }),\n update: (id: string, data: UpdateNodeRequest) =>\n this.request(`/nodes/${id}`, { method: 'PATCH', body: JSON.stringify(data) }),\n delete: (id: string) => this.request<DeleteNodeResponse>(`/nodes/${id}`, { method: 'DELETE' }),\n };\n\n edges = {\n list: (params?: ListEdgesParams) =>\n this.request<ListEdgesResponse>(`/edges?${new URLSearchParams(params as Record<string, string>)}`),\n create: (data: CreateEdgesRequest) =>\n this.request<CreateEdgesResponse>('/edges', { method: 'POST', body: JSON.stringify(data) }),\n update: (id: string, data: UpdateEdgeRequest) =>\n this.request(`/edges/${id}`, { method: 'PATCH', body: JSON.stringify(data) }),\n delete: (id: string) => this.request<DeleteEdgeResponse>(`/edges/${id}`, { method: 'DELETE' }),\n };\n\n graph = {\n get: (params?: GetGraphParams) =>\n this.request<GetGraphResponse>(`/graph?${new URLSearchParams(params as Record<string, string>)}`),\n expand: (data: ExpandGraphRequest) =>\n this.request<ExpandGraphResponse>('/graph/expand', { method: 'POST', body: JSON.stringify(data) }),\n findPath: (data: FindPathRequest) =>\n this.request<FindPathResponse>('/graph/path', { method: 'POST', body: JSON.stringify(data) }),\n };\n\n analyze = {\n start: (data: AnalysisRequest) =>\n this.request<AnalysisResponse>('/analyze', { method: 'POST', body: JSON.stringify(data) }),\n getStatus: (jobId: string) => this.request<GetAnalysisJobResponse>(`/analyze/${jobId}`),\n cancel: (jobId: string) =>\n this.request<CancelAnalysisResponse>(`/analyze/${jobId}/cancel`, { method: 'POST' }),\n };\n\n settings = {\n get: () => this.request<GetSettingsResponse>('/settings'),\n update: (data: UpdateSettingsRequest) =>\n this.request<UpdateSettingsResponse>('/settings', { method: 'PATCH', body: JSON.stringify(data) }),\n reset: () => this.request<ResetSettingsResponse>('/settings/reset', { method: 'POST' }),\n };\n\n search = {\n semantic: (data: SemanticSearchRequest) =>\n this.request<SemanticSearchResponse>('/search', { method: 'POST', body: JSON.stringify(data) }),\n similar: (data: FindSimilarRequest) =>\n this.request<FindSimilarResponse>('/search/similar', { method: 'POST', body: JSON.stringify(data) }),\n };\n}\n","'use client';\n\nimport React, { useEffect, useMemo, useState } from 'react';\nimport type { NeuronSettings, NeuronConfig, NeuronSettingsUpdate } from '../core/types/settings';\nimport type { NeuronEvent } from '../core/types/events';\nimport { DEFAULT_ANALYSIS_SETTINGS, DEFAULT_VISUALIZATION_SETTINGS } from '../core/types/settings';\nimport { EventBus } from '../core/events/event-bus';\nimport { NeuronApiClient } from './api-client';\nimport { NeuronContext, type ErrorContext } from './context';\n\nexport interface NeuronWebProviderProps {\n children: React.ReactNode;\n config: {\n openaiApiKey?: string;\n databaseUrl?: string;\n settings?: Partial<NeuronSettings>;\n onEvent?: (event: NeuronEvent) => void;\n onError?: (error: Error, context: ErrorContext) => void;\n };\n}\n\nconst buildDefaultConfig = (overrides?: Partial<NeuronSettings>): NeuronConfig => ({\n instance: {\n name: 'default',\n version: '0.1.0',\n repoName: 'omi-neuron-web',\n },\n visualization: { ...DEFAULT_VISUALIZATION_SETTINGS, ...(overrides?.visualization ?? {}) },\n analysis: { ...DEFAULT_ANALYSIS_SETTINGS, ...(overrides?.analysis ?? {}) },\n nodeTypes: overrides?.nodeTypes ?? [],\n domains: overrides?.domains ?? [],\n relationshipTypes: overrides?.relationshipTypes ?? [],\n openai: {\n apiKey: '',\n },\n database: {\n mode: 'external',\n port: 5433,\n url: undefined,\n },\n api: {\n basePath: '/api/neuron',\n enableCors: false,\n },\n logging: {\n level: 'info',\n prettyPrint: true,\n },\n});\n\nexport function NeuronWebProvider({ children, config }: NeuronWebProviderProps): React.ReactElement {\n const [settings, setSettings] = useState<NeuronSettings>(() =>\n buildDefaultConfig(config.settings) as NeuronSettings\n );\n const [error, setError] = useState<Error | null>(null);\n const [isInitialized, setIsInitialized] = useState(false);\n\n const resolvedConfig = useMemo(() => {\n const base = buildDefaultConfig(config.settings);\n return {\n ...base,\n openai: {\n apiKey: config.openaiApiKey ?? base.openai.apiKey,\n },\n database: {\n ...base.database,\n url: config.databaseUrl ?? base.database.url,\n },\n } as NeuronConfig;\n }, [config]);\n\n const apiClient = useMemo(() => new NeuronApiClient(resolvedConfig.api.basePath), [resolvedConfig]);\n const eventBus = useMemo(() => new EventBus(), []);\n\n useEffect(() => {\n eventBus.subscribeAll((event) => config.onEvent?.(event));\n }, [eventBus, config]);\n\n useEffect(() => {\n let mounted = true;\n apiClient\n .settings.get()\n .then((response) => {\n if (mounted) {\n setSettings(response.settings as NeuronSettings);\n setIsInitialized(true);\n }\n })\n .catch((err) => {\n setError(err as Error);\n config.onError?.(err as Error, { message: 'Failed to load settings' });\n });\n return () => {\n mounted = false;\n };\n }, [apiClient]);\n\n const updateSettings = async (updates: Partial<NeuronSettings>) => {\n const response = await apiClient.settings.update(updates as NeuronSettingsUpdate);\n setSettings(response.settings as NeuronSettings);\n };\n\n const resetSettings = async () => {\n const response = await apiClient.settings.reset();\n setSettings(response.settings as NeuronSettings);\n };\n\n const contextValue = useMemo(\n () => ({\n config: resolvedConfig,\n settings,\n api: apiClient,\n events: eventBus,\n isInitialized,\n error,\n updateSettings,\n resetSettings,\n onEvent: config.onEvent,\n onError: config.onError,\n }),\n [resolvedConfig, settings, apiClient, eventBus, isInitialized, error, config]\n );\n\n return <NeuronContext.Provider value={contextValue}>{children}</NeuronContext.Provider>;\n}\n","/**\n * omi-neuron-web\n * A drop-in Next.js library for data analysis and 3D visualization\n */\n\n// Core types\nexport * from './core/types';\nexport * from './core/schemas';\nexport * from './core/events';\nexport { DataProcessor } from './core/analysis/data-processor';\nexport { EmbeddingsService } from './core/analysis/embeddings-service';\nexport { ClusteringEngine } from './core/analysis/clustering-engine';\nexport { RelationshipEngine } from './core/analysis/relationship-engine';\nexport { ScoringEngine } from './core/analysis/scoring-engine';\nexport { AnalysisPipeline } from './core/analysis/pipeline';\nexport * from './storage';\nexport * from './config';\n\n// Re-export visualization (when implemented)\n// export { NeuronWeb } from './visualization';\n\n// Re-export hooks (when implemented)\nexport * from './react/hooks';\n\n// Re-export provider (when implemented)\nexport { NeuronWebProvider } from './react/NeuronWebProvider';\n\n// Version\nexport const VERSION = '0.1.0';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/core/schemas/cluster.ts","../src/core/events/helpers.ts","../src/core/events/middleware/logging.ts","../src/core/events/middleware/validation.ts","../src/core/analysis/data-processor.ts","../src/config/index.ts","../src/react/context.ts","../src/react/hooks/useNeuronContext.ts","../src/react/hooks/useNeuronGraph.ts","../src/react/hooks/useNeuronNodes.ts","../src/react/hooks/useNeuronAnalysis.ts","../src/react/hooks/useNeuronSettings.ts","../src/react/hooks/useNeuronSearch.ts","../src/react/hooks/useNeuronEvents.ts","../src/react/api-client.ts","../src/react/NeuronWebProvider.tsx","../src/index.ts"],"names":["useState","useCallback","useEffect"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from 'zod';\n\nexport const clusteringConfigSchema = z.object({\n algorithm: z.enum(['kmeans', 'dbscan', 'hierarchical']),\n clusterCount: z.coerce.number().int().min(1).optional(),\n minClusterSize: z.coerce.number().int().min(1).optional(),\n similarityThreshold: z.coerce.number().min(0).max(1).optional(),\n epsilon: z.coerce.number().min(0).optional(),\n minSamples: z.coerce.number().int().min(1).optional(),\n});\n\nexport const clusterCreateSchema = z.object({\n label: z.string().min(1).max(255),\n clusterType: z.string().max(100).optional(),\n centroid: z.array(z.number()).optional(),\n memberCount: z.number().int().min(0).optional(),\n avgSimilarity: z.number().min(0).max(1).optional(),\n cohesion: z.number().min(0).max(1).optional(),\n description: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const clusterUpdateSchema = clusterCreateSchema.partial();\n\nexport type ClusteringConfigInput = z.infer<typeof clusteringConfigSchema>;\nexport type ClusterCreateInput = z.infer<typeof clusterCreateSchema>;\nexport type ClusterUpdateInput = z.infer<typeof clusterUpdateSchema>;\n","import type {\n AnalysisCompletedEventPayload,\n AnalysisFailedEventPayload,\n AnalysisProgressEventPayload,\n AnalysisStartedEventPayload,\n EdgeCreatedEventPayload,\n EdgeDeletedEventPayload,\n EdgeUpdatedEventPayload,\n EventSource,\n NeuronEvent,\n NeuronEventType,\n NodeBatchCreatedEventPayload,\n NodeCreatedEventPayload,\n NodeDeletedEventPayload,\n NodeUpdatedEventPayload,\n} from '../types/events';\nimport { createEvent } from './event-bus';\n\nexport const createNodeEvent = (\n type: 'node:created' | 'node:updated' | 'node:deleted' | 'node:batch_created',\n payload:\n | NodeCreatedEventPayload\n | NodeUpdatedEventPayload\n | NodeDeletedEventPayload\n | NodeBatchCreatedEventPayload,\n source: EventSource = 'system'\n): NeuronEvent => createEvent(type, payload, source);\n\nexport const createEdgeEvent = (\n type: 'edge:created' | 'edge:updated' | 'edge:deleted',\n payload: EdgeCreatedEventPayload | EdgeUpdatedEventPayload | EdgeDeletedEventPayload,\n source: EventSource = 'system'\n): NeuronEvent => createEvent(type, payload, source);\n\nexport const createAnalysisEvent = (\n type: 'analysis:started' | 'analysis:progress' | 'analysis:completed' | 'analysis:failed',\n payload:\n | AnalysisStartedEventPayload\n | AnalysisProgressEventPayload\n | AnalysisCompletedEventPayload\n | AnalysisFailedEventPayload,\n source: EventSource = 'analysis'\n): NeuronEvent => createEvent(type, payload, source);\n\nexport const createGenericEvent = <T>(\n type: NeuronEventType,\n payload: T,\n source: EventSource = 'system'\n): NeuronEvent<T> => createEvent(type, payload, source);\n","import type { EventMiddleware } from '../event-bus';\n\nexport const loggingMiddleware: EventMiddleware = (event, next) => {\n // eslint-disable-next-line no-console\n console.debug(`[omi-neuron:event] ${event.type}`, event);\n void next();\n};\n","import type { EventMiddleware } from '../event-bus';\n\nexport const validationMiddleware: EventMiddleware = (event, next) => {\n if (!event.type) {\n throw new Error('Event missing type');\n }\n if (!event.timestamp) {\n throw new Error('Event missing timestamp');\n }\n return next();\n};\n","import slugify from 'slugify';\nimport { nodeCreateSchema } from '../schemas/node';\nimport type { NeuronNodeCreate } from '../types/node';\n\nexport interface ProcessingOptions {\n skipDuplicates?: boolean;\n updateOnConflict?: boolean;\n defaultNodeType?: string;\n defaultDomain?: string;\n contentFields?: string[];\n labelField?: string;\n slugField?: string;\n metadataFields?: string[];\n}\n\nconst stripHtml = (value: string) => value.replace(/<[^>]+>/g, ' ');\n\nconst normalizeValue = (value: unknown): string | undefined => {\n if (value === null || value === undefined) return undefined;\n if (value instanceof Date) return value.toISOString();\n if (Array.isArray(value)) return value.map((item) => normalizeValue(item)).filter(Boolean).join(' ');\n if (typeof value === 'object') return JSON.stringify(value);\n return String(value);\n};\n\nconst flattenObject = (obj: Record<string, unknown>, prefix = ''): Record<string, unknown> => {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n const nextKey = prefix ? `${prefix}.${key}` : key;\n if (value && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date)) {\n Object.assign(result, flattenObject(value as Record<string, unknown>, nextKey));\n } else {\n result[nextKey] = value;\n }\n }\n return result;\n};\n\nexport class DataProcessor {\n constructor(private options: ProcessingOptions = {}) {}\n\n processItem(item: Record<string, unknown>): NeuronNodeCreate {\n const flattened = flattenObject(item);\n const labelField = this.options.labelField ?? 'label';\n const label = normalizeValue(flattened[labelField]) ?? 'Untitled';\n\n const slugField = this.options.slugField;\n const slug = slugField ? normalizeValue(flattened[slugField]) : undefined;\n\n const content = this.extractContent(flattened);\n const metadata = this.extractMetadata(flattened);\n\n const node: NeuronNodeCreate = {\n slug,\n label,\n nodeType: this.options.defaultNodeType,\n domain: this.options.defaultDomain,\n content,\n metadata,\n };\n\n return nodeCreateSchema.parse(node);\n }\n\n processBatch(items: Record<string, unknown>[]): {\n nodes: NeuronNodeCreate[];\n errors: Array<{ index: number; error: string }>;\n } {\n const nodes: NeuronNodeCreate[] = [];\n const errors: Array<{ index: number; error: string }> = [];\n\n items.forEach((item, index) => {\n try {\n nodes.push(this.processItem(item));\n } catch (error) {\n errors.push({\n index,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n });\n\n return { nodes, errors };\n }\n\n processJSON(json: string): NeuronNodeCreate[] {\n const parsed = JSON.parse(json);\n if (Array.isArray(parsed)) {\n return this.processBatch(parsed).nodes;\n }\n return [this.processItem(parsed)];\n }\n\n processCSV(csv: string): NeuronNodeCreate[] {\n const lines = csv.trim().split(/\\r?\\n/);\n if (lines.length === 0) return [];\n const headers = lines[0].split(',').map((h) => h.trim());\n const items = lines.slice(1).map((line) => {\n const values = line.split(',');\n const item: Record<string, unknown> = {};\n headers.forEach((header, idx) => {\n item[header] = values[idx]?.trim();\n });\n return item;\n });\n return this.processBatch(items).nodes;\n }\n\n generateSlug(label: string, existingSlugs: Set<string> = new Set()): string {\n const base = slugify(label, { lower: true, strict: true, trim: true }).slice(0, 255);\n if (!existingSlugs.has(base)) return base;\n let suffix = 1;\n let slug = `${base}-${suffix}`;\n while (existingSlugs.has(slug)) {\n suffix += 1;\n slug = `${base}-${suffix}`;\n }\n return slug;\n }\n\n extractContent(item: Record<string, unknown>): string {\n const fields = this.options.contentFields ?? ['label', 'summary', 'description', 'content'];\n const parts = fields\n .map((field) => normalizeValue(item[field]))\n .filter((value): value is string => Boolean(value));\n const joined = parts.join(' ');\n return stripHtml(joined).replace(/\\s+/g, ' ').trim();\n }\n\n detectDuplicates(nodes: NeuronNodeCreate[]): {\n unique: NeuronNodeCreate[];\n duplicates: Array<{ node: NeuronNodeCreate; reason: string }>;\n } {\n const seen = new Set<string>();\n const unique: NeuronNodeCreate[] = [];\n const duplicates: Array<{ node: NeuronNodeCreate; reason: string }> = [];\n\n nodes.forEach((node) => {\n const slug = node.slug ?? this.generateSlug(node.label, seen);\n if (seen.has(slug)) {\n duplicates.push({ node, reason: `Duplicate slug: ${slug}` });\n return;\n }\n seen.add(slug);\n unique.push({ ...node, slug });\n });\n\n return { unique, duplicates };\n }\n\n private extractMetadata(item: Record<string, unknown>): Record<string, unknown> | undefined {\n if (!this.options.metadataFields?.length) return undefined;\n const metadata: Record<string, unknown> = {};\n this.options.metadataFields.forEach((field) => {\n if (field in item) {\n metadata[field] = item[field];\n }\n });\n return Object.keys(metadata).length > 0 ? metadata : undefined;\n }\n}\n","import type { NeuronConfig } from '../core/types/settings';\n\nexport const defineNeuronConfig = (config: NeuronConfig): NeuronConfig => config;\n","import { createContext } from 'react';\nimport type { NeuronSettings, NeuronConfig } from '../core/types/settings';\nimport type { NeuronEvent } from '../core/types/events';\nimport type { EventBus } from '../core/events/event-bus';\nimport type { NeuronApiClient } from './api-client';\n\nexport interface ErrorContext {\n message: string;\n}\n\nexport interface NeuronContextValue {\n config: NeuronConfig;\n settings: NeuronSettings;\n api: NeuronApiClient;\n events: EventBus;\n isInitialized: boolean;\n error: Error | null;\n updateSettings: (settings: Partial<NeuronSettings>) => Promise<void>;\n resetSettings: () => Promise<void>;\n onEvent?: (event: NeuronEvent) => void;\n onError?: (error: Error, context: ErrorContext) => void;\n}\n\nexport const NeuronContext = createContext<NeuronContextValue | null>(null);\n","import { useContext } from 'react';\nimport { NeuronContext } from '../context';\n\nexport function useNeuronContext() {\n const context = useContext(NeuronContext);\n if (!context) {\n throw new Error('useNeuronContext must be used within NeuronWebProvider');\n }\n return context;\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport type {\n GraphFilters,\n NeuronVisualCluster,\n NeuronVisualEdge,\n NeuronVisualNode,\n} from '../../core/types';\nimport type { GetGraphParams, FindPathResponse } from '../../core/types/api';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport interface UseNeuronGraphOptions {\n domains?: string[];\n nodeTypes?: string[];\n minEdgeStrength?: number;\n autoRefresh?: boolean;\n refreshInterval?: number;\n}\n\nexport function useNeuronGraph(options?: UseNeuronGraphOptions) {\n const { api } = useNeuronContext();\n const [nodes, setNodes] = useState<NeuronVisualNode[]>([]);\n const [edges, setEdges] = useState<NeuronVisualEdge[]>([]);\n const [clusters, setClusters] = useState<NeuronVisualCluster[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [filters, setFilters] = useState<GraphFilters>({});\n const [selectedNode, setSelectedNode] = useState<string | null>(null);\n\n const fetchGraph = useCallback(async () => {\n setIsLoading(true);\n try {\n const params: GetGraphParams = {\n domains: options?.domains,\n nodeTypes: options?.nodeTypes,\n minEdgeStrength: options?.minEdgeStrength,\n };\n const response = await api.graph.get(params);\n setNodes(response.nodes);\n setEdges(response.edges);\n setClusters(response.clusters ?? []);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n }, [api, options]);\n\n useEffect(() => {\n void fetchGraph();\n }, [fetchGraph]);\n\n const expandFromNode = async (nodeId: string, depth = 1) => {\n const response = await api.graph.expand({ fromNodeIds: [nodeId], depth, direction: 'both' });\n setNodes(response.nodes);\n setEdges(response.edges);\n };\n\n const findPath = async (fromId: string, toId: string): Promise<FindPathResponse['paths'][number]> => {\n const response = await api.graph.findPath({ fromNodeId: fromId, toNodeId: toId });\n return response.paths[0];\n };\n\n return {\n nodes,\n edges,\n clusters,\n isLoading,\n error,\n filters,\n setFilters: (next: Partial<GraphFilters>) => setFilters((prev) => ({ ...prev, ...next })),\n clearFilters: () => setFilters({}),\n selectedNode: selectedNode ? nodes.find((node) => node.id === selectedNode) ?? null : null,\n selectNode: (nodeId: string | null) => setSelectedNode(nodeId),\n clearSelection: () => setSelectedNode(null),\n refetch: fetchGraph,\n expandFromNode,\n findPath,\n };\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport type { ListNodesParams, NeuronNode, NeuronNodeCreate, NeuronNodeUpdate } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport interface UseNeuronNodesOptions {\n initialFilters?: ListNodesParams;\n pageSize?: number;\n}\n\nexport function useNeuronNodes(options?: UseNeuronNodesOptions) {\n const { api } = useNeuronContext();\n const [nodes, setNodes] = useState<NeuronNode[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [page, setPage] = useState(1);\n const [totalPages, setTotalPages] = useState(1);\n\n const fetchNodes = useCallback(async () => {\n setIsLoading(true);\n try {\n const response = await api.nodes.list({\n ...options?.initialFilters,\n page,\n limit: options?.pageSize ?? 50,\n });\n setNodes(response.nodes);\n setTotalPages(response.pagination.totalPages ?? 1);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n }, [api, options, page]);\n\n useEffect(() => {\n void fetchNodes();\n }, [fetchNodes]);\n\n return {\n nodes,\n isLoading,\n error,\n createNode: async (data: NeuronNodeCreate) => {\n const response = await api.nodes.create({ nodes: [data] });\n await fetchNodes();\n return response.created[0];\n },\n updateNode: async (id: string, data: NeuronNodeUpdate) => {\n const updated = await api.nodes.update(id, data);\n await fetchNodes();\n return updated as NeuronNode;\n },\n deleteNode: async (id: string) => {\n await api.nodes.delete(id);\n await fetchNodes();\n },\n batchCreate: async (nodesInput: NeuronNodeCreate[]) => {\n const response = await api.nodes.create({ nodes: nodesInput });\n await fetchNodes();\n return response.created;\n },\n search: async (query: string) => {\n const response = await api.nodes.list({ search: query });\n setNodes(response.nodes);\n },\n pagination: {\n page,\n totalPages,\n hasNext: page < totalPages,\n hasPrev: page > 1,\n },\n setPage,\n nextPage: () => setPage((prev) => Math.min(prev + 1, totalPages)),\n prevPage: () => setPage((prev) => Math.max(prev - 1, 1)),\n };\n}\n","import { useState } from 'react';\nimport type { AnalysisRequest, AnalysisResponse, AnalysisRun } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport function useNeuronAnalysis() {\n const { api } = useNeuronContext();\n const [activeJobs, setActiveJobs] = useState<AnalysisRun[]>([]);\n const [jobHistory, setJobHistory] = useState<AnalysisRun[]>([]);\n const [isRunning, setIsRunning] = useState(false);\n const [currentProgress, setCurrentProgress] = useState<number | null>(null);\n\n const startAnalysis = async (request: AnalysisRequest): Promise<AnalysisResponse> => {\n setIsRunning(true);\n const response = await api.analyze.start(request);\n setActiveJobs((prev) => [...prev, { ...(response as unknown as AnalysisRun) }]);\n return response;\n };\n\n const cancelJob = async (jobId: string) => {\n await api.analyze.cancel(jobId);\n setActiveJobs((prev) => prev.filter((job) => job.id !== jobId));\n };\n\n const getJobStatus = async (jobId: string) => {\n const response = await api.analyze.getStatus(jobId);\n setJobHistory((prev) => [...prev, response.job]);\n setIsRunning(false);\n setCurrentProgress(response.job.progress ?? null);\n return response.job;\n };\n\n return {\n activeJobs,\n jobHistory,\n startAnalysis,\n cancelJob,\n getJobStatus,\n isRunning,\n currentProgress,\n };\n}\n","import { useState } from 'react';\nimport type { NeuronSettings, NeuronSettingsUpdate, VisualizationSettings } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport function useNeuronSettings() {\n const { settings, api, updateSettings } = useNeuronContext();\n const [isLoading] = useState(false);\n const [isUpdating, setIsUpdating] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const update = async (updates: NeuronSettingsUpdate) => {\n try {\n setIsUpdating(true);\n await updateSettings(updates as Partial<NeuronSettings>);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsUpdating(false);\n }\n };\n\n const reset = async (sections?: string[]) => {\n await api.settings.reset();\n if (sections?.length) {\n await update({});\n }\n };\n\n return {\n settings,\n isLoading,\n isUpdating,\n error,\n updateSettings: update,\n resetSettings: reset,\n setDomainColor: async (domain: string, color: string) => {\n await update({\n visualization: {\n ...(settings.visualization as VisualizationSettings),\n domainColors: { ...settings.visualization.domainColors, [domain]: color },\n },\n });\n },\n setVisualization: async (updates: Partial<VisualizationSettings>) => {\n await update({ visualization: updates });\n },\n };\n}\n","import { useState } from 'react';\nimport type { FindSimilarOptions, SearchResult, SemanticSearchOptions } from '../../core/types';\nimport { useNeuronContext } from './useNeuronContext';\n\nexport function useNeuronSearch() {\n const { api } = useNeuronContext();\n const [results, setResults] = useState<SearchResult[]>([]);\n const [isSearching, setIsSearching] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const search = async (query: string, options?: SemanticSearchOptions) => {\n setIsSearching(true);\n try {\n const response = await api.search.semantic({ query, ...options });\n setResults(response.results as SearchResult[]);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsSearching(false);\n }\n };\n\n const findSimilar = async (nodeId: string, options?: FindSimilarOptions) => {\n setIsSearching(true);\n try {\n const response = await api.search.similar({ nodeId, ...options });\n setResults(response.results as SearchResult[]);\n setError(null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsSearching(false);\n }\n };\n\n return {\n results,\n isSearching,\n error,\n search,\n findSimilar,\n clearResults: () => setResults([]),\n };\n}\n","import { useEffect } from 'react';\nimport type { AnalysisRun, NeuronEventType, NeuronNode } from '../../core/types';\nimport type {\n AnalysisCompletedEventPayload,\n AnalysisFailedEventPayload,\n AnalysisProgressEventPayload,\n AnalysisStartedEventPayload,\n EventHandler,\n EventSubscription,\n NodeCreatedEventPayload,\n NodeDeletedEventPayload,\n NodeUpdatedEventPayload,\n} from '../../core/types/events';\nimport { useNeuronContext } from './useNeuronContext';\nimport { createEvent } from '../../core/events/event-bus';\n\nexport function useNeuronEvents() {\n const { events } = useNeuronContext();\n\n return {\n subscribe: <T>(type: NeuronEventType, handler: EventHandler<T>) => {\n useEffect(() => {\n const sub = events.subscribe(type, handler);\n return () => sub.unsubscribe();\n }, [type, handler]);\n },\n emit: <T>(type: NeuronEventType, payload: T) => {\n events.emit(createEvent(type, payload, 'ui'));\n },\n };\n}\n\nexport function useNodeEvents(handlers: {\n onCreated?: (node: NeuronNode) => void;\n onUpdated?: (node: NeuronNode) => void;\n onDeleted?: (nodeId: string) => void;\n}): void {\n const { events } = useNeuronContext();\n\n useEffect(() => {\n const subs: EventSubscription[] = [];\n if (handlers.onCreated) {\n subs.push(\n events.subscribe('node:created', (event) =>\n handlers.onCreated?.((event.payload as NodeCreatedEventPayload).node)\n )\n );\n }\n if (handlers.onUpdated) {\n subs.push(\n events.subscribe('node:updated', (event) =>\n handlers.onUpdated?.((event.payload as NodeUpdatedEventPayload).node)\n )\n );\n }\n if (handlers.onDeleted) {\n subs.push(\n events.subscribe('node:deleted', (event) =>\n handlers.onDeleted?.((event.payload as NodeDeletedEventPayload).nodeId)\n )\n );\n }\n return () => subs.forEach((sub) => sub.unsubscribe());\n }, [handlers]);\n}\n\nexport function useAnalysisEvents(handlers: {\n onStarted?: (jobId: string) => void;\n onProgress?: (jobId: string, progress: number) => void;\n onCompleted?: (job: AnalysisRun) => void;\n onFailed?: (jobId: string, error: string) => void;\n}): void {\n const { events } = useNeuronContext();\n\n useEffect(() => {\n const subs: EventSubscription[] = [];\n if (handlers.onStarted) {\n subs.push(\n events.subscribe('analysis:started', (event) =>\n handlers.onStarted?.((event.payload as AnalysisStartedEventPayload).jobId)\n )\n );\n }\n if (handlers.onProgress) {\n subs.push(\n events.subscribe('analysis:progress', (event) => {\n const payload = event.payload as AnalysisProgressEventPayload;\n return handlers.onProgress?.(payload.jobId, payload.progress);\n })\n );\n }\n if (handlers.onCompleted) {\n subs.push(\n events.subscribe('analysis:completed', (event) =>\n handlers.onCompleted?.((event.payload as AnalysisCompletedEventPayload).job)\n )\n );\n }\n if (handlers.onFailed) {\n subs.push(\n events.subscribe('analysis:failed', (event) => {\n const payload = event.payload as AnalysisFailedEventPayload;\n return handlers.onFailed?.(payload.jobId, payload.error);\n })\n );\n }\n return () => subs.forEach((sub) => sub.unsubscribe());\n }, [handlers]);\n}\n","import type {\n AnalysisRequest,\n AnalysisResponse,\n CancelAnalysisResponse,\n CreateEdgesRequest,\n CreateEdgesResponse,\n CreateNodesRequest,\n CreateNodesResponse,\n DeleteEdgeResponse,\n DeleteNodeResponse,\n ExpandGraphRequest,\n ExpandGraphResponse,\n FindPathRequest,\n FindPathResponse,\n FindSimilarRequest,\n FindSimilarResponse,\n GetAnalysisJobResponse,\n GetGraphParams,\n GetGraphResponse,\n GetNodeResponse,\n GetSettingsResponse,\n ListEdgesParams,\n ListEdgesResponse,\n ListNodesParams,\n ListNodesResponse,\n SemanticSearchRequest,\n SemanticSearchResponse,\n UpdateEdgeRequest,\n UpdateNodeRequest,\n UpdateSettingsRequest,\n UpdateSettingsResponse,\n ResetSettingsResponse,\n} from '../core/types/api';\n\nexport class NeuronApiClient {\n constructor(private basePath: string) {}\n\n private async request<T>(path: string, options?: RequestInit): Promise<T> {\n const response = await fetch(`${this.basePath}${path}`, {\n headers: { 'Content-Type': 'application/json' },\n ...options,\n });\n if (!response.ok) {\n throw new Error(`Request failed: ${response.status}`);\n }\n return response.json() as Promise<T>;\n }\n\n nodes = {\n list: (params?: ListNodesParams) =>\n this.request<ListNodesResponse>(`/nodes?${new URLSearchParams(params as Record<string, string>)}`),\n get: (id: string) => this.request<GetNodeResponse>(`/nodes/${id}`),\n create: (data: CreateNodesRequest) =>\n this.request<CreateNodesResponse>('/nodes', { method: 'POST', body: JSON.stringify(data) }),\n update: (id: string, data: UpdateNodeRequest) =>\n this.request(`/nodes/${id}`, { method: 'PATCH', body: JSON.stringify(data) }),\n delete: (id: string) => this.request<DeleteNodeResponse>(`/nodes/${id}`, { method: 'DELETE' }),\n };\n\n edges = {\n list: (params?: ListEdgesParams) =>\n this.request<ListEdgesResponse>(`/edges?${new URLSearchParams(params as Record<string, string>)}`),\n create: (data: CreateEdgesRequest) =>\n this.request<CreateEdgesResponse>('/edges', { method: 'POST', body: JSON.stringify(data) }),\n update: (id: string, data: UpdateEdgeRequest) =>\n this.request(`/edges/${id}`, { method: 'PATCH', body: JSON.stringify(data) }),\n delete: (id: string) => this.request<DeleteEdgeResponse>(`/edges/${id}`, { method: 'DELETE' }),\n };\n\n graph = {\n get: (params?: GetGraphParams) =>\n this.request<GetGraphResponse>(`/graph?${new URLSearchParams(params as Record<string, string>)}`),\n expand: (data: ExpandGraphRequest) =>\n this.request<ExpandGraphResponse>('/graph/expand', { method: 'POST', body: JSON.stringify(data) }),\n findPath: (data: FindPathRequest) =>\n this.request<FindPathResponse>('/graph/path', { method: 'POST', body: JSON.stringify(data) }),\n };\n\n analyze = {\n start: (data: AnalysisRequest) =>\n this.request<AnalysisResponse>('/analyze', { method: 'POST', body: JSON.stringify(data) }),\n getStatus: (jobId: string) => this.request<GetAnalysisJobResponse>(`/analyze/${jobId}`),\n cancel: (jobId: string) =>\n this.request<CancelAnalysisResponse>(`/analyze/${jobId}/cancel`, { method: 'POST' }),\n };\n\n settings = {\n get: () => this.request<GetSettingsResponse>('/settings'),\n update: (data: UpdateSettingsRequest) =>\n this.request<UpdateSettingsResponse>('/settings', { method: 'PATCH', body: JSON.stringify(data) }),\n reset: () => this.request<ResetSettingsResponse>('/settings/reset', { method: 'POST' }),\n };\n\n search = {\n semantic: (data: SemanticSearchRequest) =>\n this.request<SemanticSearchResponse>('/search', { method: 'POST', body: JSON.stringify(data) }),\n similar: (data: FindSimilarRequest) =>\n this.request<FindSimilarResponse>('/search/similar', { method: 'POST', body: JSON.stringify(data) }),\n };\n}\n","'use client';\n\nimport React, { useEffect, useMemo, useState } from 'react';\nimport type { NeuronSettings, NeuronConfig, NeuronSettingsUpdate } from '../core/types/settings';\nimport type { NeuronEvent } from '../core/types/events';\nimport { DEFAULT_ANALYSIS_SETTINGS, DEFAULT_VISUALIZATION_SETTINGS } from '../core/types/settings';\nimport { EventBus } from '../core/events/event-bus';\nimport { NeuronApiClient } from './api-client';\nimport { NeuronContext, type ErrorContext } from './context';\n\nexport interface NeuronWebProviderProps {\n children: React.ReactNode;\n config: {\n openaiApiKey?: string;\n databaseUrl?: string;\n settings?: Partial<NeuronSettings>;\n onEvent?: (event: NeuronEvent) => void;\n onError?: (error: Error, context: ErrorContext) => void;\n };\n}\n\nconst buildDefaultConfig = (overrides?: Partial<NeuronSettings>): NeuronConfig => ({\n instance: {\n name: 'default',\n version: '0.1.1',\n repoName: 'omi-neuron-web',\n },\n visualization: { ...DEFAULT_VISUALIZATION_SETTINGS, ...(overrides?.visualization ?? {}) },\n analysis: { ...DEFAULT_ANALYSIS_SETTINGS, ...(overrides?.analysis ?? {}) },\n nodeTypes: overrides?.nodeTypes ?? [],\n domains: overrides?.domains ?? [],\n relationshipTypes: overrides?.relationshipTypes ?? [],\n openai: {\n apiKey: '',\n },\n database: {\n mode: 'external',\n port: 5433,\n url: undefined,\n },\n api: {\n basePath: '/api/neuron',\n enableCors: false,\n },\n logging: {\n level: 'info',\n prettyPrint: true,\n },\n});\n\nexport function NeuronWebProvider({ children, config }: NeuronWebProviderProps): React.ReactElement {\n const [settings, setSettings] = useState<NeuronSettings>(() =>\n buildDefaultConfig(config.settings) as NeuronSettings\n );\n const [error, setError] = useState<Error | null>(null);\n const [isInitialized, setIsInitialized] = useState(false);\n\n const resolvedConfig = useMemo(() => {\n const base = buildDefaultConfig(config.settings);\n return {\n ...base,\n openai: {\n apiKey: config.openaiApiKey ?? base.openai.apiKey,\n },\n database: {\n ...base.database,\n url: config.databaseUrl ?? base.database.url,\n },\n } as NeuronConfig;\n }, [config]);\n\n const apiClient = useMemo(() => new NeuronApiClient(resolvedConfig.api.basePath), [resolvedConfig]);\n const eventBus = useMemo(() => new EventBus(), []);\n\n useEffect(() => {\n eventBus.subscribeAll((event) => config.onEvent?.(event));\n }, [eventBus, config]);\n\n useEffect(() => {\n let mounted = true;\n apiClient\n .settings.get()\n .then((response) => {\n if (mounted) {\n setSettings(response.settings as NeuronSettings);\n setIsInitialized(true);\n }\n })\n .catch((err) => {\n setError(err as Error);\n config.onError?.(err as Error, { message: 'Failed to load settings' });\n });\n return () => {\n mounted = false;\n };\n }, [apiClient]);\n\n const updateSettings = async (updates: Partial<NeuronSettings>) => {\n const response = await apiClient.settings.update(updates as NeuronSettingsUpdate);\n setSettings(response.settings as NeuronSettings);\n };\n\n const resetSettings = async () => {\n const response = await apiClient.settings.reset();\n setSettings(response.settings as NeuronSettings);\n };\n\n const contextValue = useMemo(\n () => ({\n config: resolvedConfig,\n settings,\n api: apiClient,\n events: eventBus,\n isInitialized,\n error,\n updateSettings,\n resetSettings,\n onEvent: config.onEvent,\n onError: config.onError,\n }),\n [resolvedConfig, settings, apiClient, eventBus, isInitialized, error, config]\n );\n\n return <NeuronContext.Provider value={contextValue}>{children}</NeuronContext.Provider>;\n}\n","/**\n * omi-neuron-web\n * A drop-in Next.js library for data analysis and 3D visualization\n */\n\n// Core types\nexport * from './core/types';\nexport * from './core/schemas';\nexport * from './core/events';\nexport { DataProcessor } from './core/analysis/data-processor';\nexport { EmbeddingsService } from './core/analysis/embeddings-service';\nexport { ClusteringEngine } from './core/analysis/clustering-engine';\nexport { RelationshipEngine } from './core/analysis/relationship-engine';\nexport { ScoringEngine } from './core/analysis/scoring-engine';\nexport { AnalysisPipeline } from './core/analysis/pipeline';\nexport * from './storage';\nexport * from './config';\n\n// Visualization\nexport { NeuronWeb } from './visualization';\nexport type { NeuronWebProps, NeuronWebTheme, NeuronLayoutOptions, NeuronLayoutMode } from './visualization';\n\n// Re-export hooks (when implemented)\nexport * from './react/hooks';\n\n// Re-export provider (when implemented)\nexport { NeuronWebProvider } from './react/NeuronWebProvider';\n\n// Version\nexport const VERSION = '0.1.1';\n\n"]}
|