@lucern/graph-primitives 1.0.28 → 1.0.29
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/contradictions.js +3 -3
- package/dist/contradictions.js.map +1 -1
- package/dist/entityLifecycle.js +7 -39
- package/dist/entityLifecycle.js.map +1 -1
- package/dist/epistemicBeliefs.admin.js +6 -42
- package/dist/epistemicBeliefs.admin.js.map +1 -1
- package/dist/epistemicBeliefs.backfills.js +2 -21
- package/dist/epistemicBeliefs.backfills.js.map +1 -1
- package/dist/epistemicBeliefs.confidence.d.ts +1 -0
- package/dist/epistemicBeliefs.confidence.js +4 -40
- package/dist/epistemicBeliefs.confidence.js.map +1 -1
- package/dist/epistemicBeliefs.core.js +6 -44
- package/dist/epistemicBeliefs.core.js.map +1 -1
- package/dist/epistemicBeliefs.d.ts +1 -0
- package/dist/epistemicBeliefs.forkEvidence.js +2 -22
- package/dist/epistemicBeliefs.forkEvidence.js.map +1 -1
- package/dist/epistemicBeliefs.helpers.d.ts +3 -27
- package/dist/epistemicBeliefs.helpers.js +4 -40
- package/dist/epistemicBeliefs.helpers.js.map +1 -1
- package/dist/epistemicBeliefs.internal.js +2 -22
- package/dist/epistemicBeliefs.internal.js.map +1 -1
- package/dist/epistemicBeliefs.js +17 -55
- package/dist/epistemicBeliefs.js.map +1 -1
- package/dist/epistemicBeliefs.lifecycle.js +7 -45
- package/dist/epistemicBeliefs.lifecycle.js.map +1 -1
- package/dist/epistemicBeliefs.links.js +7 -43
- package/dist/epistemicBeliefs.links.js.map +1 -1
- package/dist/epistemicContracts.evaluators.js +4 -40
- package/dist/epistemicContracts.evaluators.js.map +1 -1
- package/dist/epistemicContracts.handlers.js +4 -40
- package/dist/epistemicContracts.handlers.js.map +1 -1
- package/dist/epistemicContracts.js +4 -40
- package/dist/epistemicContracts.js.map +1 -1
- package/dist/epistemicEdges.js +4 -4
- package/dist/epistemicEdges.js.map +1 -1
- package/dist/epistemicEdges.mutations.js +4 -4
- package/dist/epistemicEdges.mutations.js.map +1 -1
- package/dist/epistemicEvidence.js +5 -5
- package/dist/epistemicEvidence.js.map +1 -1
- package/dist/epistemicEvidenceMutations.js +5 -5
- package/dist/epistemicEvidenceMutations.js.map +1 -1
- package/dist/epistemicNodes.js +4 -4
- package/dist/epistemicNodes.js.map +1 -1
- package/dist/epistemicNodes.mutations.js +4 -4
- package/dist/epistemicNodes.mutations.js.map +1 -1
- package/dist/epistemicSources.js +2 -2
- package/dist/epistemicSources.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +50 -121
- package/dist/index.js.map +1 -1
- package/dist/proof-attestation.json +1 -1
- package/package.json +4 -4
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { v
|
|
2
|
-
import {
|
|
1
|
+
import { v } from 'convex/values';
|
|
2
|
+
import { requireScopeWriteAccess, checkScopeAccess } from '@lucern/access-control/access';
|
|
3
3
|
import { assertSchemaEnumValue } from '@lucern/contracts/schema-helpers/enumValidation';
|
|
4
4
|
import { permissiveReturn } from '@lucern/contracts/schema-helpers/validators';
|
|
5
5
|
import { componentsGeneric, anyApi, mutationGeneric, queryGeneric } from 'convex/server';
|
|
6
6
|
import { normalizeTupleContradictionPolicy, createInheritedContractRecord, confidenceFromSL } from '@lucern/confidence';
|
|
7
|
+
import { throwStructuredMutationError } from '@lucern/access-control/structuredMutationError';
|
|
7
8
|
import '@lucern/access-control/audience';
|
|
8
9
|
import { getCurrentUserId } from '@lucern/access-control/auth';
|
|
9
10
|
import { isNodeType, getLayerForNodeType } from '@lucern/contracts/schema-helpers/spine/tables/epistemicNodes';
|
|
@@ -813,26 +814,6 @@ var DEFAULT_CONFIDENCE_POLICY = {
|
|
|
813
814
|
scoringMode: "after_worktree",
|
|
814
815
|
tupleContradiction: normalizeTupleContradictionPolicy()
|
|
815
816
|
};
|
|
816
|
-
function throwStructuredMutationError(args) {
|
|
817
|
-
const data = {
|
|
818
|
-
structuredMutationError: true,
|
|
819
|
-
message: args.message,
|
|
820
|
-
status: args.status,
|
|
821
|
-
code: args.code,
|
|
822
|
-
invariantCode: args.invariantCode,
|
|
823
|
-
suggestion: args.suggestion,
|
|
824
|
-
details: args.details
|
|
825
|
-
};
|
|
826
|
-
const error = new ConvexError(
|
|
827
|
-
data
|
|
828
|
-
);
|
|
829
|
-
error.status = args.status;
|
|
830
|
-
error.code = args.code;
|
|
831
|
-
error.invariantCode = args.invariantCode;
|
|
832
|
-
error.suggestion = args.suggestion;
|
|
833
|
-
error.details = args.details;
|
|
834
|
-
throw error;
|
|
835
|
-
}
|
|
836
817
|
function assertBaseRateInRange(baseRate, field = "baseRate") {
|
|
837
818
|
if (baseRate < 0 || baseRate > 1) {
|
|
838
819
|
throwStructuredMutationError({
|
|
@@ -975,23 +956,6 @@ async function requireAuthenticatedUserId(ctx) {
|
|
|
975
956
|
}
|
|
976
957
|
return userId;
|
|
977
958
|
}
|
|
978
|
-
async function requireProjectWriteAccess(ctx, projectId, userId) {
|
|
979
|
-
const hasAccess = await checkProjectAccess(
|
|
980
|
-
ctx,
|
|
981
|
-
projectId,
|
|
982
|
-
userId
|
|
983
|
-
);
|
|
984
|
-
if (!hasAccess) {
|
|
985
|
-
throwStructuredMutationError({
|
|
986
|
-
message: `Project write access denied for topic ${projectId}.`,
|
|
987
|
-
status: 403,
|
|
988
|
-
code: "PROJECT_ACCESS_DENIED",
|
|
989
|
-
invariantCode: "policy.scope_required",
|
|
990
|
-
suggestion: "The acting principal lacks project-write access to this topic. Request a topic grant (or, if the principal created this topic, run the creator-grant backfill) and retry.",
|
|
991
|
-
details: { topicId: projectId, principalId: userId }
|
|
992
|
-
});
|
|
993
|
-
}
|
|
994
|
-
}
|
|
995
959
|
|
|
996
960
|
// src/epistemicBeliefs.forkEvidence.ts
|
|
997
961
|
function normalizeForkTriggerRelation(value) {
|
|
@@ -1274,8 +1238,6 @@ async function scheduleEmbeddingGeneration(args) {
|
|
|
1274
1238
|
);
|
|
1275
1239
|
}
|
|
1276
1240
|
}
|
|
1277
|
-
|
|
1278
|
-
// src/epistemicBeliefs.core.ts
|
|
1279
1241
|
var create = mutation({
|
|
1280
1242
|
args: {
|
|
1281
1243
|
...optionalBeliefScopeArgs,
|
|
@@ -1354,7 +1316,7 @@ var create = mutation({
|
|
|
1354
1316
|
context: "epistemicBeliefs.create"
|
|
1355
1317
|
});
|
|
1356
1318
|
if (scope.projectId) {
|
|
1357
|
-
await
|
|
1319
|
+
await requireScopeWriteAccess(
|
|
1358
1320
|
ctx,
|
|
1359
1321
|
scope.projectId,
|
|
1360
1322
|
authenticatedUserId
|
|
@@ -1594,7 +1556,7 @@ var refineBelief = mutation({
|
|
|
1594
1556
|
details: { nodeId: args.nodeId }
|
|
1595
1557
|
});
|
|
1596
1558
|
}
|
|
1597
|
-
await
|
|
1559
|
+
await requireScopeWriteAccess(ctx, node.projectId, authenticatedUserId);
|
|
1598
1560
|
if (typeof node.confidence === "number" && Number.isFinite(node.confidence)) {
|
|
1599
1561
|
throwStructuredMutationError({
|
|
1600
1562
|
message: "Scored beliefs are immutable. Use forkBelief to evolve a scored belief.",
|
|
@@ -1814,7 +1776,7 @@ var forkBelief = mutation({
|
|
|
1814
1776
|
details: { parentNodeId: args.parentNodeId }
|
|
1815
1777
|
});
|
|
1816
1778
|
}
|
|
1817
|
-
await
|
|
1779
|
+
await requireScopeWriteAccess(ctx, parent.projectId, authenticatedUserId);
|
|
1818
1780
|
const metadata = parent.metadata;
|
|
1819
1781
|
const forkBeliefStatus = "hypothesis";
|
|
1820
1782
|
const forkMode = args.forkMode ?? "supersede";
|