teddy-cli 0.1.17.dev1209__tar.gz → 0.1.17.dev1210__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.dev1209 → teddy_cli-0.1.17.dev1210}/PKG-INFO +1 -1
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/pyproject.toml +1 -1
- teddy_cli-0.1.17.dev1210/src/teddy_executor/core/domain/models/drift_report.py +38 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/inbound/init.py +14 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/init_service.py +71 -8
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/.gitignore +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/LICENSE +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/__main__.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/container.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/domain/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/domain/models/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/domain/models/change_set.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/domain/models/plan.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/domain/models/project_context.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/domain/models/session.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/action_executor.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/action_factory.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/context_service.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/parser_metadata.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/parser_reporting.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/planning_service.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/session_planner.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/session_replanner.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/session_service.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/update_checker.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/utils/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/utils/diff.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/utils/io.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/utils/markdown.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/utils/serialization.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/utils/string.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/utils/terminal.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/prompts.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/registries/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/registries/infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/registries/reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/registries/validators.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/MRP.xml +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/config/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/config/config.yaml +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/config/init.context +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/config/prompts/architect.xml +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/config/prompts/assistant.xml +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/config/prompts/debugger.xml +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/config/prompts/developer.xml +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/config/prompts/pathfinder.xml +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/config/prompts/prototyper.xml +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/templates/ARCHITECTURE.md +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/templates/PROJECT.md +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/templates/case-file.md +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/templates/ci.md +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/templates/component-design.md +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/templates/makefile.md +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/templates/milestone.md +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/templates/pre-commit.md +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/templates/specification-document.md +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/resources/templates/task-brief.md +0 -0
- {teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/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.dev1210"
|
|
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" }
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"""Domain model describing drift between user files and bundled defaults.
|
|
2
|
+
|
|
3
|
+
Seam Items 3/4 (session-behaviour): ``InitService.check_drift`` returns this
|
|
4
|
+
immutable report so the CLI preflight can advise ``teddy init prompts`` /
|
|
5
|
+
``teddy init templates`` when the user's local copies have diverged from (or are
|
|
6
|
+
missing relative to) the bundled defaults.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from dataclasses import dataclass
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass(frozen=True)
|
|
13
|
+
class DriftReport:
|
|
14
|
+
"""Immutable summary of user files that diverge from bundled defaults.
|
|
15
|
+
|
|
16
|
+
Each field holds the *basenames* (e.g. ``pathfinder.xml``) of the affected
|
|
17
|
+
files, preserving the canonical manifest order for deterministic output.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
edited_prompts: tuple[str, ...] = ()
|
|
21
|
+
missing_prompts: tuple[str, ...] = ()
|
|
22
|
+
edited_templates: tuple[str, ...] = ()
|
|
23
|
+
missing_templates: tuple[str, ...] = ()
|
|
24
|
+
|
|
25
|
+
@property
|
|
26
|
+
def prompts_drifted(self) -> bool:
|
|
27
|
+
"""True when any user prompt is edited or missing."""
|
|
28
|
+
return bool(self.edited_prompts or self.missing_prompts)
|
|
29
|
+
|
|
30
|
+
@property
|
|
31
|
+
def templates_drifted(self) -> bool:
|
|
32
|
+
"""True when any user template is edited or missing."""
|
|
33
|
+
return bool(self.edited_templates or self.missing_templates)
|
|
34
|
+
|
|
35
|
+
@property
|
|
36
|
+
def has_drift(self) -> bool:
|
|
37
|
+
"""True when any user prompt or template has drifted from its default."""
|
|
38
|
+
return self.prompts_drifted or self.templates_drifted
|
{teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/inbound/init.py
RENAMED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
from abc import ABC, abstractmethod
|
|
2
2
|
|
|
3
|
+
from teddy_executor.core.domain.models.drift_report import DriftReport
|
|
4
|
+
|
|
3
5
|
|
|
4
6
|
class IInitUseCase(ABC):
|
|
5
7
|
"""
|
|
@@ -60,3 +62,15 @@ class IInitUseCase(ABC):
|
|
|
60
62
|
A human-readable status string (e.g., "Templates updated (11 files).").
|
|
61
63
|
"""
|
|
62
64
|
pass
|
|
65
|
+
|
|
66
|
+
@abstractmethod
|
|
67
|
+
def check_drift(self) -> DriftReport:
|
|
68
|
+
"""
|
|
69
|
+
Compares the user's prompts and templates against the bundled defaults.
|
|
70
|
+
|
|
71
|
+
Returns:
|
|
72
|
+
A DriftReport enumerating which ``.teddy/prompts/*.xml`` and
|
|
73
|
+
``docs/templates/*.md`` files are edited or missing relative to the
|
|
74
|
+
bundled defaults.
|
|
75
|
+
"""
|
|
76
|
+
pass
|
|
@@ -5,6 +5,7 @@ from importlib import resources
|
|
|
5
5
|
|
|
6
6
|
import yaml
|
|
7
7
|
|
|
8
|
+
from teddy_executor.core.domain.models.drift_report import DriftReport
|
|
8
9
|
from teddy_executor.core.ports.inbound.init import IInitUseCase
|
|
9
10
|
from teddy_executor.core.ports.outbound.file_system_manager import IFileSystemManager
|
|
10
11
|
|
|
@@ -53,6 +54,19 @@ _TEMPLATE_FILES = [
|
|
|
53
54
|
"pre-commit.md",
|
|
54
55
|
]
|
|
55
56
|
|
|
57
|
+
# Bundled prompt XMLs copied into a project's ``.teddy/prompts/`` by
|
|
58
|
+
# ``_init_prompts`` and compared by ``check_drift``. Kept as a fixed manifest
|
|
59
|
+
# (mirroring ``_TEMPLATE_FILES``) so the copy routine and the drift check share
|
|
60
|
+
# one single source of truth.
|
|
61
|
+
_PROMPT_FILES = [
|
|
62
|
+
"architect.xml",
|
|
63
|
+
"assistant.xml",
|
|
64
|
+
"debugger.xml",
|
|
65
|
+
"developer.xml",
|
|
66
|
+
"pathfinder.xml",
|
|
67
|
+
"prototyper.xml",
|
|
68
|
+
]
|
|
69
|
+
|
|
56
70
|
|
|
57
71
|
class InitService(IInitUseCase):
|
|
58
72
|
"""
|
|
@@ -189,14 +203,7 @@ class InitService(IInitUseCase):
|
|
|
189
203
|
"""
|
|
190
204
|
return self._copy_bundled_files(
|
|
191
205
|
dest_dir=".teddy/prompts",
|
|
192
|
-
filenames=
|
|
193
|
-
"architect.xml",
|
|
194
|
-
"assistant.xml",
|
|
195
|
-
"debugger.xml",
|
|
196
|
-
"developer.xml",
|
|
197
|
-
"pathfinder.xml",
|
|
198
|
-
"prototyper.xml",
|
|
199
|
-
],
|
|
206
|
+
filenames=_PROMPT_FILES,
|
|
200
207
|
resolve_content=lambda fname: self._get_default_content(f"prompts/{fname}"),
|
|
201
208
|
overwrite=overwrite,
|
|
202
209
|
)
|
|
@@ -285,3 +292,59 @@ class InitService(IInitUseCase):
|
|
|
285
292
|
"""
|
|
286
293
|
status = self._init_templates(overwrite=overwrite)
|
|
287
294
|
return f"Templates {status}."
|
|
295
|
+
|
|
296
|
+
def _classify_drift(
|
|
297
|
+
self,
|
|
298
|
+
dest_dir: str,
|
|
299
|
+
filenames: Sequence[str],
|
|
300
|
+
resolve_bundled: Callable[[str], str | None],
|
|
301
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
302
|
+
"""Partitions ``filenames`` into (edited, missing) against bundled defaults.
|
|
303
|
+
|
|
304
|
+
A file is MISSING when its user copy is absent. It is EDITED when the
|
|
305
|
+
user copy exists, a bundled default is resolvable, and the two contents
|
|
306
|
+
differ. Unresolvable bundled defaults are skipped (never reported as
|
|
307
|
+
drift). Order is preserved from ``filenames`` for deterministic output.
|
|
308
|
+
"""
|
|
309
|
+
edited: list[str] = []
|
|
310
|
+
missing: list[str] = []
|
|
311
|
+
for fname in filenames:
|
|
312
|
+
user_path = f"{dest_dir}/{fname}"
|
|
313
|
+
if not self._file_system.path_exists(user_path):
|
|
314
|
+
missing.append(fname)
|
|
315
|
+
continue
|
|
316
|
+
bundled_content = resolve_bundled(fname)
|
|
317
|
+
if bundled_content is None:
|
|
318
|
+
continue
|
|
319
|
+
if self._file_system.read_file(user_path) != bundled_content:
|
|
320
|
+
edited.append(fname)
|
|
321
|
+
return tuple(edited), tuple(missing)
|
|
322
|
+
|
|
323
|
+
def check_drift(self) -> DriftReport:
|
|
324
|
+
"""Compares the user's prompts and templates against bundled defaults.
|
|
325
|
+
|
|
326
|
+
Reports which ``.teddy/prompts/*.xml`` and ``docs/templates/*.md`` files
|
|
327
|
+
have been EDITED away from their bundled default and which are MISSING,
|
|
328
|
+
so the CLI preflight can advise ``teddy init prompts`` /
|
|
329
|
+
``teddy init templates``. An absent ``.teddy/prompts/`` directory simply
|
|
330
|
+
makes every prompt report as MISSING (per-file check, no directory
|
|
331
|
+
special-casing).
|
|
332
|
+
"""
|
|
333
|
+
edited_prompts, missing_prompts = self._classify_drift(
|
|
334
|
+
dest_dir=".teddy/prompts",
|
|
335
|
+
filenames=_PROMPT_FILES,
|
|
336
|
+
resolve_bundled=lambda fname: self._get_default_content(f"prompts/{fname}"),
|
|
337
|
+
)
|
|
338
|
+
edited_templates, missing_templates = self._classify_drift(
|
|
339
|
+
dest_dir="docs/templates",
|
|
340
|
+
filenames=_TEMPLATE_FILES,
|
|
341
|
+
resolve_bundled=lambda fname: self._read_bundled_resource(
|
|
342
|
+
self._templates_dir, fname
|
|
343
|
+
),
|
|
344
|
+
)
|
|
345
|
+
return DriftReport(
|
|
346
|
+
edited_prompts=edited_prompts,
|
|
347
|
+
missing_prompts=missing_prompts,
|
|
348
|
+
edited_templates=edited_templates,
|
|
349
|
+
missing_templates=missing_templates,
|
|
350
|
+
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/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.dev1209 → teddy_cli-0.1.17.dev1210}/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.dev1209 → teddy_cli-0.1.17.dev1210}/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.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/ports/__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
|
{teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/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
|
{teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/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.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/utils/markdown.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/utils/serialization.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/utils/string.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/core/utils/terminal.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/registries/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/registries/reviewer.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/src/teddy_executor/registries/validators.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1209 → teddy_cli-0.1.17.dev1210}/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.dev1209 → teddy_cli-0.1.17.dev1210}/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
|
|
File without changes
|