refactor(layering): break all tui->cli edges; presentation SCC dissolved into clean core<tui<cli DAG
Final boundary edge tui->cli (12 refs) eliminated by relocating logic to the proper architectural layer: - selfdev (2): add client_selfdev_requested() to low-level jcode-selfdev-types crate (alongside CLIENT_SELFDEV_ENV); tui calls it directly. cli re-exports. - external_auth (6): move src/cli/provider_init/external_auth.rs -> src/external_auth.rs (core; deps only auth/config/provider/provider_catalog). - lock_model_provider (1): tui calls provider::activation::lock_runtime_provider_key directly (cli wrapper was a thin pass-through). - hot_exec rebuild (1): move src/cli/hot_exec/rebuild.rs -> src/session_rebuild.rs (core). cli/hot_exec re-exports. - dispatch server-lifecycle (2): new core src/server_spawn.rs with is_running() + spawner observer hook (register_default_server_spawner + OnceLock), registered at cli::startup::run. tui calls server_spawn:: directly. Analyzer now shows the giant presentation SCC GONE: cli(in=0) > tui/video_export > core. No core module references crate::cli or crate::tui. Remaining SCCs are all internal to the core layer (server/tool/agent 78K, provider/auth 55K) which is fine for a layered crate split.
J
jeremy committed
a9a8282760652720674c3e08851f4f1f54ebbca5
Parent: c074494