3.8 KiB
ADDED Requirements
Requirement: LiveCli core methods shall be in live_cli.rs
The LiveCli struct definition and its core lifecycle methods SHALL be in
live_cli.rs. Core methods include new, startup_banner, prepare_turn_runtime,
replace_runtime, run_turn, run_turn_with_output, run_prompt_compact,
run_prompt_compact_json, run_prompt_json, run_internal_prompt_text_with_progress,
run_internal_prompt_text, persist_session, record_prompt_history,
repl_completion_candidates, and reload_runtime_features.
Scenario: live_cli.rs contains LiveCli struct
- WHEN the refactoring is complete
- THEN
live_cli.rsdefinesLiveClistruct and contains all core lifecycle methods listed above
Scenario: run_repl is in live_cli.rs
- WHEN the refactoring is complete
- THEN
live_cli.rscontainsrun_repl,run_resume_command, andresume_sessionas free functions
Requirement: REPL command handlers shall be free functions in repl_commands.rs
All handle_repl_command, handle_session_command, handle_plugins_command,
set_model, set_permissions, clear_session, compact, print_* methods,
run_bughunter, run_ultraplan, run_teleport, run_debug_tool_call,
run_commit, run_pr, run_issue, export_session, and all format_*_report
helpers SHALL be free functions in repl_commands.rs that accept
&mut LiveCli or &LiveCli as their first parameter.
Scenario: handle_repl_command is a free function
- WHEN the refactoring is complete
- THEN
repl_commands.rsdefinespub(crate) fn handle_repl_command( cli: &mut LiveCli, command: SlashCommand) -> Result<bool, Box<dyn std::error::Error>>
Scenario: All /slash commands are handled in repl_commands.rs
- WHEN user types
/status,/model,/session,/config,/diff - THEN the dispatch function in
repl_commands.rshandles it via a free function that takescli: &mut LiveCli
Requirement: REPL command dispatch shall not contain runtime construction
No REPL command handler SHALL directly call build_runtime, ConversationRuntime::new,
or ApiProviderClient constructors. Any runtime replacement SHALL go through
LiveCli::replace_runtime.
Scenario: Runtime is only replaced through LiveCli::replace_runtime
- WHEN a REPL command changes model or permissions
- THEN it calls
cli.replace_runtime(build_runtime(...))fromruntime_builder.rs - THEN it does NOT directly construct
ConversationRuntimeor manage plugin lifecycle
Requirement: Doctor diagnostics shall be in doctor.rs
DiagnosticLevel, DiagnosticCheck, DoctorReport, run_doctor, all
check_*_health functions, and render_diagnostic_check SHALL be in doctor.rs.
Scenario: doctor.rs exists
- WHEN the refactoring is complete
- THEN
doctor.rscontains the full diagnostic check system
Requirement: Model resolution shall be in model.rs
ModelSource, ModelProvenance, resolve_model_alias,
resolve_model_alias_with_config, resolve_repl_model, validate_model_syntax,
config_model_for_current_dir, config_alias_for_current_dir, and
max_tokens_for_model SHALL be in model.rs.
Scenario: model.rs exists
- WHEN the refactoring is complete
- THEN
model.rscontains all model-related types and functions
Requirement: Status snapshot shall be in status.rs
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 status parsing helpers SHALL be in status.rs.
Scenario: status.rs exists
- WHEN the refactoring is complete
- THEN
status.rscontains all status and git parsing functions