feat(service): outbox relay + thread read endpoint + replay (P1.5, P1 complete)

OutboxRelay: FOR UPDATE SKIP LOCKED claim, in-process bus publish, PENDING->
PUBLISHED with 30s backoff + idempotent-consumer ledger. GET /v1/threads/:id/
messages (policy-scoped). Replay + read specs green; vitest fileParallelism off
(shared DB). End-to-end HTTP smoke verified: idempotent ingest, read-back, 400
on missing key. 19 tests pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-30 21:29:00 +05:30
parent 4b7dc98c6b
commit 072c541e09
10 changed files with 279 additions and 1 deletions
+3 -1
View File
@@ -2,10 +2,12 @@ import { Module } from '@nestjs/common';
import { PrismaModule } from './prisma/prisma.module';
import { PlatformModule } from './platform/platform.module';
import { InteractionsModule } from './interactions/interactions.module';
import { OutboxModule } from './outbox/outbox.module';
import { ThreadsModule } from './threads/threads.module';
import { HealthController } from './health.controller';
@Module({
imports: [PrismaModule, PlatformModule, InteractionsModule],
imports: [PrismaModule, PlatformModule, InteractionsModule, OutboxModule, ThreadsModule],
controllers: [HealthController],
})
export class AppModule {}