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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
// Copyright (c) 2026 vectorless developers
// SPDX-License-Identifier: Apache-2.0
//! Streaming retrieval events.
//!
//! When `RetrieveOptions::streaming` is enabled, retrieval emits
//! [`RetrieveEvent`]s incrementally as the pipeline progresses through
//! its stages (Analyze → Plan → Search → Evaluate).
//!
//! # Example
//!
//! ```rust,ignore
//! let options = RetrieveOptions::new().with_streaming(true);
//! let rx = client.query_stream(&tree, "query", &options).await?;
//!
//! while let Some(event) = rx.recv().await {
//! match event {
//! RetrieveEvent::Started { query, .. } => println!("Started: {query}"),
//! RetrieveEvent::StageCompleted { stage, .. } => println!("Done: {stage}"),
//! RetrieveEvent::Completed { response } => {
//! println!("Confidence: {}", response.confidence);
//! break;
//! }
//! RetrieveEvent::Error { message } => {
//! eprintln!("Error: {message}");
//! break;
//! }
//! _ => {}
//! }
//! }
//! ```
use mpsc;
use ;
/// Events emitted during streaming retrieval.
///
/// Each event represents a meaningful milestone in the retrieval pipeline.
/// The stream always terminates with either [`Completed`](RetrieveEvent::Completed)
/// or [`Error`](RetrieveEvent::Error).
/// Sender half for streaming retrieval events.
pub type RetrieveEventSender = Sender;
/// Receiver half for streaming retrieval events.
pub type RetrieveEventReceiver = Receiver;
/// Create a bounded channel for streaming retrieval events.
///
/// The bound defaults to 64 events. The sender will apply backpressure
/// when the receiver cannot keep up, preventing unbounded memory growth.
pub
/// Default channel bound for streaming events.
pub const DEFAULT_STREAM_BOUND: usize = 64;