@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
@@ -28,6 +28,35 @@ function debugGraphPrimitiveFallback(message, context) {
28
28
 
29
29
  // src/topicScope.ts
30
30
  var LEGACY_SCOPE_FIELD = "graphScopeProjectId";
31
+ async function resolveTopicNodeScopeOrNull(ctx, ref) {
32
+ if (!ctx?.db || typeof ctx.db.query !== "function") {
33
+ return null;
34
+ }
35
+ let node = null;
36
+ try {
37
+ const byGlobalId = await ctx.db.query("epistemicNodes").withIndex("by_globalId", (q) => q.eq("globalId", ref)).first();
38
+ if (byGlobalId && byGlobalId.nodeType === "topic") {
39
+ node = byGlobalId;
40
+ }
41
+ } catch (error) {
42
+ debugGraphPrimitiveFallback(
43
+ "[topicScope] topic-node scope lookup by globalId failed",
44
+ { error, ref }
45
+ );
46
+ }
47
+ if (!node) {
48
+ return null;
49
+ }
50
+ const scopeKey = normalizeScopeValue(node.topicId) ?? normalizeScopeValue(node.globalId);
51
+ if (!scopeKey) {
52
+ return null;
53
+ }
54
+ return {
55
+ topicId: scopeKey,
56
+ projectId: asMappedProjectId(node),
57
+ source: "topic_node"
58
+ };
59
+ }
31
60
  function asMappedProjectId(topic) {
32
61
  if (!topic) {
33
62
  return;
@@ -168,6 +197,13 @@ async function resolveTopicProjectScope(ctx, args) {
168
197
  ) ?? null;
169
198
  }
170
199
  if (!topic) {
200
+ const nodeScope = await resolveTopicNodeScopeOrNull(
201
+ ctx,
202
+ String(args.topicId)
203
+ );
204
+ if (nodeScope) {
205
+ return nodeScope;
206
+ }
171
207
  throw new Error(`Topic not found: ${String(args.topicId)}`);
172
208
  }
173
209
  const inherited = await resolveInheritedWorkspaceScope(ctx, topic);
@@ -238,6 +274,16 @@ async function resolveTopicProjectScope(ctx, args) {
238
274
  source: "project_mapped_topic"
239
275
  };
240
276
  }
277
+ const nodeScope = await resolveTopicNodeScopeOrNull(
278
+ ctx,
279
+ String(args.projectId)
280
+ );
281
+ if (nodeScope) {
282
+ return {
283
+ ...nodeScope,
284
+ projectId: nodeScope.projectId ?? String(args.projectId)
285
+ };
286
+ }
241
287
  throw new Error(
242
288
  `Legacy project scope ${String(args.projectId)} has no mapped topic.`
243
289
  );
@@ -1300,14 +1346,14 @@ async function applyBeliefConfidenceChange(ctx, args) {
1300
1346
  beliefConfidenceId
1301
1347
  };
1302
1348
  }
1303
- function propagationTriggerForEdge(edgeType, weight) {
1349
+ function propagationPressureLabel(edgeType, weight) {
1304
1350
  if (edgeType === "contradicts" || edgeType === "refutes") {
1305
- return "contradiction_detected";
1351
+ return "contradictory";
1306
1352
  }
1307
1353
  if ((edgeType === "supports" || edgeType === "informs") && weight < 0) {
1308
- return "contradiction_detected";
1354
+ return "contradictory";
1309
1355
  }
1310
- return "evidence_added";
1356
+ return "supportive";
1311
1357
  }
1312
1358
  internalMutation({
1313
1359
  args: {
@@ -1344,14 +1390,15 @@ internalMutation({
1344
1390
  getNode: async (nodeId) => await ctx.db.get(nodeId)
1345
1391
  });
1346
1392
  for (const dispatch of dispatches) {
1393
+ const pressureLabel = propagationPressureLabel(dispatch.edgeType, dispatch.weight);
1347
1394
  await applyBeliefConfidenceChange(ctx, {
1348
1395
  nodeId: dispatch.targetNodeId,
1349
1396
  belief: dispatch.opinion.b,
1350
1397
  disbelief: dispatch.opinion.d,
1351
1398
  uncertainty: dispatch.opinion.u,
1352
1399
  baseRate: dispatch.opinion.a,
1353
- trigger: propagationTriggerForEdge(dispatch.edgeType, dispatch.weight),
1354
- rationale: `SL propagation via ${dispatch.edgeType} edge: ${dispatch.rationale}`,
1400
+ trigger: "propagation",
1401
+ rationale: `SL propagation via ${dispatch.edgeType} edge (pressure: ${pressureLabel}): ${dispatch.rationale}`,
1355
1402
  authenticatedUserId: args.userId,
1356
1403
  slOperator: dispatch.operator
1357
1404
  });