Type Reference¶
Complete reference for all public types in the Acteon workspace.
Core Types (acteon-core)¶
Action¶
The primary request type flowing through the gateway.
pub struct Action {
pub id: ActionId,
pub namespace: Namespace,
pub tenant: TenantId,
pub provider: ProviderId,
pub action_type: String,
pub payload: serde_json::Value,
pub metadata: ActionMetadata,
pub dedup_key: Option<String>,
pub status: Option<String>,
pub fingerprint: Option<String>,
pub starts_at: Option<DateTime<Utc>>,
pub ends_at: Option<DateTime<Utc>>,
pub created_at: DateTime<Utc>,
}
Builder methods:
| Method | Description |
|---|---|
Action::new(ns, tenant, provider, type, payload) | Create with required fields |
.with_dedup_key(key) | Set deduplication key |
.with_metadata(metadata) | Set metadata labels |
.with_status(status) | Set state machine state |
.with_fingerprint(fp) | Set event correlation fingerprint |
.with_starts_at(ts) | Set event lifecycle start |
.with_ends_at(ts) | Set event lifecycle end |
ActionOutcome¶
Result of action dispatch:
pub enum ActionOutcome {
Executed(ProviderResponse),
Deduplicated,
Suppressed { rule: String },
Rerouted { original_provider: String, new_provider: String, response: ProviderResponse },
Throttled { retry_after: Duration },
Failed(ActionError),
Grouped { group_id: String, group_size: usize, notify_at: DateTime<Utc> },
StateChanged { fingerprint: String, previous_state: String, new_state: String, notify: bool },
PendingApproval { approval_id: String, expires_at: DateTime<Utc>, approve_url: String, reject_url: String, notification_sent: bool },
ChainStarted { chain_id: String, chain_name: String, total_steps: usize, first_step: String },
DryRun { verdict: String, matched_rule: Option<String>, would_be_provider: String },
CircuitOpen { provider: String, fallback_chain: Vec<String> },
}
ProviderResponse¶
pub struct ProviderResponse {
pub status: ResponseStatus, // Success | Failure | Partial
pub body: serde_json::Value,
pub headers: HashMap<String, String>,
}
ActionMetadata¶
ActionContext¶
pub struct ActionContext {
pub action: Action,
pub environment: HashMap<String, String>,
pub timestamp: DateTime<Utc>,
}
ActionKey¶
pub struct ActionKey {
pub namespace: Namespace,
pub tenant: TenantId,
pub action_id: ActionId,
pub discriminator: Option<String>,
}
Canonical form: namespace:tenant:action_id[:discriminator]
Identity Newtypes¶
| Type | Wraps | Description |
|---|---|---|
Namespace | String | Logical namespace |
TenantId | String | Tenant identifier |
ActionId | String | Action UUID |
ProviderId | String | Provider name |
All support: new(), as_str(), Deref, Display, From<String>, From<&str>
State Machine Types¶
StateMachineConfig¶
pub struct StateMachineConfig {
pub name: String,
pub initial_state: String,
pub states: Vec<String>,
pub transitions: Vec<TransitionConfig>,
pub timeouts: Vec<TimeoutConfig>,
}
TransitionConfig¶
pub struct TransitionConfig {
pub from: String,
pub to: String,
pub on_transition: TransitionEffects,
}
TimeoutConfig¶
pub struct TimeoutConfig {
pub in_state: String,
pub after_seconds: u64,
pub transition_to: String,
}
Event Grouping Types¶
EventGroup¶
pub struct EventGroup {
pub group_id: String,
pub group_key: String,
pub labels: HashMap<String, String>,
pub events: Vec<GroupedEvent>,
pub notify_at: DateTime<Utc>,
pub state: GroupState, // Pending | Notified | Resolved
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
GroupedEvent¶
pub struct GroupedEvent {
pub action_id: ActionId,
pub fingerprint: Option<String>,
pub status: Option<String>,
pub payload: serde_json::Value,
pub received_at: DateTime<Utc>,
}
Chain Types¶
ChainConfig¶
pub struct ChainConfig {
pub name: String,
pub steps: Vec<ChainStepConfig>,
pub on_failure: ChainFailurePolicy, // Abort | AbortNoDlq
pub timeout_seconds: Option<u64>,
pub on_cancel: Option<ChainNotificationTarget>,
}
ChainStepConfig¶
pub struct ChainStepConfig {
pub name: String,
pub provider: String,
pub action_type: String,
pub payload_template: serde_json::Value,
pub on_failure: Option<StepFailurePolicy>, // Abort | Skip | Dlq
pub delay_seconds: Option<u64>,
}
Rule Types (acteon-rules)¶
Rule¶
pub struct Rule {
pub name: String,
pub priority: i32,
pub condition: Expr,
pub action: RuleAction,
}
RuleAction¶
pub enum RuleAction {
Suppress,
Deduplicate { ttl_seconds: u64 },
Throttle { max_count: u64, window_seconds: u64, message: Option<String> },
Reroute { target_provider: String },
Modify { changes: serde_json::Value },
Group { group_by: Vec<String>, group_wait_seconds: u64, group_interval_seconds: Option<u64>, max_group_size: Option<usize> },
StateMachine { state_machine_name: String, fingerprint_fields: Vec<String> },
RequireApproval { message: String, notification_targets: Vec<...>, ttl_seconds: Option<u64>, auto_approve_conditions: Vec<...> },
Chain { chain_name: String },
LlmGuardrail { evaluator_name: String, block_on_flag: Option<bool>, send_to: Option<String> },
}
Expr (Expression IR)¶
pub enum Expr {
Literal(bool),
FieldEq { field: String, value: String },
FieldContains { field: String, value: String },
FieldStartsWith { field: String, prefix: String },
FieldEndsWith { field: String, suffix: String },
FieldRegex { field: String, pattern: String },
FieldGt { field: String, value: f64 },
FieldGte { field: String, value: f64 },
FieldLt { field: String, value: f64 },
FieldLte { field: String, value: f64 },
And(Vec<Expr>),
Or(Vec<Expr>),
Not(Box<Expr>),
Call { name: String, args: Vec<String> },
}
Executor Types¶
ExecutorConfig¶
pub struct ExecutorConfig {
pub max_retries: u32, // Default: 3
pub retry_strategy: RetryStrategy,
pub execution_timeout: Duration, // Default: 30s
pub max_concurrent: usize, // Default: 10
}
RetryStrategy¶
pub enum RetryStrategy {
ExponentialBackoff { initial_delay: Duration, max_delay: Duration },
Constant { delay: Duration },
Linear { initial_delay: Duration, increment: Duration },
}
Audit Types¶
AuditRecord¶
pub struct AuditRecord {
pub id: String,
pub action_id: String,
pub chain_id: Option<String>,
pub namespace: String,
pub tenant: String,
pub provider: String,
pub action_type: String,
pub verdict: String,
pub matched_rule: Option<String>,
pub outcome: String,
pub action_payload: Option<Value>,
pub verdict_details: Value,
pub outcome_details: Value,
pub metadata: Value,
pub dispatched_at: DateTime<Utc>,
pub completed_at: DateTime<Utc>,
pub duration_ms: u64,
pub expires_at: Option<DateTime<Utc>>,
pub caller_id: Option<String>,
pub auth_method: Option<String>,
}
AuditQuery¶
pub struct AuditQuery {
pub namespace: Option<String>,
pub tenant: Option<String>,
pub provider: Option<String>,
pub action_type: Option<String>,
pub outcome: Option<String>,
pub verdict: Option<String>,
pub matched_rule: Option<String>,
pub caller_id: Option<String>,
pub chain_id: Option<String>,
pub from: Option<DateTime<Utc>>,
pub to: Option<DateTime<Utc>>,
pub limit: Option<u32>, // Default: 50, Max: 1000
pub offset: Option<u32>,
}
LLM Types¶
LlmGuardrailResponse¶
pub struct LlmGuardrailResponse {
pub allowed: bool,
pub reasoning: String,
pub confidence: f32, // 0.0 to 1.0
}
Utility Functions¶
compute_fingerprint¶
Computes a SHA-256 fingerprint from specified action fields. Supports paths: namespace, tenant, provider, action_type, id, status, metadata.key, payload.field.nested.