teddy-cli 0.1.17.dev1268__tar.gz → 0.1.17.dev1270__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.dev1268 → teddy_cli-0.1.17.dev1270}/PKG-INFO +1 -1
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/pyproject.toml +1 -1
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/MRP.xml +1 -1
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/templates/makefile.md +40 -10
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/templates/pre-commit.md +2 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/.gitignore +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/LICENSE +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/__main__.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/container.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/domain/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/domain/models/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/domain/models/change_set.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/domain/models/plan.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/domain/models/project_context.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/domain/models/session.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/inbound/init.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/action_executor.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/action_factory.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/context_service.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/init_service.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/parser_metadata.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/parser_reporting.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/planning_service.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/session_planner.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/session_replanner.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/session_service.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/update_checker.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/utils/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/utils/diff.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/utils/io.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/utils/markdown.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/utils/paths.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/utils/serialization.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/utils/string.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/utils/terminal.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/prompts.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/registries/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/registries/infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/registries/reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/registries/validators.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/config/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/config/config.yaml +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/config/init.context +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/config/prompts/architect.xml +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/config/prompts/assistant.xml +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/config/prompts/debugger.xml +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/config/prompts/developer.xml +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/config/prompts/pathfinder.xml +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/config/prompts/prototyper.xml +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/templates/ARCHITECTURE.md +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/templates/PROJECT.md +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/templates/case-file.md +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/templates/ci.md +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/templates/component-design.md +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/templates/milestone.md +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/templates/specification-document.md +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/templates/task-brief.md +0 -0
- {teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/resources/templates/vertical-slice.md +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "teddy-cli"
|
|
3
|
-
version = "0.1.17.
|
|
3
|
+
version = "0.1.17.dev1270"
|
|
4
4
|
description = "A local-first, file-based AI coding workflow that applies the UNIX philosophy to AI collaboration."
|
|
5
5
|
authors = [{ name = "Raphael Atteritano" }]
|
|
6
6
|
license = { text = "AGPL-3.0-only" }
|
|
@@ -52,7 +52,7 @@ NOTES:
|
|
|
52
52
|
2. Commit Message: Use Conventional Commits '<type>(<scope>): <description>' wrapped in single quotes. Use imperative mood. Append ! for breaking changes.
|
|
53
53
|
3. Execution: Run `make commit '<type>(<scope>): <description>'` to stage, run the local pre-commit hooks, and commit. `make commit` stages ALL local changes, including currently unstaged ones (`git add .`). The target commits WITHOUT `--no-verify`, so Git's own pre-commit hook is a real local gate; the post-commit test gate always runs and is unaffected.
|
|
54
54
|
4. Post-conditions: All tests MUST pass — the post-commit hook runs the full suite and reverts the commit on failure; this gate is unskippable and MUST NEVER be bypassed. The pre-commit stage is advisory (its failures do not block the local commit), but if it reported non-trivial quality-gate issues (e.g. file length), you MUST make a follow-up cleanup commit that resolves them before resuming feature work. Triage any resulting `[DEBT]` per the Technical Debt Triage policy — there is no `## Technical Debt` holding pen.
|
|
55
|
-
5. Push at Conclusion: In the Conclusion phase, run `make push` to rebase onto the remote, push, and
|
|
55
|
+
5. Push at Conclusion: In the Conclusion phase, run `make push` to rebase onto the remote, push, and report the CI results. `make push` answers ONE question only: did this push turn a BLOCKING gate red? 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. Only when the run-level conclusion is `failure` does attribution run: the base run (`origin/main` before the push) is classified as green, red, job-less, or absent, and a base that exists but is job-less is NOT green. A failure your push introduced (base green/absent/job-less -> new red) is YOUR regression (exit 1, fix before concluding); a failure already on the base (base red -> new red) is pre-existing (report and continue). Tests MUST always be fixed. A non-blocking quality result MUST be triaged per the Technical Debt Triage policy — fixed in-flight or explicitly scheduled into a slice or milestone — and MUST NOT be silently accepted.
|
|
56
56
|
</rule>
|
|
57
57
|
|
|
58
58
|
<rule n="7" name="Standardized Plan Types">
|
|
@@ -128,14 +128,18 @@ commit:
|
|
|
128
128
|
|
|
129
129
|
## Push (Deferred to Conclusion)
|
|
130
130
|
|
|
131
|
-
`make push` runs `git pull --rebase`, captures the base and the pushed SHA, pushes, then discovers **every** CI run for the pushed SHA (`gh run list --commit <sha>`) and waits for and reports each workflow with its jobs. It
|
|
131
|
+
`make push` runs `git pull --rebase`, captures the base and the pushed SHA, pushes, then discovers **every** CI run for the pushed SHA (`gh run list --commit <sha>`) and waits for and reports each workflow with its jobs. It answers ONE question: **did this push turn a BLOCKING gate red?**
|
|
132
132
|
|
|
133
|
-
|
|
133
|
+
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:
|
|
134
|
+
|
|
135
|
+
- **base green/absent/job-less → new red** = your regression → **exit 1** (fix before concluding).
|
|
134
136
|
- **base red → new red (same jobs)** = pre-existing → **report and exit 0** (do not wait, do not duplicate the fix).
|
|
135
|
-
- **all green** → PASSED
|
|
136
|
-
- **
|
|
137
|
+
- **all green / non-blocking** → PASSED → **exit 0**.
|
|
138
|
+
- **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).
|
|
139
|
+
|
|
140
|
+
When any step fails — blocking or not — the target also prints that step's log details via `gh run view <id> --log-failed` (ANSI/timestamp-stripped and indented), bounded to `DETAIL_LINES` lines (default 50), so the cause is visible without leaving the session.
|
|
137
141
|
|
|
138
|
-
Attribution is deterministic: SHA → run → per-job conclusion (never "the latest run").
|
|
142
|
+
Attribution is deterministic: SHA → run → run-level + per-job conclusion (never "the latest run").
|
|
139
143
|
|
|
140
144
|
Three behaviors make the attribution trustworthy:
|
|
141
145
|
|
|
@@ -148,6 +152,7 @@ Three behaviors make the attribution trustworthy:
|
|
|
148
152
|
```makefile
|
|
149
153
|
RETRY_POLLS ?= 10
|
|
150
154
|
RETRY_SLEEP ?= 1
|
|
155
|
+
DETAIL_LINES ?= 50
|
|
151
156
|
|
|
152
157
|
push:
|
|
153
158
|
git pull --rebase
|
|
@@ -172,14 +177,39 @@ push:
|
|
|
172
177
|
fi; \
|
|
173
178
|
for WF in $$WFS; do \
|
|
174
179
|
NEW=$$(gh run list --commit "$$SHA" --workflow "$$WF" --json databaseId --jq '.[0].databaseId'); \
|
|
175
|
-
OLD=$$(gh run list --commit "$$BASE" --workflow "$$WF" --json databaseId --jq '.[0].databaseId'); \
|
|
176
180
|
gh run watch "$$NEW" --exit-status >/dev/null 2>&1 || true; \
|
|
181
|
+
NEWCONC=$$(gh run view "$$NEW" --json conclusion --jq '.conclusion'); \
|
|
177
182
|
NEWFAIL=$$(gh run view "$$NEW" --json jobs --jq '[.jobs[] | select(.conclusion=="failure") | .name] | sort | join(",")'); \
|
|
178
|
-
|
|
179
|
-
if [ -
|
|
183
|
+
NEWSTEPS=$$(gh run view "$$NEW" --json jobs --jq '[.jobs[] | select(.conclusion=="failure") | .steps[]? | select(.conclusion=="failure") | .name] | sort | join(", ")'); \
|
|
184
|
+
if [ -n "$$NEWSTEPS" ]; then \
|
|
185
|
+
echo "$$WF: failing step(s): $$NEWSTEPS"; \
|
|
186
|
+
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/^/ /'; \
|
|
187
|
+
fi; \
|
|
188
|
+
if [ "$$NEWCONC" != "failure" ]; then \
|
|
189
|
+
if [ -n "$$NEWFAIL" ]; then \
|
|
190
|
+
echo "$$WF: PASSED (run=$$NEWCONC) — non-blocking failure(s) [$$NEWFAIL] — triage, does not block"; \
|
|
191
|
+
else \
|
|
192
|
+
echo "$$WF: PASSED"; \
|
|
193
|
+
fi; \
|
|
194
|
+
continue; \
|
|
195
|
+
fi; \
|
|
196
|
+
OLD=$$(gh run list --commit "$$BASE" --workflow "$$WF" --json databaseId --jq '.[0].databaseId'); \
|
|
197
|
+
if [ -z "$$OLD" ]; then \
|
|
198
|
+
echo "$$WF: BLOCKING failure ($$NEWFAIL) — base has no run (unknown base) — YOUR regression"; \
|
|
199
|
+
STATUS=1; continue; \
|
|
200
|
+
fi; \
|
|
201
|
+
OLDJOBS=$$(gh run view "$$OLD" --json jobs --jq '.jobs | length'); \
|
|
202
|
+
if [ "$$OLDJOBS" = "0" ]; then \
|
|
203
|
+
echo "$$WF: BLOCKING failure ($$NEWFAIL) — base run is job-less (invalid workflow, not green) — YOUR regression"; \
|
|
204
|
+
STATUS=1; continue; \
|
|
205
|
+
fi; \
|
|
180
206
|
OLDFAIL=$$(gh run view "$$OLD" --json jobs --jq '[.jobs[] | select(.conclusion=="failure") | .name] | sort | join(",")'); \
|
|
181
|
-
if [ "$$NEWFAIL" = "$$OLDFAIL" ]; then
|
|
182
|
-
|
|
207
|
+
if [ "$$NEWFAIL" = "$$OLDFAIL" ]; then \
|
|
208
|
+
echo "$$WF: pre-existing BLOCKING failure ($$NEWFAIL) — not yours"; \
|
|
209
|
+
else \
|
|
210
|
+
echo "$$WF: BLOCKING failure ($$NEWFAIL) — YOUR regression"; \
|
|
211
|
+
STATUS=1; \
|
|
212
|
+
fi; \
|
|
183
213
|
done; \
|
|
184
214
|
exit $$STATUS
|
|
185
215
|
```
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/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.dev1268 → teddy_cli-0.1.17.dev1270}/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.dev1268 → teddy_cli-0.1.17.dev1270}/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.dev1268 → teddy_cli-0.1.17.dev1270}/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.dev1268 → teddy_cli-0.1.17.dev1270}/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.dev1268 → teddy_cli-0.1.17.dev1270}/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.dev1268 → teddy_cli-0.1.17.dev1270}/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.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/utils/markdown.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/utils/paths.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/utils/serialization.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/utils/string.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/core/utils/terminal.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/registries/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/registries/reviewer.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/src/teddy_executor/registries/validators.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1268 → teddy_cli-0.1.17.dev1270}/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.dev1268 → teddy_cli-0.1.17.dev1270}/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
|