teddy-cli 0.1.17.dev1309__tar.gz → 0.1.17.dev1311__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 (162) hide show
  1. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/PKG-INFO +1 -1
  2. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/pyproject.toml +1 -1
  3. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +7 -4
  4. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/planning_service.py +23 -4
  5. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/MRP.md +1 -1
  6. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/config/prompts/architect.md +1 -1
  7. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/config/prompts/debugger.md +1 -1
  8. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/config/prompts/developer.md +1 -1
  9. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/config/prompts/prototyper.md +1 -1
  10. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/templates/ARCHITECTURE.md +1 -1
  11. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/templates/case-file.md +3 -4
  12. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/templates/milestone.md +1 -1
  13. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/templates/vertical-slice.md +10 -10
  14. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/.gitignore +0 -0
  15. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/LICENSE +0 -0
  16. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/README.md +0 -0
  17. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/__init__.py +0 -0
  18. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/__main__.py +0 -0
  19. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/__init__.py +0 -0
  20. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
  21. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
  22. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
  23. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +0 -0
  24. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
  25. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
  26. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
  27. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
  28. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
  29. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
  30. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
  31. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
  32. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
  33. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
  34. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
  35. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
  36. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
  37. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
  38. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
  39. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
  40. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
  41. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
  42. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
  43. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
  44. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
  45. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
  46. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
  47. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
  48. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
  49. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
  50. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
  51. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/container.py +0 -0
  52. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/__init__.py +0 -0
  53. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/domain/__init__.py +0 -0
  54. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/domain/models/__init__.py +0 -0
  55. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
  56. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/domain/models/change_set.py +0 -0
  57. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
  58. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
  59. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
  60. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
  61. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/domain/models/plan.py +0 -0
  62. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
  63. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/domain/models/project_context.py +0 -0
  64. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
  65. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/domain/models/session.py +0 -0
  66. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
  67. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
  68. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/__init__.py +0 -0
  69. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
  70. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
  71. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
  72. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/inbound/init.py +0 -0
  73. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
  74. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
  75. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
  76. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
  77. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
  78. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
  79. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
  80. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
  81. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
  82. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
  83. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
  84. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
  85. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
  86. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
  87. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
  88. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
  89. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
  90. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
  91. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
  92. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
  93. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
  94. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
  95. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
  96. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
  97. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/__init__.py +0 -0
  98. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
  99. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
  100. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
  101. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/action_executor.py +0 -0
  102. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/action_factory.py +0 -0
  103. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
  104. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
  105. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/context_service.py +0 -0
  106. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/edit_simulator.py +0 -0
  107. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
  108. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
  109. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/init_service.py +0 -0
  110. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
  111. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
  112. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
  113. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/parser_metadata.py +0 -0
  114. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/parser_reporting.py +0 -0
  115. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/plan_validator.py +0 -0
  116. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/prompt_manager.py +0 -0
  117. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
  118. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
  119. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
  120. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/session_planner.py +0 -0
  121. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
  122. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/session_replanner.py +0 -0
  123. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/session_repository.py +0 -0
  124. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/session_service.py +0 -0
  125. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
  126. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/update_checker.py +0 -0
  127. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
  128. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
  129. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
  130. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
  131. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
  132. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
  133. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
  134. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
  135. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/utils/__init__.py +0 -0
  136. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/utils/diff.py +0 -0
  137. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
  138. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/utils/io.py +0 -0
  139. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/utils/markdown.py +0 -0
  140. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/utils/paths.py +0 -0
  141. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/utils/serialization.py +0 -0
  142. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/utils/session_notices.py +0 -0
  143. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
  144. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/utils/string.py +0 -0
  145. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/core/utils/terminal.py +0 -0
  146. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/prompts.py +0 -0
  147. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/registries/__init__.py +0 -0
  148. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/registries/infrastructure.py +0 -0
  149. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/registries/reviewer.py +0 -0
  150. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/registries/validators.py +0 -0
  151. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/__init__.py +0 -0
  152. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/config/__init__.py +0 -0
  153. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/config/config.yaml +0 -0
  154. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/config/init.context +0 -0
  155. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/config/prompts/assistant.md +0 -0
  156. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/config/prompts/pathfinder.md +0 -0
  157. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/templates/PROJECT.md +0 -0
  158. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/templates/ci.md +0 -0
  159. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/templates/component-design.md +0 -0
  160. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/templates/makefile.md +0 -0
  161. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/templates/pre-commit.md +0 -0
  162. {teddy_cli-0.1.17.dev1309 → teddy_cli-0.1.17.dev1311}/src/teddy_executor/resources/templates/specification-document.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: teddy-cli
3
- Version: 0.1.17.dev1309
3
+ Version: 0.1.17.dev1311
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "teddy-cli"
3
- version = "0.1.17.dev1309"
3
+ version = "0.1.17.dev1311"
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 = [
@@ -68,15 +68,18 @@ class TerminalQuitKeyListener:
68
68
  # --- terminal mode (POSIX) ---
69
69
 
70
70
  def _enter_noncanonical_mode(self) -> None:
71
- """Switch the controlling TTY to non-canonical mode, keeping ISIG SET."""
71
+ """Switch the controlling TTY to non-canonical mode, re-enabling ISIG."""
72
72
  if sys.platform == "win32":
73
73
  return
74
74
  termios = cast(Any, importlib.import_module("termios"))
75
75
  fd = sys.stdin.fileno()
76
76
  attrs = termios.tcgetattr(fd)
77
- # Disable canonical line editing and echo, but KEEP ISIG so a real
78
- # Ctrl+C still generates SIGINT alongside the bare-`q` trigger.
79
- attrs[3] &= ~(termios.ICANON | termios.ECHO)
77
+ # Disable canonical line editing and echo, but RE-ENABLE ISIG so a real
78
+ # Ctrl+C still generates SIGINT alongside the bare-`q` trigger. ISIG is
79
+ # set explicitly, not merely preserved, because a prior raw-mode reader
80
+ # such as prompt_toolkit's vt100 mode clears it and restores it only on a
81
+ # clean exit, which can leave the terminal unable to deliver SIGINT.
82
+ attrs[3] = (attrs[3] & ~(termios.ICANON | termios.ECHO)) | termios.ISIG
80
83
  attrs[6][termios.VMIN] = 1
81
84
  attrs[6][termios.VTIME] = 0
82
85
  termios.tcsetattr(fd, termios.TCSAFLUSH, attrs)
@@ -93,10 +93,6 @@ class PlanningService(IPlanningUseCase):
93
93
  (turn_path / "input.md").as_posix(), full_context
94
94
  )
95
95
 
96
- model = str(
97
- meta.get("model") or self._config_service.get_setting("llm.model") or ""
98
- )
99
-
100
96
  # Pre-emptive Hydration: Trigger hydration via get_context_window BEFORE counting tokens.
101
97
  # This ensures the model is known to the registry so token counting and telemetry work.
102
98
  if self._user_interactor:
@@ -110,6 +106,8 @@ class PlanningService(IPlanningUseCase):
110
106
  if self._user_interactor:
111
107
  self._display_telemetry(meta, token_count)
112
108
 
109
+ self._check_context_budget(token_count, model)
110
+
113
111
  response, plan_content, turn_cost = self._perform_generation_with_retry(
114
112
  messages,
115
113
  model=model,
@@ -231,6 +229,27 @@ class PlanningService(IPlanningUseCase):
231
229
  f"[blue]• Session Cost:[/blue] [magenta]{cost_str}[/magenta]\n"
232
230
  )
233
231
 
232
+ def _check_context_budget(self, token_count: int, model: str) -> None:
233
+ """Raise a user-visible error when the request exceeds the model window.
234
+
235
+ Case file 07 Measure 2 (Jidoka): the request token count and the model
236
+ context window were computed only for display. This turns an oversized
237
+ request into a loud failure instead of a silent stall inside the LLM
238
+ call. A non-positive window means the window is unknown, so no error is
239
+ raised and only a strict excess is over budget.
240
+ """
241
+ from teddy_executor.core.domain.models.exceptions import ConfigurationError
242
+
243
+ context_window = int(
244
+ self._safe_float(self._llm_client.get_context_window(model=model))
245
+ )
246
+ if context_window > 0 and token_count > context_window:
247
+ raise ConfigurationError(
248
+ f"Context Window Exceeded: the request is {token_count} tokens, "
249
+ f"which exceeds the {context_window}-token context window of "
250
+ f"model '{model}'."
251
+ )
252
+
234
253
  def _safe_float(self, v: Any, default: float = 0.0) -> float:
235
254
  """Robust conversion to float, handling mocks and strings."""
236
255
  try:
@@ -118,7 +118,7 @@ Applies to all user-facing Messages and turn titles:
118
118
  ### Pragmatic Simplified Technical English
119
119
 
120
120
  All text in Rationale, Message, action descriptions, and documentation must adhere to Pragmatic STE:
121
- Write in grammatically complete sentences using active voice, standard articles, and no semicolons, avoiding conversational fluff and clipped fragments. Limit procedural instructions to 20 words in the imperative mood with conditions placed before actions; limit descriptive statements to 25 words with one fact per sentence. Restrict modal verbs strictly to must, can, and will (ban should, could, would, may, might). Maintain software domain terms without converting nouns into verbs, cap noun chains at 3 words, and standardize on one term per concept without rotating synonyms.
121
+ Write in grammatically complete sentences using active voice, standard articles, and no semicolons, avoiding conversational fluff and clipped fragments. Limit procedural instructions to 20 words in the imperative mood with conditions placed before actions. Limit descriptive statements to 25 words with one fact per sentence. Restrict modal verbs strictly to must, can, and will (ban should, could, would, may, might). Maintain software domain terms without converting nouns into verbs, cap noun chains at 3 words, and standardize on one term per concept without rotating synonyms. Use only standard industry terms instead of invented jargon and metaphors.
122
122
 
123
123
  ### Quality-Gate Bypass Policy
124
124
 
@@ -38,7 +38,7 @@ Follow these phases and steps in order. Keep track of your progress in your Stat
38
38
  Place Wiring first as the tracer bullet deliverable (preceded by Env if tooling prerequisites exist), followed by contract, harness, logic, migration, refactor, and cleanup in continuous-green dependency order. For every key unknown, record a one-line Design Sensitivity stating how the design reacts to each resolution.
39
39
  EDIT the active milestone document in `docs/project/milestones/` to link all created slice documents under `## Slices` using unbolded markdown links.
40
40
  7. **Impact Audit:**
41
- Run EXECUTE `git grep` on target components. If a component has more than one consumer, categorize it as a Shared Seam and partition the work into a non-breaking parallel change: expand, migrate, contract. Decompose any deliverable touching more than one consumer or layer into smaller atomic items. Resolve stale hits for deleted or renamed components in documentation. Verify that all seam changes have matching harness deliverables.
41
+ Run EXECUTE `git grep` on target components. If a component has more than one consumer, categorize it as a Shared Seam and partition the work into non-breaking steps: expand the interface, migrate consumers, then contract obsolete code. Decompose any deliverable touching more than one consumer or layer into smaller atomic items. Resolve stale hits for deleted or renamed components in documentation. Verify that all seam changes have matching harness deliverables.
42
42
 
43
43
  ### Alignment
44
44
  **Goal:** Present the design proposal and secure user alignment.
@@ -66,7 +66,7 @@ Follow these phases and steps in order. Keep track of your progress in your Stat
66
66
  5. EXECUTE the MRE. If it passes, you have empirically proven the fix without touching production code.
67
67
  6. Always EDIT the Case File to record verification results. If it fails, update the Causal Model and restart investigation.
68
68
  7. **Systemic Audit:**
69
- Analyze the verified root cause to identify its abstract category. Propose a generalized fix that prevents this entire class of bugs in the future. Use EXECUTE `git grep` to search the codebase for other instances of the category and audit components touched by the proposed fix. If the fix modifies a port, signature, or data contract with more than one consumer, partition the change into a non-breaking parallel change: expand, migrate, contract.
69
+ Analyze the verified root cause to identify its abstract category. Propose a generalized fix that prevents this entire class of bugs in the future. Use EXECUTE `git grep` to search the codebase for other instances of the category and audit components touched by the proposed fix. If the fix modifies a port, signature, or data contract with more than one consumer, partition the change into non-breaking steps: expand the interface, migrate consumers, then contract obsolete code.
70
70
  8. **Case File Synchronization:**
71
71
  EDIT the Case File following conventions in `docs/project/PROJECT.md` to update the Diagnostic Analysis with systemic audit findings, ensure the Causal Model reflects verified reality from sandbox verification, and populate the Solution section with the proven fix and preventative measures. Set status to Resolved.
72
72
 
@@ -19,7 +19,7 @@ Follow these phases and steps in order. Keep track of your progress in your Stat
19
19
  3. **Plan Initialization / Audit:**
20
20
  If no slice exists, CREATE one following conventions in `docs/project/PROJECT.md` informed by discovery findings, linking any reference files and placing Wiring first as the tracer bullet.
21
21
 
22
- If a slice already exists, audit target components via EXECUTE `git grep`. Verify that all deliverables maintain a Continuous Green State. If a deliverable attempts a breaking signature change to a Shared Seam (git grep count greater than 1) without a migration plan, immediately EDIT the slice to re-partition the work into a non-breaking parallel change (expand, migrate, contract). Decompose any item touching more than one logical change into smaller atomic deliverables. Verify Wiring is placed first.
22
+ If a slice already exists, audit target components via EXECUTE `git grep`. Verify that all deliverables keep all tests passing at every commit. If a deliverable attempts a breaking signature change to a Shared Seam (git grep count greater than 1) without a migration plan, immediately EDIT the slice to re-partition the work into non-breaking steps (expand -> migrate -> contract). Decompose any item touching more than one logical change into smaller atomic deliverables. Verify Wiring is placed first.
23
23
 
24
24
  Set slice Status to In Progress. If the slice was newly created or modified during audit, run `make commit` to version control the plan before starting work.
25
25
  4. **Mark Deliverable:**
@@ -36,7 +36,7 @@ Follow these phases and steps in order. Keep track of your progress in your Stat
36
36
  **Goal:** Translate verified findings into buildable slices, component designs, and specifications.
37
37
 
38
38
  1. **Impact and Debt Audit:**
39
- Run EXECUTE `git grep` on target components. If a modified component has more than one consumer, treat it as a Shared Seam and structure deliverables as a non-breaking parallel change: expand, migrate, contract. Verify that all contract changes include matching harness deliverables.
39
+ Run EXECUTE `git grep` on target components. If a modified component has more than one consumer, treat it as a Shared Seam and structure deliverables as non-breaking steps: expand the interface, migrate consumers, then contract obsolete code. Verify that all contract changes include matching harness deliverables.
40
40
  2. **Artifact Updates:**
41
41
  EDIT the Vertical Slice to reflect validated scenarios, edge cases, implementation deliverables, and verification steps. Place Wiring first as the tracer bullet deliverable, followed by contract, logic, refactoring, and harness deliverables. Mark resolved unknowns as completed, link the prototype directory in the slice metadata, and set status to Planned. EDIT linked Component Design Docs and specs in `docs/project/specs/` to reflect as-tested contracts, parameters, and invariants discovered during prototyping.
42
42
 
@@ -7,7 +7,7 @@ This section defines foundational engineering practices. Each entry MUST be a sp
7
7
  **Template format:** `- **Rule Name:** Description and enforcement mechanism.`
8
8
 
9
9
  ### Recommended: customize per project
10
- - **Version Control:** Branch strategy and commit conventions. Every commit MUST leave the suite in a **Continuous Green State** — the full test suite passes before and after each change. Commit locally per deliverable; defer the push to the session Conclusion and report CI results back (blocking only on failures the push introduced).
10
+ - **Version Control:** Branch strategy and commit conventions. Every commit MUST pass the full test suite before and after each change (`make test`). Commit locally per deliverable; defer the push to the session Conclusion and report CI results back (blocking only on failures the push introduced).
11
11
  - **Run Environment:** Designated runner (e.g., `uv run`, `poetry run`).
12
12
  - **Failure Transparency:** Error handling policy — specific exceptions only, no silent suppression.
13
13
  - **Testing Strategy:** Define test types (Unit, Integration, Acceptance), boundaries, and filesystem hygiene. Mandate **Test Double Integrity**. Ban global patching. Use in-memory fakes for state-managing outbound ports. Use strictly autospec-bound mocks only for external side-effects.
@@ -1,8 +1,8 @@
1
1
  # Bug: {{bug_title}}
2
2
  - **Status:** Unresolved
3
- - **Milestone:** [link or N/A]
4
- - **Vertical Slice:** [link or N/A]
5
- - **Specs:** [links or N/A]
3
+ - **Milestone:** [link]
4
+ - **Vertical Slice:** [link]
5
+ - **Specs:** [links]
6
6
 
7
7
  ## Symptoms
8
8
  Expected vs. actual behavior and minimal reproduction steps.
@@ -22,7 +22,6 @@ Components, modules, or hypotheses definitively eliminated during investigation.
22
22
  Concise description of how the faulty system operates based strictly on verified observations.
23
23
 
24
24
  ### Discrepancies
25
- <!-- Check off items and append `(Resolved: <explanation>)` ONLY once verified. Do NOT add resolution before proof. -->
26
25
  - [ ] Discrepancy between expected and observed behavior.
27
26
  - [x] Discrepancy between expected and observed behavior (Resolved: explanation of root cause).
28
27
 
@@ -12,6 +12,6 @@ The What: Strategic architecture, chosen design patterns, system boundaries, and
12
12
  The How: Actionable strategy, engineering invariants, architectural rules, and test harness considerations.
13
13
 
14
14
  ## Slices
15
- <!-- Decompose into end-to-end vertical slices cutting across all layers. -->
15
+ Decompose requirements into end-to-end vertical slices cutting across all layers.
16
16
  - [ ] [MM-01-slice-slug](../slices/MM-01-slice-slug.md): Tackles Req X. Brief scope statements.
17
17
  - [ ] [MM-02-slice-slug](../slices/MM-02-slice-slug.md): Tackles Req Y and Z. Brief scope statements.
@@ -1,7 +1,7 @@
1
1
  # Slice: {{feature_name}}
2
2
  - **Status:** [Planned | In Progress | Completed]
3
- - **Milestone:** [MM-name](../milestones/MM-name.md)
4
- - **Depends On:** [MM-01-slice-slug.md](./MM-01-slice-slug.md) <!-- Link prerequisite slice or 'None' -->
3
+ - **Milestone:** [link]
4
+ - **Depends On:** [link]
5
5
  - **Specs:** [links]
6
6
  - **Prototype:** [link]
7
7
  - **Component Docs:** [links]
@@ -11,7 +11,8 @@
11
11
  1-2 sentences describing the user need and measurable value delivered by this slice.
12
12
 
13
13
  ## Scenarios
14
- <!-- Primary user journeys and happy paths. These drive End-to-End Acceptance Tests in the Wiring deliverable. -->
14
+ Primary user journeys and happy paths. These drive End-to-End Acceptance Tests in the Wiring deliverable.
15
+
15
16
  > As a [user type], I want to [action] so that [benefit].
16
17
 
17
18
  ```gherkin
@@ -21,7 +22,7 @@ Then [expected outcome]
21
22
  ```
22
23
 
23
24
  ## Edge Cases
24
- <!-- Boundary conditions, errors, and validation edge cases. These drive granular Unit Tests in Logic deliverables. -->
25
+ Boundary conditions, errors, and validation edge cases. These drive granular Unit Tests in Logic deliverables.
25
26
  - **Title**: If [condition], then [behavior], because [reason/invariant].
26
27
 
27
28
  ## Key Unknowns
@@ -42,8 +43,7 @@ Then [expected outcome]
42
43
  **Design Sensitivity:** For every unknown, record a one-line Design Sensitivity stating how the design reacts to each resolution (e.g., "if this resolves as X → contracts hold; if Y → this port/DTO changes").
43
44
 
44
45
  ## Impact
45
- Surface of affected components using the Parallel Change (Expand-Migrate-Contract) model.
46
- Execute deliverables strictly in this order to maintain a Continuous Green State (`make test` passes at every commit). Never mutate shared contracts in place when existing consumers exist.
46
+ Map affected components using non-breaking steps (expand -> migrate -> contract) to protect existing consumers.
47
47
 
48
48
  **Format:**
49
49
  1. `[NEW]` `ComponentOrModule` — Create new boundary or component.
@@ -63,9 +63,11 @@ Execute deliverables strictly in this order to maintain a Continuous Green State
63
63
  - **Refactor:** Improving code design without altering behavior (DRY, SRP, extracting helpers).
64
64
  - **Cleanup:** Removing deprecated methods, dead code, and temporary shims.
65
65
 
66
- **Order:** Order deliverables to maintain a Continuous Green State (`make test` passes at every commit). `(Env)` is placed first whenever tooling or environment setup is a prerequisite:
66
+ **Order:** Order deliverables to keep all tests passing at every commit (`make test`). `(Env)` is placed first whenever tooling or environment setup is a prerequisite:
67
67
  `(Env) -> Wiring -> Contract -> Harness -> Logic -> Migration -> Refactor -> Cleanup`
68
68
 
69
+ **Tests:** Do not specify individual tests in deliverables. Scenarios and Edge Cases must define test requirements.
70
+
69
71
  **Format:**
70
72
  - [ ] **Wiring** - Connect outermost boundaries with skeleton response.
71
73
  - [ ] **Contract** - Define port interfaces and DTOs.
@@ -75,9 +77,7 @@ Execute deliverables strictly in this order to maintain a Continuous Green State
75
77
  Free-form notes recording decisions, deviations, or discoveries during implementation.
76
78
 
77
79
  ## Verification
78
- <!-- Manual User Acceptance Testing (UAT) steps for the user to execute at slice conclusion. -->
79
- <!-- Provide clear, step-by-step instructions. Use copy-pasteable commands for CLI/APIs, or exact interactive steps for UI/visual flows. -->
80
- <!-- Do NOT include running automated tests here; those are covered by the automated test suite. -->
80
+ Manual verification steps for user execution at slice conclusion. Provide clear instructions with copy-pasteable commands or interactive UI steps. Do not include automated test commands.
81
81
 
82
82
  **Format:**
83
83
  - [ ] **Title:**