shotgun-sh 0.2.8.dev3__tar.gz → 0.2.8.dev4__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.

Potentially problematic release.


This version of shotgun-sh might be problematic. Click here for more details.

Files changed (157) hide show
  1. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/PKG-INFO +1 -1
  2. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/pyproject.toml +1 -1
  3. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/agent_manager.py +27 -2
  4. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/screens/chat.py +6 -0
  5. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/.gitignore +0 -0
  6. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/LICENSE +0 -0
  7. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/README.md +0 -0
  8. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/README_PYPI.md +0 -0
  9. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/hatch_build.py +0 -0
  10. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/__init__.py +0 -0
  11. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/__init__.py +0 -0
  12. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/common.py +0 -0
  13. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/config/__init__.py +0 -0
  14. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/config/constants.py +0 -0
  15. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/config/manager.py +0 -0
  16. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/config/models.py +0 -0
  17. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/config/provider.py +0 -0
  18. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/conversation_history.py +0 -0
  19. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/conversation_manager.py +0 -0
  20. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/export.py +0 -0
  21. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/history/__init__.py +0 -0
  22. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/history/compaction.py +0 -0
  23. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/history/constants.py +0 -0
  24. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/history/context_extraction.py +0 -0
  25. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/history/history_building.py +0 -0
  26. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/history/history_processors.py +0 -0
  27. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/history/message_utils.py +0 -0
  28. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/history/token_counting/__init__.py +0 -0
  29. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/history/token_counting/anthropic.py +0 -0
  30. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/history/token_counting/base.py +0 -0
  31. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/history/token_counting/openai.py +0 -0
  32. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/history/token_counting/sentencepiece_counter.py +0 -0
  33. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/history/token_counting/tokenizer_cache.py +0 -0
  34. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/history/token_counting/utils.py +0 -0
  35. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/history/token_estimation.py +0 -0
  36. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/llm.py +0 -0
  37. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/messages.py +0 -0
  38. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/models.py +0 -0
  39. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/plan.py +0 -0
  40. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/research.py +0 -0
  41. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/specify.py +0 -0
  42. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/tasks.py +0 -0
  43. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/tools/__init__.py +0 -0
  44. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/tools/codebase/__init__.py +0 -0
  45. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/tools/codebase/codebase_shell.py +0 -0
  46. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/tools/codebase/directory_lister.py +0 -0
  47. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/tools/codebase/file_read.py +0 -0
  48. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/tools/codebase/models.py +0 -0
  49. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/tools/codebase/query_graph.py +0 -0
  50. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/tools/codebase/retrieve_code.py +0 -0
  51. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/tools/file_management.py +0 -0
  52. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/tools/web_search/__init__.py +0 -0
  53. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/tools/web_search/anthropic.py +0 -0
  54. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/tools/web_search/gemini.py +0 -0
  55. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/tools/web_search/openai.py +0 -0
  56. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/tools/web_search/utils.py +0 -0
  57. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/agents/usage_manager.py +0 -0
  58. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/api_endpoints.py +0 -0
  59. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/build_constants.py +0 -0
  60. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/cli/__init__.py +0 -0
  61. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/cli/codebase/__init__.py +0 -0
  62. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/cli/codebase/commands.py +0 -0
  63. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/cli/codebase/models.py +0 -0
  64. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/cli/config.py +0 -0
  65. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/cli/export.py +0 -0
  66. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/cli/feedback.py +0 -0
  67. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/cli/models.py +0 -0
  68. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/cli/plan.py +0 -0
  69. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/cli/research.py +0 -0
  70. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/cli/specify.py +0 -0
  71. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/cli/tasks.py +0 -0
  72. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/cli/update.py +0 -0
  73. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/cli/utils.py +0 -0
  74. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/codebase/__init__.py +0 -0
  75. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/codebase/core/__init__.py +0 -0
  76. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/codebase/core/change_detector.py +0 -0
  77. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/codebase/core/code_retrieval.py +0 -0
  78. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/codebase/core/cypher_models.py +0 -0
  79. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/codebase/core/ingestor.py +0 -0
  80. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/codebase/core/language_config.py +0 -0
  81. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/codebase/core/manager.py +0 -0
  82. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/codebase/core/nl_query.py +0 -0
  83. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/codebase/core/parser_loader.py +0 -0
  84. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/codebase/models.py +0 -0
  85. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/codebase/service.py +0 -0
  86. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/llm_proxy/__init__.py +0 -0
  87. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/llm_proxy/clients.py +0 -0
  88. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/llm_proxy/constants.py +0 -0
  89. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/logging_config.py +0 -0
  90. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/main.py +0 -0
  91. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/posthog_telemetry.py +0 -0
  92. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/__init__.py +0 -0
  93. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/agents/__init__.py +0 -0
  94. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/agents/export.j2 +0 -0
  95. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/agents/partials/codebase_understanding.j2 +0 -0
  96. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/agents/partials/common_agent_system_prompt.j2 +0 -0
  97. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/agents/partials/content_formatting.j2 +0 -0
  98. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/agents/partials/interactive_mode.j2 +0 -0
  99. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/agents/plan.j2 +0 -0
  100. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/agents/research.j2 +0 -0
  101. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/agents/specify.j2 +0 -0
  102. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/agents/state/codebase/codebase_graphs_available.j2 +0 -0
  103. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/agents/state/system_state.j2 +0 -0
  104. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/agents/tasks.j2 +0 -0
  105. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/codebase/__init__.py +0 -0
  106. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/codebase/cypher_query_patterns.j2 +0 -0
  107. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/codebase/cypher_system.j2 +0 -0
  108. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/codebase/enhanced_query_context.j2 +0 -0
  109. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/codebase/partials/cypher_rules.j2 +0 -0
  110. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/codebase/partials/graph_schema.j2 +0 -0
  111. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/codebase/partials/temporal_context.j2 +0 -0
  112. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/history/__init__.py +0 -0
  113. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/history/incremental_summarization.j2 +0 -0
  114. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/history/summarization.j2 +0 -0
  115. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/loader.py +0 -0
  116. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/prompts/tools/web_search.j2 +0 -0
  117. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/py.typed +0 -0
  118. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/sdk/__init__.py +0 -0
  119. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/sdk/codebase.py +0 -0
  120. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/sdk/exceptions.py +0 -0
  121. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/sdk/models.py +0 -0
  122. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/sdk/services.py +0 -0
  123. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/sentry_telemetry.py +0 -0
  124. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/shotgun_web/__init__.py +0 -0
  125. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/shotgun_web/client.py +0 -0
  126. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/shotgun_web/constants.py +0 -0
  127. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/shotgun_web/models.py +0 -0
  128. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/telemetry.py +0 -0
  129. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/__init__.py +0 -0
  130. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/app.py +0 -0
  131. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/commands/__init__.py +0 -0
  132. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/components/prompt_input.py +0 -0
  133. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/components/spinner.py +0 -0
  134. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/components/splash.py +0 -0
  135. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/components/vertical_tail.py +0 -0
  136. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/filtered_codebase_service.py +0 -0
  137. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/screens/chat.tcss +0 -0
  138. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/screens/chat_screen/__init__.py +0 -0
  139. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/screens/chat_screen/command_providers.py +0 -0
  140. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/screens/chat_screen/hint_message.py +0 -0
  141. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/screens/chat_screen/history.py +0 -0
  142. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/screens/directory_setup.py +0 -0
  143. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/screens/feedback.py +0 -0
  144. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/screens/model_picker.py +0 -0
  145. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/screens/provider_config.py +0 -0
  146. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/screens/shotgun_auth.py +0 -0
  147. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/screens/splash.py +0 -0
  148. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/screens/welcome.py +0 -0
  149. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/styles.tcss +0 -0
  150. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/utils/__init__.py +0 -0
  151. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/tui/utils/mode_progress.py +0 -0
  152. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/utils/__init__.py +0 -0
  153. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/utils/datetime_utils.py +0 -0
  154. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/utils/env_utils.py +0 -0
  155. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/utils/file_system_utils.py +0 -0
  156. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/utils/source_detection.py +0 -0
  157. {shotgun_sh-0.2.8.dev3 → shotgun_sh-0.2.8.dev4}/src/shotgun/utils/update_checker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: shotgun-sh
3
- Version: 0.2.8.dev3
3
+ Version: 0.2.8.dev4
4
4
  Summary: AI-powered research, planning, and task management CLI tool
5
5
  Project-URL: Homepage, https://shotgun.sh/
6
6
  Project-URL: Repository, https://github.com/shotgun-sh/shotgun
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "shotgun-sh"
3
- version = "0.2.8.dev3"
3
+ version = "0.2.8.dev4"
4
4
  description = "AI-powered research, planning, and task management CLI tool"
5
5
  readme = "README_PYPI.md"
6
6
  license = { text = "MIT" }
@@ -40,6 +40,7 @@ from pydantic_ai.messages import (
40
40
  SystemPromptPart,
41
41
  ToolCallPart,
42
42
  ToolCallPartDelta,
43
+ UserPromptPart,
43
44
  )
44
45
  from textual.message import Message
45
46
  from textual.widget import Widget
@@ -554,11 +555,35 @@ class AgentManager(Widget):
554
555
  },
555
556
  )
556
557
 
557
- # Always add the agent's response messages to maintain conversation history
558
- self.ui_message_history = original_messages + cast(
558
+ # Merge agent's response messages, avoiding duplicates
559
+ # The TUI may have already added the user prompt, so check for it
560
+ new_messages = cast(
559
561
  list[ModelRequest | ModelResponse | HintMessage], result.new_messages()
560
562
  )
561
563
 
564
+ # Deduplicate: skip user prompts that are already in original_messages
565
+ deduplicated_new_messages = []
566
+ for msg in new_messages:
567
+ # Check if this is a user prompt that's already in original_messages
568
+ if isinstance(msg, ModelRequest) and any(
569
+ isinstance(part, UserPromptPart) for part in msg.parts
570
+ ):
571
+ # Check if an identical user prompt is already in original_messages
572
+ already_exists = any(
573
+ isinstance(existing, ModelRequest)
574
+ and any(isinstance(p, UserPromptPart) for p in existing.parts)
575
+ and existing.parts == msg.parts
576
+ for existing in original_messages[
577
+ -5:
578
+ ] # Check last 5 messages for efficiency
579
+ )
580
+ if already_exists:
581
+ continue # Skip this duplicate user prompt
582
+
583
+ deduplicated_new_messages.append(msg)
584
+
585
+ self.ui_message_history = original_messages + deduplicated_new_messages
586
+
562
587
  # Get file operations early so we can use them for contextual messages
563
588
  file_operations = deps.file_tracker.operations.copy()
564
589
  self.recently_change_files = file_operations
@@ -690,6 +690,12 @@ class ChatScreen(Screen[None]):
690
690
  # Not a command, process as normal
691
691
  self.history.append(message.text)
692
692
 
693
+ # Add user message to agent_manager's history BEFORE running the agent
694
+ # This ensures immediate visual feedback AND proper deduplication
695
+ user_message = ModelRequest.user_text_prompt(text)
696
+ self.agent_manager.ui_message_history.append(user_message)
697
+ self.messages = self.agent_manager.ui_message_history.copy()
698
+
693
699
  # Clear the input
694
700
  self.value = ""
695
701
  self.run_agent(text) # Use stripped text
File without changes