shotgun-sh 0.2.10.dev2__tar.gz → 0.2.10.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.10.dev2 → shotgun_sh-0.2.10.dev4}/PKG-INFO +20 -3
  2. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/README.md +31 -1
  3. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/README_PYPI.md +19 -2
  4. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/pyproject.toml +4 -1
  5. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/cli/update.py +16 -2
  6. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/utils/update_checker.py +63 -14
  7. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/.gitignore +0 -0
  8. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/LICENSE +0 -0
  9. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/hatch_build.py +0 -0
  10. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/__init__.py +0 -0
  11. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/__init__.py +0 -0
  12. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/agent_manager.py +0 -0
  13. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/common.py +0 -0
  14. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/config/__init__.py +0 -0
  15. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/config/constants.py +0 -0
  16. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/config/manager.py +0 -0
  17. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/config/models.py +0 -0
  18. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/config/provider.py +0 -0
  19. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/conversation_history.py +0 -0
  20. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/conversation_manager.py +0 -0
  21. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/export.py +0 -0
  22. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/history/__init__.py +0 -0
  23. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/history/compaction.py +0 -0
  24. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/history/constants.py +0 -0
  25. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/history/context_extraction.py +0 -0
  26. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/history/history_building.py +0 -0
  27. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/history/history_processors.py +0 -0
  28. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/history/message_utils.py +0 -0
  29. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/history/token_counting/__init__.py +0 -0
  30. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/history/token_counting/anthropic.py +0 -0
  31. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/history/token_counting/base.py +0 -0
  32. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/history/token_counting/openai.py +0 -0
  33. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/history/token_counting/sentencepiece_counter.py +0 -0
  34. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/history/token_counting/tokenizer_cache.py +0 -0
  35. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/history/token_counting/utils.py +0 -0
  36. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/history/token_estimation.py +0 -0
  37. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/llm.py +0 -0
  38. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/messages.py +0 -0
  39. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/models.py +0 -0
  40. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/plan.py +0 -0
  41. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/research.py +0 -0
  42. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/specify.py +0 -0
  43. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/tasks.py +0 -0
  44. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/tools/__init__.py +0 -0
  45. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/tools/codebase/__init__.py +0 -0
  46. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/tools/codebase/codebase_shell.py +0 -0
  47. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/tools/codebase/directory_lister.py +0 -0
  48. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/tools/codebase/file_read.py +0 -0
  49. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/tools/codebase/models.py +0 -0
  50. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/tools/codebase/query_graph.py +0 -0
  51. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/tools/codebase/retrieve_code.py +0 -0
  52. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/tools/file_management.py +0 -0
  53. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/tools/web_search/__init__.py +0 -0
  54. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/tools/web_search/anthropic.py +0 -0
  55. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/tools/web_search/gemini.py +0 -0
  56. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/tools/web_search/openai.py +0 -0
  57. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/tools/web_search/utils.py +0 -0
  58. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/agents/usage_manager.py +0 -0
  59. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/api_endpoints.py +0 -0
  60. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/build_constants.py +0 -0
  61. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/cli/__init__.py +0 -0
  62. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/cli/codebase/__init__.py +0 -0
  63. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/cli/codebase/commands.py +0 -0
  64. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/cli/codebase/models.py +0 -0
  65. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/cli/config.py +0 -0
  66. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/cli/export.py +0 -0
  67. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/cli/feedback.py +0 -0
  68. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/cli/models.py +0 -0
  69. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/cli/plan.py +0 -0
  70. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/cli/research.py +0 -0
  71. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/cli/specify.py +0 -0
  72. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/cli/tasks.py +0 -0
  73. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/cli/utils.py +0 -0
  74. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/codebase/__init__.py +0 -0
  75. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/codebase/core/__init__.py +0 -0
  76. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/codebase/core/change_detector.py +0 -0
  77. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/codebase/core/code_retrieval.py +0 -0
  78. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/codebase/core/cypher_models.py +0 -0
  79. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/codebase/core/ingestor.py +0 -0
  80. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/codebase/core/language_config.py +0 -0
  81. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/codebase/core/manager.py +0 -0
  82. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/codebase/core/nl_query.py +0 -0
  83. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/codebase/core/parser_loader.py +0 -0
  84. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/codebase/models.py +0 -0
  85. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/codebase/service.py +0 -0
  86. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/llm_proxy/__init__.py +0 -0
  87. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/llm_proxy/clients.py +0 -0
  88. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/llm_proxy/constants.py +0 -0
  89. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/logging_config.py +0 -0
  90. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/main.py +0 -0
  91. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/posthog_telemetry.py +0 -0
  92. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/__init__.py +0 -0
  93. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/agents/__init__.py +0 -0
  94. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/agents/export.j2 +0 -0
  95. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/agents/partials/codebase_understanding.j2 +0 -0
  96. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/agents/partials/common_agent_system_prompt.j2 +0 -0
  97. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/agents/partials/content_formatting.j2 +0 -0
  98. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/agents/partials/interactive_mode.j2 +0 -0
  99. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/agents/plan.j2 +0 -0
  100. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/agents/research.j2 +0 -0
  101. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/agents/specify.j2 +0 -0
  102. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/agents/state/codebase/codebase_graphs_available.j2 +0 -0
  103. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/agents/state/system_state.j2 +0 -0
  104. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/agents/tasks.j2 +0 -0
  105. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/codebase/__init__.py +0 -0
  106. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/codebase/cypher_query_patterns.j2 +0 -0
  107. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/codebase/cypher_system.j2 +0 -0
  108. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/codebase/enhanced_query_context.j2 +0 -0
  109. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/codebase/partials/cypher_rules.j2 +0 -0
  110. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/codebase/partials/graph_schema.j2 +0 -0
  111. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/codebase/partials/temporal_context.j2 +0 -0
  112. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/history/__init__.py +0 -0
  113. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/history/incremental_summarization.j2 +0 -0
  114. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/history/summarization.j2 +0 -0
  115. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/loader.py +0 -0
  116. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/prompts/tools/web_search.j2 +0 -0
  117. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/py.typed +0 -0
  118. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/sdk/__init__.py +0 -0
  119. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/sdk/codebase.py +0 -0
  120. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/sdk/exceptions.py +0 -0
  121. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/sdk/models.py +0 -0
  122. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/sdk/services.py +0 -0
  123. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/sentry_telemetry.py +0 -0
  124. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/shotgun_web/__init__.py +0 -0
  125. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/shotgun_web/client.py +0 -0
  126. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/shotgun_web/constants.py +0 -0
  127. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/shotgun_web/models.py +0 -0
  128. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/telemetry.py +0 -0
  129. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/__init__.py +0 -0
  130. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/app.py +0 -0
  131. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/commands/__init__.py +0 -0
  132. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/components/prompt_input.py +0 -0
  133. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/components/spinner.py +0 -0
  134. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/components/splash.py +0 -0
  135. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/components/vertical_tail.py +0 -0
  136. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/filtered_codebase_service.py +0 -0
  137. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/screens/chat.py +0 -0
  138. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/screens/chat.tcss +0 -0
  139. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/screens/chat_screen/__init__.py +0 -0
  140. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/screens/chat_screen/command_providers.py +0 -0
  141. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/screens/chat_screen/hint_message.py +0 -0
  142. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/screens/chat_screen/history.py +0 -0
  143. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/screens/directory_setup.py +0 -0
  144. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/screens/feedback.py +0 -0
  145. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/screens/model_picker.py +0 -0
  146. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/screens/provider_config.py +0 -0
  147. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/screens/shotgun_auth.py +0 -0
  148. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/screens/splash.py +0 -0
  149. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/screens/welcome.py +0 -0
  150. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/styles.tcss +0 -0
  151. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/utils/__init__.py +0 -0
  152. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/tui/utils/mode_progress.py +0 -0
  153. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/utils/__init__.py +0 -0
  154. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/utils/datetime_utils.py +0 -0
  155. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/utils/env_utils.py +0 -0
  156. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/utils/file_system_utils.py +0 -0
  157. {shotgun_sh-0.2.10.dev2 → shotgun_sh-0.2.10.dev4}/src/shotgun/utils/source_detection.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: shotgun-sh
3
- Version: 0.2.10.dev2
3
+ Version: 0.2.10.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
@@ -84,13 +84,30 @@ Every research finding, every architectural decision, every "here's why we didn'
84
84
 
85
85
  ## Installation
86
86
 
87
- ### Using pipx (Recommended)
87
+ ### Using uvx (Recommended)
88
+
89
+ **Quick start (ephemeral):**
90
+ ```bash
91
+ uvx shotgun-sh
92
+ ```
93
+
94
+ **Install permanently:**
95
+ ```bash
96
+ uv tool install shotgun-sh
97
+ ```
98
+
99
+ **Why uvx?** It's 10-100x faster than pipx and handles binary wheels more reliably. 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`
100
+
101
+ ### Using pipx
88
102
 
89
103
  ```bash
90
104
  pipx install shotgun-sh
91
105
  ```
92
106
 
93
- **Why pipx?** It installs Shotgun in an isolated environment, preventing dependency conflicts with your other Python projects.
107
+ If you encounter build errors with kuzu on macOS:
108
+ ```bash
109
+ pipx install --pip-args="--only-binary kuzu" shotgun-sh
110
+ ```
94
111
 
95
112
  ### Using pip
96
113
 
@@ -10,7 +10,35 @@ A Python CLI tool for research, planning, and task management powered by AI agen
10
10
 
11
11
  ## Installation
12
12
 
13
- ### From PyPI (Recommended)
13
+ ### Using uvx (Recommended)
14
+
15
+ **Quick start (ephemeral):**
16
+ ```bash
17
+ uvx shotgun-sh
18
+ ```
19
+
20
+ **Install permanently:**
21
+ ```bash
22
+ uv tool install shotgun-sh
23
+ ```
24
+
25
+ **Why uvx?** It's 10-100x faster than pipx and handles binary wheels more reliably. If you don't have `uv` installed, get it at [astral.sh/uv](https://astral.sh/uv) or:
26
+ ```bash
27
+ curl -LsSf https://astral.sh/uv/install.sh | sh
28
+ ```
29
+
30
+ ### Using pipx
31
+
32
+ ```bash
33
+ pipx install shotgun-sh
34
+ ```
35
+
36
+ If you encounter build errors with kuzu on macOS:
37
+ ```bash
38
+ pipx install --pip-args="--only-binary kuzu" shotgun-sh
39
+ ```
40
+
41
+ ### Using pip
14
42
 
15
43
  ```bash
16
44
  pip install shotgun-sh
@@ -115,6 +143,8 @@ shotgun --no-update-check research "topic"
115
143
  ### Installation Methods
116
144
 
117
145
  The update command automatically detects and uses the appropriate method:
146
+ - **uvx**: Run `uvx shotgun-sh` again or use `uv tool install shotgun-sh` for permanent installation
147
+ - **uv tool**: `uv tool upgrade shotgun-sh`
118
148
  - **pipx**: `pipx upgrade shotgun-sh`
119
149
  - **pip**: `pip install --upgrade shotgun-sh`
120
150
  - **venv**: Updates within the virtual environment
@@ -28,13 +28,30 @@ Every research finding, every architectural decision, every "here's why we didn'
28
28
 
29
29
  ## Installation
30
30
 
31
- ### Using pipx (Recommended)
31
+ ### Using uvx (Recommended)
32
+
33
+ **Quick start (ephemeral):**
34
+ ```bash
35
+ uvx shotgun-sh
36
+ ```
37
+
38
+ **Install permanently:**
39
+ ```bash
40
+ uv tool install shotgun-sh
41
+ ```
42
+
43
+ **Why uvx?** It's 10-100x faster than pipx and handles binary wheels more reliably. 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
+ ### Using pipx
32
46
 
33
47
  ```bash
34
48
  pipx install shotgun-sh
35
49
  ```
36
50
 
37
- **Why pipx?** It installs Shotgun in an isolated environment, preventing dependency conflicts with your other Python projects.
51
+ If you encounter build errors with kuzu on macOS:
52
+ ```bash
53
+ pipx install --pip-args="--only-binary kuzu" shotgun-sh
54
+ ```
38
55
 
39
56
  ### Using pip
40
57
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "shotgun-sh"
3
- version = "0.2.10.dev2"
3
+ version = "0.2.10.dev4"
4
4
  description = "AI-powered research, planning, and task management CLI tool"
5
5
  readme = "README_PYPI.md"
6
6
  license = { text = "MIT" }
@@ -163,3 +163,6 @@ exclude_lines = [
163
163
  precision = 2
164
164
  skip_covered = false
165
165
  show_missing = true
166
+
167
+ [tool.uv.pip]
168
+ only-binary = ["kuzu"]
@@ -45,7 +45,7 @@ def update(
45
45
 
46
46
  This command will:
47
47
  - Check PyPI for the latest version
48
- - Detect your installation method (pipx, pip, or venv)
48
+ - Detect your installation method (uvx, uv-tool, pipx, pip, or venv)
49
49
  - Perform the appropriate upgrade command
50
50
 
51
51
  Examples:
@@ -93,6 +93,8 @@ def update(
93
93
  )
94
94
  console.print(
95
95
  "Use --force to update anyway, or install the stable version with:\n"
96
+ " uv tool install shotgun-sh\n"
97
+ " or\n"
96
98
  " pipx install shotgun-sh\n"
97
99
  " or\n"
98
100
  " pip install shotgun-sh",
@@ -134,7 +136,19 @@ def update(
134
136
  console.print(f"\n[red]✗[/red] {message}", style="bold red")
135
137
 
136
138
  # Provide manual update instructions
137
- if method == "pipx":
139
+ if method == "uvx":
140
+ console.print(
141
+ "\n[yellow]Run uvx again to use the latest version:[/yellow]\n"
142
+ " uvx shotgun-sh\n"
143
+ "\n[yellow]Or install permanently:[/yellow]\n"
144
+ " uv tool install shotgun-sh"
145
+ )
146
+ elif method == "uv-tool":
147
+ console.print(
148
+ "\n[yellow]Try updating manually:[/yellow]\n"
149
+ " uv tool upgrade shotgun-sh"
150
+ )
151
+ elif method == "pipx":
138
152
  console.print(
139
153
  "\n[yellow]Try updating manually:[/yellow]\n"
140
154
  " pipx upgrade shotgun-sh"
@@ -18,8 +18,29 @@ def detect_installation_method() -> str:
18
18
  """Detect how shotgun-sh was installed.
19
19
 
20
20
  Returns:
21
- Installation method: 'pipx', 'pip', 'venv', or 'unknown'.
21
+ Installation method: 'uvx', 'uv-tool', 'pipx', 'pip', 'venv', or 'unknown'.
22
22
  """
23
+ # Check for uvx (ephemeral execution) by looking at executable path
24
+ # uvx runs from a temporary cache directory
25
+ executable = Path(sys.executable)
26
+ if ".cache/uv" in str(executable) or "uv/cache" in str(executable):
27
+ logger.debug("Detected uvx (ephemeral) execution")
28
+ return "uvx"
29
+
30
+ # Check for uv tool installation
31
+ try:
32
+ result = subprocess.run(
33
+ ["uv", "tool", "list"], # noqa: S607, S603
34
+ capture_output=True,
35
+ text=True,
36
+ timeout=5,
37
+ )
38
+ if result.returncode == 0 and "shotgun-sh" in result.stdout:
39
+ logger.debug("Detected uv tool installation")
40
+ return "uv-tool"
41
+ except (subprocess.SubprocessError, FileNotFoundError):
42
+ pass
43
+
23
44
  # Check for pipx installation
24
45
  try:
25
46
  result = subprocess.run(
@@ -59,7 +80,7 @@ def detect_installation_method() -> str:
59
80
 
60
81
 
61
82
  def perform_auto_update(no_update_check: bool = False) -> None:
62
- """Perform automatic update if installed via pipx.
83
+ """Perform automatic update if installed via pipx or uv tool.
63
84
 
64
85
  Args:
65
86
  no_update_check: If True, skip the update.
@@ -68,23 +89,40 @@ def perform_auto_update(no_update_check: bool = False) -> None:
68
89
  return
69
90
 
70
91
  try:
71
- # Only auto-update for pipx installations
72
- if detect_installation_method() != "pipx":
73
- logger.debug("Not a pipx installation, skipping auto-update")
92
+ method = detect_installation_method()
93
+
94
+ # Skip auto-update for ephemeral uvx executions
95
+ if method == "uvx":
96
+ logger.debug("uvx (ephemeral) execution, skipping auto-update")
74
97
  return
75
98
 
76
- # Run pipx upgrade quietly
77
- logger.debug("Running pipx upgrade shotgun-sh --quiet")
78
- result = subprocess.run(
79
- ["pipx", "upgrade", "shotgun-sh", "--quiet"], # noqa: S607, S603
99
+ # Only auto-update for pipx and uv-tool installations
100
+ if method not in ["pipx", "uv-tool"]:
101
+ logger.debug(f"Installation method '{method}', skipping auto-update")
102
+ return
103
+
104
+ # Determine the appropriate upgrade command
105
+ if method == "pipx":
106
+ command = ["pipx", "upgrade", "shotgun-sh", "--quiet"]
107
+ logger.debug("Running pipx upgrade shotgun-sh --quiet")
108
+ elif method == "uv-tool":
109
+ command = ["uv", "tool", "upgrade", "shotgun-sh"]
110
+ logger.debug("Running uv tool upgrade shotgun-sh")
111
+ else:
112
+ return
113
+
114
+ # Run upgrade command
115
+ result = subprocess.run( # noqa: S603, S607
116
+ command,
80
117
  capture_output=True,
81
118
  text=True,
82
119
  timeout=30,
83
120
  )
84
121
 
85
122
  if result.returncode == 0:
86
- # Check if there was an actual update (pipx shows output even with --quiet for actual updates)
87
- if result.stdout and "upgraded" in result.stdout.lower():
123
+ # Check if there was an actual update
124
+ output = result.stdout.lower()
125
+ if "upgraded" in output or "updated" in output:
88
126
  logger.info("Shotgun-sh has been updated to the latest version")
89
127
  else:
90
128
  # Only log errors at debug level to not annoy users
@@ -166,16 +204,18 @@ def compare_versions(current: str, latest: str) -> bool:
166
204
  return False
167
205
 
168
206
 
169
- def get_update_command(method: str) -> list[str]:
207
+ def get_update_command(method: str) -> list[str] | None:
170
208
  """Get the appropriate update command based on installation method.
171
209
 
172
210
  Args:
173
- method: Installation method ('pipx', 'pip', 'venv', or 'unknown').
211
+ method: Installation method ('uvx', 'uv-tool', 'pipx', 'pip', 'venv', or 'unknown').
174
212
 
175
213
  Returns:
176
- Command list to execute for updating.
214
+ Command list to execute for updating, or None for uvx (ephemeral).
177
215
  """
178
216
  commands = {
217
+ "uvx": None, # uvx is ephemeral, no update command
218
+ "uv-tool": ["uv", "tool", "upgrade", "shotgun-sh"],
179
219
  "pipx": ["pipx", "upgrade", "shotgun-sh"],
180
220
  "pip": [sys.executable, "-m", "pip", "install", "--upgrade", "shotgun-sh"],
181
221
  "venv": [sys.executable, "-m", "pip", "install", "--upgrade", "shotgun-sh"],
@@ -210,6 +250,15 @@ def perform_update(force: bool = False) -> tuple[bool, str]:
210
250
  method = detect_installation_method()
211
251
  command = get_update_command(method)
212
252
 
253
+ # Handle uvx (ephemeral) installations
254
+ if method == "uvx" or command is None:
255
+ return (
256
+ False,
257
+ "You're running shotgun-sh via uvx (ephemeral mode). "
258
+ "To get the latest version, simply run 'uvx shotgun-sh' again, "
259
+ "or install permanently with 'uv tool install shotgun-sh'.",
260
+ )
261
+
213
262
  # Perform update
214
263
  try:
215
264
  logger.info(f"Updating shotgun-sh using {method}...")