feagi_api/v1/
runtime_dtos.rs

1// Copyright 2025 Neuraville Inc.
2// SPDX-License-Identifier: Apache-2.0
3
4// Runtime DTOs for V1 API
5//
6// These DTOs must match Python FastAPI response structures exactly.
7
8use serde::{Deserialize, Serialize};
9use utoipa::ToSchema;
10
11/// Runtime status response
12#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
13#[schema(example = json!({
14    "is_running": true,
15    "is_paused": false,
16    "frequency_hz": 30.0,
17    "burst_count": 12345,
18    "current_rate_hz": 29.8,
19    "last_burst_neuron_count": 45000,
20    "avg_burst_time_ms": 15.2
21}))]
22pub struct RuntimeStatusResponse {
23    /// Whether the burst engine is running
24    pub is_running: bool,
25
26    /// Whether the burst engine is paused
27    pub is_paused: bool,
28
29    /// Current burst frequency (Hz)
30    pub frequency_hz: f64,
31
32    /// Total burst count since start
33    pub burst_count: u64,
34
35    /// Current burst rate (bursts per second, measured)
36    pub current_rate_hz: f64,
37
38    /// Total neurons fired in last burst
39    pub last_burst_neuron_count: usize,
40
41    /// Average processing time per burst (milliseconds)
42    pub avg_burst_time_ms: f64,
43}
44
45/// Set frequency request
46#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
47pub struct SetFrequencyRequest {
48    /// New burst frequency in Hz
49    pub frequency_hz: f64,
50}
51
52/// Burst count response
53#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
54pub struct BurstCountResponse {
55    /// Total burst count
56    pub burst_count: u64,
57}