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.
Files changed (163) hide show
  1. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/PKG-INFO +27 -2
  2. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/README.md +26 -1
  3. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/pyproject.toml +1 -1
  4. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/__main__.py +21 -11
  5. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/cli_helpers.py +19 -0
  6. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +32 -1
  7. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/.gitignore +0 -0
  8. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/LICENSE +0 -0
  9. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/__init__.py +0 -0
  10. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/__init__.py +0 -0
  11. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
  12. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
  13. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
  14. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
  15. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
  16. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
  17. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
  18. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
  19. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
  20. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
  21. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
  22. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
  23. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
  24. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
  25. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
  26. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
  27. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
  28. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
  29. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
  30. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
  31. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
  32. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
  33. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
  34. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
  35. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
  36. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
  37. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
  38. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
  39. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
  40. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
  41. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/container.py +0 -0
  42. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/__init__.py +0 -0
  43. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/__init__.py +0 -0
  44. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/__init__.py +0 -0
  45. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
  46. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/change_set.py +0 -0
  47. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
  48. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
  49. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
  50. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
  51. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/plan.py +0 -0
  52. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
  53. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/project_context.py +0 -0
  54. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
  55. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/session.py +0 -0
  56. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
  57. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
  58. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/__init__.py +0 -0
  59. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
  60. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
  61. {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
  62. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/inbound/init.py +0 -0
  63. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
  64. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
  65. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
  66. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
  67. {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
  68. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
  69. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
  70. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
  71. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
  72. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
  73. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
  74. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
  75. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
  76. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
  77. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
  78. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
  79. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
  80. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
  81. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
  82. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
  83. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
  84. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
  85. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
  86. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
  87. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/__init__.py +0 -0
  88. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
  89. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
  90. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
  91. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/action_executor.py +0 -0
  92. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/action_factory.py +0 -0
  93. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
  94. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
  95. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/context_service.py +0 -0
  96. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/edit_simulator.py +0 -0
  97. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
  98. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
  99. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/init_service.py +0 -0
  100. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
  101. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
  102. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
  103. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/parser_metadata.py +0 -0
  104. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/parser_reporting.py +0 -0
  105. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/plan_validator.py +0 -0
  106. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/planning_service.py +0 -0
  107. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/prompt_manager.py +0 -0
  108. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
  109. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
  110. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
  111. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/session_planner.py +0 -0
  112. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
  113. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/session_replanner.py +0 -0
  114. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/session_repository.py +0 -0
  115. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/session_service.py +0 -0
  116. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
  117. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/update_checker.py +0 -0
  118. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
  119. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
  120. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
  121. {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
  122. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
  123. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
  124. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
  125. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
  126. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/__init__.py +0 -0
  127. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/diff.py +0 -0
  128. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/editor_names.py +0 -0
  129. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
  130. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/io.py +0 -0
  131. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/markdown.py +0 -0
  132. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/paths.py +0 -0
  133. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/serialization.py +0 -0
  134. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/session_notices.py +0 -0
  135. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
  136. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/string.py +0 -0
  137. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/core/utils/terminal.py +0 -0
  138. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/prompts.py +0 -0
  139. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/registries/__init__.py +0 -0
  140. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/registries/infrastructure.py +0 -0
  141. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/registries/reviewer.py +0 -0
  142. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/registries/validators.py +0 -0
  143. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/MRP.md +0 -0
  144. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/__init__.py +0 -0
  145. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/config/__init__.py +0 -0
  146. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/config/config.yaml +0 -0
  147. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/config/init.context +0 -0
  148. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/config/prompts/architect.md +0 -0
  149. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/config/prompts/assistant.md +0 -0
  150. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/config/prompts/debugger.md +0 -0
  151. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/config/prompts/developer.md +0 -0
  152. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/config/prompts/pathfinder.md +0 -0
  153. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/config/prompts/prototyper.md +0 -0
  154. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/templates/ARCHITECTURE.md +0 -0
  155. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/templates/PROJECT.md +0 -0
  156. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/templates/case-file.md +0 -0
  157. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/templates/ci.md +0 -0
  158. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/templates/component-design.md +0 -0
  159. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/templates/makefile.md +0 -0
  160. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/templates/milestone.md +0 -0
  161. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/templates/pre-commit.md +0 -0
  162. {teddy_cli-0.1.17.dev1380 → teddy_cli-0.1.17.dev1382}/src/teddy_executor/resources/templates/specification-document.md +0 -0
  163. {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.dev1380
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]
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "teddy-cli"
3
- version = "0.1.17.dev1380"
3
+ version = "0.1.17.dev1382"
4
4
  description = "The local-first, test-driven agentic engineering harness. Because you should own the means of development."
5
5
  readme = "README.md"
6
6
  keywords = [
@@ -277,16 +277,9 @@ def start( # noqa: PLR0913
277
277
  _ensure_project_initialized(container)
278
278
  config_service = container.resolve(IConfigService)
279
279
 
280
- additional_context = (
281
- [
282
- path.strip()
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
- handle_context_gathering(container, no_copy)
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 handle_context_gathering(container: Container, no_copy: bool):
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