@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/visualization/constants.ts","../src/visualization/scene/scene-manager.ts","../src/visualization/hooks/useSceneManager.ts","../src/visualization/scene/node-renderer.ts","../src/visualization/scene/edge-renderer.ts","../src/visualization/layouts/fuzzy-layout.ts","../src/visualization/interactions/interaction-manager.ts","../src/visualization/animations/animation-controller.ts","../src/visualization/NeuronWeb.tsx","../src/visualization/themes/theme-engine.ts"],"names":["THREE","CSS2DRenderer","OrbitControls","useState","useEffect","THREE2","THREE3","THREE4","useRef","useMemo","THREE5","jsx","jsxs"],"mappings":"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","file":"chunk-KC7V76I3.cjs","sourcesContent":["import type { NeuronWebTheme } from './types';\n\nexport const DEFAULT_THEME: NeuronWebTheme = {\n colors: {\n background: '#020314',\n domainColors: {},\n defaultDomainColor: '#c0c5ff',\n edgeDefault: '#4d4d55',\n edgeActive: '#c6d4ff',\n edgeSelected: '#ffffff',\n labelText: '#ffffff',\n labelBackground: 'rgba(0, 0, 0, 0.8)',\n },\n typography: {\n labelFontFamily: 'system-ui, sans-serif',\n labelFontSize: 12,\n labelFontWeight: '500',\n },\n effects: {\n starfieldEnabled: true,\n starfieldColor: '#ffffff',\n glowEnabled: true,\n glowIntensity: 0.6,\n ambientMotionEnabled: true,\n ambientMotionSpeed: 0.6,\n ambientMotionAmplitude: 0.25,\n edgeFlowEnabled: true,\n edgeFlowSpeed: 1.2,\n fogEnabled: true,\n fogColor: '#020314',\n fogNear: 32,\n fogFar: 180,\n },\n animation: {\n focusDuration: 800,\n transitionDuration: 650,\n easing: 'easeInOut',\n hoverScale: 1.12,\n selectedScale: 1.4,\n selectionPulseScale: 0.35,\n selectionPulseDuration: 520,\n hoverCardFadeDuration: 160,\n },\n};\n","import * as THREE from 'three';\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\nimport { CSS2DRenderer } from 'three/examples/jsm/renderers/CSS2DRenderer.js';\n\nexport interface SceneConfig {\n backgroundColor: string;\n cameraPosition: [number, number, number];\n cameraTarget: [number, number, number];\n minZoom: number;\n maxZoom: number;\n enableStarfield: boolean;\n starfieldCount: number;\n starfieldColor: string;\n pixelRatioCap: number;\n ambientLightIntensity?: number;\n keyLightIntensity?: number;\n fillLightIntensity?: number;\n fogEnabled?: boolean;\n fogColor?: string;\n fogNear?: number;\n fogFar?: number;\n}\n\nexport class SceneManager {\n scene: THREE.Scene;\n camera: THREE.PerspectiveCamera;\n renderer: THREE.WebGLRenderer;\n labelRenderer: CSS2DRenderer;\n controls: OrbitControls;\n private animationId: number | null = null;\n private lastFrameTime = 0;\n private elapsedTime = 0;\n private frameListeners = new Set<(delta: number, elapsed: number) => void>();\n private starfield: THREE.Points | null = null;\n private ambientLight: THREE.AmbientLight | null = null;\n private keyLight: THREE.DirectionalLight | null = null;\n private fillLight: THREE.PointLight | null = null;\n\n constructor(private container: HTMLElement, private config: SceneConfig) {\n this.scene = new THREE.Scene();\n this.camera = new THREE.PerspectiveCamera(60, 1, 0.1, 2000);\n this.renderer = new THREE.WebGLRenderer({ antialias: true });\n this.labelRenderer = new CSS2DRenderer();\n this.controls = new OrbitControls(this.camera, this.renderer.domElement);\n }\n\n initialize(): void {\n const { cameraPosition, cameraTarget, backgroundColor } = this.config;\n this.scene.background = new THREE.Color(backgroundColor);\n if (this.config.fogEnabled) {\n const fogColor = this.config.fogColor ?? backgroundColor;\n this.scene.fog = new THREE.Fog(fogColor, this.config.fogNear ?? 32, this.config.fogFar ?? 200);\n }\n this.camera.position.set(...cameraPosition);\n this.controls.target.set(...cameraTarget);\n this.controls.minDistance = this.config.minZoom;\n this.controls.maxDistance = this.config.maxZoom;\n this.controls.update();\n\n this.renderer.setPixelRatio(Math.min(window.devicePixelRatio || 1, this.config.pixelRatioCap));\n this.renderer.outputColorSpace = THREE.SRGBColorSpace;\n this.renderer.toneMapping = THREE.ACESFilmicToneMapping;\n this.renderer.toneMappingExposure = 1.05;\n this.renderer.setSize(this.container.clientWidth, this.container.clientHeight);\n this.labelRenderer.setSize(this.container.clientWidth, this.container.clientHeight);\n this.labelRenderer.domElement.style.position = 'absolute';\n this.labelRenderer.domElement.style.top = '0';\n this.labelRenderer.domElement.style.left = '0';\n this.labelRenderer.domElement.style.pointerEvents = 'none';\n this.labelRenderer.domElement.style.width = '100%';\n this.labelRenderer.domElement.style.height = '100%';\n\n this.container.appendChild(this.renderer.domElement);\n this.container.appendChild(this.labelRenderer.domElement);\n\n this.initLights();\n if (this.config.enableStarfield) {\n this.initStarfield();\n }\n\n window.addEventListener('resize', this.resize);\n this.startAnimationLoop();\n }\n\n dispose(): void {\n this.stopAnimationLoop();\n window.removeEventListener('resize', this.resize);\n this.renderer.dispose();\n this.scene.clear();\n this.container.innerHTML = '';\n this.frameListeners.clear();\n this.starfield = null;\n this.ambientLight = null;\n this.keyLight = null;\n this.fillLight = null;\n }\n\n startAnimationLoop(): void {\n const loop = (time = performance.now()) => {\n if (!this.lastFrameTime) {\n this.lastFrameTime = time;\n }\n const delta = (time - this.lastFrameTime) / 1000;\n this.lastFrameTime = time;\n this.elapsedTime += delta;\n this.frameListeners.forEach((listener) => listener(delta, this.elapsedTime));\n this.render();\n this.animationId = requestAnimationFrame(loop);\n };\n loop();\n }\n\n stopAnimationLoop(): void {\n if (this.animationId) {\n cancelAnimationFrame(this.animationId);\n this.animationId = null;\n }\n }\n\n render(): void {\n this.controls.update();\n this.renderer.render(this.scene, this.camera);\n this.labelRenderer.render(this.scene, this.camera);\n }\n\n resize = (): void => {\n const width = this.container.clientWidth;\n const height = this.container.clientHeight;\n this.camera.aspect = width / height;\n this.camera.updateProjectionMatrix();\n this.renderer.setSize(width, height);\n this.labelRenderer.setSize(width, height);\n };\n\n updateBackground(color: string): void {\n this.scene.background = new THREE.Color(color);\n if (this.scene.fog && this.config.fogEnabled) {\n this.scene.fog.color = new THREE.Color(this.config.fogColor ?? color);\n }\n if (this.starfield) {\n (this.starfield.material as THREE.PointsMaterial).color = new THREE.Color(\n this.config.starfieldColor\n );\n }\n }\n\n updateCamera(position: [number, number, number]): void {\n this.camera.position.set(...position);\n }\n\n addFrameListener(listener: (delta: number, elapsed: number) => void): () => void {\n this.frameListeners.add(listener);\n return () => this.frameListeners.delete(listener);\n }\n\n getWorldPosition(screenX: number, screenY: number): THREE.Vector3 {\n return this.screenToWorld(screenX, screenY);\n }\n\n screenToWorld(x: number, y: number): THREE.Vector3 {\n const rect = this.container.getBoundingClientRect();\n const ndc = new THREE.Vector3(\n ((x - rect.left) / rect.width) * 2 - 1,\n -((y - rect.top) / rect.height) * 2 + 1,\n 0.5\n );\n ndc.unproject(this.camera);\n return ndc;\n }\n\n worldToScreen(position: THREE.Vector3): { x: number; y: number } {\n const vector = position.clone().project(this.camera);\n const rect = this.container.getBoundingClientRect();\n return {\n x: (vector.x * 0.5 + 0.5) * rect.width + rect.left,\n y: (-vector.y * 0.5 + 0.5) * rect.height + rect.top,\n };\n }\n\n onContextLost = () => {};\n onContextRestored = () => {};\n\n private initStarfield(): void {\n const count = Math.max(0, this.config.starfieldCount);\n if (!count) return;\n const geometry = new THREE.BufferGeometry();\n const positions = new Float32Array(count * 3);\n for (let i = 0; i < count; i += 1) {\n const radius = 180 + Math.random() * 120;\n const theta = Math.random() * Math.PI * 2;\n const phi = Math.acos(2 * Math.random() - 1);\n positions[i * 3] = radius * Math.sin(phi) * Math.cos(theta);\n positions[i * 3 + 1] = radius * Math.sin(phi) * Math.sin(theta);\n positions[i * 3 + 2] = radius * Math.cos(phi);\n }\n geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3));\n const material = new THREE.PointsMaterial({\n color: this.config.starfieldColor,\n size: 0.6,\n sizeAttenuation: true,\n transparent: true,\n opacity: 0.45,\n depthWrite: false,\n });\n this.starfield = new THREE.Points(geometry, material);\n this.starfield.name = 'neuron-starfield';\n this.scene.add(this.starfield);\n }\n\n private initLights(): void {\n const ambientIntensity = this.config.ambientLightIntensity ?? 0.65;\n const keyIntensity = this.config.keyLightIntensity ?? 1.0;\n const fillIntensity = this.config.fillLightIntensity ?? 0.45;\n\n this.ambientLight = new THREE.AmbientLight('#ffffff', ambientIntensity);\n this.keyLight = new THREE.DirectionalLight('#b6c6ff', keyIntensity);\n this.keyLight.position.set(12, 18, 16);\n this.fillLight = new THREE.PointLight('#5c7aff', fillIntensity, 120, 2.2);\n this.fillLight.position.set(-18, -6, 10);\n\n this.scene.add(this.ambientLight, this.keyLight, this.fillLight);\n }\n}\n","import { useEffect, useState } from 'react';\nimport type { RefObject } from 'react';\nimport { SceneManager, type SceneConfig } from '../scene/scene-manager';\n\nexport function useSceneManager(\n containerRef: RefObject<HTMLElement | null>,\n config: SceneConfig\n): SceneManager | null {\n const [manager, setManager] = useState<SceneManager | null>(null);\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n const sceneManager = new SceneManager(container, config);\n sceneManager.initialize();\n setManager(sceneManager);\n return () => {\n sceneManager.dispose();\n setManager(null);\n };\n }, [containerRef, config.backgroundColor]);\n\n return manager;\n}\n","import * as THREE from 'three';\nimport type { NeuronVisualNode, NodeTier } from '../../core/types';\n\nexport interface NodeRenderConfig {\n domainColors: Record<string, string>;\n defaultColor: string;\n baseScale: number;\n tierScales: Record<NodeTier, number>;\n glowIntensity: number;\n labelDistance: number;\n maxVisibleLabels: number;\n ambientMotionEnabled: boolean;\n ambientMotionAmplitude: number;\n ambientMotionSpeed: number;\n hoverScale: number;\n selectedScale: number;\n pulseScale: number;\n pulseDuration: number;\n}\n\ninterface NodeRenderState {\n mesh: THREE.Mesh;\n basePosition: THREE.Vector3;\n baseScale: number;\n phase: number;\n baseColor: THREE.Color;\n hovered: boolean;\n selected: boolean;\n pulseStart: number | null;\n}\n\nexport class NodeRenderer {\n private group = new THREE.Group();\n private nodeStates = new Map<string, NodeRenderState>();\n private hoveredNodeId: string | null = null;\n private selectedNodeId: string | null = null;\n\n constructor(private scene: THREE.Scene, private config: NodeRenderConfig) {\n this.scene.add(this.group);\n }\n\n renderNodes(nodes: NeuronVisualNode[]): void {\n this.clear();\n nodes.forEach((node) => {\n const color = new THREE.Color(\n this.config.domainColors[node.domain] ?? this.config.defaultColor\n );\n const geometry = new THREE.SphereGeometry(this.config.baseScale, 18, 18);\n const material = new THREE.MeshStandardMaterial({\n color,\n roughness: 0.45,\n metalness: 0.1,\n emissive: color.clone().multiplyScalar(this.config.glowIntensity * 0.4),\n emissiveIntensity: 1,\n });\n const mesh = new THREE.Mesh(geometry, material);\n const position = new THREE.Vector3();\n if (node.position) {\n position.set(...node.position);\n }\n mesh.position.copy(position);\n const tierScale = node.tier ? this.config.tierScales[node.tier] ?? 1 : 1;\n const baseScale = this.config.baseScale * tierScale;\n mesh.scale.setScalar(baseScale);\n mesh.userData = { nodeId: node.id, nodeSlug: node.slug };\n this.group.add(mesh);\n this.nodeStates.set(node.id, {\n mesh,\n basePosition: position.clone(),\n baseScale,\n phase: Math.random() * Math.PI * 2,\n baseColor: color,\n hovered: false,\n selected: false,\n pulseStart: null,\n });\n });\n }\n\n updateNode(nodeId: string, updates: Partial<NeuronVisualNode>): void {\n const state = this.nodeStates.get(nodeId);\n if (!state) return;\n if (updates.position) {\n state.basePosition.set(...updates.position);\n state.mesh.position.set(...updates.position);\n }\n if (updates.tier) {\n const tierScale = this.config.tierScales[updates.tier] ?? 1;\n state.baseScale = this.config.baseScale * tierScale;\n }\n if (updates.domain) {\n const color = new THREE.Color(\n this.config.domainColors[updates.domain] ?? this.config.defaultColor\n );\n state.baseColor = color;\n const material = state.mesh.material as THREE.MeshStandardMaterial;\n material.color = color;\n material.emissive = color.clone().multiplyScalar(this.config.glowIntensity * 0.4);\n }\n }\n\n removeNode(nodeId: string): void {\n const state = this.nodeStates.get(nodeId);\n if (!state) return;\n this.group.remove(state.mesh);\n this.nodeStates.delete(nodeId);\n }\n\n clear(): void {\n this.group.clear();\n this.nodeStates.clear();\n this.hoveredNodeId = null;\n this.selectedNodeId = null;\n }\n\n showNodes(nodeIds: string[]): void {\n nodeIds.forEach((id) => {\n const obj = this.nodeObjects.get(id);\n if (obj) obj.visible = true;\n });\n }\n\n hideNodes(nodeIds: string[]): void {\n nodeIds.forEach((id) => {\n const obj = this.nodeObjects.get(id);\n if (obj) obj.visible = false;\n });\n }\n\n setVisibleNodes(nodeIds: string[] | null): void {\n if (!nodeIds) {\n this.nodeStates.forEach((state) => {\n state.mesh.visible = true;\n });\n return;\n }\n const visibleSet = new Set(nodeIds);\n this.nodeStates.forEach((state, id) => {\n state.mesh.visible = visibleSet.has(id);\n });\n }\n\n updateLabelVisibility(): void {\n // Labels not implemented in this stub.\n }\n\n highlightNode(nodeId: string): void {\n this.setHoveredNode(nodeId);\n }\n\n unhighlightNode(nodeId: string): void {\n if (this.hoveredNodeId === nodeId) {\n this.setHoveredNode(null);\n }\n }\n\n clearHighlights(): void {\n this.setHoveredNode(null);\n }\n\n getNodePosition(nodeId: string): THREE.Vector3 | null {\n const state = this.nodeStates.get(nodeId);\n return state ? state.mesh.position.clone() : null;\n }\n\n getNodeObject(nodeId: string): THREE.Object3D | null {\n const state = this.nodeStates.get(nodeId);\n return state?.mesh ?? null;\n }\n\n getNodeObjects(): THREE.Object3D[] {\n return Array.from(this.nodeStates.values()).map((state) => state.mesh);\n }\n\n setHoveredNode(nodeId: string | null): void {\n if (this.hoveredNodeId === nodeId) return;\n if (this.hoveredNodeId) {\n const prev = this.nodeStates.get(this.hoveredNodeId);\n if (prev) prev.hovered = false;\n }\n this.hoveredNodeId = nodeId;\n if (nodeId) {\n const next = this.nodeStates.get(nodeId);\n if (next) next.hovered = true;\n }\n }\n\n setSelectedNode(nodeId: string | null): void {\n if (this.selectedNodeId === nodeId) return;\n if (this.selectedNodeId) {\n const prev = this.nodeStates.get(this.selectedNodeId);\n if (prev) prev.selected = false;\n }\n this.selectedNodeId = nodeId;\n if (nodeId) {\n const next = this.nodeStates.get(nodeId);\n if (next) next.selected = true;\n }\n }\n\n pulseNode(nodeId: string): void {\n const state = this.nodeStates.get(nodeId);\n if (!state) return;\n state.pulseStart = performance.now() / 1000;\n }\n\n update(_: number, elapsed: number): void {\n const now = performance.now() / 1000;\n this.nodeStates.forEach((state) => {\n if (this.config.ambientMotionEnabled) {\n const drift =\n Math.sin(elapsed * this.config.ambientMotionSpeed + state.phase) *\n this.config.ambientMotionAmplitude;\n const driftX =\n Math.cos(elapsed * this.config.ambientMotionSpeed * 0.6 + state.phase) *\n this.config.ambientMotionAmplitude *\n 0.45;\n const driftZ =\n Math.sin(elapsed * this.config.ambientMotionSpeed * 0.4 + state.phase) *\n this.config.ambientMotionAmplitude *\n 0.35;\n state.mesh.position.set(\n state.basePosition.x + driftX,\n state.basePosition.y + drift,\n state.basePosition.z + driftZ\n );\n } else {\n state.mesh.position.copy(state.basePosition);\n }\n\n const hoverScale = state.hovered ? this.config.hoverScale : 1;\n const selectedScale = state.selected ? this.config.selectedScale : 1;\n let pulseScale = 0;\n if (state.pulseStart !== null) {\n const progress = (now - state.pulseStart) / this.config.pulseDuration;\n if (progress >= 1) {\n state.pulseStart = null;\n } else {\n pulseScale = Math.sin(progress * Math.PI) * this.config.pulseScale;\n }\n }\n const targetScale = state.baseScale * hoverScale * selectedScale * (1 + pulseScale);\n const currentScale = state.mesh.scale.x;\n const nextScale = currentScale + (targetScale - currentScale) * 0.18;\n state.mesh.scale.setScalar(nextScale);\n\n const material = state.mesh.material as THREE.MeshStandardMaterial;\n const emissiveBoost = state.selected ? 0.65 : state.hovered ? 0.45 : 0.25;\n material.emissive = state.baseColor.clone().multiplyScalar(this.config.glowIntensity * emissiveBoost);\n });\n }\n\n dispose(): void {\n this.clear();\n this.scene.remove(this.group);\n }\n}\n","import * as THREE from 'three';\nimport type { NeuronVisualEdge } from '../../core/types';\n\nexport interface EdgeRenderConfig {\n defaultColor: string;\n activeColor: string;\n selectedColor: string;\n baseOpacity: number;\n strengthOpacityScale: boolean;\n edgeFlowEnabled: boolean;\n edgeFlowSpeed: number;\n}\n\ninterface EdgeRenderState {\n line: THREE.Line;\n baseOpacity: number;\n phase: number;\n}\n\nexport class EdgeRenderer {\n private group = new THREE.Group();\n private edgeStates = new Map<string, EdgeRenderState>();\n private focusEdges = new Set<string>();\n\n constructor(private scene: THREE.Scene, private config: EdgeRenderConfig) {\n this.scene.add(this.group);\n }\n\n renderEdges(edges: NeuronVisualEdge[], nodePositions: Map<string, THREE.Vector3>): void {\n this.clear();\n edges.forEach((edge) => {\n const from = nodePositions.get(edge.from);\n const to = nodePositions.get(edge.to);\n if (!from || !to) return;\n const geometry = new THREE.BufferGeometry().setFromPoints([from, to]);\n const opacity = this.config.strengthOpacityScale ? edge.strength : this.config.baseOpacity;\n const material = new THREE.LineBasicMaterial({\n color: this.config.defaultColor,\n transparent: true,\n opacity,\n depthWrite: false,\n });\n const line = new THREE.Line(geometry, material);\n line.userData = { edgeId: edge.id };\n this.group.add(line);\n this.edgeStates.set(edge.id, {\n line,\n baseOpacity: opacity,\n phase: Math.random() * Math.PI * 2,\n });\n });\n }\n\n updateEdge(edgeId: string, updates: Partial<NeuronVisualEdge>): void {\n const state = this.edgeStates.get(edgeId);\n if (!state) return;\n if (updates.strength !== undefined) {\n const opacity = this.config.strengthOpacityScale ? updates.strength : this.config.baseOpacity;\n state.baseOpacity = opacity;\n (state.line.material as THREE.LineBasicMaterial).opacity = opacity;\n }\n }\n\n removeEdge(edgeId: string): void {\n const state = this.edgeStates.get(edgeId);\n if (!state) return;\n this.group.remove(state.line);\n this.edgeStates.delete(edgeId);\n }\n\n clear(): void {\n this.group.clear();\n this.edgeStates.clear();\n this.focusEdges.clear();\n }\n\n filterByStrength(minStrength: number): void {\n this.edgeStates.forEach((state) => {\n state.line.visible = (state.line.material as THREE.LineBasicMaterial).opacity >= minStrength;\n });\n }\n\n filterByType(): void {\n // Not implemented in stub.\n }\n\n highlightEdge(edgeId: string): void {\n this.setFocusEdges([edgeId]);\n }\n\n highlightEdgesForNode(): void {\n // Not implemented in stub.\n }\n\n unhighlightEdge(edgeId: string): void {\n if (this.focusEdges.has(edgeId)) {\n this.focusEdges.delete(edgeId);\n }\n }\n\n clearHighlights(): void {\n this.focusEdges.clear();\n }\n\n showEdges(edgeIds: string[]): void {\n edgeIds.forEach((id) => {\n const state = this.edgeStates.get(id);\n if (state) state.line.visible = true;\n });\n }\n\n hideEdges(edgeIds: string[]): void {\n edgeIds.forEach((id) => {\n const state = this.edgeStates.get(id);\n if (state) state.line.visible = false;\n });\n }\n\n setFocusEdges(edgeIds: string[] | null): void {\n this.focusEdges = new Set(edgeIds ?? []);\n }\n\n update(_: number, elapsed: number): void {\n const hasFocus = this.focusEdges.size > 0;\n this.edgeStates.forEach((state, id) => {\n const material = state.line.material as THREE.LineBasicMaterial;\n const isFocused = this.focusEdges.has(id);\n let opacity = state.baseOpacity;\n if (hasFocus) {\n if (isFocused) {\n const pulse = this.config.edgeFlowEnabled\n ? Math.sin(elapsed * this.config.edgeFlowSpeed + state.phase) * 0.25 + 0.75\n : 1;\n opacity = Math.min(1, state.baseOpacity + pulse * 0.4);\n material.color = new THREE.Color(this.config.activeColor);\n } else {\n opacity = Math.max(0.05, state.baseOpacity * 0.2);\n material.color = new THREE.Color(this.config.defaultColor);\n }\n } else {\n if (this.config.edgeFlowEnabled) {\n const pulse = Math.sin(elapsed * this.config.edgeFlowSpeed + state.phase) * 0.15 + 0.85;\n opacity = Math.min(1, state.baseOpacity * pulse);\n }\n material.color = new THREE.Color(this.config.defaultColor);\n }\n material.opacity = opacity;\n });\n }\n\n dispose(): void {\n this.clear();\n this.scene.remove(this.group);\n }\n}\n","import type { NeuronVisualNode } from '../../core/types';\nimport type { NeuronLayoutOptions } from '../types';\n\nconst GOLDEN_ANGLE = Math.PI * (3 - Math.sqrt(5));\n\nfunction hashString(input: string): number {\n let hash = 2166136261;\n for (let i = 0; i < input.length; i += 1) {\n hash ^= input.charCodeAt(i);\n hash = Math.imul(hash, 16777619);\n }\n return hash >>> 0;\n}\n\nfunction mulberry32(seed: number): () => number {\n let t = seed;\n return () => {\n t += 0x6d2b79f5;\n let r = Math.imul(t ^ (t >>> 15), t | 1);\n r ^= r + Math.imul(r ^ (r >>> 7), r | 61);\n return ((r ^ (r >>> 14)) >>> 0) / 4294967296;\n };\n}\n\nfunction buildSeed(baseSeed: string, nodeKey: string): () => number {\n return mulberry32(hashString(`${baseSeed}:${nodeKey}`));\n}\n\nexport function applyFuzzyLayout(\n nodes: NeuronVisualNode[],\n options: NeuronLayoutOptions = {}\n): NeuronVisualNode[] {\n const mode = options.mode ?? 'auto';\n if (mode === 'positioned') {\n return nodes;\n }\n\n const needsLayout = mode === 'fuzzy' || nodes.some((node) => !node.position);\n if (!needsLayout) {\n return nodes;\n }\n\n const baseSeed = options.seed ?? 'omi-neuron-web';\n const count = Math.max(nodes.length, 1);\n const spread = options.spread ?? 1.2;\n const baseRadius = (options.radius ?? Math.max(4, Math.sqrt(count) * 2.4)) * spread;\n const jitter = (options.jitter ?? baseRadius * 0.12) * spread;\n const zSpread = (options.zSpread ?? baseRadius * 0.6) * spread;\n\n return nodes.map((node, index) => {\n const shouldApply = mode === 'fuzzy' || !node.position;\n if (!shouldApply) {\n return node;\n }\n\n const nodeKey = node.slug || node.id || String(index);\n const rand = buildSeed(baseSeed, nodeKey);\n const angle = rand() * Math.PI * 2 + index * GOLDEN_ANGLE * 0.05;\n const radius = baseRadius * Math.sqrt(rand());\n const jitterOffset = (rand() - 0.5) * jitter;\n const r = Math.max(0.6, radius + jitterOffset);\n const x = Math.cos(angle) * r;\n const y = Math.sin(angle) * r;\n const z = (rand() - 0.5) * zSpread;\n\n return { ...node, position: [x, y, z] };\n });\n}\n","import * as THREE from 'three';\nimport type { NeuronVisualEdge, NeuronVisualNode } from '../../core/types';\n\nexport interface InteractionConfig {\n enableHover: boolean;\n enableClick: boolean;\n enableDoubleClick: boolean;\n hoverDelay: number;\n doubleClickDelay: number;\n}\n\nexport class InteractionManager {\n private raycaster = new THREE.Raycaster();\n private pointer = new THREE.Vector2();\n private nodeObjects: THREE.Object3D[] = [];\n private edgeObjects: THREE.Object3D[] = [];\n private nodeLookup = new Map<string, NeuronVisualNode>();\n private edgeLookup = new Map<string, NeuronVisualEdge>();\n private hoverTimeout: number | null = null;\n private lastHoverId: string | null = null;\n private lastClickTime = 0;\n private lastClickId: string | null = null;\n\n onNodeHover: (node: NeuronVisualNode | null) => void = () => {};\n onNodeClick: (node: NeuronVisualNode) => void = () => {};\n onNodeDoubleClick: (node: NeuronVisualNode) => void = () => {};\n onEdgeClick: (edge: NeuronVisualEdge) => void = () => {};\n onBackgroundClick: () => void = () => {};\n\n constructor(\n private scene: THREE.Scene,\n private camera: THREE.Camera,\n private renderer: THREE.WebGLRenderer,\n private config: InteractionConfig\n ) {}\n\n onPointerMove(event: PointerEvent): void {\n if (!this.config.enableHover) return;\n this.updatePointer(event);\n const node = this.getIntersectedNode(this.pointer);\n if (this.hoverTimeout) {\n window.clearTimeout(this.hoverTimeout);\n }\n this.hoverTimeout = window.setTimeout(() => {\n if (node?.id !== this.lastHoverId) {\n this.lastHoverId = node?.id ?? null;\n this.onNodeHover(node);\n }\n }, this.config.hoverDelay);\n }\n\n onPointerDown(): void {}\n\n onPointerUp(event: PointerEvent): void {\n if (!this.config.enableClick) return;\n this.updatePointer(event);\n const node = this.getIntersectedNode(this.pointer);\n if (node) {\n const now = performance.now();\n const isDouble =\n this.config.enableDoubleClick &&\n now - this.lastClickTime < this.config.doubleClickDelay &&\n this.lastClickId === node.id;\n this.lastClickTime = now;\n this.lastClickId = node.id;\n if (isDouble) {\n this.onNodeDoubleClick(node);\n } else {\n this.onNodeClick(node);\n }\n } else {\n this.onBackgroundClick();\n }\n }\n\n onKeyDown(): void {}\n\n onPointerLeave(): void {\n if (!this.config.enableHover) return;\n if (this.hoverTimeout) {\n window.clearTimeout(this.hoverTimeout);\n }\n this.hoverTimeout = window.setTimeout(() => {\n if (this.lastHoverId !== null) {\n this.lastHoverId = null;\n this.onNodeHover(null);\n }\n }, Math.max(0, this.config.hoverDelay));\n }\n\n getIntersectedNode(point: THREE.Vector2): NeuronVisualNode | null {\n this.raycaster.setFromCamera(point, this.camera);\n const intersects = this.raycaster.intersectObjects(this.nodeObjects, true);\n if (!intersects.length) return null;\n const hit = intersects[0].object;\n if (!hit.userData?.nodeId) return null;\n return this.nodeLookup.get(hit.userData.nodeId) ?? null;\n }\n\n getIntersectedEdge(): NeuronVisualEdge | null {\n return null;\n }\n\n dispose(): void {\n if (this.hoverTimeout) {\n window.clearTimeout(this.hoverTimeout);\n this.hoverTimeout = null;\n }\n }\n\n setTargets(\n nodeObjects: THREE.Object3D[],\n nodeLookup: Map<string, NeuronVisualNode>,\n edgeObjects?: THREE.Object3D[],\n edgeLookup?: Map<string, NeuronVisualEdge>\n ): void {\n this.nodeObjects = nodeObjects;\n this.nodeLookup = nodeLookup;\n this.edgeObjects = edgeObjects ?? [];\n this.edgeLookup = edgeLookup ?? new Map();\n }\n\n private updatePointer(event: PointerEvent): void {\n const rect = this.renderer.domElement.getBoundingClientRect();\n this.pointer.x = ((event.clientX - rect.left) / rect.width) * 2 - 1;\n this.pointer.y = -((event.clientY - rect.top) / rect.height) * 2 + 1;\n }\n}\n","import * as THREE from 'three';\nimport type { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\n\nexport interface AnimationConfig {\n focusDuration: number;\n transitionDuration: number;\n easing: 'linear' | 'easeInOut' | 'easeOut';\n}\n\ninterface CameraTween {\n startTime: number;\n duration: number;\n startPosition: THREE.Vector3;\n startTarget: THREE.Vector3;\n endPosition: THREE.Vector3;\n endTarget: THREE.Vector3;\n onComplete?: () => void;\n}\n\nexport class AnimationController {\n private focusTween: CameraTween | null = null;\n\n constructor(\n private camera: THREE.Camera,\n private controls: OrbitControls,\n private config: AnimationConfig\n ) {}\n\n focusOnNode(position: THREE.Vector3, callback?: () => void): void {\n const direction = this.camera.position.clone().sub(this.controls.target).normalize();\n const distance = this.camera.position.distanceTo(this.controls.target);\n const targetPosition = position.clone().add(direction.multiplyScalar(distance));\n this.focusOnPosition(targetPosition, position, callback);\n }\n\n focusOnPosition(position: THREE.Vector3, target: THREE.Vector3, callback?: () => void): void {\n const now = performance.now();\n this.focusTween = {\n startTime: now,\n duration: this.config.focusDuration,\n startPosition: this.camera.position.clone(),\n startTarget: this.controls.target.clone(),\n endPosition: position.clone(),\n endTarget: target.clone(),\n onComplete: callback,\n };\n }\n\n resetCamera(): void {\n this.controls.reset();\n }\n\n animateNodeAppear(): void {}\n\n animateNodeDisappear(): void {}\n\n animateNodesFilter(): void {}\n\n animatePath(): void {}\n\n stopPathAnimation(): void {}\n\n pause(): void {}\n\n resume(): void {}\n\n update(): void {\n if (!this.focusTween) return;\n const now = performance.now();\n const elapsed = Math.min(1, (now - this.focusTween.startTime) / this.focusTween.duration);\n const eased = this.applyEasing(elapsed);\n this.camera.position.lerpVectors(\n this.focusTween.startPosition,\n this.focusTween.endPosition,\n eased\n );\n this.controls.target.lerpVectors(\n this.focusTween.startTarget,\n this.focusTween.endTarget,\n eased\n );\n this.controls.update();\n if (elapsed >= 1) {\n const completion = this.focusTween.onComplete;\n this.focusTween = null;\n if (completion) completion();\n }\n }\n\n dispose(): void {}\n\n private applyEasing(value: number): number {\n if (this.config.easing === 'linear') return value;\n if (this.config.easing === 'easeOut') return 1 - Math.pow(1 - value, 2);\n // easeInOut\n return value < 0.5 ? 2 * value * value : 1 - Math.pow(-2 * value + 2, 2) / 2;\n }\n}\n","'use client';\n\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport * as THREE from 'three';\nimport type { NeuronWebProps } from './types';\nimport type { NeuronNode } from '../core/types';\nimport { DEFAULT_THEME } from './constants';\nimport { useSceneManager } from './hooks/useSceneManager';\nimport { NodeRenderer } from './scene/node-renderer';\nimport { EdgeRenderer } from './scene/edge-renderer';\nimport { applyFuzzyLayout } from './layouts/fuzzy-layout';\nimport { InteractionManager } from './interactions/interaction-manager';\nimport { AnimationController } from './animations/animation-controller';\n\nexport function NeuronWeb({\n graphData,\n className,\n style,\n isLoading,\n error,\n renderEmptyState,\n renderLoadingState,\n ariaLabel,\n theme,\n layout,\n renderNodeHover,\n hoverCard,\n onNodeHover,\n onNodeClick,\n onNodeDoubleClick,\n onNodeFocused,\n onBackgroundClick,\n performanceMode,\n}: NeuronWebProps): React.ReactElement {\n const containerRef = useRef<HTMLDivElement>(null);\n const hoverCardRef = useRef<HTMLDivElement>(null);\n const [hoveredNodeId, setHoveredNodeId] = useState<string | null>(null);\n const [selectedNodeId, setSelectedNodeId] = useState<string | null>(null);\n\n const resolvedTheme = useMemo(\n () => ({\n ...DEFAULT_THEME,\n colors: { ...DEFAULT_THEME.colors, ...(theme?.colors ?? {}) },\n typography: { ...DEFAULT_THEME.typography, ...(theme?.typography ?? {}) },\n effects: { ...DEFAULT_THEME.effects, ...(theme?.effects ?? {}) },\n animation: { ...DEFAULT_THEME.animation, ...(theme?.animation ?? {}) },\n }),\n [theme]\n );\n\n const resolvedPerformanceMode = useMemo(() => {\n if (performanceMode && performanceMode !== 'auto') return performanceMode;\n const count = graphData.nodes.length;\n if (count > 360) return 'fallback';\n if (count > 180) return 'degraded';\n return 'normal';\n }, [performanceMode, graphData.nodes.length]);\n\n const sceneManager = useSceneManager(containerRef, {\n backgroundColor: resolvedTheme.colors.background,\n cameraPosition: [4, 8, 20],\n cameraTarget: [0, 0, 0],\n minZoom: 4,\n maxZoom: 42,\n enableStarfield: resolvedTheme.effects.starfieldEnabled,\n starfieldCount: 1200,\n starfieldColor: resolvedTheme.effects.starfieldColor,\n pixelRatioCap: 2,\n ambientLightIntensity: 0.7,\n keyLightIntensity: 1.1,\n fillLightIntensity: 0.6,\n fogEnabled: resolvedTheme.effects.fogEnabled,\n fogColor: resolvedTheme.effects.fogColor,\n fogNear: resolvedTheme.effects.fogNear,\n fogFar: resolvedTheme.effects.fogFar,\n });\n\n const nodeRenderer = useMemo(() => {\n if (!sceneManager) return null;\n return new NodeRenderer(sceneManager.scene, {\n domainColors: resolvedTheme.colors.domainColors,\n defaultColor: resolvedTheme.colors.defaultDomainColor,\n baseScale: 0.4,\n tierScales: {\n primary: 1.6,\n secondary: 1.2,\n tertiary: 1,\n insight: 1,\n },\n glowIntensity: resolvedTheme.effects.glowEnabled ? resolvedTheme.effects.glowIntensity : 0,\n labelDistance: 20,\n maxVisibleLabels: 50,\n ambientMotionEnabled:\n resolvedTheme.effects.ambientMotionEnabled && resolvedPerformanceMode === 'normal',\n ambientMotionAmplitude: resolvedTheme.effects.ambientMotionAmplitude,\n ambientMotionSpeed: resolvedTheme.effects.ambientMotionSpeed,\n hoverScale: resolvedTheme.animation.hoverScale,\n selectedScale: resolvedTheme.animation.selectedScale,\n pulseScale: resolvedTheme.animation.selectionPulseScale,\n pulseDuration: resolvedTheme.animation.selectionPulseDuration / 1000,\n });\n }, [sceneManager, resolvedTheme, resolvedPerformanceMode]);\n\n const edgeRenderer = useMemo(() => {\n if (!sceneManager) return null;\n return new EdgeRenderer(sceneManager.scene, {\n defaultColor: resolvedTheme.colors.edgeDefault,\n activeColor: resolvedTheme.colors.edgeActive,\n selectedColor: resolvedTheme.colors.edgeSelected,\n baseOpacity: 0.5,\n strengthOpacityScale: true,\n edgeFlowEnabled:\n resolvedTheme.effects.edgeFlowEnabled && resolvedPerformanceMode === 'normal',\n edgeFlowSpeed: resolvedTheme.effects.edgeFlowSpeed,\n });\n }, [sceneManager, resolvedTheme, resolvedPerformanceMode]);\n\n const interactionManager = useMemo(() => {\n if (!sceneManager) return null;\n return new InteractionManager(sceneManager.scene, sceneManager.camera, sceneManager.renderer, {\n enableHover: true,\n enableClick: true,\n enableDoubleClick: true,\n hoverDelay: Math.max(40, resolvedTheme.animation.hoverCardFadeDuration * 0.6),\n doubleClickDelay: 280,\n });\n }, [sceneManager, resolvedTheme.animation.hoverCardFadeDuration]);\n\n const animationController = useMemo(() => {\n if (!sceneManager) return null;\n return new AnimationController(sceneManager.camera, sceneManager.controls, {\n focusDuration: resolvedTheme.animation.focusDuration,\n transitionDuration: resolvedTheme.animation.transitionDuration,\n easing: resolvedTheme.animation.easing as 'linear' | 'easeInOut' | 'easeOut',\n });\n }, [sceneManager, resolvedTheme]);\n\n const resolvedNodes = useMemo(\n () => applyFuzzyLayout(graphData.nodes, layout),\n [graphData.nodes, layout]\n );\n\n const nodeMap = useMemo(\n () => new Map(resolvedNodes.map((node) => [node.id, node])),\n [resolvedNodes]\n );\n\n const nodeSlugById = useMemo(() => {\n const map = new Map<string, string>();\n resolvedNodes.forEach((node) => map.set(node.id, node.slug));\n return map;\n }, [resolvedNodes]);\n\n const edgesBySlug = useMemo(() => {\n const map = new Map<string, string[]>();\n graphData.edges.forEach((edge) => {\n const add = (slug: string) => {\n const list = map.get(slug);\n if (list) list.push(edge.id);\n else map.set(slug, [edge.id]);\n };\n add(edge.from);\n add(edge.to);\n });\n return map;\n }, [graphData.edges]);\n\n const hoveredNode = hoveredNodeId ? nodeMap.get(hoveredNodeId) ?? null : null;\n const hoverCardEnabled =\n (hoverCard?.enabled ?? true) && resolvedPerformanceMode !== 'fallback';\n const hoverCardOffset = hoverCard?.offset ?? [18, 18];\n const hoverCardWidth = hoverCard?.width ?? 240;\n\n useEffect(() => {\n if (!sceneManager || !nodeRenderer || !edgeRenderer) return;\n nodeRenderer.renderNodes(resolvedNodes);\n const positions = new Map<string, THREE.Vector3>();\n resolvedNodes.forEach((node) => {\n if (!node.position) return;\n positions.set(node.slug, new THREE.Vector3(...node.position));\n });\n edgeRenderer.renderEdges(graphData.edges, positions);\n }, [resolvedNodes, graphData.edges, sceneManager, nodeRenderer, edgeRenderer]);\n\n useEffect(() => {\n if (!sceneManager) return;\n sceneManager.updateBackground(resolvedTheme.colors.background);\n }, [sceneManager, resolvedTheme.colors.background]);\n\n useEffect(() => {\n if (!sceneManager) return;\n sceneManager.controls.enableDamping = true;\n sceneManager.controls.dampingFactor = 0.08;\n }, [sceneManager]);\n\n useEffect(() => {\n if (!sceneManager) return;\n sceneManager.renderer.domElement.style.cursor = hoveredNodeId ? 'pointer' : 'grab';\n }, [sceneManager, hoveredNodeId]);\n\n useEffect(() => {\n if (!sceneManager || !nodeRenderer || !edgeRenderer) return;\n return sceneManager.addFrameListener((delta, elapsed) => {\n nodeRenderer.update(delta, elapsed);\n edgeRenderer.update(delta, elapsed);\n animationController?.update();\n if (hoverCardRef.current && hoveredNodeId) {\n const position = nodeRenderer.getNodePosition(hoveredNodeId);\n const rect = containerRef.current?.getBoundingClientRect();\n if (position && rect) {\n const screen = sceneManager.worldToScreen(position);\n const cardWidth = hoverCardRef.current.offsetWidth;\n const cardHeight = hoverCardRef.current.offsetHeight;\n const rawX = screen.x - rect.left + hoverCardOffset[0];\n const rawY = screen.y - rect.top + hoverCardOffset[1];\n const maxX = Math.max(8, rect.width - cardWidth - 8);\n const maxY = Math.max(8, rect.height - cardHeight - 8);\n const x = Math.min(Math.max(rawX, 8), maxX);\n const y = Math.min(Math.max(rawY, 8), maxY);\n hoverCardRef.current.style.transform = `translate(${x}px, ${y}px)`;\n }\n }\n });\n }, [\n sceneManager,\n nodeRenderer,\n edgeRenderer,\n animationController,\n hoveredNodeId,\n hoverCardOffset,\n ]);\n\n useEffect(() => {\n if (!interactionManager || !nodeRenderer) return;\n interactionManager.setTargets(nodeRenderer.getNodeObjects(), nodeMap);\n }, [interactionManager, nodeRenderer, nodeMap]);\n\n useEffect(() => {\n if (!interactionManager || !nodeRenderer || !edgeRenderer) return;\n interactionManager.onNodeHover = (node) => {\n const nodeId = node?.id ?? null;\n setHoveredNodeId(nodeId);\n nodeRenderer.setHoveredNode(nodeId);\n if (nodeId) {\n const slug = nodeSlugById.get(nodeId);\n edgeRenderer.setFocusEdges(slug ? edgesBySlug.get(slug) ?? [] : []);\n } else {\n const selectedSlug = selectedNodeId ? nodeSlugById.get(selectedNodeId) : null;\n if (selectedSlug) {\n edgeRenderer.setFocusEdges(edgesBySlug.get(selectedSlug) ?? []);\n } else {\n edgeRenderer.setFocusEdges(null);\n }\n }\n if (onNodeHover) {\n onNodeHover(node ? (node as unknown as NeuronNode) : null);\n }\n };\n interactionManager.onNodeClick = (node) => {\n setSelectedNodeId(node.id);\n nodeRenderer.setSelectedNode(node.id);\n nodeRenderer.pulseNode(node.id);\n const slug = nodeSlugById.get(node.id);\n edgeRenderer.setFocusEdges(slug ? edgesBySlug.get(slug) ?? [] : []);\n if (onNodeClick) {\n onNodeClick(node as unknown as NeuronNode);\n }\n };\n interactionManager.onNodeDoubleClick = (node) => {\n const nodePosition = nodeRenderer.getNodePosition(node.id);\n if (nodePosition) {\n animationController?.focusOnNode(nodePosition, () => {\n if (onNodeFocused) onNodeFocused(node as unknown as NeuronNode);\n });\n }\n if (onNodeDoubleClick) {\n onNodeDoubleClick(node as unknown as NeuronNode);\n }\n };\n interactionManager.onBackgroundClick = () => {\n setSelectedNodeId(null);\n nodeRenderer.setSelectedNode(null);\n if (!hoveredNodeId) {\n edgeRenderer.setFocusEdges(null);\n }\n if (onBackgroundClick) onBackgroundClick();\n };\n }, [\n interactionManager,\n nodeRenderer,\n edgeRenderer,\n nodeSlugById,\n edgesBySlug,\n animationController,\n hoveredNodeId,\n selectedNodeId,\n onNodeHover,\n onNodeClick,\n onNodeDoubleClick,\n onNodeFocused,\n onBackgroundClick,\n ]);\n\n useEffect(() => {\n if (!sceneManager || !interactionManager) return;\n const element = sceneManager.renderer.domElement;\n const handleMove = (event: PointerEvent) => interactionManager.onPointerMove(event);\n const handleUp = (event: PointerEvent) => interactionManager.onPointerUp(event);\n const handleLeave = () => interactionManager.onPointerLeave();\n element.addEventListener('pointermove', handleMove);\n element.addEventListener('pointerup', handleUp);\n element.addEventListener('pointerleave', handleLeave);\n return () => {\n element.removeEventListener('pointermove', handleMove);\n element.removeEventListener('pointerup', handleUp);\n element.removeEventListener('pointerleave', handleLeave);\n };\n }, [sceneManager, interactionManager]);\n\n if (isLoading) {\n return (\n <div className={className} style={style} aria-label={ariaLabel}>\n {renderLoadingState ? renderLoadingState() : <div>Loading…</div>}\n </div>\n );\n }\n\n if (error) {\n return (\n <div className={className} style={style} aria-label={ariaLabel}>\n {renderEmptyState ? renderEmptyState() : <div>{error}</div>}\n </div>\n );\n }\n\n if (!resolvedNodes.length) {\n return (\n <div className={className} style={style} aria-label={ariaLabel}>\n {renderEmptyState ? renderEmptyState() : <div>No data</div>}\n </div>\n );\n }\n\n return (\n <div\n className={className}\n style={{ position: 'relative', width: '100%', height: '100%', overflow: 'hidden', ...style }}\n aria-label={ariaLabel}\n >\n <div ref={containerRef} style={{ width: '100%', height: '100%' }} />\n {hoverCardEnabled && hoveredNode && (\n <div\n ref={hoverCardRef}\n style={{\n position: 'absolute',\n width: hoverCardWidth,\n pointerEvents: 'none',\n padding: '12px 14px',\n borderRadius: 12,\n background:\n 'linear-gradient(135deg, rgba(11, 15, 35, 0.95) 0%, rgba(20, 24, 52, 0.9) 100%)',\n border: '1px solid rgba(120, 140, 255, 0.35)',\n boxShadow: '0 18px 45px rgba(5, 10, 30, 0.55)',\n color: resolvedTheme.colors.labelText,\n fontFamily: resolvedTheme.typography.labelFontFamily,\n fontSize: 12,\n zIndex: 4,\n opacity: 0.98,\n transition: `opacity ${resolvedTheme.animation.hoverCardFadeDuration}ms ease`,\n transform: `translate(${hoverCardOffset[0]}px, ${hoverCardOffset[1]}px)`,\n }}\n >\n {renderNodeHover ? (\n renderNodeHover(hoveredNode)\n ) : (\n <div>\n <div style={{ fontSize: 13, fontWeight: 600, marginBottom: 6 }}>\n {hoveredNode.label}\n </div>\n <div style={{ opacity: 0.75 }}>\n {typeof hoveredNode.metadata?.summary === 'string'\n ? hoveredNode.metadata.summary\n : 'Click to focus this node and explore connections.'}\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { DEFAULT_THEME } from '../constants';\nimport type { NeuronWebTheme, NeuronWebThemeOverride } from '../types';\n\nexport class ThemeEngine {\n private theme: NeuronWebTheme;\n onThemeChange: (theme: NeuronWebTheme) => void = () => {};\n\n constructor(initialTheme?: NeuronWebThemeOverride) {\n this.theme = this.mergeTheme(DEFAULT_THEME, initialTheme);\n }\n\n getTheme(): NeuronWebTheme {\n return this.theme;\n }\n\n setTheme(theme: NeuronWebThemeOverride): void {\n this.theme = this.mergeTheme(this.theme, theme);\n this.onThemeChange(this.theme);\n }\n\n resetTheme(): void {\n this.theme = { ...DEFAULT_THEME };\n this.onThemeChange(this.theme);\n }\n\n setDomainColor(domain: string, color: string): void {\n this.theme.colors.domainColors[domain] = color;\n this.onThemeChange(this.theme);\n }\n\n setBackground(color: string): void {\n this.theme.colors.background = color;\n this.onThemeChange(this.theme);\n }\n\n setLabelStyle(style: Partial<NeuronWebTheme['typography']>): void {\n this.theme.typography = { ...this.theme.typography, ...style };\n this.onThemeChange(this.theme);\n }\n\n applyPreset(preset: 'dark' | 'light' | 'custom'): void {\n if (preset === 'light') {\n this.theme = this.mergeTheme(DEFAULT_THEME, {\n colors: { background: '#f7f7fb', labelText: '#111' },\n });\n } else if (preset === 'dark') {\n this.theme = { ...DEFAULT_THEME };\n }\n this.onThemeChange(this.theme);\n }\n\n saveToStorage(): void {\n if (typeof window === 'undefined') return;\n window.localStorage.setItem('omi-neuron-theme', JSON.stringify(this.theme));\n }\n\n loadFromStorage(): void {\n if (typeof window === 'undefined') return;\n const stored = window.localStorage.getItem('omi-neuron-theme');\n if (stored) {\n this.theme = this.mergeTheme(this.theme, JSON.parse(stored) as NeuronWebTheme);\n }\n }\n\n private mergeTheme(base: NeuronWebTheme, next?: NeuronWebThemeOverride): NeuronWebTheme {\n if (!next) return { ...base };\n return {\n ...base,\n ...next,\n colors: { ...base.colors, ...(next.colors ?? {}) },\n typography: { ...base.typography, ...(next.typography ?? {}) },\n effects: { ...base.effects, ...(next.effects ?? {}) },\n animation: { ...base.animation, ...(next.animation ?? {}) },\n } as NeuronWebTheme;\n }\n}\n"]}
|
|
@@ -588,5 +588,5 @@ exports.relationshipTypeConfigSchema = relationshipTypeConfigSchema;
|
|
|
588
588
|
exports.resetDatabaseSingleton = resetDatabaseSingleton;
|
|
589
589
|
exports.semanticSearchRequestSchema = semanticSearchRequestSchema;
|
|
590
590
|
exports.visualizationSettingsSchema = visualizationSettingsSchema;
|
|
591
|
-
//# sourceMappingURL=chunk-
|
|
592
|
-
//# sourceMappingURL=chunk-
|
|
591
|
+
//# sourceMappingURL=chunk-OBZGUYGW.cjs.map
|
|
592
|
+
//# sourceMappingURL=chunk-OBZGUYGW.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/types/settings.ts","../src/core/schemas/node.ts","../src/core/schemas/edge.ts","../src/core/schemas/analysis.ts","../src/core/schemas/settings.ts","../src/core/schemas/api.ts","../src/core/analysis/scoring-engine.ts","../src/storage/factory.ts","../src/storage/query-helpers.ts"],"names":["slugify","z","Database"],"mappings":"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","file":"chunk-RTSFO7BW.cjs","sourcesContent":["/**\n * Settings Types for omi-neuron-web\n * Complete configuration schema for the library\n */\n\nimport type { ClusteringAlgorithm } from './cluster';\n\n/**\n * Embedding model options\n */\nexport type EmbeddingModel =\n | 'text-embedding-ada-002'\n | 'text-embedding-3-small'\n | 'text-embedding-3-large';\n\n/**\n * Performance mode for visualization\n */\nexport type PerformanceMode = 'auto' | 'normal' | 'degraded' | 'fallback';\n\n/**\n * Node type configuration\n */\nexport interface NodeTypeConfig {\n /** Type identifier */\n type: string;\n /** Human-readable label */\n label: string;\n /** Optional description */\n description?: string;\n /** Default domain for this type */\n defaultDomain: string;\n /** Icon name or emoji */\n icon?: string;\n /** Color hex code */\n color?: string;\n /** Custom AI prompt for analyzing this type */\n analysisPrompt?: string;\n}\n\n/**\n * Domain configuration for visualization\n */\nexport interface DomainConfig {\n /** Domain key */\n key: string;\n /** Human-readable label */\n label: string;\n /** Color hex code */\n color: string;\n /** Optional description */\n description?: string;\n}\n\n/**\n * Relationship type configuration\n */\nexport interface RelationshipTypeConfig {\n /** Type identifier */\n type: string;\n /** Human-readable label */\n label: string;\n /** Optional description */\n description?: string;\n /** Whether this type is bidirectional */\n bidirectional: boolean;\n /** Optional color hex code */\n color?: string;\n}\n\n/**\n * Visualization settings - all API-modifiable\n */\nexport interface VisualizationSettings {\n // Colors\n /** Domain to color mapping */\n domainColors: Record<string, string>;\n /** Default color for unknown domains */\n defaultDomainColor: string;\n /** Default edge color */\n edgeColor: string;\n /** Active/highlighted edge color */\n edgeActiveColor: string;\n /** Scene background color */\n backgroundColor: string;\n\n // Camera\n /** Initial camera position [x, y, z] */\n defaultCameraPosition: [number, number, number];\n /** Initial camera target [x, y, z] */\n defaultCameraTarget: [number, number, number];\n /** Minimum zoom distance */\n minZoomDistance: number;\n /** Maximum zoom distance */\n maxZoomDistance: number;\n\n // Rendering\n /** Enable starfield background */\n enableStarfield: boolean;\n /** Number of stars in starfield */\n starfieldCount: number;\n /** Distance at which labels appear */\n labelDistance: number;\n /** Maximum number of visible labels */\n maxVisibleLabels: number;\n\n // Performance\n /** Performance mode selection */\n performanceMode: PerformanceMode;\n /** Node count threshold for degraded mode */\n nodeCountThreshold: number;\n /** Maximum device pixel ratio */\n pixelRatioCap: number;\n\n // Animations\n /** Enable animations */\n enableAnimations: boolean;\n /** Focus tween duration in ms */\n focusTweenDuration: number;\n /** Filter transition duration in ms */\n filterTransitionDuration: number;\n\n // Interaction\n /** Enable hover effects */\n enableHover: boolean;\n /** Enable click handling */\n enableClick: boolean;\n /** Enable double-click handling */\n enableDoubleClick: boolean;\n /** Enable panning */\n enablePan: boolean;\n /** Enable zooming */\n enableZoom: boolean;\n /** Enable rotation */\n enableRotate: boolean;\n}\n\n/**\n * Analysis settings\n */\nexport interface AnalysisSettings {\n // Embeddings\n /** OpenAI embedding model */\n embeddingModel: EmbeddingModel;\n /** Embedding dimensions (must match model) */\n embeddingDimensions: number;\n /** Batch size for API calls */\n embeddingBatchSize: number;\n /** Cache TTL in seconds */\n embeddingCacheTTL: number;\n\n // Clustering\n /** Clustering algorithm */\n clusteringAlgorithm: ClusteringAlgorithm;\n /** Default number of clusters */\n defaultClusterCount: number;\n /** Minimum cluster size */\n minClusterSize: number;\n /** Similarity threshold for cluster assignment */\n clusterSimilarityThreshold: number;\n\n // Relationship inference\n /** Model for relationship inference */\n relationshipInferenceModel: string;\n /** Minimum confidence to create relationship */\n relationshipMinConfidence: number;\n /** Maximum relationships per node */\n relationshipMaxPerNode: number;\n\n // Rate limiting\n /** OpenAI requests per minute */\n openaiRateLimit: number;\n /** Maximum concurrent analysis jobs */\n maxConcurrentAnalysis: number;\n}\n\n/**\n * Instance settings\n */\nexport interface InstanceSettings {\n /** Human-readable instance name */\n name: string;\n /** Library version */\n version: string;\n /** Used for pg-{repoName} database naming */\n repoName: string;\n}\n\n/**\n * Database settings\n */\nexport interface DatabaseSettings {\n /** 'docker' for managed, 'external' for BYO */\n mode: 'docker' | 'external';\n /** Port to expose (Docker mode) */\n port: number;\n /** Container name override */\n containerName?: string;\n /** Docker image */\n image?: string;\n /** Database user */\n user?: string;\n /** Database password */\n password?: string;\n /** Database name */\n database?: string;\n /** Connection URL (external mode) */\n url?: string;\n /** Connection pool settings */\n pool?: {\n min: number;\n max: number;\n idleTimeoutMs: number;\n connectionTimeoutMs: number;\n };\n /** Resource limits (Docker mode) */\n resources?: {\n memoryLimit: string;\n cpuLimit?: string;\n };\n}\n\n/**\n * API settings\n */\nexport interface ApiSettings {\n /** Base path for API routes */\n basePath: string;\n /** Enable CORS */\n enableCors: boolean;\n /** Rate limiting configuration */\n rateLimit?: {\n windowMs: number;\n max: number;\n };\n}\n\n/**\n * Logging settings\n */\nexport interface LoggingSettings {\n /** Log level */\n level: 'debug' | 'info' | 'warn' | 'error';\n /** Pretty print logs */\n prettyPrint: boolean;\n}\n\n/**\n * Complete settings schema - stored in database and repo config\n */\nexport interface NeuronSettings {\n /** Instance identification */\n instance: InstanceSettings;\n /** Visualization settings (API-modifiable) */\n visualization: VisualizationSettings;\n /** Analysis settings */\n analysis: AnalysisSettings;\n /** Node type configuration */\n nodeTypes: NodeTypeConfig[];\n /** Domain configuration */\n domains: DomainConfig[];\n /** Relationship type configuration */\n relationshipTypes: RelationshipTypeConfig[];\n}\n\n/**\n * Full configuration including non-runtime settings\n */\nexport interface NeuronConfig extends NeuronSettings {\n /** OpenAI configuration */\n openai: {\n apiKey: string;\n organization?: string;\n requestsPerMinute?: number;\n maxRetries?: number;\n };\n /** Database configuration */\n database: DatabaseSettings;\n /** API configuration */\n api: ApiSettings;\n /** Logging configuration */\n logging: LoggingSettings;\n}\n\n/**\n * Partial settings for updates\n */\nexport interface NeuronSettingsUpdate {\n visualization?: Partial<VisualizationSettings>;\n analysis?: Partial<AnalysisSettings>;\n nodeTypes?: NodeTypeConfig[];\n domains?: DomainConfig[];\n relationshipTypes?: RelationshipTypeConfig[];\n}\n\n/**\n * Default visualization settings\n */\nexport const DEFAULT_VISUALIZATION_SETTINGS: VisualizationSettings = {\n domainColors: {},\n defaultDomainColor: '#c0c5ff',\n edgeColor: '#4d4d55',\n edgeActiveColor: '#c6d4ff',\n backgroundColor: '#020314',\n defaultCameraPosition: [4, 8, 20],\n defaultCameraTarget: [0, 0, 0],\n minZoomDistance: 4,\n maxZoomDistance: 42,\n enableStarfield: true,\n starfieldCount: 1200,\n labelDistance: 26,\n maxVisibleLabels: 50,\n performanceMode: 'auto',\n nodeCountThreshold: 120,\n pixelRatioCap: 2,\n enableAnimations: true,\n focusTweenDuration: 800,\n filterTransitionDuration: 650,\n enableHover: true,\n enableClick: true,\n enableDoubleClick: true,\n enablePan: true,\n enableZoom: true,\n enableRotate: true,\n};\n\n/**\n * Default analysis settings\n */\nexport const DEFAULT_ANALYSIS_SETTINGS: AnalysisSettings = {\n embeddingModel: 'text-embedding-3-small',\n embeddingDimensions: 1536,\n embeddingBatchSize: 20,\n embeddingCacheTTL: 86400,\n clusteringAlgorithm: 'kmeans',\n defaultClusterCount: 8,\n minClusterSize: 3,\n clusterSimilarityThreshold: 0.75,\n relationshipInferenceModel: 'gpt-4o-mini',\n relationshipMinConfidence: 0.7,\n relationshipMaxPerNode: 10,\n openaiRateLimit: 60,\n maxConcurrentAnalysis: 5,\n};\n\n","import slugify from 'slugify';\nimport { z } from 'zod';\n\nconst slugTransform = (label: string) =>\n slugify(label, { lower: true, strict: true, trim: true }).slice(0, 255);\n\nexport const nodeTierSchema = z.enum(['primary', 'secondary', 'tertiary', 'insight']);\n\nexport const nodeCreateSchema = z\n .object({\n slug: z.string().min(1).max(255).optional(),\n label: z.string().min(1).max(500),\n nodeType: z.string().min(1).max(100).optional(),\n domain: z.string().min(1).max(100).optional(),\n summary: z.string().max(1000).optional(),\n description: z.string().optional(),\n content: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n tier: nodeTierSchema.optional(),\n })\n .transform((data) => ({\n ...data,\n slug: data.slug ?? slugTransform(data.label),\n }));\n\nexport const nodeUpdateSchema = z.object({\n label: z.string().min(1).max(500).optional(),\n summary: z.string().max(1000).optional(),\n description: z.string().optional(),\n content: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n domain: z.string().min(1).max(100).optional(),\n tier: nodeTierSchema.optional(),\n positionOverride: z.tuple([z.number(), z.number(), z.number()]).nullable().optional(),\n});\n\nexport const nodeBatchCreateSchema = z.object({\n nodes: z.array(nodeCreateSchema),\n options: z\n .object({\n skipDuplicates: z.boolean().optional(),\n updateOnConflict: z.boolean().optional(),\n autoAnalyze: z.boolean().optional(),\n analysisDepth: z.enum(['embeddings', 'cluster', 'full']).optional(),\n })\n .optional(),\n});\n\nexport const nodeFilterSchema = z.object({\n page: z.coerce.number().int().min(1).optional(),\n limit: z.coerce.number().int().min(1).max(1000).optional(),\n nodeType: z.union([z.string(), z.array(z.string())]).optional(),\n domain: z.union([z.string(), z.array(z.string())]).optional(),\n clusterId: z.string().uuid().optional(),\n analysisStatus: z.string().optional(),\n search: z.string().optional(),\n sortBy: z.enum(['createdAt', 'updatedAt', 'label', 'connectionCount']).optional(),\n sortOrder: z.enum(['asc', 'desc']).optional(),\n includeEmbeddings: z.coerce.boolean().optional(),\n includeStats: z.coerce.boolean().optional(),\n});\n\nexport type NodeCreateInput = z.infer<typeof nodeCreateSchema>;\nexport type NodeUpdateInput = z.infer<typeof nodeUpdateSchema>;\nexport type NodeBatchCreateInput = z.infer<typeof nodeBatchCreateSchema>;\nexport type NodeFilterInput = z.infer<typeof nodeFilterSchema>;\n","import { z } from 'zod';\n\nexport const edgeEvidenceSchema = z.object({\n type: z.enum(['text', 'url', 'citation', 'ai_inference']),\n content: z.string().min(1),\n confidence: z.number().min(0).max(1).optional(),\n sourceId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const edgeCreateSchema = z.object({\n fromNodeId: z.string().uuid(),\n toNodeId: z.string().uuid(),\n relationshipType: z.string().optional(),\n strength: z.number().min(0).max(1).optional(),\n confidence: z.number().min(0).max(1).optional(),\n evidence: z.array(edgeEvidenceSchema).optional(),\n label: z.string().max(255).optional(),\n description: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n bidirectional: z.boolean().optional(),\n});\n\nexport const edgeUpdateSchema = z.object({\n strength: z.number().min(0).max(1).optional(),\n confidence: z.number().min(0).max(1).optional(),\n relationshipType: z.string().optional(),\n label: z.string().max(255).optional(),\n description: z.string().optional(),\n evidence: z.array(edgeEvidenceSchema).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const edgeFilterSchema = z.object({\n page: z.coerce.number().int().min(1).optional(),\n limit: z.coerce.number().int().min(1).max(1000).optional(),\n fromNodeId: z.string().uuid().optional(),\n toNodeId: z.string().uuid().optional(),\n nodeId: z.string().uuid().optional(),\n relationshipType: z.union([z.string(), z.array(z.string())]).optional(),\n source: z.enum(['manual', 'ai_inferred', 'imported']).optional(),\n minStrength: z.coerce.number().min(0).max(1).optional(),\n minConfidence: z.coerce.number().min(0).max(1).optional(),\n});\n\nexport type EdgeEvidenceInput = z.infer<typeof edgeEvidenceSchema>;\nexport type EdgeCreateInput = z.infer<typeof edgeCreateSchema>;\nexport type EdgeUpdateInput = z.infer<typeof edgeUpdateSchema>;\nexport type EdgeFilterInput = z.infer<typeof edgeFilterSchema>;\n","import { z } from 'zod';\n\nexport const analysisOptionsSchema = z.object({\n nodeIds: z.array(z.string().uuid()).optional(),\n forceRecompute: z.boolean().optional(),\n skipEmbeddings: z.boolean().optional(),\n embeddingModel: z.string().optional(),\n skipClustering: z.boolean().optional(),\n clusterCount: z.coerce.number().int().min(1).optional(),\n clusteringAlgorithm: z.enum(['kmeans', 'dbscan', 'hierarchical']).optional(),\n skipRelationships: z.boolean().optional(),\n relationshipThreshold: z.coerce.number().min(0).max(1).optional(),\n maxRelationshipsPerNode: z.coerce.number().int().min(1).optional(),\n});\n\nexport const analysisRequestSchema = z.object({\n action: z.enum(['embeddings', 'cluster', 'infer_relationships', 'full']),\n options: analysisOptionsSchema.optional(),\n});\n\nexport type AnalysisOptionsInput = z.infer<typeof analysisOptionsSchema>;\nexport type AnalysisRequestInput = z.infer<typeof analysisRequestSchema>;\n","import { z } from 'zod';\n\nconst colorSchema = z.string().min(1);\n\nexport const nodeTypeConfigSchema = z.object({\n type: z.string().min(1),\n label: z.string().min(1),\n description: z.string().optional(),\n defaultDomain: z.string().min(1),\n icon: z.string().optional(),\n color: colorSchema.optional(),\n analysisPrompt: z.string().optional(),\n});\n\nexport const domainConfigSchema = z.object({\n key: z.string().min(1),\n label: z.string().min(1),\n color: colorSchema,\n description: z.string().optional(),\n});\n\nexport const relationshipTypeConfigSchema = z.object({\n type: z.string().min(1),\n label: z.string().min(1),\n description: z.string().optional(),\n bidirectional: z.boolean(),\n color: colorSchema.optional(),\n});\n\nexport const visualizationSettingsSchema = z.object({\n domainColors: z.record(z.string(), colorSchema),\n defaultDomainColor: colorSchema,\n edgeColor: colorSchema,\n edgeActiveColor: colorSchema,\n backgroundColor: colorSchema,\n defaultCameraPosition: z.tuple([z.number(), z.number(), z.number()]),\n defaultCameraTarget: z.tuple([z.number(), z.number(), z.number()]),\n minZoomDistance: z.number(),\n maxZoomDistance: z.number(),\n enableStarfield: z.boolean(),\n starfieldCount: z.number().int().min(0),\n labelDistance: z.number().min(0),\n maxVisibleLabels: z.number().int().min(0),\n performanceMode: z.enum(['auto', 'normal', 'degraded', 'fallback']),\n nodeCountThreshold: z.number().int().min(0),\n pixelRatioCap: z.number().min(0.5),\n enableAnimations: z.boolean(),\n focusTweenDuration: z.number().int().min(0),\n filterTransitionDuration: z.number().int().min(0),\n enableHover: z.boolean(),\n enableClick: z.boolean(),\n enableDoubleClick: z.boolean(),\n enablePan: z.boolean(),\n enableZoom: z.boolean(),\n enableRotate: z.boolean(),\n});\n\nexport const analysisSettingsSchema = z.object({\n embeddingModel: z.enum(['text-embedding-ada-002', 'text-embedding-3-small', 'text-embedding-3-large']),\n embeddingDimensions: z.number().int().min(1),\n embeddingBatchSize: z.number().int().min(1),\n embeddingCacheTTL: z.number().int().min(0),\n clusteringAlgorithm: z.enum(['kmeans', 'dbscan', 'hierarchical']),\n defaultClusterCount: z.number().int().min(1),\n minClusterSize: z.number().int().min(1),\n clusterSimilarityThreshold: z.number().min(0).max(1),\n relationshipInferenceModel: z.string().min(1),\n relationshipMinConfidence: z.number().min(0).max(1),\n relationshipMaxPerNode: z.number().int().min(1),\n openaiRateLimit: z.number().int().min(1),\n maxConcurrentAnalysis: z.number().int().min(1),\n});\n\nconst instanceSettingsSchema = z.object({\n name: z.string().min(1),\n version: z.string().min(1),\n repoName: z.string().min(1),\n});\n\nexport const databaseSettingsSchema = z.object({\n mode: z.enum(['docker', 'external']),\n port: z.number().int().min(1).max(65535),\n containerName: z.string().optional(),\n image: z.string().optional(),\n user: z.string().optional(),\n password: z.string().optional(),\n database: z.string().optional(),\n url: z.string().optional(),\n pool: z\n .object({\n min: z.number().int().min(0),\n max: z.number().int().min(1),\n idleTimeoutMs: z.number().int().min(0),\n connectionTimeoutMs: z.number().int().min(0),\n })\n .optional(),\n resources: z\n .object({\n memoryLimit: z.string().min(1),\n cpuLimit: z.string().optional(),\n })\n .optional(),\n});\n\nconst apiSettingsSchema = z.object({\n basePath: z.string().min(1),\n enableCors: z.boolean(),\n rateLimit: z\n .object({\n windowMs: z.number().int().min(1),\n max: z.number().int().min(1),\n })\n .optional(),\n});\n\nconst loggingSettingsSchema = z.object({\n level: z.enum(['debug', 'info', 'warn', 'error']),\n prettyPrint: z.boolean(),\n});\n\nexport const neuronSettingsSchema = z.object({\n instance: instanceSettingsSchema,\n visualization: visualizationSettingsSchema,\n analysis: analysisSettingsSchema,\n nodeTypes: z.array(nodeTypeConfigSchema),\n domains: z.array(domainConfigSchema),\n relationshipTypes: z.array(relationshipTypeConfigSchema),\n});\n\nexport const neuronSettingsUpdateSchema = z.object({\n visualization: visualizationSettingsSchema.partial().optional(),\n analysis: analysisSettingsSchema.partial().optional(),\n nodeTypes: z.array(nodeTypeConfigSchema).optional(),\n domains: z.array(domainConfigSchema).optional(),\n relationshipTypes: z.array(relationshipTypeConfigSchema).optional(),\n});\n\nexport const neuronConfigSchema = neuronSettingsSchema.extend({\n openai: z.object({\n apiKey: z.string().min(1),\n organization: z.string().optional(),\n requestsPerMinute: z.number().int().min(1).optional(),\n maxRetries: z.number().int().min(0).optional(),\n }),\n database: databaseSettingsSchema,\n api: apiSettingsSchema,\n logging: loggingSettingsSchema,\n});\n\nexport type NodeTypeConfigInput = z.infer<typeof nodeTypeConfigSchema>;\nexport type DomainConfigInput = z.infer<typeof domainConfigSchema>;\nexport type RelationshipTypeConfigInput = z.infer<typeof relationshipTypeConfigSchema>;\nexport type VisualizationSettingsInput = z.infer<typeof visualizationSettingsSchema>;\nexport type AnalysisSettingsInput = z.infer<typeof analysisSettingsSchema>;\nexport type DatabaseSettingsInput = z.infer<typeof databaseSettingsSchema>;\nexport type NeuronSettingsInput = z.infer<typeof neuronSettingsSchema>;\nexport type NeuronSettingsUpdateInput = z.infer<typeof neuronSettingsUpdateSchema>;\nexport type NeuronConfigInput = z.infer<typeof neuronConfigSchema>;\n","import { z } from 'zod';\n\nexport const paginationSchema = z.object({\n page: z.coerce.number().int().min(1).optional(),\n limit: z.coerce.number().int().min(1).max(1000).optional(),\n});\n\nexport const listNodesParamsSchema = paginationSchema.extend({\n nodeType: z.union([z.string(), z.array(z.string())]).optional(),\n domain: z.union([z.string(), z.array(z.string())]).optional(),\n clusterId: z.string().uuid().optional(),\n analysisStatus: z.string().optional(),\n search: z.string().optional(),\n sortBy: z.enum(['createdAt', 'updatedAt', 'label', 'connectionCount']).optional(),\n sortOrder: z.enum(['asc', 'desc']).optional(),\n includeEmbeddings: z.coerce.boolean().optional(),\n includeStats: z.coerce.boolean().optional(),\n});\n\nexport const listEdgesParamsSchema = paginationSchema.extend({\n fromNodeId: z.string().uuid().optional(),\n toNodeId: z.string().uuid().optional(),\n nodeId: z.string().uuid().optional(),\n relationshipType: z.union([z.string(), z.array(z.string())]).optional(),\n source: z.enum(['manual', 'ai_inferred', 'imported']).optional(),\n minStrength: z.coerce.number().min(0).max(1).optional(),\n minConfidence: z.coerce.number().min(0).max(1).optional(),\n});\n\nexport const getGraphParamsSchema = z.object({\n nodeTypes: z.union([z.string(), z.array(z.string())]).optional(),\n domains: z.union([z.string(), z.array(z.string())]).optional(),\n clusterIds: z.union([z.string(), z.array(z.string())]).optional(),\n nodeIds: z.union([z.string(), z.array(z.string())]).optional(),\n depth: z.coerce.number().int().min(1).optional(),\n minEdgeStrength: z.coerce.number().min(0).max(1).optional(),\n relationshipTypes: z.union([z.string(), z.array(z.string())]).optional(),\n maxNodes: z.coerce.number().int().min(1).optional(),\n includeOrphanNodes: z.coerce.boolean().optional(),\n});\n\nexport const expandGraphRequestSchema = z.object({\n fromNodeIds: z.array(z.string().uuid()),\n depth: z.coerce.number().int().min(1),\n direction: z.enum(['outbound', 'inbound', 'both']),\n maxNodes: z.coerce.number().int().min(1).optional(),\n});\n\nexport const findPathRequestSchema = z.object({\n fromNodeId: z.string().uuid(),\n toNodeId: z.string().uuid(),\n maxDepth: z.coerce.number().int().min(1).optional(),\n algorithm: z.enum(['shortest', 'all']).optional(),\n});\n\nexport const semanticSearchRequestSchema = z.object({\n query: z.string().min(1),\n nodeTypes: z.array(z.string()).optional(),\n domains: z.array(z.string()).optional(),\n limit: z.coerce.number().int().min(1).optional(),\n});\n\nexport const findSimilarRequestSchema = z.object({\n nodeId: z.string().uuid(),\n limit: z.coerce.number().int().min(1).optional(),\n excludeConnected: z.coerce.boolean().optional(),\n});\n\nexport type PaginationInput = z.infer<typeof paginationSchema>;\nexport type ListNodesParamsInput = z.infer<typeof listNodesParamsSchema>;\nexport type ListEdgesParamsInput = z.infer<typeof listEdgesParamsSchema>;\nexport type GetGraphParamsInput = z.infer<typeof getGraphParamsSchema>;\nexport type ExpandGraphRequestInput = z.infer<typeof expandGraphRequestSchema>;\nexport type FindPathRequestInput = z.infer<typeof findPathRequestSchema>;\nexport type SemanticSearchRequestInput = z.infer<typeof semanticSearchRequestSchema>;\nexport type FindSimilarRequestInput = z.infer<typeof findSimilarRequestSchema>;\n","import type { Database } from '../../storage/database';\nimport type { NeuronNode } from '../types/node';\n\nexport interface ScoringConfig {\n similarityWeight: number;\n connectionWeight: number;\n recencyWeight: number;\n domainBoost: number;\n}\n\nexport interface ScoredNode {\n node: NeuronNode;\n score: number;\n breakdown: {\n similarity: number;\n connections: number;\n recency: number;\n domainMatch: number;\n };\n}\n\nconst DEFAULT_CONFIG: ScoringConfig = {\n similarityWeight: 0.6,\n connectionWeight: 0.2,\n recencyWeight: 0.1,\n domainBoost: 0.1,\n};\n\nexport class ScoringEngine {\n private config: ScoringConfig;\n\n constructor(private db: Database, config?: ScoringConfig) {\n this.config = { ...DEFAULT_CONFIG, ...(config ?? {}) };\n }\n\n cosineSimilarity(a: number[], b: number[]): number {\n let dot = 0;\n let magA = 0;\n let magB = 0;\n for (let i = 0; i < a.length; i += 1) {\n dot += a[i] * b[i];\n magA += a[i] * a[i];\n magB += b[i] * b[i];\n }\n if (magA === 0 || magB === 0) return 0;\n return dot / (Math.sqrt(magA) * Math.sqrt(magB));\n }\n\n async semanticSimilarity(nodeA: string, nodeB: string): Promise<number> {\n const rows = await this.db.query<{ similarity: number }>(\n 'SELECT 1 - (a.embedding <=> b.embedding) as similarity FROM nodes a JOIN nodes b ON b.id = $2 WHERE a.id = $1',\n [nodeA, nodeB]\n );\n return rows[0]?.similarity ?? 0;\n }\n\n async scoreForQuery(queryEmbedding: number[], nodeIds?: string[]): Promise<ScoredNode[]> {\n const filterClause = nodeIds?.length ? 'AND id = ANY($2)' : '';\n const values = nodeIds?.length ? [queryEmbedding, nodeIds] : [queryEmbedding];\n const nodes = await this.db.query<NeuronNode & { similarity: number }>(\n `SELECT *, 1 - (embedding <=> $1) as similarity FROM nodes WHERE embedding IS NOT NULL ${filterClause} ORDER BY embedding <=> $1`,\n values\n );\n\n return nodes.map((node) => this.applyScoring(node, node.similarity ?? 0));\n }\n\n async findSimilar(nodeId: string, limit = 10, excludeConnected = false): Promise<ScoredNode[]> {\n const base = excludeConnected\n ? `SELECT id FROM nodes WHERE id NOT IN (SELECT to_node_id FROM edges WHERE from_node_id = $1)`\n : `SELECT id FROM nodes WHERE id != $1`;\n const nodes = await this.db.query<NeuronNode & { similarity: number }>(\n `SELECT n.*, 1 - (n.embedding <=> (SELECT embedding FROM nodes WHERE id = $1)) as similarity\n FROM nodes n\n WHERE n.embedding IS NOT NULL AND n.id IN (${base})\n ORDER BY n.embedding <=> (SELECT embedding FROM nodes WHERE id = $1)\n LIMIT $2`,\n [nodeId, limit]\n );\n\n return nodes.map((node) => this.applyScoring(node, node.similarity ?? 0));\n }\n\n async calculateNodeImportance(nodeId: string): Promise<number> {\n const row = await this.db.queryOne<{ importance: number }>(\n `WITH edge_weights AS (\n SELECT to_node_id, SUM(strength) as total_inbound\n FROM edges\n GROUP BY to_node_id\n )\n SELECT COALESCE(ew.total_inbound, 0) + (n.connection_count * 0.1) as importance\n FROM nodes n\n LEFT JOIN edge_weights ew ON n.id = ew.to_node_id\n WHERE n.id = $1`,\n [nodeId]\n );\n return row?.importance ?? 0;\n }\n\n async rankAllNodes(): Promise<Array<{ nodeId: string; importance: number }>> {\n const rows = await this.db.query<{ id: string; importance: number }>(\n `WITH edge_weights AS (\n SELECT to_node_id, SUM(strength) as total_inbound\n FROM edges\n GROUP BY to_node_id\n )\n SELECT n.id, COALESCE(ew.total_inbound, 0) + (n.connection_count * 0.1) as importance\n FROM nodes n\n LEFT JOIN edge_weights ew ON n.id = ew.to_node_id\n ORDER BY importance DESC`\n );\n return rows.map((row) => ({ nodeId: row.id, importance: row.importance }));\n }\n\n async scoreRelevance(\n sourceNodeId: string,\n candidateNodeIds: string[],\n context?: string\n ): Promise<ScoredNode[]> {\n const nodes = await this.db.query<NeuronNode & { similarity: number }>(\n `SELECT *, 1 - (embedding <=> (SELECT embedding FROM nodes WHERE id = $1)) as similarity\n FROM nodes\n WHERE embedding IS NOT NULL AND id = ANY($2)\n ORDER BY embedding <=> (SELECT embedding FROM nodes WHERE id = $1)`,\n [sourceNodeId, candidateNodeIds]\n );\n\n return nodes.map((node) => {\n const base = this.applyScoring(node, node.similarity ?? 0);\n if (context) {\n base.score += this.config.domainBoost * 0.1;\n }\n return base;\n });\n }\n\n private applyScoring(node: NeuronNode & { similarity?: number }, similarity: number): ScoredNode {\n const connections = node.connectionCount ?? 0;\n const recency = node.updatedAt ? Math.max(0, 1 - (Date.now() - new Date(node.updatedAt).getTime()) / (1000 * 60 * 60 * 24 * 30)) : 0;\n const domainMatch = 0;\n\n const score =\n similarity * this.config.similarityWeight +\n connections * this.config.connectionWeight +\n recency * this.config.recencyWeight +\n domainMatch * this.config.domainBoost;\n\n return {\n node,\n score,\n breakdown: {\n similarity,\n connections,\n recency,\n domainMatch,\n },\n };\n }\n}\n","import type { NeuronConfig } from '../core/types/settings';\nimport { Database, type DatabaseConfig } from './database';\n\nlet singleton: Database | null = null;\n\nexport function createDatabase(config: NeuronConfig): Database {\n const dbConfig: DatabaseConfig = {\n connectionString: config.database.url,\n host: config.database.mode === 'docker' ? 'localhost' : undefined,\n port: config.database.port,\n user: config.database.user,\n password: config.database.password,\n database: config.database.database,\n pool: config.database.pool,\n };\n\n return new Database(dbConfig);\n}\n\nexport function createDatabaseFromEnv(): Database {\n const dbConfig: DatabaseConfig = {\n connectionString: process.env.DATABASE_URL,\n host: process.env.DB_HOST,\n port: process.env.DB_PORT ? Number(process.env.DB_PORT) : undefined,\n user: process.env.DB_USER,\n password: process.env.DB_PASSWORD,\n database: process.env.DB_NAME,\n };\n\n return new Database(dbConfig);\n}\n\nexport function getDatabase(config?: DatabaseConfig): Database {\n if (!singleton) {\n singleton = new Database(config ?? {});\n }\n\n return singleton;\n}\n\nexport function resetDatabaseSingleton(): void {\n singleton = null;\n}\n","export type WhereClause = Record<string, unknown>;\n\nexport interface SelectOptions {\n limit?: number;\n offset?: number;\n orderBy?: string;\n orderDirection?: 'asc' | 'desc';\n}\n\nexport const buildWhereClause = (where?: WhereClause, startIndex = 1) => {\n if (!where || Object.keys(where).length === 0) {\n return { clause: '', values: [], nextIndex: startIndex };\n }\n\n const keys = Object.keys(where);\n const values: unknown[] = [];\n const conditions = keys.map((key, idx) => {\n values.push(where[key]);\n return `${key} = $${startIndex + idx}`;\n });\n\n return {\n clause: `WHERE ${conditions.join(' AND ')}`,\n values,\n nextIndex: startIndex + keys.length,\n };\n};\n\nexport const buildInsert = (table: string, data: Record<string, unknown>) => {\n const keys = Object.keys(data);\n const values = Object.values(data);\n const columns = keys.map((key) => `\"${key}\"`).join(', ');\n const placeholders = keys.map((_, idx) => `$${idx + 1}`).join(', ');\n\n return {\n sql: `INSERT INTO ${table} (${columns}) VALUES (${placeholders}) RETURNING *`,\n values,\n };\n};\n\nexport const buildUpdate = (\n table: string,\n data: Record<string, unknown>,\n where: WhereClause\n) => {\n const keys = Object.keys(data);\n const values = Object.values(data);\n const setClause = keys.map((key, idx) => `\"${key}\" = $${idx + 1}`).join(', ');\n\n const whereResult = buildWhereClause(where, keys.length + 1);\n\n return {\n sql: `UPDATE ${table} SET ${setClause} ${whereResult.clause} RETURNING *`,\n values: [...values, ...whereResult.values],\n };\n};\n\nexport const buildSelect = (\n table: string,\n columns: string[] | '*',\n where?: WhereClause,\n options?: SelectOptions\n) => {\n const columnList = columns === '*' ? '*' : columns.map((col) => `\"${col}\"`).join(', ');\n const whereResult = buildWhereClause(where);\n const orderClause = options?.orderBy\n ? `ORDER BY ${options.orderBy} ${options.orderDirection ?? 'asc'}`\n : '';\n const limitClause = options?.limit ? `LIMIT ${options.limit}` : '';\n const offsetClause = options?.offset ? `OFFSET ${options.offset}` : '';\n\n return {\n sql: `SELECT ${columnList} FROM ${table} ${whereResult.clause} ${orderClause} ${limitClause} ${offsetClause}`.trim(),\n values: whereResult.values,\n };\n};\n\nexport const buildDelete = (table: string, where: WhereClause) => {\n const whereResult = buildWhereClause(where);\n return {\n sql: `DELETE FROM ${table} ${whereResult.clause}`,\n values: whereResult.values,\n };\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/core/types/settings.ts","../src/core/schemas/node.ts","../src/core/schemas/edge.ts","../src/core/schemas/analysis.ts","../src/core/schemas/settings.ts","../src/core/schemas/api.ts","../src/core/analysis/scoring-engine.ts","../src/storage/factory.ts","../src/storage/query-helpers.ts"],"names":["slugify","z","Database"],"mappings":"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","file":"chunk-OBZGUYGW.cjs","sourcesContent":["/**\n * Settings Types for omi-neuron-web\n * Complete configuration schema for the library\n */\n\nimport type { ClusteringAlgorithm } from './cluster';\n\n/**\n * Embedding model options\n */\nexport type EmbeddingModel =\n | 'text-embedding-ada-002'\n | 'text-embedding-3-small'\n | 'text-embedding-3-large';\n\n/**\n * Performance mode for visualization\n */\nexport type PerformanceMode = 'auto' | 'normal' | 'degraded' | 'fallback';\n\n/**\n * Node type configuration\n */\nexport interface NodeTypeConfig {\n /** Type identifier */\n type: string;\n /** Human-readable label */\n label: string;\n /** Optional description */\n description?: string;\n /** Default domain for this type */\n defaultDomain: string;\n /** Icon name or emoji */\n icon?: string;\n /** Color hex code */\n color?: string;\n /** Custom AI prompt for analyzing this type */\n analysisPrompt?: string;\n}\n\n/**\n * Domain configuration for visualization\n */\nexport interface DomainConfig {\n /** Domain key */\n key: string;\n /** Human-readable label */\n label: string;\n /** Color hex code */\n color: string;\n /** Optional description */\n description?: string;\n}\n\n/**\n * Relationship type configuration\n */\nexport interface RelationshipTypeConfig {\n /** Type identifier */\n type: string;\n /** Human-readable label */\n label: string;\n /** Optional description */\n description?: string;\n /** Whether this type is bidirectional */\n bidirectional: boolean;\n /** Optional color hex code */\n color?: string;\n}\n\n/**\n * Visualization settings - all API-modifiable\n */\nexport interface VisualizationSettings {\n // Colors\n /** Domain to color mapping */\n domainColors: Record<string, string>;\n /** Default color for unknown domains */\n defaultDomainColor: string;\n /** Default edge color */\n edgeColor: string;\n /** Active/highlighted edge color */\n edgeActiveColor: string;\n /** Scene background color */\n backgroundColor: string;\n\n // Camera\n /** Initial camera position [x, y, z] */\n defaultCameraPosition: [number, number, number];\n /** Initial camera target [x, y, z] */\n defaultCameraTarget: [number, number, number];\n /** Minimum zoom distance */\n minZoomDistance: number;\n /** Maximum zoom distance */\n maxZoomDistance: number;\n\n // Rendering\n /** Enable starfield background */\n enableStarfield: boolean;\n /** Number of stars in starfield */\n starfieldCount: number;\n /** Distance at which labels appear */\n labelDistance: number;\n /** Maximum number of visible labels */\n maxVisibleLabels: number;\n\n // Performance\n /** Performance mode selection */\n performanceMode: PerformanceMode;\n /** Node count threshold for degraded mode */\n nodeCountThreshold: number;\n /** Maximum device pixel ratio */\n pixelRatioCap: number;\n\n // Animations\n /** Enable animations */\n enableAnimations: boolean;\n /** Focus tween duration in ms */\n focusTweenDuration: number;\n /** Filter transition duration in ms */\n filterTransitionDuration: number;\n\n // Interaction\n /** Enable hover effects */\n enableHover: boolean;\n /** Enable click handling */\n enableClick: boolean;\n /** Enable double-click handling */\n enableDoubleClick: boolean;\n /** Enable panning */\n enablePan: boolean;\n /** Enable zooming */\n enableZoom: boolean;\n /** Enable rotation */\n enableRotate: boolean;\n}\n\n/**\n * Analysis settings\n */\nexport interface AnalysisSettings {\n // Embeddings\n /** OpenAI embedding model */\n embeddingModel: EmbeddingModel;\n /** Embedding dimensions (must match model) */\n embeddingDimensions: number;\n /** Batch size for API calls */\n embeddingBatchSize: number;\n /** Cache TTL in seconds */\n embeddingCacheTTL: number;\n\n // Clustering\n /** Clustering algorithm */\n clusteringAlgorithm: ClusteringAlgorithm;\n /** Default number of clusters */\n defaultClusterCount: number;\n /** Minimum cluster size */\n minClusterSize: number;\n /** Similarity threshold for cluster assignment */\n clusterSimilarityThreshold: number;\n\n // Relationship inference\n /** Model for relationship inference */\n relationshipInferenceModel: string;\n /** Minimum confidence to create relationship */\n relationshipMinConfidence: number;\n /** Maximum relationships per node */\n relationshipMaxPerNode: number;\n\n // Rate limiting\n /** OpenAI requests per minute */\n openaiRateLimit: number;\n /** Maximum concurrent analysis jobs */\n maxConcurrentAnalysis: number;\n}\n\n/**\n * Instance settings\n */\nexport interface InstanceSettings {\n /** Human-readable instance name */\n name: string;\n /** Library version */\n version: string;\n /** Used for pg-{repoName} database naming */\n repoName: string;\n}\n\n/**\n * Database settings\n */\nexport interface DatabaseSettings {\n /** 'docker' for managed, 'external' for BYO */\n mode: 'docker' | 'external';\n /** Port to expose (Docker mode) */\n port: number;\n /** Container name override */\n containerName?: string;\n /** Docker image */\n image?: string;\n /** Database user */\n user?: string;\n /** Database password */\n password?: string;\n /** Database name */\n database?: string;\n /** Connection URL (external mode) */\n url?: string;\n /** Connection pool settings */\n pool?: {\n min: number;\n max: number;\n idleTimeoutMs: number;\n connectionTimeoutMs: number;\n };\n /** Resource limits (Docker mode) */\n resources?: {\n memoryLimit: string;\n cpuLimit?: string;\n };\n}\n\n/**\n * API settings\n */\nexport interface ApiSettings {\n /** Base path for API routes */\n basePath: string;\n /** Enable CORS */\n enableCors: boolean;\n /** Rate limiting configuration */\n rateLimit?: {\n windowMs: number;\n max: number;\n };\n}\n\n/**\n * Logging settings\n */\nexport interface LoggingSettings {\n /** Log level */\n level: 'debug' | 'info' | 'warn' | 'error';\n /** Pretty print logs */\n prettyPrint: boolean;\n}\n\n/**\n * Complete settings schema - stored in database and repo config\n */\nexport interface NeuronSettings {\n /** Instance identification */\n instance: InstanceSettings;\n /** Visualization settings (API-modifiable) */\n visualization: VisualizationSettings;\n /** Analysis settings */\n analysis: AnalysisSettings;\n /** Node type configuration */\n nodeTypes: NodeTypeConfig[];\n /** Domain configuration */\n domains: DomainConfig[];\n /** Relationship type configuration */\n relationshipTypes: RelationshipTypeConfig[];\n}\n\n/**\n * Full configuration including non-runtime settings\n */\nexport interface NeuronConfig extends NeuronSettings {\n /** OpenAI configuration */\n openai: {\n apiKey: string;\n organization?: string;\n requestsPerMinute?: number;\n maxRetries?: number;\n };\n /** Database configuration */\n database: DatabaseSettings;\n /** API configuration */\n api: ApiSettings;\n /** Logging configuration */\n logging: LoggingSettings;\n}\n\n/**\n * Partial settings for updates\n */\nexport interface NeuronSettingsUpdate {\n visualization?: Partial<VisualizationSettings>;\n analysis?: Partial<AnalysisSettings>;\n nodeTypes?: NodeTypeConfig[];\n domains?: DomainConfig[];\n relationshipTypes?: RelationshipTypeConfig[];\n}\n\n/**\n * Default visualization settings\n */\nexport const DEFAULT_VISUALIZATION_SETTINGS: VisualizationSettings = {\n domainColors: {},\n defaultDomainColor: '#c0c5ff',\n edgeColor: '#4d4d55',\n edgeActiveColor: '#c6d4ff',\n backgroundColor: '#020314',\n defaultCameraPosition: [4, 8, 20],\n defaultCameraTarget: [0, 0, 0],\n minZoomDistance: 4,\n maxZoomDistance: 42,\n enableStarfield: true,\n starfieldCount: 1200,\n labelDistance: 26,\n maxVisibleLabels: 50,\n performanceMode: 'auto',\n nodeCountThreshold: 120,\n pixelRatioCap: 2,\n enableAnimations: true,\n focusTweenDuration: 800,\n filterTransitionDuration: 650,\n enableHover: true,\n enableClick: true,\n enableDoubleClick: true,\n enablePan: true,\n enableZoom: true,\n enableRotate: true,\n};\n\n/**\n * Default analysis settings\n */\nexport const DEFAULT_ANALYSIS_SETTINGS: AnalysisSettings = {\n embeddingModel: 'text-embedding-3-small',\n embeddingDimensions: 1536,\n embeddingBatchSize: 20,\n embeddingCacheTTL: 86400,\n clusteringAlgorithm: 'kmeans',\n defaultClusterCount: 8,\n minClusterSize: 3,\n clusterSimilarityThreshold: 0.75,\n relationshipInferenceModel: 'gpt-4o-mini',\n relationshipMinConfidence: 0.7,\n relationshipMaxPerNode: 10,\n openaiRateLimit: 60,\n maxConcurrentAnalysis: 5,\n};\n\n\n","import slugify from 'slugify';\nimport { z } from 'zod';\n\nconst slugTransform = (label: string) =>\n slugify(label, { lower: true, strict: true, trim: true }).slice(0, 255);\n\nexport const nodeTierSchema = z.enum(['primary', 'secondary', 'tertiary', 'insight']);\n\nexport const nodeCreateSchema = z\n .object({\n slug: z.string().min(1).max(255).optional(),\n label: z.string().min(1).max(500),\n nodeType: z.string().min(1).max(100).optional(),\n domain: z.string().min(1).max(100).optional(),\n summary: z.string().max(1000).optional(),\n description: z.string().optional(),\n content: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n tier: nodeTierSchema.optional(),\n })\n .transform((data) => ({\n ...data,\n slug: data.slug ?? slugTransform(data.label),\n }));\n\nexport const nodeUpdateSchema = z.object({\n label: z.string().min(1).max(500).optional(),\n summary: z.string().max(1000).optional(),\n description: z.string().optional(),\n content: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n domain: z.string().min(1).max(100).optional(),\n tier: nodeTierSchema.optional(),\n positionOverride: z.tuple([z.number(), z.number(), z.number()]).nullable().optional(),\n});\n\nexport const nodeBatchCreateSchema = z.object({\n nodes: z.array(nodeCreateSchema),\n options: z\n .object({\n skipDuplicates: z.boolean().optional(),\n updateOnConflict: z.boolean().optional(),\n autoAnalyze: z.boolean().optional(),\n analysisDepth: z.enum(['embeddings', 'cluster', 'full']).optional(),\n })\n .optional(),\n});\n\nexport const nodeFilterSchema = z.object({\n page: z.coerce.number().int().min(1).optional(),\n limit: z.coerce.number().int().min(1).max(1000).optional(),\n nodeType: z.union([z.string(), z.array(z.string())]).optional(),\n domain: z.union([z.string(), z.array(z.string())]).optional(),\n clusterId: z.string().uuid().optional(),\n analysisStatus: z.string().optional(),\n search: z.string().optional(),\n sortBy: z.enum(['createdAt', 'updatedAt', 'label', 'connectionCount']).optional(),\n sortOrder: z.enum(['asc', 'desc']).optional(),\n includeEmbeddings: z.coerce.boolean().optional(),\n includeStats: z.coerce.boolean().optional(),\n});\n\nexport type NodeCreateInput = z.infer<typeof nodeCreateSchema>;\nexport type NodeUpdateInput = z.infer<typeof nodeUpdateSchema>;\nexport type NodeBatchCreateInput = z.infer<typeof nodeBatchCreateSchema>;\nexport type NodeFilterInput = z.infer<typeof nodeFilterSchema>;\n","import { z } from 'zod';\n\nexport const edgeEvidenceSchema = z.object({\n type: z.enum(['text', 'url', 'citation', 'ai_inference']),\n content: z.string().min(1),\n confidence: z.number().min(0).max(1).optional(),\n sourceId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const edgeCreateSchema = z.object({\n fromNodeId: z.string().uuid(),\n toNodeId: z.string().uuid(),\n relationshipType: z.string().optional(),\n strength: z.number().min(0).max(1).optional(),\n confidence: z.number().min(0).max(1).optional(),\n evidence: z.array(edgeEvidenceSchema).optional(),\n label: z.string().max(255).optional(),\n description: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n bidirectional: z.boolean().optional(),\n});\n\nexport const edgeUpdateSchema = z.object({\n strength: z.number().min(0).max(1).optional(),\n confidence: z.number().min(0).max(1).optional(),\n relationshipType: z.string().optional(),\n label: z.string().max(255).optional(),\n description: z.string().optional(),\n evidence: z.array(edgeEvidenceSchema).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const edgeFilterSchema = z.object({\n page: z.coerce.number().int().min(1).optional(),\n limit: z.coerce.number().int().min(1).max(1000).optional(),\n fromNodeId: z.string().uuid().optional(),\n toNodeId: z.string().uuid().optional(),\n nodeId: z.string().uuid().optional(),\n relationshipType: z.union([z.string(), z.array(z.string())]).optional(),\n source: z.enum(['manual', 'ai_inferred', 'imported']).optional(),\n minStrength: z.coerce.number().min(0).max(1).optional(),\n minConfidence: z.coerce.number().min(0).max(1).optional(),\n});\n\nexport type EdgeEvidenceInput = z.infer<typeof edgeEvidenceSchema>;\nexport type EdgeCreateInput = z.infer<typeof edgeCreateSchema>;\nexport type EdgeUpdateInput = z.infer<typeof edgeUpdateSchema>;\nexport type EdgeFilterInput = z.infer<typeof edgeFilterSchema>;\n","import { z } from 'zod';\n\nexport const analysisOptionsSchema = z.object({\n nodeIds: z.array(z.string().uuid()).optional(),\n forceRecompute: z.boolean().optional(),\n skipEmbeddings: z.boolean().optional(),\n embeddingModel: z.string().optional(),\n skipClustering: z.boolean().optional(),\n clusterCount: z.coerce.number().int().min(1).optional(),\n clusteringAlgorithm: z.enum(['kmeans', 'dbscan', 'hierarchical']).optional(),\n skipRelationships: z.boolean().optional(),\n relationshipThreshold: z.coerce.number().min(0).max(1).optional(),\n maxRelationshipsPerNode: z.coerce.number().int().min(1).optional(),\n});\n\nexport const analysisRequestSchema = z.object({\n action: z.enum(['embeddings', 'cluster', 'infer_relationships', 'full']),\n options: analysisOptionsSchema.optional(),\n});\n\nexport type AnalysisOptionsInput = z.infer<typeof analysisOptionsSchema>;\nexport type AnalysisRequestInput = z.infer<typeof analysisRequestSchema>;\n","import { z } from 'zod';\n\nconst colorSchema = z.string().min(1);\n\nexport const nodeTypeConfigSchema = z.object({\n type: z.string().min(1),\n label: z.string().min(1),\n description: z.string().optional(),\n defaultDomain: z.string().min(1),\n icon: z.string().optional(),\n color: colorSchema.optional(),\n analysisPrompt: z.string().optional(),\n});\n\nexport const domainConfigSchema = z.object({\n key: z.string().min(1),\n label: z.string().min(1),\n color: colorSchema,\n description: z.string().optional(),\n});\n\nexport const relationshipTypeConfigSchema = z.object({\n type: z.string().min(1),\n label: z.string().min(1),\n description: z.string().optional(),\n bidirectional: z.boolean(),\n color: colorSchema.optional(),\n});\n\nexport const visualizationSettingsSchema = z.object({\n domainColors: z.record(z.string(), colorSchema),\n defaultDomainColor: colorSchema,\n edgeColor: colorSchema,\n edgeActiveColor: colorSchema,\n backgroundColor: colorSchema,\n defaultCameraPosition: z.tuple([z.number(), z.number(), z.number()]),\n defaultCameraTarget: z.tuple([z.number(), z.number(), z.number()]),\n minZoomDistance: z.number(),\n maxZoomDistance: z.number(),\n enableStarfield: z.boolean(),\n starfieldCount: z.number().int().min(0),\n labelDistance: z.number().min(0),\n maxVisibleLabels: z.number().int().min(0),\n performanceMode: z.enum(['auto', 'normal', 'degraded', 'fallback']),\n nodeCountThreshold: z.number().int().min(0),\n pixelRatioCap: z.number().min(0.5),\n enableAnimations: z.boolean(),\n focusTweenDuration: z.number().int().min(0),\n filterTransitionDuration: z.number().int().min(0),\n enableHover: z.boolean(),\n enableClick: z.boolean(),\n enableDoubleClick: z.boolean(),\n enablePan: z.boolean(),\n enableZoom: z.boolean(),\n enableRotate: z.boolean(),\n});\n\nexport const analysisSettingsSchema = z.object({\n embeddingModel: z.enum(['text-embedding-ada-002', 'text-embedding-3-small', 'text-embedding-3-large']),\n embeddingDimensions: z.number().int().min(1),\n embeddingBatchSize: z.number().int().min(1),\n embeddingCacheTTL: z.number().int().min(0),\n clusteringAlgorithm: z.enum(['kmeans', 'dbscan', 'hierarchical']),\n defaultClusterCount: z.number().int().min(1),\n minClusterSize: z.number().int().min(1),\n clusterSimilarityThreshold: z.number().min(0).max(1),\n relationshipInferenceModel: z.string().min(1),\n relationshipMinConfidence: z.number().min(0).max(1),\n relationshipMaxPerNode: z.number().int().min(1),\n openaiRateLimit: z.number().int().min(1),\n maxConcurrentAnalysis: z.number().int().min(1),\n});\n\nconst instanceSettingsSchema = z.object({\n name: z.string().min(1),\n version: z.string().min(1),\n repoName: z.string().min(1),\n});\n\nexport const databaseSettingsSchema = z.object({\n mode: z.enum(['docker', 'external']),\n port: z.number().int().min(1).max(65535),\n containerName: z.string().optional(),\n image: z.string().optional(),\n user: z.string().optional(),\n password: z.string().optional(),\n database: z.string().optional(),\n url: z.string().optional(),\n pool: z\n .object({\n min: z.number().int().min(0),\n max: z.number().int().min(1),\n idleTimeoutMs: z.number().int().min(0),\n connectionTimeoutMs: z.number().int().min(0),\n })\n .optional(),\n resources: z\n .object({\n memoryLimit: z.string().min(1),\n cpuLimit: z.string().optional(),\n })\n .optional(),\n});\n\nconst apiSettingsSchema = z.object({\n basePath: z.string().min(1),\n enableCors: z.boolean(),\n rateLimit: z\n .object({\n windowMs: z.number().int().min(1),\n max: z.number().int().min(1),\n })\n .optional(),\n});\n\nconst loggingSettingsSchema = z.object({\n level: z.enum(['debug', 'info', 'warn', 'error']),\n prettyPrint: z.boolean(),\n});\n\nexport const neuronSettingsSchema = z.object({\n instance: instanceSettingsSchema,\n visualization: visualizationSettingsSchema,\n analysis: analysisSettingsSchema,\n nodeTypes: z.array(nodeTypeConfigSchema),\n domains: z.array(domainConfigSchema),\n relationshipTypes: z.array(relationshipTypeConfigSchema),\n});\n\nexport const neuronSettingsUpdateSchema = z.object({\n visualization: visualizationSettingsSchema.partial().optional(),\n analysis: analysisSettingsSchema.partial().optional(),\n nodeTypes: z.array(nodeTypeConfigSchema).optional(),\n domains: z.array(domainConfigSchema).optional(),\n relationshipTypes: z.array(relationshipTypeConfigSchema).optional(),\n});\n\nexport const neuronConfigSchema = neuronSettingsSchema.extend({\n openai: z.object({\n apiKey: z.string().min(1),\n organization: z.string().optional(),\n requestsPerMinute: z.number().int().min(1).optional(),\n maxRetries: z.number().int().min(0).optional(),\n }),\n database: databaseSettingsSchema,\n api: apiSettingsSchema,\n logging: loggingSettingsSchema,\n});\n\nexport type NodeTypeConfigInput = z.infer<typeof nodeTypeConfigSchema>;\nexport type DomainConfigInput = z.infer<typeof domainConfigSchema>;\nexport type RelationshipTypeConfigInput = z.infer<typeof relationshipTypeConfigSchema>;\nexport type VisualizationSettingsInput = z.infer<typeof visualizationSettingsSchema>;\nexport type AnalysisSettingsInput = z.infer<typeof analysisSettingsSchema>;\nexport type DatabaseSettingsInput = z.infer<typeof databaseSettingsSchema>;\nexport type NeuronSettingsInput = z.infer<typeof neuronSettingsSchema>;\nexport type NeuronSettingsUpdateInput = z.infer<typeof neuronSettingsUpdateSchema>;\nexport type NeuronConfigInput = z.infer<typeof neuronConfigSchema>;\n","import { z } from 'zod';\n\nexport const paginationSchema = z.object({\n page: z.coerce.number().int().min(1).optional(),\n limit: z.coerce.number().int().min(1).max(1000).optional(),\n});\n\nexport const listNodesParamsSchema = paginationSchema.extend({\n nodeType: z.union([z.string(), z.array(z.string())]).optional(),\n domain: z.union([z.string(), z.array(z.string())]).optional(),\n clusterId: z.string().uuid().optional(),\n analysisStatus: z.string().optional(),\n search: z.string().optional(),\n sortBy: z.enum(['createdAt', 'updatedAt', 'label', 'connectionCount']).optional(),\n sortOrder: z.enum(['asc', 'desc']).optional(),\n includeEmbeddings: z.coerce.boolean().optional(),\n includeStats: z.coerce.boolean().optional(),\n});\n\nexport const listEdgesParamsSchema = paginationSchema.extend({\n fromNodeId: z.string().uuid().optional(),\n toNodeId: z.string().uuid().optional(),\n nodeId: z.string().uuid().optional(),\n relationshipType: z.union([z.string(), z.array(z.string())]).optional(),\n source: z.enum(['manual', 'ai_inferred', 'imported']).optional(),\n minStrength: z.coerce.number().min(0).max(1).optional(),\n minConfidence: z.coerce.number().min(0).max(1).optional(),\n});\n\nexport const getGraphParamsSchema = z.object({\n nodeTypes: z.union([z.string(), z.array(z.string())]).optional(),\n domains: z.union([z.string(), z.array(z.string())]).optional(),\n clusterIds: z.union([z.string(), z.array(z.string())]).optional(),\n nodeIds: z.union([z.string(), z.array(z.string())]).optional(),\n depth: z.coerce.number().int().min(1).optional(),\n minEdgeStrength: z.coerce.number().min(0).max(1).optional(),\n relationshipTypes: z.union([z.string(), z.array(z.string())]).optional(),\n maxNodes: z.coerce.number().int().min(1).optional(),\n includeOrphanNodes: z.coerce.boolean().optional(),\n});\n\nexport const expandGraphRequestSchema = z.object({\n fromNodeIds: z.array(z.string().uuid()),\n depth: z.coerce.number().int().min(1),\n direction: z.enum(['outbound', 'inbound', 'both']),\n maxNodes: z.coerce.number().int().min(1).optional(),\n});\n\nexport const findPathRequestSchema = z.object({\n fromNodeId: z.string().uuid(),\n toNodeId: z.string().uuid(),\n maxDepth: z.coerce.number().int().min(1).optional(),\n algorithm: z.enum(['shortest', 'all']).optional(),\n});\n\nexport const semanticSearchRequestSchema = z.object({\n query: z.string().min(1),\n nodeTypes: z.array(z.string()).optional(),\n domains: z.array(z.string()).optional(),\n limit: z.coerce.number().int().min(1).optional(),\n});\n\nexport const findSimilarRequestSchema = z.object({\n nodeId: z.string().uuid(),\n limit: z.coerce.number().int().min(1).optional(),\n excludeConnected: z.coerce.boolean().optional(),\n});\n\nexport type PaginationInput = z.infer<typeof paginationSchema>;\nexport type ListNodesParamsInput = z.infer<typeof listNodesParamsSchema>;\nexport type ListEdgesParamsInput = z.infer<typeof listEdgesParamsSchema>;\nexport type GetGraphParamsInput = z.infer<typeof getGraphParamsSchema>;\nexport type ExpandGraphRequestInput = z.infer<typeof expandGraphRequestSchema>;\nexport type FindPathRequestInput = z.infer<typeof findPathRequestSchema>;\nexport type SemanticSearchRequestInput = z.infer<typeof semanticSearchRequestSchema>;\nexport type FindSimilarRequestInput = z.infer<typeof findSimilarRequestSchema>;\n","import type { Database } from '../../storage/database';\nimport type { NeuronNode } from '../types/node';\n\nexport interface ScoringConfig {\n similarityWeight: number;\n connectionWeight: number;\n recencyWeight: number;\n domainBoost: number;\n}\n\nexport interface ScoredNode {\n node: NeuronNode;\n score: number;\n breakdown: {\n similarity: number;\n connections: number;\n recency: number;\n domainMatch: number;\n };\n}\n\nconst DEFAULT_CONFIG: ScoringConfig = {\n similarityWeight: 0.6,\n connectionWeight: 0.2,\n recencyWeight: 0.1,\n domainBoost: 0.1,\n};\n\nexport class ScoringEngine {\n private config: ScoringConfig;\n\n constructor(private db: Database, config?: ScoringConfig) {\n this.config = { ...DEFAULT_CONFIG, ...(config ?? {}) };\n }\n\n cosineSimilarity(a: number[], b: number[]): number {\n let dot = 0;\n let magA = 0;\n let magB = 0;\n for (let i = 0; i < a.length; i += 1) {\n dot += a[i] * b[i];\n magA += a[i] * a[i];\n magB += b[i] * b[i];\n }\n if (magA === 0 || magB === 0) return 0;\n return dot / (Math.sqrt(magA) * Math.sqrt(magB));\n }\n\n async semanticSimilarity(nodeA: string, nodeB: string): Promise<number> {\n const rows = await this.db.query<{ similarity: number }>(\n 'SELECT 1 - (a.embedding <=> b.embedding) as similarity FROM nodes a JOIN nodes b ON b.id = $2 WHERE a.id = $1',\n [nodeA, nodeB]\n );\n return rows[0]?.similarity ?? 0;\n }\n\n async scoreForQuery(queryEmbedding: number[], nodeIds?: string[]): Promise<ScoredNode[]> {\n const filterClause = nodeIds?.length ? 'AND id = ANY($2)' : '';\n const values = nodeIds?.length ? [queryEmbedding, nodeIds] : [queryEmbedding];\n const nodes = await this.db.query<NeuronNode & { similarity: number }>(\n `SELECT *, 1 - (embedding <=> $1) as similarity FROM nodes WHERE embedding IS NOT NULL ${filterClause} ORDER BY embedding <=> $1`,\n values\n );\n\n return nodes.map((node) => this.applyScoring(node, node.similarity ?? 0));\n }\n\n async findSimilar(nodeId: string, limit = 10, excludeConnected = false): Promise<ScoredNode[]> {\n const base = excludeConnected\n ? `SELECT id FROM nodes WHERE id NOT IN (SELECT to_node_id FROM edges WHERE from_node_id = $1)`\n : `SELECT id FROM nodes WHERE id != $1`;\n const nodes = await this.db.query<NeuronNode & { similarity: number }>(\n `SELECT n.*, 1 - (n.embedding <=> (SELECT embedding FROM nodes WHERE id = $1)) as similarity\n FROM nodes n\n WHERE n.embedding IS NOT NULL AND n.id IN (${base})\n ORDER BY n.embedding <=> (SELECT embedding FROM nodes WHERE id = $1)\n LIMIT $2`,\n [nodeId, limit]\n );\n\n return nodes.map((node) => this.applyScoring(node, node.similarity ?? 0));\n }\n\n async calculateNodeImportance(nodeId: string): Promise<number> {\n const row = await this.db.queryOne<{ importance: number }>(\n `WITH edge_weights AS (\n SELECT to_node_id, SUM(strength) as total_inbound\n FROM edges\n GROUP BY to_node_id\n )\n SELECT COALESCE(ew.total_inbound, 0) + (n.connection_count * 0.1) as importance\n FROM nodes n\n LEFT JOIN edge_weights ew ON n.id = ew.to_node_id\n WHERE n.id = $1`,\n [nodeId]\n );\n return row?.importance ?? 0;\n }\n\n async rankAllNodes(): Promise<Array<{ nodeId: string; importance: number }>> {\n const rows = await this.db.query<{ id: string; importance: number }>(\n `WITH edge_weights AS (\n SELECT to_node_id, SUM(strength) as total_inbound\n FROM edges\n GROUP BY to_node_id\n )\n SELECT n.id, COALESCE(ew.total_inbound, 0) + (n.connection_count * 0.1) as importance\n FROM nodes n\n LEFT JOIN edge_weights ew ON n.id = ew.to_node_id\n ORDER BY importance DESC`\n );\n return rows.map((row) => ({ nodeId: row.id, importance: row.importance }));\n }\n\n async scoreRelevance(\n sourceNodeId: string,\n candidateNodeIds: string[],\n context?: string\n ): Promise<ScoredNode[]> {\n const nodes = await this.db.query<NeuronNode & { similarity: number }>(\n `SELECT *, 1 - (embedding <=> (SELECT embedding FROM nodes WHERE id = $1)) as similarity\n FROM nodes\n WHERE embedding IS NOT NULL AND id = ANY($2)\n ORDER BY embedding <=> (SELECT embedding FROM nodes WHERE id = $1)`,\n [sourceNodeId, candidateNodeIds]\n );\n\n return nodes.map((node) => {\n const base = this.applyScoring(node, node.similarity ?? 0);\n if (context) {\n base.score += this.config.domainBoost * 0.1;\n }\n return base;\n });\n }\n\n private applyScoring(node: NeuronNode & { similarity?: number }, similarity: number): ScoredNode {\n const connections = node.connectionCount ?? 0;\n const recency = node.updatedAt ? Math.max(0, 1 - (Date.now() - new Date(node.updatedAt).getTime()) / (1000 * 60 * 60 * 24 * 30)) : 0;\n const domainMatch = 0;\n\n const score =\n similarity * this.config.similarityWeight +\n connections * this.config.connectionWeight +\n recency * this.config.recencyWeight +\n domainMatch * this.config.domainBoost;\n\n return {\n node,\n score,\n breakdown: {\n similarity,\n connections,\n recency,\n domainMatch,\n },\n };\n }\n}\n","import type { NeuronConfig } from '../core/types/settings';\nimport { Database, type DatabaseConfig } from './database';\n\nlet singleton: Database | null = null;\n\nexport function createDatabase(config: NeuronConfig): Database {\n const dbConfig: DatabaseConfig = {\n connectionString: config.database.url,\n host: config.database.mode === 'docker' ? 'localhost' : undefined,\n port: config.database.port,\n user: config.database.user,\n password: config.database.password,\n database: config.database.database,\n pool: config.database.pool,\n };\n\n return new Database(dbConfig);\n}\n\nexport function createDatabaseFromEnv(): Database {\n const dbConfig: DatabaseConfig = {\n connectionString: process.env.DATABASE_URL,\n host: process.env.DB_HOST,\n port: process.env.DB_PORT ? Number(process.env.DB_PORT) : undefined,\n user: process.env.DB_USER,\n password: process.env.DB_PASSWORD,\n database: process.env.DB_NAME,\n };\n\n return new Database(dbConfig);\n}\n\nexport function getDatabase(config?: DatabaseConfig): Database {\n if (!singleton) {\n singleton = new Database(config ?? {});\n }\n\n return singleton;\n}\n\nexport function resetDatabaseSingleton(): void {\n singleton = null;\n}\n","export type WhereClause = Record<string, unknown>;\n\nexport interface SelectOptions {\n limit?: number;\n offset?: number;\n orderBy?: string;\n orderDirection?: 'asc' | 'desc';\n}\n\nexport const buildWhereClause = (where?: WhereClause, startIndex = 1) => {\n if (!where || Object.keys(where).length === 0) {\n return { clause: '', values: [], nextIndex: startIndex };\n }\n\n const keys = Object.keys(where);\n const values: unknown[] = [];\n const conditions = keys.map((key, idx) => {\n values.push(where[key]);\n return `${key} = $${startIndex + idx}`;\n });\n\n return {\n clause: `WHERE ${conditions.join(' AND ')}`,\n values,\n nextIndex: startIndex + keys.length,\n };\n};\n\nexport const buildInsert = (table: string, data: Record<string, unknown>) => {\n const keys = Object.keys(data);\n const values = Object.values(data);\n const columns = keys.map((key) => `\"${key}\"`).join(', ');\n const placeholders = keys.map((_, idx) => `$${idx + 1}`).join(', ');\n\n return {\n sql: `INSERT INTO ${table} (${columns}) VALUES (${placeholders}) RETURNING *`,\n values,\n };\n};\n\nexport const buildUpdate = (\n table: string,\n data: Record<string, unknown>,\n where: WhereClause\n) => {\n const keys = Object.keys(data);\n const values = Object.values(data);\n const setClause = keys.map((key, idx) => `\"${key}\" = $${idx + 1}`).join(', ');\n\n const whereResult = buildWhereClause(where, keys.length + 1);\n\n return {\n sql: `UPDATE ${table} SET ${setClause} ${whereResult.clause} RETURNING *`,\n values: [...values, ...whereResult.values],\n };\n};\n\nexport const buildSelect = (\n table: string,\n columns: string[] | '*',\n where?: WhereClause,\n options?: SelectOptions\n) => {\n const columnList = columns === '*' ? '*' : columns.map((col) => `\"${col}\"`).join(', ');\n const whereResult = buildWhereClause(where);\n const orderClause = options?.orderBy\n ? `ORDER BY ${options.orderBy} ${options.orderDirection ?? 'asc'}`\n : '';\n const limitClause = options?.limit ? `LIMIT ${options.limit}` : '';\n const offsetClause = options?.offset ? `OFFSET ${options.offset}` : '';\n\n return {\n sql: `SELECT ${columnList} FROM ${table} ${whereResult.clause} ${orderClause} ${limitClause} ${offsetClause}`.trim(),\n values: whereResult.values,\n };\n};\n\nexport const buildDelete = (table: string, where: WhereClause) => {\n const whereResult = buildWhereClause(where);\n return {\n sql: `DELETE FROM ${table} ${whereResult.clause}`,\n values: whereResult.values,\n };\n};\n"]}
|
package/dist/cli/index.cjs
CHANGED
|
@@ -54,12 +54,12 @@ async function writeTemplateFile(filePath, template, values, force = false) {
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
// src/cli/commands/init.ts
|
|
57
|
-
var CONFIG_TEMPLATE = `import { defineNeuronConfig, DEFAULT_ANALYSIS_SETTINGS, DEFAULT_VISUALIZATION_SETTINGS } from 'omi-neuron-web';
|
|
57
|
+
var CONFIG_TEMPLATE = `import { defineNeuronConfig, DEFAULT_ANALYSIS_SETTINGS, DEFAULT_VISUALIZATION_SETTINGS } from '@omiron33/omi-neuron-web';
|
|
58
58
|
|
|
59
59
|
export default defineNeuronConfig({
|
|
60
60
|
instance: {
|
|
61
61
|
name: '{{INSTANCE_NAME}}',
|
|
62
|
-
version: '0.1.
|
|
62
|
+
version: '0.1.1',
|
|
63
63
|
repoName: '{{REPO_NAME}}',
|
|
64
64
|
},
|
|
65
65
|
visualization: DEFAULT_VISUALIZATION_SETTINGS,
|
|
@@ -116,7 +116,7 @@ volumes:
|
|
|
116
116
|
{{REPO_NAME}}_neuron_data:
|
|
117
117
|
name: {{REPO_NAME}}_neuron_data
|
|
118
118
|
`;
|
|
119
|
-
var API_ROUTE_TEMPLATE = `import { createNeuronRoutes } from 'omi-neuron-web/api';
|
|
119
|
+
var API_ROUTE_TEMPLATE = `import { createNeuronRoutes } from '@omiron33/omi-neuron-web/api';
|
|
120
120
|
import config from '../../../../neuron.config';
|
|
121
121
|
|
|
122
122
|
const routes = createNeuronRoutes(config);
|
|
@@ -479,7 +479,7 @@ var validateCommand = new commander.Command("validate").description("Validate co
|
|
|
479
479
|
}
|
|
480
480
|
});
|
|
481
481
|
var CONFIG_FILE = path2__default.default.resolve("neuron.config.ts");
|
|
482
|
-
var serializeConfig = (config) => `import { defineNeuronConfig } from 'omi-neuron-web';
|
|
482
|
+
var serializeConfig = (config) => `import { defineNeuronConfig } from '@omiron33/omi-neuron-web';
|
|
483
483
|
|
|
484
484
|
export default defineNeuronConfig(${JSON.stringify(
|
|
485
485
|
config,
|