shotgun-sh 0.2.6.dev5__tar.gz → 0.2.13.dev1__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 (205) hide show
  1. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/LICENSE +1 -1
  2. shotgun_sh-0.2.13.dev1/PKG-INFO +130 -0
  3. shotgun_sh-0.2.13.dev1/README.md +406 -0
  4. shotgun_sh-0.2.13.dev1/docs/README_PYPI.md +71 -0
  5. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/hatch_build.py +8 -8
  6. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/pyproject.toml +15 -4
  7. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/agent_manager.py +612 -39
  8. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/common.py +56 -25
  9. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/config/constants.py +0 -6
  10. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/config/manager.py +66 -35
  11. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/config/models.py +41 -1
  12. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/config/provider.py +33 -5
  13. shotgun_sh-0.2.13.dev1/src/shotgun/agents/context_analyzer/__init__.py +28 -0
  14. shotgun_sh-0.2.13.dev1/src/shotgun/agents/context_analyzer/analyzer.py +471 -0
  15. shotgun_sh-0.2.13.dev1/src/shotgun/agents/context_analyzer/constants.py +9 -0
  16. shotgun_sh-0.2.13.dev1/src/shotgun/agents/context_analyzer/formatter.py +115 -0
  17. shotgun_sh-0.2.13.dev1/src/shotgun/agents/context_analyzer/models.py +212 -0
  18. shotgun_sh-0.2.13.dev1/src/shotgun/agents/conversation_history.py +229 -0
  19. shotgun_sh-0.2.13.dev1/src/shotgun/agents/conversation_manager.py +143 -0
  20. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/export.py +2 -2
  21. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/history/compaction.py +9 -4
  22. shotgun_sh-0.2.13.dev1/src/shotgun/agents/history/context_extraction.py +195 -0
  23. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/history/history_processors.py +113 -5
  24. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/history/token_counting/anthropic.py +17 -1
  25. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/history/token_counting/base.py +14 -3
  26. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/history/token_counting/openai.py +11 -1
  27. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/history/token_counting/sentencepiece_counter.py +8 -0
  28. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/history/token_counting/tokenizer_cache.py +3 -1
  29. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/history/token_counting/utils.py +0 -3
  30. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/plan.py +2 -2
  31. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/research.py +3 -3
  32. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/specify.py +2 -2
  33. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/tasks.py +2 -2
  34. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/tools/codebase/codebase_shell.py +6 -0
  35. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/tools/codebase/directory_lister.py +6 -0
  36. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/tools/codebase/file_read.py +11 -2
  37. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/tools/codebase/query_graph.py +6 -0
  38. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/tools/codebase/retrieve_code.py +6 -0
  39. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/tools/file_management.py +82 -16
  40. shotgun_sh-0.2.13.dev1/src/shotgun/agents/tools/registry.py +217 -0
  41. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/tools/web_search/__init__.py +8 -8
  42. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/tools/web_search/anthropic.py +8 -2
  43. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/tools/web_search/gemini.py +7 -1
  44. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/tools/web_search/openai.py +7 -1
  45. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/tools/web_search/utils.py +2 -2
  46. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/usage_manager.py +16 -11
  47. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/api_endpoints.py +7 -3
  48. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/build_constants.py +1 -1
  49. shotgun_sh-0.2.13.dev1/src/shotgun/cli/clear.py +53 -0
  50. shotgun_sh-0.2.13.dev1/src/shotgun/cli/compact.py +186 -0
  51. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/cli/config.py +8 -5
  52. shotgun_sh-0.2.13.dev1/src/shotgun/cli/context.py +111 -0
  53. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/cli/export.py +1 -1
  54. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/cli/feedback.py +4 -2
  55. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/cli/models.py +1 -0
  56. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/cli/plan.py +1 -1
  57. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/cli/research.py +1 -1
  58. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/cli/specify.py +1 -1
  59. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/cli/tasks.py +1 -1
  60. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/cli/update.py +16 -2
  61. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/codebase/core/change_detector.py +5 -3
  62. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/codebase/core/code_retrieval.py +4 -2
  63. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/codebase/core/ingestor.py +10 -8
  64. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/codebase/core/manager.py +13 -4
  65. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/codebase/core/nl_query.py +1 -1
  66. shotgun_sh-0.2.13.dev1/src/shotgun/exceptions.py +32 -0
  67. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/logging_config.py +18 -27
  68. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/main.py +73 -11
  69. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/posthog_telemetry.py +23 -7
  70. shotgun_sh-0.2.13.dev1/src/shotgun/prompts/agents/specify.j2 +318 -0
  71. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/sentry_telemetry.py +25 -16
  72. shotgun_sh-0.2.13.dev1/src/shotgun/settings.py +238 -0
  73. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/telemetry.py +10 -33
  74. shotgun_sh-0.2.13.dev1/src/shotgun/tui/app.py +356 -0
  75. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/commands/__init__.py +1 -1
  76. shotgun_sh-0.2.13.dev1/src/shotgun/tui/components/context_indicator.py +179 -0
  77. shotgun_sh-0.2.13.dev1/src/shotgun/tui/components/mode_indicator.py +70 -0
  78. shotgun_sh-0.2.13.dev1/src/shotgun/tui/components/status_bar.py +48 -0
  79. shotgun_sh-0.2.13.dev1/src/shotgun/tui/containers.py +91 -0
  80. shotgun_sh-0.2.13.dev1/src/shotgun/tui/dependencies.py +39 -0
  81. shotgun_sh-0.2.13.dev1/src/shotgun/tui/protocols.py +45 -0
  82. shotgun_sh-0.2.13.dev1/src/shotgun/tui/screens/chat/__init__.py +5 -0
  83. shotgun_sh-0.2.13.dev1/src/shotgun/tui/screens/chat/chat.tcss +54 -0
  84. shotgun_sh-0.2.13.dev1/src/shotgun/tui/screens/chat/chat_screen.py +1254 -0
  85. shotgun_sh-0.2.13.dev1/src/shotgun/tui/screens/chat/codebase_index_prompt_screen.py +64 -0
  86. shotgun_sh-0.2.13.dev1/src/shotgun/tui/screens/chat/codebase_index_selection.py +12 -0
  87. shotgun_sh-0.2.13.dev1/src/shotgun/tui/screens/chat/help_text.py +40 -0
  88. shotgun_sh-0.2.13.dev1/src/shotgun/tui/screens/chat/prompt_history.py +48 -0
  89. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/screens/chat.tcss +11 -0
  90. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/screens/chat_screen/command_providers.py +78 -2
  91. shotgun_sh-0.2.13.dev1/src/shotgun/tui/screens/chat_screen/history/__init__.py +22 -0
  92. shotgun_sh-0.2.13.dev1/src/shotgun/tui/screens/chat_screen/history/agent_response.py +66 -0
  93. shotgun_sh-0.2.13.dev1/src/shotgun/tui/screens/chat_screen/history/chat_history.py +115 -0
  94. shotgun_sh-0.2.13.dev1/src/shotgun/tui/screens/chat_screen/history/formatters.py +115 -0
  95. shotgun_sh-0.2.13.dev1/src/shotgun/tui/screens/chat_screen/history/partial_response.py +43 -0
  96. shotgun_sh-0.2.13.dev1/src/shotgun/tui/screens/chat_screen/history/user_question.py +42 -0
  97. shotgun_sh-0.2.13.dev1/src/shotgun/tui/screens/confirmation_dialog.py +151 -0
  98. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/screens/feedback.py +4 -4
  99. shotgun_sh-0.2.13.dev1/src/shotgun/tui/screens/github_issue.py +102 -0
  100. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/screens/model_picker.py +49 -24
  101. shotgun_sh-0.2.13.dev1/src/shotgun/tui/screens/onboarding.py +431 -0
  102. shotgun_sh-0.2.13.dev1/src/shotgun/tui/screens/pipx_migration.py +153 -0
  103. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/screens/provider_config.py +50 -27
  104. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/screens/shotgun_auth.py +2 -2
  105. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/screens/welcome.py +14 -11
  106. shotgun_sh-0.2.13.dev1/src/shotgun/tui/services/__init__.py +5 -0
  107. shotgun_sh-0.2.13.dev1/src/shotgun/tui/services/conversation_service.py +184 -0
  108. shotgun_sh-0.2.13.dev1/src/shotgun/tui/state/__init__.py +7 -0
  109. shotgun_sh-0.2.13.dev1/src/shotgun/tui/state/processing_state.py +185 -0
  110. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/utils/mode_progress.py +14 -7
  111. shotgun_sh-0.2.13.dev1/src/shotgun/tui/widgets/__init__.py +5 -0
  112. shotgun_sh-0.2.13.dev1/src/shotgun/tui/widgets/widget_coordinator.py +263 -0
  113. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/utils/file_system_utils.py +22 -2
  114. shotgun_sh-0.2.13.dev1/src/shotgun/utils/marketing.py +110 -0
  115. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/utils/update_checker.py +69 -14
  116. shotgun_sh-0.2.6.dev5/PKG-INFO +0 -467
  117. shotgun_sh-0.2.6.dev5/README.md +0 -413
  118. shotgun_sh-0.2.6.dev5/src/shotgun/agents/conversation_history.py +0 -106
  119. shotgun_sh-0.2.6.dev5/src/shotgun/agents/conversation_manager.py +0 -105
  120. shotgun_sh-0.2.6.dev5/src/shotgun/agents/history/context_extraction.py +0 -108
  121. shotgun_sh-0.2.6.dev5/src/shotgun/prompts/agents/specify.j2 +0 -51
  122. shotgun_sh-0.2.6.dev5/src/shotgun/tui/app.py +0 -156
  123. shotgun_sh-0.2.6.dev5/src/shotgun/tui/screens/chat.py +0 -955
  124. shotgun_sh-0.2.6.dev5/src/shotgun/tui/screens/chat_screen/history.py +0 -335
  125. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/.gitignore +0 -0
  126. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/__init__.py +0 -0
  127. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/__init__.py +0 -0
  128. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/config/__init__.py +0 -0
  129. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/history/__init__.py +0 -0
  130. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/history/constants.py +0 -0
  131. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/history/history_building.py +0 -0
  132. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/history/message_utils.py +0 -0
  133. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/history/token_counting/__init__.py +0 -0
  134. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/history/token_estimation.py +0 -0
  135. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/llm.py +0 -0
  136. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/messages.py +0 -0
  137. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/models.py +0 -0
  138. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/tools/__init__.py +0 -0
  139. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/tools/codebase/__init__.py +0 -0
  140. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/agents/tools/codebase/models.py +0 -0
  141. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/cli/__init__.py +0 -0
  142. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/cli/codebase/__init__.py +0 -0
  143. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/cli/codebase/commands.py +0 -0
  144. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/cli/codebase/models.py +0 -0
  145. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/cli/utils.py +0 -0
  146. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/codebase/__init__.py +0 -0
  147. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/codebase/core/__init__.py +0 -0
  148. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/codebase/core/cypher_models.py +0 -0
  149. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/codebase/core/language_config.py +0 -0
  150. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/codebase/core/parser_loader.py +0 -0
  151. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/codebase/models.py +0 -0
  152. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/codebase/service.py +0 -0
  153. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/llm_proxy/__init__.py +0 -0
  154. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/llm_proxy/clients.py +0 -0
  155. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/llm_proxy/constants.py +0 -0
  156. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/__init__.py +0 -0
  157. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/agents/__init__.py +0 -0
  158. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/agents/export.j2 +0 -0
  159. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/agents/partials/codebase_understanding.j2 +0 -0
  160. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/agents/partials/common_agent_system_prompt.j2 +0 -0
  161. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/agents/partials/content_formatting.j2 +0 -0
  162. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/agents/partials/interactive_mode.j2 +0 -0
  163. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/agents/plan.j2 +0 -0
  164. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/agents/research.j2 +0 -0
  165. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/agents/state/codebase/codebase_graphs_available.j2 +0 -0
  166. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/agents/state/system_state.j2 +0 -0
  167. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/agents/tasks.j2 +0 -0
  168. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/codebase/__init__.py +0 -0
  169. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/codebase/cypher_query_patterns.j2 +0 -0
  170. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/codebase/cypher_system.j2 +0 -0
  171. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/codebase/enhanced_query_context.j2 +0 -0
  172. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/codebase/partials/cypher_rules.j2 +0 -0
  173. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/codebase/partials/graph_schema.j2 +0 -0
  174. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/codebase/partials/temporal_context.j2 +0 -0
  175. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/history/__init__.py +0 -0
  176. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/history/incremental_summarization.j2 +0 -0
  177. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/history/summarization.j2 +0 -0
  178. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/loader.py +0 -0
  179. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/prompts/tools/web_search.j2 +0 -0
  180. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/py.typed +0 -0
  181. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/sdk/__init__.py +0 -0
  182. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/sdk/codebase.py +0 -0
  183. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/sdk/exceptions.py +0 -0
  184. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/sdk/models.py +0 -0
  185. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/sdk/services.py +0 -0
  186. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/shotgun_web/__init__.py +0 -0
  187. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/shotgun_web/client.py +0 -0
  188. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/shotgun_web/constants.py +0 -0
  189. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/shotgun_web/models.py +0 -0
  190. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/__init__.py +0 -0
  191. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/components/prompt_input.py +0 -0
  192. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/components/spinner.py +0 -0
  193. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/components/splash.py +0 -0
  194. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/components/vertical_tail.py +0 -0
  195. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/filtered_codebase_service.py +0 -0
  196. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/screens/chat_screen/__init__.py +0 -0
  197. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/screens/chat_screen/hint_message.py +0 -0
  198. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/screens/directory_setup.py +0 -0
  199. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/screens/splash.py +0 -0
  200. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/styles.tcss +0 -0
  201. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/tui/utils/__init__.py +0 -0
  202. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/utils/__init__.py +0 -0
  203. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/utils/datetime_utils.py +0 -0
  204. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/utils/env_utils.py +0 -0
  205. {shotgun_sh-0.2.6.dev5 → shotgun_sh-0.2.13.dev1}/src/shotgun/utils/source_detection.py +0 -0
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2024 Proofs.io
3
+ Copyright (c) 2025 Mimir AI, Inc.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -0,0 +1,130 @@
1
+ Metadata-Version: 2.4
2
+ Name: shotgun-sh
3
+ Version: 0.2.13.dev1
4
+ Summary: AI-powered research, planning, and task management CLI tool
5
+ Project-URL: Homepage, https://shotgun.sh/
6
+ Project-URL: Repository, https://github.com/shotgun-sh/shotgun
7
+ Project-URL: Issues, https://github.com/shotgun-sh/shotgun-alpha/issues
8
+ Project-URL: Discord, https://discord.gg/5RmY6J2N7s
9
+ Author-email: "Proofs.io" <hello@proofs.io>
10
+ License: MIT
11
+ License-File: LICENSE
12
+ Keywords: agent,ai,cli,llm,planning,productivity,pydantic-ai,research,task-management
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Classifier: Topic :: Utilities
23
+ Requires-Python: >=3.11
24
+ Requires-Dist: aiofiles>=24.0.0
25
+ Requires-Dist: anthropic>=0.39.0
26
+ Requires-Dist: dependency-injector>=4.41.0
27
+ Requires-Dist: genai-prices>=0.0.27
28
+ Requires-Dist: httpx>=0.27.0
29
+ Requires-Dist: jinja2>=3.1.0
30
+ Requires-Dist: kuzu>=0.7.0
31
+ Requires-Dist: logfire>=2.0.0
32
+ Requires-Dist: openai>=1.0.0
33
+ Requires-Dist: packaging>=23.0
34
+ Requires-Dist: posthog>=3.0.0
35
+ Requires-Dist: pydantic-ai>=0.0.14
36
+ Requires-Dist: pydantic-settings>=2.0.0
37
+ Requires-Dist: rich>=13.0.0
38
+ Requires-Dist: sentencepiece>=0.2.0
39
+ Requires-Dist: sentry-sdk[pure-eval]>=2.0.0
40
+ Requires-Dist: tenacity>=8.0.0
41
+ Requires-Dist: textual-dev>=1.7.0
42
+ Requires-Dist: textual-serve>=0.1.0
43
+ Requires-Dist: textual>=6.1.0
44
+ Requires-Dist: tiktoken>=0.7.0
45
+ Requires-Dist: tree-sitter-go>=0.23.0
46
+ Requires-Dist: tree-sitter-javascript>=0.23.0
47
+ Requires-Dist: tree-sitter-python>=0.23.0
48
+ Requires-Dist: tree-sitter-rust>=0.23.0
49
+ Requires-Dist: tree-sitter-typescript>=0.23.0
50
+ Requires-Dist: tree-sitter>=0.21.0
51
+ Requires-Dist: typer>=0.12.0
52
+ Requires-Dist: watchdog>=4.0.0
53
+ Provides-Extra: dev
54
+ Requires-Dist: commitizen>=3.13.0; extra == 'dev'
55
+ Requires-Dist: lefthook>=1.12.0; extra == 'dev'
56
+ Requires-Dist: mypy>=1.11.0; extra == 'dev'
57
+ Requires-Dist: ruff>=0.6.0; extra == 'dev'
58
+ Description-Content-Type: text/markdown
59
+
60
+ # Shotgun
61
+
62
+ **Spec-Driven Development for AI Code Generation**
63
+
64
+ Shotgun is a CLI tool that turns work with AI code-gen tools from "I want to build X" into: **research → specs → plans → tasks → implementation**. It reads your entire codebase, coordinates AI agents to do the heavy lifting, and exports clean artifacts in the agents.md format so your code-gen tools actually know what they're building.
65
+
66
+ 🌐 **Learn more at [shotgun.sh](https://shotgun.sh/)**
67
+
68
+ ## Features
69
+
70
+ ### 📊 Complete Codebase Understanding
71
+
72
+ Before writing a single line, Shotgun reads all of it. Your patterns. Your dependencies. Your technical debt. Whether you're adding features, onboarding devs, planning migrations, or refactoring - Shotgun knows what you're working with.
73
+
74
+ ### 🔄 Five Modes. One Journey. Zero Gaps.
75
+
76
+ **Research** (what exists) → **Specify** (what to build) → **Plan** (how to build) → **Tasks** (break it down) → **Export** (to any tool)
77
+
78
+ Not another chatbot. A complete workflow where each mode feeds the next.
79
+
80
+ ### ➡️ Export to agents.md
81
+
82
+ Outputs plug into many code-generation tools including Codex, Cursor, Warp, Devin, opencode, Jules, and more.
83
+
84
+ ### 📝 Specs That Don't Die in Slack
85
+
86
+ Every research finding, every architectural decision, every "here's why we didn't use that library" - captured as markdown in your repo. Version controlled. Searchable.
87
+
88
+ ## Installation
89
+
90
+ ### Using uvx (Recommended)
91
+
92
+ **Quick start (ephemeral):**
93
+ ```bash
94
+ uvx shotgun-sh@latest
95
+ ```
96
+
97
+ **Install permanently:**
98
+ ```bash
99
+ uv tool install shotgun-sh
100
+ ```
101
+
102
+ If you don't have `uv` installed, get it at [astral.sh/uv](https://astral.sh/uv) or `curl -LsSf https://astral.sh/uv/install.sh | sh`
103
+
104
+ ## Quick Start
105
+
106
+ ```bash
107
+ # Research your codebase or a topic
108
+ shotgun research "What is our authentication flow?"
109
+
110
+ # Generate specifications
111
+ shotgun spec "Add OAuth2 authentication"
112
+
113
+ # Create an implementation plan
114
+ shotgun plan "Build user dashboard"
115
+
116
+ # Break down into tasks
117
+ shotgun tasks "Implement payment system"
118
+
119
+ # Export to agents.md format for your code-gen tools
120
+ shotgun export
121
+ ```
122
+
123
+ ## Support
124
+
125
+ Have questions? Join our community on **[Discord](https://discord.gg/5RmY6J2N7s)**
126
+
127
+ ---
128
+
129
+ **License:** MIT
130
+ **Python:** 3.11+
@@ -0,0 +1,406 @@
1
+ <div align="center">
2
+ <img width="400" height="150" alt="Shotgun logo transparent background" src="https://github.com/user-attachments/assets/08f9ccd5-f2e8-4bf4-9cb2-2f0de866a76a" />
3
+
4
+ ### Spec-Driven Development
5
+
6
+
7
+ **Write codebase-aware specs for AI coding agents (Codex, Cursor, Claude Code) so they don't derail.**
8
+ <p align="center">
9
+ <a href="https://github.com/shotgun-sh/shotgun">
10
+ <img src="https://img.shields.io/badge/python-3.11+-blue?style=flat&logo=python&logoColor=white" />
11
+ </a>
12
+ <a href="https://www.producthunt.com/products/shotgun-cli/launches/shotgun-cli">
13
+ <img src="https://img.shields.io/badge/Product%20Hunt-%237%20Product%20of%20the%20Day-FF6154?style=flat&logo=producthunt&logoColor=white" />
14
+ </a>
15
+ <a href="https://github.com/shotgun-sh/shotgun?tab=contributing-ov-file">
16
+ <img src="https://img.shields.io/badge/PRs-welcome-brightgreen?style=flat" />
17
+ </a>
18
+ <a href="https://github.com/shotgun-sh/shotgun?tab=MIT-1-ov-file">
19
+ <img src="https://img.shields.io/badge/license-MIT-blue?style=flat" />
20
+ </a>
21
+ <a href="https://discord.com/invite/5RmY6J2N7s">
22
+ <img src="https://img.shields.io/badge/discord-150+%20online-5865F2?style=flat&logo=discord&logoColor=white" />
23
+ </a>
24
+ </p>
25
+
26
+ [![Website](https://img.shields.io/badge/-shotgun.sh-5865F2?style=social&logo=safari&logoColor=5865F2)](https://shotgun.sh) [![Follow @ShotgunCLI](https://img.shields.io/badge/Follow%20@ShotgunCLI-1DA1F2?style=social&logo=x&logoColor=000000)](https://x.com/ShotgunCLI) [![YouTube](https://img.shields.io/badge/-@shotgunCLI-FF0000?style=social&logo=youtube&logoColor=red)](https://www.youtube.com/@shotgunCLI)
27
+
28
+ </div>
29
+
30
+ ---
31
+
32
+ <table>
33
+ <tr>
34
+ <td>
35
+
36
+ **Shotgun is a CLI tool** that generates codebase-aware specs for AI coding agents like Cursor, Claude Code, and Lovable. **It reads your entire repository**, researches how new features should fit your architecture, and produces technical specifications that keep AI agents on track—so they build what you actually want instead of derailing halfway through. **Bring your own key (BYOK) or use a Shotgun subscription — $10 for $10 in usage.**
37
+
38
+ It includes research on existing patterns, implementation plans that respect your architecture, and task breakdowns ready to export as **AGENTS.md** files. Each spec is complete enough that your AI agent can work longer and further without losing context or creating conflicts.
39
+
40
+ <p align="center">
41
+ <img src="https://github.com/user-attachments/assets/9c7ca014-1ed3-4935-b310-9147b275fdc7" alt="Shotgun Demo" />
42
+ </p>
43
+
44
+ </td>
45
+ </tr>
46
+ </table>
47
+
48
+ ---
49
+
50
+ # 📦 Installation
51
+
52
+ ### 1. Install uv
53
+
54
+ Shotgun runs via `uvx` or `uv tool install`. First, install `uv` for your platform:
55
+
56
+ <table>
57
+ <tr>
58
+ <th>Platform</th>
59
+ <th>Installation Command</th>
60
+ </tr>
61
+ <tr>
62
+ <td><strong>macOS</strong> (Homebrew)</td>
63
+ <td>
64
+
65
+ ```bash
66
+ brew install uv
67
+ ```
68
+ </td>
69
+ </tr>
70
+ <tr>
71
+ <td><strong>macOS/Linux</strong> (curl)</td>
72
+ <td>
73
+
74
+ ```bash
75
+ curl -LsSf https://astral.sh/uv/install.sh | sh
76
+ ```
77
+ </td>
78
+ </tr>
79
+ <tr>
80
+ <td><strong>Windows</strong> (PowerShell)</td>
81
+ <td>
82
+
83
+ ```powershell
84
+ powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
85
+ ```
86
+ </td>
87
+ </tr>
88
+ </table>
89
+
90
+ _💡 Restart your terminal after installation_
91
+
92
+ ### 2. Run Shotgun
93
+
94
+ <table>
95
+ <tr>
96
+ <th>🚀 Try It Out (Ephemeral)</th>
97
+ <th>⚡ Regular Use (Permanent)</th>
98
+ </tr>
99
+ <tr>
100
+ <td>
101
+
102
+ **Best for:** Testing Shotgun first
103
+
104
+ ```bash
105
+ uvx shotgun-sh@latest
106
+ ```
107
+
108
+ No installation needed, runs immediately
109
+
110
+ </td>
111
+ <td>
112
+
113
+ **Best for:** Daily use
114
+
115
+ ```bash
116
+ uv tool install shotgun-sh
117
+ ```
118
+
119
+ Then run anywhere: ``` shotgun ```
120
+
121
+ </td>
122
+ </tr>
123
+ </table>
124
+
125
+ _**Why uv?** It's 10-100x faster than pip and handles binary wheels reliably—no cmake/build tool errors._
126
+
127
+ ### 3. Get Started
128
+
129
+ When you launch Shotgun, it will guide you through:
130
+
131
+ | Step | What Happens |
132
+ |------|--------------|
133
+ | **1. Codebase Indexing** | Builds a searchable graph of your entire repository |
134
+ | **2. LLM Setup** | Configure OpenAI, Anthropic, or Gemini |
135
+ | **3. First Research** | Start generating codebase-aware specs |
136
+
137
+ _**💡 Pro tip:** Run Shotgun in your IDE's terminal for the best experience._
138
+
139
+ > [!WARNING]
140
+ > **Upgrading from alpha?** Uninstall the old version first:
141
+ > ```bash
142
+ > npm uninstall -g @proofs-io/shotgun @proofs-io/shotgun-server
143
+ > ```
144
+
145
+ ---
146
+
147
+ # 🎥 Demo
148
+
149
+ <p align="center">
150
+ <a href="https://youtu.be/nR6iKbJ8l_I">
151
+ <img src="https://github.com/user-attachments/assets/37eae206-0d6f-4499-b980-2f33a5aed65d" alt="Watch the Shotgun demo" width="720" height="405">
152
+ </a>
153
+ </p>
154
+
155
+ _Click the image above to watch the full demo on YouTube_
156
+
157
+ ---
158
+
159
+ # 🎯 Usage
160
+
161
+ Shotgun's Terminal UI guides you through **5 specialized modes** — from research to export. Each mode has a dedicated AI agent optimized for that phase.
162
+
163
+ ### Launch Shotgun in your project directory:
164
+
165
+ | Already Installed | First Time / Try It Out |
166
+ |-------------------|------------------------|
167
+ | `shotgun` | `uvx shotgun-sh@latest` |
168
+
169
+ _The TUI opens automatically. **Press `Shift+Tab` to switch modes** or `Ctrl+P` for the command palette._
170
+
171
+ ### The 5-Phase Workflow
172
+
173
+ <table>
174
+ <tr>
175
+ <td align="center"><b>🔬 Research</b><br/>Explore & understand</td>
176
+ <td align="center">→</td>
177
+ <td align="center"><b>📝 Specify</b><br/>Define requirements</td>
178
+ <td align="center">→</td>
179
+ <td align="center"><b>📋 Plan</b><br/>Create roadmap</td>
180
+ <td align="center">→</td>
181
+ <td align="center"><b>✅ Tasks</b><br/>Break into steps</td>
182
+ <td align="center">→</td>
183
+ <td align="center"><b>📤 Export</b><br/>Format for AI</td>
184
+ </tr>
185
+ </table>
186
+
187
+ _Each phase builds on the previous one, creating a complete specification ready for AI coding agents._
188
+
189
+ ### Mode Reference
190
+
191
+ | Mode | What It Does | Example Prompt | Output |
192
+ |:-----|:-------------|:---------------|:-------|
193
+ | **🔬&nbsp;Research** | Searches codebase + web, identifies patterns | `How do we handle authentication in this codebase?` | `research.md` |
194
+ | **📝&nbsp;Specify** | Creates technical specs aware of architecture | `Add OAuth2 authentication with refresh token support` | `specification.md` |
195
+ | **📋&nbsp;Plan** | Generates implementation roadmap | `Create an implementation plan for the payment system` | `plan.md` |
196
+ | **✅&nbsp;Tasks** | Breaks plans into actionable items | `Break down the user dashboard plan into tasks` | `tasks.md` |
197
+ | **📤&nbsp;Export** | Formats for AI coding agents | `Export everything to AGENTS.md` | `AGENTS.md` |
198
+
199
+ _**Mode switching:** `Shift+Tab` cycles through modes_
200
+
201
+ _**Visual status:** See current mode and progress at bottom_
202
+
203
+ ### ⌨️ Keyboard Shortcuts
204
+
205
+ | Shortcut | Action |
206
+ |----------|--------|
207
+ | `Shift+Tab` | Switch modes |
208
+ | `Ctrl+P` | Open command palette |
209
+ | `Ctrl+C` | Cancel operation |
210
+ | `Escape` | Exit Q&A / stop agent |
211
+ | `Ctrl+U` | View usage stats |
212
+
213
+ ### Tips for Better Results
214
+
215
+ | Do This | Not This |
216
+ |---------|----------|
217
+ | ✅ `Research how we handle auth` | ❌ Jump straight to building |
218
+ | ✅ `Shotgun please ask me questions first` | ❌ Assume Shotgun knows your needs |
219
+ | ✅ `I'm working on payments, need refunds` | ❌ `Add refunds` (no context) |
220
+ | ✅ Follow Research → Specify → Plan → Tasks | ❌ Skip phases |
221
+
222
+ **Result:** Your AI coding agent gets complete context—what exists, why, and what to build.
223
+
224
+ **Note:** CLI available in [docs/CLI.md](docs/CLI.md), but TUI is recommended.
225
+
226
+ ---
227
+
228
+ # ✨ Features
229
+
230
+ ### What Makes Shotgun Different
231
+
232
+ <table>
233
+ <tr>
234
+ <th width="25%">Feature</th>
235
+ <th width="35%">Shotgun</th>
236
+ <th width="40%">Other Tools</th>
237
+ </tr>
238
+
239
+ <tr>
240
+ <td><strong>Codebase Understanding</strong></td>
241
+ <td>
242
+ Reads your <strong>entire repository</strong> before generating specs. Finds existing patterns, dependencies, and architecture.
243
+ </td>
244
+ <td>
245
+ Require manual context or search each time. No persistent understanding of your codebase structure.
246
+ </td>
247
+ </tr>
248
+
249
+ <tr>
250
+ <td><strong>Research Phase</strong></td>
251
+ <td>
252
+ Starts with research—discovers what you already have AND what exists externally before writing anything.
253
+ </td>
254
+ <td>
255
+ Start at specification. Build first, discover problems later.
256
+ </td>
257
+ </tr>
258
+
259
+ <tr>
260
+ <td><strong>Dedicated Agents Per Mode</strong></td>
261
+ <td>
262
+ Each mode (research, spec, plan, tasks, export) uses a <strong>separate specialized agent</strong> with prompts tailored specifically for that phase. 100% user-controllable via mode switching.
263
+ </td>
264
+ <td>
265
+ Single-agent or one-size-fits-all prompts.
266
+ </td>
267
+ </tr>
268
+
269
+ <tr>
270
+ <td><strong>Structured Workflow</strong></td>
271
+ <td>
272
+ 5-phase journey with checkpoints: Research → Spec → Plan → Tasks → Export
273
+ </td>
274
+ <td>
275
+ No structure. Just "prompt and hope."
276
+ </td>
277
+ </tr>
278
+
279
+ <tr>
280
+ <td><strong>Export Formats</strong></td>
281
+ <td>
282
+ <code>AGENTS.md</code> files ready for Cursor, Claude Code, Windsurf, Lovable—your choice of tool.
283
+ </td>
284
+ <td>
285
+ Locked into specific IDE or coding agent.
286
+ </td>
287
+ </tr>
288
+
289
+ </table>
290
+
291
+ ### Case Study - Real Example:
292
+
293
+ We had to implement payments. Cursor, Claude Code, and Copilot all suggested building a custom payment proxy — 3-4 weeks of development.
294
+
295
+ ⭐ Shotgun's research found [LiteLLM Proxy](https://docs.litellm.ai/docs/simple_proxy) instead—**30 minutes to discover, 5 days to deploy, first customer in 14 hours.**
296
+
297
+ ****80% less dev time. Near-zero technical debt.****
298
+
299
+ ### **[📖 Read the full case study](docs/CASE_STUDY.md)**
300
+
301
+ ---
302
+
303
+ # Use Cases
304
+
305
+ - **🚀 Onboarding** - New developer? Shotgun maps your entire architecture and generates docs that actually match the code
306
+ - **🔧 Refactoring** - Understand all dependencies before touching anything. Keep your refactor from becoming a rewrite
307
+ - **🌱 Greenfield Projects** - Research existing solutions globally before writing line one
308
+ - **➕ Adding Features** - Know exactly where your feature fits. Prevent duplicate functionality
309
+ - **📦 Migration** - Map the old, plan the new, track the delta. Break migration into safe stages
310
+
311
+ **📚 Want to see a detailed example?** Check out our [Case Study](docs/CASE_STUDY.md) showing Shotgun in action on a real-world project.
312
+
313
+ ---
314
+
315
+ # FAQ
316
+
317
+ **Q: Does Shotgun collect any stats or data?**
318
+
319
+ A: We only gather minimal, anonymous events (e.g., install, server start, tool call). We don't collect the content itself—only that an event occurred. We use Sentry for error reporting to improve stability.
320
+
321
+ **Q: Local LLMs?**
322
+
323
+ A: Planned. We'll publish compatibility notes and local provider integrations.
324
+
325
+ **Q: What LLM providers are supported?**
326
+
327
+ A: Currently OpenAI, Anthropic (Claude), and Google Gemini. Local LLM support is on the roadmap.
328
+
329
+ **Q: Can I use Shotgun offline?**
330
+
331
+ A: You need an internet connection for LLM API calls, but your codebase stays local.
332
+
333
+ **Q: How does the code graph work?**
334
+
335
+ A: Shotgun indexes your codebase using tree-sitter for accurate parsing and creates a searchable graph of your code structure, dependencies, and relationships.
336
+
337
+ ---
338
+ # Contributing
339
+
340
+ Shotgun is open-source and we welcome contributions. Whether you're fixing bugs, proposing features, improving docs, or spreading the word—we'd love to have you as part of the community.
341
+
342
+ ### Ways to contribute:
343
+
344
+ - **Bug Report:** Found an issue? [Create a bug report](https://github.com/shotgun-sh/shotgun/issues/new?template=bug_report.md)
345
+ - **Feature Request:** Have an idea to make Shotgun better? [Submit a feature request](https://github.com/shotgun-sh/shotgun/issues/new?template=feature_request.md)
346
+ - **Documentation:** See something missing in the docs? [Request documentation](https://github.com/shotgun-sh/shotgun/issues/new?template=documentation.md)
347
+
348
+ **Not sure where to start?** Join our Discord and we'll help you get started!
349
+
350
+ <div align="left">
351
+ <a href="https://discord.com/invite/5RmY6J2N7s">
352
+ <img src="https://img.shields.io/badge/Join%20our%20community-5865F2?style=for-the-badge&logo=discord&logoColor=white" alt="Join Discord" />
353
+ </a>
354
+ </div>
355
+
356
+ ### Development Resources
357
+
358
+ - **[Contributing Guide](docs/CONTRIBUTING.md)** - Setup, workflow, and guidelines
359
+ - **[Git Hooks](docs/GIT_HOOKS.md)** - Lefthook, trufflehog, and security scanning
360
+ - **[CI/CD](docs/CI_CD.md)** - GitHub Actions and automated testing
361
+ - **[Observability](docs/OBSERVABILITY.md)** - Telemetry, Logfire, and monitoring
362
+ - **[Docker](docs/DOCKER.md)** - Container setup and deployment
363
+
364
+ ---
365
+
366
+ <div align="center">
367
+
368
+ ## 🚀 Ready to Stop AI Agents from Derailing?
369
+
370
+ **Research → Specify → Plan → Tasks → Export** — Five phases that give AI agents the full picture.
371
+
372
+ ```bash
373
+ uvx shotgun-sh@latest
374
+ ```
375
+
376
+
377
+ ### ⭐ Star us on GitHub
378
+
379
+
380
+ <a href="https://github.com/shotgun-sh/shotgun">
381
+ <img src="https://img.shields.io/badge/⭐%20Star%20on%20GitHub-181717?style=for-the-badge&logo=github&logoColor=white" alt="Star Shotgun Repo" />
382
+ </a>
383
+
384
+ ### Star History
385
+
386
+ <a href="https://www.star-history.com/#shotgun-sh/shotgun&type=date&legend=bottom-right">
387
+ <picture>
388
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=shotgun-sh/shotgun&type=date&theme=dark&legend=bottom-right" />
389
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=shotgun-sh/shotgun&type=date&legend=bottom-right" />
390
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=shotgun-sh/shotgun&type=date&legend=bottom-right" />
391
+ </picture>
392
+ </a>
393
+
394
+ </div>
395
+
396
+ ---
397
+
398
+ **License:** MIT | **Python:** 3.11+ | **Homepage:** [shotgun.sh](https://shotgun.sh/)
399
+
400
+ ---
401
+
402
+ ## Uninstall
403
+
404
+ ```bash
405
+ uv tool uninstall shotgun-sh
406
+ ```
@@ -0,0 +1,71 @@
1
+ # Shotgun
2
+
3
+ **Spec-Driven Development for AI Code Generation**
4
+
5
+ Shotgun is a CLI tool that turns work with AI code-gen tools from "I want to build X" into: **research → specs → plans → tasks → implementation**. It reads your entire codebase, coordinates AI agents to do the heavy lifting, and exports clean artifacts in the agents.md format so your code-gen tools actually know what they're building.
6
+
7
+ 🌐 **Learn more at [shotgun.sh](https://shotgun.sh/)**
8
+
9
+ ## Features
10
+
11
+ ### 📊 Complete Codebase Understanding
12
+
13
+ Before writing a single line, Shotgun reads all of it. Your patterns. Your dependencies. Your technical debt. Whether you're adding features, onboarding devs, planning migrations, or refactoring - Shotgun knows what you're working with.
14
+
15
+ ### 🔄 Five Modes. One Journey. Zero Gaps.
16
+
17
+ **Research** (what exists) → **Specify** (what to build) → **Plan** (how to build) → **Tasks** (break it down) → **Export** (to any tool)
18
+
19
+ Not another chatbot. A complete workflow where each mode feeds the next.
20
+
21
+ ### ➡️ Export to agents.md
22
+
23
+ Outputs plug into many code-generation tools including Codex, Cursor, Warp, Devin, opencode, Jules, and more.
24
+
25
+ ### 📝 Specs That Don't Die in Slack
26
+
27
+ Every research finding, every architectural decision, every "here's why we didn't use that library" - captured as markdown in your repo. Version controlled. Searchable.
28
+
29
+ ## Installation
30
+
31
+ ### Using uvx (Recommended)
32
+
33
+ **Quick start (ephemeral):**
34
+ ```bash
35
+ uvx shotgun-sh@latest
36
+ ```
37
+
38
+ **Install permanently:**
39
+ ```bash
40
+ uv tool install shotgun-sh
41
+ ```
42
+
43
+ If you don't have `uv` installed, get it at [astral.sh/uv](https://astral.sh/uv) or `curl -LsSf https://astral.sh/uv/install.sh | sh`
44
+
45
+ ## Quick Start
46
+
47
+ ```bash
48
+ # Research your codebase or a topic
49
+ shotgun research "What is our authentication flow?"
50
+
51
+ # Generate specifications
52
+ shotgun spec "Add OAuth2 authentication"
53
+
54
+ # Create an implementation plan
55
+ shotgun plan "Build user dashboard"
56
+
57
+ # Break down into tasks
58
+ shotgun tasks "Implement payment system"
59
+
60
+ # Export to agents.md format for your code-gen tools
61
+ shotgun export
62
+ ```
63
+
64
+ ## Support
65
+
66
+ Have questions? Join our community on **[Discord](https://discord.gg/5RmY6J2N7s)**
67
+
68
+ ---
69
+
70
+ **License:** MIT
71
+ **Python:** 3.11+
@@ -20,19 +20,19 @@ class CustomBuildHook(BuildHookInterface): # type: ignore[type-arg]
20
20
  for marker in ["dev", "rc", "alpha", "beta", "a", "b"]
21
21
  )
22
22
 
23
- # Only generate constants if SENTRY_DSN is provided (production builds)
24
- sentry_dsn = os.environ.get("SENTRY_DSN", "")
23
+ # Get Sentry configuration from environment (SHOTGUN_ prefix for production builds)
24
+ sentry_dsn = os.environ.get("SHOTGUN_SENTRY_DSN", "")
25
25
 
26
- # Get PostHog configuration from environment
27
- posthog_api_key = os.environ.get("POSTHOG_API_KEY", "")
28
- posthog_project_id = os.environ.get("POSTHOG_PROJECT_ID", "")
26
+ # Get PostHog configuration from environment (SHOTGUN_ prefix)
27
+ posthog_api_key = os.environ.get("SHOTGUN_POSTHOG_API_KEY", "")
28
+ posthog_project_id = os.environ.get("SHOTGUN_POSTHOG_PROJECT_ID", "")
29
29
 
30
- # Get Logfire configuration (only for dev builds)
30
+ # Get Logfire configuration (SHOTGUN_ prefix, only for dev builds)
31
31
  logfire_enabled = ""
32
32
  logfire_token = ""
33
33
  if is_dev_build:
34
- logfire_enabled = os.environ.get("LOGFIRE_ENABLED", "")
35
- logfire_token = os.environ.get("LOGFIRE_TOKEN", "")
34
+ logfire_enabled = os.environ.get("SHOTGUN_LOGFIRE_ENABLED", "")
35
+ logfire_token = os.environ.get("SHOTGUN_LOGFIRE_TOKEN", "")
36
36
 
37
37
  # Generate Python configuration file with build-time constants
38
38
  constants_content = f'''"""Build-time constants generated during packaging.