@lucern/graph-primitives 1.0.16 → 1.0.18
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/dist/beliefEvidenceLinks.js +144 -99
- package/dist/beliefEvidenceLinks.js.map +1 -1
- package/dist/beliefEvidenceLinks.operational.d.ts +29 -0
- package/dist/beliefEvidenceLinks.operational.js +157 -0
- package/dist/beliefEvidenceLinks.operational.js.map +1 -0
- package/dist/{beliefLifecycle-y8WLXqQj.d.ts → beliefLifecycle-CXwdDw5e.d.ts} +7 -4
- package/dist/beliefLifecycle.d.ts +1 -1
- package/dist/beliefLifecycle.js +75 -18
- package/dist/beliefLifecycle.js.map +1 -1
- package/dist/entityLifecycle.js +1 -12
- package/dist/entityLifecycle.js.map +1 -1
- package/dist/epistemicAnswers.js +1 -12
- package/dist/epistemicAnswers.js.map +1 -1
- package/dist/epistemicBeliefs.admin.js.map +1 -1
- package/dist/epistemicBeliefs.backfills.d.ts +1 -1
- package/dist/epistemicBeliefs.backfills.js +63 -35
- package/dist/epistemicBeliefs.backfills.js.map +1 -1
- package/dist/epistemicBeliefs.confidence.d.ts +1 -1
- package/dist/epistemicBeliefs.confidence.js +70 -41
- package/dist/epistemicBeliefs.confidence.js.map +1 -1
- package/dist/epistemicBeliefs.core.js +946 -566
- package/dist/epistemicBeliefs.core.js.map +1 -1
- package/dist/epistemicBeliefs.d.ts +2 -2
- package/dist/epistemicBeliefs.forkEvidence.d.ts +18 -0
- package/dist/epistemicBeliefs.forkEvidence.js +121 -0
- package/dist/epistemicBeliefs.forkEvidence.js.map +1 -0
- package/dist/epistemicBeliefs.helpers.d.ts +2 -2
- package/dist/epistemicBeliefs.helpers.js +60 -32
- package/dist/epistemicBeliefs.helpers.js.map +1 -1
- package/dist/epistemicBeliefs.internal.js +175 -51
- package/dist/epistemicBeliefs.internal.js.map +1 -1
- package/dist/epistemicBeliefs.js +437 -84
- package/dist/epistemicBeliefs.js.map +1 -1
- package/dist/epistemicBeliefs.lifecycle.d.ts +2 -2
- package/dist/epistemicBeliefs.lifecycle.js +75 -47
- package/dist/epistemicBeliefs.lifecycle.js.map +1 -1
- package/dist/epistemicBeliefs.links.js +47 -13
- package/dist/epistemicBeliefs.links.js.map +1 -1
- package/dist/epistemicBeliefs.topicAnchor.d.ts +29 -0
- package/dist/epistemicBeliefs.topicAnchor.js +105 -0
- package/dist/epistemicBeliefs.topicAnchor.js.map +1 -0
- package/dist/epistemicContracts.evaluators.js +71 -42
- package/dist/epistemicContracts.evaluators.js.map +1 -1
- package/dist/epistemicContracts.handlers.js +72 -54
- package/dist/epistemicContracts.handlers.js.map +1 -1
- package/dist/epistemicContracts.js +72 -54
- package/dist/epistemicContracts.js.map +1 -1
- package/dist/epistemicContracts.metrics.js +1 -1
- package/dist/epistemicContracts.metrics.js.map +1 -1
- package/dist/epistemicContracts.types.d.ts +1 -1
- package/dist/epistemicEdgeCreation.js +1 -12
- package/dist/epistemicEdgeCreation.js.map +1 -1
- package/dist/epistemicEdges.helpers.d.ts +1 -1
- package/dist/epistemicEvidence.js +173 -93
- package/dist/epistemicEvidence.js.map +1 -1
- package/dist/epistemicEvidenceMutations.js +173 -93
- package/dist/epistemicEvidenceMutations.js.map +1 -1
- package/dist/epistemicHelpers.js +1 -12
- package/dist/epistemicHelpers.js.map +1 -1
- package/dist/epistemicNodeCreation.js +1 -10
- package/dist/epistemicNodeCreation.js.map +1 -1
- package/dist/epistemicNodes.internal.js.map +1 -1
- package/dist/epistemicNodes.js +2 -2
- package/dist/epistemicNodes.js.map +1 -1
- package/dist/epistemicNodes.mutations.js +2 -2
- package/dist/epistemicNodes.mutations.js.map +1 -1
- package/dist/epistemicQuestions.create.js +1 -12
- package/dist/epistemicQuestions.create.js.map +1 -1
- package/dist/epistemicQuestions.evidence.js +1 -12
- package/dist/epistemicQuestions.evidence.js.map +1 -1
- package/dist/epistemicQuestions.js +1 -12
- package/dist/epistemicQuestions.js.map +1 -1
- package/dist/epistemicQuestions.tail.js +1 -12
- package/dist/epistemicQuestions.tail.js.map +1 -1
- package/dist/epistemicSources.js +1 -12
- package/dist/epistemicSources.js.map +1 -1
- package/dist/evaluators/index.js +1 -1
- package/dist/evaluators/index.js.map +1 -1
- package/dist/globalId-4y9SPpC_.d.ts +10 -0
- package/dist/globalId.d.ts +1 -1
- package/dist/globalId.js +1 -13
- package/dist/globalId.js.map +1 -1
- package/dist/helpers.js +1 -12
- package/dist/helpers.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +771 -247
- package/dist/index.js.map +1 -1
- package/dist/invariantEnforcement.js +2 -2
- package/dist/invariantEnforcement.js.map +1 -1
- package/dist/proof-attestation.json +3 -3
- package/package.json +4 -4
- package/dist/globalId-DKh9d_uD.d.ts +0 -20
|
@@ -3,6 +3,7 @@ import { componentsGeneric, anyApi, mutationGeneric, internalMutationGeneric, qu
|
|
|
3
3
|
import { v } from 'convex/values';
|
|
4
4
|
import { requireProjectAccess, checkProjectAccess, checkScopeAccess } from '@lucern/access-control/access';
|
|
5
5
|
import { permissiveReturn } from '@lucern/contracts/schema-helpers/validators';
|
|
6
|
+
import { generateGlobalId } from '@lucern/contracts/ids';
|
|
6
7
|
import { isNodeType, getLayerForNodeType } from '@lucern/contracts/schema-helpers/spine/tables/epistemicNodes';
|
|
7
8
|
import { listAudienceRegistryRows } from '@lucern/access-control/audienceRegistry';
|
|
8
9
|
|
|
@@ -800,18 +801,6 @@ async function scheduleEmbeddingGeneration(args) {
|
|
|
800
801
|
);
|
|
801
802
|
}
|
|
802
803
|
}
|
|
803
|
-
|
|
804
|
-
// src/globalId.ts
|
|
805
|
-
function generateGlobalId() {
|
|
806
|
-
const bytes = new Uint8Array(16);
|
|
807
|
-
crypto.getRandomValues(bytes);
|
|
808
|
-
bytes[6] = bytes[6] & 15 | 64;
|
|
809
|
-
bytes[8] = bytes[8] & 63 | 128;
|
|
810
|
-
const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join(
|
|
811
|
-
""
|
|
812
|
-
);
|
|
813
|
-
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
814
|
-
}
|
|
815
804
|
function normalizeScopeValue2(value) {
|
|
816
805
|
if (typeof value !== "string") {
|
|
817
806
|
return;
|
|
@@ -907,6 +896,91 @@ function assertTenantPackWorkspaceMutationAllowed(args) {
|
|
|
907
896
|
}
|
|
908
897
|
|
|
909
898
|
// src/epistemicEvidenceMutations.ts
|
|
899
|
+
function assertSignedImpactScore(value, context) {
|
|
900
|
+
if (typeof value !== "number" || !Number.isFinite(value) || value === 0 || value < -1 || value > 1) {
|
|
901
|
+
throw new Error(`${context} requires explicit nonzero weight in [-1, 1]`);
|
|
902
|
+
}
|
|
903
|
+
return value;
|
|
904
|
+
}
|
|
905
|
+
function normalizeEvidenceRelation(relation, weight, context) {
|
|
906
|
+
if (relation === "supports" || relation === "contradicts") {
|
|
907
|
+
if (relation === "supports" && weight < 0) {
|
|
908
|
+
throw new Error(`${context} supports relation requires positive weight`);
|
|
909
|
+
}
|
|
910
|
+
if (relation === "contradicts" && weight > 0) {
|
|
911
|
+
throw new Error(`${context} contradicts relation requires negative weight`);
|
|
912
|
+
}
|
|
913
|
+
return relation;
|
|
914
|
+
}
|
|
915
|
+
return weight < 0 ? "contradicts" : "supports";
|
|
916
|
+
}
|
|
917
|
+
async function createEvidenceBeliefEdge(ctx, args) {
|
|
918
|
+
const edgeGlobalId = crypto.randomUUID();
|
|
919
|
+
const confidence = Math.abs(args.weight);
|
|
920
|
+
const existingEdges = await ctx.db.query("epistemicEdges").withIndex(
|
|
921
|
+
"by_from_to",
|
|
922
|
+
(q) => q.eq("fromNodeId", args.evidenceNodeId).eq("toNodeId", args.beliefNodeId)
|
|
923
|
+
).collect();
|
|
924
|
+
const existing = existingEdges.find((edge) => edge.edgeType === "informs");
|
|
925
|
+
const edgeDoc = {
|
|
926
|
+
globalId: edgeGlobalId,
|
|
927
|
+
fromNodeId: args.evidenceNodeId,
|
|
928
|
+
toNodeId: args.beliefNodeId,
|
|
929
|
+
sourceGlobalId: args.evidenceGlobalId,
|
|
930
|
+
targetGlobalId: args.beliefGlobalId,
|
|
931
|
+
edgeType: "informs",
|
|
932
|
+
weight: args.weight,
|
|
933
|
+
confidence,
|
|
934
|
+
context: args.rationale,
|
|
935
|
+
reasoningMethod: "testimonial",
|
|
936
|
+
derivationType: "evidence_sl_scoring",
|
|
937
|
+
metadata: {
|
|
938
|
+
relation: args.relation,
|
|
939
|
+
confidence,
|
|
940
|
+
impactScore: args.weight,
|
|
941
|
+
invariant: "evidence.belief_impact_required"
|
|
942
|
+
},
|
|
943
|
+
createdBy: args.userId,
|
|
944
|
+
createdAt: Date.now(),
|
|
945
|
+
updatedAt: Date.now(),
|
|
946
|
+
topicId: args.topicId,
|
|
947
|
+
projectId: args.projectId,
|
|
948
|
+
fromNodeType: "evidence",
|
|
949
|
+
toNodeType: "belief",
|
|
950
|
+
fromLayer: "L2",
|
|
951
|
+
toLayer: "L3"
|
|
952
|
+
};
|
|
953
|
+
if (existing) {
|
|
954
|
+
await ctx.db.patch(existing._id, {
|
|
955
|
+
...edgeDoc,
|
|
956
|
+
globalId: existing.globalId,
|
|
957
|
+
createdAt: existing.createdAt ?? edgeDoc.createdAt
|
|
958
|
+
});
|
|
959
|
+
} else {
|
|
960
|
+
await ctx.db.insert("epistemicEdges", edgeDoc);
|
|
961
|
+
}
|
|
962
|
+
await ctx.scheduler.runAfter(5e3, internal.neo4jEdgeAPI.createEdge, {
|
|
963
|
+
globalId: existing?.globalId ?? edgeGlobalId,
|
|
964
|
+
fromGlobalId: args.evidenceGlobalId,
|
|
965
|
+
toGlobalId: args.beliefGlobalId,
|
|
966
|
+
edgeType: "informs",
|
|
967
|
+
weight: args.weight,
|
|
968
|
+
confidence,
|
|
969
|
+
createdBy: args.userId,
|
|
970
|
+
topicId: args.projectId ?? args.topicId,
|
|
971
|
+
fromNodeType: "evidence",
|
|
972
|
+
toNodeType: "belief",
|
|
973
|
+
fromLayer: "L2",
|
|
974
|
+
toLayer: "L3",
|
|
975
|
+
metadata: {
|
|
976
|
+
relation: args.relation,
|
|
977
|
+
confidence,
|
|
978
|
+
impactScore: args.weight,
|
|
979
|
+
invariant: "evidence.belief_impact_required"
|
|
980
|
+
}
|
|
981
|
+
});
|
|
982
|
+
return existing?.globalId ?? edgeGlobalId;
|
|
983
|
+
}
|
|
910
984
|
var create = mutation({
|
|
911
985
|
args: {
|
|
912
986
|
...optionalEvidenceScopeArgs,
|
|
@@ -927,11 +1001,12 @@ var create = mutation({
|
|
|
927
1001
|
informationAsymmetry: v.optional(v.string()),
|
|
928
1002
|
sourceDescription: v.optional(v.string()),
|
|
929
1003
|
metadata: v.optional(v.any()),
|
|
930
|
-
//
|
|
931
|
-
linkedBeliefNodeId: v.
|
|
1004
|
+
// Required belief impact link.
|
|
1005
|
+
linkedBeliefNodeId: v.id("epistemicNodes"),
|
|
932
1006
|
evidenceRelation: v.optional(
|
|
933
1007
|
v.union(v.literal("supports"), v.literal("contradicts"))
|
|
934
1008
|
),
|
|
1009
|
+
weight: v.number(),
|
|
935
1010
|
confidence: v.optional(v.number())
|
|
936
1011
|
},
|
|
937
1012
|
returns: permissiveReturn,
|
|
@@ -953,6 +1028,16 @@ var create = mutation({
|
|
|
953
1028
|
const contentHash = generateContentHash(args.text);
|
|
954
1029
|
const kind = normalizeKind(args.kind);
|
|
955
1030
|
const sourceType = normalizeSourceType(args.sourceType);
|
|
1031
|
+
const weight = assertSignedImpactScore(args.weight, "Evidence creation");
|
|
1032
|
+
const evidenceRelation = normalizeEvidenceRelation(
|
|
1033
|
+
args.evidenceRelation,
|
|
1034
|
+
weight,
|
|
1035
|
+
"Evidence creation"
|
|
1036
|
+
);
|
|
1037
|
+
const linkedBeliefNode = await ctx.db.get(args.linkedBeliefNodeId);
|
|
1038
|
+
if (!linkedBeliefNode || linkedBeliefNode.nodeType !== "belief") {
|
|
1039
|
+
throw new Error("Evidence creation requires a linked belief node");
|
|
1040
|
+
}
|
|
956
1041
|
const additionalMetadata = args.metadata && typeof args.metadata === "object" ? args.metadata : {};
|
|
957
1042
|
const nodeId = await ctx.db.insert("epistemicNodes", {
|
|
958
1043
|
globalId,
|
|
@@ -980,8 +1065,10 @@ var create = mutation({
|
|
|
980
1065
|
sourceQuestionId: args.sourceQuestionId,
|
|
981
1066
|
rationale: args.rationale,
|
|
982
1067
|
linkedBeliefNodeId: args.linkedBeliefNodeId,
|
|
983
|
-
evidenceRelation
|
|
984
|
-
confidence:
|
|
1068
|
+
evidenceRelation,
|
|
1069
|
+
confidence: Math.abs(weight),
|
|
1070
|
+
weight,
|
|
1071
|
+
impactScore: weight,
|
|
985
1072
|
methodology: args.methodology,
|
|
986
1073
|
informationAsymmetry: args.informationAsymmetry,
|
|
987
1074
|
sourceDescription: args.sourceDescription,
|
|
@@ -1001,29 +1088,18 @@ var create = mutation({
|
|
|
1001
1088
|
nodeType: "evidence",
|
|
1002
1089
|
text: args.text
|
|
1003
1090
|
});
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
fromNodeType: "evidence",
|
|
1017
|
-
toNodeType: "belief",
|
|
1018
|
-
fromLayer: "L2",
|
|
1019
|
-
toLayer: "L3",
|
|
1020
|
-
metadata: {
|
|
1021
|
-
relation: args.evidenceRelation,
|
|
1022
|
-
confidence: args.confidence
|
|
1023
|
-
}
|
|
1024
|
-
});
|
|
1025
|
-
}
|
|
1026
|
-
}
|
|
1091
|
+
await createEvidenceBeliefEdge(ctx, {
|
|
1092
|
+
evidenceNodeId: nodeId,
|
|
1093
|
+
evidenceGlobalId: globalId,
|
|
1094
|
+
beliefNodeId: args.linkedBeliefNodeId,
|
|
1095
|
+
beliefGlobalId: linkedBeliefNode.globalId,
|
|
1096
|
+
relation: evidenceRelation,
|
|
1097
|
+
weight,
|
|
1098
|
+
userId: args.userId,
|
|
1099
|
+
topicId: scope.topicId ? String(scope.topicId) : void 0,
|
|
1100
|
+
projectId: scope.projectId ? String(scope.projectId) : void 0,
|
|
1101
|
+
rationale: args.rationale
|
|
1102
|
+
});
|
|
1027
1103
|
await ctx.db.insert("epistemicAudit", {
|
|
1028
1104
|
entityType: "evidence",
|
|
1029
1105
|
entityId: nodeId,
|
|
@@ -1038,7 +1114,8 @@ var create = mutation({
|
|
|
1038
1114
|
kind,
|
|
1039
1115
|
sourceType,
|
|
1040
1116
|
linkedBeliefNodeId: args.linkedBeliefNodeId,
|
|
1041
|
-
evidenceRelation
|
|
1117
|
+
evidenceRelation,
|
|
1118
|
+
weight
|
|
1042
1119
|
}
|
|
1043
1120
|
});
|
|
1044
1121
|
if (scope.projectId || scope.topicId) {
|
|
@@ -1081,6 +1158,7 @@ var createAndLink = mutation({
|
|
|
1081
1158
|
userId: v.string(),
|
|
1082
1159
|
beliefNodeId: v.id("epistemicNodes"),
|
|
1083
1160
|
relation: v.union(v.literal("supports"), v.literal("contradicts")),
|
|
1161
|
+
weight: v.number(),
|
|
1084
1162
|
confidence: v.optional(v.number())
|
|
1085
1163
|
},
|
|
1086
1164
|
returns: permissiveReturn,
|
|
@@ -1095,7 +1173,17 @@ var createAndLink = mutation({
|
|
|
1095
1173
|
const contentHash = generateContentHash(args.text);
|
|
1096
1174
|
const kind = normalizeKind(args.kind);
|
|
1097
1175
|
const sourceType = normalizeSourceType(args.sourceType);
|
|
1098
|
-
const
|
|
1176
|
+
const weight = assertSignedImpactScore(args.weight, "Evidence createAndLink");
|
|
1177
|
+
const relation = normalizeEvidenceRelation(
|
|
1178
|
+
args.relation,
|
|
1179
|
+
weight,
|
|
1180
|
+
"Evidence createAndLink"
|
|
1181
|
+
);
|
|
1182
|
+
const confidence = Math.abs(weight);
|
|
1183
|
+
const beliefNode = await ctx.db.get(args.beliefNodeId);
|
|
1184
|
+
if (!beliefNode || beliefNode.nodeType !== "belief") {
|
|
1185
|
+
throw new Error("Belief node not found for edge creation");
|
|
1186
|
+
}
|
|
1099
1187
|
const nodeId = await ctx.db.insert("epistemicNodes", {
|
|
1100
1188
|
globalId,
|
|
1101
1189
|
topicId: scope.topicId,
|
|
@@ -1115,36 +1203,26 @@ var createAndLink = mutation({
|
|
|
1115
1203
|
kind,
|
|
1116
1204
|
tags: args.tags || [],
|
|
1117
1205
|
linkedBeliefNodeId: args.beliefNodeId,
|
|
1118
|
-
evidenceRelation:
|
|
1119
|
-
confidence
|
|
1206
|
+
evidenceRelation: relation,
|
|
1207
|
+
confidence,
|
|
1208
|
+
weight,
|
|
1209
|
+
impactScore: weight
|
|
1120
1210
|
}
|
|
1121
1211
|
});
|
|
1122
1212
|
await ctx.scheduler.runAfter(0, internal.neo4jSync.syncNodeToNeo4j, {
|
|
1123
1213
|
nodeId,
|
|
1124
1214
|
operation: "upsert"
|
|
1125
1215
|
});
|
|
1126
|
-
const
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
await ctx.scheduler.runAfter(5e3, internal.neo4jEdgeAPI.createEdge, {
|
|
1133
|
-
globalId: edgeGlobalId,
|
|
1134
|
-
fromGlobalId: globalId,
|
|
1135
|
-
toGlobalId: beliefNode.globalId,
|
|
1136
|
-
edgeType: "informs",
|
|
1216
|
+
const edgeGlobalId = await createEvidenceBeliefEdge(ctx, {
|
|
1217
|
+
evidenceNodeId: nodeId,
|
|
1218
|
+
evidenceGlobalId: globalId,
|
|
1219
|
+
beliefNodeId: args.beliefNodeId,
|
|
1220
|
+
beliefGlobalId: beliefNode.globalId,
|
|
1221
|
+
relation,
|
|
1137
1222
|
weight,
|
|
1138
|
-
|
|
1139
|
-
topicId: scope.
|
|
1140
|
-
|
|
1141
|
-
toNodeType: "belief",
|
|
1142
|
-
fromLayer: "L2",
|
|
1143
|
-
toLayer: "L3",
|
|
1144
|
-
metadata: {
|
|
1145
|
-
relation: args.relation,
|
|
1146
|
-
confidence
|
|
1147
|
-
}
|
|
1223
|
+
userId: args.userId,
|
|
1224
|
+
topicId: scope.topicId ? String(scope.topicId) : void 0,
|
|
1225
|
+
projectId: scope.projectId ? String(scope.projectId) : void 0
|
|
1148
1226
|
});
|
|
1149
1227
|
await markProjectGraphDirty(ctx, scope.projectId, String(scope.topicId));
|
|
1150
1228
|
return { nodeId, edgeGlobalId };
|
|
@@ -1205,8 +1283,9 @@ var internalCreate = internalMutation({
|
|
|
1205
1283
|
sourceQuestionId: v.optional(v.string()),
|
|
1206
1284
|
userId: v.string(),
|
|
1207
1285
|
rationale: v.string(),
|
|
1208
|
-
linkedBeliefNodeId: v.
|
|
1286
|
+
linkedBeliefNodeId: v.id("epistemicNodes"),
|
|
1209
1287
|
evidenceRelation: v.optional(v.string()),
|
|
1288
|
+
weight: v.number(),
|
|
1210
1289
|
confidence: v.optional(v.number()),
|
|
1211
1290
|
metadata: v.optional(v.any()),
|
|
1212
1291
|
runtimeToolName: v.optional(v.string()),
|
|
@@ -1241,6 +1320,16 @@ var internalCreate = internalMutation({
|
|
|
1241
1320
|
const contentHash = generateContentHash(args.text);
|
|
1242
1321
|
const kind = normalizeKind(args.kind);
|
|
1243
1322
|
const sourceType = normalizeSourceType(args.sourceType);
|
|
1323
|
+
const weight = assertSignedImpactScore(args.weight, "Internal evidence creation");
|
|
1324
|
+
const evidenceRelation = normalizeEvidenceRelation(
|
|
1325
|
+
args.evidenceRelation,
|
|
1326
|
+
weight,
|
|
1327
|
+
"Internal evidence creation"
|
|
1328
|
+
);
|
|
1329
|
+
const linkedBeliefNode = await ctx.db.get(args.linkedBeliefNodeId);
|
|
1330
|
+
if (!linkedBeliefNode || linkedBeliefNode.nodeType !== "belief") {
|
|
1331
|
+
throw new Error("Internal evidence creation requires a linked belief node");
|
|
1332
|
+
}
|
|
1244
1333
|
const additionalMetadata = args.metadata && typeof args.metadata === "object" ? args.metadata : {};
|
|
1245
1334
|
const nodeId = await ctx.db.insert("epistemicNodes", {
|
|
1246
1335
|
globalId,
|
|
@@ -1268,8 +1357,10 @@ var internalCreate = internalMutation({
|
|
|
1268
1357
|
sourceQuestionId: args.sourceQuestionId,
|
|
1269
1358
|
rationale: args.rationale,
|
|
1270
1359
|
linkedBeliefNodeId: args.linkedBeliefNodeId,
|
|
1271
|
-
evidenceRelation
|
|
1272
|
-
confidence:
|
|
1360
|
+
evidenceRelation,
|
|
1361
|
+
confidence: Math.abs(weight),
|
|
1362
|
+
weight,
|
|
1363
|
+
impactScore: weight,
|
|
1273
1364
|
...additionalMetadata
|
|
1274
1365
|
}
|
|
1275
1366
|
});
|
|
@@ -1289,8 +1380,9 @@ var internalCreate = internalMutation({
|
|
|
1289
1380
|
externalSourceType: args.externalSourceType,
|
|
1290
1381
|
sourceUrl: args.sourceUrl,
|
|
1291
1382
|
linkedBeliefNodeId: args.linkedBeliefNodeId,
|
|
1292
|
-
evidenceRelation
|
|
1293
|
-
confidence:
|
|
1383
|
+
evidenceRelation,
|
|
1384
|
+
confidence: Math.abs(weight),
|
|
1385
|
+
weight
|
|
1294
1386
|
},
|
|
1295
1387
|
triggeringAction: "epistemicEvidence.internalCreate"
|
|
1296
1388
|
});
|
|
@@ -1298,30 +1390,18 @@ var internalCreate = internalMutation({
|
|
|
1298
1390
|
nodeId,
|
|
1299
1391
|
operation: "upsert"
|
|
1300
1392
|
});
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
topicId: scope.projectId ? String(scope.projectId) : void 0,
|
|
1314
|
-
fromNodeType: "evidence",
|
|
1315
|
-
toNodeType: "belief",
|
|
1316
|
-
fromLayer: "L2",
|
|
1317
|
-
toLayer: "L3",
|
|
1318
|
-
metadata: {
|
|
1319
|
-
relation: args.evidenceRelation,
|
|
1320
|
-
confidence
|
|
1321
|
-
}
|
|
1322
|
-
});
|
|
1323
|
-
}
|
|
1324
|
-
}
|
|
1393
|
+
await createEvidenceBeliefEdge(ctx, {
|
|
1394
|
+
evidenceNodeId: nodeId,
|
|
1395
|
+
evidenceGlobalId: globalId,
|
|
1396
|
+
beliefNodeId: args.linkedBeliefNodeId,
|
|
1397
|
+
beliefGlobalId: linkedBeliefNode.globalId,
|
|
1398
|
+
relation: evidenceRelation,
|
|
1399
|
+
weight,
|
|
1400
|
+
userId: args.userId,
|
|
1401
|
+
topicId: scope.topicId ? String(scope.topicId) : void 0,
|
|
1402
|
+
projectId: scope.projectId ? String(scope.projectId) : void 0,
|
|
1403
|
+
rationale: args.rationale
|
|
1404
|
+
});
|
|
1325
1405
|
if (scope.projectId || scope.topicId) {
|
|
1326
1406
|
await ctx.scheduler.runAfter(
|
|
1327
1407
|
0,
|