@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
@@ -568,6 +568,35 @@ function debugGraphPrimitiveFallback(message, context) {
568
568
  console.debug(message, context ?? {});
569
569
  }
570
570
  var LEGACY_SCOPE_FIELD = "graphScopeProjectId";
571
+ async function resolveTopicNodeScopeOrNull(ctx, ref) {
572
+ if (!ctx?.db || typeof ctx.db.query !== "function") {
573
+ return null;
574
+ }
575
+ let node = null;
576
+ try {
577
+ const byGlobalId = await ctx.db.query("epistemicNodes").withIndex("by_globalId", (q) => q.eq("globalId", ref)).first();
578
+ if (byGlobalId && byGlobalId.nodeType === "topic") {
579
+ node = byGlobalId;
580
+ }
581
+ } catch (error) {
582
+ debugGraphPrimitiveFallback(
583
+ "[topicScope] topic-node scope lookup by globalId failed",
584
+ { error, ref }
585
+ );
586
+ }
587
+ if (!node) {
588
+ return null;
589
+ }
590
+ const scopeKey = normalizeScopeValue(node.topicId) ?? normalizeScopeValue(node.globalId);
591
+ if (!scopeKey) {
592
+ return null;
593
+ }
594
+ return {
595
+ topicId: scopeKey,
596
+ projectId: asMappedProjectId(node),
597
+ source: "topic_node"
598
+ };
599
+ }
571
600
  function asMappedProjectId(topic) {
572
601
  if (!topic) {
573
602
  return;
@@ -708,6 +737,13 @@ async function resolveTopicProjectScope(ctx, args) {
708
737
  ) ?? null;
709
738
  }
710
739
  if (!topic) {
740
+ const nodeScope = await resolveTopicNodeScopeOrNull(
741
+ ctx,
742
+ String(args.topicId)
743
+ );
744
+ if (nodeScope) {
745
+ return nodeScope;
746
+ }
711
747
  throw new Error(`Topic not found: ${String(args.topicId)}`);
712
748
  }
713
749
  const inherited = await resolveInheritedWorkspaceScope(ctx, topic);
@@ -778,6 +814,16 @@ async function resolveTopicProjectScope(ctx, args) {
778
814
  source: "project_mapped_topic"
779
815
  };
780
816
  }
817
+ const nodeScope = await resolveTopicNodeScopeOrNull(
818
+ ctx,
819
+ String(args.projectId)
820
+ );
821
+ if (nodeScope) {
822
+ return {
823
+ ...nodeScope,
824
+ projectId: nodeScope.projectId ?? String(args.projectId)
825
+ };
826
+ }
781
827
  throw new Error(
782
828
  `Legacy project scope ${String(args.projectId)} has no mapped topic.`
783
829
  );
@@ -1662,14 +1708,14 @@ async function applyBeliefConfidenceChange(ctx, args) {
1662
1708
  beliefConfidenceId
1663
1709
  };
1664
1710
  }
1665
- function propagationTriggerForEdge(edgeType, weight) {
1711
+ function propagationPressureLabel(edgeType, weight) {
1666
1712
  if (edgeType === "contradicts" || edgeType === "refutes") {
1667
- return "contradiction_detected";
1713
+ return "contradictory";
1668
1714
  }
1669
1715
  if ((edgeType === "supports" || edgeType === "informs") && weight < 0) {
1670
- return "contradiction_detected";
1716
+ return "contradictory";
1671
1717
  }
1672
- return "evidence_added";
1718
+ return "supportive";
1673
1719
  }
1674
1720
  internalMutation({
1675
1721
  args: {
@@ -1706,14 +1752,15 @@ internalMutation({
1706
1752
  getNode: async (nodeId) => await ctx.db.get(nodeId)
1707
1753
  });
1708
1754
  for (const dispatch of dispatches) {
1755
+ const pressureLabel = propagationPressureLabel(dispatch.edgeType, dispatch.weight);
1709
1756
  await applyBeliefConfidenceChange(ctx, {
1710
1757
  nodeId: dispatch.targetNodeId,
1711
1758
  belief: dispatch.opinion.b,
1712
1759
  disbelief: dispatch.opinion.d,
1713
1760
  uncertainty: dispatch.opinion.u,
1714
1761
  baseRate: dispatch.opinion.a,
1715
- trigger: propagationTriggerForEdge(dispatch.edgeType, dispatch.weight),
1716
- rationale: `SL propagation via ${dispatch.edgeType} edge: ${dispatch.rationale}`,
1762
+ trigger: "propagation",
1763
+ rationale: `SL propagation via ${dispatch.edgeType} edge (pressure: ${pressureLabel}): ${dispatch.rationale}`,
1717
1764
  authenticatedUserId: args.userId,
1718
1765
  slOperator: dispatch.operator
1719
1766
  });
@@ -2735,10 +2782,7 @@ var createEpistemicContract = mutation({
2735
2782
  createdBy: userId,
2736
2783
  updatedAt: now
2737
2784
  };
2738
- const insertedId = await ctx.db.insert(
2739
- "epistemicContracts",
2740
- contractDoc
2741
- );
2785
+ const insertedId = await ctx.db.insert("epistemicContracts", contractDoc);
2742
2786
  return {
2743
2787
  contractId,
2744
2788
  id: insertedId,