@lucern/contracts 0.3.0-alpha.4 → 0.3.0-alpha.6

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 (143) hide show
  1. package/dist/edge-policy-manifest-DpmTtjmm.d.ts +132 -0
  2. package/dist/function-registry/beliefs.js +72 -0
  3. package/dist/function-registry/beliefs.js.map +1 -1
  4. package/dist/function-registry/coding.js +72 -0
  5. package/dist/function-registry/coding.js.map +1 -1
  6. package/dist/function-registry/context.js +72 -0
  7. package/dist/function-registry/context.js.map +1 -1
  8. package/dist/function-registry/contracts.js +72 -0
  9. package/dist/function-registry/contracts.js.map +1 -1
  10. package/dist/function-registry/coordination.js +72 -0
  11. package/dist/function-registry/coordination.js.map +1 -1
  12. package/dist/function-registry/edges.js +72 -0
  13. package/dist/function-registry/edges.js.map +1 -1
  14. package/dist/function-registry/evidence.js +72 -0
  15. package/dist/function-registry/evidence.js.map +1 -1
  16. package/dist/function-registry/graph.d.ts +78 -0
  17. package/dist/function-registry/graph.js +129 -0
  18. package/dist/function-registry/graph.js.map +1 -1
  19. package/dist/function-registry/helpers.d.ts +1 -1
  20. package/dist/function-registry/helpers.js +72 -0
  21. package/dist/function-registry/helpers.js.map +1 -1
  22. package/dist/function-registry/identity.js +72 -0
  23. package/dist/function-registry/identity.js.map +1 -1
  24. package/dist/function-registry/index.d.ts +1 -1
  25. package/dist/function-registry/index.js +72 -0
  26. package/dist/function-registry/index.js.map +1 -1
  27. package/dist/function-registry/judgments.js +72 -0
  28. package/dist/function-registry/judgments.js.map +1 -1
  29. package/dist/function-registry/legacy.js +72 -0
  30. package/dist/function-registry/legacy.js.map +1 -1
  31. package/dist/function-registry/lenses.js +72 -0
  32. package/dist/function-registry/lenses.js.map +1 -1
  33. package/dist/function-registry/manifest.d.ts +3 -3
  34. package/dist/function-registry/manifest.js +2 -0
  35. package/dist/function-registry/manifest.js.map +1 -1
  36. package/dist/function-registry/ontologies.js +72 -0
  37. package/dist/function-registry/ontologies.js.map +1 -1
  38. package/dist/function-registry/pipeline.js +72 -0
  39. package/dist/function-registry/pipeline.js.map +1 -1
  40. package/dist/function-registry/questions.js +72 -0
  41. package/dist/function-registry/questions.js.map +1 -1
  42. package/dist/function-registry/tasks.js +72 -0
  43. package/dist/function-registry/tasks.js.map +1 -1
  44. package/dist/function-registry/topics.js +72 -0
  45. package/dist/function-registry/topics.js.map +1 -1
  46. package/dist/function-registry/types.d.ts +1 -1
  47. package/dist/function-registry/worktrees.js +72 -0
  48. package/dist/function-registry/worktrees.js.map +1 -1
  49. package/dist/generated/convexSchemas.js +1 -1
  50. package/dist/generated/convexSchemas.js.map +1 -1
  51. package/dist/graph-intelligence.contract.d.ts +506 -0
  52. package/dist/graph-intelligence.contract.js +595 -0
  53. package/dist/graph-intelligence.contract.js.map +1 -0
  54. package/dist/graph-types/index.d.ts +5 -1
  55. package/dist/graph-types/index.js +15 -4
  56. package/dist/graph-types/index.js.map +1 -1
  57. package/dist/{index-CV-0_VWJ.d.ts → index-O09U2xHk.d.ts} +5 -2
  58. package/dist/index.d.ts +18 -817
  59. package/dist/index.js +744 -10
  60. package/dist/index.js.map +1 -1
  61. package/dist/infisical-runtime.contract.js +120 -0
  62. package/dist/infisical-runtime.contract.js.map +1 -1
  63. package/dist/manifests/edge-policy-manifest.d.ts +2 -0
  64. package/dist/manifests/edge-policy-manifest.data.d.ts +27 -0
  65. package/dist/manifests/edge-policy-manifest.data.js +34 -0
  66. package/dist/manifests/edge-policy-manifest.data.js.map +1 -0
  67. package/dist/manifests/edge-policy-manifest.js +65 -0
  68. package/dist/manifests/edge-policy-manifest.js.map +1 -0
  69. package/dist/manifests/infisical-runtime-manifest.d.ts +151 -0
  70. package/dist/manifests/infisical-runtime-manifest.js +311 -0
  71. package/dist/manifests/infisical-runtime-manifest.js.map +1 -0
  72. package/dist/manifests/invariant-manifest.d.ts +65 -0
  73. package/dist/manifests/invariant-manifest.js +18 -0
  74. package/dist/manifests/invariant-manifest.js.map +1 -0
  75. package/dist/manifests/invariants/ast-utils.d.ts +14 -0
  76. package/dist/manifests/invariants/ast-utils.js +54 -0
  77. package/dist/manifests/invariants/ast-utils.js.map +1 -0
  78. package/dist/manifests/invariants/index.d.ts +15 -0
  79. package/dist/manifests/invariants/index.js +183 -0
  80. package/dist/manifests/invariants/index.js.map +1 -0
  81. package/dist/manifests/invariants/inv-1-beliefs-append-only.d.ts +12 -0
  82. package/dist/manifests/invariants/inv-1-beliefs-append-only.js +94 -0
  83. package/dist/manifests/invariants/inv-1-beliefs-append-only.js.map +1 -0
  84. package/dist/manifests/invariants/inv-14-no-silent-transitions.d.ts +12 -0
  85. package/dist/manifests/invariants/inv-14-no-silent-transitions.js +99 -0
  86. package/dist/manifests/invariants/inv-14-no-silent-transitions.js.map +1 -0
  87. package/dist/manifests/invariants/manifest-1-projections-declare-audit.d.ts +12 -0
  88. package/dist/manifests/invariants/manifest-1-projections-declare-audit.js +42 -0
  89. package/dist/manifests/invariants/manifest-1-projections-declare-audit.js.map +1 -0
  90. package/dist/manifests/tenant-client-manifest.d.ts +303 -0
  91. package/dist/manifests/tenant-client-manifest.js +409 -0
  92. package/dist/manifests/tenant-client-manifest.js.map +1 -0
  93. package/dist/projections/check-convex-args-shape.d.ts +3 -0
  94. package/dist/projections/check-convex-args-shape.js +396 -0
  95. package/dist/projections/check-convex-args-shape.js.map +1 -0
  96. package/dist/projections/create-evidence.projection.d.ts +176 -0
  97. package/dist/projections/create-evidence.projection.js +128 -0
  98. package/dist/projections/create-evidence.projection.js.map +1 -0
  99. package/dist/projections/index.d.ts +102 -0
  100. package/dist/projections/index.js +345 -0
  101. package/dist/projections/index.js.map +1 -0
  102. package/dist/projections/list-beliefs.projection.d.ts +36 -0
  103. package/dist/projections/list-beliefs.projection.js +54 -0
  104. package/dist/projections/list-beliefs.projection.js.map +1 -0
  105. package/dist/projections/list-tasks.projection.d.ts +32 -0
  106. package/dist/projections/list-tasks.projection.js +52 -0
  107. package/dist/projections/list-tasks.projection.js.map +1 -0
  108. package/dist/projections/modulate-confidence.projection.d.ts +219 -0
  109. package/dist/projections/modulate-confidence.projection.js +148 -0
  110. package/dist/projections/modulate-confidence.projection.js.map +1 -0
  111. package/dist/projections/projection-dsl.d.ts +11 -0
  112. package/dist/projections/projection-dsl.js +8 -0
  113. package/dist/projections/projection-dsl.js.map +1 -0
  114. package/dist/schemas/enums.d.ts +5 -2
  115. package/dist/schemas/enums.js +5 -2
  116. package/dist/schemas/enums.js.map +1 -1
  117. package/dist/schemas/index.d.ts +1 -1
  118. package/dist/schemas/index.js +6 -3
  119. package/dist/schemas/index.js.map +1 -1
  120. package/dist/schemas/manifest.d.ts +15 -15
  121. package/dist/schemas/manifest.js +5 -2
  122. package/dist/schemas/manifest.js.map +1 -1
  123. package/dist/schemas/tables/kernel/intelligence.d.ts +2 -2
  124. package/dist/schemas/tables/kernel/spine.d.ts +1 -1
  125. package/dist/schemas/tables/kernel/spine.js +5 -2
  126. package/dist/schemas/tables/kernel/spine.js.map +1 -1
  127. package/dist/schemas/tables/kernel/topic.js +4 -1
  128. package/dist/schemas/tables/kernel/topic.js.map +1 -1
  129. package/dist/{sdk-tools.contract-CD-N1Jf7.d.ts → sdk-tools.contract-Ng8ULxjr.d.ts} +1 -1
  130. package/dist/sdk-tools.contract.d.ts +2 -2
  131. package/dist/sdk-tools.contract.js +70 -0
  132. package/dist/sdk-tools.contract.js.map +1 -1
  133. package/dist/tenant-bootstrap-seed.contract.d.ts +12 -8
  134. package/dist/tenant-bootstrap-seed.contract.js +6 -4
  135. package/dist/tenant-bootstrap-seed.contract.js.map +1 -1
  136. package/dist/tenant-client.contract.d.ts +69 -5
  137. package/dist/tenant-client.contract.js +65 -4
  138. package/dist/tenant-client.contract.js.map +1 -1
  139. package/dist/{tool-contracts-BcKz-VGj.d.ts → tool-contracts-CYXVPN4K.d.ts} +6 -2
  140. package/dist/tool-contracts.d.ts +1 -1
  141. package/dist/tool-contracts.js +71 -1
  142. package/dist/tool-contracts.js.map +1 -1
  143. package/package.json +9 -1
@@ -0,0 +1,128 @@
1
+ import { v } from 'convex/values';
2
+ import { z } from 'zod';
3
+
4
+ // src/projections/create-evidence.projection.ts
5
+
6
+ // src/projections/projection-dsl.ts
7
+ function defineProjection(def) {
8
+ return def;
9
+ }
10
+
11
+ // src/projections/create-evidence.projection.ts
12
+ var jsonRecordSchema = z.record(z.unknown());
13
+ var createEvidenceInputSchemaBase = z.object({
14
+ projectId: z.string().optional(),
15
+ topicId: z.string().optional(),
16
+ text: z.string().optional(),
17
+ canonicalText: z.string().optional(),
18
+ title: z.string().optional(),
19
+ content: z.string().optional(),
20
+ contentType: z.string().optional(),
21
+ kind: z.string().optional(),
22
+ tags: z.array(z.string()).optional(),
23
+ source: z.string().optional(),
24
+ sourceUrl: z.string().optional(),
25
+ sourceType: z.string().optional(),
26
+ externalSourceType: z.string().optional(),
27
+ sourceQuestionId: z.string().optional(),
28
+ methodology: z.string().optional(),
29
+ informationAsymmetry: z.string().optional(),
30
+ sourceDescription: z.string().optional(),
31
+ targetId: z.string().optional(),
32
+ targetNodeId: z.string().optional(),
33
+ linkedBeliefNodeId: z.string().optional(),
34
+ evidenceRelation: z.enum(["supports", "contradicts", "neutral"]).optional(),
35
+ confidence: z.number().optional(),
36
+ weight: z.number().optional(),
37
+ reasoning: z.string().optional(),
38
+ rationale: z.string(),
39
+ metadata: jsonRecordSchema.optional(),
40
+ trustedBypassAccessCheck: z.boolean().optional()
41
+ }).passthrough();
42
+ var createEvidenceInputSchema = createEvidenceInputSchemaBase.refine(
43
+ (input) => Boolean(input.text ?? input.canonicalText),
44
+ {
45
+ message: "create_evidence requires text",
46
+ path: ["text"]
47
+ }
48
+ );
49
+ function compactRecord(input) {
50
+ return Object.fromEntries(
51
+ Object.entries(input).filter(([, value]) => value !== void 0)
52
+ );
53
+ }
54
+ function recordValue(value) {
55
+ return value && typeof value === "object" && !Array.isArray(value) ? value : {};
56
+ }
57
+ var createEvidenceProjection = defineProjection({
58
+ contractName: "create_evidence",
59
+ inputSchema: createEvidenceInputSchema,
60
+ project: (input) => {
61
+ const text = input.text ?? input.canonicalText;
62
+ const weight = typeof input.weight === "number" ? input.weight : void 0;
63
+ return compactRecord({
64
+ projectId: input.projectId,
65
+ topicId: input.topicId,
66
+ text,
67
+ title: input.title ?? text,
68
+ content: input.content ?? text,
69
+ contentType: input.contentType,
70
+ kind: input.kind,
71
+ tags: input.tags,
72
+ sourceType: input.sourceType,
73
+ externalSourceType: input.externalSourceType,
74
+ sourceUrl: input.sourceUrl ?? input.source,
75
+ sourceQuestionId: input.sourceQuestionId,
76
+ methodology: input.methodology,
77
+ informationAsymmetry: input.informationAsymmetry,
78
+ sourceDescription: input.sourceDescription,
79
+ metadata: compactRecord({
80
+ ...recordValue(input.metadata),
81
+ source: input.source,
82
+ targetId: input.targetId,
83
+ targetNodeId: input.targetNodeId,
84
+ weight,
85
+ reasoning: input.reasoning,
86
+ rationale: input.rationale
87
+ }),
88
+ linkedBeliefNodeId: input.linkedBeliefNodeId ?? input.targetNodeId ?? input.targetId,
89
+ evidenceRelation: input.evidenceRelation ?? (weight === void 0 ? void 0 : weight < 0 ? "contradicts" : "supports"),
90
+ confidence: input.confidence ?? (weight === void 0 ? void 0 : Math.min(1, Math.max(0, Math.abs(weight)))),
91
+ rationale: input.rationale,
92
+ trustedBypassAccessCheck: input.trustedBypassAccessCheck ?? true
93
+ });
94
+ },
95
+ convexArgsValidator: v.object({
96
+ projectId: v.optional(v.string()),
97
+ topicId: v.optional(v.string()),
98
+ text: v.string(),
99
+ title: v.optional(v.string()),
100
+ content: v.optional(v.string()),
101
+ contentType: v.optional(v.string()),
102
+ kind: v.optional(v.string()),
103
+ tags: v.optional(v.array(v.string())),
104
+ sourceType: v.optional(v.string()),
105
+ externalSourceType: v.optional(v.string()),
106
+ sourceUrl: v.optional(v.string()),
107
+ sourceQuestionId: v.optional(v.string()),
108
+ methodology: v.optional(v.string()),
109
+ informationAsymmetry: v.optional(v.string()),
110
+ sourceDescription: v.optional(v.string()),
111
+ metadata: v.optional(v.record(v.string(), v.any())),
112
+ linkedBeliefNodeId: v.optional(v.string()),
113
+ evidenceRelation: v.optional(
114
+ v.union(
115
+ v.literal("supports"),
116
+ v.literal("contradicts"),
117
+ v.literal("neutral")
118
+ )
119
+ ),
120
+ confidence: v.optional(v.number()),
121
+ rationale: v.string(),
122
+ trustedBypassAccessCheck: v.optional(v.boolean())
123
+ })
124
+ });
125
+
126
+ export { createEvidenceInputSchema, createEvidenceProjection };
127
+ //# sourceMappingURL=create-evidence.projection.js.map
128
+ //# sourceMappingURL=create-evidence.projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/projections/projection-dsl.ts","../../src/projections/create-evidence.projection.ts"],"names":[],"mappings":"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","file":"create-evidence.projection.js","sourcesContent":["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 { defineProjection } from \"./projection-dsl.js\";\n\nconst jsonRecordSchema = z.record(z.unknown());\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: z.enum([\"supports\", \"contradicts\", \"neutral\"]).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\nexport const createEvidenceInputSchema = createEvidenceInputSchemaBase.refine(\n (input) => Boolean(input.text ?? input.canonicalText),\n {\n message: \"create_evidence requires text\",\n path: [\"text\"],\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 recordValue(value: unknown): Record<string, unknown> {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? (value as Record<string, unknown>)\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\n return compactRecord({\n projectId: input.projectId,\n topicId: 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 weight,\n reasoning: input.reasoning,\n rationale: input.rationale,\n }),\n linkedBeliefNodeId:\n input.linkedBeliefNodeId ?? input.targetNodeId ?? input.targetId,\n evidenceRelation:\n input.evidenceRelation ??\n (weight === undefined\n ? undefined\n : weight < 0\n ? \"contradicts\"\n : \"supports\"),\n confidence:\n input.confidence ??\n (weight === undefined\n ? undefined\n : Math.min(1, Math.max(0, Math.abs(weight)))),\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 v.literal(\"neutral\"),\n ),\n ),\n confidence: v.optional(v.number()),\n rationale: v.string(),\n trustedBypassAccessCheck: v.optional(v.boolean()),\n }),\n});\n"]}
@@ -0,0 +1,102 @@
1
+ import { ProjectionDef } from './projection-dsl.js';
2
+ export { defineProjection } from './projection-dsl.js';
3
+ import * as zod from 'zod';
4
+ export { createEvidenceProjection } from './create-evidence.projection.js';
5
+ export { listBeliefsProjection } from './list-beliefs.projection.js';
6
+ export { listTasksProjection } from './list-tasks.projection.js';
7
+ export { modulateConfidenceProjection } from './modulate-confidence.projection.js';
8
+
9
+ declare const projections: {
10
+ readonly create_evidence: ProjectionDef<zod.objectInputType<{
11
+ projectId: zod.ZodOptional<zod.ZodString>;
12
+ topicId: zod.ZodOptional<zod.ZodString>;
13
+ text: zod.ZodOptional<zod.ZodString>;
14
+ canonicalText: zod.ZodOptional<zod.ZodString>;
15
+ title: zod.ZodOptional<zod.ZodString>;
16
+ content: zod.ZodOptional<zod.ZodString>;
17
+ contentType: zod.ZodOptional<zod.ZodString>;
18
+ kind: zod.ZodOptional<zod.ZodString>;
19
+ tags: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
20
+ source: zod.ZodOptional<zod.ZodString>;
21
+ sourceUrl: zod.ZodOptional<zod.ZodString>;
22
+ sourceType: zod.ZodOptional<zod.ZodString>;
23
+ externalSourceType: zod.ZodOptional<zod.ZodString>;
24
+ sourceQuestionId: zod.ZodOptional<zod.ZodString>;
25
+ methodology: zod.ZodOptional<zod.ZodString>;
26
+ informationAsymmetry: zod.ZodOptional<zod.ZodString>;
27
+ sourceDescription: zod.ZodOptional<zod.ZodString>;
28
+ targetId: zod.ZodOptional<zod.ZodString>;
29
+ targetNodeId: zod.ZodOptional<zod.ZodString>;
30
+ linkedBeliefNodeId: zod.ZodOptional<zod.ZodString>;
31
+ evidenceRelation: zod.ZodOptional<zod.ZodEnum<["supports", "contradicts", "neutral"]>>;
32
+ confidence: zod.ZodOptional<zod.ZodNumber>;
33
+ weight: zod.ZodOptional<zod.ZodNumber>;
34
+ reasoning: zod.ZodOptional<zod.ZodString>;
35
+ rationale: zod.ZodString;
36
+ metadata: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
37
+ trustedBypassAccessCheck: zod.ZodOptional<zod.ZodBoolean>;
38
+ }, zod.ZodTypeAny, "passthrough">, Record<string, unknown>>;
39
+ readonly list_beliefs: ProjectionDef<{
40
+ topicId: string;
41
+ status?: "active" | "archived" | "unscored" | "scored" | "superseded" | undefined;
42
+ worktreeId?: string | undefined;
43
+ limit?: number | undefined;
44
+ minConfidence?: number | undefined;
45
+ includeEdgeAssociated?: boolean | undefined;
46
+ }, Record<string, unknown>>;
47
+ readonly list_tasks: ProjectionDef<{
48
+ topicId: string;
49
+ status?: "todo" | "in_progress" | "blocked" | "done" | undefined;
50
+ worktreeId?: string | undefined;
51
+ limit?: number | undefined;
52
+ linkedWorktreeId?: string | undefined;
53
+ }, Record<string, unknown>>;
54
+ readonly modulate_confidence: ProjectionDef<{
55
+ rationale: string;
56
+ trigger: "evidence_added" | "evidence_removed" | "contradiction_detected" | "contradiction_resolved" | "agent_assessment" | "worktree_outcome" | "worktree_completed" | "fusion" | "discount" | "deduction" | "answer_recorded" | "backfill_synthetic";
57
+ belief?: number | undefined;
58
+ baseRate?: number | undefined;
59
+ nodeId?: string | undefined;
60
+ disbelief?: number | undefined;
61
+ uncertainty?: number | undefined;
62
+ worktreeId?: string | undefined;
63
+ triggeringEvidenceId?: string | undefined;
64
+ triggeringQuestionId?: string | undefined;
65
+ triggeringAnswerId?: string | undefined;
66
+ triggeringContradictionId?: string | undefined;
67
+ triggeringWorktreeId?: string | undefined;
68
+ beliefNodeId?: string | undefined;
69
+ trustedBypassAccessCheck?: boolean | undefined;
70
+ opinion?: {
71
+ belief: number;
72
+ baseRate: number;
73
+ disbelief: number;
74
+ uncertainty: number;
75
+ } | undefined;
76
+ provenance?: {
77
+ evidence?: string | undefined;
78
+ question?: string | undefined;
79
+ contradiction?: string | undefined;
80
+ worktree?: string | undefined;
81
+ answer?: string | undefined;
82
+ } | undefined;
83
+ }, {
84
+ nodeId: string;
85
+ worktreeId: string | undefined;
86
+ belief: number;
87
+ disbelief: number;
88
+ uncertainty: number;
89
+ baseRate: number;
90
+ trigger: "evidence_added" | "evidence_removed" | "contradiction_detected" | "contradiction_resolved" | "agent_assessment" | "worktree_outcome" | "worktree_completed" | "fusion" | "discount" | "deduction" | "backfill_synthetic";
91
+ triggeringEvidenceId: string | undefined;
92
+ triggeringQuestionId: string | undefined;
93
+ triggeringAnswerId: string | undefined;
94
+ triggeringContradictionId: string | undefined;
95
+ triggeringWorktreeId: string | undefined;
96
+ rationale: string;
97
+ trustedBypassAccessCheck: boolean;
98
+ }>;
99
+ };
100
+ type ProjectionRegistry = typeof projections;
101
+
102
+ export { ProjectionDef, type ProjectionRegistry, projections };
@@ -0,0 +1,345 @@
1
+ import { v } from 'convex/values';
2
+ import { z } from 'zod';
3
+
4
+ // src/projections/create-evidence.projection.ts
5
+
6
+ // src/projections/projection-dsl.ts
7
+ function defineProjection(def) {
8
+ return def;
9
+ }
10
+
11
+ // src/projections/create-evidence.projection.ts
12
+ var jsonRecordSchema = z.record(z.unknown());
13
+ var createEvidenceInputSchemaBase = z.object({
14
+ projectId: z.string().optional(),
15
+ topicId: z.string().optional(),
16
+ text: z.string().optional(),
17
+ canonicalText: z.string().optional(),
18
+ title: z.string().optional(),
19
+ content: z.string().optional(),
20
+ contentType: z.string().optional(),
21
+ kind: z.string().optional(),
22
+ tags: z.array(z.string()).optional(),
23
+ source: z.string().optional(),
24
+ sourceUrl: z.string().optional(),
25
+ sourceType: z.string().optional(),
26
+ externalSourceType: z.string().optional(),
27
+ sourceQuestionId: z.string().optional(),
28
+ methodology: z.string().optional(),
29
+ informationAsymmetry: z.string().optional(),
30
+ sourceDescription: z.string().optional(),
31
+ targetId: z.string().optional(),
32
+ targetNodeId: z.string().optional(),
33
+ linkedBeliefNodeId: z.string().optional(),
34
+ evidenceRelation: z.enum(["supports", "contradicts", "neutral"]).optional(),
35
+ confidence: z.number().optional(),
36
+ weight: z.number().optional(),
37
+ reasoning: z.string().optional(),
38
+ rationale: z.string(),
39
+ metadata: jsonRecordSchema.optional(),
40
+ trustedBypassAccessCheck: z.boolean().optional()
41
+ }).passthrough();
42
+ var createEvidenceInputSchema = createEvidenceInputSchemaBase.refine(
43
+ (input) => Boolean(input.text ?? input.canonicalText),
44
+ {
45
+ message: "create_evidence requires text",
46
+ path: ["text"]
47
+ }
48
+ );
49
+ function compactRecord(input) {
50
+ return Object.fromEntries(
51
+ Object.entries(input).filter(([, value]) => value !== void 0)
52
+ );
53
+ }
54
+ function recordValue(value) {
55
+ return value && typeof value === "object" && !Array.isArray(value) ? value : {};
56
+ }
57
+ var createEvidenceProjection = defineProjection({
58
+ contractName: "create_evidence",
59
+ inputSchema: createEvidenceInputSchema,
60
+ project: (input) => {
61
+ const text = input.text ?? input.canonicalText;
62
+ const weight = typeof input.weight === "number" ? input.weight : void 0;
63
+ return compactRecord({
64
+ projectId: input.projectId,
65
+ topicId: input.topicId,
66
+ text,
67
+ title: input.title ?? text,
68
+ content: input.content ?? text,
69
+ contentType: input.contentType,
70
+ kind: input.kind,
71
+ tags: input.tags,
72
+ sourceType: input.sourceType,
73
+ externalSourceType: input.externalSourceType,
74
+ sourceUrl: input.sourceUrl ?? input.source,
75
+ sourceQuestionId: input.sourceQuestionId,
76
+ methodology: input.methodology,
77
+ informationAsymmetry: input.informationAsymmetry,
78
+ sourceDescription: input.sourceDescription,
79
+ metadata: compactRecord({
80
+ ...recordValue(input.metadata),
81
+ source: input.source,
82
+ targetId: input.targetId,
83
+ targetNodeId: input.targetNodeId,
84
+ weight,
85
+ reasoning: input.reasoning,
86
+ rationale: input.rationale
87
+ }),
88
+ linkedBeliefNodeId: input.linkedBeliefNodeId ?? input.targetNodeId ?? input.targetId,
89
+ evidenceRelation: input.evidenceRelation ?? (weight === void 0 ? void 0 : weight < 0 ? "contradicts" : "supports"),
90
+ confidence: input.confidence ?? (weight === void 0 ? void 0 : Math.min(1, Math.max(0, Math.abs(weight)))),
91
+ rationale: input.rationale,
92
+ trustedBypassAccessCheck: input.trustedBypassAccessCheck ?? true
93
+ });
94
+ },
95
+ convexArgsValidator: v.object({
96
+ projectId: v.optional(v.string()),
97
+ topicId: v.optional(v.string()),
98
+ text: v.string(),
99
+ title: v.optional(v.string()),
100
+ content: v.optional(v.string()),
101
+ contentType: v.optional(v.string()),
102
+ kind: v.optional(v.string()),
103
+ tags: v.optional(v.array(v.string())),
104
+ sourceType: v.optional(v.string()),
105
+ externalSourceType: v.optional(v.string()),
106
+ sourceUrl: v.optional(v.string()),
107
+ sourceQuestionId: v.optional(v.string()),
108
+ methodology: v.optional(v.string()),
109
+ informationAsymmetry: v.optional(v.string()),
110
+ sourceDescription: v.optional(v.string()),
111
+ metadata: v.optional(v.record(v.string(), v.any())),
112
+ linkedBeliefNodeId: v.optional(v.string()),
113
+ evidenceRelation: v.optional(
114
+ v.union(
115
+ v.literal("supports"),
116
+ v.literal("contradicts"),
117
+ v.literal("neutral")
118
+ )
119
+ ),
120
+ confidence: v.optional(v.number()),
121
+ rationale: v.string(),
122
+ trustedBypassAccessCheck: v.optional(v.boolean())
123
+ })
124
+ });
125
+ var beliefStatusSchema = z.enum(["active", "superseded", "archived", "unscored", "scored"]).optional().describe("Filter by belief lifecycle or scoring status");
126
+ var listBeliefsInputSchema = z.object({
127
+ topicId: z.string().describe("Topic scope"),
128
+ worktreeId: z.string().optional().describe("Filter to worktree scope"),
129
+ status: beliefStatusSchema,
130
+ minConfidence: z.number().optional().describe("Minimum confidence threshold"),
131
+ limit: z.number().optional().describe("Maximum results"),
132
+ includeEdgeAssociated: z.boolean().optional().describe("Include beliefs associated to the topic through edges")
133
+ });
134
+ function kernelStatus(status) {
135
+ return status === "active" || status === "superseded" || status === "archived" ? status : void 0;
136
+ }
137
+ function compactRecord2(input) {
138
+ return Object.fromEntries(
139
+ Object.entries(input).filter(([, value]) => value !== void 0)
140
+ );
141
+ }
142
+ var listBeliefsProjection = defineProjection({
143
+ contractName: "list_beliefs",
144
+ inputSchema: listBeliefsInputSchema,
145
+ project: (input) => compactRecord2({
146
+ topicId: input.topicId,
147
+ status: kernelStatus(input.status),
148
+ limit: input.limit,
149
+ includeEdgeAssociated: input.includeEdgeAssociated
150
+ }),
151
+ convexArgsValidator: v.object({
152
+ topicId: v.string(),
153
+ status: v.optional(
154
+ v.union(
155
+ v.literal("active"),
156
+ v.literal("superseded"),
157
+ v.literal("archived")
158
+ )
159
+ ),
160
+ limit: v.optional(v.number()),
161
+ includeEdgeAssociated: v.optional(v.boolean())
162
+ })
163
+ });
164
+ var taskStatusSchema = z.enum(["todo", "in_progress", "blocked", "done"]).optional().describe("Filter by task status");
165
+ var listTasksInputSchema = z.object({
166
+ topicId: z.string().describe("Topic scope"),
167
+ worktreeId: z.string().optional().describe("Alias for linkedWorktreeId"),
168
+ linkedWorktreeId: z.string().optional().describe("Filter to tasks linked to this worktree"),
169
+ status: taskStatusSchema,
170
+ limit: z.number().optional().describe("Maximum results")
171
+ });
172
+ function compactRecord3(input) {
173
+ return Object.fromEntries(
174
+ Object.entries(input).filter(([, value]) => value !== void 0)
175
+ );
176
+ }
177
+ var listTasksProjection = defineProjection({
178
+ contractName: "list_tasks",
179
+ inputSchema: listTasksInputSchema,
180
+ project: (input) => compactRecord3({
181
+ topicId: input.topicId,
182
+ status: input.status,
183
+ userId: void 0,
184
+ limit: input.limit,
185
+ linkedWorktreeId: input.linkedWorktreeId ?? input.worktreeId
186
+ }),
187
+ convexArgsValidator: v.object({
188
+ topicId: v.string(),
189
+ status: v.optional(
190
+ v.union(
191
+ v.literal("todo"),
192
+ v.literal("in_progress"),
193
+ v.literal("blocked"),
194
+ v.literal("done")
195
+ )
196
+ ),
197
+ limit: v.optional(v.number()),
198
+ linkedWorktreeId: v.optional(v.string())
199
+ })
200
+ });
201
+ var confidenceTriggerSchema = z.enum([
202
+ "evidence_added",
203
+ "evidence_removed",
204
+ "contradiction_resolved",
205
+ "agent_assessment",
206
+ "worktree_outcome",
207
+ "worktree_completed",
208
+ "contradiction_detected",
209
+ "answer_recorded",
210
+ "fusion",
211
+ "discount",
212
+ "deduction",
213
+ "backfill_synthetic"
214
+ ]);
215
+ var provenanceSchema = z.object({
216
+ evidence: z.string().optional(),
217
+ question: z.string().optional(),
218
+ answer: z.string().optional(),
219
+ contradiction: z.string().optional(),
220
+ worktree: z.string().optional()
221
+ });
222
+ var slOpinionProjectionSchema = z.object({
223
+ belief: z.number(),
224
+ disbelief: z.number(),
225
+ uncertainty: z.number(),
226
+ baseRate: z.number()
227
+ });
228
+ var modulateConfidenceInputObjectSchema = z.object({
229
+ nodeId: z.string().optional(),
230
+ beliefNodeId: z.string().optional(),
231
+ worktreeId: z.string().optional(),
232
+ opinion: slOpinionProjectionSchema.optional(),
233
+ belief: z.number().optional(),
234
+ disbelief: z.number().optional(),
235
+ uncertainty: z.number().optional(),
236
+ baseRate: z.number().optional(),
237
+ trigger: confidenceTriggerSchema,
238
+ provenance: provenanceSchema.optional(),
239
+ triggeringEvidenceId: z.string().optional(),
240
+ triggeringQuestionId: z.string().optional(),
241
+ triggeringAnswerId: z.string().optional(),
242
+ triggeringContradictionId: z.string().optional(),
243
+ triggeringWorktreeId: z.string().optional(),
244
+ rationale: z.string(),
245
+ trustedBypassAccessCheck: z.boolean().optional()
246
+ });
247
+ var modulateConfidenceInputSchema = modulateConfidenceInputObjectSchema.superRefine((input, ctx) => {
248
+ if (hasProvenance(input)) {
249
+ return;
250
+ }
251
+ ctx.addIssue({
252
+ code: z.ZodIssueCode.custom,
253
+ message: "modulate_confidence requires evidence, question, answer, contradiction, or worktree provenance",
254
+ path: ["provenance"]
255
+ });
256
+ });
257
+ var modulateConfidenceProjection = defineProjection({
258
+ contractName: "modulate_confidence",
259
+ inputSchema: modulateConfidenceInputSchema,
260
+ project: (input) => {
261
+ const nodeId = input.beliefNodeId ?? input.nodeId;
262
+ if (!nodeId) {
263
+ throw new Error("modulate_confidence requires beliefNodeId or nodeId");
264
+ }
265
+ const opinion = input.opinion ?? {
266
+ belief: requireNumber(input.belief, "belief"),
267
+ disbelief: requireNumber(input.disbelief, "disbelief"),
268
+ uncertainty: requireNumber(input.uncertainty, "uncertainty"),
269
+ baseRate: requireNumber(input.baseRate, "baseRate")
270
+ };
271
+ assertProvenance(input);
272
+ return {
273
+ nodeId,
274
+ worktreeId: input.worktreeId,
275
+ belief: opinion.belief,
276
+ disbelief: opinion.disbelief,
277
+ uncertainty: opinion.uncertainty,
278
+ baseRate: opinion.baseRate,
279
+ trigger: input.trigger === "answer_recorded" ? "agent_assessment" : input.trigger,
280
+ triggeringEvidenceId: input.provenance?.evidence ?? input.triggeringEvidenceId,
281
+ triggeringQuestionId: input.provenance?.question ?? input.triggeringQuestionId,
282
+ triggeringAnswerId: input.provenance?.answer ?? input.triggeringAnswerId,
283
+ triggeringContradictionId: input.provenance?.contradiction ?? input.triggeringContradictionId,
284
+ triggeringWorktreeId: input.provenance?.worktree ?? input.triggeringWorktreeId,
285
+ rationale: input.rationale,
286
+ trustedBypassAccessCheck: input.trustedBypassAccessCheck ?? true
287
+ };
288
+ },
289
+ convexArgsValidator: v.object({
290
+ nodeId: v.string(),
291
+ worktreeId: v.optional(v.string()),
292
+ belief: v.number(),
293
+ disbelief: v.number(),
294
+ uncertainty: v.number(),
295
+ baseRate: v.number(),
296
+ trigger: v.union(
297
+ v.literal("evidence_added"),
298
+ v.literal("evidence_removed"),
299
+ v.literal("worktree_completed"),
300
+ v.literal("contradiction_detected"),
301
+ v.literal("contradiction_resolved"),
302
+ v.literal("agent_assessment"),
303
+ v.literal("worktree_outcome"),
304
+ v.literal("fusion"),
305
+ v.literal("discount"),
306
+ v.literal("deduction"),
307
+ v.literal("backfill_synthetic")
308
+ ),
309
+ triggeringEvidenceId: v.optional(v.string()),
310
+ triggeringQuestionId: v.optional(v.string()),
311
+ triggeringAnswerId: v.optional(v.string()),
312
+ triggeringContradictionId: v.optional(v.string()),
313
+ triggeringWorktreeId: v.optional(v.string()),
314
+ rationale: v.string(),
315
+ trustedBypassAccessCheck: v.optional(v.boolean())
316
+ })
317
+ });
318
+ function requireNumber(value, field) {
319
+ if (value === void 0) {
320
+ throw new Error(`modulate_confidence requires ${field}`);
321
+ }
322
+ return value;
323
+ }
324
+ function assertProvenance(input) {
325
+ if (!hasProvenance(input)) {
326
+ throw new Error(
327
+ "modulate_confidence requires evidence, question, answer, contradiction, or worktree provenance"
328
+ );
329
+ }
330
+ }
331
+ function hasProvenance(input) {
332
+ return input.trigger === "backfill_synthetic" || Boolean(input.provenance && Object.values(input.provenance).some(Boolean)) || Boolean(input.triggeringEvidenceId) || Boolean(input.triggeringQuestionId) || Boolean(input.triggeringAnswerId) || Boolean(input.triggeringContradictionId) || Boolean(input.triggeringWorktreeId);
333
+ }
334
+
335
+ // src/projections/index.ts
336
+ var projections = {
337
+ create_evidence: createEvidenceProjection,
338
+ list_beliefs: listBeliefsProjection,
339
+ list_tasks: listTasksProjection,
340
+ modulate_confidence: modulateConfidenceProjection
341
+ };
342
+
343
+ export { createEvidenceProjection, defineProjection, listBeliefsProjection, listTasksProjection, modulateConfidenceProjection, projections };
344
+ //# sourceMappingURL=index.js.map
345
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../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"],"names":["z","compactRecord","v"],"mappings":"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","file":"index.js","sourcesContent":["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 { defineProjection } from \"./projection-dsl.js\";\n\nconst jsonRecordSchema = z.record(z.unknown());\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: z.enum([\"supports\", \"contradicts\", \"neutral\"]).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\nexport const createEvidenceInputSchema = createEvidenceInputSchemaBase.refine(\n (input) => Boolean(input.text ?? input.canonicalText),\n {\n message: \"create_evidence requires text\",\n path: [\"text\"],\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 recordValue(value: unknown): Record<string, unknown> {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? (value as Record<string, unknown>)\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\n return compactRecord({\n projectId: input.projectId,\n topicId: 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 weight,\n reasoning: input.reasoning,\n rationale: input.rationale,\n }),\n linkedBeliefNodeId:\n input.linkedBeliefNodeId ?? input.targetNodeId ?? input.targetId,\n evidenceRelation:\n input.evidenceRelation ??\n (weight === undefined\n ? undefined\n : weight < 0\n ? \"contradicts\"\n : \"supports\"),\n confidence:\n input.confidence ??\n (weight === undefined\n ? undefined\n : Math.min(1, Math.max(0, Math.abs(weight)))),\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 v.literal(\"neutral\"),\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.object({\n topicId: z.string().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\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.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"]}