@agentplat/mesh-postgres 0.3.0-alpha.5 → 0.3.0-beta.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/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 and `allowDataLoss: true`.
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
@@ -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,GAClC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,YAAY,EACV,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC"}
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,GAEd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
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"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAEV,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAK/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;AAgCD,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;CAClC,GACA,OAAO,CAAC,uBAAuB,CAAC,CAUlC"}
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"}
@@ -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 migrationName = "001_mesh_durability";
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 [up, down] = await Promise.all([
9
- readFile(new URL(`../migrations/${migrationName}.up.sql`, import.meta.url), "utf8"),
10
- readFile(new URL(`../migrations/${migrationName}.down.sql`, import.meta.url), "utf8"),
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: migrationName,
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 = 1) {
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,
@@ -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,GACtB,MAAM,qBAAqB,CAAC;AAO7B,MAAM,aAAa,GAAG,0BAA0B,CAAC;AACjD,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAE5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAC7C,IAAI,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAC3C,CAAC;AAOF,KAAK,UAAU,UAAU;IACvB,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACnC,QAAQ,CACN,IAAI,GAAG,CAAC,iBAAiB,aAAa,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EACjE,MAAM,CACP;QACD,QAAQ,CACN,IAAI,GAAG,CAAC,iBAAiB,aAAa,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EACnE,MAAM,CACP;KACF,CAAC,CAAC;IACH,OAAO;QACL;YACE,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,aAAa;YACnB,EAAE;YACF,IAAI;YACJ,eAAe,EAAE,IAAI;YACrB,OAAO,EAAE;;;;;;;OAOR;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAU,EACV,UAAwC,EAAE;IAE1C,OAAO,qBAAqB,CAAC,IAAI,EAAE;QACjC,aAAa;QACb,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,UAAU,EAAE,MAAM,UAAU,EAAE;KAC/B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAU,EACV,UAAwC,EAAE;IAE1C,OAAO,0BAA0B,CAAC,IAAI,EAAE;QACtC,aAAa;QACb,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,MAAM,UAAU,EAAE;KAC/B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAM,GAAG,qBAAqB,EAC9B,OAAO,GAAG,CAAC;IAEX,OAAO,4BAA4B,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAU,EACV,OAIC;IAED,OAAO,yBAAyB,CAAC,IAAI,EAAE;QACrC,aAAa;QACb,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,MAAM,UAAU,EAAE;QAC9B,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;QACtD,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC,CAAC;AACL,CAAC"}
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,EACrB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAO7B,MAAM,aAAa,GAAG,0BAA0B,CAAC;AACjD,MAAM,cAAc,GAAG;IACrB,qBAAqB;IACrB,iCAAiC;CACzB,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAC7C,IAAI,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAC3C,CAAC;AAOF,KAAK,UAAU,UAAU;IACvB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/B,QAAQ,CACN,IAAI,GAAG,CAAC,iBAAiB,IAAI,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EACxD,MAAM,CACP;QACD,QAAQ,CACN,IAAI,GAAG,CAAC,iBAAiB,IAAI,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAC1D,MAAM,CACP;KACF,CAAC,CACH,CAAC;IACF,OAAO;QACL;YACE,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;YACvB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YACd,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAChB,eAAe,EAAE,IAAI;YACrB,OAAO,EAAE;;;;;;;OAOR;SACF;QACD;YACE,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;YACvB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YACd,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAChB,eAAe,EAAE,IAAI;YACrB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BR;SACF;KACF,CAAC;AACJ,CAAC;AAkBD,uEAAuE;AACvE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAU,EACV,UAAwC,EAAE;IAE1C,MAAM,MAAM,GAAG,2BAA2B,CACxC,OAAO,CAAC,MAAM,IAAI,qBAAqB,EACvC,QAAQ,CACT,CAAC;IACF,MAAM,MAAM,GAAG,GAAG,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC;IACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAK5B;;8BAEyB,MAAM;8BACN,MAAM;8BACN,MAAM;;gCAEJ,MAAM;;gCAEN,MAAM;;GAEnC,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC;IAC5B,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,eAAe,EAAE,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;QAC/C,gBAAgB,EAAE,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC;QACjD,kBAAkB,EAAE,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACtD,6BAA6B,EAAE,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC;KACpE,CAAC,CAAC;AACL,CAAC;AAED,uEAAuE;AACvE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAU,EACV,UAAwC,EAAE;IAE1C,MAAM,MAAM,GAAG,2BAA2B,CACxC,OAAO,CAAC,MAAM,IAAI,qBAAqB,EACvC,QAAQ,CACT,CAAC;IACF,MAAM,MAAM,GAAG,GAAG,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC;IACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAK5B;;8BAEyB,MAAM;8BACN,MAAM;8BACN,MAAM;8BACN,MAAM;GACjC,CAAC,CAAC;IACH,MAAM,qBAAqB,GAAG,YAAY,CACxC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,kBAAkB,CACnC,CAAC;IACF,MAAM,sBAAsB,GAAG,YAAY,CACzC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,mBAAmB,CACpC,CAAC;IACF,MAAM,wBAAwB,GAAG,YAAY,CAC3C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,sBAAsB,CACvC,CAAC;IACF,MAAM,uBAAuB,GAAG,YAAY,CAC1C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,oBAAoB,CACrC,CAAC;IACF,MAAM,gBAAgB,GACpB,qBAAqB;QACrB,sBAAsB;QACtB,wBAAwB;QACxB,uBAAuB,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,UAAU,CAAC,6CAA6C,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,qBAAqB;QACrB,sBAAsB;QACtB,wBAAwB;QACxB,uBAAuB;QACvB,gBAAgB;QAChB,mBAAmB,EAAE,gBAAgB,KAAK,CAAC;KAC5C,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,UAAU,CAAC,kDAAkD,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAU,EACV,UAAwC,EAAE;IAE1C,OAAO,qBAAqB,CAAC,IAAI,EAAE;QACjC,aAAa;QACb,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,UAAU,EAAE,MAAM,UAAU,EAAE;KAC/B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAU,EACV,UAAwC,EAAE;IAE1C,OAAO,0BAA0B,CAAC,IAAI,EAAE;QACtC,aAAa;QACb,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,MAAM,UAAU,EAAE;KAC/B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAM,GAAG,qBAAqB,EAC9B,OAAO,GAAG,CAAC;IAEX,OAAO,4BAA4B,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAU,EACV,OAQC;IAED,IAAI,OAAO,CAAC,sBAAsB,KAAK,CAAC,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,SAAS,CACjB,6DAA6D,CAC9D,CAAC;QACJ,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5D,IACE,CAAC,SAAS,CAAC,mBAAmB;YAC9B,OAAO,CAAC,qBAAqB,KAAK,IAAI,EACtC,CAAC;YACD,MAAM,IAAI,SAAS,CACjB,+EAA+E,CAChF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,yBAAyB,CAAC,IAAI,EAAE;QACrC,aAAa;QACb,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,MAAM,UAAU,EAAE;QAC9B,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;QACtD,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"AAOA,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,EAC7B,MAAM,4BAA4B,CAAC;AAMpC,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAMlC,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;IAmE/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;IA2O7B,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"}
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"}
@@ -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
- VALUES ($1, $2, $3, $4, $5, $6::jsonb, $7)
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, committed_at)
174
- VALUES ($1, $2, $3, $4, $5, $6::jsonb, $7,
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 *`, [...scopeValues(scope), revision, JSON.stringify(state), stateDigest]);
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
- VALUES ($1, $2, $3, $4, $5, $6, $7, $8::jsonb, $9)
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
- async function restoreEnvelope(input) {
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
- return parsed.value;
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 envelope = await restoreEnvelope(row.envelope);
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: MESH_DURABILITY_SCHEMA_VERSION,
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 envelope = await restoreEnvelope(row.envelope);
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: MESH_DURABILITY_SCHEMA_VERSION,
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: MESH_DURABILITY_SCHEMA_VERSION,
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
  }
@@ -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":"AAAA,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,2BAA2B,EAC3B,4BAA4B,EAC5B,0CAA0C,EAC1C,mCAAmC,EACnC,uCAAuC,EACvC,6BAA6B,EAC7B,6BAA6B,EAC7B,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AAkBpC,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAKlC,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAYrC,SAAS,cAAc,CAAC,QAA2B,EAAE,MAAc;IACjE,MAAM,MAAM,GAAG,GAAG,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC;IACrD,OAAO;QACL,KAAK,CACH,IAAY,EACZ,MAAkB;YAElB,OAAO,QAAQ,CAAC,KAAK,CAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QACvE,CAAC;KACF,CAAC;AACJ,CAAC;AAOD;;;;GAIG;AACH,MAAM,OAAO,6BAA6B;IAK7B;IAJF,OAAO,CAAS;IAChB,gCAAgC,CAAS;IAElD,YACW,IAAU,EACnB,UAAgD,EAAE;QADzC,SAAI,GAAJ,IAAI,CAAM;QAGnB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAChD,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,2BAA2B,CACxC,OAAO,CAAC,MAAM,IAAI,qBAAqB,EACvC,QAAQ,CACT,CAAC;QACF,IAAI,CAAC,gCAAgC,GAAG,eAAe,CACrD,OAAO,CAAC,+BAA+B,IAAI,OAAO,EAClD,iCAAiC,EACjC,SAAS,CACV,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAGb;QACC,MAAM,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChE,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC1C,MAAM,QAAQ,CAAC,KAAK,CAClB,uDAAuD,EACvD,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAClB,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC;;;qDAG6C,EAC7C,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAC5C,CAAC;YACF,IAAI,QAAQ,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC5B,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,eAAe,CAAC,KAAK,cAAc,EAAE,CAAC;oBACjE,OAAO,MAAM,CAAC,MAAM,CAAC;wBACnB,QAAQ,EAAE,KAAK;wBACf,IAAI,EAAE,kBAAkB;qBACzB,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,MAAM,CAAC,MAAM,CAAC;oBACnB,QAAQ,EAAE,IAAI;oBACd,SAAS,EAAE,IAAI;oBACf,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,WAAW,CAAC;oBAC9C,cAAc;iBACf,CAAC,CAAC;YACL,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC;;;yEAGiE,EACjE,WAAW,CAAC,KAAK,CAAC,CACnB,CAAC;YACF,IACE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,gCAAgC,EACxE,CAAC;gBACD,OAAO,MAAM,CAAC,MAAM,CAAC;oBACnB,QAAQ,EAAE,KAAK;oBACf,IAAI,EAAE,mBAAmB;iBAC1B,CAAC,CAAC;YACL,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC;;;;;+BAKuB,EACvB;gBACE,GAAG,WAAW,CAAC,KAAK,CAAC;gBACrB,QAAQ,CAAC,SAAS;gBAClB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;gBACxB,cAAc;gBACd,8BAA8B;gBAC9B,4BAA4B;gBAC5B,QAAQ,CAAC,WAAW;gBACpB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;aAC3B,CACF,CAAC;YACF,OAAO,MAAM,CAAC,MAAM,CAAC;gBACnB,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,WAAW,CAAC;gBAC9C,cAAc;aACf,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,UAA4B;QAE5B,MAAM,KAAK,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAChE;;+BAEyB,EACzB,WAAW,CAAC,KAAK,CAAC,CACnB,CAAC;QACF,OAAO,MAAM,CAAC,QAAQ,KAAK,CAAC;YAC1B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,UAAU,CACd,KAA8B;QAE9B,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC1C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC;;;;;;;;;;;mBAWW,EACX,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAC/C,CAAC;YACF,MAAM,OAAO,GAA6B,EAAE,CAAC;YAC7C,KAAK,MAAM,WAAW,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC7C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,KAAK,CAClC;;;;;;;;;;;;sBAYY,EACZ;oBACE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;oBAC7B,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC;oBAC9B,OAAO,CAAC,QAAQ;oBAChB,KAAK;oBACL,OAAO,CAAC,eAAe;iBACxB,CACF,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAChE,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,KAAkC;QAElC,MAAM,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3D,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC1C,sEAAsE;YACtE,0DAA0D;YAC1D,MAAM,QAAQ,CAAC,KAAK,CAClB,uDAAuD,EACvD,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAClB,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,KAAK,CACtC;;;;qBAIa,EACb,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAC/C,CAAC;YACF,IACE,WAAW,CAAC,QAAQ,KAAK,CAAC;gBAC1B,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,EACpE,CAAC;gBACD,OAAO,cAAc,CAAC,YAAY,CAAC,CAAC;YACtC,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,KAAK,CACrC;;;kBAGU,EACV,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAC5C,CAAC;YACF,IAAI,UAAU,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC9B,OAAO,cAAc,CAAC,qBAAqB,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,KAAK,CACxC;;;qBAGa,EACb,WAAW,CAAC,KAAK,CAAC,CACnB,CAAC;YACF,MAAM,OAAO,GACX,aAAa,CAAC,QAAQ,KAAK,CAAC;gBAC1B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,MAAM,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,wBAAwB,EAAE,CAAC;gBAChE,OAAO,cAAc,CAAC,mBAAmB,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,SAAS,GAAG,GAAG,CACnB,CACE,MAAM,QAAQ,CAAC,KAAK,CAClB,+CAA+C,CAChD,CACF,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,WAAW,CACvB,CAAC;YACF,IAAI,QAAQ,GAAG,OAAO,CAAC;YACvB,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,SAA0B,CAAC,CAAC;gBAChE,MAAM,WAAW,GAAG,MAAM,6BAA6B,CAAC,KAAK,CAAC,CAAC;gBAC/D,MAAM,UAAU,GAAG,2BAA2B,CAC5C,KAAK,CAAC,mBAAmB,CAC1B,CAAC;gBACF,MAAM,QAAQ,GAAG,KAAK,CAAC,wBAAwB,GAAG,CAAC,CAAC;gBACpD,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,KAAK,CACzC;;;;;;;;;;;;;;uBAca,EACb;oBACE,GAAG,WAAW,CAAC,KAAK,CAAC;oBACrB,QAAQ;oBACR,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;oBACrB,WAAW;oBACX,8BAA8B;oBAC9B,UAAU,CAAC,MAAM;oBACjB,UAAU,CAAC,aAAa;iBACzB,CACF,CAAC;gBACF,QAAQ,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM,gBAAgB,GAAG,QAAQ,EAAE,QAAQ,IAAI,CAAC,CAAC;YACjD,MAAM,cAAc,GAClB,QAAQ,EAAE,WAAW,IAAI,CAAC,MAAM,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC;YAEvE,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACpC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC;;;;oBAIU,EACV;oBACE,GAAG,WAAW,CAAC,KAAK,CAAC;oBACrB,QAAQ,CAAC,QAAQ;oBACjB,QAAQ,CAAC,QAAQ,CAAC,SAAS;iBAC5B,CACF,CAAC;gBACF,IAAI,QAAQ,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;oBAC5B,MAAM,IAAI,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,KAAK,CACtC;;;;kBAIU,EACV,WAAW,CAAC,KAAK,CAAC,CACnB,CAAC;YACF,IAAI,QAAQ,GACV,WAAW,CAAC,QAAQ,KAAK,CAAC;gBACxB,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YACrE,IAAI,cAAc,GAChB,WAAW,CAAC,QAAQ,KAAK,CAAC;gBACxB,CAAC,CAAC,2BAA2B;gBAC7B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,MAAM,GACV,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBACxB,CAAC,CAAC;oBACE;wBACE,OAAO,EAAE,KAAK,CAAC,YAAY;wBAC3B,IAAI,EACF,KAAK,CAAC,OAAO,KAAK,SAAS;4BACzB,CAAC,CAAC,oBAAoB;4BACtB,CAAC,CAAC,qBAAqB;wBAC3B,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS;4BAChC,CAAC,CAAC,EAAE;4BACJ,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;qBACtC;iBACF;gBACH,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;YACpB,MAAM,OAAO,GAA8B,EAAE,CAAC;YAC9C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,QAAQ,IAAI,CAAC,CAAC;gBACd,MAAM,KAAK,GAAG,MAAM,6BAA6B,CAAC;oBAChD,KAAK;oBACL,QAAQ;oBACR,cAAc;oBACd,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS;oBACrC,gBAAgB;oBAChB,cAAc;oBACd,KAAK;oBACL,UAAU,EAAE,SAAS;iBACtB,CAAC,CAAC;gBACH,MAAM,QAAQ,CAAC,KAAK,CAClB;;;;;;yDAM+C,EAC/C;oBACE,GAAG,WAAW,CAAC,KAAK,CAAC;oBACrB,KAAK,CAAC,QAAQ;oBACd,KAAK,CAAC,OAAO;oBACb,KAAK,CAAC,cAAc;oBACpB,KAAK,CAAC,MAAM;oBACZ,KAAK,CAAC,YAAY;oBAClB,KAAK,CAAC,cAAc,IAAI,IAAI;oBAC5B,KAAK,CAAC,gBAAgB;oBACtB,KAAK,CAAC,cAAc;oBACpB,KAAK,CAAC,IAAI;oBACV,KAAK,CAAC,UAAU,IAAI,IAAI;oBACxB,KAAK,CAAC,UAAU;oBAChB,8BAA8B;oBAC9B,4BAA4B;iBAC7B,CACF,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpB,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC;YAChC,CAAC;YAED,MAAM,MAAM,GAA8B,EAAE,CAAC;YAC7C,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACpC,MAAM,YAAY,GAChB,QAAQ,CAAC,YAAY;oBACrB,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM;wBACzC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;wBACnC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACjB,MAAM,QAAQ,GAAG,wBAAwB,CACvC,QAAQ,CAAC,QAAQ,EACjB,KAAK,EACL,YAAY,CACb,CAAC;gBACF,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;gBACtD,MAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;gBACvD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC;;;;;;;uBAOa,EACb;oBACE,GAAG,WAAW,CAAC,KAAK,CAAC;oBACrB,QAAQ,CAAC,QAAQ;oBACjB,QAAQ,CAAC,SAAS;oBAClB,YAAY,IAAI,IAAI;oBACpB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;oBACxB,cAAc;oBACd,8BAA8B;oBAC9B,4BAA4B;oBAC5B,QAAQ,CAAC,WAAW;oBACpB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;iBAC3B,CACF,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,CAAC,CAAC;YACzD,CAAC;YAED,MAAM,QAAQ,CAAC,KAAK,CAClB;;;;;;;;qDAQ6C,EAC7C;gBACE,GAAG,WAAW,CAAC,KAAK,CAAC;gBACrB,KAAK,CAAC,KAAK,CAAC,SAAS;gBACrB,KAAK,CAAC,OAAO;gBACb,KAAK,CAAC,UAAU,IAAI,IAAI;aACzB,CACF,CAAC;YACF,OAAO,MAAM,CAAC,MAAM,CAAC;gBACnB,SAAS,EAAE,IAAI;gBACf,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;gBAC/C,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;aAC9B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YAC1B,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;gBACzC,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAA8B;QAC/C,MAAM,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,MAAM,YAAY,GAAG,eAAe,CAClC,KAAK,CAAC,YAAY,EAClB,cAAc,EACd,SAAS,CACV,CAAC;QACF,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACnC,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAChE;;;;;;;;;;;yDAWmD,EACnD;YACE,GAAG,WAAW,CAAC,KAAK,CAAC;YACrB,KAAK,CAAC,KAAK,CAAC,SAAS;YACrB,KAAK,CAAC,QAAQ;YACd,KAAK,CAAC,UAAU;YAChB,KAAK,CAAC,UAAU;YAChB,YAAY;YACZ,KAAK,CAAC,UAAU,IAAI,IAAI;SACzB,CACF,CAAC;QACF,OAAO,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,WAAW,CACf,KAA8B;QAE9B,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC1C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC;;;;;;;;;;;mBAWW,EACX,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAC/C,CAAC;YACF,MAAM,OAAO,GAA8B,EAAE,CAAC;YAC9C,KAAK,MAAM,WAAW,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC7C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,KAAK,CAClC;;;;;;;;;;;;sBAYY,EACZ;oBACE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;oBAC7B,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC;oBAC7B,OAAO,CAAC,QAAQ;oBAChB,KAAK;oBACL,OAAO,CAAC,eAAe;iBACxB,CACF,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAmC;QACpD,MAAM,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,IACE,CAAC,KAAK,CAAC,UAAU;YACjB,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,KAAK,WAAW;gBAC3C,KAAK,CAAC,UAAU,CAAC,WAAW,KAAK,WAAW;gBAC5C,KAAK,CAAC,UAAU,CAAC,WAAW,KAAK,qBAAqB,CAAC,EACzD,CAAC;YACD,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAC9C,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,KAAK,WAAW,CAAC;QAC3D,MAAM,YAAY,GAAG,KAAK;YACxB,CAAC,CAAC,eAAe,CACb,KAAK,CAAC,UAAU,CAAC,YAAY,EAC7B,cAAc,EACd,SAAS,CACV;YACH,CAAC,CAAC,CAAC,CAAC;QACN,MAAM,MAAM,GAAG,KAAK;YAClB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,KAAK,WAAW;gBAC5C,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,UAAU,CAAC;QACjB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAChE;;;;;;;;;;;;;;;;yDAgBmD,EACnD;YACE,GAAG,WAAW,CAAC,KAAK,CAAC;YACrB,KAAK,CAAC,MAAM,CAAC,QAAQ;YACrB,KAAK,CAAC,QAAQ;YACd,KAAK,CAAC,UAAU;YAChB,KAAK,CAAC,UAAU;YAChB,MAAM;YACN,YAAY;YACZ,KAAK,CAAC,UAAU,CAAC,UAAU,IAAI,IAAI;SACpC,CACF,CAAC;QACF,OAAO,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,KAA8B;QAE9B,MAAM,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,aAAa,GAAG,kBAAkB,CACtC,KAAK,CAAC,aAAa,IAAI,CAAC,EACxB,eAAe,CAChB,CAAC;QACF,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAChE;;;;iBAIW,EACX,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,CAC9C,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CACjD,CAAC;QACF,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,KAAK;QACH,4BAA4B;IAC9B,CAAC;IAED,KAAK,CAAC,YAAY,CAAI,IAAwC;QAC5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACtD,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;CACF;AAED,MAAM,mBAAoB,SAAQ,KAAK;IAE1B;IADX,YACW,IAGA;QAET,KAAK,CAAC,IAAI,CAAC,CAAC;QALH,SAAI,GAAJ,IAAI,CAGJ;IAGX,CAAC;CACF;AAED,SAAS,cAAc,CACrB,IAAoE;IAEpE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAyB,EACzB,KAAuB;IAEvB,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACjD,IACE,CAAC,MAAM,CAAC,EAAE;QACV,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;QACxC,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QACpC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM;YACpC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,EAChD,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAAyB,EACzB,KAAuB,EACvB,YAAgC;IAEhC,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACjD,IACE,CAAC,MAAM,CAAC,EAAE;QACV,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;QACxC,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QACpC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAC3C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;QACnD,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM;YACpC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,YAAY,CAAC;QAChD,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,YAAY,CAAC,EACxD,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,QAA4B;IACxD,OAAO,6BAA6B,CAAC,QAAoC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,sBAAsB,CAAC,QAA4B;IAC1D,MAAM,SAAS,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,SAAS,CAAC,KAAK,CAAC;AACzB,CAAC;AAED,SAAS,2BAA2B,CAClC,KAAgD;IAEhD,MAAM,UAAU,GACd,KAAK;QACL,MAAM,CAAC,MAAM,CAAC;YACZ,MAAM,EAAE,mCAAmC;YAC3C,aAAa,EAAE,CAAC;SACjB,CAAC,CAAC;IACL,MAAM,IAAI,GACR,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAC1C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE;QAChC,CAAC,CAAC,EAAE,CAAC;IACT,IACE,CAAC,UAAU;QACX,OAAO,UAAU,KAAK,QAAQ;QAC9B,IAAI,CAAC,MAAM,KAAK,CAAC;QACjB,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;QACpB,IAAI,CAAC,CAAC,CAAC,KAAK,eAAe;QAC3B,OAAO,UAAU,CAAC,MAAM,KAAK,QAAQ;QACrC,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAC5B,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,GAAG;QAC5D,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAChD,UAAU,CAAC,MAAM,KAAK,0CAA0C;QAChE,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC;QAC/C,UAAU,CAAC,aAAa,GAAG,CAAC;QAC5B,UAAU,CAAC,aAAa,GAAG,MAAM,EACjC,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,uCAAuC,CAAC,CAAC;IACzE,IACE,OAAO,KAAK,uCAAuC;QACnD,OAAO,KAAK,8BAA8B,EAC1C,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,sBAAsB,CAC7B,GAAQ,EACR,aAAoB,EACpB,QAA4B,EAC5B,cAA0B;IAE1B,IAAI,aAAa,KAAK,uCAAuC;QAAE,OAAO;IACtE,IACE,GAAG,CAAC,eAAe,KAAK,4BAA4B;QACpD,WAAW,CAAC,GAAG,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;YAC7D,QAAQ,CAAC,WAAW;QACtB,GAAG,CAAC,cAAc,IAAI,IAAI;QAC1B,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,CAAC,cAAc,CAAC,EAC/C,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,QAAoB,EAAE,MAAe;IACvD,IACE,CAAC,CAAC,MAAM,YAAY,UAAU,CAAC;QAC/B,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,MAAM,EACrC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,KAAc,EACd,cAAwB;IAKxB,MAAM,SAAS,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,MAAM,GAAG,uBAAuB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;IAC1E,IACE,cAAc,KAAK,SAAS;QAC5B,cAAc,KAAK,IAAI;QACvB,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,EAC5C,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,GAAQ,EACR,KAAuB;IAEvB,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACnC,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;IACtD,IACE,QAAQ,CAAC,SAAS,KAAK,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;QAC7C,cAAc,KAAK,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,EAC9C,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAqC,CAAC;IACtE,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,uBAAuB,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAC1E,sBAAsB,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrE,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,aAAa;QACb,KAAK;QACL,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,QAAQ;QACR,cAAc;QACd,GAAG,CAAC,aAAa,KAAK,8BAA8B;YAClD,CAAC,CAAC;gBACE,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;gBAC3C,mBAAmB,EAAE,WAAW,CAC9B,GAAG,CAAC,qBAAqB,EACzB,6BAA6B,CAC9B;gBACD,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;aACjE;YACH,CAAC,CAAC,EAAE,CAAC;QACP,MAAM;QACN,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC;QACrD,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC;QAChC,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC;QAClC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;KAC5E,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,GAAQ,EACR,KAAuB;IAEvB,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACnC,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;IACtD,IACE,QAAQ,CAAC,SAAS,KAAK,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;QAC7C,cAAc,KAAK,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,EAC9C,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAsC,CAAC;IACvE,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,uBAAuB,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAC1E,sBAAsB,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrE,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,aAAa;QACb,KAAK;QACL,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;QAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,QAAQ;QACR,cAAc;QACd,GAAG,CAAC,aAAa,KAAK,8BAA8B;YAClD,CAAC,CAAC;gBACE,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;gBAC3C,mBAAmB,EAAE,WAAW,CAC9B,GAAG,CAAC,qBAAqB,EACzB,8BAA8B,CAC/B;gBACD,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;aACjE;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI;YAC5B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QACjD,MAAM;QACN,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,CAAC;QACtD,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC;QAClC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC;QAC9B,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;KAC5E,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,GAAQ,EACR,KAAuB;IAEvB,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,KAAsB,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,MAAM,6BAA6B,CAAC,KAAK,CAAC,CAAC;IAC/D,IAAI,WAAW,KAAK,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,aAAa,GAAG,uBAAuB,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAC1E,MAAM,iBAAiB,GAAG,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC;IAC5D,MAAM,wBAAwB,GAAG,GAAG,CAAC,uBAAuB,KAAK,SAAS,CAAC;IAC3E,IAAI,iBAAiB,KAAK,wBAAwB,EAAE,CAAC;QACnD,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,UAAU,GAAG,iBAAiB;QAClC,CAAC,CAAC,2BAA2B,CACzB,GAAG,CAAC,eAAe,EACnB,GAAG,CAAC,uBAAuB,EAC3B,aAAa,CACd;QACH,CAAC,CAAC,SAAS,CAAC;IACd,IACE,aAAa,KAAK,8BAA8B;QAChD,UAAU,KAAK,SAAS,EACxB,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,aAAa;QACb,KAAK;QACL,QAAQ,EAAE,eAAe,CACvB,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EAC9C,mBAAmB,EACnB,MAAM,CAAC,gBAAgB,CACxB;QACD,KAAK;QACL,WAAW;QACX,GAAG,CAAC,UAAU,KAAK,SAAS;YAC1B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,cAAc,EAAE,UAAU,CAAC,MAAM;gBACjC,qBAAqB,EAAE,UAAU,CAAC,aAAa;aAChD,CAAC;QACN,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC;KACnC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,GAAQ,EACR,KAAuB;IAEvB,MAAM,aAAa,GAAG,uBAAuB,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAC1E,IACE,aAAa,KAAK,8BAA8B;QAChD,WAAW,CAAC,GAAG,CAAC,eAAe,EAAE,uBAAuB,CAAC;YACvD,4BAA4B,EAC9B,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,6BAA6B,CAAC;QAChD,KAAK;QACL,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC;QACvD,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;QAC3C,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;QACvC,GAAG,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAI;YAC9B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrD,gBAAgB,EAAE,WAAW,CAAC,GAAG,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;QACzE,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;QAC3C,KAAK,EAAE;YACL,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC7B,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACtB,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI;gBACzB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;SAC7C;QACD,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC;QAChC,aAAa;KACd,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,2BAA2B,CAClC,WAAoB,EACpB,kBAA2B,EAC3B,oBAA2B;IAE3B,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IACnC,MAAM,aAAa,GAAG,WAAW,CAC/B,kBAAkB,EAClB,iCAAiC,CAClC,CAAC;IACF,IACE,MAAM,CAAC,MAAM,GAAG,CAAC;QACjB,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,GAAG;QACjD,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC;QACrC,aAAa,GAAG,CAAC;QACjB,aAAa,GAAG,MAAM;QACtB,CAAC,oBAAoB,KAAK,8BAA8B;YACtD,MAAM,KAAK,0CAA0C,CAAC;QACxD,CAAC,oBAAoB,KAAK,uCAAuC;YAC/D,MAAM,KAAK,0CAA0C,CAAC,EACxD,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,QAAQ,CAAC,GAAQ,EAAE,QAAiB;IAC3C,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,IACE,GAAG,CAAC,eAAe,IAAI,IAAI;QAC3B,GAAG,CAAC,WAAW,IAAI,IAAI;QACvB,GAAG,CAAC,gBAAgB,IAAI,IAAI,EAC5B,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;QACrC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;QACnC,UAAU,EAAE,eAAe,CACzB,WAAW,CAAC,GAAG,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EACrD,kBAAkB,EAClB,MAAM,CAAC,gBAAgB,CACxB;QACD,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC;KACrC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CACnB,GAAQ,EACR,KAAmC,EACnC,cAAsB;IAEtB,OAAO,CACL,KAAK,KAAK,SAAS;QACnB,GAAG,CAAC,MAAM,KAAK,cAAc;QAC7B,GAAG,CAAC,UAAU,KAAK,IAAI;QACvB,GAAG,CAAC,eAAe,KAAK,KAAK,CAAC,QAAQ;QACtC,GAAG,CAAC,WAAW,KAAK,KAAK,CAAC,UAAU;QACpC,WAAW,CAAC,GAAG,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,KAAK,KAAK,CAAC,UAAU,CAC3E,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAkC,EAClC,KAAuB;IAEvB,IACE,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,YAAY;QACnC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;QAClB,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QACtC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,wBAAwB,CAAC;QACrD,KAAK,CAAC,wBAAwB,GAAG,CAAC;QAClC,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC;QACpC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;QAC7B,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE;QACzB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;QAC5B,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG;QACzB,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC;QAC9D,CAAC,KAAK,CAAC,OAAO,KAAK,UAAU;YAC3B,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS;gBAC5B,KAAK,CAAC,mBAAmB,KAAK,SAAS;gBACvC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;gBACzB,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC;QACpC,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC;QAC/D,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,CAAC,EAC7D,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAChC,2BAA2B,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACnC,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAChD,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClC,IACE,CAAC,KAAK;YACN,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC;YAC/B,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;YACxB,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAClE,CAAC;YACD,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACpC,IACE,CAAC,QAAQ;YACT,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACnC,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS;gBAClC,CAAC,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAC1C,CAAC;YACD,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;QAChE,CAAC;QACD,wBAAwB,CACtB,QAAQ,CAAC,QAAQ,EACjB,KAAK,EACL,QAAQ,CAAC,YAAY;YACnB,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,KAAK,MAAM;gBAC3C,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;gBACnC,CAAC,CAAC,SAAS,CAAC,CACjB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,KAA8B;IAM3D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAC;IACjE,CAAC;IACD,IACE,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAClC,CAAC,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACvD,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,EAC3B,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7C,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC;QACjD,eAAe,EAAE,eAAe,CAC9B,KAAK,CAAC,eAAe,EACrB,iBAAiB,EACjB,SAAS,CACV;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,KAAoB;IAC3C,MAAM,SAAS,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CACvB,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CACzB,CAAC;IACnB,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,cAAc,CAAC,KAAoB;IAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,cAAc,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,KAAuB;IAC1C,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,QAAQ,CAAC,KAAuB;IACvC,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,WAAW,CAAC,IAAsB,EAAE,KAAuB;IAClE,OAAO,CACL,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;QAChC,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAC5B,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAC5B,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,CACrC,CAAC;AACJ,CAAC;AAED,SAAS,GAAG,CAAC,KAAc;IACzB,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,KAAa;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,UAAU,CAAC,kBAAkB,KAAK,aAAa,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CACtB,KAAa,EACb,KAAa,EACb,OAAe;IAEf,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,OAAO,EAAE,CAAC;QACjE,MAAM,IAAI,UAAU,CAAC,mBAAmB,KAAK,uBAAuB,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,KAAa;IACtD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,UAAU,CAAC,mBAAmB,KAAK,uBAAuB,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,MAAM,GAAG,CAAC;QAChB,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,IAAI,GAAG;QACjD,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,CAC9C,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,MAAM,GAAG,CAAC;QAChB,KAAK,CAAC,MAAM,IAAI,GAAG;QACnB,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CACvC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,KAAa;IAClD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,SAAS,CAAC,mBAAmB,KAAK,aAAa,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -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-alpha.5",
3
+ "version": "0.3.0-beta.1",
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-alpha.5",
26
- "@agentplat/postgres": "^0.3.0-alpha.5",
27
- "@agentplat/mesh-protocol": "^0.3.0-alpha.5"
25
+ "@agentplat/mesh": "^0.3.0-beta.1",
26
+ "@agentplat/postgres": "^0.3.0-beta.1",
27
+ "@agentplat/mesh-protocol": "^0.3.0-beta.1"
28
28
  },
29
29
  "engines": {
30
30
  "node": ">=20.19.3"