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
85
86
87
88
89
90
91
92
93
94
95
//! Canonical skill-name constants for CADMAS-CTX delegation hooks.
//!
//! ## Why a dedicated module
//!
//! Each routing surface in codetether — provider failover, swarm
//! dispatch, ralph handoff, autochat persona relay, RLM compaction
//! model — wants to key its per-(agent, skill, bucket) Beta
//! posteriors against a stable `skill` string. Spelling drift across
//! call sites ("model_call" vs "router" vs "provider_call") would
//! silently fragment posteriors and starve the LCB score of
//! evidence.
//!
//! This module centralises the catalogue. Every site that calls
//! [`DelegationState::update`] or [`DelegationState::score`] **must**
//! pass one of these constants as the `skill` argument.
//!
//! ## Stable shape
//!
//! * Names are lowercase `snake_case`.
//! * Never renamed — adding a new surface gets a new constant; old
//! ones stay so existing sidecar data remains readable.
//! * Documented alongside the codetether surface they key.
//!
//! [`DelegationState::update`]: crate::session::delegation::DelegationState::update
//! [`DelegationState::score`]: crate::session::delegation::DelegationState::score
//!
//! ## Examples
//!
//! ```rust
//! use codetether_agent::session::delegation_skills;
//!
//! assert_eq!(delegation_skills::MODEL_CALL, "model_call");
//! assert!(delegation_skills::ALL.contains(&"swarm_dispatch"));
//! ```
/// Skill for provider-failover routing in
/// [`choose_router_target_bandit`](crate::session::helper::router::choose_router_target_bandit).
pub const MODEL_CALL: &str = "model_call";
/// Skill for RLM compaction model selection in
/// [`resolve_rlm_model_bandit`](crate::session::helper::compression::resolve_rlm_model_bandit).
pub const RLM_COMPACT: &str = "rlm_compact";
/// Skill for swarm-executor dispatch
/// (`src/swarm/orchestrator.rs` — Phase C step 28).
pub const SWARM_DISPATCH: &str = "swarm_dispatch";
/// Skill for ralph-loop persona handoff
/// (`src/ralph/ralph_loop.rs` — Phase C step 29).
pub const RALPH_HANDOFF: &str = "ralph_handoff";
/// Skill for TUI autochat next-persona selection
/// (`src/tui/app/autochat/` — Phase C step 31).
pub const AUTOCHAT_PERSONA: &str = "autochat_persona";
/// Complete list of registered skill names.
///
/// New surfaces go here *and* get their own constant so grep-ability
/// across the codebase survives refactors.
pub const ALL: & = &;