@lucern/graph-primitives 1.0.22 → 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.
Files changed (127) hide show
  1. package/dist/beliefDecay.js +46 -0
  2. package/dist/beliefDecay.js.map +1 -1
  3. package/dist/beliefEvidenceLinks.js +87 -5
  4. package/dist/beliefEvidenceLinks.js.map +1 -1
  5. package/dist/beliefEvidenceLinks.operational.js +41 -5
  6. package/dist/beliefEvidenceLinks.operational.js.map +1 -1
  7. package/dist/contradictions.js +46 -0
  8. package/dist/contradictions.js.map +1 -1
  9. package/dist/edgeValidation.js +66 -1
  10. package/dist/edgeValidation.js.map +1 -1
  11. package/dist/entityBridge.js +66 -1
  12. package/dist/entityBridge.js.map +1 -1
  13. package/dist/entityLifecycle.js +90 -5
  14. package/dist/entityLifecycle.js.map +1 -1
  15. package/dist/epistemicAnswers.js +64 -11
  16. package/dist/epistemicAnswers.js.map +1 -1
  17. package/dist/epistemicBeliefs.admin.js +46 -0
  18. package/dist/epistemicBeliefs.admin.js.map +1 -1
  19. package/dist/epistemicBeliefs.backfills.js +46 -0
  20. package/dist/epistemicBeliefs.backfills.js.map +1 -1
  21. package/dist/epistemicBeliefs.confidence.d.ts +1 -1
  22. package/dist/epistemicBeliefs.confidence.js +53 -6
  23. package/dist/epistemicBeliefs.confidence.js.map +1 -1
  24. package/dist/epistemicBeliefs.core.js +91 -11
  25. package/dist/epistemicBeliefs.core.js.map +1 -1
  26. package/dist/epistemicBeliefs.d.ts +1 -1
  27. package/dist/epistemicBeliefs.forkEvidence.js.map +1 -1
  28. package/dist/epistemicBeliefs.helpers.d.ts +2 -2
  29. package/dist/epistemicBeliefs.helpers.js +46 -0
  30. package/dist/epistemicBeliefs.helpers.js.map +1 -1
  31. package/dist/epistemicBeliefs.internal.js +90 -10
  32. package/dist/epistemicBeliefs.internal.js.map +1 -1
  33. package/dist/epistemicBeliefs.js +103 -22
  34. package/dist/epistemicBeliefs.js.map +1 -1
  35. package/dist/epistemicBeliefs.lifecycle.js +53 -6
  36. package/dist/epistemicBeliefs.lifecycle.js.map +1 -1
  37. package/dist/epistemicBeliefs.links.js +85 -4
  38. package/dist/epistemicBeliefs.links.js.map +1 -1
  39. package/dist/epistemicBeliefs.topicAnchor.js +39 -8
  40. package/dist/epistemicBeliefs.topicAnchor.js.map +1 -1
  41. package/dist/epistemicContracts.evaluators.js +53 -6
  42. package/dist/epistemicContracts.evaluators.js.map +1 -1
  43. package/dist/epistemicContracts.handlers.js +54 -10
  44. package/dist/epistemicContracts.handlers.js.map +1 -1
  45. package/dist/epistemicContracts.js +54 -10
  46. package/dist/epistemicContracts.js.map +1 -1
  47. package/dist/epistemicEdges.d.ts +1 -1
  48. package/dist/epistemicEdges.handlers.js +48 -3
  49. package/dist/epistemicEdges.handlers.js.map +1 -1
  50. package/dist/epistemicEdges.helpers.d.ts +3 -3
  51. package/dist/epistemicEdges.js +162 -4
  52. package/dist/epistemicEdges.js.map +1 -1
  53. package/dist/epistemicEdges.mutations.js +112 -1
  54. package/dist/epistemicEdges.mutations.js.map +1 -1
  55. package/dist/epistemicEdges.queries.js +46 -0
  56. package/dist/epistemicEdges.queries.js.map +1 -1
  57. package/dist/epistemicEdges.types.d.ts +1 -1
  58. package/dist/epistemicEvidence.d.ts +1 -1
  59. package/dist/epistemicEvidence.js +168 -14
  60. package/dist/epistemicEvidence.js.map +1 -1
  61. package/dist/epistemicEvidenceHelpers.d.ts +1 -1
  62. package/dist/epistemicEvidenceHelpers.js +46 -0
  63. package/dist/epistemicEvidenceHelpers.js.map +1 -1
  64. package/dist/epistemicEvidenceMutations.js +168 -14
  65. package/dist/epistemicEvidenceMutations.js.map +1 -1
  66. package/dist/epistemicEvidenceQueries.js +46 -0
  67. package/dist/epistemicEvidenceQueries.js.map +1 -1
  68. package/dist/epistemicHelpers.js +11 -6
  69. package/dist/epistemicHelpers.js.map +1 -1
  70. package/dist/epistemicInsert.d.ts +8 -0
  71. package/dist/epistemicInsert.js +45 -0
  72. package/dist/epistemicInsert.js.map +1 -0
  73. package/dist/epistemicNodeCreation.js +11 -6
  74. package/dist/epistemicNodeCreation.js.map +1 -1
  75. package/dist/epistemicNodes.helpers.d.ts +1 -1
  76. package/dist/epistemicNodes.internal.js +53 -1
  77. package/dist/epistemicNodes.internal.js.map +1 -1
  78. package/dist/epistemicNodes.js +56 -4
  79. package/dist/epistemicNodes.js.map +1 -1
  80. package/dist/epistemicNodes.mutations.js +55 -3
  81. package/dist/epistemicNodes.mutations.js.map +1 -1
  82. package/dist/epistemicNodes.queries.js +46 -0
  83. package/dist/epistemicNodes.queries.js.map +1 -1
  84. package/dist/epistemicNodes.validators.d.ts +1 -1
  85. package/dist/epistemicQuestions.conviction.js +46 -0
  86. package/dist/epistemicQuestions.conviction.js.map +1 -1
  87. package/dist/epistemicQuestions.create.js +58 -7
  88. package/dist/epistemicQuestions.create.js.map +1 -1
  89. package/dist/epistemicQuestions.d.ts +1 -1
  90. package/dist/epistemicQuestions.evidence.js +53 -2
  91. package/dist/epistemicQuestions.evidence.js.map +1 -1
  92. package/dist/epistemicQuestions.helpers.d.ts +1 -1
  93. package/dist/epistemicQuestions.helpers.js +46 -0
  94. package/dist/epistemicQuestions.helpers.js.map +1 -1
  95. package/dist/epistemicQuestions.js +60 -9
  96. package/dist/epistemicQuestions.js.map +1 -1
  97. package/dist/epistemicQuestions.lifecycle.js +46 -0
  98. package/dist/epistemicQuestions.lifecycle.js.map +1 -1
  99. package/dist/epistemicQuestions.queries.js +46 -0
  100. package/dist/epistemicQuestions.queries.js.map +1 -1
  101. package/dist/epistemicQuestions.sprint.js +46 -0
  102. package/dist/epistemicQuestions.sprint.js.map +1 -1
  103. package/dist/epistemicQuestions.tail.js +53 -2
  104. package/dist/epistemicQuestions.tail.js.map +1 -1
  105. package/dist/epistemicSources.js +53 -2
  106. package/dist/epistemicSources.js.map +1 -1
  107. package/dist/helpers.js +66 -1
  108. package/dist/helpers.js.map +1 -1
  109. package/dist/index.d.ts +1 -1
  110. package/dist/index.js +304 -76
  111. package/dist/index.js.map +1 -1
  112. package/dist/proof-attestation.json +1 -1
  113. package/dist/questionEvidenceLinks.js +46 -0
  114. package/dist/questionEvidenceLinks.js.map +1 -1
  115. package/dist/scopeResolverCompat.d.ts +1 -1
  116. package/dist/scopeResolverCompat.js +46 -0
  117. package/dist/scopeResolverCompat.js.map +1 -1
  118. package/dist/{topicScope-By_zp4tt.d.ts → topicScope-7zhyeGl7.d.ts} +1 -1
  119. package/dist/topicScope.d.ts +1 -1
  120. package/dist/topicScope.js +46 -0
  121. package/dist/topicScope.js.map +1 -1
  122. package/dist/workflowBridge.js +46 -0
  123. package/dist/workflowBridge.js.map +1 -1
  124. package/dist/workspaceIsolation.d.ts +1 -1
  125. package/dist/workspaceIsolation.js +46 -0
  126. package/dist/workspaceIsolation.js.map +1 -1
  127. package/package.json +4 -4
@@ -149,6 +149,35 @@ function debugGraphPrimitiveFallback(message, context) {
149
149
  console.debug(message, context ?? {});
150
150
  }
151
151
  var LEGACY_SCOPE_FIELD = "graphScopeProjectId";
152
+ async function resolveTopicNodeScopeOrNull(ctx, ref) {
153
+ if (!ctx?.db || typeof ctx.db.query !== "function") {
154
+ return null;
155
+ }
156
+ let node = null;
157
+ try {
158
+ const byGlobalId = await ctx.db.query("epistemicNodes").withIndex("by_globalId", (q) => q.eq("globalId", ref)).first();
159
+ if (byGlobalId && byGlobalId.nodeType === "topic") {
160
+ node = byGlobalId;
161
+ }
162
+ } catch (error) {
163
+ debugGraphPrimitiveFallback(
164
+ "[topicScope] topic-node scope lookup by globalId failed",
165
+ { error, ref }
166
+ );
167
+ }
168
+ if (!node) {
169
+ return null;
170
+ }
171
+ const scopeKey = normalizeScopeValue(node.topicId) ?? normalizeScopeValue(node.globalId);
172
+ if (!scopeKey) {
173
+ return null;
174
+ }
175
+ return {
176
+ topicId: scopeKey,
177
+ projectId: asMappedProjectId(node),
178
+ source: "topic_node"
179
+ };
180
+ }
152
181
  function asMappedProjectId(topic) {
153
182
  if (!topic) {
154
183
  return;
@@ -289,6 +318,13 @@ async function resolveTopicProjectScope(ctx, args) {
289
318
  ) ?? null;
290
319
  }
291
320
  if (!topic) {
321
+ const nodeScope = await resolveTopicNodeScopeOrNull(
322
+ ctx,
323
+ String(args.topicId)
324
+ );
325
+ if (nodeScope) {
326
+ return nodeScope;
327
+ }
292
328
  throw new Error(`Topic not found: ${String(args.topicId)}`);
293
329
  }
294
330
  const inherited = await resolveInheritedWorkspaceScope(ctx, topic);
@@ -359,6 +395,16 @@ async function resolveTopicProjectScope(ctx, args) {
359
395
  source: "project_mapped_topic"
360
396
  };
361
397
  }
398
+ const nodeScope = await resolveTopicNodeScopeOrNull(
399
+ ctx,
400
+ String(args.projectId)
401
+ );
402
+ if (nodeScope) {
403
+ return {
404
+ ...nodeScope,
405
+ projectId: nodeScope.projectId ?? String(args.projectId)
406
+ };
407
+ }
362
408
  throw new Error(
363
409
  `Legacy project scope ${String(args.projectId)} has no mapped topic.`
364
410
  );
@@ -1243,14 +1289,14 @@ async function applyBeliefConfidenceChange(ctx, args) {
1243
1289
  beliefConfidenceId
1244
1290
  };
1245
1291
  }
1246
- function propagationTriggerForEdge(edgeType, weight) {
1292
+ function propagationPressureLabel(edgeType, weight) {
1247
1293
  if (edgeType === "contradicts" || edgeType === "refutes") {
1248
- return "contradiction_detected";
1294
+ return "contradictory";
1249
1295
  }
1250
1296
  if ((edgeType === "supports" || edgeType === "informs") && weight < 0) {
1251
- return "contradiction_detected";
1297
+ return "contradictory";
1252
1298
  }
1253
- return "evidence_added";
1299
+ return "supportive";
1254
1300
  }
1255
1301
  internalMutation({
1256
1302
  args: {
@@ -1287,14 +1333,15 @@ internalMutation({
1287
1333
  getNode: async (nodeId) => await ctx.db.get(nodeId)
1288
1334
  });
1289
1335
  for (const dispatch of dispatches) {
1336
+ const pressureLabel = propagationPressureLabel(dispatch.edgeType, dispatch.weight);
1290
1337
  await applyBeliefConfidenceChange(ctx, {
1291
1338
  nodeId: dispatch.targetNodeId,
1292
1339
  belief: dispatch.opinion.b,
1293
1340
  disbelief: dispatch.opinion.d,
1294
1341
  uncertainty: dispatch.opinion.u,
1295
1342
  baseRate: dispatch.opinion.a,
1296
- trigger: propagationTriggerForEdge(dispatch.edgeType, dispatch.weight),
1297
- rationale: `SL propagation via ${dispatch.edgeType} edge: ${dispatch.rationale}`,
1343
+ trigger: "propagation",
1344
+ rationale: `SL propagation via ${dispatch.edgeType} edge (pressure: ${pressureLabel}): ${dispatch.rationale}`,
1298
1345
  authenticatedUserId: args.userId,
1299
1346
  slOperator: dispatch.operator
1300
1347
  });
@@ -2745,10 +2792,7 @@ var createEpistemicContract = mutation({
2745
2792
  createdBy: userId,
2746
2793
  updatedAt: now
2747
2794
  };
2748
- const insertedId = await ctx.db.insert(
2749
- "epistemicContracts",
2750
- contractDoc
2751
- );
2795
+ const insertedId = await ctx.db.insert("epistemicContracts", contractDoc);
2752
2796
  return {
2753
2797
  contractId,
2754
2798
  id: insertedId,