{"record":{"id":"9edc0174475364a3","repo":"mastra-ai/mastra","slug":"observability-storage-get-score-time-series-not-im","errorCode":"OBSERVABILITY_STORAGE_GET_SCORE_TIME_SERIES_NOT_IMPLEMENTED","errorMessage":"This storage provider does not support score time series","messagePattern":"This storage provider does not support score time series","errorType":"error_code","errorClass":"MastraError","httpStatus":null,"severity":"error","filePath":"packages/core/src/storage/domains/observability/base.ts","lineNumber":632,"sourceCode":"    throw new MastraError({\n      id: 'OBSERVABILITY_STORAGE_GET_SCORE_AGGREGATE_NOT_IMPLEMENTED',\n      domain: ErrorDomain.MASTRA_OBSERVABILITY,\n      category: ErrorCategory.SYSTEM,\n      text: 'This storage provider does not support score aggregation',\n    });\n  }\n\n  async getScoreBreakdown(_args: GetScoreBreakdownArgs): Promise<GetScoreBreakdownResponse> {\n    throw new MastraError({\n      id: 'OBSERVABILITY_STORAGE_GET_SCORE_BREAKDOWN_NOT_IMPLEMENTED',\n      domain: ErrorDomain.MASTRA_OBSERVABILITY,\n      category: ErrorCategory.SYSTEM,\n      text: 'This storage provider does not support score breakdown',\n    });\n  }\n\n  async getScoreTimeSeries(_args: GetScoreTimeSeriesArgs): Promise<GetScoreTimeSeriesResponse> {\n    throw new MastraError({\n      id: 'OBSERVABILITY_STORAGE_GET_SCORE_TIME_SERIES_NOT_IMPLEMENTED',\n      domain: ErrorDomain.MASTRA_OBSERVABILITY,\n      category: ErrorCategory.SYSTEM,\n      text: 'This storage provider does not support score time series',\n    });\n  }\n\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","sourceCodeStart":614,"sourceCodeEnd":650,"githubUrl":"https://github.com/mastra-ai/mastra/blob/75dd419e613fe9c39f846ffc500716141b74fda6/packages/core/src/storage/domains/observability/base.ts#L614-L650","documentation":"getScoreTimeSeries returns scores bucketed into time intervals and requires provider-specific date-bucketing queries; the base class throws this by default. It indicates your storage adapter does not implement the time-series score capability.","triggerScenarios":"Calling storage.getScoreTimeSeries({ scope, timeRange, granularity }) on an adapter extending the base without an override, or from analytics/dashboard code hitting a minimal provider.","commonSituations":"Custom or in-memory storage adapters; trend charts in tooling; older third-party storage packages lacking newer observability methods.","solutions":["Switch to a provider that implements score time series (libsql, postgres, upstash).","Implement getScoreTimeSeries in your adapter using date-bucket aggregation.","Catch the error and synthesize a series from listScores results client-side.","Ensure the storage package version supports the time-series API."],"exampleFix":"// before\nconst series = await storage.getScoreTimeSeries({ scope, timeRange, granularity: 'day' }); // throws\n// after\ntry {\n  const series = await storage.getScoreTimeSeries({ scope, timeRange, granularity: 'day' });\n} catch (e) {\n  if (e instanceof MastraError && e.id === 'OBSERVABILITY_STORAGE_GET_SCORE_TIME_SERIES_NOT_IMPLEMENTED') {\n    return bucketClientSide(await storage.listScores({ scope, timeRange }), granularity);\n  }\n  throw e;\n}","handlingStrategy":"fallback","validationCode":"const supportsTimeSeries = storage.constructor.prototype.hasOwnProperty('getScoreTimeSeries');\nif (!supportsTimeSeries) return bucketClientSide(scores, granularity);","typeGuard":"function hasTimeSeries(s: any): s is { getScoreTimeSeries: (a: any) => Promise<any> } {\n  return typeof s?.getScoreTimeSeries === 'function' && s.constructor.prototype.hasOwnProperty('getScoreTimeSeries');\n}","tryCatchPattern":"try {\n  return await storage.getScoreTimeSeries(args);\n} catch (e) {\n  if (e instanceof MastraError && e.id === 'OBSERVABILITY_STORAGE_GET_SCORE_TIME_SERIES_NOT_IMPLEMENTED') {\n    return bucketClientSide(await safeListScores(storage, { scope: args.scope, timeRange: args.timeRange }), args.granularity);\n  }\n  throw e;\n}","preventionTips":["Pick date-capable storage backends for time-series charts","Implement time-series overrides in custom adapters","Gate trend charts on provider capability","Pin adapter versions with core"],"tags":["storage","observability","not-implemented","time-series"],"backgroundTag":"storage-capability-not-implemented","analyzedSha":"75dd419e613fe9c39f846ffc500716141b74fda6","analyzedAt":"2026-08-30T00:15:31.844Z","schemaVersion":2},"datasetVersion":"2026-08-30T08:17:16.595Z"}