fix(build): use zod v3 two-arg form for z.record across all shared schemas
Same fix as the agent schema commit — zod 3.25 (resolved by ^3.25.0) requires z.record() to take both key and value schemas. The single-arg form is v4 syntax. Fixed 15 remaining call sites across canvas, project, report, common, webhook, habit, task, note, and milestone schemas. Pure type-only fix — runtime behavior identical.
This commit is contained in:
@@ -56,7 +56,7 @@ export const canvasSchema = z.object({
|
|||||||
zoom: z.number().positive().default(1),
|
zoom: z.number().positive().default(1),
|
||||||
}).optional(),
|
}).optional(),
|
||||||
background: z.string().optional(),
|
background: z.string().optional(),
|
||||||
custom_fields: z.record(z.unknown()).optional(),
|
custom_fields: z.record(z.string(), z.unknown()).optional(),
|
||||||
created: z.string().datetime(),
|
created: z.string().datetime(),
|
||||||
updated: z.string().datetime(),
|
updated: z.string().datetime(),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ export const errorLogSchema = z.object({
|
|||||||
source: z.string(),
|
source: z.string(),
|
||||||
message: z.string(),
|
message: z.string(),
|
||||||
stack_trace: z.string().optional(),
|
stack_trace: z.string().optional(),
|
||||||
metadata: z.record(z.unknown()).optional(),
|
metadata: z.record(z.string(), z.unknown()).optional(),
|
||||||
resolved: z.boolean().default(false),
|
resolved: z.boolean().default(false),
|
||||||
created: z.string().datetime(),
|
created: z.string().datetime(),
|
||||||
updated: z.string().datetime(),
|
updated: z.string().datetime(),
|
||||||
@@ -134,11 +134,11 @@ export const queueJobSchema = z.object({
|
|||||||
id: z.string(),
|
id: z.string(),
|
||||||
queue: z.string(),
|
queue: z.string(),
|
||||||
type: z.string(),
|
type: z.string(),
|
||||||
payload: z.record(z.unknown()),
|
payload: z.record(z.string(), z.unknown()),
|
||||||
status: queueJobStatusEnum.default('pending'),
|
status: queueJobStatusEnum.default('pending'),
|
||||||
attempts: z.number().int().nonnegative().default(0),
|
attempts: z.number().int().nonnegative().default(0),
|
||||||
max_attempts: z.number().int().positive().default(3),
|
max_attempts: z.number().int().positive().default(3),
|
||||||
result: z.record(z.unknown()).optional(),
|
result: z.record(z.string(), z.unknown()).optional(),
|
||||||
error_message: z.string().optional(),
|
error_message: z.string().optional(),
|
||||||
scheduled_at: z.string().datetime().optional(),
|
scheduled_at: z.string().datetime().optional(),
|
||||||
started_at: z.string().datetime().optional(),
|
started_at: z.string().datetime().optional(),
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ export const habitSchema = z.object({
|
|||||||
score_config: habitScoreConfigSchema.optional(),
|
score_config: habitScoreConfigSchema.optional(),
|
||||||
active: z.boolean().default(true),
|
active: z.boolean().default(true),
|
||||||
tags: z.array(z.string()).default([]),
|
tags: z.array(z.string()).default([]),
|
||||||
custom_fields: z.record(z.unknown()).optional(),
|
custom_fields: z.record(z.string(), z.unknown()).optional(),
|
||||||
created: z.string().datetime(),
|
created: z.string().datetime(),
|
||||||
updated: z.string().datetime(),
|
updated: z.string().datetime(),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ export const milestoneSchema = z.object({
|
|||||||
completed_at: z.string().datetime().optional(),
|
completed_at: z.string().datetime().optional(),
|
||||||
tasks: z.array(z.string()).default([]),
|
tasks: z.array(z.string()).default([]),
|
||||||
dependencies: z.array(milestoneDependencySchema).default([]),
|
dependencies: z.array(milestoneDependencySchema).default([]),
|
||||||
custom_fields: z.record(z.unknown()).optional(),
|
custom_fields: z.record(z.string(), z.unknown()).optional(),
|
||||||
created: z.string().datetime(),
|
created: z.string().datetime(),
|
||||||
updated: z.string().datetime(),
|
updated: z.string().datetime(),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ export const noteSchema = z.object({
|
|||||||
size: z.number(),
|
size: z.number(),
|
||||||
url: z.string(),
|
url: z.string(),
|
||||||
})).default([]),
|
})).default([]),
|
||||||
custom_fields: z.record(z.unknown()).optional(),
|
custom_fields: z.record(z.string(), z.unknown()).optional(),
|
||||||
created: z.string().datetime(),
|
created: z.string().datetime(),
|
||||||
updated: z.string().datetime(),
|
updated: z.string().datetime(),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export const projectSettingsSchema = z.object({
|
|||||||
pomodoro_focus_minutes: z.number().int().positive().default(25),
|
pomodoro_focus_minutes: z.number().int().positive().default(25),
|
||||||
pomodoro_break_minutes: z.number().int().positive().default(5),
|
pomodoro_break_minutes: z.number().int().positive().default(5),
|
||||||
notifications_enabled: z.boolean().default(true),
|
notifications_enabled: z.boolean().default(true),
|
||||||
custom_fields: z.record(z.unknown()).optional(),
|
custom_fields: z.record(z.string(), z.unknown()).optional(),
|
||||||
});
|
});
|
||||||
|
|
||||||
// ── Project Schema ───────────────────────────────────────────────────────────
|
// ── Project Schema ───────────────────────────────────────────────────────────
|
||||||
@@ -33,7 +33,7 @@ export const projectSchema = z.object({
|
|||||||
target_date: z.string().datetime().optional(),
|
target_date: z.string().datetime().optional(),
|
||||||
completed_at: z.string().datetime().optional(),
|
completed_at: z.string().datetime().optional(),
|
||||||
settings: projectSettingsSchema.optional(),
|
settings: projectSettingsSchema.optional(),
|
||||||
custom_fields: z.record(z.unknown()).optional(),
|
custom_fields: z.record(z.string(), z.unknown()).optional(),
|
||||||
created: z.string().datetime(),
|
created: z.string().datetime(),
|
||||||
updated: z.string().datetime(),
|
updated: z.string().datetime(),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export const reportTemplateSchema = z.object({
|
|||||||
sections: z.array(z.object({
|
sections: z.array(z.object({
|
||||||
title: z.string(),
|
title: z.string(),
|
||||||
type: z.enum(['summary', 'chart', 'table', 'list', 'text']).default('text'),
|
type: z.enum(['summary', 'chart', 'table', 'list', 'text']).default('text'),
|
||||||
config: z.record(z.unknown()).optional(),
|
config: z.record(z.string(), z.unknown()).optional(),
|
||||||
sort_order: z.number().int().nonnegative().default(0),
|
sort_order: z.number().int().nonnegative().default(0),
|
||||||
})).default([]),
|
})).default([]),
|
||||||
created: z.string().datetime(),
|
created: z.string().datetime(),
|
||||||
@@ -42,14 +42,14 @@ export const reportSchema = z.object({
|
|||||||
sections: z.array(z.object({
|
sections: z.array(z.object({
|
||||||
title: z.string(),
|
title: z.string(),
|
||||||
content: z.string().optional(),
|
content: z.string().optional(),
|
||||||
data: z.record(z.unknown()).optional(),
|
data: z.record(z.string(), z.unknown()).optional(),
|
||||||
sort_order: z.number().int().nonnegative().default(0),
|
sort_order: z.number().int().nonnegative().default(0),
|
||||||
})).default([]),
|
})).default([]),
|
||||||
summary: z.string().optional(),
|
summary: z.string().optional(),
|
||||||
is_draft: z.boolean().default(true),
|
is_draft: z.boolean().default(true),
|
||||||
generated_at: z.string().datetime().optional(),
|
generated_at: z.string().datetime().optional(),
|
||||||
tags: z.array(z.string()).default([]),
|
tags: z.array(z.string()).default([]),
|
||||||
custom_fields: z.record(z.unknown()).optional(),
|
custom_fields: z.record(z.string(), z.unknown()).optional(),
|
||||||
created: z.string().datetime(),
|
created: z.string().datetime(),
|
||||||
updated: z.string().datetime(),
|
updated: z.string().datetime(),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ export const taskSchema = z.object({
|
|||||||
attachments: z.array(attachmentSchema).default([]),
|
attachments: z.array(attachmentSchema).default([]),
|
||||||
dependencies: z.array(z.string()).default([]),
|
dependencies: z.array(z.string()).default([]),
|
||||||
subtasks: z.array(subtaskSchema).default([]),
|
subtasks: z.array(subtaskSchema).default([]),
|
||||||
custom_fields: z.record(z.unknown()).optional(),
|
custom_fields: z.record(z.string(), z.unknown()).optional(),
|
||||||
completed_at: z.string().datetime().optional(),
|
completed_at: z.string().datetime().optional(),
|
||||||
created: z.string().datetime(),
|
created: z.string().datetime(),
|
||||||
updated: z.string().datetime(),
|
updated: z.string().datetime(),
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ export const webhookDeliverySchema = z.object({
|
|||||||
id: z.string(),
|
id: z.string(),
|
||||||
webhook_id: z.string(),
|
webhook_id: z.string(),
|
||||||
event: z.string(),
|
event: z.string(),
|
||||||
payload: z.record(z.unknown()),
|
payload: z.record(z.string(), z.unknown()),
|
||||||
status: z.enum(['success', 'failed', 'pending']).default('pending'),
|
status: z.enum(['success', 'failed', 'pending']).default('pending'),
|
||||||
status_code: z.number().int().optional(),
|
status_code: z.number().int().optional(),
|
||||||
response_body: z.string().optional(),
|
response_body: z.string().optional(),
|
||||||
@@ -30,7 +30,7 @@ export const webhookSchema = z.object({
|
|||||||
headers: z.record(z.string()).optional(),
|
headers: z.record(z.string()).optional(),
|
||||||
retry_count: z.number().int().nonnegative().default(3),
|
retry_count: z.number().int().nonnegative().default(3),
|
||||||
last_triggered_at: z.string().datetime().optional(),
|
last_triggered_at: z.string().datetime().optional(),
|
||||||
custom_fields: z.record(z.unknown()).optional(),
|
custom_fields: z.record(z.string(), z.unknown()).optional(),
|
||||||
created: z.string().datetime(),
|
created: z.string().datetime(),
|
||||||
updated: z.string().datetime(),
|
updated: z.string().datetime(),
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user