@omiron33/omi-neuron-web 0.1.0
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 +55 -0
- package/dist/api/index.cjs +943 -0
- package/dist/api/index.cjs.map +1 -0
- package/dist/api/index.d.cts +140 -0
- package/dist/api/index.d.ts +140 -0
- package/dist/api/index.js +934 -0
- package/dist/api/index.js.map +1 -0
- package/dist/chunk-BSOSHBDR.cjs +300 -0
- package/dist/chunk-BSOSHBDR.cjs.map +1 -0
- package/dist/chunk-COO66N7H.cjs +950 -0
- package/dist/chunk-COO66N7H.cjs.map +1 -0
- package/dist/chunk-FXKXMSLY.cjs +270 -0
- package/dist/chunk-FXKXMSLY.cjs.map +1 -0
- package/dist/chunk-PSDVPB7Y.js +289 -0
- package/dist/chunk-PSDVPB7Y.js.map +1 -0
- package/dist/chunk-RQCGONPN.js +937 -0
- package/dist/chunk-RQCGONPN.js.map +1 -0
- package/dist/chunk-RTSFO7BW.cjs +592 -0
- package/dist/chunk-RTSFO7BW.cjs.map +1 -0
- package/dist/chunk-TFLMPBX7.js +262 -0
- package/dist/chunk-TFLMPBX7.js.map +1 -0
- package/dist/chunk-XNR42GCJ.js +547 -0
- package/dist/chunk-XNR42GCJ.js.map +1 -0
- package/dist/cli/index.cjs +571 -0
- package/dist/cli/index.cjs.map +1 -0
- package/dist/cli/index.d.cts +1 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +563 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/database-B0vplyA4.d.cts +41 -0
- package/dist/database-B0vplyA4.d.ts +41 -0
- package/dist/edge-BzsYe2Ed.d.cts +269 -0
- package/dist/edge-BzsYe2Ed.d.ts +269 -0
- package/dist/index.cjs +895 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +1484 -0
- package/dist/index.d.ts +1484 -0
- package/dist/index.js +654 -0
- package/dist/index.js.map +1 -0
- package/dist/migration/index.cjs +32 -0
- package/dist/migration/index.cjs.map +1 -0
- package/dist/migration/index.d.cts +51 -0
- package/dist/migration/index.d.ts +51 -0
- package/dist/migration/index.js +3 -0
- package/dist/migration/index.js.map +1 -0
- package/dist/query-helpers-D8po5Mn-.d.cts +777 -0
- package/dist/query-helpers-DvQTA2_Z.d.ts +777 -0
- package/dist/visualization/index.cjs +485 -0
- package/dist/visualization/index.cjs.map +1 -0
- package/dist/visualization/index.d.cts +134 -0
- package/dist/visualization/index.d.ts +134 -0
- package/dist/visualization/index.js +460 -0
- package/dist/visualization/index.js.map +1 -0
- package/docker/docker-compose.template.yml +28 -0
- package/package.json +116 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/api/repositories/base.ts","../../src/api/repositories/node-repository.ts","../../src/api/routes/nodes.ts","../../src/api/repositories/edge-repository.ts","../../src/api/routes/edges.ts","../../src/api/query-builder.ts","../../src/api/routes/graph.ts","../../src/api/routes/analyze.ts","../../src/api/repositories/settings-repository.ts","../../src/api/routes/settings.ts","../../src/api/routes/search.ts","../../src/api/routes/health.ts","../../src/api/routes/factory.ts","../../src/api/repositories/cluster-repository.ts","../../src/api/repositories/analysis-run-repository.ts","../../src/api/middleware/cors.ts","../../src/api/middleware/error-handler.ts","../../src/api/middleware/logging.ts","../../src/api/middleware/timing.ts","../../src/api/middleware/index.ts"],"names":["buildSelect","buildInsert","buildUpdate","buildDelete","buildWhereClause","createDatabase","listNodesParamsSchema","nodeBatchCreateSchema","nodeUpdateSchema","listEdgesParamsSchema","edgeCreateSchema","edgeUpdateSchema","getGraphParamsSchema","expandGraphRequestSchema","findPathRequestSchema","EventBus","EmbeddingsService","ClusteringEngine","RelationshipEngine","AnalysisPipeline","pipeline","analysisRequestSchema","DEFAULT_VISUALIZATION_SETTINGS","DEFAULT_ANALYSIS_SETTINGS","neuronSettingsUpdateSchema","ScoringEngine","body","input","findSimilarRequestSchema","results","semanticSearchRequestSchema"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { Database } from '../../storage/database';\nimport {\n buildDelete,\n buildInsert,\n buildSelect,\n buildUpdate,\n buildWhereClause,\n type SelectOptions,\n type WhereClause,\n} from '../../storage/query-helpers';\n\nexport interface QueryOptions extends SelectOptions {\n where?: WhereClause;\n}\n\nexport abstract class BaseRepository<T, CreateDTO, UpdateDTO> {\n constructor(protected db: Database, protected tableName: string) {}\n\n async findById(id: string): Promise<T | null> {\n const { sql, values } = buildSelect(this.tableName, '*', { id });\n const rows = await this.db.query<T>(sql, values);\n return rows[0] ?? null;\n }\n\n async findAll(options?: QueryOptions): Promise<T[]> {\n const { sql, values } = buildSelect(\n this.tableName,\n '*',\n options?.where,\n options\n );\n return this.db.query<T>(sql, values);\n }\n\n async create(data: CreateDTO): Promise<T> {\n const { sql, values } = buildInsert(this.tableName, data as Record<string, unknown>);\n const rows = await this.db.query<T>(sql, values);\n return rows[0];\n }\n\n async update(id: string, data: UpdateDTO): Promise<T | null> {\n const { sql, values } = buildUpdate(this.tableName, data as Record<string, unknown>, { id });\n const rows = await this.db.query<T>(sql, values);\n return rows[0] ?? null;\n }\n\n async delete(id: string): Promise<boolean> {\n const { sql, values } = buildDelete(this.tableName, { id });\n const count = await this.db.execute(sql, values);\n return count > 0;\n }\n\n async count(where?: WhereClause): Promise<number> {\n const whereResult = buildWhereClause(where);\n const sql = `SELECT COUNT(*)::int as count FROM ${this.tableName} ${whereResult.clause}`;\n const rows = await this.db.query<{ count: number }>(sql, whereResult.values);\n return Number(rows[0]?.count ?? 0);\n }\n}\n","import type { Database } from '../../storage/database';\nimport type { NeuronNode, NeuronNodeCreate, NeuronNodeUpdate } from '../../core/types/node';\nimport type { QueryOptions } from './base';\nimport { BaseRepository } from './base';\n\nconst mapNodeRow = (row: Record<string, unknown>): NeuronNode => ({\n id: row.id as string,\n slug: row.slug as string,\n label: row.label as string,\n nodeType: row.node_type as string,\n domain: row.domain as string,\n summary: (row.summary as string | null) ?? null,\n description: (row.description as string | null) ?? null,\n content: (row.content as string | null) ?? null,\n metadata: (row.metadata as Record<string, unknown>) ?? {},\n tier: (row.tier as NeuronNode['tier']) ?? undefined,\n visualPriority: (row.visual_priority as number | undefined) ?? undefined,\n positionOverride: (row.position_override as [number, number, number] | null) ?? null,\n connectionCount: (row.connection_count as number | undefined) ?? 0,\n inboundCount: (row.inbound_count as number | undefined) ?? 0,\n outboundCount: (row.outbound_count as number | undefined) ?? 0,\n analysisStatus: (row.analysis_status as NeuronNode['analysisStatus']) ?? 'pending',\n analysisError: (row.analysis_error as string | null) ?? null,\n embedding: (row.embedding as number[] | null) ?? null,\n embeddingModel: (row.embedding_model as string | null) ?? null,\n embeddingGeneratedAt: (row.embedding_generated_at as Date | null) ?? null,\n clusterId: (row.cluster_id as string | null) ?? null,\n clusterSimilarity: (row.cluster_similarity as number | null) ?? null,\n createdAt: row.created_at as Date,\n updatedAt: row.updated_at as Date,\n});\n\nexport class NodeRepository extends BaseRepository<NeuronNode, NeuronNodeCreate, NeuronNodeUpdate> {\n constructor(db: Database) {\n super(db, 'nodes');\n }\n\n override async findById(id: string): Promise<NeuronNode | null> {\n const row = await this.db.queryOne<Record<string, unknown>>('SELECT * FROM nodes WHERE id = $1', [id]);\n return row ? mapNodeRow(row) : null;\n }\n\n override async findAll(options?: QueryOptions): Promise<NeuronNode[]> {\n const rows = await super.findAll(options);\n return (rows as unknown as Record<string, unknown>[]).map(mapNodeRow);\n }\n\n async findBySlug(slug: string): Promise<NeuronNode | null> {\n const row = await this.db.queryOne<Record<string, unknown>>('SELECT * FROM nodes WHERE slug = $1', [slug]);\n return row ? mapNodeRow(row) : null;\n }\n\n async findByDomain(domain: string): Promise<NeuronNode[]> {\n const rows = await this.db.query<Record<string, unknown>>('SELECT * FROM nodes WHERE domain = $1', [domain]);\n return rows.map(mapNodeRow);\n }\n\n async findByCluster(clusterId: string): Promise<NeuronNode[]> {\n const rows = await this.db.query<Record<string, unknown>>('SELECT * FROM nodes WHERE cluster_id = $1', [clusterId]);\n return rows.map(mapNodeRow);\n }\n\n async search(query: string): Promise<NeuronNode[]> {\n const rows = await this.db.query<Record<string, unknown>>(\n `SELECT * FROM nodes WHERE label ILIKE $1 OR summary ILIKE $1 OR content ILIKE $1`,\n [`%${query}%`]\n );\n return rows.map(mapNodeRow);\n }\n\n async batchCreate(nodes: NeuronNodeCreate[]): Promise<NeuronNode[]> {\n const created: NeuronNode[] = [];\n for (const node of nodes) {\n const row = await this.db.queryOne<Record<string, unknown>>(\n `INSERT INTO nodes (slug, label, node_type, domain, summary, description, content, metadata, tier)\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)\n RETURNING *`,\n [\n node.slug,\n node.label,\n node.nodeType ?? 'concept',\n node.domain ?? 'general',\n node.summary ?? null,\n node.description ?? null,\n node.content ?? null,\n node.metadata ?? {},\n node.tier ?? null,\n ]\n );\n if (row) created.push(mapNodeRow(row));\n }\n return created;\n }\n\n async updateConnectionCounts(nodeId: string): Promise<void> {\n const inbound = await this.db.queryOne<{ count: string }>(\n 'SELECT COUNT(*)::int as count FROM edges WHERE to_node_id = $1',\n [nodeId]\n );\n const outbound = await this.db.queryOne<{ count: string }>(\n 'SELECT COUNT(*)::int as count FROM edges WHERE from_node_id = $1',\n [nodeId]\n );\n const inboundCount = Number(inbound?.count ?? 0);\n const outboundCount = Number(outbound?.count ?? 0);\n await this.db.execute(\n 'UPDATE nodes SET inbound_count = $1, outbound_count = $2, connection_count = $3 WHERE id = $4',\n [inboundCount, outboundCount, inboundCount + outboundCount, nodeId]\n );\n }\n}\n","import { listNodesParamsSchema } from '../../core/schemas/api';\nimport { nodeBatchCreateSchema, nodeUpdateSchema } from '../../core/schemas/node';\nimport type { NeuronConfig } from '../../core/types/settings';\nimport { createDatabase } from '../../storage/factory';\nimport { NodeRepository } from '../repositories/node-repository';\n\nexport const createNodesRoutes = (config: NeuronConfig) => {\n const db = createDatabase(config);\n const repo = new NodeRepository(db);\n\n return {\n async GET(request: Request) {\n const url = new URL(request.url);\n const params = listNodesParamsSchema.parse(Object.fromEntries(url.searchParams));\n const nodes = await repo.findAll({\n where: {},\n limit: params.limit,\n offset: params.page ? (params.page - 1) * (params.limit ?? 50) : undefined,\n });\n return Response.json({\n nodes,\n pagination: {\n page: params.page ?? 1,\n limit: params.limit ?? nodes.length,\n total: nodes.length,\n totalPages: 1,\n hasNext: false,\n hasPrev: false,\n },\n meta: {\n queryTime: 0,\n filters: params,\n },\n });\n },\n async POST(request: Request) {\n const body = await request.json();\n const input = nodeBatchCreateSchema.parse(body);\n const created = await repo.batchCreate(input.nodes);\n return Response.json({ created, skipped: [], analysisJobId: null }, { status: 201 });\n },\n async PATCH(request: Request) {\n const url = new URL(request.url);\n const id = url.pathname.split('/').pop();\n if (!id) return new Response('Missing id', { status: 400 });\n const body = await request.json();\n const input = nodeUpdateSchema.parse(body);\n const updated = await repo.update(id, input);\n return Response.json(updated);\n },\n async DELETE(request: Request) {\n const url = new URL(request.url);\n const id = url.pathname.split('/').pop();\n if (!id) return new Response('Missing id', { status: 400 });\n const deleted = await repo.delete(id);\n return Response.json({ deleted, edgesRemoved: 0 });\n },\n };\n};\n","import type { Database } from '../../storage/database';\nimport type { NeuronEdge, NeuronEdgeCreate, NeuronEdgeUpdate } from '../../core/types/edge';\nimport { BaseRepository } from './base';\n\nconst mapEdgeRow = (row: Record<string, unknown>): NeuronEdge => ({\n id: row.id as string,\n fromNodeId: row.from_node_id as string,\n toNodeId: row.to_node_id as string,\n relationshipType: row.relationship_type as string,\n strength: Number(row.strength ?? 0.5),\n confidence: Number(row.confidence ?? 1),\n evidence: (row.evidence as NeuronEdge['evidence']) ?? [],\n label: (row.label as string | null) ?? null,\n description: (row.description as string | null) ?? null,\n metadata: (row.metadata as Record<string, unknown>) ?? {},\n source: row.source as NeuronEdge['source'],\n sourceModel: (row.source_model as string | null) ?? null,\n createdAt: row.created_at as Date,\n updatedAt: row.updated_at as Date,\n bidirectional: Boolean(row.bidirectional ?? false),\n});\n\nexport class EdgeRepository extends BaseRepository<NeuronEdge, NeuronEdgeCreate, NeuronEdgeUpdate> {\n constructor(db: Database) {\n super(db, 'edges');\n }\n\n override async findById(id: string): Promise<NeuronEdge | null> {\n const row = await this.db.queryOne<Record<string, unknown>>('SELECT * FROM edges WHERE id = $1', [id]);\n return row ? mapEdgeRow(row) : null;\n }\n\n override async findAll(): Promise<NeuronEdge[]> {\n const rows = await this.db.query<Record<string, unknown>>('SELECT * FROM edges');\n return rows.map(mapEdgeRow);\n }\n\n async findByNodeId(nodeId: string, direction: 'inbound' | 'outbound' | 'both' = 'both') {\n let sql = 'SELECT * FROM edges WHERE from_node_id = $1 OR to_node_id = $1';\n if (direction === 'inbound') {\n sql = 'SELECT * FROM edges WHERE to_node_id = $1';\n }\n if (direction === 'outbound') {\n sql = 'SELECT * FROM edges WHERE from_node_id = $1';\n }\n const rows = await this.db.query<Record<string, unknown>>(sql, [nodeId]);\n return rows.map(mapEdgeRow);\n }\n\n async findBetweenNodes(fromId: string, toId: string): Promise<NeuronEdge[]> {\n const rows = await this.db.query<Record<string, unknown>>(\n 'SELECT * FROM edges WHERE from_node_id = $1 AND to_node_id = $2',\n [fromId, toId]\n );\n return rows.map(mapEdgeRow);\n }\n\n async deleteByNodeId(nodeId: string): Promise<number> {\n return this.db.execute('DELETE FROM edges WHERE from_node_id = $1 OR to_node_id = $1', [nodeId]);\n }\n\n async batchCreate(edges: NeuronEdgeCreate[]): Promise<NeuronEdge[]> {\n const created: NeuronEdge[] = [];\n for (const edge of edges) {\n const row = await this.db.queryOne<Record<string, unknown>>(\n `INSERT INTO edges (from_node_id, to_node_id, relationship_type, strength, confidence, evidence, label, description, metadata, source, bidirectional)\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, 'manual', $10)\n RETURNING *`,\n [\n edge.fromNodeId,\n edge.toNodeId,\n edge.relationshipType ?? 'related_to',\n edge.strength ?? 0.5,\n edge.confidence ?? 1,\n edge.evidence ?? [],\n edge.label ?? null,\n edge.description ?? null,\n edge.metadata ?? {},\n edge.bidirectional ?? false,\n ]\n );\n if (row) created.push(mapEdgeRow(row));\n }\n return created;\n }\n}\n","import { listEdgesParamsSchema } from '../../core/schemas/api';\nimport { edgeCreateSchema, edgeUpdateSchema } from '../../core/schemas/edge';\nimport type { NeuronConfig } from '../../core/types/settings';\nimport { createDatabase } from '../../storage/factory';\nimport { EdgeRepository } from '../repositories/edge-repository';\n\nexport const createEdgesRoutes = (config: NeuronConfig) => {\n const db = createDatabase(config);\n const repo = new EdgeRepository(db);\n\n return {\n async GET(request: Request) {\n const url = new URL(request.url);\n const params = listEdgesParamsSchema.parse(Object.fromEntries(url.searchParams));\n const edges = await repo.findAll();\n return Response.json({\n edges,\n pagination: {\n page: params.page ?? 1,\n limit: params.limit ?? edges.length,\n total: edges.length,\n totalPages: 1,\n hasNext: false,\n hasPrev: false,\n },\n });\n },\n async POST(request: Request) {\n const body = await request.json();\n const input = edgeCreateSchema.array().safeParse(body.edges ?? body);\n if (!input.success) {\n return Response.json({ error: input.error.message }, { status: 400 });\n }\n const created = await repo.batchCreate(input.data);\n return Response.json({ created, errors: [] }, { status: 201 });\n },\n async PATCH(request: Request) {\n const url = new URL(request.url);\n const id = url.pathname.split('/').pop();\n if (!id) return new Response('Missing id', { status: 400 });\n const body = await request.json();\n const input = edgeUpdateSchema.parse(body);\n const updated = await repo.update(id, input);\n return Response.json(updated);\n },\n async DELETE(request: Request) {\n const url = new URL(request.url);\n const id = url.pathname.split('/').pop();\n if (!id) return new Response('Missing id', { status: 400 });\n const deleted = await repo.delete(id);\n return Response.json({ deleted });\n },\n };\n};\n","import type { Database } from '../storage/database';\nimport type {\n ExpandGraphRequest,\n ExpandGraphResponse,\n FindPathRequest,\n FindPathResponse,\n GetGraphParams,\n GetGraphResponse,\n} from '../core/types/api';\nimport type { NeuronVisualEdge, NeuronVisualNode } from '../core/types';\n\nconst mapVisualNode = (row: Record<string, unknown>): NeuronVisualNode => ({\n id: row.id as string,\n slug: row.slug as string,\n label: row.label as string,\n domain: row.domain as string,\n tier: (row.tier as NeuronVisualNode['tier']) ?? undefined,\n metadata: (row.metadata as Record<string, unknown>) ?? {},\n ref: (row.ref as string | null) ?? null,\n connectionCount: Number(row.connection_count ?? 0),\n position: (row.position_override as [number, number, number] | null) ?? undefined,\n});\n\nconst mapVisualEdge = (row: Record<string, unknown>): NeuronVisualEdge => ({\n id: row.id as string,\n from: row.from_slug as string,\n to: row.to_slug as string,\n relationshipType: row.relationship_type as string,\n strength: Number(row.strength ?? 0.5),\n label: (row.label as string | null) ?? null,\n});\n\nexport class GraphQueryBuilder {\n constructor(private db: Database) {}\n\n buildGraphQuery(params: GetGraphParams): { sql: string; values: unknown[] } {\n const values: unknown[] = [];\n const filters: string[] = [];\n\n if (params.domains?.length) {\n values.push(params.domains);\n filters.push(`domain = ANY($${values.length})`);\n }\n if (params.nodeTypes?.length) {\n values.push(params.nodeTypes);\n filters.push(`node_type = ANY($${values.length})`);\n }\n if (params.clusterIds?.length) {\n values.push(params.clusterIds);\n filters.push(`cluster_id = ANY($${values.length})`);\n }\n if (params.nodeIds?.length) {\n values.push(params.nodeIds);\n filters.push(`id = ANY($${values.length})`);\n }\n\n const where = filters.length ? `WHERE ${filters.join(' AND ')}` : '';\n const limit = params.maxNodes ? `LIMIT ${params.maxNodes}` : '';\n\n const sql = `\n WITH filtered_nodes AS (\n SELECT * FROM nodes\n ${where}\n ${limit}\n )\n SELECT * FROM filtered_nodes;\n `;\n\n return { sql, values };\n }\n\n buildExpansionQuery(params: ExpandGraphRequest): { sql: string; values: unknown[] } {\n const values: unknown[] = [params.fromNodeIds, params.depth ?? 1];\n const sql = `\n WITH RECURSIVE expanded AS (\n SELECT id, slug, label, domain, tier, metadata, position_override, connection_count, 1 as depth\n FROM nodes\n WHERE id = ANY($1)\n\n UNION ALL\n\n SELECT n.id, n.slug, n.label, n.domain, n.tier, n.metadata, n.position_override, n.connection_count, e.depth + 1\n FROM expanded e\n JOIN edges ed ON ed.from_node_id = e.id OR ed.to_node_id = e.id\n JOIN nodes n ON (n.id = ed.from_node_id OR n.id = ed.to_node_id)\n WHERE e.depth < $2\n )\n SELECT DISTINCT * FROM expanded;\n `;\n\n return { sql, values };\n }\n\n buildPathQuery(params: FindPathRequest): { sql: string; values: unknown[] } {\n const values: unknown[] = [params.fromNodeId, params.toNodeId, params.maxDepth ?? 5];\n const sql = `\n WITH RECURSIVE paths AS (\n SELECT ARRAY[from_node_id, to_node_id] as path,\n ARRAY[id] as edge_ids,\n strength as total_strength,\n 1 as depth\n FROM edges\n WHERE from_node_id = $1\n\n UNION ALL\n\n SELECT p.path || e.to_node_id,\n p.edge_ids || e.id,\n p.total_strength + e.strength,\n p.depth + 1\n FROM paths p\n JOIN edges e ON e.from_node_id = p.path[array_upper(p.path, 1)]\n WHERE NOT e.to_node_id = ANY(p.path)\n AND p.depth < $3\n )\n SELECT * FROM paths\n WHERE path[array_upper(path, 1)] = $2\n ORDER BY array_length(path, 1), total_strength DESC;\n `;\n\n return { sql, values };\n }\n\n async getGraph(params: GetGraphParams): Promise<GetGraphResponse> {\n const { sql, values } = this.buildGraphQuery(params);\n const nodes = await this.db.query<Record<string, unknown>>(sql, values);\n const nodeIds = nodes.map((node) => node.id as string);\n\n const edges = await this.db.query<Record<string, unknown>>(\n `SELECT e.*, n1.slug as from_slug, n2.slug as to_slug\n FROM edges e\n JOIN nodes n1 ON e.from_node_id = n1.id\n JOIN nodes n2 ON e.to_node_id = n2.id\n WHERE e.from_node_id = ANY($1) AND e.to_node_id = ANY($1)`,\n [nodeIds]\n );\n\n return {\n nodes: nodes.map(mapVisualNode),\n edges: edges.map(mapVisualEdge),\n clusters: [],\n meta: {\n totalNodes: nodes.length,\n totalEdges: edges.length,\n truncated: Boolean(params.maxNodes && nodes.length >= params.maxNodes),\n queryTime: 0,\n },\n };\n }\n\n async expandGraph(params: ExpandGraphRequest): Promise<ExpandGraphResponse> {\n const { sql, values } = this.buildExpansionQuery(params);\n const nodes = await this.db.query<Record<string, unknown>>(sql, values);\n const nodeIds = nodes.map((node) => node.id as string);\n\n const edges = await this.db.query<Record<string, unknown>>(\n `SELECT e.*, n1.slug as from_slug, n2.slug as to_slug\n FROM edges e\n JOIN nodes n1 ON e.from_node_id = n1.id\n JOIN nodes n2 ON e.to_node_id = n2.id\n WHERE e.from_node_id = ANY($1) AND e.to_node_id = ANY($1)`,\n [nodeIds]\n );\n\n return {\n nodes: nodes.map(mapVisualNode),\n edges: edges.map(mapVisualEdge),\n };\n }\n\n async findPaths(params: FindPathRequest): Promise<FindPathResponse> {\n const { sql, values } = this.buildPathQuery(params);\n const rows = await this.db.query<{ path: string[]; edge_ids: string[]; total_strength: number }>(\n sql,\n values\n );\n\n return {\n paths: rows.map((row) => ({\n nodes: row.path,\n edges: row.edge_ids,\n length: row.path.length,\n totalStrength: row.total_strength,\n })),\n };\n }\n}\n","import { expandGraphRequestSchema, findPathRequestSchema, getGraphParamsSchema } from '../../core/schemas/api';\nimport type { NeuronConfig } from '../../core/types/settings';\nimport { createDatabase } from '../../storage/factory';\nimport { GraphQueryBuilder } from '../query-builder';\n\nexport const createGraphRoutes = (config: NeuronConfig) => {\n const db = createDatabase(config);\n const builder = new GraphQueryBuilder(db);\n\n return {\n async GET(request: Request) {\n const url = new URL(request.url);\n const params = getGraphParamsSchema.parse(Object.fromEntries(url.searchParams));\n const result = await builder.getGraph({\n ...params,\n nodeTypes: params.nodeTypes ? (Array.isArray(params.nodeTypes) ? params.nodeTypes : [params.nodeTypes]) : undefined,\n domains: params.domains ? (Array.isArray(params.domains) ? params.domains : [params.domains]) : undefined,\n clusterIds: params.clusterIds ? (Array.isArray(params.clusterIds) ? params.clusterIds : [params.clusterIds]) : undefined,\n nodeIds: params.nodeIds ? (Array.isArray(params.nodeIds) ? params.nodeIds : [params.nodeIds]) : undefined,\n relationshipTypes: params.relationshipTypes\n ? (Array.isArray(params.relationshipTypes) ? params.relationshipTypes : [params.relationshipTypes])\n : undefined,\n });\n return Response.json(result);\n },\n async POST(request: Request) {\n const url = new URL(request.url);\n if (url.pathname.endsWith('/expand')) {\n const body = await request.json();\n const input = expandGraphRequestSchema.parse(body);\n const result = await builder.expandGraph(input);\n return Response.json(result);\n }\n if (url.pathname.endsWith('/path')) {\n const body = await request.json();\n const input = findPathRequestSchema.parse(body);\n const result = await builder.findPaths(input);\n return Response.json(result);\n }\n return new Response('Unsupported', { status: 404 });\n },\n };\n};\n","import type { NeuronConfig } from '../../core/types/settings';\nimport { analysisRequestSchema } from '../../core/schemas/analysis';\nimport { createDatabase } from '../../storage/factory';\nimport { EventBus } from '../../core/events/event-bus';\nimport { EmbeddingsService } from '../../core/analysis/embeddings-service';\nimport { ClusteringEngine } from '../../core/analysis/clustering-engine';\nimport { RelationshipEngine } from '../../core/analysis/relationship-engine';\nimport { AnalysisPipeline } from '../../core/analysis/pipeline';\n\nconst buildPipeline = (config: NeuronConfig) => {\n const db = createDatabase(config);\n const events = new EventBus();\n const embeddings = new EmbeddingsService(\n {\n openaiApiKey: config.openai.apiKey,\n model: config.analysis.embeddingModel,\n batchSize: config.analysis.embeddingBatchSize,\n rateLimit: config.analysis.openaiRateLimit,\n cacheTTL: config.analysis.embeddingCacheTTL,\n maxRetries: config.openai.maxRetries ?? 3,\n },\n db\n );\n const clustering = new ClusteringEngine(db, embeddings);\n const relationships = new RelationshipEngine(db, {\n model: config.analysis.relationshipInferenceModel,\n minConfidence: config.analysis.relationshipMinConfidence,\n maxPerNode: config.analysis.relationshipMaxPerNode,\n similarityThreshold: config.analysis.clusterSimilarityThreshold,\n includeExisting: true,\n batchSize: 10,\n rateLimit: config.analysis.openaiRateLimit,\n });\n return new AnalysisPipeline(db, embeddings, clustering, relationships, events);\n};\n\nexport const createAnalyzeRoutes = (config: NeuronConfig) => {\n return {\n async POST(request: Request) {\n const url = new URL(request.url);\n if (url.pathname.endsWith('/cancel')) {\n const jobId = url.pathname.split('/').slice(-2)[0];\n const pipeline = buildPipeline(config);\n const cancelled = await pipeline.cancelJob(jobId);\n return Response.json({ cancelled });\n }\n\n const body = await request.json();\n const input = analysisRequestSchema.parse(body);\n const pipeline = buildPipeline(config);\n let job;\n if (input.action === 'embeddings') {\n job = await pipeline.runEmbeddings(input.options ?? {});\n } else if (input.action === 'cluster') {\n job = await pipeline.runClustering(input.options ?? {});\n } else if (input.action === 'infer_relationships') {\n job = await pipeline.runRelationships(input.options ?? {});\n } else {\n job = await pipeline.runFull(input.options ?? {});\n }\n return Response.json({ jobId: job.id, status: job.status });\n },\n async GET(request: Request) {\n const url = new URL(request.url);\n if (url.pathname.endsWith('/history')) {\n const pipeline = buildPipeline(config);\n const jobs = await pipeline.listJobs({ limit: 50 });\n return Response.json({ jobs });\n }\n const jobId = url.pathname.split('/').pop();\n if (!jobId) return new Response('Missing job id', { status: 400 });\n const pipeline = buildPipeline(config);\n const job = await pipeline.getJob(jobId);\n return Response.json({ job });\n },\n };\n};\n","import type { Database } from '../../storage/database';\nimport type { NeuronSettings, NeuronSettingsUpdate } from '../../core/types/settings';\nimport { DEFAULT_ANALYSIS_SETTINGS, DEFAULT_VISUALIZATION_SETTINGS } from '../../core/types/settings';\n\nconst deepMerge = (target: Record<string, unknown>, source: Record<string, unknown>) => {\n const output = { ...target };\n Object.entries(source).forEach(([key, value]) => {\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n output[key] = deepMerge((output[key] as Record<string, unknown>) ?? {}, value as Record<string, unknown>);\n } else if (value !== undefined) {\n output[key] = value as unknown;\n }\n });\n return output;\n};\n\nconst defaultSettings = (): NeuronSettings => ({\n instance: {\n name: 'default',\n version: '0.1.0',\n repoName: 'omi-neuron-web',\n },\n visualization: DEFAULT_VISUALIZATION_SETTINGS,\n analysis: DEFAULT_ANALYSIS_SETTINGS,\n nodeTypes: [],\n domains: [],\n relationshipTypes: [],\n});\n\nexport class SettingsRepository {\n constructor(private db: Database) {}\n\n async get(): Promise<NeuronSettings> {\n const row = await this.db.queryOne<{\n visualization: Record<string, unknown> | null;\n analysis: Record<string, unknown> | null;\n node_types: NeuronSettings['nodeTypes'] | null;\n domains: NeuronSettings['domains'] | null;\n relationship_types: NeuronSettings['relationshipTypes'] | null;\n }>('SELECT visualization, analysis, node_types, domains, relationship_types FROM settings WHERE id = $1', [\n 'default',\n ]);\n\n if (!row) {\n return defaultSettings();\n }\n\n return {\n ...defaultSettings(),\n visualization: { ...DEFAULT_VISUALIZATION_SETTINGS, ...(row.visualization ?? {}) },\n analysis: { ...DEFAULT_ANALYSIS_SETTINGS, ...(row.analysis ?? {}) },\n nodeTypes: row.node_types ?? [],\n domains: row.domains ?? [],\n relationshipTypes: row.relationship_types ?? [],\n };\n }\n\n async update(settings: NeuronSettingsUpdate): Promise<NeuronSettings> {\n const current = await this.get();\n const merged = deepMerge(current as unknown as Record<string, unknown>, settings as Record<string, unknown>);\n await this.db.execute(\n `INSERT INTO settings (id, visualization, analysis, node_types, domains, relationship_types)\n VALUES ('default', $1, $2, $3, $4, $5)\n ON CONFLICT (id) DO UPDATE SET visualization = $1, analysis = $2, node_types = $3, domains = $4, relationship_types = $5, updated_at = NOW()`,\n [\n merged.visualization,\n merged.analysis,\n merged.nodeTypes,\n merged.domains,\n merged.relationshipTypes,\n ]\n );\n return merged as unknown as NeuronSettings;\n }\n\n async reset(sections?: string[]): Promise<NeuronSettings> {\n const defaults = defaultSettings() as unknown as Record<string, unknown>;\n if (sections?.length) {\n const current = await this.get();\n const updated = { ...(current as unknown as Record<string, unknown>) };\n sections.forEach((section) => {\n updated[section] = defaults[section];\n });\n return this.update(updated as NeuronSettingsUpdate);\n }\n\n await this.db.execute(\n `INSERT INTO settings (id, visualization, analysis, node_types, domains, relationship_types)\n VALUES ('default', $1, $2, $3, $4, $5)\n ON CONFLICT (id) DO UPDATE SET visualization = $1, analysis = $2, node_types = $3, domains = $4, relationship_types = $5, updated_at = NOW()`,\n [\n defaults.visualization,\n defaults.analysis,\n defaults.nodeTypes,\n defaults.domains,\n defaults.relationshipTypes,\n ]\n );\n\n return defaults as unknown as NeuronSettings;\n }\n}\n","import type { NeuronConfig, NeuronSettingsUpdate } from '../../core/types/settings';\nimport { neuronSettingsUpdateSchema } from '../../core/schemas/settings';\nimport { createDatabase } from '../../storage/factory';\nimport { SettingsRepository } from '../repositories/settings-repository';\n\nexport const createSettingsRoutes = (config: NeuronConfig) => {\n const db = createDatabase(config);\n const repo = new SettingsRepository(db);\n\n return {\n async GET() {\n const settings = await repo.get();\n return Response.json({ settings });\n },\n async PATCH(request: Request) {\n const body = await request.json();\n const input = neuronSettingsUpdateSchema.parse(body) as NeuronSettingsUpdate;\n const settings = await repo.update(input);\n return Response.json({ settings });\n },\n async POST(request: Request) {\n const url = new URL(request.url);\n if (!url.pathname.endsWith('/reset')) {\n return new Response('Not found', { status: 404 });\n }\n const body = await request.json().catch(() => ({}));\n const settings = await repo.reset(body?.sections);\n return Response.json({ settings });\n },\n };\n};\n","import type { NeuronConfig } from '../../core/types/settings';\nimport { semanticSearchRequestSchema, findSimilarRequestSchema } from '../../core/schemas/api';\nimport { createDatabase } from '../../storage/factory';\nimport { EmbeddingsService } from '../../core/analysis/embeddings-service';\nimport { ScoringEngine } from '../../core/analysis/scoring-engine';\n\nexport const createSearchRoutes = (config: NeuronConfig) => {\n const db = createDatabase(config);\n const embeddings = new EmbeddingsService(\n {\n openaiApiKey: config.openai.apiKey,\n model: config.analysis.embeddingModel,\n batchSize: config.analysis.embeddingBatchSize,\n rateLimit: config.analysis.openaiRateLimit,\n cacheTTL: config.analysis.embeddingCacheTTL,\n maxRetries: config.openai.maxRetries ?? 3,\n },\n db\n );\n const scoring = new ScoringEngine(db);\n\n return {\n async POST(request: Request) {\n const url = new URL(request.url);\n if (url.pathname.endsWith('/similar')) {\n const body = await request.json();\n const input = findSimilarRequestSchema.parse(body);\n const results = await scoring.findSimilar(input.nodeId, input.limit ?? 10, input.excludeConnected ?? false);\n return Response.json({ results });\n }\n\n const body = await request.json();\n const input = semanticSearchRequestSchema.parse(body);\n const embedding = await embeddings.generateEmbedding(input.query);\n const results = await scoring.scoreForQuery(embedding);\n return Response.json({ results: results.slice(0, input.limit ?? 10) });\n },\n };\n};\n","import type { NeuronConfig } from '../../core/types/settings';\nimport { createDatabase } from '../../storage/factory';\n\nexport const createHealthRoutes = (config: NeuronConfig) => {\n const db = createDatabase(config);\n return {\n async GET() {\n const ok = await db.isConnected();\n return Response.json({ status: ok ? 'ok' : 'degraded', time: new Date().toISOString() });\n },\n };\n};\n","import type { NeuronConfig } from '../../core/types/settings';\nimport { createNodesRoutes } from './nodes';\nimport { createEdgesRoutes } from './edges';\nimport { createGraphRoutes } from './graph';\nimport { createAnalyzeRoutes } from './analyze';\nimport { createSettingsRoutes } from './settings';\nimport { createSearchRoutes } from './search';\nimport { createHealthRoutes } from './health';\n\nexport function createNeuronRoutes(config: NeuronConfig) {\n return {\n nodes: createNodesRoutes(config),\n edges: createEdgesRoutes(config),\n graph: createGraphRoutes(config),\n analyze: createAnalyzeRoutes(config),\n settings: createSettingsRoutes(config),\n search: createSearchRoutes(config),\n health: createHealthRoutes(config),\n };\n}\n","import type { Database } from '../../storage/database';\nimport type { NeuronCluster } from '../../core/types/cluster';\nimport { BaseRepository } from './base';\n\nconst mapClusterRow = (row: Record<string, unknown>): NeuronCluster => ({\n id: row.id as string,\n label: row.label as string,\n clusterType: (row.cluster_type as string | null) ?? 'topic',\n centroid: (row.centroid as number[] | null) ?? [],\n memberCount: Number(row.member_count ?? 0),\n avgSimilarity: (row.avg_similarity as number | null) ?? 0,\n cohesion: (row.cohesion as number | null) ?? 0,\n description: (row.description as string | null) ?? null,\n keywords: (row.keywords as string[] | null) ?? [],\n metadata: (row.metadata as Record<string, unknown>) ?? {},\n createdAt: row.created_at as Date,\n updatedAt: row.updated_at as Date,\n lastRecomputedAt: (row.last_recomputed_at as Date | null) ?? null,\n});\n\nexport class ClusterRepository extends BaseRepository<NeuronCluster, NeuronCluster, Partial<NeuronCluster>> {\n constructor(db: Database) {\n super(db, 'clusters');\n }\n\n override async findById(id: string): Promise<NeuronCluster | null> {\n const row = await this.db.queryOne<Record<string, unknown>>('SELECT * FROM clusters WHERE id = $1', [id]);\n return row ? mapClusterRow(row) : null;\n }\n\n async findWithMembers(clusterId: string): Promise<{\n cluster: NeuronCluster | null;\n members: Array<{ nodeId: string; similarityScore: number }>;\n }> {\n const cluster = await this.findById(clusterId);\n const memberships = await this.db.query<{ node_id: string; similarity_score: number }>(\n 'SELECT node_id, similarity_score FROM cluster_memberships WHERE cluster_id = $1',\n [clusterId]\n );\n return {\n cluster,\n members: memberships.map((row) => ({ nodeId: row.node_id, similarityScore: row.similarity_score })),\n };\n }\n\n async updateCentroid(clusterId: string, centroid: number[]): Promise<void> {\n await this.db.execute('UPDATE clusters SET centroid = $1 WHERE id = $2', [centroid, clusterId]);\n }\n\n async addMember(clusterId: string, nodeId: string, similarity: number): Promise<void> {\n await this.db.execute(\n 'INSERT INTO cluster_memberships (node_id, cluster_id, similarity_score, is_primary) VALUES ($1, $2, $3, true) ON CONFLICT (node_id, cluster_id) DO UPDATE SET similarity_score = $3',\n [nodeId, clusterId, similarity]\n );\n }\n\n async removeMember(clusterId: string, nodeId: string): Promise<void> {\n await this.db.execute('DELETE FROM cluster_memberships WHERE cluster_id = $1 AND node_id = $2', [\n clusterId,\n nodeId,\n ]);\n }\n}\n","import type { Database } from '../../storage/database';\nimport type { AnalysisRun } from '../../core/types/analysis';\nimport { BaseRepository } from './base';\n\nexport class AnalysisRunRepository extends BaseRepository<AnalysisRun, AnalysisRun, Partial<AnalysisRun>> {\n constructor(db: Database) {\n super(db, 'analysis_runs');\n }\n\n async findActive(): Promise<AnalysisRun[]> {\n return this.db.query<AnalysisRun>('SELECT * FROM analysis_runs WHERE status = $1', ['running']);\n }\n\n async updateProgress(id: string, progress: number): Promise<void> {\n await this.db.execute('UPDATE analysis_runs SET progress = $1 WHERE id = $2', [progress, id]);\n }\n\n async markCompleted(id: string, results: object): Promise<void> {\n await this.db.execute(\n 'UPDATE analysis_runs SET status = $1, results = $2, completed_at = NOW() WHERE id = $3',\n ['completed', results, id]\n );\n }\n\n async markFailed(id: string, error: string): Promise<void> {\n await this.db.execute(\n 'UPDATE analysis_runs SET status = $1, error_message = $2, completed_at = NOW() WHERE id = $3',\n ['failed', error, id]\n );\n }\n}\n","import type { RouteHandler } from './error-handler';\n\nexport interface CorsOptions {\n origins?: string[];\n}\n\nexport const withCors = (options?: CorsOptions) => (handler: RouteHandler): RouteHandler => async (request) => {\n if (request.method === 'OPTIONS') {\n return new Response(null, {\n status: 204,\n headers: buildCorsHeaders(options),\n });\n }\n\n const response = await handler(request);\n const headers = new Headers(response.headers);\n const corsHeaders = buildCorsHeaders(options);\n corsHeaders.forEach((value, key) => headers.set(key, value));\n return new Response(response.body, { status: response.status, headers });\n};\n\nconst buildCorsHeaders = (options?: CorsOptions): Headers => {\n const headers = new Headers();\n headers.set('Access-Control-Allow-Origin', options?.origins?.join(',') ?? '*');\n headers.set('Access-Control-Allow-Methods', 'GET,POST,PATCH,DELETE,OPTIONS');\n headers.set('Access-Control-Allow-Headers', 'Content-Type,Authorization');\n return headers;\n};\n","export class ApiError extends Error {\n constructor(\n message: string,\n public code: string,\n public statusCode: number,\n public details?: Record<string, unknown>\n ) {\n super(message);\n }\n}\n\nexport type RouteHandler = (request: Request) => Promise<Response>;\n\nexport const handleError = (error: unknown): Response => {\n if (error instanceof ApiError) {\n return Response.json(\n {\n error: error.message,\n code: error.code,\n statusCode: error.statusCode,\n details: error.details,\n },\n { status: error.statusCode }\n );\n }\n\n const message = error instanceof Error ? error.message : 'Internal error';\n return Response.json(\n {\n error: message,\n code: 'INTERNAL_ERROR',\n statusCode: 500,\n },\n { status: 500 }\n );\n};\n\nexport const withErrorHandler = (handler: RouteHandler): RouteHandler => async (request) => {\n try {\n return await handler(request);\n } catch (error) {\n return handleError(error);\n }\n};\n","import type { RouteHandler } from './error-handler';\n\nexport const withLogging = (handler: RouteHandler): RouteHandler => async (request) => {\n const start = Date.now();\n const response = await handler(request);\n const duration = Date.now() - start;\n // eslint-disable-next-line no-console\n console.log(`[omi-neuron] ${request.method} ${request.url} -> ${response.status} (${duration}ms)`);\n return response;\n};\n","import type { RouteHandler } from './error-handler';\n\nexport const withTiming = (handler: RouteHandler): RouteHandler => async (request) => {\n const start = Date.now();\n const response = await handler(request);\n const duration = Date.now() - start;\n const headers = new Headers(response.headers);\n headers.set('X-Response-Time', `${duration}ms`);\n return new Response(response.body, { status: response.status, headers });\n};\n","import type { RouteHandler } from './error-handler';\nimport { withCors, type CorsOptions } from './cors';\nimport { withErrorHandler } from './error-handler';\nimport { withLogging } from './logging';\nimport { withTiming } from './timing';\n\nexport interface MiddlewareOptions {\n cors?: CorsOptions;\n}\n\nconst compose = (...handlers: Array<(handler: RouteHandler) => RouteHandler>) => {\n return (handler: RouteHandler) => handlers.reduceRight((acc, fn) => fn(acc), handler);\n};\n\nexport const withNeuronMiddleware = (handler: RouteHandler, options?: MiddlewareOptions) => {\n const chain = [withErrorHandler, withLogging, withTiming];\n if (options?.cors) {\n chain.push(withCors(options.cors));\n }\n return compose(...chain)(handler);\n};\n"]}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { N as NeuronConfig, S as SelectOptions, W as WhereClause, a as NeuronCluster, b as NeuronSettings, c as NeuronSettingsUpdate, A as AnalysisRun, G as GetGraphParams, E as ExpandGraphRequest, F as FindPathRequest, d as GetGraphResponse, e as ExpandGraphResponse, f as FindPathResponse } from '../query-helpers-D8po5Mn-.cjs';
|
|
2
|
+
export { g as AnalysisRequest, h as AnalysisResponse, O as ApiErrorResponse, u as CancelAnalysisResponse, p as CreateEdgesRequest, q as CreateEdgesResponse, C as CreateNodesRequest, l as CreateNodesResponse, s as DeleteEdgeResponse, D as DeleteNodeResponse, B as FindSimilarOptions, z as FindSimilarRequest, H as FindSimilarResponse, t as GetAnalysisJobResponse, m as GetNodeResponse, I as GetSettingsResponse, j as GraphFilters, Q as HealthCheckResponse, n as ListEdgesParams, o as ListEdgesResponse, L as ListNodesParams, k as ListNodesResponse, i as PaginationMeta, P as PaginationParams, R as ResetSettingsRequest, M as ResetSettingsResponse, y as SearchResult, w as SemanticSearchOptions, v as SemanticSearchRequest, x as SemanticSearchResponse, r as UpdateEdgeRequest, U as UpdateNodeRequest, J as UpdateSettingsRequest, K as UpdateSettingsResponse } from '../query-helpers-D8po5Mn-.cjs';
|
|
3
|
+
import { D as Database } from '../database-B0vplyA4.cjs';
|
|
4
|
+
import { b as NeuronNode, d as NeuronNodeCreate, e as NeuronNodeUpdate, c as NeuronEdge, f as NeuronEdgeCreate, g as NeuronEdgeUpdate } from '../edge-BzsYe2Ed.cjs';
|
|
5
|
+
import 'pg';
|
|
6
|
+
|
|
7
|
+
declare function createNeuronRoutes(config: NeuronConfig): {
|
|
8
|
+
nodes: {
|
|
9
|
+
GET(request: Request): Promise<Response>;
|
|
10
|
+
POST(request: Request): Promise<Response>;
|
|
11
|
+
PATCH(request: Request): Promise<Response>;
|
|
12
|
+
DELETE(request: Request): Promise<Response>;
|
|
13
|
+
};
|
|
14
|
+
edges: {
|
|
15
|
+
GET(request: Request): Promise<Response>;
|
|
16
|
+
POST(request: Request): Promise<Response>;
|
|
17
|
+
PATCH(request: Request): Promise<Response>;
|
|
18
|
+
DELETE(request: Request): Promise<Response>;
|
|
19
|
+
};
|
|
20
|
+
graph: {
|
|
21
|
+
GET(request: Request): Promise<Response>;
|
|
22
|
+
POST(request: Request): Promise<Response>;
|
|
23
|
+
};
|
|
24
|
+
analyze: {
|
|
25
|
+
POST(request: Request): Promise<Response>;
|
|
26
|
+
GET(request: Request): Promise<Response>;
|
|
27
|
+
};
|
|
28
|
+
settings: {
|
|
29
|
+
GET(): Promise<Response>;
|
|
30
|
+
PATCH(request: Request): Promise<Response>;
|
|
31
|
+
POST(request: Request): Promise<Response>;
|
|
32
|
+
};
|
|
33
|
+
search: {
|
|
34
|
+
POST(request: Request): Promise<Response>;
|
|
35
|
+
};
|
|
36
|
+
health: {
|
|
37
|
+
GET(): Promise<Response>;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
interface QueryOptions extends SelectOptions {
|
|
42
|
+
where?: WhereClause;
|
|
43
|
+
}
|
|
44
|
+
declare abstract class BaseRepository<T, CreateDTO, UpdateDTO> {
|
|
45
|
+
protected db: Database;
|
|
46
|
+
protected tableName: string;
|
|
47
|
+
constructor(db: Database, tableName: string);
|
|
48
|
+
findById(id: string): Promise<T | null>;
|
|
49
|
+
findAll(options?: QueryOptions): Promise<T[]>;
|
|
50
|
+
create(data: CreateDTO): Promise<T>;
|
|
51
|
+
update(id: string, data: UpdateDTO): Promise<T | null>;
|
|
52
|
+
delete(id: string): Promise<boolean>;
|
|
53
|
+
count(where?: WhereClause): Promise<number>;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
declare class NodeRepository extends BaseRepository<NeuronNode, NeuronNodeCreate, NeuronNodeUpdate> {
|
|
57
|
+
constructor(db: Database);
|
|
58
|
+
findById(id: string): Promise<NeuronNode | null>;
|
|
59
|
+
findAll(options?: QueryOptions): Promise<NeuronNode[]>;
|
|
60
|
+
findBySlug(slug: string): Promise<NeuronNode | null>;
|
|
61
|
+
findByDomain(domain: string): Promise<NeuronNode[]>;
|
|
62
|
+
findByCluster(clusterId: string): Promise<NeuronNode[]>;
|
|
63
|
+
search(query: string): Promise<NeuronNode[]>;
|
|
64
|
+
batchCreate(nodes: NeuronNodeCreate[]): Promise<NeuronNode[]>;
|
|
65
|
+
updateConnectionCounts(nodeId: string): Promise<void>;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
declare class EdgeRepository extends BaseRepository<NeuronEdge, NeuronEdgeCreate, NeuronEdgeUpdate> {
|
|
69
|
+
constructor(db: Database);
|
|
70
|
+
findById(id: string): Promise<NeuronEdge | null>;
|
|
71
|
+
findAll(): Promise<NeuronEdge[]>;
|
|
72
|
+
findByNodeId(nodeId: string, direction?: 'inbound' | 'outbound' | 'both'): Promise<NeuronEdge[]>;
|
|
73
|
+
findBetweenNodes(fromId: string, toId: string): Promise<NeuronEdge[]>;
|
|
74
|
+
deleteByNodeId(nodeId: string): Promise<number>;
|
|
75
|
+
batchCreate(edges: NeuronEdgeCreate[]): Promise<NeuronEdge[]>;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
declare class ClusterRepository extends BaseRepository<NeuronCluster, NeuronCluster, Partial<NeuronCluster>> {
|
|
79
|
+
constructor(db: Database);
|
|
80
|
+
findById(id: string): Promise<NeuronCluster | null>;
|
|
81
|
+
findWithMembers(clusterId: string): Promise<{
|
|
82
|
+
cluster: NeuronCluster | null;
|
|
83
|
+
members: Array<{
|
|
84
|
+
nodeId: string;
|
|
85
|
+
similarityScore: number;
|
|
86
|
+
}>;
|
|
87
|
+
}>;
|
|
88
|
+
updateCentroid(clusterId: string, centroid: number[]): Promise<void>;
|
|
89
|
+
addMember(clusterId: string, nodeId: string, similarity: number): Promise<void>;
|
|
90
|
+
removeMember(clusterId: string, nodeId: string): Promise<void>;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
declare class SettingsRepository {
|
|
94
|
+
private db;
|
|
95
|
+
constructor(db: Database);
|
|
96
|
+
get(): Promise<NeuronSettings>;
|
|
97
|
+
update(settings: NeuronSettingsUpdate): Promise<NeuronSettings>;
|
|
98
|
+
reset(sections?: string[]): Promise<NeuronSettings>;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
declare class AnalysisRunRepository extends BaseRepository<AnalysisRun, AnalysisRun, Partial<AnalysisRun>> {
|
|
102
|
+
constructor(db: Database);
|
|
103
|
+
findActive(): Promise<AnalysisRun[]>;
|
|
104
|
+
updateProgress(id: string, progress: number): Promise<void>;
|
|
105
|
+
markCompleted(id: string, results: object): Promise<void>;
|
|
106
|
+
markFailed(id: string, error: string): Promise<void>;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
declare class GraphQueryBuilder {
|
|
110
|
+
private db;
|
|
111
|
+
constructor(db: Database);
|
|
112
|
+
buildGraphQuery(params: GetGraphParams): {
|
|
113
|
+
sql: string;
|
|
114
|
+
values: unknown[];
|
|
115
|
+
};
|
|
116
|
+
buildExpansionQuery(params: ExpandGraphRequest): {
|
|
117
|
+
sql: string;
|
|
118
|
+
values: unknown[];
|
|
119
|
+
};
|
|
120
|
+
buildPathQuery(params: FindPathRequest): {
|
|
121
|
+
sql: string;
|
|
122
|
+
values: unknown[];
|
|
123
|
+
};
|
|
124
|
+
getGraph(params: GetGraphParams): Promise<GetGraphResponse>;
|
|
125
|
+
expandGraph(params: ExpandGraphRequest): Promise<ExpandGraphResponse>;
|
|
126
|
+
findPaths(params: FindPathRequest): Promise<FindPathResponse>;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
type RouteHandler = (request: Request) => Promise<Response>;
|
|
130
|
+
|
|
131
|
+
interface CorsOptions {
|
|
132
|
+
origins?: string[];
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
interface MiddlewareOptions {
|
|
136
|
+
cors?: CorsOptions;
|
|
137
|
+
}
|
|
138
|
+
declare const withNeuronMiddleware: (handler: RouteHandler, options?: MiddlewareOptions) => RouteHandler;
|
|
139
|
+
|
|
140
|
+
export { AnalysisRunRepository, ClusterRepository, EdgeRepository, ExpandGraphRequest, ExpandGraphResponse, FindPathRequest, FindPathResponse, GetGraphParams, GetGraphResponse, GraphQueryBuilder, type MiddlewareOptions, NodeRepository, SettingsRepository, createNeuronRoutes, withNeuronMiddleware };
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { N as NeuronConfig, S as SelectOptions, W as WhereClause, a as NeuronCluster, b as NeuronSettings, c as NeuronSettingsUpdate, A as AnalysisRun, G as GetGraphParams, E as ExpandGraphRequest, F as FindPathRequest, d as GetGraphResponse, e as ExpandGraphResponse, f as FindPathResponse } from '../query-helpers-DvQTA2_Z.js';
|
|
2
|
+
export { g as AnalysisRequest, h as AnalysisResponse, O as ApiErrorResponse, u as CancelAnalysisResponse, p as CreateEdgesRequest, q as CreateEdgesResponse, C as CreateNodesRequest, l as CreateNodesResponse, s as DeleteEdgeResponse, D as DeleteNodeResponse, B as FindSimilarOptions, z as FindSimilarRequest, H as FindSimilarResponse, t as GetAnalysisJobResponse, m as GetNodeResponse, I as GetSettingsResponse, j as GraphFilters, Q as HealthCheckResponse, n as ListEdgesParams, o as ListEdgesResponse, L as ListNodesParams, k as ListNodesResponse, i as PaginationMeta, P as PaginationParams, R as ResetSettingsRequest, M as ResetSettingsResponse, y as SearchResult, w as SemanticSearchOptions, v as SemanticSearchRequest, x as SemanticSearchResponse, r as UpdateEdgeRequest, U as UpdateNodeRequest, J as UpdateSettingsRequest, K as UpdateSettingsResponse } from '../query-helpers-DvQTA2_Z.js';
|
|
3
|
+
import { D as Database } from '../database-B0vplyA4.js';
|
|
4
|
+
import { b as NeuronNode, d as NeuronNodeCreate, e as NeuronNodeUpdate, c as NeuronEdge, f as NeuronEdgeCreate, g as NeuronEdgeUpdate } from '../edge-BzsYe2Ed.js';
|
|
5
|
+
import 'pg';
|
|
6
|
+
|
|
7
|
+
declare function createNeuronRoutes(config: NeuronConfig): {
|
|
8
|
+
nodes: {
|
|
9
|
+
GET(request: Request): Promise<Response>;
|
|
10
|
+
POST(request: Request): Promise<Response>;
|
|
11
|
+
PATCH(request: Request): Promise<Response>;
|
|
12
|
+
DELETE(request: Request): Promise<Response>;
|
|
13
|
+
};
|
|
14
|
+
edges: {
|
|
15
|
+
GET(request: Request): Promise<Response>;
|
|
16
|
+
POST(request: Request): Promise<Response>;
|
|
17
|
+
PATCH(request: Request): Promise<Response>;
|
|
18
|
+
DELETE(request: Request): Promise<Response>;
|
|
19
|
+
};
|
|
20
|
+
graph: {
|
|
21
|
+
GET(request: Request): Promise<Response>;
|
|
22
|
+
POST(request: Request): Promise<Response>;
|
|
23
|
+
};
|
|
24
|
+
analyze: {
|
|
25
|
+
POST(request: Request): Promise<Response>;
|
|
26
|
+
GET(request: Request): Promise<Response>;
|
|
27
|
+
};
|
|
28
|
+
settings: {
|
|
29
|
+
GET(): Promise<Response>;
|
|
30
|
+
PATCH(request: Request): Promise<Response>;
|
|
31
|
+
POST(request: Request): Promise<Response>;
|
|
32
|
+
};
|
|
33
|
+
search: {
|
|
34
|
+
POST(request: Request): Promise<Response>;
|
|
35
|
+
};
|
|
36
|
+
health: {
|
|
37
|
+
GET(): Promise<Response>;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
interface QueryOptions extends SelectOptions {
|
|
42
|
+
where?: WhereClause;
|
|
43
|
+
}
|
|
44
|
+
declare abstract class BaseRepository<T, CreateDTO, UpdateDTO> {
|
|
45
|
+
protected db: Database;
|
|
46
|
+
protected tableName: string;
|
|
47
|
+
constructor(db: Database, tableName: string);
|
|
48
|
+
findById(id: string): Promise<T | null>;
|
|
49
|
+
findAll(options?: QueryOptions): Promise<T[]>;
|
|
50
|
+
create(data: CreateDTO): Promise<T>;
|
|
51
|
+
update(id: string, data: UpdateDTO): Promise<T | null>;
|
|
52
|
+
delete(id: string): Promise<boolean>;
|
|
53
|
+
count(where?: WhereClause): Promise<number>;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
declare class NodeRepository extends BaseRepository<NeuronNode, NeuronNodeCreate, NeuronNodeUpdate> {
|
|
57
|
+
constructor(db: Database);
|
|
58
|
+
findById(id: string): Promise<NeuronNode | null>;
|
|
59
|
+
findAll(options?: QueryOptions): Promise<NeuronNode[]>;
|
|
60
|
+
findBySlug(slug: string): Promise<NeuronNode | null>;
|
|
61
|
+
findByDomain(domain: string): Promise<NeuronNode[]>;
|
|
62
|
+
findByCluster(clusterId: string): Promise<NeuronNode[]>;
|
|
63
|
+
search(query: string): Promise<NeuronNode[]>;
|
|
64
|
+
batchCreate(nodes: NeuronNodeCreate[]): Promise<NeuronNode[]>;
|
|
65
|
+
updateConnectionCounts(nodeId: string): Promise<void>;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
declare class EdgeRepository extends BaseRepository<NeuronEdge, NeuronEdgeCreate, NeuronEdgeUpdate> {
|
|
69
|
+
constructor(db: Database);
|
|
70
|
+
findById(id: string): Promise<NeuronEdge | null>;
|
|
71
|
+
findAll(): Promise<NeuronEdge[]>;
|
|
72
|
+
findByNodeId(nodeId: string, direction?: 'inbound' | 'outbound' | 'both'): Promise<NeuronEdge[]>;
|
|
73
|
+
findBetweenNodes(fromId: string, toId: string): Promise<NeuronEdge[]>;
|
|
74
|
+
deleteByNodeId(nodeId: string): Promise<number>;
|
|
75
|
+
batchCreate(edges: NeuronEdgeCreate[]): Promise<NeuronEdge[]>;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
declare class ClusterRepository extends BaseRepository<NeuronCluster, NeuronCluster, Partial<NeuronCluster>> {
|
|
79
|
+
constructor(db: Database);
|
|
80
|
+
findById(id: string): Promise<NeuronCluster | null>;
|
|
81
|
+
findWithMembers(clusterId: string): Promise<{
|
|
82
|
+
cluster: NeuronCluster | null;
|
|
83
|
+
members: Array<{
|
|
84
|
+
nodeId: string;
|
|
85
|
+
similarityScore: number;
|
|
86
|
+
}>;
|
|
87
|
+
}>;
|
|
88
|
+
updateCentroid(clusterId: string, centroid: number[]): Promise<void>;
|
|
89
|
+
addMember(clusterId: string, nodeId: string, similarity: number): Promise<void>;
|
|
90
|
+
removeMember(clusterId: string, nodeId: string): Promise<void>;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
declare class SettingsRepository {
|
|
94
|
+
private db;
|
|
95
|
+
constructor(db: Database);
|
|
96
|
+
get(): Promise<NeuronSettings>;
|
|
97
|
+
update(settings: NeuronSettingsUpdate): Promise<NeuronSettings>;
|
|
98
|
+
reset(sections?: string[]): Promise<NeuronSettings>;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
declare class AnalysisRunRepository extends BaseRepository<AnalysisRun, AnalysisRun, Partial<AnalysisRun>> {
|
|
102
|
+
constructor(db: Database);
|
|
103
|
+
findActive(): Promise<AnalysisRun[]>;
|
|
104
|
+
updateProgress(id: string, progress: number): Promise<void>;
|
|
105
|
+
markCompleted(id: string, results: object): Promise<void>;
|
|
106
|
+
markFailed(id: string, error: string): Promise<void>;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
declare class GraphQueryBuilder {
|
|
110
|
+
private db;
|
|
111
|
+
constructor(db: Database);
|
|
112
|
+
buildGraphQuery(params: GetGraphParams): {
|
|
113
|
+
sql: string;
|
|
114
|
+
values: unknown[];
|
|
115
|
+
};
|
|
116
|
+
buildExpansionQuery(params: ExpandGraphRequest): {
|
|
117
|
+
sql: string;
|
|
118
|
+
values: unknown[];
|
|
119
|
+
};
|
|
120
|
+
buildPathQuery(params: FindPathRequest): {
|
|
121
|
+
sql: string;
|
|
122
|
+
values: unknown[];
|
|
123
|
+
};
|
|
124
|
+
getGraph(params: GetGraphParams): Promise<GetGraphResponse>;
|
|
125
|
+
expandGraph(params: ExpandGraphRequest): Promise<ExpandGraphResponse>;
|
|
126
|
+
findPaths(params: FindPathRequest): Promise<FindPathResponse>;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
type RouteHandler = (request: Request) => Promise<Response>;
|
|
130
|
+
|
|
131
|
+
interface CorsOptions {
|
|
132
|
+
origins?: string[];
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
interface MiddlewareOptions {
|
|
136
|
+
cors?: CorsOptions;
|
|
137
|
+
}
|
|
138
|
+
declare const withNeuronMiddleware: (handler: RouteHandler, options?: MiddlewareOptions) => RouteHandler;
|
|
139
|
+
|
|
140
|
+
export { AnalysisRunRepository, ClusterRepository, EdgeRepository, ExpandGraphRequest, ExpandGraphResponse, FindPathRequest, FindPathResponse, GetGraphParams, GetGraphResponse, GraphQueryBuilder, type MiddlewareOptions, NodeRepository, SettingsRepository, createNeuronRoutes, withNeuronMiddleware };
|