teddy-cli 0.1.17.dev1325__tar.gz → 0.1.17.dev1327__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.dev1325 → teddy_cli-0.1.17.dev1327}/PKG-INFO +1 -1
  2. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/pyproject.toml +1 -1
  3. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -4
  4. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -4
  5. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/update_checker.py +14 -5
  6. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/resources/templates/makefile.md +9 -3
  7. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/resources/templates/pre-commit.md +1 -1
  8. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/.gitignore +0 -0
  9. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/LICENSE +0 -0
  10. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/README.md +0 -0
  11. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/__init__.py +0 -0
  12. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/__main__.py +0 -0
  13. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/__init__.py +0 -0
  14. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
  15. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
  16. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
  17. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +0 -0
  18. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
  19. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
  20. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
  21. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
  22. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
  23. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
  24. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
  25. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
  26. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
  27. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
  28. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
  29. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
  30. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
  31. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
  32. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
  33. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
  34. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
  35. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
  36. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
  37. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
  38. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
  39. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
  40. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
  41. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
  42. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
  43. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
  44. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
  45. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
  46. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/container.py +0 -0
  47. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/__init__.py +0 -0
  48. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/domain/__init__.py +0 -0
  49. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/domain/models/__init__.py +0 -0
  50. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
  51. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/domain/models/change_set.py +0 -0
  52. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
  53. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
  54. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
  55. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
  56. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/domain/models/plan.py +0 -0
  57. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
  58. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/domain/models/project_context.py +0 -0
  59. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
  60. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/domain/models/session.py +0 -0
  61. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
  62. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
  63. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/__init__.py +0 -0
  64. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
  65. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
  66. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
  67. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/inbound/init.py +0 -0
  68. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
  69. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
  70. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
  71. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
  72. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
  73. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
  74. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
  75. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
  76. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
  77. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
  78. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
  79. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
  80. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
  81. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
  82. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
  83. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
  84. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
  85. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
  86. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
  87. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
  88. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
  89. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
  90. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/__init__.py +0 -0
  91. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
  92. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
  93. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
  94. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/action_executor.py +0 -0
  95. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/action_factory.py +0 -0
  96. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
  97. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
  98. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/context_service.py +0 -0
  99. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/edit_simulator.py +0 -0
  100. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
  101. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
  102. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/init_service.py +0 -0
  103. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
  104. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
  105. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
  106. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/parser_metadata.py +0 -0
  107. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/parser_reporting.py +0 -0
  108. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/plan_validator.py +0 -0
  109. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/planning_service.py +0 -0
  110. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/prompt_manager.py +0 -0
  111. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
  112. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
  113. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
  114. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/session_planner.py +0 -0
  115. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
  116. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/session_replanner.py +0 -0
  117. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/session_repository.py +0 -0
  118. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/session_service.py +0 -0
  119. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
  120. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
  121. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
  122. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
  123. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
  124. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
  125. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
  126. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
  127. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
  128. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/utils/__init__.py +0 -0
  129. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/utils/diff.py +0 -0
  130. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
  131. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/utils/io.py +0 -0
  132. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/utils/markdown.py +0 -0
  133. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/utils/paths.py +0 -0
  134. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/utils/serialization.py +0 -0
  135. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/utils/session_notices.py +0 -0
  136. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
  137. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/utils/string.py +0 -0
  138. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/core/utils/terminal.py +0 -0
  139. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/prompts.py +0 -0
  140. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/registries/__init__.py +0 -0
  141. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/registries/infrastructure.py +0 -0
  142. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/registries/reviewer.py +0 -0
  143. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/registries/validators.py +0 -0
  144. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/resources/MRP.md +0 -0
  145. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/resources/__init__.py +0 -0
  146. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/resources/config/__init__.py +0 -0
  147. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/resources/config/config.yaml +0 -0
  148. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/resources/config/init.context +0 -0
  149. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/resources/config/prompts/architect.md +0 -0
  150. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/resources/config/prompts/assistant.md +0 -0
  151. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/resources/config/prompts/debugger.md +0 -0
  152. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/resources/config/prompts/developer.md +0 -0
  153. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/resources/config/prompts/pathfinder.md +0 -0
  154. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/resources/config/prompts/prototyper.md +0 -0
  155. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/resources/templates/ARCHITECTURE.md +0 -0
  156. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/resources/templates/PROJECT.md +0 -0
  157. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/resources/templates/case-file.md +0 -0
  158. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/resources/templates/ci.md +0 -0
  159. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/resources/templates/component-design.md +0 -0
  160. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/resources/templates/milestone.md +0 -0
  161. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/src/teddy_executor/resources/templates/specification-document.md +0 -0
  162. {teddy_cli-0.1.17.dev1325 → teddy_cli-0.1.17.dev1327}/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.dev1325
3
+ Version: 0.1.17.dev1327
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.dev1325"
3
+ version = "0.1.17.dev1327"
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 = [
@@ -2,10 +2,6 @@
2
2
  This module defines the inbound port for plan validation.
3
3
  """
4
4
 
5
- # Placeholder content
6
- # The Developer will implement this based on the design document.
7
- # See: docs/core/ports/inbound/plan_validator.md
8
-
9
5
  from abc import ABC, abstractmethod
10
6
  from typing import Dict, Optional, Sequence
11
7
 
@@ -2,10 +2,6 @@
2
2
  This module defines the outbound port for markdown report formatting.
3
3
  """
4
4
 
5
- # Placeholder content
6
- # The Developer will implement this based on the design document.
7
- # See: docs/core/ports/outbound/markdown_report_formatter.md
8
-
9
5
  from abc import ABC, abstractmethod
10
6
 
11
7
 
@@ -178,6 +178,8 @@ def write_update_cache(cache_path: Path, latest_version: str) -> None:
178
178
  """
179
179
  Atomically write the cache file (write to temp file, rename).
180
180
  Ensures the main thread never reads a partially written file.
181
+ The write is best-effort: a directory-creation or write failure is
182
+ logged at debug level and swallowed.
181
183
  """
182
184
  import json
183
185
  from datetime import datetime, timezone
@@ -186,9 +188,9 @@ def write_update_cache(cache_path: Path, latest_version: str) -> None:
186
188
  "latest_version": latest_version,
187
189
  "checked_at": datetime.now(timezone.utc).isoformat(),
188
190
  }
189
- cache_path.parent.mkdir(parents=True, exist_ok=True)
190
191
  tmp_path = cache_path.with_suffix(".tmp")
191
192
  try:
193
+ cache_path.parent.mkdir(parents=True, exist_ok=True)
192
194
  tmp_path.write_text(
193
195
  json.dumps(cache_data, indent=2), encoding="utf-8", newline=""
194
196
  )
@@ -206,8 +208,15 @@ def background_check(cache_path: Path, index_url: str = PYPI_URL) -> None:
206
208
  """
207
209
  Non-blocking background version check.
208
210
  Intended to run in a daemon thread. Fetches latest version from PyPI
209
- and writes it to cache. All errors are silently caught.
211
+ and writes it to cache. Every error is swallowed and logged at debug
212
+ level, so a late cache write can never fail the owning process.
210
213
  """
211
- latest = fetch_latest_version(index_url)
212
- if latest is not None:
213
- write_update_cache(cache_path, latest)
214
+ import logging
215
+
216
+ try:
217
+ latest = fetch_latest_version(index_url)
218
+ if latest is not None:
219
+ write_update_cache(cache_path, latest)
220
+ except Exception as e:
221
+ logger = logging.getLogger(__name__)
222
+ logger.debug("background_check failed: %s", e)
@@ -169,7 +169,7 @@ Attribution is deterministic: SHA → run → run-level + per-job conclusion (ne
169
169
 
170
170
  Key behaviors:
171
171
 
172
- 1. **Automatic SHA and BASE resolution.** `SHA` defaults to current `HEAD` (or `COMMIT=<sha>`), and `BASE` resolves per workflow to the most recent ancestor of `SHA` that carries a run for that workflow (bounded by `BASE_DEPTH`, default 50).
172
+ 1. **Automatic SHA and BASE resolution.** `SHA` defaults to current `HEAD` (or `COMMIT=<sha>`), and `BASE` resolves per workflow to the most recent ancestor of `SHA` that carries a run for that workflow (bounded by `BASE_DEPTH`, default 50). An explicit `BASE=<sha>` pins the baseline verbatim and skips resolution; if the pinned commit carries no run for the workflow, the target fails safe as an unknown base.
173
173
  2. **Registration lag is tolerated by a bounded retry.** CI can fail to register a run for the pushed SHA immediately. The target polls `gh run list --commit <sha>` up to `RETRY_POLLS × RETRY_SLEEP` (default 10 × 2s ≈ 20s) before attributing. It fails safe if the run never registers.
174
174
  3. **No CI is non-blocking.** If the repository has no workflow files under `.github/workflows/` (`*.yml`/`*.yaml`), the target logs `No CI configured - skipping attribution` and exits 0.
175
175
 
@@ -180,6 +180,7 @@ RETRY_POLLS ?= 10
180
180
  RETRY_SLEEP ?= 2
181
181
  DETAIL_LINES ?= 50
182
182
  BASE_DEPTH ?= 50
183
+ BASE ?=
183
184
 
184
185
  ci-watch:
185
186
  @SHA=$$(git rev-parse $${COMMIT:-HEAD}); \
@@ -223,8 +224,8 @@ ci-watch:
223
224
  echo "$$WF: BLOCKING (run=$$NEWCONC) — unknown conclusion — fail-safe block"; \
224
225
  STATUS=1; continue; \
225
226
  fi; \
226
- BASE=""; CUR="$$SHA"; DEPTH=0; \
227
- while [ $$DEPTH -lt $(BASE_DEPTH) ]; do \
227
+ BASE="$(BASE)"; CUR="$$SHA"; DEPTH=0; \
228
+ while [ -z "$$BASE" ] && [ $$DEPTH -lt $(BASE_DEPTH) ]; do \
228
229
  CUR=$$(git rev-parse "$$CUR~1" 2>/dev/null) || break; \
229
230
  [ -n "$$CUR" ] || break; \
230
231
  if [ -n "$$(gh run list --commit "$$CUR" --workflow "$$WF" --json databaseId --jq '.[0].databaseId')" ]; then \
@@ -237,6 +238,10 @@ ci-watch:
237
238
  STATUS=1; continue; \
238
239
  fi; \
239
240
  OLD=$$(gh run list --commit "$$BASE" --workflow "$$WF" --json databaseId --jq '.[0].databaseId'); \
241
+ if [ -z "$$OLD" ]; then \
242
+ echo "$$WF: BLOCKING failure ($$NEWFAIL) — pinned base has no run (unknown base) — YOUR regression"; \
243
+ STATUS=1; continue; \
244
+ fi; \
240
245
  OLDJOBS=$$(gh run view "$$OLD" --json jobs --jq '.jobs | length'); \
241
246
  if [ "$$OLDJOBS" = "0" ]; then \
242
247
  echo "$$WF: BLOCKING failure ($$NEWFAIL) — base run is job-less (invalid workflow, not green) — YOUR regression"; \
@@ -257,6 +262,7 @@ ci-watch:
257
262
  **Usage:**
258
263
  - `make ci-watch` (watches CI for current `HEAD`)
259
264
  - `make ci-watch COMMIT=<sha>` (watches CI for a specific commit)
265
+ - `make ci-watch BASE=<sha>` (pins the comparison baseline to a commit)
260
266
 
261
267
  ## Remote Probing Protocol (RPP)
262
268
 
@@ -77,7 +77,7 @@ repos:
77
77
 
78
78
  **Tip:** Pin exact `rev` tags so every teammate runs identical checks.
79
79
 
80
- **Line endings:** The whitespace hooks (`trailing-whitespace`, `end-of-file-fixer`) fix trailing spaces and the missing final newline. They do NOT normalize LF versus CRLF. Add a committed `.gitattributes` with the rule `* text=auto eol=lf`. Git then stores and checks out text as LF on every platform. This rule applies to every clone and to unstaged files, so it is more robust than a hook. TeDDy does NOT create this file. Create it yourself in the project root.
80
+ **Line endings:** The whitespace hooks (`trailing-whitespace`, `end-of-file-fixer`) fix trailing spaces and the missing final newline. They do NOT normalize LF versus CRLF. Add a committed `.gitattributes` with the rule `* text=auto eol=lf`. Git then stores and checks out text as LF on every platform. This rule applies to every clone and to unstaged files, so it is more robust than a hook.
81
81
 
82
82
  ## 3. Install the hooks
83
83