feat: foundation — Docker Compose, OTEL, shared types (P0-002, P0-005, P0-006)

Docker Compose (P0-005):
- PG 17 + pgvector, Valkey 8, OTEL Collector, Jaeger
- OTEL Collector config with trace/metric/log pipelines
- .env.example with all connection strings

OTEL Foundation (P0-006):
- @opentelemetry/sdk-node with auto-instrumentations
- tracing.ts loaded before NestJS bootstrap
- OTLP HTTP exporter → collector → Jaeger
- Disabled fs/dns instrumentations (noisy)

Shared Types (P0-002):
- ChatMessageDto with class-validator (IsUUID, IsNotEmpty, MaxLength)
- ChatResponseDto for REST responses
- Socket.IO typed event maps (ServerToClientEvents, ClientToServerEvents)
- AgentSessionHandle opaque type
- All event payload interfaces shared across gateway/cli/discord

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-12 20:55:04 -05:00
parent f6f05cf23a
commit a52537985e
14 changed files with 2055 additions and 26 deletions

35
infra/otel-collector.yml Normal file
View File

@@ -0,0 +1,35 @@
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
processors:
batch:
timeout: 1s
send_batch_size: 1024
exporters:
otlp/jaeger:
endpoint: jaeger:4317
tls:
insecure: true
debug:
verbosity: basic
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [otlp/jaeger, debug]
metrics:
receivers: [otlp]
processors: [batch]
exporters: [debug]
logs:
receivers: [otlp]
processors: [batch]
exporters: [debug]