@lucern/graph-sync 1.0.30 → 1.0.32

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/convex.ts","../src/neo4jQueriesCore.ts","../src/neo4jQueriesAdvanced.ts","../src/neo4jQueries.ts"],"names":["v","permissiveReturn"],"mappings":"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","file":"neo4jQueries.js","sourcesContent":["import { unsafeConvexAnyApi } from \"@lucern/contracts/convex/unsafeAnyApi\";\nimport {\n type ActionBuilder,\n actionGeneric,\n type GenericActionCtx,\n type GenericDataModel,\n type GenericDocument,\n type GenericMutationCtx,\n type GenericQueryCtx,\n internalActionGeneric,\n internalMutationGeneric,\n internalQueryGeneric,\n type MutationBuilder,\n type QueryBuilder,\n} from \"convex/server\";\nimport type { GenericId, Value } from \"convex/values\";\n\nexport const internal = unsafeConvexAnyApi(\n \"graph-sync top-level module bundle lacks a committed Convex _generated/api surface\"\n);\n\ntype TableNames = string;\nexport type Id<TableName extends TableNames = string> = GenericId<TableName>;\ntype GraphSyncDocument<TableName extends string> = GenericDocument & {\n _creationTime: number;\n _id: GenericId<TableName>;\n};\n\ninterface GraphSyncTableInfo<\n Document extends GenericDocument,\n Indexes extends Record<string, string[]>,\n> {\n document: Document;\n fieldPaths: string;\n indexes: Indexes;\n searchIndexes: Record<string, never>;\n vectorIndexes: Record<string, never>;\n}\n\ntype EpistemicNodeDocument = GraphSyncDocument<\"epistemicNodes\"> & {\n globalId: string;\n nodeType: string;\n projectId?: string;\n updatedAt?: number;\n};\n\ntype EpistemicNodeEmbeddingDocument =\n GraphSyncDocument<\"epistemicNodeEmbeddings\"> & {\n embedding?: number[];\n nodeId: GenericId<\"epistemicNodes\">;\n };\n\ntype EpistemicEdgeDocument = GraphSyncDocument<\"epistemicEdges\"> & {\n edgeType: string;\n fromNodeId?: GenericId<\"epistemicNodes\"> | null;\n globalId?: string;\n sourceGlobalId?: string;\n targetGlobalId?: string;\n toNodeId?: GenericId<\"epistemicNodes\"> | null;\n};\n\ntype Neo4jSyncQueueDocument = GraphSyncDocument<\"neo4jSyncQueue\"> & {\n attempts?: number;\n createdAt?: number;\n entityId: string;\n entityType: \"node\" | \"edge\";\n lastAttemptAt?: number;\n lastError?: string;\n maxAttempts?: number;\n operation: \"upsert\" | \"delete\";\n status: \"pending\" | \"in_progress\" | \"failed\" | \"succeeded\";\n updatedAt?: number;\n};\n\ninterface GraphSyncDataModel extends GenericDataModel {\n epistemicEdges: GraphSyncTableInfo<\n EpistemicEdgeDocument,\n {\n by_globalId: [\"globalId\"];\n }\n >;\n epistemicNodeEmbeddings: GraphSyncTableInfo<\n EpistemicNodeEmbeddingDocument,\n {\n by_nodeId: [\"nodeId\"];\n }\n >;\n epistemicNodes: GraphSyncTableInfo<\n EpistemicNodeDocument,\n {\n by_nodeType: [\"nodeType\"];\n }\n >;\n neo4jSyncQueue: GraphSyncTableInfo<\n Neo4jSyncQueueDocument,\n {\n by_entity: [\"entityType\", \"entityId\"];\n by_status: [\"status\"];\n }\n >;\n}\n\nexport type GraphSyncRecord = Record<string, Value>;\nexport type ActionCtx = GenericActionCtx<GraphSyncDataModel>;\nexport type MutationCtx = GenericMutationCtx<GraphSyncDataModel>;\nexport type QueryCtx = GenericQueryCtx<GraphSyncDataModel>;\n\nexport const action = actionGeneric as ActionBuilder<\n GraphSyncDataModel,\n \"public\"\n>;\nexport const internalAction = internalActionGeneric as ActionBuilder<\n GraphSyncDataModel,\n \"internal\"\n>;\nexport const internalMutation = internalMutationGeneric as MutationBuilder<\n GraphSyncDataModel,\n \"internal\"\n>;\nexport const internalQuery = internalQueryGeneric as QueryBuilder<\n GraphSyncDataModel,\n \"internal\"\n>;\n","// biome-ignore-all lint/style/useFilenamingConvention: Published @lucern/graph-sync/neo4jQueriesCore subpath; rename needs an export-map migration.\n/**\n * Neo4j Graph Queries - shared transport helpers.\n */\n\ntype Neo4jQueryTransportSuccess = Readonly<{\n success: true;\n data: unknown[];\n}>;\n\ntype Neo4jQueryTransportFailure = Readonly<{\n success: false;\n error: string;\n}>;\n\ntype Neo4jQueryTransportResult =\n | Neo4jQueryTransportSuccess\n | Neo4jQueryTransportFailure;\n\ninterface Neo4jProxyResponse {\n data?: unknown[];\n error?: string;\n}\n\nconst TRAILING_SLASH_REGEX = /\\/+$/u;\nconst NEO4J_QUERY_TIMEOUT_MS = 10_000;\n\nexport function toInt(value: unknown, defaultValue: number): number {\n if (value === undefined || value === null) {\n return defaultValue;\n }\n const parsed = Number(value);\n return Number.isFinite(parsed) ? Math.floor(parsed) : defaultValue;\n}\n\nfunction isAllowedProxyUrl(urlString: string): boolean {\n try {\n const url = new URL(urlString);\n const isLocalhost =\n url.hostname === \"localhost\" || url.hostname === \"127.0.0.1\";\n if (!isLocalhost && url.protocol !== \"https:\") {\n return false;\n }\n if (url.username || url.password) {\n return false;\n }\n\n const configuredHosts = (\n process.env.LUCERN_GRAPH_SYNC_ALLOWED_PROXY_HOSTS || \"\"\n )\n .split(\",\")\n .map((host) => host.trim().toLowerCase())\n .filter(Boolean);\n if (configuredHosts.length === 0) {\n return true;\n }\n\n const hostname = url.hostname.toLowerCase();\n return configuredHosts.some((host) =>\n host.startsWith(\".\") ? hostname.endsWith(host) : hostname === host\n );\n } catch {\n console.warn(\"[Neo4j Queries] Rejected malformed proxy URL\", urlString);\n return false;\n }\n}\n\nfunction createNeo4jQueryTransportSuccess(\n data: unknown[]\n): Neo4jQueryTransportSuccess {\n return { success: true, data };\n}\n\nfunction createNeo4jQueryTransportFailure(\n error: string\n): Neo4jQueryTransportFailure {\n return { success: false, error };\n}\n\nfunction resolveProxyBaseUrl(apiBaseUrl?: string): string | null {\n const resolved =\n apiBaseUrl ||\n process.env.LUCERN_GRAPH_SYNC_QUERY_BASE_URL ||\n process.env.NEXT_PUBLIC_APP_URL;\n const normalized = resolved?.trim();\n return normalized ? normalized.replace(TRAILING_SLASH_REGEX, \"\") : null;\n}\n\nfunction buildProxyEndpoint(proxyBaseUrl: string): string {\n const endpoint = new URL(proxyBaseUrl);\n if (!endpoint.pathname.endsWith(\"/api/neo4j-query\")) {\n endpoint.pathname = `${endpoint.pathname.replace(\n TRAILING_SLASH_REGEX,\n \"\"\n )}/api/neo4j-query`;\n }\n return endpoint.toString();\n}\n\nfunction tenantContextFromParams(params: Record<string, unknown>): string {\n const explicitTenant =\n typeof params.tenantId === \"string\" ? params.tenantId.trim() : \"\";\n const scopedTopic =\n typeof params.topicId === \"string\" ? params.topicId.trim() : \"\";\n const legacyProjectScope =\n typeof params.projectId === \"string\" ? params.projectId.trim() : \"\";\n const scopedTopicId = scopedTopic || legacyProjectScope;\n const projectTenant = scopedTopicId ? `project:${scopedTopicId}` : \"\";\n const defaultTenant = process.env.LUCERN_DEFAULT_TENANT_ID?.trim() || \"\";\n return explicitTenant || projectTenant || defaultTenant;\n}\n\nfunction neo4jQueryHeaders(\n syncSecret: string,\n apiBaseUrl: string | undefined\n): Record<string, string> {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${syncSecret}`,\n };\n const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;\n if (bypassSecret && apiBaseUrl) {\n headers[\"x-vercel-protection-bypass\"] = bypassSecret;\n }\n return headers;\n}\n\nasync function postNeo4jQuery(args: {\n apiBaseUrl?: string;\n params: Record<string, unknown>;\n proxyUrl: string;\n queryName: string;\n syncSecret: string;\n}): Promise<Neo4jQueryTransportResult> {\n const controller = new AbortController();\n const timeoutId = setTimeout(\n () => controller.abort(),\n NEO4J_QUERY_TIMEOUT_MS\n );\n\n try {\n const response = await fetch(buildProxyEndpoint(args.proxyUrl), {\n method: \"POST\",\n headers: neo4jQueryHeaders(args.syncSecret, args.apiBaseUrl),\n body: JSON.stringify({\n queryName: args.queryName,\n params: args.params,\n }),\n signal: controller.signal,\n });\n\n const result = (await response.json()) as Neo4jProxyResponse;\n if (!response.ok) {\n return createNeo4jQueryTransportFailure(result.error || \"Query failed\");\n }\n\n return createNeo4jQueryTransportSuccess(result.data || []);\n } catch (fetchError) {\n if (fetchError instanceof Error && fetchError.name === \"AbortError\") {\n console.warn(\"[Neo4j Queries] Request timed out for:\", args.queryName);\n return createNeo4jQueryTransportFailure(\"Query timed out (10s)\");\n }\n throw fetchError;\n } finally {\n clearTimeout(timeoutId);\n }\n}\n\nexport function withTopicScope<T extends Record<string, unknown>>(\n args: { topicId?: string },\n params: T\n): T & { topicId?: string } {\n return args.topicId ? { ...params, topicId: args.topicId } : params;\n}\n\nexport async function callNeo4jQuery(\n queryName: string,\n params: Record<string, unknown>,\n apiBaseUrl?: string\n): Promise<Neo4jQueryTransportResult> {\n const proxyUrl = resolveProxyBaseUrl(apiBaseUrl);\n if (!proxyUrl) {\n return createNeo4jQueryTransportFailure(\n \"Neo4j query proxy URL not configured\"\n );\n }\n\n if (!isAllowedProxyUrl(proxyUrl)) {\n console.error(\n \"[Neo4j Queries] Blocked request to disallowed URL:\",\n proxyUrl\n );\n return createNeo4jQueryTransportFailure(\"Invalid proxy URL\");\n }\n\n const syncSecret = process.env.NEO4J_SYNC_SECRET;\n\n if (!syncSecret) {\n console.error(\"[Neo4j Queries] NEO4J_SYNC_SECRET not configured\");\n return createNeo4jQueryTransportFailure(\"Neo4j sync secret not configured\");\n }\n\n try {\n const tenantId = tenantContextFromParams(params);\n if (!tenantId) {\n return createNeo4jQueryTransportFailure(\n \"Missing required tenant context (tenantId or topicId)\"\n );\n }\n const scopedParams = { ...params, tenantId };\n return await postNeo4jQuery({\n apiBaseUrl,\n params: scopedParams,\n proxyUrl,\n queryName,\n syncSecret,\n });\n } catch (error) {\n console.error(\"[Neo4j Queries] Error in callNeo4jQuery:\", queryName, error);\n return createNeo4jQueryTransportFailure(\n error instanceof Error\n ? error.message\n : \"Network error connecting to query proxy\"\n );\n }\n}\n","// biome-ignore-all lint/style/useFilenamingConvention: Published @lucern/graph-sync/neo4jQueriesAdvanced subpath; rename needs an export-map migration.\n/**\n * Neo4j Graph Queries - advanced query surfaces.\n */\n\nimport { permissiveReturn } from \"@lucern/contracts/schema-helpers/validators\";\nimport { v } from \"convex/values\";\nimport { action } from \"./convex\";\nimport { callNeo4jQuery, toInt, withTopicScope } from \"./neo4jQueriesCore\";\n\n// =============================================================================\n// CLASSIFICATION-POWERED QUERIES (Logic Machine)\n// These leverage the new epistemic classification fields\n// =============================================================================\n\n/**\n * Get high-priority questions (critical/high) that test beliefs\n */\nexport const getHighPriorityQuestions = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"highPriorityQuestions\",\n withTopicScope(args, {\n limit: toInt(args.limit, 50),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { questions: [], error: result.error };\n }\n\n return { questions: result.data || [] };\n },\n});\n\n/**\n * Get evidence filtered by methodology (expert_interview, customer_interview, etc.)\n */\nexport const getEvidenceByMethodology = action({\n args: {\n methodology: v.string(),\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"evidenceByMethodology\",\n withTopicScope(args, {\n methodology: args.methodology,\n limit: toInt(args.limit, 50),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { evidence: [], error: result.error };\n }\n\n return { evidence: result.data || [] };\n },\n});\n\n/**\n * Get proprietary/early evidence (information asymmetry advantage)\n */\nexport const getProprietaryEvidence = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"proprietaryEvidence\",\n withTopicScope(args, {\n limit: toInt(args.limit, 50),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { evidence: [], error: result.error };\n }\n\n return { evidence: result.data || [] };\n },\n});\n\n/**\n * Get beliefs by epistemic status (hypothesis, emerging, established, challenged, etc.)\n */\nexport const getBeliefsByEpistemicStatus = action({\n args: {\n epistemicStatus: v.string(),\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"beliefsByEpistemicStatus\",\n withTopicScope(args, {\n epistemicStatus: args.epistemicStatus,\n limit: toInt(args.limit, 50),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { beliefs: [], error: result.error };\n }\n\n return { beliefs: result.data || [] };\n },\n});\n\n/**\n * Get challenged beliefs that need attention\n */\nexport const getChallengedBeliefs = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"challengedBeliefs\",\n withTopicScope(args, {\n limit: toInt(args.limit, 30),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { beliefs: [], error: result.error };\n }\n\n return { beliefs: result.data || [] };\n },\n});\n\n/**\n * Get predictions with deadlines\n */\nexport const getPredictions = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"predictions\",\n withTopicScope(args, {\n limit: toInt(args.limit, 50),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { predictions: [], error: result.error };\n }\n\n return { predictions: result.data || [] };\n },\n});\n\n/**\n * Get causal chains (edges with causal reasoning method)\n */\nexport const getCausalChains = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"causalChains\",\n withTopicScope(args, {\n limit: toInt(args.limit, 50),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { chains: [], error: result.error };\n }\n\n return { chains: result.data || [] };\n },\n});\n\n/**\n * Get necessary evidence for beliefs (logicalRole = necessary or necessary_sufficient)\n */\nexport const getNecessaryEvidence = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"necessaryEvidence\",\n withTopicScope(args, {\n limit: toInt(args.limit, 50),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Get falsification questions (designed to disprove beliefs)\n */\nexport const getFalsificationQuestions = action({\n args: {\n limit: v.optional(v.number()),\n beliefIds: v.optional(v.array(v.string())),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"falsificationQuestions\",\n withTopicScope(args, {\n limit: toInt(args.limit, 50),\n beliefIds: args.beliefIds,\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { questions: [], error: result.error };\n }\n\n return { questions: result.data || [] };\n },\n});\n\n// =============================================================================\n// KILLER QUERIES - COGNITIVE BIAS DETECTION\n// =============================================================================\n\n/**\n * Detect confirmation bias in beliefs.\n * Returns beliefs with high supporting:contradicting evidence ratio.\n */\nexport const getConfirmationBiasScore = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"confirmationBiasScore\",\n {\n ...(args.topicId ? { topicId: args.topicId } : {}),\n limit: toInt(args.limit, 30),\n },\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Detect anchoring bias - old beliefs that never got challenged or forked.\n */\nexport const getAnchoringBiasDetection = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"anchoringBiasDetection\",\n withTopicScope(args, {\n limit: toInt(args.limit, 30),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Detect source concentration risk - beliefs where all evidence traces to single source.\n */\nexport const getSourceConcentrationRisk = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"sourceConcentrationRisk\",\n withTopicScope(args, {\n limit: toInt(args.limit, 30),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n// =============================================================================\n// KILLER QUERIES - THESIS STRESS TESTING\n// =============================================================================\n\n/**\n * Find the minimum falsification set - smallest set of beliefs that would collapse the thesis.\n */\nexport const getMinimumFalsificationSet = action({\n args: {\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"minimumFalsificationSet\",\n withTopicScope(args, {}),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { result: null, error: result.error };\n }\n\n // Extract from result array (single result expected)\n const data = result.data;\n return { result: Array.isArray(data) && data.length > 0 ? data[0] : null };\n },\n});\n\n/**\n * Get contradiction tension map - all unresolved tensions in the graph.\n */\nexport const getContradictionTensionMap = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"contradictionTensionMap\",\n withTopicScope(args, {\n limit: toInt(args.limit, 30),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n// =============================================================================\n// KILLER QUERIES - EPISTEMIC HEALTH\n// =============================================================================\n\n/**\n * Get reasoning depth score - how deep is the evidence chain for each belief?\n */\nexport const getReasoningDepthScore = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"reasoningDepthScore\",\n withTopicScope(args, {\n limit: toInt(args.limit, 50),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Get knowledge frontier - open questions on the boundary of what we know.\n */\nexport const getKnowledgeFrontier = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"knowledgeFrontier\",\n withTopicScope(args, {\n limit: toInt(args.limit, 30),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Get belief half-life analysis - how long do beliefs survive before being superseded?\n */\nexport const getBeliefHalfLife = action({\n args: {\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"beliefHalfLife\",\n withTopicScope(args, {}),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { result: null, error: result.error };\n }\n\n // Single result expected\n const data = result.data;\n return { result: Array.isArray(data) && data.length > 0 ? data[0] : null };\n },\n});\n\n// =============================================================================\n// KILLER QUERIES - OPERATIONAL INTELLIGENCE\n// =============================================================================\n\n/**\n * Get meeting prep brief for a person at a company.\n */\nexport const getMeetingPrepBrief = action({\n args: {\n personGlobalId: v.string(),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"meetingPrepBrief\",\n withTopicScope(args, {\n personGlobalId: args.personGlobalId,\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { brief: null, error: result.error };\n }\n\n // Single result expected\n const data = result.data;\n return { brief: Array.isArray(data) && data.length > 0 ? data[0] : null };\n },\n});\n\n/**\n * Get proprietary signals - our unique insights not in public discourse.\n */\nexport const getProprietarySignals = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"proprietarySignals\",\n withTopicScope(args, {\n limit: toInt(args.limit, 30),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Get portfolio conviction dashboard - aggregate conviction metrics across all themes.\n */\nexport const getPortfolioConviction = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"portfolioConviction\",\n withTopicScope(args, {\n limit: toInt(args.limit, 50),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { portfolio: [], error: result.error };\n }\n\n return { portfolio: result.data || [] };\n },\n});\n\n/**\n * Get stale themes - themes with no recent activity.\n */\nexport const getStaleThemes = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"staleThemes\",\n withTopicScope(args, {\n limit: toInt(args.limit, 30),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { themes: [], error: result.error };\n }\n\n return { themes: result.data || [] };\n },\n});\n\n/**\n * Get missing question detection - high-confidence beliefs with no testing questions.\n */\nexport const getMissingQuestionDetection = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"missingQuestionDetection\",\n withTopicScope(args, {\n limit: toInt(args.limit, 30),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Get surprise detection - evidence that surprised us (high surprise score).\n */\nexport const getSurpriseDetection = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"surpriseDetection\",\n withTopicScope(args, {\n limit: toInt(args.limit, 30),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Get non-consensus beliefs - beliefs where we diverge from market consensus.\n */\nexport const getNonConsensusBeliefs = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"nonConsensusBeliefs\",\n withTopicScope(args, {\n limit: toInt(args.limit, 30),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n// =============================================================================\n// HYBRID SEMANTIC + STRUCTURAL QUERIES (Neo4j Vector Indexes)\n// =============================================================================\n\n/** Expected embedding dimensions (llama-text-embed-v2). */\nconst EMBEDDING_DIMENSIONS = 1024;\n\n/** Valid Neo4j vector index names. */\nconst VALID_INDEX_NAMES = new Set([\n \"belief_embedding_index\",\n \"question_embedding_index\",\n \"evidence_embedding_index\",\n \"theme_embedding_index\",\n \"source_embedding_index\",\n \"synthesis_embedding_index\",\n]);\n\n/** Clamp a number to [min, max]. */\nfunction clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n}\n\n/**\n * Semantic search with graph context — find nodes by embedding similarity\n * and return their graph neighborhood for context.\n */\nexport const semanticSearch = action({\n args: {\n embedding: v.array(v.float64()),\n indexName: v.optional(v.string()),\n topK: v.optional(v.number()),\n minScore: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n // SECURITY: Validate embedding dimensions\n if (args.embedding.length !== EMBEDDING_DIMENSIONS) {\n return {\n results: [],\n error: `Embedding must be ${EMBEDDING_DIMENSIONS} dimensions, got ${args.embedding.length}`,\n };\n }\n\n // SECURITY: Validate index name against known set\n const indexName = args.indexName || \"belief_embedding_index\";\n if (!VALID_INDEX_NAMES.has(indexName)) {\n return { results: [], error: `Invalid index name: ${indexName}` };\n }\n\n const result = await callNeo4jQuery(\n \"semanticSearch\",\n {\n embedding: args.embedding,\n indexName,\n topK: toInt(args.topK, 10),\n minScore: clamp(args.minScore ?? 0.5, 0, 1),\n },\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find semantic orphans — nodes structurally connected but semantically\n * distant from their graph neighbors.\n */\nexport const getSemanticOrphans = action({\n args: {\n threshold: v.optional(v.number()),\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"semanticOrphans\",\n withTopicScope(args, {\n threshold: clamp(args.threshold ?? 0.4, 0, 1),\n limit: toInt(args.limit, 20),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find soft contradictions — beliefs about the same topic (high embedding similarity)\n * but with divergent evidence or confidence.\n */\nexport const getSoftContradictions = action({\n args: {\n similarityThreshold: v.optional(v.number()),\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"softContradictions\",\n withTopicScope(args, {\n similarityThreshold: clamp(args.similarityThreshold ?? 0.7, 0, 1),\n limit: toInt(args.limit, 20),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find semantic bridges — nodes semantically similar but graph-distant.\n * These represent potential missing connections.\n */\nexport const getSemanticBridges = action({\n args: {\n similarityThreshold: v.optional(v.number()),\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"semanticBridges\",\n withTopicScope(args, {\n similarityThreshold: clamp(args.similarityThreshold ?? 0.7, 0, 1),\n limit: toInt(args.limit, 20),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Graph-aware RAG search — semantic search that expands along graph structure\n * to pull in supporting context (evidence, themes, sources).\n */\nexport const graphAwareSearch = action({\n args: {\n embedding: v.array(v.float64()),\n indexName: v.optional(v.string()),\n topK: v.optional(v.number()),\n minScore: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n // SECURITY: Validate embedding dimensions\n if (args.embedding.length !== EMBEDDING_DIMENSIONS) {\n return {\n results: [],\n error: `Embedding must be ${EMBEDDING_DIMENSIONS} dimensions, got ${args.embedding.length}`,\n };\n }\n\n // SECURITY: Validate index name against known set\n const indexName = args.indexName || \"belief_embedding_index\";\n if (!VALID_INDEX_NAMES.has(indexName)) {\n return { results: [], error: `Invalid index name: ${indexName}` };\n }\n\n const result = await callNeo4jQuery(\n \"graphAwareSearch\",\n withTopicScope(args, {\n embedding: args.embedding,\n indexName,\n topK: toInt(args.topK, 10),\n minScore: clamp(args.minScore ?? 0.5, 0, 1),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n","// biome-ignore-all lint/style/useFilenamingConvention: Published @lucern/graph-sync/neo4jQueries subpath; rename needs an export-map migration.\n// biome-ignore-all lint/performance/noBarrelFile: Public Neo4j query facade preserving current graph-sync import surface.\n/**\n * Neo4j Graph Queries\n *\n * Convex actions that execute graph queries against Neo4j.\n * These provide graph intelligence that's hard/impossible in Convex alone:\n * - Multi-hop traversals\n * - Path finding\n * - Cross-theme patterns\n * - Contradiction detection\n *\n * Architecture:\n * - Convex action calls a tenant-owned query proxy route\n * - Query proxy executes a predefined Cypher query\n * - Results return to the Convex caller\n */\n\nimport { permissiveReturn } from \"@lucern/contracts/schema-helpers/validators\";\nimport { v } from \"convex/values\";\nimport { action } from \"./convex\";\nimport { callNeo4jQuery, toInt, withTopicScope } from \"./neo4jQueriesCore\";\n\n// =============================================================================\n// GRAPH QUERIES\n// =============================================================================\n\n/**\n * Get the full lineage of a node (what it was derived/extracted from)\n * Uses Neo4j for efficient multi-hop traversal up to 10 levels deep\n */\nexport const getNodeLineageGraph = action({\n args: {\n globalId: v.string(),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"nodeLineage\",\n withTopicScope(args, {\n globalId: args.globalId,\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n console.error(\"[Neo4j] Lineage query failed:\", result.error);\n return { lineage: [], error: result.error };\n }\n\n // Extract lineage from first result\n const lineage =\n (result.data?.[0] as { lineage?: unknown[] })?.lineage || [];\n return { lineage };\n },\n});\n\n/**\n * Get nodes connected to a given node within N hops\n * Much more powerful than Convex's single-hop queries\n */\nexport const getConnectedNodesGraph = action({\n args: {\n globalId: v.string(),\n maxHops: v.optional(v.number()),\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n // Ensure numeric params are integers (Neo4j requires integers, not floats)\n const maxHops = Math.min(toInt(args.maxHops, 2), 5);\n const limit = toInt(args.limit, 50);\n\n const result = await callNeo4jQuery(\n \"connectedNodes\",\n withTopicScope(args, {\n globalId: args.globalId,\n maxHops,\n limit,\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n console.error(\"[Neo4j] Connected nodes query failed:\", result.error);\n return { nodes: [], error: result.error };\n }\n\n return { nodes: result.data || [] };\n },\n});\n\n/**\n * Get all beliefs that belong to a theme\n */\nexport const getThemeBeliefsGraph = action({\n args: {\n themeGlobalId: v.string(),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"themeBeliefs\", {\n themeGlobalId: args.themeGlobalId,\n });\n\n if (!result.success) {\n return { beliefs: [], error: result.error };\n }\n\n return {\n beliefs: result.data?.map((r) => (r as { belief: unknown }).belief) || [],\n };\n },\n});\n\n/**\n * Get evidence that supports a belief (through question chain OR direct link)\n */\nexport const getBeliefEvidenceGraph = action({\n args: {\n beliefGlobalId: v.string(),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"beliefEvidence\",\n withTopicScope(args, {\n beliefGlobalId: args.beliefGlobalId,\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { evidence: [], error: result.error };\n }\n\n return {\n evidence:\n result.data?.map((r) => (r as { evidence: unknown }).evidence) || [],\n };\n },\n});\n\n/**\n * Find beliefs that appear in multiple themes (cross-cutting insights)\n */\nexport const getCrossThemeBeliefs = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"crossThemeBeliefs\",\n withTopicScope(args, {\n limit: toInt(args.limit, 20),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { beliefs: [], error: result.error };\n }\n\n return {\n beliefs: result.data?.map((r) => (r as { belief: unknown }).belief) || [],\n };\n },\n});\n\n/**\n * Find potential contradictions in the knowledge graph\n * Evidence that tests conflicting beliefs\n */\nexport const findPotentialContradictions = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"potentialContradictions\",\n withTopicScope(args, {\n limit: toInt(args.limit, 10),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { contradictions: [], error: result.error };\n }\n\n return {\n contradictions:\n result.data?.map(\n (r) => (r as { contradiction: unknown }).contradiction\n ) || [],\n };\n },\n});\n\n/**\n * Get the full subgraph for a theme (all connected beliefs, questions, evidence)\n */\nexport const getThemeSubgraph = action({\n args: {\n themeGlobalId: v.string(),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"themeSubgraph\",\n withTopicScope(args, {\n themeGlobalId: args.themeGlobalId,\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { subgraph: null, error: result.error };\n }\n\n return {\n subgraph: (result.data?.[0] as { subgraph: unknown })?.subgraph || null,\n };\n },\n});\n\n/**\n * Find the path from evidence to a belief (how does this evidence support this belief?)\n */\nexport const getEvidenceToBeliefPath = action({\n args: {\n evidenceGlobalId: v.string(),\n beliefGlobalId: v.string(),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"evidenceToBeliefPath\",\n withTopicScope(args, {\n evidenceGlobalId: args.evidenceGlobalId,\n beliefGlobalId: args.beliefGlobalId,\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { path: null, error: result.error };\n }\n\n // Query returns: { pathResult: { nodes: [...], relationships: [...], length: N } }\n const pathResult = result.data?.[0] as {\n pathResult?: {\n nodes?: unknown[];\n relationships?: string[];\n length?: number;\n };\n };\n\n if (!pathResult?.pathResult) {\n return { path: null, error: \"No path found between evidence and belief\" };\n }\n\n return {\n path: {\n nodes: pathResult.pathResult.nodes || [],\n relationships: pathResult.pathResult.relationships || [],\n length: pathResult.pathResult.length || 0,\n },\n };\n },\n});\n\n/**\n * Get stats for a theme (counts of beliefs, questions, evidence)\n */\nexport const getThemeStats = action({\n args: {\n themeGlobalId: v.string(),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"themeStats\", {\n themeGlobalId: args.themeGlobalId,\n });\n\n if (!result.success) {\n return { stats: null, error: result.error };\n }\n\n return { stats: (result.data?.[0] as { stats: unknown })?.stats || null };\n },\n});\n\n/**\n * Get candidate theme-to-valuechain mappings\n * Returns all themes and value chains for manual or AI-assisted matching\n */\nexport const getThemeValueChainCandidates = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"themeValueChainCandidates\",\n withTopicScope(args, {\n limit: toInt(args.limit, 100),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { candidates: [], error: result.error };\n }\n\n return {\n candidates:\n result.data?.map((r) => (r as { candidate: unknown }).candidate) || [],\n };\n },\n});\n\n// =============================================================================\n// RELATIONSHIP QUERIES\n// =============================================================================\n\n/**\n * Find themes that impact a specific company\n */\nexport const getThemesImpactingCompany = action({\n args: {\n companyName: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"themesImpactingCompany\", {\n companyName: args.companyName,\n limit: toInt(args.limit, 20),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find companies related to a theme\n */\nexport const getCompaniesByTheme = action({\n args: {\n themeName: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"companiesByTheme\", {\n themeName: args.themeName,\n limit: toInt(args.limit, 50),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find questions about a value chain\n */\nexport const getQuestionsByValueChain = action({\n args: {\n valueChainName: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"questionsByValueChain\", {\n valueChainName: args.valueChainName,\n limit: toInt(args.limit, 50),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find questions about a theme\n */\nexport const getQuestionsByTheme = action({\n args: {\n themeName: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"questionsByTheme\", {\n themeName: args.themeName,\n limit: toInt(args.limit, 50),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find people/contacts related to a theme\n */\nexport const getPeopleByTheme = action({\n args: {\n themeName: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"peopleByTheme\", {\n themeName: args.themeName,\n limit: toInt(args.limit, 50),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find people at a specific company\n */\nexport const getPeopleByCompany = action({\n args: {\n companyName: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"peopleByCompany\", {\n companyName: args.companyName,\n limit: toInt(args.limit, 50),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find value chains for a theme\n */\nexport const getValueChainsByTheme = action({\n args: {\n themeName: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"valueChainsByTheme\", {\n themeName: args.themeName,\n limit: toInt(args.limit, 20),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find functions in a value chain\n */\nexport const getFunctionsByValueChain = action({\n args: {\n valueChainName: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"functionsByValueChain\", {\n valueChainName: args.valueChainName,\n limit: toInt(args.limit, 50),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find beliefs about a company\n */\nexport const getBeliefsByCompany = action({\n args: {\n companyName: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"beliefsByCompany\", {\n companyName: args.companyName,\n limit: toInt(args.limit, 30),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find evidence about a company\n */\nexport const getEvidenceByCompany = action({\n args: {\n companyName: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"evidenceByCompany\", {\n companyName: args.companyName,\n limit: toInt(args.limit, 50),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Search all nodes by text\n */\nexport const searchAllNodes = action({\n args: {\n searchText: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"searchAllNodes\", {\n searchText: args.searchText,\n limit: toInt(args.limit, 50),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Get all relationships from a node\n */\nexport const getNodeRelationships = action({\n args: {\n globalId: v.optional(v.string()),\n searchText: v.optional(v.string()),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"nodeRelationships\", {\n globalId: args.globalId || \"\",\n searchText: args.searchText || \"\",\n limit: toInt(args.limit, 50),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Get graph statistics (node counts by type)\n */\nexport const getGraphStats = action({\n args: {},\n returns: permissiveReturn,\n handler: async () => {\n const result = await callNeo4jQuery(\"graphStats\", {});\n\n if (!result.success) {\n return { stats: [], error: result.error };\n }\n\n return { stats: result.data || [] };\n },\n});\n\n/**\n * Flexible graph query - routes to appropriate query based on intent\n * This is the main entry point for natural language graph queries\n */\nexport const queryGraph = action({\n args: {\n queryType: v.union(\n v.literal(\"themesImpactingCompany\"),\n v.literal(\"companiesByTheme\"),\n v.literal(\"questionsByValueChain\"),\n v.literal(\"questionsByTheme\"),\n v.literal(\"peopleByTheme\"),\n v.literal(\"peopleByCompany\"),\n v.literal(\"valueChainsByTheme\"),\n v.literal(\"functionsByValueChain\"),\n v.literal(\"beliefsByCompany\"),\n v.literal(\"evidenceByCompany\"),\n v.literal(\"searchAllNodes\"),\n v.literal(\"nodeRelationships\"),\n v.literal(\"graphStats\")\n ),\n params: v.object({\n companyName: v.optional(v.string()),\n themeName: v.optional(v.string()),\n valueChainName: v.optional(v.string()),\n searchText: v.optional(v.string()),\n globalId: v.optional(v.string()),\n limit: v.optional(v.number()),\n }),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n // Ensure limit is an integer (JavaScript may pass floats)\n const limit = toInt(args.params.limit, 30);\n\n // Validate required params based on query type\n const themeRequiredQueries = [\n \"questionsByTheme\",\n \"peopleByTheme\",\n \"companiesByTheme\",\n \"valueChainsByTheme\",\n ];\n const companyRequiredQueries = [\n \"themesImpactingCompany\",\n \"peopleByCompany\",\n \"beliefsByCompany\",\n \"evidenceByCompany\",\n ];\n const valueChainRequiredQueries = [\n \"questionsByValueChain\",\n \"functionsByValueChain\",\n ];\n\n if (\n themeRequiredQueries.includes(args.queryType) &&\n !args.params.themeName\n ) {\n return {\n results: [],\n error: `Query type '${args.queryType}' requires 'themeName' parameter`,\n };\n }\n if (\n companyRequiredQueries.includes(args.queryType) &&\n !args.params.companyName\n ) {\n return {\n results: [],\n error: `Query type '${args.queryType}' requires 'companyName' parameter`,\n };\n }\n if (\n valueChainRequiredQueries.includes(args.queryType) &&\n !args.params.valueChainName\n ) {\n return {\n results: [],\n error: `Query type '${args.queryType}' requires 'valueChainName' parameter`,\n };\n }\n\n const result = await callNeo4jQuery(\n args.queryType,\n withTopicScope(args, {\n ...args.params,\n limit,\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\nexport * from \"./neo4jQueriesAdvanced\";\n"]}
1
+ {"version":3,"sources":["../src/convex.ts","../src/neo4jQueriesCore.ts","../src/neo4jQueriesAdvanced.ts","../src/neo4jQueries.ts"],"names":["v","permissiveReturn"],"mappings":"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","file":"neo4jQueries.js","sourcesContent":["import { unsafeConvexAnyApi } from \"@lucern/contracts/convex/unsafeAnyApi\";\nimport {\n type ActionBuilder,\n actionGeneric,\n type GenericDataModel,\n type GenericDocument,\n internalActionGeneric,\n internalMutationGeneric,\n internalQueryGeneric,\n type MutationBuilder,\n type QueryBuilder,\n} from \"convex/server\";\nimport type { GenericId } from \"convex/values\";\n\nexport const internal = unsafeConvexAnyApi(\n \"graph-sync top-level module bundle lacks a committed Convex _generated/api surface\"\n);\n\ntype TableNames = string;\nexport type Id<TableName extends TableNames = string> = GenericId<TableName>;\ntype GraphSyncDocument<TableName extends string> = GenericDocument & {\n _creationTime: number;\n _id: GenericId<TableName>;\n};\n\ninterface GraphSyncTableInfo<\n Document extends GenericDocument,\n Indexes extends Record<string, string[]>,\n> {\n document: Document;\n fieldPaths: string;\n indexes: Indexes;\n searchIndexes: Record<string, never>;\n vectorIndexes: Record<string, never>;\n}\n\ntype EpistemicNodeDocument = GraphSyncDocument<\"epistemicNodes\"> & {\n globalId: string;\n nodeType: string;\n projectId?: string;\n updatedAt?: number;\n};\n\ntype EpistemicNodeEmbeddingDocument =\n GraphSyncDocument<\"epistemicNodeEmbeddings\"> & {\n embedding?: number[];\n nodeId: GenericId<\"epistemicNodes\">;\n };\n\ntype EpistemicEdgeDocument = GraphSyncDocument<\"epistemicEdges\"> & {\n edgeType: string;\n fromNodeId?: GenericId<\"epistemicNodes\"> | null;\n globalId?: string;\n sourceGlobalId?: string;\n targetGlobalId?: string;\n toNodeId?: GenericId<\"epistemicNodes\"> | null;\n};\n\ntype Neo4jSyncQueueDocument = GraphSyncDocument<\"neo4jSyncQueue\"> & {\n attempts?: number;\n createdAt?: number;\n entityId: string;\n entityType: \"node\" | \"edge\";\n lastAttemptAt?: number;\n lastError?: string;\n maxAttempts?: number;\n operation: \"upsert\" | \"delete\";\n status: \"pending\" | \"in_progress\" | \"failed\" | \"succeeded\";\n updatedAt?: number;\n};\n\ninterface GraphSyncDataModel extends GenericDataModel {\n epistemicEdges: GraphSyncTableInfo<\n EpistemicEdgeDocument,\n {\n by_globalId: [\"globalId\"];\n }\n >;\n epistemicNodeEmbeddings: GraphSyncTableInfo<\n EpistemicNodeEmbeddingDocument,\n {\n by_nodeId: [\"nodeId\"];\n }\n >;\n epistemicNodes: GraphSyncTableInfo<\n EpistemicNodeDocument,\n {\n by_nodeType: [\"nodeType\"];\n }\n >;\n neo4jSyncQueue: GraphSyncTableInfo<\n Neo4jSyncQueueDocument,\n {\n by_entity: [\"entityType\", \"entityId\"];\n by_status: [\"status\"];\n }\n >;\n}\n\nexport const action = actionGeneric as ActionBuilder<\n GraphSyncDataModel,\n \"public\"\n>;\nexport const internalAction = internalActionGeneric as ActionBuilder<\n GraphSyncDataModel,\n \"internal\"\n>;\nexport const internalMutation = internalMutationGeneric as MutationBuilder<\n GraphSyncDataModel,\n \"internal\"\n>;\nexport const internalQuery = internalQueryGeneric as QueryBuilder<\n GraphSyncDataModel,\n \"internal\"\n>;\n","// biome-ignore-all lint/style/useFilenamingConvention: Published @lucern/graph-sync/neo4jQueriesCore subpath; rename needs an export-map migration.\n/**\n * Neo4j Graph Queries - shared transport helpers.\n */\n\ntype Neo4jQueryTransportSuccess = Readonly<{\n success: true;\n data: unknown[];\n}>;\n\ntype Neo4jQueryTransportFailure = Readonly<{\n success: false;\n error: string;\n}>;\n\ntype Neo4jQueryTransportResult =\n | Neo4jQueryTransportSuccess\n | Neo4jQueryTransportFailure;\n\ninterface Neo4jProxyResponse {\n data?: unknown[];\n error?: string;\n}\n\nconst TRAILING_SLASH_REGEX = /\\/+$/u;\nconst NEO4J_QUERY_TIMEOUT_MS = 10_000;\n\nexport function toInt(value: unknown, defaultValue: number): number {\n if (value === undefined || value === null) {\n return defaultValue;\n }\n const parsed = Number(value);\n return Number.isFinite(parsed) ? Math.floor(parsed) : defaultValue;\n}\n\nfunction isAllowedProxyUrl(urlString: string): boolean {\n try {\n const url = new URL(urlString);\n const isLocalhost =\n url.hostname === \"localhost\" || url.hostname === \"127.0.0.1\";\n if (!isLocalhost && url.protocol !== \"https:\") {\n return false;\n }\n if (url.username || url.password) {\n return false;\n }\n\n const configuredHosts = (\n process.env.LUCERN_GRAPH_SYNC_ALLOWED_PROXY_HOSTS || \"\"\n )\n .split(\",\")\n .map((host) => host.trim().toLowerCase())\n .filter(Boolean);\n if (configuredHosts.length === 0) {\n return true;\n }\n\n const hostname = url.hostname.toLowerCase();\n return configuredHosts.some((host) =>\n host.startsWith(\".\") ? hostname.endsWith(host) : hostname === host\n );\n } catch {\n console.warn(\"[Neo4j Queries] Rejected malformed proxy URL\", urlString);\n return false;\n }\n}\n\nfunction createNeo4jQueryTransportSuccess(\n data: unknown[]\n): Neo4jQueryTransportSuccess {\n return { success: true, data };\n}\n\nfunction createNeo4jQueryTransportFailure(\n error: string\n): Neo4jQueryTransportFailure {\n return { success: false, error };\n}\n\nfunction resolveProxyBaseUrl(apiBaseUrl?: string): string | null {\n const resolved =\n apiBaseUrl ||\n process.env.LUCERN_GRAPH_SYNC_QUERY_BASE_URL ||\n process.env.NEXT_PUBLIC_APP_URL;\n const normalized = resolved?.trim();\n return normalized ? normalized.replace(TRAILING_SLASH_REGEX, \"\") : null;\n}\n\nfunction buildProxyEndpoint(proxyBaseUrl: string): string {\n const endpoint = new URL(proxyBaseUrl);\n if (!endpoint.pathname.endsWith(\"/api/neo4j-query\")) {\n endpoint.pathname = `${endpoint.pathname.replace(\n TRAILING_SLASH_REGEX,\n \"\"\n )}/api/neo4j-query`;\n }\n return endpoint.toString();\n}\n\nfunction tenantContextFromParams(params: Record<string, unknown>): string {\n const explicitTenant =\n typeof params.tenantId === \"string\" ? params.tenantId.trim() : \"\";\n const scopedTopic =\n typeof params.topicId === \"string\" ? params.topicId.trim() : \"\";\n const legacyProjectScope =\n typeof params.projectId === \"string\" ? params.projectId.trim() : \"\";\n const scopedTopicId = scopedTopic || legacyProjectScope;\n const projectTenant = scopedTopicId ? `project:${scopedTopicId}` : \"\";\n const defaultTenant = process.env.LUCERN_DEFAULT_TENANT_ID?.trim() || \"\";\n return explicitTenant || projectTenant || defaultTenant;\n}\n\nfunction neo4jQueryHeaders(\n syncSecret: string,\n apiBaseUrl: string | undefined\n): Record<string, string> {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${syncSecret}`,\n };\n const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;\n if (bypassSecret && apiBaseUrl) {\n headers[\"x-vercel-protection-bypass\"] = bypassSecret;\n }\n return headers;\n}\n\nasync function postNeo4jQuery(args: {\n apiBaseUrl?: string;\n params: Record<string, unknown>;\n proxyUrl: string;\n queryName: string;\n syncSecret: string;\n}): Promise<Neo4jQueryTransportResult> {\n const controller = new AbortController();\n const timeoutId = setTimeout(\n () => controller.abort(),\n NEO4J_QUERY_TIMEOUT_MS\n );\n\n try {\n const response = await fetch(buildProxyEndpoint(args.proxyUrl), {\n method: \"POST\",\n headers: neo4jQueryHeaders(args.syncSecret, args.apiBaseUrl),\n body: JSON.stringify({\n queryName: args.queryName,\n params: args.params,\n }),\n signal: controller.signal,\n });\n\n const result = (await response.json()) as Neo4jProxyResponse;\n if (!response.ok) {\n return createNeo4jQueryTransportFailure(result.error || \"Query failed\");\n }\n\n return createNeo4jQueryTransportSuccess(result.data || []);\n } catch (fetchError) {\n if (fetchError instanceof Error && fetchError.name === \"AbortError\") {\n console.warn(\"[Neo4j Queries] Request timed out for:\", args.queryName);\n return createNeo4jQueryTransportFailure(\"Query timed out (10s)\");\n }\n throw fetchError;\n } finally {\n clearTimeout(timeoutId);\n }\n}\n\nexport function withTopicScope<T extends Record<string, unknown>>(\n args: { topicId?: string },\n params: T\n): T & { topicId?: string } {\n return args.topicId ? { ...params, topicId: args.topicId } : params;\n}\n\nexport async function callNeo4jQuery(\n queryName: string,\n params: Record<string, unknown>,\n apiBaseUrl?: string\n): Promise<Neo4jQueryTransportResult> {\n const proxyUrl = resolveProxyBaseUrl(apiBaseUrl);\n if (!proxyUrl) {\n return createNeo4jQueryTransportFailure(\n \"Neo4j query proxy URL not configured\"\n );\n }\n\n if (!isAllowedProxyUrl(proxyUrl)) {\n console.error(\n \"[Neo4j Queries] Blocked request to disallowed URL:\",\n proxyUrl\n );\n return createNeo4jQueryTransportFailure(\"Invalid proxy URL\");\n }\n\n const syncSecret = process.env.NEO4J_SYNC_SECRET;\n\n if (!syncSecret) {\n console.error(\"[Neo4j Queries] NEO4J_SYNC_SECRET not configured\");\n return createNeo4jQueryTransportFailure(\"Neo4j sync secret not configured\");\n }\n\n try {\n const tenantId = tenantContextFromParams(params);\n if (!tenantId) {\n return createNeo4jQueryTransportFailure(\n \"Missing required tenant context (tenantId or topicId)\"\n );\n }\n const scopedParams = { ...params, tenantId };\n return await postNeo4jQuery({\n apiBaseUrl,\n params: scopedParams,\n proxyUrl,\n queryName,\n syncSecret,\n });\n } catch (error) {\n console.error(\"[Neo4j Queries] Error in callNeo4jQuery:\", queryName, error);\n return createNeo4jQueryTransportFailure(\n error instanceof Error\n ? error.message\n : \"Network error connecting to query proxy\"\n );\n }\n}\n","// biome-ignore-all lint/style/useFilenamingConvention: Published @lucern/graph-sync/neo4jQueriesAdvanced subpath; rename needs an export-map migration.\n/**\n * Neo4j Graph Queries - advanced query surfaces.\n */\n\nimport { permissiveReturn } from \"@lucern/contracts/schema-helpers/validators\";\nimport { v } from \"convex/values\";\nimport { action } from \"./convex\";\nimport { callNeo4jQuery, toInt, withTopicScope } from \"./neo4jQueriesCore\";\n\n// =============================================================================\n// CLASSIFICATION-POWERED QUERIES (Logic Machine)\n// These leverage the new epistemic classification fields\n// =============================================================================\n\n/**\n * Get high-priority questions (critical/high) that test beliefs\n */\nexport const getHighPriorityQuestions = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"highPriorityQuestions\",\n withTopicScope(args, {\n limit: toInt(args.limit, 50),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { questions: [], error: result.error };\n }\n\n return { questions: result.data || [] };\n },\n});\n\n/**\n * Get evidence filtered by methodology (expert_interview, customer_interview, etc.)\n */\nexport const getEvidenceByMethodology = action({\n args: {\n methodology: v.string(),\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"evidenceByMethodology\",\n withTopicScope(args, {\n methodology: args.methodology,\n limit: toInt(args.limit, 50),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { evidence: [], error: result.error };\n }\n\n return { evidence: result.data || [] };\n },\n});\n\n/**\n * Get proprietary/early evidence (information asymmetry advantage)\n */\nexport const getProprietaryEvidence = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"proprietaryEvidence\",\n withTopicScope(args, {\n limit: toInt(args.limit, 50),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { evidence: [], error: result.error };\n }\n\n return { evidence: result.data || [] };\n },\n});\n\n/**\n * Get beliefs by epistemic status (hypothesis, emerging, established, challenged, etc.)\n */\nexport const getBeliefsByEpistemicStatus = action({\n args: {\n epistemicStatus: v.string(),\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"beliefsByEpistemicStatus\",\n withTopicScope(args, {\n epistemicStatus: args.epistemicStatus,\n limit: toInt(args.limit, 50),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { beliefs: [], error: result.error };\n }\n\n return { beliefs: result.data || [] };\n },\n});\n\n/**\n * Get challenged beliefs that need attention\n */\nexport const getChallengedBeliefs = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"challengedBeliefs\",\n withTopicScope(args, {\n limit: toInt(args.limit, 30),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { beliefs: [], error: result.error };\n }\n\n return { beliefs: result.data || [] };\n },\n});\n\n/**\n * Get predictions with deadlines\n */\nexport const getPredictions = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"predictions\",\n withTopicScope(args, {\n limit: toInt(args.limit, 50),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { predictions: [], error: result.error };\n }\n\n return { predictions: result.data || [] };\n },\n});\n\n/**\n * Get causal chains (edges with causal reasoning method)\n */\nexport const getCausalChains = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"causalChains\",\n withTopicScope(args, {\n limit: toInt(args.limit, 50),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { chains: [], error: result.error };\n }\n\n return { chains: result.data || [] };\n },\n});\n\n/**\n * Get necessary evidence for beliefs (logicalRole = necessary or necessary_sufficient)\n */\nexport const getNecessaryEvidence = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"necessaryEvidence\",\n withTopicScope(args, {\n limit: toInt(args.limit, 50),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Get falsification questions (designed to disprove beliefs)\n */\nexport const getFalsificationQuestions = action({\n args: {\n limit: v.optional(v.number()),\n beliefIds: v.optional(v.array(v.string())),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"falsificationQuestions\",\n withTopicScope(args, {\n limit: toInt(args.limit, 50),\n beliefIds: args.beliefIds,\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { questions: [], error: result.error };\n }\n\n return { questions: result.data || [] };\n },\n});\n\n// =============================================================================\n// KILLER QUERIES - COGNITIVE BIAS DETECTION\n// =============================================================================\n\n/**\n * Detect confirmation bias in beliefs.\n * Returns beliefs with high supporting:contradicting evidence ratio.\n */\nexport const getConfirmationBiasScore = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"confirmationBiasScore\",\n {\n ...(args.topicId ? { topicId: args.topicId } : {}),\n limit: toInt(args.limit, 30),\n },\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Detect anchoring bias - old beliefs that never got challenged or forked.\n */\nexport const getAnchoringBiasDetection = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"anchoringBiasDetection\",\n withTopicScope(args, {\n limit: toInt(args.limit, 30),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Detect source concentration risk - beliefs where all evidence traces to single source.\n */\nexport const getSourceConcentrationRisk = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"sourceConcentrationRisk\",\n withTopicScope(args, {\n limit: toInt(args.limit, 30),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n// =============================================================================\n// KILLER QUERIES - THESIS STRESS TESTING\n// =============================================================================\n\n/**\n * Find the minimum falsification set - smallest set of beliefs that would collapse the thesis.\n */\nexport const getMinimumFalsificationSet = action({\n args: {\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"minimumFalsificationSet\",\n withTopicScope(args, {}),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { result: null, error: result.error };\n }\n\n // Extract from result array (single result expected)\n const data = result.data;\n return { result: Array.isArray(data) && data.length > 0 ? data[0] : null };\n },\n});\n\n/**\n * Get contradiction tension map - all unresolved tensions in the graph.\n */\nexport const getContradictionTensionMap = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"contradictionTensionMap\",\n withTopicScope(args, {\n limit: toInt(args.limit, 30),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n// =============================================================================\n// KILLER QUERIES - EPISTEMIC HEALTH\n// =============================================================================\n\n/**\n * Get reasoning depth score - how deep is the evidence chain for each belief?\n */\nexport const getReasoningDepthScore = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"reasoningDepthScore\",\n withTopicScope(args, {\n limit: toInt(args.limit, 50),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Get knowledge frontier - open questions on the boundary of what we know.\n */\nexport const getKnowledgeFrontier = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"knowledgeFrontier\",\n withTopicScope(args, {\n limit: toInt(args.limit, 30),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Get belief half-life analysis - how long do beliefs survive before being superseded?\n */\nexport const getBeliefHalfLife = action({\n args: {\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"beliefHalfLife\",\n withTopicScope(args, {}),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { result: null, error: result.error };\n }\n\n // Single result expected\n const data = result.data;\n return { result: Array.isArray(data) && data.length > 0 ? data[0] : null };\n },\n});\n\n// =============================================================================\n// KILLER QUERIES - OPERATIONAL INTELLIGENCE\n// =============================================================================\n\n/**\n * Get meeting prep brief for a person at a company.\n */\nexport const getMeetingPrepBrief = action({\n args: {\n personGlobalId: v.string(),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"meetingPrepBrief\",\n withTopicScope(args, {\n personGlobalId: args.personGlobalId,\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { brief: null, error: result.error };\n }\n\n // Single result expected\n const data = result.data;\n return { brief: Array.isArray(data) && data.length > 0 ? data[0] : null };\n },\n});\n\n/**\n * Get proprietary signals - our unique insights not in public discourse.\n */\nexport const getProprietarySignals = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"proprietarySignals\",\n withTopicScope(args, {\n limit: toInt(args.limit, 30),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Get portfolio conviction dashboard - aggregate conviction metrics across all themes.\n */\nexport const getPortfolioConviction = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"portfolioConviction\",\n withTopicScope(args, {\n limit: toInt(args.limit, 50),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { portfolio: [], error: result.error };\n }\n\n return { portfolio: result.data || [] };\n },\n});\n\n/**\n * Get stale themes - themes with no recent activity.\n */\nexport const getStaleThemes = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"staleThemes\",\n withTopicScope(args, {\n limit: toInt(args.limit, 30),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { themes: [], error: result.error };\n }\n\n return { themes: result.data || [] };\n },\n});\n\n/**\n * Get missing question detection - high-confidence beliefs with no testing questions.\n */\nexport const getMissingQuestionDetection = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"missingQuestionDetection\",\n withTopicScope(args, {\n limit: toInt(args.limit, 30),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Get surprise detection - evidence that surprised us (high surprise score).\n */\nexport const getSurpriseDetection = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"surpriseDetection\",\n withTopicScope(args, {\n limit: toInt(args.limit, 30),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Get non-consensus beliefs - beliefs where we diverge from market consensus.\n */\nexport const getNonConsensusBeliefs = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"nonConsensusBeliefs\",\n withTopicScope(args, {\n limit: toInt(args.limit, 30),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n// =============================================================================\n// HYBRID SEMANTIC + STRUCTURAL QUERIES (Neo4j Vector Indexes)\n// =============================================================================\n\n/** Expected embedding dimensions (llama-text-embed-v2). */\nconst EMBEDDING_DIMENSIONS = 1024;\n\n/** Valid Neo4j vector index names. */\nconst VALID_INDEX_NAMES = new Set([\n \"belief_embedding_index\",\n \"question_embedding_index\",\n \"evidence_embedding_index\",\n \"theme_embedding_index\",\n \"source_embedding_index\",\n \"synthesis_embedding_index\",\n]);\n\n/** Clamp a number to [min, max]. */\nfunction clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n}\n\n/**\n * Semantic search with graph context — find nodes by embedding similarity\n * and return their graph neighborhood for context.\n */\nexport const semanticSearch = action({\n args: {\n embedding: v.array(v.float64()),\n indexName: v.optional(v.string()),\n topK: v.optional(v.number()),\n minScore: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n // SECURITY: Validate embedding dimensions\n if (args.embedding.length !== EMBEDDING_DIMENSIONS) {\n return {\n results: [],\n error: `Embedding must be ${EMBEDDING_DIMENSIONS} dimensions, got ${args.embedding.length}`,\n };\n }\n\n // SECURITY: Validate index name against known set\n const indexName = args.indexName || \"belief_embedding_index\";\n if (!VALID_INDEX_NAMES.has(indexName)) {\n return { results: [], error: `Invalid index name: ${indexName}` };\n }\n\n const result = await callNeo4jQuery(\n \"semanticSearch\",\n {\n embedding: args.embedding,\n indexName,\n topK: toInt(args.topK, 10),\n minScore: clamp(args.minScore ?? 0.5, 0, 1),\n },\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find semantic orphans — nodes structurally connected but semantically\n * distant from their graph neighbors.\n */\nexport const getSemanticOrphans = action({\n args: {\n threshold: v.optional(v.number()),\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"semanticOrphans\",\n withTopicScope(args, {\n threshold: clamp(args.threshold ?? 0.4, 0, 1),\n limit: toInt(args.limit, 20),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find soft contradictions — beliefs about the same topic (high embedding similarity)\n * but with divergent evidence or confidence.\n */\nexport const getSoftContradictions = action({\n args: {\n similarityThreshold: v.optional(v.number()),\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"softContradictions\",\n withTopicScope(args, {\n similarityThreshold: clamp(args.similarityThreshold ?? 0.7, 0, 1),\n limit: toInt(args.limit, 20),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find semantic bridges — nodes semantically similar but graph-distant.\n * These represent potential missing connections.\n */\nexport const getSemanticBridges = action({\n args: {\n similarityThreshold: v.optional(v.number()),\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"semanticBridges\",\n withTopicScope(args, {\n similarityThreshold: clamp(args.similarityThreshold ?? 0.7, 0, 1),\n limit: toInt(args.limit, 20),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Graph-aware RAG search — semantic search that expands along graph structure\n * to pull in supporting context (evidence, themes, sources).\n */\nexport const graphAwareSearch = action({\n args: {\n embedding: v.array(v.float64()),\n indexName: v.optional(v.string()),\n topK: v.optional(v.number()),\n minScore: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n // SECURITY: Validate embedding dimensions\n if (args.embedding.length !== EMBEDDING_DIMENSIONS) {\n return {\n results: [],\n error: `Embedding must be ${EMBEDDING_DIMENSIONS} dimensions, got ${args.embedding.length}`,\n };\n }\n\n // SECURITY: Validate index name against known set\n const indexName = args.indexName || \"belief_embedding_index\";\n if (!VALID_INDEX_NAMES.has(indexName)) {\n return { results: [], error: `Invalid index name: ${indexName}` };\n }\n\n const result = await callNeo4jQuery(\n \"graphAwareSearch\",\n withTopicScope(args, {\n embedding: args.embedding,\n indexName,\n topK: toInt(args.topK, 10),\n minScore: clamp(args.minScore ?? 0.5, 0, 1),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n","// biome-ignore-all lint/style/useFilenamingConvention: Published @lucern/graph-sync/neo4jQueries subpath; rename needs an export-map migration.\n// biome-ignore-all lint/performance/noBarrelFile: Public Neo4j query facade preserving current graph-sync import surface.\n/**\n * Neo4j Graph Queries\n *\n * Convex actions that execute graph queries against Neo4j.\n * These provide graph intelligence that's hard/impossible in Convex alone:\n * - Multi-hop traversals\n * - Path finding\n * - Cross-theme patterns\n * - Contradiction detection\n *\n * Architecture:\n * - Convex action calls a tenant-owned query proxy route\n * - Query proxy executes a predefined Cypher query\n * - Results return to the Convex caller\n */\n\nimport { permissiveReturn } from \"@lucern/contracts/schema-helpers/validators\";\nimport { v } from \"convex/values\";\nimport { action } from \"./convex\";\nimport { callNeo4jQuery, toInt, withTopicScope } from \"./neo4jQueriesCore\";\n\n// =============================================================================\n// GRAPH QUERIES\n// =============================================================================\n\n/**\n * Get the full lineage of a node (what it was derived/extracted from)\n * Uses Neo4j for efficient multi-hop traversal up to 10 levels deep\n */\nexport const getNodeLineageGraph = action({\n args: {\n globalId: v.string(),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"nodeLineage\",\n withTopicScope(args, {\n globalId: args.globalId,\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n console.error(\"[Neo4j] Lineage query failed:\", result.error);\n return { lineage: [], error: result.error };\n }\n\n // Extract lineage from first result\n const lineage =\n (result.data?.[0] as { lineage?: unknown[] })?.lineage || [];\n return { lineage };\n },\n});\n\n/**\n * Get nodes connected to a given node within N hops\n * Much more powerful than Convex's single-hop queries\n */\nexport const getConnectedNodesGraph = action({\n args: {\n globalId: v.string(),\n maxHops: v.optional(v.number()),\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n // Ensure numeric params are integers (Neo4j requires integers, not floats)\n const maxHops = Math.min(toInt(args.maxHops, 2), 5);\n const limit = toInt(args.limit, 50);\n\n const result = await callNeo4jQuery(\n \"connectedNodes\",\n withTopicScope(args, {\n globalId: args.globalId,\n maxHops,\n limit,\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n console.error(\"[Neo4j] Connected nodes query failed:\", result.error);\n return { nodes: [], error: result.error };\n }\n\n return { nodes: result.data || [] };\n },\n});\n\n/**\n * Get all beliefs that belong to a theme\n */\nexport const getThemeBeliefsGraph = action({\n args: {\n themeGlobalId: v.string(),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"themeBeliefs\", {\n themeGlobalId: args.themeGlobalId,\n });\n\n if (!result.success) {\n return { beliefs: [], error: result.error };\n }\n\n return {\n beliefs: result.data?.map((r) => (r as { belief: unknown }).belief) || [],\n };\n },\n});\n\n/**\n * Get evidence that supports a belief (through question chain OR direct link)\n */\nexport const getBeliefEvidenceGraph = action({\n args: {\n beliefGlobalId: v.string(),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"beliefEvidence\",\n withTopicScope(args, {\n beliefGlobalId: args.beliefGlobalId,\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { evidence: [], error: result.error };\n }\n\n return {\n evidence:\n result.data?.map((r) => (r as { evidence: unknown }).evidence) || [],\n };\n },\n});\n\n/**\n * Find beliefs that appear in multiple themes (cross-cutting insights)\n */\nexport const getCrossThemeBeliefs = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"crossThemeBeliefs\",\n withTopicScope(args, {\n limit: toInt(args.limit, 20),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { beliefs: [], error: result.error };\n }\n\n return {\n beliefs: result.data?.map((r) => (r as { belief: unknown }).belief) || [],\n };\n },\n});\n\n/**\n * Find potential contradictions in the knowledge graph\n * Evidence that tests conflicting beliefs\n */\nexport const findPotentialContradictions = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"potentialContradictions\",\n withTopicScope(args, {\n limit: toInt(args.limit, 10),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { contradictions: [], error: result.error };\n }\n\n return {\n contradictions:\n result.data?.map(\n (r) => (r as { contradiction: unknown }).contradiction\n ) || [],\n };\n },\n});\n\n/**\n * Get the full subgraph for a theme (all connected beliefs, questions, evidence)\n */\nexport const getThemeSubgraph = action({\n args: {\n themeGlobalId: v.string(),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"themeSubgraph\",\n withTopicScope(args, {\n themeGlobalId: args.themeGlobalId,\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { subgraph: null, error: result.error };\n }\n\n return {\n subgraph: (result.data?.[0] as { subgraph: unknown })?.subgraph || null,\n };\n },\n});\n\n/**\n * Find the path from evidence to a belief (how does this evidence support this belief?)\n */\nexport const getEvidenceToBeliefPath = action({\n args: {\n evidenceGlobalId: v.string(),\n beliefGlobalId: v.string(),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"evidenceToBeliefPath\",\n withTopicScope(args, {\n evidenceGlobalId: args.evidenceGlobalId,\n beliefGlobalId: args.beliefGlobalId,\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { path: null, error: result.error };\n }\n\n // Query returns: { pathResult: { nodes: [...], relationships: [...], length: N } }\n const pathResult = result.data?.[0] as {\n pathResult?: {\n nodes?: unknown[];\n relationships?: string[];\n length?: number;\n };\n };\n\n if (!pathResult?.pathResult) {\n return { path: null, error: \"No path found between evidence and belief\" };\n }\n\n return {\n path: {\n nodes: pathResult.pathResult.nodes || [],\n relationships: pathResult.pathResult.relationships || [],\n length: pathResult.pathResult.length || 0,\n },\n };\n },\n});\n\n/**\n * Get stats for a theme (counts of beliefs, questions, evidence)\n */\nexport const getThemeStats = action({\n args: {\n themeGlobalId: v.string(),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"themeStats\", {\n themeGlobalId: args.themeGlobalId,\n });\n\n if (!result.success) {\n return { stats: null, error: result.error };\n }\n\n return { stats: (result.data?.[0] as { stats: unknown })?.stats || null };\n },\n});\n\n/**\n * Get candidate theme-to-valuechain mappings\n * Returns all themes and value chains for manual or AI-assisted matching\n */\nexport const getThemeValueChainCandidates = action({\n args: {\n limit: v.optional(v.number()),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\n \"themeValueChainCandidates\",\n withTopicScope(args, {\n limit: toInt(args.limit, 100),\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { candidates: [], error: result.error };\n }\n\n return {\n candidates:\n result.data?.map((r) => (r as { candidate: unknown }).candidate) || [],\n };\n },\n});\n\n// =============================================================================\n// RELATIONSHIP QUERIES\n// =============================================================================\n\n/**\n * Find themes that impact a specific company\n */\nexport const getThemesImpactingCompany = action({\n args: {\n companyName: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"themesImpactingCompany\", {\n companyName: args.companyName,\n limit: toInt(args.limit, 20),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find companies related to a theme\n */\nexport const getCompaniesByTheme = action({\n args: {\n themeName: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"companiesByTheme\", {\n themeName: args.themeName,\n limit: toInt(args.limit, 50),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find questions about a value chain\n */\nexport const getQuestionsByValueChain = action({\n args: {\n valueChainName: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"questionsByValueChain\", {\n valueChainName: args.valueChainName,\n limit: toInt(args.limit, 50),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find questions about a theme\n */\nexport const getQuestionsByTheme = action({\n args: {\n themeName: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"questionsByTheme\", {\n themeName: args.themeName,\n limit: toInt(args.limit, 50),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find people/contacts related to a theme\n */\nexport const getPeopleByTheme = action({\n args: {\n themeName: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"peopleByTheme\", {\n themeName: args.themeName,\n limit: toInt(args.limit, 50),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find people at a specific company\n */\nexport const getPeopleByCompany = action({\n args: {\n companyName: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"peopleByCompany\", {\n companyName: args.companyName,\n limit: toInt(args.limit, 50),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find value chains for a theme\n */\nexport const getValueChainsByTheme = action({\n args: {\n themeName: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"valueChainsByTheme\", {\n themeName: args.themeName,\n limit: toInt(args.limit, 20),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find functions in a value chain\n */\nexport const getFunctionsByValueChain = action({\n args: {\n valueChainName: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"functionsByValueChain\", {\n valueChainName: args.valueChainName,\n limit: toInt(args.limit, 50),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find beliefs about a company\n */\nexport const getBeliefsByCompany = action({\n args: {\n companyName: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"beliefsByCompany\", {\n companyName: args.companyName,\n limit: toInt(args.limit, 30),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Find evidence about a company\n */\nexport const getEvidenceByCompany = action({\n args: {\n companyName: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"evidenceByCompany\", {\n companyName: args.companyName,\n limit: toInt(args.limit, 50),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Search all nodes by text\n */\nexport const searchAllNodes = action({\n args: {\n searchText: v.string(),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"searchAllNodes\", {\n searchText: args.searchText,\n limit: toInt(args.limit, 50),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Get all relationships from a node\n */\nexport const getNodeRelationships = action({\n args: {\n globalId: v.optional(v.string()),\n searchText: v.optional(v.string()),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n const result = await callNeo4jQuery(\"nodeRelationships\", {\n globalId: args.globalId || \"\",\n searchText: args.searchText || \"\",\n limit: toInt(args.limit, 50),\n });\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\n/**\n * Get graph statistics (node counts by type)\n */\nexport const getGraphStats = action({\n args: {},\n returns: permissiveReturn,\n handler: async () => {\n const result = await callNeo4jQuery(\"graphStats\", {});\n\n if (!result.success) {\n return { stats: [], error: result.error };\n }\n\n return { stats: result.data || [] };\n },\n});\n\n/**\n * Flexible graph query - routes to appropriate query based on intent\n * This is the main entry point for natural language graph queries\n */\nexport const queryGraph = action({\n args: {\n queryType: v.union(\n v.literal(\"themesImpactingCompany\"),\n v.literal(\"companiesByTheme\"),\n v.literal(\"questionsByValueChain\"),\n v.literal(\"questionsByTheme\"),\n v.literal(\"peopleByTheme\"),\n v.literal(\"peopleByCompany\"),\n v.literal(\"valueChainsByTheme\"),\n v.literal(\"functionsByValueChain\"),\n v.literal(\"beliefsByCompany\"),\n v.literal(\"evidenceByCompany\"),\n v.literal(\"searchAllNodes\"),\n v.literal(\"nodeRelationships\"),\n v.literal(\"graphStats\")\n ),\n params: v.object({\n companyName: v.optional(v.string()),\n themeName: v.optional(v.string()),\n valueChainName: v.optional(v.string()),\n searchText: v.optional(v.string()),\n globalId: v.optional(v.string()),\n limit: v.optional(v.number()),\n }),\n apiBaseUrl: v.optional(v.string()),\n topicId: v.optional(v.string()),\n },\n returns: permissiveReturn,\n handler: async (_ctx, args) => {\n // Ensure limit is an integer (JavaScript may pass floats)\n const limit = toInt(args.params.limit, 30);\n\n // Validate required params based on query type\n const themeRequiredQueries = [\n \"questionsByTheme\",\n \"peopleByTheme\",\n \"companiesByTheme\",\n \"valueChainsByTheme\",\n ];\n const companyRequiredQueries = [\n \"themesImpactingCompany\",\n \"peopleByCompany\",\n \"beliefsByCompany\",\n \"evidenceByCompany\",\n ];\n const valueChainRequiredQueries = [\n \"questionsByValueChain\",\n \"functionsByValueChain\",\n ];\n\n if (\n themeRequiredQueries.includes(args.queryType) &&\n !args.params.themeName\n ) {\n return {\n results: [],\n error: `Query type '${args.queryType}' requires 'themeName' parameter`,\n };\n }\n if (\n companyRequiredQueries.includes(args.queryType) &&\n !args.params.companyName\n ) {\n return {\n results: [],\n error: `Query type '${args.queryType}' requires 'companyName' parameter`,\n };\n }\n if (\n valueChainRequiredQueries.includes(args.queryType) &&\n !args.params.valueChainName\n ) {\n return {\n results: [],\n error: `Query type '${args.queryType}' requires 'valueChainName' parameter`,\n };\n }\n\n const result = await callNeo4jQuery(\n args.queryType,\n withTopicScope(args, {\n ...args.params,\n limit,\n }),\n args.apiBaseUrl\n );\n\n if (!result.success) {\n return { results: [], error: result.error };\n }\n\n return { results: result.data || [] };\n },\n});\n\nexport * from \"./neo4jQueriesAdvanced\";\n"]}