teddy-cli 0.1.17.dev1418__tar.gz → 0.1.17.dev1420__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.dev1418 → teddy_cli-0.1.17.dev1420}/PKG-INFO +1 -1
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/pyproject.toml +1 -1
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +29 -28
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/templates/makefile.md +3 -6
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/.gitignore +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/LICENSE +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/README.md +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/__main__.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/container.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/domain/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/domain/models/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/domain/models/change_set.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/domain/models/config_schema.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/domain/models/plan.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/domain/models/project_context.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/domain/models/session.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/inbound/init.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/action_executor.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/action_factory.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/context_service.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/init_service.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/parser_metadata.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/parser_reporting.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/planning_service.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/session_planner.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/session_replanner.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/session_service.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/update_checker.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/utils/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/utils/diff.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/utils/editor_names.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/utils/interruptible_call.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/utils/io.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/utils/markdown.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/utils/paths.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/utils/serialization.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/utils/session_notices.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/utils/string.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/utils/terminal.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/prompts.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/registries/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/registries/infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/registries/reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/registries/validators.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/MRP.md +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/config/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/config/config.yaml +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/config/init.context +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/config/prompts/architect.md +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/config/prompts/assistant.md +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/config/prompts/debugger.md +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/config/prompts/developer.md +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/config/prompts/pathfinder.md +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/config/prompts/prototyper.md +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/templates/ARCHITECTURE.md +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/templates/PROJECT.md +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/templates/case-file.md +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/templates/ci.md +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/templates/component-design.md +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/templates/milestone.md +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/templates/pre-commit.md +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/templates/specification-document.md +0 -0
- {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/resources/templates/vertical-slice.md +0 -0
|
@@ -286,6 +286,7 @@ _GIT_PULL_TIMEOUT_SECONDS = 15
|
|
|
286
286
|
_PULL_SKIPPED_WARNING = "⚠ Workspace pull skipped; continuing with the current branch."
|
|
287
287
|
_PULL_TIMEOUT_WARNING = "⚠ Workspace pull timed out; continuing without it."
|
|
288
288
|
_PULL_GIT_UNAVAILABLE_WARNING = "⚠ Workspace pull skipped; git is unavailable."
|
|
289
|
+
_PULL_UP_TO_DATE_NOTICE = "✓ Workspace up-to-date with remote"
|
|
289
290
|
_IN_PROGRESS_GIT_MARKERS = (
|
|
290
291
|
"rebase-merge",
|
|
291
292
|
"rebase-apply",
|
|
@@ -295,13 +296,12 @@ _IN_PROGRESS_GIT_MARKERS = (
|
|
|
295
296
|
|
|
296
297
|
|
|
297
298
|
def _warn_pull(message: str) -> None:
|
|
298
|
-
"""Print one yellow pull warning
|
|
299
|
+
"""Print one yellow pull warning.
|
|
299
300
|
|
|
300
|
-
The
|
|
301
|
-
|
|
301
|
+
The shared preamble owns the separator blank line before
|
|
302
|
+
``Checking configurations...``, so this line carries no trailing blank.
|
|
302
303
|
"""
|
|
303
304
|
typer.secho(message, fg=typer.colors.YELLOW, err=True)
|
|
304
|
-
typer.echo("", err=True)
|
|
305
305
|
|
|
306
306
|
|
|
307
307
|
def _pull_workspace_on_start(
|
|
@@ -411,20 +411,22 @@ def _read_head(git_run: Callable[..., Any]) -> str:
|
|
|
411
411
|
|
|
412
412
|
|
|
413
413
|
def _report_fast_forward(git_run: Callable[..., Any], before: str, after: str) -> None:
|
|
414
|
-
"""Report
|
|
414
|
+
"""Report the pull outcome so the user always sees a result.
|
|
415
415
|
|
|
416
|
-
A
|
|
416
|
+
A fast-forward names the number of moved commits. A pull that moves no
|
|
417
|
+
commit confirms the workspace is already up to date.
|
|
417
418
|
"""
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
419
|
+
commits = 0
|
|
420
|
+
if after != before:
|
|
421
|
+
count_output = git_run(
|
|
422
|
+
["git", "rev-list", "--count", f"{before}..{after}"],
|
|
423
|
+
capture_output=True,
|
|
424
|
+
text=True,
|
|
425
|
+
timeout=_GIT_PULL_TIMEOUT_SECONDS,
|
|
426
|
+
).stdout.strip()
|
|
427
|
+
commits = int(count_output) if count_output else 0
|
|
427
428
|
if commits <= 0:
|
|
429
|
+
typer.secho(_PULL_UP_TO_DATE_NOTICE, fg=typer.colors.GREEN, err=True)
|
|
428
430
|
return
|
|
429
431
|
noun = "commit" if commits == 1 else "commits"
|
|
430
432
|
typer.secho(
|
|
@@ -432,9 +434,6 @@ def _report_fast_forward(git_run: Callable[..., Any], before: str, after: str) -
|
|
|
432
434
|
fg=typer.colors.GREEN,
|
|
433
435
|
err=True,
|
|
434
436
|
)
|
|
435
|
-
# A trailing blank line separates the fast-forward block from the
|
|
436
|
-
# ``Checking configurations...`` line that follows it.
|
|
437
|
-
typer.echo("", err=True)
|
|
438
437
|
|
|
439
438
|
|
|
440
439
|
def _start_background_update_check(container: Container) -> list[str]:
|
|
@@ -468,16 +467,19 @@ def _run_startup_preamble( # noqa: PLR0913 # Each parameter is an explicit sta
|
|
|
468
467
|
"""Run the shared startup preamble for both session entry points.
|
|
469
468
|
|
|
470
469
|
The order is fixed so the banner layout cannot drift: health checks, the
|
|
471
|
-
start-only workspace fast-forward line,
|
|
472
|
-
line, the preflight check (whose returned
|
|
473
|
-
shared disable-footer. ``start`` forwards
|
|
474
|
-
validates the agent prompt and enables
|
|
475
|
-
leaves the agent ``None`` and keeps the pull
|
|
470
|
+
start-only workspace fast-forward line, one separator blank line, the
|
|
471
|
+
``Checking configurations...`` line, the preflight check (whose returned
|
|
472
|
+
keys extend ``fired``), then the shared disable-footer. ``start`` forwards
|
|
473
|
+
its ``agent`` so the preflight validates the agent prompt and enables
|
|
474
|
+
``pull_workspace``; ``resume`` leaves the agent ``None`` and keeps the pull
|
|
475
|
+
off.
|
|
476
476
|
"""
|
|
477
477
|
config_service = container.resolve(IConfigService)
|
|
478
478
|
_run_health_checks(config_service)
|
|
479
479
|
if pull_workspace:
|
|
480
480
|
_pull_workspace_on_start(config_service)
|
|
481
|
+
# One separator groups the checkmark block above with the notices below.
|
|
482
|
+
typer.echo("", err=True)
|
|
481
483
|
typer.echo("Checking configurations...", err=True)
|
|
482
484
|
fired.extend(
|
|
483
485
|
_run_cli_preflight_check(
|
|
@@ -772,11 +774,10 @@ def _display_drift_notification(container: Container) -> list[str]:
|
|
|
772
774
|
fired.append("checks.templates")
|
|
773
775
|
|
|
774
776
|
if drift_lines:
|
|
775
|
-
#
|
|
776
|
-
#
|
|
777
|
-
#
|
|
778
|
-
|
|
779
|
-
typer.echo("\n" + "\n".join(drift_lines))
|
|
777
|
+
# The notices sit directly under ``Checking configurations...``. The
|
|
778
|
+
# lines carry no trailing newline, so the shared disable-footer
|
|
779
|
+
# (emitted next) abuts the final drift line.
|
|
780
|
+
typer.echo("\n".join(drift_lines))
|
|
780
781
|
|
|
781
782
|
return fired
|
|
782
783
|
|
|
@@ -13,7 +13,7 @@ make commit MSG="feat(templates): add PROJECT.md template"
|
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
**What is `.PHONY`?**
|
|
16
|
-
`.PHONY`
|
|
16
|
+
`.PHONY` declares `commit`, `push`, `ci-watch`, `probe`, `test`, `logs`, `help`, and the internal `_preflight` gate as targets that name no file. Without it, a file named `commit` in the project root makes Make treat that target as up to date and skip the recipe.
|
|
17
17
|
|
|
18
18
|
### Help
|
|
19
19
|
```shell
|
|
@@ -95,8 +95,9 @@ Always use GNU Make native features for cross-platform compatibility instead of
|
|
|
95
95
|
- **Named inputs instead of positional goals:** Pass values as `NAME="value"`, as in `make commit MSG="feat(scope): add thing"`. GNU Make treats a command-line assignment as a variable, so no word of the value can become a goal. Positional capture through `$(MAKECMDGOALS)` is forbidden, because a word that names a real target executes that target.
|
|
96
96
|
- **Parse-time goal validation:** Compare `$(MAKECMDGOALS)` against a `_KNOWN_GOALS` list and abort with `$(error ...)` when a goal is unknown or when more than one goal is present. The check runs while Make reads the file, so no recipe line can run first.
|
|
97
97
|
- **POSIX shell preflight:** Every POSIX recipe target (`ci-watch`, `probe`, `logs`) depends on the internal `_preflight` target, which verifies `git`, `gh`, `awk`, and `sed` before any network call. It aborts with one actionable message instead of a generic `make: *** Error 1`. A missing required input aborts at parse time, before the tool gate runs.
|
|
98
|
+
- **One shell process per command group:** Make spawns one process per recipe line that carries a shell metacharacter, and Windows process creation costs far more than on POSIX. Join a target's independent commands into one backslash-continued block separated by `;`, so the target pays one process instead of one per line.
|
|
98
99
|
- **Shell routing for Bash-only commands:** Make spawns a recipe line directly when the line carries no shell metacharacter. That direct spawn bypasses `SHELL`. On Windows it fails for Git Bash-only programs such as `sleep` and for shell builtins such as `echo`. Keep these commands inside a shell block that carries `;`, `&&`, or a variable expansion.
|
|
99
|
-
- **Windows shell selection:** Set `SHELL := bash.exe` when `OS` is `Windows_NT
|
|
100
|
+
- **Windows shell selection:** Set `SHELL := bash.exe` when `OS` is `Windows_NT`. The assignment covers every target, not only the pipelines, and `_preflight` confirms that the shell is Git Bash rather than the WSL `bash.exe` shim and names the `SHELL=` override when it is not.
|
|
100
101
|
- **Portable quoting:** Pass values with double quotes, as in `--field reason="..."`, because Windows `cmd.exe` keeps single quotes literally.
|
|
101
102
|
- **ASCII-only output:** Recipe output stays ASCII, because a Windows console turns a non-ASCII dash into mojibake in captured logs.
|
|
102
103
|
- **Explicit advisory fallback:** The advisory pre-commit pass consumes its own exit code with `|| echo "<sentence>"`, so a failing run prints one plain sentence. Make's `-` prefix is forbidden here, because it prints a bare `Error 1 (ignored)` line that reads as an unexplained defect.
|
|
@@ -321,8 +322,6 @@ ci-watch: _preflight
|
|
|
321
322
|
|
|
322
323
|
```makefile
|
|
323
324
|
probe: _preflight
|
|
324
|
-
|
|
325
|
-
probe:
|
|
326
325
|
git add -f spikes/debug/probe.sh
|
|
327
326
|
git commit -m "debug: probe" --no-verify --allow-empty
|
|
328
327
|
git push
|
|
@@ -357,8 +356,6 @@ The Debugger's Reproduction phase needs to read CI logs without drowning in the
|
|
|
357
356
|
|
|
358
357
|
```makefile
|
|
359
358
|
logs: _preflight
|
|
360
|
-
|
|
361
|
-
logs:
|
|
362
359
|
@if [ -z "$(STEP)" ]; then \
|
|
363
360
|
gh run view "$(RUN)" --log-failed 2>/dev/null | awk -F'\t' '{ if(j!=$$1||s!=$$2){j=$$1;s=$$2;print "\n["j" > "s"]"} l=$$3; p=index(l,"Z "); if(p>0)l=substr(l,p+2); gsub(/\x1B\[[0-9;]*[a-zA-Z]/,"",l); gsub(/\^\[\[[0-9;]*[a-zA-Z]/,"",l); if(l ~ /^##\[group\]Run /){k=1;next} if(k && l ~ /^##\[endgroup\]/){k=0;next} if(k)next; if(l ~ /^##\[group\]/ || l ~ /^##\[endgroup\]/)next; gsub(/^##\[error\]/,"Error: ",l); print l }'; \
|
|
364
361
|
else \
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/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.dev1418 → teddy_cli-0.1.17.dev1420}/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.dev1418 → teddy_cli-0.1.17.dev1420}/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.dev1418 → teddy_cli-0.1.17.dev1420}/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.dev1418 → teddy_cli-0.1.17.dev1420}/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.dev1418 → teddy_cli-0.1.17.dev1420}/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.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/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.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/utils/markdown.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/utils/paths.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/utils/serialization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/utils/string.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/core/utils/terminal.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/registries/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/registries/reviewer.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/src/teddy_executor/registries/validators.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1420}/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.dev1418 → teddy_cli-0.1.17.dev1420}/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
|