@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.
Files changed (52) hide show
  1. package/dist/contradictions.js +3 -3
  2. package/dist/contradictions.js.map +1 -1
  3. package/dist/entityLifecycle.js +7 -39
  4. package/dist/entityLifecycle.js.map +1 -1
  5. package/dist/epistemicBeliefs.admin.js +6 -42
  6. package/dist/epistemicBeliefs.admin.js.map +1 -1
  7. package/dist/epistemicBeliefs.backfills.js +2 -21
  8. package/dist/epistemicBeliefs.backfills.js.map +1 -1
  9. package/dist/epistemicBeliefs.confidence.d.ts +1 -0
  10. package/dist/epistemicBeliefs.confidence.js +4 -40
  11. package/dist/epistemicBeliefs.confidence.js.map +1 -1
  12. package/dist/epistemicBeliefs.core.js +6 -44
  13. package/dist/epistemicBeliefs.core.js.map +1 -1
  14. package/dist/epistemicBeliefs.d.ts +1 -0
  15. package/dist/epistemicBeliefs.forkEvidence.js +2 -22
  16. package/dist/epistemicBeliefs.forkEvidence.js.map +1 -1
  17. package/dist/epistemicBeliefs.helpers.d.ts +3 -27
  18. package/dist/epistemicBeliefs.helpers.js +4 -40
  19. package/dist/epistemicBeliefs.helpers.js.map +1 -1
  20. package/dist/epistemicBeliefs.internal.js +2 -22
  21. package/dist/epistemicBeliefs.internal.js.map +1 -1
  22. package/dist/epistemicBeliefs.js +17 -55
  23. package/dist/epistemicBeliefs.js.map +1 -1
  24. package/dist/epistemicBeliefs.lifecycle.js +7 -45
  25. package/dist/epistemicBeliefs.lifecycle.js.map +1 -1
  26. package/dist/epistemicBeliefs.links.js +7 -43
  27. package/dist/epistemicBeliefs.links.js.map +1 -1
  28. package/dist/epistemicContracts.evaluators.js +4 -40
  29. package/dist/epistemicContracts.evaluators.js.map +1 -1
  30. package/dist/epistemicContracts.handlers.js +4 -40
  31. package/dist/epistemicContracts.handlers.js.map +1 -1
  32. package/dist/epistemicContracts.js +4 -40
  33. package/dist/epistemicContracts.js.map +1 -1
  34. package/dist/epistemicEdges.js +4 -4
  35. package/dist/epistemicEdges.js.map +1 -1
  36. package/dist/epistemicEdges.mutations.js +4 -4
  37. package/dist/epistemicEdges.mutations.js.map +1 -1
  38. package/dist/epistemicEvidence.js +5 -5
  39. package/dist/epistemicEvidence.js.map +1 -1
  40. package/dist/epistemicEvidenceMutations.js +5 -5
  41. package/dist/epistemicEvidenceMutations.js.map +1 -1
  42. package/dist/epistemicNodes.js +4 -4
  43. package/dist/epistemicNodes.js.map +1 -1
  44. package/dist/epistemicNodes.mutations.js +4 -4
  45. package/dist/epistemicNodes.mutations.js.map +1 -1
  46. package/dist/epistemicSources.js +2 -2
  47. package/dist/epistemicSources.js.map +1 -1
  48. package/dist/index.d.ts +1 -0
  49. package/dist/index.js +50 -121
  50. package/dist/index.js.map +1 -1
  51. package/dist/proof-attestation.json +1 -1
  52. package/package.json +4 -4
@@ -1,9 +1,10 @@
1
- import { v, ConvexError } from 'convex/values';
2
- import { checkScopeAccess, checkProjectAccess } from '@lucern/access-control/access';
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 requireProjectWriteAccess(
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 requireProjectWriteAccess(ctx, node.projectId, authenticatedUserId);
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 requireProjectWriteAccess(ctx, parent.projectId, authenticatedUserId);
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";