{"record":{"id":"54fa2ac5369311b2","repo":"earendil-works/pi","slug":"assistant-error-messages-must-not-be-empty","errorCode":null,"errorMessage":"Assistant error messages must not be empty","messagePattern":"Assistant error messages must not be empty","errorType":"validation","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"packages/server/src/protocol.ts","lineNumber":317,"sourceCode":"\t\t...(usage ? { usage } : {}),\n\t\ttimestamp: timestamp(message.timestamp),\n\t} as const;\n\tswitch (message.stopReason) {\n\t\tcase \"pending\":\n\t\t\treturn { ...common, status: \"streaming\" } satisfies AssistantTranscriptItem;\n\t\tcase \"stop\":\n\t\tcase \"length\":\n\t\tcase \"toolUse\":\n\t\t\treturn {\n\t\t\t\t...common,\n\t\t\t\tstatus: \"complete\",\n\t\t\t\tstopReason: message.stopReason,\n\t\t\t} satisfies AssistantTranscriptItem;\n\t\tcase \"deferred\":\n\t\t\tthrow new TypeError(\"Deferred assistant messages are not supported by protocol v1\");\n\t\tcase \"error\":\n\t\t\tif (message.errorMessage?.length === 0) {\n\t\t\t\tthrow new TypeError(\"Assistant error messages must not be empty\");\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...common,\n\t\t\t\tstatus: \"error\",\n\t\t\t\tstopReason: \"error\",\n\t\t\t\t...(message.errorMessage === undefined ? {} : { errorMessage: message.errorMessage }),\n\t\t\t} satisfies AssistantTranscriptItem;\n\t\tcase \"aborted\":\n\t\t\treturn {\n\t\t\t\t...common,\n\t\t\t\tstatus: \"aborted\",\n\t\t\t\tstopReason: \"aborted\",\n\t\t\t\t...(message.errorMessage === undefined ? {} : { errorMessage: message.errorMessage }),\n\t\t\t} satisfies AssistantTranscriptItem;\n\t\tdefault: {\n\t\t\tconst exhaustive: never = message.stopReason;\n\t\t\treturn exhaustive;\n\t\t}","sourceCodeStart":299,"sourceCodeEnd":335,"githubUrl":"https://github.com/earendil-works/pi/blob/4af9d21d3b4d664e4a29fcabfec85171077248e3/packages/server/src/protocol.ts#L299-L335","documentation":"Error \"Assistant error messages must not be empty\" thrown in earendil-works/pi.","triggerScenarios":"Thrown at packages/server/src/protocol.ts:317 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Include a non-empty error message on assistant error messages."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"4af9d21d3b4d664e4a29fcabfec85171077248e3","analyzedAt":"2026-08-24T13:07:14.692Z","schemaVersion":2},"datasetVersion":"2026-08-24T17:17:21.512Z"}