# Story 5.6: Secret Store Integration

## Metadata
- **Story ID**: 5.6
- **Title**: Secret Store Integration
- **Epic**: 5 - Infrastructure Adapters
- **Status**: Pending
- **Priority**: Medium
- **Estimated Time**: 4-5 hours
- **Dependencies**: 0.2

## Goal
Implement secret store integration supporting HashiCorp Vault and AWS Secrets Manager for secure secret management.

## Description
This story implements secret store adapters that can retrieve secrets from external secret management systems, with integration into the configuration system.

## Deliverables

### 1. Secret Store Interface (`pkg/infra/secret/secret.go`)
- `SecretStore` interface with:
  - `GetSecret(ctx context.Context, key string) (string, error)`
  - `GetSecrets(ctx context.Context, prefix string) (map[string]string, error)`

### 2. Vault Implementation (`internal/infra/secret/vault_store.go`)
- HashiCorp Vault client
- Support KV v2 secrets
- Authentication (token, app role)
- Secret caching

### 3. AWS Secrets Manager (`internal/infra/secret/aws_secrets.go`)
- AWS Secrets Manager client
- Secret retrieval
- Secret caching

### 4. Configuration Integration
- Integrate with config loader
- Overlay secrets on top of file/env config
- Load secrets lazily (cache)
- Secret key resolution

### 5. Configuration
- Secret store config in `config/default.yaml`:
  - Provider (vault, aws, none)
  - Connection settings
  - Cache settings

### 6. DI Integration
- Provider function for SecretStore
- Register in DI container (optional, via config)

## Acceptance Criteria
- [ ] Secret store interface is defined
- [ ] Vault implementation works
- [ ] AWS Secrets Manager implementation works
- [ ] Secrets are loaded into config
- [ ] Secret caching works
- [ ] Configuration integration works
- [ ] Secret store is optional (can be disabled)

## Files to Create/Modify
- `pkg/infra/secret/secret.go` - Secret store interface
- `internal/infra/secret/vault_store.go` - Vault implementation
- `internal/infra/secret/aws_secrets.go` - AWS implementation
- `internal/config/loader.go` - Integrate secret loading
- `internal/di/providers.go` - Add secret store provider
- `config/default.yaml` - Add secret store config

