@lucern/graph-primitives 1.0.31 → 1.0.33

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 (93) hide show
  1. package/dist/beliefEvidenceLinks.js.map +1 -1
  2. package/dist/beliefEvidenceLinks.operational.js.map +1 -1
  3. package/dist/contradictions.js +5 -5
  4. package/dist/contradictions.js.map +1 -1
  5. package/dist/entityBridge.js +2 -1
  6. package/dist/entityBridge.js.map +1 -1
  7. package/dist/entityLifecycle.js.map +1 -1
  8. package/dist/epistemicAnswers.js +1 -1
  9. package/dist/epistemicAnswers.js.map +1 -1
  10. package/dist/epistemicBeliefs.admin.js +2 -2
  11. package/dist/epistemicBeliefs.admin.js.map +1 -1
  12. package/dist/epistemicBeliefs.backfills.js +9 -5
  13. package/dist/epistemicBeliefs.backfills.js.map +1 -1
  14. package/dist/epistemicBeliefs.confidence.js +3 -5
  15. package/dist/epistemicBeliefs.confidence.js.map +1 -1
  16. package/dist/epistemicBeliefs.core.js +20 -30
  17. package/dist/epistemicBeliefs.core.js.map +1 -1
  18. package/dist/epistemicBeliefs.forkEvidence.js.map +1 -1
  19. package/dist/epistemicBeliefs.helpers.js +1 -1
  20. package/dist/epistemicBeliefs.helpers.js.map +1 -1
  21. package/dist/epistemicBeliefs.internal.js +15 -25
  22. package/dist/epistemicBeliefs.internal.js.map +1 -1
  23. package/dist/epistemicBeliefs.js +33 -43
  24. package/dist/epistemicBeliefs.js.map +1 -1
  25. package/dist/epistemicBeliefs.lifecycle.js +3 -5
  26. package/dist/epistemicBeliefs.lifecycle.js.map +1 -1
  27. package/dist/epistemicBeliefs.links.js +1 -1
  28. package/dist/epistemicBeliefs.links.js.map +1 -1
  29. package/dist/epistemicBeliefs.queries.js.map +1 -1
  30. package/dist/epistemicBeliefs.topicAnchor.js +12 -22
  31. package/dist/epistemicBeliefs.topicAnchor.js.map +1 -1
  32. package/dist/epistemicContracts.evaluators.js +3 -5
  33. package/dist/epistemicContracts.evaluators.js.map +1 -1
  34. package/dist/epistemicContracts.handlers.js +3 -6
  35. package/dist/epistemicContracts.handlers.js.map +1 -1
  36. package/dist/epistemicContracts.js +3 -6
  37. package/dist/epistemicContracts.js.map +1 -1
  38. package/dist/epistemicEdgeCreation.js.map +1 -1
  39. package/dist/epistemicEdges.handlers.js.map +1 -1
  40. package/dist/epistemicEdges.js +6 -7
  41. package/dist/epistemicEdges.js.map +1 -1
  42. package/dist/epistemicEdges.mutations.js +3 -4
  43. package/dist/epistemicEdges.mutations.js.map +1 -1
  44. package/dist/epistemicEdges.queries.js +3 -3
  45. package/dist/epistemicEdges.queries.js.map +1 -1
  46. package/dist/epistemicEvidence.js +10 -10
  47. package/dist/epistemicEvidence.js.map +1 -1
  48. package/dist/epistemicEvidenceHelpers.js +1 -1
  49. package/dist/epistemicEvidenceHelpers.js.map +1 -1
  50. package/dist/epistemicEvidenceMutations.js +5 -5
  51. package/dist/epistemicEvidenceMutations.js.map +1 -1
  52. package/dist/epistemicEvidenceQueries.js +6 -6
  53. package/dist/epistemicEvidenceQueries.js.map +1 -1
  54. package/dist/epistemicHelpers.js +4 -4
  55. package/dist/epistemicHelpers.js.map +1 -1
  56. package/dist/epistemicInsert.js.map +1 -1
  57. package/dist/epistemicLayerRules.js +2 -2
  58. package/dist/epistemicLayerRules.js.map +1 -1
  59. package/dist/epistemicLinking.js.map +1 -1
  60. package/dist/epistemicNodeCreation.js +2 -2
  61. package/dist/epistemicNodeCreation.js.map +1 -1
  62. package/dist/epistemicNodes.internal.js +2 -3
  63. package/dist/epistemicNodes.internal.js.map +1 -1
  64. package/dist/epistemicNodes.js +10 -12
  65. package/dist/epistemicNodes.js.map +1 -1
  66. package/dist/epistemicNodes.mutations.js +3 -4
  67. package/dist/epistemicNodes.mutations.js.map +1 -1
  68. package/dist/epistemicNodes.queries.js +5 -5
  69. package/dist/epistemicNodes.queries.js.map +1 -1
  70. package/dist/epistemicQuestions.conviction.js +5 -5
  71. package/dist/epistemicQuestions.conviction.js.map +1 -1
  72. package/dist/epistemicQuestions.create.js +7 -7
  73. package/dist/epistemicQuestions.create.js.map +1 -1
  74. package/dist/epistemicQuestions.evidence.js +2 -2
  75. package/dist/epistemicQuestions.evidence.js.map +1 -1
  76. package/dist/epistemicQuestions.helpers.js +7 -4
  77. package/dist/epistemicQuestions.helpers.js.map +1 -1
  78. package/dist/epistemicQuestions.js +16 -13
  79. package/dist/epistemicQuestions.js.map +1 -1
  80. package/dist/epistemicQuestions.lifecycle.js.map +1 -1
  81. package/dist/epistemicQuestions.queries.js +2 -2
  82. package/dist/epistemicQuestions.queries.js.map +1 -1
  83. package/dist/epistemicQuestions.sprint.js +6 -3
  84. package/dist/epistemicQuestions.sprint.js.map +1 -1
  85. package/dist/epistemicQuestions.tail.js +2 -2
  86. package/dist/epistemicQuestions.tail.js.map +1 -1
  87. package/dist/epistemicSources.js.map +1 -1
  88. package/dist/index.js +88 -98
  89. package/dist/index.js.map +1 -1
  90. package/dist/proof-attestation.json +1 -1
  91. package/dist/questionEvidenceLinks.js +3 -2
  92. package/dist/questionEvidenceLinks.js.map +1 -1
  93. package/package.json +4 -4
@@ -10,7 +10,7 @@ import { throwStructuredMutationError } from '@lucern/access-control/structuredM
10
10
  import { normalizeTupleContradictionPolicy, confidenceFromSL } from '@lucern/confidence';
11
11
  import { isNodeType, getLayerForNodeType } from '@lucern/contracts/schema-helpers/spine/tables/epistemicNodes';
12
12
  import { assertEdgePolicyAllowed, edgePolicyManifest } from '@lucern/contracts';
13
- import { generateGlobalId, assertUuidV7Identity, generateUuidV7, assertStorageEdgeVocabulary, assertUuidShapedEdgeEndpoint } from '@lucern/contracts/ids';
13
+ import { generateGlobalId, assertUuidV7Identity, generateUuidV7, assertStorageEdgeVocabulary, isUuidV7, assertUuidShapedEdgeEndpoint } from '@lucern/contracts/ids';
14
14
 
15
15
  // src/epistemicBeliefs.internal.ts
16
16
  var unsafeApi = unsafeConvexAnyApi(
@@ -1109,7 +1109,7 @@ async function markBeliefGraphDirty(ctx, scope) {
1109
1109
  );
1110
1110
  }
1111
1111
  async function resolveBeliefScopeOrNull(ctx, args) {
1112
- if (!(args.projectId || args.topicId)) {
1112
+ if (!args.topicId) {
1113
1113
  return null;
1114
1114
  }
1115
1115
  try {
@@ -1263,36 +1263,26 @@ async function insertEpistemicEdge(ctx, doc) {
1263
1263
  function cleanString(value) {
1264
1264
  return typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
1265
1265
  }
1266
- function topicNodeCandidates(topicRef) {
1266
+ function requireTopicGlobalId(topicRef) {
1267
1267
  const normalized = topicRef.trim();
1268
- if (!normalized) {
1269
- return [];
1270
- }
1271
- const candidates = [normalized];
1272
- if (normalized.startsWith("top_")) {
1273
- candidates.push(normalized.slice(4));
1268
+ if (!(normalized && isUuidV7(normalized))) {
1269
+ throw new Error(
1270
+ "Belief creation topic anchors must be UUIDv7 epistemicNodes.globalId values."
1271
+ );
1274
1272
  }
1275
- return [...new Set(candidates)];
1273
+ return normalized;
1276
1274
  }
1277
1275
  function readTopicNodeRef(args) {
1278
1276
  return cleanString(args.topicGlobalId) ?? cleanString(args.topicNodeId) ?? cleanString(args.topicId);
1279
1277
  }
1280
1278
  async function resolveRequiredTopicAnchor(ctx, topicRef) {
1281
- for (const candidate of topicNodeCandidates(topicRef)) {
1282
- try {
1283
- const direct = await ctx.db.get(candidate);
1284
- if (direct?.nodeType === "topic" && cleanString(direct.globalId)) {
1285
- return direct;
1286
- }
1287
- } catch {
1288
- }
1289
- const byGlobalId = await ctx.db.query("epistemicNodes").withIndex("by_globalId", (q) => q.eq("globalId", candidate)).first();
1290
- if (byGlobalId?.nodeType === "topic" && cleanString(byGlobalId.globalId)) {
1291
- return byGlobalId;
1292
- }
1279
+ const topicGlobalId = requireTopicGlobalId(topicRef);
1280
+ const byGlobalId = await ctx.db.query("epistemicNodes").withIndex("by_globalId", (q) => q.eq("globalId", topicGlobalId)).first();
1281
+ if (byGlobalId?.nodeType === "topic" && cleanString(byGlobalId.globalId)) {
1282
+ return byGlobalId;
1293
1283
  }
1294
1284
  throw new Error(
1295
- "Belief creation requires topicGlobalId or topicNodeId for a topic node in epistemicNodes. Legacy topics-table IDs are not valid belief anchors."
1285
+ "Belief creation requires a UUIDv7 topicGlobalId for a topic node in epistemicNodes. Legacy topics-table IDs are not valid belief anchors."
1296
1286
  );
1297
1287
  }
1298
1288
  function scopeFromTopicAnchor(topicNode) {
@@ -1737,7 +1727,7 @@ async function insertInternalBeliefAudit(ctx, args) {
1737
1727
  });
1738
1728
  }
1739
1729
  async function scheduleInternalBeliefEmbedding(ctx, args) {
1740
- if (!(args.scope.projectId || args.scope.topicId)) {
1730
+ if (!args.scope.topicId) {
1741
1731
  return;
1742
1732
  }
1743
1733
  await ctx.scheduler.runAfter(0, EMBEDDING_GENERATION_ACTION, {
@@ -1765,7 +1755,7 @@ function numericRequestedConfidence(confidence) {
1765
1755
  return 0.5;
1766
1756
  }
1767
1757
  async function scheduleInternalBeliefCategorization(ctx, args) {
1768
- if (normalizePillar(args.args.pillar || args.args.topic) !== "other" || !(args.scope.projectId || args.scope.topicId)) {
1758
+ if (normalizePillar(args.args.pillar || args.args.topic) !== "other" || !args.scope.topicId) {
1769
1759
  return;
1770
1760
  }
1771
1761
  await ctx.scheduler.runAfter(2500, BELIEF_CATEGORIZATION_ACTION, {