teddy-cli 0.1.17.dev1421__tar.gz → 0.1.17.dev1423__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.dev1421 → teddy_cli-0.1.17.dev1423}/PKG-INFO +1 -1
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/pyproject.toml +1 -1
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +24 -28
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/templates/makefile.md +21 -16
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/.gitignore +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/LICENSE +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/README.md +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/__main__.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/container.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/domain/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/domain/models/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/domain/models/change_set.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/domain/models/config_schema.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/domain/models/plan.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/domain/models/project_context.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/domain/models/session.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/inbound/init.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/action_executor.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/action_factory.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/context_service.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/init_service.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/parser_metadata.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/parser_reporting.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/planning_service.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/session_planner.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/session_replanner.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/session_service.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/update_checker.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/utils/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/utils/diff.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/utils/editor_names.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/utils/interruptible_call.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/utils/io.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/utils/markdown.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/utils/paths.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/utils/serialization.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/utils/session_notices.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/utils/string.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/utils/terminal.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/prompts.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/registries/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/registries/infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/registries/reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/registries/validators.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/MRP.md +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/config/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/config/config.yaml +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/config/init.context +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/config/prompts/architect.md +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/config/prompts/assistant.md +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/config/prompts/debugger.md +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/config/prompts/developer.md +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/config/prompts/pathfinder.md +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/config/prompts/prototyper.md +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/templates/ARCHITECTURE.md +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/templates/PROJECT.md +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/templates/case-file.md +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/templates/ci.md +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/templates/component-design.md +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/templates/milestone.md +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/templates/pre-commit.md +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/templates/specification-document.md +0 -0
- {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/resources/templates/vertical-slice.md +0 -0
|
@@ -283,13 +283,11 @@ def _run_health_checks(config_service: IConfigService) -> None:
|
|
|
283
283
|
|
|
284
284
|
|
|
285
285
|
_GIT_PULL_TIMEOUT_SECONDS = 15
|
|
286
|
-
_PULL_SKIPPED_WARNING = "⚠ Workspace pull skipped
|
|
287
|
-
_PULL_TIMEOUT_WARNING = "⚠ Workspace pull timed out
|
|
286
|
+
_PULL_SKIPPED_WARNING = "⚠ Workspace pull skipped."
|
|
287
|
+
_PULL_TIMEOUT_WARNING = "⚠ Workspace pull timed out."
|
|
288
288
|
_PULL_GIT_UNAVAILABLE_WARNING = "⚠ Workspace pull skipped; git is unavailable."
|
|
289
289
|
_PULL_UP_TO_DATE_NOTICE = "✓ Workspace up-to-date with remote"
|
|
290
|
-
|
|
291
|
-
_PULL_DETACHED_HEAD_NOTICE = "✓ Workspace pull skipped; detached HEAD"
|
|
292
|
-
_PULL_NO_UPSTREAM_NOTICE = "✓ Workspace pull skipped; no upstream branch"
|
|
290
|
+
_PULL_SKIPPED_NOTICE = "✓ Workspace pull skipped"
|
|
293
291
|
_IN_PROGRESS_GIT_MARKERS = (
|
|
294
292
|
"rebase-merge",
|
|
295
293
|
"rebase-apply",
|
|
@@ -325,11 +323,12 @@ def _pull_workspace_on_start(
|
|
|
325
323
|
The pull runs only when ``workspace.pull`` is enabled and the workspace is
|
|
326
324
|
a Git repository, so a disabled toggle or a non-repository directory stays
|
|
327
325
|
silent. A detached HEAD, a missing upstream, or an in-progress operation
|
|
328
|
-
reports one checkmark notice, because the user needs a pull outcome
|
|
329
|
-
every run. A dirty worktree, a failed
|
|
330
|
-
git binary reports one warning and
|
|
331
|
-
successful fast-forward names the number
|
|
332
|
-
that moves no commit confirms the workspace
|
|
326
|
+
reports one generic checkmark notice, because the user needs a pull outcome
|
|
327
|
+
on every run without the diagnostic detail. A dirty worktree, a failed
|
|
328
|
+
pull, a timeout, or an unavailable git binary reports one warning and
|
|
329
|
+
leaves the workspace unchanged. A successful fast-forward names the number
|
|
330
|
+
of commits it moved, and a pull that moves no commit confirms the workspace
|
|
331
|
+
is up to date.
|
|
333
332
|
|
|
334
333
|
The Git process is injected through ``run_func`` so every decision is
|
|
335
334
|
testable without spawning a real repository.
|
|
@@ -352,16 +351,15 @@ def _fast_forward_workspace(git_run: Callable[..., Any]) -> None:
|
|
|
352
351
|
|
|
353
352
|
Each precondition is probed before the pull so an unsafe state never
|
|
354
353
|
reaches ``git pull``. A dirty worktree reports one warning, while every
|
|
355
|
-
other unsafe state reports one checkmark notice so the user always
|
|
356
|
-
pull outcome.
|
|
354
|
+
other unsafe state reports one generic checkmark notice so the user always
|
|
355
|
+
sees a pull outcome.
|
|
357
356
|
"""
|
|
358
357
|
skip = _pull_skip_reason(git_run)
|
|
359
358
|
if skip is not None:
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
_warn_pull(message)
|
|
359
|
+
if skip:
|
|
360
|
+
_warn_pull(_PULL_SKIPPED_WARNING)
|
|
363
361
|
else:
|
|
364
|
-
_notice_pull(
|
|
362
|
+
_notice_pull(_PULL_SKIPPED_NOTICE)
|
|
365
363
|
return
|
|
366
364
|
before = _read_head(git_run)
|
|
367
365
|
result = git_run(
|
|
@@ -377,33 +375,31 @@ def _fast_forward_workspace(git_run: Callable[..., Any]) -> None:
|
|
|
377
375
|
_report_fast_forward(git_run, before, _read_head(git_run))
|
|
378
376
|
|
|
379
377
|
|
|
380
|
-
def _pull_skip_reason(
|
|
381
|
-
|
|
382
|
-
) -> Optional[tuple[str, bool]]:
|
|
383
|
-
"""Return the outcome text and severity, or None when the pull may proceed.
|
|
378
|
+
def _pull_skip_reason(git_run: Callable[..., Any]) -> Optional[bool]:
|
|
379
|
+
"""Return the skip severity, or None when the pull may proceed.
|
|
384
380
|
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
checkmark notice (``False``). A dirty worktree
|
|
388
|
-
warning, because tracked changes can conflict.
|
|
381
|
+
Every skip prints one generic notice, so the caller only needs to know
|
|
382
|
+
whether an attention-worthy warning replaces it. The boolean marks a
|
|
383
|
+
warning (``True``) versus a checkmark notice (``False``). A dirty worktree
|
|
384
|
+
returns the warning, because tracked changes can conflict.
|
|
389
385
|
"""
|
|
390
386
|
git_dir = Path.cwd() / ".git"
|
|
391
387
|
if any((git_dir / marker).exists() for marker in _IN_PROGRESS_GIT_MARKERS):
|
|
392
|
-
return
|
|
388
|
+
return False
|
|
393
389
|
detached = git_run(
|
|
394
390
|
["git", "symbolic-ref", "-q", "HEAD"],
|
|
395
391
|
capture_output=True,
|
|
396
392
|
timeout=_GIT_PULL_TIMEOUT_SECONDS,
|
|
397
393
|
)
|
|
398
394
|
if detached.returncode != 0:
|
|
399
|
-
return
|
|
395
|
+
return False
|
|
400
396
|
upstream = git_run(
|
|
401
397
|
["git", "rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"],
|
|
402
398
|
capture_output=True,
|
|
403
399
|
timeout=_GIT_PULL_TIMEOUT_SECONDS,
|
|
404
400
|
)
|
|
405
401
|
if upstream.returncode != 0:
|
|
406
|
-
return
|
|
402
|
+
return False
|
|
407
403
|
status = git_run(
|
|
408
404
|
["git", "status", "--porcelain"],
|
|
409
405
|
capture_output=True,
|
|
@@ -416,7 +412,7 @@ def _pull_skip_reason(
|
|
|
416
412
|
if line and not line.startswith("??")
|
|
417
413
|
]
|
|
418
414
|
if tracked_changes:
|
|
419
|
-
return
|
|
415
|
+
return True
|
|
420
416
|
return None
|
|
421
417
|
|
|
422
418
|
|
|
@@ -202,7 +202,7 @@ Attribution is deterministic: SHA → run → run-level + per-job conclusion (ne
|
|
|
202
202
|
|
|
203
203
|
Key behaviors:
|
|
204
204
|
|
|
205
|
-
1. **Automatic SHA and BASE resolution.** `SHA` defaults to current `HEAD` (or `COMMIT=<sha>`), and `BASE` resolves per workflow to the most recent ancestor of `SHA` that carries a run for that workflow
|
|
205
|
+
1. **Automatic SHA and BASE resolution.** `SHA` defaults to current `HEAD` (or `COMMIT=<sha>`), and `BASE` resolves per workflow to the most recent ancestor of `SHA` that carries a run for that workflow. The target fetches one bounded list of the workflow's latest runs (`BASE_SCAN`, default 200) and intersects it with the newest `BASE_DEPTH` ancestors (`git rev-list`, default 50), so resolution costs one API call instead of one per ancestor. An explicit `BASE=<sha>` pins the baseline verbatim and skips resolution; if the pinned commit carries no run for the workflow, the target fails safe as an unknown base.
|
|
206
206
|
2. **Registration lag is tolerated by a bounded retry.** CI can fail to register a run for the pushed SHA immediately. The target polls `gh run list --commit <sha>` up to `RETRY_POLLS × RETRY_SLEEP` (default 10 × 2s ≈ 20s) before attributing. It fails safe if the run never registers.
|
|
207
207
|
3. **No CI is non-blocking.** If the repository has no workflow files under `.github/workflows/` (`*.yml`/`*.yaml`), the target logs `No CI configured - skipping attribution` and exits 0.
|
|
208
208
|
4. **Workflow names with spaces stay whole.** The target reads workflow names one line at a time. A name such as `Publish to PyPI` is attributed as one workflow.
|
|
@@ -214,6 +214,7 @@ RETRY_POLLS ?= 10
|
|
|
214
214
|
RETRY_SLEEP ?= 2
|
|
215
215
|
DETAIL_LINES ?= 50
|
|
216
216
|
BASE_DEPTH ?= 50
|
|
217
|
+
BASE_SCAN ?= 200
|
|
217
218
|
BASE ?=
|
|
218
219
|
|
|
219
220
|
ci-watch: _preflight
|
|
@@ -250,9 +251,10 @@ ci-watch: _preflight
|
|
|
250
251
|
while IFS= read -r WF; do \
|
|
251
252
|
NEW=$$(gh run list --commit "$$SHA" --workflow "$$WF" --json databaseId --jq '.[0].databaseId'); \
|
|
252
253
|
gh run watch "$$NEW" --exit-status >/dev/null 2>&1 || true; \
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
254
|
+
NEWMETA=$$(gh run view "$$NEW" --json conclusion,jobs --jq '.conclusion, ([.jobs[] | select(.conclusion=="failure") | .name] | sort | join(",")), ([.jobs[] | select(.conclusion=="failure") | .steps[]? | select(.conclusion=="failure") | .name] | sort | join(", "))'); \
|
|
255
|
+
NEWCONC=$$(printf '%s\n' "$$NEWMETA" | sed -n '1p'); \
|
|
256
|
+
NEWFAIL=$$(printf '%s\n' "$$NEWMETA" | sed -n '2p'); \
|
|
257
|
+
NEWSTEPS=$$(printf '%s\n' "$$NEWMETA" | sed -n '3p'); \
|
|
256
258
|
if [ -n "$$NEWSTEPS" ]; then \
|
|
257
259
|
echo "$$WF: failing step(s): $$NEWSTEPS (run $$NEW)"; \
|
|
258
260
|
gh run view "$$NEW" --log-failed 2>/dev/null | awk -F'\t' '{ 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\]/ || l ~ /^##\[endgroup\]/) next; gsub(/^##\[error\]/,"Error: ",l); print l }' | tail -n $(DETAIL_LINES) | sed 's/^/ /'; \
|
|
@@ -272,33 +274,36 @@ ci-watch: _preflight
|
|
|
272
274
|
echo "$$WF: unknown conclusion '$$NEWCONC' on run $$NEW blocks the session." >&2; \
|
|
273
275
|
STATUS=1; continue; \
|
|
274
276
|
fi; \
|
|
275
|
-
BASE="$(BASE)";
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
277
|
+
BASE="$(BASE)"; OLD=""; \
|
|
278
|
+
if [ -n "$$BASE" ]; then \
|
|
279
|
+
OLD=$$(gh run list --commit "$$BASE" --workflow "$$WF" --json databaseId --jq '.[0].databaseId'); \
|
|
280
|
+
else \
|
|
281
|
+
RUNLIST=$${TMPDIR:-/tmp}/ci-watch-runs.$$$$; \
|
|
282
|
+
gh run list --workflow "$$WF" -L $(BASE_SCAN) --json headSha,databaseId --jq '.[] | "\(.headSha) \(.databaseId)"' > "$$RUNLIST" 2>/dev/null; \
|
|
283
|
+
for CUR in $$(git rev-list -n $(BASE_DEPTH) "$$SHA^" 2>/dev/null); do \
|
|
284
|
+
OLD=$$(awk -v sha="$$CUR" '$$1 == sha { print $$2; exit }' "$$RUNLIST"); \
|
|
285
|
+
if [ -n "$$OLD" ]; then BASE="$$CUR"; break; fi; \
|
|
286
|
+
done; \
|
|
287
|
+
rm -f "$$RUNLIST"; \
|
|
288
|
+
fi; \
|
|
284
289
|
if [ -z "$$BASE" ]; then \
|
|
285
290
|
echo "$$WF: BLOCKING failure ($$NEWFAIL) - no run-bearing ancestor (unknown base) - YOUR regression"; \
|
|
286
291
|
echo "$$WF: no run-bearing ancestor within $(BASE_DEPTH) commits, so the baseline is unknown." >&2; \
|
|
287
292
|
STATUS=1; continue; \
|
|
288
293
|
fi; \
|
|
289
|
-
OLD=$$(gh run list --commit "$$BASE" --workflow "$$WF" --json databaseId --jq '.[0].databaseId'); \
|
|
290
294
|
if [ -z "$$OLD" ]; then \
|
|
291
295
|
echo "$$WF: BLOCKING failure ($$NEWFAIL) - pinned base has no run (unknown base) - YOUR regression"; \
|
|
292
296
|
echo "$$WF: pinned base $$BASE carries no run for this workflow." >&2; \
|
|
293
297
|
STATUS=1; continue; \
|
|
294
298
|
fi; \
|
|
295
|
-
|
|
299
|
+
OLDMETA=$$(gh run view "$$OLD" --json jobs --jq '(.jobs | length), ([.jobs[] | select(.conclusion=="failure") | .name] | sort | join(","))'); \
|
|
300
|
+
OLDJOBS=$$(printf '%s\n' "$$OLDMETA" | sed -n '1p'); \
|
|
296
301
|
if [ "$$OLDJOBS" = "0" ]; then \
|
|
297
302
|
echo "$$WF: BLOCKING failure ($$NEWFAIL) - base run is job-less (invalid workflow, not green) - YOUR regression"; \
|
|
298
303
|
echo "$$WF: base run $$OLD carries zero jobs, so it cannot prove a green baseline." >&2; \
|
|
299
304
|
STATUS=1; continue; \
|
|
300
305
|
fi; \
|
|
301
|
-
OLDFAIL=$$(
|
|
306
|
+
OLDFAIL=$$(printf '%s\n' "$$OLDMETA" | sed -n '2p'); \
|
|
302
307
|
SUBSET=$$(awk -v new="$$NEWFAIL" -v old="$$OLDFAIL" 'BEGIN { n=split(new,na,","); m=split(old,oa,","); for (i=1;i<=n;i++) { if (na[i]=="") continue; f=0; for (j=1;j<=m;j++) { if (oa[j]==na[i]) { f=1; break } } if (!f) { print "regression"; exit } } print "pre-existing" }' </dev/null); \
|
|
303
308
|
if [ "$$SUBSET" = "pre-existing" ]; then \
|
|
304
309
|
echo "$$WF: pre-existing BLOCKING failure ($$NEWFAIL) - not yours"; \
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/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.dev1421 → teddy_cli-0.1.17.dev1423}/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.dev1421 → teddy_cli-0.1.17.dev1423}/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.dev1421 → teddy_cli-0.1.17.dev1423}/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.dev1421 → teddy_cli-0.1.17.dev1423}/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.dev1421 → teddy_cli-0.1.17.dev1423}/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.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/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.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/utils/markdown.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/utils/paths.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/utils/serialization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/utils/string.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/core/utils/terminal.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/registries/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/registries/reviewer.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/src/teddy_executor/registries/validators.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1423}/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.dev1421 → teddy_cli-0.1.17.dev1423}/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
|