@agentplat/mesh-postgres 0.3.0-alpha.5 → 0.3.0-beta.2
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/README.md +11 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/migrations.d.ts +22 -0
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +121 -10
- package/dist/migrations.js.map +1 -1
- package/dist/repository.d.ts.map +1 -1
- package/dist/repository.js +177 -17
- package/dist/repository.js.map +1 -1
- package/dist/snapshot-backfill.d.ts +27 -0
- package/dist/snapshot-backfill.d.ts.map +1 -0
- package/dist/snapshot-backfill.js +177 -0
- package/dist/snapshot-backfill.js.map +1 -0
- package/migrations/002_mesh_compatibility_metadata.down.sql +24 -0
- package/migrations/002_mesh_compatibility_metadata.up.sql +119 -0
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -21,7 +21,17 @@ const repository = new PostgresMeshDurableRepository(pool, {
|
|
|
21
21
|
|
|
22
22
|
Import and construction do not connect, migrate or start workers. Migrations
|
|
23
23
|
are explicit and destructive rollback requires the exact confirmation returned
|
|
24
|
-
by `rollbackConfirmation`, the expected version
|
|
24
|
+
by `rollbackConfirmation`, the expected version, `allowDataLoss: true`, a
|
|
25
|
+
verified external backup and an explicit decision for any Beta-only rows.
|
|
26
|
+
|
|
27
|
+
Migration 2 is additive. It records the durable wrapper version, envelope
|
|
28
|
+
format/wire version/canonical bytes, snapshot content format/schema and journal
|
|
29
|
+
version without guessing legacy snapshot content. `getCompatibilityStatus`
|
|
30
|
+
returns counts only. Applications migrate opaque Alpha snapshots through
|
|
31
|
+
`backfillLegacySnapshots` with an explicit deterministic codec in bounded,
|
|
32
|
+
resumable batches. `getRollbackReadiness` reports whether retained Beta rows
|
|
33
|
+
can be read by the preceding Alpha reader, including v1 envelopes, typed snapshots and
|
|
34
|
+
schema-2 journal entries that cannot be represented by that reader.
|
|
25
35
|
|
|
26
36
|
The pool remains caller-owned. `repository.close()` intentionally does not call
|
|
27
37
|
`pool.end()`.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { PostgresMeshDurableRepository, type PostgresMeshDurableRepositoryOptions, } from "./repository.js";
|
|
2
|
-
export { getMigrationStatus, migrationDirectory, rollbackConfirmation, rollbackMigrations, runMigrations, type MeshPostgresMigrationOptions, } from "./migrations.js";
|
|
2
|
+
export { getMigrationStatus, getCompatibilityStatus, getRollbackReadiness, migrationDirectory, rollbackConfirmation, rollbackMigrations, runMigrations, type MeshPostgresMigrationOptions, type MeshPostgresCompatibilityStatus, type MeshPostgresRollbackReadiness, } from "./migrations.js";
|
|
3
3
|
export { checkPostgresPool, createPostgresPool } from "@agentplat/postgres";
|
|
4
|
+
export { backfillLegacySnapshots, type MeshPostgresSnapshotBackfillOptions, type MeshPostgresSnapshotBackfillResult, } from "./snapshot-backfill.js";
|
|
4
5
|
export type { PostgresHealthOptions, PostgresPoolHealth, PostgresPoolOptions, } from "@agentplat/postgres";
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,KAAK,oCAAoC,GAC1C,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,KAAK,4BAA4B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,KAAK,oCAAoC,GAC1C,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,KAAK,4BAA4B,EACjC,KAAK,+BAA+B,EACpC,KAAK,6BAA6B,GACnC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EACL,uBAAuB,EACvB,KAAK,mCAAmC,EACxC,KAAK,kCAAkC,GACxC,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { PostgresMeshDurableRepository, } from "./repository.js";
|
|
2
|
-
export { getMigrationStatus, migrationDirectory, rollbackConfirmation, rollbackMigrations, runMigrations, } from "./migrations.js";
|
|
2
|
+
export { getMigrationStatus, getCompatibilityStatus, getRollbackReadiness, migrationDirectory, rollbackConfirmation, rollbackMigrations, runMigrations, } from "./migrations.js";
|
|
3
3
|
export { checkPostgresPool, createPostgresPool } from "@agentplat/postgres";
|
|
4
|
+
export { backfillLegacySnapshots, } from "./snapshot-backfill.js";
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,GAE9B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,GAE9B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,GAId,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EACL,uBAAuB,GAGxB,MAAM,wBAAwB,CAAC"}
|
package/dist/migrations.d.ts
CHANGED
|
@@ -5,6 +5,24 @@ export interface MeshPostgresMigrationOptions {
|
|
|
5
5
|
readonly schema?: string;
|
|
6
6
|
readonly createSchema?: boolean;
|
|
7
7
|
}
|
|
8
|
+
export interface MeshPostgresCompatibilityStatus {
|
|
9
|
+
readonly legacyInboxRows: number;
|
|
10
|
+
readonly legacyOutboxRows: number;
|
|
11
|
+
readonly legacySnapshotRows: number;
|
|
12
|
+
readonly betaRowsMissingCanonicalBytes: number;
|
|
13
|
+
}
|
|
14
|
+
export interface MeshPostgresRollbackReadiness {
|
|
15
|
+
readonly incompatibleInboxRows: number;
|
|
16
|
+
readonly incompatibleOutboxRows: number;
|
|
17
|
+
readonly incompatibleSnapshotRows: number;
|
|
18
|
+
readonly incompatibleJournalRows: number;
|
|
19
|
+
readonly incompatibleRows: number;
|
|
20
|
+
readonly readyForAlphaReader: boolean;
|
|
21
|
+
}
|
|
22
|
+
/** Reports expand-first adoption without mutating application rows. */
|
|
23
|
+
export declare function getCompatibilityStatus(pool: Pool, options?: MeshPostgresMigrationOptions): Promise<MeshPostgresCompatibilityStatus>;
|
|
24
|
+
/** Counts signed v1 work that an Alpha reader cannot safely resume. */
|
|
25
|
+
export declare function getRollbackReadiness(pool: Pool, options?: MeshPostgresMigrationOptions): Promise<MeshPostgresRollbackReadiness>;
|
|
8
26
|
export declare function runMigrations(pool: Pool, options?: MeshPostgresMigrationOptions): Promise<PostgresMigrationStatus>;
|
|
9
27
|
export declare function getMigrationStatus(pool: Pool, options?: MeshPostgresMigrationOptions): Promise<PostgresMigrationStatus>;
|
|
10
28
|
export declare function rollbackConfirmation(schema?: string, version?: number): string;
|
|
@@ -12,5 +30,9 @@ export declare function rollbackMigrations(pool: Pool, options: MeshPostgresMigr
|
|
|
12
30
|
readonly expectedCurrentVersion: number;
|
|
13
31
|
readonly confirm: string;
|
|
14
32
|
readonly allowDataLoss?: boolean;
|
|
33
|
+
/** Confirms a restorable snapshot exists outside this migration. */
|
|
34
|
+
readonly verifiedBackup?: boolean;
|
|
35
|
+
/** Explicitly accepts that Alpha readers cannot resume retained v1 rows. */
|
|
36
|
+
readonly allowIncompatibleRows?: boolean;
|
|
15
37
|
}): Promise<PostgresMigrationStatus>;
|
|
16
38
|
//# sourceMappingURL=migrations.d.ts.map
|
package/dist/migrations.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAEV,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAQ/B,eAAO,MAAM,kBAAkB,QAE9B,CAAC;AAEF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AAuED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAC;CAChD;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;CACvC;AAED,uEAAuE;AACvE,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,IAAI,EACV,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,+BAA+B,CAAC,CA6B1C;AAED,uEAAuE;AACvE,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,IAAI,EACV,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,6BAA6B,CAAC,CA8CxC;AAUD,wBAAsB,aAAa,CACjC,IAAI,EAAE,IAAI,EACV,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,uBAAuB,CAAC,CAOlC;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,IAAI,EACV,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,uBAAuB,CAAC,CAMlC;AAED,wBAAgB,oBAAoB,CAClC,MAAM,SAAwB,EAC9B,OAAO,SAAI,GACV,MAAM,CAER;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,4BAA4B,GAAG;IACtC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,oEAAoE;IACpE,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,4EAA4E;IAC5E,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAC1C,GACA,OAAO,CAAC,uBAAuB,CAAC,CA0BlC"}
|
package/dist/migrations.js
CHANGED
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
import { readFile } from "node:fs/promises";
|
|
2
2
|
import { fileURLToPath } from "node:url";
|
|
3
|
-
import { defaultPostgresSchema, getPostgresMigrationStatus, postgresRollbackConfirmation, rollbackPostgresMigration, runPostgresMigrations, } from "@agentplat/postgres";
|
|
3
|
+
import { defaultPostgresSchema, getPostgresMigrationStatus, postgresRollbackConfirmation, rollbackPostgresMigration, runPostgresMigrations, normalizePostgresIdentifier, quotePostgresIdentifier, } from "@agentplat/postgres";
|
|
4
4
|
const applicationId = "@agentplat/mesh-postgres";
|
|
5
|
-
const
|
|
5
|
+
const migrationNames = [
|
|
6
|
+
"001_mesh_durability",
|
|
7
|
+
"002_mesh_compatibility_metadata",
|
|
8
|
+
];
|
|
6
9
|
export const migrationDirectory = fileURLToPath(new URL("../migrations/", import.meta.url));
|
|
7
10
|
async function migrations() {
|
|
8
|
-
const
|
|
9
|
-
readFile(new URL(`../migrations/${
|
|
10
|
-
readFile(new URL(`../migrations/${
|
|
11
|
-
]);
|
|
11
|
+
const sources = await Promise.all(migrationNames.flatMap((name) => [
|
|
12
|
+
readFile(new URL(`../migrations/${name}.up.sql`, import.meta.url), "utf8"),
|
|
13
|
+
readFile(new URL(`../migrations/${name}.down.sql`, import.meta.url), "utf8"),
|
|
14
|
+
]));
|
|
12
15
|
return [
|
|
13
16
|
{
|
|
14
17
|
version: 1,
|
|
15
|
-
name:
|
|
16
|
-
up,
|
|
17
|
-
down,
|
|
18
|
+
name: migrationNames[0],
|
|
19
|
+
up: sources[0],
|
|
20
|
+
down: sources[1],
|
|
18
21
|
destructiveDown: true,
|
|
19
22
|
adoptIf: `
|
|
20
23
|
SELECT
|
|
@@ -25,8 +28,106 @@ async function migrations() {
|
|
|
25
28
|
AS present
|
|
26
29
|
`,
|
|
27
30
|
},
|
|
31
|
+
{
|
|
32
|
+
version: 2,
|
|
33
|
+
name: migrationNames[1],
|
|
34
|
+
up: sources[2],
|
|
35
|
+
down: sources[3],
|
|
36
|
+
destructiveDown: true,
|
|
37
|
+
adoptIf: `
|
|
38
|
+
SELECT
|
|
39
|
+
(SELECT count(*) = 13
|
|
40
|
+
FROM information_schema.columns
|
|
41
|
+
WHERE table_schema = '__AGENTPLAT_SCHEMA__'
|
|
42
|
+
AND (table_name, column_name, data_type, is_nullable) IN (
|
|
43
|
+
('mesh_peer_snapshots', 'wrapper_schema_version', 'smallint', 'NO'),
|
|
44
|
+
('mesh_peer_snapshots', 'snapshot_format', 'text', 'NO'),
|
|
45
|
+
('mesh_peer_snapshots', 'snapshot_schema_version', 'integer', 'NO'),
|
|
46
|
+
('mesh_inbox', 'wrapper_schema_version', 'smallint', 'NO'),
|
|
47
|
+
('mesh_inbox', 'envelope_format', 'text', 'NO'),
|
|
48
|
+
('mesh_inbox', 'envelope_wire_version', 'integer', 'NO'),
|
|
49
|
+
('mesh_inbox', 'envelope_bytes', 'bytea', 'YES'),
|
|
50
|
+
('mesh_outbox', 'wrapper_schema_version', 'smallint', 'NO'),
|
|
51
|
+
('mesh_outbox', 'envelope_format', 'text', 'NO'),
|
|
52
|
+
('mesh_outbox', 'envelope_wire_version', 'integer', 'NO'),
|
|
53
|
+
('mesh_outbox', 'envelope_bytes', 'bytea', 'YES'),
|
|
54
|
+
('mesh_journal', 'wrapper_schema_version', 'smallint', 'NO'),
|
|
55
|
+
('mesh_journal', 'journal_version', 'integer', 'NO')
|
|
56
|
+
))
|
|
57
|
+
AND (SELECT count(*) = 4
|
|
58
|
+
FROM information_schema.table_constraints
|
|
59
|
+
WHERE table_schema = '__AGENTPLAT_SCHEMA__'
|
|
60
|
+
AND (table_name, constraint_name, constraint_type) IN (
|
|
61
|
+
('mesh_peer_snapshots', 'mesh_peer_snapshots_compatibility_metadata_check', 'CHECK'),
|
|
62
|
+
('mesh_inbox', 'mesh_inbox_compatibility_metadata_check', 'CHECK'),
|
|
63
|
+
('mesh_outbox', 'mesh_outbox_compatibility_metadata_check', 'CHECK'),
|
|
64
|
+
('mesh_journal', 'mesh_journal_compatibility_metadata_check', 'CHECK')
|
|
65
|
+
)) AS present
|
|
66
|
+
`,
|
|
67
|
+
},
|
|
28
68
|
];
|
|
29
69
|
}
|
|
70
|
+
/** Reports expand-first adoption without mutating application rows. */
|
|
71
|
+
export async function getCompatibilityStatus(pool, options = {}) {
|
|
72
|
+
const schema = normalizePostgresIdentifier(options.schema ?? defaultPostgresSchema, "schema");
|
|
73
|
+
const prefix = `${quotePostgresIdentifier(schema)}.`;
|
|
74
|
+
const result = await pool.query(`
|
|
75
|
+
SELECT
|
|
76
|
+
(SELECT count(*) FROM ${prefix}mesh_inbox WHERE wrapper_schema_version = 1)::text AS legacy_inbox,
|
|
77
|
+
(SELECT count(*) FROM ${prefix}mesh_outbox WHERE wrapper_schema_version = 1)::text AS legacy_outbox,
|
|
78
|
+
(SELECT count(*) FROM ${prefix}mesh_peer_snapshots WHERE wrapper_schema_version = 1)::text AS legacy_snapshots,
|
|
79
|
+
(
|
|
80
|
+
(SELECT count(*) FROM ${prefix}mesh_inbox WHERE wrapper_schema_version = 2 AND envelope_bytes IS NULL)
|
|
81
|
+
+
|
|
82
|
+
(SELECT count(*) FROM ${prefix}mesh_outbox WHERE wrapper_schema_version = 2 AND envelope_bytes IS NULL)
|
|
83
|
+
)::text AS beta_missing_bytes
|
|
84
|
+
`);
|
|
85
|
+
const row = result.rows[0];
|
|
86
|
+
return Object.freeze({
|
|
87
|
+
legacyInboxRows: boundedCount(row.legacy_inbox),
|
|
88
|
+
legacyOutboxRows: boundedCount(row.legacy_outbox),
|
|
89
|
+
legacySnapshotRows: boundedCount(row.legacy_snapshots),
|
|
90
|
+
betaRowsMissingCanonicalBytes: boundedCount(row.beta_missing_bytes),
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/** Counts signed v1 work that an Alpha reader cannot safely resume. */
|
|
94
|
+
export async function getRollbackReadiness(pool, options = {}) {
|
|
95
|
+
const schema = normalizePostgresIdentifier(options.schema ?? defaultPostgresSchema, "schema");
|
|
96
|
+
const prefix = `${quotePostgresIdentifier(schema)}.`;
|
|
97
|
+
const result = await pool.query(`
|
|
98
|
+
SELECT
|
|
99
|
+
(SELECT count(*) FROM ${prefix}mesh_inbox WHERE envelope_wire_version <> 0)::text AS incompatible_inbox,
|
|
100
|
+
(SELECT count(*) FROM ${prefix}mesh_outbox WHERE envelope_wire_version <> 0)::text AS incompatible_outbox,
|
|
101
|
+
(SELECT count(*) FROM ${prefix}mesh_peer_snapshots WHERE wrapper_schema_version = 2)::text AS incompatible_snapshots,
|
|
102
|
+
(SELECT count(*) FROM ${prefix}mesh_journal WHERE wrapper_schema_version = 2)::text AS incompatible_journal
|
|
103
|
+
`);
|
|
104
|
+
const incompatibleInboxRows = boundedCount(result.rows[0].incompatible_inbox);
|
|
105
|
+
const incompatibleOutboxRows = boundedCount(result.rows[0].incompatible_outbox);
|
|
106
|
+
const incompatibleSnapshotRows = boundedCount(result.rows[0].incompatible_snapshots);
|
|
107
|
+
const incompatibleJournalRows = boundedCount(result.rows[0].incompatible_journal);
|
|
108
|
+
const incompatibleRows = incompatibleInboxRows +
|
|
109
|
+
incompatibleOutboxRows +
|
|
110
|
+
incompatibleSnapshotRows +
|
|
111
|
+
incompatibleJournalRows;
|
|
112
|
+
if (!Number.isSafeInteger(incompatibleRows)) {
|
|
113
|
+
throw new RangeError("Mesh rollback row count exceeds safe bounds");
|
|
114
|
+
}
|
|
115
|
+
return Object.freeze({
|
|
116
|
+
incompatibleInboxRows,
|
|
117
|
+
incompatibleOutboxRows,
|
|
118
|
+
incompatibleSnapshotRows,
|
|
119
|
+
incompatibleJournalRows,
|
|
120
|
+
incompatibleRows,
|
|
121
|
+
readyForAlphaReader: incompatibleRows === 0,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
function boundedCount(value) {
|
|
125
|
+
const count = Number(value);
|
|
126
|
+
if (!Number.isSafeInteger(count) || count < 0) {
|
|
127
|
+
throw new RangeError("Mesh compatibility row count exceeds safe bounds");
|
|
128
|
+
}
|
|
129
|
+
return count;
|
|
130
|
+
}
|
|
30
131
|
export async function runMigrations(pool, options = {}) {
|
|
31
132
|
return runPostgresMigrations(pool, {
|
|
32
133
|
applicationId,
|
|
@@ -42,10 +143,20 @@ export async function getMigrationStatus(pool, options = {}) {
|
|
|
42
143
|
migrations: await migrations(),
|
|
43
144
|
});
|
|
44
145
|
}
|
|
45
|
-
export function rollbackConfirmation(schema = defaultPostgresSchema, version =
|
|
146
|
+
export function rollbackConfirmation(schema = defaultPostgresSchema, version = 2) {
|
|
46
147
|
return postgresRollbackConfirmation(applicationId, schema, version);
|
|
47
148
|
}
|
|
48
149
|
export async function rollbackMigrations(pool, options) {
|
|
150
|
+
if (options.expectedCurrentVersion === 2) {
|
|
151
|
+
if (options.verifiedBackup !== true) {
|
|
152
|
+
throw new TypeError("Mesh migration rollback requires a verified external backup");
|
|
153
|
+
}
|
|
154
|
+
const readiness = await getRollbackReadiness(pool, options);
|
|
155
|
+
if (!readiness.readyForAlphaReader &&
|
|
156
|
+
options.allowIncompatibleRows !== true) {
|
|
157
|
+
throw new TypeError("Mesh migration rollback requires drained v1 rows or an explicit loss decision");
|
|
158
|
+
}
|
|
159
|
+
}
|
|
49
160
|
return rollbackPostgresMigration(pool, {
|
|
50
161
|
applicationId,
|
|
51
162
|
schema: options.schema,
|
package/dist/migrations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,4BAA4B,EAC5B,yBAAyB,EACzB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"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"}
|
package/dist/repository.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,uBAAuB,EAEvB,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,EAChB,4BAA4B,EAE7B,MAAM,4BAA4B,CAAC;AAMpC,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,KAAK,EAAE,IAAI,EAA2C,MAAM,IAAI,CAAC;AAuBxE,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,+BAA+B,CAAC,EAAE,MAAM,CAAC;CACnD;AAED;;;;GAIG;AACH,qBAAa,6BAA8B,YAAW,qBAAqB;;IAKvE,QAAQ,CAAC,IAAI,EAAE,IAAI;gBAAV,IAAI,EAAE,IAAI,EACnB,OAAO,GAAE,oCAAyC;IAgB9C,OAAO,CAAC,KAAK,EAAE;QACnB,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;QACjC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;KACvC,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAyE/B,YAAY,CAChB,UAAU,EAAE,gBAAgB,GAC3B,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAazC,UAAU,CACd,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,SAAS,sBAAsB,EAAE,CAAC;IAiDvC,qBAAqB,CACzB,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,uBAAuB,CAAC;IAoQ7B,YAAY,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC;IAsC9D,WAAW,CACf,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,SAAS,uBAAuB,EAAE,CAAC;IAiDxC,YAAY,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,OAAO,CAAC;IA4DnE,cAAc,CAClB,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,SAAS,uBAAuB,EAAE,CAAC;IAqB9C,KAAK,IAAI,IAAI;CAmBd"}
|
package/dist/repository.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { MESH_DURABILITY_SCHEMA_VERSION, MESH_DURABLE_GENESIS_DIGEST, computeMeshDurableValueDigest, createMeshDurableJournalEntry, normalizeMeshDurableScope, } from "@agentplat/mesh/durability";
|
|
1
|
+
import { MESH_DURABILITY_SCHEMA_VERSION, MESH_DURABLE_ENVELOPE_FORMAT, MESH_DURABLE_GENESIS_DIGEST, MESH_DURABLE_JOURNAL_VERSION, MESH_DURABLE_LEGACY_OPAQUE_SNAPSHOT_FORMAT, MESH_DURABLE_OPAQUE_SNAPSHOT_FORMAT, MESH_PREVIOUS_DURABILITY_SCHEMA_VERSION, computeMeshDurableValueDigest, createMeshDurableJournalEntry, normalizeMeshDurableScope, } from "@agentplat/mesh/durability";
|
|
2
2
|
import { canonicalizeMeshJsonBytes, parseSignedMeshEnvelope, validateSignedMeshEnvelope, } from "@agentplat/mesh-protocol";
|
|
3
3
|
import { defaultPostgresSchema, normalizePostgresIdentifier, quotePostgresIdentifier, } from "@agentplat/postgres";
|
|
4
|
+
import { Buffer } from "node:buffer";
|
|
4
5
|
function scopedDatabase(database, schema) {
|
|
5
6
|
const prefix = `${quotePostgresIdentifier(schema)}.`;
|
|
6
7
|
return {
|
|
@@ -30,6 +31,7 @@ export class PostgresMeshDurableRepository {
|
|
|
30
31
|
const scope = normalizeMeshDurableScope(input.scope);
|
|
31
32
|
const envelope = validateInboundEnvelope(input.envelope, scope);
|
|
32
33
|
const envelopeDigest = await digestEnvelope(envelope);
|
|
34
|
+
const envelopeBytes = canonicalEnvelopeBytes(envelope);
|
|
33
35
|
return this.#transaction(async (database) => {
|
|
34
36
|
await database.query("SELECT pg_advisory_xact_lock(hashtextextended($1, 0))", [scopeKey(scope)]);
|
|
35
37
|
const existing = await database.query(`SELECT envelope_digest, received_at
|
|
@@ -62,13 +64,18 @@ export class PostgresMeshDurableRepository {
|
|
|
62
64
|
}
|
|
63
65
|
const inserted = await database.query(`INSERT INTO public.mesh_inbox
|
|
64
66
|
(tenant_id, mesh_id, peer_id, instance_id, message_id,
|
|
65
|
-
envelope, envelope_digest
|
|
66
|
-
|
|
67
|
+
envelope, envelope_digest, wrapper_schema_version,
|
|
68
|
+
envelope_format, envelope_wire_version, envelope_bytes)
|
|
69
|
+
VALUES ($1, $2, $3, $4, $5, $6::jsonb, $7, $8, $9, $10, $11)
|
|
67
70
|
RETURNING received_at`, [
|
|
68
71
|
...scopeValues(scope),
|
|
69
72
|
envelope.messageId,
|
|
70
73
|
JSON.stringify(envelope),
|
|
71
74
|
envelopeDigest,
|
|
75
|
+
MESH_DURABILITY_SCHEMA_VERSION,
|
|
76
|
+
MESH_DURABLE_ENVELOPE_FORMAT,
|
|
77
|
+
envelope.wireVersion,
|
|
78
|
+
Buffer.from(envelopeBytes),
|
|
72
79
|
]);
|
|
73
80
|
return Object.freeze({
|
|
74
81
|
accepted: true,
|
|
@@ -167,18 +174,31 @@ export class PostgresMeshDurableRepository {
|
|
|
167
174
|
if (input.outcome === "applied") {
|
|
168
175
|
const state = cloneStrictJson(input.nextState);
|
|
169
176
|
const stateDigest = await computeMeshDurableValueDigest(state);
|
|
177
|
+
const descriptor = normalizeSnapshotDescriptor(input.nextStateDescriptor);
|
|
170
178
|
const revision = input.expectedSnapshotRevision + 1;
|
|
171
179
|
const snapshotResult = await database.query(`INSERT INTO public.mesh_peer_snapshots
|
|
172
180
|
(tenant_id, mesh_id, peer_id, instance_id, revision, state,
|
|
173
|
-
state_digest,
|
|
174
|
-
|
|
181
|
+
state_digest, wrapper_schema_version, snapshot_format,
|
|
182
|
+
snapshot_schema_version, committed_at)
|
|
183
|
+
VALUES ($1, $2, $3, $4, $5, $6::jsonb, $7, $8, $9, $10,
|
|
175
184
|
transaction_timestamp())
|
|
176
185
|
ON CONFLICT (tenant_id, mesh_id, peer_id, instance_id)
|
|
177
186
|
DO UPDATE SET revision = EXCLUDED.revision,
|
|
178
187
|
state = EXCLUDED.state,
|
|
179
188
|
state_digest = EXCLUDED.state_digest,
|
|
189
|
+
wrapper_schema_version = EXCLUDED.wrapper_schema_version,
|
|
190
|
+
snapshot_format = EXCLUDED.snapshot_format,
|
|
191
|
+
snapshot_schema_version = EXCLUDED.snapshot_schema_version,
|
|
180
192
|
committed_at = EXCLUDED.committed_at
|
|
181
|
-
RETURNING *`, [
|
|
193
|
+
RETURNING *`, [
|
|
194
|
+
...scopeValues(scope),
|
|
195
|
+
revision,
|
|
196
|
+
JSON.stringify(state),
|
|
197
|
+
stateDigest,
|
|
198
|
+
MESH_DURABILITY_SCHEMA_VERSION,
|
|
199
|
+
descriptor.format,
|
|
200
|
+
descriptor.schemaVersion,
|
|
201
|
+
]);
|
|
182
202
|
snapshot = await mapSnapshot(snapshotResult.rows[0], scope);
|
|
183
203
|
}
|
|
184
204
|
const snapshotRevision = snapshot?.revision ?? 0;
|
|
@@ -239,9 +259,9 @@ export class PostgresMeshDurableRepository {
|
|
|
239
259
|
(tenant_id, mesh_id, peer_id, instance_id, sequence, entry_id,
|
|
240
260
|
previous_digest, digest, transition_id, inbox_message_id,
|
|
241
261
|
snapshot_revision, snapshot_digest, kind, reason_code,
|
|
242
|
-
occurred_at)
|
|
262
|
+
occurred_at, wrapper_schema_version, journal_version)
|
|
243
263
|
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12,
|
|
244
|
-
$13, $14, $15::timestamptz)`, [
|
|
264
|
+
$13, $14, $15::timestamptz, $16, $17)`, [
|
|
245
265
|
...scopeValues(scope),
|
|
246
266
|
entry.sequence,
|
|
247
267
|
entry.entryId,
|
|
@@ -254,6 +274,8 @@ export class PostgresMeshDurableRepository {
|
|
|
254
274
|
entry.kind,
|
|
255
275
|
entry.reasonCode ?? null,
|
|
256
276
|
entry.occurredAt,
|
|
277
|
+
MESH_DURABILITY_SCHEMA_VERSION,
|
|
278
|
+
MESH_DURABLE_JOURNAL_VERSION,
|
|
257
279
|
]);
|
|
258
280
|
journal.push(entry);
|
|
259
281
|
previousDigest = entry.digest;
|
|
@@ -266,10 +288,14 @@ export class PostgresMeshDurableRepository {
|
|
|
266
288
|
: undefined);
|
|
267
289
|
const envelope = validateOutboundEnvelope(outbound.envelope, scope, targetPeerId);
|
|
268
290
|
const envelopeDigest = await digestEnvelope(envelope);
|
|
291
|
+
const envelopeBytes = canonicalEnvelopeBytes(envelope);
|
|
269
292
|
const inserted = await database.query(`INSERT INTO public.mesh_outbox
|
|
270
293
|
(tenant_id, mesh_id, peer_id, instance_id, effect_id, message_id,
|
|
271
|
-
target_peer_id, envelope, envelope_digest
|
|
272
|
-
|
|
294
|
+
target_peer_id, envelope, envelope_digest,
|
|
295
|
+
wrapper_schema_version, envelope_format,
|
|
296
|
+
envelope_wire_version, envelope_bytes)
|
|
297
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8::jsonb, $9, $10, $11,
|
|
298
|
+
$12, $13)
|
|
273
299
|
RETURNING *`, [
|
|
274
300
|
...scopeValues(scope),
|
|
275
301
|
outbound.effectId,
|
|
@@ -277,6 +303,10 @@ export class PostgresMeshDurableRepository {
|
|
|
277
303
|
targetPeerId ?? null,
|
|
278
304
|
JSON.stringify(envelope),
|
|
279
305
|
envelopeDigest,
|
|
306
|
+
MESH_DURABILITY_SCHEMA_VERSION,
|
|
307
|
+
MESH_DURABLE_ENVELOPE_FORMAT,
|
|
308
|
+
envelope.wireVersion,
|
|
309
|
+
Buffer.from(envelopeBytes),
|
|
280
310
|
]);
|
|
281
311
|
outbox.push(await mapOutbox(inserted.rows[0], scope));
|
|
282
312
|
}
|
|
@@ -502,7 +532,66 @@ function validateOutboundEnvelope(input, scope, targetPeerId) {
|
|
|
502
532
|
async function digestEnvelope(envelope) {
|
|
503
533
|
return computeMeshDurableValueDigest(envelope);
|
|
504
534
|
}
|
|
505
|
-
|
|
535
|
+
function canonicalEnvelopeBytes(envelope) {
|
|
536
|
+
const canonical = canonicalizeMeshJsonBytes(envelope);
|
|
537
|
+
if (!canonical.ok) {
|
|
538
|
+
throw new TypeError("Mesh envelope cannot be encoded canonically");
|
|
539
|
+
}
|
|
540
|
+
return canonical.value;
|
|
541
|
+
}
|
|
542
|
+
function normalizeSnapshotDescriptor(input) {
|
|
543
|
+
const descriptor = input ??
|
|
544
|
+
Object.freeze({
|
|
545
|
+
format: MESH_DURABLE_OPAQUE_SNAPSHOT_FORMAT,
|
|
546
|
+
schemaVersion: 0,
|
|
547
|
+
});
|
|
548
|
+
const keys = descriptor && typeof descriptor === "object"
|
|
549
|
+
? Object.keys(descriptor).sort()
|
|
550
|
+
: [];
|
|
551
|
+
if (!descriptor ||
|
|
552
|
+
typeof descriptor !== "object" ||
|
|
553
|
+
keys.length !== 2 ||
|
|
554
|
+
keys[0] !== "format" ||
|
|
555
|
+
keys[1] !== "schemaVersion" ||
|
|
556
|
+
typeof descriptor.format !== "string" ||
|
|
557
|
+
descriptor.format.length < 3 ||
|
|
558
|
+
new TextEncoder().encode(descriptor.format).byteLength > 256 ||
|
|
559
|
+
/[\u0000-\u001f\u007f]/u.test(descriptor.format) ||
|
|
560
|
+
descriptor.format === MESH_DURABLE_LEGACY_OPAQUE_SNAPSHOT_FORMAT ||
|
|
561
|
+
!Number.isSafeInteger(descriptor.schemaVersion) ||
|
|
562
|
+
descriptor.schemaVersion < 0 ||
|
|
563
|
+
descriptor.schemaVersion > 65_535) {
|
|
564
|
+
throw new TypeError("Mesh snapshot descriptor is invalid");
|
|
565
|
+
}
|
|
566
|
+
return Object.freeze({ ...descriptor });
|
|
567
|
+
}
|
|
568
|
+
function durabilitySchemaVersion(value) {
|
|
569
|
+
const version = Number(value ?? MESH_PREVIOUS_DURABILITY_SCHEMA_VERSION);
|
|
570
|
+
if (version !== MESH_PREVIOUS_DURABILITY_SCHEMA_VERSION &&
|
|
571
|
+
version !== MESH_DURABILITY_SCHEMA_VERSION) {
|
|
572
|
+
throw new TypeError("Persisted Mesh wrapper schema version is invalid");
|
|
573
|
+
}
|
|
574
|
+
return version;
|
|
575
|
+
}
|
|
576
|
+
function assertEnvelopeMetadata(row, schemaVersion, envelope, canonicalBytes) {
|
|
577
|
+
if (schemaVersion === MESH_PREVIOUS_DURABILITY_SCHEMA_VERSION)
|
|
578
|
+
return;
|
|
579
|
+
if (row.envelope_format !== MESH_DURABLE_ENVELOPE_FORMAT ||
|
|
580
|
+
safeInteger(row.envelope_wire_version, "envelope wire version") !==
|
|
581
|
+
envelope.wireVersion ||
|
|
582
|
+
row.envelope_bytes == null ||
|
|
583
|
+
!bytesEqual(canonicalBytes, row.envelope_bytes)) {
|
|
584
|
+
throw new TypeError("Persisted Mesh envelope metadata is invalid");
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
function bytesEqual(expected, actual) {
|
|
588
|
+
if (!(actual instanceof Uint8Array) ||
|
|
589
|
+
actual.byteLength !== expected.length) {
|
|
590
|
+
return false;
|
|
591
|
+
}
|
|
592
|
+
return expected.every((value, index) => actual[index] === value);
|
|
593
|
+
}
|
|
594
|
+
async function restoreEnvelope(input, persistedBytes) {
|
|
506
595
|
const canonical = canonicalizeMeshJsonBytes(input);
|
|
507
596
|
if (!canonical.ok) {
|
|
508
597
|
throw new TypeError("Persisted Mesh envelope is invalid");
|
|
@@ -510,10 +599,16 @@ async function restoreEnvelope(input) {
|
|
|
510
599
|
const parsed = parseSignedMeshEnvelope(canonical.value);
|
|
511
600
|
if (!parsed.ok)
|
|
512
601
|
throw new TypeError("Persisted Mesh envelope is invalid");
|
|
513
|
-
|
|
602
|
+
if (persistedBytes !== undefined &&
|
|
603
|
+
persistedBytes !== null &&
|
|
604
|
+
!bytesEqual(canonical.value, persistedBytes)) {
|
|
605
|
+
throw new TypeError("Persisted Mesh envelope bytes are not canonical");
|
|
606
|
+
}
|
|
607
|
+
return Object.freeze({ envelope: parsed.value, bytes: canonical.value });
|
|
514
608
|
}
|
|
515
609
|
async function mapInbox(row, scope) {
|
|
516
|
-
const
|
|
610
|
+
const restored = await restoreEnvelope(row.envelope, row.envelope_bytes);
|
|
611
|
+
const envelope = restored.envelope;
|
|
517
612
|
const envelopeDigest = await digestEnvelope(envelope);
|
|
518
613
|
if (envelope.messageId !== String(row.message_id) ||
|
|
519
614
|
envelopeDigest !== String(row.envelope_digest)) {
|
|
@@ -521,12 +616,21 @@ async function mapInbox(row, scope) {
|
|
|
521
616
|
}
|
|
522
617
|
const status = String(row.status);
|
|
523
618
|
const claim = mapClaim(row, status === "processing");
|
|
619
|
+
const schemaVersion = durabilitySchemaVersion(row.wrapper_schema_version);
|
|
620
|
+
assertEnvelopeMetadata(row, schemaVersion, envelope, restored.bytes);
|
|
524
621
|
return Object.freeze({
|
|
525
|
-
schemaVersion
|
|
622
|
+
schemaVersion,
|
|
526
623
|
scope,
|
|
527
624
|
messageId: envelope.messageId,
|
|
528
625
|
envelope,
|
|
529
626
|
envelopeDigest,
|
|
627
|
+
...(schemaVersion === MESH_DURABILITY_SCHEMA_VERSION
|
|
628
|
+
? {
|
|
629
|
+
envelopeFormat: String(row.envelope_format),
|
|
630
|
+
envelopeWireVersion: safeInteger(row.envelope_wire_version, "inbox envelope wire version"),
|
|
631
|
+
envelopeBytes: Buffer.from(restored.bytes).toString("base64url"),
|
|
632
|
+
}
|
|
633
|
+
: {}),
|
|
530
634
|
status,
|
|
531
635
|
attempts: safeInteger(row.attempts, "inbox attempts"),
|
|
532
636
|
receivedAt: iso(row.received_at),
|
|
@@ -537,7 +641,8 @@ async function mapInbox(row, scope) {
|
|
|
537
641
|
});
|
|
538
642
|
}
|
|
539
643
|
async function mapOutbox(row, scope) {
|
|
540
|
-
const
|
|
644
|
+
const restored = await restoreEnvelope(row.envelope, row.envelope_bytes);
|
|
645
|
+
const envelope = restored.envelope;
|
|
541
646
|
const envelopeDigest = await digestEnvelope(envelope);
|
|
542
647
|
if (envelope.messageId !== String(row.message_id) ||
|
|
543
648
|
envelopeDigest !== String(row.envelope_digest)) {
|
|
@@ -545,13 +650,22 @@ async function mapOutbox(row, scope) {
|
|
|
545
650
|
}
|
|
546
651
|
const status = String(row.status);
|
|
547
652
|
const claim = mapClaim(row, status === "delivering");
|
|
653
|
+
const schemaVersion = durabilitySchemaVersion(row.wrapper_schema_version);
|
|
654
|
+
assertEnvelopeMetadata(row, schemaVersion, envelope, restored.bytes);
|
|
548
655
|
return Object.freeze({
|
|
549
|
-
schemaVersion
|
|
656
|
+
schemaVersion,
|
|
550
657
|
scope,
|
|
551
658
|
effectId: String(row.effect_id),
|
|
552
659
|
messageId: envelope.messageId,
|
|
553
660
|
envelope,
|
|
554
661
|
envelopeDigest,
|
|
662
|
+
...(schemaVersion === MESH_DURABILITY_SCHEMA_VERSION
|
|
663
|
+
? {
|
|
664
|
+
envelopeFormat: String(row.envelope_format),
|
|
665
|
+
envelopeWireVersion: safeInteger(row.envelope_wire_version, "outbox envelope wire version"),
|
|
666
|
+
envelopeBytes: Buffer.from(restored.bytes).toString("base64url"),
|
|
667
|
+
}
|
|
668
|
+
: {}),
|
|
555
669
|
...(row.target_peer_id == null
|
|
556
670
|
? {}
|
|
557
671
|
: { targetPeerId: String(row.target_peer_id) }),
|
|
@@ -570,16 +684,41 @@ async function mapSnapshot(row, scope) {
|
|
|
570
684
|
if (stateDigest !== String(row.state_digest)) {
|
|
571
685
|
throw new TypeError("Persisted Mesh snapshot integrity check failed");
|
|
572
686
|
}
|
|
687
|
+
const schemaVersion = durabilitySchemaVersion(row.wrapper_schema_version);
|
|
688
|
+
const hasSnapshotFormat = row.snapshot_format !== undefined;
|
|
689
|
+
const hasSnapshotSchemaVersion = row.snapshot_schema_version !== undefined;
|
|
690
|
+
if (hasSnapshotFormat !== hasSnapshotSchemaVersion) {
|
|
691
|
+
throw new TypeError("Persisted Mesh snapshot descriptor is incomplete");
|
|
692
|
+
}
|
|
693
|
+
const descriptor = hasSnapshotFormat
|
|
694
|
+
? persistedSnapshotDescriptor(row.snapshot_format, row.snapshot_schema_version, schemaVersion)
|
|
695
|
+
: undefined;
|
|
696
|
+
if (schemaVersion === MESH_DURABILITY_SCHEMA_VERSION &&
|
|
697
|
+
descriptor === undefined) {
|
|
698
|
+
throw new TypeError("Persisted Mesh snapshot descriptor is missing");
|
|
699
|
+
}
|
|
573
700
|
return Object.freeze({
|
|
574
|
-
schemaVersion
|
|
701
|
+
schemaVersion,
|
|
575
702
|
scope,
|
|
576
703
|
revision: positiveInteger(safeInteger(row.revision, "snapshot revision"), "snapshot revision", Number.MAX_SAFE_INTEGER),
|
|
577
704
|
state,
|
|
578
705
|
stateDigest,
|
|
706
|
+
...(descriptor === undefined
|
|
707
|
+
? {}
|
|
708
|
+
: {
|
|
709
|
+
snapshotFormat: descriptor.format,
|
|
710
|
+
snapshotSchemaVersion: descriptor.schemaVersion,
|
|
711
|
+
}),
|
|
579
712
|
committedAt: iso(row.committed_at),
|
|
580
713
|
});
|
|
581
714
|
}
|
|
582
715
|
async function mapJournal(row, scope) {
|
|
716
|
+
const schemaVersion = durabilitySchemaVersion(row.wrapper_schema_version);
|
|
717
|
+
if (schemaVersion === MESH_DURABILITY_SCHEMA_VERSION &&
|
|
718
|
+
safeInteger(row.journal_version, "journal chain version") !==
|
|
719
|
+
MESH_DURABLE_JOURNAL_VERSION) {
|
|
720
|
+
throw new TypeError("Persisted Mesh journal version is invalid");
|
|
721
|
+
}
|
|
583
722
|
const entry = await createMeshDurableJournalEntry({
|
|
584
723
|
scope,
|
|
585
724
|
sequence: safeInteger(row.sequence, "journal sequence"),
|
|
@@ -598,12 +737,29 @@ async function mapJournal(row, scope) {
|
|
|
598
737
|
: { reasonCode: String(row.reason_code) }),
|
|
599
738
|
},
|
|
600
739
|
occurredAt: iso(row.occurred_at),
|
|
740
|
+
schemaVersion,
|
|
601
741
|
});
|
|
602
742
|
if (entry.digest !== String(row.digest)) {
|
|
603
743
|
throw new TypeError("Persisted Mesh journal integrity check failed");
|
|
604
744
|
}
|
|
605
745
|
return entry;
|
|
606
746
|
}
|
|
747
|
+
function persistedSnapshotDescriptor(formatValue, schemaVersionValue, wrapperSchemaVersion) {
|
|
748
|
+
const format = String(formatValue);
|
|
749
|
+
const schemaVersion = safeInteger(schemaVersionValue, "snapshot content schema version");
|
|
750
|
+
if (format.length < 3 ||
|
|
751
|
+
new TextEncoder().encode(format).byteLength > 256 ||
|
|
752
|
+
/[\u0000-\u001f\u007f]/u.test(format) ||
|
|
753
|
+
schemaVersion < 0 ||
|
|
754
|
+
schemaVersion > 65_535 ||
|
|
755
|
+
(wrapperSchemaVersion === MESH_DURABILITY_SCHEMA_VERSION &&
|
|
756
|
+
format === MESH_DURABLE_LEGACY_OPAQUE_SNAPSHOT_FORMAT) ||
|
|
757
|
+
(wrapperSchemaVersion === MESH_PREVIOUS_DURABILITY_SCHEMA_VERSION &&
|
|
758
|
+
format !== MESH_DURABLE_LEGACY_OPAQUE_SNAPSHOT_FORMAT)) {
|
|
759
|
+
throw new TypeError("Persisted Mesh snapshot descriptor is invalid");
|
|
760
|
+
}
|
|
761
|
+
return Object.freeze({ format, schemaVersion });
|
|
762
|
+
}
|
|
607
763
|
function mapClaim(row, required) {
|
|
608
764
|
if (!required)
|
|
609
765
|
return undefined;
|
|
@@ -641,12 +797,16 @@ function assertCommitInput(input, scope) {
|
|
|
641
797
|
(input.outcome === "applied" && input.nextState === undefined) ||
|
|
642
798
|
(input.outcome === "rejected" &&
|
|
643
799
|
(input.nextState !== undefined ||
|
|
800
|
+
input.nextStateDescriptor !== undefined ||
|
|
644
801
|
input.outbox.length !== 0 ||
|
|
645
802
|
input.reasonCode === undefined)) ||
|
|
646
803
|
(input.outcome === "applied" && input.reasonCode !== undefined) ||
|
|
647
804
|
(input.outcome !== "applied" && input.outcome !== "rejected")) {
|
|
648
805
|
throw new TypeError("Mesh durable commit input is invalid");
|
|
649
806
|
}
|
|
807
|
+
if (input.outcome === "applied") {
|
|
808
|
+
normalizeSnapshotDescriptor(input.nextStateDescriptor);
|
|
809
|
+
}
|
|
650
810
|
if (input.reasonCode !== undefined) {
|
|
651
811
|
boundedReason(input.reasonCode, "reasonCode");
|
|
652
812
|
}
|
package/dist/repository.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { MeshDurableScope, MeshDurableSnapshotDescriptor } from "@agentplat/mesh/durability";
|
|
2
|
+
import type { MeshJsonValue } from "@agentplat/mesh-protocol";
|
|
3
|
+
import type { Pool } from "pg";
|
|
4
|
+
export interface MeshPostgresSnapshotBackfillOptions {
|
|
5
|
+
readonly schema?: string;
|
|
6
|
+
readonly batchSize?: number;
|
|
7
|
+
readonly migrationTimeoutMs?: number;
|
|
8
|
+
readonly target: MeshDurableSnapshotDescriptor;
|
|
9
|
+
readonly migrate: (input: Readonly<{
|
|
10
|
+
scope: MeshDurableScope;
|
|
11
|
+
state: MeshJsonValue;
|
|
12
|
+
sourceFormat: string;
|
|
13
|
+
sourceSchemaVersion: number;
|
|
14
|
+
}>) => MeshJsonValue | Promise<MeshJsonValue>;
|
|
15
|
+
}
|
|
16
|
+
export interface MeshPostgresSnapshotBackfillResult {
|
|
17
|
+
readonly selected: number;
|
|
18
|
+
readonly migrated: number;
|
|
19
|
+
readonly remainingLegacyRows: number;
|
|
20
|
+
readonly complete: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Migrates one locked, bounded batch of explicitly legacy snapshots. A caller
|
|
24
|
+
* supplies the exact target format and a deterministic content migration.
|
|
25
|
+
*/
|
|
26
|
+
export declare function backfillLegacySnapshots(pool: Pool, options: MeshPostgresSnapshotBackfillOptions): Promise<MeshPostgresSnapshotBackfillResult>;
|
|
27
|
+
//# sourceMappingURL=snapshot-backfill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-backfill.d.ts","sourceRoot":"","sources":["../src/snapshot-backfill.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gBAAgB,EAChB,6BAA6B,EAC9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAM9D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE/B,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,6BAA6B,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,CAChB,KAAK,EAAE,QAAQ,CAAC;QACd,KAAK,EAAE,gBAAgB,CAAC;QACxB,KAAK,EAAE,aAAa,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC,KACC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAaD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,mCAAmC,GAC3C,OAAO,CAAC,kCAAkC,CAAC,CAyH7C"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { MESH_DURABLE_LEGACY_OPAQUE_SNAPSHOT_FORMAT, computeMeshDurableValueDigest, } from "@agentplat/mesh/durability";
|
|
2
|
+
import { defaultPostgresSchema, normalizePostgresIdentifier, quotePostgresIdentifier, } from "@agentplat/postgres";
|
|
3
|
+
/**
|
|
4
|
+
* Migrates one locked, bounded batch of explicitly legacy snapshots. A caller
|
|
5
|
+
* supplies the exact target format and a deterministic content migration.
|
|
6
|
+
*/
|
|
7
|
+
export async function backfillLegacySnapshots(pool, options) {
|
|
8
|
+
if (!pool || typeof pool.connect !== "function") {
|
|
9
|
+
throw new TypeError("A PostgreSQL pool is required");
|
|
10
|
+
}
|
|
11
|
+
if (!options || typeof options !== "object") {
|
|
12
|
+
throw new TypeError("Mesh snapshot backfill options are required");
|
|
13
|
+
}
|
|
14
|
+
const schema = normalizePostgresIdentifier(options.schema ?? defaultPostgresSchema, "schema");
|
|
15
|
+
const target = normalizeTarget(options.target);
|
|
16
|
+
const batchSize = options.batchSize ?? 100;
|
|
17
|
+
if (!Number.isSafeInteger(batchSize) || batchSize < 1 || batchSize > 1_000) {
|
|
18
|
+
throw new RangeError("Mesh snapshot backfill batch size is invalid");
|
|
19
|
+
}
|
|
20
|
+
if (typeof options.migrate !== "function") {
|
|
21
|
+
throw new TypeError("Mesh snapshot backfill migration is required");
|
|
22
|
+
}
|
|
23
|
+
const migrationTimeoutMs = options.migrationTimeoutMs ?? 10_000;
|
|
24
|
+
if (!Number.isSafeInteger(migrationTimeoutMs) ||
|
|
25
|
+
migrationTimeoutMs < 10 ||
|
|
26
|
+
migrationTimeoutMs > 120_000) {
|
|
27
|
+
throw new RangeError("Mesh snapshot backfill timeout is invalid");
|
|
28
|
+
}
|
|
29
|
+
const prefix = `${quotePostgresIdentifier(schema)}.`;
|
|
30
|
+
const client = await pool.connect();
|
|
31
|
+
try {
|
|
32
|
+
await client.query("BEGIN");
|
|
33
|
+
const selected = await client.query(`SELECT tenant_id, mesh_id, peer_id, instance_id, state, state_digest,
|
|
34
|
+
snapshot_format, snapshot_schema_version
|
|
35
|
+
FROM ${prefix}mesh_peer_snapshots
|
|
36
|
+
WHERE wrapper_schema_version = 1
|
|
37
|
+
ORDER BY tenant_id, mesh_id, peer_id, instance_id
|
|
38
|
+
FOR UPDATE SKIP LOCKED
|
|
39
|
+
LIMIT $1`, [batchSize]);
|
|
40
|
+
let migrated = 0;
|
|
41
|
+
for (const row of selected.rows) {
|
|
42
|
+
const sourceDigest = await computeMeshDurableValueDigest(row.state);
|
|
43
|
+
if (sourceDigest !== row.state_digest) {
|
|
44
|
+
throw new TypeError("Legacy Mesh snapshot digest does not match");
|
|
45
|
+
}
|
|
46
|
+
const scope = freezeScope(row);
|
|
47
|
+
const input = Object.freeze({
|
|
48
|
+
scope,
|
|
49
|
+
state: deepFreeze(cloneJson(row.state)),
|
|
50
|
+
sourceFormat: String(row.snapshot_format),
|
|
51
|
+
sourceSchemaVersion: safeSchemaVersion(row.snapshot_schema_version),
|
|
52
|
+
});
|
|
53
|
+
const first = await boundedMigration(options.migrate(input), migrationTimeoutMs);
|
|
54
|
+
const second = await boundedMigration(options.migrate(Object.freeze({ ...input, state: deepFreeze(cloneJson(row.state)) })), migrationTimeoutMs);
|
|
55
|
+
const firstDigest = await computeMeshDurableValueDigest(first);
|
|
56
|
+
const secondDigest = await computeMeshDurableValueDigest(second);
|
|
57
|
+
if (firstDigest !== secondDigest) {
|
|
58
|
+
throw new TypeError("Mesh snapshot backfill migration is nondeterministic");
|
|
59
|
+
}
|
|
60
|
+
const updated = await client.query(`UPDATE ${prefix}mesh_peer_snapshots
|
|
61
|
+
SET state = $5::jsonb,
|
|
62
|
+
state_digest = $6,
|
|
63
|
+
wrapper_schema_version = 2,
|
|
64
|
+
snapshot_format = $7,
|
|
65
|
+
snapshot_schema_version = $8
|
|
66
|
+
WHERE tenant_id = $1 AND mesh_id = $2 AND peer_id = $3
|
|
67
|
+
AND instance_id = $4 AND wrapper_schema_version = 1
|
|
68
|
+
AND state_digest = $9`, [
|
|
69
|
+
scope.tenantId,
|
|
70
|
+
scope.meshId,
|
|
71
|
+
scope.peerId,
|
|
72
|
+
scope.instanceId,
|
|
73
|
+
JSON.stringify(first),
|
|
74
|
+
firstDigest,
|
|
75
|
+
target.format,
|
|
76
|
+
target.schemaVersion,
|
|
77
|
+
row.state_digest,
|
|
78
|
+
]);
|
|
79
|
+
if (updated.rowCount !== 1) {
|
|
80
|
+
throw new TypeError("Legacy Mesh snapshot changed during backfill");
|
|
81
|
+
}
|
|
82
|
+
migrated += 1;
|
|
83
|
+
}
|
|
84
|
+
const remaining = await client.query(`SELECT count(*)::text AS count
|
|
85
|
+
FROM ${prefix}mesh_peer_snapshots
|
|
86
|
+
WHERE wrapper_schema_version = 1`);
|
|
87
|
+
const remainingLegacyRows = safeCount(remaining.rows[0].count);
|
|
88
|
+
await client.query("COMMIT");
|
|
89
|
+
return Object.freeze({
|
|
90
|
+
selected: selected.rows.length,
|
|
91
|
+
migrated,
|
|
92
|
+
remainingLegacyRows,
|
|
93
|
+
complete: remainingLegacyRows === 0,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
try {
|
|
98
|
+
await client.query("ROLLBACK");
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
// Preserve the migration failure; caller-owned pool recovery is external.
|
|
102
|
+
}
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
105
|
+
finally {
|
|
106
|
+
client.release();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function normalizeTarget(target) {
|
|
110
|
+
if (!target || typeof target !== "object") {
|
|
111
|
+
throw new TypeError("Mesh snapshot backfill target is required");
|
|
112
|
+
}
|
|
113
|
+
const keys = Object.keys(target).sort();
|
|
114
|
+
if (keys.length !== 2 ||
|
|
115
|
+
keys[0] !== "format" ||
|
|
116
|
+
keys[1] !== "schemaVersion" ||
|
|
117
|
+
typeof target.format !== "string" ||
|
|
118
|
+
target.format.length < 3 ||
|
|
119
|
+
new TextEncoder().encode(target.format).byteLength > 256 ||
|
|
120
|
+
/[\u0000-\u001f\u007f]/u.test(target.format) ||
|
|
121
|
+
target.format === MESH_DURABLE_LEGACY_OPAQUE_SNAPSHOT_FORMAT) {
|
|
122
|
+
throw new TypeError("Mesh snapshot backfill target is invalid");
|
|
123
|
+
}
|
|
124
|
+
return Object.freeze({
|
|
125
|
+
format: target.format,
|
|
126
|
+
schemaVersion: safeSchemaVersion(target.schemaVersion),
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
async function boundedMigration(operation, timeoutMs) {
|
|
130
|
+
let timer;
|
|
131
|
+
try {
|
|
132
|
+
return await Promise.race([
|
|
133
|
+
Promise.resolve(operation),
|
|
134
|
+
new Promise((_resolve, reject) => {
|
|
135
|
+
timer = setTimeout(() => reject(new Error("Mesh snapshot backfill migration timed out")), timeoutMs);
|
|
136
|
+
}),
|
|
137
|
+
]);
|
|
138
|
+
}
|
|
139
|
+
finally {
|
|
140
|
+
if (timer !== undefined)
|
|
141
|
+
clearTimeout(timer);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function freezeScope(row) {
|
|
145
|
+
return Object.freeze({
|
|
146
|
+
tenantId: String(row.tenant_id),
|
|
147
|
+
meshId: String(row.mesh_id),
|
|
148
|
+
peerId: String(row.peer_id),
|
|
149
|
+
instanceId: String(row.instance_id),
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
function safeSchemaVersion(value) {
|
|
153
|
+
const number = Number(value);
|
|
154
|
+
if (!Number.isSafeInteger(number) || number < 0 || number > 65_535) {
|
|
155
|
+
throw new RangeError("Mesh snapshot schema version is invalid");
|
|
156
|
+
}
|
|
157
|
+
return number;
|
|
158
|
+
}
|
|
159
|
+
function safeCount(value) {
|
|
160
|
+
const count = Number(value);
|
|
161
|
+
if (!Number.isSafeInteger(count) || count < 0) {
|
|
162
|
+
throw new RangeError("Mesh snapshot backfill row count exceeds bounds");
|
|
163
|
+
}
|
|
164
|
+
return count;
|
|
165
|
+
}
|
|
166
|
+
function cloneJson(value) {
|
|
167
|
+
return JSON.parse(JSON.stringify(value));
|
|
168
|
+
}
|
|
169
|
+
function deepFreeze(value) {
|
|
170
|
+
if (value !== null && typeof value === "object" && !Object.isFrozen(value)) {
|
|
171
|
+
Object.freeze(value);
|
|
172
|
+
for (const nested of Object.values(value))
|
|
173
|
+
deepFreeze(nested);
|
|
174
|
+
}
|
|
175
|
+
return value;
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=snapshot-backfill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-backfill.js","sourceRoot":"","sources":["../src/snapshot-backfill.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
ALTER TABLE __AGENTPLAT_SCHEMA__.mesh_journal
|
|
2
|
+
DROP CONSTRAINT mesh_journal_compatibility_metadata_check,
|
|
3
|
+
DROP COLUMN journal_version,
|
|
4
|
+
DROP COLUMN wrapper_schema_version;
|
|
5
|
+
|
|
6
|
+
ALTER TABLE __AGENTPLAT_SCHEMA__.mesh_outbox
|
|
7
|
+
DROP CONSTRAINT mesh_outbox_compatibility_metadata_check,
|
|
8
|
+
DROP COLUMN envelope_bytes,
|
|
9
|
+
DROP COLUMN envelope_wire_version,
|
|
10
|
+
DROP COLUMN envelope_format,
|
|
11
|
+
DROP COLUMN wrapper_schema_version;
|
|
12
|
+
|
|
13
|
+
ALTER TABLE __AGENTPLAT_SCHEMA__.mesh_inbox
|
|
14
|
+
DROP CONSTRAINT mesh_inbox_compatibility_metadata_check,
|
|
15
|
+
DROP COLUMN envelope_bytes,
|
|
16
|
+
DROP COLUMN envelope_wire_version,
|
|
17
|
+
DROP COLUMN envelope_format,
|
|
18
|
+
DROP COLUMN wrapper_schema_version;
|
|
19
|
+
|
|
20
|
+
ALTER TABLE __AGENTPLAT_SCHEMA__.mesh_peer_snapshots
|
|
21
|
+
DROP CONSTRAINT mesh_peer_snapshots_compatibility_metadata_check,
|
|
22
|
+
DROP COLUMN snapshot_schema_version,
|
|
23
|
+
DROP COLUMN snapshot_format,
|
|
24
|
+
DROP COLUMN wrapper_schema_version;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
ALTER TABLE __AGENTPLAT_SCHEMA__.mesh_peer_snapshots
|
|
2
|
+
ADD COLUMN wrapper_schema_version smallint,
|
|
3
|
+
ADD COLUMN snapshot_format text,
|
|
4
|
+
ADD COLUMN snapshot_schema_version integer;
|
|
5
|
+
|
|
6
|
+
ALTER TABLE __AGENTPLAT_SCHEMA__.mesh_inbox
|
|
7
|
+
ADD COLUMN wrapper_schema_version smallint,
|
|
8
|
+
ADD COLUMN envelope_format text,
|
|
9
|
+
ADD COLUMN envelope_wire_version integer,
|
|
10
|
+
ADD COLUMN envelope_bytes bytea;
|
|
11
|
+
|
|
12
|
+
ALTER TABLE __AGENTPLAT_SCHEMA__.mesh_outbox
|
|
13
|
+
ADD COLUMN wrapper_schema_version smallint,
|
|
14
|
+
ADD COLUMN envelope_format text,
|
|
15
|
+
ADD COLUMN envelope_wire_version integer,
|
|
16
|
+
ADD COLUMN envelope_bytes bytea;
|
|
17
|
+
|
|
18
|
+
ALTER TABLE __AGENTPLAT_SCHEMA__.mesh_journal
|
|
19
|
+
ADD COLUMN wrapper_schema_version smallint,
|
|
20
|
+
ADD COLUMN journal_version integer;
|
|
21
|
+
|
|
22
|
+
UPDATE __AGENTPLAT_SCHEMA__.mesh_peer_snapshots
|
|
23
|
+
SET wrapper_schema_version = 1,
|
|
24
|
+
snapshot_format = 'application/json; profile=legacy-opaque',
|
|
25
|
+
snapshot_schema_version = 0
|
|
26
|
+
WHERE wrapper_schema_version IS NULL;
|
|
27
|
+
|
|
28
|
+
UPDATE __AGENTPLAT_SCHEMA__.mesh_inbox
|
|
29
|
+
SET wrapper_schema_version = 1,
|
|
30
|
+
envelope_format = 'application/json; profile=legacy-jsonb',
|
|
31
|
+
envelope_wire_version = (envelope ->> 'wireVersion')::integer
|
|
32
|
+
WHERE wrapper_schema_version IS NULL;
|
|
33
|
+
|
|
34
|
+
UPDATE __AGENTPLAT_SCHEMA__.mesh_outbox
|
|
35
|
+
SET wrapper_schema_version = 1,
|
|
36
|
+
envelope_format = 'application/json; profile=legacy-jsonb',
|
|
37
|
+
envelope_wire_version = (envelope ->> 'wireVersion')::integer
|
|
38
|
+
WHERE wrapper_schema_version IS NULL;
|
|
39
|
+
|
|
40
|
+
UPDATE __AGENTPLAT_SCHEMA__.mesh_journal
|
|
41
|
+
SET wrapper_schema_version = 1,
|
|
42
|
+
journal_version = 1
|
|
43
|
+
WHERE wrapper_schema_version IS NULL;
|
|
44
|
+
|
|
45
|
+
ALTER TABLE __AGENTPLAT_SCHEMA__.mesh_peer_snapshots
|
|
46
|
+
ALTER COLUMN wrapper_schema_version SET NOT NULL,
|
|
47
|
+
ALTER COLUMN snapshot_format SET NOT NULL,
|
|
48
|
+
ALTER COLUMN snapshot_schema_version SET NOT NULL;
|
|
49
|
+
|
|
50
|
+
ALTER TABLE __AGENTPLAT_SCHEMA__.mesh_inbox
|
|
51
|
+
ALTER COLUMN wrapper_schema_version SET NOT NULL,
|
|
52
|
+
ALTER COLUMN envelope_format SET NOT NULL,
|
|
53
|
+
ALTER COLUMN envelope_wire_version SET NOT NULL;
|
|
54
|
+
|
|
55
|
+
ALTER TABLE __AGENTPLAT_SCHEMA__.mesh_outbox
|
|
56
|
+
ALTER COLUMN wrapper_schema_version SET NOT NULL,
|
|
57
|
+
ALTER COLUMN envelope_format SET NOT NULL,
|
|
58
|
+
ALTER COLUMN envelope_wire_version SET NOT NULL;
|
|
59
|
+
|
|
60
|
+
ALTER TABLE __AGENTPLAT_SCHEMA__.mesh_journal
|
|
61
|
+
ALTER COLUMN wrapper_schema_version SET NOT NULL,
|
|
62
|
+
ALTER COLUMN journal_version SET NOT NULL;
|
|
63
|
+
|
|
64
|
+
ALTER TABLE __AGENTPLAT_SCHEMA__.mesh_peer_snapshots
|
|
65
|
+
ADD CONSTRAINT mesh_peer_snapshots_compatibility_metadata_check CHECK (
|
|
66
|
+
wrapper_schema_version IN (1, 2)
|
|
67
|
+
AND snapshot_format IS NOT NULL
|
|
68
|
+
AND octet_length(snapshot_format) BETWEEN 3 AND 256
|
|
69
|
+
AND snapshot_format !~ '[[:cntrl:]]'
|
|
70
|
+
AND snapshot_schema_version BETWEEN 0 AND 65535
|
|
71
|
+
AND (
|
|
72
|
+
(wrapper_schema_version = 1
|
|
73
|
+
AND snapshot_format = 'application/json; profile=legacy-opaque'
|
|
74
|
+
AND snapshot_schema_version = 0)
|
|
75
|
+
OR
|
|
76
|
+
(wrapper_schema_version = 2
|
|
77
|
+
AND snapshot_format <> 'application/json; profile=legacy-opaque')
|
|
78
|
+
)
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
ALTER TABLE __AGENTPLAT_SCHEMA__.mesh_inbox
|
|
82
|
+
ADD CONSTRAINT mesh_inbox_compatibility_metadata_check CHECK (
|
|
83
|
+
wrapper_schema_version IN (1, 2)
|
|
84
|
+
AND envelope_wire_version IN (0, 1)
|
|
85
|
+
AND (
|
|
86
|
+
(wrapper_schema_version = 1
|
|
87
|
+
AND envelope_format = 'application/json; profile=legacy-jsonb'
|
|
88
|
+
AND envelope_wire_version = 0
|
|
89
|
+
AND envelope_bytes IS NULL)
|
|
90
|
+
OR
|
|
91
|
+
(wrapper_schema_version = 2
|
|
92
|
+
AND envelope_format = 'application/vnd.agentplat.mesh-envelope+json'
|
|
93
|
+
AND envelope_bytes IS NOT NULL
|
|
94
|
+
AND octet_length(envelope_bytes) BETWEEN 1 AND 262144)
|
|
95
|
+
)
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
ALTER TABLE __AGENTPLAT_SCHEMA__.mesh_outbox
|
|
99
|
+
ADD CONSTRAINT mesh_outbox_compatibility_metadata_check CHECK (
|
|
100
|
+
wrapper_schema_version IN (1, 2)
|
|
101
|
+
AND envelope_wire_version IN (0, 1)
|
|
102
|
+
AND (
|
|
103
|
+
(wrapper_schema_version = 1
|
|
104
|
+
AND envelope_format = 'application/json; profile=legacy-jsonb'
|
|
105
|
+
AND envelope_wire_version = 0
|
|
106
|
+
AND envelope_bytes IS NULL)
|
|
107
|
+
OR
|
|
108
|
+
(wrapper_schema_version = 2
|
|
109
|
+
AND envelope_format = 'application/vnd.agentplat.mesh-envelope+json'
|
|
110
|
+
AND envelope_bytes IS NOT NULL
|
|
111
|
+
AND octet_length(envelope_bytes) BETWEEN 1 AND 262144)
|
|
112
|
+
)
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
ALTER TABLE __AGENTPLAT_SCHEMA__.mesh_journal
|
|
116
|
+
ADD CONSTRAINT mesh_journal_compatibility_metadata_check CHECK (
|
|
117
|
+
wrapper_schema_version IN (1, 2)
|
|
118
|
+
AND journal_version = 1
|
|
119
|
+
);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentplat/mesh-postgres",
|
|
3
|
-
"version": "0.3.0-
|
|
3
|
+
"version": "0.3.0-beta.2",
|
|
4
4
|
"description": "PostgreSQL durable inbox, snapshot, journal and outbox adapter for Agentplat Mesh.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
"@types/node": "^20.10.0",
|
|
23
23
|
"@types/pg": "^8.11.10",
|
|
24
24
|
"pg": "^8.13.1",
|
|
25
|
-
"@agentplat/mesh": "^0.3.0-
|
|
26
|
-
"@agentplat/postgres": "^0.3.0-
|
|
27
|
-
"@agentplat/mesh-protocol": "^0.3.0-
|
|
25
|
+
"@agentplat/mesh": "^0.3.0-beta.2",
|
|
26
|
+
"@agentplat/postgres": "^0.3.0-beta.2",
|
|
27
|
+
"@agentplat/mesh-protocol": "^0.3.0-beta.2"
|
|
28
28
|
},
|
|
29
29
|
"engines": {
|
|
30
30
|
"node": ">=20.19.3"
|