teddy-cli 0.1.17.dev1424__tar.gz → 0.1.17.dev1425__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/PKG-INFO +1 -1
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/pyproject.toml +1 -1
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +45 -69
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/.gitignore +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/LICENSE +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/README.md +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/__main__.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/container.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/domain/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/domain/models/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/domain/models/change_set.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/domain/models/config_schema.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/domain/models/plan.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/domain/models/project_context.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/domain/models/session.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/inbound/init.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/action_executor.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/action_factory.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/context_service.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/init_service.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/parser_metadata.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/parser_reporting.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/planning_service.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/session_planner.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/session_replanner.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/session_service.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/update_checker.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/utils/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/utils/diff.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/utils/editor_names.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/utils/interruptible_call.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/utils/io.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/utils/markdown.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/utils/paths.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/utils/serialization.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/utils/session_notices.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/utils/string.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/utils/terminal.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/prompts.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/registries/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/registries/infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/registries/reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/registries/validators.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/MRP.md +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/config/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/config/config.yaml +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/config/init.context +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/config/prompts/architect.md +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/config/prompts/assistant.md +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/config/prompts/debugger.md +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/config/prompts/developer.md +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/config/prompts/pathfinder.md +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/config/prompts/prototyper.md +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/templates/ARCHITECTURE.md +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/templates/PROJECT.md +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/templates/case-file.md +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/templates/ci.md +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/templates/component-design.md +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/templates/makefile.md +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/templates/milestone.md +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/templates/pre-commit.md +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/templates/specification-document.md +0 -0
- {teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/templates/vertical-slice.md +0 -0
|
@@ -245,49 +245,29 @@ def _check_git_initialized() -> None:
|
|
|
245
245
|
)
|
|
246
246
|
|
|
247
247
|
|
|
248
|
-
def _warn_disabled_workspace_steps(config_service: IConfigService) -> None:
|
|
249
|
-
"""Print one warning per disabled workspace step with a real consequence.
|
|
250
|
-
|
|
251
|
-
A disabled hook installer warns because the unskippable post-commit test
|
|
252
|
-
gate then depends on a hook that never landed. A disabled git init warns
|
|
253
|
-
only when the workspace is not already a repository, because an existing
|
|
254
|
-
repository needs no initialization.
|
|
255
|
-
"""
|
|
256
|
-
if not config_service.get_setting("workspace.pre-commit", True):
|
|
257
|
-
typer.secho(
|
|
258
|
-
"⚠ Pre-commit hook installation is disabled. "
|
|
259
|
-
"The post-commit test gate will not run.",
|
|
260
|
-
fg=typer.colors.YELLOW,
|
|
261
|
-
err=True,
|
|
262
|
-
)
|
|
263
|
-
init_disabled = not config_service.get_setting("workspace.init", True)
|
|
264
|
-
if init_disabled and not (Path.cwd() / ".git").exists():
|
|
265
|
-
typer.secho(
|
|
266
|
-
"⚠ Git repository not initialized. Version control actions will fail.",
|
|
267
|
-
fg=typer.colors.YELLOW,
|
|
268
|
-
err=True,
|
|
269
|
-
)
|
|
270
|
-
|
|
271
|
-
|
|
272
248
|
def _run_health_checks(config_service: IConfigService) -> None:
|
|
273
249
|
"""Run each startup health check the workspace toggles allow.
|
|
274
250
|
|
|
275
|
-
A disabled step is skipped,
|
|
276
|
-
|
|
251
|
+
A disabled step is skipped without a warning, because the setting is the
|
|
252
|
+
user's own choice and needs no reminder.
|
|
277
253
|
"""
|
|
278
254
|
if config_service.get_setting("workspace.pre-commit", True):
|
|
279
255
|
_ensure_commit_hooks()
|
|
280
256
|
if config_service.get_setting("workspace.init", True):
|
|
281
257
|
_check_git_initialized()
|
|
282
|
-
_warn_disabled_workspace_steps(config_service)
|
|
283
258
|
|
|
284
259
|
|
|
285
260
|
_GIT_PULL_TIMEOUT_SECONDS = 15
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
261
|
+
_PULL_DETACHED_HEAD_WARNING = "⚠ Workspace pull skipped: detached HEAD."
|
|
262
|
+
_PULL_NO_UPSTREAM_WARNING = "⚠ Workspace pull skipped: no upstream branch."
|
|
263
|
+
_PULL_IN_PROGRESS_WARNING = "⚠ Workspace pull skipped: Git operation in progress."
|
|
264
|
+
_PULL_NOT_A_REPOSITORY_WARNING = "⚠ Workspace pull skipped: not a Git repository."
|
|
265
|
+
_PULL_FAILED_WARNING = "⚠ Workspace pull failed."
|
|
266
|
+
_PULL_GIT_UNAVAILABLE_WARNING = "⚠ Workspace pull failed: git is unavailable."
|
|
267
|
+
_PULL_TIMEOUT_WARNING = (
|
|
268
|
+
f"⚠ Workspace pull timed out after {_GIT_PULL_TIMEOUT_SECONDS}s."
|
|
269
|
+
)
|
|
289
270
|
_PULL_UP_TO_DATE_NOTICE = "✓ Workspace up-to-date with remote"
|
|
290
|
-
_PULL_SKIPPED_NOTICE = "✓ Workspace pull skipped"
|
|
291
271
|
_IN_PROGRESS_GIT_MARKERS = (
|
|
292
272
|
"rebase-merge",
|
|
293
273
|
"rebase-apply",
|
|
@@ -305,30 +285,21 @@ def _warn_pull(message: str) -> None:
|
|
|
305
285
|
typer.secho(message, fg=typer.colors.YELLOW, err=True)
|
|
306
286
|
|
|
307
287
|
|
|
308
|
-
def _notice_pull(message: str) -> None:
|
|
309
|
-
"""Print one green pull notice.
|
|
310
|
-
|
|
311
|
-
The checkmark line joins the startup block, so it carries no trailing
|
|
312
|
-
blank and never uses the warning color.
|
|
313
|
-
"""
|
|
314
|
-
typer.secho(message, fg=typer.colors.GREEN, err=True)
|
|
315
|
-
|
|
316
|
-
|
|
317
288
|
def _pull_workspace_on_start(
|
|
318
289
|
config_service: IConfigService,
|
|
319
290
|
run_func: Optional[Callable[..., Any]] = None,
|
|
320
291
|
) -> None:
|
|
321
292
|
"""Fast-forward the workspace before starting a new session.
|
|
322
293
|
|
|
323
|
-
The pull runs only when ``workspace.pull`` is enabled
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
pull, a timeout, or an unavailable git binary reports
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
294
|
+
The pull runs only when ``workspace.pull`` is enabled, so a disabled toggle
|
|
295
|
+
stays silent because the user opted out. Every other outcome warns once and
|
|
296
|
+
names its cause, so a skipped or failed pull never carries a checkmark. A
|
|
297
|
+
detached HEAD, a missing upstream, an in-progress operation, a dirty
|
|
298
|
+
worktree, or a missing repository reports why the workspace stayed
|
|
299
|
+
unchanged. A failed pull, a timeout, or an unavailable git binary reports
|
|
300
|
+
the failure. A successful fast-forward names the number of commits it
|
|
301
|
+
moved, and a pull that moves no commit confirms the workspace is up to
|
|
302
|
+
date.
|
|
332
303
|
|
|
333
304
|
The Git process is injected through ``run_func`` so every decision is
|
|
334
305
|
testable without spawning a real repository.
|
|
@@ -336,6 +307,7 @@ def _pull_workspace_on_start(
|
|
|
336
307
|
if not config_service.get_setting("workspace.pull", True):
|
|
337
308
|
return
|
|
338
309
|
if not (Path.cwd() / ".git").exists():
|
|
310
|
+
_warn_pull(_PULL_NOT_A_REPOSITORY_WARNING)
|
|
339
311
|
return
|
|
340
312
|
git_run = run_func or subprocess.run
|
|
341
313
|
try:
|
|
@@ -350,16 +322,12 @@ def _fast_forward_workspace(git_run: Callable[..., Any]) -> None:
|
|
|
350
322
|
"""Run the pull decision table through the injected Git runner.
|
|
351
323
|
|
|
352
324
|
Each precondition is probed before the pull so an unsafe state never
|
|
353
|
-
reaches ``git pull``.
|
|
354
|
-
|
|
355
|
-
sees a pull outcome.
|
|
325
|
+
reaches ``git pull``. Every skip reports its cause as one warning, so the
|
|
326
|
+
user always sees a pull outcome.
|
|
356
327
|
"""
|
|
357
|
-
|
|
358
|
-
if
|
|
359
|
-
|
|
360
|
-
_warn_pull(_PULL_SKIPPED_WARNING)
|
|
361
|
-
else:
|
|
362
|
-
_notice_pull(_PULL_SKIPPED_NOTICE)
|
|
328
|
+
skip_message = _pull_skip_message(git_run)
|
|
329
|
+
if skip_message is not None:
|
|
330
|
+
_warn_pull(skip_message)
|
|
363
331
|
return
|
|
364
332
|
before = _read_head(git_run)
|
|
365
333
|
result = git_run(
|
|
@@ -370,52 +338,60 @@ def _fast_forward_workspace(git_run: Callable[..., Any]) -> None:
|
|
|
370
338
|
timeout=_GIT_PULL_TIMEOUT_SECONDS,
|
|
371
339
|
)
|
|
372
340
|
if result.returncode != 0:
|
|
373
|
-
_warn_pull(
|
|
341
|
+
_warn_pull(_PULL_FAILED_WARNING)
|
|
374
342
|
return
|
|
375
343
|
_report_fast_forward(git_run, before, _read_head(git_run))
|
|
376
344
|
|
|
377
345
|
|
|
378
|
-
def
|
|
379
|
-
"""Return the skip
|
|
346
|
+
def _pull_skip_message(git_run: Callable[..., Any]) -> Optional[str]:
|
|
347
|
+
"""Return the warning text for a skip, or None when the pull may proceed.
|
|
380
348
|
|
|
381
|
-
Every skip
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
returns the warning, because tracked changes can conflict.
|
|
349
|
+
Every skip names its own cause, because the user needs to know why the
|
|
350
|
+
workspace stayed unchanged. A dirty worktree reports how many tracked
|
|
351
|
+
files block the fast-forward.
|
|
385
352
|
"""
|
|
386
353
|
git_dir = Path.cwd() / ".git"
|
|
387
354
|
if any((git_dir / marker).exists() for marker in _IN_PROGRESS_GIT_MARKERS):
|
|
388
|
-
return
|
|
355
|
+
return _PULL_IN_PROGRESS_WARNING
|
|
389
356
|
detached = git_run(
|
|
390
357
|
["git", "symbolic-ref", "-q", "HEAD"],
|
|
391
358
|
capture_output=True,
|
|
392
359
|
timeout=_GIT_PULL_TIMEOUT_SECONDS,
|
|
393
360
|
)
|
|
394
361
|
if detached.returncode != 0:
|
|
395
|
-
return
|
|
362
|
+
return _PULL_DETACHED_HEAD_WARNING
|
|
396
363
|
upstream = git_run(
|
|
397
364
|
["git", "rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"],
|
|
398
365
|
capture_output=True,
|
|
399
366
|
timeout=_GIT_PULL_TIMEOUT_SECONDS,
|
|
400
367
|
)
|
|
401
368
|
if upstream.returncode != 0:
|
|
402
|
-
return
|
|
369
|
+
return _PULL_NO_UPSTREAM_WARNING
|
|
403
370
|
status = git_run(
|
|
404
371
|
["git", "status", "--porcelain"],
|
|
405
372
|
capture_output=True,
|
|
406
373
|
text=True,
|
|
407
374
|
timeout=_GIT_PULL_TIMEOUT_SECONDS,
|
|
408
375
|
)
|
|
376
|
+
# Porcelain prints exactly one line per tracked path, so the line count is
|
|
377
|
+
# the file count. A path that is both staged and modified still yields one
|
|
378
|
+
# line with two status columns.
|
|
409
379
|
tracked_changes = [
|
|
410
380
|
line
|
|
411
381
|
for line in status.stdout.splitlines()
|
|
412
382
|
if line and not line.startswith("??")
|
|
413
383
|
]
|
|
414
384
|
if tracked_changes:
|
|
415
|
-
return
|
|
385
|
+
return _format_uncommitted_warning(len(tracked_changes))
|
|
416
386
|
return None
|
|
417
387
|
|
|
418
388
|
|
|
389
|
+
def _format_uncommitted_warning(count: int) -> str:
|
|
390
|
+
"""Name how many tracked files block the fast-forward."""
|
|
391
|
+
noun = "file" if count == 1 else "files"
|
|
392
|
+
return f"⚠ Workspace pull skipped: {count} uncommitted {noun}."
|
|
393
|
+
|
|
394
|
+
|
|
419
395
|
def _read_head(git_run: Callable[..., Any]) -> str:
|
|
420
396
|
"""Read the current commit id through the injected Git runner."""
|
|
421
397
|
return git_run(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/adapters/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/domain/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/domain/models/plan.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/ports/inbound/init.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/services/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/utils/editor_names.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/utils/markdown.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/utils/paths.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/utils/serialization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/utils/string.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/core/utils/terminal.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/registries/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/registries/reviewer.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/registries/validators.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1424 → teddy_cli-0.1.17.dev1425}/src/teddy_executor/resources/templates/ci.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|