teddy-cli 0.1.17.dev1184__tar.gz → 0.1.17.dev1186__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.dev1184 → teddy_cli-0.1.17.dev1186}/PKG-INFO +1 -1
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/pyproject.toml +1 -1
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/MRP.xml +2 -2
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/config/prompts/debugger.xml +1 -1
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/config/prompts/developer.xml +1 -1
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/templates/PROJECT.md +1 -0
- teddy_cli-0.1.17.dev1186/src/teddy_executor/resources/templates/pre-commit.md +149 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/.gitignore +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/LICENSE +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/__main__.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/container.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/domain/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/domain/models/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/domain/models/change_set.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/domain/models/plan.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/domain/models/project_context.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/domain/models/session.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/inbound/init.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/action_executor.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/action_factory.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/context_service.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/init_service.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/parser_metadata.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/parser_reporting.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/planning_service.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/session_planner.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/session_replanner.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/session_service.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/update_checker.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/utils/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/utils/diff.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/utils/io.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/utils/markdown.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/utils/serialization.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/utils/string.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/utils/terminal.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/prompts.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/registries/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/registries/infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/registries/reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/registries/validators.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/config/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/config/config.yaml +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/config/init.context +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/config/prompts/architect.xml +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/config/prompts/assistant.xml +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/config/prompts/pathfinder.xml +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/config/prompts/prototyper.xml +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/templates/ARCHITECTURE.md +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/templates/case-file.md +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/templates/ci.md +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/templates/component-design.md +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/templates/makefile.md +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/templates/milestone.md +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/templates/specification-document.md +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/templates/task-brief.md +0 -0
- {teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/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.dev1186"
|
|
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" }
|
|
@@ -79,11 +79,11 @@ WIP & REMINDERS:
|
|
|
79
79
|
7. You are strictly forbidden from wasting turns sending a `## Message` to the user about a validation error. Validation errors are internal formatting mistakes; silently fix and resubmit.
|
|
80
80
|
</rule>
|
|
81
81
|
|
|
82
|
-
<rule n="10" name="Conflict Resolution Protocol">If any git rebase/pull fails or conflicts: 1. Identify conflicted files via `git status`. 2. `READ` and surgically `EDIT` those files to resolve conflict markers. 3. Run the full test suite to verify correctness. 4. Stage resolved files via `git add`. 5. Complete the rebase via `EXECUTE git rebase --continue`.</rule>
|
|
82
|
+
<rule n="10" name="Conflict Resolution Protocol">If any git rebase/pull fails or conflicts: 1. Identify conflicted files via `git status`. 2. `READ` and surgically `EDIT` those files to resolve conflict markers. 3. Run the full test suite via `make test` to verify correctness. 4. Stage resolved files via `git add`. 5. Complete the rebase via `EXECUTE git rebase --continue`.</rule>
|
|
83
83
|
<rule n="11" name="Programmatic Edits">You may use `EXECUTE` with bash tools to modify files when surgical `EDIT` matching is brittle or for bulk changes. You MUST scope these actions to specific files and chain a verification command to output the results. Example: `sed 's/old/new/g' <file> > <file>.tmp && mv <file>.tmp <file> && git grep "new_string" <file>`</rule>
|
|
84
84
|
|
|
85
85
|
<rule n="12" name="Template-First Documentation & Tooling">
|
|
86
|
-
<description>Before creating or modifying a documentation file under docs/, you MUST first READ the corresponding template from docs/templates/. Templates define the required structure and format for each artifact type. Template files are named by artifact type (e.g., specification-document.md, task-brief.md, case-file.md, PROJECT.md, ARCHITECTURE.md). If no template exists for your artifact, READ the most similar one as a reference. The same template-first principle governs project tooling: before invoking any project command (e.g., `make commit`, `make probe`, `make logs`, `make test`), if the `Makefile` does not exist in the project root you MUST create one following the template at `docs/templates/makefile.md`; and if the `Makefile` already exists but lacks the required target, you MUST add that target following that same template. The `makefile.md` template defines how the targets SHOULD look (usage, recipe, and cross-platform conventions).</description>
|
|
86
|
+
<description>Before creating or modifying a documentation file under docs/, you MUST first READ the corresponding template from docs/templates/. Templates define the required structure and format for each artifact type. Template files are named by artifact type (e.g., specification-document.md, task-brief.md, case-file.md, PROJECT.md, ARCHITECTURE.md, ci.md, pre-commit.md, makefile.md). If no template exists for your artifact, READ the most similar one as a reference. The same template-first principle governs project tooling: before invoking any project command (e.g., `make commit`, `make probe`, `make logs`, `make test`), if the `Makefile` does not exist in the project root you MUST create one following the template at `docs/templates/makefile.md`; and if the `Makefile` already exists but lacks the required target, you MUST add that target following that same template. The `makefile.md` template defines how the targets SHOULD look (usage, recipe, and cross-platform conventions). Likewise, project infrastructure configuration is template-first: when creating or modifying a CI workflow you MUST follow `docs/templates/ci.md`, and when setting up or modifying pre-commit hooks (including the post-commit test gate) you MUST follow `docs/templates/pre-commit.md`; create either file if it does not exist.</description>
|
|
87
87
|
</rule>
|
|
88
88
|
|
|
89
89
|
<rule n="13" name="Communication Hygiene">
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
<step n="2" name="Red Phase">EXECUTE the newly created regression test in isolation to confirm it fails (RED). This empirically proves the test correctly captures the original bug. If the test passes, it does not accurately reproduce the bug; return to step 1 and refine the test.</step>
|
|
62
62
|
<step n="3" name="Apply Fix">Apply the verified hypothesis from the shadow file to the target production file(s) in `src/`. Execute the regression test again to confirm it now passes (GREEN). This proves the fix resolves the specific bug.</step>
|
|
63
63
|
<step n="4" name="MRE Re-Verification">Re-run the original MRE script against the fixed production code to confirm the exact original symptom is resolved. This ensures the regression test did not accidentally over-specify or under-specify the bug; the original reproduction scenario must still pass against the real fixed code.</step>
|
|
64
|
-
<step n="5" name="Integration Verification">EXECUTE the entire
|
|
64
|
+
<step n="5" name="Integration Verification">EXECUTE `make test` to run the entire suite (acceptance, unit and integration) and ensure no regressions were introduced. If any test fails, revert all changes via `git reset --hard` and return to the Investigation phase.</step>
|
|
65
65
|
</phase>
|
|
66
66
|
|
|
67
67
|
<phase n="7" name="Version Control">
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
<phase n="3" name="Integration">
|
|
70
70
|
<goal>Mandatory Gate ensuring continuous integration scoped at the deliverable level.</goal>
|
|
71
71
|
<step n="1" name="Global Test Run">
|
|
72
|
-
Run the full test suite (no filters). If it passes, proceed to Phase 4. If it fails, proceed to Fault Evaluation.
|
|
72
|
+
Run the full test suite via `make test` (no filters). If it passes, proceed to Phase 4. If it fails, proceed to Fault Evaluation.
|
|
73
73
|
</step>
|
|
74
74
|
<step n="2" name="Fault Evaluation">
|
|
75
75
|
Classify the failure using this empirical rule: If fixing the global suite requires modifying ANY application code outside the exact scope of your current deliverable, it is a Systemic Regression. If the fix ONLY requires modifying the current deliverable's components or updating existing test files, it is a Local Flaw.
|
|
@@ -44,6 +44,7 @@ Before creating or modifying any documentation artifact, agents MUST read the co
|
|
|
44
44
|
| `ARCHITECTURE.md` | System architecture document |
|
|
45
45
|
| `makefile.md` | Makefile (VCP commit + Remote Probing Protocol commands) |
|
|
46
46
|
| `ci.md` | CI workflow template (debug workflow for the Remote Probing Protocol) |
|
|
47
|
+
| `pre-commit.md` | Pre-commit framework setup (pre-commit + post-commit test gate) |
|
|
47
48
|
|
|
48
49
|
These files live in `docs/templates/` and are created or refreshed by `teddy init templates`.
|
|
49
50
|
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Pre-Commit Template
|
|
2
|
+
|
|
3
|
+
> **⚠️ This is an example template.** Adapt the runner, hook set, and tool-specific details (e.g., `uv run`, the pre-commit hook list) to match your project's actual setup. The concrete examples shown may not work verbatim in all environments.
|
|
4
|
+
|
|
5
|
+
This template documents how to set up the [Pre-commit](https://pre-commit.com/) framework as the project's local quality gate. It runs fast checks before a commit is recorded and the full test suite after, keeping the repository green-to-green.
|
|
6
|
+
|
|
7
|
+
Pre-commit has two stages:
|
|
8
|
+
|
|
9
|
+
- **`pre-commit`** — fast checks (formatters, linters, type checkers, secret scanners), scoped strictly to the files being committed.
|
|
10
|
+
- **`post-commit`** — the full test suite, run after the commit is recorded. If it fails, the commit is reverted while keeping the changes staged. This stage is **not** affected by `--no-verify` and is the only truly unskippable gate.
|
|
11
|
+
|
|
12
|
+
## 1. Install the Pre-commit framework
|
|
13
|
+
|
|
14
|
+
```shell
|
|
15
|
+
uv tool install pre-commit # or: pip install pre-commit # or: brew install pre-commit
|
|
16
|
+
pre-commit --version
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## 2. Create `.pre-commit-config.yaml`
|
|
20
|
+
|
|
21
|
+
Place this in the project root. Start with the universal hooks, then add security and project-local hooks that shell out to the project runner.
|
|
22
|
+
|
|
23
|
+
```yaml
|
|
24
|
+
# Exclude experimental sandboxes from every hook.
|
|
25
|
+
exclude: '^spikes/'
|
|
26
|
+
repos:
|
|
27
|
+
# ── Universal (every project) ──
|
|
28
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
29
|
+
rev: v6.0.0
|
|
30
|
+
hooks:
|
|
31
|
+
- id: trailing-whitespace
|
|
32
|
+
- id: end-of-file-fixer
|
|
33
|
+
- id: check-toml
|
|
34
|
+
- id: check-added-large-files
|
|
35
|
+
args: ['--maxkb=500']
|
|
36
|
+
- id: check-case-conflict
|
|
37
|
+
- id: check-merge-conflict
|
|
38
|
+
|
|
39
|
+
# ── Secrets & security ──
|
|
40
|
+
- repo: https://github.com/Yelp/detect-secrets
|
|
41
|
+
rev: v1.5.0
|
|
42
|
+
hooks:
|
|
43
|
+
- id: detect-secrets
|
|
44
|
+
args: ['--baseline', '.secrets.baseline']
|
|
45
|
+
- repo: https://github.com/PyCQA/bandit
|
|
46
|
+
rev: 1.7.9
|
|
47
|
+
hooks:
|
|
48
|
+
- id: bandit
|
|
49
|
+
args: ["-c", "pyproject.toml"]
|
|
50
|
+
exclude: ^(tests|spikes)/
|
|
51
|
+
|
|
52
|
+
# ── Language-specific: run tools through the project runner ──
|
|
53
|
+
- repo: local
|
|
54
|
+
hooks:
|
|
55
|
+
- id: ruff-lint
|
|
56
|
+
name: Ruff Linter
|
|
57
|
+
entry: uv run ruff check --fix --force-exclude
|
|
58
|
+
language: system
|
|
59
|
+
types: [python]
|
|
60
|
+
require_serial: true
|
|
61
|
+
- id: ruff-format
|
|
62
|
+
name: Ruff Formatter
|
|
63
|
+
entry: uv run ruff format --force-exclude
|
|
64
|
+
language: system
|
|
65
|
+
types: [python]
|
|
66
|
+
require_serial: true
|
|
67
|
+
- id: mypy
|
|
68
|
+
name: Mypy
|
|
69
|
+
entry: uv run mypy
|
|
70
|
+
language: system
|
|
71
|
+
types: [python]
|
|
72
|
+
require_serial: true
|
|
73
|
+
|
|
74
|
+
# ── Post-commit test gate (unskippable) ──
|
|
75
|
+
- repo: local
|
|
76
|
+
hooks:
|
|
77
|
+
- id: post-commit-test-gate
|
|
78
|
+
name: Post-commit test gate
|
|
79
|
+
entry: uv run python .githooks/post-commit.py
|
|
80
|
+
language: system
|
|
81
|
+
stages: [post-commit]
|
|
82
|
+
always_run: true
|
|
83
|
+
pass_filenames: false
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Tip:** Pin exact `rev` tags so every teammate runs identical checks.
|
|
87
|
+
|
|
88
|
+
## 3. Install the hooks
|
|
89
|
+
|
|
90
|
+
```shell
|
|
91
|
+
pre-commit install # pre-commit stage
|
|
92
|
+
pre-commit install --hook-type post-commit # post-commit test gate
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
`pre-commit install` writes the runner into `.git/hooks/`. The pre-commit stage runs only against the files you have staged; the post-commit stage runs the full suite after every commit.
|
|
96
|
+
|
|
97
|
+
## 4. Run hooks manually
|
|
98
|
+
|
|
99
|
+
```shell
|
|
100
|
+
pre-commit run --all-files # run all pre-commit hooks against the repo (first setup)
|
|
101
|
+
pre-commit run ruff-lint --all-files # run a single hook
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
`--all-files` is for the initial setup only; normal commits check just the staged files.
|
|
105
|
+
|
|
106
|
+
## 5. The post-commit test gate
|
|
107
|
+
|
|
108
|
+
The post-commit stage is the unskippable safety net. It invokes a project script (e.g. `.githooks/post-commit.py`) that:
|
|
109
|
+
|
|
110
|
+
1. Verifies the runner and test framework are available, printing a clear, actionable error if not.
|
|
111
|
+
2. Runs the full test suite via the project's test command (e.g. `make test` / `uv run pytest`).
|
|
112
|
+
3. On failure, reverts the commit with `git reset --soft HEAD~1`, keeping the changes staged for investigation.
|
|
113
|
+
|
|
114
|
+
```python
|
|
115
|
+
# .githooks/post-commit.py (sketch)
|
|
116
|
+
import subprocess
|
|
117
|
+
import sys
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
def main() -> None:
|
|
121
|
+
# Pre-flight: verify the runner + test framework are available.
|
|
122
|
+
# Run the full suite.
|
|
123
|
+
result = subprocess.run(["uv", "run", "pytest", "--tb=short", "-q"])
|
|
124
|
+
# On failure, revert the commit but keep the changes staged.
|
|
125
|
+
if result.returncode != 0:
|
|
126
|
+
print("TESTS FAILED \u2014 reverting commit")
|
|
127
|
+
subprocess.run(["git", "reset", "--soft", "HEAD~1"], check=True)
|
|
128
|
+
sys.exit(1)
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
if __name__ == "__main__":
|
|
132
|
+
main()
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Because the hook is declared with `stages: [post-commit]`, `git commit --no-verify` cannot bypass it.
|
|
136
|
+
|
|
137
|
+
## 6. Bypass (emergency only)
|
|
138
|
+
|
|
139
|
+
```shell
|
|
140
|
+
git commit --no-verify # skip the pre-commit stage for this commit
|
|
141
|
+
SKIP=ruff-lint git commit # skip a single hook
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
The **post-commit test gate is never bypassable**. Treat a pre-commit bypass as a temporary measure followed by a cleanup commit that resolves the underlying issue.
|
|
145
|
+
|
|
146
|
+
## Reference
|
|
147
|
+
- [ARCHITECTURE.md Template](./ARCHITECTURE.md) — pre-commit + post-commit conventions.
|
|
148
|
+
- [Makefile Template](./makefile.md) — `make test` and the VCP commit workflow.
|
|
149
|
+
- [Pre-commit documentation](https://pre-commit.com/)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/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.dev1184 → teddy_cli-0.1.17.dev1186}/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
|
{teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/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.dev1184 → teddy_cli-0.1.17.dev1186}/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.dev1184 → teddy_cli-0.1.17.dev1186}/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.dev1184 → teddy_cli-0.1.17.dev1186}/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.dev1184 → teddy_cli-0.1.17.dev1186}/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.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/utils/markdown.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/utils/serialization.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/utils/string.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/core/utils/terminal.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/registries/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/registries/reviewer.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/registries/validators.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/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
|
{teddy_cli-0.1.17.dev1184 → teddy_cli-0.1.17.dev1186}/src/teddy_executor/resources/templates/ci.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|