From ec21d83415e63e7835ee797b0ed0d84eee67f0be Mon Sep 17 00:00:00 2001 From: Zyy Date: Tue, 29 Sep 2026 18:42:28 +0800 Subject: [PATCH] refactor(backend): flatten leaf modules Co-authored-by: Codex --- backend/apps/gateway/tests/architecture.rs | 27 ++++++++++++++++++- .../{websocket/mod.rs => websocket.rs} | 0 .../{middleware/mod.rs => middleware.rs} | 0 .../crates/gateway-api/tests/architecture.rs | 8 +++--- .../{websocket/mod.rs => websocket.rs} | 0 .../{middleware/mod.rs => middleware.rs} | 0 .../http/{upgrade/mod.rs => upgrade.rs} | 0 .../middleware/{service/mod.rs => service.rs} | 0 .../{websocket/mod.rs => websocket.rs} | 0 .../src/{operation/mod.rs => operation.rs} | 0 .../mod.rs => provider_ports.rs} | 0 .../gateway-core/src/{task/mod.rs => task.rs} | 0 .../tests/{operation/mod.rs => operation.rs} | 0 .../mod.rs => provider_ports.rs} | 0 .../tests/{task/mod.rs => task.rs} | 0 .../src/{pricing/mod.rs => pricing.rs} | 0 .../src/{workers/mod.rs => workers.rs} | 0 .../tests/{pricing/mod.rs => pricing.rs} | 0 .../tests/{workers/mod.rs => workers.rs} | 0 .../adapter/policy/{http/mod.rs => http.rs} | 0 .../policy/{service/mod.rs => service.rs} | 0 .../policy/{websocket/mod.rs => websocket.rs} | 0 .../src/callback/{facts/mod.rs => facts.rs} | 0 .../{websocket/mod.rs => websocket.rs} | 0 .../callback/{services/mod.rs => services.rs} | 0 .../mod.rs => websocket_middleware.rs} | 0 .../call/middleware/{http/mod.rs => http.rs} | 0 .../{websocket/mod.rs => websocket.rs} | 0 .../src/call/model/{facts/mod.rs => facts.rs} | 0 .../sdk/src/call/{policy/mod.rs => policy.rs} | 0 .../middleware/{call/mod.rs => call.rs} | 0 .../middleware/{http/mod.rs => http.rs} | 0 .../middleware/{service/mod.rs => service.rs} | 0 .../{websocket/mod.rs => websocket.rs} | 0 .../tests/call/{policy/mod.rs => policy.rs} | 0 35 files changed, 30 insertions(+), 5 deletions(-) rename backend/crates/gateway-api/src/middleware/{websocket/mod.rs => websocket.rs} (100%) rename backend/crates/gateway-api/src/openai/responses/websocket/connection/{middleware/mod.rs => middleware.rs} (100%) rename backend/crates/gateway-api/tests/middleware/{websocket/mod.rs => websocket.rs} (100%) rename backend/crates/gateway-api/tests/openai/responses/websocket/connection/{middleware/mod.rs => middleware.rs} (100%) rename backend/crates/gateway-core/src/middleware/http/{upgrade/mod.rs => upgrade.rs} (100%) rename backend/crates/gateway-core/src/middleware/{service/mod.rs => service.rs} (100%) rename backend/crates/gateway-core/src/middleware/{websocket/mod.rs => websocket.rs} (100%) rename backend/crates/gateway-core/src/{operation/mod.rs => operation.rs} (100%) rename backend/crates/gateway-core/src/{provider_ports/mod.rs => provider_ports.rs} (100%) rename backend/crates/gateway-core/src/{task/mod.rs => task.rs} (100%) rename backend/crates/gateway-core/tests/{operation/mod.rs => operation.rs} (100%) rename backend/crates/gateway-core/tests/{provider_ports/mod.rs => provider_ports.rs} (100%) rename backend/crates/gateway-core/tests/{task/mod.rs => task.rs} (100%) rename backend/crates/gateway-host/src/{pricing/mod.rs => pricing.rs} (100%) rename backend/crates/gateway-host/src/{workers/mod.rs => workers.rs} (100%) rename backend/crates/gateway-host/tests/{pricing/mod.rs => pricing.rs} (100%) rename backend/crates/gateway-host/tests/{workers/mod.rs => workers.rs} (100%) rename backend/crates/gateway-plugin/runtime/src/adapter/policy/{http/mod.rs => http.rs} (100%) rename backend/crates/gateway-plugin/runtime/src/adapter/policy/{service/mod.rs => service.rs} (100%) rename backend/crates/gateway-plugin/runtime/src/adapter/policy/{websocket/mod.rs => websocket.rs} (100%) rename backend/crates/gateway-plugin/runtime/src/callback/{facts/mod.rs => facts.rs} (100%) rename backend/crates/gateway-plugin/runtime/src/callback/http_middleware/{websocket/mod.rs => websocket.rs} (100%) rename backend/crates/gateway-plugin/runtime/src/callback/{services/mod.rs => services.rs} (100%) rename backend/crates/gateway-plugin/runtime/src/callback/{websocket_middleware/mod.rs => websocket_middleware.rs} (100%) rename backend/crates/gateway-plugin/sdk/src/call/middleware/{http/mod.rs => http.rs} (100%) rename backend/crates/gateway-plugin/sdk/src/call/middleware/{websocket/mod.rs => websocket.rs} (100%) rename backend/crates/gateway-plugin/sdk/src/call/model/{facts/mod.rs => facts.rs} (100%) rename backend/crates/gateway-plugin/sdk/src/call/{policy/mod.rs => policy.rs} (100%) rename backend/crates/gateway-plugin/sdk/src/client/middleware/{call/mod.rs => call.rs} (100%) rename backend/crates/gateway-plugin/sdk/src/client/middleware/{http/mod.rs => http.rs} (100%) rename backend/crates/gateway-plugin/sdk/src/client/middleware/{service/mod.rs => service.rs} (100%) rename backend/crates/gateway-plugin/sdk/src/client/middleware/{websocket/mod.rs => websocket.rs} (100%) rename backend/crates/gateway-plugin/sdk/tests/call/{policy/mod.rs => policy.rs} (100%) diff --git a/backend/apps/gateway/tests/architecture.rs b/backend/apps/gateway/tests/architecture.rs index c5cca2540..b2361a325 100644 --- a/backend/apps/gateway/tests/architecture.rs +++ b/backend/apps/gateway/tests/architecture.rs @@ -383,7 +383,9 @@ fn workspace_modules_follow_conventional_file_layout() { let targets = test_source_roots(); for member in WORKSPACE_MEMBERS { let member_root = backend_root().join(member); - assert_module_tree(&member_root.join("src"), &["lib.rs", "main.rs"]); + let src = member_root.join("src"); + assert_module_tree(&src, &["lib.rs", "main.rs"]); + assert_directory_modules_have_children(&src, &["lib.rs", "main.rs"]); let tests = member_root.join("tests"); if tests.is_dir() { @@ -396,6 +398,29 @@ fn workspace_modules_follow_conventional_file_layout() { } } +fn assert_directory_modules_have_children(root: &Path, crate_roots: &[&str]) { + let files = super::rust_files(root); + for relative in &files { + if crate_roots + .iter() + .any(|candidate| relative == Path::new(candidate)) + || relative.file_name().and_then(|value| value.to_str()) != Some("mod.rs") + { + continue; + } + + let directory = relative.parent().expect("mod.rs parent"); + assert!( + files + .iter() + .any(|candidate| candidate != relative && candidate.starts_with(directory)), + "{} is a leaf module and must use {}", + root.join(relative).display(), + root.join(directory).with_extension("rs").display(), + ); + } +} + #[derive(Debug, Clone, Copy, PartialEq, Eq)] enum ModuleLayout { File, diff --git a/backend/crates/gateway-api/src/middleware/websocket/mod.rs b/backend/crates/gateway-api/src/middleware/websocket.rs similarity index 100% rename from backend/crates/gateway-api/src/middleware/websocket/mod.rs rename to backend/crates/gateway-api/src/middleware/websocket.rs diff --git a/backend/crates/gateway-api/src/openai/responses/websocket/connection/middleware/mod.rs b/backend/crates/gateway-api/src/openai/responses/websocket/connection/middleware.rs similarity index 100% rename from backend/crates/gateway-api/src/openai/responses/websocket/connection/middleware/mod.rs rename to backend/crates/gateway-api/src/openai/responses/websocket/connection/middleware.rs diff --git a/backend/crates/gateway-api/tests/architecture.rs b/backend/crates/gateway-api/tests/architecture.rs index 10be61f1b..4f963dfe9 100644 --- a/backend/crates/gateway-api/tests/architecture.rs +++ b/backend/crates/gateway-api/tests/architecture.rs @@ -68,7 +68,7 @@ fn source_tree_should_match_frozen_machine_manifest() { "src/lib.rs", "src/middleware/headers.rs", "src/middleware/mod.rs", - "src/middleware/websocket/mod.rs", + "src/middleware/websocket.rs", "src/openai/middleware/http.rs", "src/openai/middleware/mod.rs", "src/openai/middleware/request.rs", @@ -87,7 +87,7 @@ fn source_tree_should_match_frozen_machine_manifest() { "src/openai/responses/response.rs", "src/openai/responses/validation.rs", "src/openai/responses/websocket/connection/mod.rs", - "src/openai/responses/websocket/connection/middleware/mod.rs", + "src/openai/responses/websocket/connection/middleware.rs", "src/openai/responses/websocket/forward.rs", "src/openai/responses/websocket/mod.rs", "src/openai/responses/websocket/protocol.rs", @@ -136,7 +136,7 @@ fn test_tree_should_match_frozen_rust_mirror() { "tests/key_usage/fixtures.rs", "tests/main.rs", "tests/middleware/mod.rs", - "tests/middleware/websocket/mod.rs", + "tests/middleware/websocket.rs", "tests/openai/middleware/mod.rs", "tests/openai/auth.rs", "tests/openai/error.rs", @@ -148,7 +148,7 @@ fn test_tree_should_match_frozen_rust_mirror() { "tests/openai/responses/mod.rs", "tests/openai/responses/request.rs", "tests/openai/responses/websocket/connection/mod.rs", - "tests/openai/responses/websocket/connection/middleware/mod.rs", + "tests/openai/responses/websocket/connection/middleware.rs", "tests/openai/responses/websocket/forward.rs", "tests/openai/responses/websocket/interrupt.rs", "tests/openai/responses/websocket/mod.rs", diff --git a/backend/crates/gateway-api/tests/middleware/websocket/mod.rs b/backend/crates/gateway-api/tests/middleware/websocket.rs similarity index 100% rename from backend/crates/gateway-api/tests/middleware/websocket/mod.rs rename to backend/crates/gateway-api/tests/middleware/websocket.rs diff --git a/backend/crates/gateway-api/tests/openai/responses/websocket/connection/middleware/mod.rs b/backend/crates/gateway-api/tests/openai/responses/websocket/connection/middleware.rs similarity index 100% rename from backend/crates/gateway-api/tests/openai/responses/websocket/connection/middleware/mod.rs rename to backend/crates/gateway-api/tests/openai/responses/websocket/connection/middleware.rs diff --git a/backend/crates/gateway-core/src/middleware/http/upgrade/mod.rs b/backend/crates/gateway-core/src/middleware/http/upgrade.rs similarity index 100% rename from backend/crates/gateway-core/src/middleware/http/upgrade/mod.rs rename to backend/crates/gateway-core/src/middleware/http/upgrade.rs diff --git a/backend/crates/gateway-core/src/middleware/service/mod.rs b/backend/crates/gateway-core/src/middleware/service.rs similarity index 100% rename from backend/crates/gateway-core/src/middleware/service/mod.rs rename to backend/crates/gateway-core/src/middleware/service.rs diff --git a/backend/crates/gateway-core/src/middleware/websocket/mod.rs b/backend/crates/gateway-core/src/middleware/websocket.rs similarity index 100% rename from backend/crates/gateway-core/src/middleware/websocket/mod.rs rename to backend/crates/gateway-core/src/middleware/websocket.rs diff --git a/backend/crates/gateway-core/src/operation/mod.rs b/backend/crates/gateway-core/src/operation.rs similarity index 100% rename from backend/crates/gateway-core/src/operation/mod.rs rename to backend/crates/gateway-core/src/operation.rs diff --git a/backend/crates/gateway-core/src/provider_ports/mod.rs b/backend/crates/gateway-core/src/provider_ports.rs similarity index 100% rename from backend/crates/gateway-core/src/provider_ports/mod.rs rename to backend/crates/gateway-core/src/provider_ports.rs diff --git a/backend/crates/gateway-core/src/task/mod.rs b/backend/crates/gateway-core/src/task.rs similarity index 100% rename from backend/crates/gateway-core/src/task/mod.rs rename to backend/crates/gateway-core/src/task.rs diff --git a/backend/crates/gateway-core/tests/operation/mod.rs b/backend/crates/gateway-core/tests/operation.rs similarity index 100% rename from backend/crates/gateway-core/tests/operation/mod.rs rename to backend/crates/gateway-core/tests/operation.rs diff --git a/backend/crates/gateway-core/tests/provider_ports/mod.rs b/backend/crates/gateway-core/tests/provider_ports.rs similarity index 100% rename from backend/crates/gateway-core/tests/provider_ports/mod.rs rename to backend/crates/gateway-core/tests/provider_ports.rs diff --git a/backend/crates/gateway-core/tests/task/mod.rs b/backend/crates/gateway-core/tests/task.rs similarity index 100% rename from backend/crates/gateway-core/tests/task/mod.rs rename to backend/crates/gateway-core/tests/task.rs diff --git a/backend/crates/gateway-host/src/pricing/mod.rs b/backend/crates/gateway-host/src/pricing.rs similarity index 100% rename from backend/crates/gateway-host/src/pricing/mod.rs rename to backend/crates/gateway-host/src/pricing.rs diff --git a/backend/crates/gateway-host/src/workers/mod.rs b/backend/crates/gateway-host/src/workers.rs similarity index 100% rename from backend/crates/gateway-host/src/workers/mod.rs rename to backend/crates/gateway-host/src/workers.rs diff --git a/backend/crates/gateway-host/tests/pricing/mod.rs b/backend/crates/gateway-host/tests/pricing.rs similarity index 100% rename from backend/crates/gateway-host/tests/pricing/mod.rs rename to backend/crates/gateway-host/tests/pricing.rs diff --git a/backend/crates/gateway-host/tests/workers/mod.rs b/backend/crates/gateway-host/tests/workers.rs similarity index 100% rename from backend/crates/gateway-host/tests/workers/mod.rs rename to backend/crates/gateway-host/tests/workers.rs diff --git a/backend/crates/gateway-plugin/runtime/src/adapter/policy/http/mod.rs b/backend/crates/gateway-plugin/runtime/src/adapter/policy/http.rs similarity index 100% rename from backend/crates/gateway-plugin/runtime/src/adapter/policy/http/mod.rs rename to backend/crates/gateway-plugin/runtime/src/adapter/policy/http.rs diff --git a/backend/crates/gateway-plugin/runtime/src/adapter/policy/service/mod.rs b/backend/crates/gateway-plugin/runtime/src/adapter/policy/service.rs similarity index 100% rename from backend/crates/gateway-plugin/runtime/src/adapter/policy/service/mod.rs rename to backend/crates/gateway-plugin/runtime/src/adapter/policy/service.rs diff --git a/backend/crates/gateway-plugin/runtime/src/adapter/policy/websocket/mod.rs b/backend/crates/gateway-plugin/runtime/src/adapter/policy/websocket.rs similarity index 100% rename from backend/crates/gateway-plugin/runtime/src/adapter/policy/websocket/mod.rs rename to backend/crates/gateway-plugin/runtime/src/adapter/policy/websocket.rs diff --git a/backend/crates/gateway-plugin/runtime/src/callback/facts/mod.rs b/backend/crates/gateway-plugin/runtime/src/callback/facts.rs similarity index 100% rename from backend/crates/gateway-plugin/runtime/src/callback/facts/mod.rs rename to backend/crates/gateway-plugin/runtime/src/callback/facts.rs diff --git a/backend/crates/gateway-plugin/runtime/src/callback/http_middleware/websocket/mod.rs b/backend/crates/gateway-plugin/runtime/src/callback/http_middleware/websocket.rs similarity index 100% rename from backend/crates/gateway-plugin/runtime/src/callback/http_middleware/websocket/mod.rs rename to backend/crates/gateway-plugin/runtime/src/callback/http_middleware/websocket.rs diff --git a/backend/crates/gateway-plugin/runtime/src/callback/services/mod.rs b/backend/crates/gateway-plugin/runtime/src/callback/services.rs similarity index 100% rename from backend/crates/gateway-plugin/runtime/src/callback/services/mod.rs rename to backend/crates/gateway-plugin/runtime/src/callback/services.rs diff --git a/backend/crates/gateway-plugin/runtime/src/callback/websocket_middleware/mod.rs b/backend/crates/gateway-plugin/runtime/src/callback/websocket_middleware.rs similarity index 100% rename from backend/crates/gateway-plugin/runtime/src/callback/websocket_middleware/mod.rs rename to backend/crates/gateway-plugin/runtime/src/callback/websocket_middleware.rs diff --git a/backend/crates/gateway-plugin/sdk/src/call/middleware/http/mod.rs b/backend/crates/gateway-plugin/sdk/src/call/middleware/http.rs similarity index 100% rename from backend/crates/gateway-plugin/sdk/src/call/middleware/http/mod.rs rename to backend/crates/gateway-plugin/sdk/src/call/middleware/http.rs diff --git a/backend/crates/gateway-plugin/sdk/src/call/middleware/websocket/mod.rs b/backend/crates/gateway-plugin/sdk/src/call/middleware/websocket.rs similarity index 100% rename from backend/crates/gateway-plugin/sdk/src/call/middleware/websocket/mod.rs rename to backend/crates/gateway-plugin/sdk/src/call/middleware/websocket.rs diff --git a/backend/crates/gateway-plugin/sdk/src/call/model/facts/mod.rs b/backend/crates/gateway-plugin/sdk/src/call/model/facts.rs similarity index 100% rename from backend/crates/gateway-plugin/sdk/src/call/model/facts/mod.rs rename to backend/crates/gateway-plugin/sdk/src/call/model/facts.rs diff --git a/backend/crates/gateway-plugin/sdk/src/call/policy/mod.rs b/backend/crates/gateway-plugin/sdk/src/call/policy.rs similarity index 100% rename from backend/crates/gateway-plugin/sdk/src/call/policy/mod.rs rename to backend/crates/gateway-plugin/sdk/src/call/policy.rs diff --git a/backend/crates/gateway-plugin/sdk/src/client/middleware/call/mod.rs b/backend/crates/gateway-plugin/sdk/src/client/middleware/call.rs similarity index 100% rename from backend/crates/gateway-plugin/sdk/src/client/middleware/call/mod.rs rename to backend/crates/gateway-plugin/sdk/src/client/middleware/call.rs diff --git a/backend/crates/gateway-plugin/sdk/src/client/middleware/http/mod.rs b/backend/crates/gateway-plugin/sdk/src/client/middleware/http.rs similarity index 100% rename from backend/crates/gateway-plugin/sdk/src/client/middleware/http/mod.rs rename to backend/crates/gateway-plugin/sdk/src/client/middleware/http.rs diff --git a/backend/crates/gateway-plugin/sdk/src/client/middleware/service/mod.rs b/backend/crates/gateway-plugin/sdk/src/client/middleware/service.rs similarity index 100% rename from backend/crates/gateway-plugin/sdk/src/client/middleware/service/mod.rs rename to backend/crates/gateway-plugin/sdk/src/client/middleware/service.rs diff --git a/backend/crates/gateway-plugin/sdk/src/client/middleware/websocket/mod.rs b/backend/crates/gateway-plugin/sdk/src/client/middleware/websocket.rs similarity index 100% rename from backend/crates/gateway-plugin/sdk/src/client/middleware/websocket/mod.rs rename to backend/crates/gateway-plugin/sdk/src/client/middleware/websocket.rs diff --git a/backend/crates/gateway-plugin/sdk/tests/call/policy/mod.rs b/backend/crates/gateway-plugin/sdk/tests/call/policy.rs similarity index 100% rename from backend/crates/gateway-plugin/sdk/tests/call/policy/mod.rs rename to backend/crates/gateway-plugin/sdk/tests/call/policy.rs