@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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning-recovery.js","sourceRoot":"","sources":["../src/planning-recovery.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { MeshDurableAbandonInput, MeshDurableClaimOptions, MeshDurableCommitInboxInput, MeshDurableCommitResult, MeshDurableInboxRecord, MeshDurableJournalEntry, MeshDurableJournalQuery, MeshDurableOutboxRecord, MeshDurablePeerSnapshot, MeshDurableReceiveResult, MeshDurableRepository, MeshDurableScope, MeshDurableSettleOutboxInput } from "@agentplat/mesh/durability";
1
+ import type { MeshDurableAbandonInput, MeshDurableClaimOptions, MeshDurableCommitInboxInput, MeshDurableCommitLocalInput, MeshDurableCommitResult, MeshDurableInboxRecord, MeshDurableJournalEntry, MeshDurableJournalQuery, MeshDurableOutboxRecord, MeshDurablePeerSnapshot, MeshDurableReceiveResult, MeshDurableLocalTransitionRepository, MeshDurableScope, MeshDurableSettleOutboxInput } from "@agentplat/mesh/durability";
2
2
  import type { SignedMeshEnvelope } from "@agentplat/mesh-protocol";
3
3
  import type { Pool } from "pg";
4
4
  export interface PostgresMeshDurableRepositoryOptions {
@@ -10,7 +10,7 @@ export interface PostgresMeshDurableRepositoryOptions {
10
10
  *
11
11
  * The pool is caller-owned and is never closed by this adapter.
12
12
  */
13
- export declare class PostgresMeshDurableRepository implements MeshDurableRepository {
13
+ export declare class PostgresMeshDurableRepository implements MeshDurableLocalTransitionRepository {
14
14
  #private;
15
15
  readonly pool: Pool;
16
16
  constructor(pool: Pool, options?: PostgresMeshDurableRepositoryOptions);
@@ -21,6 +21,7 @@ export declare class PostgresMeshDurableRepository implements MeshDurableReposit
21
21
  loadSnapshot(inputScope: MeshDurableScope): Promise<MeshDurablePeerSnapshot | undefined>;
22
22
  claimInbox(input: MeshDurableClaimOptions): Promise<readonly MeshDurableInboxRecord[]>;
23
23
  commitInboxTransition(input: MeshDurableCommitInboxInput): Promise<MeshDurableCommitResult>;
24
+ commitLocalTransition(input: MeshDurableCommitLocalInput): Promise<MeshDurableCommitResult>;
24
25
  abandonInbox(input: MeshDurableAbandonInput): Promise<boolean>;
25
26
  claimOutbox(input: MeshDurableClaimOptions): Promise<readonly MeshDurableOutboxRecord[]>;
26
27
  settleOutbox(input: MeshDurableSettleOutboxInput): Promise<boolean>;
@@ -1 +1 @@
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
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,uBAAuB,EAEvB,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EAEvB,uBAAuB,EACvB,wBAAwB,EACxB,oCAAoC,EACpC,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,oCAAoC;;IAKtF,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;IAsQ7B,qBAAqB,CACzB,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,uBAAuB,CAAC;IAqN7B,YAAY,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC;IAsC9D,WAAW,CACf,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,SAAS,uBAAuB,EAAE,CAAC;IA+DxC,YAAY,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,OAAO,CAAC;IA6FnE,cAAc,CAClB,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,SAAS,uBAAuB,EAAE,CAAC;IAqB9C,KAAK,IAAI,IAAI;CAmBd"}
@@ -217,6 +217,7 @@ export class PostgresMeshDurableRepository {
217
217
  throw new CommitConflictError("outbox_conflict");
218
218
  }
219
219
  }
220
+ await assertPersistedOutboxDependencies(database, scope, input.outbox);
220
221
  const lastJournal = await database.query(`SELECT sequence, digest FROM public.mesh_journal
221
222
  WHERE tenant_id = $1 AND mesh_id = $2 AND peer_id = $3
222
223
  AND instance_id = $4
@@ -291,16 +292,17 @@ export class PostgresMeshDurableRepository {
291
292
  const envelopeBytes = canonicalEnvelopeBytes(envelope);
292
293
  const inserted = await database.query(`INSERT INTO public.mesh_outbox
293
294
  (tenant_id, mesh_id, peer_id, instance_id, effect_id, message_id,
294
- target_peer_id, envelope, envelope_digest,
295
+ target_peer_id, depends_on_effect_id, envelope, envelope_digest,
295
296
  wrapper_schema_version, envelope_format,
296
297
  envelope_wire_version, envelope_bytes)
297
- VALUES ($1, $2, $3, $4, $5, $6, $7, $8::jsonb, $9, $10, $11,
298
- $12, $13)
298
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9::jsonb, $10, $11,
299
+ $12, $13, $14)
299
300
  RETURNING *`, [
300
301
  ...scopeValues(scope),
301
302
  outbound.effectId,
302
303
  envelope.messageId,
303
304
  targetPeerId ?? null,
305
+ outbound.dependsOnEffectId ?? null,
304
306
  JSON.stringify(envelope),
305
307
  envelopeDigest,
306
308
  MESH_DURABILITY_SCHEMA_VERSION,
@@ -337,6 +339,174 @@ export class PostgresMeshDurableRepository {
337
339
  throw error;
338
340
  });
339
341
  }
342
+ async commitLocalTransition(input) {
343
+ const scope = normalizeMeshDurableScope(input.scope);
344
+ assertLocalCommitInput(input, scope);
345
+ return this.#transaction(async (database) => {
346
+ // The advisory lock also serializes the revision-zero insert with inbox
347
+ // transitions for the same concrete peer incarnation.
348
+ await database.query("SELECT pg_advisory_xact_lock(hashtextextended($1, 0))", [scopeKey(scope)]);
349
+ const transition = await database.query(`SELECT 1 FROM public.mesh_journal
350
+ WHERE tenant_id = $1 AND mesh_id = $2 AND peer_id = $3
351
+ AND instance_id = $4 AND transition_id = $5
352
+ LIMIT 1`, [...scopeValues(scope), input.transitionId]);
353
+ if (transition.rowCount !== 0) {
354
+ return commitConflict("transition_conflict");
355
+ }
356
+ const currentResult = await database.query(`SELECT * FROM public.mesh_peer_snapshots
357
+ WHERE tenant_id = $1 AND mesh_id = $2 AND peer_id = $3
358
+ AND instance_id = $4
359
+ FOR UPDATE`, scopeValues(scope));
360
+ const current = currentResult.rowCount === 0
361
+ ? undefined
362
+ : await mapSnapshot(currentResult.rows[0], scope);
363
+ if ((current?.revision ?? 0) !== input.expectedSnapshotRevision) {
364
+ return commitConflict("revision_conflict");
365
+ }
366
+ for (const outbound of input.outbox) {
367
+ const conflict = await database.query(`SELECT 1 FROM public.mesh_outbox
368
+ WHERE tenant_id = $1 AND mesh_id = $2 AND peer_id = $3
369
+ AND instance_id = $4
370
+ AND (effect_id = $5 OR message_id = $6)
371
+ LIMIT 1`, [
372
+ ...scopeValues(scope),
373
+ outbound.effectId,
374
+ outbound.envelope.messageId,
375
+ ]);
376
+ if (conflict.rowCount !== 0) {
377
+ throw new CommitConflictError("outbox_conflict");
378
+ }
379
+ }
380
+ await assertPersistedOutboxDependencies(database, scope, input.outbox);
381
+ const state = cloneStrictJson(input.nextState);
382
+ const stateDigest = await computeMeshDurableValueDigest(state);
383
+ const descriptor = normalizeSnapshotDescriptor(input.nextStateDescriptor);
384
+ const revision = input.expectedSnapshotRevision + 1;
385
+ const snapshotResult = await database.query(`INSERT INTO public.mesh_peer_snapshots
386
+ (tenant_id, mesh_id, peer_id, instance_id, revision, state,
387
+ state_digest, wrapper_schema_version, snapshot_format,
388
+ snapshot_schema_version, committed_at)
389
+ VALUES ($1, $2, $3, $4, $5, $6::jsonb, $7, $8, $9, $10,
390
+ transaction_timestamp())
391
+ ON CONFLICT (tenant_id, mesh_id, peer_id, instance_id)
392
+ DO UPDATE SET revision = EXCLUDED.revision,
393
+ state = EXCLUDED.state,
394
+ state_digest = EXCLUDED.state_digest,
395
+ wrapper_schema_version = EXCLUDED.wrapper_schema_version,
396
+ snapshot_format = EXCLUDED.snapshot_format,
397
+ snapshot_schema_version = EXCLUDED.snapshot_schema_version,
398
+ committed_at = EXCLUDED.committed_at
399
+ RETURNING *`, [
400
+ ...scopeValues(scope),
401
+ revision,
402
+ JSON.stringify(state),
403
+ stateDigest,
404
+ MESH_DURABILITY_SCHEMA_VERSION,
405
+ descriptor.format,
406
+ descriptor.schemaVersion,
407
+ ]);
408
+ const snapshot = await mapSnapshot(snapshotResult.rows[0], scope);
409
+ const timestamp = iso((await database.query("SELECT transaction_timestamp() AS occurred_at")).rows[0].occurred_at);
410
+ const lastJournal = await database.query(`SELECT sequence, digest FROM public.mesh_journal
411
+ WHERE tenant_id = $1 AND mesh_id = $2 AND peer_id = $3
412
+ AND instance_id = $4
413
+ ORDER BY sequence DESC
414
+ LIMIT 1`, scopeValues(scope));
415
+ let sequence = lastJournal.rowCount === 0
416
+ ? 0
417
+ : safeInteger(lastJournal.rows[0].sequence, "journal sequence");
418
+ let previousDigest = lastJournal.rowCount === 0
419
+ ? MESH_DURABLE_GENESIS_DIGEST
420
+ : String(lastJournal.rows[0].digest);
421
+ const drafts = input.journal.length === 0
422
+ ? [
423
+ {
424
+ entryId: input.transitionId,
425
+ kind: "transition.applied",
426
+ },
427
+ ]
428
+ : input.journal;
429
+ const journal = [];
430
+ for (const draft of drafts) {
431
+ sequence += 1;
432
+ const entry = await createMeshDurableJournalEntry({
433
+ scope,
434
+ sequence,
435
+ previousDigest,
436
+ transitionId: input.transitionId,
437
+ snapshotRevision: snapshot.revision,
438
+ snapshotDigest: snapshot.stateDigest,
439
+ draft,
440
+ occurredAt: timestamp,
441
+ });
442
+ await database.query(`INSERT INTO public.mesh_journal
443
+ (tenant_id, mesh_id, peer_id, instance_id, sequence, entry_id,
444
+ previous_digest, digest, transition_id, inbox_message_id,
445
+ snapshot_revision, snapshot_digest, kind, reason_code,
446
+ occurred_at, wrapper_schema_version, journal_version)
447
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, NULL, $10, $11,
448
+ $12, $13, $14::timestamptz, $15, $16)`, [
449
+ ...scopeValues(scope),
450
+ entry.sequence,
451
+ entry.entryId,
452
+ entry.previousDigest,
453
+ entry.digest,
454
+ entry.transitionId,
455
+ entry.snapshotRevision,
456
+ entry.snapshotDigest,
457
+ entry.kind,
458
+ entry.reasonCode ?? null,
459
+ entry.occurredAt,
460
+ MESH_DURABILITY_SCHEMA_VERSION,
461
+ MESH_DURABLE_JOURNAL_VERSION,
462
+ ]);
463
+ journal.push(entry);
464
+ previousDigest = entry.digest;
465
+ }
466
+ const outbox = [];
467
+ for (const outbound of input.outbox) {
468
+ const targetPeerId = outbound.targetPeerId ??
469
+ (outbound.envelope.audience.kind === "peer"
470
+ ? outbound.envelope.audience.peerId
471
+ : undefined);
472
+ const envelope = validateOutboundEnvelope(outbound.envelope, scope, targetPeerId);
473
+ const envelopeDigest = await digestEnvelope(envelope);
474
+ const envelopeBytes = canonicalEnvelopeBytes(envelope);
475
+ const inserted = await database.query(`INSERT INTO public.mesh_outbox
476
+ (tenant_id, mesh_id, peer_id, instance_id, effect_id, message_id,
477
+ target_peer_id, depends_on_effect_id, envelope, envelope_digest,
478
+ wrapper_schema_version, envelope_format,
479
+ envelope_wire_version, envelope_bytes)
480
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9::jsonb, $10, $11,
481
+ $12, $13, $14)
482
+ RETURNING *`, [
483
+ ...scopeValues(scope),
484
+ outbound.effectId,
485
+ envelope.messageId,
486
+ targetPeerId ?? null,
487
+ outbound.dependsOnEffectId ?? null,
488
+ JSON.stringify(envelope),
489
+ envelopeDigest,
490
+ MESH_DURABILITY_SCHEMA_VERSION,
491
+ MESH_DURABLE_ENVELOPE_FORMAT,
492
+ envelope.wireVersion,
493
+ Buffer.from(envelopeBytes),
494
+ ]);
495
+ outbox.push(await mapOutbox(inserted.rows[0], scope));
496
+ }
497
+ return Object.freeze({
498
+ committed: true,
499
+ snapshot,
500
+ journal: Object.freeze(journal),
501
+ outbox: Object.freeze(outbox),
502
+ });
503
+ }).catch((error) => {
504
+ if (error instanceof CommitConflictError) {
505
+ return commitConflict(error.code);
506
+ }
507
+ throw error;
508
+ });
509
+ }
340
510
  async abandonInbox(input) {
341
511
  const scope = normalizeMeshDurableScope(input.inbox.scope);
342
512
  const claim = input.inbox.claim;
@@ -371,16 +541,30 @@ export class PostgresMeshDurableRepository {
371
541
  async claimOutbox(input) {
372
542
  const options = normalizeClaimOptions(input);
373
543
  return this.#transaction(async (database) => {
374
- const selected = await database.query(`SELECT effect_id
375
- FROM public.mesh_outbox
376
- WHERE tenant_id = $1 AND mesh_id = $2 AND peer_id = $3
377
- AND instance_id = $4
544
+ const selected = await database.query(`SELECT candidate.effect_id
545
+ FROM public.mesh_outbox AS candidate
546
+ WHERE candidate.tenant_id = $1 AND candidate.mesh_id = $2
547
+ AND candidate.peer_id = $3 AND candidate.instance_id = $4
378
548
  AND (
379
- (status = 'pending' AND available_at <= transaction_timestamp())
380
- OR
381
- (status = 'delivering' AND claim_expires_at <= transaction_timestamp())
549
+ (candidate.status = 'pending'
550
+ AND candidate.available_at <= transaction_timestamp())
551
+ OR (candidate.status = 'delivering'
552
+ AND candidate.claim_expires_at <= transaction_timestamp())
553
+ )
554
+ AND (
555
+ candidate.depends_on_effect_id IS NULL
556
+ OR EXISTS (
557
+ SELECT 1
558
+ FROM public.mesh_outbox AS predecessor
559
+ WHERE predecessor.tenant_id = candidate.tenant_id
560
+ AND predecessor.mesh_id = candidate.mesh_id
561
+ AND predecessor.peer_id = candidate.peer_id
562
+ AND predecessor.instance_id = candidate.instance_id
563
+ AND predecessor.effect_id = candidate.depends_on_effect_id
564
+ AND predecessor.status = 'delivered'
565
+ )
382
566
  )
383
- ORDER BY created_at, effect_id
567
+ ORDER BY candidate.created_at, candidate.effect_id
384
568
  FOR UPDATE SKIP LOCKED
385
569
  LIMIT $5`, [...scopeValues(options.scope), options.limit]);
386
570
  const claimed = [];
@@ -433,33 +617,61 @@ export class PostgresMeshDurableRepository {
433
617
  : input.settlement.disposition === "delivered"
434
618
  ? "delivered"
435
619
  : "rejected";
436
- const result = await scopedDatabase(this.pool, this.#schema).query(`UPDATE public.mesh_outbox
437
- SET status = $9,
438
- available_at = CASE WHEN $9 = 'pending'
439
- THEN transaction_timestamp()
440
- + ($10::bigint * interval '1 millisecond')
441
- ELSE available_at END,
442
- settled_at = CASE WHEN $9 = 'pending'
443
- THEN NULL ELSE transaction_timestamp() END,
444
- reason_code = $11,
445
- claim_worker_id = NULL,
446
- claim_token = NULL,
447
- claim_expires_at = NULL
448
- WHERE tenant_id = $1 AND mesh_id = $2 AND peer_id = $3
449
- AND instance_id = $4 AND effect_id = $5
450
- AND status = 'delivering' AND claim_worker_id = $6
451
- AND claim_token = $7 AND claim_generation = $8
452
- AND claim_expires_at > transaction_timestamp()`, [
453
- ...scopeValues(scope),
454
- input.outbox.effectId,
455
- claim.workerId,
456
- claim.leaseToken,
457
- claim.generation,
458
- status,
459
- retryAfterMs,
460
- input.settlement.reasonCode ?? null,
461
- ]);
462
- return result.rowCount === 1;
620
+ return this.#transaction(async (database) => {
621
+ const result = await database.query(`UPDATE public.mesh_outbox
622
+ SET status = $9,
623
+ available_at = CASE WHEN $9 = 'pending'
624
+ THEN transaction_timestamp()
625
+ + ($10::bigint * interval '1 millisecond')
626
+ ELSE available_at END,
627
+ settled_at = CASE WHEN $9 = 'pending'
628
+ THEN NULL ELSE transaction_timestamp() END,
629
+ reason_code = $11,
630
+ claim_worker_id = NULL,
631
+ claim_token = NULL,
632
+ claim_expires_at = NULL
633
+ WHERE tenant_id = $1 AND mesh_id = $2 AND peer_id = $3
634
+ AND instance_id = $4 AND effect_id = $5
635
+ AND status = 'delivering' AND claim_worker_id = $6
636
+ AND claim_token = $7 AND claim_generation = $8
637
+ AND claim_expires_at > transaction_timestamp()`, [
638
+ ...scopeValues(scope),
639
+ input.outbox.effectId,
640
+ claim.workerId,
641
+ claim.leaseToken,
642
+ claim.generation,
643
+ status,
644
+ retryAfterMs,
645
+ input.settlement.reasonCode ?? null,
646
+ ]);
647
+ if (result.rowCount === 1 &&
648
+ input.settlement.disposition === "permanent_rejection") {
649
+ await database.query(`WITH RECURSIVE blocked(effect_id) AS (
650
+ SELECT effect_id
651
+ FROM public.mesh_outbox
652
+ WHERE tenant_id = $1 AND mesh_id = $2 AND peer_id = $3
653
+ AND instance_id = $4 AND depends_on_effect_id = $5
654
+ UNION
655
+ SELECT child.effect_id
656
+ FROM public.mesh_outbox AS child
657
+ JOIN blocked AS predecessor
658
+ ON child.depends_on_effect_id = predecessor.effect_id
659
+ WHERE child.tenant_id = $1 AND child.mesh_id = $2
660
+ AND child.peer_id = $3 AND child.instance_id = $4
661
+ )
662
+ UPDATE public.mesh_outbox
663
+ SET status = 'rejected',
664
+ settled_at = transaction_timestamp(),
665
+ reason_code = 'dependency_rejected',
666
+ claim_worker_id = NULL,
667
+ claim_token = NULL,
668
+ claim_expires_at = NULL
669
+ WHERE tenant_id = $1 AND mesh_id = $2 AND peer_id = $3
670
+ AND instance_id = $4 AND effect_id IN (SELECT effect_id FROM blocked)
671
+ AND status IN ('pending', 'delivering')`, [...scopeValues(scope), input.outbox.effectId]);
672
+ }
673
+ return result.rowCount === 1;
674
+ });
463
675
  }
464
676
  async inspectJournal(input) {
465
677
  const scope = normalizeMeshDurableScope(input.scope);
@@ -652,10 +864,18 @@ async function mapOutbox(row, scope) {
652
864
  const claim = mapClaim(row, status === "delivering");
653
865
  const schemaVersion = durabilitySchemaVersion(row.wrapper_schema_version);
654
866
  assertEnvelopeMetadata(row, schemaVersion, envelope, restored.bytes);
867
+ const effectId = String(row.effect_id);
868
+ const dependsOnEffectId = row.depends_on_effect_id == null
869
+ ? undefined
870
+ : String(row.depends_on_effect_id);
871
+ if (!validIdentifier(effectId) ||
872
+ (dependsOnEffectId !== undefined &&
873
+ (!validIdentifier(dependsOnEffectId) || dependsOnEffectId === effectId)))
874
+ throw new TypeError("Persisted Mesh outbox dependency is invalid");
655
875
  return Object.freeze({
656
876
  schemaVersion,
657
877
  scope,
658
- effectId: String(row.effect_id),
878
+ effectId,
659
879
  messageId: envelope.messageId,
660
880
  envelope,
661
881
  envelopeDigest,
@@ -669,6 +889,7 @@ async function mapOutbox(row, scope) {
669
889
  ...(row.target_peer_id == null
670
890
  ? {}
671
891
  : { targetPeerId: String(row.target_peer_id) }),
892
+ ...(dependsOnEffectId === undefined ? {} : { dependsOnEffectId }),
672
893
  status,
673
894
  attempts: safeInteger(row.attempts, "outbox attempts"),
674
895
  availableAt: iso(row.available_at),
@@ -821,6 +1042,8 @@ function assertCommitInput(input, scope) {
821
1042
  for (const outbound of input.outbox) {
822
1043
  if (!outbound ||
823
1044
  !validIdentifier(outbound.effectId) ||
1045
+ (outbound.dependsOnEffectId !== undefined &&
1046
+ !validIdentifier(outbound.dependsOnEffectId)) ||
824
1047
  (outbound.targetPeerId !== undefined &&
825
1048
  !validIdentifier(outbound.targetPeerId))) {
826
1049
  throw new TypeError("Mesh durable outbound draft is invalid");
@@ -830,6 +1053,78 @@ function assertCommitInput(input, scope) {
830
1053
  ? outbound.envelope.audience.peerId
831
1054
  : undefined));
832
1055
  }
1056
+ assertOutboxDependencies(input.outbox);
1057
+ }
1058
+ function assertLocalCommitInput(input, scope) {
1059
+ if (!scopeEquals(scope, input.scope) ||
1060
+ !Number.isSafeInteger(input.expectedSnapshotRevision) ||
1061
+ input.expectedSnapshotRevision < 0 ||
1062
+ !validIdentifier(input.transitionId) ||
1063
+ !Array.isArray(input.journal) ||
1064
+ input.journal.length > 64 ||
1065
+ !Array.isArray(input.outbox) ||
1066
+ input.outbox.length > 256 ||
1067
+ input.nextState === undefined) {
1068
+ throw new TypeError("Mesh durable local commit input is invalid");
1069
+ }
1070
+ normalizeSnapshotDescriptor(input.nextStateDescriptor);
1071
+ cloneStrictJson(input.nextState);
1072
+ for (const draft of input.journal) {
1073
+ if (!draft ||
1074
+ !validIdentifier(draft.entryId) ||
1075
+ !validReason(draft.kind) ||
1076
+ (draft.reasonCode !== undefined && !validReason(draft.reasonCode))) {
1077
+ throw new TypeError("Mesh durable journal draft is invalid");
1078
+ }
1079
+ }
1080
+ for (const outbound of input.outbox) {
1081
+ if (!outbound ||
1082
+ !validIdentifier(outbound.effectId) ||
1083
+ (outbound.dependsOnEffectId !== undefined &&
1084
+ !validIdentifier(outbound.dependsOnEffectId)) ||
1085
+ (outbound.targetPeerId !== undefined &&
1086
+ !validIdentifier(outbound.targetPeerId))) {
1087
+ throw new TypeError("Mesh durable outbound draft is invalid");
1088
+ }
1089
+ validateOutboundEnvelope(outbound.envelope, scope, outbound.targetPeerId ??
1090
+ (outbound.envelope?.audience?.kind === "peer"
1091
+ ? outbound.envelope.audience.peerId
1092
+ : undefined));
1093
+ }
1094
+ assertOutboxDependencies(input.outbox);
1095
+ }
1096
+ function assertOutboxDependencies(outbox) {
1097
+ const batch = new Set(outbox.map(({ effectId }) => effectId));
1098
+ const seen = new Set();
1099
+ for (const outbound of outbox) {
1100
+ if (seen.has(outbound.effectId) ||
1101
+ (outbound.dependsOnEffectId !== undefined &&
1102
+ batch.has(outbound.dependsOnEffectId) &&
1103
+ !seen.has(outbound.dependsOnEffectId)))
1104
+ throw new TypeError("Mesh durable outbox dependency order is invalid");
1105
+ seen.add(outbound.effectId);
1106
+ }
1107
+ }
1108
+ async function assertPersistedOutboxDependencies(database, scope, outbox) {
1109
+ const batch = new Set(outbox.map(({ effectId }) => effectId));
1110
+ const external = [
1111
+ ...new Set(outbox
1112
+ .map(({ dependsOnEffectId }) => dependsOnEffectId)
1113
+ .filter((effectId) => effectId !== undefined && !batch.has(effectId))),
1114
+ ];
1115
+ if (external.length === 0)
1116
+ return;
1117
+ const retained = await database.query(`SELECT effect_id, status FROM public.mesh_outbox
1118
+ WHERE tenant_id = $1 AND mesh_id = $2 AND peer_id = $3
1119
+ AND instance_id = $4 AND effect_id = ANY($5::text[])`, [...scopeValues(scope), external]);
1120
+ const retainedStatus = new Map(retained.rows.map(({ effect_id, status }) => [
1121
+ String(effect_id),
1122
+ String(status),
1123
+ ]));
1124
+ if (external.some((effectId) => !retainedStatus.has(effectId)))
1125
+ throw new TypeError("Mesh durable outbox dependency does not exist");
1126
+ if (external.some((effectId) => retainedStatus.get(effectId) === "rejected"))
1127
+ throw new TypeError("Mesh durable outbox dependency was rejected");
833
1128
  }
834
1129
  function normalizeClaimOptions(input) {
835
1130
  if (!input || typeof input !== "object") {