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
/*
* Copyright (c) 2024-Present, Jeremy Plichta
* Licensed under the MIT License
*/
//! Mission mode: autonomous multi-issue execution.
//!
//! This module provides durable, dependency-aware orchestration of multiple
//! GitHub issues with automatic PR/CI monitoring.
//!
//! # Core Types
//!
//! - [`MissionRun`] - Top-level orchestration record
//! - [`WorkItem`] - Individual work unit in the DAG
//! - [`WatchItem`] - PR/CI monitoring task
//!
//! # Compiler
//!
//! - [`WorkGraphCompiler`] - Transforms issues/docs into a dependency-aware DAG
//! - [`WorkGraph`] - Compiled work graph with topological ordering
//!
//! # Scheduler
//!
//! - [`MissionScheduler`] - Periodic tick-based work orchestration
//! - [`SchedulerConfig`] - Scheduler configuration (tick interval, max parallel, etc.)
//! - [`SchedulerTickResult`] - Result of a scheduler tick
//!
//! # Storage
//!
//! - [`MissionStorage`] - Redis persistence layer
//!
//! # Example
//!
//! ```no_run
//! use tinytown::mission::{MissionRun, ObjectiveRef, MissionStorage, WorkGraphCompiler};
//!
//! # async fn example() -> tinytown::Result<()> {
//! // Create a mission with objectives
//! let mission = MissionRun::new(vec![
//! ObjectiveRef::Issue {
//! owner: "redis-field-engineering".into(),
//! repo: "tinytown".into(),
//! number: 23,
//! },
//! ]);
//!
//! // Compile work graph from parsed issues
//! let compiler = WorkGraphCompiler::new();
//! // let graph = compiler.compile(mission.id, parsed_issues, None)?;
//!
//! // Save to Redis via storage
//! // let storage = MissionStorage::new(conn, "my-town");
//! // storage.save_mission(&mission).await?;
//! # Ok(())
//! # }
//! ```
// Re-export commonly used types
pub use ;
pub use ;
pub use ;
pub use ;
pub use MissionStorage;
pub use ;
pub use ;