@lucern/contracts 1.0.16 → 1.0.17

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 (116) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/dist/api-enums.contract.d.ts +2 -2
  3. package/dist/api-enums.contract.js +2 -8
  4. package/dist/api-enums.contract.js.map +1 -1
  5. package/dist/context-pack.contract.d.ts +27 -7
  6. package/dist/context-pack.contract.js.map +1 -1
  7. package/dist/function-registry/beliefs.js +109 -115
  8. package/dist/function-registry/beliefs.js.map +1 -1
  9. package/dist/function-registry/coding.js +68 -91
  10. package/dist/function-registry/coding.js.map +1 -1
  11. package/dist/function-registry/context.js +68 -91
  12. package/dist/function-registry/context.js.map +1 -1
  13. package/dist/function-registry/contracts.js +68 -91
  14. package/dist/function-registry/contracts.js.map +1 -1
  15. package/dist/function-registry/coordination.js +68 -91
  16. package/dist/function-registry/coordination.js.map +1 -1
  17. package/dist/function-registry/edges.js +68 -91
  18. package/dist/function-registry/edges.js.map +1 -1
  19. package/dist/function-registry/evidence.js +182 -125
  20. package/dist/function-registry/evidence.js.map +1 -1
  21. package/dist/function-registry/graph.js +68 -91
  22. package/dist/function-registry/graph.js.map +1 -1
  23. package/dist/function-registry/helpers.js +68 -91
  24. package/dist/function-registry/helpers.js.map +1 -1
  25. package/dist/function-registry/identity.js +68 -91
  26. package/dist/function-registry/identity.js.map +1 -1
  27. package/dist/function-registry/index.js +68 -91
  28. package/dist/function-registry/index.js.map +1 -1
  29. package/dist/function-registry/judgments.js +68 -91
  30. package/dist/function-registry/judgments.js.map +1 -1
  31. package/dist/function-registry/legacy.js +68 -91
  32. package/dist/function-registry/legacy.js.map +1 -1
  33. package/dist/function-registry/lenses.js +68 -91
  34. package/dist/function-registry/lenses.js.map +1 -1
  35. package/dist/function-registry/manifest.d.ts +3 -3
  36. package/dist/function-registry/manifest.js +3 -3
  37. package/dist/function-registry/manifest.js.map +1 -1
  38. package/dist/function-registry/nodes.js +68 -91
  39. package/dist/function-registry/nodes.js.map +1 -1
  40. package/dist/function-registry/ontologies.js +68 -91
  41. package/dist/function-registry/ontologies.js.map +1 -1
  42. package/dist/function-registry/pipeline.js +68 -91
  43. package/dist/function-registry/pipeline.js.map +1 -1
  44. package/dist/function-registry/questions.js +68 -91
  45. package/dist/function-registry/questions.js.map +1 -1
  46. package/dist/function-registry/tasks.js +68 -91
  47. package/dist/function-registry/tasks.js.map +1 -1
  48. package/dist/function-registry/topics.js +68 -91
  49. package/dist/function-registry/topics.js.map +1 -1
  50. package/dist/function-registry/worktrees.js +68 -91
  51. package/dist/function-registry/worktrees.js.map +1 -1
  52. package/dist/generated/convexSchemas.js +2 -2
  53. package/dist/generated/convexSchemas.js.map +1 -1
  54. package/dist/index.d.ts +4 -4
  55. package/dist/index.js +162 -130
  56. package/dist/index.js.map +1 -1
  57. package/dist/manifests/invariant-manifest.d.ts +1 -1
  58. package/dist/manifests/invariants/index.d.ts +1 -1
  59. package/dist/manifests/invariants/index.js +1 -1
  60. package/dist/manifests/invariants/index.js.map +1 -1
  61. package/dist/manifests/invariants/inv-1-beliefs-append-only.d.ts +1 -1
  62. package/dist/manifests/invariants/inv-14-no-silent-transitions.d.ts +1 -1
  63. package/dist/manifests/invariants/manifest-1-projections-declare-audit.d.ts +1 -1
  64. package/dist/manifests/invariants/manifest-1-projections-declare-audit.js +1 -1
  65. package/dist/manifests/invariants/manifest-1-projections-declare-audit.js.map +1 -1
  66. package/dist/projections/{modulate-confidence.projection.d.ts → append-sl-scoring.projection.d.ts} +69 -69
  67. package/dist/projections/{modulate-confidence.projection.js → append-sl-scoring.projection.js} +14 -14
  68. package/dist/projections/append-sl-scoring.projection.js.map +1 -0
  69. package/dist/projections/check-convex-args-shape.js +88 -29
  70. package/dist/projections/check-convex-args-shape.js.map +1 -1
  71. package/dist/projections/create-evidence.projection.js +76 -17
  72. package/dist/projections/create-evidence.projection.js.map +1 -1
  73. package/dist/projections/index.d.ts +47 -47
  74. package/dist/projections/index.js +88 -29
  75. package/dist/projections/index.js.map +1 -1
  76. package/dist/proof-attestation.json +3 -3
  77. package/dist/schemas/index.js +6 -4
  78. package/dist/schemas/index.js.map +1 -1
  79. package/dist/schemas/manifest.d.ts +110 -60
  80. package/dist/schemas/manifest.js +6 -4
  81. package/dist/schemas/manifest.js.map +1 -1
  82. package/dist/schemas/tables/kernel/intelligence.d.ts +20 -10
  83. package/dist/schemas/tables/kernel/intelligence.js +4 -2
  84. package/dist/schemas/tables/kernel/intelligence.js.map +1 -1
  85. package/dist/schemas/tables/kernel/spine.d.ts +2 -2
  86. package/dist/schemas/tables/kernel/spine.js +2 -2
  87. package/dist/schemas/tables/kernel/spine.js.map +1 -1
  88. package/dist/schemas.values.js +6 -4
  89. package/dist/schemas.values.js.map +1 -1
  90. package/dist/sdk-methods.contract.d.ts +6 -16
  91. package/dist/sdk-tools.contract.js +65 -88
  92. package/dist/sdk-tools.contract.js.map +1 -1
  93. package/dist/sdk-tools.contract.registry.js +65 -88
  94. package/dist/sdk-tools.contract.registry.js.map +1 -1
  95. package/dist/sdk-tools.contract.values.js +65 -88
  96. package/dist/sdk-tools.contract.values.js.map +1 -1
  97. package/dist/tool-contracts.d.ts +1 -1
  98. package/dist/tool-contracts.graph.js +3 -3
  99. package/dist/tool-contracts.graph.js.map +1 -1
  100. package/dist/tool-contracts.intelligence-evidence.js +7 -7
  101. package/dist/tool-contracts.intelligence-evidence.js.map +1 -1
  102. package/dist/tool-contracts.js +66 -89
  103. package/dist/tool-contracts.js.map +1 -1
  104. package/dist/tool-contracts.lifecycle.d.ts +2 -2
  105. package/dist/tool-contracts.lifecycle.js +49 -68
  106. package/dist/tool-contracts.lifecycle.js.map +1 -1
  107. package/dist/tool-contracts.pipeline-coordination.js +1 -1
  108. package/dist/tool-contracts.pipeline-coordination.js.map +1 -1
  109. package/dist/tool-contracts.questions-listing.js +5 -9
  110. package/dist/tool-contracts.questions-listing.js.map +1 -1
  111. package/dist/{tool-contracts.values-BhxfrXS5.d.ts → tool-contracts.values-CCoI3qQY.d.ts} +3 -3
  112. package/dist/tool-contracts.values.d.ts +1 -1
  113. package/dist/tool-contracts.values.js +66 -89
  114. package/dist/tool-contracts.values.js.map +1 -1
  115. package/package.json +1 -1
  116. package/dist/projections/modulate-confidence.projection.js.map +0 -1
@@ -71,11 +71,39 @@ var createEvidenceInputSchemaBase = z.object({
71
71
  metadata: jsonRecordSchema.optional(),
72
72
  trustedBypassAccessCheck: z.boolean().optional()
73
73
  }).passthrough();
74
- function hasNonzeroWeight(value) {
75
- return typeof value === "number" && Number.isFinite(value) && value !== 0;
74
+ function isSignedImpactScore(value) {
75
+ return typeof value === "number" && Number.isFinite(value) && value >= -1 && value <= 1 && value !== 0;
76
76
  }
77
- function hasRelationSignal(value, weight) {
78
- return Boolean(normalizeRelation(value, weight));
77
+ function validateSignedImpactScore(value, ctx, path) {
78
+ if (!isSignedImpactScore(value)) {
79
+ ctx.addIssue({
80
+ code: z.ZodIssueCode.custom,
81
+ message: "evidence-to-belief links require an explicit nonzero signed impact score in [-1, 1]",
82
+ path
83
+ });
84
+ return false;
85
+ }
86
+ return true;
87
+ }
88
+ function validateRelationImpactConsistency(relation, weight, ctx, path) {
89
+ const normalized = normalizeRelationAlias(relation);
90
+ if (!normalized || !isSignedImpactScore(weight)) {
91
+ return;
92
+ }
93
+ if (normalized === "supports" && weight < 0) {
94
+ ctx.addIssue({
95
+ code: z.ZodIssueCode.custom,
96
+ message: "supporting evidence requires a positive impact score",
97
+ path
98
+ });
99
+ }
100
+ if (normalized === "contradicts" && weight > 0) {
101
+ ctx.addIssue({
102
+ code: z.ZodIssueCode.custom,
103
+ message: "contradicting evidence requires a negative impact score",
104
+ path
105
+ });
106
+ }
79
107
  }
80
108
  var createEvidenceInputSchema = createEvidenceInputSchemaBase.superRefine(
81
109
  (input, ctx) => {
@@ -92,13 +120,27 @@ var createEvidenceInputSchema = createEvidenceInputSchemaBase.superRefine(
92
120
  input.linkedBeliefNodeId || kind === "belief" || kind === "unknown" && target
93
121
  );
94
122
  const weight = typeof input.weight === "number" ? input.weight : void 0;
95
- if (linksPrimaryBelief && !hasRelationSignal(input.evidenceRelation, weight)) {
123
+ const hasBeliefRelations = (input.beliefRelations?.length ?? 0) > 0;
124
+ if (!linksPrimaryBelief && !hasBeliefRelations) {
125
+ ctx.addIssue({
126
+ code: z.ZodIssueCode.custom,
127
+ message: "create_evidence requires at least one linked belief; evidence cannot be created as an orphan or linked only to a question/worktree",
128
+ path: ["linkedBeliefNodeId"]
129
+ });
130
+ }
131
+ if (kind === "question" || kind === "worktree") {
96
132
  ctx.addIssue({
97
133
  code: z.ZodIssueCode.custom,
98
- message: "belief-targeted evidence requires evidenceRelation='supports'|'contradicts' or a nonzero signed weight",
99
- path: ["evidenceRelation"]
134
+ message: "create_evidence targetId must be a belief. Link evidence to questions/worktrees only after the evidence has a belief impact edge.",
135
+ path: ["targetId"]
100
136
  });
101
137
  }
138
+ if (linksPrimaryBelief) {
139
+ validateSignedImpactScore(weight, ctx, ["weight"]);
140
+ validateRelationImpactConsistency(input.evidenceRelation, weight, ctx, [
141
+ "weight"
142
+ ]);
143
+ }
102
144
  input.beliefRelations?.forEach((relation, index) => {
103
145
  const beliefNodeId = relation.beliefNodeId ?? relation.beliefId ?? relation.targetId;
104
146
  if (!beliefNodeId) {
@@ -109,15 +151,18 @@ var createEvidenceInputSchema = createEvidenceInputSchemaBase.superRefine(
109
151
  });
110
152
  }
111
153
  const relationWeight = typeof relation.weight === "number" ? relation.weight : void 0;
112
- if (beliefNodeId && !hasRelationSignal(
113
- relation.evidenceRelation ?? relation.relation,
114
- relationWeight
115
- )) {
116
- ctx.addIssue({
117
- code: z.ZodIssueCode.custom,
118
- message: "beliefRelations entries require evidenceRelation='supports'|'contradicts' or a nonzero signed weight",
119
- path: ["beliefRelations", index, "evidenceRelation"]
120
- });
154
+ if (beliefNodeId) {
155
+ validateSignedImpactScore(relationWeight, ctx, [
156
+ "beliefRelations",
157
+ index,
158
+ "weight"
159
+ ]);
160
+ validateRelationImpactConsistency(
161
+ relation.evidenceRelation ?? relation.relation,
162
+ relationWeight,
163
+ ctx,
164
+ ["beliefRelations", index, "weight"]
165
+ );
121
166
  }
122
167
  });
123
168
  }
@@ -171,18 +216,28 @@ function targetKind(targetId) {
171
216
  }
172
217
  return "unknown";
173
218
  }
174
- function normalizeRelation(value, weight) {
219
+ function normalizeRelationAlias(value) {
175
220
  if (value === "supports" || value === "supporting") {
176
221
  return "supports";
177
222
  }
178
223
  if (value === "contradicts" || value === "contradicting") {
179
224
  return "contradicts";
180
225
  }
226
+ return void 0;
227
+ }
228
+ function normalizeRelation(value, weight) {
229
+ const alias = normalizeRelationAlias(value);
230
+ if (alias) {
231
+ return alias;
232
+ }
181
233
  if (weight === void 0 || !hasNonzeroWeight(weight)) {
182
234
  return void 0;
183
235
  }
184
236
  return weight < 0 ? "contradicts" : "supports";
185
237
  }
238
+ function hasNonzeroWeight(value) {
239
+ return typeof value === "number" && Number.isFinite(value) && value !== 0;
240
+ }
186
241
  function normalizeConfidence(confidence, weight) {
187
242
  if (confidence !== void 0) {
188
243
  return Math.min(1, Math.max(0, confidence));
@@ -209,6 +264,7 @@ function normalizeBeliefRelation(relation) {
209
264
  beliefNodeId,
210
265
  relation: evidenceRelation,
211
266
  confidence: normalizeConfidence(relation.confidence, weight),
267
+ weight,
212
268
  rationale: relation.rationale
213
269
  });
214
270
  }
@@ -257,6 +313,7 @@ var createEvidenceProjection = defineProjection({
257
313
  linkedBeliefNodeId,
258
314
  evidenceRelation,
259
315
  confidence,
316
+ weight,
260
317
  beliefRelations: beliefRelations && beliefRelations.length > 0 ? beliefRelations : void 0,
261
318
  rationale: input.rationale,
262
319
  trustedBypassAccessCheck: input.trustedBypassAccessCheck ?? true
@@ -286,12 +343,14 @@ var createEvidenceProjection = defineProjection({
286
343
  v.literal("contradicts")
287
344
  )
288
345
  ),
346
+ weight: v.optional(v.number()),
289
347
  beliefRelations: v.optional(
290
348
  v.array(
291
349
  v.object({
292
350
  beliefNodeId: v.string(),
293
351
  relation: v.union(v.literal("supports"), v.literal("contradicts")),
294
352
  confidence: v.optional(v.number()),
353
+ weight: v.number(),
295
354
  rationale: v.optional(v.string())
296
355
  })
297
356
  )
@@ -409,7 +468,7 @@ var slOpinionProjectionSchema = z.object({
409
468
  uncertainty: z.number(),
410
469
  baseRate: z.number()
411
470
  });
412
- var modulateConfidenceInputObjectSchema = z.object({
471
+ var appendSlScoringInputObjectSchema = z.object({
413
472
  nodeId: z.string().optional(),
414
473
  beliefNodeId: z.string().optional(),
415
474
  worktreeId: z.string().optional(),
@@ -428,23 +487,23 @@ var modulateConfidenceInputObjectSchema = z.object({
428
487
  rationale: z.string(),
429
488
  trustedBypassAccessCheck: z.boolean().optional()
430
489
  });
431
- var modulateConfidenceInputSchema = modulateConfidenceInputObjectSchema.superRefine((input, ctx) => {
490
+ var appendSlScoringInputSchema = appendSlScoringInputObjectSchema.superRefine((input, ctx) => {
432
491
  if (hasProvenance(input)) {
433
492
  return;
434
493
  }
435
494
  ctx.addIssue({
436
495
  code: z.ZodIssueCode.custom,
437
- message: "modulate_confidence requires evidence, question, answer, contradiction, or worktree provenance",
496
+ message: "append_sl_scoring requires evidence, question, answer, contradiction, or worktree provenance",
438
497
  path: ["provenance"]
439
498
  });
440
499
  });
441
- var modulateConfidenceProjection = defineProjection({
442
- contractName: "modulate_confidence",
443
- inputSchema: modulateConfidenceInputSchema,
500
+ var appendSlScoringProjection = defineProjection({
501
+ contractName: "append_sl_scoring",
502
+ inputSchema: appendSlScoringInputSchema,
444
503
  project: (input) => {
445
504
  const nodeId = input.beliefNodeId ?? input.nodeId;
446
505
  if (!nodeId) {
447
- throw new Error("modulate_confidence requires beliefNodeId or nodeId");
506
+ throw new Error("append_sl_scoring requires beliefNodeId or nodeId");
448
507
  }
449
508
  const opinion = input.opinion ?? {
450
509
  belief: requireNumber(input.belief, "belief"),
@@ -501,14 +560,14 @@ var modulateConfidenceProjection = defineProjection({
501
560
  });
502
561
  function requireNumber(value, field) {
503
562
  if (value === void 0) {
504
- throw new Error(`modulate_confidence requires ${field}`);
563
+ throw new Error(`append_sl_scoring requires ${field}`);
505
564
  }
506
565
  return value;
507
566
  }
508
567
  function assertProvenance(input) {
509
568
  if (!hasProvenance(input)) {
510
569
  throw new Error(
511
- "modulate_confidence requires evidence, question, answer, contradiction, or worktree provenance"
570
+ "append_sl_scoring requires evidence, question, answer, contradiction, or worktree provenance"
512
571
  );
513
572
  }
514
573
  }
@@ -518,10 +577,10 @@ function hasProvenance(input) {
518
577
 
519
578
  // src/projections/index.ts
520
579
  var projections = {
580
+ append_sl_scoring: appendSlScoringProjection,
521
581
  create_evidence: createEvidenceProjection,
522
582
  list_beliefs: listBeliefsProjection,
523
- list_tasks: listTasksProjection,
524
- modulate_confidence: modulateConfidenceProjection
583
+ list_tasks: listTasksProjection
525
584
  };
526
585
 
527
586
  // src/projections/check-convex-args-shape.ts
@@ -545,7 +604,7 @@ var fixture = {
545
604
  status: "in_progress",
546
605
  limit: 10
547
606
  },
548
- modulate_confidence: {
607
+ append_sl_scoring: {
549
608
  beliefNodeId: "belief:fixture",
550
609
  opinion: {
551
610
  belief: 0.7,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ids.contract.ts","../../src/projections/projection-dsl.ts","../../src/projections/create-evidence.projection.ts","../../src/projections/list-beliefs.projection.ts","../../src/projections/list-tasks.projection.ts","../../src/projections/modulate-confidence.projection.ts","../../src/projections/index.ts","../../src/projections/check-convex-args-shape.ts"],"names":["z","compactRecord","v"],"mappings":"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","file":"check-convex-args-shape.js","sourcesContent":["export type DecodedPrefixedId = {\n prefix: string;\n value: string;\n};\n\nconst PREFIXED_ID_PATTERN = /^([a-z][a-z0-9]*)_(.+)$/;\n\nexport function encodePrefixedId(prefix: string, value: string): string {\n const normalizedPrefix = prefix.trim();\n const normalizedValue = value.trim();\n\n if (!normalizedPrefix || !normalizedValue) {\n throw new Error(\"Both prefix and value are required to encode a prefixed ID.\");\n }\n\n return `${normalizedPrefix}_${normalizedValue}`;\n}\n\nexport function decodePrefixedId(id: string): DecodedPrefixedId {\n const normalized = id.trim();\n const match = PREFIXED_ID_PATTERN.exec(normalized);\n\n if (!match) {\n throw new Error(`Invalid prefixed ID: ${id}`);\n }\n\n return {\n prefix: match[1],\n value: match[2],\n };\n}\n\nexport function hasPrefixedIdPrefix(id: string, prefix: string): boolean {\n const decoded = decodePrefixedId(id);\n return decoded.prefix === prefix.trim();\n}\n","import type { z } from \"zod\";\n\nexport interface ProjectionDef<TInput, TConvexArgs> {\n contractName: string;\n inputSchema: z.ZodSchema<TInput>;\n project: (input: TInput) => TConvexArgs;\n convexArgsValidator: unknown;\n}\n\nexport function defineProjection<I, C>(\n def: ProjectionDef<I, C>\n): ProjectionDef<I, C> {\n return def;\n}\n","import { v } from \"convex/values\";\nimport { z } from \"zod\";\nimport { decodePrefixedId } from \"../ids.contract.js\";\nimport { defineProjection } from \"./projection-dsl.js\";\n\nconst jsonRecordSchema = z.record(z.unknown());\n\nconst evidenceRelationSchema = z.enum([\"supports\", \"contradicts\"]);\nconst evidenceRelationAliasSchema = z.enum([\n \"supports\",\n \"contradicts\",\n \"supporting\",\n \"contradicting\",\n]);\nconst beliefRelationSchema = z.object({\n beliefId: z.string().optional(),\n beliefNodeId: z.string().optional(),\n targetId: z.string().optional(),\n relation: evidenceRelationAliasSchema.optional(),\n evidenceRelation: evidenceRelationSchema.optional(),\n confidence: z.number().optional(),\n weight: z.number().optional(),\n rationale: z.string().optional(),\n});\n\nconst createEvidenceInputSchemaBase = z\n .object({\n projectId: z.string().optional(),\n topicId: z.string().optional(),\n text: z.string().optional(),\n canonicalText: z.string().optional(),\n title: z.string().optional(),\n content: z.string().optional(),\n contentType: z.string().optional(),\n kind: z.string().optional(),\n tags: z.array(z.string()).optional(),\n source: z.string().optional(),\n sourceUrl: z.string().optional(),\n sourceType: z.string().optional(),\n externalSourceType: z.string().optional(),\n sourceQuestionId: z.string().optional(),\n methodology: z.string().optional(),\n informationAsymmetry: z.string().optional(),\n sourceDescription: z.string().optional(),\n targetId: z.string().optional(),\n targetNodeId: z.string().optional(),\n linkedBeliefNodeId: z.string().optional(),\n evidenceRelation: evidenceRelationSchema.optional(),\n beliefRelations: z.array(beliefRelationSchema).optional(),\n confidence: z.number().optional(),\n weight: z.number().optional(),\n reasoning: z.string().optional(),\n rationale: z.string(),\n metadata: jsonRecordSchema.optional(),\n trustedBypassAccessCheck: z.boolean().optional(),\n })\n .passthrough();\n\nfunction hasNonzeroWeight(value: number | undefined): boolean {\n return typeof value === \"number\" && Number.isFinite(value) && value !== 0;\n}\n\nfunction hasRelationSignal(\n value: string | undefined,\n weight: number | undefined,\n): boolean {\n return Boolean(normalizeRelation(value, weight));\n}\n\nexport const createEvidenceInputSchema = createEvidenceInputSchemaBase.superRefine(\n (input, ctx) => {\n if (!input.text && !input.canonicalText) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"create_evidence requires text\",\n path: [\"text\"],\n });\n }\n\n const target = input.targetId ?? input.targetNodeId;\n const kind = targetKind(target);\n const linksPrimaryBelief = Boolean(\n input.linkedBeliefNodeId ||\n kind === \"belief\" ||\n (kind === \"unknown\" && target),\n );\n const weight =\n typeof input.weight === \"number\" ? input.weight : undefined;\n if (\n linksPrimaryBelief &&\n !hasRelationSignal(input.evidenceRelation, weight)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"belief-targeted evidence requires evidenceRelation='supports'|'contradicts' or a nonzero signed weight\",\n path: [\"evidenceRelation\"],\n });\n }\n\n input.beliefRelations?.forEach((relation, index) => {\n const beliefNodeId =\n relation.beliefNodeId ?? relation.beliefId ?? relation.targetId;\n if (!beliefNodeId) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"beliefRelations entries require beliefId, beliefNodeId, or targetId\",\n path: [\"beliefRelations\", index, \"beliefNodeId\"],\n });\n }\n const relationWeight =\n typeof relation.weight === \"number\" ? relation.weight : undefined;\n if (\n beliefNodeId &&\n !hasRelationSignal(\n relation.evidenceRelation ?? relation.relation,\n relationWeight,\n )\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"beliefRelations entries require evidenceRelation='supports'|'contradicts' or a nonzero signed weight\",\n path: [\"beliefRelations\", index, \"evidenceRelation\"],\n });\n }\n });\n },\n);\n\nexport type CreateEvidenceProjectionInput = z.infer<\n typeof createEvidenceInputSchema\n>;\n\nfunction compactRecord(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n );\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction recordValue(value: unknown): Record<string, unknown> {\n return isRecord(value) ? value : {};\n}\n\nfunction normalizeTopicIdForKernel(\n topicId: string | undefined,\n): string | undefined {\n const normalized = topicId?.trim();\n if (!normalized) {\n return undefined;\n }\n\n try {\n const decoded = decodePrefixedId(normalized);\n return decoded.prefix === \"top\" ? decoded.value : normalized;\n } catch {\n return normalized;\n }\n}\n\nfunction normalizeWorktreeId(value: string | undefined): string | undefined {\n const normalized = value?.trim();\n if (!normalized) {\n return undefined;\n }\n if (normalized.startsWith(\"wt_\")) {\n return normalized.slice(\"wt_\".length);\n }\n return normalized;\n}\n\nfunction targetKind(\n targetId: string | undefined,\n): \"belief\" | \"question\" | \"worktree\" | \"unknown\" {\n const normalized = targetId?.trim();\n if (!normalized) {\n return \"unknown\";\n }\n if (normalized.startsWith(\"wt_\") || /^tn[a-z0-9]+$/i.test(normalized)) {\n return \"worktree\";\n }\n if (normalized.startsWith(\"que_\")) {\n return \"question\";\n }\n if (normalized.startsWith(\"bel_\")) {\n return \"belief\";\n }\n return \"unknown\";\n}\n\nfunction normalizeRelation(value: string | undefined, weight: number | undefined) {\n if (value === \"supports\" || value === \"supporting\") {\n return \"supports\" as const;\n }\n if (value === \"contradicts\" || value === \"contradicting\") {\n return \"contradicts\" as const;\n }\n if (weight === undefined || !hasNonzeroWeight(weight)) {\n return undefined;\n }\n return weight < 0 ? (\"contradicts\" as const) : (\"supports\" as const);\n}\n\nfunction normalizeConfidence(\n confidence: number | undefined,\n weight: number | undefined,\n) {\n if (confidence !== undefined) {\n return Math.min(1, Math.max(0, confidence));\n }\n if (weight === undefined) {\n return undefined;\n }\n return Math.min(1, Math.max(0, Math.abs(weight)));\n}\n\nfunction normalizeBeliefRelation(\n relation: z.infer<typeof beliefRelationSchema>,\n) {\n const beliefNodeId =\n relation.beliefNodeId ?? relation.beliefId ?? relation.targetId;\n if (!beliefNodeId) {\n return undefined;\n }\n const weight =\n typeof relation.weight === \"number\" ? relation.weight : undefined;\n const evidenceRelation = normalizeRelation(\n relation.evidenceRelation ?? relation.relation,\n weight,\n );\n if (!evidenceRelation) {\n return undefined;\n }\n return compactRecord({\n beliefNodeId,\n relation: evidenceRelation,\n confidence: normalizeConfidence(relation.confidence, weight),\n rationale: relation.rationale,\n });\n}\n\nexport const createEvidenceProjection = defineProjection({\n contractName: \"create_evidence\",\n inputSchema: createEvidenceInputSchema,\n project: (input: CreateEvidenceProjectionInput) => {\n const text = input.text ?? input.canonicalText;\n const weight = typeof input.weight === \"number\" ? input.weight : undefined;\n const target = input.targetId ?? input.targetNodeId;\n const kind = targetKind(target);\n const linkedWorktreeId =\n kind === \"worktree\" ? normalizeWorktreeId(target) : undefined;\n const linkedBeliefNodeId =\n input.linkedBeliefNodeId ??\n (kind === \"belief\" || kind === \"unknown\"\n ? (input.targetNodeId ?? input.targetId)\n : undefined);\n const evidenceRelation = linkedBeliefNodeId\n ? normalizeRelation(input.evidenceRelation, weight)\n : undefined;\n const confidence = evidenceRelation\n ? normalizeConfidence(input.confidence, weight)\n : undefined;\n const beliefRelations = input.beliefRelations\n ?.map(normalizeBeliefRelation)\n .filter(\n (relation): relation is Record<string, unknown> => relation !== undefined,\n );\n\n return compactRecord({\n projectId: input.projectId,\n topicId: normalizeTopicIdForKernel(input.topicId),\n text,\n title: input.title ?? text,\n content: input.content ?? text,\n contentType: input.contentType,\n kind: input.kind,\n tags: input.tags,\n sourceType: input.sourceType,\n externalSourceType: input.externalSourceType,\n sourceUrl: input.sourceUrl ?? input.source,\n sourceQuestionId: input.sourceQuestionId,\n methodology: input.methodology,\n informationAsymmetry: input.informationAsymmetry,\n sourceDescription: input.sourceDescription,\n metadata: compactRecord({\n ...recordValue(input.metadata),\n source: input.source,\n targetId: input.targetId,\n targetNodeId: input.targetNodeId,\n targetKind: kind === \"unknown\" ? undefined : kind,\n linkedWorktreeId,\n weight,\n reasoning: input.reasoning,\n rationale: input.rationale,\n }),\n linkedBeliefNodeId,\n evidenceRelation,\n confidence,\n beliefRelations:\n beliefRelations && beliefRelations.length > 0\n ? beliefRelations\n : undefined,\n rationale: input.rationale,\n trustedBypassAccessCheck: input.trustedBypassAccessCheck ?? true,\n });\n },\n convexArgsValidator: v.object({\n projectId: v.optional(v.string()),\n topicId: v.optional(v.string()),\n text: v.string(),\n title: v.optional(v.string()),\n content: v.optional(v.string()),\n contentType: v.optional(v.string()),\n kind: v.optional(v.string()),\n tags: v.optional(v.array(v.string())),\n sourceType: v.optional(v.string()),\n externalSourceType: v.optional(v.string()),\n sourceUrl: v.optional(v.string()),\n sourceQuestionId: v.optional(v.string()),\n methodology: v.optional(v.string()),\n informationAsymmetry: v.optional(v.string()),\n sourceDescription: v.optional(v.string()),\n metadata: v.optional(v.record(v.string(), v.any())),\n linkedBeliefNodeId: v.optional(v.string()),\n evidenceRelation: v.optional(\n v.union(\n v.literal(\"supports\"),\n v.literal(\"contradicts\"),\n ),\n ),\n beliefRelations: v.optional(\n v.array(\n v.object({\n beliefNodeId: v.string(),\n relation: v.union(v.literal(\"supports\"), v.literal(\"contradicts\")),\n confidence: v.optional(v.number()),\n rationale: v.optional(v.string()),\n }),\n ),\n ),\n confidence: v.optional(v.number()),\n rationale: v.string(),\n trustedBypassAccessCheck: v.optional(v.boolean()),\n }),\n});\n","import { v } from \"convex/values\";\nimport { z } from \"zod\";\nimport { defineProjection } from \"./projection-dsl.js\";\n\nconst beliefStatusSchema = z\n .enum([\"active\", \"superseded\", \"archived\", \"unscored\", \"scored\"])\n .optional()\n .describe(\"Filter by belief lifecycle or scoring status\");\n\nexport const listBeliefsInputSchema = z.object({\n topicId: z.string().describe(\"Topic scope\"),\n worktreeId: z.string().optional().describe(\"Filter to worktree scope\"),\n status: beliefStatusSchema,\n minConfidence: z\n .number()\n .optional()\n .describe(\"Minimum confidence threshold\"),\n limit: z.number().optional().describe(\"Maximum results\"),\n includeEdgeAssociated: z\n .boolean()\n .optional()\n .describe(\"Include beliefs associated to the topic through edges\"),\n});\n\nexport type ListBeliefsProjectionInput = z.infer<\n typeof listBeliefsInputSchema\n>;\n\nfunction kernelStatus(status: ListBeliefsProjectionInput[\"status\"]) {\n return status === \"active\" ||\n status === \"superseded\" ||\n status === \"archived\"\n ? status\n : undefined;\n}\n\nfunction compactRecord(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n );\n}\n\nexport const listBeliefsProjection = defineProjection({\n contractName: \"list_beliefs\",\n inputSchema: listBeliefsInputSchema,\n project: (input: ListBeliefsProjectionInput) =>\n compactRecord({\n topicId: input.topicId,\n status: kernelStatus(input.status),\n limit: input.limit,\n includeEdgeAssociated: input.includeEdgeAssociated,\n }),\n convexArgsValidator: v.object({\n topicId: v.string(),\n status: v.optional(\n v.union(\n v.literal(\"active\"),\n v.literal(\"superseded\"),\n v.literal(\"archived\"),\n ),\n ),\n limit: v.optional(v.number()),\n includeEdgeAssociated: v.optional(v.boolean()),\n }),\n});\n","import { v } from \"convex/values\";\nimport { z } from \"zod\";\nimport { defineProjection } from \"./projection-dsl.js\";\n\nconst taskStatusSchema = z\n .enum([\"todo\", \"in_progress\", \"blocked\", \"done\"])\n .optional()\n .describe(\"Filter by task status\");\n\nexport const listTasksInputSchema = z\n .object({\n topicId: z.string().optional().describe(\"Topic scope\"),\n worktreeId: z\n .string()\n .optional()\n .describe(\"Alias for linkedWorktreeId\"),\n linkedWorktreeId: z\n .string()\n .optional()\n .describe(\"Filter to tasks linked to this worktree\"),\n status: taskStatusSchema,\n limit: z.number().optional().describe(\"Maximum results\"),\n })\n .refine(\n (input) => Boolean(input.topicId || input.worktreeId || input.linkedWorktreeId),\n {\n message: \"topicId or worktreeId is required\",\n },\n );\n\nexport type ListTasksProjectionInput = z.infer<typeof listTasksInputSchema>;\n\nfunction compactRecord(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n );\n}\n\nexport const listTasksProjection = defineProjection({\n contractName: \"list_tasks\",\n inputSchema: listTasksInputSchema,\n project: (input: ListTasksProjectionInput) =>\n compactRecord({\n topicId: input.topicId,\n status: input.status,\n userId: undefined,\n limit: input.limit,\n linkedWorktreeId: input.linkedWorktreeId ?? input.worktreeId,\n }),\n convexArgsValidator: v.object({\n topicId: v.optional(v.string()),\n status: v.optional(\n v.union(\n v.literal(\"todo\"),\n v.literal(\"in_progress\"),\n v.literal(\"blocked\"),\n v.literal(\"done\"),\n ),\n ),\n limit: v.optional(v.number()),\n linkedWorktreeId: v.optional(v.string()),\n }),\n});\n","import { v } from \"convex/values\";\nimport { z } from \"zod\";\nimport { defineProjection } from \"./projection-dsl.js\";\n\nconst confidenceTriggerSchema = z.enum([\n \"evidence_added\",\n \"evidence_removed\",\n \"contradiction_resolved\",\n \"agent_assessment\",\n \"worktree_outcome\",\n \"worktree_completed\",\n \"contradiction_detected\",\n \"answer_recorded\",\n \"fusion\",\n \"discount\",\n \"deduction\",\n \"backfill_synthetic\",\n]);\n\nconst provenanceSchema = z.object({\n evidence: z.string().optional(),\n question: z.string().optional(),\n answer: z.string().optional(),\n contradiction: z.string().optional(),\n worktree: z.string().optional(),\n});\n\nconst slOpinionProjectionSchema = z.object({\n belief: z.number(),\n disbelief: z.number(),\n uncertainty: z.number(),\n baseRate: z.number(),\n});\n\nconst modulateConfidenceInputObjectSchema = z.object({\n nodeId: z.string().optional(),\n beliefNodeId: z.string().optional(),\n worktreeId: z.string().optional(),\n opinion: slOpinionProjectionSchema.optional(),\n belief: z.number().optional(),\n disbelief: z.number().optional(),\n uncertainty: z.number().optional(),\n baseRate: z.number().optional(),\n trigger: confidenceTriggerSchema,\n provenance: provenanceSchema.optional(),\n triggeringEvidenceId: z.string().optional(),\n triggeringQuestionId: z.string().optional(),\n triggeringAnswerId: z.string().optional(),\n triggeringContradictionId: z.string().optional(),\n triggeringWorktreeId: z.string().optional(),\n rationale: z.string(),\n trustedBypassAccessCheck: z.boolean().optional(),\n});\n\nexport const modulateConfidenceInputSchema =\n modulateConfidenceInputObjectSchema.superRefine((input, ctx) => {\n if (hasProvenance(input)) {\n return;\n }\n\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"modulate_confidence requires evidence, question, answer, contradiction, or worktree provenance\",\n path: [\"provenance\"],\n });\n });\n\nexport type ModulateConfidenceProjectionInput = z.infer<\n typeof modulateConfidenceInputSchema\n>;\n\nexport const modulateConfidenceProjection = defineProjection({\n contractName: \"modulate_confidence\",\n inputSchema: modulateConfidenceInputSchema,\n project: (input: ModulateConfidenceProjectionInput) => {\n const nodeId = input.beliefNodeId ?? input.nodeId;\n if (!nodeId) {\n throw new Error(\"modulate_confidence requires beliefNodeId or nodeId\");\n }\n\n const opinion = input.opinion ?? {\n belief: requireNumber(input.belief, \"belief\"),\n disbelief: requireNumber(input.disbelief, \"disbelief\"),\n uncertainty: requireNumber(input.uncertainty, \"uncertainty\"),\n baseRate: requireNumber(input.baseRate, \"baseRate\"),\n };\n assertProvenance(input);\n\n return {\n nodeId,\n worktreeId: input.worktreeId,\n belief: opinion.belief,\n disbelief: opinion.disbelief,\n uncertainty: opinion.uncertainty,\n baseRate: opinion.baseRate,\n trigger:\n input.trigger === \"answer_recorded\"\n ? \"agent_assessment\"\n : input.trigger,\n triggeringEvidenceId:\n input.provenance?.evidence ?? input.triggeringEvidenceId,\n triggeringQuestionId:\n input.provenance?.question ?? input.triggeringQuestionId,\n triggeringAnswerId: input.provenance?.answer ?? input.triggeringAnswerId,\n triggeringContradictionId:\n input.provenance?.contradiction ?? input.triggeringContradictionId,\n triggeringWorktreeId:\n input.provenance?.worktree ?? input.triggeringWorktreeId,\n rationale: input.rationale,\n trustedBypassAccessCheck: input.trustedBypassAccessCheck ?? true,\n };\n },\n convexArgsValidator: v.object({\n nodeId: v.string(),\n worktreeId: v.optional(v.string()),\n belief: v.number(),\n disbelief: v.number(),\n uncertainty: v.number(),\n baseRate: v.number(),\n trigger: v.union(\n v.literal(\"evidence_added\"),\n v.literal(\"evidence_removed\"),\n v.literal(\"worktree_completed\"),\n v.literal(\"contradiction_detected\"),\n v.literal(\"contradiction_resolved\"),\n v.literal(\"agent_assessment\"),\n v.literal(\"worktree_outcome\"),\n v.literal(\"fusion\"),\n v.literal(\"discount\"),\n v.literal(\"deduction\"),\n v.literal(\"backfill_synthetic\"),\n ),\n triggeringEvidenceId: v.optional(v.string()),\n triggeringQuestionId: v.optional(v.string()),\n triggeringAnswerId: v.optional(v.string()),\n triggeringContradictionId: v.optional(v.string()),\n triggeringWorktreeId: v.optional(v.string()),\n rationale: v.string(),\n trustedBypassAccessCheck: v.optional(v.boolean()),\n }),\n});\n\nfunction requireNumber(value: number | undefined, field: string): number {\n if (value === undefined) {\n throw new Error(`modulate_confidence requires ${field}`);\n }\n return value;\n}\n\nfunction assertProvenance(input: ModulateConfidenceProjectionInput): void {\n if (!hasProvenance(input)) {\n throw new Error(\n \"modulate_confidence requires evidence, question, answer, contradiction, or worktree provenance\",\n );\n }\n}\n\nfunction hasProvenance(input: ModulateConfidenceProjectionInput): boolean {\n return (\n input.trigger === \"backfill_synthetic\" ||\n Boolean(input.provenance && Object.values(input.provenance).some(Boolean)) ||\n Boolean(input.triggeringEvidenceId) ||\n Boolean(input.triggeringQuestionId) ||\n Boolean(input.triggeringAnswerId) ||\n Boolean(input.triggeringContradictionId) ||\n Boolean(input.triggeringWorktreeId)\n );\n}\n","import { createEvidenceProjection } from \"./create-evidence.projection.js\";\nimport { listBeliefsProjection } from \"./list-beliefs.projection.js\";\nimport { listTasksProjection } from \"./list-tasks.projection.js\";\nimport { modulateConfidenceProjection } from \"./modulate-confidence.projection.js\";\n\nexport { createEvidenceProjection } from \"./create-evidence.projection.js\";\nexport { listBeliefsProjection } from \"./list-beliefs.projection.js\";\nexport { listTasksProjection } from \"./list-tasks.projection.js\";\nexport { modulateConfidenceProjection } from \"./modulate-confidence.projection.js\";\nexport * from \"./projection-dsl.js\";\n\nexport const projections = {\n create_evidence: createEvidenceProjection,\n list_beliefs: listBeliefsProjection,\n list_tasks: listTasksProjection,\n modulate_confidence: modulateConfidenceProjection,\n} as const;\n\nexport type ProjectionRegistry = typeof projections;\n","import { projections } from \"./index.js\";\n\nconst fixture = {\n create_evidence: {\n topicId: \"topic:fixture\",\n canonicalText: \"projection fixture evidence\",\n sourceUrl: \"https://example.test/evidence\",\n targetId: \"belief:fixture\",\n weight: 0.6,\n rationale: \"projection fixture\",\n },\n list_beliefs: {\n topicId: \"topic:fixture\",\n status: \"scored\",\n limit: 25,\n },\n list_tasks: {\n topicId: \"topic:fixture\",\n worktreeId: \"worktree:fixture\",\n status: \"in_progress\",\n limit: 10,\n },\n modulate_confidence: {\n beliefNodeId: \"belief:fixture\",\n opinion: {\n belief: 0.7,\n disbelief: 0.1,\n uncertainty: 0.2,\n baseRate: 0.5,\n },\n trigger: \"evidence_added\",\n provenance: { evidence: \"evidence:fixture\" },\n rationale: \"projection fixture\",\n },\n} as const;\n\nexport function checkConvexArgsShape(): void {\n for (const [name, projection] of Object.entries(projections)) {\n const input = fixture[name as keyof typeof fixture];\n const parsed = projection.inputSchema.safeParse(input);\n if (!parsed.success) {\n throw new Error(\n `Projection fixture for ${name} failed input validation: ${parsed.error.message}`,\n );\n }\n const projected = projection.project(parsed.data as never);\n if (!projected || typeof projected !== \"object\") {\n throw new Error(`Projection ${name} did not emit object convex args.`);\n }\n }\n}\n\ncheckConvexArgsShape();\n"]}
1
+ {"version":3,"sources":["../../src/ids.contract.ts","../../src/projections/projection-dsl.ts","../../src/projections/create-evidence.projection.ts","../../src/projections/list-beliefs.projection.ts","../../src/projections/list-tasks.projection.ts","../../src/projections/append-sl-scoring.projection.ts","../../src/projections/index.ts","../../src/projections/check-convex-args-shape.ts"],"names":["z","compactRecord","v"],"mappings":"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","file":"check-convex-args-shape.js","sourcesContent":["export type DecodedPrefixedId = {\n prefix: string;\n value: string;\n};\n\nconst PREFIXED_ID_PATTERN = /^([a-z][a-z0-9]*)_(.+)$/;\n\nexport function encodePrefixedId(prefix: string, value: string): string {\n const normalizedPrefix = prefix.trim();\n const normalizedValue = value.trim();\n\n if (!normalizedPrefix || !normalizedValue) {\n throw new Error(\"Both prefix and value are required to encode a prefixed ID.\");\n }\n\n return `${normalizedPrefix}_${normalizedValue}`;\n}\n\nexport function decodePrefixedId(id: string): DecodedPrefixedId {\n const normalized = id.trim();\n const match = PREFIXED_ID_PATTERN.exec(normalized);\n\n if (!match) {\n throw new Error(`Invalid prefixed ID: ${id}`);\n }\n\n return {\n prefix: match[1],\n value: match[2],\n };\n}\n\nexport function hasPrefixedIdPrefix(id: string, prefix: string): boolean {\n const decoded = decodePrefixedId(id);\n return decoded.prefix === prefix.trim();\n}\n","import type { z } from \"zod\";\n\nexport interface ProjectionDef<TInput, TConvexArgs> {\n contractName: string;\n inputSchema: z.ZodSchema<TInput>;\n project: (input: TInput) => TConvexArgs;\n convexArgsValidator: unknown;\n}\n\nexport function defineProjection<I, C>(\n def: ProjectionDef<I, C>\n): ProjectionDef<I, C> {\n return def;\n}\n","import { v } from \"convex/values\";\nimport { z } from \"zod\";\nimport { decodePrefixedId } from \"../ids.contract.js\";\nimport { defineProjection } from \"./projection-dsl.js\";\n\nconst jsonRecordSchema = z.record(z.unknown());\n\nconst evidenceRelationSchema = z.enum([\"supports\", \"contradicts\"]);\nconst evidenceRelationAliasSchema = z.enum([\n \"supports\",\n \"contradicts\",\n \"supporting\",\n \"contradicting\",\n]);\nconst beliefRelationSchema = z.object({\n beliefId: z.string().optional(),\n beliefNodeId: z.string().optional(),\n targetId: z.string().optional(),\n relation: evidenceRelationAliasSchema.optional(),\n evidenceRelation: evidenceRelationSchema.optional(),\n confidence: z.number().optional(),\n weight: z.number().optional(),\n rationale: z.string().optional(),\n});\n\nconst createEvidenceInputSchemaBase = z\n .object({\n projectId: z.string().optional(),\n topicId: z.string().optional(),\n text: z.string().optional(),\n canonicalText: z.string().optional(),\n title: z.string().optional(),\n content: z.string().optional(),\n contentType: z.string().optional(),\n kind: z.string().optional(),\n tags: z.array(z.string()).optional(),\n source: z.string().optional(),\n sourceUrl: z.string().optional(),\n sourceType: z.string().optional(),\n externalSourceType: z.string().optional(),\n sourceQuestionId: z.string().optional(),\n methodology: z.string().optional(),\n informationAsymmetry: z.string().optional(),\n sourceDescription: z.string().optional(),\n targetId: z.string().optional(),\n targetNodeId: z.string().optional(),\n linkedBeliefNodeId: z.string().optional(),\n evidenceRelation: evidenceRelationSchema.optional(),\n beliefRelations: z.array(beliefRelationSchema).optional(),\n confidence: z.number().optional(),\n weight: z.number().optional(),\n reasoning: z.string().optional(),\n rationale: z.string(),\n metadata: jsonRecordSchema.optional(),\n trustedBypassAccessCheck: z.boolean().optional(),\n })\n .passthrough();\n\nfunction isSignedImpactScore(value: number | undefined): value is number {\n return (\n typeof value === \"number\" &&\n Number.isFinite(value) &&\n value >= -1 &&\n value <= 1 &&\n value !== 0\n );\n}\n\nfunction validateSignedImpactScore(\n value: number | undefined,\n ctx: z.RefinementCtx,\n path: (string | number)[],\n) {\n if (!isSignedImpactScore(value)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"evidence-to-belief links require an explicit nonzero signed impact score in [-1, 1]\",\n path,\n });\n return false;\n }\n return true;\n}\n\nfunction validateRelationImpactConsistency(\n relation: string | undefined,\n weight: number | undefined,\n ctx: z.RefinementCtx,\n path: (string | number)[],\n) {\n const normalized = normalizeRelationAlias(relation);\n if (!normalized || !isSignedImpactScore(weight)) {\n return;\n }\n if (normalized === \"supports\" && weight < 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"supporting evidence requires a positive impact score\",\n path,\n });\n }\n if (normalized === \"contradicts\" && weight > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"contradicting evidence requires a negative impact score\",\n path,\n });\n }\n}\n\nexport const createEvidenceInputSchema = createEvidenceInputSchemaBase.superRefine(\n (input, ctx) => {\n if (!input.text && !input.canonicalText) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"create_evidence requires text\",\n path: [\"text\"],\n });\n }\n\n const target = input.targetId ?? input.targetNodeId;\n const kind = targetKind(target);\n const linksPrimaryBelief = Boolean(\n input.linkedBeliefNodeId ||\n kind === \"belief\" ||\n (kind === \"unknown\" && target),\n );\n const weight =\n typeof input.weight === \"number\" ? input.weight : undefined;\n const hasBeliefRelations = (input.beliefRelations?.length ?? 0) > 0;\n if (!linksPrimaryBelief && !hasBeliefRelations) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"create_evidence requires at least one linked belief; evidence cannot be created as an orphan or linked only to a question/worktree\",\n path: [\"linkedBeliefNodeId\"],\n });\n }\n if (kind === \"question\" || kind === \"worktree\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"create_evidence targetId must be a belief. Link evidence to questions/worktrees only after the evidence has a belief impact edge.\",\n path: [\"targetId\"],\n });\n }\n if (linksPrimaryBelief) {\n validateSignedImpactScore(weight, ctx, [\"weight\"]);\n validateRelationImpactConsistency(input.evidenceRelation, weight, ctx, [\n \"weight\",\n ]);\n }\n\n input.beliefRelations?.forEach((relation, index) => {\n const beliefNodeId =\n relation.beliefNodeId ?? relation.beliefId ?? relation.targetId;\n if (!beliefNodeId) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"beliefRelations entries require beliefId, beliefNodeId, or targetId\",\n path: [\"beliefRelations\", index, \"beliefNodeId\"],\n });\n }\n const relationWeight =\n typeof relation.weight === \"number\" ? relation.weight : undefined;\n if (beliefNodeId) {\n validateSignedImpactScore(relationWeight, ctx, [\n \"beliefRelations\",\n index,\n \"weight\",\n ]);\n validateRelationImpactConsistency(\n relation.evidenceRelation ?? relation.relation,\n relationWeight,\n ctx,\n [\"beliefRelations\", index, \"weight\"],\n );\n }\n });\n },\n);\n\nexport type CreateEvidenceProjectionInput = z.infer<\n typeof createEvidenceInputSchema\n>;\n\nfunction compactRecord(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n );\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction recordValue(value: unknown): Record<string, unknown> {\n return isRecord(value) ? value : {};\n}\n\nfunction normalizeTopicIdForKernel(\n topicId: string | undefined,\n): string | undefined {\n const normalized = topicId?.trim();\n if (!normalized) {\n return undefined;\n }\n\n try {\n const decoded = decodePrefixedId(normalized);\n return decoded.prefix === \"top\" ? decoded.value : normalized;\n } catch {\n return normalized;\n }\n}\n\nfunction normalizeWorktreeId(value: string | undefined): string | undefined {\n const normalized = value?.trim();\n if (!normalized) {\n return undefined;\n }\n if (normalized.startsWith(\"wt_\")) {\n return normalized.slice(\"wt_\".length);\n }\n return normalized;\n}\n\nfunction targetKind(\n targetId: string | undefined,\n): \"belief\" | \"question\" | \"worktree\" | \"unknown\" {\n const normalized = targetId?.trim();\n if (!normalized) {\n return \"unknown\";\n }\n if (normalized.startsWith(\"wt_\") || /^tn[a-z0-9]+$/i.test(normalized)) {\n return \"worktree\";\n }\n if (normalized.startsWith(\"que_\")) {\n return \"question\";\n }\n if (normalized.startsWith(\"bel_\")) {\n return \"belief\";\n }\n return \"unknown\";\n}\n\nfunction normalizeRelationAlias(value: string | undefined) {\n if (value === \"supports\" || value === \"supporting\") {\n return \"supports\" as const;\n }\n if (value === \"contradicts\" || value === \"contradicting\") {\n return \"contradicts\" as const;\n }\n return undefined;\n}\n\nfunction normalizeRelation(value: string | undefined, weight: number | undefined) {\n const alias = normalizeRelationAlias(value);\n if (alias) {\n return alias;\n }\n if (weight === undefined || !hasNonzeroWeight(weight)) {\n return undefined;\n }\n return weight < 0 ? (\"contradicts\" as const) : (\"supports\" as const);\n}\n\nfunction hasNonzeroWeight(value: number | undefined): boolean {\n return typeof value === \"number\" && Number.isFinite(value) && value !== 0;\n}\n\nfunction normalizeConfidence(\n confidence: number | undefined,\n weight: number | undefined,\n) {\n if (confidence !== undefined) {\n return Math.min(1, Math.max(0, confidence));\n }\n if (weight === undefined) {\n return undefined;\n }\n return Math.min(1, Math.max(0, Math.abs(weight)));\n}\n\nfunction normalizeBeliefRelation(\n relation: z.infer<typeof beliefRelationSchema>,\n) {\n const beliefNodeId =\n relation.beliefNodeId ?? relation.beliefId ?? relation.targetId;\n if (!beliefNodeId) {\n return undefined;\n }\n const weight =\n typeof relation.weight === \"number\" ? relation.weight : undefined;\n const evidenceRelation = normalizeRelation(\n relation.evidenceRelation ?? relation.relation,\n weight,\n );\n if (!evidenceRelation) {\n return undefined;\n }\n return compactRecord({\n beliefNodeId,\n relation: evidenceRelation,\n confidence: normalizeConfidence(relation.confidence, weight),\n weight,\n rationale: relation.rationale,\n });\n}\n\nexport const createEvidenceProjection = defineProjection({\n contractName: \"create_evidence\",\n inputSchema: createEvidenceInputSchema,\n project: (input: CreateEvidenceProjectionInput) => {\n const text = input.text ?? input.canonicalText;\n const weight = typeof input.weight === \"number\" ? input.weight : undefined;\n const target = input.targetId ?? input.targetNodeId;\n const kind = targetKind(target);\n const linkedWorktreeId =\n kind === \"worktree\" ? normalizeWorktreeId(target) : undefined;\n const linkedBeliefNodeId =\n input.linkedBeliefNodeId ??\n (kind === \"belief\" || kind === \"unknown\"\n ? (input.targetNodeId ?? input.targetId)\n : undefined);\n const evidenceRelation = linkedBeliefNodeId\n ? normalizeRelation(input.evidenceRelation, weight)\n : undefined;\n const confidence = evidenceRelation\n ? normalizeConfidence(input.confidence, weight)\n : undefined;\n const beliefRelations = input.beliefRelations\n ?.map(normalizeBeliefRelation)\n .filter(\n (relation): relation is Record<string, unknown> => relation !== undefined,\n );\n\n return compactRecord({\n projectId: input.projectId,\n topicId: normalizeTopicIdForKernel(input.topicId),\n text,\n title: input.title ?? text,\n content: input.content ?? text,\n contentType: input.contentType,\n kind: input.kind,\n tags: input.tags,\n sourceType: input.sourceType,\n externalSourceType: input.externalSourceType,\n sourceUrl: input.sourceUrl ?? input.source,\n sourceQuestionId: input.sourceQuestionId,\n methodology: input.methodology,\n informationAsymmetry: input.informationAsymmetry,\n sourceDescription: input.sourceDescription,\n metadata: compactRecord({\n ...recordValue(input.metadata),\n source: input.source,\n targetId: input.targetId,\n targetNodeId: input.targetNodeId,\n targetKind: kind === \"unknown\" ? undefined : kind,\n linkedWorktreeId,\n weight,\n reasoning: input.reasoning,\n rationale: input.rationale,\n }),\n linkedBeliefNodeId,\n evidenceRelation,\n confidence,\n weight,\n beliefRelations:\n beliefRelations && beliefRelations.length > 0\n ? beliefRelations\n : undefined,\n rationale: input.rationale,\n trustedBypassAccessCheck: input.trustedBypassAccessCheck ?? true,\n });\n },\n convexArgsValidator: v.object({\n projectId: v.optional(v.string()),\n topicId: v.optional(v.string()),\n text: v.string(),\n title: v.optional(v.string()),\n content: v.optional(v.string()),\n contentType: v.optional(v.string()),\n kind: v.optional(v.string()),\n tags: v.optional(v.array(v.string())),\n sourceType: v.optional(v.string()),\n externalSourceType: v.optional(v.string()),\n sourceUrl: v.optional(v.string()),\n sourceQuestionId: v.optional(v.string()),\n methodology: v.optional(v.string()),\n informationAsymmetry: v.optional(v.string()),\n sourceDescription: v.optional(v.string()),\n metadata: v.optional(v.record(v.string(), v.any())),\n linkedBeliefNodeId: v.optional(v.string()),\n evidenceRelation: v.optional(\n v.union(\n v.literal(\"supports\"),\n v.literal(\"contradicts\"),\n ),\n ),\n weight: v.optional(v.number()),\n beliefRelations: v.optional(\n v.array(\n v.object({\n beliefNodeId: v.string(),\n relation: v.union(v.literal(\"supports\"), v.literal(\"contradicts\")),\n confidence: v.optional(v.number()),\n weight: v.number(),\n rationale: v.optional(v.string()),\n }),\n ),\n ),\n confidence: v.optional(v.number()),\n rationale: v.string(),\n trustedBypassAccessCheck: v.optional(v.boolean()),\n }),\n});\n","import { v } from \"convex/values\";\nimport { z } from \"zod\";\nimport { defineProjection } from \"./projection-dsl.js\";\n\nconst beliefStatusSchema = z\n .enum([\"active\", \"superseded\", \"archived\", \"unscored\", \"scored\"])\n .optional()\n .describe(\"Filter by belief lifecycle or scoring status\");\n\nexport const listBeliefsInputSchema = z.object({\n topicId: z.string().describe(\"Topic scope\"),\n worktreeId: z.string().optional().describe(\"Filter to worktree scope\"),\n status: beliefStatusSchema,\n minConfidence: z\n .number()\n .optional()\n .describe(\"Minimum confidence threshold\"),\n limit: z.number().optional().describe(\"Maximum results\"),\n includeEdgeAssociated: z\n .boolean()\n .optional()\n .describe(\"Include beliefs associated to the topic through edges\"),\n});\n\nexport type ListBeliefsProjectionInput = z.infer<\n typeof listBeliefsInputSchema\n>;\n\nfunction kernelStatus(status: ListBeliefsProjectionInput[\"status\"]) {\n return status === \"active\" ||\n status === \"superseded\" ||\n status === \"archived\"\n ? status\n : undefined;\n}\n\nfunction compactRecord(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n );\n}\n\nexport const listBeliefsProjection = defineProjection({\n contractName: \"list_beliefs\",\n inputSchema: listBeliefsInputSchema,\n project: (input: ListBeliefsProjectionInput) =>\n compactRecord({\n topicId: input.topicId,\n status: kernelStatus(input.status),\n limit: input.limit,\n includeEdgeAssociated: input.includeEdgeAssociated,\n }),\n convexArgsValidator: v.object({\n topicId: v.string(),\n status: v.optional(\n v.union(\n v.literal(\"active\"),\n v.literal(\"superseded\"),\n v.literal(\"archived\"),\n ),\n ),\n limit: v.optional(v.number()),\n includeEdgeAssociated: v.optional(v.boolean()),\n }),\n});\n","import { v } from \"convex/values\";\nimport { z } from \"zod\";\nimport { defineProjection } from \"./projection-dsl.js\";\n\nconst taskStatusSchema = z\n .enum([\"todo\", \"in_progress\", \"blocked\", \"done\"])\n .optional()\n .describe(\"Filter by task status\");\n\nexport const listTasksInputSchema = z\n .object({\n topicId: z.string().optional().describe(\"Topic scope\"),\n worktreeId: z\n .string()\n .optional()\n .describe(\"Alias for linkedWorktreeId\"),\n linkedWorktreeId: z\n .string()\n .optional()\n .describe(\"Filter to tasks linked to this worktree\"),\n status: taskStatusSchema,\n limit: z.number().optional().describe(\"Maximum results\"),\n })\n .refine(\n (input) => Boolean(input.topicId || input.worktreeId || input.linkedWorktreeId),\n {\n message: \"topicId or worktreeId is required\",\n },\n );\n\nexport type ListTasksProjectionInput = z.infer<typeof listTasksInputSchema>;\n\nfunction compactRecord(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n );\n}\n\nexport const listTasksProjection = defineProjection({\n contractName: \"list_tasks\",\n inputSchema: listTasksInputSchema,\n project: (input: ListTasksProjectionInput) =>\n compactRecord({\n topicId: input.topicId,\n status: input.status,\n userId: undefined,\n limit: input.limit,\n linkedWorktreeId: input.linkedWorktreeId ?? input.worktreeId,\n }),\n convexArgsValidator: v.object({\n topicId: v.optional(v.string()),\n status: v.optional(\n v.union(\n v.literal(\"todo\"),\n v.literal(\"in_progress\"),\n v.literal(\"blocked\"),\n v.literal(\"done\"),\n ),\n ),\n limit: v.optional(v.number()),\n linkedWorktreeId: v.optional(v.string()),\n }),\n});\n","import { v } from \"convex/values\";\nimport { z } from \"zod\";\nimport { defineProjection } from \"./projection-dsl.js\";\n\nconst confidenceTriggerSchema = z.enum([\n \"evidence_added\",\n \"evidence_removed\",\n \"contradiction_resolved\",\n \"agent_assessment\",\n \"worktree_outcome\",\n \"worktree_completed\",\n \"contradiction_detected\",\n \"answer_recorded\",\n \"fusion\",\n \"discount\",\n \"deduction\",\n \"backfill_synthetic\",\n]);\n\nconst provenanceSchema = z.object({\n evidence: z.string().optional(),\n question: z.string().optional(),\n answer: z.string().optional(),\n contradiction: z.string().optional(),\n worktree: z.string().optional(),\n});\n\nconst slOpinionProjectionSchema = z.object({\n belief: z.number(),\n disbelief: z.number(),\n uncertainty: z.number(),\n baseRate: z.number(),\n});\n\nconst appendSlScoringInputObjectSchema = z.object({\n nodeId: z.string().optional(),\n beliefNodeId: z.string().optional(),\n worktreeId: z.string().optional(),\n opinion: slOpinionProjectionSchema.optional(),\n belief: z.number().optional(),\n disbelief: z.number().optional(),\n uncertainty: z.number().optional(),\n baseRate: z.number().optional(),\n trigger: confidenceTriggerSchema,\n provenance: provenanceSchema.optional(),\n triggeringEvidenceId: z.string().optional(),\n triggeringQuestionId: z.string().optional(),\n triggeringAnswerId: z.string().optional(),\n triggeringContradictionId: z.string().optional(),\n triggeringWorktreeId: z.string().optional(),\n rationale: z.string(),\n trustedBypassAccessCheck: z.boolean().optional(),\n});\n\nexport const appendSlScoringInputSchema =\n appendSlScoringInputObjectSchema.superRefine((input, ctx) => {\n if (hasProvenance(input)) {\n return;\n }\n\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"append_sl_scoring requires evidence, question, answer, contradiction, or worktree provenance\",\n path: [\"provenance\"],\n });\n });\n\nexport type AppendSlScoringProjectionInput = z.infer<\n typeof appendSlScoringInputSchema\n>;\n\nexport const appendSlScoringProjection = defineProjection({\n contractName: \"append_sl_scoring\",\n inputSchema: appendSlScoringInputSchema,\n project: (input: AppendSlScoringProjectionInput) => {\n const nodeId = input.beliefNodeId ?? input.nodeId;\n if (!nodeId) {\n throw new Error(\"append_sl_scoring requires beliefNodeId or nodeId\");\n }\n\n const opinion = input.opinion ?? {\n belief: requireNumber(input.belief, \"belief\"),\n disbelief: requireNumber(input.disbelief, \"disbelief\"),\n uncertainty: requireNumber(input.uncertainty, \"uncertainty\"),\n baseRate: requireNumber(input.baseRate, \"baseRate\"),\n };\n assertProvenance(input);\n\n return {\n nodeId,\n worktreeId: input.worktreeId,\n belief: opinion.belief,\n disbelief: opinion.disbelief,\n uncertainty: opinion.uncertainty,\n baseRate: opinion.baseRate,\n trigger:\n input.trigger === \"answer_recorded\"\n ? \"agent_assessment\"\n : input.trigger,\n triggeringEvidenceId:\n input.provenance?.evidence ?? input.triggeringEvidenceId,\n triggeringQuestionId:\n input.provenance?.question ?? input.triggeringQuestionId,\n triggeringAnswerId: input.provenance?.answer ?? input.triggeringAnswerId,\n triggeringContradictionId:\n input.provenance?.contradiction ?? input.triggeringContradictionId,\n triggeringWorktreeId:\n input.provenance?.worktree ?? input.triggeringWorktreeId,\n rationale: input.rationale,\n trustedBypassAccessCheck: input.trustedBypassAccessCheck ?? true,\n };\n },\n convexArgsValidator: v.object({\n nodeId: v.string(),\n worktreeId: v.optional(v.string()),\n belief: v.number(),\n disbelief: v.number(),\n uncertainty: v.number(),\n baseRate: v.number(),\n trigger: v.union(\n v.literal(\"evidence_added\"),\n v.literal(\"evidence_removed\"),\n v.literal(\"worktree_completed\"),\n v.literal(\"contradiction_detected\"),\n v.literal(\"contradiction_resolved\"),\n v.literal(\"agent_assessment\"),\n v.literal(\"worktree_outcome\"),\n v.literal(\"fusion\"),\n v.literal(\"discount\"),\n v.literal(\"deduction\"),\n v.literal(\"backfill_synthetic\"),\n ),\n triggeringEvidenceId: v.optional(v.string()),\n triggeringQuestionId: v.optional(v.string()),\n triggeringAnswerId: v.optional(v.string()),\n triggeringContradictionId: v.optional(v.string()),\n triggeringWorktreeId: v.optional(v.string()),\n rationale: v.string(),\n trustedBypassAccessCheck: v.optional(v.boolean()),\n }),\n});\n\nfunction requireNumber(value: number | undefined, field: string): number {\n if (value === undefined) {\n throw new Error(`append_sl_scoring requires ${field}`);\n }\n return value;\n}\n\nfunction assertProvenance(input: AppendSlScoringProjectionInput): void {\n if (!hasProvenance(input)) {\n throw new Error(\n \"append_sl_scoring requires evidence, question, answer, contradiction, or worktree provenance\",\n );\n }\n}\n\nfunction hasProvenance(input: AppendSlScoringProjectionInput): boolean {\n return (\n input.trigger === \"backfill_synthetic\" ||\n Boolean(input.provenance && Object.values(input.provenance).some(Boolean)) ||\n Boolean(input.triggeringEvidenceId) ||\n Boolean(input.triggeringQuestionId) ||\n Boolean(input.triggeringAnswerId) ||\n Boolean(input.triggeringContradictionId) ||\n Boolean(input.triggeringWorktreeId)\n );\n}\n","import { createEvidenceProjection } from \"./create-evidence.projection.js\";\nimport { listBeliefsProjection } from \"./list-beliefs.projection.js\";\nimport { listTasksProjection } from \"./list-tasks.projection.js\";\nimport { appendSlScoringProjection } from \"./append-sl-scoring.projection.js\";\n\nexport { appendSlScoringProjection } from \"./append-sl-scoring.projection.js\";\nexport { createEvidenceProjection } from \"./create-evidence.projection.js\";\nexport { listBeliefsProjection } from \"./list-beliefs.projection.js\";\nexport { listTasksProjection } from \"./list-tasks.projection.js\";\nexport * from \"./projection-dsl.js\";\n\nexport const projections = {\n append_sl_scoring: appendSlScoringProjection,\n create_evidence: createEvidenceProjection,\n list_beliefs: listBeliefsProjection,\n list_tasks: listTasksProjection,\n} as const;\n\nexport type ProjectionRegistry = typeof projections;\n","import { projections } from \"./index.js\";\n\nconst fixture = {\n create_evidence: {\n topicId: \"topic:fixture\",\n canonicalText: \"projection fixture evidence\",\n sourceUrl: \"https://example.test/evidence\",\n targetId: \"belief:fixture\",\n weight: 0.6,\n rationale: \"projection fixture\",\n },\n list_beliefs: {\n topicId: \"topic:fixture\",\n status: \"scored\",\n limit: 25,\n },\n list_tasks: {\n topicId: \"topic:fixture\",\n worktreeId: \"worktree:fixture\",\n status: \"in_progress\",\n limit: 10,\n },\n append_sl_scoring: {\n beliefNodeId: \"belief:fixture\",\n opinion: {\n belief: 0.7,\n disbelief: 0.1,\n uncertainty: 0.2,\n baseRate: 0.5,\n },\n trigger: \"evidence_added\",\n provenance: { evidence: \"evidence:fixture\" },\n rationale: \"projection fixture\",\n },\n} as const;\n\nexport function checkConvexArgsShape(): void {\n for (const [name, projection] of Object.entries(projections)) {\n const input = fixture[name as keyof typeof fixture];\n const parsed = projection.inputSchema.safeParse(input);\n if (!parsed.success) {\n throw new Error(\n `Projection fixture for ${name} failed input validation: ${parsed.error.message}`,\n );\n }\n const projected = projection.project(parsed.data as never);\n if (!projected || typeof projected !== \"object\") {\n throw new Error(`Projection ${name} did not emit object convex args.`);\n }\n }\n}\n\ncheckConvexArgsShape();\n"]}
@@ -71,11 +71,39 @@ var createEvidenceInputSchemaBase = z.object({
71
71
  metadata: jsonRecordSchema.optional(),
72
72
  trustedBypassAccessCheck: z.boolean().optional()
73
73
  }).passthrough();
74
- function hasNonzeroWeight(value) {
75
- return typeof value === "number" && Number.isFinite(value) && value !== 0;
74
+ function isSignedImpactScore(value) {
75
+ return typeof value === "number" && Number.isFinite(value) && value >= -1 && value <= 1 && value !== 0;
76
76
  }
77
- function hasRelationSignal(value, weight) {
78
- return Boolean(normalizeRelation(value, weight));
77
+ function validateSignedImpactScore(value, ctx, path) {
78
+ if (!isSignedImpactScore(value)) {
79
+ ctx.addIssue({
80
+ code: z.ZodIssueCode.custom,
81
+ message: "evidence-to-belief links require an explicit nonzero signed impact score in [-1, 1]",
82
+ path
83
+ });
84
+ return false;
85
+ }
86
+ return true;
87
+ }
88
+ function validateRelationImpactConsistency(relation, weight, ctx, path) {
89
+ const normalized = normalizeRelationAlias(relation);
90
+ if (!normalized || !isSignedImpactScore(weight)) {
91
+ return;
92
+ }
93
+ if (normalized === "supports" && weight < 0) {
94
+ ctx.addIssue({
95
+ code: z.ZodIssueCode.custom,
96
+ message: "supporting evidence requires a positive impact score",
97
+ path
98
+ });
99
+ }
100
+ if (normalized === "contradicts" && weight > 0) {
101
+ ctx.addIssue({
102
+ code: z.ZodIssueCode.custom,
103
+ message: "contradicting evidence requires a negative impact score",
104
+ path
105
+ });
106
+ }
79
107
  }
80
108
  var createEvidenceInputSchema = createEvidenceInputSchemaBase.superRefine(
81
109
  (input, ctx) => {
@@ -92,13 +120,27 @@ var createEvidenceInputSchema = createEvidenceInputSchemaBase.superRefine(
92
120
  input.linkedBeliefNodeId || kind === "belief" || kind === "unknown" && target
93
121
  );
94
122
  const weight = typeof input.weight === "number" ? input.weight : void 0;
95
- if (linksPrimaryBelief && !hasRelationSignal(input.evidenceRelation, weight)) {
123
+ const hasBeliefRelations = (input.beliefRelations?.length ?? 0) > 0;
124
+ if (!linksPrimaryBelief && !hasBeliefRelations) {
96
125
  ctx.addIssue({
97
126
  code: z.ZodIssueCode.custom,
98
- message: "belief-targeted evidence requires evidenceRelation='supports'|'contradicts' or a nonzero signed weight",
99
- path: ["evidenceRelation"]
127
+ message: "create_evidence requires at least one linked belief; evidence cannot be created as an orphan or linked only to a question/worktree",
128
+ path: ["linkedBeliefNodeId"]
100
129
  });
101
130
  }
131
+ if (kind === "question" || kind === "worktree") {
132
+ ctx.addIssue({
133
+ code: z.ZodIssueCode.custom,
134
+ message: "create_evidence targetId must be a belief. Link evidence to questions/worktrees only after the evidence has a belief impact edge.",
135
+ path: ["targetId"]
136
+ });
137
+ }
138
+ if (linksPrimaryBelief) {
139
+ validateSignedImpactScore(weight, ctx, ["weight"]);
140
+ validateRelationImpactConsistency(input.evidenceRelation, weight, ctx, [
141
+ "weight"
142
+ ]);
143
+ }
102
144
  input.beliefRelations?.forEach((relation, index) => {
103
145
  const beliefNodeId = relation.beliefNodeId ?? relation.beliefId ?? relation.targetId;
104
146
  if (!beliefNodeId) {
@@ -109,15 +151,18 @@ var createEvidenceInputSchema = createEvidenceInputSchemaBase.superRefine(
109
151
  });
110
152
  }
111
153
  const relationWeight = typeof relation.weight === "number" ? relation.weight : void 0;
112
- if (beliefNodeId && !hasRelationSignal(
113
- relation.evidenceRelation ?? relation.relation,
114
- relationWeight
115
- )) {
116
- ctx.addIssue({
117
- code: z.ZodIssueCode.custom,
118
- message: "beliefRelations entries require evidenceRelation='supports'|'contradicts' or a nonzero signed weight",
119
- path: ["beliefRelations", index, "evidenceRelation"]
120
- });
154
+ if (beliefNodeId) {
155
+ validateSignedImpactScore(relationWeight, ctx, [
156
+ "beliefRelations",
157
+ index,
158
+ "weight"
159
+ ]);
160
+ validateRelationImpactConsistency(
161
+ relation.evidenceRelation ?? relation.relation,
162
+ relationWeight,
163
+ ctx,
164
+ ["beliefRelations", index, "weight"]
165
+ );
121
166
  }
122
167
  });
123
168
  }
@@ -171,18 +216,28 @@ function targetKind(targetId) {
171
216
  }
172
217
  return "unknown";
173
218
  }
174
- function normalizeRelation(value, weight) {
219
+ function normalizeRelationAlias(value) {
175
220
  if (value === "supports" || value === "supporting") {
176
221
  return "supports";
177
222
  }
178
223
  if (value === "contradicts" || value === "contradicting") {
179
224
  return "contradicts";
180
225
  }
226
+ return void 0;
227
+ }
228
+ function normalizeRelation(value, weight) {
229
+ const alias = normalizeRelationAlias(value);
230
+ if (alias) {
231
+ return alias;
232
+ }
181
233
  if (weight === void 0 || !hasNonzeroWeight(weight)) {
182
234
  return void 0;
183
235
  }
184
236
  return weight < 0 ? "contradicts" : "supports";
185
237
  }
238
+ function hasNonzeroWeight(value) {
239
+ return typeof value === "number" && Number.isFinite(value) && value !== 0;
240
+ }
186
241
  function normalizeConfidence(confidence, weight) {
187
242
  if (confidence !== void 0) {
188
243
  return Math.min(1, Math.max(0, confidence));
@@ -209,6 +264,7 @@ function normalizeBeliefRelation(relation) {
209
264
  beliefNodeId,
210
265
  relation: evidenceRelation,
211
266
  confidence: normalizeConfidence(relation.confidence, weight),
267
+ weight,
212
268
  rationale: relation.rationale
213
269
  });
214
270
  }
@@ -257,6 +313,7 @@ var createEvidenceProjection = defineProjection({
257
313
  linkedBeliefNodeId,
258
314
  evidenceRelation,
259
315
  confidence,
316
+ weight,
260
317
  beliefRelations: beliefRelations && beliefRelations.length > 0 ? beliefRelations : void 0,
261
318
  rationale: input.rationale,
262
319
  trustedBypassAccessCheck: input.trustedBypassAccessCheck ?? true
@@ -286,12 +343,14 @@ var createEvidenceProjection = defineProjection({
286
343
  v.literal("contradicts")
287
344
  )
288
345
  ),
346
+ weight: v.optional(v.number()),
289
347
  beliefRelations: v.optional(
290
348
  v.array(
291
349
  v.object({
292
350
  beliefNodeId: v.string(),
293
351
  relation: v.union(v.literal("supports"), v.literal("contradicts")),
294
352
  confidence: v.optional(v.number()),
353
+ weight: v.number(),
295
354
  rationale: v.optional(v.string())
296
355
  })
297
356
  )