@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.
- package/dist/beliefEvidenceLinks.js +144 -99
- package/dist/beliefEvidenceLinks.js.map +1 -1
- package/dist/beliefEvidenceLinks.operational.d.ts +29 -0
- package/dist/beliefEvidenceLinks.operational.js +157 -0
- package/dist/beliefEvidenceLinks.operational.js.map +1 -0
- package/dist/{beliefLifecycle-y8WLXqQj.d.ts → beliefLifecycle-CXwdDw5e.d.ts} +7 -4
- package/dist/beliefLifecycle.d.ts +1 -1
- package/dist/beliefLifecycle.js +75 -18
- package/dist/beliefLifecycle.js.map +1 -1
- package/dist/entityLifecycle.js +1 -12
- package/dist/entityLifecycle.js.map +1 -1
- package/dist/epistemicAnswers.js +1 -12
- package/dist/epistemicAnswers.js.map +1 -1
- package/dist/epistemicBeliefs.admin.js.map +1 -1
- package/dist/epistemicBeliefs.backfills.d.ts +1 -1
- package/dist/epistemicBeliefs.backfills.js +63 -35
- package/dist/epistemicBeliefs.backfills.js.map +1 -1
- package/dist/epistemicBeliefs.confidence.d.ts +1 -1
- package/dist/epistemicBeliefs.confidence.js +70 -41
- package/dist/epistemicBeliefs.confidence.js.map +1 -1
- package/dist/epistemicBeliefs.core.js +946 -566
- package/dist/epistemicBeliefs.core.js.map +1 -1
- package/dist/epistemicBeliefs.d.ts +2 -2
- package/dist/epistemicBeliefs.forkEvidence.d.ts +18 -0
- package/dist/epistemicBeliefs.forkEvidence.js +121 -0
- package/dist/epistemicBeliefs.forkEvidence.js.map +1 -0
- package/dist/epistemicBeliefs.helpers.d.ts +2 -2
- package/dist/epistemicBeliefs.helpers.js +60 -32
- package/dist/epistemicBeliefs.helpers.js.map +1 -1
- package/dist/epistemicBeliefs.internal.js +175 -51
- package/dist/epistemicBeliefs.internal.js.map +1 -1
- package/dist/epistemicBeliefs.js +437 -84
- package/dist/epistemicBeliefs.js.map +1 -1
- package/dist/epistemicBeliefs.lifecycle.d.ts +2 -2
- package/dist/epistemicBeliefs.lifecycle.js +75 -47
- package/dist/epistemicBeliefs.lifecycle.js.map +1 -1
- package/dist/epistemicBeliefs.links.js +47 -13
- package/dist/epistemicBeliefs.links.js.map +1 -1
- package/dist/epistemicBeliefs.topicAnchor.d.ts +29 -0
- package/dist/epistemicBeliefs.topicAnchor.js +105 -0
- package/dist/epistemicBeliefs.topicAnchor.js.map +1 -0
- package/dist/epistemicContracts.evaluators.js +71 -42
- package/dist/epistemicContracts.evaluators.js.map +1 -1
- package/dist/epistemicContracts.handlers.js +72 -54
- package/dist/epistemicContracts.handlers.js.map +1 -1
- package/dist/epistemicContracts.js +72 -54
- package/dist/epistemicContracts.js.map +1 -1
- package/dist/epistemicContracts.metrics.js +1 -1
- package/dist/epistemicContracts.metrics.js.map +1 -1
- package/dist/epistemicContracts.types.d.ts +1 -1
- package/dist/epistemicEdgeCreation.js +1 -12
- package/dist/epistemicEdgeCreation.js.map +1 -1
- package/dist/epistemicEdges.helpers.d.ts +1 -1
- package/dist/epistemicEvidence.js +173 -93
- package/dist/epistemicEvidence.js.map +1 -1
- package/dist/epistemicEvidenceMutations.js +173 -93
- package/dist/epistemicEvidenceMutations.js.map +1 -1
- package/dist/epistemicHelpers.js +1 -12
- package/dist/epistemicHelpers.js.map +1 -1
- package/dist/epistemicNodeCreation.js +1 -10
- package/dist/epistemicNodeCreation.js.map +1 -1
- package/dist/epistemicNodes.internal.js.map +1 -1
- package/dist/epistemicNodes.js +2 -2
- package/dist/epistemicNodes.js.map +1 -1
- package/dist/epistemicNodes.mutations.js +2 -2
- package/dist/epistemicNodes.mutations.js.map +1 -1
- package/dist/epistemicQuestions.create.js +1 -12
- package/dist/epistemicQuestions.create.js.map +1 -1
- package/dist/epistemicQuestions.evidence.js +1 -12
- package/dist/epistemicQuestions.evidence.js.map +1 -1
- package/dist/epistemicQuestions.js +1 -12
- package/dist/epistemicQuestions.js.map +1 -1
- package/dist/epistemicQuestions.tail.js +1 -12
- package/dist/epistemicQuestions.tail.js.map +1 -1
- package/dist/epistemicSources.js +1 -12
- package/dist/epistemicSources.js.map +1 -1
- package/dist/evaluators/index.js +1 -1
- package/dist/evaluators/index.js.map +1 -1
- package/dist/globalId-4y9SPpC_.d.ts +10 -0
- package/dist/globalId.d.ts +1 -1
- package/dist/globalId.js +1 -13
- package/dist/globalId.js.map +1 -1
- package/dist/helpers.js +1 -12
- package/dist/helpers.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +771 -247
- package/dist/index.js.map +1 -1
- package/dist/invariantEnforcement.js +2 -2
- package/dist/invariantEnforcement.js.map +1 -1
- package/dist/proof-attestation.json +3 -3
- package/package.json +4 -4
- 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 ?? "
|
|
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
|
-
"
|
|
436
|
-
"
|
|
437
|
-
|
|
438
|
-
|
|
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
|
|
481
|
+
function getPredictionMetaFromMetadata(metadata) {
|
|
482
|
+
return metadata?.predictionMeta;
|
|
483
|
+
}
|
|
484
|
+
function resolvedPredictionStatus(predictionMeta) {
|
|
467
485
|
if (!predictionMeta || typeof predictionMeta !== "object") {
|
|
468
|
-
return
|
|
486
|
+
return null;
|
|
469
487
|
}
|
|
470
488
|
const outcome = predictionMeta.outcome;
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
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
|
|
497
|
+
function shouldTreatBeliefAsResolved(opts) {
|
|
477
498
|
if (isResolvedByConfidence(opts.confidence)) {
|
|
478
|
-
|
|
499
|
+
const normalized = normalizeBeliefConfidence(opts.confidence);
|
|
500
|
+
return normalized === 0 ? "resolved_false" : "resolved_true";
|
|
479
501
|
}
|
|
480
|
-
|
|
481
|
-
|
|
502
|
+
const directPredictionStatus = resolvedPredictionStatus(opts.predictionMeta);
|
|
503
|
+
if (directPredictionStatus) {
|
|
504
|
+
return directPredictionStatus;
|
|
482
505
|
}
|
|
483
|
-
|
|
484
|
-
|
|
506
|
+
const metadataPredictionStatus = resolvedPredictionStatus(
|
|
507
|
+
getPredictionMetaFromMetadata(opts.metadata)
|
|
508
|
+
);
|
|
509
|
+
if (metadataPredictionStatus) {
|
|
510
|
+
return metadataPredictionStatus;
|
|
485
511
|
}
|
|
486
|
-
return
|
|
512
|
+
return null;
|
|
487
513
|
}
|
|
488
514
|
function resolveBeliefLifecycleStatus(opts) {
|
|
489
|
-
|
|
490
|
-
|
|
515
|
+
const resolvedStatus = shouldTreatBeliefAsResolved(opts);
|
|
516
|
+
if (resolvedStatus) {
|
|
517
|
+
return resolvedStatus;
|
|
491
518
|
}
|
|
492
519
|
const direct = opts.beliefStatus;
|
|
493
|
-
|
|
520
|
+
const normalizedDirect = normalizeLegacyBeliefStatus(direct);
|
|
521
|
+
if (normalizedDirect) {
|
|
494
522
|
const normalized = normalizeBeliefConfidence(opts.confidence);
|
|
495
|
-
if (normalized !== null && isPreValidationBeliefStatus(
|
|
496
|
-
return "
|
|
523
|
+
if (normalized !== null && isPreValidationBeliefStatus(normalizedDirect)) {
|
|
524
|
+
return "active";
|
|
497
525
|
}
|
|
498
|
-
return
|
|
526
|
+
return normalizedDirect;
|
|
499
527
|
}
|
|
500
528
|
const metaStatus = opts.metadata?.beliefStatus;
|
|
501
|
-
|
|
529
|
+
const normalizedMetaStatus = normalizeLegacyBeliefStatus(metaStatus);
|
|
530
|
+
if (normalizedMetaStatus) {
|
|
502
531
|
const normalized = normalizeBeliefConfidence(opts.confidence);
|
|
503
|
-
if (normalized !== null && isPreValidationBeliefStatus(
|
|
504
|
-
return "
|
|
532
|
+
if (normalized !== null && isPreValidationBeliefStatus(normalizedMetaStatus)) {
|
|
533
|
+
return "active";
|
|
505
534
|
}
|
|
506
|
-
return
|
|
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
|
-
|
|
515
|
-
|
|
543
|
+
const resolvedStatus = shouldTreatBeliefAsResolved({ ...opts });
|
|
544
|
+
if (resolvedStatus) {
|
|
545
|
+
return resolvedStatus;
|
|
516
546
|
}
|
|
517
547
|
if (isPreValidationBeliefStatus(status)) {
|
|
518
|
-
return "
|
|
548
|
+
return "active";
|
|
519
549
|
}
|
|
520
|
-
return status
|
|
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 ?? "
|
|
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
|
|
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: `
|
|
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.
|
|
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
|
|
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
|
|
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;
|