10 KiB
10 KiB
1. Create constants.rs — extract all const and type aliases
- 1.1 Create
src/constants.rswith allconstdefinitions (DEFAULT_MODEL, VERSION, STUB_COMMANDS, etc.) and type aliases (AllowedToolSet, RuntimePluginStateBuildOutput) extracted frommain.rslines 62-200 - 1.2 Add
mod constants;tomain.rs; keep original items aspub(crate) use constants::*;re-exports so existing code continues to compile - 1.3 Run
cargo buildandcargo test— must pass with zero errors
2. Create model.rs — extract model resolution types and functions
- 2.1 Create
src/model.rswith ModelSource enum, ModelProvenance struct + impl, and all model-related functions:resolve_model_alias,resolve_model_alias_with_config,resolve_repl_model,validate_model_syntax,config_model_for_current_dir,config_alias_for_current_dir,max_tokens_for_model - 2.2 Add
mod model;tomain.rsand re-export viapub(crate) use model::*; - 2.3 Remove original definitions from
main.rs; add necessary imports to model.rs - 2.4 Run
cargo buildandcargo test— must pass
3. Create permission.rs — extract permission prompt logic
- 3.1 Create
src/permission.rswith CliPermissionPrompter struct, its impl, PermissionPrompter trait impl, andpermission_policyfunction (main.rs lines 7442-7508, 8861-8872) - 3.2 Add
mod permission;tomain.rsand re-export - 3.3 Run
cargo buildandcargo test— must pass
4. Create progress.rs — extract internal progress reporting
- 4.1 Create
src/progress.rswith InternalPromptProgressState/Event/Shared/Reporter/Run structs+impls, CliHookProgressReporter,format_internal_prompt_progress_line, anddescribe_tool_progress(main.rs lines 7000-7420) - 4.2 Add
mod progress;tomain.rsand re-export - 4.3 Run
cargo buildandcargo test— must pass
5. Create doctor.rs — extract diagnostic check system
- 5.1 Create
src/doctor.rswith DiagnosticLevel, DiagnosticCheck, DoctorReport,render_doctor_report,run_doctor, and allcheck_*_healthfunctions (main.rs lines 1831-2525) - 5.2 Add
mod doctor;tomain.rsand re-export - 5.3 Run
cargo buildandcargo test— must pass
6. Create args.rs — extract all argument parsing
- 6.1 Create
src/args.rswith CliAction enum, CliOutputFormat, LocalHelpTopic,parse_args, all parse_* helpers, format_unknown_* functions, suggest_/levenshtein helpers, normalize_ tools, permission_mode helpers, provider_label, filter_tool_specs (main.rs lines 506-1828) - 6.2 Add
mod args;tomain.rsand re-export - 6.3 Run
cargo buildandcargo test— must pass
7. Create session.rs — extract session management
- 7.1 Create
src/session.rswith SessionHandle, ManagedSessionSummary, all session CRUD functions:sessions_dir,current_session_store,new_cli_session,create_managed_session_handle,resolve_session_reference,list_managed_sessions,latest_managed_session,load_session_reference,delete_managed_session,confirm_session_deletion,render_session_list,format_session_modified_age,write_session_clear_backup,session_clear_backup_path(main.rs lines 3678-3692, 5257-5427) - 7.2 Add
mod session;tomain.rsand re-export - 7.3 Run
cargo buildandcargo test— must pass
8. Create status.rs — extract status snapshot and git parsing
- 8.1 Create
src/status.rswith StatusContext, StatusUsage, GitWorkspaceSummary,print_status_snapshot,status_json_value,status_context,format_status_report,format_sandbox_report,print_sandbox_status_snapshot,sandbox_json_value, and all git parsing helpers (main.rs lines 2842-3200, 5462-5839) - 8.2 Add
mod status;tomain.rsand re-export - 8.3 Run
cargo buildandcargo test— must pass
9. Create formatting.rs — extract tool result formatting and help text
- 9.1 Create
src/formatting.rswith all format_tool_* functions, push_output_block, response_to_events, push_prompt_cache_record, prompt_cache_record_to_runtime_event, final_assistant_text, collect_tool_uses/results/cache_events, short_tool_id, extract_tool_path, first_visible_line, truncate_* helpers, and full help text functions (main.rs lines 8184-8730, 8923-9122) - 9.2 Add
mod formatting;tomain.rsand re-export - 9.3 Run
cargo buildandcargo test— must pass
10. Create config.rs — extract config and memory reporting
- 10.1 Create
src/config.rswithrender_config_report,render_config_json,render_memory_report,render_memory_json(main.rs lines 5962-6143) - 10.2 Add
mod config;tomain.rsand re-export - 10.3 Run
cargo buildandcargo test— must pass
11. Create diff.rs — extract git diff reporting
- 11.1 Create
src/diff.rswithrender_diff_report,render_diff_report_for,render_diff_json_for,run_git_diff_command_in(main.rs lines 6189-6270) - 11.2 Add
mod diff;tomain.rsand re-export - 11.3 Run
cargo buildandcargo test— must pass
12. Create export.rs — extract session export
- 12.1 Create
src/export.rswithrun_export,render_export_text,render_session_markdown,default_export_filename,resolve_export_path,summarize_tool_payload_for_markdown(main.rs lines 6646-6914) - 12.2 Add
mod export;tomain.rsand re-export - 12.3 Run
cargo buildandcargo test— must pass
13. Create api_client.rs — extract AnthropicRuntimeClient
- 13.1 Create
src/api_client.rswith AnthropicRuntimeClient struct, its impl, ApiClient trait impl,resolve_cli_auth_source,resolve_cli_auth_source_for_cwd,request_ends_with_tool_result,format_user_visible_api_error,format_context_window_blocked_error(main.rs lines 7497-7912) - 13.2 Add
mod api_client;tomain.rsand re-export - 13.3 Run
cargo buildandcargo test— must pass
14. Create tool_executor.rs — extract CliToolExecutor
- 14.1 Create
src/tool_executor.rswith CliToolExecutor struct+impl, ToolExecutor trait impl, ToolSearchRequest/McpToolRequest/ListMcpResourcesRequest/ReadMcpResourceRequest structs, andconvert_messages(main.rs lines 8731-8922) - 14.2 Add
mod tool_executor;tomain.rsand re-export - 14.3 Run
cargo buildandcargo test— must pass
15. Create runtime_builder.rs — extract runtime construction
- 15.1 Create
src/runtime_builder.rswith RuntimePluginState, RuntimeMcpState, BuiltRuntime struct+impl+Deref+DerefMut+Drop, HookAbortMonitor, allbuild_runtime*functions,build_plugin_manager,resolve_plugin_path,runtime_hook_config_from_plugin_hooks,build_system_prompt,build_runtime_mcp_state,mcp_runtime_tool_definition,mcp_wrapper_tool_definitions,permission_mode_for_mcp_tool,mcp_annotation_flag(main.rs lines 3710-4180, 6924-6995, 7329-7450, 4017-4125) - 15.2 Add
mod runtime_builder;tomain.rsand re-export - 15.3 Run
cargo buildandcargo test— must pass
16. Create live_cli.rs — extract LiveCli core and REPL loop
- 16.1 Create
src/live_cli.rswith LiveCli struct, PromptHistoryEntry, and core impl methods:new,startup_banner,prepare_turn_runtime,replace_runtime,run_turn,run_turn_with_output,run_prompt_compact/json,repl_completion_candidates,persist_session,record_prompt_history,run_internal_prompt_text*,reload_runtime_features(main.rs lines 3694-3710, 4181-4440, 4580-4610, 5240-5260) - 16.2 Extract free functions:
run_repl,run_resume_command,resume_session,detect_broad_cwd,enforce_broad_cwd_policy,run_stale_base_preflight(main.rs lines 3520-3675, 3597-3678, 3175-3520, 3609-3610) - 16.3 Add
mod live_cli;tomain.rsand re-export - 16.4 Run
cargo buildandcargo test— must pass
17. Create repl_commands.rs — extract REPL command handlers
- 17.1 Create
src/repl_commands.rswith free functions for all REPL command handlers:handle_repl_command,handle_session_command,handle_plugins_command,set_model,set_permissions,clear_session,compact, allprint_*methods,run_bughunter/ultraplan/teleport/debug_tool_call/commit/pr/issue,export_session(main.rs lines 4440-5256) - 17.2 Extract all standalone command functions:
render_repl_help,render_resume_usage,render_teleport_report,render_last_tool_debug_report,render_prompt_history_report,render_version_report,collect_session_prompt_history,recent_user_context,parse_history_count,format_history_timestamp,civil_from_days,git_output,git_status_ok,command_exists,write_temp_text_file,sanitize_generated_message,parse_titled_body,indent_block,validate_no_args,init_claude_md,normalize_permission_mode,run_init,init_json_value,print_acp_status,run_worker_state,run_mcp_serve,print_bootstrap_plan,print_system_prompt,print_version,version_json_value,slash_command_completion_candidates_with_sessions,truncate_for_prompt,run_export,render_export_text,render_session_markdown,default_export_filename,resolve_export_path,summarize_tool_payload_for_markdown - 17.3 Extract all format_*_report/notice functions:
format_bughunter_report,format_ultraplan_report,format_pr_report,format_issue_report,format_commit_preflight_report,format_commit_skipped_report,format_auto_compaction_notice,format_compact_report,format_unknown_slash_command_message,format_model_report,format_model_switch_report,format_permissions_report,format_permissions_switch_report,format_cost_report,format_resume_report,render_resume_usage - 17.4 Add
mod repl_commands;tomain.rsand re-export - 17.5 Run
cargo buildandcargo test— must pass
18. Slim main.rs and verify
- 18.1 Remove all moved code from
main.rs; keep onlymain(),run(),classify_error_kind,split_error_hint,read_piped_stdin,merge_prompt_with_stdin,write_mcp_server_fixture, module declarations, re-exports, and the test module - 18.2 Move
#[allow(...)]directives to individual modules where needed - 18.3 Run
cargo build— must compile cleanly - 18.4 Run full test suite:
cargo test— all tests pass - 18.5 Verify
wc -l src/main.rs≤ 2000 lines - 18.6 Verify no new file exceeds 2000 lines