@mastra/core
Version:
Mastra is a framework for building AI-powered applications and agents with a modern TypeScript stack.
144 lines • 8.74 kB
TypeScript
import type { InMemoryDB } from '../inmemory-db.js';
import { ObservabilityStorage } from './base.js';
import type { GetEntityTypesArgs, GetEntityTypesResponse, GetEntityNamesArgs, GetEntityNamesResponse, GetServiceNamesArgs, GetServiceNamesResponse, GetEnvironmentsArgs, GetEnvironmentsResponse, GetTagsArgs, GetTagsResponse, GetMetricNamesArgs, GetMetricNamesResponse, GetMetricLabelKeysArgs, GetMetricLabelKeysResponse, GetMetricLabelValuesArgs, GetMetricLabelValuesResponse } from './discovery.js';
import type { BatchCreateFeedbackArgs, CreateFeedbackArgs, GetFeedbackAggregateArgs, GetFeedbackAggregateResponse, GetFeedbackBreakdownArgs, GetFeedbackBreakdownResponse, GetFeedbackPercentilesArgs, GetFeedbackPercentilesResponse, GetFeedbackTimeSeriesArgs, GetFeedbackTimeSeriesResponse, ListFeedbackArgs, ListFeedbackResponse } from './feedback.js';
import type { BatchCreateLogsArgs, ListLogsArgs, ListLogsResponse } from './logs.js';
import type { BatchCreateMetricsArgs, ListMetricsArgs, ListMetricsResponse, GetMetricAggregateArgs, GetMetricAggregateResponse, GetMetricBreakdownArgs, GetMetricBreakdownResponse, GetMetricTimeSeriesArgs, GetMetricTimeSeriesResponse, GetMetricPercentilesArgs, GetMetricPercentilesResponse } from './metrics.js';
import type { BatchCreateScoresArgs, CreateScoreArgs, GetScoreAggregateArgs, GetScoreAggregateResponse, GetScoreBreakdownArgs, GetScoreBreakdownResponse, GetScorePercentilesArgs, GetScorePercentilesResponse, GetScoreTimeSeriesArgs, GetScoreTimeSeriesResponse, ListScoresArgs, ListScoresResponse, ScoreRecord } from './scores.js';
import type { BatchCreateSpansArgs, BatchDeleteTracesArgs, BatchUpdateSpansArgs, CreateSpanArgs, GetRootSpanArgs, GetRootSpanResponse, GetSpanArgs, GetSpanResponse, GetSpansArgs, GetSpansResponse, GetStructureResponse, GetTraceArgs, GetTraceResponse, ListBranchesArgs, ListBranchesResponse, ListTracesArgs, ListTracesLightResponse, ListTracesResponse, SpanRecord, UpdateSpanArgs } from './tracing.js';
import { TraceStatus } from './tracing.js';
/**
* Internal structure for storing a trace with computed properties for efficient filtering
*/
export interface TraceEntry {
/** All spans in this trace, keyed by spanId */
spans: Record<string, SpanRecord>;
/** Root span for this trace (parentSpanId === null) */
rootSpan: SpanRecord | null;
/** Computed trace status based on root span state */
status: TraceStatus;
/** True if any span in the trace has an error */
hasChildError: boolean;
}
/** In-memory implementation of ObservabilityStorage for testing and development. */
export declare class ObservabilityInMemory extends ObservabilityStorage {
private db;
constructor({ db }: {
db: InMemoryDB;
});
getFeatures(): readonly ["delta-polling"] | undefined;
dangerouslyClearAll(): Promise<void>;
private deltaPollingFeatureEnabled;
private assertDeltaPollingEnabled;
private allocateObservabilityCursorId;
/**
* Upserts a record into an append-only collection keyed by an id field.
*
* If an existing record with the same id is found, it is replaced in place
* (preserving its cursor id so delta polling does not re-emit it). Otherwise
* the record is appended and a fresh cursor id is allocated.
*/
private upsertByIdField;
private encodeDeltaCursor;
private decodeDeltaCursor;
private pageDeltaCursor;
private maxMatchingCursorId;
private createBranchCursorKey;
private maybeRegisterTraceCursor;
private maybeRegisterBranchCursor;
private buildDeltaResponse;
private listAppendOnlyDelta;
private getTraceCursorId;
private getMaxTraceCursorId;
private getMaxTraceStreamCursorId;
private getBranchCursorId;
private getMaxBranchCursorId;
private getMaxBranchStreamCursorId;
createSpan(args: CreateSpanArgs): Promise<void>;
batchCreateSpans(args: BatchCreateSpansArgs): Promise<void>;
private validateCreateSpan;
/**
* Inserts or updates a span in the trace and recomputes trace-level properties
*/
private upsertSpanToTrace;
/**
* Recomputes derived trace properties from all spans
*/
private recomputeTraceProperties;
getSpan(args: GetSpanArgs): Promise<GetSpanResponse | null>;
getSpans(args: GetSpansArgs): Promise<GetSpansResponse>;
getRootSpan(args: GetRootSpanArgs): Promise<GetRootSpanResponse | null>;
getTrace(args: GetTraceArgs): Promise<GetTraceResponse | null>;
getTraceLight(args: GetTraceArgs): Promise<GetStructureResponse | null>;
private getMatchingRootSpans;
listTraces(args: ListTracesArgs): Promise<ListTracesResponse>;
listTracesLight(args: ListTracesArgs): Promise<ListTracesLightResponse>;
/**
* Check if a trace matches all provided filters
*/
private traceMatchesFilters;
listBranches(args: ListBranchesArgs): Promise<ListBranchesResponse>;
/**
* Check if a single anchor span matches all provided branch filters. All
* predicates apply to the span itself (not the trace root) -- this is the
* key difference from {@link traceMatchesFilters}.
*/
private spanMatchesBranchFilters;
updateSpan(args: UpdateSpanArgs): Promise<void>;
batchUpdateSpans(args: BatchUpdateSpansArgs): Promise<void>;
batchDeleteTraces(args: BatchDeleteTracesArgs): Promise<void>;
batchCreateMetrics(args: BatchCreateMetricsArgs): Promise<void>;
listMetrics(args: ListMetricsArgs): Promise<ListMetricsResponse>;
private filterMetrics;
private metricMatchesFilters;
private aggregate;
private extractDistinctValues;
private interpolatePercentile;
/**
* Cost is returned alongside value-based OLAP results so callers can derive
* token and monetary views from the same filtered scan.
*/
private summarizeCost;
getMetricAggregate(args: GetMetricAggregateArgs): Promise<GetMetricAggregateResponse>;
getMetricBreakdown(args: GetMetricBreakdownArgs): Promise<GetMetricBreakdownResponse>;
getMetricTimeSeries(args: GetMetricTimeSeriesArgs): Promise<GetMetricTimeSeriesResponse>;
getMetricPercentiles(args: GetMetricPercentilesArgs): Promise<GetMetricPercentilesResponse>;
private intervalToMs;
getMetricNames(args: GetMetricNamesArgs): Promise<GetMetricNamesResponse>;
getMetricLabelKeys(args: GetMetricLabelKeysArgs): Promise<GetMetricLabelKeysResponse>;
getMetricLabelValues(args: GetMetricLabelValuesArgs): Promise<GetMetricLabelValuesResponse>;
/**
* Iterates every record across spans, logs, and metrics with shared
* context fields. Discovery operations need to surface entities and
* dimensions emitted on any observability surface, not just spans.
*/
private iterateObservabilityContextRecords;
getEntityTypes(_args: GetEntityTypesArgs): Promise<GetEntityTypesResponse>;
getEntityNames(args: GetEntityNamesArgs): Promise<GetEntityNamesResponse>;
getServiceNames(_args: GetServiceNamesArgs): Promise<GetServiceNamesResponse>;
getEnvironments(_args: GetEnvironmentsArgs): Promise<GetEnvironmentsResponse>;
getTags(args: GetTagsArgs): Promise<GetTagsResponse>;
batchCreateLogs(args: BatchCreateLogsArgs): Promise<void>;
listLogs(args: ListLogsArgs): Promise<ListLogsResponse>;
private logMatchesFilters;
createScore(args: CreateScoreArgs): Promise<void>;
batchCreateScores(args: BatchCreateScoresArgs): Promise<void>;
listScores(args: ListScoresArgs): Promise<ListScoresResponse>;
getScoreById(scoreId: string): Promise<ScoreRecord | null>;
private scoreMatchesFilters;
getScoreAggregate(args: GetScoreAggregateArgs): Promise<GetScoreAggregateResponse>;
getScoreBreakdown(args: GetScoreBreakdownArgs): Promise<GetScoreBreakdownResponse>;
getScoreTimeSeries(args: GetScoreTimeSeriesArgs): Promise<GetScoreTimeSeriesResponse>;
getScorePercentiles(args: GetScorePercentilesArgs): Promise<GetScorePercentilesResponse>;
private getNumericFeedbackValue;
private getComparisonDateRange;
createFeedback(args: CreateFeedbackArgs): Promise<void>;
batchCreateFeedback(args: BatchCreateFeedbackArgs): Promise<void>;
listFeedback(args: ListFeedbackArgs): Promise<ListFeedbackResponse>;
getFeedbackAggregate(args: GetFeedbackAggregateArgs): Promise<GetFeedbackAggregateResponse>;
getFeedbackBreakdown(args: GetFeedbackBreakdownArgs): Promise<GetFeedbackBreakdownResponse>;
getFeedbackTimeSeries(args: GetFeedbackTimeSeriesArgs): Promise<GetFeedbackTimeSeriesResponse>;
getFeedbackPercentiles(args: GetFeedbackPercentilesArgs): Promise<GetFeedbackPercentilesResponse>;
private feedbackMatchesFilters;
}
//# sourceMappingURL=inmemory.d.ts.map