@codraoss/schema 0.9.5 → 0.9.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api.d.ts +1 -4
- package/dist/api.js.map +1 -1
- package/dist/hex.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +0 -7
- package/dist/index.js.map +1 -1
- package/dist/{schema-ByVA-xcD.d.ts → schema-CzfrGYnV.d.ts} +3 -3
- package/package.json +3 -40
package/dist/api.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { J as JobDetail, a as JobSummary, L as LlmProvider, M as ModelConfig, R as RepoConfigRecord, S as StatsPayload } from './schema-
|
|
1
|
+
import { J as JobDetail, a as JobSummary, L as LlmProvider, M as ModelConfig, R as RepoConfigRecord, S as StatsPayload } from './schema-CzfrGYnV.js';
|
|
2
2
|
import 'zod';
|
|
3
3
|
|
|
4
4
|
type AuthSessionUser = {
|
|
@@ -40,9 +40,6 @@ type UpdatesEmailResponse = {
|
|
|
40
40
|
type JobDetailResponse = {
|
|
41
41
|
job: JobDetail;
|
|
42
42
|
};
|
|
43
|
-
/** Per-file reconstructed diff/prompt text, fetched on demand (see GET /api/jobs/:id/diffs) --
|
|
44
|
-
diff_input isn't persisted in Postgres, so this comes from KV or a fresh GitHub fetch. Files
|
|
45
|
-
with no entry are unavailable (e.g. the underlying commits are gone). */
|
|
46
43
|
type JobDiffsResponse = {
|
|
47
44
|
diffs: Record<string, string>;
|
|
48
45
|
};
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/api.ts"],"sourcesContent":["import type { JobDetail, JobSummary, RepoConfigRecord, StatsPayload } from './schema';\n\nexport type AuthSessionUser = {\n githubUserId: number;\n login: string;\n name: string | null;\n avatarUrl: string | null;\n email: string | null;\n signedInAt: string;\n};\n\nexport type JobsResponse = {\n jobs: JobSummary[];\n total: number;\n};\n\nexport const apiActions = [\n 'jobs.read',\n 'jobs.retry',\n 'jobs.rerun',\n 'jobs.stop',\n 'jobs.delete',\n 'jobs.label',\n 'repos.read',\n 'repos.install',\n 'repos.sync',\n 'repos.config.write',\n 'models.read',\n 'models.sync',\n 'models.test',\n 'models.provider.create',\n 'models.provider.update',\n 'models.provider.delete',\n 'models.mapping.write',\n 'models.global.write',\n 'settings.read',\n 'settings.write',\n 'stats.read',\n 'account.write',\n 'account.updatesEmail.write',\n 'reviews.enqueue',\n] as const;\n\nexport type KnownApiAction = (typeof apiActions)[number];\n\
|
|
1
|
+
{"version":3,"sources":["../src/api.ts"],"sourcesContent":["import type { JobDetail, JobSummary, RepoConfigRecord, StatsPayload } from './schema';\n\nexport type AuthSessionUser = {\n githubUserId: number;\n login: string;\n name: string | null;\n avatarUrl: string | null;\n email: string | null;\n signedInAt: string;\n};\n\nexport type JobsResponse = {\n jobs: JobSummary[];\n total: number;\n};\n\nexport const apiActions = [\n 'jobs.read',\n 'jobs.retry',\n 'jobs.rerun',\n 'jobs.stop',\n 'jobs.delete',\n 'jobs.label',\n 'repos.read',\n 'repos.install',\n 'repos.sync',\n 'repos.config.write',\n 'models.read',\n 'models.sync',\n 'models.test',\n 'models.provider.create',\n 'models.provider.update',\n 'models.provider.delete',\n 'models.mapping.write',\n 'models.global.write',\n 'settings.read',\n 'settings.write',\n 'stats.read',\n 'account.write',\n 'account.updatesEmail.write',\n 'reviews.enqueue',\n] as const;\n\nexport type KnownApiAction = (typeof apiActions)[number];\n\nexport type ApiAction = KnownApiAction | (string & {});\n\nexport type AuthSessionResponse = {\n user: AuthSessionUser;\n permissions?: string[];\n};\n\nexport type AccountSettings = {\n id: string;\n githubUserId: number;\n githubUsername: string;\n accountName: string | null;\n accountEmail: string | null;\n timezone: string | null;\n};\n\nexport type AccountResponse = {\n account: AccountSettings;\n};\n\nexport type UpdatesEmailStatus = 'pending' | 'subscribed';\n\nexport type UpdatesEmailResponse = {\n status: UpdatesEmailStatus;\n email: string | null;\n updatedAt: string | null;\n};\n\nexport type JobDetailResponse = {\n job: JobDetail;\n};\n\nexport type JobDiffsResponse = {\n diffs: Record<string, string>;\n};\n\nexport type RetryJobResponse = {\n job: JobSummary;\n};\n\nexport type RepoConfigsResponse = {\n repos: RepoConfigRecord[];\n};\n\nexport type RepoConfigResponse = {\n repo: RepoConfigRecord;\n};\n\nexport type StatsResponse = {\n stats: StatsPayload;\n};\n\nexport type SyncReposResponse = {\n ok: boolean;\n synced: string[];\n};\n\n\nexport type ModelConfigsResponse = {\n providers: import('./schema').LlmProvider[];\n configs: import('./schema').ModelConfig[];\n syncErrors?: Array<{ providerId: string; providerName: string; error: string }>;\n};\n"],"mappings":";AAgBO,IAAM,aAAa;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;","names":[]}
|
package/dist/hex.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hex.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../src/hex.ts"],"sourcesContent":["export function hexToBytes(hex: string) {\n const clean = hex.trim().toLowerCase();\n const bytes = new Uint8Array(clean.length / 2);\n\n for (let index = 0; index < clean.length; index += 2) {\n bytes[index / 2] = Number.parseInt(clean.slice(index, index + 2), 16);\n }\n\n return bytes;\n}\n\nexport function randomHex(size = 32) {\n const bytes = crypto.getRandomValues(new Uint8Array(size));\n return Array.from(bytes, (byte) => byte.toString(16).padStart(2, '0')).join('');\n}\n"],"mappings":";AAAO,SAAS,WAAW,KAAa;AACtC,QAAM,QAAQ,IAAI,KAAK,EAAE,YAAY;AACrC,QAAM,QAAQ,IAAI,WAAW,MAAM,SAAS,CAAC;AAE7C,WAAS,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS,GAAG;AACpD,UAAM,QAAQ,CAAC,IAAI,OAAO,SAAS,MAAM,MAAM,OAAO,QAAQ,CAAC,GAAG,EAAE;AAAA,EACtE;AAEA,SAAO;AACT;AAEO,SAAS,UAAU,OAAO,IAAI;AACnC,QAAM,QAAQ,OAAO,gBAAgB,IAAI,WAAW,IAAI,CAAC;AACzD,SAAO,MAAM,KAAK,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AAChF;","names":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { F as FileReviewRecord, J as JobDetail, b as JobStep, a as JobSummary, c as LlmApiFormat, L as LlmProvider, d as LlmProviderSecret, M as ModelConfig, P as ParsedReviewComment, R as RepoConfigRecord, e as ResolvedModelConfig, f as ReviewJobMessage, g as ReviewSettings, S as StatsPayload, h as batchReviewModelOutputSchema, i as fileReviewModelOutputSchema, j as findingLabelSchema, k as jobDetailSchema, l as jobStepSchema, m as jobSummarySchema, n as jobsQuerySchema, o as llmProviderSchema, p as modelConfigSchema, q as parsedReviewCommentSchema, r as repoConfigRecordSchema, s as reviewJobMessageSchema, t as reviewSettingsSchema, u as statsSchema } from './schema-
|
|
1
|
+
export { F as FileReviewRecord, J as JobDetail, b as JobStep, a as JobSummary, c as LlmApiFormat, L as LlmProvider, d as LlmProviderSecret, M as ModelConfig, P as ParsedReviewComment, R as RepoConfigRecord, e as ResolvedModelConfig, f as ReviewJobMessage, g as ReviewSettings, S as StatsPayload, h as batchReviewModelOutputSchema, i as fileReviewModelOutputSchema, j as findingLabelSchema, k as jobDetailSchema, l as jobStepSchema, m as jobSummarySchema, n as jobsQuerySchema, o as llmProviderSchema, p as modelConfigSchema, q as parsedReviewCommentSchema, r as repoConfigRecordSchema, s as reviewJobMessageSchema, t as reviewSettingsSchema, u as statsSchema } from './schema-CzfrGYnV.js';
|
|
2
2
|
export { REVIEW_CONCURRENCY_LIMITS, ReviewConcurrencyLevel, reviewConcurrencyLevels, reviewMaxCommentsOptions, reviewMaxFilesRange, reviewSeverities } from './review-limits.js';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
|
package/dist/index.js
CHANGED
|
@@ -145,14 +145,8 @@ var reviewConfigSchema = z.object({
|
|
|
145
145
|
large_file_threshold_lines: z.number().int().min(1).max(5e3).default(200),
|
|
146
146
|
max_diff_lines_per_file: z.number().int().min(1).max(5e3).default(800),
|
|
147
147
|
batch_small_files: z.boolean().default(true),
|
|
148
|
-
// Presentation cap: comments actually posted to the PR. Findings past this are still recorded
|
|
149
|
-
// (disposition 'cap') and shown on the dashboard; nothing upstream of posting should read it.
|
|
150
148
|
max_comments: z.number().int().min(1).max(150).default(10),
|
|
151
|
-
// How many findings the pipeline works with (generator, verifier, dashboard); independent of
|
|
152
|
-
// max_comments so tightening the posted cap no longer quietly shrinks the review itself.
|
|
153
149
|
review_breadth: z.number().int().min(1).max(150).default(25),
|
|
154
|
-
// Off by default: adds a large single file's post-change content as read-only context, costing
|
|
155
|
-
// one extra GitHub subrequest per qualifying file (see FILE_CONTEXT_CHAR_BUDGET).
|
|
156
150
|
full_file_context: z.boolean().default(false),
|
|
157
151
|
min_severity: z.enum(reviewSeverities).default("P3"),
|
|
158
152
|
language_gates: z.record(
|
|
@@ -200,7 +194,6 @@ var repoConfigSchema = z.object({
|
|
|
200
194
|
fallbacks: z.array(z.string()).optional()
|
|
201
195
|
})
|
|
202
196
|
).nullable().optional(),
|
|
203
|
-
// Findings are UNIONED with the primary's, never voted on (F1 0.200 vs 0.149 best-single; agreement is not evidence). Never pair across a capability gap: strong + much weaker measured BELOW strong alone.
|
|
204
197
|
secondary: z.object({
|
|
205
198
|
model: z.string(),
|
|
206
199
|
fallbacks: z.array(z.string()).default([])
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schema.ts","../src/schema-enums.ts","../src/schema-claims.ts","../src/schema-repo-config.ts","../src/constants.ts"],"sourcesContent":["import { z } from 'zod';\nimport {\n reviewSeverities,\n reviewConcurrencyLevels,\n type ReviewConcurrencyLevel,\n REVIEW_CONCURRENCY_LIMITS,\n reviewMaxCommentsOptions,\n reviewMaxFilesRange,\n} from './review-limits';\nimport {\n reviewTriggers,\n jobStatuses,\n fileStatuses,\n reviewVerdicts,\n reviewCategories,\n llmApiFormats,\n} from './schema-enums';\nimport {\n claimTypes,\n type ClaimType,\n CLAIM_TYPE_CATEGORY,\n toClaimType,\n CLAIM_TYPE_DECIDABILITY,\n DEFAULT_DENIED_CLAIM_TYPES,\n DEFAULT_SHADOW_RULE_IDS,\n findingDispositions,\n type FindingDisposition,\n} from './schema-claims';\nimport {\n reviewConfigSchema,\n repoConfigSchema,\n type RepoConfig,\n normalizeModelId,\n normalizeRepoModelConfig,\n normalizeRepoConfig,\n defaultRepoConfig,\n} from './schema-repo-config';\nimport {\n KIMI_K2_5_MODEL,\n KIMI_K2_6_MODEL,\n DEPRECATED_MODEL_ALIASES,\n DEFAULT_OVERALL_CORRECTNESS,\n DEFAULT_OVERALL_EXPLANATION,\n REPO_CONFIG_CACHE_VERSION,\n} from './constants';\n\n// Re-exported for server use; client imports directly to keep zod out of browser bundle.\nexport {\n reviewSeverities,\n reviewConcurrencyLevels,\n type ReviewConcurrencyLevel,\n REVIEW_CONCURRENCY_LIMITS,\n reviewMaxCommentsOptions,\n reviewMaxFilesRange,\n};\nexport {\n reviewTriggers,\n jobStatuses,\n fileStatuses,\n reviewVerdicts,\n reviewCategories,\n llmApiFormats,\n};\nexport {\n claimTypes,\n type ClaimType,\n CLAIM_TYPE_CATEGORY,\n toClaimType,\n CLAIM_TYPE_DECIDABILITY,\n DEFAULT_DENIED_CLAIM_TYPES,\n DEFAULT_SHADOW_RULE_IDS,\n findingDispositions,\n type FindingDisposition,\n};\nexport {\n reviewConfigSchema,\n repoConfigSchema,\n type RepoConfig,\n normalizeModelId,\n normalizeRepoModelConfig,\n normalizeRepoConfig,\n defaultRepoConfig,\n};\nexport {\n KIMI_K2_5_MODEL,\n KIMI_K2_6_MODEL,\n DEPRECATED_MODEL_ALIASES,\n REPO_CONFIG_CACHE_VERSION,\n};\n\nconst dateStringSchema = z.union([z.string(), z.date()]).transform((d) => (d instanceof Date ? d.toISOString() : d));\nconst coerceNumberSchema = z.coerce.number();\n\nexport const jobStepSchema = z.object({\n name: z.string(),\n status: z.enum(['pending', 'running', 'done', 'failed']),\n startedAt: dateStringSchema.nullable(),\n finishedAt: dateStringSchema.nullable(),\n error: z.string().nullable().optional(),\n});\n\nexport const parsedReviewCommentSchema = z.object({\n path: z.string().min(1),\n line: z.number().int().positive().nullable().optional(),\n position: z.number().int().positive().nullable().optional(),\n severity: z.enum(reviewSeverities),\n category: z.enum(reviewCategories).default('quality'),\n title: z.string().min(1),\n body: z.string().min(1),\n codeSuggestion: z.string().min(1).nullable().optional(),\n confidenceScore: z.number().min(0).max(1).nullable().optional(),\n // Verbatim line the finding is about, proving the claim is grounded in the diff.\n evidence: z.string().min(1).nullable().optional(),\n fingerprint: z.string().min(1).nullable().optional(),\n // Hash of anchored line content; a change means the finding is raised again.\n anchorHash: z.string().min(1).nullable().optional(),\n posted: z.boolean().nullable().optional(),\n // Never fold into title; format changes reset suppression and unmatch dismissals.\n claimType: z.enum(claimTypes).nullable().optional(),\n contextSnippet: z.string().nullable().optional(),\n disposition: z.enum(findingDispositions).nullable().optional(),\n verifyReason: z.string().nullable().optional(),\n humanLabel: z.enum(['marked_right', 'marked_wrong']).nullable().optional(),\n // Title-independent identity for suppression.\n fingerprintV2: z.string().min(1).nullable().optional(),\n // Absent means 'llm'. Always test `=== 'rule'` positively.\n source: z.enum(['llm', 'rule']).nullable().optional(),\n // Which reviewer produced this, when a secondary reviewer is configured. Attribution for a human\n // reading the dashboard -- never an input to any gate, and never a weight: agreement between models\n // is anti-correlated with correctness in the measured corpus.\n reviewerModel: z.string().nullable().optional(),\n // Retirement signal when source is 'rule'.\n ruleId: z.string().min(1).nullable().optional(),\n});\n\nexport const findingLabelSchema = z.object({ label: z.enum(['right', 'wrong']) });\n\nconst reviewFindingSchema = z.object({\n title: z.string().max(100),\n body: z.string().min(1),\n confidence_score: z.number().min(0).max(1).optional(),\n priority: z.number().int().min(0).max(4).optional(),\n evidence: z.string().optional(),\n // `unknown`, not `string` to prevent file discard; toClaimType coerces.\n claim_type: z.unknown().optional(),\n code_location: z.object({\n absolute_file_path: z.string(),\n line_range: z.object({\n start: z.number().int().positive(),\n end: z.number().int().positive(),\n }).optional(),\n line: z.number().int().positive().optional(),\n }),\n code_suggestion: z.string().optional(),\n});\n\nexport const fileReviewModelOutputSchema = z.object({\n findings: z.array(reviewFindingSchema),\n overall_correctness: z.string().optional().default(DEFAULT_OVERALL_CORRECTNESS),\n overall_explanation: z.string().optional().default(DEFAULT_OVERALL_EXPLANATION),\n overall_confidence_score: z.number().min(0).max(1).optional(),\n});\n\n// One entry per packed file. `.min(1)` throws on empty response.\nexport const batchReviewModelOutputSchema = z.object({\n files: z.array(\n z.object({\n absolute_file_path: z.string(),\n findings: z.array(reviewFindingSchema),\n overall_correctness: z.string().optional().default(DEFAULT_OVERALL_CORRECTNESS),\n overall_explanation: z.string().optional().default(DEFAULT_OVERALL_EXPLANATION),\n overall_confidence_score: z.number().min(0).max(1).optional(),\n }),\n ).min(1),\n overall_confidence_score: z.number().min(0).max(1).optional(),\n});\n\nexport const reviewJobMessageSchema = z.object({\n jobId: z.uuid().optional(),\n deliveryId: z.string().min(1),\n phase: z.enum(['prepare', 'review', 'finalize']).optional(),\n eventName: z.string().min(1).optional(),\n payload: z.unknown().optional(),\n installationId: z.string().min(1).optional(),\n owner: z.string().min(1).optional(),\n repo: z.string().min(1).optional(),\n prNumber: z.number().int().positive().optional(),\n commitSha: z.string().min(1).optional(),\n trigger: z.enum(reviewTriggers).optional(),\n requestId: z.string().optional(),\n // Injected by workflow to bind to job row.\n workflowInstanceId: z.string().optional(),\n // Forces a fresh instance keyed on deliveryId.\n forceFreshInstance: z.boolean().optional(),\n}).superRefine((message, ctx) => {\n if (message.jobId || message.eventName) {\n return;\n }\n\n ctx.addIssue({\n code: 'custom',\n message: 'Queue message must include either jobId or eventName.',\n path: ['jobId'],\n });\n});\n\nexport const jobSummarySchema = z.object({\n id: z.uuid(),\n workflowInstanceId: z.string().nullable().optional(),\n owner: z.string(),\n repo: z.string(),\n installationId: z.string(),\n prNumber: z.number().int(),\n prTitle: z.string().nullable(),\n prAuthor: z.string().nullable(),\n commitSha: z.string(),\n trigger: z.enum(reviewTriggers),\n status: z.enum(jobStatuses),\n verdict: z.enum(reviewVerdicts).nullable(),\n fileCount: z.number().int(),\n commentCount: z.number().int(),\n totalInputTokens: z.number().int(),\n totalOutputTokens: z.number().int(),\n createdAt: dateStringSchema,\n updatedAt: dateStringSchema,\n nextRetryAt: dateStringSchema.nullable().optional(),\n startedAt: dateStringSchema.nullable(),\n finishedAt: dateStringSchema.nullable(),\n errorMessage: z.string().nullable(),\n overallConfidenceScore: z.number().nullable().optional(),\n overallCorrectness: z.string().nullable().optional(),\n steps: z.array(jobStepSchema).default([]),\n checkRunId: coerceNumberSchema.nullable().optional(),\n configSnapshot: repoConfigSchema.nullable().optional(),\n retryOfJobId: z.uuid().nullable().optional(),\n});\n\nexport const jobsQuerySchema = z.object({\n owner: z.string().optional(),\n repo: z.string().optional(),\n prNumber: z.preprocess(\n (v) => (v === undefined || v === '' ? undefined : Number(v)),\n z.number().int().positive().optional(),\n ),\n status: z.enum(jobStatuses).optional(),\n verdict: z.enum(reviewVerdicts).optional(),\n search: z.string().optional(),\n limit: z.preprocess((v) => Number(v), z.number().int().min(1).max(100)).default(20),\n offset: z.preprocess((v) => Number(v), z.number().int().min(0)).default(0),\n});\n\nexport type JobStep = z.infer<typeof jobStepSchema>;\n\nconst fileReviewRecordSchema = z.object({\n id: z.uuid(),\n jobId: z.uuid(),\n filePath: z.string(),\n fileStatus: z.enum(fileStatuses),\n modelUsed: z.string(),\n // Nullable, not just optional to prevent getJobDetail from throwing.\n modelProvider: z.string().nullable().optional(),\n diffLineCount: z.number().int().nullable(),\n diffInput: z.string().nullable(),\n rawAiOutput: z.string().nullable(),\n parsedComments: z.array(parsedReviewCommentSchema),\n inputTokens: z.number().int().nullable(),\n outputTokens: z.number().int().nullable(),\n durationMs: z.number().int().nullable(),\n verdict: z.enum(reviewVerdicts).nullable(),\n fileSummary: z.string().nullable(),\n overallCorrectness: z.string().nullable().optional(),\n confidenceScore: z.number().nullable().optional(),\n batchSize: z.number().int().nullable().optional(),\n withheldCounts: z\n .object({\n evidence: z.number().int(),\n claimDenied: z.number().int(),\n contextOnly: z.number().int(),\n absenceRefuted: z.number().int(),\n })\n .partial()\n .nullable()\n .optional(),\n // The review answered, but not cleanly. Free-form rather than an enum so a database written by a\n // newer worker never fails to parse in an older dashboard.\n degraded: z.string().nullable().optional(),\n errorMessage: z.string().nullable(),\n createdAt: dateStringSchema,\n});\n\nexport const jobDetailSchema = jobSummarySchema.extend({\n baseSha: z.string(),\n headRef: z.string().nullable(),\n baseRef: z.string().nullable(),\n summaryMarkdown: z.string().nullable(),\n configSnapshot: repoConfigSchema.nullable(),\n reviewId: coerceNumberSchema.nullable(),\n retryOfJobId: z.uuid().nullable(),\n summaryModel: z.string().nullable(),\n files: z.array(fileReviewRecordSchema),\n});\n\nexport const repoConfigRecordSchema = z.object({\n installationId: z.string(),\n owner: z.string(),\n repo: z.string(),\n parsedJson: repoConfigSchema,\n updatedAt: dateStringSchema,\n lastJobCreatedAt: dateStringSchema.nullable(),\n lastJobVerdict: z.enum(reviewVerdicts).nullable(),\n mainModel: z.string().nullable(),\n fallbackModels: z.array(z.string()).nullable(),\n sizeOverrides: z.any().nullable(),\n enabled: z.boolean(),\n});\n\nexport const statsSchema = z.object({\n totals: z.object({\n jobs: z.number().int(),\n inputTokens: z.number().int(),\n outputTokens: z.number().int(),\n comments: z.number().int(),\n }),\n trend: z.array(\n z.object({\n day: z.string(),\n /** Last day covered by the bucket (equal to `day` when bucketing is daily). */\n endDay: z.string(),\n jobs: z.number().int(),\n inputTokens: z.number().int(),\n outputTokens: z.number().int(),\n comments: z.number().int(),\n }),\n ),\n /** Days per trend point. */\n trendBucketDays: z.number().int().positive(),\n verdicts: z.array(\n z.object({\n verdict: z.enum(reviewVerdicts).nullable(),\n count: z.number().int(),\n }),\n ),\n models: z.array(\n z.object({\n modelUsed: z.string(),\n provider: z.string().optional(),\n calls: z.number().int(),\n inputTokens: z.number().int(),\n outputTokens: z.number().int(),\n }),\n ),\n topRepos: z.array(\n z.object({\n owner: z.string(),\n repo: z.string(),\n jobs: z.number().int(),\n }),\n ),\n statuses: z.array(\n z.object({\n status: z.enum(jobStatuses),\n count: z.number().int(),\n }),\n ),\n triggers: z.array(\n z.object({\n trigger: z.enum(reviewTriggers),\n count: z.number().int(),\n }),\n ),\n severities: z.array(\n z.object({\n severity: z.enum(reviewSeverities),\n count: z.number().int(),\n }),\n ),\n categories: z.array(\n z.object({\n category: z.enum(reviewCategories),\n count: z.number().int(),\n }),\n ),\n performance: z.object({\n avgDurationMs: z.number().nullable(),\n p95DurationMs: z.number().nullable(),\n avgConfidence: z.number().nullable(),\n }),\n});\n\nexport type ParsedReviewComment = z.infer<typeof parsedReviewCommentSchema>;\nexport type ReviewJobMessage = z.infer<typeof reviewJobMessageSchema>;\nexport type JobSummary = z.infer<typeof jobSummarySchema>;\nexport type FileReviewRecord = z.infer<typeof fileReviewRecordSchema>;\nexport type JobDetail = z.infer<typeof jobDetailSchema>;\nexport type RepoConfigRecord = z.infer<typeof repoConfigRecordSchema>;\n\nexport const llmProviderSchema = z.object({\n id: z.uuid(),\n name: z.string(),\n apiFormat: z.enum(llmApiFormats),\n baseUrl: z.url().nullable(),\n enabled: z.boolean(),\n hasApiKey: z.boolean(),\n createdAt: dateStringSchema,\n updatedAt: dateStringSchema,\n});\n\nexport const modelConfigSchema = z.object({\n modelId: z.string(),\n providerId: z.uuid(),\n providerName: z.string(),\n apiFormat: z.enum(llmApiFormats),\n modelName: z.string(),\n updatedAt: dateStringSchema,\n});\n\nexport type LlmApiFormat = z.infer<typeof llmProviderSchema>['apiFormat'];\nexport type LlmProvider = z.infer<typeof llmProviderSchema>;\nexport type ModelConfig = z.infer<typeof modelConfigSchema>;\n\nexport type LlmProviderSecret = LlmProvider & {\n encryptedApiKey: string | null;\n};\n\nexport type ResolvedModelConfig = ModelConfig & {\n providerEnabled: boolean;\n baseUrl: string | null;\n encryptedApiKey: string | null;\n};\nexport type StatsPayload = z.infer<typeof statsSchema>;\n\nexport const reviewSettingsSchema = z.object({\n concurrencyLevel: z.enum(reviewConcurrencyLevels).default('medium'),\n maxComments: z.union([z.literal(5), z.literal(10), z.literal(15), z.literal(20)]).default(10),\n // Instance-wide, shared budget and limit.\n maxFiles: z\n .number()\n .int()\n .min(reviewMaxFilesRange.min)\n .max(reviewMaxFilesRange.max)\n .default(reviewMaxFilesRange.default),\n});\nexport type ReviewSettings = z.infer<typeof reviewSettingsSchema>;\n","// Leaf module: plain string-literal arrays shared by schema.ts, schema-claims.ts, and\n// schema-repo-config.ts. Kept dependency-free so none of those three risk an import cycle.\nexport const reviewTriggers = ['auto', 'mention', 'retry'] as const;\nexport const jobStatuses = ['queued', 'running', 'done', 'failed', 'superseded', 'cancelled', 'stopped'] as const;\nexport const fileStatuses = ['pending', 'done', 'skipped', 'failed'] as const;\nexport const reviewVerdicts = ['approve', 'comment'] as const;\nexport const reviewCategories = ['security', 'bugs', 'performance', 'correctness', 'quality'] as const;\nexport const llmApiFormats = ['openai', 'anthropic', 'gemini', 'cloudflare-workers-ai', 'vertex'] as const;\n","import { reviewCategories } from './schema-enums';\n\n// Enforced, not just labelled; drops whole types and filters candidates.\nexport const claimTypes = [\n 'react_hook_missing_deps',\n 'react_missing_cleanup',\n 'missing_await',\n 'unhandled_promise_rejection',\n 'resource_leak',\n 'null_or_undefined_deref',\n 'sql_injection',\n 'unsafe_dom_sink',\n 'unsafe_dynamic_code',\n 'insecure_randomness',\n 'hardcoded_secret',\n 'redos_regex',\n 'swallowed_error',\n 'mutable_default_arg',\n 'destructive_migration',\n 'external_version_claim',\n 'other',\n] as const;\n\nexport type ClaimType = typeof claimTypes[number];\n\nexport const CLAIM_TYPE_CATEGORY: Record<ClaimType, typeof reviewCategories[number]> = {\n sql_injection: 'security',\n unsafe_dom_sink: 'security',\n unsafe_dynamic_code: 'security',\n insecure_randomness: 'security',\n hardcoded_secret: 'security',\n missing_await: 'bugs',\n unhandled_promise_rejection: 'bugs',\n null_or_undefined_deref: 'bugs',\n react_hook_missing_deps: 'bugs',\n swallowed_error: 'bugs',\n mutable_default_arg: 'bugs',\n resource_leak: 'performance',\n redos_regex: 'performance',\n destructive_migration: 'correctness',\n react_missing_cleanup: 'correctness',\n external_version_claim: 'correctness',\n other: 'quality',\n};\n\nexport function toClaimType(value: unknown): ClaimType {\n return (claimTypes as readonly string[]).includes(value as string) ? (value as ClaimType) : 'other';\n}\n\n// Decidable from diff hunk alone? A Record, so new types are COMPILE ERRORS until classified.\nexport const CLAIM_TYPE_DECIDABILITY: Record<ClaimType, 'diff_local' | 'needs_whole_file' | 'needs_external_facts'> = {\n sql_injection: 'diff_local',\n unsafe_dom_sink: 'diff_local',\n unsafe_dynamic_code: 'diff_local',\n insecure_randomness: 'diff_local',\n hardcoded_secret: 'diff_local',\n mutable_default_arg: 'diff_local',\n destructive_migration: 'diff_local',\n swallowed_error: 'diff_local',\n unhandled_promise_rejection: 'diff_local',\n missing_await: 'diff_local',\n other: 'diff_local',\n\n react_hook_missing_deps: 'needs_whole_file',\n react_missing_cleanup: 'needs_whole_file',\n resource_leak: 'needs_whole_file',\n redos_regex: 'needs_whole_file',\n\n null_or_undefined_deref: 'needs_whole_file',\n\n external_version_claim: 'needs_external_facts',\n};\n\n// Derived from table: anything undecidable from the diff.\nexport const DEFAULT_DENIED_CLAIM_TYPES: ClaimType[] = claimTypes.filter(\n (type) => CLAIM_TYPE_DECIDABILITY[type] !== 'diff_local',\n);\n\n// Generate candidates, never post.\nexport const DEFAULT_SHADOW_RULE_IDS = [\n 'empty-catch',\n 'debugger-statement',\n 'focused-test',\n 'dynamic-code-exec',\n 'dynamic-html-sink',\n 'mutable-default-arg',\n 'destructive-migration',\n 'hardcoded-secret',\n 'insecure-random',\n] as const;\n\n// How finding ended its life; READ-VALIDATING. Retire by marking historical.\nexport const findingDispositions = [\n 'posted',\n 'severity',\n 'confidence',\n 'suppression',\n 'dedupe',\n 'verify',\n 'verify_unanswered',\n 'rule_unverified',\n 'cap',\n 'unverifiable_passthrough',\n] as const;\n\nexport type FindingDisposition = typeof findingDispositions[number];\n","import { z } from 'zod';\nimport { reviewSeverities } from './review-limits';\nimport { reviewCategories } from './schema-enums';\nimport { claimTypes, DEFAULT_DENIED_CLAIM_TYPES, DEFAULT_SHADOW_RULE_IDS } from './schema-claims';\nimport {\n DEFAULT_REVIEW_EVENTS,\n DEFAULT_MENTION_TRIGGER,\n DEFAULT_SKIP_FILES,\n DEFAULT_EXEC_FILE_TYPES,\n DEFAULT_EXEC_COMMAND,\n DEFAULT_LABELS,\n DEPRECATED_MODEL_ALIASES,\n} from './constants';\n\nconst labelsSchema = z.union([\n z.literal(false),\n z.object({\n p1: z.string().min(1),\n p2: z.string().min(1),\n p3: z.string().min(1),\n }),\n]);\n\nexport const reviewConfigSchema = z.object({\n on: z.array(z.enum(['opened', 'synchronize', 'ready_for_review', 'reopened', 'closed'])).default([...DEFAULT_REVIEW_EVENTS]),\n ignore_drafts: z.boolean().default(true),\n mention_trigger: z.union([z.literal(false), z.string().min(1)]).default(DEFAULT_MENTION_TRIGGER),\n skip_files: z\n .array(z.string().min(1))\n .default([...DEFAULT_SKIP_FILES]),\n large_file_threshold_lines: z.number().int().min(1).max(5_000).default(200),\n max_diff_lines_per_file: z.number().int().min(1).max(5_000).default(800),\n batch_small_files: z.boolean().default(true),\n // Presentation cap: comments actually posted to the PR. Findings past this are still recorded\n // (disposition 'cap') and shown on the dashboard; nothing upstream of posting should read it.\n max_comments: z.number().int().min(1).max(150).default(10),\n // How many findings the pipeline works with (generator, verifier, dashboard); independent of\n // max_comments so tightening the posted cap no longer quietly shrinks the review itself.\n review_breadth: z.number().int().min(1).max(150).default(25),\n // Off by default: adds a large single file's post-change content as read-only context, costing\n // one extra GitHub subrequest per qualifying file (see FILE_CONTEXT_CHAR_BUDGET).\n full_file_context: z.boolean().default(false),\n min_severity: z.enum(reviewSeverities).default('P3'),\n language_gates: z\n .record(\n z.string(),\n z.object({\n min_severity: z.enum(reviewSeverities).optional(),\n min_confidence: z.number().min(0).max(1).optional(),\n }),\n )\n .default({}),\n min_confidence: z.number().min(0).max(1).default(0),\n focus: z.array(z.enum(reviewCategories)).default([...reviewCategories]),\n deny_claim_types: z.array(z.enum(claimTypes)).default([...DEFAULT_DENIED_CLAIM_TYPES]),\n rules: z\n .object({\n enabled: z.boolean().default(true),\n disabled_rule_ids: z.array(z.string().min(1)).default([]),\n shadow_rule_ids: z.array(z.string().min(1)).default([...DEFAULT_SHADOW_RULE_IDS]),\n })\n .default({\n enabled: true,\n disabled_rule_ids: [],\n shadow_rule_ids: [...DEFAULT_SHADOW_RULE_IDS],\n }),\n custom_rules: z.array(z.string().min(1)).default([]),\n labels: labelsSchema.default({ ...DEFAULT_LABELS }),\n exec: z\n .object({\n enabled: z.boolean().default(false),\n on_file_types: z.array(z.string().min(1)).default([...DEFAULT_EXEC_FILE_TYPES]),\n command: z.string().min(1).default(DEFAULT_EXEC_COMMAND),\n })\n .default({\n enabled: false,\n on_file_types: [...DEFAULT_EXEC_FILE_TYPES],\n command: DEFAULT_EXEC_COMMAND,\n }),\n});\n\nexport const DEFAULT_REVIEW_CONFIG = reviewConfigSchema.parse({});\nexport const DEFAULT_MODEL_CONFIG = { main: null, fallbacks: [], size_overrides: [], secondary: null };\n\nexport const repoConfigSchema = z.object({\n review: reviewConfigSchema.default(DEFAULT_REVIEW_CONFIG),\n model: z\n .object({\n main: z.string().nullable().default(null),\n fallbacks: z.array(z.string()).nullable().default([]),\n size_overrides: z\n .array(\n z.object({\n max_lines: z.number().int().positive(),\n model: z.string(),\n fallbacks: z.array(z.string()).optional(),\n }),\n )\n .nullable()\n .optional(),\n // Findings are UNIONED with the primary's, never voted on (F1 0.200 vs 0.149 best-single; agreement is not evidence). Never pair across a capability gap: strong + much weaker measured BELOW strong alone.\n secondary: z\n .object({\n model: z.string(),\n fallbacks: z.array(z.string()).default([]),\n })\n .nullable()\n .optional(),\n })\n .default(DEFAULT_MODEL_CONFIG),\n});\n\nexport type RepoConfig = z.infer<typeof repoConfigSchema>;\n\nexport function normalizeModelId(model: string) {\n return DEPRECATED_MODEL_ALIASES[model] ?? model;\n}\n\nexport function normalizeRepoModelConfig(model: RepoConfig['model']): RepoConfig['model'] {\n return {\n ...model,\n main: model.main ? normalizeModelId(model.main) : null,\n fallbacks: model.fallbacks === null\n ? null\n : Array.isArray(model.fallbacks)\n ? model.fallbacks.map(normalizeModelId)\n : [],\n size_overrides: model.size_overrides === null || model.size_overrides === undefined\n ? model.size_overrides\n : model.size_overrides.map((tier) => ({\n ...tier,\n model: normalizeModelId(tier.model),\n fallbacks: tier.fallbacks?.map(normalizeModelId),\n })),\n ...(model.secondary\n ? {\n secondary: {\n model: normalizeModelId(model.secondary.model),\n fallbacks: (model.secondary.fallbacks ?? []).map(normalizeModelId),\n },\n }\n : {}),\n };\n}\n\nexport function normalizeRepoConfig(config: RepoConfig): RepoConfig {\n return {\n ...config,\n model: normalizeRepoModelConfig(config.model),\n };\n}\n\nexport const defaultRepoConfig = repoConfigSchema.parse({});\n","export const DEFAULT_REVIEW_EVENTS = ['opened', 'synchronize', 'ready_for_review', 'reopened'] as const;\nexport const DEFAULT_SKIP_FILES = ['**/*.lock', 'dist/**', 'build/**', '.next/**', '*.generated.*', 'coverage/**'];\nexport const DEFAULT_EXEC_FILE_TYPES = ['.ts', '.tsx', '.js'];\nexport const DEFAULT_EXEC_COMMAND = 'npm run lint && npm run typecheck';\nexport const DEFAULT_MENTION_TRIGGER = '@codra-app';\nexport const DEFAULT_LABELS = {\n p1: 'review: needs-attention',\n p2: 'review: approved',\n p3: 'review: approved',\n};\n\nexport const KIMI_K2_5_MODEL = '@cf/moonshotai/kimi-k2.5';\nexport const KIMI_K2_6_MODEL = '@cf/moonshotai/kimi-k2.6';\nexport const DEPRECATED_MODEL_ALIASES: Record<string, string> = {\n [KIMI_K2_5_MODEL]: KIMI_K2_6_MODEL,\n};\n\nexport const REPO_CONFIG_CACHE_VERSION = 'v7';\n\nexport const DEFAULT_OVERALL_CORRECTNESS = 'patch is correct';\nexport const DEFAULT_OVERALL_EXPLANATION = 'Review completed (partial output).';\n"],"mappings":"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","names":["z","z"]}
|
|
1
|
+
{"version":3,"sources":["../src/schema.ts","../src/schema-enums.ts","../src/schema-claims.ts","../src/schema-repo-config.ts","../src/constants.ts"],"sourcesContent":["import { z } from 'zod';\nimport {\n reviewSeverities,\n reviewConcurrencyLevels,\n type ReviewConcurrencyLevel,\n REVIEW_CONCURRENCY_LIMITS,\n reviewMaxCommentsOptions,\n reviewMaxFilesRange,\n} from './review-limits';\nimport {\n reviewTriggers,\n jobStatuses,\n fileStatuses,\n reviewVerdicts,\n reviewCategories,\n llmApiFormats,\n} from './schema-enums';\nimport {\n claimTypes,\n type ClaimType,\n CLAIM_TYPE_CATEGORY,\n toClaimType,\n CLAIM_TYPE_DECIDABILITY,\n DEFAULT_DENIED_CLAIM_TYPES,\n DEFAULT_SHADOW_RULE_IDS,\n findingDispositions,\n type FindingDisposition,\n} from './schema-claims';\nimport {\n reviewConfigSchema,\n repoConfigSchema,\n type RepoConfig,\n normalizeModelId,\n normalizeRepoModelConfig,\n normalizeRepoConfig,\n defaultRepoConfig,\n} from './schema-repo-config';\nimport {\n KIMI_K2_5_MODEL,\n KIMI_K2_6_MODEL,\n DEPRECATED_MODEL_ALIASES,\n DEFAULT_OVERALL_CORRECTNESS,\n DEFAULT_OVERALL_EXPLANATION,\n REPO_CONFIG_CACHE_VERSION,\n} from './constants';\n\nexport {\n reviewSeverities,\n reviewConcurrencyLevels,\n type ReviewConcurrencyLevel,\n REVIEW_CONCURRENCY_LIMITS,\n reviewMaxCommentsOptions,\n reviewMaxFilesRange,\n};\nexport {\n reviewTriggers,\n jobStatuses,\n fileStatuses,\n reviewVerdicts,\n reviewCategories,\n llmApiFormats,\n};\nexport {\n claimTypes,\n type ClaimType,\n CLAIM_TYPE_CATEGORY,\n toClaimType,\n CLAIM_TYPE_DECIDABILITY,\n DEFAULT_DENIED_CLAIM_TYPES,\n DEFAULT_SHADOW_RULE_IDS,\n findingDispositions,\n type FindingDisposition,\n};\nexport {\n reviewConfigSchema,\n repoConfigSchema,\n type RepoConfig,\n normalizeModelId,\n normalizeRepoModelConfig,\n normalizeRepoConfig,\n defaultRepoConfig,\n};\nexport {\n KIMI_K2_5_MODEL,\n KIMI_K2_6_MODEL,\n DEPRECATED_MODEL_ALIASES,\n REPO_CONFIG_CACHE_VERSION,\n};\n\nconst dateStringSchema = z.union([z.string(), z.date()]).transform((d) => (d instanceof Date ? d.toISOString() : d));\nconst coerceNumberSchema = z.coerce.number();\n\nexport const jobStepSchema = z.object({\n name: z.string(),\n status: z.enum(['pending', 'running', 'done', 'failed']),\n startedAt: dateStringSchema.nullable(),\n finishedAt: dateStringSchema.nullable(),\n error: z.string().nullable().optional(),\n});\n\nexport const parsedReviewCommentSchema = z.object({\n path: z.string().min(1),\n line: z.number().int().positive().nullable().optional(),\n position: z.number().int().positive().nullable().optional(),\n severity: z.enum(reviewSeverities),\n category: z.enum(reviewCategories).default('quality'),\n title: z.string().min(1),\n body: z.string().min(1),\n codeSuggestion: z.string().min(1).nullable().optional(),\n confidenceScore: z.number().min(0).max(1).nullable().optional(),\n // Verbatim line the finding is about, proving the claim is grounded in the diff.\n evidence: z.string().min(1).nullable().optional(),\n fingerprint: z.string().min(1).nullable().optional(),\n // Hash of anchored line content; a change means the finding is raised again.\n anchorHash: z.string().min(1).nullable().optional(),\n posted: z.boolean().nullable().optional(),\n // Never fold into title; format changes reset suppression and unmatch dismissals.\n claimType: z.enum(claimTypes).nullable().optional(),\n contextSnippet: z.string().nullable().optional(),\n disposition: z.enum(findingDispositions).nullable().optional(),\n verifyReason: z.string().nullable().optional(),\n humanLabel: z.enum(['marked_right', 'marked_wrong']).nullable().optional(),\n // Title-independent identity for suppression.\n fingerprintV2: z.string().min(1).nullable().optional(),\n // Absent means 'llm'. Always test `=== 'rule'` positively.\n source: z.enum(['llm', 'rule']).nullable().optional(),\n // Which reviewer produced this, when a secondary reviewer is configured. Attribution for a human\n // reading the dashboard -- never an input to any gate, and never a weight: agreement between models\n // is anti-correlated with correctness in the measured corpus.\n reviewerModel: z.string().nullable().optional(),\n // Retirement signal when source is 'rule'.\n ruleId: z.string().min(1).nullable().optional(),\n});\n\nexport const findingLabelSchema = z.object({ label: z.enum(['right', 'wrong']) });\n\nconst reviewFindingSchema = z.object({\n title: z.string().max(100),\n body: z.string().min(1),\n confidence_score: z.number().min(0).max(1).optional(),\n priority: z.number().int().min(0).max(4).optional(),\n evidence: z.string().optional(),\n // `unknown`, not `string` to prevent file discard; toClaimType coerces.\n claim_type: z.unknown().optional(),\n code_location: z.object({\n absolute_file_path: z.string(),\n line_range: z.object({\n start: z.number().int().positive(),\n end: z.number().int().positive(),\n }).optional(),\n line: z.number().int().positive().optional(),\n }),\n code_suggestion: z.string().optional(),\n});\n\nexport const fileReviewModelOutputSchema = z.object({\n findings: z.array(reviewFindingSchema),\n overall_correctness: z.string().optional().default(DEFAULT_OVERALL_CORRECTNESS),\n overall_explanation: z.string().optional().default(DEFAULT_OVERALL_EXPLANATION),\n overall_confidence_score: z.number().min(0).max(1).optional(),\n});\n\n// One entry per packed file. `.min(1)` throws on empty response.\nexport const batchReviewModelOutputSchema = z.object({\n files: z.array(\n z.object({\n absolute_file_path: z.string(),\n findings: z.array(reviewFindingSchema),\n overall_correctness: z.string().optional().default(DEFAULT_OVERALL_CORRECTNESS),\n overall_explanation: z.string().optional().default(DEFAULT_OVERALL_EXPLANATION),\n overall_confidence_score: z.number().min(0).max(1).optional(),\n }),\n ).min(1),\n overall_confidence_score: z.number().min(0).max(1).optional(),\n});\n\nexport const reviewJobMessageSchema = z.object({\n jobId: z.uuid().optional(),\n deliveryId: z.string().min(1),\n phase: z.enum(['prepare', 'review', 'finalize']).optional(),\n eventName: z.string().min(1).optional(),\n payload: z.unknown().optional(),\n installationId: z.string().min(1).optional(),\n owner: z.string().min(1).optional(),\n repo: z.string().min(1).optional(),\n prNumber: z.number().int().positive().optional(),\n commitSha: z.string().min(1).optional(),\n trigger: z.enum(reviewTriggers).optional(),\n requestId: z.string().optional(),\n // Injected by workflow to bind to job row.\n workflowInstanceId: z.string().optional(),\n // Forces a fresh instance keyed on deliveryId.\n forceFreshInstance: z.boolean().optional(),\n}).superRefine((message, ctx) => {\n if (message.jobId || message.eventName) {\n return;\n }\n\n ctx.addIssue({\n code: 'custom',\n message: 'Queue message must include either jobId or eventName.',\n path: ['jobId'],\n });\n});\n\nexport const jobSummarySchema = z.object({\n id: z.uuid(),\n workflowInstanceId: z.string().nullable().optional(),\n owner: z.string(),\n repo: z.string(),\n installationId: z.string(),\n prNumber: z.number().int(),\n prTitle: z.string().nullable(),\n prAuthor: z.string().nullable(),\n commitSha: z.string(),\n trigger: z.enum(reviewTriggers),\n status: z.enum(jobStatuses),\n verdict: z.enum(reviewVerdicts).nullable(),\n fileCount: z.number().int(),\n commentCount: z.number().int(),\n totalInputTokens: z.number().int(),\n totalOutputTokens: z.number().int(),\n createdAt: dateStringSchema,\n updatedAt: dateStringSchema,\n nextRetryAt: dateStringSchema.nullable().optional(),\n startedAt: dateStringSchema.nullable(),\n finishedAt: dateStringSchema.nullable(),\n errorMessage: z.string().nullable(),\n overallConfidenceScore: z.number().nullable().optional(),\n overallCorrectness: z.string().nullable().optional(),\n steps: z.array(jobStepSchema).default([]),\n checkRunId: coerceNumberSchema.nullable().optional(),\n configSnapshot: repoConfigSchema.nullable().optional(),\n retryOfJobId: z.uuid().nullable().optional(),\n});\n\nexport const jobsQuerySchema = z.object({\n owner: z.string().optional(),\n repo: z.string().optional(),\n prNumber: z.preprocess(\n (v) => (v === undefined || v === '' ? undefined : Number(v)),\n z.number().int().positive().optional(),\n ),\n status: z.enum(jobStatuses).optional(),\n verdict: z.enum(reviewVerdicts).optional(),\n search: z.string().optional(),\n limit: z.preprocess((v) => Number(v), z.number().int().min(1).max(100)).default(20),\n offset: z.preprocess((v) => Number(v), z.number().int().min(0)).default(0),\n});\n\nexport type JobStep = z.infer<typeof jobStepSchema>;\n\nconst fileReviewRecordSchema = z.object({\n id: z.uuid(),\n jobId: z.uuid(),\n filePath: z.string(),\n fileStatus: z.enum(fileStatuses),\n modelUsed: z.string(),\n // Nullable, not just optional to prevent getJobDetail from throwing.\n modelProvider: z.string().nullable().optional(),\n diffLineCount: z.number().int().nullable(),\n diffInput: z.string().nullable(),\n rawAiOutput: z.string().nullable(),\n parsedComments: z.array(parsedReviewCommentSchema),\n inputTokens: z.number().int().nullable(),\n outputTokens: z.number().int().nullable(),\n durationMs: z.number().int().nullable(),\n verdict: z.enum(reviewVerdicts).nullable(),\n fileSummary: z.string().nullable(),\n overallCorrectness: z.string().nullable().optional(),\n confidenceScore: z.number().nullable().optional(),\n batchSize: z.number().int().nullable().optional(),\n withheldCounts: z\n .object({\n evidence: z.number().int(),\n claimDenied: z.number().int(),\n contextOnly: z.number().int(),\n absenceRefuted: z.number().int(),\n })\n .partial()\n .nullable()\n .optional(),\n // The review answered, but not cleanly. Free-form rather than an enum so a database written by a\n // newer worker never fails to parse in an older dashboard.\n degraded: z.string().nullable().optional(),\n errorMessage: z.string().nullable(),\n createdAt: dateStringSchema,\n});\n\nexport const jobDetailSchema = jobSummarySchema.extend({\n baseSha: z.string(),\n headRef: z.string().nullable(),\n baseRef: z.string().nullable(),\n summaryMarkdown: z.string().nullable(),\n configSnapshot: repoConfigSchema.nullable(),\n reviewId: coerceNumberSchema.nullable(),\n retryOfJobId: z.uuid().nullable(),\n summaryModel: z.string().nullable(),\n files: z.array(fileReviewRecordSchema),\n});\n\nexport const repoConfigRecordSchema = z.object({\n installationId: z.string(),\n owner: z.string(),\n repo: z.string(),\n parsedJson: repoConfigSchema,\n updatedAt: dateStringSchema,\n lastJobCreatedAt: dateStringSchema.nullable(),\n lastJobVerdict: z.enum(reviewVerdicts).nullable(),\n mainModel: z.string().nullable(),\n fallbackModels: z.array(z.string()).nullable(),\n sizeOverrides: z.any().nullable(),\n enabled: z.boolean(),\n});\n\nexport const statsSchema = z.object({\n totals: z.object({\n jobs: z.number().int(),\n inputTokens: z.number().int(),\n outputTokens: z.number().int(),\n comments: z.number().int(),\n }),\n trend: z.array(\n z.object({\n day: z.string(),\n /** Last day covered by the bucket (equal to `day` when bucketing is daily). */\n endDay: z.string(),\n jobs: z.number().int(),\n inputTokens: z.number().int(),\n outputTokens: z.number().int(),\n comments: z.number().int(),\n }),\n ),\n /** Days per trend point. */\n trendBucketDays: z.number().int().positive(),\n verdicts: z.array(\n z.object({\n verdict: z.enum(reviewVerdicts).nullable(),\n count: z.number().int(),\n }),\n ),\n models: z.array(\n z.object({\n modelUsed: z.string(),\n provider: z.string().optional(),\n calls: z.number().int(),\n inputTokens: z.number().int(),\n outputTokens: z.number().int(),\n }),\n ),\n topRepos: z.array(\n z.object({\n owner: z.string(),\n repo: z.string(),\n jobs: z.number().int(),\n }),\n ),\n statuses: z.array(\n z.object({\n status: z.enum(jobStatuses),\n count: z.number().int(),\n }),\n ),\n triggers: z.array(\n z.object({\n trigger: z.enum(reviewTriggers),\n count: z.number().int(),\n }),\n ),\n severities: z.array(\n z.object({\n severity: z.enum(reviewSeverities),\n count: z.number().int(),\n }),\n ),\n categories: z.array(\n z.object({\n category: z.enum(reviewCategories),\n count: z.number().int(),\n }),\n ),\n performance: z.object({\n avgDurationMs: z.number().nullable(),\n p95DurationMs: z.number().nullable(),\n avgConfidence: z.number().nullable(),\n }),\n});\n\nexport type ParsedReviewComment = z.infer<typeof parsedReviewCommentSchema>;\nexport type ReviewJobMessage = z.infer<typeof reviewJobMessageSchema>;\nexport type JobSummary = z.infer<typeof jobSummarySchema>;\nexport type FileReviewRecord = z.infer<typeof fileReviewRecordSchema>;\nexport type JobDetail = z.infer<typeof jobDetailSchema>;\nexport type RepoConfigRecord = z.infer<typeof repoConfigRecordSchema>;\n\nexport const llmProviderSchema = z.object({\n id: z.uuid(),\n name: z.string(),\n apiFormat: z.enum(llmApiFormats),\n baseUrl: z.url().nullable(),\n enabled: z.boolean(),\n hasApiKey: z.boolean(),\n createdAt: dateStringSchema,\n updatedAt: dateStringSchema,\n});\n\nexport const modelConfigSchema = z.object({\n modelId: z.string(),\n providerId: z.uuid(),\n providerName: z.string(),\n apiFormat: z.enum(llmApiFormats),\n modelName: z.string(),\n updatedAt: dateStringSchema,\n});\n\nexport type LlmApiFormat = z.infer<typeof llmProviderSchema>['apiFormat'];\nexport type LlmProvider = z.infer<typeof llmProviderSchema>;\nexport type ModelConfig = z.infer<typeof modelConfigSchema>;\n\nexport type LlmProviderSecret = LlmProvider & {\n encryptedApiKey: string | null;\n};\n\nexport type ResolvedModelConfig = ModelConfig & {\n providerEnabled: boolean;\n baseUrl: string | null;\n encryptedApiKey: string | null;\n};\nexport type StatsPayload = z.infer<typeof statsSchema>;\n\nexport const reviewSettingsSchema = z.object({\n concurrencyLevel: z.enum(reviewConcurrencyLevels).default('medium'),\n maxComments: z.union([z.literal(5), z.literal(10), z.literal(15), z.literal(20)]).default(10),\n // Instance-wide, shared budget and limit.\n maxFiles: z\n .number()\n .int()\n .min(reviewMaxFilesRange.min)\n .max(reviewMaxFilesRange.max)\n .default(reviewMaxFilesRange.default),\n});\nexport type ReviewSettings = z.infer<typeof reviewSettingsSchema>;\n","export const reviewTriggers = ['auto', 'mention', 'retry'] as const;\nexport const jobStatuses = ['queued', 'running', 'done', 'failed', 'superseded', 'cancelled', 'stopped'] as const;\nexport const fileStatuses = ['pending', 'done', 'skipped', 'failed'] as const;\nexport const reviewVerdicts = ['approve', 'comment'] as const;\nexport const reviewCategories = ['security', 'bugs', 'performance', 'correctness', 'quality'] as const;\nexport const llmApiFormats = ['openai', 'anthropic', 'gemini', 'cloudflare-workers-ai', 'vertex'] as const;\n","import { reviewCategories } from './schema-enums';\n\nexport const claimTypes = [\n 'react_hook_missing_deps',\n 'react_missing_cleanup',\n 'missing_await',\n 'unhandled_promise_rejection',\n 'resource_leak',\n 'null_or_undefined_deref',\n 'sql_injection',\n 'unsafe_dom_sink',\n 'unsafe_dynamic_code',\n 'insecure_randomness',\n 'hardcoded_secret',\n 'redos_regex',\n 'swallowed_error',\n 'mutable_default_arg',\n 'destructive_migration',\n 'external_version_claim',\n 'other',\n] as const;\n\nexport type ClaimType = typeof claimTypes[number];\n\nexport const CLAIM_TYPE_CATEGORY: Record<ClaimType, typeof reviewCategories[number]> = {\n sql_injection: 'security',\n unsafe_dom_sink: 'security',\n unsafe_dynamic_code: 'security',\n insecure_randomness: 'security',\n hardcoded_secret: 'security',\n missing_await: 'bugs',\n unhandled_promise_rejection: 'bugs',\n null_or_undefined_deref: 'bugs',\n react_hook_missing_deps: 'bugs',\n swallowed_error: 'bugs',\n mutable_default_arg: 'bugs',\n resource_leak: 'performance',\n redos_regex: 'performance',\n destructive_migration: 'correctness',\n react_missing_cleanup: 'correctness',\n external_version_claim: 'correctness',\n other: 'quality',\n};\n\nexport function toClaimType(value: unknown): ClaimType {\n return (claimTypes as readonly string[]).includes(value as string) ? (value as ClaimType) : 'other';\n}\n\nexport const CLAIM_TYPE_DECIDABILITY: Record<ClaimType, 'diff_local' | 'needs_whole_file' | 'needs_external_facts'> = {\n sql_injection: 'diff_local',\n unsafe_dom_sink: 'diff_local',\n unsafe_dynamic_code: 'diff_local',\n insecure_randomness: 'diff_local',\n hardcoded_secret: 'diff_local',\n mutable_default_arg: 'diff_local',\n destructive_migration: 'diff_local',\n swallowed_error: 'diff_local',\n unhandled_promise_rejection: 'diff_local',\n missing_await: 'diff_local',\n other: 'diff_local',\n\n react_hook_missing_deps: 'needs_whole_file',\n react_missing_cleanup: 'needs_whole_file',\n resource_leak: 'needs_whole_file',\n redos_regex: 'needs_whole_file',\n\n null_or_undefined_deref: 'needs_whole_file',\n\n external_version_claim: 'needs_external_facts',\n};\n\nexport const DEFAULT_DENIED_CLAIM_TYPES: ClaimType[] = claimTypes.filter(\n (type) => CLAIM_TYPE_DECIDABILITY[type] !== 'diff_local',\n);\n\nexport const DEFAULT_SHADOW_RULE_IDS = [\n 'empty-catch',\n 'debugger-statement',\n 'focused-test',\n 'dynamic-code-exec',\n 'dynamic-html-sink',\n 'mutable-default-arg',\n 'destructive-migration',\n 'hardcoded-secret',\n 'insecure-random',\n] as const;\n\nexport const findingDispositions = [\n 'posted',\n 'severity',\n 'confidence',\n 'suppression',\n 'dedupe',\n 'verify',\n 'verify_unanswered',\n 'rule_unverified',\n 'cap',\n 'unverifiable_passthrough',\n] as const;\n\nexport type FindingDisposition = typeof findingDispositions[number];\n","import { z } from 'zod';\nimport { reviewSeverities } from './review-limits';\nimport { reviewCategories } from './schema-enums';\nimport { claimTypes, DEFAULT_DENIED_CLAIM_TYPES, DEFAULT_SHADOW_RULE_IDS } from './schema-claims';\nimport {\n DEFAULT_REVIEW_EVENTS,\n DEFAULT_MENTION_TRIGGER,\n DEFAULT_SKIP_FILES,\n DEFAULT_EXEC_FILE_TYPES,\n DEFAULT_EXEC_COMMAND,\n DEFAULT_LABELS,\n DEPRECATED_MODEL_ALIASES,\n} from './constants';\n\nconst labelsSchema = z.union([\n z.literal(false),\n z.object({\n p1: z.string().min(1),\n p2: z.string().min(1),\n p3: z.string().min(1),\n }),\n]);\n\nexport const reviewConfigSchema = z.object({\n on: z.array(z.enum(['opened', 'synchronize', 'ready_for_review', 'reopened', 'closed'])).default([...DEFAULT_REVIEW_EVENTS]),\n ignore_drafts: z.boolean().default(true),\n mention_trigger: z.union([z.literal(false), z.string().min(1)]).default(DEFAULT_MENTION_TRIGGER),\n skip_files: z\n .array(z.string().min(1))\n .default([...DEFAULT_SKIP_FILES]),\n large_file_threshold_lines: z.number().int().min(1).max(5_000).default(200),\n max_diff_lines_per_file: z.number().int().min(1).max(5_000).default(800),\n batch_small_files: z.boolean().default(true),\n max_comments: z.number().int().min(1).max(150).default(10),\n review_breadth: z.number().int().min(1).max(150).default(25),\n full_file_context: z.boolean().default(false),\n min_severity: z.enum(reviewSeverities).default('P3'),\n language_gates: z\n .record(\n z.string(),\n z.object({\n min_severity: z.enum(reviewSeverities).optional(),\n min_confidence: z.number().min(0).max(1).optional(),\n }),\n )\n .default({}),\n min_confidence: z.number().min(0).max(1).default(0),\n focus: z.array(z.enum(reviewCategories)).default([...reviewCategories]),\n deny_claim_types: z.array(z.enum(claimTypes)).default([...DEFAULT_DENIED_CLAIM_TYPES]),\n rules: z\n .object({\n enabled: z.boolean().default(true),\n disabled_rule_ids: z.array(z.string().min(1)).default([]),\n shadow_rule_ids: z.array(z.string().min(1)).default([...DEFAULT_SHADOW_RULE_IDS]),\n })\n .default({\n enabled: true,\n disabled_rule_ids: [],\n shadow_rule_ids: [...DEFAULT_SHADOW_RULE_IDS],\n }),\n custom_rules: z.array(z.string().min(1)).default([]),\n labels: labelsSchema.default({ ...DEFAULT_LABELS }),\n exec: z\n .object({\n enabled: z.boolean().default(false),\n on_file_types: z.array(z.string().min(1)).default([...DEFAULT_EXEC_FILE_TYPES]),\n command: z.string().min(1).default(DEFAULT_EXEC_COMMAND),\n })\n .default({\n enabled: false,\n on_file_types: [...DEFAULT_EXEC_FILE_TYPES],\n command: DEFAULT_EXEC_COMMAND,\n }),\n});\n\nexport const DEFAULT_REVIEW_CONFIG = reviewConfigSchema.parse({});\nexport const DEFAULT_MODEL_CONFIG = { main: null, fallbacks: [], size_overrides: [], secondary: null };\n\nexport const repoConfigSchema = z.object({\n review: reviewConfigSchema.default(DEFAULT_REVIEW_CONFIG),\n model: z\n .object({\n main: z.string().nullable().default(null),\n fallbacks: z.array(z.string()).nullable().default([]),\n size_overrides: z\n .array(\n z.object({\n max_lines: z.number().int().positive(),\n model: z.string(),\n fallbacks: z.array(z.string()).optional(),\n }),\n )\n .nullable()\n .optional(),\n secondary: z\n .object({\n model: z.string(),\n fallbacks: z.array(z.string()).default([]),\n })\n .nullable()\n .optional(),\n })\n .default(DEFAULT_MODEL_CONFIG),\n});\n\nexport type RepoConfig = z.infer<typeof repoConfigSchema>;\n\nexport function normalizeModelId(model: string) {\n return DEPRECATED_MODEL_ALIASES[model] ?? model;\n}\n\nexport function normalizeRepoModelConfig(model: RepoConfig['model']): RepoConfig['model'] {\n return {\n ...model,\n main: model.main ? normalizeModelId(model.main) : null,\n fallbacks: model.fallbacks === null\n ? null\n : Array.isArray(model.fallbacks)\n ? model.fallbacks.map(normalizeModelId)\n : [],\n size_overrides: model.size_overrides === null || model.size_overrides === undefined\n ? model.size_overrides\n : model.size_overrides.map((tier) => ({\n ...tier,\n model: normalizeModelId(tier.model),\n fallbacks: tier.fallbacks?.map(normalizeModelId),\n })),\n ...(model.secondary\n ? {\n secondary: {\n model: normalizeModelId(model.secondary.model),\n fallbacks: (model.secondary.fallbacks ?? []).map(normalizeModelId),\n },\n }\n : {}),\n };\n}\n\nexport function normalizeRepoConfig(config: RepoConfig): RepoConfig {\n return {\n ...config,\n model: normalizeRepoModelConfig(config.model),\n };\n}\n\nexport const defaultRepoConfig = repoConfigSchema.parse({});\n","export const DEFAULT_REVIEW_EVENTS = ['opened', 'synchronize', 'ready_for_review', 'reopened'] as const;\nexport const DEFAULT_SKIP_FILES = ['**/*.lock', 'dist/**', 'build/**', '.next/**', '*.generated.*', 'coverage/**'];\nexport const DEFAULT_EXEC_FILE_TYPES = ['.ts', '.tsx', '.js'];\nexport const DEFAULT_EXEC_COMMAND = 'npm run lint && npm run typecheck';\nexport const DEFAULT_MENTION_TRIGGER = '@codra-app';\nexport const DEFAULT_LABELS = {\n p1: 'review: needs-attention',\n p2: 'review: approved',\n p3: 'review: approved',\n};\n\nexport const KIMI_K2_5_MODEL = '@cf/moonshotai/kimi-k2.5';\nexport const KIMI_K2_6_MODEL = '@cf/moonshotai/kimi-k2.6';\nexport const DEPRECATED_MODEL_ALIASES: Record<string, string> = {\n [KIMI_K2_5_MODEL]: KIMI_K2_6_MODEL,\n};\n\nexport const REPO_CONFIG_CACHE_VERSION = 'v7';\n\nexport const DEFAULT_OVERALL_CORRECTNESS = 'patch is correct';\nexport const DEFAULT_OVERALL_EXPLANATION = 'Review completed (partial output).';\n"],"mappings":"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","names":["z","z"]}
|
|
@@ -312,7 +312,7 @@ declare const jobSummarySchema: z.ZodObject<{
|
|
|
312
312
|
declare const jobsQuerySchema: z.ZodObject<{
|
|
313
313
|
owner: z.ZodOptional<z.ZodString>;
|
|
314
314
|
repo: z.ZodOptional<z.ZodString>;
|
|
315
|
-
prNumber: z.ZodPreprocess<z.ZodOptional<z.ZodNumber
|
|
315
|
+
prNumber: z.ZodPreprocess<z.ZodOptional<z.ZodNumber>, unknown>;
|
|
316
316
|
status: z.ZodOptional<z.ZodEnum<{
|
|
317
317
|
queued: "queued";
|
|
318
318
|
running: "running";
|
|
@@ -327,8 +327,8 @@ declare const jobsQuerySchema: z.ZodObject<{
|
|
|
327
327
|
comment: "comment";
|
|
328
328
|
}>>;
|
|
329
329
|
search: z.ZodOptional<z.ZodString>;
|
|
330
|
-
limit: z.ZodDefault<z.ZodPreprocess<z.ZodNumber>>;
|
|
331
|
-
offset: z.ZodDefault<z.ZodPreprocess<z.ZodNumber>>;
|
|
330
|
+
limit: z.ZodDefault<z.ZodPreprocess<z.ZodNumber, unknown>>;
|
|
331
|
+
offset: z.ZodDefault<z.ZodPreprocess<z.ZodNumber, unknown>>;
|
|
332
332
|
}, z.core.$strip>;
|
|
333
333
|
type JobStep = z.infer<typeof jobStepSchema>;
|
|
334
334
|
declare const fileReviewRecordSchema: z.ZodObject<{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codraoss/schema",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.13",
|
|
4
4
|
"description": "Shared types and Zod contracts for Codra, the open-source code review engine.",
|
|
5
5
|
"author": "Devarshi Shimpi",
|
|
6
6
|
"license": "AGPL-3.0-only",
|
|
@@ -55,44 +55,7 @@
|
|
|
55
55
|
"README.md"
|
|
56
56
|
],
|
|
57
57
|
"publishConfig": {
|
|
58
|
-
"access": "public"
|
|
59
|
-
"main": "./dist/index.js",
|
|
60
|
-
"module": "./dist/index.js",
|
|
61
|
-
"types": "./dist/index.d.ts",
|
|
62
|
-
"exports": {
|
|
63
|
-
".": {
|
|
64
|
-
"types": "./dist/index.d.ts",
|
|
65
|
-
"import": "./dist/index.js"
|
|
66
|
-
},
|
|
67
|
-
"./api": {
|
|
68
|
-
"types": "./dist/api.d.ts",
|
|
69
|
-
"import": "./dist/api.js"
|
|
70
|
-
},
|
|
71
|
-
"./github": {
|
|
72
|
-
"types": "./dist/github.d.ts",
|
|
73
|
-
"import": "./dist/github.js"
|
|
74
|
-
},
|
|
75
|
-
"./hex": {
|
|
76
|
-
"types": "./dist/hex.d.ts",
|
|
77
|
-
"import": "./dist/hex.js"
|
|
78
|
-
},
|
|
79
|
-
"./review-limits": {
|
|
80
|
-
"types": "./dist/review-limits.d.ts",
|
|
81
|
-
"import": "./dist/review-limits.js"
|
|
82
|
-
},
|
|
83
|
-
"./timezone": {
|
|
84
|
-
"types": "./dist/timezone.d.ts",
|
|
85
|
-
"import": "./dist/timezone.js"
|
|
86
|
-
},
|
|
87
|
-
"./transient-errors": {
|
|
88
|
-
"types": "./dist/transient-errors.d.ts",
|
|
89
|
-
"import": "./dist/transient-errors.js"
|
|
90
|
-
},
|
|
91
|
-
"./webhook": {
|
|
92
|
-
"types": "./dist/webhook.d.ts",
|
|
93
|
-
"import": "./dist/webhook.js"
|
|
94
|
-
}
|
|
95
|
-
}
|
|
58
|
+
"access": "public"
|
|
96
59
|
},
|
|
97
60
|
"scripts": {
|
|
98
61
|
"build": "tsup",
|
|
@@ -104,7 +67,7 @@
|
|
|
104
67
|
"zod": "^4.3.6"
|
|
105
68
|
},
|
|
106
69
|
"devDependencies": {
|
|
107
|
-
"tsup": "^8.0.
|
|
70
|
+
"tsup": "^8.0.2"
|
|
108
71
|
},
|
|
109
72
|
"main": "./dist/index.js",
|
|
110
73
|
"module": "./dist/index.js",
|