- Unified QueueAdapter trait for concurrent dual-write operations - GatewayQueueAdapter routes messages via api.riotpiao.com with X-Service: sqs header - TokenProvider abstraction: StaticTokenProvider + AuthentikTokenProvider - JWT bearer token support (from Authentik OAuth2) - InMemoryQueueAdapter for testing - Base64 encoding/decoding for SQS message bodies - HTTP/REST integration (no direct gRPC complexity) - 8 unit tests + comprehensive documentation - Supports long-polling (ReceiveMessage), visibility timeout, DLQ Uses standard SQS API patterns: - SendMessage: Queue chunk for dual-write processing - ReceiveMessage: Long-poll up to 10 messages, 20s wait - DeleteMessage: Acknowledge on success - ChangeMessageVisibility: Retry on failure - SendToDLQ: After max retries Files: - crates/mem-cli/src/queue_adapter.rs (310 LOC) - crates/mem-cli/src/gateway_queue_adapter.rs (530 LOC) - tests/it_gateway_queue_adapter.rs (110 LOC) - docs/M8.2-GATEWAY_QUEUE_ADAPTER.md (400 LOC)
43 lines
1.1 KiB
TOML
43 lines
1.1 KiB
TOML
[package]
|
|
name = "mem-cli"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
|
|
[lib]
|
|
name = "mem_cli"
|
|
path = "src/lib.rs"
|
|
|
|
[[bin]]
|
|
name = "mem"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
mem-core = { path = "../mem-core" }
|
|
mem-chunk = { path = "../mem-chunk" }
|
|
mem-llm = { path = "../mem-llm" }
|
|
mem-ingest = { path = "../mem-ingest" }
|
|
mem-store = { path = "../mem-store" }
|
|
tokio = { workspace = true }
|
|
futures = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
serde_yaml = { workspace = true }
|
|
anyhow = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
clap = { workspace = true }
|
|
tracing = { workspace = true }
|
|
tracing-subscriber = { workspace = true }
|
|
time = { workspace = true }
|
|
actix-web = { workspace = true }
|
|
actix-rt = { workspace = true }
|
|
uuid = { workspace = true }
|
|
chrono = { workspace = true }
|
|
sqlx = { workspace = true }
|
|
pgvector = { workspace = true }
|
|
base64 = { workspace = true }
|
|
sha2 = { workspace = true }
|
|
jsonwebtoken = { workspace = true }
|
|
reqwest = { workspace = true }
|
|
async-trait = { workspace = true }
|
|
urlencoding = { workspace = true }
|