@lucern/graph-primitives 1.0.30 → 1.0.32
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.map +1 -1
- package/dist/beliefEvidenceLinks.operational.js.map +1 -1
- package/dist/contradictions.js +5 -5
- package/dist/contradictions.js.map +1 -1
- package/dist/entityLifecycle.js.map +1 -1
- package/dist/epistemicAnswers.js +1 -1
- package/dist/epistemicAnswers.js.map +1 -1
- package/dist/epistemicBeliefs.admin.js +2 -2
- package/dist/epistemicBeliefs.admin.js.map +1 -1
- package/dist/epistemicBeliefs.backfills.js +3 -3
- package/dist/epistemicBeliefs.backfills.js.map +1 -1
- package/dist/epistemicBeliefs.confidence.js +1 -4
- package/dist/epistemicBeliefs.confidence.js.map +1 -1
- package/dist/epistemicBeliefs.core.js +20 -30
- package/dist/epistemicBeliefs.core.js.map +1 -1
- package/dist/epistemicBeliefs.forkEvidence.js.map +1 -1
- package/dist/epistemicBeliefs.helpers.js +1 -1
- package/dist/epistemicBeliefs.helpers.js.map +1 -1
- package/dist/epistemicBeliefs.internal.js +15 -25
- package/dist/epistemicBeliefs.internal.js.map +1 -1
- package/dist/epistemicBeliefs.js +27 -40
- package/dist/epistemicBeliefs.js.map +1 -1
- package/dist/epistemicBeliefs.lifecycle.js +1 -4
- package/dist/epistemicBeliefs.lifecycle.js.map +1 -1
- package/dist/epistemicBeliefs.links.js +1 -1
- package/dist/epistemicBeliefs.links.js.map +1 -1
- package/dist/epistemicBeliefs.queries.js.map +1 -1
- package/dist/epistemicBeliefs.topicAnchor.js +12 -22
- package/dist/epistemicBeliefs.topicAnchor.js.map +1 -1
- package/dist/epistemicContracts.evaluators.js +1 -4
- package/dist/epistemicContracts.evaluators.js.map +1 -1
- package/dist/epistemicContracts.handlers.js +1 -4
- package/dist/epistemicContracts.handlers.js.map +1 -1
- package/dist/epistemicContracts.js +1 -4
- package/dist/epistemicContracts.js.map +1 -1
- package/dist/epistemicEdgeCreation.js.map +1 -1
- package/dist/epistemicEdges.handlers.js.map +1 -1
- package/dist/epistemicEdges.js +6 -7
- package/dist/epistemicEdges.js.map +1 -1
- package/dist/epistemicEdges.mutations.js +3 -4
- package/dist/epistemicEdges.mutations.js.map +1 -1
- package/dist/epistemicEdges.queries.js +3 -3
- package/dist/epistemicEdges.queries.js.map +1 -1
- package/dist/epistemicEvidence.js +10 -10
- package/dist/epistemicEvidence.js.map +1 -1
- package/dist/epistemicEvidenceHelpers.js +1 -1
- package/dist/epistemicEvidenceHelpers.js.map +1 -1
- package/dist/epistemicEvidenceMutations.js +5 -5
- package/dist/epistemicEvidenceMutations.js.map +1 -1
- package/dist/epistemicEvidenceQueries.js +6 -6
- package/dist/epistemicEvidenceQueries.js.map +1 -1
- package/dist/epistemicHelpers.js +4 -4
- package/dist/epistemicHelpers.js.map +1 -1
- package/dist/epistemicInsert.js.map +1 -1
- package/dist/epistemicLayerRules.js +2 -2
- package/dist/epistemicLayerRules.js.map +1 -1
- package/dist/epistemicLinking.js.map +1 -1
- package/dist/epistemicNodeCreation.js +2 -2
- package/dist/epistemicNodeCreation.js.map +1 -1
- package/dist/epistemicNodes.internal.js +2 -3
- package/dist/epistemicNodes.internal.js.map +1 -1
- package/dist/epistemicNodes.js +10 -12
- package/dist/epistemicNodes.js.map +1 -1
- package/dist/epistemicNodes.mutations.js +3 -4
- package/dist/epistemicNodes.mutations.js.map +1 -1
- package/dist/epistemicNodes.queries.js +5 -5
- package/dist/epistemicNodes.queries.js.map +1 -1
- package/dist/epistemicQuestions.conviction.js +5 -5
- package/dist/epistemicQuestions.conviction.js.map +1 -1
- package/dist/epistemicQuestions.create.js +7 -7
- package/dist/epistemicQuestions.create.js.map +1 -1
- package/dist/epistemicQuestions.evidence.js +2 -2
- package/dist/epistemicQuestions.evidence.js.map +1 -1
- package/dist/epistemicQuestions.helpers.js +7 -4
- package/dist/epistemicQuestions.helpers.js.map +1 -1
- package/dist/epistemicQuestions.js +16 -13
- package/dist/epistemicQuestions.js.map +1 -1
- package/dist/epistemicQuestions.lifecycle.js.map +1 -1
- package/dist/epistemicQuestions.queries.js +2 -2
- package/dist/epistemicQuestions.queries.js.map +1 -1
- package/dist/epistemicQuestions.sprint.js +6 -3
- package/dist/epistemicQuestions.sprint.js.map +1 -1
- package/dist/epistemicQuestions.tail.js +2 -2
- package/dist/epistemicQuestions.tail.js.map +1 -1
- package/dist/epistemicSources.js.map +1 -1
- package/dist/index.js +79 -92
- package/dist/index.js.map +1 -1
- package/dist/proof-attestation.json +1 -1
- package/package.json +4 -4
package/dist/epistemicBeliefs.js
CHANGED
|
@@ -10,7 +10,7 @@ import { normalizeTupleContradictionPolicy, mkOpinion, createInheritedContractRe
|
|
|
10
10
|
import { isNodeType, getLayerForNodeType } from '@lucern/contracts/schema-helpers/spine/tables/epistemicNodes';
|
|
11
11
|
import { assertSchemaEnumValue } from '@lucern/contracts/schema-helpers/enumValidation';
|
|
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
|
import { listAudienceRegistryRows } from '@lucern/access-control/audienceRegistry';
|
|
15
15
|
|
|
16
16
|
// src/epistemicBeliefs.admin.ts
|
|
@@ -1246,7 +1246,7 @@ async function markBeliefGraphDirty(ctx, scope) {
|
|
|
1246
1246
|
);
|
|
1247
1247
|
}
|
|
1248
1248
|
async function resolveBeliefScopeOrNull(ctx, args) {
|
|
1249
|
-
if (!
|
|
1249
|
+
if (!args.topicId) {
|
|
1250
1250
|
return null;
|
|
1251
1251
|
}
|
|
1252
1252
|
try {
|
|
@@ -1776,7 +1776,7 @@ var getByPillar = query({
|
|
|
1776
1776
|
},
|
|
1777
1777
|
returns: permissiveReturn,
|
|
1778
1778
|
handler: async (ctx, args) => {
|
|
1779
|
-
if (!
|
|
1779
|
+
if (!args.topicId) {
|
|
1780
1780
|
return [];
|
|
1781
1781
|
}
|
|
1782
1782
|
let scope;
|
|
@@ -2207,7 +2207,7 @@ var getRecentConfidenceChanges = query({
|
|
|
2207
2207
|
if (!scope) {
|
|
2208
2208
|
return [];
|
|
2209
2209
|
}
|
|
2210
|
-
const scopeId = scope.topicId ? String(scope.topicId) :
|
|
2210
|
+
const scopeId = scope.topicId ? String(scope.topicId) : void 0;
|
|
2211
2211
|
if (!(scopeId && await checkScopeAccess(ctx, scopeId, args.userId))) {
|
|
2212
2212
|
return [];
|
|
2213
2213
|
}
|
|
@@ -2464,7 +2464,7 @@ var backfillScoredBeliefEdges = internalMutation({
|
|
|
2464
2464
|
returns: permissiveReturn,
|
|
2465
2465
|
handler: async (ctx, args) => {
|
|
2466
2466
|
const dryRun = args.dryRun ?? false;
|
|
2467
|
-
const scopeTopicId = args.topicId
|
|
2467
|
+
const scopeTopicId = args.topicId;
|
|
2468
2468
|
if (!scopeTopicId) {
|
|
2469
2469
|
return {
|
|
2470
2470
|
dryRun,
|
|
@@ -3425,10 +3425,7 @@ async function scheduleFirstScoringThemeEdges(ctx, args, node, state) {
|
|
|
3425
3425
|
if (!state.isFirstScoring) {
|
|
3426
3426
|
return;
|
|
3427
3427
|
}
|
|
3428
|
-
const themeNodes = await ctx.db.query("epistemicNodes").withIndex(
|
|
3429
|
-
"by_topic",
|
|
3430
|
-
(q) => q.eq("topicId", node.topicId || node.projectId)
|
|
3431
|
-
).filter((q) => q.eq(q.field("nodeType"), "theme")).collect();
|
|
3428
|
+
const themeNodes = await ctx.db.query("epistemicNodes").withIndex("by_topic", (q) => q.eq("topicId", node.topicId)).filter((q) => q.eq(q.field("nodeType"), "theme")).collect();
|
|
3432
3429
|
for (const theme of themeNodes) {
|
|
3433
3430
|
if (!(theme.globalId && node.globalId)) {
|
|
3434
3431
|
continue;
|
|
@@ -3789,36 +3786,26 @@ async function insertEpistemicEdge(ctx, doc) {
|
|
|
3789
3786
|
function cleanString(value) {
|
|
3790
3787
|
return typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
|
|
3791
3788
|
}
|
|
3792
|
-
function
|
|
3789
|
+
function requireTopicGlobalId(topicRef) {
|
|
3793
3790
|
const normalized = topicRef.trim();
|
|
3794
|
-
if (!normalized) {
|
|
3795
|
-
|
|
3796
|
-
|
|
3797
|
-
|
|
3798
|
-
if (normalized.startsWith("top_")) {
|
|
3799
|
-
candidates.push(normalized.slice(4));
|
|
3791
|
+
if (!(normalized && isUuidV7(normalized))) {
|
|
3792
|
+
throw new Error(
|
|
3793
|
+
"Belief creation topic anchors must be UUIDv7 epistemicNodes.globalId values."
|
|
3794
|
+
);
|
|
3800
3795
|
}
|
|
3801
|
-
return
|
|
3796
|
+
return normalized;
|
|
3802
3797
|
}
|
|
3803
3798
|
function readTopicNodeRef(args) {
|
|
3804
3799
|
return cleanString(args.topicGlobalId) ?? cleanString(args.topicNodeId) ?? cleanString(args.topicId);
|
|
3805
3800
|
}
|
|
3806
3801
|
async function resolveRequiredTopicAnchor(ctx, topicRef) {
|
|
3807
|
-
|
|
3808
|
-
|
|
3809
|
-
|
|
3810
|
-
|
|
3811
|
-
return direct;
|
|
3812
|
-
}
|
|
3813
|
-
} catch {
|
|
3814
|
-
}
|
|
3815
|
-
const byGlobalId = await ctx.db.query("epistemicNodes").withIndex("by_globalId", (q) => q.eq("globalId", candidate)).first();
|
|
3816
|
-
if (byGlobalId?.nodeType === "topic" && cleanString(byGlobalId.globalId)) {
|
|
3817
|
-
return byGlobalId;
|
|
3818
|
-
}
|
|
3802
|
+
const topicGlobalId = requireTopicGlobalId(topicRef);
|
|
3803
|
+
const byGlobalId = await ctx.db.query("epistemicNodes").withIndex("by_globalId", (q) => q.eq("globalId", topicGlobalId)).first();
|
|
3804
|
+
if (byGlobalId?.nodeType === "topic" && cleanString(byGlobalId.globalId)) {
|
|
3805
|
+
return byGlobalId;
|
|
3819
3806
|
}
|
|
3820
3807
|
throw new Error(
|
|
3821
|
-
"Belief creation requires
|
|
3808
|
+
"Belief creation requires a UUIDv7 topicGlobalId for a topic node in epistemicNodes. Legacy topics-table IDs are not valid belief anchors."
|
|
3822
3809
|
);
|
|
3823
3810
|
}
|
|
3824
3811
|
function scopeFromTopicAnchor(topicNode) {
|
|
@@ -4329,7 +4316,7 @@ var create = mutation({
|
|
|
4329
4316
|
projectId: scope.projectId,
|
|
4330
4317
|
topicId: String(scope.topicId)
|
|
4331
4318
|
});
|
|
4332
|
-
if (scope.
|
|
4319
|
+
if (scope.topicId) {
|
|
4333
4320
|
await ctx.scheduler.runAfter(
|
|
4334
4321
|
0,
|
|
4335
4322
|
"embeddingActions:generateEpistemicNodeEmbedding",
|
|
@@ -4348,7 +4335,7 @@ Rationale: ${args.rationale}` : args.formulation
|
|
|
4348
4335
|
}
|
|
4349
4336
|
);
|
|
4350
4337
|
}
|
|
4351
|
-
if (scope.
|
|
4338
|
+
if (scope.topicId) {
|
|
4352
4339
|
await ctx.scheduler.runAfter(
|
|
4353
4340
|
2e3,
|
|
4354
4341
|
// 2 second delay
|
|
@@ -4361,7 +4348,7 @@ Rationale: ${args.rationale}` : args.formulation
|
|
|
4361
4348
|
}
|
|
4362
4349
|
);
|
|
4363
4350
|
}
|
|
4364
|
-
if (pillar === "other" &&
|
|
4351
|
+
if (pillar === "other" && scope.topicId) {
|
|
4365
4352
|
await ctx.scheduler.runAfter(
|
|
4366
4353
|
2500,
|
|
4367
4354
|
"beliefCategorization:autoCategorizeBelief",
|
|
@@ -4372,7 +4359,7 @@ Rationale: ${args.rationale}` : args.formulation
|
|
|
4372
4359
|
}
|
|
4373
4360
|
);
|
|
4374
4361
|
}
|
|
4375
|
-
if (scope.
|
|
4362
|
+
if (scope.topicId) {
|
|
4376
4363
|
await ctx.scheduler.runAfter(
|
|
4377
4364
|
3e3,
|
|
4378
4365
|
// 3 second delay — after entity extraction
|
|
@@ -4640,7 +4627,7 @@ var getByProject = query({
|
|
|
4640
4627
|
},
|
|
4641
4628
|
returns: permissiveReturn,
|
|
4642
4629
|
handler: async (ctx, args) => {
|
|
4643
|
-
if (!
|
|
4630
|
+
if (!args.topicId) {
|
|
4644
4631
|
return [];
|
|
4645
4632
|
}
|
|
4646
4633
|
const pageSize = clampBeliefLimit(args.limit);
|
|
@@ -4663,7 +4650,7 @@ var getByProject = query({
|
|
|
4663
4650
|
return [];
|
|
4664
4651
|
}
|
|
4665
4652
|
if (args.userId) {
|
|
4666
|
-
const scopeId = scope.topicId ? String(scope.topicId) :
|
|
4653
|
+
const scopeId = scope.topicId ? String(scope.topicId) : void 0;
|
|
4667
4654
|
if (!scopeId) {
|
|
4668
4655
|
return [];
|
|
4669
4656
|
}
|
|
@@ -4820,7 +4807,7 @@ var forkBelief = mutation({
|
|
|
4820
4807
|
supersededBy: newNodeId,
|
|
4821
4808
|
updatedAt: now,
|
|
4822
4809
|
metadata: {
|
|
4823
|
-
...metadata
|
|
4810
|
+
...metadata,
|
|
4824
4811
|
status: "superseded",
|
|
4825
4812
|
beliefStatus: "superseded",
|
|
4826
4813
|
epistemicStatus: "superseded",
|
|
@@ -4900,7 +4887,7 @@ var forkBelief = mutation({
|
|
|
4900
4887
|
projectId: parent.projectId,
|
|
4901
4888
|
topicId: parent.topicId
|
|
4902
4889
|
});
|
|
4903
|
-
if (parent.
|
|
4890
|
+
if (parent.topicId) {
|
|
4904
4891
|
const inheritedPillar = normalizePillar(
|
|
4905
4892
|
String(metadata?.pillar || metadata?.topic || "")
|
|
4906
4893
|
);
|
|
@@ -5306,7 +5293,7 @@ async function insertInternalBeliefAudit(ctx, args) {
|
|
|
5306
5293
|
});
|
|
5307
5294
|
}
|
|
5308
5295
|
async function scheduleInternalBeliefEmbedding(ctx, args) {
|
|
5309
|
-
if (!
|
|
5296
|
+
if (!args.scope.topicId) {
|
|
5310
5297
|
return;
|
|
5311
5298
|
}
|
|
5312
5299
|
await ctx.scheduler.runAfter(0, EMBEDDING_GENERATION_ACTION, {
|
|
@@ -5334,7 +5321,7 @@ function numericRequestedConfidence(confidence) {
|
|
|
5334
5321
|
return 0.5;
|
|
5335
5322
|
}
|
|
5336
5323
|
async function scheduleInternalBeliefCategorization(ctx, args) {
|
|
5337
|
-
if (normalizePillar(args.args.pillar || args.args.topic) !== "other" || !
|
|
5324
|
+
if (normalizePillar(args.args.pillar || args.args.topic) !== "other" || !args.scope.topicId) {
|
|
5338
5325
|
return;
|
|
5339
5326
|
}
|
|
5340
5327
|
await ctx.scheduler.runAfter(2500, BELIEF_CATEGORIZATION_ACTION, {
|