teddy-cli 0.1.17.dev1380__tar.gz → 0.1.17.dev1382__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.dev1380 → teddy_cli-0.1.17.dev1382}/PKG-INFO +27 -2
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/README.md +26 -1
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/pyproject.toml +1 -1
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/__main__.py +21 -11
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/cli_helpers.py +19 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +32 -1
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/.gitignore +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/LICENSE +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/container.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/change_set.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/plan.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/project_context.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/session.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/inbound/init.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/action_executor.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/action_factory.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/context_service.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/init_service.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/parser_metadata.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/parser_reporting.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/planning_service.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/session_planner.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/session_replanner.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/session_service.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/update_checker.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/diff.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/editor_names.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/io.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/markdown.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/paths.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/serialization.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/session_notices.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/string.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/terminal.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/prompts.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/registries/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/registries/infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/registries/reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/registries/validators.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/MRP.md +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/config/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/config/config.yaml +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/config/init.context +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/config/prompts/architect.md +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/config/prompts/assistant.md +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/config/prompts/debugger.md +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/config/prompts/developer.md +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/config/prompts/pathfinder.md +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/config/prompts/prototyper.md +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/templates/ARCHITECTURE.md +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/templates/PROJECT.md +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/templates/case-file.md +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/templates/ci.md +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/templates/component-design.md +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/templates/makefile.md +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/templates/milestone.md +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/templates/pre-commit.md +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/templates/specification-document.md +0 -0
- {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/templates/vertical-slice.md +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: teddy-cli
|
|
3
|
-
Version: 0.1.17.
|
|
3
|
+
Version: 0.1.17.dev1382
|
|
4
4
|
Summary: The local-first, test-driven agentic engineering harness. Because you should own the means of development.
|
|
5
5
|
Author: Raphael Atteritano
|
|
6
6
|
License: AGPL-3.0-only
|
|
@@ -282,6 +282,31 @@ teddy resume -m "your next instruction"
|
|
|
282
282
|
| `--max-turns` | Maximum turns for a non-interactive run. Overrides `guardrails.max_turns` in `.teddy/config.yaml`. |
|
|
283
283
|
| `--max-cost` | Maximum session cost in dollars for a non-interactive run. Overrides `guardrails.max_session_cost` in `.teddy/config.yaml`. |
|
|
284
284
|
|
|
285
|
+
### Exporting Context
|
|
286
|
+
|
|
287
|
+
`teddy context` bundles system information, git status, project structure, and file contents into a single Markdown payload. It copies the payload to the clipboard unless you pass `--no-copy`.
|
|
288
|
+
|
|
289
|
+
Pass `-c/--context` to add ad-hoc values for a single run. The flag is repeatable and accepts comma-separated values. Explicit values extend the default set from `.teddy/init.context`. They do not replace it.
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
# Add two files beside the default init.context entries
|
|
293
|
+
teddy context -c README.md -c src/app.py
|
|
294
|
+
|
|
295
|
+
# Comma-separated values expand to separate entries
|
|
296
|
+
teddy context -c "README.md,pyproject.toml"
|
|
297
|
+
|
|
298
|
+
# Export only the chosen files and skip the default set
|
|
299
|
+
teddy context --only -c README.md
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
A `-c` value resolves by kind. A directory expands recursively. A URL is fetched instead of resolved on disk. A file named `<name>.context` is treated as a manifest: the command reads one path per line, skips blank lines and `#` comments, and expands each entry. Any other file is embedded verbatim.
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
teddy context -c review.context
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
`--only` requires at least one `-c` value. Without one the command exits with a usage error, because an empty explicit set would export no files.
|
|
309
|
+
|
|
285
310
|
### Chat-Oriented Workflow (CHOP)
|
|
286
311
|
|
|
287
312
|
You do not need API keys or per-token billing to use TeDDy. If you already have an active subscription (ChatGPT, Claude, Gemini, etc.), you can also use TeDDy to practice **[Chat-Oriented Programming (CHOP)](https://sourcegraph.com/blog/chat-oriented-programming-in-action)** from your web browser.
|
|
@@ -308,7 +333,7 @@ TeDDy packages your workspace context into a single clipboard payload, and the a
|
|
|
308
333
|
| `resume` | Resume an existing session. |
|
|
309
334
|
| `update` | Check for updates and display upgrade instructions. |
|
|
310
335
|
| `execute` | Execute a Markdown plan (reads from clipboard if no path is provided). |
|
|
311
|
-
| `context` | Export context payload (system info, git status, file tree, `init.context`). |
|
|
336
|
+
| `context` | Export context payload (system info, git status, file tree, `init.context`). Add ad-hoc files with `-c` and skip defaults with `--only`. |
|
|
312
337
|
| <nobr>`get-prompt`</nobr> | Retrieve agent system prompts (respects overrides in `.teddy/prompts/`). |
|
|
313
338
|
|
|
314
339
|
> [!NOTE]
|
|
@@ -248,6 +248,31 @@ teddy resume -m "your next instruction"
|
|
|
248
248
|
| `--max-turns` | Maximum turns for a non-interactive run. Overrides `guardrails.max_turns` in `.teddy/config.yaml`. |
|
|
249
249
|
| `--max-cost` | Maximum session cost in dollars for a non-interactive run. Overrides `guardrails.max_session_cost` in `.teddy/config.yaml`. |
|
|
250
250
|
|
|
251
|
+
### Exporting Context
|
|
252
|
+
|
|
253
|
+
`teddy context` bundles system information, git status, project structure, and file contents into a single Markdown payload. It copies the payload to the clipboard unless you pass `--no-copy`.
|
|
254
|
+
|
|
255
|
+
Pass `-c/--context` to add ad-hoc values for a single run. The flag is repeatable and accepts comma-separated values. Explicit values extend the default set from `.teddy/init.context`. They do not replace it.
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
# Add two files beside the default init.context entries
|
|
259
|
+
teddy context -c README.md -c src/app.py
|
|
260
|
+
|
|
261
|
+
# Comma-separated values expand to separate entries
|
|
262
|
+
teddy context -c "README.md,pyproject.toml"
|
|
263
|
+
|
|
264
|
+
# Export only the chosen files and skip the default set
|
|
265
|
+
teddy context --only -c README.md
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
A `-c` value resolves by kind. A directory expands recursively. A URL is fetched instead of resolved on disk. A file named `<name>.context` is treated as a manifest: the command reads one path per line, skips blank lines and `#` comments, and expands each entry. Any other file is embedded verbatim.
|
|
269
|
+
|
|
270
|
+
```bash
|
|
271
|
+
teddy context -c review.context
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
`--only` requires at least one `-c` value. Without one the command exits with a usage error, because an empty explicit set would export no files.
|
|
275
|
+
|
|
251
276
|
### Chat-Oriented Workflow (CHOP)
|
|
252
277
|
|
|
253
278
|
You do not need API keys or per-token billing to use TeDDy. If you already have an active subscription (ChatGPT, Claude, Gemini, etc.), you can also use TeDDy to practice **[Chat-Oriented Programming (CHOP)](https://sourcegraph.com/blog/chat-oriented-programming-in-action)** from your web browser.
|
|
@@ -274,7 +299,7 @@ TeDDy packages your workspace context into a single clipboard payload, and the a
|
|
|
274
299
|
| `resume` | Resume an existing session. |
|
|
275
300
|
| `update` | Check for updates and display upgrade instructions. |
|
|
276
301
|
| `execute` | Execute a Markdown plan (reads from clipboard if no path is provided). |
|
|
277
|
-
| `context` | Export context payload (system info, git status, file tree, `init.context`). |
|
|
302
|
+
| `context` | Export context payload (system info, git status, file tree, `init.context`). Add ad-hoc files with `-c` and skip defaults with `--only`. |
|
|
278
303
|
| <nobr>`get-prompt`</nobr> | Retrieve agent system prompts (respects overrides in `.teddy/prompts/`). |
|
|
279
304
|
|
|
280
305
|
> [!NOTE]
|
|
@@ -277,16 +277,9 @@ def start( # noqa: PLR0913
|
|
|
277
277
|
_ensure_project_initialized(container)
|
|
278
278
|
config_service = container.resolve(IConfigService)
|
|
279
279
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
for occurrence in context
|
|
284
|
-
for path in occurrence.split(",")
|
|
285
|
-
if path.strip()
|
|
286
|
-
]
|
|
287
|
-
if context
|
|
288
|
-
else None
|
|
289
|
-
)
|
|
280
|
+
from teddy_executor.adapters.inbound.cli_helpers import normalize_context_values
|
|
281
|
+
|
|
282
|
+
additional_context = normalize_context_values(context)
|
|
290
283
|
|
|
291
284
|
interactive = not (_resolve_yolo(yolo, config_service) or pipeline)
|
|
292
285
|
system_env = container.resolve(ISystemEnvironment)
|
|
@@ -461,6 +454,20 @@ def context(
|
|
|
461
454
|
"--no-copy",
|
|
462
455
|
help="Do not copy the output to the clipboard.",
|
|
463
456
|
),
|
|
457
|
+
context: Optional[list[str]] = typer.Option(
|
|
458
|
+
None,
|
|
459
|
+
"--context",
|
|
460
|
+
"-c",
|
|
461
|
+
help=(
|
|
462
|
+
"Additional files/dirs for context. Repeatable (-c a.py -c b.md); "
|
|
463
|
+
'comma-separated values are also accepted (-c "a.py,b.md").'
|
|
464
|
+
),
|
|
465
|
+
),
|
|
466
|
+
only: bool = typer.Option(
|
|
467
|
+
False,
|
|
468
|
+
"--only",
|
|
469
|
+
help="Export only the --context values, skipping the default set.",
|
|
470
|
+
),
|
|
464
471
|
):
|
|
465
472
|
"""
|
|
466
473
|
Gathers and displays project context (file tree + file contents).
|
|
@@ -473,7 +480,10 @@ def context(
|
|
|
473
480
|
|
|
474
481
|
container = get_container()
|
|
475
482
|
_ensure_project_initialized(container)
|
|
476
|
-
|
|
483
|
+
from teddy_executor.adapters.inbound.cli_helpers import normalize_context_values
|
|
484
|
+
|
|
485
|
+
additional_context = normalize_context_values(context)
|
|
486
|
+
handle_context_gathering(container, no_copy, additional_context, only)
|
|
477
487
|
|
|
478
488
|
|
|
479
489
|
@app.command(name="get-prompt")
|
|
@@ -34,6 +34,25 @@ def find_project_root() -> Path:
|
|
|
34
34
|
return current
|
|
35
35
|
|
|
36
36
|
|
|
37
|
+
def normalize_context_values(
|
|
38
|
+
values: Optional[List[str]],
|
|
39
|
+
) -> Optional[List[str]]:
|
|
40
|
+
"""Normalizes a repeatable and comma-separated context option.
|
|
41
|
+
|
|
42
|
+
Each occurrence is split on commas, every fragment is stripped, and empty
|
|
43
|
+
fragments are dropped. A falsy option returns ``None`` so callers can
|
|
44
|
+
distinguish "no value supplied" from an explicitly empty list.
|
|
45
|
+
"""
|
|
46
|
+
if not values:
|
|
47
|
+
return None
|
|
48
|
+
return [
|
|
49
|
+
path.strip()
|
|
50
|
+
for occurrence in values
|
|
51
|
+
for path in occurrence.split(",")
|
|
52
|
+
if path.strip()
|
|
53
|
+
]
|
|
54
|
+
|
|
55
|
+
|
|
37
56
|
def echo_and_copy(
|
|
38
57
|
content: str,
|
|
39
58
|
no_copy: bool = False,
|
|
@@ -16,6 +16,7 @@ from teddy_executor.core.domain.models.session import SessionOptions
|
|
|
16
16
|
from teddy_executor.core.ports.outbound.user_interactor import IUserInteractor
|
|
17
17
|
from teddy_executor.core.ports.outbound.session_loop_guard import ISessionLoopGuard
|
|
18
18
|
from teddy_executor.core.ports.outbound.config_service import IConfigService
|
|
19
|
+
from teddy_executor.core.ports.outbound.file_system_manager import IFileSystemManager
|
|
19
20
|
from teddy_executor.core.ports.outbound.session_repository import ISessionRepository
|
|
20
21
|
from teddy_executor.core.utils.interrupt_guard import InterruptGuard
|
|
21
22
|
from teddy_executor.core.utils.session_notices import format_interrupt_notice
|
|
@@ -1103,10 +1104,40 @@ def detect_session_context() -> Optional[Dict[str, Sequence[str]]]:
|
|
|
1103
1104
|
return None
|
|
1104
1105
|
|
|
1105
1106
|
|
|
1106
|
-
def
|
|
1107
|
+
def _default_context_paths(container: Container) -> list[str]:
|
|
1108
|
+
"""Resolves the default `.teddy/*.context` entries outside a session."""
|
|
1109
|
+
file_system_manager = container.resolve(IFileSystemManager)
|
|
1110
|
+
return file_system_manager.get_context_paths()
|
|
1111
|
+
|
|
1112
|
+
|
|
1113
|
+
def handle_context_gathering(
|
|
1114
|
+
container: Container,
|
|
1115
|
+
no_copy: bool,
|
|
1116
|
+
additional_context: Optional[Sequence[str]] = None,
|
|
1117
|
+
only: bool = False,
|
|
1118
|
+
):
|
|
1107
1119
|
"""Logic for the 'context' command."""
|
|
1108
1120
|
context_service: IGetContextUseCase = container.resolve(IGetContextUseCase)
|
|
1109
1121
|
context_files = detect_session_context()
|
|
1122
|
+
|
|
1123
|
+
if only and not additional_context:
|
|
1124
|
+
raise typer.BadParameter("--only requires at least one --context value.")
|
|
1125
|
+
|
|
1126
|
+
if additional_context:
|
|
1127
|
+
explicit_scope = {"Explicit": list(additional_context)}
|
|
1128
|
+
if only:
|
|
1129
|
+
context_files = explicit_scope
|
|
1130
|
+
else:
|
|
1131
|
+
# Outside a session no scope map exists, so the defaults are
|
|
1132
|
+
# resolved here: the service globs only when the map is falsy.
|
|
1133
|
+
scopes = (
|
|
1134
|
+
dict(context_files)
|
|
1135
|
+
if context_files
|
|
1136
|
+
else {"Default": _default_context_paths(container)}
|
|
1137
|
+
)
|
|
1138
|
+
scopes.update(explicit_scope)
|
|
1139
|
+
context_files = scopes
|
|
1140
|
+
|
|
1110
1141
|
# Performance: Formatting context for Markdown doesn't use tokens, so we skip them.
|
|
1111
1142
|
context_result = context_service.get_context(
|
|
1112
1143
|
context_files=context_files, include_tokens=False
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/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
|
{teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/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.dev1380 → teddy_cli-0.1.17.dev1382}/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.dev1380 → teddy_cli-0.1.17.dev1382}/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.dev1380 → teddy_cli-0.1.17.dev1382}/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.dev1380 → teddy_cli-0.1.17.dev1382}/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.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/editor_names.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/markdown.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/paths.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/serialization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/string.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/terminal.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/registries/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/registries/reviewer.py
RENAMED
|
File without changes
|
{teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/registries/validators.py
RENAMED
|
File without changes
|
|
File without changes
|
{teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/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.dev1380 → teddy_cli-0.1.17.dev1382}/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
|