teddy-cli 0.1.17.dev1257__tar.gz → 0.1.17.dev1259__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.dev1257 → teddy_cli-0.1.17.dev1259}/PKG-INFO +1 -1
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/pyproject.toml +1 -1
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +69 -41
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/.gitignore +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/LICENSE +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/__main__.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/container.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/change_set.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/plan.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/project_context.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/session.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/inbound/init.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/action_executor.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/action_factory.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/context_service.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/init_service.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/parser_metadata.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/parser_reporting.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/planning_service.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/session_planner.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/session_replanner.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/session_service.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/update_checker.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/diff.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/io.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/markdown.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/serialization.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/string.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/terminal.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/prompts.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/registries/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/registries/infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/registries/reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/registries/validators.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/MRP.xml +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/config/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/config/config.yaml +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/config/init.context +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/config/prompts/architect.xml +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/config/prompts/assistant.xml +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/config/prompts/debugger.xml +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/config/prompts/developer.xml +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/config/prompts/pathfinder.xml +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/config/prompts/prototyper.xml +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/templates/ARCHITECTURE.md +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/templates/PROJECT.md +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/templates/case-file.md +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/templates/ci.md +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/templates/component-design.md +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/templates/makefile.md +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/templates/milestone.md +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/templates/pre-commit.md +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/templates/specification-document.md +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/templates/task-brief.md +0 -0
- {teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/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.dev1259"
|
|
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" }
|
|
@@ -249,7 +249,48 @@ def _determine_session_name(name: Optional[str], message: Optional[str]) -> str:
|
|
|
249
249
|
return "session-auto"
|
|
250
250
|
|
|
251
251
|
|
|
252
|
-
def
|
|
252
|
+
def _resolve_initial_turn(session_manager: ISessionManager, session_name: str) -> int:
|
|
253
|
+
"""Resolves the process-relative turn baseline for the guardrails.
|
|
254
|
+
|
|
255
|
+
get_latest_turn returns a path string whose folder name is the turn ID. A
|
|
256
|
+
fresh session seeds turn 01 before the loop starts, so the baseline is 0; a
|
|
257
|
+
resume's latest turn is the last completed turn, so the baseline is that
|
|
258
|
+
turn. Non-numeric names (or test doubles) fall back to 0.
|
|
259
|
+
"""
|
|
260
|
+
latest_turn_path = session_manager.get_latest_turn(session_name)
|
|
261
|
+
try:
|
|
262
|
+
latest_turn = int(Path(latest_turn_path).name) if latest_turn_path else 0
|
|
263
|
+
return max(0, latest_turn - 1) if latest_turn_path else 0
|
|
264
|
+
except (ValueError, TypeError):
|
|
265
|
+
# Handle non-numeric turn names or MagicMocks in tests
|
|
266
|
+
return 0
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
def _emit_guard_termination(guard_reason: Optional[str]) -> None:
|
|
270
|
+
"""Prints a guardrail termination reason: first line red, remainder plain."""
|
|
271
|
+
reason = guard_reason or "YOLO guardrail limit reached."
|
|
272
|
+
lines = reason.lstrip("\n").split("\n", 1)
|
|
273
|
+
typer.secho("")
|
|
274
|
+
typer.secho(lines[0], fg=typer.colors.RED)
|
|
275
|
+
if len(lines) > 1:
|
|
276
|
+
typer.secho(lines[1])
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
def _should_exit_pipeline(pipeline: bool, report: Any) -> bool:
|
|
280
|
+
"""True when a pipeline run's report carries a MESSAGE action to exit on.
|
|
281
|
+
|
|
282
|
+
Short-circuits on ``not pipeline`` so a non-pipeline run never touches
|
|
283
|
+
report.action_logs (mirroring the original guard order).
|
|
284
|
+
"""
|
|
285
|
+
if not pipeline or not report.action_logs:
|
|
286
|
+
return False
|
|
287
|
+
return any(
|
|
288
|
+
(getattr(log_entry, "action_type", None) or "").upper() == "MESSAGE"
|
|
289
|
+
for log_entry in report.action_logs
|
|
290
|
+
)
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
def _orchestrate_session_loop( # noqa: PLR0913
|
|
253
294
|
container: Container,
|
|
254
295
|
session_name: str,
|
|
255
296
|
interactive: bool,
|
|
@@ -265,20 +306,7 @@ def _orchestrate_session_loop(
|
|
|
265
306
|
session_manager = container.resolve(ISessionManager)
|
|
266
307
|
|
|
267
308
|
# Resolve initial state for process-relative guardrails
|
|
268
|
-
|
|
269
|
-
try:
|
|
270
|
-
# get_latest_turn returns a path string; the turn ID is the folder name.
|
|
271
|
-
# For a fresh session, create_session seeds turn 01 (the initial request)
|
|
272
|
-
# BEFORE the loop starts, so the latest turn = 1. The loop then processes
|
|
273
|
-
# turn 01 again (turn_count starts at 1). Subtracting 1 makes the baseline
|
|
274
|
-
# 0 for fresh sessions so delta after turn 01 = 1.
|
|
275
|
-
# For resume, the latest turn is the last completed turn, and the loop
|
|
276
|
-
# processes the NEXT turn (turn_count = latest + 1), so delta is correct.
|
|
277
|
-
latest_turn = int(Path(latest_turn_path).name) if latest_turn_path else 0
|
|
278
|
-
initial_turn = max(0, latest_turn - 1) if latest_turn_path else 0
|
|
279
|
-
except (ValueError, TypeError):
|
|
280
|
-
# Handle non-numeric turn names or MagicMocks in tests
|
|
281
|
-
initial_turn = 0
|
|
309
|
+
initial_turn = _resolve_initial_turn(session_manager, session_name)
|
|
282
310
|
|
|
283
311
|
# Resolve initial cost for process-relative guardrails
|
|
284
312
|
initial_cost = session_manager.get_cumulative_cost(session_name)
|
|
@@ -338,23 +366,12 @@ def _orchestrate_session_loop(
|
|
|
338
366
|
turn_count, cumulative_cost, interactive
|
|
339
367
|
)
|
|
340
368
|
if not should_continue:
|
|
341
|
-
|
|
342
|
-
lines = reason.lstrip("\n").split("\n", 1)
|
|
343
|
-
typer.secho("")
|
|
344
|
-
typer.secho(lines[0], fg=typer.colors.RED)
|
|
345
|
-
if len(lines) > 1:
|
|
346
|
-
typer.secho(lines[1])
|
|
369
|
+
_emit_guard_termination(guard_reason)
|
|
347
370
|
break
|
|
348
371
|
|
|
349
372
|
# Pipeline mode: exit cleanly after the first ## Message
|
|
350
|
-
if pipeline
|
|
351
|
-
|
|
352
|
-
action_type = getattr(log_entry, "action_type", None) or ""
|
|
353
|
-
if action_type.upper() == "MESSAGE":
|
|
354
|
-
break # break inner for
|
|
355
|
-
else:
|
|
356
|
-
continue # no MESSAGE found, continue outer loop
|
|
357
|
-
break # MESSAGE found, exit session loop
|
|
373
|
+
if _should_exit_pipeline(pipeline, report):
|
|
374
|
+
break
|
|
358
375
|
except KeyboardInterrupt:
|
|
359
376
|
# Immediate-exit semantics (Task Brief): Ctrl+C while nothing is in
|
|
360
377
|
# flight (prompts, planning) terminates the session with a notice —
|
|
@@ -415,6 +432,7 @@ def _display_drift_notification(container: Container) -> list[str]:
|
|
|
415
432
|
config = container.resolve(IConfigService)
|
|
416
433
|
report = container.resolve(IInitUseCase).check_drift()
|
|
417
434
|
fired: list[str] = []
|
|
435
|
+
drift_lines: list[str] = []
|
|
418
436
|
|
|
419
437
|
if config.get_setting("checks.prompts", True) and report.prompts_drifted:
|
|
420
438
|
clause = _format_drift_clause(
|
|
@@ -424,9 +442,9 @@ def _display_drift_notification(container: Container) -> list[str]:
|
|
|
424
442
|
report.edited_prompts,
|
|
425
443
|
report.missing_prompts,
|
|
426
444
|
)
|
|
427
|
-
|
|
445
|
+
drift_lines.append(
|
|
428
446
|
typer.style(
|
|
429
|
-
f"ℹ {clause}. To
|
|
447
|
+
f"ℹ {clause}. To update them, run: teddy init prompts",
|
|
430
448
|
fg=typer.colors.YELLOW,
|
|
431
449
|
)
|
|
432
450
|
)
|
|
@@ -440,14 +458,21 @@ def _display_drift_notification(container: Container) -> list[str]:
|
|
|
440
458
|
report.edited_templates,
|
|
441
459
|
report.missing_templates,
|
|
442
460
|
)
|
|
443
|
-
|
|
461
|
+
drift_lines.append(
|
|
444
462
|
typer.style(
|
|
445
|
-
f"ℹ {clause}. To
|
|
463
|
+
f"ℹ {clause}. To update them, run: teddy init templates",
|
|
446
464
|
fg=typer.colors.YELLOW,
|
|
447
465
|
)
|
|
448
466
|
)
|
|
449
467
|
fired.append("checks.templates")
|
|
450
468
|
|
|
469
|
+
if drift_lines:
|
|
470
|
+
# A single leading blank separates this block from the
|
|
471
|
+
# ``Checking configurations...`` line above it. The lines carry no
|
|
472
|
+
# trailing newline, so the shared disable-footer (emitted next) abuts
|
|
473
|
+
# the final drift line.
|
|
474
|
+
typer.echo("\n" + "\n".join(drift_lines))
|
|
475
|
+
|
|
451
476
|
return fired
|
|
452
477
|
|
|
453
478
|
|
|
@@ -640,10 +665,13 @@ def _echo_config_success(
|
|
|
640
665
|
resolved_model = model
|
|
641
666
|
else:
|
|
642
667
|
resolved_model = config_service.get_setting("llm.model", "unknown")
|
|
643
|
-
|
|
668
|
+
identity_lines: list[str] = []
|
|
644
669
|
if agent:
|
|
645
|
-
|
|
646
|
-
|
|
670
|
+
identity_lines.append(f"Agent: {canonical_agent_name(agent)}")
|
|
671
|
+
identity_lines.append(f"Model: {resolved_model}")
|
|
672
|
+
# A leading blank separates the identity block from whatever precedes it
|
|
673
|
+
# (``Checking configurations...`` or the drift block/footer).
|
|
674
|
+
typer.echo("\n" + "\n".join(identity_lines), err=True)
|
|
647
675
|
|
|
648
676
|
|
|
649
677
|
def _run_cli_preflight_check(
|
|
@@ -1080,15 +1108,15 @@ def handle_resume_session( # noqa: PLR0913
|
|
|
1080
1108
|
# 2. Resolve session name
|
|
1081
1109
|
session_name = _resolve_session_name(container, path)
|
|
1082
1110
|
|
|
1083
|
-
# 3. Display
|
|
1084
|
-
session_relative_path = str(Path(".teddy") / "sessions" / session_name)
|
|
1085
|
-
typer.echo(f"Resuming session: {session_relative_path}")
|
|
1086
|
-
|
|
1087
|
-
# 4. Display actual_model and sync config overrides
|
|
1111
|
+
# 3. Display actual_model and sync config overrides
|
|
1088
1112
|
_sync_and_display_session_meta(
|
|
1089
1113
|
container, session_name, model=model, api_key=api_key
|
|
1090
1114
|
)
|
|
1091
1115
|
|
|
1116
|
+
# 4. Display session path (below the Agent/Model identity block)
|
|
1117
|
+
session_relative_path = str(Path(".teddy") / "sessions" / session_name)
|
|
1118
|
+
typer.echo(f"\nResuming session: {session_relative_path}")
|
|
1119
|
+
|
|
1092
1120
|
# 5. Agent switch: if -a/--agent provided, update session agent permanently
|
|
1093
1121
|
if agent:
|
|
1094
1122
|
container.resolve(ISessionManager).set_session_agent(session_name, agent)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/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
|
{teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/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.dev1257 → teddy_cli-0.1.17.dev1259}/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.dev1257 → teddy_cli-0.1.17.dev1259}/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.dev1257 → teddy_cli-0.1.17.dev1259}/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.dev1257 → teddy_cli-0.1.17.dev1259}/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.dev1257 → teddy_cli-0.1.17.dev1259}/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.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/markdown.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/serialization.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/string.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/terminal.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/registries/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/registries/reviewer.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/registries/validators.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1257 → teddy_cli-0.1.17.dev1259}/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.dev1257 → teddy_cli-0.1.17.dev1259}/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
|