@mastra/pg 1.12.1 → 1.13.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +91 -0
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/docs-memory-working-memory.md +2 -2
- package/dist/docs/references/reference-storage-composite.md +34 -2
- package/dist/docs/references/reference-storage-postgresql.md +1 -1
- package/dist/index.cjs +3837 -147
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3836 -149
- package/dist/index.js.map +1 -1
- package/dist/{storage → shared}/pool-config.d.ts +10 -2
- package/dist/shared/pool-config.d.ts.map +1 -0
- package/dist/storage/domains/agents/index.d.ts.map +1 -1
- package/dist/storage/domains/background-tasks/index.d.ts.map +1 -1
- package/dist/storage/domains/blobs/index.d.ts +1 -0
- package/dist/storage/domains/blobs/index.d.ts.map +1 -1
- package/dist/storage/domains/mcp-clients/index.d.ts +2 -0
- package/dist/storage/domains/mcp-clients/index.d.ts.map +1 -1
- package/dist/storage/domains/mcp-servers/index.d.ts +2 -0
- package/dist/storage/domains/mcp-servers/index.d.ts.map +1 -1
- package/dist/storage/domains/observability/v-next/ddl.d.ts +55 -0
- package/dist/storage/domains/observability/v-next/ddl.d.ts.map +1 -0
- package/dist/storage/domains/observability/v-next/discovery.d.ts +52 -0
- package/dist/storage/domains/observability/v-next/discovery.d.ts.map +1 -0
- package/dist/storage/domains/observability/v-next/feedback.d.ts +17 -0
- package/dist/storage/domains/observability/v-next/feedback.d.ts.map +1 -0
- package/dist/storage/domains/observability/v-next/filters.d.ts +29 -0
- package/dist/storage/domains/observability/v-next/filters.d.ts.map +1 -0
- package/dist/storage/domains/observability/v-next/helpers.d.ts +33 -0
- package/dist/storage/domains/observability/v-next/helpers.d.ts.map +1 -0
- package/dist/storage/domains/observability/v-next/index.d.ts +104 -0
- package/dist/storage/domains/observability/v-next/index.d.ts.map +1 -0
- package/dist/storage/domains/observability/v-next/listing.d.ts +53 -0
- package/dist/storage/domains/observability/v-next/listing.d.ts.map +1 -0
- package/dist/storage/domains/observability/v-next/logs.d.ts +8 -0
- package/dist/storage/domains/observability/v-next/logs.d.ts.map +1 -0
- package/dist/storage/domains/observability/v-next/metrics.d.ts +19 -0
- package/dist/storage/domains/observability/v-next/metrics.d.ts.map +1 -0
- package/dist/storage/domains/observability/v-next/olap.d.ts +93 -0
- package/dist/storage/domains/observability/v-next/olap.d.ts.map +1 -0
- package/dist/storage/domains/observability/v-next/partitioning.d.ts +76 -0
- package/dist/storage/domains/observability/v-next/partitioning.d.ts.map +1 -0
- package/dist/storage/domains/observability/v-next/pg-errors.d.ts +25 -0
- package/dist/storage/domains/observability/v-next/pg-errors.d.ts.map +1 -0
- package/dist/storage/domains/observability/v-next/polling.d.ts +28 -0
- package/dist/storage/domains/observability/v-next/polling.d.ts.map +1 -0
- package/dist/storage/domains/observability/v-next/scores.d.ts +17 -0
- package/dist/storage/domains/observability/v-next/scores.d.ts.map +1 -0
- package/dist/storage/domains/observability/v-next/signal-schema.d.ts +776 -0
- package/dist/storage/domains/observability/v-next/signal-schema.d.ts.map +1 -0
- package/dist/storage/domains/observability/v-next/sql.d.ts +31 -0
- package/dist/storage/domains/observability/v-next/sql.d.ts.map +1 -0
- package/dist/storage/domains/observability/v-next/traces.d.ts +16 -0
- package/dist/storage/domains/observability/v-next/traces.d.ts.map +1 -0
- package/dist/storage/domains/observability/v-next/tracing.d.ts +19 -0
- package/dist/storage/domains/observability/v-next/tracing.d.ts.map +1 -0
- package/dist/storage/domains/skills/index.d.ts +2 -0
- package/dist/storage/domains/skills/index.d.ts.map +1 -1
- package/dist/storage/domains/tool-provider-connections/index.d.ts +20 -0
- package/dist/storage/domains/tool-provider-connections/index.d.ts.map +1 -0
- package/dist/storage/domains/workflows/index.d.ts.map +1 -1
- package/dist/storage/domains/workspaces/index.d.ts +2 -0
- package/dist/storage/domains/workspaces/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +89 -1
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/vector/index.d.ts.map +1 -1
- package/package.json +9 -7
- package/dist/storage/pool-config.d.ts.map +0 -1
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import type { ConnectionOptions } from 'node:tls';
|
|
1
2
|
import type { PoolConfig } from 'pg';
|
|
2
|
-
import type { ConnectionStringConfig } from '../shared/config.js';
|
|
3
3
|
/**
|
|
4
4
|
* Builds the `pg.Pool` options for a connection-string based config.
|
|
5
5
|
*
|
|
6
|
+
* Shared by both `PostgresStore` and `PgVector` so connection-string SSL
|
|
7
|
+
* precedence behaves identically across the storage and vector code paths.
|
|
8
|
+
*
|
|
6
9
|
* node-postgres re-parses `connectionString` via `pg-connection-string` and
|
|
7
10
|
* `Object.assign`s the parsed result over any explicit options. As a result an
|
|
8
11
|
* `sslmode=` / `ssl=` query param in the URL silently overrides an explicit
|
|
@@ -17,7 +20,12 @@ import type { ConnectionStringConfig } from '../shared/config.js';
|
|
|
17
20
|
*
|
|
18
21
|
* @see https://github.com/mastra-ai/mastra/issues/17307
|
|
19
22
|
*/
|
|
20
|
-
export declare function buildConnectionStringPoolConfig(config:
|
|
23
|
+
export declare function buildConnectionStringPoolConfig(config: {
|
|
24
|
+
connectionString: string;
|
|
25
|
+
ssl?: ConnectionOptions | boolean;
|
|
26
|
+
max?: number;
|
|
27
|
+
idleTimeoutMillis?: number;
|
|
28
|
+
}, defaults: {
|
|
21
29
|
max: number;
|
|
22
30
|
idleTimeoutMillis: number;
|
|
23
31
|
}): PoolConfig;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool-config.d.ts","sourceRoot":"","sources":["../../src/shared/pool-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAGrC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE;IACN,gBAAgB,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,EACD,QAAQ,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,GACnD,UAAU,CAYZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/agents/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EAQd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAEnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,qBAAa,QAAS,SAAQ,aAAa;;IAMzC,oCAAoC;IACpC,MAAM,CAAC,QAAQ,CAAC,cAAc,sDAAiD;gBAEnE,MAAM,EAAE,cAAc;IAUlC;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAkBlD;;;OAGG;IACH,0BAA0B,IAAI,kBAAkB,EAAE;IAIlD;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/agents/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EAQd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAEnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,qBAAa,QAAS,SAAQ,aAAa;;IAMzC,oCAAoC;IACpC,MAAM,CAAC,QAAQ,CAAC,cAAc,sDAAiD;gBAEnE,MAAM,EAAE,cAAc;IAUlC;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAkBlD;;;OAGG;IACH,0BAA0B,IAAI,kBAAkB,EAAE;IAIlD;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA0O3B;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAepC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1C,OAAO,CAAC,QAAQ;IAcV,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAyBrD,MAAM,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,uBAAuB,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmF5E,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA6FjE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBjC,IAAI,CAAC,IAAI,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAsKrE,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAkE/D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAwBpD,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IA2BxF,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IA2B/D,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA2EnE,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBzD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBrD,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,uBAAuB;IAW/B,OAAO,CAAC,eAAe;CA8BxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/background-tasks/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAEd,UAAU,EACV,cAAc,EACd,oBAAoB,EACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAyC,MAAM,sBAAsB,CAAC;AAGrG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/background-tasks/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAEd,UAAU,EACV,cAAc,EACd,oBAAoB,EACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAyC,MAAM,sBAAsB,CAAC;AAGrG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAwD/C,qBAAa,iBAAkB,SAAQ,sBAAsB;;IAM3D,MAAM,CAAC,QAAQ,CAAC,cAAc,uCAAqC;gBAEvD,MAAM,EAAE,cAAc;IAS5B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAyBtE,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAqBlD,0BAA0B,IAAI,kBAAkB,EAAE;IAK5C,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWrC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWpC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B/C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDvE,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAMvD,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC;IAwFtD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAuC9C,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAQlC,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAQ/D"}
|
|
@@ -5,6 +5,7 @@ export declare class BlobsPG extends BlobStore {
|
|
|
5
5
|
#private;
|
|
6
6
|
static readonly MANAGED_TABLES: readonly ["mastra_skill_blobs"];
|
|
7
7
|
constructor(config: PgDomainConfig);
|
|
8
|
+
static getExportDDL(schemaName?: string): string[];
|
|
8
9
|
init(): Promise<void>;
|
|
9
10
|
put(entry: StorageBlobEntry): Promise<void>;
|
|
10
11
|
get(hash: string): Promise<StorageBlobEntry | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/blobs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoC,MAAM,sBAAsB,CAAC;AACnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,qBAAa,OAAQ,SAAQ,SAAS;;IAIpC,MAAM,CAAC,QAAQ,CAAC,cAAc,kCAAgC;gBAElD,MAAM,EAAE,cAAc;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/blobs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoC,MAAM,sBAAsB,CAAC;AACnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,qBAAa,OAAQ,SAAQ,SAAS;;IAIpC,MAAM,CAAC,QAAQ,CAAC,cAAc,kCAAgC;gBAElD,MAAM,EAAE,cAAc;IAOlC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAW5C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrB,GAAG,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAOnD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMnC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMtC,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAiBjE,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;CAa3C"}
|
|
@@ -6,6 +6,8 @@ export declare class MCPClientsPG extends MCPClientsStorage {
|
|
|
6
6
|
#private;
|
|
7
7
|
static readonly MANAGED_TABLES: readonly ["mastra_mcp_clients", "mastra_mcp_client_versions"];
|
|
8
8
|
constructor(config: PgDomainConfig);
|
|
9
|
+
static getDefaultIndexDefs(schemaPrefix: string): CreateIndexOptions[];
|
|
10
|
+
static getExportDDL(schemaName?: string): string[];
|
|
9
11
|
getDefaultIndexDefinitions(): CreateIndexOptions[];
|
|
10
12
|
createDefaultIndexes(): Promise<void>;
|
|
11
13
|
init(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/mcp-clients/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAOlB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,oBAAoB,EACpB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,gBAAgB,EAChB,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/mcp-clients/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAOlB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,oBAAoB,EACpB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,gBAAgB,EAChB,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,0CAA0C,CAAC;AAGlD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAK/C,qBAAa,YAAa,SAAQ,iBAAiB;;IAMjD,MAAM,CAAC,QAAQ,CAAC,cAAc,gEAA2D;gBAE7E,MAAM,EAAE,cAAc;IASlC,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAWtE,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAuBlD,0BAA0B,IAAI,kBAAkB,EAAE;IAK5C,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAarC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAarB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAapC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IASpC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAwBzD,MAAM,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,2BAA2B,CAAA;KAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA2ExF,MAAM,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAiFzE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBjC,IAAI,CAAC,IAAI,CAAC,EAAE,0BAA0B,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAkG7E,aAAa,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgD5E,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IA2BxD,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IA8BhG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IA8BvE,YAAY,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,2BAA2B,CAAC;IA6ErF,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBzD,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BzD,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,eAAe;CAaxB"}
|
|
@@ -6,6 +6,8 @@ export declare class MCPServersPG extends MCPServersStorage {
|
|
|
6
6
|
#private;
|
|
7
7
|
static readonly MANAGED_TABLES: readonly ["mastra_mcp_servers", "mastra_mcp_server_versions"];
|
|
8
8
|
constructor(config: PgDomainConfig);
|
|
9
|
+
static getDefaultIndexDefs(schemaPrefix: string): CreateIndexOptions[];
|
|
10
|
+
static getExportDDL(schemaName?: string): string[];
|
|
9
11
|
getDefaultIndexDefinitions(): CreateIndexOptions[];
|
|
10
12
|
createDefaultIndexes(): Promise<void>;
|
|
11
13
|
init(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/mcp-servers/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAOlB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,oBAAoB,EACpB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,gBAAgB,EAChB,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/mcp-servers/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAOlB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,oBAAoB,EACpB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,gBAAgB,EAChB,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,0CAA0C,CAAC;AAGlD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAiB/C,qBAAa,YAAa,SAAQ,iBAAiB;;IAMjD,MAAM,CAAC,QAAQ,CAAC,cAAc,gEAA2D;gBAE7E,MAAM,EAAE,cAAc;IASlC,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAWtE,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAuBlD,0BAA0B,IAAI,kBAAkB,EAAE;IAK5C,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAarC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAarB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAapC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IASpC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAwBzD,MAAM,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,2BAA2B,CAAA;KAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA2ExF,MAAM,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAiFzE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBjC,IAAI,CAAC,IAAI,CAAC,EAAE,0BAA0B,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAkG7E,aAAa,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0D5E,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IA2BxD,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IA8BhG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IA8BvE,YAAY,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,2BAA2B,CAAC;IA6ErF,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBzD,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BzD,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,eAAe;CAqBxB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Raw DDL for Postgres v-next observability tables.
|
|
3
|
+
*
|
|
4
|
+
* One table per signal:
|
|
5
|
+
* - mastra_span_events (insert-only ended spans; root spans surfaced
|
|
6
|
+
* via partial indexes, not a separate table)
|
|
7
|
+
* - mastra_metric_events
|
|
8
|
+
* - mastra_log_events
|
|
9
|
+
* - mastra_score_events
|
|
10
|
+
* - mastra_feedback_events
|
|
11
|
+
* - mastra_observability_discovery (cache table for discovery values)
|
|
12
|
+
*
|
|
13
|
+
* Physical conventions:
|
|
14
|
+
* - timestamptz for all timestamps (millisecond precision; Postgres native)
|
|
15
|
+
* - text + jsonb for IDs and payloads
|
|
16
|
+
* - text[] for `tags`, jsonb for `metadataSearch` / `labels`
|
|
17
|
+
* - Range partitioning by day on the time column (endedAt for spans, timestamp
|
|
18
|
+
* for others). Partition key is part of every primary key, as Postgres
|
|
19
|
+
* requires for partitioned tables.
|
|
20
|
+
* - Root-span lookups (the `listTraces` / `getRootSpan` read surface) are
|
|
21
|
+
* served by partial indexes on `mastra_span_events`
|
|
22
|
+
* (`WHERE "parentSpanId" IS NULL`). This is the Postgres-idiomatic
|
|
23
|
+
* equivalent of the ClickHouse `mastra_trace_roots` incremental MV:
|
|
24
|
+
* selective enough to act as a projection while avoiding the trigger,
|
|
25
|
+
* duplicate storage, and write amplification of a second table. The
|
|
26
|
+
* partial indexes are also chunk-local on a Timescale hypertable, so the
|
|
27
|
+
* same plan applies there.
|
|
28
|
+
* - Retention is intentionally NOT implemented in this domain; the partition
|
|
29
|
+
* skeleton exists so a future `mastra retention` CLI command can drop or
|
|
30
|
+
* compress old partitions. pg_partman is detected and used when available.
|
|
31
|
+
* - TimescaleDB is detected and create_hypertable() is called when the
|
|
32
|
+
* extension is present. The base DDL is identical either way.
|
|
33
|
+
*/
|
|
34
|
+
export declare const TABLE_SPAN_EVENTS = "mastra_span_events";
|
|
35
|
+
export declare const TABLE_METRIC_EVENTS = "mastra_metric_events";
|
|
36
|
+
export declare const TABLE_LOG_EVENTS = "mastra_log_events";
|
|
37
|
+
export declare const TABLE_SCORE_EVENTS = "mastra_score_events";
|
|
38
|
+
export declare const TABLE_FEEDBACK_EVENTS = "mastra_feedback_events";
|
|
39
|
+
export declare const TABLE_DISCOVERY = "mastra_observability_discovery";
|
|
40
|
+
export declare const ALL_SIGNAL_TABLES: readonly ["mastra_span_events", "mastra_metric_events", "mastra_log_events", "mastra_score_events", "mastra_feedback_events"];
|
|
41
|
+
export declare const ALL_TABLE_NAMES: readonly ["mastra_span_events", "mastra_metric_events", "mastra_log_events", "mastra_score_events", "mastra_feedback_events", "mastra_observability_discovery"];
|
|
42
|
+
/** Maps each signal table to the column used as its partition / TTL key. */
|
|
43
|
+
export declare const SIGNAL_TIME_COLUMN: Record<(typeof ALL_SIGNAL_TABLES)[number], string>;
|
|
44
|
+
/** Returns a fully-qualified, double-quoted table name. */
|
|
45
|
+
export declare function qualifiedTable(schema: string, table: string): string;
|
|
46
|
+
/** Returns a parsed, quoted, schema-prefixed object name (constraint, index, etc.). */
|
|
47
|
+
export declare function qualifiedName(schema: string, name: string): string;
|
|
48
|
+
/** Schema CREATE. Safe to run repeatedly before table DDL. */
|
|
49
|
+
export declare function schemaDDL(schema: string): string;
|
|
50
|
+
export type TableDDLMode = 'timescale' | 'partitioned';
|
|
51
|
+
/** All table CREATEs in dependency-safe order. */
|
|
52
|
+
export declare function allTableDDL(schema: string, mode: TableDDLMode): string[];
|
|
53
|
+
/** Index CREATEs. Safe to run repeatedly. */
|
|
54
|
+
export declare function allIndexDDL(schema: string): string[];
|
|
55
|
+
//# sourceMappingURL=ddl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ddl.d.ts","sourceRoot":"","sources":["../../../../../src/storage/domains/observability/v-next/ddl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAgBH,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AACtD,eAAO,MAAM,mBAAmB,yBAAyB,CAAC;AAC1D,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AACpD,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AACxD,eAAO,MAAM,qBAAqB,2BAA2B,CAAC;AAC9D,eAAO,MAAM,eAAe,mCAAmC,CAAC;AAEhE,eAAO,MAAM,iBAAiB,+HAMpB,CAAC;AAEX,eAAO,MAAM,eAAe,iKAAmD,CAAC;AAEhF,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAMjF,CAAC;AAMF,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIpE;AAED,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAIlE;AAED,8DAA8D;AAC9D,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGhD;AAiBD,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,aAAa,CAAC;AAwOvD,kDAAkD;AAClD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM,EAAE,CASxE;AAED,6CAA6C;AAC7C,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpD"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Discovery operations for the v-next Postgres observability domain.
|
|
3
|
+
*
|
|
4
|
+
* Backed by a single cache table (`mastra_observability_discovery`) keyed by a
|
|
5
|
+
* cacheKey string. Reads use stale-while-revalidate semantics:
|
|
6
|
+
*
|
|
7
|
+
* - if no cache row exists, compute synchronously and serve.
|
|
8
|
+
* - if cache row exists and is fresher than `discoveryTtlSeconds`, serve as-is.
|
|
9
|
+
* - if cache row is stale, kick off an async refresh and serve the cached
|
|
10
|
+
* value. The refresh upserts on a single row keyed by cacheKey, so
|
|
11
|
+
* concurrent readers race harmlessly with last-write-wins semantics.
|
|
12
|
+
*
|
|
13
|
+
* No in-memory caching: the table-backed cache works across multiple
|
|
14
|
+
* frontends pointing at the same database and survives serverless restarts.
|
|
15
|
+
*/
|
|
16
|
+
import type { IMastraLogger } from '@mastra/core/logger';
|
|
17
|
+
import type { GetEntityNamesArgs, GetEntityNamesResponse, GetEntityTypesArgs, GetEntityTypesResponse, GetEnvironmentsArgs, GetEnvironmentsResponse, GetMetricLabelKeysArgs, GetMetricLabelKeysResponse, GetMetricLabelValuesArgs, GetMetricLabelValuesResponse, GetMetricNamesArgs, GetMetricNamesResponse, GetServiceNamesArgs, GetServiceNamesResponse, GetTagsArgs, GetTagsResponse } from '@mastra/core/storage';
|
|
18
|
+
import type { DbClient } from '../../../client.js';
|
|
19
|
+
export interface DiscoveryConfig {
|
|
20
|
+
/** TTL for cached values in seconds. Default 300 (5 minutes). */
|
|
21
|
+
ttlSeconds?: number;
|
|
22
|
+
/**
|
|
23
|
+
* Logger used to report background refresh failures. Injected by the
|
|
24
|
+
* domain class (`ObservabilityStoragePostgresVNext`) so discovery
|
|
25
|
+
* warnings land in the framework logger alongside the rest of the store.
|
|
26
|
+
* Falls back to `console.warn` when absent so direct callers (tests,
|
|
27
|
+
* scripts) still see refresh failures.
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
logger?: IMastraLogger;
|
|
31
|
+
}
|
|
32
|
+
export declare function getEntityTypes(client: DbClient, schema: string, _args: GetEntityTypesArgs, config: DiscoveryConfig): Promise<GetEntityTypesResponse>;
|
|
33
|
+
export declare function getEntityNames(client: DbClient, schema: string, args: GetEntityNamesArgs, config: DiscoveryConfig): Promise<GetEntityNamesResponse>;
|
|
34
|
+
export declare function getServiceNames(client: DbClient, schema: string, _args: GetServiceNamesArgs, config: DiscoveryConfig): Promise<GetServiceNamesResponse>;
|
|
35
|
+
export declare function getEnvironments(client: DbClient, schema: string, _args: GetEnvironmentsArgs, config: DiscoveryConfig): Promise<GetEnvironmentsResponse>;
|
|
36
|
+
export declare function getTags(client: DbClient, schema: string, args: GetTagsArgs, config: DiscoveryConfig): Promise<GetTagsResponse>;
|
|
37
|
+
export declare function getMetricNames(client: DbClient, schema: string, args: GetMetricNamesArgs, config: DiscoveryConfig): Promise<GetMetricNamesResponse>;
|
|
38
|
+
export declare function getMetricLabelKeys(client: DbClient, schema: string, args: GetMetricLabelKeysArgs, config: DiscoveryConfig): Promise<GetMetricLabelKeysResponse>;
|
|
39
|
+
export declare function getMetricLabelValues(client: DbClient, schema: string, args: GetMetricLabelValuesArgs, config: DiscoveryConfig): Promise<GetMetricLabelValuesResponse>;
|
|
40
|
+
/**
|
|
41
|
+
* Force-refresh the six unscoped discovery cache keys: `entity_types`,
|
|
42
|
+
* `entity_names`, `service_names`, `environments`, `tags`, and
|
|
43
|
+
* `metric_names`. Scoped keys (`entity_names:<entityType>`,
|
|
44
|
+
* `tags:<entityType>`, `metric_label_keys:<metric>`,
|
|
45
|
+
* `metric_label_values:<metric>:<key>`) are not touched here — they refresh
|
|
46
|
+
* lazily on read against their own keys.
|
|
47
|
+
*
|
|
48
|
+
* Intended for the future `mastra observability discovery refresh` CLI
|
|
49
|
+
* command.
|
|
50
|
+
*/
|
|
51
|
+
export declare function refreshAllDiscoveryCaches(client: DbClient, schema: string, config: DiscoveryConfig): Promise<void>;
|
|
52
|
+
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../../../src/storage/domains/observability/v-next/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAEV,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,EAC1B,wBAAwB,EACxB,4BAA4B,EAC5B,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,EACX,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAyBhD,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AA6KD,wBAAsB,cAAc,CAClC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,sBAAsB,CAAC,CAWjC;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,sBAAsB,CAAC,CAcjC;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,uBAAuB,CAAC,CAWlC;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,uBAAuB,CAAC,CAWlC;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,eAAe,CAAC,CAoB1B;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,sBAAsB,CAAC,CAoBjC;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,sBAAsB,EAC5B,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,0BAA0B,CAAC,CAoBrC;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,wBAAwB,EAC9B,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,4BAA4B,CAAC,CAwBvC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CASf"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feedback operations for the v-next Postgres observability domain.
|
|
3
|
+
*
|
|
4
|
+
* Implements the full ObservabilityStorage feedback surface — write, list,
|
|
5
|
+
* aggregate, breakdown, time series, and percentiles. OLAP aggregates run
|
|
6
|
+
* over `valueNumber` only; string-valued feedback is excluded.
|
|
7
|
+
*/
|
|
8
|
+
import type { BatchCreateFeedbackArgs, CreateFeedbackArgs, GetFeedbackAggregateArgs, GetFeedbackAggregateResponse, GetFeedbackBreakdownArgs, GetFeedbackBreakdownResponse, GetFeedbackPercentilesArgs, GetFeedbackPercentilesResponse, GetFeedbackTimeSeriesArgs, GetFeedbackTimeSeriesResponse, ListFeedbackArgs, ListFeedbackResponse } from '@mastra/core/storage';
|
|
9
|
+
import type { DbClient } from '../../../client.js';
|
|
10
|
+
export declare function createFeedback(client: DbClient, schema: string, args: CreateFeedbackArgs): Promise<void>;
|
|
11
|
+
export declare function batchCreateFeedback(client: DbClient, schema: string, args: BatchCreateFeedbackArgs): Promise<void>;
|
|
12
|
+
export declare function listFeedback(client: DbClient, schema: string, args: ListFeedbackArgs): Promise<ListFeedbackResponse>;
|
|
13
|
+
export declare function getFeedbackAggregate(client: DbClient, schema: string, args: GetFeedbackAggregateArgs): Promise<GetFeedbackAggregateResponse>;
|
|
14
|
+
export declare function getFeedbackBreakdown(client: DbClient, schema: string, args: GetFeedbackBreakdownArgs): Promise<GetFeedbackBreakdownResponse>;
|
|
15
|
+
export declare function getFeedbackTimeSeries(client: DbClient, schema: string, args: GetFeedbackTimeSeriesArgs): Promise<GetFeedbackTimeSeriesResponse>;
|
|
16
|
+
export declare function getFeedbackPercentiles(client: DbClient, schema: string, args: GetFeedbackPercentilesArgs): Promise<GetFeedbackPercentilesResponse>;
|
|
17
|
+
//# sourceMappingURL=feedback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../../../../src/storage/domains/observability/v-next/feedback.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EACV,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,EACxB,4BAA4B,EAC5B,0BAA0B,EAC1B,8BAA8B,EAC9B,yBAAyB,EACzB,6BAA6B,EAC7B,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAkEhD,wBAAsB,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAI9G;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAKf;AAMD,wBAAsB,YAAY,CAChC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,oBAAoB,CAAC,CAkB/B;AAsED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,4BAA4B,CAAC,CAkBvC;AAMD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,4BAA4B,CAAC,CAyBvC;AAMD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,6BAA6B,CAAC,CAmExC;AAMD,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,8BAA8B,CAAC,CAoBzC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared WHERE-clause builder for the v-next Postgres observability domain.
|
|
3
|
+
*
|
|
4
|
+
* Translates the cross-signal `commonFilterFields` (defined in
|
|
5
|
+
* @internal/core/storage/shared) into parameterized SQL conditions.
|
|
6
|
+
* Signal-specific extensions (e.g. log `level`, metric `name`,
|
|
7
|
+
* trace `status`) are added by the caller.
|
|
8
|
+
*/
|
|
9
|
+
export interface FilterAccumulator {
|
|
10
|
+
conditions: string[];
|
|
11
|
+
params: unknown[];
|
|
12
|
+
/** Next bind index. Mutates as conditions are pushed. */
|
|
13
|
+
next: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function newFilterAccumulator(startIndex?: number): FilterAccumulator;
|
|
16
|
+
/**
|
|
17
|
+
* Apply common filter fields (shared across logs / metrics / scores / feedback).
|
|
18
|
+
* `timestampColumn` allows the caller to use a different time column name on
|
|
19
|
+
* tables where the time column is not literally `timestamp` (the tracing
|
|
20
|
+
* tables use `endedAt`).
|
|
21
|
+
*/
|
|
22
|
+
export declare function applyCommonFilters(acc: FilterAccumulator, filters: Record<string, any> | undefined, options?: {
|
|
23
|
+
timestampColumn?: string;
|
|
24
|
+
prefix?: string;
|
|
25
|
+
}): void;
|
|
26
|
+
/** Single-value or array-of-values equality filter (e.g. logs.level, metrics.name). */
|
|
27
|
+
export declare function applySingleOrArrayFilter(acc: FilterAccumulator, column: string, value: string | string[] | undefined, prefix?: string): void;
|
|
28
|
+
export declare function whereOrEmpty(acc: FilterAccumulator): string;
|
|
29
|
+
//# sourceMappingURL=filters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../../../src/storage/domains/observability/v-next/filters.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,oBAAoB,CAAC,UAAU,SAAI,GAAG,iBAAiB,CAEtE;AAeD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,iBAAiB,EACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EACxC,OAAO,GAAE;IAAE,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1D,IAAI,CA8CN;AAED,uFAAuF;AACvF,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,EACpC,MAAM,SAAK,GACV,IAAI,CAON;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,CAE3D"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utilities for the Postgres v-next observability domain.
|
|
3
|
+
*
|
|
4
|
+
* Differences from the ClickHouse v-next helpers:
|
|
5
|
+
* - jsonb columns are passed through as native objects/arrays. No
|
|
6
|
+
* JSON.stringify on the way in or JSON.parse on the way out.
|
|
7
|
+
* - text[] columns are passed as native arrays.
|
|
8
|
+
* - Timestamps are sent as ISO strings; the pg driver coerces them.
|
|
9
|
+
*/
|
|
10
|
+
import type { CreateFeedbackRecord, CreateLogRecord, CreateMetricRecord, CreateScoreRecord, CreateSpanRecord, FeedbackRecord, LightSpanRecord, LogRecord, MetricRecord, ScoreRecord, SpanRecord } from '@mastra/core/storage';
|
|
11
|
+
export declare function normalizeTags(tags: unknown): string[];
|
|
12
|
+
export declare function normalizeLabels(labels: Record<string, unknown> | null | undefined): Record<string, string>;
|
|
13
|
+
export declare function buildMetadataSearch(metadata: Record<string, unknown> | null | undefined): Record<string, string>;
|
|
14
|
+
export declare function toDate(value: unknown): Date;
|
|
15
|
+
export declare function toDateOrNull(value: unknown): Date | null;
|
|
16
|
+
export declare function toIsoOrDate(value: Date | number | string): Date | string;
|
|
17
|
+
export declare function spanRecordToRow(span: CreateSpanRecord): Record<string, unknown>;
|
|
18
|
+
export declare function rowToSpanRecord(row: Record<string, any>): SpanRecord;
|
|
19
|
+
/**
|
|
20
|
+
* Build a {@link LightSpanRecord} from a row that projected only the light
|
|
21
|
+
* column set (see `SPAN_LIGHT_SELECT_COLUMNS` in sql.ts). Used by
|
|
22
|
+
* `getTraceLight` — the timeline view doesn't need the full span payload.
|
|
23
|
+
*/
|
|
24
|
+
export declare function rowToLightSpanRecord(row: Record<string, any>): LightSpanRecord;
|
|
25
|
+
export declare function logRecordToRow(log: CreateLogRecord): Record<string, unknown>;
|
|
26
|
+
export declare function rowToLogRecord(row: Record<string, any>): LogRecord;
|
|
27
|
+
export declare function metricRecordToRow(metric: CreateMetricRecord): Record<string, unknown>;
|
|
28
|
+
export declare function rowToMetricRecord(row: Record<string, any>): MetricRecord;
|
|
29
|
+
export declare function scoreRecordToRow(score: CreateScoreRecord): Record<string, unknown>;
|
|
30
|
+
export declare function rowToScoreRecord(row: Record<string, any>): ScoreRecord;
|
|
31
|
+
export declare function feedbackRecordToRow(feedback: CreateFeedbackRecord): Record<string, unknown>;
|
|
32
|
+
export declare function rowToFeedbackRecord(row: Record<string, any>): FeedbackRecord;
|
|
33
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../../src/storage/domains/observability/v-next/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,SAAS,EACT,YAAY,EACZ,WAAW,EACX,UAAU,EACX,MAAM,sBAAsB,CAAC;AAmC9B,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,EAAE,CAYrD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAW1G;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWhH;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAM3C;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAMxD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAIxE;AA6HD,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAwB/E;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,UAAU,CA6BpE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,eAAe,CAwB9E;AAMD,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAc5E;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAclE;AAMD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmBrF;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,YAAY,CAmBxE;AAMD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmBlF;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,WAAW,CAkBtE;AAMD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAwB3F;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,cAAc,CAoB5E"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Postgres v-next observability storage domain.
|
|
3
|
+
*
|
|
4
|
+
* Insert-only model. Mirrors the ClickHouse v-next layout but adapted for
|
|
5
|
+
* Postgres semantics:
|
|
6
|
+
* - per-signal partitioned tables (or Timescale hypertables when the
|
|
7
|
+
* extension is detected)
|
|
8
|
+
* - retry idempotency via `ON CONFLICT DO NOTHING` on the partition-aware
|
|
9
|
+
* primary key (the ClickHouse design uses ReplacingMergeTree dedupeKey)
|
|
10
|
+
* - root-span reads served by partial indexes on the span events table
|
|
11
|
+
* - discovery values cached in a Postgres table with stale-while-revalidate
|
|
12
|
+
* semantics, so cache state survives serverless restarts and works
|
|
13
|
+
* across multiple frontends pointing at the same DB
|
|
14
|
+
*
|
|
15
|
+
* IMPORTANT: this domain is intended for **low-volume production** workloads
|
|
16
|
+
* only. Customers running more than ~100 calls/sec sustained should use the
|
|
17
|
+
* ClickHouse adapter. See `observability/postgres-design/recommendation.md`
|
|
18
|
+
* for the volume math behind this guidance.
|
|
19
|
+
*
|
|
20
|
+
* The adapter should NOT share a database with the customer's primary
|
|
21
|
+
* application database — observability writes will degrade app performance.
|
|
22
|
+
* Use it through `MastraCompositeStore` with a dedicated Postgres connection.
|
|
23
|
+
*/
|
|
24
|
+
import { ObservabilityStorage } from '@mastra/core/storage';
|
|
25
|
+
import type { BatchCreateFeedbackArgs, BatchCreateLogsArgs, BatchCreateMetricsArgs, BatchCreateScoresArgs, BatchCreateSpansArgs, BatchDeleteTracesArgs, CreateFeedbackArgs, CreateScoreArgs, CreateSpanArgs, GetEntityNamesArgs, GetEntityNamesResponse, GetEntityTypesArgs, GetEntityTypesResponse, GetEnvironmentsArgs, GetEnvironmentsResponse, GetFeedbackAggregateArgs, GetFeedbackAggregateResponse, GetFeedbackBreakdownArgs, GetFeedbackBreakdownResponse, GetFeedbackPercentilesArgs, GetFeedbackPercentilesResponse, GetFeedbackTimeSeriesArgs, GetFeedbackTimeSeriesResponse, GetMetricAggregateArgs, GetMetricAggregateResponse, GetMetricBreakdownArgs, GetMetricBreakdownResponse, GetMetricLabelKeysArgs, GetMetricLabelKeysResponse, GetMetricLabelValuesArgs, GetMetricLabelValuesResponse, GetMetricNamesArgs, GetMetricNamesResponse, GetMetricPercentilesArgs, GetMetricPercentilesResponse, GetMetricTimeSeriesArgs, GetMetricTimeSeriesResponse, GetRootSpanArgs, GetRootSpanResponse, GetSpansArgs, GetSpansResponse, GetScoreAggregateArgs, GetScoreAggregateResponse, GetScoreBreakdownArgs, GetScoreBreakdownResponse, GetScorePercentilesArgs, GetScorePercentilesResponse, GetScoreTimeSeriesArgs, GetScoreTimeSeriesResponse, GetServiceNamesArgs, GetServiceNamesResponse, GetSpanArgs, GetSpanResponse, GetTagsArgs, GetTagsResponse, GetTraceArgs, GetTraceLightResponse, GetTraceResponse, ListBranchesArgs, ListBranchesResponse, ListFeedbackArgs, ListFeedbackResponse, ListLogsArgs, ListLogsResponse, ListMetricsArgs, ListMetricsResponse, ListScoresArgs, ListScoresResponse, ListTracesArgs, ListTracesResponse, ObservabilityStorageStrategy, ScoreRecord } from '@mastra/core/storage';
|
|
26
|
+
import type { PgDomainConfig } from '../../../db/index.js';
|
|
27
|
+
import type { DiscoveryConfig } from './discovery.js';
|
|
28
|
+
import type { PartitioningOptions, PartitionMode } from './partitioning.js';
|
|
29
|
+
export type { PartitionMode, PartitioningOptions } from './partitioning.js';
|
|
30
|
+
export type { DiscoveryConfig } from './discovery.js';
|
|
31
|
+
/** Configuration for the v-next Postgres observability domain. */
|
|
32
|
+
export type VNextPostgresObservabilityConfig = PgDomainConfig & {
|
|
33
|
+
/** Daily-partition / Timescale hypertable behavior. Default 'auto'. */
|
|
34
|
+
partitioning?: PartitioningOptions;
|
|
35
|
+
/** Discovery cache configuration. */
|
|
36
|
+
discovery?: DiscoveryConfig;
|
|
37
|
+
};
|
|
38
|
+
export declare class ObservabilityStoragePostgresVNext extends ObservabilityStorage {
|
|
39
|
+
#private;
|
|
40
|
+
constructor(config: VNextPostgresObservabilityConfig);
|
|
41
|
+
/**
|
|
42
|
+
* Create the signal tables, indexes, and (if Timescale / pg_partman is
|
|
43
|
+
* present) hypertable / partman registrations.
|
|
44
|
+
*
|
|
45
|
+
* Not transactional: each `CREATE TABLE IF NOT EXISTS`, `CREATE INDEX IF
|
|
46
|
+
* NOT EXISTS`, and `create_hypertable()` / `create_parent()` runs in its
|
|
47
|
+
* own implicit transaction. Re-running `init()` after a failure is safe
|
|
48
|
+
* (every statement is idempotent), but a failure partway through against
|
|
49
|
+
* Timescale can leave some signal tables as hypertables and others as
|
|
50
|
+
* plain tables. If that happens, fix the underlying error and call
|
|
51
|
+
* `init()` again — the partially-converted state is recoverable.
|
|
52
|
+
*/
|
|
53
|
+
init(): Promise<void>;
|
|
54
|
+
/** Resolved partition mode after init(). Useful for tests and diagnostics. */
|
|
55
|
+
get partitionMode(): PartitionMode | undefined;
|
|
56
|
+
get observabilityStrategy(): {
|
|
57
|
+
preferred: ObservabilityStorageStrategy;
|
|
58
|
+
supported: ObservabilityStorageStrategy[];
|
|
59
|
+
};
|
|
60
|
+
getFeatures(): readonly ["delta-polling"] | undefined;
|
|
61
|
+
createSpan(args: CreateSpanArgs): Promise<void>;
|
|
62
|
+
batchCreateSpans(args: BatchCreateSpansArgs): Promise<void>;
|
|
63
|
+
getSpan(args: GetSpanArgs): Promise<GetSpanResponse | null>;
|
|
64
|
+
getSpans(args: GetSpansArgs): Promise<GetSpansResponse>;
|
|
65
|
+
getRootSpan(args: GetRootSpanArgs): Promise<GetRootSpanResponse | null>;
|
|
66
|
+
getTrace(args: GetTraceArgs): Promise<GetTraceResponse | null>;
|
|
67
|
+
getTraceLight(args: GetTraceArgs): Promise<GetTraceLightResponse | null>;
|
|
68
|
+
listTraces(args: ListTracesArgs): Promise<ListTracesResponse>;
|
|
69
|
+
listBranches(args: ListBranchesArgs): Promise<ListBranchesResponse>;
|
|
70
|
+
batchCreateLogs(args: BatchCreateLogsArgs): Promise<void>;
|
|
71
|
+
batchCreateMetrics(args: BatchCreateMetricsArgs): Promise<void>;
|
|
72
|
+
createScore(args: CreateScoreArgs): Promise<void>;
|
|
73
|
+
batchCreateScores(args: BatchCreateScoresArgs): Promise<void>;
|
|
74
|
+
createFeedback(args: CreateFeedbackArgs): Promise<void>;
|
|
75
|
+
batchCreateFeedback(args: BatchCreateFeedbackArgs): Promise<void>;
|
|
76
|
+
listLogs(args: ListLogsArgs): Promise<ListLogsResponse>;
|
|
77
|
+
listMetrics(args: ListMetricsArgs): Promise<ListMetricsResponse>;
|
|
78
|
+
listScores(args: ListScoresArgs): Promise<ListScoresResponse>;
|
|
79
|
+
getScoreById(scoreId: string): Promise<ScoreRecord | null>;
|
|
80
|
+
listFeedback(args: ListFeedbackArgs): Promise<ListFeedbackResponse>;
|
|
81
|
+
getMetricAggregate(args: GetMetricAggregateArgs): Promise<GetMetricAggregateResponse>;
|
|
82
|
+
getMetricBreakdown(args: GetMetricBreakdownArgs): Promise<GetMetricBreakdownResponse>;
|
|
83
|
+
getMetricTimeSeries(args: GetMetricTimeSeriesArgs): Promise<GetMetricTimeSeriesResponse>;
|
|
84
|
+
getMetricPercentiles(args: GetMetricPercentilesArgs): Promise<GetMetricPercentilesResponse>;
|
|
85
|
+
getScoreAggregate(args: GetScoreAggregateArgs): Promise<GetScoreAggregateResponse>;
|
|
86
|
+
getScoreBreakdown(args: GetScoreBreakdownArgs): Promise<GetScoreBreakdownResponse>;
|
|
87
|
+
getScoreTimeSeries(args: GetScoreTimeSeriesArgs): Promise<GetScoreTimeSeriesResponse>;
|
|
88
|
+
getScorePercentiles(args: GetScorePercentilesArgs): Promise<GetScorePercentilesResponse>;
|
|
89
|
+
getFeedbackAggregate(args: GetFeedbackAggregateArgs): Promise<GetFeedbackAggregateResponse>;
|
|
90
|
+
getFeedbackBreakdown(args: GetFeedbackBreakdownArgs): Promise<GetFeedbackBreakdownResponse>;
|
|
91
|
+
getFeedbackTimeSeries(args: GetFeedbackTimeSeriesArgs): Promise<GetFeedbackTimeSeriesResponse>;
|
|
92
|
+
getFeedbackPercentiles(args: GetFeedbackPercentilesArgs): Promise<GetFeedbackPercentilesResponse>;
|
|
93
|
+
getEntityTypes(args: GetEntityTypesArgs): Promise<GetEntityTypesResponse>;
|
|
94
|
+
getEntityNames(args: GetEntityNamesArgs): Promise<GetEntityNamesResponse>;
|
|
95
|
+
getServiceNames(args: GetServiceNamesArgs): Promise<GetServiceNamesResponse>;
|
|
96
|
+
getEnvironments(args: GetEnvironmentsArgs): Promise<GetEnvironmentsResponse>;
|
|
97
|
+
getTags(args: GetTagsArgs): Promise<GetTagsResponse>;
|
|
98
|
+
getMetricNames(args: GetMetricNamesArgs): Promise<GetMetricNamesResponse>;
|
|
99
|
+
getMetricLabelKeys(args: GetMetricLabelKeysArgs): Promise<GetMetricLabelKeysResponse>;
|
|
100
|
+
getMetricLabelValues(args: GetMetricLabelValuesArgs): Promise<GetMetricLabelValuesResponse>;
|
|
101
|
+
batchDeleteTraces(args: BatchDeleteTracesArgs): Promise<void>;
|
|
102
|
+
dangerouslyClearAll(): Promise<void>;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/storage/domains/observability/v-next/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { DbClient } from '../../../client.js';
|
|
2
|
+
import type { FilterAccumulator } from './filters.js';
|
|
3
|
+
type SortDirection = 'ASC' | 'DESC';
|
|
4
|
+
type SignalItems<Key extends string, Item> = Record<Key, Item[]>;
|
|
5
|
+
interface SignalListConfig<Filters, Row extends {
|
|
6
|
+
cursorId?: unknown;
|
|
7
|
+
xactId?: unknown;
|
|
8
|
+
}, Item, Key extends string> {
|
|
9
|
+
client: DbClient;
|
|
10
|
+
table: string;
|
|
11
|
+
filters: Filters;
|
|
12
|
+
selectColumns: string;
|
|
13
|
+
responseKey: Key;
|
|
14
|
+
applyFilters: (acc: FilterAccumulator, filters: Filters) => void;
|
|
15
|
+
mapRow: (row: Row) => Item;
|
|
16
|
+
}
|
|
17
|
+
export declare function readSignalStreamHeadCursor<Filters>({ client, table, filters, applyFilters, }: Pick<SignalListConfig<Filters, {
|
|
18
|
+
cursorId?: unknown;
|
|
19
|
+
xactId?: unknown;
|
|
20
|
+
}, unknown, string>, 'client' | 'table' | 'filters' | 'applyFilters'>): Promise<string>;
|
|
21
|
+
export declare function listSignalPage<Filters, Row extends {
|
|
22
|
+
cursorId?: unknown;
|
|
23
|
+
xactId?: unknown;
|
|
24
|
+
}, Item, Key extends string>(config: SignalListConfig<Filters, Row, Item, Key> & {
|
|
25
|
+
page: number;
|
|
26
|
+
perPage: number;
|
|
27
|
+
orderField: string;
|
|
28
|
+
orderDir: SortDirection;
|
|
29
|
+
includeDeltaCursor: boolean;
|
|
30
|
+
}): Promise<{
|
|
31
|
+
pagination: {
|
|
32
|
+
total: number;
|
|
33
|
+
page: number;
|
|
34
|
+
perPage: number;
|
|
35
|
+
hasMore: boolean;
|
|
36
|
+
};
|
|
37
|
+
deltaCursor?: string;
|
|
38
|
+
} & SignalItems<Key, Item>>;
|
|
39
|
+
export declare function listSignalDelta<Filters, Row extends {
|
|
40
|
+
cursorId?: unknown;
|
|
41
|
+
xactId?: unknown;
|
|
42
|
+
}, Item, Key extends string>(config: SignalListConfig<Filters, Row, Item, Key> & {
|
|
43
|
+
after: string | undefined;
|
|
44
|
+
limit: number;
|
|
45
|
+
}): Promise<{
|
|
46
|
+
delta: {
|
|
47
|
+
limit: number;
|
|
48
|
+
hasMore: boolean;
|
|
49
|
+
};
|
|
50
|
+
deltaCursor: string;
|
|
51
|
+
} & SignalItems<Key, Item>>;
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=listing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listing.d.ts","sourceRoot":"","sources":["../../../../../src/storage/domains/observability/v-next/listing.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAInD,KAAK,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAEpC,KAAK,WAAW,CAAC,GAAG,SAAS,MAAM,EAAE,IAAI,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AAEjE,UAAU,gBAAgB,CAAC,OAAO,EAAE,GAAG,SAAS;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,IAAI,EAAE,GAAG,SAAS,MAAM;IAChH,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,GAAG,CAAC;IACjB,YAAY,EAAE,CAAC,GAAG,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACjE,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CAC5B;AAMD,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,EACxD,MAAM,EACN,KAAK,EACL,OAAO,EACP,YAAY,GACb,EAAE,IAAI,CACL,gBAAgB,CAAC,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,OAAO,EAAE,MAAM,CAAC,EACpF,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,cAAc,CAChD,GAAG,OAAO,CAAC,MAAM,CAAC,CAKlB;AAED,wBAAsB,cAAc,CAClC,OAAO,EACP,GAAG,SAAS;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,EACpD,IAAI,EACJ,GAAG,SAAS,MAAM,EAElB,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,aAAa,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,GACA,OAAO,CACR;IACE,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAC3B,CAgDA;AAED,wBAAsB,eAAe,CACnC,OAAO,EACP,GAAG,SAAS;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,EACpD,IAAI,EACJ,GAAG,SAAS,MAAM,EAElB,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG;IAClD,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf,GACA,OAAO,CACR;IACE,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAC3B,CAsCA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Log operations for the v-next Postgres observability domain.
|
|
3
|
+
*/
|
|
4
|
+
import type { BatchCreateLogsArgs, ListLogsArgs, ListLogsResponse } from '@mastra/core/storage';
|
|
5
|
+
import type { DbClient } from '../../../client.js';
|
|
6
|
+
export declare function batchCreateLogs(client: DbClient, schema: string, args: BatchCreateLogsArgs): Promise<void>;
|
|
7
|
+
export declare function listLogs(client: DbClient, schema: string, args: ListLogsArgs): Promise<ListLogsResponse>;
|
|
8
|
+
//# sourceMappingURL=logs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../../../src/storage/domains/observability/v-next/logs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEhG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAchD,wBAAsB,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhH;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAU9G"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metric operations for the v-next Postgres observability domain.
|
|
3
|
+
*
|
|
4
|
+
* Implements the full ObservabilityStorage metric surface — write, list,
|
|
5
|
+
* aggregate, breakdown, time series, and percentiles. The OLAP queries
|
|
6
|
+
* lean on standard Postgres aggregates (`SUM`, `AVG`, `percentile_cont`,
|
|
7
|
+
* `FILTER (WHERE …)`) and a portable epoch-floor bucket expression so the
|
|
8
|
+
* adapter works on vanilla Postgres and on a TimescaleDB hypertable
|
|
9
|
+
* without query rewrites.
|
|
10
|
+
*/
|
|
11
|
+
import type { BatchCreateMetricsArgs, GetMetricAggregateArgs, GetMetricAggregateResponse, GetMetricBreakdownArgs, GetMetricBreakdownResponse, GetMetricPercentilesArgs, GetMetricPercentilesResponse, GetMetricTimeSeriesArgs, GetMetricTimeSeriesResponse, ListMetricsArgs, ListMetricsResponse } from '@mastra/core/storage';
|
|
12
|
+
import type { DbClient } from '../../../client.js';
|
|
13
|
+
export declare function batchCreateMetrics(client: DbClient, schema: string, args: BatchCreateMetricsArgs): Promise<void>;
|
|
14
|
+
export declare function listMetrics(client: DbClient, schema: string, args: ListMetricsArgs): Promise<ListMetricsResponse>;
|
|
15
|
+
export declare function getMetricAggregate(client: DbClient, schema: string, args: GetMetricAggregateArgs): Promise<GetMetricAggregateResponse>;
|
|
16
|
+
export declare function getMetricBreakdown(client: DbClient, schema: string, args: GetMetricBreakdownArgs): Promise<GetMetricBreakdownResponse>;
|
|
17
|
+
export declare function getMetricTimeSeries(client: DbClient, schema: string, args: GetMetricTimeSeriesArgs): Promise<GetMetricTimeSeriesResponse>;
|
|
18
|
+
export declare function getMetricPercentiles(client: DbClient, schema: string, args: GetMetricPercentilesArgs): Promise<GetMetricPercentilesResponse>;
|
|
19
|
+
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../../../src/storage/domains/observability/v-next/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,EAC1B,sBAAsB,EACtB,0BAA0B,EAC1B,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,eAAe,EACf,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AA0DhD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAKf;AAMD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,mBAAmB,CAAC,CAU9B;AA6ED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,0BAA0B,CAAC,CAmCrC;AAMD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,0BAA0B,CAAC,CAyCrC;AAMD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,2BAA2B,CAAC,CA2FtC;AAMD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,4BAA4B,CAAC,CAuBvC"}
|