@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.
- package/dist/beliefDecay.js +46 -0
- package/dist/beliefDecay.js.map +1 -1
- package/dist/beliefEvidenceLinks.js +87 -5
- package/dist/beliefEvidenceLinks.js.map +1 -1
- package/dist/beliefEvidenceLinks.operational.js +41 -5
- package/dist/beliefEvidenceLinks.operational.js.map +1 -1
- package/dist/contradictions.js +46 -0
- package/dist/contradictions.js.map +1 -1
- package/dist/edgeValidation.js +66 -1
- package/dist/edgeValidation.js.map +1 -1
- package/dist/entityBridge.js +66 -1
- package/dist/entityBridge.js.map +1 -1
- package/dist/entityLifecycle.js +90 -5
- package/dist/entityLifecycle.js.map +1 -1
- package/dist/epistemicAnswers.js +64 -11
- package/dist/epistemicAnswers.js.map +1 -1
- package/dist/epistemicBeliefs.admin.js +46 -0
- package/dist/epistemicBeliefs.admin.js.map +1 -1
- package/dist/epistemicBeliefs.backfills.js +46 -0
- package/dist/epistemicBeliefs.backfills.js.map +1 -1
- package/dist/epistemicBeliefs.confidence.d.ts +1 -1
- package/dist/epistemicBeliefs.confidence.js +53 -6
- package/dist/epistemicBeliefs.confidence.js.map +1 -1
- package/dist/epistemicBeliefs.core.js +91 -11
- package/dist/epistemicBeliefs.core.js.map +1 -1
- package/dist/epistemicBeliefs.d.ts +1 -1
- package/dist/epistemicBeliefs.forkEvidence.js.map +1 -1
- package/dist/epistemicBeliefs.helpers.d.ts +2 -2
- package/dist/epistemicBeliefs.helpers.js +46 -0
- package/dist/epistemicBeliefs.helpers.js.map +1 -1
- package/dist/epistemicBeliefs.internal.js +90 -10
- package/dist/epistemicBeliefs.internal.js.map +1 -1
- package/dist/epistemicBeliefs.js +103 -22
- package/dist/epistemicBeliefs.js.map +1 -1
- package/dist/epistemicBeliefs.lifecycle.js +53 -6
- package/dist/epistemicBeliefs.lifecycle.js.map +1 -1
- package/dist/epistemicBeliefs.links.js +85 -4
- package/dist/epistemicBeliefs.links.js.map +1 -1
- package/dist/epistemicBeliefs.topicAnchor.js +39 -8
- package/dist/epistemicBeliefs.topicAnchor.js.map +1 -1
- package/dist/epistemicContracts.evaluators.js +53 -6
- package/dist/epistemicContracts.evaluators.js.map +1 -1
- package/dist/epistemicContracts.handlers.js +54 -10
- package/dist/epistemicContracts.handlers.js.map +1 -1
- package/dist/epistemicContracts.js +54 -10
- package/dist/epistemicContracts.js.map +1 -1
- package/dist/epistemicEdges.d.ts +1 -1
- package/dist/epistemicEdges.handlers.js +48 -3
- package/dist/epistemicEdges.handlers.js.map +1 -1
- package/dist/epistemicEdges.helpers.d.ts +3 -3
- package/dist/epistemicEdges.js +162 -4
- package/dist/epistemicEdges.js.map +1 -1
- package/dist/epistemicEdges.mutations.js +112 -1
- package/dist/epistemicEdges.mutations.js.map +1 -1
- package/dist/epistemicEdges.queries.js +46 -0
- package/dist/epistemicEdges.queries.js.map +1 -1
- package/dist/epistemicEdges.types.d.ts +1 -1
- package/dist/epistemicEvidence.d.ts +1 -1
- package/dist/epistemicEvidence.js +168 -14
- package/dist/epistemicEvidence.js.map +1 -1
- package/dist/epistemicEvidenceHelpers.d.ts +1 -1
- package/dist/epistemicEvidenceHelpers.js +46 -0
- package/dist/epistemicEvidenceHelpers.js.map +1 -1
- package/dist/epistemicEvidenceMutations.js +168 -14
- package/dist/epistemicEvidenceMutations.js.map +1 -1
- package/dist/epistemicEvidenceQueries.js +46 -0
- package/dist/epistemicEvidenceQueries.js.map +1 -1
- package/dist/epistemicHelpers.js +11 -6
- package/dist/epistemicHelpers.js.map +1 -1
- package/dist/epistemicInsert.d.ts +8 -0
- package/dist/epistemicInsert.js +45 -0
- package/dist/epistemicInsert.js.map +1 -0
- package/dist/epistemicNodeCreation.js +11 -6
- package/dist/epistemicNodeCreation.js.map +1 -1
- package/dist/epistemicNodes.helpers.d.ts +1 -1
- package/dist/epistemicNodes.internal.js +53 -1
- package/dist/epistemicNodes.internal.js.map +1 -1
- package/dist/epistemicNodes.js +56 -4
- package/dist/epistemicNodes.js.map +1 -1
- package/dist/epistemicNodes.mutations.js +55 -3
- package/dist/epistemicNodes.mutations.js.map +1 -1
- package/dist/epistemicNodes.queries.js +46 -0
- package/dist/epistemicNodes.queries.js.map +1 -1
- package/dist/epistemicNodes.validators.d.ts +1 -1
- package/dist/epistemicQuestions.conviction.js +46 -0
- package/dist/epistemicQuestions.conviction.js.map +1 -1
- package/dist/epistemicQuestions.create.js +58 -7
- package/dist/epistemicQuestions.create.js.map +1 -1
- package/dist/epistemicQuestions.d.ts +1 -1
- package/dist/epistemicQuestions.evidence.js +53 -2
- package/dist/epistemicQuestions.evidence.js.map +1 -1
- package/dist/epistemicQuestions.helpers.d.ts +1 -1
- package/dist/epistemicQuestions.helpers.js +46 -0
- package/dist/epistemicQuestions.helpers.js.map +1 -1
- package/dist/epistemicQuestions.js +60 -9
- package/dist/epistemicQuestions.js.map +1 -1
- package/dist/epistemicQuestions.lifecycle.js +46 -0
- package/dist/epistemicQuestions.lifecycle.js.map +1 -1
- package/dist/epistemicQuestions.queries.js +46 -0
- package/dist/epistemicQuestions.queries.js.map +1 -1
- package/dist/epistemicQuestions.sprint.js +46 -0
- package/dist/epistemicQuestions.sprint.js.map +1 -1
- package/dist/epistemicQuestions.tail.js +53 -2
- package/dist/epistemicQuestions.tail.js.map +1 -1
- package/dist/epistemicSources.js +53 -2
- package/dist/epistemicSources.js.map +1 -1
- package/dist/helpers.js +66 -1
- package/dist/helpers.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +304 -76
- package/dist/index.js.map +1 -1
- package/dist/proof-attestation.json +1 -1
- package/dist/questionEvidenceLinks.js +46 -0
- package/dist/questionEvidenceLinks.js.map +1 -1
- package/dist/scopeResolverCompat.d.ts +1 -1
- package/dist/scopeResolverCompat.js +46 -0
- package/dist/scopeResolverCompat.js.map +1 -1
- package/dist/{topicScope-By_zp4tt.d.ts → topicScope-7zhyeGl7.d.ts} +1 -1
- package/dist/topicScope.d.ts +1 -1
- package/dist/topicScope.js +46 -0
- package/dist/topicScope.js.map +1 -1
- package/dist/workflowBridge.js +46 -0
- package/dist/workflowBridge.js.map +1 -1
- package/dist/workspaceIsolation.d.ts +1 -1
- package/dist/workspaceIsolation.js +46 -0
- package/dist/workspaceIsolation.js.map +1 -1
- package/package.json +4 -4
|
@@ -536,6 +536,35 @@ function resolveGraphPrimitivesAppResolvers(_ctx) {
|
|
|
536
536
|
};
|
|
537
537
|
}
|
|
538
538
|
var LEGACY_SCOPE_FIELD2 = "graphScopeProjectId";
|
|
539
|
+
async function resolveTopicNodeScopeOrNull(ctx, ref) {
|
|
540
|
+
if (!ctx?.db || typeof ctx.db.query !== "function") {
|
|
541
|
+
return null;
|
|
542
|
+
}
|
|
543
|
+
let node = null;
|
|
544
|
+
try {
|
|
545
|
+
const byGlobalId = await ctx.db.query("epistemicNodes").withIndex("by_globalId", (q) => q.eq("globalId", ref)).first();
|
|
546
|
+
if (byGlobalId && byGlobalId.nodeType === "topic") {
|
|
547
|
+
node = byGlobalId;
|
|
548
|
+
}
|
|
549
|
+
} catch (error) {
|
|
550
|
+
debugGraphPrimitiveFallback(
|
|
551
|
+
"[topicScope] topic-node scope lookup by globalId failed",
|
|
552
|
+
{ error, ref }
|
|
553
|
+
);
|
|
554
|
+
}
|
|
555
|
+
if (!node) {
|
|
556
|
+
return null;
|
|
557
|
+
}
|
|
558
|
+
const scopeKey = normalizeScopeValue(node.topicId) ?? normalizeScopeValue(node.globalId);
|
|
559
|
+
if (!scopeKey) {
|
|
560
|
+
return null;
|
|
561
|
+
}
|
|
562
|
+
return {
|
|
563
|
+
topicId: scopeKey,
|
|
564
|
+
projectId: asMappedProjectId(node),
|
|
565
|
+
source: "topic_node"
|
|
566
|
+
};
|
|
567
|
+
}
|
|
539
568
|
function asMappedProjectId(topic) {
|
|
540
569
|
if (!topic) {
|
|
541
570
|
return;
|
|
@@ -676,6 +705,13 @@ async function resolveTopicProjectScope(ctx, args) {
|
|
|
676
705
|
) ?? null;
|
|
677
706
|
}
|
|
678
707
|
if (!topic) {
|
|
708
|
+
const nodeScope = await resolveTopicNodeScopeOrNull(
|
|
709
|
+
ctx,
|
|
710
|
+
String(args.topicId)
|
|
711
|
+
);
|
|
712
|
+
if (nodeScope) {
|
|
713
|
+
return nodeScope;
|
|
714
|
+
}
|
|
679
715
|
throw new Error(`Topic not found: ${String(args.topicId)}`);
|
|
680
716
|
}
|
|
681
717
|
const inherited = await resolveInheritedWorkspaceScope(ctx, topic);
|
|
@@ -746,6 +782,16 @@ async function resolveTopicProjectScope(ctx, args) {
|
|
|
746
782
|
source: "project_mapped_topic"
|
|
747
783
|
};
|
|
748
784
|
}
|
|
785
|
+
const nodeScope = await resolveTopicNodeScopeOrNull(
|
|
786
|
+
ctx,
|
|
787
|
+
String(args.projectId)
|
|
788
|
+
);
|
|
789
|
+
if (nodeScope) {
|
|
790
|
+
return {
|
|
791
|
+
...nodeScope,
|
|
792
|
+
projectId: nodeScope.projectId ?? String(args.projectId)
|
|
793
|
+
};
|
|
794
|
+
}
|
|
749
795
|
throw new Error(
|
|
750
796
|
`Legacy project scope ${String(args.projectId)} has no mapped topic.`
|
|
751
797
|
);
|
|
@@ -935,7 +981,72 @@ var EDGE_LAYER_RULES = {
|
|
|
935
981
|
from: ["ontological"],
|
|
936
982
|
to: ["L3"],
|
|
937
983
|
description: "Deal -> Theme"
|
|
938
|
-
}
|
|
984
|
+
},
|
|
985
|
+
// C2-RR.4 — storage migration alias + the remaining 55 reachable edge types.
|
|
986
|
+
// Mirrors the kernel rule table
|
|
987
|
+
// (packages/reasoning-kernel/src/adapters/lib/edgeValidation.ts) so this
|
|
988
|
+
// graph-primitives write path admits the same public edge vocabulary. See the
|
|
989
|
+
// kernel file for the per-group rationale.
|
|
990
|
+
extracted_from: {
|
|
991
|
+
from: ["L2", "L3", "L4"],
|
|
992
|
+
to: ["L1", "L2", "L3"],
|
|
993
|
+
description: "Legacy storage migration alias for derived_from; public writes use derived_from"
|
|
994
|
+
},
|
|
995
|
+
qualifies: { from: ["L2", "L3"], to: ["L3"], description: "Evidence/Belief qualifies a Belief" },
|
|
996
|
+
contradicts: { from: ["L2", "L3"], to: ["L3"], description: "Evidence/Belief contradicts a Belief" },
|
|
997
|
+
reinforces: { from: ["L2", "L3"], to: ["L3"], description: "Evidence/Belief reinforces a Belief" },
|
|
998
|
+
corroborates: { from: ["L2", "L3"], to: ["L3"], description: "Independent evidence/belief corroborates a Belief" },
|
|
999
|
+
strengthened_by: { from: ["L3"], to: ["L2", "L3"], description: "Belief is strengthened by Evidence/Belief" },
|
|
1000
|
+
weakened_by: { from: ["L3"], to: ["L2", "L3"], description: "Belief is weakened by Evidence/Belief" },
|
|
1001
|
+
validated_by: { from: ["L3"], to: ["L2", "L3"], description: "Belief is validated by Evidence/Belief" },
|
|
1002
|
+
falsified_by: { from: ["L3"], to: ["L2", "L3"], description: "Belief is falsified by Evidence/Belief" },
|
|
1003
|
+
amplifies: { from: ["L3"], to: ["L3"], description: "Belief amplifies another Belief" },
|
|
1004
|
+
precondition_for: { from: ["L3"], to: ["L3"], description: "Belief is a precondition for another Belief" },
|
|
1005
|
+
prerequisite_for: { from: ["L3"], to: ["L3"], description: "Belief is a prerequisite for another Belief" },
|
|
1006
|
+
required_for: { from: ["L3"], to: ["L3"], description: "Belief is required for another Belief" },
|
|
1007
|
+
in_tension_with: { from: ["L3"], to: ["L3"], description: "Belief is in tension with another Belief" },
|
|
1008
|
+
mutually_exclusive: { from: ["L3"], to: ["L3"], description: "Beliefs cannot both hold" },
|
|
1009
|
+
exclusive_with: { from: ["L3"], to: ["L3"], description: "Belief is exclusive with another Belief" },
|
|
1010
|
+
alternative_to: { from: ["L3"], to: ["L3"], description: "Belief is an alternative to another Belief" },
|
|
1011
|
+
subsumes: { from: ["L3"], to: ["L3"], description: "Belief subsumes a narrower Belief" },
|
|
1012
|
+
extends: { from: ["L3"], to: ["L3"], description: "Belief extends another Belief" },
|
|
1013
|
+
refines: { from: ["L3"], to: ["L3"], description: "Belief refines another Belief" },
|
|
1014
|
+
implements: { from: ["L3"], to: ["L3"], description: "Belief implements an abstract Belief" },
|
|
1015
|
+
violates: { from: ["L3"], to: ["L3"], description: "Belief violates a constraint Belief" },
|
|
1016
|
+
assumes: { from: ["L3"], to: ["L3"], description: "Belief assumes another Belief" },
|
|
1017
|
+
would_predict: { from: ["L3"], to: ["L3"], description: "Belief would predict another Belief" },
|
|
1018
|
+
analogous_to: { from: ["L3"], to: ["L3"], description: "Belief is analogous to another Belief" },
|
|
1019
|
+
independent_of: { from: ["L3"], to: ["L3"], description: "Belief is independent of another Belief" },
|
|
1020
|
+
correlates_with: { from: ["L3"], to: ["L3"], description: "Belief correlates with another Belief" },
|
|
1021
|
+
co_changes_with: { from: ["L3"], to: ["L3"], description: "Belief co-changes with another Belief" },
|
|
1022
|
+
counterfactual_of: { from: ["L3"], to: ["L3"], description: "Belief is a counterfactual of another Belief" },
|
|
1023
|
+
parallel_to: { from: ["L3"], to: ["L3"], description: "Belief runs parallel to another Belief" },
|
|
1024
|
+
cascade_from: { from: ["L3"], to: ["L3"], description: "Cascade from an upstream Belief" },
|
|
1025
|
+
cascade_to: { from: ["L3"], to: ["L3"], description: "Cascade to a downstream Belief" },
|
|
1026
|
+
collapses_if: { from: ["L3"], to: ["L3"], description: "Belief collapses if another fails" },
|
|
1027
|
+
branches_from: { from: ["L3"], to: ["L3"], description: "Belief branches from an ancestor Belief" },
|
|
1028
|
+
same_as: { from: ["L2", "L3", "ontological"], to: ["L2", "L3", "ontological"], description: "Two nodes are the same entity" },
|
|
1029
|
+
answers: { from: ["L2", "L3"], to: ["L3"], description: "Answer/Belief answers a Question" },
|
|
1030
|
+
partially_answers: { from: ["L2", "L3"], to: ["L3"], description: "Answer/Belief partially answers a Question" },
|
|
1031
|
+
explores: { from: ["L3"], to: ["L3"], description: "Question explores a Belief/Theme" },
|
|
1032
|
+
informed_by_theme: { from: ["L3"], to: ["L3"], description: "Belief is informed by a Theme" },
|
|
1033
|
+
same_theme_as: { from: ["L3"], to: ["L3"], description: "Two Beliefs share a Theme" },
|
|
1034
|
+
based_on: { from: ["L4"], to: ["L3"], description: "Decision is based on a Belief/Question" },
|
|
1035
|
+
based_on_belief: { from: ["L4"], to: ["L3"], description: "Decision is based on a Belief" },
|
|
1036
|
+
based_on_question: { from: ["L4"], to: ["L3"], description: "Decision is based on a Question" },
|
|
1037
|
+
blocked_by_contradiction: { from: ["L4"], to: ["L3"], description: "Decision is blocked by a Contradiction" },
|
|
1038
|
+
parent_of: { from: ["L3", "L4", "ontological", "organizational"], to: ["L2", "L3", "ontological", "organizational"], description: "A is the parent of B" },
|
|
1039
|
+
child_of: { from: ["L2", "L3", "ontological", "organizational"], to: ["L3", "L4", "ontological", "organizational"], description: "A is the child of B" },
|
|
1040
|
+
scoped_by: { from: ["L2", "L3"], to: ["L3", "organizational"], description: "Object is scoped by a Topic/Theme" },
|
|
1041
|
+
cites: { from: ["L2", "L3"], to: ["L1", "L2"], description: "Evidence/Belief cites a Source/Excerpt" },
|
|
1042
|
+
summarizes: { from: ["L2", "L3"], to: ["L1", "L2"], description: "Synthesis/Evidence summarizes a Source/Evidence" },
|
|
1043
|
+
same_source_as: { from: ["L1", "L2"], to: ["L1", "L2"], description: "Two nodes derive from the same Source" },
|
|
1044
|
+
migrating_from: { from: ["L2", "L3", "L4"], to: ["L1", "L2", "L3"], description: "Migration lineage: from an ancestor" },
|
|
1045
|
+
migrating_to: { from: ["L1", "L2", "L3"], to: ["L2", "L3", "L4"], description: "Migration lineage: to a successor" },
|
|
1046
|
+
about_entity: { from: ["L2", "L3"], to: ["ontological"], description: "Belief/Evidence is about an Entity" },
|
|
1047
|
+
entity_referenced_in: { from: ["ontological"], to: ["L1", "L2"], description: "Entity is referenced in a Source/Evidence" },
|
|
1048
|
+
related_to: { from: ["L2", "L3", "ontological", "organizational"], to: ["L2", "L3", "ontological", "organizational"], description: "Lateral adjacency; no confidence pressure" },
|
|
1049
|
+
blocks: { from: ["L3", "L4"], to: ["L3", "L4"], description: "A blocks B (structural gate)" }
|
|
939
1050
|
};
|
|
940
1051
|
function validateEdgeLayers(edgeType, fromLayer, toLayer) {
|
|
941
1052
|
const rules = EDGE_LAYER_RULES[edgeType];
|