teddy-cli 0.1.17.dev1258__tar.gz → 0.1.17.dev1259__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/PKG-INFO +1 -1
  2. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/pyproject.toml +1 -1
  3. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +46 -29
  4. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/.gitignore +0 -0
  5. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/LICENSE +0 -0
  6. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/__init__.py +0 -0
  7. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/__main__.py +0 -0
  8. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/__init__.py +0 -0
  9. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
  10. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
  11. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
  12. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
  13. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
  14. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
  15. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
  16. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
  17. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
  18. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
  19. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
  20. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
  21. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
  22. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
  23. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
  24. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
  25. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
  26. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
  27. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
  28. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
  29. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
  30. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
  31. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
  32. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
  33. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
  34. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
  35. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
  36. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
  37. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
  38. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
  39. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
  40. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/container.py +0 -0
  41. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/__init__.py +0 -0
  42. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/__init__.py +0 -0
  43. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/__init__.py +0 -0
  44. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
  45. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/change_set.py +0 -0
  46. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
  47. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
  48. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
  49. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
  50. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/plan.py +0 -0
  51. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
  52. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/project_context.py +0 -0
  53. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
  54. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/session.py +0 -0
  55. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
  56. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
  57. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/__init__.py +0 -0
  58. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
  59. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
  60. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
  61. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/inbound/init.py +0 -0
  62. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
  63. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
  64. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
  65. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
  66. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
  67. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
  68. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
  69. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
  70. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
  71. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
  72. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
  73. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
  74. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
  75. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
  76. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
  77. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
  78. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
  79. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
  80. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
  81. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
  82. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
  83. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
  84. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
  85. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
  86. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/__init__.py +0 -0
  87. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
  88. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
  89. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
  90. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/action_executor.py +0 -0
  91. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/action_factory.py +0 -0
  92. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
  93. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
  94. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/context_service.py +0 -0
  95. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/edit_simulator.py +0 -0
  96. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
  97. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
  98. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/init_service.py +0 -0
  99. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
  100. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
  101. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
  102. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/parser_metadata.py +0 -0
  103. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/parser_reporting.py +0 -0
  104. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/plan_validator.py +0 -0
  105. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/planning_service.py +0 -0
  106. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/prompt_manager.py +0 -0
  107. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
  108. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
  109. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
  110. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/session_planner.py +0 -0
  111. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
  112. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/session_replanner.py +0 -0
  113. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/session_repository.py +0 -0
  114. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/session_service.py +0 -0
  115. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
  116. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/update_checker.py +0 -0
  117. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
  118. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
  119. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
  120. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
  121. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
  122. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
  123. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
  124. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
  125. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/__init__.py +0 -0
  126. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/diff.py +0 -0
  127. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
  128. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/io.py +0 -0
  129. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/markdown.py +0 -0
  130. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/serialization.py +0 -0
  131. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
  132. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/string.py +0 -0
  133. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/core/utils/terminal.py +0 -0
  134. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/prompts.py +0 -0
  135. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/registries/__init__.py +0 -0
  136. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/registries/infrastructure.py +0 -0
  137. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/registries/reviewer.py +0 -0
  138. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/registries/validators.py +0 -0
  139. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/MRP.xml +0 -0
  140. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/__init__.py +0 -0
  141. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/config/__init__.py +0 -0
  142. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/config/config.yaml +0 -0
  143. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/config/init.context +0 -0
  144. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/config/prompts/architect.xml +0 -0
  145. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/config/prompts/assistant.xml +0 -0
  146. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/config/prompts/debugger.xml +0 -0
  147. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/config/prompts/developer.xml +0 -0
  148. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/config/prompts/pathfinder.xml +0 -0
  149. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/config/prompts/prototyper.xml +0 -0
  150. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/templates/ARCHITECTURE.md +0 -0
  151. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/templates/PROJECT.md +0 -0
  152. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/templates/case-file.md +0 -0
  153. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/templates/ci.md +0 -0
  154. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/templates/component-design.md +0 -0
  155. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/templates/makefile.md +0 -0
  156. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/templates/milestone.md +0 -0
  157. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/templates/pre-commit.md +0 -0
  158. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/templates/specification-document.md +0 -0
  159. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/src/teddy_executor/resources/templates/task-brief.md +0 -0
  160. {teddy_cli-0.1.17.dev1258 → teddy_cli-0.1.17.dev1259}/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.dev1258
3
+ Version: 0.1.17.dev1259
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.dev1258"
3
+ version = "0.1.17.dev1259"
4
4
  description = "A local-first, file-based AI coding workflow that applies the UNIX philosophy to AI collaboration."
5
5
  authors = [{ name = "Raphael Atteritano" }]
6
6
  license = { text = "AGPL-3.0-only" }
@@ -249,7 +249,48 @@ def _determine_session_name(name: Optional[str], message: Optional[str]) -> str:
249
249
  return "session-auto"
250
250
 
251
251
 
252
- def _orchestrate_session_loop(
252
+ def _resolve_initial_turn(session_manager: ISessionManager, session_name: str) -> int:
253
+ """Resolves the process-relative turn baseline for the guardrails.
254
+
255
+ get_latest_turn returns a path string whose folder name is the turn ID. A
256
+ fresh session seeds turn 01 before the loop starts, so the baseline is 0; a
257
+ resume's latest turn is the last completed turn, so the baseline is that
258
+ turn. Non-numeric names (or test doubles) fall back to 0.
259
+ """
260
+ latest_turn_path = session_manager.get_latest_turn(session_name)
261
+ try:
262
+ latest_turn = int(Path(latest_turn_path).name) if latest_turn_path else 0
263
+ return max(0, latest_turn - 1) if latest_turn_path else 0
264
+ except (ValueError, TypeError):
265
+ # Handle non-numeric turn names or MagicMocks in tests
266
+ return 0
267
+
268
+
269
+ def _emit_guard_termination(guard_reason: Optional[str]) -> None:
270
+ """Prints a guardrail termination reason: first line red, remainder plain."""
271
+ reason = guard_reason or "YOLO guardrail limit reached."
272
+ lines = reason.lstrip("\n").split("\n", 1)
273
+ typer.secho("")
274
+ typer.secho(lines[0], fg=typer.colors.RED)
275
+ if len(lines) > 1:
276
+ typer.secho(lines[1])
277
+
278
+
279
+ def _should_exit_pipeline(pipeline: bool, report: Any) -> bool:
280
+ """True when a pipeline run's report carries a MESSAGE action to exit on.
281
+
282
+ Short-circuits on ``not pipeline`` so a non-pipeline run never touches
283
+ report.action_logs (mirroring the original guard order).
284
+ """
285
+ if not pipeline or not report.action_logs:
286
+ return False
287
+ return any(
288
+ (getattr(log_entry, "action_type", None) or "").upper() == "MESSAGE"
289
+ for log_entry in report.action_logs
290
+ )
291
+
292
+
293
+ def _orchestrate_session_loop( # noqa: PLR0913
253
294
  container: Container,
254
295
  session_name: str,
255
296
  interactive: bool,
@@ -265,20 +306,7 @@ def _orchestrate_session_loop(
265
306
  session_manager = container.resolve(ISessionManager)
266
307
 
267
308
  # Resolve initial state for process-relative guardrails
268
- latest_turn_path = session_manager.get_latest_turn(session_name)
269
- try:
270
- # get_latest_turn returns a path string; the turn ID is the folder name.
271
- # For a fresh session, create_session seeds turn 01 (the initial request)
272
- # BEFORE the loop starts, so the latest turn = 1. The loop then processes
273
- # turn 01 again (turn_count starts at 1). Subtracting 1 makes the baseline
274
- # 0 for fresh sessions so delta after turn 01 = 1.
275
- # For resume, the latest turn is the last completed turn, and the loop
276
- # processes the NEXT turn (turn_count = latest + 1), so delta is correct.
277
- latest_turn = int(Path(latest_turn_path).name) if latest_turn_path else 0
278
- initial_turn = max(0, latest_turn - 1) if latest_turn_path else 0
279
- except (ValueError, TypeError):
280
- # Handle non-numeric turn names or MagicMocks in tests
281
- initial_turn = 0
309
+ initial_turn = _resolve_initial_turn(session_manager, session_name)
282
310
 
283
311
  # Resolve initial cost for process-relative guardrails
284
312
  initial_cost = session_manager.get_cumulative_cost(session_name)
@@ -338,23 +366,12 @@ def _orchestrate_session_loop(
338
366
  turn_count, cumulative_cost, interactive
339
367
  )
340
368
  if not should_continue:
341
- reason = guard_reason or "YOLO guardrail limit reached."
342
- lines = reason.lstrip("\n").split("\n", 1)
343
- typer.secho("")
344
- typer.secho(lines[0], fg=typer.colors.RED)
345
- if len(lines) > 1:
346
- typer.secho(lines[1])
369
+ _emit_guard_termination(guard_reason)
347
370
  break
348
371
 
349
372
  # Pipeline mode: exit cleanly after the first ## Message
350
- if pipeline and report.action_logs:
351
- for log_entry in report.action_logs:
352
- action_type = getattr(log_entry, "action_type", None) or ""
353
- if action_type.upper() == "MESSAGE":
354
- break # break inner for
355
- else:
356
- continue # no MESSAGE found, continue outer loop
357
- break # MESSAGE found, exit session loop
373
+ if _should_exit_pipeline(pipeline, report):
374
+ break
358
375
  except KeyboardInterrupt:
359
376
  # Immediate-exit semantics (Task Brief): Ctrl+C while nothing is in
360
377
  # flight (prompts, planning) terminates the session with a notice —