shotgun-sh 0.2.2.dev1__tar.gz → 0.2.3.dev2__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.2.dev1 → shotgun_sh-0.2.3.dev2}/PKG-INFO +1 -1
  2. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/pyproject.toml +1 -1
  3. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/config/manager.py +20 -0
  4. shotgun_sh-0.2.3.dev2/src/shotgun/api_endpoints.py +11 -0
  5. shotgun_sh-0.2.3.dev2/src/shotgun/llm_proxy/constants.py +15 -0
  6. shotgun_sh-0.2.3.dev2/src/shotgun/shotgun_web/constants.py +21 -0
  7. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/app.py +13 -21
  8. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/screens/provider_config.py +3 -7
  9. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/utils/env_utils.py +6 -5
  10. shotgun_sh-0.2.2.dev1/src/shotgun/llm_proxy/constants.py +0 -8
  11. shotgun_sh-0.2.2.dev1/src/shotgun/shotgun_web/constants.py +0 -17
  12. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/.gitignore +0 -0
  13. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/LICENSE +0 -0
  14. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/README.md +0 -0
  15. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/hatch_build.py +0 -0
  16. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/__init__.py +0 -0
  17. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/__init__.py +0 -0
  18. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/agent_manager.py +0 -0
  19. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/common.py +0 -0
  20. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/config/__init__.py +0 -0
  21. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/config/constants.py +0 -0
  22. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/config/models.py +0 -0
  23. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/config/provider.py +0 -0
  24. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/conversation_history.py +0 -0
  25. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/conversation_manager.py +0 -0
  26. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/export.py +0 -0
  27. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/history/__init__.py +0 -0
  28. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/history/compaction.py +0 -0
  29. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/history/constants.py +0 -0
  30. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/history/context_extraction.py +0 -0
  31. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/history/history_building.py +0 -0
  32. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/history/history_processors.py +0 -0
  33. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/history/message_utils.py +0 -0
  34. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/history/token_counting/__init__.py +0 -0
  35. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/history/token_counting/anthropic.py +0 -0
  36. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/history/token_counting/base.py +0 -0
  37. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/history/token_counting/openai.py +0 -0
  38. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/history/token_counting/sentencepiece_counter.py +0 -0
  39. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/history/token_counting/tokenizer_cache.py +0 -0
  40. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/history/token_counting/utils.py +0 -0
  41. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/history/token_estimation.py +0 -0
  42. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/llm.py +0 -0
  43. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/messages.py +0 -0
  44. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/models.py +0 -0
  45. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/plan.py +0 -0
  46. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/research.py +0 -0
  47. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/specify.py +0 -0
  48. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/tasks.py +0 -0
  49. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/tools/__init__.py +0 -0
  50. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/tools/codebase/__init__.py +0 -0
  51. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/tools/codebase/codebase_shell.py +0 -0
  52. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/tools/codebase/directory_lister.py +0 -0
  53. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/tools/codebase/file_read.py +0 -0
  54. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/tools/codebase/models.py +0 -0
  55. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/tools/codebase/query_graph.py +0 -0
  56. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/tools/codebase/retrieve_code.py +0 -0
  57. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/tools/file_management.py +0 -0
  58. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/tools/user_interaction.py +0 -0
  59. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/tools/web_search/__init__.py +0 -0
  60. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/tools/web_search/anthropic.py +0 -0
  61. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/tools/web_search/gemini.py +0 -0
  62. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/tools/web_search/openai.py +0 -0
  63. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/tools/web_search/utils.py +0 -0
  64. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/agents/usage_manager.py +0 -0
  65. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/build_constants.py +0 -0
  66. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/cli/__init__.py +0 -0
  67. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/cli/codebase/__init__.py +0 -0
  68. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/cli/codebase/commands.py +0 -0
  69. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/cli/codebase/models.py +0 -0
  70. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/cli/config.py +0 -0
  71. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/cli/export.py +0 -0
  72. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/cli/feedback.py +0 -0
  73. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/cli/models.py +0 -0
  74. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/cli/plan.py +0 -0
  75. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/cli/research.py +0 -0
  76. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/cli/specify.py +0 -0
  77. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/cli/tasks.py +0 -0
  78. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/cli/update.py +0 -0
  79. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/cli/utils.py +0 -0
  80. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/codebase/__init__.py +0 -0
  81. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/codebase/core/__init__.py +0 -0
  82. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/codebase/core/change_detector.py +0 -0
  83. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/codebase/core/code_retrieval.py +0 -0
  84. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/codebase/core/cypher_models.py +0 -0
  85. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/codebase/core/ingestor.py +0 -0
  86. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/codebase/core/language_config.py +0 -0
  87. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/codebase/core/manager.py +0 -0
  88. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/codebase/core/nl_query.py +0 -0
  89. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/codebase/core/parser_loader.py +0 -0
  90. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/codebase/models.py +0 -0
  91. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/codebase/service.py +0 -0
  92. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/llm_proxy/__init__.py +0 -0
  93. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/llm_proxy/clients.py +0 -0
  94. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/logging_config.py +0 -0
  95. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/main.py +0 -0
  96. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/posthog_telemetry.py +0 -0
  97. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/__init__.py +0 -0
  98. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/agents/__init__.py +0 -0
  99. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/agents/export.j2 +0 -0
  100. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/agents/partials/codebase_understanding.j2 +0 -0
  101. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/agents/partials/common_agent_system_prompt.j2 +0 -0
  102. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/agents/partials/content_formatting.j2 +0 -0
  103. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/agents/partials/interactive_mode.j2 +0 -0
  104. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/agents/plan.j2 +0 -0
  105. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/agents/research.j2 +0 -0
  106. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/agents/specify.j2 +0 -0
  107. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/agents/state/codebase/codebase_graphs_available.j2 +0 -0
  108. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/agents/state/system_state.j2 +0 -0
  109. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/agents/tasks.j2 +0 -0
  110. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/codebase/__init__.py +0 -0
  111. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/codebase/cypher_query_patterns.j2 +0 -0
  112. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/codebase/cypher_system.j2 +0 -0
  113. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/codebase/enhanced_query_context.j2 +0 -0
  114. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/codebase/partials/cypher_rules.j2 +0 -0
  115. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/codebase/partials/graph_schema.j2 +0 -0
  116. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/codebase/partials/temporal_context.j2 +0 -0
  117. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/history/__init__.py +0 -0
  118. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/history/incremental_summarization.j2 +0 -0
  119. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/history/summarization.j2 +0 -0
  120. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/prompts/loader.py +0 -0
  121. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/py.typed +0 -0
  122. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/sdk/__init__.py +0 -0
  123. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/sdk/codebase.py +0 -0
  124. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/sdk/exceptions.py +0 -0
  125. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/sdk/models.py +0 -0
  126. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/sdk/services.py +0 -0
  127. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/sentry_telemetry.py +0 -0
  128. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/shotgun_web/__init__.py +0 -0
  129. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/shotgun_web/client.py +0 -0
  130. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/shotgun_web/models.py +0 -0
  131. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/telemetry.py +0 -0
  132. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/__init__.py +0 -0
  133. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/commands/__init__.py +0 -0
  134. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/components/prompt_input.py +0 -0
  135. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/components/spinner.py +0 -0
  136. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/components/splash.py +0 -0
  137. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/components/vertical_tail.py +0 -0
  138. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/filtered_codebase_service.py +0 -0
  139. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/screens/chat.py +0 -0
  140. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/screens/chat.tcss +0 -0
  141. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/screens/chat_screen/__init__.py +0 -0
  142. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/screens/chat_screen/command_providers.py +0 -0
  143. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/screens/chat_screen/hint_message.py +0 -0
  144. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/screens/chat_screen/history.py +0 -0
  145. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/screens/directory_setup.py +0 -0
  146. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/screens/feedback.py +0 -0
  147. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/screens/model_picker.py +0 -0
  148. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/screens/shotgun_auth.py +0 -0
  149. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/screens/splash.py +0 -0
  150. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/screens/welcome.py +0 -0
  151. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/styles.tcss +0 -0
  152. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/utils/__init__.py +0 -0
  153. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/tui/utils/mode_progress.py +0 -0
  154. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/utils/__init__.py +0 -0
  155. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/utils/file_system_utils.py +0 -0
  156. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/src/shotgun/utils/source_detection.py +0 -0
  157. {shotgun_sh-0.2.2.dev1 → shotgun_sh-0.2.3.dev2}/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.2.dev1
3
+ Version: 0.2.3.dev2
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.2.dev1"
3
+ version = "0.2.3.dev2"
4
4
  description = "AI-powered research, planning, and task management CLI tool"
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -81,6 +81,26 @@ class ConfigManager:
81
81
  "Migrated config v2->v3: renamed user_id to shotgun_instance_id"
82
82
  )
83
83
 
84
+ # Migration: Set shown_welcome_screen for existing BYOK users
85
+ # If shown_welcome_screen doesn't exist AND any BYOK provider has a key,
86
+ # set it to False so they see the welcome screen once
87
+ if "shown_welcome_screen" not in data:
88
+ has_byok_key = False
89
+ for section in ["openai", "anthropic", "google"]:
90
+ if (
91
+ section in data
92
+ and isinstance(data[section], dict)
93
+ and data[section].get("api_key")
94
+ ):
95
+ has_byok_key = True
96
+ break
97
+
98
+ if has_byok_key:
99
+ data["shown_welcome_screen"] = False
100
+ logger.info(
101
+ "Existing BYOK user detected: set shown_welcome_screen=False to show welcome screen"
102
+ )
103
+
84
104
  # Convert plain text secrets to SecretStr objects
85
105
  self._convert_secrets_to_secretstr(data)
86
106
 
@@ -0,0 +1,11 @@
1
+ """Shotgun backend service API endpoints and URLs."""
2
+
3
+ # Shotgun Web API base URL (for authentication/subscription)
4
+ # Can be overridden with environment variable
5
+ SHOTGUN_WEB_BASE_URL = "https://api-219702594231.us-east4.run.app"
6
+ # Shotgun's LiteLLM proxy base URL (for AI model requests)
7
+ LITELLM_PROXY_BASE_URL = "https://litellm-219702594231.us-east4.run.app"
8
+
9
+ # Provider-specific LiteLLM proxy endpoints
10
+ LITELLM_PROXY_ANTHROPIC_BASE = f"{LITELLM_PROXY_BASE_URL}/anthropic"
11
+ LITELLM_PROXY_OPENAI_BASE = LITELLM_PROXY_BASE_URL
@@ -0,0 +1,15 @@
1
+ """LiteLLM proxy constants and configuration."""
2
+
3
+ # Import from centralized API endpoints module
4
+ from shotgun.api_endpoints import (
5
+ LITELLM_PROXY_ANTHROPIC_BASE,
6
+ LITELLM_PROXY_BASE_URL,
7
+ LITELLM_PROXY_OPENAI_BASE,
8
+ )
9
+
10
+ # Re-export for backward compatibility
11
+ __all__ = [
12
+ "LITELLM_PROXY_BASE_URL",
13
+ "LITELLM_PROXY_ANTHROPIC_BASE",
14
+ "LITELLM_PROXY_OPENAI_BASE",
15
+ ]
@@ -0,0 +1,21 @@
1
+ """Constants for Shotgun Web API."""
2
+
3
+ # Import from centralized API endpoints module
4
+ from shotgun.api_endpoints import SHOTGUN_WEB_BASE_URL
5
+
6
+ # API endpoints
7
+ UNIFICATION_TOKEN_CREATE_PATH = "/api/unification/token/create" # noqa: S105
8
+ UNIFICATION_TOKEN_STATUS_PATH = "/api/unification/token/{token}/status" # noqa: S105
9
+
10
+ # Polling configuration
11
+ DEFAULT_POLL_INTERVAL_SECONDS = 3
12
+ DEFAULT_TOKEN_TIMEOUT_SECONDS = 1800 # 30 minutes
13
+
14
+ # Re-export for backward compatibility
15
+ __all__ = [
16
+ "SHOTGUN_WEB_BASE_URL",
17
+ "UNIFICATION_TOKEN_CREATE_PATH",
18
+ "UNIFICATION_TOKEN_STATUS_PATH",
19
+ "DEFAULT_POLL_INTERVAL_SECONDS",
20
+ "DEFAULT_TOKEN_TIMEOUT_SECONDS",
21
+ ]
@@ -8,7 +8,6 @@ from textual.screen import Screen
8
8
  from shotgun.agents.config import ConfigManager, get_config_manager
9
9
  from shotgun.logging_config import get_logger
10
10
  from shotgun.tui.screens.splash import SplashScreen
11
- from shotgun.utils.env_utils import is_shotgun_account_enabled
12
11
  from shotgun.utils.file_system_utils import get_shotgun_base_path
13
12
  from shotgun.utils.update_checker import perform_auto_update_async
14
13
 
@@ -61,28 +60,21 @@ class ShotgunApp(App[None]):
61
60
 
62
61
  def refresh_startup_screen(self) -> None:
63
62
  """Push the appropriate screen based on configured providers."""
64
- if not self.config_manager.has_any_provider_key():
65
- # If Shotgun Account is enabled, show welcome screen with choice
66
- # Otherwise, go directly to provider config (BYOK only)
67
- if is_shotgun_account_enabled():
68
- if isinstance(self.screen, WelcomeScreen):
69
- return
70
-
71
- self.push_screen(
72
- WelcomeScreen(),
73
- callback=lambda _arg: self.refresh_startup_screen(),
74
- )
75
- return
76
- else:
77
- if isinstance(self.screen, ProviderConfigScreen):
78
- return
79
-
80
- self.push_screen(
81
- ProviderConfigScreen(),
82
- callback=lambda _arg: self.refresh_startup_screen(),
83
- )
63
+ # Show welcome screen if no providers are configured OR if user hasn't seen it yet
64
+ config = self.config_manager.load()
65
+ if (
66
+ not self.config_manager.has_any_provider_key()
67
+ or not config.shown_welcome_screen
68
+ ):
69
+ if isinstance(self.screen, WelcomeScreen):
84
70
  return
85
71
 
72
+ self.push_screen(
73
+ WelcomeScreen(),
74
+ callback=lambda _arg: self.refresh_startup_screen(),
75
+ )
76
+ return
77
+
86
78
  if not self.check_local_shotgun_directory_exists():
87
79
  if isinstance(self.screen, DirectorySetupScreen):
88
80
  return
@@ -12,23 +12,19 @@ from textual.screen import Screen
12
12
  from textual.widgets import Button, Input, Label, ListItem, ListView, Markdown, Static
13
13
 
14
14
  from shotgun.agents.config import ConfigManager, ProviderType
15
- from shotgun.utils.env_utils import is_shotgun_account_enabled
16
15
 
17
16
  if TYPE_CHECKING:
18
17
  from ..app import ShotgunApp
19
18
 
20
19
 
21
20
  def get_configurable_providers() -> list[str]:
22
- """Get list of configurable providers based on feature flags.
21
+ """Get list of configurable providers.
23
22
 
24
23
  Returns:
25
24
  List of provider identifiers that can be configured.
26
- Includes shotgun only if SHOTGUN_ACCOUNT_ENABLED is set.
25
+ Includes all providers: openai, anthropic, google, and shotgun.
27
26
  """
28
- providers = ["openai", "anthropic", "google"]
29
- if is_shotgun_account_enabled():
30
- providers.append("shotgun")
31
- return providers
27
+ return ["openai", "anthropic", "google", "shotgun"]
32
28
 
33
29
 
34
30
  class ProviderConfigScreen(Screen[None]):
@@ -1,16 +1,17 @@
1
1
  """Utilities for working with environment variables."""
2
2
 
3
- import os
4
-
5
3
 
6
4
  def is_shotgun_account_enabled() -> bool:
7
5
  """Check if Shotgun Account feature is enabled via environment variable.
8
6
 
9
7
  Returns:
10
- True if SHOTGUN_ACCOUNT_ENABLED is set to a truthy value,
11
- False otherwise
8
+ True always (Shotgun Account is now live for all users)
9
+
10
+ Note:
11
+ This function is deprecated and always returns True.
12
+ Shotgun Account is now available to all users by default.
12
13
  """
13
- return is_truthy(os.environ.get("SHOTGUN_ACCOUNT_ENABLED"))
14
+ return True
14
15
 
15
16
 
16
17
  def is_truthy(value: str | None) -> bool:
@@ -1,8 +0,0 @@
1
- """LiteLLM proxy constants and configuration."""
2
-
3
- # Shotgun's LiteLLM proxy base URL
4
- LITELLM_PROXY_BASE_URL = "https://litellm-701197220809.us-east1.run.app"
5
-
6
- # Provider-specific endpoints
7
- LITELLM_PROXY_ANTHROPIC_BASE = f"{LITELLM_PROXY_BASE_URL}/anthropic"
8
- LITELLM_PROXY_OPENAI_BASE = LITELLM_PROXY_BASE_URL
@@ -1,17 +0,0 @@
1
- """Constants for Shotgun Web API."""
2
-
3
- import os
4
-
5
- # Shotgun Web API base URL
6
- # Default to production URL, can be overridden with environment variable
7
- SHOTGUN_WEB_BASE_URL = os.environ.get(
8
- "SHOTGUN_WEB_BASE_URL", "https://api-701197220809.us-east1.run.app"
9
- )
10
-
11
- # API endpoints
12
- UNIFICATION_TOKEN_CREATE_PATH = "/api/unification/token/create" # noqa: S105
13
- UNIFICATION_TOKEN_STATUS_PATH = "/api/unification/token/{token}/status" # noqa: S105
14
-
15
- # Polling configuration
16
- DEFAULT_POLL_INTERVAL_SECONDS = 3
17
- DEFAULT_TOKEN_TIMEOUT_SECONDS = 1800 # 30 minutes
File without changes