@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
@@ -431,6 +431,35 @@ function debugGraphPrimitiveFallback(message, context) {
431
431
 
432
432
  // src/topicScope.ts
433
433
  var LEGACY_SCOPE_FIELD = "graphScopeProjectId";
434
+ async function resolveTopicNodeScopeOrNull(ctx, ref) {
435
+ if (!ctx?.db || typeof ctx.db.query !== "function") {
436
+ return null;
437
+ }
438
+ let node = null;
439
+ try {
440
+ const byGlobalId = await ctx.db.query("epistemicNodes").withIndex("by_globalId", (q) => q.eq("globalId", ref)).first();
441
+ if (byGlobalId && byGlobalId.nodeType === "topic") {
442
+ node = byGlobalId;
443
+ }
444
+ } catch (error) {
445
+ debugGraphPrimitiveFallback(
446
+ "[topicScope] topic-node scope lookup by globalId failed",
447
+ { error, ref }
448
+ );
449
+ }
450
+ if (!node) {
451
+ return null;
452
+ }
453
+ const scopeKey = normalizeScopeValue(node.topicId) ?? normalizeScopeValue(node.globalId);
454
+ if (!scopeKey) {
455
+ return null;
456
+ }
457
+ return {
458
+ topicId: scopeKey,
459
+ projectId: asMappedProjectId(node),
460
+ source: "topic_node"
461
+ };
462
+ }
434
463
  function asMappedProjectId(topic) {
435
464
  if (!topic) {
436
465
  return;
@@ -571,6 +600,13 @@ async function resolveTopicProjectScope(ctx, args) {
571
600
  ) ?? null;
572
601
  }
573
602
  if (!topic) {
603
+ const nodeScope = await resolveTopicNodeScopeOrNull(
604
+ ctx,
605
+ String(args.topicId)
606
+ );
607
+ if (nodeScope) {
608
+ return nodeScope;
609
+ }
574
610
  throw new Error(`Topic not found: ${String(args.topicId)}`);
575
611
  }
576
612
  const inherited = await resolveInheritedWorkspaceScope(ctx, topic);
@@ -641,6 +677,16 @@ async function resolveTopicProjectScope(ctx, args) {
641
677
  source: "project_mapped_topic"
642
678
  };
643
679
  }
680
+ const nodeScope = await resolveTopicNodeScopeOrNull(
681
+ ctx,
682
+ String(args.projectId)
683
+ );
684
+ if (nodeScope) {
685
+ return {
686
+ ...nodeScope,
687
+ projectId: nodeScope.projectId ?? String(args.projectId)
688
+ };
689
+ }
644
690
  throw new Error(
645
691
  `Legacy project scope ${String(args.projectId)} has no mapped topic.`
646
692
  );
@@ -1242,14 +1288,14 @@ async function applyBeliefConfidenceChange(ctx, args) {
1242
1288
  beliefConfidenceId
1243
1289
  };
1244
1290
  }
1245
- function propagationTriggerForEdge(edgeType, weight) {
1291
+ function propagationPressureLabel(edgeType, weight) {
1246
1292
  if (edgeType === "contradicts" || edgeType === "refutes") {
1247
- return "contradiction_detected";
1293
+ return "contradictory";
1248
1294
  }
1249
1295
  if ((edgeType === "supports" || edgeType === "informs") && weight < 0) {
1250
- return "contradiction_detected";
1296
+ return "contradictory";
1251
1297
  }
1252
- return "evidence_added";
1298
+ return "supportive";
1253
1299
  }
1254
1300
  var propagateConfidenceChange = internalMutation({
1255
1301
  args: {
@@ -1286,14 +1332,15 @@ var propagateConfidenceChange = internalMutation({
1286
1332
  getNode: async (nodeId) => await ctx.db.get(nodeId)
1287
1333
  });
1288
1334
  for (const dispatch of dispatches) {
1335
+ const pressureLabel = propagationPressureLabel(dispatch.edgeType, dispatch.weight);
1289
1336
  await applyBeliefConfidenceChange(ctx, {
1290
1337
  nodeId: dispatch.targetNodeId,
1291
1338
  belief: dispatch.opinion.b,
1292
1339
  disbelief: dispatch.opinion.d,
1293
1340
  uncertainty: dispatch.opinion.u,
1294
1341
  baseRate: dispatch.opinion.a,
1295
- trigger: propagationTriggerForEdge(dispatch.edgeType, dispatch.weight),
1296
- rationale: `SL propagation via ${dispatch.edgeType} edge: ${dispatch.rationale}`,
1342
+ trigger: "propagation",
1343
+ rationale: `SL propagation via ${dispatch.edgeType} edge (pressure: ${pressureLabel}): ${dispatch.rationale}`,
1297
1344
  authenticatedUserId: args.userId,
1298
1345
  slOperator: dispatch.operator
1299
1346
  });