Skip to main content

kcode_kennedy_orchestration/
lib.rs

1#![forbid(unsafe_code)]
2
3mod prompts;
4mod services;
5mod worker;
6
7use std::sync::Arc;
8
9pub use kcode_kennedy_sessions::{
10    AgentMode, RuntimeModel, Service as SessionService, Session, TurnDeadline, TurnDeadlineKind,
11};
12pub use prompts::Manuals;
13pub use services::{Api, ApiError, LocalServices, data_url, telegram_caption_for};
14pub use worker::{Orchestrator, SessionRuntime, TurnCompletion, persist_record};
15
16#[derive(Clone, Debug)]
17pub struct Config {
18    pub user_root_node_id: String,
19    pub kennedy_root_node_id: String,
20    pub telegram_max_media_bytes: usize,
21    pub runtime_model: RuntimeModel,
22}
23
24pub fn build(config: Config, api: Api, sessions: SessionService) -> Arc<Orchestrator> {
25    Arc::new(Orchestrator::new(config, api, sessions))
26}
27
28pub async fn run(worker: Arc<Orchestrator>) -> anyhow::Result<()> {
29    worker.run().await
30}