teddy-cli 0.1.17.dev1227__tar.gz → 0.1.17.dev1229__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.dev1227 → teddy_cli-0.1.17.dev1229}/PKG-INFO +1 -1
  2. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/pyproject.toml +1 -1
  3. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/MRP.xml +4 -4
  4. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/templates/ARCHITECTURE.md +4 -3
  5. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/templates/PROJECT.md +5 -15
  6. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/templates/makefile.md +5 -5
  7. teddy_cli-0.1.17.dev1229/src/teddy_executor/resources/templates/specification-document.md +29 -0
  8. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/templates/vertical-slice.md +5 -1
  9. teddy_cli-0.1.17.dev1227/src/teddy_executor/resources/templates/specification-document.md +0 -27
  10. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/.gitignore +0 -0
  11. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/LICENSE +0 -0
  12. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/__init__.py +0 -0
  13. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/__main__.py +0 -0
  14. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/__init__.py +0 -0
  15. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
  16. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
  17. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
  18. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +0 -0
  19. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
  20. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
  21. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
  22. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
  23. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
  24. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
  25. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
  26. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
  27. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
  28. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
  29. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
  30. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
  31. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
  32. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
  33. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
  34. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
  35. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
  36. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
  37. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
  38. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
  39. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
  40. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
  41. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
  42. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
  43. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
  44. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
  45. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
  46. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
  47. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/container.py +0 -0
  48. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/__init__.py +0 -0
  49. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/domain/__init__.py +0 -0
  50. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/domain/models/__init__.py +0 -0
  51. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
  52. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/domain/models/change_set.py +0 -0
  53. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
  54. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
  55. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
  56. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
  57. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/domain/models/plan.py +0 -0
  58. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
  59. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/domain/models/project_context.py +0 -0
  60. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
  61. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/domain/models/session.py +0 -0
  62. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
  63. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
  64. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/__init__.py +0 -0
  65. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
  66. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
  67. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
  68. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/inbound/init.py +0 -0
  69. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
  70. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
  71. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
  72. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
  73. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
  74. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
  75. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
  76. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
  77. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
  78. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
  79. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
  80. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
  81. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
  82. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
  83. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
  84. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
  85. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
  86. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
  87. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
  88. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
  89. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
  90. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
  91. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
  92. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
  93. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/__init__.py +0 -0
  94. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
  95. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
  96. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
  97. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/action_executor.py +0 -0
  98. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/action_factory.py +0 -0
  99. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
  100. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
  101. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/context_service.py +0 -0
  102. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/edit_simulator.py +0 -0
  103. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
  104. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
  105. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/init_service.py +0 -0
  106. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
  107. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
  108. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
  109. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/parser_metadata.py +0 -0
  110. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/parser_reporting.py +0 -0
  111. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/plan_validator.py +0 -0
  112. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/planning_service.py +0 -0
  113. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/prompt_manager.py +0 -0
  114. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
  115. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
  116. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
  117. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/session_planner.py +0 -0
  118. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
  119. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/session_replanner.py +0 -0
  120. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/session_repository.py +0 -0
  121. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/session_service.py +0 -0
  122. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
  123. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/update_checker.py +0 -0
  124. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
  125. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
  126. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
  127. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
  128. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
  129. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
  130. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
  131. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
  132. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/utils/__init__.py +0 -0
  133. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/utils/diff.py +0 -0
  134. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
  135. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/utils/io.py +0 -0
  136. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/utils/markdown.py +0 -0
  137. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/utils/serialization.py +0 -0
  138. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
  139. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/utils/string.py +0 -0
  140. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/core/utils/terminal.py +0 -0
  141. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/prompts.py +0 -0
  142. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/registries/__init__.py +0 -0
  143. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/registries/infrastructure.py +0 -0
  144. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/registries/reviewer.py +0 -0
  145. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/registries/validators.py +0 -0
  146. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/__init__.py +0 -0
  147. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/config/__init__.py +0 -0
  148. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/config/config.yaml +0 -0
  149. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/config/init.context +0 -0
  150. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/config/prompts/architect.xml +0 -0
  151. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/config/prompts/assistant.xml +0 -0
  152. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/config/prompts/debugger.xml +0 -0
  153. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/config/prompts/developer.xml +0 -0
  154. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/config/prompts/pathfinder.xml +0 -0
  155. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/config/prompts/prototyper.xml +0 -0
  156. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/templates/case-file.md +0 -0
  157. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/templates/ci.md +0 -0
  158. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/templates/component-design.md +0 -0
  159. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/templates/milestone.md +0 -0
  160. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/templates/pre-commit.md +0 -0
  161. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1229}/src/teddy_executor/resources/templates/task-brief.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: teddy-cli
3
- Version: 0.1.17.dev1227
3
+ Version: 0.1.17.dev1229
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.dev1227"
3
+ version = "0.1.17.dev1229"
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" }
@@ -42,7 +42,7 @@ WIP & REMINDERS:
42
42
 
43
43
  <rule n="4" name="Path & Link Formatting">All paths MUST be root-relative. Use plain text in Rationale. Use Markdown links `[path](/path)` elsewhere.</rule>
44
44
 
45
- <rule n="5" name="Information Gathering Workflow">If you are missing information critical to your immediate goal, gather that information efficiently; do not get lost in non-essential exploration. Discover first via `EXECUTE` (`git grep`) or `RESEARCH` for external info. To remain pragmatic, you may chain multiple discovery actions. If using `RESEARCH`, you MUST follow up by `READ`-ing the target source URLs; do NOT rely on search snippets or metadata. If static reading leaves ambiguity about behavior, `CREATE` and `EXECUTE` a minimal diagnostic spike in `spikes/` to empirically validate assumptions.
45
+ <rule n="5" name="Information Gathering Workflow">If you are missing information critical to your immediate goal, gather that information efficiently; do not get lost in non-essential exploration. Discover first via `EXECUTE` (`git grep`) or `RESEARCH` for external info. To remain pragmatic, you may chain multiple discovery actions. If using `RESEARCH`, you MUST follow up by `READ`-ing the target source URLs; do NOT rely on search snippets or metadata. If `READ`-ing a remote URL fails or returns empty/unusable JavaScript shells, fall back to `EXECUTE curl -sL '<url>'`; if the page requires client-side JavaScript rendering, `CREATE` a minimal diagnostic probe script to inspect the raw data or underlying API. If static reading leaves ambiguity about behavior, `CREATE` and `EXECUTE` a minimal diagnostic spike in `spikes/` to empirically validate assumptions.
46
46
  For complex CLI tools, verify required flags via `EXECUTE [tool] --help` before running complex commands.
47
47
  </rule>
48
48
 
@@ -50,8 +50,8 @@ WIP & REMINDERS:
50
50
  The entire commit cycle (test, stage, commit, push) MUST occur in a dedicated Version Control turn.
51
51
  1. Pre-conditions: Clean up temporary files (spikes/, .tmp/). If unsure of changes, `EXECUTE git add . && git diff HEAD`.
52
52
  2. Commit Message: Use Conventional Commits '<type>(<scope>): <description>' wrapped in single quotes. Use imperative mood. Append ! for breaking changes.
53
- 3. Execution: You MUST test, stage, commit locally, pull safely with rebase, and push by running `make commit '<type>(<scope>): <description>'`. To bypass pre-commit checks (e.g., for known false positives), use `make commit '<type>(<scope>): <description>' no-verify`.
54
- 4. Post-conditions: All tests MUST pass (post-commit hook enforces this; never bypass). Pre-commit may be bypassed with --no-verify if needed to bypass non-trivial quality gate failures (like file length). If pre-commit is bypassed, you MUST make a follow-up cleanup commit that resolves the bypassed issues before resuming feature work, and log the debt in PROJECT.md if it cannot be resolved immediately.
53
+ 3. Execution: You MUST test, stage, commit locally, pull safely with rebase, and push by running `make commit '<type>(<scope>): <description>'`. There is no `no-verify` flag: the `make commit` target runs the pre-commit hooks once via `pre-commit run` (re-staging any auto-formatted files) and then commits with `git commit --no-verify`, which suppresses Git's own redundant second invocation of the pre-commit hook. The post-commit test gate is unaffected by this flag and always runs.
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, and log the debt in PROJECT.md if it cannot be resolved immediately.
55
55
  </rule>
56
56
 
57
57
  <rule n="7" name="Standardized Plan Types">
@@ -87,7 +87,7 @@ WIP & REMINDERS:
87
87
  </rule>
88
88
 
89
89
  <rule n="13" name="Communication Hygiene">
90
- <description>Applies to all user-facing Messages and turn titles: (1) Do not repeat the same title across consecutive turns — each turn's title MUST reflect its distinct responsibility, and if you detect a vicious loop with no new progress you MUST transition to BLOCKED 🔴 rather than repeating yourself. (2) Do not restate content already delivered in a prior Message, and do not send a new Message until the work previously agreed in the last Message is complete — the only exception is entering BLOCKED 🔴. (3) Record important findings and constraints as `[!]` entries in the State Dashboard so they persist across turns. (4) End every Message with a concise TL;DR line summarizing the key point or the decision requested.</description>
90
+ <description>Applies to all user-facing Messages and turn titles: (1) Do not repeat the same title across consecutive turns — each turn's title MUST reflect its distinct responsibility, and if you detect a vicious loop with no new progress you MUST transition to BLOCKED 🔴 rather than repeating yourself. (2) Do not restate content already delivered in a prior Message, and do not send a new Message until the work previously agreed in the last Message is complete — the only exception is entering BLOCKED 🔴. (3) Record important findings and constraints as `[!]` entries in the State Dashboard so they persist across turns. (4) End every Message with a concise TL;DR line summarizing the key point or the decision requested. (5) Whenever the user sends a message, immediately log every user decision, constraint, or directive into the State Dashboard's `WIP & REMINDERS` as `[TODO]` (for tasks) or `[!]` (for constraints). You are strictly forbidden from sending another `## Message` until all such `[TODO]` items are marked `[✓]` (or unless you transition to BLOCKED 🔴). Never re-ask a question the user has already answered, and never restate decisions or explanations already delivered in prior messages.</description>
91
91
  </rule>
92
92
  </general_rules>
93
93
 
@@ -7,16 +7,17 @@ This section defines foundational engineering practices. Each entry MUST be a sp
7
7
  **Template format:** `- **Rule Name:** Description and enforcement mechanism.`
8
8
 
9
9
  ### Recommended: customize per project
10
- - **Version Control:** Branch strategy and commit conventions.
10
+ - **Version Control:** Branch strategy and commit conventions. Every commit MUST leave the suite in a **Continuous Green State** — the full test suite passes before and after each change.
11
11
  - **Run Environment:** Designated runner (e.g., `uv run`, `poetry run`).
12
12
  - **Failure Transparency:** Error handling policy — specific exceptions only, no silent suppression.
13
- - **Testing Strategy:** Test types (Unit/Integration/Acceptance), boundaries, test doubles policy, mock poisoning prevention, filesystem hygiene.
13
+ - **Testing Strategy:** Test types (Unit/Integration/Acceptance), boundaries, and filesystem hygiene. Mandate **Test Double Integrity**: ban global patching, use in-memory fakes for state-managing outbound ports, and strictly autospec-bound mocks only for un-fakeable external side-effects.
14
+ - **Runtime Contract Assertions:** Enforce Design-by-Contract with native `assert condition, "message"` for pre/post-conditions and invariants (strippable via `python -O`); never custom exceptions for contract checks.
14
15
  - **Dependency Injection:** Constructor injection mandate; forbid Service Locator and global containers.
15
16
  - **Centralized Configuration:** Config file location, prohibition of magic numbers.
16
17
  - **CI Pipeline:** Two parallel jobs — 1) Blocking OS matrix test suite with strict test coverage targets. 2) Non-blocking (continue-on-error: true) quality checks running fast formatters, linters, security/secret scanners, type checkers, and repository-wide structural checks (excluding sandboxes and third-party dependencies).
17
18
  - **Pre-commit Hooks:** Scope (staged files only), required hooks (formatters, linters, type checkers, security scanners).
18
19
  - **Post-commit Execution:** Full test suite run on commit, automatic revert on failure.
19
- - **Makefile Commands:** The `Makefile` is the canonical entry point for the VCP commit workflow and on-demand test runs. `make test` runs the full suite, `make commit '<msg>'` performs a VCP commit, and `make probe '<reason>'` runs the Remote Probing Protocol. See [docs/templates/makefile.md](docs/templates/makefile.md).
20
+ - **Makefile Commands:** The `Makefile` is the canonical entry point for the VCP commit workflow and on-demand test runs. `make test` runs the full suite, `make commit '<msg>'` performs a VCP commit (it runs the pre-commit hooks once and commits with `--no-verify`, while the post-commit test gate remains unskippable), and `make probe '<reason>'` runs the Remote Probing Protocol. See [docs/templates/makefile.md](docs/templates/makefile.md).
20
21
 
21
22
  ### Pre-commit Quick-Start
22
23
 
@@ -22,11 +22,12 @@ Defines the high-level artifact lifecycle and conventions for project management
22
22
  - **Milestones:** `MM-name.md` (in `docs/project/milestones/`).
23
23
  - **Case Files (Debugger):** `NN-name.md` — numbered sequentially.
24
24
  - **Task Briefs:** `NN-name.md` (in `docs/project/tasks/`) — numbered sequentially.
25
- - **Ad-hoc work (not tied to a milestone):** `00-NN-name.md` — `00` is used as the Milestone prefix. Ad-hoc slices are NOT tracked in Milestone documents or the Roadmap.
25
+ - **Milestone 0 (bootstrapping) & Ad-hoc work (not tied to a milestone):** `00-NN-name.md` — `00` is used as the Milestone prefix for Milestone 0 bootstrapping slices and for ad-hoc slices. Ad-hoc slices are NOT tracked in Milestone documents or the Roadmap.
26
26
  - **Archiving Policy:** When and how completed artifacts are archived or deleted.
27
- - **Spec Organization:** Organize specification documents by lifecycle into two subfolders: `docs/project/specs/invariants/` (formats, contracts, and workflows of record — long-lived system invariants) and `docs/project/specs/features/` (to-be-implemented initiatives that feed the Spec → Milestone → Slice lifecycle — deleted per the Archiving Policy once implemented).
27
+ - **Spec Organization:** Specification documents live in a single flat directory `docs/project/specs/` and are reserved strictly for **permanent system invariants** — formats, contracts, protocols (e.g. the MRP), core data models, and non-negotiable architectural rules. Feature goals, requirements, and acceptance criteria belong in Milestone documents (`docs/project/milestones/`), not in specs. There is no ephemeral `specs/features/` lifecycle.
28
28
  - **Run Environment:** Specify the project's designated environment/dependency manager (e.g., `uv`, `poetry`, `pip`) and prefix ALL execution commands with its runner (e.g., `uv run pytest`). The chosen runner MUST be reflected in the `Makefile`.
29
29
  - **Build & Run Commands:** Document the standard commands in the project `Makefile` (see [docs/templates/makefile.md](docs/templates/makefile.md)). At minimum: `make test` (full suite), `make commit '<msg>'` (VCP), and `make probe '<reason>'` (Remote Probing Protocol).
30
+ - **Release Process:** Document how releases are cut. At minimum: (1) **Triage** the scope (patch/minor/major) from conventional commits since the last tag; (2) write **release notes** to `docs/project/releases/v<version>.md`; (3) bump the `version` field in the project manifest; (4) present the notes and version bump at an **approval gate**; (5) **commit** (`chore(release): bump version to <version>`) and **tag** (`git tag -a v<version>`); and (6) **publish** (e.g. create a GitHub Release). Adapt the concrete commands to the project's packaging and distribution channel.
30
31
 
31
32
  ## Templates
32
33
 
@@ -34,7 +35,7 @@ Before creating or modifying any documentation artifact, agents MUST read the co
34
35
 
35
36
  | Template | Purpose |
36
37
  | -------- | ------- |
37
- | `specification-document.md` | Specification documents (features and invariants) |
38
+ | `specification-document.md` | Specification documents (permanent system invariants) |
38
39
  | `milestone.md` | Milestone documents |
39
40
  | `vertical-slice.md` | Vertical slice definitions |
40
41
  | `component-design.md` | Component design documents (ports and contracts) |
@@ -75,15 +76,4 @@ A living list of upcoming Milestones and their high-level features.
75
76
  - **Post-commit Hook:** Implement a hook that runs the full test suite via `make test` and reverts the commit on failure (via `git reset --soft HEAD~1`, keeping changes staged). This is the unskippable safety net — `--no-verify` MUST NOT bypass it.
76
77
  - **Debug Workflow:** Create `.github/workflows/debug.yml` following [docs/templates/ci.md](docs/templates/ci.md) to enable the Remote Probing Protocol.
77
78
  - **Makefile:** Create a `Makefile` following [docs/templates/makefile.md](docs/templates/makefile.md) with `make commit`, `make probe`, and `make test` commands. `make commit` implements the VCP workflow, `make probe` implements the Debugger's Remote Probing Protocol, and `make test` runs the full suite on demand.
78
-
79
- ## Technical Debt
80
- Tracks known technical debt for future cleanup.
81
-
82
- **Format:** `- [Description including context and location of the debt item.]`
83
-
84
- **Logging Hygiene (MUST):**
85
- - **Never re-log the same debt.** If a debt item recurs across commits, fold the new occurrence into the existing entry — do NOT append a new bullet.
86
- - **Prefer fixing directly over logging.** Only log debt that genuinely cannot be resolved in the moment. Do not log-then-resolve a defect that could be fixed immediately.
87
- - **Never log resolved items.** Do not add "informational" or "completed" entries.
88
-
89
- **Deletion Policy:** When a technical debt item is addressed (the underlying issue is resolved in a completed milestone/slice), the entry MUST be deleted from this section. Do not mark it as "completed" or "resolved" — remove it entirely. Git history serves as the permanent record.
79
+ - **`.gitignore` Configuration:** Configure a project-tailored `.gitignore` covering language/OS cache files, build artifacts, virtual environments, and the transient `.tmp/` directory. The `spikes/` directory MUST remain tracked so prototypes and probes stay version-controlled.
@@ -10,7 +10,6 @@ and the Debugger's Remote Probing Protocol (RPP). Below are concrete examples ad
10
10
  ### Commit
11
11
  ```shell
12
12
  make commit 'feat(templates): add PROJECT.md template'
13
- make commit 'fix(tests): resolve flaky assertion' no-verify
14
13
  ```
15
14
 
16
15
  **What is `.PHONY`?**
@@ -88,17 +87,19 @@ test:
88
87
 
89
88
  ## VCP Commit Workflow
90
89
 
90
+ `make commit` runs the pre-commit hooks once (via `pre-commit run`) and re-stages any auto-formatted files, then commits with `--no-verify` to suppress Git's own redundant second invocation of the pre-commit hook. This skips ONLY the pre-commit stage — the post-commit test gate (`.githooks/post-commit.py`) is a separate hook and remains fully active and unskippable.
91
+
91
92
  ### Example
92
93
 
93
94
  ```makefile
94
- commit: ARGS := $(filter-out no-verify,$(filter-out commit,$(MAKECMDGOALS)))
95
+ commit: ARGS := $(filter-out commit,$(MAKECMDGOALS))
95
96
 
96
97
  commit:
97
- @[ -n "$(ARGS)" ] || { echo "Usage: make commit '<message>' [no-verify]"; exit 1; }
98
+ @[ -n "$(ARGS)" ] || { echo "Usage: make commit '<message>'"; exit 1; }
98
99
  git add .
99
100
  -pre-commit run
100
101
  git add .
101
- git commit -m "$(ARGS)" $(if $(filter no-verify,$(MAKECMDGOALS)),--no-verify,)
102
+ git commit -m "$(ARGS)" --no-verify
102
103
  -git pull --rebase
103
104
  -git push
104
105
 
@@ -108,7 +109,6 @@ commit:
108
109
 
109
110
  **Usage:**
110
111
  - `make commit 'feat(templates): add PROJECT.md template'`
111
- - `make commit 'fix(tests): resolve flaky assertion' no-verify`
112
112
 
113
113
  ## Remote Probing Protocol (RPP)
114
114
 
@@ -0,0 +1,29 @@
1
+ # Spec: {{invariant}}
2
+ - **Status:** Active
3
+
4
+ > **Scope:** This template codifies **permanent system invariants** only — stable formats, contracts, protocols (e.g. the MRP), core data models, and non-negotiable architectural rules of record. It is NOT for feature goals, requirements, or acceptance criteria; those belong in Milestone documents (`docs/project/milestones/`) and Vertical Slices.
5
+
6
+ ## Overview / Problem Statement
7
+
8
+ **Format:** 2-3 paragraphs describing the invariant being codified, why it exists, and what it guarantees.
9
+ Context for the invariant, the contract it establishes, and the risk it mitigates.
10
+
11
+ ## Guiding Principles / Core Logic
12
+
13
+ **Format:** Bulleted list. Each entry: `- **Principle:** Description and how it constrains design decisions.`
14
+ Foundational rules, engineering philosophy, or logical constraints.
15
+
16
+ ## Technical Specification
17
+
18
+ **Format:** Use sub-sections as needed. Include:
19
+ - Data models / contracts (tables or code blocks)
20
+ - File paths and directory structures
21
+ - Workflow diagrams (Mermaid) where applicable
22
+ - Algorithm descriptions
23
+ - Configuration options
24
+ Detailed logic, file formats, directory structures, or workflow diagrams (Mermaid).
25
+
26
+ ## Guidelines
27
+
28
+ **Format:** Bulleted or numbered list of rules for conforming to and evolving this invariant. Each entry should constrain design decisions, not prescribe specific implementation.
29
+ Conformance requirements and the process for amending the invariant.
@@ -29,7 +29,11 @@ Then [expected outcome]
29
29
 
30
30
  ## Key Unknowns
31
31
 
32
- **Format:** Checklist of unresolved risks. Tags: `[Technical]` for code/architecture, `[Functional]` for behavior/UX. Mark as `[x]` when resolved.
32
+ **Format:** Checklist of unresolved risks, each tagged with one of three tiers. Mark as `[x]` when resolved.
33
+ - `[Formal]` — Ambiguities in business rules, policy decisions, domain definitions, or scope boundaries. Resolve by asking the user directly in an alignment turn; speculative coding or prototyping for formal questions is forbidden.
34
+ - `[Technical]` (works-like) — External dependencies, third-party libraries, APIs, runtime performance, concurrency, or data-storage feasibility. Resolve via automated assertion probes and benchmarks.
35
+ - `[Functional]` (looks-like) — User-facing ergonomics, CLI flags, terminal rendering, interactive flows, or layout aesthetic. Resolve via interactive demo runners with configurable knobs.
36
+
33
37
  - [ ] [Tag] Title: Description of the unknown.
34
38
 
35
39
  ## Implementation Plan
@@ -1,27 +0,0 @@
1
- # Spec: {{feature}}
2
- - **Status:** Active
3
-
4
- ## Overview / Problem Statement
5
-
6
- **Format:** 2-3 paragraphs describing the problem being solved, why existing solutions are insufficient, and what makes this approach valuable.
7
- Core problem, context, and value proposition.
8
-
9
- ## Guiding Principles / Core Logic
10
-
11
- **Format:** Bulleted list. Each entry: `- **Principle:** Description and how it constrains design decisions.`
12
- Foundational rules, engineering philosophy, or logical constraints.
13
-
14
- ## Technical Specification
15
-
16
- **Format:** Use sub-sections as needed. Include:
17
- - Data models / contracts (tables or code blocks)
18
- - File paths and directory structures
19
- - Workflow diagrams (Mermaid) where applicable
20
- - Algorithm descriptions
21
- - Configuration options
22
- Detailed logic, file formats, directory structures, or workflow diagrams (Mermaid).
23
-
24
- ## Guidelines
25
-
26
- **Format:** Bulleted or numbered list of actionable guidelines. Each entry should guide decision-making, not prescribe specific implementation.
27
- High-level phasing, sequencing, and technical strategy for the Architect.