summaryrefslogtreecommitdiff
path: root/makima/src/server/mod.rs
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-02-09 02:35:36 +0000
committersoryu <soryu@soryu.co>2026-02-09 02:35:36 +0000
commita2646a828febbdac798a206655a15eae7e463bca (patch)
tree7736396d87f6bf4dd50a2d3e91525534a36adf00 /makima/src/server/mod.rs
parent9c92d9235a0d1258fff9f7e625b0463c4952c45f (diff)
downloadsoryu-a2646a828febbdac798a206655a15eae7e463bca.tar.gz
soryu-a2646a828febbdac798a206655a15eae7e463bca.zip
Add directive init
Diffstat (limited to 'makima/src/server/mod.rs')
-rw-r--r--makima/src/server/mod.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/makima/src/server/mod.rs b/makima/src/server/mod.rs
index 7a1391b..4cb4296 100644
--- a/makima/src/server/mod.rs
+++ b/makima/src/server/mod.rs
@@ -481,6 +481,25 @@ pub async fn run_server(state: SharedState, addr: &str) -> anyhow::Result<()> {
"Retry orchestrator started (interval: {}s)",
RETRY_ORCHESTRATOR_INTERVAL_SECS
);
+
+ // Spawn directive orchestrator - automates directive lifecycle
+ let directive_pool = pool.clone();
+ let directive_state = state.clone();
+ tokio::spawn(async move {
+ let mut orch = crate::orchestration::directive::DirectiveOrchestrator::new(
+ directive_pool,
+ directive_state,
+ );
+ let mut interval = tokio::time::interval(std::time::Duration::from_secs(15));
+ loop {
+ interval.tick().await;
+ if let Err(e) = orch.tick().await {
+ tracing::warn!(error = %e, "Directive orchestrator tick failed");
+ }
+ }
+ });
+
+ tracing::info!("Directive orchestrator started (interval: 15s)");
}
let app = make_router(state);