teddy-cli 0.1.17.dev1275__tar.gz → 0.1.17.dev1276__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.dev1275 → teddy_cli-0.1.17.dev1276}/PKG-INFO +1 -1
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/pyproject.toml +1 -1
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/resources/MRP.xml +2 -1
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/resources/config/prompts/architect.xml +1 -1
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/resources/config/prompts/developer.xml +1 -1
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/resources/templates/ARCHITECTURE.md +1 -1
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/resources/templates/PROJECT.md +1 -1
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/resources/templates/makefile.md +43 -16
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/.gitignore +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/LICENSE +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/__main__.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/container.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/domain/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/domain/models/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/domain/models/change_set.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/domain/models/plan.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/domain/models/project_context.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/domain/models/session.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/inbound/init.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/action_executor.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/action_factory.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/context_service.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/init_service.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/parser_metadata.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/parser_reporting.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/planning_service.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/session_planner.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/session_replanner.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/session_service.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/update_checker.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/utils/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/utils/diff.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/utils/io.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/utils/markdown.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/utils/paths.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/utils/serialization.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/utils/string.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/utils/terminal.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/prompts.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/registries/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/registries/infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/registries/reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/registries/validators.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/resources/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/resources/config/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/resources/config/config.yaml +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/resources/config/init.context +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/resources/config/prompts/assistant.xml +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/resources/config/prompts/debugger.xml +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/resources/config/prompts/pathfinder.xml +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/resources/config/prompts/prototyper.xml +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/resources/templates/case-file.md +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/resources/templates/ci.md +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/resources/templates/component-design.md +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/resources/templates/milestone.md +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/resources/templates/pre-commit.md +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/resources/templates/specification-document.md +0 -0
- {teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/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.dev1276"
|
|
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" }
|
|
@@ -50,7 +50,8 @@ NOTES:
|
|
|
50
50
|
2. Commit Message: Use Conventional Commits `'<type>(<scope>): <description>'` in single quotes (imperative mood; append `!` for breaking changes) on a single line.
|
|
51
51
|
3. Execution: Run `make commit '<type>(<scope>): <description>'`. This stages all local changes (`git add .`) and runs Git's local hooks before committing.
|
|
52
52
|
4. Post-conditions: All tests MUST pass: the post-commit hook reverts automatically on failure and cannot be bypassed.
|
|
53
|
-
5. Push at Conclusion: In the Conclusion phase, run `make push` to rebase
|
|
53
|
+
5. Push at Conclusion: In the Conclusion phase, run `make push` to rebase and push.
|
|
54
|
+
6. If needed: to verify remote CI run `make ci-watch` to monitor workflow runs and to inspect results: use `make logs <run-id> '<step-name>'` for full logs.
|
|
54
55
|
</rule>
|
|
55
56
|
|
|
56
57
|
<rule n="7" name="Standardized Plan Types">
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
<phase n="4" name="Conclusion">
|
|
36
36
|
<goal>Clean up the workspace, commit changes, push, and hand off to the next agent.</goal>
|
|
37
37
|
<step n="1" name="Cleanup">Delete temporary files, scratchpads, and diagnostic notes.</step>
|
|
38
|
-
<step n="2" name="Commit and Push">Execute `make commit`, then run `make push
|
|
38
|
+
<step n="2" name="Commit and Push">Execute `make commit`, then run `make push`.</step>
|
|
39
39
|
<step n="3" name="Handoff">Message the user with instructions to start the next session, including the new Vertical Slice as a reference file. Route to the Prototyper if the slice contains unresolved Key Unknowns; otherwise route directly to the Developer.</step>
|
|
40
40
|
</phase>
|
|
41
41
|
</workflow>
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
|
|
111
111
|
<phase n="7" name="Conclusion">
|
|
112
112
|
<goal>Finalize remote synchronization and dynamically route the next session handoff.</goal>
|
|
113
|
-
<step n="1" name="Remote Sync">Run `make push` to push commits and inspect CI results. If blocking test failures occur, fix them immediately, commit, and push again. For non-blocking quality gate issues, address them if contained or record them in the roadmap in `docs/project/PROJECT.md`.</step>
|
|
113
|
+
<step n="1" name="Remote Sync">Run `make push` to push commits, then run `make ci-watch` to monitor and inspect remote CI results. If blocking test failures occur, fix them immediately, commit, and push again. For non-blocking quality gate issues, address them if contained or record them in the roadmap in `docs/project/PROJECT.md`.</step>
|
|
114
114
|
<step n="2" name="Handoff">Message the user to route the next session based on milestone state: the Architect if the next slice is un-designed, the Prototyper if it has unresolved Key Unknowns, the Developer if ready to implement, or the Pathfinder if all milestone slices are complete.</step>
|
|
115
115
|
</phase>
|
|
116
116
|
</workflow>
|
|
@@ -17,7 +17,7 @@ This section defines foundational engineering practices. Each entry MUST be a sp
|
|
|
17
17
|
- **CI Pipeline:** Two parallel jobs — 1) Blocking OS matrix test suite with strict test coverage targets. 2) Non-blocking (continue-on-error: true) quality checks running fast formatters, linters, security/secret scanners, type checkers, and repository-wide structural checks (excluding sandboxes and third-party dependencies).
|
|
18
18
|
- **Pre-commit Hooks:** Scope (staged files only) and keep the local loop fast — formatters, secret scanners, and merge-conflict checks only. Move heavy, false-positive-prone checks (type checkers, security scanners, repository-wide structural checkers) to the non-blocking CI quality job, scoped to a non-default pre-commit stage.
|
|
19
19
|
- **Post-commit Execution:** Full test suite run on commit, automatic revert on failure.
|
|
20
|
-
- **Makefile Commands:** The `Makefile` is the canonical entry point for the VCP commit workflow and on-demand test runs. `make test` runs the full suite, `make commit '<msg>'` performs a LOCAL-ONLY VCP commit (it runs the pre-commit hooks once as an advisory auto-fix pass and commits WITHOUT `--no-verify`, so Git's own pre-commit hook is the real local gate, while the post-commit test gate remains unskippable), `make push` rebases
|
|
20
|
+
- **Makefile Commands:** The `Makefile` is the canonical entry point for the VCP commit workflow and on-demand test runs. `make test` runs the full suite, `make commit '<msg>'` performs a LOCAL-ONLY VCP commit (it runs the pre-commit hooks once as an advisory auto-fix pass and commits WITHOUT `--no-verify`, so Git's own pre-commit hook is the real local gate, while the post-commit test gate remains unskippable), `make push` rebases and pushes, `make ci-watch` watches remote CI and reports results (used by Developer at slice conclusion), and `make probe '<reason>'` runs the Remote Probing Protocol. See [docs/templates/makefile.md](docs/templates/makefile.md).
|
|
21
21
|
|
|
22
22
|
### Pre-commit Quick-Start
|
|
23
23
|
|
|
@@ -25,7 +25,7 @@ Defines the high-level artifact lifecycle and conventions for project management
|
|
|
25
25
|
- **Archiving Policy:** When and how completed artifacts are archived or deleted.
|
|
26
26
|
- **Spec Organization:** Specification documents live in a single flat directory `docs/project/specs/` and are reserved strictly for **permanent system invariants** — formats, contracts, protocols (e.g. the MRP), core data models, and non-negotiable architectural rules. Feature goals, requirements, and acceptance criteria belong in Milestone documents (`docs/project/milestones/`), not in specs. There is no ephemeral `specs/features/` lifecycle.
|
|
27
27
|
- **Run Environment:** Specify the project's designated environment/dependency manager (e.g., `uv`, `poetry`, `pip`) and prefix ALL execution commands with its runner (e.g., `uv run pytest`). The chosen runner MUST be reflected in the `Makefile`.
|
|
28
|
-
- **Build & Run Commands:** Document the standard commands in the project `Makefile` (see [docs/templates/makefile.md](docs/templates/makefile.md)). At minimum: `make test` (full suite), `make commit '<msg>'` (VCP), and `make probe '<reason>'` (Remote Probing Protocol).
|
|
28
|
+
- **Build & Run Commands:** Document the standard commands in the project `Makefile` (see [docs/templates/makefile.md](docs/templates/makefile.md)). At minimum: `make test` (full suite), `make commit '<msg>'` (VCP), `make push`, `make ci-watch` (CI monitoring), and `make probe '<reason>'` (Remote Probing Protocol).
|
|
29
29
|
- **Release Process:** Document how releases are cut. At minimum: (1) **Triage** the scope (patch/minor/major) from conventional commits since the last tag; (2) write **release notes** to `docs/project/releases/v<version>.md`; (3) bump the `version` field in the project manifest; (4) present the notes and version bump at an **approval gate**; (5) **commit** (`chore(release): bump version to <version>`) and **tag** (`git tag -a v<version>`); and (6) **publish** (e.g. create a GitHub Release). Adapt the concrete commands to the project's packaging and distribution channel.
|
|
30
30
|
|
|
31
31
|
## Templates
|
|
@@ -13,13 +13,21 @@ make commit 'feat(templates): add PROJECT.md template'
|
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
**What is `.PHONY`?**
|
|
16
|
-
`.PHONY` is a Makefile directive that declares `commit`, `push`, `probe`, `test`, and `logs` as phony targets — they do not correspond to actual files. Without `.PHONY`, if a file named `commit` or `probe` existed in the directory (e.g., a script called `commit`), Make would see it as up-to-date and skip the target entirely. By declaring them phony, Make always runs the recipe when you call `make commit`, `make push`, `make probe`, or `make test`.
|
|
16
|
+
`.PHONY` is a Makefile directive that declares `commit`, `push`, `ci-watch`, `probe`, `test`, and `logs` as phony targets — they do not correspond to actual files. Without `.PHONY`, if a file named `commit` or `probe` existed in the directory (e.g., a script called `commit`), Make would see it as up-to-date and skip the target entirely. By declaring them phony, Make always runs the recipe when you call `make commit`, `make push`, `make ci-watch`, `make probe`, or `make test`.
|
|
17
17
|
|
|
18
18
|
### Push
|
|
19
19
|
```shell
|
|
20
20
|
make push
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
+
### CI Watch
|
|
24
|
+
```shell
|
|
25
|
+
make ci-watch
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**What does `make ci-watch` do?**
|
|
29
|
+
`make ci-watch` resolves the commit hash from `HEAD` (or an explicit `COMMIT=<sha>`), polls GitHub Actions to allow for workflow registration lag, watches all running workflows for that commit, prints failing step details, and attributes regressions. It is used by the Developer at slice conclusion to verify remote CI without slowing down routine pushes.
|
|
30
|
+
|
|
23
31
|
### Test
|
|
24
32
|
```shell
|
|
25
33
|
make test
|
|
@@ -128,7 +136,21 @@ commit:
|
|
|
128
136
|
|
|
129
137
|
## Push (Deferred to Conclusion)
|
|
130
138
|
|
|
131
|
-
`make push`
|
|
139
|
+
`make push` is fast and non-blocking: it runs `git pull --rebase` and pushes local commits to remote.
|
|
140
|
+
|
|
141
|
+
### Example
|
|
142
|
+
|
|
143
|
+
```makefile
|
|
144
|
+
push:
|
|
145
|
+
git pull --rebase
|
|
146
|
+
git push
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**Usage:** `make push`
|
|
150
|
+
|
|
151
|
+
## CI Watch & Attribution
|
|
152
|
+
|
|
153
|
+
`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?**
|
|
132
154
|
|
|
133
155
|
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
156
|
|
|
@@ -141,24 +163,22 @@ When any step fails — blocking or not — the target prints the failing step's
|
|
|
141
163
|
|
|
142
164
|
Attribution is deterministic: SHA → run → run-level + per-job conclusion (never "the latest run").
|
|
143
165
|
|
|
144
|
-
|
|
166
|
+
Key behaviors:
|
|
145
167
|
|
|
146
|
-
1. **
|
|
147
|
-
2. **Registration lag is tolerated by a bounded retry.** CI may not have registered a run for the pushed SHA
|
|
148
|
-
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
|
|
168
|
+
1. **Automatic SHA and BASE resolution.** `SHA` defaults to current `HEAD` (or `COMMIT=<sha>`), and `BASE` defaults to `HEAD~1`.
|
|
169
|
+
2. **Registration lag is tolerated by a bounded retry.** CI may not have registered 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, then fails safe if the run never registers.
|
|
170
|
+
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.
|
|
149
171
|
|
|
150
172
|
### Example
|
|
151
173
|
|
|
152
174
|
```makefile
|
|
153
175
|
RETRY_POLLS ?= 10
|
|
154
|
-
RETRY_SLEEP ?=
|
|
176
|
+
RETRY_SLEEP ?= 2
|
|
155
177
|
DETAIL_LINES ?= 50
|
|
156
178
|
|
|
157
|
-
|
|
158
|
-
git
|
|
159
|
-
|
|
160
|
-
SHA=$$(git rev-parse HEAD); \
|
|
161
|
-
git push || exit $$?; \
|
|
179
|
+
ci-watch:
|
|
180
|
+
@SHA=$$(git rev-parse $${COMMIT:-HEAD}); \
|
|
181
|
+
BASE=$$(git rev-parse $${COMMIT:-HEAD}~1 2>/dev/null || echo ""); \
|
|
162
182
|
if [ -z "$$(ls .github/workflows/*.yml .github/workflows/*.yaml 2>/dev/null)" ]; then \
|
|
163
183
|
echo "No CI configured - skipping attribution"; \
|
|
164
184
|
exit 0; \
|
|
@@ -170,9 +190,9 @@ push:
|
|
|
170
190
|
ATTEMPTS=$$((ATTEMPTS + 1)); \
|
|
171
191
|
sleep $(RETRY_SLEEP); \
|
|
172
192
|
done; \
|
|
173
|
-
echo "
|
|
193
|
+
echo "Watching CI for $$SHA (base $${BASE:-none}) after $$ATTEMPTS poll(s)"; \
|
|
174
194
|
if [ -z "$$WFS" ]; then \
|
|
175
|
-
echo "CI: no run registered for $$SHA after $(RETRY_POLLS)
|
|
195
|
+
echo "CI: no run registered for $$SHA after $$(( $(RETRY_POLLS) * $(RETRY_SLEEP) ))s - fail-safe block"; \
|
|
176
196
|
exit 1; \
|
|
177
197
|
fi; \
|
|
178
198
|
for WF in $$WFS; do \
|
|
@@ -194,6 +214,10 @@ push:
|
|
|
194
214
|
fi; \
|
|
195
215
|
continue; \
|
|
196
216
|
fi; \
|
|
217
|
+
if [ -z "$$BASE" ]; then \
|
|
218
|
+
echo "$$WF: BLOCKING failure ($$NEWFAIL) — no base commit — YOUR regression"; \
|
|
219
|
+
STATUS=1; continue; \
|
|
220
|
+
fi; \
|
|
197
221
|
OLD=$$(gh run list --commit "$$BASE" --workflow "$$WF" --json databaseId --jq '.[0].databaseId'); \
|
|
198
222
|
if [ -z "$$OLD" ]; then \
|
|
199
223
|
echo "$$WF: BLOCKING failure ($$NEWFAIL) — base has no run (unknown base) — YOUR regression"; \
|
|
@@ -215,7 +239,9 @@ push:
|
|
|
215
239
|
exit $$STATUS
|
|
216
240
|
```
|
|
217
241
|
|
|
218
|
-
**Usage:**
|
|
242
|
+
**Usage:**
|
|
243
|
+
- `make ci-watch` (watches CI for current `HEAD`)
|
|
244
|
+
- `make ci-watch COMMIT=<sha>` (watches CI for a specific commit)
|
|
219
245
|
|
|
220
246
|
## Remote Probing Protocol (RPP)
|
|
221
247
|
|
|
@@ -273,4 +299,5 @@ logs:
|
|
|
273
299
|
- Post-commit hook lives at `.githooks/post-commit.py` and runs the full `uv run pytest` suite.
|
|
274
300
|
- Ensure `gh` (GitHub CLI) is authenticated for `make push`, the Remote Probing Protocol, and CI Log Extraction.
|
|
275
301
|
- The `make logs` target abstracts the Debugger's CI-log extraction (Phase 1, Step 2). See [CI Log Extraction](#ci-log-extraction).
|
|
276
|
-
- `make push` runs in the session Conclusion phase (see [Push (Deferred to Conclusion)](#push-deferred-to-conclusion)); it rebases
|
|
302
|
+
- `make push` runs in the session Conclusion phase (see [Push (Deferred to Conclusion)](#push-deferred-to-conclusion)); it rebases and pushes.
|
|
303
|
+
- `make ci-watch` monitors and attributes CI results for `HEAD` or an explicit commit (see [CI Watch & Attribution](#ci-watch--attribution)).
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/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.dev1275 → teddy_cli-0.1.17.dev1276}/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.dev1275 → teddy_cli-0.1.17.dev1276}/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.dev1275 → teddy_cli-0.1.17.dev1276}/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.dev1275 → teddy_cli-0.1.17.dev1276}/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.dev1275 → teddy_cli-0.1.17.dev1276}/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.dev1275 → teddy_cli-0.1.17.dev1276}/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.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/utils/markdown.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/utils/paths.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/utils/serialization.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/utils/string.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/core/utils/terminal.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/registries/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/registries/reviewer.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/src/teddy_executor/registries/validators.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/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
|
{teddy_cli-0.1.17.dev1275 → teddy_cli-0.1.17.dev1276}/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
|