{"record":{"id":"c5a001b34f756cf8","repo":"mastra-ai/mastra","slug":"observability-storage-create-feedback-not-implemen","errorCode":"OBSERVABILITY_STORAGE_CREATE_FEEDBACK_NOT_IMPLEMENTED","errorMessage":"This storage provider does not support creating feedback","messagePattern":"This storage provider does not support creating feedback","errorType":"error_code","errorClass":"MastraError","httpStatus":null,"severity":"error","filePath":"packages/core/src/storage/domains/observability/base.ts","lineNumber":657,"sourceCode":"\n  async getScorePercentiles(_args: GetScorePercentilesArgs): Promise<GetScorePercentilesResponse> {\n    throw new MastraError({\n      id: 'OBSERVABILITY_STORAGE_GET_SCORE_PERCENTILES_NOT_IMPLEMENTED',\n      domain: ErrorDomain.MASTRA_OBSERVABILITY,\n      category: ErrorCategory.SYSTEM,\n      text: 'This storage provider does not support score percentiles',\n    });\n  }\n\n  // ============================================================================\n  // Feedback\n  // ============================================================================\n\n  /**\n   * Creates a single feedback record.\n   */\n  async createFeedback(_args: CreateFeedbackArgs): Promise<void> {\n    throw new MastraError({\n      id: 'OBSERVABILITY_STORAGE_CREATE_FEEDBACK_NOT_IMPLEMENTED',\n      domain: ErrorDomain.MASTRA_OBSERVABILITY,\n      category: ErrorCategory.SYSTEM,\n      text: 'This storage provider does not support creating feedback',\n    });\n  }\n\n  /**\n   * Creates multiple feedback observations in a single batch.\n   */\n  async batchCreateFeedback(_args: BatchCreateFeedbackArgs): Promise<void> {\n    throw new MastraError({\n      id: 'OBSERVABILITY_STORAGE_BATCH_CREATE_FEEDBACK_NOT_IMPLEMENTED',\n      domain: ErrorDomain.MASTRA_OBSERVABILITY,\n      category: ErrorCategory.SYSTEM,\n      text: 'This storage provider does not support batch creating feedback',\n    });\n  }","sourceCodeStart":639,"sourceCodeEnd":675,"githubUrl":"https://github.com/mastra-ai/mastra/blob/75dd419e613fe9c39f846ffc500716141b74fda6/packages/core/src/storage/domains/observability/base.ts#L639-L675","documentation":"createFeedback persists a human or automated feedback record and is an optional capability; the base observability storage class throws this default. The configured storage adapter has no feedback write implementation.","triggerScenarios":"Calling storage.createFeedback({ intent, feedback, source, ... }) on an adapter extending the base without overriding it, or via feedback UI/hooks wired to a provider that only implements traces/spans.","commonSituations":"Custom or minimal storage adapters; enabling user feedback features without upgrading storage; mixed @mastra/core and adapter versions.","solutions":["Switch to a provider that implements feedback persistence (libsql, postgres, upstash).","Implement createFeedback in your custom adapter writing a feedback row.","Catch the error and disable/queue feedback collection in the UI.","Verify the adapter package supports the feedback API surface."],"exampleFix":"// before\nawait storage.createFeedback({ intent: 'thumbs-up', feedback: 'great', source: 'user' }); // throws\n// after\ntry {\n  await storage.createFeedback({ intent: 'thumbs-up', feedback: 'great', source: 'user' });\n} catch (e) {\n  if (e instanceof MastraError && e.id === 'OBSERVABILITY_STORAGE_CREATE_FEEDBACK_NOT_IMPLEMENTED') {\n    return; // feature unsupported by this storage backend\n  }\n  throw e;\n}","handlingStrategy":"try-catch","validationCode":"const supportsFeedback = storage.constructor.prototype.hasOwnProperty('createFeedback');\nif (!supportsFeedback) { disableFeedbackUI(); return; }","typeGuard":"function canCreateFeedback(s: any): s is { createFeedback: (a: any) => Promise<void> } {\n  return typeof s?.createFeedback === 'function' && s.constructor.prototype.hasOwnProperty('createFeedback');\n}","tryCatchPattern":"try {\n  await storage.createFeedback(args);\n} catch (e) {\n  if (e instanceof MastraError && e.id === 'OBSERVABILITY_STORAGE_CREATE_FEEDBACK_NOT_IMPLEMENTED') {\n    logger.warn('feedback not supported by storage; skipping');\n    return;\n  }\n  throw e;\n}","preventionTips":["Enable feedback features only with a feedback-capable storage provider","Probe capability at app startup","Queue feedback client-side when unsupported","Keep adapter packages up to date"],"tags":["storage","observability","not-implemented","feedback"],"backgroundTag":"storage-capability-not-implemented","analyzedSha":"75dd419e613fe9c39f846ffc500716141b74fda6","analyzedAt":"2026-08-30T00:15:31.844Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}