teddy-cli 0.1.17.dev1421__tar.gz → 0.1.17.dev1422__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.dev1421 → teddy_cli-0.1.17.dev1422}/PKG-INFO +1 -1
  2. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/pyproject.toml +1 -1
  3. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/resources/templates/makefile.md +21 -16
  4. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/.gitignore +0 -0
  5. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/LICENSE +0 -0
  6. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/README.md +0 -0
  7. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/__init__.py +0 -0
  8. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/__main__.py +0 -0
  9. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/__init__.py +0 -0
  10. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
  11. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
  12. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
  13. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +0 -0
  14. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
  15. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
  16. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
  17. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
  18. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
  19. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
  20. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
  21. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
  22. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
  23. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
  24. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
  25. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
  26. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
  27. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
  28. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
  29. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
  30. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
  31. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
  32. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
  33. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
  34. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
  35. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
  36. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
  37. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
  38. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
  39. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
  40. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
  41. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
  42. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/container.py +0 -0
  43. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/__init__.py +0 -0
  44. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/domain/__init__.py +0 -0
  45. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/domain/models/__init__.py +0 -0
  46. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
  47. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/domain/models/change_set.py +0 -0
  48. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/domain/models/config_schema.py +0 -0
  49. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
  50. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
  51. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
  52. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
  53. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/domain/models/plan.py +0 -0
  54. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
  55. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/domain/models/project_context.py +0 -0
  56. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
  57. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/domain/models/session.py +0 -0
  58. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
  59. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
  60. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/__init__.py +0 -0
  61. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
  62. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
  63. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
  64. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/inbound/init.py +0 -0
  65. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
  66. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
  67. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
  68. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
  69. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
  70. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
  71. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
  72. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
  73. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
  74. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
  75. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
  76. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
  77. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
  78. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
  79. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
  80. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
  81. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
  82. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
  83. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
  84. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
  85. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
  86. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
  87. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
  88. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
  89. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/__init__.py +0 -0
  90. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
  91. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
  92. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
  93. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/action_executor.py +0 -0
  94. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/action_factory.py +0 -0
  95. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
  96. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
  97. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/context_service.py +0 -0
  98. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/edit_simulator.py +0 -0
  99. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
  100. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
  101. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/init_service.py +0 -0
  102. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
  103. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
  104. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
  105. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/parser_metadata.py +0 -0
  106. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/parser_reporting.py +0 -0
  107. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/plan_validator.py +0 -0
  108. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/planning_service.py +0 -0
  109. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/prompt_manager.py +0 -0
  110. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
  111. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
  112. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
  113. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/session_planner.py +0 -0
  114. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
  115. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/session_replanner.py +0 -0
  116. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/session_repository.py +0 -0
  117. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/session_service.py +0 -0
  118. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
  119. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/update_checker.py +0 -0
  120. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
  121. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
  122. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
  123. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
  124. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
  125. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
  126. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
  127. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
  128. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/utils/__init__.py +0 -0
  129. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/utils/diff.py +0 -0
  130. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/utils/editor_names.py +0 -0
  131. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
  132. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/utils/interruptible_call.py +0 -0
  133. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/utils/io.py +0 -0
  134. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/utils/markdown.py +0 -0
  135. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/utils/paths.py +0 -0
  136. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/utils/serialization.py +0 -0
  137. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/utils/session_notices.py +0 -0
  138. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
  139. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/utils/string.py +0 -0
  140. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/core/utils/terminal.py +0 -0
  141. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/prompts.py +0 -0
  142. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/registries/__init__.py +0 -0
  143. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/registries/infrastructure.py +0 -0
  144. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/registries/reviewer.py +0 -0
  145. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/registries/validators.py +0 -0
  146. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/resources/MRP.md +0 -0
  147. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/resources/__init__.py +0 -0
  148. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/resources/config/__init__.py +0 -0
  149. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/resources/config/config.yaml +0 -0
  150. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/resources/config/init.context +0 -0
  151. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/resources/config/prompts/architect.md +0 -0
  152. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/resources/config/prompts/assistant.md +0 -0
  153. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/resources/config/prompts/debugger.md +0 -0
  154. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/resources/config/prompts/developer.md +0 -0
  155. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/resources/config/prompts/pathfinder.md +0 -0
  156. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/resources/config/prompts/prototyper.md +0 -0
  157. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/resources/templates/ARCHITECTURE.md +0 -0
  158. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/resources/templates/PROJECT.md +0 -0
  159. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/resources/templates/case-file.md +0 -0
  160. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/resources/templates/ci.md +0 -0
  161. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/resources/templates/component-design.md +0 -0
  162. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/resources/templates/milestone.md +0 -0
  163. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/resources/templates/pre-commit.md +0 -0
  164. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/src/teddy_executor/resources/templates/specification-document.md +0 -0
  165. {teddy_cli-0.1.17.dev1421 → teddy_cli-0.1.17.dev1422}/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.dev1421
3
+ Version: 0.1.17.dev1422
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.dev1421"
3
+ version = "0.1.17.dev1422"
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 = [
@@ -202,7 +202,7 @@ Attribution is deterministic: SHA → run → run-level + per-job conclusion (ne
202
202
 
203
203
  Key behaviors:
204
204
 
205
- 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.
205
+ 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. The target fetches one bounded list of the workflow's latest runs (`BASE_SCAN`, default 200) and intersects it with the newest `BASE_DEPTH` ancestors (`git rev-list`, default 50), so resolution costs one API call instead of one per ancestor. 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.
206
206
  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.
207
207
  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.
208
208
  4. **Workflow names with spaces stay whole.** The target reads workflow names one line at a time. A name such as `Publish to PyPI` is attributed as one workflow.
@@ -214,6 +214,7 @@ RETRY_POLLS ?= 10
214
214
  RETRY_SLEEP ?= 2
215
215
  DETAIL_LINES ?= 50
216
216
  BASE_DEPTH ?= 50
217
+ BASE_SCAN ?= 200
217
218
  BASE ?=
218
219
 
219
220
  ci-watch: _preflight
@@ -250,9 +251,10 @@ ci-watch: _preflight
250
251
  while IFS= read -r WF; do \
251
252
  NEW=$$(gh run list --commit "$$SHA" --workflow "$$WF" --json databaseId --jq '.[0].databaseId'); \
252
253
  gh run watch "$$NEW" --exit-status >/dev/null 2>&1 || true; \
253
- NEWCONC=$$(gh run view "$$NEW" --json conclusion --jq '.conclusion'); \
254
- NEWFAIL=$$(gh run view "$$NEW" --json jobs --jq '[.jobs[] | select(.conclusion=="failure") | .name] | sort | join(",")'); \
255
- NEWSTEPS=$$(gh run view "$$NEW" --json jobs --jq '[.jobs[] | select(.conclusion=="failure") | .steps[]? | select(.conclusion=="failure") | .name] | sort | join(", ")'); \
254
+ NEWMETA=$$(gh run view "$$NEW" --json conclusion,jobs --jq '.conclusion, ([.jobs[] | select(.conclusion=="failure") | .name] | sort | join(",")), ([.jobs[] | select(.conclusion=="failure") | .steps[]? | select(.conclusion=="failure") | .name] | sort | join(", "))'); \
255
+ NEWCONC=$$(printf '%s\n' "$$NEWMETA" | sed -n '1p'); \
256
+ NEWFAIL=$$(printf '%s\n' "$$NEWMETA" | sed -n '2p'); \
257
+ NEWSTEPS=$$(printf '%s\n' "$$NEWMETA" | sed -n '3p'); \
256
258
  if [ -n "$$NEWSTEPS" ]; then \
257
259
  echo "$$WF: failing step(s): $$NEWSTEPS (run $$NEW)"; \
258
260
  gh run view "$$NEW" --log-failed 2>/dev/null | awk -F'\t' '{ 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\]/ || l ~ /^##\[endgroup\]/) next; gsub(/^##\[error\]/,"Error: ",l); print l }' | tail -n $(DETAIL_LINES) | sed 's/^/ /'; \
@@ -272,33 +274,36 @@ ci-watch: _preflight
272
274
  echo "$$WF: unknown conclusion '$$NEWCONC' on run $$NEW blocks the session." >&2; \
273
275
  STATUS=1; continue; \
274
276
  fi; \
275
- BASE="$(BASE)"; CUR="$$SHA"; DEPTH=0; \
276
- while [ -z "$$BASE" ] && [ $$DEPTH -lt $(BASE_DEPTH) ]; do \
277
- CUR=$$(git rev-parse "$$CUR~1" 2>/dev/null) || break; \
278
- [ -n "$$CUR" ] || break; \
279
- if [ -n "$$(gh run list --commit "$$CUR" --workflow "$$WF" --json databaseId --jq '.[0].databaseId')" ]; then \
280
- BASE="$$CUR"; break; \
281
- fi; \
282
- DEPTH=$$((DEPTH + 1)); \
283
- done; \
277
+ BASE="$(BASE)"; OLD=""; \
278
+ if [ -n "$$BASE" ]; then \
279
+ OLD=$$(gh run list --commit "$$BASE" --workflow "$$WF" --json databaseId --jq '.[0].databaseId'); \
280
+ else \
281
+ RUNLIST=$${TMPDIR:-/tmp}/ci-watch-runs.$$$$; \
282
+ gh run list --workflow "$$WF" -L $(BASE_SCAN) --json headSha,databaseId --jq '.[] | "\(.headSha) \(.databaseId)"' > "$$RUNLIST" 2>/dev/null; \
283
+ for CUR in $$(git rev-list -n $(BASE_DEPTH) "$$SHA^" 2>/dev/null); do \
284
+ OLD=$$(awk -v sha="$$CUR" '$$1 == sha { print $$2; exit }' "$$RUNLIST"); \
285
+ if [ -n "$$OLD" ]; then BASE="$$CUR"; break; fi; \
286
+ done; \
287
+ rm -f "$$RUNLIST"; \
288
+ fi; \
284
289
  if [ -z "$$BASE" ]; then \
285
290
  echo "$$WF: BLOCKING failure ($$NEWFAIL) - no run-bearing ancestor (unknown base) - YOUR regression"; \
286
291
  echo "$$WF: no run-bearing ancestor within $(BASE_DEPTH) commits, so the baseline is unknown." >&2; \
287
292
  STATUS=1; continue; \
288
293
  fi; \
289
- OLD=$$(gh run list --commit "$$BASE" --workflow "$$WF" --json databaseId --jq '.[0].databaseId'); \
290
294
  if [ -z "$$OLD" ]; then \
291
295
  echo "$$WF: BLOCKING failure ($$NEWFAIL) - pinned base has no run (unknown base) - YOUR regression"; \
292
296
  echo "$$WF: pinned base $$BASE carries no run for this workflow." >&2; \
293
297
  STATUS=1; continue; \
294
298
  fi; \
295
- OLDJOBS=$$(gh run view "$$OLD" --json jobs --jq '.jobs | length'); \
299
+ OLDMETA=$$(gh run view "$$OLD" --json jobs --jq '(.jobs | length), ([.jobs[] | select(.conclusion=="failure") | .name] | sort | join(","))'); \
300
+ OLDJOBS=$$(printf '%s\n' "$$OLDMETA" | sed -n '1p'); \
296
301
  if [ "$$OLDJOBS" = "0" ]; then \
297
302
  echo "$$WF: BLOCKING failure ($$NEWFAIL) - base run is job-less (invalid workflow, not green) - YOUR regression"; \
298
303
  echo "$$WF: base run $$OLD carries zero jobs, so it cannot prove a green baseline." >&2; \
299
304
  STATUS=1; continue; \
300
305
  fi; \
301
- OLDFAIL=$$(gh run view "$$OLD" --json jobs --jq '[.jobs[] | select(.conclusion=="failure") | .name] | sort | join(",")'); \
306
+ OLDFAIL=$$(printf '%s\n' "$$OLDMETA" | sed -n '2p'); \
302
307
  SUBSET=$$(awk -v new="$$NEWFAIL" -v old="$$OLDFAIL" 'BEGIN { n=split(new,na,","); m=split(old,oa,","); for (i=1;i<=n;i++) { if (na[i]=="") continue; f=0; for (j=1;j<=m;j++) { if (oa[j]==na[i]) { f=1; break } } if (!f) { print "regression"; exit } } print "pre-existing" }' </dev/null); \
303
308
  if [ "$$SUBSET" = "pre-existing" ]; then \
304
309
  echo "$$WF: pre-existing BLOCKING failure ($$NEWFAIL) - not yours"; \