@mastra/pg 1.13.0-alpha.0 → 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 +27 -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 +33 -1
- package/dist/index.cjs +12 -16
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +13 -17
- package/dist/index.js.map +1 -1
- package/dist/{storage → shared}/pool-config.d.ts +3 -0
- package/dist/shared/pool-config.d.ts.map +1 -0
- package/dist/storage/domains/workflows/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/vector/index.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/storage/pool-config.d.ts.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# @mastra/pg
|
|
2
2
|
|
|
3
|
+
## 1.13.0-alpha.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- dependencies updates: ([#17148](https://github.com/mastra-ai/mastra/pull/17148))
|
|
8
|
+
- Updated dependency [`pg@^8.21.0` ↗︎](https://www.npmjs.com/package/pg/v/8.21.0) (from `^8.20.0`, in `dependencies`)
|
|
9
|
+
|
|
10
|
+
- Fixed `PgVector` ignoring an explicit `ssl` option when the connection string also contained an `sslmode=` (or `ssl=`) query parameter. `node-postgres` re-parses the connection string and overwrote the explicit `ssl` object, causing `UNABLE_TO_GET_ISSUER_CERT_LOCALLY` / "self-signed certificate" errors against self-signed or internal CAs even when verification was meant to be skipped. ([#17650](https://github.com/mastra-ai/mastra/pull/17650))
|
|
11
|
+
|
|
12
|
+
`PgVector` now honors an explicit `ssl` option over the connection string, matching the existing `PostgresStore` behavior. Connection-string-only SSL (`?sslmode=require` with no explicit `ssl`) keeps working as before.
|
|
13
|
+
|
|
14
|
+
```ts
|
|
15
|
+
import { PgVector } from '@mastra/pg';
|
|
16
|
+
|
|
17
|
+
// This now connects instead of throwing UNABLE_TO_GET_ISSUER_CERT_LOCALLY
|
|
18
|
+
const vector = new PgVector({
|
|
19
|
+
id: 'my-vector',
|
|
20
|
+
connectionString: 'postgresql://user:pass@host:5432/db?sslmode=require',
|
|
21
|
+
ssl: { rejectUnauthorized: false },
|
|
22
|
+
});
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
- Make atomic db updates better ([#16796](https://github.com/mastra-ai/mastra/pull/16796))
|
|
26
|
+
|
|
27
|
+
- Updated dependencies [[`575f815`](https://github.com/mastra-ai/mastra/commit/575f815c5c3567b71c0b83cbb7fa98c8253a9d9c), [`306909a`](https://github.com/mastra-ai/mastra/commit/306909a693de77d709b38706e2673c9547d24a28), [`5191af8`](https://github.com/mastra-ai/mastra/commit/5191af80c799eea25357c545fc05d91b3883531d), [`43bd3d4`](https://github.com/mastra-ai/mastra/commit/43bd3d421987463fdf35386a45199c49499ed069), [`e6fa79e`](https://github.com/mastra-ai/mastra/commit/e6fa79ec72a2ddffdd25e85270398951e9d552a4), [`904bcdf`](https://github.com/mastra-ai/mastra/commit/904bcdf7b8004aa7be823f9f70ca63580e47e470), [`7f5ee1d`](https://github.com/mastra-ai/mastra/commit/7f5ee1dca46daee8d2817f2ebe49e6335da81956), [`1e9aab5`](https://github.com/mastra-ai/mastra/commit/1e9aab50ff11e6e88fde4d7cbf512c44a9fe8d61), [`bf8eb6d`](https://github.com/mastra-ai/mastra/commit/bf8eb6d0ec213a403eb9265a594ad283c44ab3dc), [`493a328`](https://github.com/mastra-ai/mastra/commit/493a328f4346a1deeb9f1e2e44c8f2a3a4d7591b), [`029a414`](https://github.com/mastra-ai/mastra/commit/029a4141719793bd3e898a39eb5a0466a55f5f3a), [`b147b29`](https://github.com/mastra-ai/mastra/commit/b147b2907f0cd1aa812efe6d6e3f58d22e66fc88), [`d371ac1`](https://github.com/mastra-ai/mastra/commit/d371ac1d9820afaaf7cfdbc380a475946a994d8f), [`cf182b7`](https://github.com/mastra-ai/mastra/commit/cf182b7fb495767946d9840ef29f19cfa906f31f), [`a049c2a`](https://github.com/mastra-ai/mastra/commit/a049c2a9dfb41d0ee2e7a28874a88cd64fd5669f), [`b147b29`](https://github.com/mastra-ai/mastra/commit/b147b2907f0cd1aa812efe6d6e3f58d22e66fc88), [`2a96528`](https://github.com/mastra-ai/mastra/commit/2a9652848dfa3c5a2426f952e9d93554c26fd90f), [`2656d9c`](https://github.com/mastra-ai/mastra/commit/2656d9c2976d4f3354253bfbbbf9b88a1b2bbf34), [`63e3fe1`](https://github.com/mastra-ai/mastra/commit/63e3fe13cc1ea96f91d7c68aea92f400faf9e4da), [`1d4ce8d`](https://github.com/mastra-ai/mastra/commit/1d4ce8daaa54511f325c1b609d31b8e54009d677), [`8c68372`](https://github.com/mastra-ai/mastra/commit/8c68372e85fe0b066ec12c58bd29ffb93e54c552)]:
|
|
28
|
+
- @mastra/core@1.42.0-alpha.4
|
|
29
|
+
|
|
3
30
|
## 1.13.0-alpha.0
|
|
4
31
|
|
|
5
32
|
### Minor Changes
|
package/dist/docs/SKILL.md
CHANGED
|
@@ -413,12 +413,12 @@ const memory = new Memory({
|
|
|
413
413
|
What changes:
|
|
414
414
|
|
|
415
415
|
- **Storage is identical.** The same resource/thread `workingMemory` field is read and written.
|
|
416
|
-
- **The tool is the same shape, exposed under a new name.** Writes still flow through the same underlying tool; on this path it
|
|
416
|
+
- **The tool is the same shape, exposed under a new name.** Writes still flow through the same underlying tool; on this path it's registered as `setWorkingMemory` (instead of `updateWorkingMemory`). The rename keeps legacy strip filters from removing tool-call parts so they persist as a normal audit trail and the next model step picks the new value up automatically.
|
|
417
417
|
- **Delivery only.** Instead of folding into the system prompt, `Memory` auto-attaches a `WorkingMemoryStateProcessor` that emits the current working memory as a `state` signal with `stateId: 'working-memory'`.
|
|
418
418
|
|
|
419
419
|
You inherit the standard state-signal benefits: thread-scoped tracking metadata, `cacheKey` dedup so identical snapshots are only emitted once, and `contextWindow.hasSnapshot` re-injection when an older snapshot rolls out of the window.
|
|
420
420
|
|
|
421
|
-
The default (`useStateSignals: false`) keeps the existing system-message behavior unchanged. `useStateSignals`
|
|
421
|
+
The default (`useStateSignals: false`) keeps the existing system-message behavior unchanged. `useStateSignals` isn't supported with template working memory `version: 'vnext'`.
|
|
422
422
|
|
|
423
423
|
## Examples
|
|
424
424
|
|
|
@@ -240,6 +240,38 @@ const storage = new MastraCompositeStore({
|
|
|
240
240
|
})
|
|
241
241
|
```
|
|
242
242
|
|
|
243
|
-
> **Note:** `ObservabilityStorageClickhouseVNext` is the current observability domain implementation. The legacy `ObservabilityStorageClickhouse` class is also exported and remains supported for projects that
|
|
243
|
+
> **Note:** `ObservabilityStorageClickhouseVNext` is the current observability domain implementation. The legacy `ObservabilityStorageClickhouse` class is also exported and remains supported for projects that haven't migrated. See the [ClickHouse storage reference](https://mastra.ai/reference/storage/clickhouse) for details.
|
|
244
|
+
|
|
245
|
+
### Replicated ClickHouse for multi-replica clusters
|
|
246
|
+
|
|
247
|
+
For self-managed ClickHouse clusters with multiple replicas, set `replication` so Mastra emits `ReplicatedMergeTree` engines and applies `ON CLUSTER` to its DDL:
|
|
248
|
+
|
|
249
|
+
```typescript
|
|
250
|
+
import { MastraCompositeStore } from '@mastra/core/storage'
|
|
251
|
+
import { MemoryPG, WorkflowsPG, ScoresPG } from '@mastra/pg'
|
|
252
|
+
import { ObservabilityStorageClickhouseVNext } from '@mastra/clickhouse'
|
|
253
|
+
|
|
254
|
+
const storage = new MastraCompositeStore({
|
|
255
|
+
id: 'composite',
|
|
256
|
+
domains: {
|
|
257
|
+
memory: new MemoryPG({ connectionString: process.env.DATABASE_URL }),
|
|
258
|
+
workflows: new WorkflowsPG({ connectionString: process.env.DATABASE_URL }),
|
|
259
|
+
scores: new ScoresPG({ connectionString: process.env.DATABASE_URL }),
|
|
260
|
+
observability: new ObservabilityStorageClickhouseVNext({
|
|
261
|
+
url: process.env.CLICKHOUSE_URL,
|
|
262
|
+
username: process.env.CLICKHOUSE_USERNAME,
|
|
263
|
+
password: process.env.CLICKHOUSE_PASSWORD,
|
|
264
|
+
replication: {
|
|
265
|
+
cluster: 'production_cluster',
|
|
266
|
+
// Optional (defaults shown):
|
|
267
|
+
// zookeeperPath: '/clickhouse/tables/{shard}/{database}/{table}',
|
|
268
|
+
// replicaName: '{replica}',
|
|
269
|
+
},
|
|
270
|
+
}),
|
|
271
|
+
},
|
|
272
|
+
})
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
Do not set `replication` on ClickHouse Cloud. Cloud rewrites `MergeTree` to `SharedMergeTree` server-side. See the [ClickHouse storage reference](https://mastra.ai/reference/storage/clickhouse) for the full config shape and operator notes.
|
|
244
276
|
|
|
245
277
|
> **Info:** This approach is also required when using storage providers that don't support observability (like Convex, DynamoDB, or Cloudflare). See the [MastraStorageExporter documentation](https://mastra.ai/docs/observability/integrations/exporters/mastra-storage) for the full list of supported providers.
|
package/dist/index.cjs
CHANGED
|
@@ -7,6 +7,7 @@ var vector = require('@mastra/core/vector');
|
|
|
7
7
|
var asyncMutex = require('async-mutex');
|
|
8
8
|
var pg = require('pg');
|
|
9
9
|
var xxhash = require('xxhash-wasm');
|
|
10
|
+
var pgConnectionString = require('pg-connection-string');
|
|
10
11
|
var filter = require('@mastra/core/vector/filter');
|
|
11
12
|
var base = require('@mastra/core/base');
|
|
12
13
|
var crypto$1 = require('crypto');
|
|
@@ -14,7 +15,6 @@ var module$1 = require('module');
|
|
|
14
15
|
var agent = require('@mastra/core/agent');
|
|
15
16
|
var features = require('@mastra/core/features');
|
|
16
17
|
var evals = require('@mastra/core/evals');
|
|
17
|
-
var pgConnectionString = require('pg-connection-string');
|
|
18
18
|
|
|
19
19
|
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
20
20
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -91,6 +91,15 @@ var validateConfig = (name, config) => {
|
|
|
91
91
|
);
|
|
92
92
|
}
|
|
93
93
|
};
|
|
94
|
+
function buildConnectionStringPoolConfig(config, defaults) {
|
|
95
|
+
const parsed = pgConnectionString.parse(config.connectionString);
|
|
96
|
+
return {
|
|
97
|
+
...parsed,
|
|
98
|
+
...config.ssl !== void 0 ? { ssl: config.ssl } : {},
|
|
99
|
+
max: config.max ?? defaults.max,
|
|
100
|
+
idleTimeoutMillis: config.idleTimeoutMillis ?? defaults.idleTimeoutMillis
|
|
101
|
+
};
|
|
102
|
+
}
|
|
94
103
|
var PGFilterTranslator = class extends filter.BaseFilterTranslator {
|
|
95
104
|
getSupportedOperators() {
|
|
96
105
|
return {
|
|
@@ -638,10 +647,7 @@ var PgVector = class extends vector.MastraVector {
|
|
|
638
647
|
let poolConfig;
|
|
639
648
|
if (isConnectionStringConfig(config)) {
|
|
640
649
|
poolConfig = {
|
|
641
|
-
|
|
642
|
-
ssl: config.ssl,
|
|
643
|
-
max: config.max ?? 20,
|
|
644
|
-
idleTimeoutMillis: config.idleTimeoutMillis ?? 3e4,
|
|
650
|
+
...buildConnectionStringPoolConfig(config, { max: 20, idleTimeoutMillis: 3e4 }),
|
|
645
651
|
connectionTimeoutMillis: 2e3,
|
|
646
652
|
...config.pgPoolOptions
|
|
647
653
|
};
|
|
@@ -17967,8 +17973,7 @@ var WorkflowsPG = class _WorkflowsPG extends storage.WorkflowsStorage {
|
|
|
17967
17973
|
const existingSnapshot = existingSnapshotResult.snapshot;
|
|
17968
17974
|
snapshot = typeof existingSnapshot === "string" ? JSON.parse(existingSnapshot) : existingSnapshot;
|
|
17969
17975
|
}
|
|
17970
|
-
snapshot
|
|
17971
|
-
snapshot.requestContext = { ...snapshot.requestContext, ...requestContext };
|
|
17976
|
+
storage.mergeWorkflowStepResult({ snapshot, stepId, result, requestContext });
|
|
17972
17977
|
const now = /* @__PURE__ */ new Date();
|
|
17973
17978
|
const sanitizedSnapshot = sanitizeJsonForPg(JSON.stringify(snapshot));
|
|
17974
17979
|
await t.none(
|
|
@@ -18941,15 +18946,6 @@ var WorkspacesPG = class _WorkspacesPG extends storage.WorkspacesStorage {
|
|
|
18941
18946
|
};
|
|
18942
18947
|
}
|
|
18943
18948
|
};
|
|
18944
|
-
function buildConnectionStringPoolConfig(config, defaults) {
|
|
18945
|
-
const parsed = pgConnectionString.parse(config.connectionString);
|
|
18946
|
-
return {
|
|
18947
|
-
...parsed,
|
|
18948
|
-
...config.ssl !== void 0 ? { ssl: config.ssl } : {},
|
|
18949
|
-
max: config.max ?? defaults.max,
|
|
18950
|
-
idleTimeoutMillis: config.idleTimeoutMillis ?? defaults.idleTimeoutMillis
|
|
18951
|
-
};
|
|
18952
|
-
}
|
|
18953
18949
|
|
|
18954
18950
|
// src/storage/index.ts
|
|
18955
18951
|
var DEFAULT_MAX_CONNECTIONS = 20;
|