@agentplat/mesh-postgres 0.3.0-beta.1 → 0.3.0-beta.4
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 +31 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +60 -5
- package/dist/migrations.js.map +1 -1
- package/dist/planning-recovery.d.ts +163 -0
- package/dist/planning-recovery.d.ts.map +1 -0
- package/dist/planning-recovery.js +706 -0
- package/dist/planning-recovery.js.map +1 -0
- package/dist/repository.d.ts +3 -2
- package/dist/repository.d.ts.map +1 -1
- package/dist/repository.js +334 -39
- package/dist/repository.js.map +1 -1
- package/migrations/003_planning_recovery_durability.down.sql +2 -0
- package/migrations/003_planning_recovery_durability.up.sql +56 -0
- package/migrations/004_mesh_outbox_dependencies.down.sql +6 -0
- package/migrations/004_mesh_outbox_dependencies.up.sql +32 -0
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -33,6 +33,33 @@ resumable batches. `getRollbackReadiness` reports whether retained Beta rows
|
|
|
33
33
|
can be read by the preceding Alpha reader, including v1 envelopes, typed snapshots and
|
|
34
34
|
schema-2 journal entries that cannot be represented by that reader.
|
|
35
35
|
|
|
36
|
+
Migration 3 is also additive. It adds an opt-in planning/recovery stream whose
|
|
37
|
+
scope binds the exact tenant, policy domain, mission intent revision and digest,
|
|
38
|
+
selection-policy digest, peer and peer instance. The stream stores a strictly
|
|
39
|
+
validated `PlanningReducerSnapshotV1`, closed recovery high-waters and one
|
|
40
|
+
hash-chained event per compare-and-swap commit.
|
|
41
|
+
|
|
42
|
+
`PostgresPlanningRecoveryDurableRepositoryV1` never treats a planning record as
|
|
43
|
+
execution authority. Assignment epochs must advance exactly once and rotate the
|
|
44
|
+
fencing token; replay, revocation, budget, logical-time, plan and fragment
|
|
45
|
+
high-waters cannot decrease. A snapshot may initialize an empty stream, while a
|
|
46
|
+
non-empty stream accepts only its identical snapshot through `restore()`; later
|
|
47
|
+
state must arrive through verified commits so the local journal cannot acquire
|
|
48
|
+
an unverifiable gap or fork.
|
|
49
|
+
|
|
50
|
+
Construct recovery state with `createPlanningRecoveryStateV1`, bind it to a real
|
|
51
|
+
planning snapshot with `createPlanningRecoveryDurableStateV1`, and then call
|
|
52
|
+
`initialize`, `commit`, `read` or `inspectEvents`. The in-memory implementation
|
|
53
|
+
uses the same validation and is intended for conformance tests, not as durable
|
|
54
|
+
storage.
|
|
55
|
+
|
|
56
|
+
Migration 4 adds causal outbox dependencies. A transition may publish an
|
|
57
|
+
ordered effect chain by setting `dependsOnEffectId` to an earlier effect in the
|
|
58
|
+
same atomic commit or to a retained effect from an earlier commit in the same
|
|
59
|
+
durable peer scope. PostgreSQL rejects missing or cross-scope predecessors and
|
|
60
|
+
will not claim the dependent effect until the predecessor is durably settled
|
|
61
|
+
as delivered.
|
|
62
|
+
|
|
36
63
|
The pool remains caller-owned. `repository.close()` intentionally does not call
|
|
37
64
|
`pool.end()`.
|
|
38
65
|
|
|
@@ -45,8 +72,10 @@ outbox insert and inbox settlement commit atomically.
|
|
|
45
72
|
|
|
46
73
|
Outbox delivery is at least once. A worker may retry after the receiver has
|
|
47
74
|
already committed, so receivers must use the durable message key and Mesh replay
|
|
48
|
-
boundary.
|
|
49
|
-
|
|
75
|
+
boundary. Permanently rejecting a predecessor atomically rejects its dependent
|
|
76
|
+
chain with `dependency_rejected`; dependents are never delivered out of order
|
|
77
|
+
or left as apparently claimable backlog. Database claims schedule work; they do
|
|
78
|
+
not create Objective, lease, assignment or action authority.
|
|
50
79
|
|
|
51
80
|
Every loaded envelope is passed through the strict protocol parser, every
|
|
52
81
|
snapshot digest is recomputed, and every inspected journal entry is recomputed
|
package/dist/index.d.ts
CHANGED
|
@@ -2,5 +2,6 @@ export { PostgresMeshDurableRepository, type PostgresMeshDurableRepositoryOption
|
|
|
2
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
4
|
export { backfillLegacySnapshots, type MeshPostgresSnapshotBackfillOptions, type MeshPostgresSnapshotBackfillResult, } from "./snapshot-backfill.js";
|
|
5
|
+
export { InMemoryPlanningRecoveryDurableRepositoryV1, PLANNING_RECOVERY_DURABILITY_GENESIS_DIGEST, PLANNING_RECOVERY_DURABILITY_SCHEMA_VERSION, PostgresPlanningRecoveryDurableRepositoryV1, createPlanningRecoveryDurableEventV1, createPlanningRecoveryStateV1, createPlanningRecoveryDurableStateV1, validatePlanningRecoveryStateV1, validatePlanningRecoveryDurableStateV1, verifyPlanningRecoveryDurableJournalV1, type PlanningRecoveryDurableCommitInputV1, type PlanningRecoveryDurableCommitResultV1, type PlanningRecoveryDurableEventDraftV1, type PlanningRecoveryDurableEventV1, type PlanningRecoveryDurableRepositoryV1, type PlanningRecoveryDurableRestoreResultV1, type PlanningRecoveryDurableScopeV1, type PlanningRecoveryDurableSnapshotV1, type PlanningRecoveryDurableStateInputV1, type PlanningRecoveryDurableStateV1, type PlanningRecoveryDurableHighWatersV1, type PlanningRecoveryStateV1, type PostgresPlanningRecoveryDurableRepositoryOptionsV1, } from "./planning-recovery.js";
|
|
5
6
|
export type { PostgresHealthOptions, PostgresPoolHealth, PostgresPoolOptions, } from "@agentplat/postgres";
|
|
6
7
|
//# 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,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"}
|
|
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,OAAO,EACL,2CAA2C,EAC3C,2CAA2C,EAC3C,2CAA2C,EAC3C,2CAA2C,EAC3C,oCAAoC,EACpC,6BAA6B,EAC7B,oCAAoC,EACpC,+BAA+B,EAC/B,sCAAsC,EACtC,sCAAsC,EACtC,KAAK,oCAAoC,EACzC,KAAK,qCAAqC,EAC1C,KAAK,mCAAmC,EACxC,KAAK,8BAA8B,EACnC,KAAK,mCAAmC,EACxC,KAAK,sCAAsC,EAC3C,KAAK,8BAA8B,EACnC,KAAK,iCAAiC,EACtC,KAAK,mCAAmC,EACxC,KAAK,8BAA8B,EACnC,KAAK,mCAAmC,EACxC,KAAK,uBAAuB,EAC5B,KAAK,kDAAkD,GACxD,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,4 +2,5 @@ export { PostgresMeshDurableRepository, } from "./repository.js";
|
|
|
2
2
|
export { getMigrationStatus, getCompatibilityStatus, getRollbackReadiness, migrationDirectory, rollbackConfirmation, rollbackMigrations, runMigrations, } from "./migrations.js";
|
|
3
3
|
export { checkPostgresPool, createPostgresPool } from "@agentplat/postgres";
|
|
4
4
|
export { backfillLegacySnapshots, } from "./snapshot-backfill.js";
|
|
5
|
+
export { InMemoryPlanningRecoveryDurableRepositoryV1, PLANNING_RECOVERY_DURABILITY_GENESIS_DIGEST, PLANNING_RECOVERY_DURABILITY_SCHEMA_VERSION, PostgresPlanningRecoveryDurableRepositoryV1, createPlanningRecoveryDurableEventV1, createPlanningRecoveryStateV1, createPlanningRecoveryDurableStateV1, validatePlanningRecoveryStateV1, validatePlanningRecoveryDurableStateV1, verifyPlanningRecoveryDurableJournalV1, } from "./planning-recovery.js";
|
|
5
6
|
//# 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,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"}
|
|
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;AAChC,OAAO,EACL,2CAA2C,EAC3C,2CAA2C,EAC3C,2CAA2C,EAC3C,2CAA2C,EAC3C,oCAAoC,EACpC,6BAA6B,EAC7B,oCAAoC,EACpC,+BAA+B,EAC/B,sCAAsC,EACtC,sCAAsC,GAcvC,MAAM,wBAAwB,CAAC"}
|
package/dist/migrations.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAU/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;AA0HD,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,CA4BlC"}
|
package/dist/migrations.js
CHANGED
|
@@ -5,6 +5,8 @@ const applicationId = "@agentplat/mesh-postgres";
|
|
|
5
5
|
const migrationNames = [
|
|
6
6
|
"001_mesh_durability",
|
|
7
7
|
"002_mesh_compatibility_metadata",
|
|
8
|
+
"003_planning_recovery_durability",
|
|
9
|
+
"004_mesh_outbox_dependencies",
|
|
8
10
|
];
|
|
9
11
|
export const migrationDirectory = fileURLToPath(new URL("../migrations/", import.meta.url));
|
|
10
12
|
async function migrations() {
|
|
@@ -65,6 +67,57 @@ async function migrations() {
|
|
|
65
67
|
)) AS present
|
|
66
68
|
`,
|
|
67
69
|
},
|
|
70
|
+
{
|
|
71
|
+
version: 3,
|
|
72
|
+
name: migrationNames[2],
|
|
73
|
+
up: sources[4],
|
|
74
|
+
down: sources[5],
|
|
75
|
+
destructiveDown: true,
|
|
76
|
+
adoptIf: `
|
|
77
|
+
SELECT
|
|
78
|
+
to_regclass('__AGENTPLAT_SCHEMA__.mesh_planning_recovery_states') IS NOT NULL
|
|
79
|
+
AND to_regclass('__AGENTPLAT_SCHEMA__.mesh_planning_recovery_events') IS NOT NULL
|
|
80
|
+
AS present
|
|
81
|
+
`,
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
version: 4,
|
|
85
|
+
name: migrationNames[3],
|
|
86
|
+
up: sources[6],
|
|
87
|
+
down: sources[7],
|
|
88
|
+
destructiveDown: true,
|
|
89
|
+
adoptIf: `
|
|
90
|
+
SELECT
|
|
91
|
+
EXISTS (
|
|
92
|
+
SELECT 1
|
|
93
|
+
FROM information_schema.columns
|
|
94
|
+
WHERE table_schema = '__AGENTPLAT_SCHEMA__'
|
|
95
|
+
AND table_name = 'mesh_outbox'
|
|
96
|
+
AND column_name = 'depends_on_effect_id'
|
|
97
|
+
AND data_type = 'text'
|
|
98
|
+
AND is_nullable = 'YES'
|
|
99
|
+
)
|
|
100
|
+
AND EXISTS (
|
|
101
|
+
SELECT 1
|
|
102
|
+
FROM information_schema.table_constraints
|
|
103
|
+
WHERE table_schema = '__AGENTPLAT_SCHEMA__'
|
|
104
|
+
AND table_name = 'mesh_outbox'
|
|
105
|
+
AND constraint_name = 'mesh_outbox_dependency_not_self_check'
|
|
106
|
+
AND constraint_type = 'CHECK'
|
|
107
|
+
)
|
|
108
|
+
AND EXISTS (
|
|
109
|
+
SELECT 1
|
|
110
|
+
FROM information_schema.table_constraints
|
|
111
|
+
WHERE table_schema = '__AGENTPLAT_SCHEMA__'
|
|
112
|
+
AND table_name = 'mesh_outbox'
|
|
113
|
+
AND constraint_name = 'mesh_outbox_dependency_scope_fkey'
|
|
114
|
+
AND constraint_type = 'FOREIGN KEY'
|
|
115
|
+
)
|
|
116
|
+
AND to_regclass(
|
|
117
|
+
'__AGENTPLAT_SCHEMA__.mesh_outbox_dependency_idx'
|
|
118
|
+
) IS NOT NULL AS present
|
|
119
|
+
`,
|
|
120
|
+
},
|
|
68
121
|
];
|
|
69
122
|
}
|
|
70
123
|
/** Reports expand-first adoption without mutating application rows. */
|
|
@@ -147,14 +200,16 @@ export function rollbackConfirmation(schema = defaultPostgresSchema, version = 2
|
|
|
147
200
|
return postgresRollbackConfirmation(applicationId, schema, version);
|
|
148
201
|
}
|
|
149
202
|
export async function rollbackMigrations(pool, options) {
|
|
150
|
-
if (options.expectedCurrentVersion
|
|
203
|
+
if (options.expectedCurrentVersion >= 2) {
|
|
151
204
|
if (options.verifiedBackup !== true) {
|
|
152
205
|
throw new TypeError("Mesh migration rollback requires a verified external backup");
|
|
153
206
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
207
|
+
if (options.expectedCurrentVersion === 2) {
|
|
208
|
+
const readiness = await getRollbackReadiness(pool, options);
|
|
209
|
+
if (!readiness.readyForAlphaReader &&
|
|
210
|
+
options.allowIncompatibleRows !== true) {
|
|
211
|
+
throw new TypeError("Mesh migration rollback requires drained v1 rows or an explicit loss decision");
|
|
212
|
+
}
|
|
158
213
|
}
|
|
159
214
|
}
|
|
160
215
|
return rollbackPostgresMigration(pool, {
|
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,EACrB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAO7B,MAAM,aAAa,GAAG,0BAA0B,CAAC;AACjD,MAAM,cAAc,GAAG;IACrB,qBAAqB;IACrB,iCAAiC;
|
|
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;IACjC,kCAAkC;IAClC,8BAA8B;CACtB,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;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;;;;;OAKR;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BR;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,IAAI,CAAC,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,SAAS,CACjB,6DAA6D,CAC9D,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,sBAAsB,KAAK,CAAC,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC5D,IACE,CAAC,SAAS,CAAC,mBAAmB;gBAC9B,OAAO,CAAC,qBAAqB,KAAK,IAAI,EACtC,CAAC;gBACD,MAAM,IAAI,SAAS,CACjB,+EAA+E,CAChF,CAAC;YACJ,CAAC;QACH,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"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import type { PlanningReducerSnapshotV1 } from "@agentplat/collective-planning";
|
|
2
|
+
import type { MeshJsonValue } from "@agentplat/mesh-protocol";
|
|
3
|
+
import type { Pool } from "pg";
|
|
4
|
+
export declare const PLANNING_RECOVERY_DURABILITY_SCHEMA_VERSION: 1;
|
|
5
|
+
export declare const PLANNING_RECOVERY_DURABILITY_GENESIS_DIGEST = "sha256:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
|
|
6
|
+
/** A stream is permanently bound to one local reducer, intent revision and policy. */
|
|
7
|
+
export interface PlanningRecoveryDurableScopeV1 {
|
|
8
|
+
readonly tenantId: string;
|
|
9
|
+
readonly policyDomainId: string;
|
|
10
|
+
readonly missionId: string;
|
|
11
|
+
readonly intentRevision: number;
|
|
12
|
+
readonly intentDigest: string;
|
|
13
|
+
readonly policyDigest: string;
|
|
14
|
+
readonly peerId: string;
|
|
15
|
+
readonly peerInstanceId: string;
|
|
16
|
+
}
|
|
17
|
+
/** Closed recovery state; high-waters fence stale replays, leases and revocations. */
|
|
18
|
+
export interface PlanningRecoveryStateV1 {
|
|
19
|
+
readonly schemaVersion: 1;
|
|
20
|
+
readonly assignmentEpochHighWater: number;
|
|
21
|
+
readonly replaySequenceHighWater: number;
|
|
22
|
+
readonly revocationHighWater: number;
|
|
23
|
+
readonly budgetReservationHighWater: number;
|
|
24
|
+
readonly fencingToken: string;
|
|
25
|
+
readonly recoveryDigest: string;
|
|
26
|
+
}
|
|
27
|
+
export interface PlanningRecoveryDurableHighWatersV1 {
|
|
28
|
+
readonly logicalTimeMs: number;
|
|
29
|
+
readonly intentRevision: number;
|
|
30
|
+
readonly planRevision: number;
|
|
31
|
+
readonly fragmentRevision: number;
|
|
32
|
+
readonly budgetReservationUnits: number;
|
|
33
|
+
readonly replaySequence: number;
|
|
34
|
+
readonly assignmentEpoch: number;
|
|
35
|
+
readonly revocation: number;
|
|
36
|
+
}
|
|
37
|
+
export interface PlanningRecoveryDurableStateV1 {
|
|
38
|
+
readonly schemaVersion: typeof PLANNING_RECOVERY_DURABILITY_SCHEMA_VERSION;
|
|
39
|
+
readonly scope: PlanningRecoveryDurableScopeV1;
|
|
40
|
+
readonly generation: number;
|
|
41
|
+
readonly planningSnapshot: PlanningReducerSnapshotV1;
|
|
42
|
+
readonly recovery: PlanningRecoveryStateV1;
|
|
43
|
+
readonly highWaters: PlanningRecoveryDurableHighWatersV1;
|
|
44
|
+
readonly stateDigest: string;
|
|
45
|
+
}
|
|
46
|
+
export interface PlanningRecoveryDurableEventDraftV1 {
|
|
47
|
+
readonly eventId: string;
|
|
48
|
+
readonly kind: string;
|
|
49
|
+
readonly logicalTimeMs: number;
|
|
50
|
+
readonly payload: MeshJsonValue;
|
|
51
|
+
}
|
|
52
|
+
export interface PlanningRecoveryDurableEventV1 extends PlanningRecoveryDurableEventDraftV1 {
|
|
53
|
+
readonly schemaVersion: 1;
|
|
54
|
+
readonly scope: PlanningRecoveryDurableScopeV1;
|
|
55
|
+
readonly sequence: number;
|
|
56
|
+
readonly previousDigest: string;
|
|
57
|
+
readonly digest: string;
|
|
58
|
+
readonly stateGeneration: number;
|
|
59
|
+
readonly stateDigest: string;
|
|
60
|
+
readonly occurredAt: string;
|
|
61
|
+
}
|
|
62
|
+
export interface PlanningRecoveryDurableSnapshotV1 {
|
|
63
|
+
readonly schemaVersion: 1;
|
|
64
|
+
readonly state: PlanningRecoveryDurableStateV1;
|
|
65
|
+
readonly eventHeadSequence: number;
|
|
66
|
+
readonly eventHeadDigest: string;
|
|
67
|
+
readonly snapshotDigest: string;
|
|
68
|
+
}
|
|
69
|
+
export interface PlanningRecoveryDurableStateInputV1 {
|
|
70
|
+
readonly scope: PlanningRecoveryDurableScopeV1;
|
|
71
|
+
readonly generation: number;
|
|
72
|
+
readonly planningSnapshot: PlanningReducerSnapshotV1;
|
|
73
|
+
readonly recovery: PlanningRecoveryStateV1;
|
|
74
|
+
}
|
|
75
|
+
export interface PlanningRecoveryDurableCommitInputV1 {
|
|
76
|
+
readonly expectedGeneration: number;
|
|
77
|
+
readonly expectedStateDigest: string;
|
|
78
|
+
readonly nextState: PlanningRecoveryDurableStateV1;
|
|
79
|
+
readonly event: PlanningRecoveryDurableEventDraftV1;
|
|
80
|
+
}
|
|
81
|
+
export type PlanningRecoveryDurableCommitResultV1 = {
|
|
82
|
+
readonly committed: true;
|
|
83
|
+
readonly state: PlanningRecoveryDurableStateV1;
|
|
84
|
+
readonly event: PlanningRecoveryDurableEventV1;
|
|
85
|
+
} | {
|
|
86
|
+
readonly committed: false;
|
|
87
|
+
readonly code: "state_conflict" | "rollback_rejected";
|
|
88
|
+
};
|
|
89
|
+
export type PlanningRecoveryDurableRestoreResultV1 = {
|
|
90
|
+
readonly restored: true;
|
|
91
|
+
readonly snapshot: PlanningRecoveryDurableSnapshotV1;
|
|
92
|
+
} | {
|
|
93
|
+
readonly restored: false;
|
|
94
|
+
readonly code: "existing" | "rollback_rejected";
|
|
95
|
+
};
|
|
96
|
+
export interface PlanningRecoveryDurableRepositoryV1 {
|
|
97
|
+
initialize(state: PlanningRecoveryDurableStateV1): Promise<"initialized" | "existing">;
|
|
98
|
+
read(): Promise<PlanningRecoveryDurableSnapshotV1>;
|
|
99
|
+
commit(input: PlanningRecoveryDurableCommitInputV1): Promise<PlanningRecoveryDurableCommitResultV1>;
|
|
100
|
+
restore(snapshot: PlanningRecoveryDurableSnapshotV1): Promise<PlanningRecoveryDurableRestoreResultV1>;
|
|
101
|
+
inspectEvents(input?: {
|
|
102
|
+
readonly afterSequence?: number;
|
|
103
|
+
readonly limit?: number;
|
|
104
|
+
}): Promise<readonly PlanningRecoveryDurableEventV1[]>;
|
|
105
|
+
}
|
|
106
|
+
/** Canonical constructor; it validates the real reducer snapshot before persistence. */
|
|
107
|
+
export declare function createPlanningRecoveryDurableStateV1(input: PlanningRecoveryDurableStateInputV1): Promise<PlanningRecoveryDurableStateV1>;
|
|
108
|
+
export declare function createPlanningRecoveryStateV1(input: Omit<PlanningRecoveryStateV1, "recoveryDigest">): Promise<PlanningRecoveryStateV1>;
|
|
109
|
+
export declare function validatePlanningRecoveryStateV1(input: unknown): Promise<PlanningRecoveryStateV1>;
|
|
110
|
+
export declare function validatePlanningRecoveryDurableStateV1(input: unknown): Promise<PlanningRecoveryDurableStateV1>;
|
|
111
|
+
export declare function createPlanningRecoveryDurableEventV1(input: {
|
|
112
|
+
readonly scope: PlanningRecoveryDurableScopeV1;
|
|
113
|
+
readonly sequence: number;
|
|
114
|
+
readonly previousDigest: string;
|
|
115
|
+
readonly stateGeneration: number;
|
|
116
|
+
readonly stateDigest: string;
|
|
117
|
+
readonly event: PlanningRecoveryDurableEventDraftV1;
|
|
118
|
+
readonly occurredAt: string;
|
|
119
|
+
}): Promise<PlanningRecoveryDurableEventV1>;
|
|
120
|
+
export declare function verifyPlanningRecoveryDurableJournalV1(input: {
|
|
121
|
+
readonly entries: readonly PlanningRecoveryDurableEventV1[];
|
|
122
|
+
readonly anchorSequence?: number;
|
|
123
|
+
readonly anchorDigest?: string;
|
|
124
|
+
readonly expectedHeadSequence?: number;
|
|
125
|
+
readonly expectedHeadDigest?: string;
|
|
126
|
+
}): Promise<boolean>;
|
|
127
|
+
/** In-memory conformance layer. It deliberately shares all validation with PostgreSQL. */
|
|
128
|
+
export declare class InMemoryPlanningRecoveryDurableRepositoryV1 implements PlanningRecoveryDurableRepositoryV1 {
|
|
129
|
+
#private;
|
|
130
|
+
readonly scope: PlanningRecoveryDurableScopeV1;
|
|
131
|
+
constructor(scope: PlanningRecoveryDurableScopeV1);
|
|
132
|
+
initialize(input: PlanningRecoveryDurableStateV1): Promise<"existing" | "initialized">;
|
|
133
|
+
read(): Promise<PlanningRecoveryDurableSnapshotV1>;
|
|
134
|
+
commit(input: PlanningRecoveryDurableCommitInputV1): Promise<PlanningRecoveryDurableCommitResultV1>;
|
|
135
|
+
restore(input: PlanningRecoveryDurableSnapshotV1): Promise<PlanningRecoveryDurableRestoreResultV1>;
|
|
136
|
+
inspectEvents(input?: {
|
|
137
|
+
readonly afterSequence?: number;
|
|
138
|
+
readonly limit?: number;
|
|
139
|
+
}): Promise<readonly PlanningRecoveryDurableEventV1[]>;
|
|
140
|
+
}
|
|
141
|
+
export interface PostgresPlanningRecoveryDurableRepositoryOptionsV1 extends PlanningRecoveryDurableScopeV1 {
|
|
142
|
+
readonly schema?: string;
|
|
143
|
+
}
|
|
144
|
+
export declare class PostgresPlanningRecoveryDurableRepositoryV1 implements PlanningRecoveryDurableRepositoryV1 {
|
|
145
|
+
#private;
|
|
146
|
+
readonly pool: Pool;
|
|
147
|
+
constructor(pool: Pool, options: PostgresPlanningRecoveryDurableRepositoryOptionsV1);
|
|
148
|
+
initialize(input: PlanningRecoveryDurableStateV1): Promise<"existing" | "initialized">;
|
|
149
|
+
read(): Promise<Readonly<{
|
|
150
|
+
snapshotDigest: string;
|
|
151
|
+
schemaVersion: 1;
|
|
152
|
+
state: PlanningRecoveryDurableStateV1;
|
|
153
|
+
eventHeadSequence: number;
|
|
154
|
+
eventHeadDigest: string;
|
|
155
|
+
}>>;
|
|
156
|
+
commit(input: PlanningRecoveryDurableCommitInputV1): Promise<PlanningRecoveryDurableCommitResultV1>;
|
|
157
|
+
restore(input: PlanningRecoveryDurableSnapshotV1): Promise<PlanningRecoveryDurableRestoreResultV1>;
|
|
158
|
+
inspectEvents(input?: {
|
|
159
|
+
readonly afterSequence?: number;
|
|
160
|
+
readonly limit?: number;
|
|
161
|
+
}): Promise<readonly PlanningRecoveryDurableEventV1[]>;
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=planning-recovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planning-recovery.d.ts","sourceRoot":"","sources":["../src/planning-recovery.ts"],"names":[],"mappings":"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"}
|