Skip to main content

wist_shared/
paths.rs

1//! Shared filesystem path helpers.
2
3pub const AGENTD_CONFIG_FILE: &str = "agentd.toml";
4pub const LEGACY_AGENT_CONFIG_FILE: &str = "agent.toml";
5pub const STATE_DIR: &str = "state";
6pub const RUN_DIR: &str = "run";
7pub const LOG_DIR: &str = "log";
8pub const LOG_INPUTS_DIR: &str = "state/logs/file_inputs";
9pub const ACTIONS_DIR: &str = "actions";
10pub const AGENT_RUNTIME_FILE: &str = "agent_runtime.json";
11pub const EXECUTION_QUEUE_FILE: &str = "execution_queue.json";
12pub const WORKDIR_PLAN_FILE: &str = "plan.json";
13pub const WORKDIR_RUNTIME_FILE: &str = "runtime.json";
14pub const WORKDIR_STATE_FILE: &str = "state.json";
15pub const WORKDIR_RESULT_FILE: &str = "result.json";
16pub const REPORT_ENVELOPE_SUFFIX: &str = ".report.json";
17
18#[cfg(test)]
19mod tests {
20    use super::*;
21
22    #[test]
23    fn paths_are_non_empty_and_internally_consistent() {
24        for constant in [
25            AGENTD_CONFIG_FILE,
26            LEGACY_AGENT_CONFIG_FILE,
27            STATE_DIR,
28            RUN_DIR,
29            LOG_DIR,
30            LOG_INPUTS_DIR,
31            ACTIONS_DIR,
32            AGENT_RUNTIME_FILE,
33            EXECUTION_QUEUE_FILE,
34            WORKDIR_PLAN_FILE,
35            WORKDIR_RUNTIME_FILE,
36            WORKDIR_STATE_FILE,
37            WORKDIR_RESULT_FILE,
38            REPORT_ENVELOPE_SUFFIX,
39        ] {
40            assert!(!constant.is_empty(), "常量不应为空: {constant:?}");
41        }
42        // 新旧配置文件名必须不同,否则回退逻辑会自相矛盾。
43        assert_ne!(AGENTD_CONFIG_FILE, LEGACY_AGENT_CONFIG_FILE);
44        // 日志输入目录落在 state 目录下;报告信封以点开头(扩展名后缀)。
45        assert!(LOG_INPUTS_DIR.starts_with(STATE_DIR));
46        assert!(REPORT_ENVELOPE_SUFFIX.starts_with('.'));
47    }
48}