@lucern/graph-primitives 0.1.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -0
- package/dist/beliefDecay-Q_26RTc-.d.ts +72 -0
- package/dist/beliefDecay.d.ts +2 -0
- package/dist/beliefDecay.js +1628 -0
- package/dist/beliefDecay.js.map +1 -0
- package/dist/beliefEvidenceLinks-42FlR48t.d.ts +77 -0
- package/dist/beliefEvidenceLinks.d.ts +1 -0
- package/dist/beliefEvidenceLinks.js +1978 -0
- package/dist/beliefEvidenceLinks.js.map +1 -0
- package/dist/beliefLifecycle-C-AehZgF.d.ts +43 -0
- package/dist/beliefLifecycle.d.ts +1 -0
- package/dist/beliefLifecycle.js +98 -0
- package/dist/beliefLifecycle.js.map +1 -0
- package/dist/confidencePropagationDispatch.d.ts +46 -0
- package/dist/confidencePropagationDispatch.js +744 -0
- package/dist/confidencePropagationDispatch.js.map +1 -0
- package/dist/contradictions-Hdwl7zid.d.ts +71 -0
- package/dist/contradictions.d.ts +1 -0
- package/dist/contradictions.js +1557 -0
- package/dist/contradictions.js.map +1 -0
- package/dist/convex.d.ts +23 -0
- package/dist/convex.js +17 -0
- package/dist/convex.js.map +1 -0
- package/dist/edgeValidation-CeI0wc0r.d.ts +35 -0
- package/dist/edgeValidation.d.ts +2 -0
- package/dist/edgeValidation.js +307 -0
- package/dist/edgeValidation.js.map +1 -0
- package/dist/edges/contains.d.ts +6 -0
- package/dist/edges/contains.js +14 -0
- package/dist/edges/contains.js.map +1 -0
- package/dist/edges/contradicts.d.ts +6 -0
- package/dist/edges/contradicts.js +183 -0
- package/dist/edges/contradicts.js.map +1 -0
- package/dist/edges/dependsOn.d.ts +6 -0
- package/dist/edges/dependsOn.js +240 -0
- package/dist/edges/dependsOn.js.map +1 -0
- package/dist/edges/derivedFrom.d.ts +6 -0
- package/dist/edges/derivedFrom.js +14 -0
- package/dist/edges/derivedFrom.js.map +1 -0
- package/dist/edges/elaborates.d.ts +6 -0
- package/dist/edges/elaborates.js +100 -0
- package/dist/edges/elaborates.js.map +1 -0
- package/dist/edges/index.d.ts +3 -0
- package/dist/edges/index.js +556 -0
- package/dist/edges/index.js.map +1 -0
- package/dist/edges/informs.d.ts +6 -0
- package/dist/edges/informs.js +112 -0
- package/dist/edges/informs.js.map +1 -0
- package/dist/edges/propagationTypes.d.ts +39 -0
- package/dist/edges/propagationTypes.js +17 -0
- package/dist/edges/propagationTypes.js.map +1 -0
- package/dist/edges/refutes.d.ts +6 -0
- package/dist/edges/refutes.js +108 -0
- package/dist/edges/refutes.js.map +1 -0
- package/dist/edges/supports.d.ts +6 -0
- package/dist/edges/supports.js +193 -0
- package/dist/edges/supports.js.map +1 -0
- package/dist/edges/tests.d.ts +6 -0
- package/dist/edges/tests.js +14 -0
- package/dist/edges/tests.js.map +1 -0
- package/dist/edges/utils.d.ts +12 -0
- package/dist/edges/utils.js +188 -0
- package/dist/edges/utils.js.map +1 -0
- package/dist/embeddingTrigger.d.ts +24 -0
- package/dist/embeddingTrigger.js +24 -0
- package/dist/embeddingTrigger.js.map +1 -0
- package/dist/entityBridge-DMaKooYn.d.ts +59 -0
- package/dist/entityBridge.d.ts +1 -0
- package/dist/entityBridge.js +663 -0
- package/dist/entityBridge.js.map +1 -0
- package/dist/entityLifecycle-BkhRJ-XI.d.ts +69 -0
- package/dist/entityLifecycle.d.ts +1 -0
- package/dist/entityLifecycle.js +2083 -0
- package/dist/entityLifecycle.js.map +1 -0
- package/dist/entityValidation-KLZ_Xl2D.d.ts +50 -0
- package/dist/entityValidation.d.ts +3 -0
- package/dist/entityValidation.js +71 -0
- package/dist/entityValidation.js.map +1 -0
- package/dist/epistemicAnswers-DSP1slZ9.d.ts +67 -0
- package/dist/epistemicAnswers.d.ts +1 -0
- package/dist/epistemicAnswers.js +1650 -0
- package/dist/epistemicAnswers.js.map +1 -0
- package/dist/epistemicBeliefs-DtFVTp-k.d.ts +377 -0
- package/dist/epistemicBeliefs.d.ts +5 -0
- package/dist/epistemicBeliefs.js +6386 -0
- package/dist/epistemicBeliefs.js.map +1 -0
- package/dist/epistemicContractHelpers.d.ts +1 -0
- package/dist/epistemicContractHelpers.js +320 -0
- package/dist/epistemicContractHelpers.js.map +1 -0
- package/dist/epistemicContracts.d.ts +77 -0
- package/dist/epistemicContracts.js +8436 -0
- package/dist/epistemicContracts.js.map +1 -0
- package/dist/epistemicEdges-DcA8ErUG.d.ts +191 -0
- package/dist/epistemicEdges.d.ts +2 -0
- package/dist/epistemicEdges.js +2749 -0
- package/dist/epistemicEdges.js.map +1 -0
- package/dist/epistemicEvidence-Bo638XDP.d.ts +128 -0
- package/dist/epistemicEvidence.d.ts +3 -0
- package/dist/epistemicEvidence.js +3282 -0
- package/dist/epistemicEvidence.js.map +1 -0
- package/dist/epistemicHelpers-Bd9xbaib.d.ts +329 -0
- package/dist/epistemicHelpers.d.ts +4 -0
- package/dist/epistemicHelpers.js +999 -0
- package/dist/epistemicHelpers.js.map +1 -0
- package/dist/epistemicLinking-CyeLOIzN.d.ts +35 -0
- package/dist/epistemicLinking.d.ts +1 -0
- package/dist/epistemicLinking.js +1391 -0
- package/dist/epistemicLinking.js.map +1 -0
- package/dist/epistemicNodes-BpD6Koud.d.ts +167 -0
- package/dist/epistemicNodes.d.ts +2 -0
- package/dist/epistemicNodes.js +2942 -0
- package/dist/epistemicNodes.js.map +1 -0
- package/dist/epistemicQuestions-CmEeY6zQ.d.ts +214 -0
- package/dist/epistemicQuestions.d.ts +3 -0
- package/dist/epistemicQuestions.js +4993 -0
- package/dist/epistemicQuestions.js.map +1 -0
- package/dist/epistemicSources-ZazxHOK1.d.ts +25 -0
- package/dist/epistemicSources.d.ts +1 -0
- package/dist/epistemicSources.js +2025 -0
- package/dist/epistemicSources.js.map +1 -0
- package/dist/evaluators/index.d.ts +9 -0
- package/dist/evaluators/index.js +8440 -0
- package/dist/evaluators/index.js.map +1 -0
- package/dist/evaluators/lintCheckerEvaluator.d.ts +11 -0
- package/dist/evaluators/lintCheckerEvaluator.js +155 -0
- package/dist/evaluators/lintCheckerEvaluator.js.map +1 -0
- package/dist/evaluators/sentryCheckerEvaluator.d.ts +11 -0
- package/dist/evaluators/sentryCheckerEvaluator.js +126 -0
- package/dist/evaluators/sentryCheckerEvaluator.js.map +1 -0
- package/dist/evaluators/shared.d.ts +27 -0
- package/dist/evaluators/shared.js +92 -0
- package/dist/evaluators/shared.js.map +1 -0
- package/dist/evaluators/testRunnerEvaluator.d.ts +17 -0
- package/dist/evaluators/testRunnerEvaluator.js +232 -0
- package/dist/evaluators/testRunnerEvaluator.js.map +1 -0
- package/dist/evaluators/tscCheckerEvaluator.d.ts +11 -0
- package/dist/evaluators/tscCheckerEvaluator.js +189 -0
- package/dist/evaluators/tscCheckerEvaluator.js.map +1 -0
- package/dist/globalId-DKh9d_uD.d.ts +20 -0
- package/dist/globalId.d.ts +1 -0
- package/dist/globalId.js +15 -0
- package/dist/globalId.js.map +1 -0
- package/dist/graphTypes-CpgIuCdo.d.ts +52 -0
- package/dist/graphTypes.d.ts +1 -0
- package/dist/graphTypes.js +120 -0
- package/dist/graphTypes.js.map +1 -0
- package/dist/helpers-BYHIk5vU.d.ts +27 -0
- package/dist/helpers.d.ts +4 -0
- package/dist/helpers.js +313 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index-Dct1T70K.d.ts +25 -0
- package/dist/index-Dq-7R-gi.d.ts +31 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.js +22294 -0
- package/dist/index.js.map +1 -0
- package/dist/invariantEnforcement.d.ts +52 -0
- package/dist/invariantEnforcement.js +231 -0
- package/dist/invariantEnforcement.js.map +1 -0
- package/dist/logicalRoleInference-CJxqWi3u.d.ts +16 -0
- package/dist/logicalRoleInference.d.ts +3 -0
- package/dist/logicalRoleInference.js +64 -0
- package/dist/logicalRoleInference.js.map +1 -0
- package/dist/matcherFeedbackUtils.d.ts +33 -0
- package/dist/matcherFeedbackUtils.js +95 -0
- package/dist/matcherFeedbackUtils.js.map +1 -0
- package/dist/ontology-matching-Buhu23ss.d.ts +48 -0
- package/dist/ontology-matching.d.ts +2 -0
- package/dist/ontology-matching.js +346 -0
- package/dist/ontology-matching.js.map +1 -0
- package/dist/ontologyApproval-Ba0Jjk1k.d.ts +26 -0
- package/dist/ontologyApproval.d.ts +1 -0
- package/dist/ontologyApproval.js +78 -0
- package/dist/ontologyApproval.js.map +1 -0
- package/dist/ontologyDefinitions.d.ts +72 -0
- package/dist/ontologyDefinitions.js +635 -0
- package/dist/ontologyDefinitions.js.map +1 -0
- package/dist/ontologyHelpers.d.ts +79 -0
- package/dist/ontologyHelpers.js +81 -0
- package/dist/ontologyHelpers.js.map +1 -0
- package/dist/ontologyRegistry-B67rPJ16.d.ts +31 -0
- package/dist/ontologyRegistry.d.ts +1 -0
- package/dist/ontologyRegistry.js +296 -0
- package/dist/ontologyRegistry.js.map +1 -0
- package/dist/projectionReconciliation-CxrXYGaB.d.ts +20 -0
- package/dist/projectionReconciliation.d.ts +1 -0
- package/dist/projectionReconciliation.js +261 -0
- package/dist/projectionReconciliation.js.map +1 -0
- package/dist/projectionStaleness-CAdpIsaW.d.ts +51 -0
- package/dist/projectionStaleness.d.ts +1 -0
- package/dist/projectionStaleness.js +57 -0
- package/dist/projectionStaleness.js.map +1 -0
- package/dist/questionEvidenceLinks-BdQD0TkM.d.ts +34 -0
- package/dist/questionEvidenceLinks.d.ts +1 -0
- package/dist/questionEvidenceLinks.js +1690 -0
- package/dist/questionEvidenceLinks.js.map +1 -0
- package/dist/resolverTypes-CC8Ea2E2.d.ts +20 -0
- package/dist/resolverTypes.d.ts +4 -0
- package/dist/resolverTypes.js +3 -0
- package/dist/resolverTypes.js.map +1 -0
- package/dist/resolvers-Br1a6eLV.d.ts +14 -0
- package/dist/resolvers.d.ts +5 -0
- package/dist/resolvers.js +308 -0
- package/dist/resolvers.js.map +1 -0
- package/dist/scopeResolverCompat.d.ts +26 -0
- package/dist/scopeResolverCompat.js +242 -0
- package/dist/scopeResolverCompat.js.map +1 -0
- package/dist/text-matching-CMn2WnVD.d.ts +40 -0
- package/dist/text-matching.d.ts +2 -0
- package/dist/text-matching.js +246 -0
- package/dist/text-matching.js.map +1 -0
- package/dist/topicOntologyResolver.d.ts +80 -0
- package/dist/topicOntologyResolver.js +67 -0
- package/dist/topicOntologyResolver.js.map +1 -0
- package/dist/topicProjectOverlay.d.ts +92 -0
- package/dist/topicProjectOverlay.js +249 -0
- package/dist/topicProjectOverlay.js.map +1 -0
- package/dist/topicScope-By_zp4tt.d.ts +34 -0
- package/dist/topicScope.d.ts +3 -0
- package/dist/topicScope.js +206 -0
- package/dist/topicScope.js.map +1 -0
- package/dist/workspaceIsolation.d.ts +44 -0
- package/dist/workspaceIsolation.js +950 -0
- package/dist/workspaceIsolation.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
// src/graphTypes.ts
|
|
2
|
+
var NODE_TYPE_TO_LABEL = {
|
|
3
|
+
// L4: Audit Targets
|
|
4
|
+
decision: "Decision",
|
|
5
|
+
// L3: Traversal Anchors
|
|
6
|
+
belief: "Belief",
|
|
7
|
+
question: "Question",
|
|
8
|
+
theme: "Theme",
|
|
9
|
+
deal: "Deal",
|
|
10
|
+
topic: "Topic",
|
|
11
|
+
// L2: Compression Boundary
|
|
12
|
+
claim: "Claim",
|
|
13
|
+
evidence: "Evidence",
|
|
14
|
+
synthesis: "Synthesis",
|
|
15
|
+
answer: "Answer",
|
|
16
|
+
// L1: Terminal Leaves
|
|
17
|
+
atomic_fact: "AtomicFact",
|
|
18
|
+
excerpt: "Excerpt",
|
|
19
|
+
source: "Source",
|
|
20
|
+
// Ontological (Neo4j is SOT)
|
|
21
|
+
company: "Company",
|
|
22
|
+
person: "Person",
|
|
23
|
+
investor: "Investor",
|
|
24
|
+
function: "Function",
|
|
25
|
+
value_chain: "ValueChain"
|
|
26
|
+
};
|
|
27
|
+
var EDGE_TYPE_TO_REL = {
|
|
28
|
+
// === THE SIX CANONICAL EPISTEMIC EDGE TYPES ===
|
|
29
|
+
supports: "SUPPORTS",
|
|
30
|
+
// L3↔L3: belief bears on belief (weight -1 to +1)
|
|
31
|
+
informs: "INFORMS",
|
|
32
|
+
// L2→L3: evidence bears on belief
|
|
33
|
+
depends_on: "DEPENDS_ON",
|
|
34
|
+
// L3→L3, Q→Q: structural gate
|
|
35
|
+
derived_from: "DERIVED_FROM",
|
|
36
|
+
// Any→Any: provenance chain (fork, synthesis, extraction, answer)
|
|
37
|
+
contains: "CONTAINS",
|
|
38
|
+
// Any→Any: hierarchy, scoping, membership
|
|
39
|
+
tests: "TESTS",
|
|
40
|
+
// Q→L3: question interrogates belief
|
|
41
|
+
// === L4 DECISION EDGES (derived_from with derivationType=decision) ===
|
|
42
|
+
// Kept as separate Neo4j relationship types for backward compat with L4 queries.
|
|
43
|
+
// New code should use derived_from + metadata.
|
|
44
|
+
based_on_belief: "BASED_ON_BELIEF",
|
|
45
|
+
based_on_question: "BASED_ON_QUESTION",
|
|
46
|
+
blocked_by_contradiction: "BLOCKED_BY_CONTRADICTION",
|
|
47
|
+
informed_by_theme: "INFORMED_BY_THEME",
|
|
48
|
+
// === ONTOLOGICAL EDGES (tenant-extensible, managed by ontology system) ===
|
|
49
|
+
works_at: "WORKS_AT",
|
|
50
|
+
invested_in: "INVESTED_IN",
|
|
51
|
+
competes_with: "COMPETES_WITH",
|
|
52
|
+
participates_in: "PARTICIPATES_IN",
|
|
53
|
+
founded_by: "FOUNDED_BY",
|
|
54
|
+
evaluates: "EVALUATES",
|
|
55
|
+
performs: "PERFORMS",
|
|
56
|
+
function_in: "FUNCTION_IN",
|
|
57
|
+
impacts: "IMPACTS",
|
|
58
|
+
raised_from: "RAISED_FROM",
|
|
59
|
+
mentioned_in: "MENTIONED_IN",
|
|
60
|
+
perspective_on: "PERSPECTIVE_ON",
|
|
61
|
+
about_entity: "ABOUT_ENTITY",
|
|
62
|
+
entity_referenced_in: "ENTITY_REFERENCED_IN"
|
|
63
|
+
};
|
|
64
|
+
function getNodeLayer(nodeType) {
|
|
65
|
+
const L4_TYPES = ["decision"];
|
|
66
|
+
const L3_TYPES = ["belief", "question", "theme", "deal"];
|
|
67
|
+
const L2_TYPES = ["claim", "evidence", "synthesis", "answer"];
|
|
68
|
+
const L1_TYPES = ["atomic_fact", "excerpt", "source"];
|
|
69
|
+
const ONTOLOGICAL_TYPES = [
|
|
70
|
+
"company",
|
|
71
|
+
"person",
|
|
72
|
+
"investor",
|
|
73
|
+
"function",
|
|
74
|
+
"value_chain"
|
|
75
|
+
];
|
|
76
|
+
const ORGANIZATIONAL_TYPES = ["topic"];
|
|
77
|
+
if (L4_TYPES.includes(nodeType)) {
|
|
78
|
+
return "L4";
|
|
79
|
+
}
|
|
80
|
+
if (L3_TYPES.includes(nodeType)) {
|
|
81
|
+
return "L3";
|
|
82
|
+
}
|
|
83
|
+
if (L2_TYPES.includes(nodeType)) {
|
|
84
|
+
return "L2";
|
|
85
|
+
}
|
|
86
|
+
if (L1_TYPES.includes(nodeType)) {
|
|
87
|
+
return "L1";
|
|
88
|
+
}
|
|
89
|
+
if (ONTOLOGICAL_TYPES.includes(nodeType)) {
|
|
90
|
+
return "ontological";
|
|
91
|
+
}
|
|
92
|
+
if (ORGANIZATIONAL_TYPES.includes(nodeType)) {
|
|
93
|
+
return "organizational";
|
|
94
|
+
}
|
|
95
|
+
console.warn(`[GraphTypes] Unknown nodeType "${nodeType}", defaulting to L2`);
|
|
96
|
+
return "L2";
|
|
97
|
+
}
|
|
98
|
+
function getNeo4jLabel(nodeType) {
|
|
99
|
+
return NODE_TYPE_TO_LABEL[nodeType] || nodeType.charAt(0).toUpperCase() + nodeType.slice(1);
|
|
100
|
+
}
|
|
101
|
+
function getNeo4jRelType(edgeType) {
|
|
102
|
+
return EDGE_TYPE_TO_REL[edgeType] || edgeType.toUpperCase();
|
|
103
|
+
}
|
|
104
|
+
var CANONICAL_EPISTEMIC_TYPES = /* @__PURE__ */ new Set([
|
|
105
|
+
"supports",
|
|
106
|
+
"informs",
|
|
107
|
+
"depends_on",
|
|
108
|
+
"derived_from",
|
|
109
|
+
"contains",
|
|
110
|
+
"tests"
|
|
111
|
+
]);
|
|
112
|
+
function isDeprecatedEdgeType(edgeType) {
|
|
113
|
+
if (CANONICAL_EPISTEMIC_TYPES.has(edgeType)) return false;
|
|
114
|
+
if (edgeType in EDGE_TYPE_TO_REL) return false;
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export { EDGE_TYPE_TO_REL, NODE_TYPE_TO_LABEL, getNeo4jLabel, getNeo4jRelType, getNodeLayer, isDeprecatedEdgeType };
|
|
119
|
+
//# sourceMappingURL=graphTypes.js.map
|
|
120
|
+
//# sourceMappingURL=graphTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/graphTypes.ts"],"names":[],"mappings":"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","file":"graphTypes.js","sourcesContent":["/**\n * Graph Type Registry for Convex\n *\n * This file mirrors the canonical type registry at lib/ontology/types.ts\n * but is compatible with Convex's bundling requirements.\n *\n * IMPORTANT: Keep this file in sync with lib/ontology/types.ts\n * The frontend uses lib/ontology/types.ts, Convex uses this file.\n *\n * @see /docs/architecture/UNIFIED_GRAPH_ARCHITECTURE.md\n */\n\n// =============================================================================\n// EPISTEMIC LAYERS\n// =============================================================================\n\nexport type EpistemicLayer =\n | \"L4\"\n | \"L3\"\n | \"L2\"\n | \"L1\"\n | \"ontological\"\n | \"organizational\";\n\n// =============================================================================\n// NODE TYPE TO LABEL MAPPING\n// =============================================================================\n\nexport const NODE_TYPE_TO_LABEL: Record<string, string> = {\n // L4: Audit Targets\n decision: \"Decision\",\n\n // L3: Traversal Anchors\n belief: \"Belief\",\n question: \"Question\",\n theme: \"Theme\",\n deal: \"Deal\",\n topic: \"Topic\",\n\n // L2: Compression Boundary\n claim: \"Claim\",\n evidence: \"Evidence\",\n synthesis: \"Synthesis\",\n answer: \"Answer\",\n\n // L1: Terminal Leaves\n atomic_fact: \"AtomicFact\",\n excerpt: \"Excerpt\",\n source: \"Source\",\n\n // Ontological (Neo4j is SOT)\n company: \"Company\",\n person: \"Person\",\n investor: \"Investor\",\n function: \"Function\",\n value_chain: \"ValueChain\",\n};\n\n// =============================================================================\n// EDGE TYPE TO NEO4J RELATIONSHIP MAPPING\n// =============================================================================\n\n/**\n * Epistemic Kernel v2: 6 canonical edge types + ontological edges.\n *\n * Weight and metadata carry nuance that previously required 67 separate type strings.\n * See: docs/architecture/epistemic-kernel-v2.md\n */\nexport const EDGE_TYPE_TO_REL: Record<string, string> = {\n // === THE SIX CANONICAL EPISTEMIC EDGE TYPES ===\n supports: \"SUPPORTS\", // L3↔L3: belief bears on belief (weight -1 to +1)\n informs: \"INFORMS\", // L2→L3: evidence bears on belief\n depends_on: \"DEPENDS_ON\", // L3→L3, Q→Q: structural gate\n derived_from: \"DERIVED_FROM\", // Any→Any: provenance chain (fork, synthesis, extraction, answer)\n contains: \"CONTAINS\", // Any→Any: hierarchy, scoping, membership\n tests: \"TESTS\", // Q→L3: question interrogates belief\n\n // === L4 DECISION EDGES (derived_from with derivationType=decision) ===\n // Kept as separate Neo4j relationship types for backward compat with L4 queries.\n // New code should use derived_from + metadata.\n based_on_belief: \"BASED_ON_BELIEF\",\n based_on_question: \"BASED_ON_QUESTION\",\n blocked_by_contradiction: \"BLOCKED_BY_CONTRADICTION\",\n informed_by_theme: \"INFORMED_BY_THEME\",\n\n // === ONTOLOGICAL EDGES (tenant-extensible, managed by ontology system) ===\n works_at: \"WORKS_AT\",\n invested_in: \"INVESTED_IN\",\n competes_with: \"COMPETES_WITH\",\n participates_in: \"PARTICIPATES_IN\",\n founded_by: \"FOUNDED_BY\",\n evaluates: \"EVALUATES\",\n performs: \"PERFORMS\",\n function_in: \"FUNCTION_IN\",\n impacts: \"IMPACTS\",\n raised_from: \"RAISED_FROM\",\n mentioned_in: \"MENTIONED_IN\",\n perspective_on: \"PERSPECTIVE_ON\",\n about_entity: \"ABOUT_ENTITY\",\n entity_referenced_in: \"ENTITY_REFERENCED_IN\",\n};\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\n\n/**\n * Get the epistemic layer for a node type\n */\nexport function getNodeLayer(nodeType: string): EpistemicLayer {\n const L4_TYPES = [\"decision\"];\n const L3_TYPES = [\"belief\", \"question\", \"theme\", \"deal\"];\n const L2_TYPES = [\"claim\", \"evidence\", \"synthesis\", \"answer\"];\n const L1_TYPES = [\"atomic_fact\", \"excerpt\", \"source\"];\n const ONTOLOGICAL_TYPES = [\n \"company\",\n \"person\",\n \"investor\",\n \"function\",\n \"value_chain\",\n ];\n const ORGANIZATIONAL_TYPES = [\"topic\"];\n\n if (L4_TYPES.includes(nodeType)) {\n return \"L4\";\n }\n if (L3_TYPES.includes(nodeType)) {\n return \"L3\";\n }\n if (L2_TYPES.includes(nodeType)) {\n return \"L2\";\n }\n if (L1_TYPES.includes(nodeType)) {\n return \"L1\";\n }\n if (ONTOLOGICAL_TYPES.includes(nodeType)) {\n return \"ontological\";\n }\n if (ORGANIZATIONAL_TYPES.includes(nodeType)) {\n return \"organizational\";\n }\n\n // Unknown types default to L2\n console.warn(`[GraphTypes] Unknown nodeType \"${nodeType}\", defaulting to L2`);\n return \"L2\";\n}\n\n/**\n * Get the Neo4j label for a node type\n */\nexport function getNeo4jLabel(nodeType: string): string {\n return (\n NODE_TYPE_TO_LABEL[nodeType] ||\n nodeType.charAt(0).toUpperCase() + nodeType.slice(1)\n );\n}\n\n/**\n * Get the Neo4j relationship type for an edge type\n */\nexport function getNeo4jRelType(edgeType: string): string {\n return EDGE_TYPE_TO_REL[edgeType] || edgeType.toUpperCase();\n}\n\n/**\n * The 6 canonical epistemic edge types (Kernel v2).\n * Anything not in this set or the ontological/L4 sets is deprecated.\n */\nconst CANONICAL_EPISTEMIC_TYPES = new Set([\n \"supports\",\n \"informs\",\n \"depends_on\",\n \"derived_from\",\n \"contains\",\n \"tests\",\n]);\n\n/**\n * Check if an edge type is deprecated.\n *\n * Kernel v2: only the 6 canonical epistemic types, L4 decision types,\n * and ontological types are active. All legacy types (67 old types) are deprecated.\n */\nexport function isDeprecatedEdgeType(edgeType: string): boolean {\n // Canonical epistemic types are NOT deprecated\n if (CANONICAL_EPISTEMIC_TYPES.has(edgeType)) return false;\n // Types in the EDGE_TYPE_TO_REL map (ontological + L4) are NOT deprecated\n if (edgeType in EDGE_TYPE_TO_REL) return false;\n // Everything else is a legacy type\n return true;\n}\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { MutationCtx, Id } from './convex.js';
|
|
2
|
+
import { E as EpistemicLayer, c as getNodeLayer } from './graphTypes-CpgIuCdo.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* helpers module implementation.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
declare function createEpistemicEdge(ctx: MutationCtx, params: {
|
|
9
|
+
fromNodeId: Id<"epistemicNodes">;
|
|
10
|
+
toNodeId: Id<"epistemicNodes">;
|
|
11
|
+
edgeType: string;
|
|
12
|
+
weight?: number;
|
|
13
|
+
confidence?: number;
|
|
14
|
+
context?: string;
|
|
15
|
+
projectId?: string;
|
|
16
|
+
createdBy: string;
|
|
17
|
+
skipLayerValidation?: boolean;
|
|
18
|
+
}): Promise<string>;
|
|
19
|
+
|
|
20
|
+
declare const helpers_EpistemicLayer: typeof EpistemicLayer;
|
|
21
|
+
declare const helpers_createEpistemicEdge: typeof createEpistemicEdge;
|
|
22
|
+
declare const helpers_getNodeLayer: typeof getNodeLayer;
|
|
23
|
+
declare namespace helpers {
|
|
24
|
+
export { helpers_EpistemicLayer as EpistemicLayer, helpers_createEpistemicEdge as createEpistemicEdge, helpers_getNodeLayer as getNodeLayer };
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export { createEpistemicEdge as c, helpers as h };
|
package/dist/helpers.js
ADDED
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
import { componentsGeneric, anyApi } from 'convex/server';
|
|
2
|
+
|
|
3
|
+
// src/convex.ts
|
|
4
|
+
componentsGeneric();
|
|
5
|
+
var internal = anyApi;
|
|
6
|
+
|
|
7
|
+
// src/graphTypes.ts
|
|
8
|
+
function getNodeLayer(nodeType) {
|
|
9
|
+
const L4_TYPES = ["decision"];
|
|
10
|
+
const L3_TYPES = ["belief", "question", "theme", "deal"];
|
|
11
|
+
const L2_TYPES = ["claim", "evidence", "synthesis", "answer"];
|
|
12
|
+
const L1_TYPES = ["atomic_fact", "excerpt", "source"];
|
|
13
|
+
const ONTOLOGICAL_TYPES = [
|
|
14
|
+
"company",
|
|
15
|
+
"person",
|
|
16
|
+
"investor",
|
|
17
|
+
"function",
|
|
18
|
+
"value_chain"
|
|
19
|
+
];
|
|
20
|
+
const ORGANIZATIONAL_TYPES = ["topic"];
|
|
21
|
+
if (L4_TYPES.includes(nodeType)) {
|
|
22
|
+
return "L4";
|
|
23
|
+
}
|
|
24
|
+
if (L3_TYPES.includes(nodeType)) {
|
|
25
|
+
return "L3";
|
|
26
|
+
}
|
|
27
|
+
if (L2_TYPES.includes(nodeType)) {
|
|
28
|
+
return "L2";
|
|
29
|
+
}
|
|
30
|
+
if (L1_TYPES.includes(nodeType)) {
|
|
31
|
+
return "L1";
|
|
32
|
+
}
|
|
33
|
+
if (ONTOLOGICAL_TYPES.includes(nodeType)) {
|
|
34
|
+
return "ontological";
|
|
35
|
+
}
|
|
36
|
+
if (ORGANIZATIONAL_TYPES.includes(nodeType)) {
|
|
37
|
+
return "organizational";
|
|
38
|
+
}
|
|
39
|
+
console.warn(`[GraphTypes] Unknown nodeType "${nodeType}", defaulting to L2`);
|
|
40
|
+
return "L2";
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// src/edgeValidation.ts
|
|
44
|
+
function getLayerDepth(layer) {
|
|
45
|
+
switch (layer) {
|
|
46
|
+
case "L4":
|
|
47
|
+
return 4;
|
|
48
|
+
case "L3":
|
|
49
|
+
return 3;
|
|
50
|
+
case "L2":
|
|
51
|
+
return 2;
|
|
52
|
+
case "L1":
|
|
53
|
+
return 1;
|
|
54
|
+
case "ontological":
|
|
55
|
+
return 0;
|
|
56
|
+
default:
|
|
57
|
+
return -1;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function isValidLayerConnection(fromLayer, toLayer) {
|
|
61
|
+
if (fromLayer === toLayer) {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
if (fromLayer === "ontological" && toLayer === "ontological") {
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
if (fromLayer === "ontological" && (toLayer === "L3" || toLayer === "L2" || toLayer === "L1")) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
if ((fromLayer === "L3" || fromLayer === "L2" || fromLayer === "L1") && toLayer === "ontological") {
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
if (fromLayer === "L2" && toLayer === "L1") {
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
if (fromLayer === "L2" && toLayer === "L3") {
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
if (fromLayer === "L3" && toLayer === "L2") {
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
if (fromLayer === "L3" && toLayer === "L4") {
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
if (fromLayer === "L4" && toLayer === "L3") {
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
if (fromLayer === "L3" && toLayer === "organizational") {
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
if (fromLayer === "organizational" && toLayer === "L3") {
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
const fromDepth = getLayerDepth(fromLayer);
|
|
95
|
+
const toDepth = getLayerDepth(toLayer);
|
|
96
|
+
if (Math.abs(fromDepth - toDepth) > 1) {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
var EDGE_LAYER_RULES = {
|
|
102
|
+
// === 6 Canonical Epistemic Types ===
|
|
103
|
+
supports: {
|
|
104
|
+
from: ["L3"],
|
|
105
|
+
to: ["L3"],
|
|
106
|
+
description: "Belief bears on Belief (weight: +1 supports, -1 contradicts)"
|
|
107
|
+
},
|
|
108
|
+
informs: {
|
|
109
|
+
from: ["L2"],
|
|
110
|
+
to: ["L3"],
|
|
111
|
+
description: "Evidence -> Belief (L2 -> L3)"
|
|
112
|
+
},
|
|
113
|
+
depends_on: {
|
|
114
|
+
from: ["L3"],
|
|
115
|
+
to: ["L3"],
|
|
116
|
+
description: "Belief B requires Belief A (structural gate)"
|
|
117
|
+
},
|
|
118
|
+
derived_from: {
|
|
119
|
+
from: ["L2", "L3", "L4"],
|
|
120
|
+
to: ["L1", "L2", "L3"],
|
|
121
|
+
description: "A was produced from B (provenance chain)"
|
|
122
|
+
},
|
|
123
|
+
contains: {
|
|
124
|
+
from: ["L3", "L4", "ontological"],
|
|
125
|
+
to: ["L2", "L3", "ontological"],
|
|
126
|
+
description: "A scopes/aggregates B (hierarchy)"
|
|
127
|
+
},
|
|
128
|
+
tests: {
|
|
129
|
+
from: ["L3"],
|
|
130
|
+
to: ["L3"],
|
|
131
|
+
description: "Question -> Belief (L3 -> L3)"
|
|
132
|
+
},
|
|
133
|
+
// === Structural / Lifecycle ===
|
|
134
|
+
supersedes: {
|
|
135
|
+
from: ["L3"],
|
|
136
|
+
to: ["L3"],
|
|
137
|
+
description: "NewNode -> OldNode (fork lineage)"
|
|
138
|
+
},
|
|
139
|
+
responds_to: {
|
|
140
|
+
from: ["L2", "L3"],
|
|
141
|
+
to: ["L3"],
|
|
142
|
+
description: "Answer -> Question (L2/L3 -> L3)"
|
|
143
|
+
},
|
|
144
|
+
belongs_to: {
|
|
145
|
+
from: ["L2", "L3", "ontological"],
|
|
146
|
+
to: ["L3"],
|
|
147
|
+
description: "Membership (migrating to contains)"
|
|
148
|
+
},
|
|
149
|
+
relates_to_thesis: {
|
|
150
|
+
from: ["L3"],
|
|
151
|
+
to: ["L3"],
|
|
152
|
+
description: "Belief -> Theme (L3 -> L3)"
|
|
153
|
+
},
|
|
154
|
+
// === Ontological (entity-entity or entity-epistemic bridge) ===
|
|
155
|
+
works_at: {
|
|
156
|
+
from: ["ontological"],
|
|
157
|
+
to: ["ontological"],
|
|
158
|
+
description: "Person -> Company"
|
|
159
|
+
},
|
|
160
|
+
invested_in: {
|
|
161
|
+
from: ["ontological"],
|
|
162
|
+
to: ["ontological"],
|
|
163
|
+
description: "Investor -> Company"
|
|
164
|
+
},
|
|
165
|
+
competes_with: {
|
|
166
|
+
from: ["ontological"],
|
|
167
|
+
to: ["ontological"],
|
|
168
|
+
description: "Company -> Company"
|
|
169
|
+
},
|
|
170
|
+
participates_in: {
|
|
171
|
+
from: ["ontological"],
|
|
172
|
+
to: ["ontological"],
|
|
173
|
+
description: "Company -> ValueChain"
|
|
174
|
+
},
|
|
175
|
+
founded_by: {
|
|
176
|
+
from: ["ontological"],
|
|
177
|
+
to: ["ontological"],
|
|
178
|
+
description: "Company -> Person"
|
|
179
|
+
},
|
|
180
|
+
evaluates: {
|
|
181
|
+
from: ["ontological"],
|
|
182
|
+
to: ["ontological"],
|
|
183
|
+
description: "Deal -> Company"
|
|
184
|
+
},
|
|
185
|
+
performs: {
|
|
186
|
+
from: ["ontological"],
|
|
187
|
+
to: ["ontological"],
|
|
188
|
+
description: "Company -> Function"
|
|
189
|
+
},
|
|
190
|
+
function_in: {
|
|
191
|
+
from: ["ontological"],
|
|
192
|
+
to: ["ontological"],
|
|
193
|
+
description: "Function -> ValueChain"
|
|
194
|
+
},
|
|
195
|
+
impacts: {
|
|
196
|
+
from: ["ontological", "L3"],
|
|
197
|
+
to: ["ontological"],
|
|
198
|
+
description: "Theme/Entity -> ValueChain"
|
|
199
|
+
},
|
|
200
|
+
raised_from: {
|
|
201
|
+
from: ["ontological"],
|
|
202
|
+
to: ["ontological"],
|
|
203
|
+
description: "Company -> Investor"
|
|
204
|
+
},
|
|
205
|
+
mentioned_in: {
|
|
206
|
+
from: ["ontological"],
|
|
207
|
+
to: ["L1", "L2"],
|
|
208
|
+
description: "Entity -> Source/Evidence"
|
|
209
|
+
},
|
|
210
|
+
perspective_on: {
|
|
211
|
+
from: ["ontological"],
|
|
212
|
+
to: ["L3"],
|
|
213
|
+
description: "Person -> Belief/Theme"
|
|
214
|
+
},
|
|
215
|
+
plays_theme: {
|
|
216
|
+
from: ["ontological"],
|
|
217
|
+
to: ["L3"],
|
|
218
|
+
description: "Deal -> Theme"
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
function validateEdgeLayers(edgeType, fromLayer, toLayer) {
|
|
222
|
+
const rules = EDGE_LAYER_RULES[edgeType];
|
|
223
|
+
if (!rules) {
|
|
224
|
+
console.warn(
|
|
225
|
+
`[EdgeValidation] Unknown edge type: ${edgeType}, allowing by default`
|
|
226
|
+
);
|
|
227
|
+
return { valid: true };
|
|
228
|
+
}
|
|
229
|
+
if (edgeType === "supersedes") {
|
|
230
|
+
if (fromLayer !== toLayer) {
|
|
231
|
+
return {
|
|
232
|
+
valid: false,
|
|
233
|
+
reason: `${edgeType} edges must be between nodes of the same layer. Got ${fromLayer} -> ${toLayer}`
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
return { valid: true };
|
|
237
|
+
}
|
|
238
|
+
if (!rules.from.includes(fromLayer)) {
|
|
239
|
+
return {
|
|
240
|
+
valid: false,
|
|
241
|
+
reason: `Edge type '${edgeType}' does not allow source layer ${fromLayer}. Allowed: ${rules.from.join(", ")}`
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
if (!rules.to.includes(toLayer)) {
|
|
245
|
+
return {
|
|
246
|
+
valid: false,
|
|
247
|
+
reason: `Edge type '${edgeType}' does not allow target layer ${toLayer}. Allowed: ${rules.to.join(", ")}`
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
if (!isValidLayerConnection(fromLayer, toLayer)) {
|
|
251
|
+
return {
|
|
252
|
+
valid: false,
|
|
253
|
+
reason: `Layer transition ${fromLayer} -> ${toLayer} is not permitted`
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
return { valid: true };
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// src/globalId.ts
|
|
260
|
+
function generateGlobalId() {
|
|
261
|
+
const bytes = new Uint8Array(16);
|
|
262
|
+
crypto.getRandomValues(bytes);
|
|
263
|
+
bytes[6] = bytes[6] & 15 | 64;
|
|
264
|
+
bytes[8] = bytes[8] & 63 | 128;
|
|
265
|
+
const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join(
|
|
266
|
+
""
|
|
267
|
+
);
|
|
268
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// src/helpers.ts
|
|
272
|
+
async function createEpistemicEdge(ctx, params) {
|
|
273
|
+
const globalId = generateGlobalId();
|
|
274
|
+
const fromNode = await ctx.db.get(params.fromNodeId);
|
|
275
|
+
const toNode = await ctx.db.get(params.toNodeId);
|
|
276
|
+
if (!fromNode || !toNode) {
|
|
277
|
+
throw new Error("One or both nodes not found");
|
|
278
|
+
}
|
|
279
|
+
const fromLayer = fromNode.epistemicLayer || getNodeLayer(fromNode.nodeType);
|
|
280
|
+
const toLayer = toNode.epistemicLayer || getNodeLayer(toNode.nodeType);
|
|
281
|
+
if (!params.skipLayerValidation) {
|
|
282
|
+
const validation = validateEdgeLayers(
|
|
283
|
+
params.edgeType,
|
|
284
|
+
fromLayer,
|
|
285
|
+
toLayer
|
|
286
|
+
);
|
|
287
|
+
if (!validation.valid) {
|
|
288
|
+
throw new Error(
|
|
289
|
+
`[EdgeValidation] Invalid edge: ${validation.reason}. Attempted: ${params.edgeType} from ${fromNode.nodeType}(${fromLayer}) \u2192 ${toNode.nodeType}(${toLayer})`
|
|
290
|
+
);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
await ctx.scheduler.runAfter(0, internal.neo4jEdgeAPI.createEdge, {
|
|
294
|
+
globalId,
|
|
295
|
+
fromGlobalId: fromNode.globalId,
|
|
296
|
+
toGlobalId: toNode.globalId,
|
|
297
|
+
edgeType: params.edgeType,
|
|
298
|
+
weight: params.weight,
|
|
299
|
+
confidence: params.confidence,
|
|
300
|
+
context: params.context,
|
|
301
|
+
createdBy: params.createdBy,
|
|
302
|
+
topicId: params.projectId ? String(params.projectId) : void 0,
|
|
303
|
+
fromNodeType: fromNode.nodeType,
|
|
304
|
+
toNodeType: toNode.nodeType,
|
|
305
|
+
fromLayer,
|
|
306
|
+
toLayer
|
|
307
|
+
});
|
|
308
|
+
return globalId;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
export { createEpistemicEdge, getNodeLayer };
|
|
312
|
+
//# sourceMappingURL=helpers.js.map
|
|
313
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/convex.ts","../src/graphTypes.ts","../src/edgeValidation.ts","../src/globalId.ts","../src/helpers.ts"],"names":[],"mappings":"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","file":"helpers.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;\nexport type ActionCtx = any;\nexport type DatabaseReader = any;\nexport type DatabaseWriter = any;\nexport type MutationCtx = any;\nexport type QueryCtx = any;\n\nexport const action = actionGeneric as any;\nexport const httpAction = httpActionGeneric as any;\nexport const internalAction = internalActionGeneric as any;\nexport const internalMutation = internalMutationGeneric as any;\nexport const internalQuery = internalQueryGeneric as any;\nexport const mutation = mutationGeneric as any;\nexport const query = queryGeneric as any;\n","/**\n * Graph Type Registry for Convex\n *\n * This file mirrors the canonical type registry at lib/ontology/types.ts\n * but is compatible with Convex's bundling requirements.\n *\n * IMPORTANT: Keep this file in sync with lib/ontology/types.ts\n * The frontend uses lib/ontology/types.ts, Convex uses this file.\n *\n * @see /docs/architecture/UNIFIED_GRAPH_ARCHITECTURE.md\n */\n\n// =============================================================================\n// EPISTEMIC LAYERS\n// =============================================================================\n\nexport type EpistemicLayer =\n | \"L4\"\n | \"L3\"\n | \"L2\"\n | \"L1\"\n | \"ontological\"\n | \"organizational\";\n\n// =============================================================================\n// NODE TYPE TO LABEL MAPPING\n// =============================================================================\n\nexport const NODE_TYPE_TO_LABEL: Record<string, string> = {\n // L4: Audit Targets\n decision: \"Decision\",\n\n // L3: Traversal Anchors\n belief: \"Belief\",\n question: \"Question\",\n theme: \"Theme\",\n deal: \"Deal\",\n topic: \"Topic\",\n\n // L2: Compression Boundary\n claim: \"Claim\",\n evidence: \"Evidence\",\n synthesis: \"Synthesis\",\n answer: \"Answer\",\n\n // L1: Terminal Leaves\n atomic_fact: \"AtomicFact\",\n excerpt: \"Excerpt\",\n source: \"Source\",\n\n // Ontological (Neo4j is SOT)\n company: \"Company\",\n person: \"Person\",\n investor: \"Investor\",\n function: \"Function\",\n value_chain: \"ValueChain\",\n};\n\n// =============================================================================\n// EDGE TYPE TO NEO4J RELATIONSHIP MAPPING\n// =============================================================================\n\n/**\n * Epistemic Kernel v2: 6 canonical edge types + ontological edges.\n *\n * Weight and metadata carry nuance that previously required 67 separate type strings.\n * See: docs/architecture/epistemic-kernel-v2.md\n */\nexport const EDGE_TYPE_TO_REL: Record<string, string> = {\n // === THE SIX CANONICAL EPISTEMIC EDGE TYPES ===\n supports: \"SUPPORTS\", // L3↔L3: belief bears on belief (weight -1 to +1)\n informs: \"INFORMS\", // L2→L3: evidence bears on belief\n depends_on: \"DEPENDS_ON\", // L3→L3, Q→Q: structural gate\n derived_from: \"DERIVED_FROM\", // Any→Any: provenance chain (fork, synthesis, extraction, answer)\n contains: \"CONTAINS\", // Any→Any: hierarchy, scoping, membership\n tests: \"TESTS\", // Q→L3: question interrogates belief\n\n // === L4 DECISION EDGES (derived_from with derivationType=decision) ===\n // Kept as separate Neo4j relationship types for backward compat with L4 queries.\n // New code should use derived_from + metadata.\n based_on_belief: \"BASED_ON_BELIEF\",\n based_on_question: \"BASED_ON_QUESTION\",\n blocked_by_contradiction: \"BLOCKED_BY_CONTRADICTION\",\n informed_by_theme: \"INFORMED_BY_THEME\",\n\n // === ONTOLOGICAL EDGES (tenant-extensible, managed by ontology system) ===\n works_at: \"WORKS_AT\",\n invested_in: \"INVESTED_IN\",\n competes_with: \"COMPETES_WITH\",\n participates_in: \"PARTICIPATES_IN\",\n founded_by: \"FOUNDED_BY\",\n evaluates: \"EVALUATES\",\n performs: \"PERFORMS\",\n function_in: \"FUNCTION_IN\",\n impacts: \"IMPACTS\",\n raised_from: \"RAISED_FROM\",\n mentioned_in: \"MENTIONED_IN\",\n perspective_on: \"PERSPECTIVE_ON\",\n about_entity: \"ABOUT_ENTITY\",\n entity_referenced_in: \"ENTITY_REFERENCED_IN\",\n};\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\n\n/**\n * Get the epistemic layer for a node type\n */\nexport function getNodeLayer(nodeType: string): EpistemicLayer {\n const L4_TYPES = [\"decision\"];\n const L3_TYPES = [\"belief\", \"question\", \"theme\", \"deal\"];\n const L2_TYPES = [\"claim\", \"evidence\", \"synthesis\", \"answer\"];\n const L1_TYPES = [\"atomic_fact\", \"excerpt\", \"source\"];\n const ONTOLOGICAL_TYPES = [\n \"company\",\n \"person\",\n \"investor\",\n \"function\",\n \"value_chain\",\n ];\n const ORGANIZATIONAL_TYPES = [\"topic\"];\n\n if (L4_TYPES.includes(nodeType)) {\n return \"L4\";\n }\n if (L3_TYPES.includes(nodeType)) {\n return \"L3\";\n }\n if (L2_TYPES.includes(nodeType)) {\n return \"L2\";\n }\n if (L1_TYPES.includes(nodeType)) {\n return \"L1\";\n }\n if (ONTOLOGICAL_TYPES.includes(nodeType)) {\n return \"ontological\";\n }\n if (ORGANIZATIONAL_TYPES.includes(nodeType)) {\n return \"organizational\";\n }\n\n // Unknown types default to L2\n console.warn(`[GraphTypes] Unknown nodeType \"${nodeType}\", defaulting to L2`);\n return \"L2\";\n}\n\n/**\n * Get the Neo4j label for a node type\n */\nexport function getNeo4jLabel(nodeType: string): string {\n return (\n NODE_TYPE_TO_LABEL[nodeType] ||\n nodeType.charAt(0).toUpperCase() + nodeType.slice(1)\n );\n}\n\n/**\n * Get the Neo4j relationship type for an edge type\n */\nexport function getNeo4jRelType(edgeType: string): string {\n return EDGE_TYPE_TO_REL[edgeType] || edgeType.toUpperCase();\n}\n\n/**\n * The 6 canonical epistemic edge types (Kernel v2).\n * Anything not in this set or the ontological/L4 sets is deprecated.\n */\nconst CANONICAL_EPISTEMIC_TYPES = new Set([\n \"supports\",\n \"informs\",\n \"depends_on\",\n \"derived_from\",\n \"contains\",\n \"tests\",\n]);\n\n/**\n * Check if an edge type is deprecated.\n *\n * Kernel v2: only the 6 canonical epistemic types, L4 decision types,\n * and ontological types are active. All legacy types (67 old types) are deprecated.\n */\nexport function isDeprecatedEdgeType(edgeType: string): boolean {\n // Canonical epistemic types are NOT deprecated\n if (CANONICAL_EPISTEMIC_TYPES.has(edgeType)) return false;\n // Types in the EDGE_TYPE_TO_REL map (ontological + L4) are NOT deprecated\n if (edgeType in EDGE_TYPE_TO_REL) return false;\n // Everything else is a legacy type\n return true;\n}\n","/**\n * edgeValidation module implementation.\n */\n\nimport { type EpistemicLayer, isDeprecatedEdgeType } from \"./graphTypes\";\n\nexport { isDeprecatedEdgeType };\nexport type { EpistemicLayer };\n\nfunction getLayerDepth(layer: EpistemicLayer): number {\n switch (layer) {\n case \"L4\":\n return 4;\n case \"L3\":\n return 3;\n case \"L2\":\n return 2;\n case \"L1\":\n return 1;\n case \"ontological\":\n return 0;\n default:\n return -1;\n }\n}\n\nfunction isValidLayerConnection(\n fromLayer: EpistemicLayer,\n toLayer: EpistemicLayer\n): boolean {\n if (fromLayer === toLayer) {\n return true;\n }\n\n // Ontological ↔ ontological (entity-entity edges)\n if (fromLayer === \"ontological\" && toLayer === \"ontological\") {\n return true;\n }\n\n // Ontological ↔ epistemic bridge (OE-B: entity-belief/evidence/source connections)\n if (\n fromLayer === \"ontological\" &&\n (toLayer === \"L3\" || toLayer === \"L2\" || toLayer === \"L1\")\n ) {\n return true;\n }\n if (\n (fromLayer === \"L3\" || fromLayer === \"L2\" || fromLayer === \"L1\") &&\n toLayer === \"ontological\"\n ) {\n return true;\n }\n\n // Epistemic layer transitions\n if (fromLayer === \"L2\" && toLayer === \"L1\") {\n return true;\n }\n if (fromLayer === \"L2\" && toLayer === \"L3\") {\n return true;\n }\n if (fromLayer === \"L3\" && toLayer === \"L2\") {\n return true;\n }\n if (fromLayer === \"L3\" && toLayer === \"L4\") {\n return true;\n }\n if (fromLayer === \"L4\" && toLayer === \"L3\") {\n return true;\n }\n\n // Organizational connections\n if (fromLayer === \"L3\" && toLayer === \"organizational\") {\n return true;\n }\n if (fromLayer === \"organizational\" && toLayer === \"L3\") {\n return true;\n }\n\n const fromDepth = getLayerDepth(fromLayer);\n const toDepth = getLayerDepth(toLayer);\n if (Math.abs(fromDepth - toDepth) > 1) {\n return false;\n }\n return true;\n}\n\nexport type TraversalMode =\n | \"anchor_down\"\n | \"anchor_up\"\n | \"same_layer\"\n | \"decision_trace\";\n\nexport function shouldContinueTraversal(\n currentLayer: EpistemicLayer,\n targetLayer: EpistemicLayer,\n options: {\n mode: TraversalMode;\n minLayer?: number;\n maxLayer?: number;\n }\n): boolean {\n const currentDepth = getLayerDepth(currentLayer);\n const targetDepth = getLayerDepth(targetLayer);\n\n if (options.minLayer !== undefined && targetDepth < options.minLayer) {\n return false;\n }\n if (options.maxLayer !== undefined && targetDepth > options.maxLayer) {\n return false;\n }\n\n switch (options.mode) {\n case \"anchor_down\":\n return targetDepth <= currentDepth;\n case \"anchor_up\":\n return targetDepth >= currentDepth;\n case \"same_layer\":\n return targetDepth === currentDepth;\n case \"decision_trace\":\n return currentDepth === 4\n ? targetDepth === 3\n : targetDepth === currentDepth;\n default:\n return true;\n }\n}\n\nexport function getDefaultMinLayer(mode: TraversalMode): number {\n switch (mode) {\n case \"anchor_down\":\n return 1;\n case \"anchor_up\":\n return 2;\n case \"same_layer\":\n return 1;\n case \"decision_trace\":\n return 3;\n default:\n return 1;\n }\n}\n\nexport const EDGE_LAYER_RULES: Record<\n string,\n { from: EpistemicLayer[]; to: EpistemicLayer[]; description: string }\n> = {\n // === 6 Canonical Epistemic Types ===\n supports: {\n from: [\"L3\"],\n to: [\"L3\"],\n description: \"Belief bears on Belief (weight: +1 supports, -1 contradicts)\",\n },\n informs: {\n from: [\"L2\"],\n to: [\"L3\"],\n description: \"Evidence -> Belief (L2 -> L3)\",\n },\n depends_on: {\n from: [\"L3\"],\n to: [\"L3\"],\n description: \"Belief B requires Belief A (structural gate)\",\n },\n derived_from: {\n from: [\"L2\", \"L3\", \"L4\"],\n to: [\"L1\", \"L2\", \"L3\"],\n description: \"A was produced from B (provenance chain)\",\n },\n contains: {\n from: [\"L3\", \"L4\", \"ontological\"],\n to: [\"L2\", \"L3\", \"ontological\"],\n description: \"A scopes/aggregates B (hierarchy)\",\n },\n tests: {\n from: [\"L3\"],\n to: [\"L3\"],\n description: \"Question -> Belief (L3 -> L3)\",\n },\n\n // === Structural / Lifecycle ===\n supersedes: {\n from: [\"L3\"],\n to: [\"L3\"],\n description: \"NewNode -> OldNode (fork lineage)\",\n },\n responds_to: {\n from: [\"L2\", \"L3\"],\n to: [\"L3\"],\n description: \"Answer -> Question (L2/L3 -> L3)\",\n },\n belongs_to: {\n from: [\"L2\", \"L3\", \"ontological\"],\n to: [\"L3\"],\n description: \"Membership (migrating to contains)\",\n },\n relates_to_thesis: {\n from: [\"L3\"],\n to: [\"L3\"],\n description: \"Belief -> Theme (L3 -> L3)\",\n },\n\n // === Ontological (entity-entity or entity-epistemic bridge) ===\n works_at: {\n from: [\"ontological\"],\n to: [\"ontological\"],\n description: \"Person -> Company\",\n },\n invested_in: {\n from: [\"ontological\"],\n to: [\"ontological\"],\n description: \"Investor -> Company\",\n },\n competes_with: {\n from: [\"ontological\"],\n to: [\"ontological\"],\n description: \"Company -> Company\",\n },\n participates_in: {\n from: [\"ontological\"],\n to: [\"ontological\"],\n description: \"Company -> ValueChain\",\n },\n founded_by: {\n from: [\"ontological\"],\n to: [\"ontological\"],\n description: \"Company -> Person\",\n },\n evaluates: {\n from: [\"ontological\"],\n to: [\"ontological\"],\n description: \"Deal -> Company\",\n },\n performs: {\n from: [\"ontological\"],\n to: [\"ontological\"],\n description: \"Company -> Function\",\n },\n function_in: {\n from: [\"ontological\"],\n to: [\"ontological\"],\n description: \"Function -> ValueChain\",\n },\n impacts: {\n from: [\"ontological\", \"L3\"],\n to: [\"ontological\"],\n description: \"Theme/Entity -> ValueChain\",\n },\n raised_from: {\n from: [\"ontological\"],\n to: [\"ontological\"],\n description: \"Company -> Investor\",\n },\n mentioned_in: {\n from: [\"ontological\"],\n to: [\"L1\", \"L2\"],\n description: \"Entity -> Source/Evidence\",\n },\n perspective_on: {\n from: [\"ontological\"],\n to: [\"L3\"],\n description: \"Person -> Belief/Theme\",\n },\n plays_theme: {\n from: [\"ontological\"],\n to: [\"L3\"],\n description: \"Deal -> Theme\",\n },\n};\n\nexport function validateEdgeLayers(\n edgeType: string,\n fromLayer: EpistemicLayer,\n toLayer: EpistemicLayer\n): { valid: boolean; reason?: string } {\n const rules = EDGE_LAYER_RULES[edgeType];\n\n if (!rules) {\n console.warn(\n `[EdgeValidation] Unknown edge type: ${edgeType}, allowing by default`\n );\n return { valid: true };\n }\n\n if (edgeType === \"supersedes\") {\n if (fromLayer !== toLayer) {\n return {\n valid: false,\n reason: `${edgeType} edges must be between nodes of the same layer. Got ${fromLayer} -> ${toLayer}`,\n };\n }\n return { valid: true };\n }\n\n if (!rules.from.includes(fromLayer)) {\n return {\n valid: false,\n reason: `Edge type '${edgeType}' does not allow source layer ${fromLayer}. Allowed: ${rules.from.join(\", \")}`,\n };\n }\n\n if (!rules.to.includes(toLayer)) {\n return {\n valid: false,\n reason: `Edge type '${edgeType}' does not allow target layer ${toLayer}. Allowed: ${rules.to.join(\", \")}`,\n };\n }\n\n if (!isValidLayerConnection(fromLayer, toLayer)) {\n return {\n valid: false,\n reason: `Layer transition ${fromLayer} -> ${toLayer} is not permitted`,\n };\n }\n\n return { valid: true };\n}\n\n","/**\n * Shared UUID v4 generator for global IDs.\n *\n * Uses crypto.getRandomValues() for collision-safe generation.\n * Replaces the Math.random()-based UUID pattern that was duplicated\n * across 7+ files.\n *\n * @module convex/lib/globalId\n */\n\n/**\n * Generate a UUID v4 global ID using crypto-safe random bytes.\n */\nexport function generateGlobalId(): string {\n const bytes = new Uint8Array(16);\n crypto.getRandomValues(bytes);\n // Set version (4) and variant (RFC 4122)\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, \"0\")).join(\n \"\"\n );\n return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;\n}\n","/**\n * helpers module implementation.\n */\n\nimport { type Id, internal, type MutationCtx } from \"./convex\";\nimport {\n type EpistemicLayer,\n validateEdgeLayers,\n} from \"./edgeValidation\";\nimport { generateGlobalId } from \"./globalId\";\nimport { getNodeLayer } from \"./graphTypes\";\n\nexport { getNodeLayer };\nexport type { EpistemicLayer };\n\nexport async function createEpistemicEdge(\n ctx: MutationCtx,\n params: {\n fromNodeId: Id<\"epistemicNodes\">;\n toNodeId: Id<\"epistemicNodes\">;\n edgeType: string;\n weight?: number;\n confidence?: number;\n context?: string;\n projectId?: string;\n createdBy: string;\n skipLayerValidation?: boolean;\n }\n): Promise<string> {\n const globalId = generateGlobalId();\n\n const fromNode = await ctx.db.get(params.fromNodeId);\n const toNode = await ctx.db.get(params.toNodeId);\n\n if (!fromNode || !toNode) {\n throw new Error(\"One or both nodes not found\");\n }\n\n const fromLayer = fromNode.epistemicLayer || getNodeLayer(fromNode.nodeType);\n const toLayer = toNode.epistemicLayer || getNodeLayer(toNode.nodeType);\n\n if (!params.skipLayerValidation) {\n const validation = validateEdgeLayers(\n params.edgeType,\n fromLayer as EpistemicLayer,\n toLayer as EpistemicLayer\n );\n if (!validation.valid) {\n throw new Error(\n `[EdgeValidation] Invalid edge: ${validation.reason}. ` +\n `Attempted: ${params.edgeType} from ${fromNode.nodeType}(${fromLayer}) → ${toNode.nodeType}(${toLayer})`\n );\n }\n }\n\n await ctx.scheduler.runAfter(0, internal.neo4jEdgeAPI.createEdge, {\n globalId,\n fromGlobalId: fromNode.globalId,\n toGlobalId: toNode.globalId,\n edgeType: params.edgeType as any,\n weight: params.weight,\n confidence: params.confidence,\n context: params.context,\n createdBy: params.createdBy,\n topicId: params.projectId ? String(params.projectId) : undefined,\n fromNodeType: fromNode.nodeType,\n toNodeType: toNode.nodeType,\n fromLayer,\n toLayer,\n });\n\n return globalId;\n}\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { EdgePropagationSpec, PropagationSpecDirection, PropagationTraversalDirection, PropagationEdgeRecord, PropagationEdgeType, PropagationTransitivity, canContinueTransitively, canTraverseHop, isPropagationTraversalDirection } from './edges/propagationTypes.js';
|
|
2
|
+
|
|
3
|
+
declare const EDGE_PROPAGATION_SPECS: readonly EdgePropagationSpec[];
|
|
4
|
+
declare function getEdgePropagationSpec(edgeType: string): EdgePropagationSpec | undefined;
|
|
5
|
+
declare function getEdgePropagationSpecs(): readonly EdgePropagationSpec[];
|
|
6
|
+
declare function getTraversalDirections(direction: PropagationSpecDirection): readonly PropagationTraversalDirection[];
|
|
7
|
+
|
|
8
|
+
declare const index_EDGE_PROPAGATION_SPECS: typeof EDGE_PROPAGATION_SPECS;
|
|
9
|
+
declare const index_EdgePropagationSpec: typeof EdgePropagationSpec;
|
|
10
|
+
declare const index_PropagationEdgeRecord: typeof PropagationEdgeRecord;
|
|
11
|
+
declare const index_PropagationEdgeType: typeof PropagationEdgeType;
|
|
12
|
+
declare const index_PropagationSpecDirection: typeof PropagationSpecDirection;
|
|
13
|
+
declare const index_PropagationTransitivity: typeof PropagationTransitivity;
|
|
14
|
+
declare const index_PropagationTraversalDirection: typeof PropagationTraversalDirection;
|
|
15
|
+
declare const index_canContinueTransitively: typeof canContinueTransitively;
|
|
16
|
+
declare const index_canTraverseHop: typeof canTraverseHop;
|
|
17
|
+
declare const index_getEdgePropagationSpec: typeof getEdgePropagationSpec;
|
|
18
|
+
declare const index_getEdgePropagationSpecs: typeof getEdgePropagationSpecs;
|
|
19
|
+
declare const index_getTraversalDirections: typeof getTraversalDirections;
|
|
20
|
+
declare const index_isPropagationTraversalDirection: typeof isPropagationTraversalDirection;
|
|
21
|
+
declare namespace index {
|
|
22
|
+
export { index_EDGE_PROPAGATION_SPECS as EDGE_PROPAGATION_SPECS, index_EdgePropagationSpec as EdgePropagationSpec, index_PropagationEdgeRecord as PropagationEdgeRecord, index_PropagationEdgeType as PropagationEdgeType, index_PropagationSpecDirection as PropagationSpecDirection, index_PropagationTransitivity as PropagationTransitivity, index_PropagationTraversalDirection as PropagationTraversalDirection, index_canContinueTransitively as canContinueTransitively, index_canTraverseHop as canTraverseHop, index_getEdgePropagationSpec as getEdgePropagationSpec, index_getEdgePropagationSpecs as getEdgePropagationSpecs, index_getTraversalDirections as getTraversalDirections, index_isPropagationTraversalDirection as isPropagationTraversalDirection };
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export { EDGE_PROPAGATION_SPECS as E, getEdgePropagationSpecs as a, getTraversalDirections as b, getEdgePropagationSpec as g, index as i };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { EpistemicEvaluator } from './epistemicContracts.js';
|
|
2
|
+
import { EngineeringEpistemicEvaluator, testRunnerEvaluator } from './evaluators/testRunnerEvaluator.js';
|
|
3
|
+
import { lintCheckerEvaluator } from './evaluators/lintCheckerEvaluator.js';
|
|
4
|
+
import { sentryCheckerEvaluator } from './evaluators/sentryCheckerEvaluator.js';
|
|
5
|
+
import { tscCheckerEvaluator } from './evaluators/tscCheckerEvaluator.js';
|
|
6
|
+
|
|
7
|
+
declare const ENGINEERING_EPISTEMIC_EVALUATORS: EngineeringEpistemicEvaluator[];
|
|
8
|
+
declare const ENGINEERING_EVALUATOR_NAMES: Set<string>;
|
|
9
|
+
declare function getEngineeringEpistemicEvaluator(name: string): EngineeringEpistemicEvaluator | undefined;
|
|
10
|
+
declare function registerAllEngineeringEvaluators(registerEvaluator: (evaluator: EpistemicEvaluator) => void): void;
|
|
11
|
+
|
|
12
|
+
declare const RESEARCH_EVALUATOR_NAMES: readonly ["market_index_comparator", "metric_checker", "reference_check_counter", "temporal_deadline"];
|
|
13
|
+
type ResearchEvaluatorName = (typeof RESEARCH_EVALUATOR_NAMES)[number];
|
|
14
|
+
declare function registerAllResearchEvaluators(): ResearchEvaluatorName[];
|
|
15
|
+
|
|
16
|
+
declare const index_ENGINEERING_EPISTEMIC_EVALUATORS: typeof ENGINEERING_EPISTEMIC_EVALUATORS;
|
|
17
|
+
declare const index_ENGINEERING_EVALUATOR_NAMES: typeof ENGINEERING_EVALUATOR_NAMES;
|
|
18
|
+
declare const index_RESEARCH_EVALUATOR_NAMES: typeof RESEARCH_EVALUATOR_NAMES;
|
|
19
|
+
type index_ResearchEvaluatorName = ResearchEvaluatorName;
|
|
20
|
+
declare const index_getEngineeringEpistemicEvaluator: typeof getEngineeringEpistemicEvaluator;
|
|
21
|
+
declare const index_lintCheckerEvaluator: typeof lintCheckerEvaluator;
|
|
22
|
+
declare const index_registerAllEngineeringEvaluators: typeof registerAllEngineeringEvaluators;
|
|
23
|
+
declare const index_registerAllResearchEvaluators: typeof registerAllResearchEvaluators;
|
|
24
|
+
declare const index_sentryCheckerEvaluator: typeof sentryCheckerEvaluator;
|
|
25
|
+
declare const index_testRunnerEvaluator: typeof testRunnerEvaluator;
|
|
26
|
+
declare const index_tscCheckerEvaluator: typeof tscCheckerEvaluator;
|
|
27
|
+
declare namespace index {
|
|
28
|
+
export { index_ENGINEERING_EPISTEMIC_EVALUATORS as ENGINEERING_EPISTEMIC_EVALUATORS, index_ENGINEERING_EVALUATOR_NAMES as ENGINEERING_EVALUATOR_NAMES, index_RESEARCH_EVALUATOR_NAMES as RESEARCH_EVALUATOR_NAMES, type index_ResearchEvaluatorName as ResearchEvaluatorName, index_getEngineeringEpistemicEvaluator as getEngineeringEpistemicEvaluator, index_lintCheckerEvaluator as lintCheckerEvaluator, index_registerAllEngineeringEvaluators as registerAllEngineeringEvaluators, index_registerAllResearchEvaluators as registerAllResearchEvaluators, index_sentryCheckerEvaluator as sentryCheckerEvaluator, index_testRunnerEvaluator as testRunnerEvaluator, index_tscCheckerEvaluator as tscCheckerEvaluator };
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { ENGINEERING_EPISTEMIC_EVALUATORS as E, RESEARCH_EVALUATOR_NAMES as R, ENGINEERING_EVALUATOR_NAMES as a, type ResearchEvaluatorName as b, registerAllResearchEvaluators as c, getEngineeringEpistemicEvaluator as g, index as i, registerAllEngineeringEvaluators as r };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export { b as beliefDecay } from './beliefDecay-Q_26RTc-.js';
|
|
2
|
+
export { b as beliefEvidenceLinks } from './beliefEvidenceLinks-42FlR48t.js';
|
|
3
|
+
export { b as beliefLifecycle } from './beliefLifecycle-C-AehZgF.js';
|
|
4
|
+
export { c as contradictions } from './contradictions-Hdwl7zid.js';
|
|
5
|
+
export { i as edges } from './index-Dct1T70K.js';
|
|
6
|
+
export { e as edgeValidation } from './edgeValidation-CeI0wc0r.js';
|
|
7
|
+
export { e as entityBridge } from './entityBridge-DMaKooYn.js';
|
|
8
|
+
export { e as entityLifecycle } from './entityLifecycle-BkhRJ-XI.js';
|
|
9
|
+
export { e as entityValidation } from './entityValidation-KLZ_Xl2D.js';
|
|
10
|
+
export { i as evaluators } from './index-Dq-7R-gi.js';
|
|
11
|
+
export { e as epistemicAnswers } from './epistemicAnswers-DSP1slZ9.js';
|
|
12
|
+
export { e as epistemicBeliefs } from './epistemicBeliefs-DtFVTp-k.js';
|
|
13
|
+
export { e as epistemicEdges } from './epistemicEdges-DcA8ErUG.js';
|
|
14
|
+
export { e as epistemicEvidence } from './epistemicEvidence-Bo638XDP.js';
|
|
15
|
+
export { e as epistemicHelpers } from './epistemicHelpers-Bd9xbaib.js';
|
|
16
|
+
export { e as epistemicLinking } from './epistemicLinking-CyeLOIzN.js';
|
|
17
|
+
export { e as epistemicNodes } from './epistemicNodes-BpD6Koud.js';
|
|
18
|
+
export { e as epistemicQuestions } from './epistemicQuestions-CmEeY6zQ.js';
|
|
19
|
+
export { e as epistemicSources } from './epistemicSources-ZazxHOK1.js';
|
|
20
|
+
export { g as globalId } from './globalId-DKh9d_uD.js';
|
|
21
|
+
export { g as graphTypes } from './graphTypes-CpgIuCdo.js';
|
|
22
|
+
export { h as helpers } from './helpers-BYHIk5vU.js';
|
|
23
|
+
export { l as logicalRoleInference } from './logicalRoleInference-CJxqWi3u.js';
|
|
24
|
+
export { o as ontologyApproval } from './ontologyApproval-Ba0Jjk1k.js';
|
|
25
|
+
export { o as ontologyMatching } from './ontology-matching-Buhu23ss.js';
|
|
26
|
+
export { o as ontologyRegistry } from './ontologyRegistry-B67rPJ16.js';
|
|
27
|
+
export { p as projectionReconciliation } from './projectionReconciliation-CxrXYGaB.js';
|
|
28
|
+
export { p as projectionStaleness } from './projectionStaleness-CAdpIsaW.js';
|
|
29
|
+
export { q as questionEvidenceLinks } from './questionEvidenceLinks-BdQD0TkM.js';
|
|
30
|
+
export { r as resolvers } from './resolvers-Br1a6eLV.js';
|
|
31
|
+
export { r as resolverTypes } from './resolverTypes-CC8Ea2E2.js';
|
|
32
|
+
export { t as textMatching } from './text-matching-CMn2WnVD.js';
|
|
33
|
+
export { t as topicScope } from './topicScope-By_zp4tt.js';
|
|
34
|
+
import '@lucern/confidence';
|
|
35
|
+
import './edges/propagationTypes.js';
|
|
36
|
+
import './convex.js';
|
|
37
|
+
import 'convex/values';
|
|
38
|
+
import './epistemicContracts.js';
|
|
39
|
+
import './evaluators/testRunnerEvaluator.js';
|
|
40
|
+
import './evaluators/lintCheckerEvaluator.js';
|
|
41
|
+
import './evaluators/sentryCheckerEvaluator.js';
|
|
42
|
+
import './evaluators/tscCheckerEvaluator.js';
|
|
43
|
+
import '@lucern/contracts/v1/ontologies/v1';
|
|
44
|
+
import './topicProjectOverlay.js';
|
|
45
|
+
import '@lucern/contracts/text-matching.contract';
|