@lucern/graph-primitives 1.0.21 → 1.0.23
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/beliefDecay.js +46 -0
- package/dist/beliefDecay.js.map +1 -1
- package/dist/beliefEvidenceLinks.js +87 -5
- package/dist/beliefEvidenceLinks.js.map +1 -1
- package/dist/beliefEvidenceLinks.operational.js +41 -5
- package/dist/beliefEvidenceLinks.operational.js.map +1 -1
- package/dist/contradictions.js +46 -0
- package/dist/contradictions.js.map +1 -1
- package/dist/edgeValidation.js +66 -1
- package/dist/edgeValidation.js.map +1 -1
- package/dist/entityBridge.js +66 -1
- package/dist/entityBridge.js.map +1 -1
- package/dist/entityLifecycle.js +90 -5
- package/dist/entityLifecycle.js.map +1 -1
- package/dist/epistemicAnswers.js +64 -11
- package/dist/epistemicAnswers.js.map +1 -1
- package/dist/epistemicBeliefs.admin.js +46 -0
- package/dist/epistemicBeliefs.admin.js.map +1 -1
- package/dist/epistemicBeliefs.backfills.js +46 -0
- package/dist/epistemicBeliefs.backfills.js.map +1 -1
- package/dist/epistemicBeliefs.confidence.d.ts +1 -1
- package/dist/epistemicBeliefs.confidence.js +53 -6
- package/dist/epistemicBeliefs.confidence.js.map +1 -1
- package/dist/epistemicBeliefs.core.js +91 -11
- package/dist/epistemicBeliefs.core.js.map +1 -1
- package/dist/epistemicBeliefs.d.ts +1 -1
- package/dist/epistemicBeliefs.forkEvidence.js.map +1 -1
- package/dist/epistemicBeliefs.helpers.d.ts +2 -2
- package/dist/epistemicBeliefs.helpers.js +46 -0
- package/dist/epistemicBeliefs.helpers.js.map +1 -1
- package/dist/epistemicBeliefs.internal.js +90 -10
- package/dist/epistemicBeliefs.internal.js.map +1 -1
- package/dist/epistemicBeliefs.js +103 -22
- package/dist/epistemicBeliefs.js.map +1 -1
- package/dist/epistemicBeliefs.lifecycle.js +53 -6
- package/dist/epistemicBeliefs.lifecycle.js.map +1 -1
- package/dist/epistemicBeliefs.links.js +85 -4
- package/dist/epistemicBeliefs.links.js.map +1 -1
- package/dist/epistemicBeliefs.topicAnchor.js +39 -8
- package/dist/epistemicBeliefs.topicAnchor.js.map +1 -1
- package/dist/epistemicContracts.evaluators.js +53 -6
- package/dist/epistemicContracts.evaluators.js.map +1 -1
- package/dist/epistemicContracts.handlers.js +54 -10
- package/dist/epistemicContracts.handlers.js.map +1 -1
- package/dist/epistemicContracts.js +54 -10
- package/dist/epistemicContracts.js.map +1 -1
- package/dist/epistemicEdges.d.ts +1 -1
- package/dist/epistemicEdges.handlers.js +48 -3
- package/dist/epistemicEdges.handlers.js.map +1 -1
- package/dist/epistemicEdges.helpers.d.ts +3 -3
- package/dist/epistemicEdges.js +162 -4
- package/dist/epistemicEdges.js.map +1 -1
- package/dist/epistemicEdges.mutations.js +112 -1
- package/dist/epistemicEdges.mutations.js.map +1 -1
- package/dist/epistemicEdges.queries.js +46 -0
- package/dist/epistemicEdges.queries.js.map +1 -1
- package/dist/epistemicEdges.types.d.ts +1 -1
- package/dist/epistemicEvidence.d.ts +1 -1
- package/dist/epistemicEvidence.js +168 -14
- package/dist/epistemicEvidence.js.map +1 -1
- package/dist/epistemicEvidenceHelpers.d.ts +1 -1
- package/dist/epistemicEvidenceHelpers.js +46 -0
- package/dist/epistemicEvidenceHelpers.js.map +1 -1
- package/dist/epistemicEvidenceMutations.js +168 -14
- package/dist/epistemicEvidenceMutations.js.map +1 -1
- package/dist/epistemicEvidenceQueries.js +46 -0
- package/dist/epistemicEvidenceQueries.js.map +1 -1
- package/dist/epistemicHelpers.js +11 -6
- package/dist/epistemicHelpers.js.map +1 -1
- package/dist/epistemicInsert.d.ts +8 -0
- package/dist/epistemicInsert.js +45 -0
- package/dist/epistemicInsert.js.map +1 -0
- package/dist/epistemicNodeCreation.js +11 -6
- package/dist/epistemicNodeCreation.js.map +1 -1
- package/dist/epistemicNodes.helpers.d.ts +1 -1
- package/dist/epistemicNodes.internal.js +53 -1
- package/dist/epistemicNodes.internal.js.map +1 -1
- package/dist/epistemicNodes.js +56 -4
- package/dist/epistemicNodes.js.map +1 -1
- package/dist/epistemicNodes.mutations.js +55 -3
- package/dist/epistemicNodes.mutations.js.map +1 -1
- package/dist/epistemicNodes.queries.js +46 -0
- package/dist/epistemicNodes.queries.js.map +1 -1
- package/dist/epistemicNodes.validators.d.ts +1 -1
- package/dist/epistemicQuestions.conviction.js +46 -0
- package/dist/epistemicQuestions.conviction.js.map +1 -1
- package/dist/epistemicQuestions.create.js +58 -7
- package/dist/epistemicQuestions.create.js.map +1 -1
- package/dist/epistemicQuestions.d.ts +1 -1
- package/dist/epistemicQuestions.evidence.js +53 -2
- package/dist/epistemicQuestions.evidence.js.map +1 -1
- package/dist/epistemicQuestions.helpers.d.ts +1 -1
- package/dist/epistemicQuestions.helpers.js +46 -0
- package/dist/epistemicQuestions.helpers.js.map +1 -1
- package/dist/epistemicQuestions.js +60 -9
- package/dist/epistemicQuestions.js.map +1 -1
- package/dist/epistemicQuestions.lifecycle.js +46 -0
- package/dist/epistemicQuestions.lifecycle.js.map +1 -1
- package/dist/epistemicQuestions.queries.js +46 -0
- package/dist/epistemicQuestions.queries.js.map +1 -1
- package/dist/epistemicQuestions.sprint.js +46 -0
- package/dist/epistemicQuestions.sprint.js.map +1 -1
- package/dist/epistemicQuestions.tail.js +53 -2
- package/dist/epistemicQuestions.tail.js.map +1 -1
- package/dist/epistemicSources.js +53 -2
- package/dist/epistemicSources.js.map +1 -1
- package/dist/helpers.js +66 -1
- package/dist/helpers.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +304 -76
- package/dist/index.js.map +1 -1
- package/dist/proof-attestation.json +1 -1
- package/dist/questionEvidenceLinks.js +46 -0
- package/dist/questionEvidenceLinks.js.map +1 -1
- package/dist/scopeResolverCompat.d.ts +1 -1
- package/dist/scopeResolverCompat.js +46 -0
- package/dist/scopeResolverCompat.js.map +1 -1
- package/dist/{topicScope-By_zp4tt.d.ts → topicScope-7zhyeGl7.d.ts} +1 -1
- package/dist/topicScope.d.ts +1 -1
- package/dist/topicScope.js +46 -0
- package/dist/topicScope.js.map +1 -1
- package/dist/workflowBridge.js +46 -0
- package/dist/workflowBridge.js.map +1 -1
- package/dist/workspaceIsolation.d.ts +1 -1
- package/dist/workspaceIsolation.js +46 -0
- package/dist/workspaceIsolation.js.map +1 -1
- package/package.json +4 -4
|
@@ -2,8 +2,9 @@ import { v } from 'convex/values';
|
|
|
2
2
|
import { checkProjectAccess, checkScopeAccess } from '@lucern/access-control/access';
|
|
3
3
|
import { permissiveReturn } from '@lucern/contracts/schema-helpers/validators';
|
|
4
4
|
import { componentsGeneric, anyApi, mutationGeneric, internalMutationGeneric } from 'convex/server';
|
|
5
|
-
import { generateGlobalId } from '@lucern/contracts/ids';
|
|
5
|
+
import { generateGlobalId, assertUuidV7Identity } from '@lucern/contracts/ids';
|
|
6
6
|
import { isNodeType, getLayerForNodeType } from '@lucern/contracts/schema-helpers/spine/tables/epistemicNodes';
|
|
7
|
+
import '@lucern/contracts';
|
|
7
8
|
|
|
8
9
|
// src/epistemicQuestions.create.ts
|
|
9
10
|
var api = anyApi;
|
|
@@ -53,6 +54,35 @@ async function scheduleEmbeddingGeneration(args) {
|
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
56
|
var LEGACY_SCOPE_FIELD = "graphScopeProjectId";
|
|
57
|
+
async function resolveTopicNodeScopeOrNull(ctx, ref) {
|
|
58
|
+
if (!ctx?.db || typeof ctx.db.query !== "function") {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
let node = null;
|
|
62
|
+
try {
|
|
63
|
+
const byGlobalId = await ctx.db.query("epistemicNodes").withIndex("by_globalId", (q) => q.eq("globalId", ref)).first();
|
|
64
|
+
if (byGlobalId && byGlobalId.nodeType === "topic") {
|
|
65
|
+
node = byGlobalId;
|
|
66
|
+
}
|
|
67
|
+
} catch (error) {
|
|
68
|
+
debugGraphPrimitiveFallback(
|
|
69
|
+
"[topicScope] topic-node scope lookup by globalId failed",
|
|
70
|
+
{ error, ref }
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
if (!node) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
const scopeKey = normalizeScopeValue(node.topicId) ?? normalizeScopeValue(node.globalId);
|
|
77
|
+
if (!scopeKey) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
topicId: scopeKey,
|
|
82
|
+
projectId: asMappedProjectId(node),
|
|
83
|
+
source: "topic_node"
|
|
84
|
+
};
|
|
85
|
+
}
|
|
56
86
|
function asMappedProjectId(topic) {
|
|
57
87
|
if (!topic) {
|
|
58
88
|
return;
|
|
@@ -193,6 +223,13 @@ async function resolveTopicProjectScope(ctx, args) {
|
|
|
193
223
|
) ?? null;
|
|
194
224
|
}
|
|
195
225
|
if (!topic) {
|
|
226
|
+
const nodeScope = await resolveTopicNodeScopeOrNull(
|
|
227
|
+
ctx,
|
|
228
|
+
String(args.topicId)
|
|
229
|
+
);
|
|
230
|
+
if (nodeScope) {
|
|
231
|
+
return nodeScope;
|
|
232
|
+
}
|
|
196
233
|
throw new Error(`Topic not found: ${String(args.topicId)}`);
|
|
197
234
|
}
|
|
198
235
|
const inherited = await resolveInheritedWorkspaceScope(ctx, topic);
|
|
@@ -263,6 +300,16 @@ async function resolveTopicProjectScope(ctx, args) {
|
|
|
263
300
|
source: "project_mapped_topic"
|
|
264
301
|
};
|
|
265
302
|
}
|
|
303
|
+
const nodeScope = await resolveTopicNodeScopeOrNull(
|
|
304
|
+
ctx,
|
|
305
|
+
String(args.projectId)
|
|
306
|
+
);
|
|
307
|
+
if (nodeScope) {
|
|
308
|
+
return {
|
|
309
|
+
...nodeScope,
|
|
310
|
+
projectId: nodeScope.projectId ?? String(args.projectId)
|
|
311
|
+
};
|
|
312
|
+
}
|
|
266
313
|
throw new Error(
|
|
267
314
|
`Legacy project scope ${String(args.projectId)} has no mapped topic.`
|
|
268
315
|
);
|
|
@@ -748,6 +795,10 @@ function buildLinkedWorktreeMetadata(linkedWorktreeId) {
|
|
|
748
795
|
linkedWorktreeId
|
|
749
796
|
} : {};
|
|
750
797
|
}
|
|
798
|
+
async function insertEpistemicNode(ctx, doc) {
|
|
799
|
+
assertUuidV7Identity("epistemicNodes", doc.globalId);
|
|
800
|
+
return ctx.db.insert("epistemicNodes", doc);
|
|
801
|
+
}
|
|
751
802
|
|
|
752
803
|
// src/epistemicQuestions.create.ts
|
|
753
804
|
var create = mutation({
|
|
@@ -821,7 +872,7 @@ var create = mutation({
|
|
|
821
872
|
const globalId = generateGlobalId();
|
|
822
873
|
const contentHash = generateContentHash(args.question);
|
|
823
874
|
const category = normalizeCategory(args.category);
|
|
824
|
-
const nodeId = await ctx
|
|
875
|
+
const nodeId = await insertEpistemicNode(ctx, {
|
|
825
876
|
globalId,
|
|
826
877
|
topicId: scope.topicId,
|
|
827
878
|
projectId: scope.projectId,
|
|
@@ -989,7 +1040,7 @@ var createBatch = mutation({
|
|
|
989
1040
|
const globalId = generateGlobalId();
|
|
990
1041
|
const contentHash = generateContentHash(q.question);
|
|
991
1042
|
const category = normalizeCategory(q.category);
|
|
992
|
-
const nodeId = await ctx
|
|
1043
|
+
const nodeId = await insertEpistemicNode(ctx, {
|
|
993
1044
|
globalId,
|
|
994
1045
|
topicId: scope.topicId,
|
|
995
1046
|
projectId: scope.projectId,
|
|
@@ -1041,7 +1092,7 @@ var createBatch = mutation({
|
|
|
1041
1092
|
const beliefNode = await ctx.db.get(q.linkedBeliefNodeId);
|
|
1042
1093
|
if (beliefNode) {
|
|
1043
1094
|
await ctx.scheduler.runAfter(0, internal.neo4jEdgeAPI.createEdge, {
|
|
1044
|
-
globalId:
|
|
1095
|
+
globalId: generateGlobalId(),
|
|
1045
1096
|
fromGlobalId: beliefNode.globalId,
|
|
1046
1097
|
toGlobalId: globalId,
|
|
1047
1098
|
edgeType: "tests",
|
|
@@ -1105,7 +1156,7 @@ var internalCreate = internalMutation({
|
|
|
1105
1156
|
const globalId = generateGlobalId();
|
|
1106
1157
|
const contentHash = generateContentHash(args.question);
|
|
1107
1158
|
const category = normalizeCategory(args.category);
|
|
1108
|
-
const nodeId = await ctx
|
|
1159
|
+
const nodeId = await insertEpistemicNode(ctx, {
|
|
1109
1160
|
globalId,
|
|
1110
1161
|
topicId: scope.topicId,
|
|
1111
1162
|
projectId: scope.projectId,
|
|
@@ -1137,7 +1188,7 @@ var internalCreate = internalMutation({
|
|
|
1137
1188
|
const beliefNode = await ctx.db.get(args.linkedBeliefNodeId);
|
|
1138
1189
|
if (beliefNode) {
|
|
1139
1190
|
await ctx.scheduler.runAfter(0, internal.neo4jEdgeAPI.createEdge, {
|
|
1140
|
-
globalId:
|
|
1191
|
+
globalId: generateGlobalId(),
|
|
1141
1192
|
fromGlobalId: beliefNode.globalId,
|
|
1142
1193
|
toGlobalId: globalId,
|
|
1143
1194
|
edgeType: "tests",
|
|
@@ -1208,7 +1259,7 @@ var addQuestion = mutation({
|
|
|
1208
1259
|
const contentHash = generateContentHash(args.question);
|
|
1209
1260
|
const category = normalizeCategory(args.category);
|
|
1210
1261
|
const additionalMetadata = args.metadata && typeof args.metadata === "object" ? args.metadata : {};
|
|
1211
|
-
const nodeId = await ctx
|
|
1262
|
+
const nodeId = await insertEpistemicNode(ctx, {
|
|
1212
1263
|
globalId,
|
|
1213
1264
|
topicId: scope.topicId,
|
|
1214
1265
|
projectId: scope.projectId,
|