teddy-cli 0.1.17.dev1323__tar.gz → 0.1.17.dev1325__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.dev1323 → teddy_cli-0.1.17.dev1325}/PKG-INFO +1 -1
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/pyproject.toml +1 -1
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/templates/makefile.md +24 -13
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/.gitignore +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/LICENSE +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/README.md +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/__main__.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/container.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/domain/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/domain/models/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/domain/models/change_set.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/domain/models/plan.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/domain/models/project_context.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/domain/models/session.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/inbound/init.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/action_executor.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/action_factory.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/context_service.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/init_service.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/parser_metadata.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/parser_reporting.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/planning_service.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/session_planner.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/session_replanner.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/session_service.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/update_checker.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/utils/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/utils/diff.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/utils/io.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/utils/markdown.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/utils/paths.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/utils/serialization.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/utils/session_notices.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/utils/string.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/utils/terminal.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/prompts.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/registries/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/registries/infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/registries/reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/registries/validators.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/MRP.md +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/config/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/config/config.yaml +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/config/init.context +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/config/prompts/architect.md +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/config/prompts/assistant.md +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/config/prompts/debugger.md +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/config/prompts/developer.md +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/config/prompts/pathfinder.md +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/config/prompts/prototyper.md +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/templates/ARCHITECTURE.md +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/templates/PROJECT.md +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/templates/case-file.md +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/templates/ci.md +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/templates/component-design.md +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/templates/milestone.md +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/templates/pre-commit.md +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/templates/specification-document.md +0 -0
- {teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/resources/templates/vertical-slice.md +0 -0
|
@@ -153,12 +153,13 @@ push:
|
|
|
153
153
|
|
|
154
154
|
## CI Watch & Attribution
|
|
155
155
|
|
|
156
|
-
`make ci-watch` discovers **every** CI run for the target commit (`HEAD` by default, or `COMMIT=<sha>`), waits for and reports each workflow with its jobs. It answers ONE question: **did this commit turn a BLOCKING gate red?** Only include and configure this target if a remote CI pipeline is configured or planned for the project.
|
|
156
|
+
`make ci-watch` discovers **every** CI run for the target commit (`HEAD` by default, or `COMMIT=<sha>`), waits for and reports each workflow with its jobs. It answers ONE question: **did this commit turn a BLOCKING gate red?** Only push-triggered workflows are attributed; a downstream workflow that registers from a `workflow_run` event is not a regression in this commit. Only include and configure this target if a remote CI pipeline is configured or planned for the project.
|
|
157
157
|
|
|
158
158
|
The pushed RUN's own conclusion is authoritative: it already folds in `continue-on-error`, so a **non-blocking** job (e.g. the CI `Quality Checks` job) can NEVER block the session — it is reported as a triage item instead. Only when the run-level conclusion is `failure` does attribution run, comparing the pushed run's failing-JOB set against the base run's:
|
|
159
159
|
|
|
160
|
-
- **base green/absent/job-less → new red** = your regression → **exit
|
|
161
|
-
- **base red → new red (
|
|
160
|
+
- **base green/absent/job-less → new red** = your regression → **exit non-zero** (fix before concluding).
|
|
161
|
+
- **base red → new red (subset of the base's failing jobs)** = pre-existing → **report and exit 0** (do not wait, do not duplicate the fix).
|
|
162
|
+
- **unknown conclusion** (`timed_out`/`cancelled`/`startup_failure`) = the gate result is unknown → **fail-safe block** → **exit non-zero**.
|
|
162
163
|
- **all green / non-blocking** → PASSED → **exit 0**.
|
|
163
164
|
- **job-less base** → NOT green: a base run that exists but carries zero jobs (an invalid-workflow failure) is treated as an unknown base and fails safe (block).
|
|
164
165
|
|
|
@@ -168,7 +169,7 @@ Attribution is deterministic: SHA → run → run-level + per-job conclusion (ne
|
|
|
168
169
|
|
|
169
170
|
Key behaviors:
|
|
170
171
|
|
|
171
|
-
1. **Automatic SHA and BASE resolution.** `SHA` defaults to current `HEAD` (or `COMMIT=<sha>`), and `BASE`
|
|
172
|
+
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 (bounded by `BASE_DEPTH`, default 50).
|
|
172
173
|
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.
|
|
173
174
|
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.
|
|
174
175
|
|
|
@@ -178,10 +179,10 @@ Key behaviors:
|
|
|
178
179
|
RETRY_POLLS ?= 10
|
|
179
180
|
RETRY_SLEEP ?= 2
|
|
180
181
|
DETAIL_LINES ?= 50
|
|
182
|
+
BASE_DEPTH ?= 50
|
|
181
183
|
|
|
182
184
|
ci-watch:
|
|
183
185
|
@SHA=$$(git rev-parse $${COMMIT:-HEAD}); \
|
|
184
|
-
BASE=$$(git rev-parse $${COMMIT:-HEAD}~1 2>/dev/null || echo ""); \
|
|
185
186
|
if [ -z "$$(ls .github/workflows/*.yml .github/workflows/*.yaml 2>/dev/null)" ]; then \
|
|
186
187
|
echo "No CI configured - skipping attribution"; \
|
|
187
188
|
exit 0; \
|
|
@@ -193,7 +194,7 @@ ci-watch:
|
|
|
193
194
|
ATTEMPTS=$$((ATTEMPTS + 1)); \
|
|
194
195
|
sleep $(RETRY_SLEEP); \
|
|
195
196
|
done; \
|
|
196
|
-
echo "Watching CI for $$SHA
|
|
197
|
+
echo "Watching CI for $$SHA after $$ATTEMPTS poll(s)"; \
|
|
197
198
|
if [ -z "$$WFS" ]; then \
|
|
198
199
|
echo "CI: no run registered for $$SHA after $$(( $(RETRY_POLLS) * $(RETRY_SLEEP) ))s - fail-safe block"; \
|
|
199
200
|
exit 1; \
|
|
@@ -210,7 +211,7 @@ ci-watch:
|
|
|
210
211
|
echo " view all failed logs: make logs $$NEW"; \
|
|
211
212
|
echo " view specific step: make logs $$NEW '<step-name>'"; \
|
|
212
213
|
fi; \
|
|
213
|
-
if [ "$$NEWCONC"
|
|
214
|
+
if [ "$$NEWCONC" = "success" ]; then \
|
|
214
215
|
if [ -n "$$NEWFAIL" ]; then \
|
|
215
216
|
echo "$$WF: PASSED (run=$$NEWCONC) — non-blocking failure(s) [$$NEWFAIL] — triage, does not block"; \
|
|
216
217
|
else \
|
|
@@ -218,22 +219,32 @@ ci-watch:
|
|
|
218
219
|
fi; \
|
|
219
220
|
continue; \
|
|
220
221
|
fi; \
|
|
221
|
-
if [
|
|
222
|
-
echo "$$WF: BLOCKING
|
|
222
|
+
if [ "$$NEWCONC" != "failure" ]; then \
|
|
223
|
+
echo "$$WF: BLOCKING (run=$$NEWCONC) — unknown conclusion — fail-safe block"; \
|
|
223
224
|
STATUS=1; continue; \
|
|
224
225
|
fi; \
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
226
|
+
BASE=""; CUR="$$SHA"; DEPTH=0; \
|
|
227
|
+
while [ $$DEPTH -lt $(BASE_DEPTH) ]; do \
|
|
228
|
+
CUR=$$(git rev-parse "$$CUR~1" 2>/dev/null) || break; \
|
|
229
|
+
[ -n "$$CUR" ] || break; \
|
|
230
|
+
if [ -n "$$(gh run list --commit "$$CUR" --workflow "$$WF" --json databaseId --jq '.[0].databaseId')" ]; then \
|
|
231
|
+
BASE="$$CUR"; break; \
|
|
232
|
+
fi; \
|
|
233
|
+
DEPTH=$$((DEPTH + 1)); \
|
|
234
|
+
done; \
|
|
235
|
+
if [ -z "$$BASE" ]; then \
|
|
236
|
+
echo "$$WF: BLOCKING failure ($$NEWFAIL) — no run-bearing ancestor (unknown base) — YOUR regression"; \
|
|
228
237
|
STATUS=1; continue; \
|
|
229
238
|
fi; \
|
|
239
|
+
OLD=$$(gh run list --commit "$$BASE" --workflow "$$WF" --json databaseId --jq '.[0].databaseId'); \
|
|
230
240
|
OLDJOBS=$$(gh run view "$$OLD" --json jobs --jq '.jobs | length'); \
|
|
231
241
|
if [ "$$OLDJOBS" = "0" ]; then \
|
|
232
242
|
echo "$$WF: BLOCKING failure ($$NEWFAIL) — base run is job-less (invalid workflow, not green) — YOUR regression"; \
|
|
233
243
|
STATUS=1; continue; \
|
|
234
244
|
fi; \
|
|
235
245
|
OLDFAIL=$$(gh run view "$$OLD" --json jobs --jq '[.jobs[] | select(.conclusion=="failure") | .name] | sort | join(",")'); \
|
|
236
|
-
|
|
246
|
+
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); \
|
|
247
|
+
if [ "$$SUBSET" = "pre-existing" ]; then \
|
|
237
248
|
echo "$$WF: pre-existing BLOCKING failure ($$NEWFAIL) — not yours"; \
|
|
238
249
|
else \
|
|
239
250
|
echo "$$WF: BLOCKING failure ($$NEWFAIL) — YOUR regression"; \
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/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
|
|
File without changes
|
{teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/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
|
{teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/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.dev1323 → teddy_cli-0.1.17.dev1325}/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.dev1323 → teddy_cli-0.1.17.dev1325}/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.dev1323 → teddy_cli-0.1.17.dev1325}/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.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/utils/markdown.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/utils/paths.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/utils/serialization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/utils/string.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/core/utils/terminal.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/registries/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/registries/reviewer.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/src/teddy_executor/registries/validators.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1323 → teddy_cli-0.1.17.dev1325}/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.dev1323 → teddy_cli-0.1.17.dev1325}/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
|