{"record":{"id":"da309525352e79c4","repo":"mastra-ai/mastra","slug":"openaisdkagent-resumedata-must-include-a-message","errorCode":null,"errorMessage":"OpenAISDKAgent resumeData must include a message.","messagePattern":"OpenAISDKAgent resumeData must include a message\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"agent-sdks/openai/src/index.ts","lineNumber":246,"sourceCode":"    return this.stream(data.message, createOpenAIResumeRunOptions(data, options));\n  }\n\n  private resolveOpenAIAgent(): OpenAIAgent {\n    this.#createdAgent ??= this.options.agent ?? new OpenAIAgent(toOpenAIAgentOptions(this.options));\n    return this.#createdAgent;\n  }\n}\n\nfunction getStructuredOutputOption<OUTPUT>(\n  options?: SDKAgentRunOptions<OUTPUT>,\n): OpenAIStructuredOutputOption<OUTPUT> | undefined {\n  return options?.structuredOutput as OpenAIStructuredOutputOption<OUTPUT> | undefined;\n}\n\nfunction validateOpenAIResumeData(resumeData: OpenAISDKAgentResumeData): OpenAISDKAgentResumeData {\n  const record = toRecord(resumeData);\n  if (!record || !('message' in record)) {\n    throw new Error('OpenAISDKAgent resumeData must include a message.');\n  }\n\n  if (\n    typeof resumeData.previousResponseId === 'string' ||\n    typeof resumeData.conversationId === 'string' ||\n    resumeData.session !== undefined\n  ) {\n    return resumeData;\n  }\n\n  throw new Error('OpenAISDKAgent resumeData must include previousResponseId, conversationId, or session.');\n}\n\nfunction createOpenAIResumeRunOptions<OUTPUT>(\n  resumeData: OpenAISDKAgentResumeData,\n  options?: SDKAgentRunOptions<OUTPUT>,\n): SDKAgentRunOptions<OUTPUT> {\n  return {","sourceCodeStart":228,"sourceCodeEnd":264,"githubUrl":"https://github.com/mastra-ai/mastra/blob/75dd419e613fe9c39f846ffc500716141b74fda6/agent-sdks/openai/src/index.ts#L228-L264","documentation":"validateOpenAIResumeData requires resumeData to be an object containing a 'message' property — the conversation message used to resume an OpenAI Agents SDK session. It throws when resumeData is not a record or lacks the message key.","triggerScenarios":"openAISDKAgent.resume(data) with an empty object, a non-object value, or an object containing only previousResponseId/conversationId/session but no message.","commonSituations":"Persisting only the OpenAI response/conversation ID and attempting to resume with it alone; reusing resume data shaped for the Claude or Cursor SDK agents; hand-building resumeData after deserialization drops fields.","solutions":["Include the prior conversation message: resume({ message: savedMessage }).","Persist the complete OpenAISDKAgentResumeData (message plus any previousResponseId/conversationId/session) instead of just identifiers.","Validate before calling: object check plus 'message' in resumeData."],"exampleFix":"// before\nawait agent.resume({ previousResponseId: saved.responseId });\n// after\nawait agent.resume({ message: saved.message, previousResponseId: saved.responseId });","handlingStrategy":"validation","validationCode":"function canResumeOpenAI(data: unknown): boolean {\n  return typeof data === 'object' && data !== null && 'message' in data;\n}\nif (!canResumeOpenAI(saved)) throw new Error('Saved OpenAI resume data is missing message');\nawait agent.resume(saved);","typeGuard":"function isOpenAIResumeData(v: unknown): v is OpenAISDKAgentResumeData {\n  return typeof v === 'object' && v !== null && 'message' in v;\n}","tryCatchPattern":"try {\n  await agent.resume(saved);\n} catch (e) {\n  if (e instanceof Error && e.message.includes('resumeData must include a message')) {\n    // fall back to a fresh generate\n    await agent.generate(prompt);\n  } else throw e;\n}","preventionTips":["Persist the whole OpenAISDKAgentResumeData (message plus previousResponseId/conversationId/session).","Never assume identifiers alone (responseId/conversationId) are sufficient to resume.","Add a load-time validation step for any deserialized resume data."],"tags":["resume","validation","argument-validation","openai"],"backgroundTag":"invalid-resume-data","analyzedSha":"75dd419e613fe9c39f846ffc500716141b74fda6","analyzedAt":"2026-08-30T00:15:31.844Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}