{"record":{"id":"de746577ccd7c0ae","repo":"mastra-ai/mastra","slug":"observability-storage-get-feedback-time-series-not","errorCode":"OBSERVABILITY_STORAGE_GET_FEEDBACK_TIME_SERIES_NOT_IMPLEMENTED","errorMessage":"This storage provider does not support feedback time series","messagePattern":"This storage provider does not support feedback time series","errorType":"error_code","errorClass":"MastraError","httpStatus":null,"severity":"error","filePath":"packages/core/src/storage/domains/observability/base.ts","lineNumber":708,"sourceCode":"    throw new MastraError({\n      id: 'OBSERVABILITY_STORAGE_GET_FEEDBACK_AGGREGATE_NOT_IMPLEMENTED',\n      domain: ErrorDomain.MASTRA_OBSERVABILITY,\n      category: ErrorCategory.SYSTEM,\n      text: 'This storage provider does not support feedback aggregation',\n    });\n  }\n\n  async getFeedbackBreakdown(_args: GetFeedbackBreakdownArgs): Promise<GetFeedbackBreakdownResponse> {\n    throw new MastraError({\n      id: 'OBSERVABILITY_STORAGE_GET_FEEDBACK_BREAKDOWN_NOT_IMPLEMENTED',\n      domain: ErrorDomain.MASTRA_OBSERVABILITY,\n      category: ErrorCategory.SYSTEM,\n      text: 'This storage provider does not support feedback breakdown',\n    });\n  }\n\n  async getFeedbackTimeSeries(_args: GetFeedbackTimeSeriesArgs): Promise<GetFeedbackTimeSeriesResponse> {\n    throw new MastraError({\n      id: 'OBSERVABILITY_STORAGE_GET_FEEDBACK_TIME_SERIES_NOT_IMPLEMENTED',\n      domain: ErrorDomain.MASTRA_OBSERVABILITY,\n      category: ErrorCategory.SYSTEM,\n      text: 'This storage provider does not support feedback time series',\n    });\n  }\n\n  async getFeedbackPercentiles(_args: GetFeedbackPercentilesArgs): Promise<GetFeedbackPercentilesResponse> {\n    throw new MastraError({\n      id: 'OBSERVABILITY_STORAGE_GET_FEEDBACK_PERCENTILES_NOT_IMPLEMENTED',\n      domain: ErrorDomain.MASTRA_OBSERVABILITY,\n      category: ErrorCategory.SYSTEM,\n      text: 'This storage provider does not support feedback percentiles',\n    });\n  }\n}\n","sourceCodeStart":690,"sourceCodeEnd":725,"githubUrl":"https://github.com/mastra-ai/mastra/blob/75dd419e613fe9c39f846ffc500716141b74fda6/packages/core/src/storage/domains/observability/base.ts#L690-L725","documentation":"Thrown by the base MastraObservabilityStorage class when getFeedbackTimeSeries() is called on a provider that has not overridden it. Time-series aggregation of feedback over time buckets is an optional storage capability, and the base class default is to fail fast with this error.","triggerScenarios":"Calling observabilityStorage.getFeedbackTimeSeries(args) against an adapter inheriting the base implementation (no feedback time-series support).","commonSituations":"Building dashboards over a custom storage adapter; calling feedback time-series endpoints after switching storage backends to one with less coverage; version drift between @mastra/core and the storage adapter.","solutions":["Use a storage provider that implements getFeedbackTimeSeries (first-party DB adapters).","Override getFeedbackTimeSeries in your adapter, bucketing feedback records by the requested interval and returning GetFeedbackTimeSeriesResponse.","Feature-detect/wrap the call so callers receive an empty series or a clear 'unsupported' response instead of a crash.","Upgrade the storage adapter package so it matches the core version that introduced this API."],"exampleFix":"// before\nconst series = await customStorage.getFeedbackTimeSeries({ interval: '1d' }); // throws\n\n// after\nclass MyStorage extends MastraObservabilityStorage {\n  async getFeedbackTimeSeries(args: GetFeedbackTimeSeriesArgs): Promise<GetFeedbackTimeSeriesResponse> {\n    return this.aggregateFeedbackByInterval(args);\n  }\n}","handlingStrategy":"fallback","validationCode":"if (typeof (storage as any).getFeedbackTimeSeries !== 'function') { /* unsupported */ }","typeGuard":"function supportsFeedbackTimeSeries(s: unknown): s is MastraObservabilityStorage & { getFeedbackTimeSeries(a: GetFeedbackTimeSeriesArgs): Promise<GetFeedbackTimeSeriesResponse> } {\n  return typeof (s as any)?.getFeedbackTimeSeries === 'function';\n}","tryCatchPattern":"try {\n  series = await storage.getFeedbackTimeSeries(args);\n} catch (e) {\n  if ((e as MastraError).id === 'OBSERVABILITY_STORAGE_GET_FEEDBACK_TIME_SERIES_NOT_IMPLEMENTED') {\n    series = emptyTimeSeriesFallback;\n  } else throw e;\n}","preventionTips":["Verify adapter support for feedback time-series before wiring dashboards.","Use feature flags to disable time-series widgets for unsupported backends.","Keep storage adapters upgraded in lockstep with core.","Add an integration test asserting the API surface of your chosen adapter."],"tags":["storage","observability","not-implemented","feedback","time-series"],"backgroundTag":"storage-provider-not-implemented","analyzedSha":"75dd419e613fe9c39f846ffc500716141b74fda6","analyzedAt":"2026-08-30T00:15:31.844Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}