@lucern/contracts 1.0.54 → 1.0.56

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 (45) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/events-types.contract.js +4 -0
  3. package/dist/events.contract.d.ts +1 -1
  4. package/dist/events.contract.js +4 -0
  5. package/dist/evidence-taxonomy-target-scope.contract.js +9 -0
  6. package/dist/function-registry/beliefs.js +70 -0
  7. package/dist/function-registry/coding.js +71 -1
  8. package/dist/function-registry/context.js +71 -0
  9. package/dist/function-registry/contracts.js +70 -0
  10. package/dist/function-registry/coordination.js +70 -0
  11. package/dist/function-registry/edges.js +100 -2
  12. package/dist/function-registry/embeddings.js +70 -0
  13. package/dist/function-registry/evidence.js +59 -14
  14. package/dist/function-registry/graph.js +70 -0
  15. package/dist/function-registry/helpers.d.ts +1 -0
  16. package/dist/function-registry/helpers.js +95 -1
  17. package/dist/function-registry/hybrid.js +70 -0
  18. package/dist/function-registry/identity.js +70 -0
  19. package/dist/function-registry/index.js +95 -1
  20. package/dist/function-registry/judgments.js +70 -0
  21. package/dist/function-registry/legacy.js +70 -0
  22. package/dist/function-registry/lenses.js +70 -0
  23. package/dist/function-registry/nodes.js +70 -0
  24. package/dist/function-registry/ontologies.js +70 -0
  25. package/dist/function-registry/pipeline.js +70 -0
  26. package/dist/function-registry/policy.js +70 -0
  27. package/dist/function-registry/questions.js +70 -0
  28. package/dist/function-registry/tasks.js +70 -0
  29. package/dist/function-registry/topics.js +98 -13
  30. package/dist/function-registry/worktrees.js +125 -2
  31. package/dist/index.js +14 -1
  32. package/dist/projections/check-convex-args-shape.js +9 -0
  33. package/dist/projections/create-evidence.projection.js +9 -0
  34. package/dist/projections/index.js +9 -0
  35. package/dist/proof-attestation.json +1 -1
  36. package/dist/schema-helpers/evidenceAdmission.d.ts +8 -0
  37. package/dist/schema-helpers/evidenceAdmission.js +167 -0
  38. package/dist/schemas/index.js +9 -0
  39. package/dist/schemas/manifest.js +9 -0
  40. package/dist/schemas/tables/kernel/spine.js +9 -0
  41. package/dist/schemas.values.js +9 -0
  42. package/dist/types/evidence-taxonomy-target-scope.d.ts +3 -0
  43. package/dist/types/evidence-taxonomy-target-scope.js +10 -1
  44. package/dist/worktree-belief-adoption.contract.js +1 -1
  45. package/package.json +1 -1
@@ -5904,6 +5904,76 @@ var WORKTREE_TYPE_VALUES = [
5904
5904
  ({
5905
5905
  topic_type: new Set(TOPIC_TYPE_VALUES),
5906
5906
  worktree_type: new Set(WORKTREE_TYPE_VALUES)});
5907
+ var EVIDENCE_RELATION_VALUES = ["supports", "contradicts"];
5908
+ var EVIDENCE_KIND_VALUES = [
5909
+ "fact",
5910
+ "observation",
5911
+ "claim",
5912
+ "quote",
5913
+ "statistic",
5914
+ "signal"
5915
+ ];
5916
+ var EVIDENCE_METHODOLOGY_VALUES = [
5917
+ "primary_research",
5918
+ "expert_interview",
5919
+ "customer_interview",
5920
+ "field_observation",
5921
+ "proprietary_data",
5922
+ "desk_research",
5923
+ "regulatory_filing",
5924
+ "news_article",
5925
+ "academic_paper",
5926
+ "ai_synthesis",
5927
+ "ai_extraction"
5928
+ ];
5929
+ var EVIDENCE_INFORMATION_ASYMMETRY_VALUES = [
5930
+ "proprietary",
5931
+ "early",
5932
+ "common"
5933
+ ];
5934
+ var EVIDENCE_SOURCE_QUALITY_VALUES = [
5935
+ "primary",
5936
+ "analyzed",
5937
+ "secondary",
5938
+ "tertiary",
5939
+ "unknown"
5940
+ ];
5941
+ var EVIDENCE_SOURCE_TYPE_VALUES = [
5942
+ "human",
5943
+ "ai_extracted",
5944
+ "ai_generated",
5945
+ "imported",
5946
+ "system",
5947
+ "verified",
5948
+ "proprietary"
5949
+ ];
5950
+ var EVIDENCE_SCORING_DIMENSIONS = [
5951
+ "signedImpact",
5952
+ "evidenceRelation",
5953
+ "sourceQuality",
5954
+ "methodology",
5955
+ "informationAsymmetry",
5956
+ "sourceRef",
5957
+ "targetBeliefId",
5958
+ "verificationStatus"
5959
+ ];
5960
+ z.enum(EVIDENCE_RELATION_VALUES);
5961
+ z.enum(EVIDENCE_KIND_VALUES);
5962
+ z.enum(EVIDENCE_METHODOLOGY_VALUES);
5963
+ z.enum(
5964
+ EVIDENCE_INFORMATION_ASYMMETRY_VALUES
5965
+ );
5966
+ z.enum(
5967
+ EVIDENCE_SOURCE_QUALITY_VALUES
5968
+ );
5969
+ z.enum(EVIDENCE_SOURCE_TYPE_VALUES);
5970
+ z.enum(
5971
+ EVIDENCE_SCORING_DIMENSIONS
5972
+ );
5973
+
5974
+ // src/schema-helpers/evidenceAdmission.ts
5975
+ new Set(EVIDENCE_KIND_VALUES);
5976
+ new Set(EVIDENCE_SOURCE_TYPE_VALUES);
5907
5977
 
5908
5978
  // src/function-registry/helpers.ts
5909
5979
  var jsonObjectSchema = z.record(z.unknown());
@@ -6078,6 +6148,12 @@ var defineFunctionContract = (contract) => contract;
6078
6148
  function authUserId(context) {
6079
6149
  return context.userId ?? context.principalId ?? "lucern-agent";
6080
6150
  }
6151
+ function withUserId(input, context) {
6152
+ return {
6153
+ ...input,
6154
+ userId: typeof input.userId === "string" ? input.userId : authUserId(context)
6155
+ };
6156
+ }
6081
6157
  function withCreatedBy(input, context) {
6082
6158
  return {
6083
6159
  ...input,
@@ -6265,19 +6341,28 @@ var getTopicGraphSpineArgs = z.object({
6265
6341
  rootTopicId: uuidV7StringSchema.optional().describe("Optional root topic ID."),
6266
6342
  includeTopicBeliefEdges: z.boolean().optional()
6267
6343
  });
6268
- var topicIdInput = (input) => compactRecord({
6269
- id: input.id ?? input.topicId
6270
- });
6271
- var listTopicsInput = (input) => compactRecord({
6272
- type: input.type,
6273
- parentTopicId: input.parentTopicId,
6274
- tenantId: input.tenantId,
6275
- status: input.status
6276
- });
6277
- var topicTreeInput = (input) => compactRecord({
6278
- rootId: input.rootId ?? input.id,
6279
- maxDepth: input.maxDepth
6280
- });
6344
+ var topicIdInput = (input, context) => withUserId(
6345
+ compactRecord({
6346
+ id: input.id ?? input.topicId
6347
+ }),
6348
+ context
6349
+ );
6350
+ var listTopicsInput = (input, context) => withUserId(
6351
+ compactRecord({
6352
+ type: input.type,
6353
+ parentTopicId: input.parentTopicId,
6354
+ tenantId: input.tenantId,
6355
+ status: input.status
6356
+ }),
6357
+ context
6358
+ );
6359
+ var topicTreeInput = (input, context) => withUserId(
6360
+ compactRecord({
6361
+ rootId: input.rootId ?? input.id,
6362
+ maxDepth: input.maxDepth
6363
+ }),
6364
+ context
6365
+ );
6281
6366
  var updateTopicInput = (input) => compactRecord({
6282
6367
  id: input.id ?? input.topicId,
6283
6368
  name: input.name,
@@ -5904,6 +5904,76 @@ var WORKTREE_TYPE_VALUES = [
5904
5904
  ({
5905
5905
  topic_type: new Set(TOPIC_TYPE_VALUES),
5906
5906
  worktree_type: new Set(WORKTREE_TYPE_VALUES)});
5907
+ var EVIDENCE_RELATION_VALUES = ["supports", "contradicts"];
5908
+ var EVIDENCE_KIND_VALUES = [
5909
+ "fact",
5910
+ "observation",
5911
+ "claim",
5912
+ "quote",
5913
+ "statistic",
5914
+ "signal"
5915
+ ];
5916
+ var EVIDENCE_METHODOLOGY_VALUES = [
5917
+ "primary_research",
5918
+ "expert_interview",
5919
+ "customer_interview",
5920
+ "field_observation",
5921
+ "proprietary_data",
5922
+ "desk_research",
5923
+ "regulatory_filing",
5924
+ "news_article",
5925
+ "academic_paper",
5926
+ "ai_synthesis",
5927
+ "ai_extraction"
5928
+ ];
5929
+ var EVIDENCE_INFORMATION_ASYMMETRY_VALUES = [
5930
+ "proprietary",
5931
+ "early",
5932
+ "common"
5933
+ ];
5934
+ var EVIDENCE_SOURCE_QUALITY_VALUES = [
5935
+ "primary",
5936
+ "analyzed",
5937
+ "secondary",
5938
+ "tertiary",
5939
+ "unknown"
5940
+ ];
5941
+ var EVIDENCE_SOURCE_TYPE_VALUES = [
5942
+ "human",
5943
+ "ai_extracted",
5944
+ "ai_generated",
5945
+ "imported",
5946
+ "system",
5947
+ "verified",
5948
+ "proprietary"
5949
+ ];
5950
+ var EVIDENCE_SCORING_DIMENSIONS = [
5951
+ "signedImpact",
5952
+ "evidenceRelation",
5953
+ "sourceQuality",
5954
+ "methodology",
5955
+ "informationAsymmetry",
5956
+ "sourceRef",
5957
+ "targetBeliefId",
5958
+ "verificationStatus"
5959
+ ];
5960
+ z.enum(EVIDENCE_RELATION_VALUES);
5961
+ z.enum(EVIDENCE_KIND_VALUES);
5962
+ z.enum(EVIDENCE_METHODOLOGY_VALUES);
5963
+ z.enum(
5964
+ EVIDENCE_INFORMATION_ASYMMETRY_VALUES
5965
+ );
5966
+ z.enum(
5967
+ EVIDENCE_SOURCE_QUALITY_VALUES
5968
+ );
5969
+ z.enum(EVIDENCE_SOURCE_TYPE_VALUES);
5970
+ z.enum(
5971
+ EVIDENCE_SCORING_DIMENSIONS
5972
+ );
5973
+
5974
+ // src/schema-helpers/evidenceAdmission.ts
5975
+ new Set(EVIDENCE_KIND_VALUES);
5976
+ new Set(EVIDENCE_SOURCE_TYPE_VALUES);
5907
5977
 
5908
5978
  // src/function-registry/helpers.ts
5909
5979
  var jsonObjectSchema = z.record(z.unknown());
@@ -6202,6 +6272,12 @@ function surfaceContract(args) {
6202
6272
 
6203
6273
  // src/function-registry/worktrees.ts
6204
6274
  var worktreeListReturns = z.array(z.record(z.unknown()));
6275
+ var worktreeListPageReturns = z.object({
6276
+ worktrees: worktreeListReturns,
6277
+ total: z.number(),
6278
+ lanes: z.record(z.number()),
6279
+ campaigns: z.record(z.number())
6280
+ }).passthrough();
6205
6281
  var autoFixPolicyInputSchema = z.object({
6206
6282
  enabled: z.boolean().optional().describe("Whether automatic remediation is enabled."),
6207
6283
  mode: z.string().optional().describe("Automation mode for worktree auto-fixes."),
@@ -6339,6 +6415,51 @@ function projectAddWorktreeOutput(output) {
6339
6415
  nodeId: worktreeId
6340
6416
  };
6341
6417
  }
6418
+ function countByStringField(rows, field) {
6419
+ const counts = {};
6420
+ for (const row of rows) {
6421
+ const value = row[field];
6422
+ if (typeof value !== "string" || value.length === 0) {
6423
+ continue;
6424
+ }
6425
+ counts[value] = (counts[value] ?? 0) + 1;
6426
+ }
6427
+ return counts;
6428
+ }
6429
+ function countByNumberField(rows, field) {
6430
+ const counts = {};
6431
+ for (const row of rows) {
6432
+ const value = row[field];
6433
+ if (typeof value !== "number" || !Number.isFinite(value)) {
6434
+ continue;
6435
+ }
6436
+ const key = String(value);
6437
+ counts[key] = (counts[key] ?? 0) + 1;
6438
+ }
6439
+ return counts;
6440
+ }
6441
+ function projectListAllWorktreesOutput(output) {
6442
+ if (Array.isArray(output)) {
6443
+ const worktrees = output.filter(isRecord);
6444
+ return {
6445
+ worktrees,
6446
+ total: worktrees.length,
6447
+ lanes: countByStringField(worktrees, "lane"),
6448
+ campaigns: countByNumberField(worktrees, "campaign")
6449
+ };
6450
+ }
6451
+ if (isRecord(output) && Array.isArray(output.worktrees)) {
6452
+ const worktrees = output.worktrees.filter(isRecord);
6453
+ return {
6454
+ ...output,
6455
+ worktrees,
6456
+ total: typeof output.total === "number" && Number.isFinite(output.total) ? output.total : worktrees.length,
6457
+ lanes: isRecord(output.lanes) ? output.lanes : countByStringField(worktrees, "lane"),
6458
+ campaigns: isRecord(output.campaigns) ? output.campaigns : countByNumberField(worktrees, "campaign")
6459
+ };
6460
+ }
6461
+ return output;
6462
+ }
6342
6463
  var worktreeIdInput = (input) => compactRecord({
6343
6464
  worktreeId: input.worktreeId ?? input.id
6344
6465
  });
@@ -6597,8 +6718,10 @@ var worktreesContracts = [
6597
6718
  module: "worktrees",
6598
6719
  functionName: "listAll",
6599
6720
  kind: "query",
6600
- inputProjection: listAllWorktreesInput
6601
- }
6721
+ inputProjection: listAllWorktreesInput,
6722
+ outputProjection: projectListAllWorktreesOutput
6723
+ },
6724
+ returns: worktreeListPageReturns
6602
6725
  }),
6603
6726
  surfaceContract({
6604
6727
  name: "list_worktrees_by_belief",
package/dist/index.js CHANGED
@@ -11466,6 +11466,14 @@ var DATA_MODEL_MANIFEST_SURFACE_COMPOSITION_KEYS = DATA_MODEL_MANIFEST_SKELETON.
11466
11466
  (surface2) => surface2.compositionEmitted
11467
11467
  );
11468
11468
  var EVIDENCE_RELATION_VALUES = ["supports", "contradicts"];
11469
+ var EVIDENCE_KIND_VALUES = [
11470
+ "fact",
11471
+ "observation",
11472
+ "claim",
11473
+ "quote",
11474
+ "statistic",
11475
+ "signal"
11476
+ ];
11469
11477
  var EVIDENCE_METHODOLOGY_VALUES = [
11470
11478
  "primary_research",
11471
11479
  "expert_interview",
@@ -11519,6 +11527,7 @@ var EVIDENCE_TAXONOMY_REFUSAL_IDS = [
11519
11527
  "metadata_scoring_plan_refused"
11520
11528
  ];
11521
11529
  var EvidenceRelationSchema = z.enum(EVIDENCE_RELATION_VALUES);
11530
+ z.enum(EVIDENCE_KIND_VALUES);
11522
11531
  var EvidenceMethodologySchema = z.enum(EVIDENCE_METHODOLOGY_VALUES);
11523
11532
  var EvidenceInformationAsymmetrySchema = z.enum(
11524
11533
  EVIDENCE_INFORMATION_ASYMMETRY_VALUES
@@ -29485,6 +29494,10 @@ var DOMAIN_EVENT_TYPES = [
29485
29494
  "task.updated",
29486
29495
  "ontology.bound",
29487
29496
  "context.compiled",
29497
+ "context.compile_failed",
29498
+ "graph.mutation_written",
29499
+ "admission.refused",
29500
+ "worktree.session_closed",
29488
29501
  "identity.key_created",
29489
29502
  "identity.key_rotated",
29490
29503
  "identity.key_revoked",
@@ -91075,7 +91088,7 @@ var WORKTREE_BELIEF_ADOPTION_LANE = "c2-rd-worktree-belief-backrefs-and-adoption
91075
91088
  var WORKTREE_BELIEF_ADOPTION_GRAPH_WORKTREE_ID = "tn74cd18y1paca8p6djs5jwa6s85wt8c";
91076
91089
  var WORKTREE_BELIEF_ADOPTION_COMPOSITION_KEY = "worktree_belief_adoption_projection_v1";
91077
91090
  var CANONICAL_PIPELINE_BELIEF_GLOBAL_ID = "019dcb0b-675c-7924-bdff-b43d493e6997";
91078
- var CANONICAL_PIPELINE_BELIEF_ID = CANONICAL_PIPELINE_BELIEF_GLOBAL_ID;
91091
+ var CANONICAL_PIPELINE_BELIEF_ID = "019dcb0b-675c-7924-bdff-b43d493e6997";
91079
91092
  var Q5_STRUCTURAL_ADOPTION_QUESTION_ID = "n97f4tykvtd1vfz0h79p7ztz0985wafy";
91080
91093
  var WORKTREE_BELIEF_ADOPTION_REFUSAL_IDS = [
91081
91094
  "intrinsic_confidence_mutation_refused",
@@ -6043,6 +6043,14 @@ DATA_MODEL_MANIFEST_SKELETON.surfaces.map(
6043
6043
  (surface) => surface.compositionEmitted
6044
6044
  );
6045
6045
  var EVIDENCE_RELATION_VALUES = ["supports", "contradicts"];
6046
+ var EVIDENCE_KIND_VALUES = [
6047
+ "fact",
6048
+ "observation",
6049
+ "claim",
6050
+ "quote",
6051
+ "statistic",
6052
+ "signal"
6053
+ ];
6046
6054
  var EVIDENCE_METHODOLOGY_VALUES = [
6047
6055
  "primary_research",
6048
6056
  "expert_interview",
@@ -6096,6 +6104,7 @@ var EVIDENCE_TAXONOMY_REFUSAL_IDS = [
6096
6104
  "metadata_scoring_plan_refused"
6097
6105
  ];
6098
6106
  z.enum(EVIDENCE_RELATION_VALUES);
6107
+ z.enum(EVIDENCE_KIND_VALUES);
6099
6108
  z.enum(EVIDENCE_METHODOLOGY_VALUES);
6100
6109
  z.enum(
6101
6110
  EVIDENCE_INFORMATION_ASYMMETRY_VALUES
@@ -5900,6 +5900,14 @@ DATA_MODEL_MANIFEST_SKELETON.surfaces.map(
5900
5900
  (surface) => surface.compositionEmitted
5901
5901
  );
5902
5902
  var EVIDENCE_RELATION_VALUES = ["supports", "contradicts"];
5903
+ var EVIDENCE_KIND_VALUES = [
5904
+ "fact",
5905
+ "observation",
5906
+ "claim",
5907
+ "quote",
5908
+ "statistic",
5909
+ "signal"
5910
+ ];
5903
5911
  var EVIDENCE_METHODOLOGY_VALUES = [
5904
5912
  "primary_research",
5905
5913
  "expert_interview",
@@ -5953,6 +5961,7 @@ var EVIDENCE_TAXONOMY_REFUSAL_IDS = [
5953
5961
  "metadata_scoring_plan_refused"
5954
5962
  ];
5955
5963
  z.enum(EVIDENCE_RELATION_VALUES);
5964
+ z.enum(EVIDENCE_KIND_VALUES);
5956
5965
  z.enum(EVIDENCE_METHODOLOGY_VALUES);
5957
5966
  z.enum(
5958
5967
  EVIDENCE_INFORMATION_ASYMMETRY_VALUES
@@ -6043,6 +6043,14 @@ DATA_MODEL_MANIFEST_SKELETON.surfaces.map(
6043
6043
  (surface) => surface.compositionEmitted
6044
6044
  );
6045
6045
  var EVIDENCE_RELATION_VALUES = ["supports", "contradicts"];
6046
+ var EVIDENCE_KIND_VALUES = [
6047
+ "fact",
6048
+ "observation",
6049
+ "claim",
6050
+ "quote",
6051
+ "statistic",
6052
+ "signal"
6053
+ ];
6046
6054
  var EVIDENCE_METHODOLOGY_VALUES = [
6047
6055
  "primary_research",
6048
6056
  "expert_interview",
@@ -6096,6 +6104,7 @@ var EVIDENCE_TAXONOMY_REFUSAL_IDS = [
6096
6104
  "metadata_scoring_plan_refused"
6097
6105
  ];
6098
6106
  z.enum(EVIDENCE_RELATION_VALUES);
6107
+ z.enum(EVIDENCE_KIND_VALUES);
6099
6108
  z.enum(EVIDENCE_METHODOLOGY_VALUES);
6100
6109
  z.enum(
6101
6110
  EVIDENCE_INFORMATION_ASYMMETRY_VALUES
@@ -41,5 +41,5 @@
41
41
  "convex-validators",
42
42
  "proof-attestation"
43
43
  ],
44
- "signedAt": 1782812828295
44
+ "signedAt": 1782994689967
45
45
  }
@@ -0,0 +1,8 @@
1
+ import { type EvidenceKind, type EvidenceRelation, type EvidenceSourceType } from "../types/evidence-taxonomy-target-scope.js";
2
+ export { EVIDENCE_KIND_VALUES, EVIDENCE_RELATION_VALUES, EVIDENCE_SOURCE_TYPE_VALUES, type EvidenceKind, type EvidenceRelation, type EvidenceSourceType, } from "../types/evidence-taxonomy-target-scope.js";
3
+ export declare function assertEvidenceSignedWeight(value: unknown, context: string): number;
4
+ export declare function evidenceRelationFromSignedWeight(weight: number): EvidenceRelation;
5
+ export declare function assertEvidenceRelationMatchesSignedWeight(relation: EvidenceRelation, weight: number, context: string): void;
6
+ export declare function normalizeEvidenceRelationForSignedWeight(relation: unknown, weight: number, context?: string): EvidenceRelation;
7
+ export declare function normalizeEvidenceKind(kind: string | undefined, context?: string): EvidenceKind;
8
+ export declare function normalizeEvidenceSourceType(sourceType: string | undefined, context?: string): EvidenceSourceType;
@@ -0,0 +1,167 @@
1
+ import { z } from 'zod';
2
+ import { ConvexError } from 'convex/values';
3
+
4
+ // src/types/evidence-taxonomy-target-scope.ts
5
+ var EVIDENCE_RELATION_VALUES = ["supports", "contradicts"];
6
+ var EVIDENCE_KIND_VALUES = [
7
+ "fact",
8
+ "observation",
9
+ "claim",
10
+ "quote",
11
+ "statistic",
12
+ "signal"
13
+ ];
14
+ var EVIDENCE_METHODOLOGY_VALUES = [
15
+ "primary_research",
16
+ "expert_interview",
17
+ "customer_interview",
18
+ "field_observation",
19
+ "proprietary_data",
20
+ "desk_research",
21
+ "regulatory_filing",
22
+ "news_article",
23
+ "academic_paper",
24
+ "ai_synthesis",
25
+ "ai_extraction"
26
+ ];
27
+ var EVIDENCE_INFORMATION_ASYMMETRY_VALUES = [
28
+ "proprietary",
29
+ "early",
30
+ "common"
31
+ ];
32
+ var EVIDENCE_SOURCE_QUALITY_VALUES = [
33
+ "primary",
34
+ "analyzed",
35
+ "secondary",
36
+ "tertiary",
37
+ "unknown"
38
+ ];
39
+ var EVIDENCE_SOURCE_TYPE_VALUES = [
40
+ "human",
41
+ "ai_extracted",
42
+ "ai_generated",
43
+ "imported",
44
+ "system",
45
+ "verified",
46
+ "proprietary"
47
+ ];
48
+ var EVIDENCE_SCORING_DIMENSIONS = [
49
+ "signedImpact",
50
+ "evidenceRelation",
51
+ "sourceQuality",
52
+ "methodology",
53
+ "informationAsymmetry",
54
+ "sourceRef",
55
+ "targetBeliefId",
56
+ "verificationStatus"
57
+ ];
58
+ z.enum(EVIDENCE_RELATION_VALUES);
59
+ z.enum(EVIDENCE_KIND_VALUES);
60
+ z.enum(EVIDENCE_METHODOLOGY_VALUES);
61
+ z.enum(
62
+ EVIDENCE_INFORMATION_ASYMMETRY_VALUES
63
+ );
64
+ z.enum(
65
+ EVIDENCE_SOURCE_QUALITY_VALUES
66
+ );
67
+ z.enum(EVIDENCE_SOURCE_TYPE_VALUES);
68
+ z.enum(
69
+ EVIDENCE_SCORING_DIMENSIONS
70
+ );
71
+ function throwStructuredMutationError(args) {
72
+ const data = {
73
+ structuredMutationError: true,
74
+ message: args.message,
75
+ status: args.status,
76
+ code: args.code,
77
+ invariantCode: args.invariantCode,
78
+ suggestion: args.suggestion,
79
+ details: args.details
80
+ };
81
+ const error = new ConvexError(
82
+ data
83
+ );
84
+ error.status = args.status;
85
+ error.code = args.code;
86
+ error.invariantCode = args.invariantCode;
87
+ error.suggestion = args.suggestion;
88
+ error.details = args.details;
89
+ throw error;
90
+ }
91
+
92
+ // src/schema-helpers/evidenceAdmission.ts
93
+ var EVIDENCE_KIND_SET = new Set(EVIDENCE_KIND_VALUES);
94
+ var EVIDENCE_SOURCE_TYPE_SET = new Set(EVIDENCE_SOURCE_TYPE_VALUES);
95
+ function assertEvidenceSignedWeight(value, context) {
96
+ if (typeof value !== "number" || !Number.isFinite(value) || value === 0 || value < -1 || value > 1) {
97
+ throw new Error(`${context} requires explicit nonzero weight in [-1, 1]`);
98
+ }
99
+ return value;
100
+ }
101
+ function evidenceRelationFromSignedWeight(weight) {
102
+ return weight < 0 ? "contradicts" : "supports";
103
+ }
104
+ function assertEvidenceRelationMatchesSignedWeight(relation, weight, context) {
105
+ if (relation === "supports" && weight < 0) {
106
+ throw new Error(`${context} relation supports requires positive weight`);
107
+ }
108
+ if (relation === "contradicts" && weight > 0) {
109
+ throw new Error(`${context} relation contradicts requires negative weight`);
110
+ }
111
+ }
112
+ function normalizeEvidenceRelationForSignedWeight(relation, weight, context = "Evidence relation") {
113
+ if (relation === "supports" || relation === "contradicts") {
114
+ assertEvidenceRelationMatchesSignedWeight(relation, weight, context);
115
+ return relation;
116
+ }
117
+ return evidenceRelationFromSignedWeight(weight);
118
+ }
119
+ function normalizeEvidenceEnumText(value) {
120
+ return value.trim().toLowerCase();
121
+ }
122
+ function throwEvidenceTaxonomyEnumRefusal(args) {
123
+ throwStructuredMutationError({
124
+ status: 400,
125
+ code: "INVALID_INPUT",
126
+ message: `[${args.context}] Invalid evidence ${args.field} "${args.value}".`,
127
+ invariantCode: "evidence.taxonomy_enum",
128
+ suggestion: `Valid evidence ${args.field} values: ${args.allowed.join(", ")}.`,
129
+ details: {
130
+ field: args.field,
131
+ value: args.value,
132
+ allowed: args.allowed
133
+ }
134
+ });
135
+ }
136
+ function normalizeEvidenceKind(kind, context = "evidence.kind") {
137
+ if (typeof kind !== "string" || kind.trim().length === 0) {
138
+ return "observation";
139
+ }
140
+ const normalized = normalizeEvidenceEnumText(kind);
141
+ if (EVIDENCE_KIND_SET.has(normalized)) {
142
+ return normalized;
143
+ }
144
+ throwEvidenceTaxonomyEnumRefusal({
145
+ field: "kind",
146
+ value: normalized,
147
+ allowed: EVIDENCE_KIND_VALUES,
148
+ context
149
+ });
150
+ }
151
+ function normalizeEvidenceSourceType(sourceType, context = "evidence.sourceType") {
152
+ if (typeof sourceType !== "string" || sourceType.trim().length === 0) {
153
+ return "ai_generated";
154
+ }
155
+ const normalized = normalizeEvidenceEnumText(sourceType);
156
+ if (EVIDENCE_SOURCE_TYPE_SET.has(normalized)) {
157
+ return normalized;
158
+ }
159
+ throwEvidenceTaxonomyEnumRefusal({
160
+ field: "sourceType",
161
+ value: normalized,
162
+ allowed: EVIDENCE_SOURCE_TYPE_VALUES,
163
+ context
164
+ });
165
+ }
166
+
167
+ export { EVIDENCE_KIND_VALUES, EVIDENCE_RELATION_VALUES, EVIDENCE_SOURCE_TYPE_VALUES, assertEvidenceRelationMatchesSignedWeight, assertEvidenceSignedWeight, evidenceRelationFromSignedWeight, normalizeEvidenceKind, normalizeEvidenceRelationForSignedWeight, normalizeEvidenceSourceType };
@@ -9985,6 +9985,14 @@ DATA_MODEL_MANIFEST_SKELETON.surfaces.map(
9985
9985
  (surface) => surface.compositionEmitted
9986
9986
  );
9987
9987
  var EVIDENCE_RELATION_VALUES = ["supports", "contradicts"];
9988
+ var EVIDENCE_KIND_VALUES = [
9989
+ "fact",
9990
+ "observation",
9991
+ "claim",
9992
+ "quote",
9993
+ "statistic",
9994
+ "signal"
9995
+ ];
9988
9996
  var EVIDENCE_METHODOLOGY_VALUES = [
9989
9997
  "primary_research",
9990
9998
  "expert_interview",
@@ -10038,6 +10046,7 @@ var EVIDENCE_TAXONOMY_REFUSAL_IDS = [
10038
10046
  "metadata_scoring_plan_refused"
10039
10047
  ];
10040
10048
  z.enum(EVIDENCE_RELATION_VALUES);
10049
+ z.enum(EVIDENCE_KIND_VALUES);
10041
10050
  z.enum(EVIDENCE_METHODOLOGY_VALUES);
10042
10051
  z.enum(
10043
10052
  EVIDENCE_INFORMATION_ASYMMETRY_VALUES
@@ -9966,6 +9966,14 @@ DATA_MODEL_MANIFEST_SKELETON.surfaces.map(
9966
9966
  (surface) => surface.compositionEmitted
9967
9967
  );
9968
9968
  var EVIDENCE_RELATION_VALUES = ["supports", "contradicts"];
9969
+ var EVIDENCE_KIND_VALUES = [
9970
+ "fact",
9971
+ "observation",
9972
+ "claim",
9973
+ "quote",
9974
+ "statistic",
9975
+ "signal"
9976
+ ];
9969
9977
  var EVIDENCE_METHODOLOGY_VALUES = [
9970
9978
  "primary_research",
9971
9979
  "expert_interview",
@@ -10019,6 +10027,7 @@ var EVIDENCE_TAXONOMY_REFUSAL_IDS = [
10019
10027
  "metadata_scoring_plan_refused"
10020
10028
  ];
10021
10029
  z.enum(EVIDENCE_RELATION_VALUES);
10030
+ z.enum(EVIDENCE_KIND_VALUES);
10022
10031
  z.enum(EVIDENCE_METHODOLOGY_VALUES);
10023
10032
  z.enum(
10024
10033
  EVIDENCE_INFORMATION_ASYMMETRY_VALUES
@@ -5904,6 +5904,14 @@ DATA_MODEL_MANIFEST_SKELETON.surfaces.map(
5904
5904
  (surface) => surface.compositionEmitted
5905
5905
  );
5906
5906
  var EVIDENCE_RELATION_VALUES = ["supports", "contradicts"];
5907
+ var EVIDENCE_KIND_VALUES = [
5908
+ "fact",
5909
+ "observation",
5910
+ "claim",
5911
+ "quote",
5912
+ "statistic",
5913
+ "signal"
5914
+ ];
5907
5915
  var EVIDENCE_METHODOLOGY_VALUES = [
5908
5916
  "primary_research",
5909
5917
  "expert_interview",
@@ -5957,6 +5965,7 @@ var EVIDENCE_TAXONOMY_REFUSAL_IDS = [
5957
5965
  "metadata_scoring_plan_refused"
5958
5966
  ];
5959
5967
  z.enum(EVIDENCE_RELATION_VALUES);
5968
+ z.enum(EVIDENCE_KIND_VALUES);
5960
5969
  z.enum(EVIDENCE_METHODOLOGY_VALUES);
5961
5970
  z.enum(
5962
5971
  EVIDENCE_INFORMATION_ASYMMETRY_VALUES
@@ -9985,6 +9985,14 @@ DATA_MODEL_MANIFEST_SKELETON.surfaces.map(
9985
9985
  (surface) => surface.compositionEmitted
9986
9986
  );
9987
9987
  var EVIDENCE_RELATION_VALUES = ["supports", "contradicts"];
9988
+ var EVIDENCE_KIND_VALUES = [
9989
+ "fact",
9990
+ "observation",
9991
+ "claim",
9992
+ "quote",
9993
+ "statistic",
9994
+ "signal"
9995
+ ];
9988
9996
  var EVIDENCE_METHODOLOGY_VALUES = [
9989
9997
  "primary_research",
9990
9998
  "expert_interview",
@@ -10038,6 +10046,7 @@ var EVIDENCE_TAXONOMY_REFUSAL_IDS = [
10038
10046
  "metadata_scoring_plan_refused"
10039
10047
  ];
10040
10048
  z.enum(EVIDENCE_RELATION_VALUES);
10049
+ z.enum(EVIDENCE_KIND_VALUES);
10041
10050
  z.enum(EVIDENCE_METHODOLOGY_VALUES);
10042
10051
  z.enum(
10043
10052
  EVIDENCE_INFORMATION_ASYMMETRY_VALUES