teddy-cli 0.1.17.dev1418__tar.gz → 0.1.17.dev1419__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 (165) hide show
  1. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/PKG-INFO +1 -1
  2. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/pyproject.toml +1 -1
  3. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +29 -28
  4. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/resources/templates/makefile.md +3 -6
  5. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/.gitignore +0 -0
  6. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/LICENSE +0 -0
  7. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/README.md +0 -0
  8. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/__init__.py +0 -0
  9. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/__main__.py +0 -0
  10. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/__init__.py +0 -0
  11. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
  12. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
  13. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
  14. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
  15. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
  16. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
  17. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
  18. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
  19. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
  20. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
  21. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
  22. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
  23. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
  24. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
  25. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
  26. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
  27. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
  28. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
  29. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
  30. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
  31. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
  32. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
  33. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
  34. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
  35. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
  36. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
  37. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
  38. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
  39. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
  40. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
  41. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
  42. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/container.py +0 -0
  43. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/__init__.py +0 -0
  44. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/domain/__init__.py +0 -0
  45. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/domain/models/__init__.py +0 -0
  46. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
  47. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/domain/models/change_set.py +0 -0
  48. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/domain/models/config_schema.py +0 -0
  49. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
  50. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
  51. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
  52. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
  53. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/domain/models/plan.py +0 -0
  54. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
  55. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/domain/models/project_context.py +0 -0
  56. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
  57. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/domain/models/session.py +0 -0
  58. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
  59. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
  60. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/__init__.py +0 -0
  61. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
  62. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
  63. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
  64. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/inbound/init.py +0 -0
  65. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
  66. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
  67. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
  68. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
  69. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
  70. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
  71. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
  72. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
  73. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
  74. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
  75. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
  76. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
  77. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
  78. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
  79. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
  80. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
  81. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
  82. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
  83. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
  84. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
  85. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
  86. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
  87. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
  88. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
  89. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/__init__.py +0 -0
  90. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
  91. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
  92. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
  93. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/action_executor.py +0 -0
  94. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/action_factory.py +0 -0
  95. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
  96. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
  97. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/context_service.py +0 -0
  98. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/edit_simulator.py +0 -0
  99. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
  100. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
  101. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/init_service.py +0 -0
  102. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
  103. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
  104. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
  105. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/parser_metadata.py +0 -0
  106. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/parser_reporting.py +0 -0
  107. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/plan_validator.py +0 -0
  108. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/planning_service.py +0 -0
  109. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/prompt_manager.py +0 -0
  110. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
  111. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
  112. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
  113. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/session_planner.py +0 -0
  114. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
  115. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/session_replanner.py +0 -0
  116. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/session_repository.py +0 -0
  117. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/session_service.py +0 -0
  118. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
  119. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/update_checker.py +0 -0
  120. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
  121. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
  122. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
  123. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
  124. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
  125. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
  126. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
  127. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
  128. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/utils/__init__.py +0 -0
  129. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/utils/diff.py +0 -0
  130. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/utils/editor_names.py +0 -0
  131. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
  132. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/utils/interruptible_call.py +0 -0
  133. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/utils/io.py +0 -0
  134. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/utils/markdown.py +0 -0
  135. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/utils/paths.py +0 -0
  136. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/utils/serialization.py +0 -0
  137. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/utils/session_notices.py +0 -0
  138. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
  139. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/utils/string.py +0 -0
  140. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/core/utils/terminal.py +0 -0
  141. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/prompts.py +0 -0
  142. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/registries/__init__.py +0 -0
  143. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/registries/infrastructure.py +0 -0
  144. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/registries/reviewer.py +0 -0
  145. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/registries/validators.py +0 -0
  146. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/resources/MRP.md +0 -0
  147. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/resources/__init__.py +0 -0
  148. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/resources/config/__init__.py +0 -0
  149. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/resources/config/config.yaml +0 -0
  150. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/resources/config/init.context +0 -0
  151. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/resources/config/prompts/architect.md +0 -0
  152. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/resources/config/prompts/assistant.md +0 -0
  153. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/resources/config/prompts/debugger.md +0 -0
  154. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/resources/config/prompts/developer.md +0 -0
  155. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/resources/config/prompts/pathfinder.md +0 -0
  156. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/resources/config/prompts/prototyper.md +0 -0
  157. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/resources/templates/ARCHITECTURE.md +0 -0
  158. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/resources/templates/PROJECT.md +0 -0
  159. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/resources/templates/case-file.md +0 -0
  160. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/resources/templates/ci.md +0 -0
  161. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/resources/templates/component-design.md +0 -0
  162. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/resources/templates/milestone.md +0 -0
  163. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/resources/templates/pre-commit.md +0 -0
  164. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/src/teddy_executor/resources/templates/specification-document.md +0 -0
  165. {teddy_cli-0.1.17.dev1418 → teddy_cli-0.1.17.dev1419}/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.dev1418
3
+ Version: 0.1.17.dev1419
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.dev1418"
3
+ version = "0.1.17.dev1419"
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 = [
@@ -286,6 +286,7 @@ _GIT_PULL_TIMEOUT_SECONDS = 15
286
286
  _PULL_SKIPPED_WARNING = "⚠ Workspace pull skipped; continuing with the current branch."
287
287
  _PULL_TIMEOUT_WARNING = "⚠ Workspace pull timed out; continuing without it."
288
288
  _PULL_GIT_UNAVAILABLE_WARNING = "⚠ Workspace pull skipped; git is unavailable."
289
+ _PULL_UP_TO_DATE_NOTICE = "✓ Workspace up-to-date with remote"
289
290
  _IN_PROGRESS_GIT_MARKERS = (
290
291
  "rebase-merge",
291
292
  "rebase-apply",
@@ -295,13 +296,12 @@ _IN_PROGRESS_GIT_MARKERS = (
295
296
 
296
297
 
297
298
  def _warn_pull(message: str) -> None:
298
- """Print one yellow pull warning followed by a blank line.
299
+ """Print one yellow pull warning.
299
300
 
300
- The trailing blank line keeps every pull block, success or warning, the
301
- same height before the ``Checking configurations...`` line.
301
+ The shared preamble owns the separator blank line before
302
+ ``Checking configurations...``, so this line carries no trailing blank.
302
303
  """
303
304
  typer.secho(message, fg=typer.colors.YELLOW, err=True)
304
- typer.echo("", err=True)
305
305
 
306
306
 
307
307
  def _pull_workspace_on_start(
@@ -411,20 +411,22 @@ def _read_head(git_run: Callable[..., Any]) -> str:
411
411
 
412
412
 
413
413
  def _report_fast_forward(git_run: Callable[..., Any], before: str, after: str) -> None:
414
- """Report how many commits the fast-forward moved, or stay silent.
414
+ """Report the pull outcome so the user always sees a result.
415
415
 
416
- A pull that moves no commit has nothing to report, so it prints nothing.
416
+ A fast-forward names the number of moved commits. A pull that moves no
417
+ commit confirms the workspace is already up to date.
417
418
  """
418
- if after == before:
419
- return
420
- count_output = git_run(
421
- ["git", "rev-list", "--count", f"{before}..{after}"],
422
- capture_output=True,
423
- text=True,
424
- timeout=_GIT_PULL_TIMEOUT_SECONDS,
425
- ).stdout.strip()
426
- commits = int(count_output) if count_output else 0
419
+ commits = 0
420
+ if after != before:
421
+ count_output = git_run(
422
+ ["git", "rev-list", "--count", f"{before}..{after}"],
423
+ capture_output=True,
424
+ text=True,
425
+ timeout=_GIT_PULL_TIMEOUT_SECONDS,
426
+ ).stdout.strip()
427
+ commits = int(count_output) if count_output else 0
427
428
  if commits <= 0:
429
+ typer.secho(_PULL_UP_TO_DATE_NOTICE, fg=typer.colors.GREEN, err=True)
428
430
  return
429
431
  noun = "commit" if commits == 1 else "commits"
430
432
  typer.secho(
@@ -432,9 +434,6 @@ def _report_fast_forward(git_run: Callable[..., Any], before: str, after: str) -
432
434
  fg=typer.colors.GREEN,
433
435
  err=True,
434
436
  )
435
- # A trailing blank line separates the fast-forward block from the
436
- # ``Checking configurations...`` line that follows it.
437
- typer.echo("", err=True)
438
437
 
439
438
 
440
439
  def _start_background_update_check(container: Container) -> list[str]:
@@ -468,16 +467,19 @@ def _run_startup_preamble( # noqa: PLR0913 # Each parameter is an explicit sta
468
467
  """Run the shared startup preamble for both session entry points.
469
468
 
470
469
  The order is fixed so the banner layout cannot drift: health checks, the
471
- start-only workspace fast-forward line, the ``Checking configurations...``
472
- line, the preflight check (whose returned keys extend ``fired``), then the
473
- shared disable-footer. ``start`` forwards its ``agent`` so the preflight
474
- validates the agent prompt and enables ``pull_workspace``; ``resume``
475
- leaves the agent ``None`` and keeps the pull off.
470
+ start-only workspace fast-forward line, one separator blank line, the
471
+ ``Checking configurations...`` line, the preflight check (whose returned
472
+ keys extend ``fired``), then the shared disable-footer. ``start`` forwards
473
+ its ``agent`` so the preflight validates the agent prompt and enables
474
+ ``pull_workspace``; ``resume`` leaves the agent ``None`` and keeps the pull
475
+ off.
476
476
  """
477
477
  config_service = container.resolve(IConfigService)
478
478
  _run_health_checks(config_service)
479
479
  if pull_workspace:
480
480
  _pull_workspace_on_start(config_service)
481
+ # One separator groups the checkmark block above with the notices below.
482
+ typer.echo("", err=True)
481
483
  typer.echo("Checking configurations...", err=True)
482
484
  fired.extend(
483
485
  _run_cli_preflight_check(
@@ -772,11 +774,10 @@ def _display_drift_notification(container: Container) -> list[str]:
772
774
  fired.append("checks.templates")
773
775
 
774
776
  if drift_lines:
775
- # A single leading blank separates this block from the
776
- # ``Checking configurations...`` line above it. The lines carry no
777
- # trailing newline, so the shared disable-footer (emitted next) abuts
778
- # the final drift line.
779
- typer.echo("\n" + "\n".join(drift_lines))
777
+ # The notices sit directly under ``Checking configurations...``. The
778
+ # lines carry no trailing newline, so the shared disable-footer
779
+ # (emitted next) abuts the final drift line.
780
+ typer.echo("\n".join(drift_lines))
780
781
 
781
782
  return fired
782
783
 
@@ -13,7 +13,7 @@ make commit MSG="feat(templates): add PROJECT.md template"
13
13
  ```
14
14
 
15
15
  **What is `.PHONY`?**
16
- `.PHONY` is a Makefile directive that declares `commit`, `push`, `ci-watch`, `probe`, `test`, `logs`, `help`, and the internal `_preflight` gate as phony targets — they do not correspond to actual files. Without `.PHONY`, if a file named `commit` or `probe` existed in the directory (e.g., a script called `commit`), Make would see it as up-to-date and skip the target entirely. By declaring them phony, Make always runs the recipe when you call `make commit`, `make push`, `make ci-watch`, `make probe`, or `make test`.
16
+ `.PHONY` declares `commit`, `push`, `ci-watch`, `probe`, `test`, `logs`, `help`, and the internal `_preflight` gate as targets that name no file. Without it, a file named `commit` in the project root makes Make treat that target as up to date and skip the recipe.
17
17
 
18
18
  ### Help
19
19
  ```shell
@@ -95,8 +95,9 @@ Always use GNU Make native features for cross-platform compatibility instead of
95
95
  - **Named inputs instead of positional goals:** Pass values as `NAME="value"`, as in `make commit MSG="feat(scope): add thing"`. GNU Make treats a command-line assignment as a variable, so no word of the value can become a goal. Positional capture through `$(MAKECMDGOALS)` is forbidden, because a word that names a real target executes that target.
96
96
  - **Parse-time goal validation:** Compare `$(MAKECMDGOALS)` against a `_KNOWN_GOALS` list and abort with `$(error ...)` when a goal is unknown or when more than one goal is present. The check runs while Make reads the file, so no recipe line can run first.
97
97
  - **POSIX shell preflight:** Every POSIX recipe target (`ci-watch`, `probe`, `logs`) depends on the internal `_preflight` target, which verifies `git`, `gh`, `awk`, and `sed` before any network call. It aborts with one actionable message instead of a generic `make: *** Error 1`. A missing required input aborts at parse time, before the tool gate runs.
98
+ - **One shell process per command group:** Make spawns one process per recipe line that carries a shell metacharacter, and Windows process creation costs far more than on POSIX. Join a target's independent commands into one backslash-continued block separated by `;`, so the target pays one process instead of one per line.
98
99
  - **Shell routing for Bash-only commands:** Make spawns a recipe line directly when the line carries no shell metacharacter. That direct spawn bypasses `SHELL`. On Windows it fails for Git Bash-only programs such as `sleep` and for shell builtins such as `echo`. Keep these commands inside a shell block that carries `;`, `&&`, or a variable expansion.
99
- - **Windows shell selection:** Set `SHELL := bash.exe` when `OS` is `Windows_NT` so multi-line shell pipelines (`ci-watch`, `probe`, `logs`) execute through Git Bash. `_preflight` also confirms that the shell is Git Bash rather than the WSL `bash.exe` shim, and it names the `SHELL=` override when it is not.
100
+ - **Windows shell selection:** Set `SHELL := bash.exe` when `OS` is `Windows_NT`. The assignment covers every target, not only the pipelines, and `_preflight` confirms that the shell is Git Bash rather than the WSL `bash.exe` shim and names the `SHELL=` override when it is not.
100
101
  - **Portable quoting:** Pass values with double quotes, as in `--field reason="..."`, because Windows `cmd.exe` keeps single quotes literally.
101
102
  - **ASCII-only output:** Recipe output stays ASCII, because a Windows console turns a non-ASCII dash into mojibake in captured logs.
102
103
  - **Explicit advisory fallback:** The advisory pre-commit pass consumes its own exit code with `|| echo "<sentence>"`, so a failing run prints one plain sentence. Make's `-` prefix is forbidden here, because it prints a bare `Error 1 (ignored)` line that reads as an unexplained defect.
@@ -321,8 +322,6 @@ ci-watch: _preflight
321
322
 
322
323
  ```makefile
323
324
  probe: _preflight
324
-
325
- probe:
326
325
  git add -f spikes/debug/probe.sh
327
326
  git commit -m "debug: probe" --no-verify --allow-empty
328
327
  git push
@@ -357,8 +356,6 @@ The Debugger's Reproduction phase needs to read CI logs without drowning in the
357
356
 
358
357
  ```makefile
359
358
  logs: _preflight
360
-
361
- logs:
362
359
  @if [ -z "$(STEP)" ]; then \
363
360
  gh run view "$(RUN)" --log-failed 2>/dev/null | awk -F'\t' '{ if(j!=$$1||s!=$$2){j=$$1;s=$$2;print "\n["j" > "s"]"} l=$$3; p=index(l,"Z "); if(p>0)l=substr(l,p+2); gsub(/\x1B\[[0-9;]*[a-zA-Z]/,"",l); gsub(/\^\[\[[0-9;]*[a-zA-Z]/,"",l); if(l ~ /^##\[group\]Run /){k=1;next} if(k && l ~ /^##\[endgroup\]/){k=0;next} if(k)next; if(l ~ /^##\[group\]/ || l ~ /^##\[endgroup\]/)next; gsub(/^##\[error\]/,"Error: ",l); print l }'; \
364
361
  else \