gate4agent_types/
readiness.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize, Deserialize)]
4#[serde(rename_all = "kebab-case")]
5pub enum DraftReadySignal {
6 BracketedPaste,
7 ClaudeComposerPrompt,
8 QuietAfterBracketedPaste,
9 CodexComposerPrompt,
10 CursorAfterBracketedPaste,
11}
12
13#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
14pub struct AgentReadinessSpec {
15 pub timeout_ms: u64,
16 pub poll_interval_ms: u64,
17 pub wrapper_child_fallback_after_polls: Option<u32>,
18 pub allow_title_idle: bool,
19 #[serde(default)]
22 pub followup_requires_terminal: bool,
23 pub draft_signal: DraftReadySignal,
24 pub draft_quiet_ms: u64,
25}
26
27impl Default for AgentReadinessSpec {
28 fn default() -> Self {
29 Self {
30 timeout_ms: 5_000,
31 poll_interval_ms: 150,
32 wrapper_child_fallback_after_polls: Some(4),
33 allow_title_idle: true,
34 followup_requires_terminal: false,
35 draft_signal: DraftReadySignal::QuietAfterBracketedPaste,
36 draft_quiet_ms: 1_500,
37 }
38 }
39}