teddy-cli 0.1.17.dev1287__tar.gz → 0.1.17.dev1289__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 (160) hide show
  1. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/PKG-INFO +1 -1
  2. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/pyproject.toml +1 -1
  3. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +3 -5
  4. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/session_lifecycle_manager.py +11 -4
  5. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/session_orchestrator.py +4 -7
  6. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/utils/terminal.py +18 -0
  7. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/.gitignore +0 -0
  8. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/LICENSE +0 -0
  9. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/__init__.py +0 -0
  10. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/__main__.py +0 -0
  11. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/__init__.py +0 -0
  12. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
  13. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
  14. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
  15. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +0 -0
  16. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
  17. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
  18. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
  19. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
  20. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
  21. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
  22. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
  23. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
  24. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
  25. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
  26. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
  27. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
  28. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
  29. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
  30. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
  31. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
  32. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
  33. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
  34. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
  35. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
  36. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
  37. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
  38. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
  39. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
  40. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
  41. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
  42. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
  43. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/container.py +0 -0
  44. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/__init__.py +0 -0
  45. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/domain/__init__.py +0 -0
  46. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/domain/models/__init__.py +0 -0
  47. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
  48. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/domain/models/change_set.py +0 -0
  49. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
  50. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
  51. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
  52. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
  53. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/domain/models/plan.py +0 -0
  54. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
  55. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/domain/models/project_context.py +0 -0
  56. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
  57. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/domain/models/session.py +0 -0
  58. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
  59. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
  60. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/__init__.py +0 -0
  61. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
  62. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
  63. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
  64. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/inbound/init.py +0 -0
  65. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
  66. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
  67. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
  68. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
  69. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
  70. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
  71. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
  72. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
  73. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
  74. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
  75. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
  76. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
  77. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
  78. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
  79. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
  80. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
  81. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
  82. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
  83. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
  84. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
  85. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
  86. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
  87. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
  88. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
  89. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/__init__.py +0 -0
  90. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
  91. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
  92. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
  93. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/action_executor.py +0 -0
  94. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/action_factory.py +0 -0
  95. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
  96. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
  97. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/context_service.py +0 -0
  98. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/edit_simulator.py +0 -0
  99. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
  100. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
  101. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/init_service.py +0 -0
  102. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
  103. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
  104. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
  105. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/parser_metadata.py +0 -0
  106. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/parser_reporting.py +0 -0
  107. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/plan_validator.py +0 -0
  108. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/planning_service.py +0 -0
  109. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/prompt_manager.py +0 -0
  110. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
  111. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/session_planner.py +0 -0
  112. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
  113. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/session_replanner.py +0 -0
  114. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/session_repository.py +0 -0
  115. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/session_service.py +0 -0
  116. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
  117. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/update_checker.py +0 -0
  118. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
  119. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
  120. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
  121. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
  122. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
  123. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
  124. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
  125. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
  126. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/utils/__init__.py +0 -0
  127. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/utils/diff.py +0 -0
  128. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
  129. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/utils/io.py +0 -0
  130. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/utils/markdown.py +0 -0
  131. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/utils/paths.py +0 -0
  132. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/utils/serialization.py +0 -0
  133. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
  134. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/core/utils/string.py +0 -0
  135. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/prompts.py +0 -0
  136. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/registries/__init__.py +0 -0
  137. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/registries/infrastructure.py +0 -0
  138. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/registries/reviewer.py +0 -0
  139. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/registries/validators.py +0 -0
  140. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/resources/MRP.xml +0 -0
  141. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/resources/__init__.py +0 -0
  142. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/resources/config/__init__.py +0 -0
  143. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/resources/config/config.yaml +0 -0
  144. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/resources/config/init.context +0 -0
  145. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/resources/config/prompts/architect.xml +0 -0
  146. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/resources/config/prompts/assistant.xml +0 -0
  147. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/resources/config/prompts/debugger.xml +0 -0
  148. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/resources/config/prompts/developer.xml +0 -0
  149. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/resources/config/prompts/pathfinder.xml +0 -0
  150. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/resources/config/prompts/prototyper.xml +0 -0
  151. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/resources/templates/ARCHITECTURE.md +0 -0
  152. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/resources/templates/PROJECT.md +0 -0
  153. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/resources/templates/case-file.md +0 -0
  154. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/resources/templates/ci.md +0 -0
  155. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/resources/templates/component-design.md +0 -0
  156. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/resources/templates/makefile.md +0 -0
  157. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/resources/templates/milestone.md +0 -0
  158. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/resources/templates/pre-commit.md +0 -0
  159. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/src/teddy_executor/resources/templates/specification-document.md +0 -0
  160. {teddy_cli-0.1.17.dev1287 → teddy_cli-0.1.17.dev1289}/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.dev1287
3
+ Version: 0.1.17.dev1289
4
4
  Summary: A local-first, file-based AI coding workflow that applies the UNIX philosophy to AI collaboration.
5
5
  Author: Raphael Atteritano
6
6
  License: AGPL-3.0-only
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "teddy-cli"
3
- version = "0.1.17.dev1287"
3
+ version = "0.1.17.dev1289"
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" }
@@ -5,6 +5,8 @@ import io
5
5
  import logging
6
6
  from typing import TYPE_CHECKING, Any
7
7
 
8
+ from teddy_executor.core.utils.terminal import emit_user_message
9
+
8
10
  if TYPE_CHECKING:
9
11
  from teddy_executor.adapters.inbound.textual_plan_reviewer_app import ReviewerApp
10
12
  from teddy_executor.core.domain.models.plan import ActionData
@@ -183,11 +185,7 @@ async def orchestrate_execution(app: ReviewerApp, node: Any, update_fn: Any) ->
183
185
  and isinstance(log.details, str)
184
186
  and log.details.strip()
185
187
  ):
186
- import typer
187
-
188
- typer.secho("")
189
- typer.secho("User Message:")
190
- typer.secho(log.details.strip())
188
+ emit_user_message(log.details)
191
189
  except Exception as e:
192
190
  logging.getLogger(__name__).debug("Background execution failed: %s", e)
193
191
  action.executed, action.state = True, ExecutionStatus.FAILURE
@@ -50,7 +50,7 @@ class SessionLifecycleManager:
50
50
  self._report_assembler = ports.report_assembler
51
51
  self.tee_active = False
52
52
 
53
- def resume(
53
+ def resume( # noqa: PLR0913
54
54
  self,
55
55
  session_name: str,
56
56
  orchestrator: IRunPlanUseCase,
@@ -245,7 +245,7 @@ class SessionLifecycleManager:
245
245
  content += f"\n\n## User Request\n{fence}text\n{message}\n{fence}\n"
246
246
  self._file_system_manager.write_file(report_path, content)
247
247
 
248
- def _consume_awaiting_reply(
248
+ def _consume_awaiting_reply( # noqa: PLR0913
249
249
  self,
250
250
  turn_path: str,
251
251
  turn_meta: dict[str, Any],
@@ -407,7 +407,7 @@ class SessionLifecycleManager:
407
407
  )
408
408
  )
409
409
 
410
- def _handle_planning_and_execution(
410
+ def _handle_planning_and_execution( # noqa: PLR0913
411
411
  self,
412
412
  turn_dir: str,
413
413
  orchestrator: IRunPlanUseCase,
@@ -451,13 +451,20 @@ class SessionLifecycleManager:
451
451
  tee = None
452
452
 
453
453
  try:
454
- # Print initial request before turn header (before planning)
454
+ # Print initial request before turn header (before planning).
455
+ # Turn 01 is covered by the initial-request echo (the injected
456
+ # message is appended to initial_request.md); every later turn
457
+ # echoes the injected `resume -m` message directly so resuming
458
+ # gives the same visible confirmation as starting.
455
459
  from teddy_executor.core.services.session_orchestrator import (
456
460
  _print_initial_request,
457
461
  )
462
+ from teddy_executor.core.utils.terminal import emit_user_message
458
463
 
459
464
  if Path(turn_dir).name == "01":
460
465
  _print_initial_request(None, True, plan_path=Path(turn_dir).as_posix())
466
+ elif message and message.strip():
467
+ emit_user_message(message)
461
468
  new_name, gathered_context = self._session_planner.trigger_new_plan(
462
469
  turn_dir, message=message
463
470
  )
@@ -14,6 +14,7 @@ from teddy_executor.core.ports.inbound.run_plan_use_case import IRunPlanUseCase
14
14
  from teddy_executor.core.ports.outbound.file_system_manager import IFileSystemManager
15
15
  from teddy_executor.core.services.session_replanner import SessionReplanner
16
16
  from teddy_executor.core.utils.io import Tee as _Tee
17
+ from teddy_executor.core.utils.terminal import emit_user_message
17
18
  import typer
18
19
 
19
20
  logger = logging.getLogger(__name__)
@@ -37,7 +38,7 @@ def _print_initial_request(
37
38
 
38
39
  Only prints when is_session=True and message is non-empty.
39
40
  Output::
40
- Initial Request:
41
+ User Message:
41
42
  {content}
42
43
  (blank line separator)
43
44
  """
@@ -58,9 +59,7 @@ def _print_initial_request(
58
59
  )
59
60
  if not message or not message.strip():
60
61
  return
61
- typer.secho("")
62
- typer.secho("Initial Request:")
63
- typer.secho(message.strip())
62
+ emit_user_message(message)
64
63
 
65
64
 
66
65
  def _print_header_bar(plan: Any, is_session: bool) -> None:
@@ -146,9 +145,7 @@ def _print_user_message(
146
145
  if not message or not message.strip():
147
146
  return
148
147
 
149
- typer.secho("")
150
- typer.secho("User Message:")
151
- typer.secho(message.strip())
148
+ emit_user_message(message)
152
149
 
153
150
 
154
151
  class SessionOrchestrator(IRunPlanUseCase):
@@ -10,9 +10,27 @@ import logging
10
10
  import os
11
11
  import sys
12
12
 
13
+ import typer
14
+
13
15
  logger = logging.getLogger(__name__)
14
16
 
15
17
 
18
+ def emit_user_message(content: str) -> None:
19
+ """Echo a user's message to the terminal under the "User Message:" label.
20
+
21
+ The single source of truth for the terminal-echo format, shared by the
22
+ initial-request echo, the post-execution user-message echo, and the
23
+ injected ``resume -m`` echo. Renders a blank separator, the
24
+ "User Message:" label, then the stripped content. Empty or
25
+ whitespace-only content is a no-op so an empty echo never becomes noise.
26
+ """
27
+ if not content or not content.strip():
28
+ return
29
+ typer.secho("")
30
+ typer.secho("User Message:")
31
+ typer.secho(content.strip())
32
+
33
+
16
34
  def restore_cooked_mode() -> None:
17
35
  """Restore the terminal's cooked mode (Unix only; no-op elsewhere).
18
36