@lucern/graph-primitives 1.0.16 → 1.0.18

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 (92) hide show
  1. package/dist/beliefEvidenceLinks.js +144 -99
  2. package/dist/beliefEvidenceLinks.js.map +1 -1
  3. package/dist/beliefEvidenceLinks.operational.d.ts +29 -0
  4. package/dist/beliefEvidenceLinks.operational.js +157 -0
  5. package/dist/beliefEvidenceLinks.operational.js.map +1 -0
  6. package/dist/{beliefLifecycle-y8WLXqQj.d.ts → beliefLifecycle-CXwdDw5e.d.ts} +7 -4
  7. package/dist/beliefLifecycle.d.ts +1 -1
  8. package/dist/beliefLifecycle.js +75 -18
  9. package/dist/beliefLifecycle.js.map +1 -1
  10. package/dist/entityLifecycle.js +1 -12
  11. package/dist/entityLifecycle.js.map +1 -1
  12. package/dist/epistemicAnswers.js +1 -12
  13. package/dist/epistemicAnswers.js.map +1 -1
  14. package/dist/epistemicBeliefs.admin.js.map +1 -1
  15. package/dist/epistemicBeliefs.backfills.d.ts +1 -1
  16. package/dist/epistemicBeliefs.backfills.js +63 -35
  17. package/dist/epistemicBeliefs.backfills.js.map +1 -1
  18. package/dist/epistemicBeliefs.confidence.d.ts +1 -1
  19. package/dist/epistemicBeliefs.confidence.js +70 -41
  20. package/dist/epistemicBeliefs.confidence.js.map +1 -1
  21. package/dist/epistemicBeliefs.core.js +946 -566
  22. package/dist/epistemicBeliefs.core.js.map +1 -1
  23. package/dist/epistemicBeliefs.d.ts +2 -2
  24. package/dist/epistemicBeliefs.forkEvidence.d.ts +18 -0
  25. package/dist/epistemicBeliefs.forkEvidence.js +121 -0
  26. package/dist/epistemicBeliefs.forkEvidence.js.map +1 -0
  27. package/dist/epistemicBeliefs.helpers.d.ts +2 -2
  28. package/dist/epistemicBeliefs.helpers.js +60 -32
  29. package/dist/epistemicBeliefs.helpers.js.map +1 -1
  30. package/dist/epistemicBeliefs.internal.js +175 -51
  31. package/dist/epistemicBeliefs.internal.js.map +1 -1
  32. package/dist/epistemicBeliefs.js +437 -84
  33. package/dist/epistemicBeliefs.js.map +1 -1
  34. package/dist/epistemicBeliefs.lifecycle.d.ts +2 -2
  35. package/dist/epistemicBeliefs.lifecycle.js +75 -47
  36. package/dist/epistemicBeliefs.lifecycle.js.map +1 -1
  37. package/dist/epistemicBeliefs.links.js +47 -13
  38. package/dist/epistemicBeliefs.links.js.map +1 -1
  39. package/dist/epistemicBeliefs.topicAnchor.d.ts +29 -0
  40. package/dist/epistemicBeliefs.topicAnchor.js +105 -0
  41. package/dist/epistemicBeliefs.topicAnchor.js.map +1 -0
  42. package/dist/epistemicContracts.evaluators.js +71 -42
  43. package/dist/epistemicContracts.evaluators.js.map +1 -1
  44. package/dist/epistemicContracts.handlers.js +72 -54
  45. package/dist/epistemicContracts.handlers.js.map +1 -1
  46. package/dist/epistemicContracts.js +72 -54
  47. package/dist/epistemicContracts.js.map +1 -1
  48. package/dist/epistemicContracts.metrics.js +1 -1
  49. package/dist/epistemicContracts.metrics.js.map +1 -1
  50. package/dist/epistemicContracts.types.d.ts +1 -1
  51. package/dist/epistemicEdgeCreation.js +1 -12
  52. package/dist/epistemicEdgeCreation.js.map +1 -1
  53. package/dist/epistemicEdges.helpers.d.ts +1 -1
  54. package/dist/epistemicEvidence.js +173 -93
  55. package/dist/epistemicEvidence.js.map +1 -1
  56. package/dist/epistemicEvidenceMutations.js +173 -93
  57. package/dist/epistemicEvidenceMutations.js.map +1 -1
  58. package/dist/epistemicHelpers.js +1 -12
  59. package/dist/epistemicHelpers.js.map +1 -1
  60. package/dist/epistemicNodeCreation.js +1 -10
  61. package/dist/epistemicNodeCreation.js.map +1 -1
  62. package/dist/epistemicNodes.internal.js.map +1 -1
  63. package/dist/epistemicNodes.js +2 -2
  64. package/dist/epistemicNodes.js.map +1 -1
  65. package/dist/epistemicNodes.mutations.js +2 -2
  66. package/dist/epistemicNodes.mutations.js.map +1 -1
  67. package/dist/epistemicQuestions.create.js +1 -12
  68. package/dist/epistemicQuestions.create.js.map +1 -1
  69. package/dist/epistemicQuestions.evidence.js +1 -12
  70. package/dist/epistemicQuestions.evidence.js.map +1 -1
  71. package/dist/epistemicQuestions.js +1 -12
  72. package/dist/epistemicQuestions.js.map +1 -1
  73. package/dist/epistemicQuestions.tail.js +1 -12
  74. package/dist/epistemicQuestions.tail.js.map +1 -1
  75. package/dist/epistemicSources.js +1 -12
  76. package/dist/epistemicSources.js.map +1 -1
  77. package/dist/evaluators/index.js +1 -1
  78. package/dist/evaluators/index.js.map +1 -1
  79. package/dist/globalId-4y9SPpC_.d.ts +10 -0
  80. package/dist/globalId.d.ts +1 -1
  81. package/dist/globalId.js +1 -13
  82. package/dist/globalId.js.map +1 -1
  83. package/dist/helpers.js +1 -12
  84. package/dist/helpers.js.map +1 -1
  85. package/dist/index.d.ts +4 -3
  86. package/dist/index.js +771 -247
  87. package/dist/index.js.map +1 -1
  88. package/dist/invariantEnforcement.js +2 -2
  89. package/dist/invariantEnforcement.js.map +1 -1
  90. package/dist/proof-attestation.json +3 -3
  91. package/package.json +4 -4
  92. package/dist/globalId-DKh9d_uD.d.ts +0 -20
@@ -6,6 +6,7 @@ import { normalizeTupleContradictionPolicy, mkOpinion, conditionalDeduction, pro
6
6
  import '@lucern/access-control/audience';
7
7
  import { componentsGeneric, internalMutationGeneric, anyApi, queryGeneric, mutationGeneric } from 'convex/server';
8
8
  import '@lucern/contracts/schema-helpers/spine/tables/epistemicNodes';
9
+ import { generateGlobalId } from '@lucern/contracts/ids';
9
10
 
10
11
  // src/epistemicContracts.handlers.ts
11
12
 
@@ -207,7 +208,7 @@ async function evaluateBuiltInEvidentialContract(args) {
207
208
  observedValue: snapshot.value,
208
209
  operator: config.operator,
209
210
  threshold: config.threshold,
210
- action: config.action ?? "modulate_confidence",
211
+ action: config.action ?? "append_sl_scoring",
211
212
  actionParams: config.actionParams
212
213
  }
213
214
  };
@@ -432,18 +433,32 @@ var METRIC_COMPARATOR_EVALUATOR_NAMES = {
432
433
  var BELIEF_STATUS_VALUES = [
433
434
  "assumption",
434
435
  "hypothesis",
435
- "belief",
436
- "fact"
437
- ];
438
- var RESOLVED_PREDICTION_OUTCOMES = [
439
- "confirmed",
440
- "disconfirmed",
441
- "partial",
442
- "expired"
436
+ "active",
437
+ "superseded",
438
+ "resolved_true",
439
+ "resolved_false"
443
440
  ];
444
441
  function isBeliefLifecycleStatus(value) {
445
442
  return typeof value === "string" && BELIEF_STATUS_VALUES.includes(value);
446
443
  }
444
+ function normalizeLegacyBeliefStatus(value) {
445
+ if (isBeliefLifecycleStatus(value)) {
446
+ return value;
447
+ }
448
+ if (value === "belief" || value === "established" || value === "emerging") {
449
+ return "active";
450
+ }
451
+ if (value === "fact" || value === "confirmed") {
452
+ return "resolved_true";
453
+ }
454
+ if (value === "disconfirmed" || value === "expired") {
455
+ return "resolved_false";
456
+ }
457
+ if (value === "deprecated") {
458
+ return "superseded";
459
+ }
460
+ return null;
461
+ }
447
462
  function normalizeBeliefConfidence(confidence) {
448
463
  if (typeof confidence !== "number" || !Number.isFinite(confidence)) {
449
464
  return null;
@@ -463,47 +478,61 @@ function isResolvedByConfidence(confidence) {
463
478
  }
464
479
  return normalized <= 0 || normalized >= 1;
465
480
  }
466
- function hasResolvedPredictionOutcome(predictionMeta) {
481
+ function getPredictionMetaFromMetadata(metadata) {
482
+ return metadata?.predictionMeta;
483
+ }
484
+ function resolvedPredictionStatus(predictionMeta) {
467
485
  if (!predictionMeta || typeof predictionMeta !== "object") {
468
- return false;
486
+ return null;
469
487
  }
470
488
  const outcome = predictionMeta.outcome;
471
- return typeof outcome === "string" && RESOLVED_PREDICTION_OUTCOMES.includes(outcome);
472
- }
473
- function getPredictionMetaFromMetadata(metadata) {
474
- return metadata?.predictionMeta;
489
+ if (outcome === "confirmed") {
490
+ return "resolved_true";
491
+ }
492
+ if (outcome === "disconfirmed" || outcome === "expired") {
493
+ return "resolved_false";
494
+ }
495
+ return null;
475
496
  }
476
- function shouldTreatBeliefAsFact(opts) {
497
+ function shouldTreatBeliefAsResolved(opts) {
477
498
  if (isResolvedByConfidence(opts.confidence)) {
478
- return true;
499
+ const normalized = normalizeBeliefConfidence(opts.confidence);
500
+ return normalized === 0 ? "resolved_false" : "resolved_true";
479
501
  }
480
- if (hasResolvedPredictionOutcome(opts.predictionMeta)) {
481
- return true;
502
+ const directPredictionStatus = resolvedPredictionStatus(opts.predictionMeta);
503
+ if (directPredictionStatus) {
504
+ return directPredictionStatus;
482
505
  }
483
- if (hasResolvedPredictionOutcome(getPredictionMetaFromMetadata(opts.metadata))) {
484
- return true;
506
+ const metadataPredictionStatus = resolvedPredictionStatus(
507
+ getPredictionMetaFromMetadata(opts.metadata)
508
+ );
509
+ if (metadataPredictionStatus) {
510
+ return metadataPredictionStatus;
485
511
  }
486
- return false;
512
+ return null;
487
513
  }
488
514
  function resolveBeliefLifecycleStatus(opts) {
489
- if (shouldTreatBeliefAsFact(opts)) {
490
- return "fact";
515
+ const resolvedStatus = shouldTreatBeliefAsResolved(opts);
516
+ if (resolvedStatus) {
517
+ return resolvedStatus;
491
518
  }
492
519
  const direct = opts.beliefStatus;
493
- if (isBeliefLifecycleStatus(direct)) {
520
+ const normalizedDirect = normalizeLegacyBeliefStatus(direct);
521
+ if (normalizedDirect) {
494
522
  const normalized = normalizeBeliefConfidence(opts.confidence);
495
- if (normalized !== null && isPreValidationBeliefStatus(direct)) {
496
- return "belief";
523
+ if (normalized !== null && isPreValidationBeliefStatus(normalizedDirect)) {
524
+ return "active";
497
525
  }
498
- return direct;
526
+ return normalizedDirect;
499
527
  }
500
528
  const metaStatus = opts.metadata?.beliefStatus;
501
- if (isBeliefLifecycleStatus(metaStatus)) {
529
+ const normalizedMetaStatus = normalizeLegacyBeliefStatus(metaStatus);
530
+ if (normalizedMetaStatus) {
502
531
  const normalized = normalizeBeliefConfidence(opts.confidence);
503
- if (normalized !== null && isPreValidationBeliefStatus(metaStatus)) {
504
- return "belief";
532
+ if (normalized !== null && isPreValidationBeliefStatus(normalizedMetaStatus)) {
533
+ return "active";
505
534
  }
506
- return metaStatus;
535
+ return normalizedMetaStatus;
507
536
  }
508
537
  return "assumption";
509
538
  }
@@ -511,13 +540,14 @@ function isPreValidationBeliefStatus(status) {
511
540
  return status === "assumption" || status === "hypothesis";
512
541
  }
513
542
  function promoteBeliefStatusAfterScoring(status, opts) {
514
- if (shouldTreatBeliefAsFact({ ...opts })) {
515
- return "fact";
543
+ const resolvedStatus = shouldTreatBeliefAsResolved({ ...opts });
544
+ if (resolvedStatus) {
545
+ return resolvedStatus;
516
546
  }
517
547
  if (isPreValidationBeliefStatus(status)) {
518
- return "belief";
548
+ return "active";
519
549
  }
520
- return status === "fact" ? "fact" : "belief";
550
+ return status;
521
551
  }
522
552
  var api = anyApi;
523
553
  componentsGeneric();
@@ -874,7 +904,7 @@ function buildBeliefConfidenceRow(args) {
874
904
  disbelief: args.disbelief,
875
905
  uncertainty: args.uncertainty,
876
906
  baseRate: args.baseRate,
877
- slOperator: args.slOperator ?? "manual_assessment",
907
+ slOperator: args.slOperator ?? "prior_seed",
878
908
  trigger: args.trigger,
879
909
  ...args.rationale ? { rationale: args.rationale } : {},
880
910
  assessedBy: args.assessedBy,
@@ -1401,17 +1431,17 @@ async function applyBeliefConfidenceChange(ctx, args) {
1401
1431
  status: 404,
1402
1432
  code: "NOT_FOUND",
1403
1433
  invariantCode: "belief.exists",
1404
- suggestion: "Verify nodeId points to an existing node before modulating confidence.",
1434
+ suggestion: "Verify nodeId points to an existing node before appending SL scoring.",
1405
1435
  details: { nodeId: args.nodeId }
1406
1436
  });
1407
1437
  }
1408
1438
  if (node.nodeType !== "belief") {
1409
1439
  throwStructuredMutationError({
1410
- message: `modulateConfidence only applies to belief nodes. Received nodeType "${node.nodeType}". Entity nodes (company, person, investor, etc.) do not have confidence \u2014 use entityLifecycle.updateEntityAttributes for mutable entity data.`,
1440
+ message: `appendSlScoring only applies to belief nodes. Received nodeType "${node.nodeType}". Entity nodes (company, person, investor, etc.) do not have confidence \u2014 use entityLifecycle.updateEntityAttributes for mutable entity data.`,
1411
1441
  status: 400,
1412
1442
  code: "INVALID_ARGUMENT",
1413
1443
  invariantCode: "entity.no_confidence",
1414
- suggestion: "Use entityLifecycle.updateEntityAttributes for entity mutations. modulateConfidence is for belief nodes only.",
1444
+ suggestion: "Use entityLifecycle.updateEntityAttributes for entity mutations. appendSlScoring is for belief nodes only.",
1415
1445
  details: { nodeId: args.nodeId, nodeType: node.nodeType }
1416
1446
  });
1417
1447
  }
@@ -1421,7 +1451,7 @@ async function applyBeliefConfidenceChange(ctx, args) {
1421
1451
  status: 400,
1422
1452
  code: "MISSING_SCOPE",
1423
1453
  invariantCode: "belief.project_required",
1424
- suggestion: "Belief must have a projectId to modulate confidence.",
1454
+ suggestion: "Belief must have a projectId before SL scoring can be appended.",
1425
1455
  details: { nodeId: args.nodeId }
1426
1456
  });
1427
1457
  }
@@ -1444,7 +1474,7 @@ async function applyBeliefConfidenceChange(ctx, args) {
1444
1474
  status: 409,
1445
1475
  code: "CONFLICT",
1446
1476
  invariantCode: "belief.confidence_append_only",
1447
- suggestion: "Complete a worktree linked to this belief before recording confidence modulation.",
1477
+ suggestion: "Complete a worktree linked to this belief before recording SL scoring.",
1448
1478
  details: { nodeId: args.nodeId }
1449
1479
  });
1450
1480
  }
@@ -1699,18 +1729,6 @@ internalMutation({
1699
1729
  }
1700
1730
  });
1701
1731
 
1702
- // src/globalId.ts
1703
- function generateGlobalId() {
1704
- const bytes = new Uint8Array(16);
1705
- crypto.getRandomValues(bytes);
1706
- bytes[6] = bytes[6] & 15 | 64;
1707
- bytes[8] = bytes[8] & 63 | 128;
1708
- const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join(
1709
- ""
1710
- );
1711
- return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
1712
- }
1713
-
1714
1732
  // src/epistemicContracts.evaluators.ts
1715
1733
  var evaluatorRegistry = /* @__PURE__ */ new Map();
1716
1734
  var BUILT_IN_EVIDENTIAL_ALIASES2 = METRIC_COMPARATOR_EVALUATOR_NAMES.evidentialAliases;