1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//! DLQ inspection mode — viewer for the worker tier's main + dead-letter
//! SQS queues with peek / delete / purge / resend flows.
//!
//! Type cluster lives here; the methods that *use* these types
//! (`spawn_dlq_fetch`, `spawn_dlq_delete_one`, `spawn_dlq_purge`,
//! `spawn_dlq_resend_selected`, `handle_dlq_key`, `open_dlq`, `close_dlq`)
//! still sit on [`crate::app::App`] because every step reaches into the
//! shared AwsClient + status toasts + audit log. Same split rationale as
//! `mode_action.rs` — types first, App-coupled handlers later if the
//! coupling can be cleanly broken.
//!
//! Types are re-exported from `crate::app` so consumers of
//! `crate::app::DlqState` / `crate::app::QueueView` keep working without
//! a sweep across the call sites.
use ListState;
use crateQueueMessage;
/// One in-flight DLQ session. Owned by `App.dlq` while the operator is
/// in the queue viewer (entered from Detail's Queue tab via `d`).
/// Cleared on `Esc` / `q` / context switch.
/// Which queue the operator is currently inspecting. The DLQ viewer
/// surfaces both the dead-letter queue and the main worker queue via the
/// same UI; `m` toggles between them. The variant gates destructive
/// operations: resend (DLQ → main) and purge are both disabled in
/// `Main` view because purging a working queue is too dangerous.