@lucern/graph-primitives 1.0.0 → 1.0.1

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.
Files changed (202) hide show
  1. package/README.md +13 -12
  2. package/dist/beliefDecay.js +24 -17
  3. package/dist/beliefDecay.js.map +1 -1
  4. package/dist/beliefEvidenceLinks.js +32 -8
  5. package/dist/beliefEvidenceLinks.js.map +1 -1
  6. package/dist/confidencePropagationDispatch.js.map +1 -1
  7. package/dist/contradictions.js +32 -9
  8. package/dist/contradictions.js.map +1 -1
  9. package/dist/convex.d.ts +55 -12
  10. package/dist/convex.js.map +1 -1
  11. package/dist/edgeValidation.d.ts +25 -2
  12. package/dist/edges/index.d.ts +9 -2
  13. package/dist/edges/index.js.map +1 -1
  14. package/dist/edges/propagationTypes.d.ts +2 -3
  15. package/dist/edges/propagationTypes.js.map +1 -1
  16. package/dist/entityBridge.js +10 -3
  17. package/dist/entityBridge.js.map +1 -1
  18. package/dist/entityLifecycle.js +15 -3
  19. package/dist/entityLifecycle.js.map +1 -1
  20. package/dist/epistemicAnswers.js.map +1 -1
  21. package/dist/epistemicBeliefs.admin.d.ts +36 -0
  22. package/dist/epistemicBeliefs.admin.js +745 -0
  23. package/dist/epistemicBeliefs.admin.js.map +1 -0
  24. package/dist/epistemicBeliefs.backfills.d.ts +62 -0
  25. package/dist/epistemicBeliefs.backfills.js +1004 -0
  26. package/dist/epistemicBeliefs.backfills.js.map +1 -0
  27. package/dist/epistemicBeliefs.confidence.d.ts +45 -0
  28. package/dist/epistemicBeliefs.confidence.js +1285 -0
  29. package/dist/epistemicBeliefs.confidence.js.map +1 -0
  30. package/dist/epistemicBeliefs.core.d.ts +35 -0
  31. package/dist/epistemicBeliefs.core.js +1508 -0
  32. package/dist/epistemicBeliefs.core.js.map +1 -0
  33. package/dist/epistemicBeliefs.d.ts +12 -3
  34. package/dist/epistemicBeliefs.helpers.d.ts +168 -0
  35. package/dist/epistemicBeliefs.helpers.js +1060 -0
  36. package/dist/epistemicBeliefs.helpers.js.map +1 -0
  37. package/dist/epistemicBeliefs.internal.d.ts +30 -0
  38. package/dist/epistemicBeliefs.internal.js +1329 -0
  39. package/dist/epistemicBeliefs.internal.js.map +1 -0
  40. package/dist/epistemicBeliefs.js +1196 -1184
  41. package/dist/epistemicBeliefs.js.map +1 -1
  42. package/dist/epistemicBeliefs.lifecycle.d.ts +19 -0
  43. package/dist/epistemicBeliefs.lifecycle.js +1608 -0
  44. package/dist/epistemicBeliefs.lifecycle.js.map +1 -0
  45. package/dist/epistemicBeliefs.links.d.ts +30 -0
  46. package/dist/epistemicBeliefs.links.js +761 -0
  47. package/dist/epistemicBeliefs.links.js.map +1 -0
  48. package/dist/epistemicBeliefs.queries.d.ts +16 -0
  49. package/dist/epistemicBeliefs.queries.js +90 -0
  50. package/dist/epistemicBeliefs.queries.js.map +1 -0
  51. package/dist/epistemicContractHelpers.d.ts +1 -1
  52. package/dist/epistemicContractHelpers.js +1 -1
  53. package/dist/epistemicContracts.d.ts +5 -76
  54. package/dist/epistemicContracts.evaluators.d.ts +36 -0
  55. package/dist/epistemicContracts.evaluators.js +2506 -0
  56. package/dist/epistemicContracts.evaluators.js.map +1 -0
  57. package/dist/epistemicContracts.handlers.d.ts +40 -0
  58. package/dist/epistemicContracts.handlers.js +3029 -0
  59. package/dist/epistemicContracts.handlers.js.map +1 -0
  60. package/dist/epistemicContracts.js +2006 -5281
  61. package/dist/epistemicContracts.js.map +1 -1
  62. package/dist/epistemicContracts.metrics.d.ts +26 -0
  63. package/dist/epistemicContracts.metrics.js +427 -0
  64. package/dist/epistemicContracts.metrics.js.map +1 -0
  65. package/dist/epistemicContracts.types.d.ts +159 -0
  66. package/dist/epistemicContracts.types.js +3 -0
  67. package/dist/epistemicContracts.types.js.map +1 -0
  68. package/dist/epistemicEdgeCreation.d.ts +73 -0
  69. package/dist/epistemicEdgeCreation.js +450 -0
  70. package/dist/epistemicEdgeCreation.js.map +1 -0
  71. package/dist/epistemicEdges-BF-cn4i3.d.ts +43 -0
  72. package/dist/epistemicEdges.d.ts +8 -1
  73. package/dist/epistemicEdges.handlers.d.ts +20 -0
  74. package/dist/epistemicEdges.handlers.js +289 -0
  75. package/dist/epistemicEdges.handlers.js.map +1 -0
  76. package/dist/epistemicEdges.helpers.d.ts +27 -0
  77. package/dist/epistemicEdges.helpers.js +162 -0
  78. package/dist/epistemicEdges.helpers.js.map +1 -0
  79. package/dist/epistemicEdges.js +797 -875
  80. package/dist/epistemicEdges.js.map +1 -1
  81. package/dist/epistemicEdges.mutations.d.ts +39 -0
  82. package/dist/epistemicEdges.mutations.js +1365 -0
  83. package/dist/epistemicEdges.mutations.js.map +1 -0
  84. package/dist/epistemicEdges.queries.d.ts +95 -0
  85. package/dist/epistemicEdges.queries.js +851 -0
  86. package/dist/epistemicEdges.queries.js.map +1 -0
  87. package/dist/epistemicEdges.types.d.ts +32 -0
  88. package/dist/epistemicEdges.types.js +3 -0
  89. package/dist/epistemicEdges.types.js.map +1 -0
  90. package/dist/epistemicEvidence-DvfchNt7.d.ts +46 -0
  91. package/dist/epistemicEvidence.d.ts +5 -2
  92. package/dist/epistemicEvidence.js +801 -807
  93. package/dist/epistemicEvidence.js.map +1 -1
  94. package/dist/epistemicEvidenceHelpers.d.ts +71 -0
  95. package/dist/epistemicEvidenceHelpers.js +769 -0
  96. package/dist/epistemicEvidenceHelpers.js.map +1 -0
  97. package/dist/epistemicEvidenceMutations.d.ts +10 -0
  98. package/dist/epistemicEvidenceMutations.js +1421 -0
  99. package/dist/epistemicEvidenceMutations.js.map +1 -0
  100. package/dist/epistemicEvidenceQueries.d.ts +10 -0
  101. package/dist/epistemicEvidenceQueries.js +1049 -0
  102. package/dist/epistemicEvidenceQueries.js.map +1 -0
  103. package/dist/epistemicHelpers.d.ts +4 -2
  104. package/dist/epistemicHelpers.js +132 -127
  105. package/dist/epistemicHelpers.js.map +1 -1
  106. package/dist/epistemicLayerRules.d.ts +138 -0
  107. package/dist/epistemicLayerRules.js +481 -0
  108. package/dist/epistemicLayerRules.js.map +1 -0
  109. package/dist/epistemicLinking.js +1 -1
  110. package/dist/epistemicLinking.js.map +1 -1
  111. package/dist/epistemicNodeCreation.d.ts +101 -0
  112. package/dist/epistemicNodeCreation.js +709 -0
  113. package/dist/epistemicNodeCreation.js.map +1 -0
  114. package/dist/epistemicNodes-BCQxpYx_.d.ts +54 -0
  115. package/dist/epistemicNodes.d.ts +5 -1
  116. package/dist/epistemicNodes.helpers.d.ts +51 -0
  117. package/dist/epistemicNodes.helpers.js +73 -0
  118. package/dist/epistemicNodes.helpers.js.map +1 -0
  119. package/dist/epistemicNodes.internal.d.ts +34 -0
  120. package/dist/epistemicNodes.internal.js +658 -0
  121. package/dist/epistemicNodes.internal.js.map +1 -0
  122. package/dist/epistemicNodes.js +698 -693
  123. package/dist/epistemicNodes.js.map +1 -1
  124. package/dist/epistemicNodes.mutations.d.ts +34 -0
  125. package/dist/epistemicNodes.mutations.js +1153 -0
  126. package/dist/epistemicNodes.mutations.js.map +1 -0
  127. package/dist/epistemicNodes.queries.d.ts +36 -0
  128. package/dist/epistemicNodes.queries.js +619 -0
  129. package/dist/epistemicNodes.queries.js.map +1 -0
  130. package/dist/epistemicNodes.validators.d.ts +23 -0
  131. package/dist/epistemicNodes.validators.js +105 -0
  132. package/dist/epistemicNodes.validators.js.map +1 -0
  133. package/dist/epistemicQuestions-bwHd2FWE.d.ts +68 -0
  134. package/dist/epistemicQuestions.conviction.d.ts +52 -0
  135. package/dist/epistemicQuestions.conviction.js +1389 -0
  136. package/dist/epistemicQuestions.conviction.js.map +1 -0
  137. package/dist/epistemicQuestions.create.d.ts +29 -0
  138. package/dist/epistemicQuestions.create.js +1300 -0
  139. package/dist/epistemicQuestions.create.js.map +1 -0
  140. package/dist/epistemicQuestions.d.ts +10 -2
  141. package/dist/epistemicQuestions.evidence.d.ts +22 -0
  142. package/dist/epistemicQuestions.evidence.js +929 -0
  143. package/dist/epistemicQuestions.evidence.js.map +1 -0
  144. package/dist/epistemicQuestions.helpers.d.ts +69 -0
  145. package/dist/epistemicQuestions.helpers.js +824 -0
  146. package/dist/epistemicQuestions.helpers.js.map +1 -0
  147. package/dist/epistemicQuestions.js +2435 -2430
  148. package/dist/epistemicQuestions.js.map +1 -1
  149. package/dist/epistemicQuestions.lifecycle.d.ts +24 -0
  150. package/dist/epistemicQuestions.lifecycle.js +838 -0
  151. package/dist/epistemicQuestions.lifecycle.js.map +1 -0
  152. package/dist/epistemicQuestions.queries.d.ts +41 -0
  153. package/dist/epistemicQuestions.queries.js +1013 -0
  154. package/dist/epistemicQuestions.queries.js.map +1 -0
  155. package/dist/epistemicQuestions.sprint.d.ts +22 -0
  156. package/dist/epistemicQuestions.sprint.js +757 -0
  157. package/dist/epistemicQuestions.sprint.js.map +1 -0
  158. package/dist/epistemicQuestions.tail.d.ts +42 -0
  159. package/dist/epistemicQuestions.tail.js +1345 -0
  160. package/dist/epistemicQuestions.tail.js.map +1 -0
  161. package/dist/epistemicSources.js +6 -2
  162. package/dist/epistemicSources.js.map +1 -1
  163. package/dist/evaluators/index.d.ts +2 -2
  164. package/dist/evaluators/index.js +45 -5320
  165. package/dist/evaluators/index.js.map +1 -1
  166. package/dist/evaluators/lintCheckerEvaluator.d.ts +1 -1
  167. package/dist/evaluators/sentryCheckerEvaluator.d.ts +1 -1
  168. package/dist/evaluators/testRunnerEvaluator.d.ts +1 -1
  169. package/dist/evaluators/tscCheckerEvaluator.d.ts +1 -1
  170. package/dist/{graphTypes-CpgIuCdo.d.ts → graphTypes-B8VaIjnl.d.ts} +1 -1
  171. package/dist/graphTypes.d.ts +1 -1
  172. package/dist/{helpers-BYHIk5vU.d.ts → helpers-DNYfg6mo.d.ts} +2 -3
  173. package/dist/helpers.d.ts +2 -2
  174. package/dist/helpers.js.map +1 -1
  175. package/dist/{index-Dq-7R-gi.d.ts → index-C-Kyd7hD.d.ts} +1 -1
  176. package/dist/index.d.ts +160 -14
  177. package/dist/index.js +12291 -13001
  178. package/dist/index.js.map +1 -1
  179. package/dist/logicalRoleInference.js.map +1 -1
  180. package/dist/ontologyApproval.js +1 -1
  181. package/dist/ontologyApproval.js.map +1 -1
  182. package/dist/ontologyDefinitions.js +25 -7
  183. package/dist/ontologyDefinitions.js.map +1 -1
  184. package/dist/ontologyRegistry.js.map +1 -1
  185. package/dist/projectionReconciliation.js.map +1 -1
  186. package/dist/questionEvidenceLinks.js +28 -7
  187. package/dist/questionEvidenceLinks.js.map +1 -1
  188. package/dist/resolvers.js.map +1 -1
  189. package/dist/scopeResolverCompat.js.map +1 -1
  190. package/dist/topicProjectOverlay.js.map +1 -1
  191. package/dist/topicScope.js.map +1 -1
  192. package/dist/workflowBridge.js.map +1 -1
  193. package/dist/workspaceIsolation.js.map +1 -1
  194. package/package.json +4 -5
  195. package/dist/edgeValidation-CeI0wc0r.d.ts +0 -35
  196. package/dist/epistemicBeliefs-DzKjZAeC.d.ts +0 -377
  197. package/dist/epistemicEdges-CvlKnEyy.d.ts +0 -191
  198. package/dist/epistemicEvidence-xw6UUrwh.d.ts +0 -128
  199. package/dist/epistemicHelpers-DevrYgPN.d.ts +0 -329
  200. package/dist/epistemicNodes-DjSUfvyD.d.ts +0 -167
  201. package/dist/epistemicQuestions-B_nUclrH.d.ts +0 -214
  202. package/dist/index-Dct1T70K.d.ts +0 -25
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/convex.ts","../src/debug.ts","../src/topicScope.ts","../src/epistemicNodes.helpers.ts","../src/epistemicNodes.validators.ts","../src/epistemicNodes.queries.ts"],"names":["v","query","search"],"mappings":"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","file":"epistemicNodes.queries.js","sourcesContent":["import {\n actionGeneric,\n anyApi,\n componentsGeneric,\n httpActionGeneric,\n internalActionGeneric,\n internalMutationGeneric,\n internalQueryGeneric,\n mutationGeneric,\n queryGeneric,\n} from \"convex/server\";\nimport type { GenericId } from \"convex/values\";\n\nexport const api = anyApi as any;\nexport const components = componentsGeneric() as any;\nexport const internal = anyApi as any;\n\nexport type TableNames = string;\nexport type Id<TableName extends TableNames = string> = GenericId<TableName>;\nexport type Doc<TableName extends TableNames = string> = any;\nexport type DataModel = any;\ntype IndexRangeBuilder = {\n field(fieldName: string): string;\n eq(fieldName: string, value: unknown): IndexRangeBuilder;\n gt(fieldName: string, value: unknown): IndexRangeBuilder;\n gte(fieldName: string, value: unknown): IndexRangeBuilder;\n lt(fieldName: string, value: unknown): IndexRangeBuilder;\n lte(fieldName: string, value: unknown): IndexRangeBuilder;\n};\ntype FilterBuilder = {\n eq(left: unknown, right: unknown): unknown;\n neq(left: unknown, right: unknown): unknown;\n gt(left: unknown, right: unknown): unknown;\n gte(left: unknown, right: unknown): unknown;\n lt(left: unknown, right: unknown): unknown;\n lte(left: unknown, right: unknown): unknown;\n and(...clauses: unknown[]): unknown;\n or(...clauses: unknown[]): unknown;\n field(fieldName: string): unknown;\n};\ntype QueryInitializer<TableName extends TableNames> = {\n withIndex(\n indexName: string,\n range?: (q: any) => unknown\n ): QueryInitializer<TableName>;\n filter(predicate: (q: any) => unknown): QueryInitializer<TableName>;\n order(direction: \"asc\" | \"desc\"): QueryInitializer<TableName>;\n collect(): Promise<Doc<TableName>[]>;\n take(limit: number): Promise<Doc<TableName>[]>;\n first(): Promise<Doc<TableName> | null>;\n unique(): Promise<Doc<TableName> | null>;\n};\nexport type DatabaseReader = {\n get<TableName extends TableNames>(\n id: Id<TableName>\n ): Promise<Doc<TableName> | null>;\n query<TableName extends TableNames>(\n tableName: TableName\n ): QueryInitializer<TableName>;\n normalizeId?<TableName extends TableNames>(\n tableName: TableName,\n id: string\n ): Id<TableName> | null;\n};\nexport type DatabaseWriter = DatabaseReader & {\n insert<TableName extends TableNames>(\n tableName: TableName,\n value: Record<string, unknown>\n ): Promise<Id<TableName>>;\n patch<TableName extends TableNames>(\n id: Id<TableName>,\n value: Record<string, unknown>\n ): Promise<void>;\n replace<TableName extends TableNames>(\n id: Id<TableName>,\n value: Record<string, unknown>\n ): Promise<void>;\n delete<TableName extends TableNames>(id: Id<TableName>): Promise<void>;\n};\ntype Scheduler = {\n runAfter(delayMs: number, functionReference: unknown, args?: unknown): Promise<void>;\n};\ntype AuthReader = {\n getUserIdentity(): Promise<unknown>;\n};\ntype RuntimeInvoker = {\n runQuery(functionReference: unknown, args?: unknown): Promise<any>;\n runMutation(functionReference: unknown, args?: unknown): Promise<any>;\n runAction(functionReference: unknown, args?: unknown): Promise<any>;\n};\nexport type QueryCtx = RuntimeInvoker & {\n auth: AuthReader;\n db: DatabaseReader;\n scheduler: Scheduler;\n};\nexport type MutationCtx = RuntimeInvoker & {\n auth: AuthReader;\n db: DatabaseWriter;\n scheduler: Scheduler;\n};\nexport type ActionCtx = RuntimeInvoker & {\n auth: AuthReader;\n scheduler: Scheduler;\n};\n\ntype ConvexFunctionBuilder<Ctx> = <\n Definition extends { handler?: (ctx: Ctx, args: any) => any },\n>(\n definition: Definition\n) => any;\n\nexport const action = actionGeneric as unknown as ConvexFunctionBuilder<ActionCtx>;\nexport const httpAction =\n httpActionGeneric as unknown as ConvexFunctionBuilder<ActionCtx>;\nexport const internalAction =\n internalActionGeneric as unknown as ConvexFunctionBuilder<ActionCtx>;\nexport const internalMutation =\n internalMutationGeneric as unknown as ConvexFunctionBuilder<MutationCtx>;\nexport const internalQuery =\n internalQueryGeneric as unknown as ConvexFunctionBuilder<QueryCtx>;\nexport const mutation =\n mutationGeneric as unknown as ConvexFunctionBuilder<MutationCtx>;\nexport const query = queryGeneric as unknown as ConvexFunctionBuilder<QueryCtx>;\n","type GraphPrimitiveDebugEnvironment = {\n process?: {\n env?: Record<string, string | undefined>;\n };\n};\n\nfunction isGraphPrimitiveDebugEnabled(): boolean {\n const env = (globalThis as GraphPrimitiveDebugEnvironment).process?.env;\n return (\n env?.LUCERN_COMPAT_FALLBACK_DEBUG === \"1\" ||\n env?.LUCERN_GRAPH_DEBUG === \"1\"\n );\n}\n\nexport function formatGraphPrimitiveError(error: unknown): string {\n if (error instanceof Error) {\n return `${error.name}: ${error.message}`;\n }\n if (typeof error === \"string\") {\n return error;\n }\n if (error === null) {\n return \"null\";\n }\n if (error === undefined) {\n return \"undefined\";\n }\n try {\n return JSON.stringify(error);\n } catch {\n return Object.prototype.toString.call(error);\n }\n}\n\nexport function debugGraphPrimitiveFallback(\n message: string,\n context?: Record<string, unknown>\n): void {\n if (!isGraphPrimitiveDebugEnabled()) {\n return;\n }\n console.debug(message, context ?? {});\n}\n","/** Topic-scope resolution helpers for graph-primitive operations. */\nimport { v } from \"convex/values\";\nimport { api as appApi } from \"./convex\";\nimport type { Id } from \"./convex\";\nimport { debugGraphPrimitiveFallback } from \"./debug\";\n\nconst LEGACY_SCOPE_FIELD = \"graphScope\" + \"ProjectId\";\n\ntype TopicDoc = Record<string, unknown> & {\n _id: Id<\"topics\">;\n globalId?: string;\n name?: string;\n depth?: number;\n createdAt?: number;\n parentTopicId?: Id<\"topics\">;\n tenantId?: string;\n workspaceId?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type TopicProjectScope = {\n topicId: Id<\"topics\">;\n projectId?: string;\n tenantId?: string;\n workspaceId?: string;\n source: \"topic\" | \"project_mapped_topic\" | \"topic_inferred\";\n};\n\ntype MaterializedTopicNodeDoc = {\n _id: string | Id<\"epistemicNodes\">;\n metadata?: Record<string, unknown>;\n};\n\nfunction asMappedProjectId(\n topic: TopicDoc | null | undefined,\n): string | undefined {\n if (!topic) {\n return;\n }\n const directLegacyProjectId = normalizeScopeValue(topic[LEGACY_SCOPE_FIELD]);\n if (directLegacyProjectId) {\n return directLegacyProjectId;\n }\n const metadata = (topic.metadata || {}) as Record<string, unknown>;\n const candidate =\n (metadata[LEGACY_SCOPE_FIELD] as string | undefined) ||\n (metadata.legacyProjectId as string | undefined) ||\n (metadata.projectId as string | undefined) ||\n (metadata.scopeProjectId as string | undefined);\n return candidate ? (candidate as string) : undefined;\n}\n\nfunction normalizeScopeValue(value: unknown): string | undefined {\n if (typeof value !== \"string\") {\n return;\n }\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : undefined;\n}\n\nfunction pickPrimaryTopic(candidates: TopicDoc[]): TopicDoc | undefined {\n return [...candidates].sort((a, b) => {\n const depthA = a.depth ?? 9999;\n const depthB = b.depth ?? 9999;\n if (depthA !== depthB) {\n return depthA - depthB;\n }\n const createdA = a.createdAt ?? Number.MAX_SAFE_INTEGER;\n const createdB = b.createdAt ?? Number.MAX_SAFE_INTEGER;\n if (createdA !== createdB) {\n return createdA - createdB;\n }\n return String(a.name || \"\").localeCompare(String(b.name || \"\"));\n })[0];\n}\n\nasync function findTopicsByScopeAlias(\n ctx: any,\n scopeId: string,\n): Promise<TopicDoc[]> {\n try {\n return (await ctx.db\n .query(\"topics\")\n .withIndex(\"by_graph_scope_project\", (q: any) =>\n q.eq(LEGACY_SCOPE_FIELD, scopeId),\n )\n .collect()) as TopicDoc[];\n } catch (error) {\n debugGraphPrimitiveFallback(\n \"[topicScope] Failed to resolve scope alias via index\",\n {\n error,\n scopeId,\n },\n );\n // Older Lucern dev deployments can lag index backfills while still carrying\n // the underlying topics table. Scan and filter so scope resolution keeps\n // working during the rollout.\n const topics = (await ctx.db.query(\"topics\").collect()) as TopicDoc[];\n return topics.filter((topic) => {\n const normalizedGlobalId = normalizeScopeValue(topic.globalId);\n const mappedProjectId = asMappedProjectId(topic);\n return (\n String(topic._id) === scopeId ||\n normalizedGlobalId === scopeId ||\n mappedProjectId === scopeId\n );\n });\n }\n}\n\nasync function tryResolveHostTopicById(\n ctx: any,\n topicId: string,\n): Promise<TopicDoc | null> {\n if (typeof ctx.runQuery !== \"function\") {\n return null;\n }\n try {\n return ((await ctx.runQuery(appApi.topics.get as any, {\n id: topicId,\n })) ?? null) as TopicDoc | null;\n } catch (error) {\n debugGraphPrimitiveFallback(\n \"[topicScope] Failed to resolve topic by host query\",\n {\n error,\n topicId,\n },\n );\n return null;\n }\n}\n\nasync function tryResolveHostTopicByLegacyScope(\n ctx: any,\n legacyScopeId: string,\n): Promise<TopicDoc | null> {\n if (typeof ctx.runQuery !== \"function\") {\n return null;\n }\n try {\n return ((await ctx.runQuery(appApi.topics.getByLegacyScopeId as any, {\n projectId: legacyScopeId,\n })) ?? null) as TopicDoc | null;\n } catch (error) {\n debugGraphPrimitiveFallback(\n \"[topicScope] Failed to resolve topic by legacy scope\",\n {\n error,\n legacyScopeId,\n },\n );\n return null;\n }\n}\n\nexport function readMaterializedTopicTableId(\n topicNode: MaterializedTopicNodeDoc | null | undefined,\n): string | undefined {\n if (!topicNode) {\n return;\n }\n\n const metadata = (topicNode.metadata || {}) as Record<string, unknown>;\n const topicTableId =\n (metadata.topicTableId as string | undefined) ||\n (metadata.topicId as string | undefined);\n\n return typeof topicTableId === \"string\" && topicTableId.trim().length > 0\n ? topicTableId.trim()\n : undefined;\n}\n\n/**\n * Walk the topic parent chain to find inherited workspaceId and tenantId.\n * Mirrors the pattern used by resolveTopicOntology for ontologyId inheritance.\n * Max depth: 10 (defensive limit against pathological nesting).\n */\nasync function resolveInheritedWorkspaceScope(\n ctx: any,\n topic: TopicDoc,\n): Promise<{ tenantId?: string; workspaceId?: string }> {\n const MAX_DEPTH = 10;\n let tenantId = normalizeScopeValue(topic.tenantId);\n let workspaceId = normalizeScopeValue(topic.workspaceId);\n\n if (tenantId && workspaceId) {\n return { tenantId, workspaceId };\n }\n\n let current: TopicDoc | null = topic;\n for (let i = 0; i < MAX_DEPTH && current?.parentTopicId; i++) {\n current = (await ctx.db.get(current.parentTopicId)) as TopicDoc | null;\n if (!current) break;\n\n if (!tenantId) {\n tenantId = normalizeScopeValue(current.tenantId);\n }\n if (!workspaceId) {\n workspaceId = normalizeScopeValue(current.workspaceId);\n }\n if (tenantId && workspaceId) break;\n }\n\n return { tenantId, workspaceId };\n}\n\nexport async function resolveTopicProjectScope(\n ctx: any,\n args: { topicId?: Id<\"topics\"> | string; projectId?: string },\n): Promise<TopicProjectScope> {\n if (args.topicId) {\n // Try direct lookup, fall back to the legacy mapped-project bridge\n let topic: TopicDoc | null = null;\n try {\n topic = (await ctx.db.get(\n args.topicId as Id<\"topics\">,\n )) as TopicDoc | null;\n } catch (error) {\n debugGraphPrimitiveFallback(\n \"[topicScope] Failed to load topic by direct id\",\n {\n error,\n topicId: args.topicId,\n },\n );\n // Not a valid topics table ID\n }\n if (!topic) {\n topic = await tryResolveHostTopicById(ctx, String(args.topicId));\n }\n if (!topic) {\n // Try as legacy projectId / globalId via the mapped-project bridge.\n topic =\n pickPrimaryTopic(\n await findTopicsByScopeAlias(ctx, String(args.topicId)),\n ) ?? null;\n }\n if (!topic) {\n throw new Error(`Topic not found: ${String(args.topicId)}`);\n }\n const inherited = await resolveInheritedWorkspaceScope(ctx, topic);\n const mapped = asMappedProjectId(topic);\n if (mapped) {\n return {\n topicId: topic._id,\n projectId: mapped,\n tenantId: inherited.tenantId,\n workspaceId: inherited.workspaceId,\n source: \"topic\",\n };\n }\n return {\n topicId: topic._id,\n tenantId: inherited.tenantId,\n workspaceId: inherited.workspaceId,\n source: \"topic\",\n };\n }\n\n if (args.projectId) {\n let directTopic: TopicDoc | null = null;\n try {\n directTopic = (await ctx.db.get(\n args.projectId as Id<\"topics\">,\n )) as TopicDoc | null;\n } catch (error) {\n debugGraphPrimitiveFallback(\n \"[topicScope] Failed to load direct project topic\",\n {\n error,\n projectId: args.projectId,\n },\n );\n // Not a valid topics table ID, continue to legacy graph-scope lookup.\n }\n\n if (directTopic) {\n const inherited = await resolveInheritedWorkspaceScope(ctx, directTopic);\n const mapped = asMappedProjectId(directTopic);\n return {\n topicId: directTopic._id,\n projectId: mapped ?? args.projectId,\n tenantId: inherited.tenantId,\n workspaceId: inherited.workspaceId,\n source: \"topic_inferred\",\n };\n }\n\n directTopic = await tryResolveHostTopicByLegacyScope(ctx, args.projectId);\n if (directTopic) {\n const inherited = await resolveInheritedWorkspaceScope(ctx, directTopic);\n const mapped = asMappedProjectId(directTopic);\n return {\n topicId: directTopic._id,\n projectId: mapped ?? args.projectId,\n tenantId: inherited.tenantId,\n workspaceId: inherited.workspaceId,\n source: \"topic_inferred\",\n };\n }\n\n const topics = await findTopicsByScopeAlias(ctx, args.projectId);\n const primary = pickPrimaryTopic(topics);\n if (primary) {\n const inherited = await resolveInheritedWorkspaceScope(ctx, primary);\n return {\n topicId: primary._id,\n projectId: args.projectId,\n tenantId: inherited.tenantId,\n workspaceId: inherited.workspaceId,\n source: \"project_mapped_topic\",\n };\n }\n throw new Error(\n `Legacy project scope ${String(args.projectId)} has no mapped topic.`,\n );\n }\n\n throw new Error(\n \"Missing scope: provide topicId (preferred) or legacy projectId alias.\",\n );\n}\n\n/** Shared scope args for graph-primitive functions. topicId is canonical; projectId is a legacy alias. */\nexport const optionalScopeArgs = {\n projectId: v.optional(v.string()),\n topicId: v.optional(v.string()),\n} as const;\n","import { checkScopeAccess } from \"@lucern/access-control/access\";\nimport type { Id, QueryCtx } from \"./convex\";\nimport { resolveTopicProjectScope } from \"./topicScope\";\n\nconst DEFAULT_NODE_PAGE_SIZE = 250;\nexport const MAX_NODE_PAGE_SIZE = 8000;\n\ntype WorkspaceNodeScope = Awaited<ReturnType<typeof resolveTopicProjectScope>>;\ntype NodeIndexQuery = {\n eq(field: string, value: unknown): NodeIndexQuery;\n};\n\ntype NodeQueryChain<T> = {\n withIndex(\n _name: string,\n callback: (q: NodeIndexQuery) => NodeIndexQuery,\n ): NodeQueryChain<T>;\n order(direction: \"asc\" | \"desc\"): NodeQueryChain<T>;\n collect(): Promise<T[]>;\n take(limit: number): Promise<T[]>;\n};\n\ntype ScopedNodeCtx = QueryCtx & {\n db: {\n query<T = unknown>(_table: string): NodeQueryChain<T>;\n };\n};\nexport type WorkspaceScopedNode = {\n _id: Id<\"epistemicNodes\">;\n topicId?: Id<\"topics\">;\n projectId?: string;\n status: string;\n nodeType: string;\n};\n\nexport function clampNodeLimit(\n limit: number | undefined,\n fallback = DEFAULT_NODE_PAGE_SIZE,\n): number {\n if (!Number.isFinite(limit)) {\n return fallback;\n }\n return Math.max(1, Math.min(Math.floor(limit as number), MAX_NODE_PAGE_SIZE));\n}\n\ntype NodeStatusResult =\n | { success: true }\n | { success: true; effectiveStatus: \"archived\" }\n | { success: false; error: \"Node not found\" }\n | { success: true; deletedEdgeCount: number };\n\nexport function buildNodeStatusSuccessResult(): NodeStatusResult {\n return { success: true };\n}\n\nexport function buildNodeArchivedResult(): NodeStatusResult {\n return {\n success: true,\n effectiveStatus: \"archived\",\n };\n}\n\nexport function buildNodeNotFoundResult(): NodeStatusResult {\n const result = {} as Extract<NodeStatusResult, { success: false }>;\n result.success = false;\n result.error = \"Node not found\";\n return result;\n}\n\nexport function buildNodeDeletedResult(deletedEdgeCount: number): NodeStatusResult {\n return {\n success: true,\n deletedEdgeCount,\n };\n}\n\nfunction dedupeWorkspaceNodes<T extends { _id: unknown }>(nodes: T[]): T[] {\n const seen = new Set<string>();\n const deduped: T[] = [];\n\n for (const node of nodes) {\n const key = String(node._id);\n if (seen.has(key)) {\n continue;\n }\n seen.add(key);\n deduped.push(node);\n }\n\n return deduped;\n}\n\nexport function nodeMatchesWorkspaceReasoningScope(\n node: Pick<WorkspaceScopedNode, \"topicId\" | \"projectId\">,\n scope: WorkspaceNodeScope,\n): boolean {\n return (\n (scope.topicId !== undefined && node.topicId === scope.topicId) ||\n (scope.projectId !== undefined && node.projectId === scope.projectId)\n );\n}\n\nexport async function collectScopedNodes(\n ctx: ScopedNodeCtx,\n scope: WorkspaceNodeScope,\n args: {\n nodeType?: string;\n scanLimit: number;\n },\n): Promise<WorkspaceScopedNode[]> {\n const queries: Promise<WorkspaceScopedNode[]>[] = [];\n\n if (scope.topicId) {\n queries.push(\n args.nodeType\n ? ctx.db\n .query(\"epistemicNodes\")\n .withIndex(\"by_topic_type\", (q: any) =>\n q.eq(\"topicId\", scope.topicId).eq(\"nodeType\", args.nodeType),\n )\n .order(\"desc\")\n .take(args.scanLimit)\n : ctx.db\n .query(\"epistemicNodes\")\n .withIndex(\"by_topic\", (q: any) => q.eq(\"topicId\", scope.topicId))\n .order(\"desc\")\n .take(args.scanLimit),\n );\n }\n\n if (scope.projectId && !scope.topicId) {\n queries.push(\n args.nodeType\n ? ctx.db\n .query(\"epistemicNodes\")\n .withIndex(\"by_topic_type\", (q: any) =>\n q.eq(\"topicId\", scope.projectId).eq(\"nodeType\", args.nodeType),\n )\n .order(\"desc\")\n .take(args.scanLimit)\n : ctx.db\n .query(\"epistemicNodes\")\n .withIndex(\"by_topic\", (q: any) => q.eq(\"topicId\", scope.projectId))\n .order(\"desc\")\n .take(args.scanLimit),\n );\n }\n\n const combined = dedupeWorkspaceNodes((await Promise.all(queries)).flat());\n return combined.filter((node) =>\n nodeMatchesWorkspaceReasoningScope(node, scope),\n );\n}\n\nexport type { WorkspaceNodeScope };\n","import { v } from \"convex/values\";\n\n// =============================================================================\n// TYPES (Phase 2A: Layer Architecture Compliant)\n// =============================================================================\n\n/**\n * Epistemic Layer Validator\n * L4: Decisions, outcomes - audit targets\n * L3: Beliefs, questions, themes - traversal anchors\n * L2: Claims, evidence, synthesis - compression boundary\n * L1: Atomic facts, excerpts, sources - terminal leaves\n */\nexport const epistemicLayerValidator = v.union(\n v.literal(\"L4\"),\n v.literal(\"L3\"),\n v.literal(\"L2\"),\n v.literal(\"L1\"),\n v.literal(\"ontological\"),\n v.literal(\"organizational\"),\n);\n\n// L4: Audit targets (decisions, outcomes)\nexport const l4NodeTypeValidator = v.union(v.literal(\"decision\"));\n\n// L3: Traversal anchors (epistemic structure)\nexport const l3NodeTypeValidator = v.union(\n v.literal(\"belief\"),\n v.literal(\"question\"),\n v.literal(\"theme\"),\n v.literal(\"deal\"),\n);\n\n// L2: Compression boundary (minimum reasoning unit)\nexport const l2NodeTypeValidator = v.union(\n v.literal(\"claim\"),\n v.literal(\"evidence\"),\n v.literal(\"synthesis\"),\n);\n\n// L1: Terminal leaves (non-traversable, grounding)\nexport const l1NodeTypeValidator = v.union(\n v.literal(\"atomic_fact\"),\n v.literal(\"excerpt\"),\n v.literal(\"source\"),\n);\n\n// Epistemic node types (knowledge objects) - all layers\nexport const epistemicNodeTypeValidator = v.union(\n // L4: Audit targets\n v.literal(\"decision\"),\n // L3: Traversal anchors\n v.literal(\"belief\"),\n v.literal(\"question\"),\n v.literal(\"theme\"),\n v.literal(\"deal\"),\n // L2: Compression boundary\n v.literal(\"claim\"),\n v.literal(\"evidence\"),\n v.literal(\"synthesis\"),\n v.literal(\"answer\"),\n // L1: Terminal leaves\n v.literal(\"atomic_fact\"),\n v.literal(\"excerpt\"),\n v.literal(\"source\"),\n);\n\n// Ontological node types (real-world entities)\nexport const ontologicalNodeTypeValidator = v.union(\n v.literal(\"company\"),\n v.literal(\"person\"),\n v.literal(\"investor\"),\n v.literal(\"function\"),\n v.literal(\"value_chain\"),\n);\n\n// Organizational node types (structural containers)\nexport const organizationalNodeTypeValidator = v.union(v.literal(\"topic\"));\n\n// All node types\nexport const nodeTypeValidator = v.union(\n // L4: Audit targets\n v.literal(\"decision\"),\n // L3: Traversal anchors\n v.literal(\"belief\"),\n v.literal(\"question\"),\n v.literal(\"theme\"),\n v.literal(\"deal\"),\n // L2: Compression boundary\n v.literal(\"claim\"),\n v.literal(\"evidence\"),\n v.literal(\"synthesis\"),\n v.literal(\"answer\"),\n // L1: Terminal leaves\n v.literal(\"atomic_fact\"),\n v.literal(\"excerpt\"),\n v.literal(\"source\"),\n // Ontological\n v.literal(\"company\"),\n v.literal(\"person\"),\n v.literal(\"investor\"),\n v.literal(\"function\"),\n v.literal(\"value_chain\"),\n // Organizational\n v.literal(\"topic\"),\n);\n\nexport const sourceTypeValidator = v.union(\n v.literal(\"human\"),\n v.literal(\"ai_extracted\"),\n v.literal(\"ai_generated\"),\n v.literal(\"imported\"),\n v.literal(\"system\"), // System-generated (migrations, classifiers)\n);\n\nexport const statusValidator = v.union(\n v.literal(\"active\"),\n v.literal(\"superseded\"),\n v.literal(\"archived\"),\n v.literal(\"deleted\"),\n);\n\nexport const verificationStatusValidator = v.union(\n v.literal(\"unverified\"),\n v.literal(\"human_verified\"),\n v.literal(\"ai_verified\"),\n v.literal(\"contradicted\"),\n v.literal(\"outdated\"),\n);\n","import { v } from \"convex/values\";\nimport { checkScopeAccess } from \"@lucern/access-control/access\";\nimport { permissiveReturn } from \"@lucern/contracts/schema-helpers/validators\";\nimport { query } from \"./convex\";\nimport { debugGraphPrimitiveFallback } from \"./debug\";\nimport { optionalScopeArgs, resolveTopicProjectScope } from \"./topicScope\";\nimport {\n clampNodeLimit,\n collectScopedNodes,\n nodeMatchesWorkspaceReasoningScope,\n MAX_NODE_PAGE_SIZE,\n} from \"./epistemicNodes.helpers\";\nimport { nodeTypeValidator, statusValidator } from \"./epistemicNodes.validators\";\n\nconst optionalNodeScopeArgs = optionalScopeArgs;\n\n/**\n * Get a single node by ID\n */\nexport const get = query({\n args: { nodeId: v.id(\"epistemicNodes\") },\n returns: permissiveReturn,\n handler: async (ctx: any, args: any) => {\n return await ctx.db.get(args.nodeId);\n },\n});\n\n/**\n * Get a node by its global UUID\n */\nexport const getByGlobalId = query({\n args: { globalId: v.string() },\n returns: permissiveReturn,\n handler: async (ctx: any, args: any) => {\n return await ctx.db\n .query(\"epistemicNodes\")\n .withIndex(\"by_globalId\", (q: any) => q.eq(\"globalId\", args.globalId))\n .first();\n },\n});\n\n/**\n * Find nodes by content hash (for deduplication)\n */\nexport const getByContentHash = query({\n args: { contentHash: v.string() },\n returns: permissiveReturn,\n handler: async (ctx: any, args: any) => {\n return await ctx.db\n .query(\"epistemicNodes\")\n .withIndex(\"by_contentHash\", (q: any) => q.eq(\"contentHash\", args.contentHash))\n .collect();\n },\n});\n\n/**\n * Get all nodes of a specific type for a project\n */\nexport const getByProjectAndType = query({\n args: {\n ...optionalNodeScopeArgs,\n nodeType: nodeTypeValidator,\n status: v.optional(statusValidator),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (ctx: any, args: any) => {\n if (!args.projectId && !args.topicId) {\n return [];\n }\n\n let scope: Awaited<ReturnType<typeof resolveTopicProjectScope>>;\n try {\n scope = await resolveTopicProjectScope(ctx, {\n projectId: args.projectId,\n topicId: args.topicId,\n });\n } catch (error) {\n debugGraphPrimitiveFallback(\n \"[epistemicNodes] Failed to resolve getByProjectAndType scope\",\n {\n error,\n projectId: args.projectId,\n topicId: args.topicId,\n },\n );\n return [];\n }\n\n const pageSize = clampNodeLimit(args.limit);\n const scanLimit = Math.min(pageSize * 3, MAX_NODE_PAGE_SIZE);\n const nodes = await collectScopedNodes(ctx as any, scope, {\n nodeType: args.nodeType,\n scanLimit,\n });\n\n // Filter by status if provided\n if (args.status) {\n return nodes\n .filter(\n (n: any) =>\n n.status === args.status &&\n nodeMatchesWorkspaceReasoningScope(n, scope),\n )\n .slice(0, pageSize);\n }\n\n // Default to active nodes only\n return nodes\n .filter(\n (n: any) =>\n n.status === \"active\" &&\n nodeMatchesWorkspaceReasoningScope(n, scope),\n )\n .slice(0, pageSize);\n },\n});\n\n/**\n * Lightweight variant of getByProjectAndType for operational scripts.\n * Returns compact node metadata and supports limits to avoid oversized payloads.\n */\nexport const getByProjectAndTypeLite = query({\n args: {\n ...optionalNodeScopeArgs,\n nodeType: nodeTypeValidator,\n status: v.optional(statusValidator),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (ctx: any, args: any) => {\n if (!args.projectId && !args.topicId) {\n return [];\n }\n\n let scope: Awaited<ReturnType<typeof resolveTopicProjectScope>>;\n try {\n scope = await resolveTopicProjectScope(ctx, {\n projectId: args.projectId,\n topicId: args.topicId,\n });\n } catch (error) {\n debugGraphPrimitiveFallback(\n \"[epistemicNodes] Failed to resolve getByNodeType scope\",\n {\n error,\n projectId: args.projectId,\n topicId: args.topicId,\n },\n );\n return [];\n }\n\n const pageSize = clampNodeLimit(args.limit);\n const scanLimit = Math.min(pageSize * 3, MAX_NODE_PAGE_SIZE);\n const query = ctx.db\n .query(\"epistemicNodes\")\n .withIndex(\"by_topic_type\", (q: any) =>\n q.eq(\"topicId\", scope.topicId).eq(\"nodeType\", args.nodeType),\n );\n\n const nodes = await query.order(\"desc\").take(scanLimit);\n const statusFiltered = args.status\n ? nodes.filter((n: any) => n.status === args.status)\n : nodes.filter((n: any) => n.status === \"active\");\n const capped = statusFiltered.slice(0, pageSize);\n\n return capped.map((n: any) => ({\n _id: n._id,\n globalId: n.globalId,\n nodeType: n.nodeType,\n createdBy: n.createdBy,\n topicId: n.topicId,\n projectId: n.projectId,\n status: n.status,\n epistemicLayer: n.epistemicLayer,\n }));\n },\n});\n\n/**\n * Get all nodes for a project\n */\nexport const getByProject = query({\n args: {\n ...optionalNodeScopeArgs,\n userId: v.optional(v.string()),\n includeArchived: v.optional(v.boolean()),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (ctx: any, args: any) => {\n if (!args.projectId && !args.topicId) {\n return [];\n }\n\n const pageSize = clampNodeLimit(args.limit);\n const scanLimit = Math.min(pageSize * 3, MAX_NODE_PAGE_SIZE);\n let scope: Awaited<ReturnType<typeof resolveTopicProjectScope>>;\n try {\n scope = await resolveTopicProjectScope(ctx, {\n projectId: args.projectId,\n topicId: args.topicId,\n });\n } catch (error) {\n debugGraphPrimitiveFallback(\"[epistemicNodes] Failed to resolve list scope\", {\n error,\n projectId: args.projectId,\n topicId: args.topicId,\n });\n return [];\n }\n\n // userId is optional — if not provided, skip access check (internal callers)\n if (args.userId) {\n const hasAccess = await checkScopeAccess(\n ctx,\n String(scope.topicId ?? scope.projectId),\n args.userId,\n );\n if (!hasAccess) {\n return [];\n }\n }\n\n const nodes = await collectScopedNodes(ctx, scope, { scanLimit });\n\n if (args.includeArchived) {\n return nodes\n .filter(\n (n: any) =>\n n.status !== \"deleted\" &&\n nodeMatchesWorkspaceReasoningScope(n, scope),\n )\n .slice(0, pageSize);\n }\n\n return nodes\n .filter(\n (n: any) =>\n n.status === \"active\" &&\n nodeMatchesWorkspaceReasoningScope(n, scope),\n )\n .slice(0, pageSize);\n },\n});\n\n/**\n * List all active nodes (unscoped — for internal dev tools).\n * No project filtering, no access control.\n */\nexport const listAll = query({\n args: {\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (ctx: any, args: any) => {\n const pageSize = clampNodeLimit(args.limit ?? 2000);\n const scanLimit = Math.min(pageSize * 2, MAX_NODE_PAGE_SIZE * 2);\n const nodes = await ctx.db\n .query(\"epistemicNodes\")\n .order(\"desc\")\n .take(scanLimit);\n return nodes.filter((n: any) => n.status === \"active\").slice(0, pageSize);\n },\n});\n\n/**\n * Search nodes by text content\n */\nexport const search = query({\n args: {\n searchQuery: v.string(),\n ...optionalNodeScopeArgs,\n nodeType: v.optional(nodeTypeValidator),\n limit: v.optional(v.number()),\n },\n returns: permissiveReturn,\n handler: async (ctx: any, args: any) => {\n const pageSize = clampNodeLimit(args.limit, 100);\n let scope: Awaited<ReturnType<typeof resolveTopicProjectScope>> | undefined;\n\n if (args.projectId || args.topicId) {\n try {\n scope = await resolveTopicProjectScope(ctx, {\n projectId: args.projectId,\n topicId: args.topicId,\n });\n } catch (error) {\n debugGraphPrimitiveFallback(\n \"[epistemicNodes] Failed to resolve search scope\",\n {\n error,\n projectId: args.projectId,\n topicId: args.topicId,\n },\n );\n return [];\n }\n }\n\n const searchResults = ctx.db\n .query(\"epistemicNodes\")\n .withSearchIndex(\"search_canonicalText\", (q: any) => {\n let search = q.search(\"canonicalText\", args.searchQuery);\n if (scope?.topicId) {\n search = search.eq(\"topicId\", scope.topicId);\n } else if (scope?.projectId) {\n search = search.eq(\"projectId\", scope.projectId);\n }\n if (args.nodeType) {\n search = search.eq(\"nodeType\", args.nodeType);\n }\n return search.eq(\"status\", \"active\");\n });\n\n return await searchResults.take(pageSize);\n },\n});\n"]}
@@ -0,0 +1,23 @@
1
+ import * as convex_values from 'convex/values';
2
+
3
+ /**
4
+ * Epistemic Layer Validator
5
+ * L4: Decisions, outcomes - audit targets
6
+ * L3: Beliefs, questions, themes - traversal anchors
7
+ * L2: Claims, evidence, synthesis - compression boundary
8
+ * L1: Atomic facts, excerpts, sources - terminal leaves
9
+ */
10
+ declare const epistemicLayerValidator: convex_values.VUnion<"L4" | "L3" | "L2" | "L1" | "ontological" | "organizational", [convex_values.VLiteral<"L4", "required">, convex_values.VLiteral<"L3", "required">, convex_values.VLiteral<"L2", "required">, convex_values.VLiteral<"L1", "required">, convex_values.VLiteral<"ontological", "required">, convex_values.VLiteral<"organizational", "required">], "required", never>;
11
+ declare const l4NodeTypeValidator: convex_values.VUnion<"decision", [convex_values.VLiteral<"decision", "required">], "required", never>;
12
+ declare const l3NodeTypeValidator: convex_values.VUnion<"belief" | "question" | "theme" | "deal", [convex_values.VLiteral<"belief", "required">, convex_values.VLiteral<"question", "required">, convex_values.VLiteral<"theme", "required">, convex_values.VLiteral<"deal", "required">], "required", never>;
13
+ declare const l2NodeTypeValidator: convex_values.VUnion<"evidence" | "synthesis" | "claim", [convex_values.VLiteral<"claim", "required">, convex_values.VLiteral<"evidence", "required">, convex_values.VLiteral<"synthesis", "required">], "required", never>;
14
+ declare const l1NodeTypeValidator: convex_values.VUnion<"source" | "atomic_fact" | "excerpt", [convex_values.VLiteral<"atomic_fact", "required">, convex_values.VLiteral<"excerpt", "required">, convex_values.VLiteral<"source", "required">], "required", never>;
15
+ declare const epistemicNodeTypeValidator: convex_values.VUnion<"belief" | "question" | "evidence" | "answer" | "synthesis" | "theme" | "source" | "decision" | "deal" | "claim" | "atomic_fact" | "excerpt", [convex_values.VLiteral<"decision", "required">, convex_values.VLiteral<"belief", "required">, convex_values.VLiteral<"question", "required">, convex_values.VLiteral<"theme", "required">, convex_values.VLiteral<"deal", "required">, convex_values.VLiteral<"claim", "required">, convex_values.VLiteral<"evidence", "required">, convex_values.VLiteral<"synthesis", "required">, convex_values.VLiteral<"answer", "required">, convex_values.VLiteral<"atomic_fact", "required">, convex_values.VLiteral<"excerpt", "required">, convex_values.VLiteral<"source", "required">], "required", never>;
16
+ declare const ontologicalNodeTypeValidator: convex_values.VUnion<"function" | "company" | "person" | "investor" | "value_chain", [convex_values.VLiteral<"company", "required">, convex_values.VLiteral<"person", "required">, convex_values.VLiteral<"investor", "required">, convex_values.VLiteral<"function", "required">, convex_values.VLiteral<"value_chain", "required">], "required", never>;
17
+ declare const organizationalNodeTypeValidator: convex_values.VUnion<"topic", [convex_values.VLiteral<"topic", "required">], "required", never>;
18
+ declare const nodeTypeValidator: convex_values.VUnion<"function" | "belief" | "question" | "evidence" | "answer" | "synthesis" | "theme" | "source" | "decision" | "deal" | "topic" | "claim" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain", [convex_values.VLiteral<"decision", "required">, convex_values.VLiteral<"belief", "required">, convex_values.VLiteral<"question", "required">, convex_values.VLiteral<"theme", "required">, convex_values.VLiteral<"deal", "required">, convex_values.VLiteral<"claim", "required">, convex_values.VLiteral<"evidence", "required">, convex_values.VLiteral<"synthesis", "required">, convex_values.VLiteral<"answer", "required">, convex_values.VLiteral<"atomic_fact", "required">, convex_values.VLiteral<"excerpt", "required">, convex_values.VLiteral<"source", "required">, convex_values.VLiteral<"company", "required">, convex_values.VLiteral<"person", "required">, convex_values.VLiteral<"investor", "required">, convex_values.VLiteral<"function", "required">, convex_values.VLiteral<"value_chain", "required">, convex_values.VLiteral<"topic", "required">], "required", never>;
19
+ declare const sourceTypeValidator: convex_values.VUnion<"system" | "human" | "ai_generated" | "ai_extracted" | "imported", [convex_values.VLiteral<"human", "required">, convex_values.VLiteral<"ai_extracted", "required">, convex_values.VLiteral<"ai_generated", "required">, convex_values.VLiteral<"imported", "required">, convex_values.VLiteral<"system", "required">], "required", never>;
20
+ declare const statusValidator: convex_values.VUnion<"active" | "archived" | "deleted" | "superseded", [convex_values.VLiteral<"active", "required">, convex_values.VLiteral<"superseded", "required">, convex_values.VLiteral<"archived", "required">, convex_values.VLiteral<"deleted", "required">], "required", never>;
21
+ declare const verificationStatusValidator: convex_values.VUnion<"unverified" | "human_verified" | "ai_verified" | "contradicted" | "outdated", [convex_values.VLiteral<"unverified", "required">, convex_values.VLiteral<"human_verified", "required">, convex_values.VLiteral<"ai_verified", "required">, convex_values.VLiteral<"contradicted", "required">, convex_values.VLiteral<"outdated", "required">], "required", never>;
22
+
23
+ export { epistemicLayerValidator, epistemicNodeTypeValidator, l1NodeTypeValidator, l2NodeTypeValidator, l3NodeTypeValidator, l4NodeTypeValidator, nodeTypeValidator, ontologicalNodeTypeValidator, organizationalNodeTypeValidator, sourceTypeValidator, statusValidator, verificationStatusValidator };
@@ -0,0 +1,105 @@
1
+ import { v } from 'convex/values';
2
+
3
+ // src/epistemicNodes.validators.ts
4
+ var epistemicLayerValidator = v.union(
5
+ v.literal("L4"),
6
+ v.literal("L3"),
7
+ v.literal("L2"),
8
+ v.literal("L1"),
9
+ v.literal("ontological"),
10
+ v.literal("organizational")
11
+ );
12
+ var l4NodeTypeValidator = v.union(v.literal("decision"));
13
+ var l3NodeTypeValidator = v.union(
14
+ v.literal("belief"),
15
+ v.literal("question"),
16
+ v.literal("theme"),
17
+ v.literal("deal")
18
+ );
19
+ var l2NodeTypeValidator = v.union(
20
+ v.literal("claim"),
21
+ v.literal("evidence"),
22
+ v.literal("synthesis")
23
+ );
24
+ var l1NodeTypeValidator = v.union(
25
+ v.literal("atomic_fact"),
26
+ v.literal("excerpt"),
27
+ v.literal("source")
28
+ );
29
+ var epistemicNodeTypeValidator = v.union(
30
+ // L4: Audit targets
31
+ v.literal("decision"),
32
+ // L3: Traversal anchors
33
+ v.literal("belief"),
34
+ v.literal("question"),
35
+ v.literal("theme"),
36
+ v.literal("deal"),
37
+ // L2: Compression boundary
38
+ v.literal("claim"),
39
+ v.literal("evidence"),
40
+ v.literal("synthesis"),
41
+ v.literal("answer"),
42
+ // L1: Terminal leaves
43
+ v.literal("atomic_fact"),
44
+ v.literal("excerpt"),
45
+ v.literal("source")
46
+ );
47
+ var ontologicalNodeTypeValidator = v.union(
48
+ v.literal("company"),
49
+ v.literal("person"),
50
+ v.literal("investor"),
51
+ v.literal("function"),
52
+ v.literal("value_chain")
53
+ );
54
+ var organizationalNodeTypeValidator = v.union(v.literal("topic"));
55
+ var nodeTypeValidator = v.union(
56
+ // L4: Audit targets
57
+ v.literal("decision"),
58
+ // L3: Traversal anchors
59
+ v.literal("belief"),
60
+ v.literal("question"),
61
+ v.literal("theme"),
62
+ v.literal("deal"),
63
+ // L2: Compression boundary
64
+ v.literal("claim"),
65
+ v.literal("evidence"),
66
+ v.literal("synthesis"),
67
+ v.literal("answer"),
68
+ // L1: Terminal leaves
69
+ v.literal("atomic_fact"),
70
+ v.literal("excerpt"),
71
+ v.literal("source"),
72
+ // Ontological
73
+ v.literal("company"),
74
+ v.literal("person"),
75
+ v.literal("investor"),
76
+ v.literal("function"),
77
+ v.literal("value_chain"),
78
+ // Organizational
79
+ v.literal("topic")
80
+ );
81
+ var sourceTypeValidator = v.union(
82
+ v.literal("human"),
83
+ v.literal("ai_extracted"),
84
+ v.literal("ai_generated"),
85
+ v.literal("imported"),
86
+ v.literal("system")
87
+ // System-generated (migrations, classifiers)
88
+ );
89
+ var statusValidator = v.union(
90
+ v.literal("active"),
91
+ v.literal("superseded"),
92
+ v.literal("archived"),
93
+ v.literal("deleted")
94
+ );
95
+ var verificationStatusValidator = v.union(
96
+ v.literal("unverified"),
97
+ v.literal("human_verified"),
98
+ v.literal("ai_verified"),
99
+ v.literal("contradicted"),
100
+ v.literal("outdated")
101
+ );
102
+
103
+ export { epistemicLayerValidator, epistemicNodeTypeValidator, l1NodeTypeValidator, l2NodeTypeValidator, l3NodeTypeValidator, l4NodeTypeValidator, nodeTypeValidator, ontologicalNodeTypeValidator, organizationalNodeTypeValidator, sourceTypeValidator, statusValidator, verificationStatusValidator };
104
+ //# sourceMappingURL=epistemicNodes.validators.js.map
105
+ //# sourceMappingURL=epistemicNodes.validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/epistemicNodes.validators.ts"],"names":[],"mappings":"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","file":"epistemicNodes.validators.js","sourcesContent":["import { v } from \"convex/values\";\n\n// =============================================================================\n// TYPES (Phase 2A: Layer Architecture Compliant)\n// =============================================================================\n\n/**\n * Epistemic Layer Validator\n * L4: Decisions, outcomes - audit targets\n * L3: Beliefs, questions, themes - traversal anchors\n * L2: Claims, evidence, synthesis - compression boundary\n * L1: Atomic facts, excerpts, sources - terminal leaves\n */\nexport const epistemicLayerValidator = v.union(\n v.literal(\"L4\"),\n v.literal(\"L3\"),\n v.literal(\"L2\"),\n v.literal(\"L1\"),\n v.literal(\"ontological\"),\n v.literal(\"organizational\"),\n);\n\n// L4: Audit targets (decisions, outcomes)\nexport const l4NodeTypeValidator = v.union(v.literal(\"decision\"));\n\n// L3: Traversal anchors (epistemic structure)\nexport const l3NodeTypeValidator = v.union(\n v.literal(\"belief\"),\n v.literal(\"question\"),\n v.literal(\"theme\"),\n v.literal(\"deal\"),\n);\n\n// L2: Compression boundary (minimum reasoning unit)\nexport const l2NodeTypeValidator = v.union(\n v.literal(\"claim\"),\n v.literal(\"evidence\"),\n v.literal(\"synthesis\"),\n);\n\n// L1: Terminal leaves (non-traversable, grounding)\nexport const l1NodeTypeValidator = v.union(\n v.literal(\"atomic_fact\"),\n v.literal(\"excerpt\"),\n v.literal(\"source\"),\n);\n\n// Epistemic node types (knowledge objects) - all layers\nexport const epistemicNodeTypeValidator = v.union(\n // L4: Audit targets\n v.literal(\"decision\"),\n // L3: Traversal anchors\n v.literal(\"belief\"),\n v.literal(\"question\"),\n v.literal(\"theme\"),\n v.literal(\"deal\"),\n // L2: Compression boundary\n v.literal(\"claim\"),\n v.literal(\"evidence\"),\n v.literal(\"synthesis\"),\n v.literal(\"answer\"),\n // L1: Terminal leaves\n v.literal(\"atomic_fact\"),\n v.literal(\"excerpt\"),\n v.literal(\"source\"),\n);\n\n// Ontological node types (real-world entities)\nexport const ontologicalNodeTypeValidator = v.union(\n v.literal(\"company\"),\n v.literal(\"person\"),\n v.literal(\"investor\"),\n v.literal(\"function\"),\n v.literal(\"value_chain\"),\n);\n\n// Organizational node types (structural containers)\nexport const organizationalNodeTypeValidator = v.union(v.literal(\"topic\"));\n\n// All node types\nexport const nodeTypeValidator = v.union(\n // L4: Audit targets\n v.literal(\"decision\"),\n // L3: Traversal anchors\n v.literal(\"belief\"),\n v.literal(\"question\"),\n v.literal(\"theme\"),\n v.literal(\"deal\"),\n // L2: Compression boundary\n v.literal(\"claim\"),\n v.literal(\"evidence\"),\n v.literal(\"synthesis\"),\n v.literal(\"answer\"),\n // L1: Terminal leaves\n v.literal(\"atomic_fact\"),\n v.literal(\"excerpt\"),\n v.literal(\"source\"),\n // Ontological\n v.literal(\"company\"),\n v.literal(\"person\"),\n v.literal(\"investor\"),\n v.literal(\"function\"),\n v.literal(\"value_chain\"),\n // Organizational\n v.literal(\"topic\"),\n);\n\nexport const sourceTypeValidator = v.union(\n v.literal(\"human\"),\n v.literal(\"ai_extracted\"),\n v.literal(\"ai_generated\"),\n v.literal(\"imported\"),\n v.literal(\"system\"), // System-generated (migrations, classifiers)\n);\n\nexport const statusValidator = v.union(\n v.literal(\"active\"),\n v.literal(\"superseded\"),\n v.literal(\"archived\"),\n v.literal(\"deleted\"),\n);\n\nexport const verificationStatusValidator = v.union(\n v.literal(\"unverified\"),\n v.literal(\"human_verified\"),\n v.literal(\"ai_verified\"),\n v.literal(\"contradicted\"),\n v.literal(\"outdated\"),\n);\n"]}
@@ -0,0 +1,68 @@
1
+ import { addQuestion, create, createBatch, internalCreate } from './epistemicQuestions.create.js';
2
+ import { updatePriority, updateStatus } from './epistemicQuestions.lifecycle.js';
3
+ import { getByCategory, getById, getByProject, getByTopic, getForBelief, internalGetByProject, internalGetByTopic } from './epistemicQuestions.queries.js';
4
+ import { consolidate, deleteQuestion, getByPillar, getQuestionClusterPositions, list, markAnsweredWithArtifact } from './epistemicQuestions.tail.js';
5
+ import { backfillScoredQuestionEvidence, createEvidenceFromScoredQuestion } from './epistemicQuestions.evidence.js';
6
+ import { getForSprintCluster, getInConviction } from './epistemicQuestions.sprint.js';
7
+ import { advanceToConviction, finalizeConviction, getByBeliefWithAccess, linkToBelief, linkToInsight, unlinkInsight, updateConviction, updateQuestion } from './epistemicQuestions.conviction.js';
8
+ import { MAX_QUESTION_PAGE_SIZE, buildLinkedWorktreeMetadata, buildTestsEdgeGlobalId, clampQuestionLimit, dedupeQuestionNodes, flattenInternalQuestionNode, flattenQuestionNode, generateContentHash, getQuestionEdgesForScope, getQuestionNodesForScope, isActiveQuestionNode, logQuestionFallback, markProjectGraphDirty, matchesRequestedQuestionStatus, normalizeCategory, normalizeQuestionTopicId, questionMatchesScope, questionMatchesWorkflowLink, resolveLinkedWorktreeId, resolveQuestionScopeId, resolveQuestionScopeOrNull } from './epistemicQuestions.helpers.js';
9
+
10
+ /** Facade for split epistemic question primitives and public question operations. */
11
+
12
+ declare const epistemicQuestions_MAX_QUESTION_PAGE_SIZE: typeof MAX_QUESTION_PAGE_SIZE;
13
+ declare const epistemicQuestions_addQuestion: typeof addQuestion;
14
+ declare const epistemicQuestions_advanceToConviction: typeof advanceToConviction;
15
+ declare const epistemicQuestions_backfillScoredQuestionEvidence: typeof backfillScoredQuestionEvidence;
16
+ declare const epistemicQuestions_buildLinkedWorktreeMetadata: typeof buildLinkedWorktreeMetadata;
17
+ declare const epistemicQuestions_buildTestsEdgeGlobalId: typeof buildTestsEdgeGlobalId;
18
+ declare const epistemicQuestions_clampQuestionLimit: typeof clampQuestionLimit;
19
+ declare const epistemicQuestions_consolidate: typeof consolidate;
20
+ declare const epistemicQuestions_create: typeof create;
21
+ declare const epistemicQuestions_createBatch: typeof createBatch;
22
+ declare const epistemicQuestions_createEvidenceFromScoredQuestion: typeof createEvidenceFromScoredQuestion;
23
+ declare const epistemicQuestions_dedupeQuestionNodes: typeof dedupeQuestionNodes;
24
+ declare const epistemicQuestions_deleteQuestion: typeof deleteQuestion;
25
+ declare const epistemicQuestions_finalizeConviction: typeof finalizeConviction;
26
+ declare const epistemicQuestions_flattenInternalQuestionNode: typeof flattenInternalQuestionNode;
27
+ declare const epistemicQuestions_flattenQuestionNode: typeof flattenQuestionNode;
28
+ declare const epistemicQuestions_generateContentHash: typeof generateContentHash;
29
+ declare const epistemicQuestions_getByBeliefWithAccess: typeof getByBeliefWithAccess;
30
+ declare const epistemicQuestions_getByCategory: typeof getByCategory;
31
+ declare const epistemicQuestions_getById: typeof getById;
32
+ declare const epistemicQuestions_getByPillar: typeof getByPillar;
33
+ declare const epistemicQuestions_getByProject: typeof getByProject;
34
+ declare const epistemicQuestions_getByTopic: typeof getByTopic;
35
+ declare const epistemicQuestions_getForBelief: typeof getForBelief;
36
+ declare const epistemicQuestions_getForSprintCluster: typeof getForSprintCluster;
37
+ declare const epistemicQuestions_getInConviction: typeof getInConviction;
38
+ declare const epistemicQuestions_getQuestionClusterPositions: typeof getQuestionClusterPositions;
39
+ declare const epistemicQuestions_getQuestionEdgesForScope: typeof getQuestionEdgesForScope;
40
+ declare const epistemicQuestions_getQuestionNodesForScope: typeof getQuestionNodesForScope;
41
+ declare const epistemicQuestions_internalCreate: typeof internalCreate;
42
+ declare const epistemicQuestions_internalGetByProject: typeof internalGetByProject;
43
+ declare const epistemicQuestions_internalGetByTopic: typeof internalGetByTopic;
44
+ declare const epistemicQuestions_isActiveQuestionNode: typeof isActiveQuestionNode;
45
+ declare const epistemicQuestions_linkToBelief: typeof linkToBelief;
46
+ declare const epistemicQuestions_linkToInsight: typeof linkToInsight;
47
+ declare const epistemicQuestions_list: typeof list;
48
+ declare const epistemicQuestions_logQuestionFallback: typeof logQuestionFallback;
49
+ declare const epistemicQuestions_markAnsweredWithArtifact: typeof markAnsweredWithArtifact;
50
+ declare const epistemicQuestions_markProjectGraphDirty: typeof markProjectGraphDirty;
51
+ declare const epistemicQuestions_matchesRequestedQuestionStatus: typeof matchesRequestedQuestionStatus;
52
+ declare const epistemicQuestions_normalizeCategory: typeof normalizeCategory;
53
+ declare const epistemicQuestions_normalizeQuestionTopicId: typeof normalizeQuestionTopicId;
54
+ declare const epistemicQuestions_questionMatchesScope: typeof questionMatchesScope;
55
+ declare const epistemicQuestions_questionMatchesWorkflowLink: typeof questionMatchesWorkflowLink;
56
+ declare const epistemicQuestions_resolveLinkedWorktreeId: typeof resolveLinkedWorktreeId;
57
+ declare const epistemicQuestions_resolveQuestionScopeId: typeof resolveQuestionScopeId;
58
+ declare const epistemicQuestions_resolveQuestionScopeOrNull: typeof resolveQuestionScopeOrNull;
59
+ declare const epistemicQuestions_unlinkInsight: typeof unlinkInsight;
60
+ declare const epistemicQuestions_updateConviction: typeof updateConviction;
61
+ declare const epistemicQuestions_updatePriority: typeof updatePriority;
62
+ declare const epistemicQuestions_updateQuestion: typeof updateQuestion;
63
+ declare const epistemicQuestions_updateStatus: typeof updateStatus;
64
+ declare namespace epistemicQuestions {
65
+ export { epistemicQuestions_MAX_QUESTION_PAGE_SIZE as MAX_QUESTION_PAGE_SIZE, epistemicQuestions_addQuestion as addQuestion, epistemicQuestions_advanceToConviction as advanceToConviction, epistemicQuestions_backfillScoredQuestionEvidence as backfillScoredQuestionEvidence, epistemicQuestions_buildLinkedWorktreeMetadata as buildLinkedWorktreeMetadata, epistemicQuestions_buildTestsEdgeGlobalId as buildTestsEdgeGlobalId, epistemicQuestions_clampQuestionLimit as clampQuestionLimit, epistemicQuestions_consolidate as consolidate, epistemicQuestions_create as create, epistemicQuestions_createBatch as createBatch, epistemicQuestions_createEvidenceFromScoredQuestion as createEvidenceFromScoredQuestion, epistemicQuestions_dedupeQuestionNodes as dedupeQuestionNodes, epistemicQuestions_deleteQuestion as deleteQuestion, epistemicQuestions_finalizeConviction as finalizeConviction, epistemicQuestions_flattenInternalQuestionNode as flattenInternalQuestionNode, epistemicQuestions_flattenQuestionNode as flattenQuestionNode, epistemicQuestions_generateContentHash as generateContentHash, epistemicQuestions_getByBeliefWithAccess as getByBeliefWithAccess, epistemicQuestions_getByCategory as getByCategory, epistemicQuestions_getById as getById, epistemicQuestions_getByPillar as getByPillar, epistemicQuestions_getByProject as getByProject, epistemicQuestions_getByTopic as getByTopic, epistemicQuestions_getForBelief as getForBelief, epistemicQuestions_getForSprintCluster as getForSprintCluster, epistemicQuestions_getInConviction as getInConviction, epistemicQuestions_getQuestionClusterPositions as getQuestionClusterPositions, epistemicQuestions_getQuestionEdgesForScope as getQuestionEdgesForScope, epistemicQuestions_getQuestionNodesForScope as getQuestionNodesForScope, epistemicQuestions_internalCreate as internalCreate, epistemicQuestions_internalGetByProject as internalGetByProject, epistemicQuestions_internalGetByTopic as internalGetByTopic, epistemicQuestions_isActiveQuestionNode as isActiveQuestionNode, epistemicQuestions_linkToBelief as linkToBelief, epistemicQuestions_linkToInsight as linkToInsight, epistemicQuestions_list as list, epistemicQuestions_logQuestionFallback as logQuestionFallback, epistemicQuestions_markAnsweredWithArtifact as markAnsweredWithArtifact, epistemicQuestions_markProjectGraphDirty as markProjectGraphDirty, epistemicQuestions_matchesRequestedQuestionStatus as matchesRequestedQuestionStatus, epistemicQuestions_normalizeCategory as normalizeCategory, epistemicQuestions_normalizeQuestionTopicId as normalizeQuestionTopicId, epistemicQuestions_questionMatchesScope as questionMatchesScope, epistemicQuestions_questionMatchesWorkflowLink as questionMatchesWorkflowLink, epistemicQuestions_resolveLinkedWorktreeId as resolveLinkedWorktreeId, epistemicQuestions_resolveQuestionScopeId as resolveQuestionScopeId, epistemicQuestions_resolveQuestionScopeOrNull as resolveQuestionScopeOrNull, epistemicQuestions_unlinkInsight as unlinkInsight, epistemicQuestions_updateConviction as updateConviction, epistemicQuestions_updatePriority as updatePriority, epistemicQuestions_updateQuestion as updateQuestion, epistemicQuestions_updateStatus as updateStatus };
66
+ }
67
+
68
+ export { epistemicQuestions as e };
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Epistemic Questions API
3
+ *
4
+ * Clean API for managing questions in the epistemic spine (epistemicNodes).
5
+ * This is the NEW API that replaces questions.ts for CREATE operations.
6
+ *
7
+ * Key differences from questions.ts:
8
+ * - Writes ONLY to epistemicNodes (no dual-write)
9
+ * - Uses epistemicNodes IDs directly (no legacyQuestionId lookups)
10
+ * - Syncs to Neo4j after mutations
11
+ * - Follows Lucern invariants strictly
12
+ *
13
+ * @see /docs/epistemic-invariants/00-epistemic-invariants.md
14
+ */
15
+ declare const advanceToConviction: any;
16
+ /**
17
+ * 3. updateConviction - Update conviction score for a question
18
+ * Ported from questions.ts line 775
19
+ */
20
+ declare const updateConviction: any;
21
+ /**
22
+ * 4. finalizeConviction - Finalize conviction scoring for a question
23
+ * Ported from questions.ts line 893
24
+ */
25
+ declare const finalizeConviction: any;
26
+ /**
27
+ * 5. getByBeliefWithAccess - Get questions linked to a belief with access check
28
+ * Ported from questions.ts line 1806
29
+ */
30
+ declare const getByBeliefWithAccess: any;
31
+ /**
32
+ * 6. updateQuestion - Update question text and properties
33
+ * Ported from questions.ts line 655
34
+ */
35
+ declare const updateQuestion: any;
36
+ /**
37
+ * 7. linkToBelief - Link a question to a belief
38
+ * Ported from questions.ts line 1298
39
+ */
40
+ declare const linkToBelief: any;
41
+ /**
42
+ * 8. linkToInsight - Link a question to an insight/evidence
43
+ * Ported from questions.ts line 1437
44
+ */
45
+ declare const linkToInsight: any;
46
+ /**
47
+ * 9. unlinkInsight - Unlink an insight from a question
48
+ * Ported from questions.ts line 1647
49
+ */
50
+ declare const unlinkInsight: any;
51
+
52
+ export { advanceToConviction, finalizeConviction, getByBeliefWithAccess, linkToBelief, linkToInsight, unlinkInsight, updateConviction, updateQuestion };