teddy-cli 0.1.17.dev1205__tar.gz → 0.1.17.dev1207__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 (159) hide show
  1. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/PKG-INFO +1 -1
  2. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/pyproject.toml +1 -1
  3. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/prompt_manager.py +18 -14
  4. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/session_service.py +29 -9
  5. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/.gitignore +0 -0
  6. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/LICENSE +0 -0
  7. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/__init__.py +0 -0
  8. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/__main__.py +0 -0
  9. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/__init__.py +0 -0
  10. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
  11. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
  12. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
  13. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +0 -0
  14. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
  15. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
  16. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
  17. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
  18. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
  19. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
  20. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
  21. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
  22. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
  23. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
  24. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
  25. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
  26. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
  27. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
  28. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
  29. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
  30. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
  31. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
  32. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
  33. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
  34. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
  35. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
  36. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
  37. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
  38. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
  39. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
  40. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
  41. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
  42. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/container.py +0 -0
  43. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/__init__.py +0 -0
  44. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/domain/__init__.py +0 -0
  45. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/domain/models/__init__.py +0 -0
  46. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
  47. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/domain/models/change_set.py +0 -0
  48. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
  49. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
  50. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
  51. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/domain/models/plan.py +0 -0
  52. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
  53. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/domain/models/project_context.py +0 -0
  54. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
  55. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/domain/models/session.py +0 -0
  56. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
  57. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
  58. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/__init__.py +0 -0
  59. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
  60. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
  61. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
  62. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/inbound/init.py +0 -0
  63. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
  64. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
  65. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
  66. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
  67. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
  68. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
  69. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
  70. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
  71. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
  72. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
  73. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
  74. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
  75. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
  76. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
  77. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
  78. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
  79. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
  80. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
  81. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
  82. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
  83. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
  84. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
  85. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
  86. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
  87. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/__init__.py +0 -0
  88. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
  89. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
  90. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
  91. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/action_executor.py +0 -0
  92. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/action_factory.py +0 -0
  93. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
  94. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
  95. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/context_service.py +0 -0
  96. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/edit_simulator.py +0 -0
  97. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
  98. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
  99. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/init_service.py +0 -0
  100. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
  101. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
  102. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
  103. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/parser_metadata.py +0 -0
  104. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/parser_reporting.py +0 -0
  105. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/plan_validator.py +0 -0
  106. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/planning_service.py +0 -0
  107. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
  108. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
  109. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
  110. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/session_planner.py +0 -0
  111. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
  112. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/session_replanner.py +0 -0
  113. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/session_repository.py +0 -0
  114. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
  115. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/update_checker.py +0 -0
  116. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
  117. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
  118. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
  119. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
  120. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
  121. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
  122. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
  123. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
  124. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/utils/__init__.py +0 -0
  125. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/utils/diff.py +0 -0
  126. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
  127. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/utils/io.py +0 -0
  128. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/utils/markdown.py +0 -0
  129. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/utils/serialization.py +0 -0
  130. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
  131. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/utils/string.py +0 -0
  132. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/core/utils/terminal.py +0 -0
  133. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/prompts.py +0 -0
  134. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/registries/__init__.py +0 -0
  135. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/registries/infrastructure.py +0 -0
  136. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/registries/reviewer.py +0 -0
  137. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/registries/validators.py +0 -0
  138. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/MRP.xml +0 -0
  139. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/__init__.py +0 -0
  140. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/config/__init__.py +0 -0
  141. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/config/config.yaml +0 -0
  142. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/config/init.context +0 -0
  143. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/config/prompts/architect.xml +0 -0
  144. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/config/prompts/assistant.xml +0 -0
  145. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/config/prompts/debugger.xml +0 -0
  146. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/config/prompts/developer.xml +0 -0
  147. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/config/prompts/pathfinder.xml +0 -0
  148. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/config/prompts/prototyper.xml +0 -0
  149. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/templates/ARCHITECTURE.md +0 -0
  150. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/templates/PROJECT.md +0 -0
  151. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/templates/case-file.md +0 -0
  152. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/templates/ci.md +0 -0
  153. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/templates/component-design.md +0 -0
  154. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/templates/makefile.md +0 -0
  155. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/templates/milestone.md +0 -0
  156. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/templates/pre-commit.md +0 -0
  157. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/templates/specification-document.md +0 -0
  158. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/src/teddy_executor/resources/templates/task-brief.md +0 -0
  159. {teddy_cli-0.1.17.dev1205 → teddy_cli-0.1.17.dev1207}/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.dev1205
3
+ Version: 0.1.17.dev1207
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.dev1205"
3
+ version = "0.1.17.dev1207"
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" }
@@ -95,20 +95,14 @@ class PromptManager(IPromptManager):
95
95
  return None
96
96
 
97
97
  def _resolve_agent_prompt_content(self, agent_name: str, turn_path: Path) -> str:
98
- """Resolves the agent-specific prompt XML from the filesystem hierarchy.
98
+ """Resolves the agent-specific prompt XML from the canonical
99
+ ``.teddy/prompts/`` directory (the user-editable source).
99
100
 
100
- Searches the session root first, then the canonical ``.teddy/prompts/``
101
- directory. Returns an empty string (with a warning) when no prompt file
102
- is found, preserving the graceful-degradation contract.
101
+ Returns an empty string (with a warning) when no prompt file is found,
102
+ preserving the graceful-degradation contract. Session-root prompts are
103
+ resolved by the caller (``fetch_system_prompt``), which returns them
104
+ verbatim rather than re-composing them.
103
105
  """
104
- # 1. Try Session-Root override (Current standard)
105
- session_root_prompt = self._find_prompt_file(
106
- turn_path.parent.as_posix(), agent_name
107
- )
108
- if session_root_prompt:
109
- return self._file_system_manager.read_file(session_root_prompt)
110
-
111
- # 2. Try .teddy/prompts/ (canonical source, user-editable)
112
106
  teddy_prompt_dir = (
113
107
  turn_path.parent.parent.parent.parent / ".teddy" / "prompts"
114
108
  ).as_posix()
@@ -117,9 +111,8 @@ class PromptManager(IPromptManager):
117
111
  return self._file_system_manager.read_file(teddy_prompt_path)
118
112
 
119
113
  logging.getLogger(__name__).warning(
120
- "PromptManager: Failed to resolve system prompt for agent '%s' (searched %s and %s)",
114
+ "PromptManager: Failed to resolve system prompt for agent '%s' (searched %s)",
121
115
  agent_name,
122
- session_root_prompt,
123
116
  teddy_prompt_path,
124
117
  )
125
118
  return ""
@@ -144,6 +137,17 @@ class PromptManager(IPromptManager):
144
137
  return resource.read_text(encoding="utf-8")
145
138
 
146
139
  def fetch_system_prompt(self, agent_name: str, turn_path: Path) -> str:
140
+ # Option A: the session-root prompt file IS the composed system prompt
141
+ # (written by SessionService at session creation / agent switch). Return
142
+ # it verbatim -- never re-compose, to avoid a duplicate header and MRP.
143
+ session_root_prompt = self._find_prompt_file(
144
+ turn_path.parent.as_posix(), agent_name
145
+ )
146
+ if session_root_prompt:
147
+ return self._file_system_manager.read_file(session_root_prompt)
148
+
149
+ # Lazy-compose fallback (legacy session or manually deleted file):
150
+ # assemble from the canonical ``.teddy/prompts/`` source.
147
151
  content = self._resolve_agent_prompt_content(agent_name, turn_path)
148
152
  if not content:
149
153
  # No agent prompt resolved: preserve the historical empty-string
@@ -61,10 +61,20 @@ class SessionService(ISessionManager):
61
61
  f"{session_root}/session.context", clean_context
62
62
  )
63
63
 
64
- # 2. Prompt population — read from .teddy/prompts/ (canonical source)
65
- prompt_filename, prompt_content = self._resolve_agent_prompt(options.agent_name)
64
+ # 2. Prompt population — compose the full system prompt and persist it.
65
+ # `_resolve_agent_prompt` validates the agent and resolves the target
66
+ # filename; `PromptManager.fetch_system_prompt` assembles the composed
67
+ # system prompt (agent-name header + agent XML + MRP). Because the
68
+ # session root is still empty here, this forces the compose path from
69
+ # `.teddy/prompts/`. Persisting the composed value makes the session
70
+ # root hold the exact prompt sent to the model, which later turns reuse
71
+ # verbatim (Option A).
72
+ prompt_filename, _raw_prompt = self._resolve_agent_prompt(options.agent_name)
73
+ composed_prompt = self._prompt_manager.fetch_system_prompt(
74
+ options.agent_name, Path(turn_dir)
75
+ )
66
76
  self._file_system_manager.write_file(
67
- f"{session_root}/{prompt_filename}", prompt_content
77
+ f"{session_root}/{prompt_filename}", composed_prompt
68
78
  )
69
79
 
70
80
  # 3. Metadata persistence
@@ -524,9 +534,10 @@ class SessionService(ISessionManager):
524
534
 
525
535
  def set_session_agent(self, session_name: str, agent_name: str) -> None:
526
536
  """
527
- Permanently changes the session's agent. Updates meta.yaml
528
- with the new agent_name and replaces the session's prompt
529
- XML with the new agent's prompt from .teddy/prompts/.
537
+ Permanently changes the session's agent. Updates meta.yaml with the
538
+ new agent_name and replaces the session's prompt XML with the
539
+ RECOMPOSED system prompt for the new agent (agent-name header + agent
540
+ XML + MRP), so later turns reuse it verbatim (Option A).
530
541
  """
531
542
  session_root = f".teddy/sessions/{session_name}"
532
543
  latest_turn_path = self.get_latest_turn(session_name)
@@ -536,12 +547,21 @@ class SessionService(ISessionManager):
536
547
  meta["agent_name"] = agent_name
537
548
  self.save_turn_meta(latest_turn_path, meta)
538
549
 
539
- # 2. Find new prompt in .teddy/prompts/ (mirrors create_session pattern)
540
- prompt_filename, prompt_content = self._resolve_agent_prompt(agent_name)
550
+ # 2. Resolve the target filename (validates the agent) and recompose the
551
+ # full system prompt. Option A: switching agents must recompose
552
+ # (agent-name header + agent XML + MRP) via the prompt manager and
553
+ # persist THAT composed value -- never the raw `.teddy/prompts/`
554
+ # content -- so later turns reuse it verbatim. Because the session
555
+ # root does not yet hold the new agent's file, the prompt manager
556
+ # takes the lazy-compose path from `.teddy/prompts/`.
557
+ prompt_filename, _raw_prompt = self._resolve_agent_prompt(agent_name)
558
+ composed_prompt = self._prompt_manager.fetch_system_prompt(
559
+ agent_name, Path(latest_turn_path)
560
+ )
541
561
 
542
562
  # 3. Write prompt to session root (overwrite any existing file with same stem)
543
563
  self._file_system_manager.write_file(
544
- f"{session_root}/{prompt_filename}", prompt_content
564
+ f"{session_root}/{prompt_filename}", composed_prompt
545
565
  )
546
566
 
547
567
  # 4. Remove stale prompt files (any file in session root whose stem matches a