Skip to content

Commit fee3c19

Browse files
authored
add prompt schema validation debug logs (#17812)
1 parent 6c04739 commit fee3c19

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

packages/opencode/src/session/prompt.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1318,6 +1318,31 @@ export namespace SessionPrompt {
13181318
},
13191319
)
13201320

1321+
const parsedInfo = MessageV2.Info.safeParse(info)
1322+
if (!parsedInfo.success) {
1323+
log.error("invalid user message before save", {
1324+
sessionID: input.sessionID,
1325+
messageID: info.id,
1326+
agent: info.agent,
1327+
model: info.model,
1328+
issues: parsedInfo.error.issues,
1329+
})
1330+
}
1331+
1332+
parts.forEach((part, index) => {
1333+
const parsedPart = MessageV2.Part.safeParse(part)
1334+
if (parsedPart.success) return
1335+
log.error("invalid user part before save", {
1336+
sessionID: input.sessionID,
1337+
messageID: info.id,
1338+
partID: part.id,
1339+
partType: part.type,
1340+
index,
1341+
issues: parsedPart.error.issues,
1342+
part,
1343+
})
1344+
})
1345+
13211346
await Session.updateMessage(info)
13221347
for (const part of parts) {
13231348
await Session.updatePart(part)

packages/opencode/src/util/fn.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ export function fn<T extends z.ZodType, Result>(schema: T, cb: (input: z.infer<T
77
parsed = schema.parse(input)
88
} catch (e) {
99
console.trace("schema validation failure stack trace:")
10+
if (e instanceof z.ZodError) {
11+
console.error("schema validation issues:", JSON.stringify(e.issues, null, 2))
12+
}
1013
throw e
1114
}
1215

0 commit comments

Comments
 (0)