teddy-cli 0.1.17.dev1267__tar.gz → 0.1.17.dev1269__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 (161) hide show
  1. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/PKG-INFO +1 -1
  2. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/pyproject.toml +1 -1
  3. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/MRP.xml +1 -1
  4. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/templates/makefile.md +34 -10
  5. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/templates/pre-commit.md +2 -0
  6. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/.gitignore +0 -0
  7. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/LICENSE +0 -0
  8. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/__init__.py +0 -0
  9. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/__main__.py +0 -0
  10. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/__init__.py +0 -0
  11. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
  12. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
  13. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
  14. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +0 -0
  15. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
  16. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
  17. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
  18. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
  19. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
  20. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
  21. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
  22. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
  23. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
  24. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
  25. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
  26. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
  27. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
  28. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
  29. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
  30. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
  31. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
  32. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
  33. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
  34. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
  35. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
  36. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
  37. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
  38. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
  39. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
  40. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
  41. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
  42. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
  43. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/container.py +0 -0
  44. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/__init__.py +0 -0
  45. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/domain/__init__.py +0 -0
  46. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/domain/models/__init__.py +0 -0
  47. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
  48. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/domain/models/change_set.py +0 -0
  49. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
  50. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
  51. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
  52. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
  53. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/domain/models/plan.py +0 -0
  54. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
  55. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/domain/models/project_context.py +0 -0
  56. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
  57. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/domain/models/session.py +0 -0
  58. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
  59. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
  60. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/__init__.py +0 -0
  61. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
  62. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
  63. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
  64. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/inbound/init.py +0 -0
  65. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
  66. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
  67. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
  68. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
  69. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
  70. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
  71. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
  72. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
  73. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
  74. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
  75. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
  76. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
  77. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
  78. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
  79. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
  80. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
  81. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
  82. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
  83. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
  84. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
  85. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
  86. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
  87. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
  88. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
  89. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/__init__.py +0 -0
  90. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
  91. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
  92. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
  93. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/action_executor.py +0 -0
  94. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/action_factory.py +0 -0
  95. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
  96. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
  97. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/context_service.py +0 -0
  98. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/edit_simulator.py +0 -0
  99. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
  100. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
  101. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/init_service.py +0 -0
  102. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
  103. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
  104. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
  105. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/parser_metadata.py +0 -0
  106. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/parser_reporting.py +0 -0
  107. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/plan_validator.py +0 -0
  108. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/planning_service.py +0 -0
  109. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/prompt_manager.py +0 -0
  110. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
  111. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
  112. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
  113. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/session_planner.py +0 -0
  114. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
  115. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/session_replanner.py +0 -0
  116. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/session_repository.py +0 -0
  117. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/session_service.py +0 -0
  118. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
  119. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/update_checker.py +0 -0
  120. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
  121. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
  122. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
  123. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
  124. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
  125. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
  126. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
  127. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
  128. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/utils/__init__.py +0 -0
  129. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/utils/diff.py +0 -0
  130. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
  131. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/utils/io.py +0 -0
  132. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/utils/markdown.py +0 -0
  133. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/utils/paths.py +0 -0
  134. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/utils/serialization.py +0 -0
  135. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
  136. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/utils/string.py +0 -0
  137. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/core/utils/terminal.py +0 -0
  138. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/prompts.py +0 -0
  139. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/registries/__init__.py +0 -0
  140. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/registries/infrastructure.py +0 -0
  141. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/registries/reviewer.py +0 -0
  142. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/registries/validators.py +0 -0
  143. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/__init__.py +0 -0
  144. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/config/__init__.py +0 -0
  145. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/config/config.yaml +0 -0
  146. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/config/init.context +0 -0
  147. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/config/prompts/architect.xml +0 -0
  148. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/config/prompts/assistant.xml +0 -0
  149. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/config/prompts/debugger.xml +0 -0
  150. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/config/prompts/developer.xml +0 -0
  151. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/config/prompts/pathfinder.xml +0 -0
  152. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/config/prompts/prototyper.xml +0 -0
  153. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/templates/ARCHITECTURE.md +0 -0
  154. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/templates/PROJECT.md +0 -0
  155. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/templates/case-file.md +0 -0
  156. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/templates/ci.md +0 -0
  157. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/templates/component-design.md +0 -0
  158. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/templates/milestone.md +0 -0
  159. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/templates/specification-document.md +0 -0
  160. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/src/teddy_executor/resources/templates/task-brief.md +0 -0
  161. {teddy_cli-0.1.17.dev1267 → teddy_cli-0.1.17.dev1269}/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.dev1267
3
+ Version: 0.1.17.dev1269
4
4
  Summary: A local-first, file-based AI coding workflow that applies the UNIX philosophy to AI collaboration.
5
5
  Author: Raphael Atteritano
6
6
  License: AGPL-3.0-only
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "teddy-cli"
3
- version = "0.1.17.dev1267"
3
+ version = "0.1.17.dev1269"
4
4
  description = "A local-first, file-based AI coding workflow that applies the UNIX philosophy to AI collaboration."
5
5
  authors = [{ name = "Raphael Atteritano" }]
6
6
  license = { text = "AGPL-3.0-only" }
@@ -52,7 +52,7 @@ NOTES:
52
52
  2. Commit Message: Use Conventional Commits '<type>(<scope>): <description>' wrapped in single quotes. Use imperative mood. Append ! for breaking changes.
53
53
  3. Execution: Run `make commit '<type>(<scope>): <description>'` to stage, run the local pre-commit hooks, and commit. `make commit` stages ALL local changes, including currently unstaged ones (`git add .`). The target commits WITHOUT `--no-verify`, so Git's own pre-commit hook is a real local gate; the post-commit test gate always runs and is unaffected.
54
54
  4. Post-conditions: All tests MUST pass — the post-commit hook runs the full suite and reverts the commit on failure; this gate is unskippable and MUST NEVER be bypassed. The pre-commit stage is advisory (its failures do not block the local commit), but if it reported non-trivial quality-gate issues (e.g. file length), you MUST make a follow-up cleanup commit that resolves them before resuming feature work. Triage any resulting `[DEBT]` per the Technical Debt Triage policy — there is no `## Technical Debt` holding pen.
55
- 5. Push at Conclusion: In the Conclusion phase, run `make push` to rebase onto the remote, push, and wait for and report the CI results. `make push` compares the pushed SHA's failing-job set against the base run (`origin/main` before the push), per workflow: base green → new red = YOUR regression → fix it immediately before concluding (exit 1); base red → new red (same jobs) = pre-existing → report it and continue (exit 0); all green → PASSED. An unknown base is treated as yours (fail-safe). Tests MUST always be fixed; quality-gate failures MUST be fixed or explicitly planned in before you conclude.
55
+ 5. Push at Conclusion: In the Conclusion phase, run `make push` to rebase onto the remote, push, and report the CI results. `make push` answers ONE question only: did this push turn a BLOCKING gate red? The pushed RUN's own conclusion is authoritative — it already folds in `continue-on-error`, so a non-blocking job (e.g. the CI `Quality Checks` job) can NEVER block the session. Only when the run-level conclusion is `failure` does attribution run: the base run (`origin/main` before the push) is classified as green, red, job-less, or absent, and a base that exists but is job-less is NOT green. A failure your push introduced (base green/absent/job-less -> new red) is YOUR regression (exit 1, fix before concluding); a failure already on the base (base red -> new red) is pre-existing (report and continue). Tests MUST always be fixed. A non-blocking quality result MUST be triaged per the Technical Debt Triage policy — fixed in-flight or explicitly scheduled into a slice or milestone — and MUST NOT be silently accepted.
56
56
  </rule>
57
57
 
58
58
  <rule n="7" name="Standardized Plan Types">
@@ -128,14 +128,16 @@ commit:
128
128
 
129
129
  ## Push (Deferred to Conclusion)
130
130
 
131
- `make push` runs `git pull --rebase`, captures the base and the pushed SHA, pushes, then discovers **every** CI run for the pushed SHA (`gh run list --commit <sha>`) and waits for and reports each workflow with its jobs. It blocks only on failures **your push introduced**:
131
+ `make push` runs `git pull --rebase`, captures the base and the pushed SHA, pushes, then discovers **every** CI run for the pushed SHA (`gh run list --commit <sha>`) and waits for and reports each workflow with its jobs. It answers ONE question: **did this push turn a BLOCKING gate red?**
132
132
 
133
- - **base green → new red** = your regression → **exit 1** (fix before concluding).
133
+ The pushed RUN's own conclusion is authoritative: it already folds in `continue-on-error`, so a **non-blocking** job (e.g. the CI `Quality Checks` job) can NEVER block the session — it is reported as a triage item instead. Only when the run-level conclusion is `failure` does attribution run, comparing the pushed run's failing-JOB set against the base run's:
134
+
135
+ - **base green/absent/job-less → new red** = your regression → **exit 1** (fix before concluding).
134
136
  - **base red → new red (same jobs)** = pre-existing → **report and exit 0** (do not wait, do not duplicate the fix).
135
- - **all green** → PASSED.
136
- - **unknown base** → fail-safe: treat as yours (block).
137
+ - **all green / non-blocking** → PASSED → **exit 0**.
138
+ - **job-less base** → NOT green: a base run that exists but carries zero jobs (an invalid-workflow failure) is treated as an unknown base and fails safe (block).
137
139
 
138
- Attribution is deterministic: SHA → run → per-job conclusion (never "the latest run").
140
+ Attribution is deterministic: SHA → run → run-level + per-job conclusion (never "the latest run").
139
141
 
140
142
  Three behaviors make the attribution trustworthy:
141
143
 
@@ -172,14 +174,36 @@ push:
172
174
  fi; \
173
175
  for WF in $$WFS; do \
174
176
  NEW=$$(gh run list --commit "$$SHA" --workflow "$$WF" --json databaseId --jq '.[0].databaseId'); \
175
- OLD=$$(gh run list --commit "$$BASE" --workflow "$$WF" --json databaseId --jq '.[0].databaseId'); \
176
177
  gh run watch "$$NEW" --exit-status >/dev/null 2>&1 || true; \
178
+ NEWCONC=$$(gh run view "$$NEW" --json conclusion --jq '.conclusion'); \
177
179
  NEWFAIL=$$(gh run view "$$NEW" --json jobs --jq '[.jobs[] | select(.conclusion=="failure") | .name] | sort | join(",")'); \
178
- if [ -z "$$NEWFAIL" ]; then echo "$$WF: PASSED"; continue; fi; \
179
- if [ -z "$$OLD" ]; then echo "$$WF: FAILED ($$NEWFAIL) — unknown base, treating as YOUR regression"; STATUS=1; continue; fi; \
180
+ NEWSTEPS=$$(gh run view "$$NEW" --json jobs --jq '[.jobs[] | select(.conclusion=="failure") | .steps[]? | select(.conclusion=="failure") | .name] | sort | join(", ")'); \
181
+ if [ -n "$$NEWSTEPS" ]; then echo "$$WF: failing step(s): $$NEWSTEPS"; fi; \
182
+ if [ "$$NEWCONC" != "failure" ]; then \
183
+ if [ -n "$$NEWFAIL" ]; then \
184
+ echo "$$WF: PASSED (run=$$NEWCONC) — non-blocking failure(s) [$$NEWFAIL] — triage, does not block"; \
185
+ else \
186
+ echo "$$WF: PASSED"; \
187
+ fi; \
188
+ continue; \
189
+ fi; \
190
+ OLD=$$(gh run list --commit "$$BASE" --workflow "$$WF" --json databaseId --jq '.[0].databaseId'); \
191
+ if [ -z "$$OLD" ]; then \
192
+ echo "$$WF: BLOCKING failure ($$NEWFAIL) — base has no run (unknown base) — YOUR regression"; \
193
+ STATUS=1; continue; \
194
+ fi; \
195
+ OLDJOBS=$$(gh run view "$$OLD" --json jobs --jq '.jobs | length'); \
196
+ if [ "$$OLDJOBS" = "0" ]; then \
197
+ echo "$$WF: BLOCKING failure ($$NEWFAIL) — base run is job-less (invalid workflow, not green) — YOUR regression"; \
198
+ STATUS=1; continue; \
199
+ fi; \
180
200
  OLDFAIL=$$(gh run view "$$OLD" --json jobs --jq '[.jobs[] | select(.conclusion=="failure") | .name] | sort | join(",")'); \
181
- if [ "$$NEWFAIL" = "$$OLDFAIL" ]; then echo "$$WF: pre-existing failure ($$NEWFAIL) — not yours"; \
182
- else echo "$$WF: NEW failure ($$NEWFAIL) — YOUR regression"; STATUS=1; fi; \
201
+ if [ "$$NEWFAIL" = "$$OLDFAIL" ]; then \
202
+ echo "$$WF: pre-existing BLOCKING failure ($$NEWFAIL) — not yours"; \
203
+ else \
204
+ echo "$$WF: BLOCKING failure ($$NEWFAIL) — YOUR regression"; \
205
+ STATUS=1; \
206
+ fi; \
183
207
  done; \
184
208
  exit $$STATUS
185
209
  ```
@@ -31,6 +31,8 @@ repos:
31
31
  - id: trailing-whitespace
32
32
  - id: end-of-file-fixer
33
33
  - id: check-toml
34
+ - id: check-yaml
35
+ - id: check-json
34
36
  - id: check-added-large-files
35
37
  args: ['--maxkb=500']
36
38
  - id: check-case-conflict