From 909f032e4bcc9487f59062e0a9e513bc2ce2b05d Mon Sep 17 00:00:00 2001 From: d-kimsuon Date: Sun, 7 Sep 2025 18:20:59 +0900 Subject: [PATCH] chore: remove strict() from zod --- .../content/ImageContentSchema.ts | 18 ++-- .../content/TextContentSchema.ts | 10 +- .../content/ThinkingContentSchema.ts | 12 +-- .../content/ToolResultContentSchema.ts | 20 ++-- .../content/ToolUseContentSchema.ts | 14 ++- .../entry/AssistantEntrySchema.ts | 2 +- .../entry/BaseEntrySchema.ts | 36 +++---- .../entry/SummaryEntrySchema.ts | 12 +-- .../entry/SystemEntrySchema.ts | 2 +- .../entry/UserEntrySchema.ts | 2 +- .../message/AssistantMessageSchema.ts | 58 +++++----- .../message/UserMessageSchema.ts | 16 ++- .../tool/CommonToolSchema.ts | 100 ++++++++---------- .../tool/StructuredPatchSchema.ts | 16 ++- .../conversation-schema/tool/TodoSchema.ts | 24 ++--- 15 files changed, 153 insertions(+), 189 deletions(-) diff --git a/src/lib/conversation-schema/content/ImageContentSchema.ts b/src/lib/conversation-schema/content/ImageContentSchema.ts index 92fa1ac..d9ffd2b 100644 --- a/src/lib/conversation-schema/content/ImageContentSchema.ts +++ b/src/lib/conversation-schema/content/ImageContentSchema.ts @@ -1,12 +1,10 @@ import { z } from "zod"; -export const ImageContentSchema = z - .object({ - type: z.literal("image"), - source: z.object({ - type: z.literal("base64"), - data: z.string(), - media_type: z.enum(["image/png"]), - }), - }) - .strict(); +export const ImageContentSchema = z.object({ + type: z.literal("image"), + source: z.object({ + type: z.literal("base64"), + data: z.string(), + media_type: z.enum(["image/png"]), + }), +}); diff --git a/src/lib/conversation-schema/content/TextContentSchema.ts b/src/lib/conversation-schema/content/TextContentSchema.ts index d2f0739..aec28d5 100644 --- a/src/lib/conversation-schema/content/TextContentSchema.ts +++ b/src/lib/conversation-schema/content/TextContentSchema.ts @@ -1,8 +1,6 @@ import { z } from "zod"; -export const TextContentSchema = z - .object({ - type: z.literal("text"), - text: z.string(), - }) - .strict(); +export const TextContentSchema = z.object({ + type: z.literal("text"), + text: z.string(), +}); diff --git a/src/lib/conversation-schema/content/ThinkingContentSchema.ts b/src/lib/conversation-schema/content/ThinkingContentSchema.ts index 601e4a5..42d6d77 100644 --- a/src/lib/conversation-schema/content/ThinkingContentSchema.ts +++ b/src/lib/conversation-schema/content/ThinkingContentSchema.ts @@ -1,9 +1,7 @@ import { z } from "zod"; -export const ThinkingContentSchema = z - .object({ - type: z.literal("thinking"), - thinking: z.string(), - signature: z.string().optional(), - }) - .strict(); +export const ThinkingContentSchema = z.object({ + type: z.literal("thinking"), + thinking: z.string(), + signature: z.string().optional(), +}); diff --git a/src/lib/conversation-schema/content/ToolResultContentSchema.ts b/src/lib/conversation-schema/content/ToolResultContentSchema.ts index 78ccd07..57adeb1 100644 --- a/src/lib/conversation-schema/content/ToolResultContentSchema.ts +++ b/src/lib/conversation-schema/content/ToolResultContentSchema.ts @@ -2,16 +2,14 @@ import { z } from "zod"; import { ImageContentSchema } from "./ImageContentSchema"; import { TextContentSchema } from "./TextContentSchema"; -export const ToolResultContentSchema = z - .object({ - type: z.literal("tool_result"), - tool_use_id: z.string(), - content: z.union([ - z.string(), - z.array(z.union([TextContentSchema, ImageContentSchema])), - ]), - is_error: z.boolean().optional(), - }) - .strict(); +export const ToolResultContentSchema = z.object({ + type: z.literal("tool_result"), + tool_use_id: z.string(), + content: z.union([ + z.string(), + z.array(z.union([TextContentSchema, ImageContentSchema])), + ]), + is_error: z.boolean().optional(), +}); export type ToolResultContent = z.infer; diff --git a/src/lib/conversation-schema/content/ToolUseContentSchema.ts b/src/lib/conversation-schema/content/ToolUseContentSchema.ts index 9852c69..131625d 100644 --- a/src/lib/conversation-schema/content/ToolUseContentSchema.ts +++ b/src/lib/conversation-schema/content/ToolUseContentSchema.ts @@ -1,10 +1,8 @@ import { z } from "zod"; -export const ToolUseContentSchema = z - .object({ - type: z.literal("tool_use"), - id: z.string(), - name: z.string(), - input: z.record(z.string(), z.unknown()), - }) - .strict(); +export const ToolUseContentSchema = z.object({ + type: z.literal("tool_use"), + id: z.string(), + name: z.string(), + input: z.record(z.string(), z.unknown()), +}); diff --git a/src/lib/conversation-schema/entry/AssistantEntrySchema.ts b/src/lib/conversation-schema/entry/AssistantEntrySchema.ts index 80200a4..78f4606 100644 --- a/src/lib/conversation-schema/entry/AssistantEntrySchema.ts +++ b/src/lib/conversation-schema/entry/AssistantEntrySchema.ts @@ -12,4 +12,4 @@ export const AssistantEntrySchema = BaseEntrySchema.extend({ // optional requestId: z.string().optional(), isApiErrorMessage: z.boolean().optional(), -}).strict(); +}); diff --git a/src/lib/conversation-schema/entry/BaseEntrySchema.ts b/src/lib/conversation-schema/entry/BaseEntrySchema.ts index e97aec1..40e0585 100644 --- a/src/lib/conversation-schema/entry/BaseEntrySchema.ts +++ b/src/lib/conversation-schema/entry/BaseEntrySchema.ts @@ -1,23 +1,21 @@ import { z } from "zod"; -export const BaseEntrySchema = z - .object({ - // required - isSidechain: z.boolean(), - userType: z.enum(["external"]), - cwd: z.string(), - sessionId: z.string(), - version: z.string(), - uuid: z.uuid(), - timestamp: z.string(), +export const BaseEntrySchema = z.object({ + // required + isSidechain: z.boolean(), + userType: z.enum(["external"]), + cwd: z.string(), + sessionId: z.string(), + version: z.string(), + uuid: z.uuid(), + timestamp: z.string(), - // nullable - parentUuid: z.uuid().nullable(), + // nullable + parentUuid: z.uuid().nullable(), - // optional - isMeta: z.boolean().optional(), - toolUseResult: z.unknown().optional(), // スキーマがツールごとに異なりすぎるし利用もしなそうなので unknown - gitBranch: z.string().optional(), - isCompactSummary: z.boolean().optional(), - }) - .strict(); + // optional + isMeta: z.boolean().optional(), + toolUseResult: z.unknown().optional(), // スキーマがツールごとに異なりすぎるし利用もしなそうなので unknown + gitBranch: z.string().optional(), + isCompactSummary: z.boolean().optional(), +}); diff --git a/src/lib/conversation-schema/entry/SummaryEntrySchema.ts b/src/lib/conversation-schema/entry/SummaryEntrySchema.ts index 1fac63c..8192940 100644 --- a/src/lib/conversation-schema/entry/SummaryEntrySchema.ts +++ b/src/lib/conversation-schema/entry/SummaryEntrySchema.ts @@ -1,9 +1,7 @@ import { z } from "zod"; -export const SummaryEntrySchema = z - .object({ - type: z.literal("summary"), - summary: z.string(), - leafUuid: z.string().uuid(), - }) - .strict(); +export const SummaryEntrySchema = z.object({ + type: z.literal("summary"), + summary: z.string(), + leafUuid: z.string().uuid(), +}); diff --git a/src/lib/conversation-schema/entry/SystemEntrySchema.ts b/src/lib/conversation-schema/entry/SystemEntrySchema.ts index d6fa9eb..47fab7c 100644 --- a/src/lib/conversation-schema/entry/SystemEntrySchema.ts +++ b/src/lib/conversation-schema/entry/SystemEntrySchema.ts @@ -9,4 +9,4 @@ export const SystemEntrySchema = BaseEntrySchema.extend({ content: z.string(), toolUseID: z.string(), level: z.enum(["info"]), -}).strict(); +}); diff --git a/src/lib/conversation-schema/entry/UserEntrySchema.ts b/src/lib/conversation-schema/entry/UserEntrySchema.ts index c2e5794..6cc7b77 100644 --- a/src/lib/conversation-schema/entry/UserEntrySchema.ts +++ b/src/lib/conversation-schema/entry/UserEntrySchema.ts @@ -8,4 +8,4 @@ export const UserEntrySchema = BaseEntrySchema.extend({ // required message: UserMessageSchema, -}).strict(); +}); diff --git a/src/lib/conversation-schema/message/AssistantMessageSchema.ts b/src/lib/conversation-schema/message/AssistantMessageSchema.ts index 847bde4..0321619 100644 --- a/src/lib/conversation-schema/message/AssistantMessageSchema.ts +++ b/src/lib/conversation-schema/message/AssistantMessageSchema.ts @@ -15,33 +15,31 @@ export type AssistantMessageContent = z.infer< typeof AssistantMessageContentSchema >; -export const AssistantMessageSchema = z - .object({ - id: z.string(), - container: z.null().optional(), - type: z.literal("message"), - role: z.literal("assistant"), - model: z.string(), - content: z.array(AssistantMessageContentSchema), - stop_reason: z.string().nullable(), - stop_sequence: z.string().nullable(), - usage: z.object({ - input_tokens: z.number(), - cache_creation_input_tokens: z.number().optional(), - cache_read_input_tokens: z.number().optional(), - cache_creation: z - .object({ - ephemeral_5m_input_tokens: z.number(), - ephemeral_1h_input_tokens: z.number(), - }) - .optional(), - output_tokens: z.number(), - service_tier: z.string().nullable().optional(), - server_tool_use: z - .object({ - web_search_requests: z.number(), - }) - .optional(), - }), - }) - .strict(); +export const AssistantMessageSchema = z.object({ + id: z.string(), + container: z.null().optional(), + type: z.literal("message"), + role: z.literal("assistant"), + model: z.string(), + content: z.array(AssistantMessageContentSchema), + stop_reason: z.string().nullable(), + stop_sequence: z.string().nullable(), + usage: z.object({ + input_tokens: z.number(), + cache_creation_input_tokens: z.number().optional(), + cache_read_input_tokens: z.number().optional(), + cache_creation: z + .object({ + ephemeral_5m_input_tokens: z.number(), + ephemeral_1h_input_tokens: z.number(), + }) + .optional(), + output_tokens: z.number(), + service_tier: z.string().nullable().optional(), + server_tool_use: z + .object({ + web_search_requests: z.number(), + }) + .optional(), + }), +}); diff --git a/src/lib/conversation-schema/message/UserMessageSchema.ts b/src/lib/conversation-schema/message/UserMessageSchema.ts index 85239c7..129fb72 100644 --- a/src/lib/conversation-schema/message/UserMessageSchema.ts +++ b/src/lib/conversation-schema/message/UserMessageSchema.ts @@ -12,12 +12,10 @@ const UserMessageContentSchema = z.union([ export type UserMessageContent = z.infer; -export const UserMessageSchema = z - .object({ - role: z.literal("user"), - content: z.union([ - z.string(), - z.array(z.union([z.string(), UserMessageContentSchema])), - ]), - }) - .strict(); +export const UserMessageSchema = z.object({ + role: z.literal("user"), + content: z.union([ + z.string(), + z.array(z.union([z.string(), UserMessageContentSchema])), + ]), +}); diff --git a/src/lib/conversation-schema/tool/CommonToolSchema.ts b/src/lib/conversation-schema/tool/CommonToolSchema.ts index ffcf75b..db3d8fb 100644 --- a/src/lib/conversation-schema/tool/CommonToolSchema.ts +++ b/src/lib/conversation-schema/tool/CommonToolSchema.ts @@ -2,70 +2,58 @@ import { z } from "zod"; import { StructuredPatchSchema } from "./StructuredPatchSchema"; export const CommonToolResultSchema = z.union([ - z - .object({ - stdout: z.string(), - stderr: z.string(), - interrupted: z.boolean(), - isImage: z.boolean(), - }) - .strict(), + z.object({ + stdout: z.string(), + stderr: z.string(), + interrupted: z.boolean(), + isImage: z.boolean(), + }), // create - z - .object({ - type: z.literal("create"), - filePath: z.string(), - content: z.string(), - structuredPatch: z.array(StructuredPatchSchema), - }) - .strict(), + z.object({ + type: z.literal("create"), + filePath: z.string(), + content: z.string(), + structuredPatch: z.array(StructuredPatchSchema), + }), // update - z - .object({ - filePath: z.string(), - oldString: z.string(), - newString: z.string(), - originalFile: z.string(), - userModified: z.boolean(), - replaceAll: z.boolean(), - structuredPatch: z.array(StructuredPatchSchema), - }) - .strict(), + z.object({ + filePath: z.string(), + oldString: z.string(), + newString: z.string(), + originalFile: z.string(), + userModified: z.boolean(), + replaceAll: z.boolean(), + structuredPatch: z.array(StructuredPatchSchema), + }), // search? - z - .object({ - filenames: z.array(z.string()), - durationMs: z.number(), - numFiles: z.number(), - truncated: z.boolean(), - }) - .strict(), + z.object({ + filenames: z.array(z.string()), + durationMs: z.number(), + numFiles: z.number(), + truncated: z.boolean(), + }), // text - z - .object({ - type: z.literal("text"), - file: z.object({ - filePath: z.string(), - content: z.string(), - numLines: z.number(), - startLine: z.number(), - totalLines: z.number(), - }), - }) - .strict(), - - // content - z - .object({ - mode: z.literal("content"), - numFiles: z.number(), - filenames: z.array(z.string()), + z.object({ + type: z.literal("text"), + file: z.object({ + filePath: z.string(), content: z.string(), numLines: z.number(), - }) - .strict(), + startLine: z.number(), + totalLines: z.number(), + }), + }), + + // content + z.object({ + mode: z.literal("content"), + numFiles: z.number(), + filenames: z.array(z.string()), + content: z.string(), + numLines: z.number(), + }), ]); diff --git a/src/lib/conversation-schema/tool/StructuredPatchSchema.ts b/src/lib/conversation-schema/tool/StructuredPatchSchema.ts index 5db20c8..d08c96e 100644 --- a/src/lib/conversation-schema/tool/StructuredPatchSchema.ts +++ b/src/lib/conversation-schema/tool/StructuredPatchSchema.ts @@ -1,11 +1,9 @@ import { z } from "zod"; -export const StructuredPatchSchema = z - .object({ - oldStart: z.number(), - oldLines: z.number(), - newStart: z.number(), - newLines: z.number(), - lines: z.array(z.string()), - }) - .strict(); +export const StructuredPatchSchema = z.object({ + oldStart: z.number(), + oldLines: z.number(), + newStart: z.number(), + newLines: z.number(), + lines: z.array(z.string()), +}); diff --git a/src/lib/conversation-schema/tool/TodoSchema.ts b/src/lib/conversation-schema/tool/TodoSchema.ts index 914eac3..6d7392c 100644 --- a/src/lib/conversation-schema/tool/TodoSchema.ts +++ b/src/lib/conversation-schema/tool/TodoSchema.ts @@ -1,17 +1,13 @@ import z from "zod"; -const TodoSchema = z - .object({ - content: z.string(), - status: z.enum(["pending", "in_progress", "completed"]), - priority: z.enum(["low", "medium", "high"]), - id: z.string(), - }) - .strict(); +const TodoSchema = z.object({ + content: z.string(), + status: z.enum(["pending", "in_progress", "completed"]), + priority: z.enum(["low", "medium", "high"]), + id: z.string(), +}); -export const TodoToolResultSchema = z - .object({ - oldTodos: z.array(TodoSchema).optional(), - newTodos: z.array(TodoSchema).optional(), - }) - .strict(); +export const TodoToolResultSchema = z.object({ + oldTodos: z.array(TodoSchema).optional(), + newTodos: z.array(TodoSchema).optional(), +});