asepharyana
|
9a67137954
|
refactor: massive codebase restructuring — naming, splitting, DRY
Crate renames:
- zesdex-entities::seaorm → domain (misleading name, no SeaORM used)
- zesdex-dto → merged into zesdex-entities (100% re-exports)
- zesdex-libs → zesdex-infra (vague name)
Module renames:
- app/harness → guard (misleading: safety gatekeeper, not test harness)
- runtime/commands → action_dispatch (name clashed with controller/command)
- resources → prompts (embedded prompt text, not general resources)
- tool/seqthink → sequential_think (unreadable abbreviation)
- msglog/query → insert (module only inserts, never queries)
Dead code removal:
- app/mode/help.rs (orphaned — not declared in mod.rs)
- app/mode/loading.rs (orphaned — not declared in mod.rs)
File splitting (71 new files, avg ~115 lines/file):
- app/runtime/actions/: 1→8 files (was 2030 lines)
- view/overlays/: 1→16 files (was 1167 lines)
- tool/lsp/: 1→8 per-tool files (was 909 lines)
- main.rs: 1→5 files (session, daemon, attach, event_loop)
- workflow/engine + hive_mind: 2→10 files
- subagent/engine + auto: 2→9 files
- lsp/provisioner: 1→5 files
- review/: 1→6 files
- guard/: 1→2 files (extracted patterns)
- state/misc: 1→3 files (input, scroll)
- mcp/: 1→3 files (transport, adapter)
- stream/json_repair extracted from turn.rs
DRY:
- Pattern constants (STUB_PATTERNS etc) in guard/patterns shared with subagent
- 3 near-identical background spawners → 1 generic + thin wrappers
- Shared spawn_subagent_with_drain() extracted
- Shared create_session() in main
- write_osc52 deduplicated
Bug fixes:
- archive_message(): sess.db → db (wrong variable name)
- execute_one_tool(): wrong parameter name
- check_credential_read() function was missing (restored from test expectations)
|
2026-07-17 09:08:41 +07:00 |
|
asepharyana
|
be0a9582bb
|
refactor: migrate monolithic crate to Cargo Workspace with Clean Architecture
Transform the single binary crate into a 9-crate workspace monorepo:
- Root Cargo.toml as [workspace] manager with resolver = "2"
- zesdex-entities: Domain entity types (session, settings, store, message, etc.)
- zesdex-utils: Pure utility functions (error, logger, pagination, slug, clipboard)
- zesdex-dto: Data Transfer Objects for LLM provider API communication
- zesdex-ipc: Unix-socket IPC layer (client/server/framing/protocol)
- zesdex-iam: Identity & Access Management (Clean Architecture: domain/application/infrastructure)
- zesdex-cms: Content Management (Clean Architecture: domain/application/infrastructure)
- zesdex-middleware: HTTP middleware (Auth, CORS, Rate Limiting)
- zesdex-libs: Composition root (AppContext, DB init, JWT, Argon2)
- zesdex-backend: Main binary entry point + seed/migrate binaries
- DevOps: Dockerfile, docker-compose, Nix (flake/shell/default), CI/CD updates
- Remove dead root src/ and src-misc/ directories
All crate re-exports maintain backward compatibility with original
crate::model::*, crate::dto::*, crate::ipc::* module paths.
Feature crates enforce strict layer separation: domain -> application
-> infrastructure with generic trait-based dependency injection.
|
2026-07-17 09:08:41 +07:00 |
|