shotgun-sh 0.2.10.dev6__tar.gz → 0.2.10.dev8__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.
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/PKG-INFO +1 -1
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/pyproject.toml +2 -1
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/app.py +28 -3
- shotgun_sh-0.2.10.dev8/src/shotgun/tui/screens/pipx_migration.py +153 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/utils/update_checker.py +6 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/.gitignore +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/LICENSE +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/README.md +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/README_PYPI.md +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/hatch_build.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/agent_manager.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/common.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/config/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/config/constants.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/config/manager.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/config/models.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/config/provider.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/conversation_history.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/conversation_manager.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/export.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/compaction.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/constants.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/context_extraction.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/history_building.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/history_processors.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/message_utils.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/token_counting/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/token_counting/anthropic.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/token_counting/base.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/token_counting/openai.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/token_counting/sentencepiece_counter.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/token_counting/tokenizer_cache.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/token_counting/utils.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/token_estimation.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/llm.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/messages.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/models.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/plan.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/research.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/specify.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tasks.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/codebase/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/codebase/codebase_shell.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/codebase/directory_lister.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/codebase/file_read.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/codebase/models.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/codebase/query_graph.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/codebase/retrieve_code.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/file_management.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/web_search/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/web_search/anthropic.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/web_search/gemini.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/web_search/openai.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/web_search/utils.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/usage_manager.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/api_endpoints.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/build_constants.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/cli/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/cli/codebase/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/cli/codebase/commands.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/cli/codebase/models.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/cli/config.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/cli/export.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/cli/feedback.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/cli/models.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/cli/plan.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/cli/research.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/cli/specify.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/cli/tasks.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/cli/update.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/cli/utils.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/codebase/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/codebase/core/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/codebase/core/change_detector.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/codebase/core/code_retrieval.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/codebase/core/cypher_models.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/codebase/core/ingestor.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/codebase/core/language_config.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/codebase/core/manager.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/codebase/core/nl_query.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/codebase/core/parser_loader.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/codebase/models.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/codebase/service.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/llm_proxy/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/llm_proxy/clients.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/llm_proxy/constants.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/logging_config.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/main.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/posthog_telemetry.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/agents/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/agents/export.j2 +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/agents/partials/codebase_understanding.j2 +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/agents/partials/common_agent_system_prompt.j2 +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/agents/partials/content_formatting.j2 +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/agents/partials/interactive_mode.j2 +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/agents/plan.j2 +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/agents/research.j2 +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/agents/specify.j2 +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/agents/state/codebase/codebase_graphs_available.j2 +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/agents/state/system_state.j2 +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/agents/tasks.j2 +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/codebase/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/codebase/cypher_query_patterns.j2 +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/codebase/cypher_system.j2 +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/codebase/enhanced_query_context.j2 +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/codebase/partials/cypher_rules.j2 +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/codebase/partials/graph_schema.j2 +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/codebase/partials/temporal_context.j2 +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/history/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/history/incremental_summarization.j2 +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/history/summarization.j2 +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/loader.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/tools/web_search.j2 +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/py.typed +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/sdk/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/sdk/codebase.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/sdk/exceptions.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/sdk/models.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/sdk/services.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/sentry_telemetry.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/shotgun_web/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/shotgun_web/client.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/shotgun_web/constants.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/shotgun_web/models.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/telemetry.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/commands/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/components/prompt_input.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/components/spinner.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/components/splash.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/components/vertical_tail.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/filtered_codebase_service.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/screens/chat.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/screens/chat.tcss +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/screens/chat_screen/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/screens/chat_screen/command_providers.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/screens/chat_screen/hint_message.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/screens/chat_screen/history.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/screens/directory_setup.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/screens/feedback.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/screens/model_picker.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/screens/provider_config.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/screens/shotgun_auth.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/screens/splash.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/screens/welcome.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/styles.tcss +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/utils/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/utils/mode_progress.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/utils/__init__.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/utils/datetime_utils.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/utils/env_utils.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/utils/file_system_utils.py +0 -0
- {shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/utils/source_detection.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "shotgun-sh"
|
|
3
|
-
version = "0.2.10.
|
|
3
|
+
version = "0.2.10.dev8"
|
|
4
4
|
description = "AI-powered research, planning, and task management CLI tool"
|
|
5
5
|
readme = "README_PYPI.md"
|
|
6
6
|
license = { text = "MIT" }
|
|
@@ -66,6 +66,7 @@ dev = [
|
|
|
66
66
|
|
|
67
67
|
[project.scripts]
|
|
68
68
|
shotgun = "shotgun.main:app"
|
|
69
|
+
shotgun-sh = "shotgun.main:app"
|
|
69
70
|
|
|
70
71
|
[build-system]
|
|
71
72
|
requires = ["hatchling"]
|
|
@@ -9,12 +9,16 @@ 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
11
|
from shotgun.utils.file_system_utils import get_shotgun_base_path
|
|
12
|
-
from shotgun.utils.update_checker import
|
|
12
|
+
from shotgun.utils.update_checker import (
|
|
13
|
+
detect_installation_method,
|
|
14
|
+
perform_auto_update_async,
|
|
15
|
+
)
|
|
13
16
|
|
|
14
17
|
from .screens.chat import ChatScreen
|
|
15
18
|
from .screens.directory_setup import DirectorySetupScreen
|
|
16
19
|
from .screens.feedback import FeedbackScreen
|
|
17
20
|
from .screens.model_picker import ModelPickerScreen
|
|
21
|
+
from .screens.pipx_migration import PipxMigrationScreen
|
|
18
22
|
from .screens.provider_config import ProviderConfigScreen
|
|
19
23
|
from .screens.welcome import WelcomeScreen
|
|
20
24
|
|
|
@@ -56,14 +60,35 @@ class ShotgunApp(App[None]):
|
|
|
56
60
|
# Track TUI startup
|
|
57
61
|
from shotgun.posthog_telemetry import track_event
|
|
58
62
|
|
|
59
|
-
track_event(
|
|
63
|
+
track_event(
|
|
64
|
+
"tui_started",
|
|
65
|
+
{
|
|
66
|
+
"installation_method": detect_installation_method(),
|
|
67
|
+
},
|
|
68
|
+
)
|
|
60
69
|
|
|
61
70
|
self.push_screen(
|
|
62
71
|
SplashScreen(), callback=lambda _arg: self.refresh_startup_screen()
|
|
63
72
|
)
|
|
64
73
|
|
|
65
|
-
def refresh_startup_screen(self) -> None:
|
|
74
|
+
def refresh_startup_screen(self, skip_pipx_check: bool = False) -> None:
|
|
66
75
|
"""Push the appropriate screen based on configured providers."""
|
|
76
|
+
# Check for pipx installation and show migration modal first
|
|
77
|
+
if not skip_pipx_check:
|
|
78
|
+
installation_method = detect_installation_method()
|
|
79
|
+
if installation_method == "pipx":
|
|
80
|
+
if isinstance(self.screen, PipxMigrationScreen):
|
|
81
|
+
return
|
|
82
|
+
|
|
83
|
+
# Show pipx migration modal as a blocking modal screen
|
|
84
|
+
self.push_screen(
|
|
85
|
+
PipxMigrationScreen(),
|
|
86
|
+
callback=lambda _arg: self.refresh_startup_screen(
|
|
87
|
+
skip_pipx_check=True
|
|
88
|
+
),
|
|
89
|
+
)
|
|
90
|
+
return
|
|
91
|
+
|
|
67
92
|
# Show welcome screen if no providers are configured OR if user hasn't seen it yet
|
|
68
93
|
config = self.config_manager.load()
|
|
69
94
|
if (
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"""Migration notice screen for pipx users."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
from textual import on
|
|
8
|
+
from textual.app import ComposeResult
|
|
9
|
+
from textual.containers import Container, Horizontal, VerticalScroll
|
|
10
|
+
from textual.screen import ModalScreen
|
|
11
|
+
from textual.widgets import Button, Markdown
|
|
12
|
+
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
pass
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class PipxMigrationScreen(ModalScreen[None]):
|
|
18
|
+
"""Modal screen warning pipx users about migration to uvx."""
|
|
19
|
+
|
|
20
|
+
CSS = """
|
|
21
|
+
PipxMigrationScreen {
|
|
22
|
+
align: center middle;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
#migration-container {
|
|
26
|
+
width: 90;
|
|
27
|
+
height: auto;
|
|
28
|
+
max-height: 90%;
|
|
29
|
+
border: thick $error;
|
|
30
|
+
background: $surface;
|
|
31
|
+
padding: 2;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
#migration-content {
|
|
35
|
+
height: 1fr;
|
|
36
|
+
padding: 1 0;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
#buttons-container {
|
|
40
|
+
height: auto;
|
|
41
|
+
padding: 2 0 1 0;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
#action-buttons {
|
|
45
|
+
width: 100%;
|
|
46
|
+
height: auto;
|
|
47
|
+
align: center middle;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.action-button {
|
|
51
|
+
margin: 0 1;
|
|
52
|
+
min-width: 20;
|
|
53
|
+
}
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
BINDINGS = [
|
|
57
|
+
("escape", "dismiss", "Continue Anyway"),
|
|
58
|
+
("ctrl+c", "app.quit", "Quit"),
|
|
59
|
+
]
|
|
60
|
+
|
|
61
|
+
def compose(self) -> ComposeResult:
|
|
62
|
+
"""Compose the migration notice modal."""
|
|
63
|
+
with Container(id="migration-container"):
|
|
64
|
+
with VerticalScroll(id="migration-content"):
|
|
65
|
+
yield Markdown(
|
|
66
|
+
"""
|
|
67
|
+
## We've Switched to uvx
|
|
68
|
+
|
|
69
|
+
We've switched from `pipx` to `uvx` as the primary installation method due to critical build issues with our `kuzu` dependency.
|
|
70
|
+
|
|
71
|
+
### The Problem
|
|
72
|
+
Users with pipx encounter cmake build errors during installation because pip falls back to building from source instead of using pre-built binary wheels.
|
|
73
|
+
|
|
74
|
+
### The Solution: uvx
|
|
75
|
+
- ✅ **No build tools required** - Binary wheels enforced
|
|
76
|
+
- ✅ **10-100x faster** - Much faster than pipx
|
|
77
|
+
- ✅ **Better reliability** - No cmake/build errors
|
|
78
|
+
|
|
79
|
+
### How to Migrate
|
|
80
|
+
|
|
81
|
+
**1. Uninstall shotgun-sh from pipx:**
|
|
82
|
+
```bash
|
|
83
|
+
pipx uninstall shotgun-sh
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**2. Install uv:**
|
|
87
|
+
```bash
|
|
88
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
89
|
+
```
|
|
90
|
+
Or with Homebrew: `brew install uv`
|
|
91
|
+
|
|
92
|
+
**3. Run shotgun-sh with uvx:**
|
|
93
|
+
```bash
|
|
94
|
+
uvx shotgun-sh
|
|
95
|
+
```
|
|
96
|
+
Or install permanently: `uv tool install shotgun-sh`
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
### Need Help?
|
|
101
|
+
|
|
102
|
+
**Discord:** https://discord.gg/5RmY6J2N7s
|
|
103
|
+
|
|
104
|
+
**Full Migration Guide:** https://github.com/shotgun-sh/shotgun-sdk/blob/main/PIPX_MIGRATION.md
|
|
105
|
+
"""
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
with Container(id="buttons-container"):
|
|
109
|
+
with Horizontal(id="action-buttons"):
|
|
110
|
+
yield Button(
|
|
111
|
+
"Copy Instructions to Clipboard",
|
|
112
|
+
variant="default",
|
|
113
|
+
id="copy-instructions",
|
|
114
|
+
classes="action-button",
|
|
115
|
+
)
|
|
116
|
+
yield Button(
|
|
117
|
+
"Continue Anyway",
|
|
118
|
+
variant="primary",
|
|
119
|
+
id="continue",
|
|
120
|
+
classes="action-button",
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
def on_mount(self) -> None:
|
|
124
|
+
"""Focus the continue button and ensure scroll starts at top."""
|
|
125
|
+
self.query_one("#continue", Button).focus()
|
|
126
|
+
self.query_one("#migration-content", VerticalScroll).scroll_home(animate=False)
|
|
127
|
+
|
|
128
|
+
@on(Button.Pressed, "#copy-instructions")
|
|
129
|
+
def _copy_instructions(self) -> None:
|
|
130
|
+
"""Copy all migration instructions to clipboard."""
|
|
131
|
+
instructions = """# Step 1: Uninstall from pipx
|
|
132
|
+
pipx uninstall shotgun-sh
|
|
133
|
+
|
|
134
|
+
# Step 2: Install uv
|
|
135
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
136
|
+
|
|
137
|
+
# Step 3: Run shotgun with uvx
|
|
138
|
+
uvx shotgun-sh"""
|
|
139
|
+
try:
|
|
140
|
+
import pyperclip # type: ignore[import-untyped] # noqa: PGH003
|
|
141
|
+
|
|
142
|
+
pyperclip.copy(instructions)
|
|
143
|
+
self.notify("Copied migration instructions to clipboard!")
|
|
144
|
+
except ImportError:
|
|
145
|
+
self.notify(
|
|
146
|
+
"Clipboard not available. See instructions above.",
|
|
147
|
+
severity="warning",
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
@on(Button.Pressed, "#continue")
|
|
151
|
+
def _continue(self) -> None:
|
|
152
|
+
"""Dismiss the modal and continue."""
|
|
153
|
+
self.dismiss()
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""Simple auto-update functionality for shotgun-sh CLI."""
|
|
2
2
|
|
|
3
|
+
import os
|
|
3
4
|
import subprocess
|
|
4
5
|
import sys
|
|
5
6
|
import threading
|
|
@@ -20,6 +21,11 @@ def detect_installation_method() -> str:
|
|
|
20
21
|
Returns:
|
|
21
22
|
Installation method: 'uvx', 'uv-tool', 'pipx', 'pip', 'venv', or 'unknown'.
|
|
22
23
|
"""
|
|
24
|
+
# Check for simulation environment variable (for testing)
|
|
25
|
+
if os.getenv("PIPX_SIMULATE", "").lower() in ("true", "1"):
|
|
26
|
+
logger.debug("PIPX_SIMULATE enabled, simulating pipx installation")
|
|
27
|
+
return "pipx"
|
|
28
|
+
|
|
23
29
|
# Check for uvx (ephemeral execution) by looking at executable path
|
|
24
30
|
# uvx runs from a temporary cache directory
|
|
25
31
|
executable = Path(sys.executable)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/conversation_history.py
RENAMED
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/conversation_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/context_extraction.py
RENAMED
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/history_building.py
RENAMED
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/history_processors.py
RENAMED
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/message_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/token_counting/base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/token_counting/utils.py
RENAMED
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/history/token_estimation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/codebase/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/codebase/file_read.py
RENAMED
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/codebase/models.py
RENAMED
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/codebase/query_graph.py
RENAMED
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/codebase/retrieve_code.py
RENAMED
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/file_management.py
RENAMED
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/web_search/__init__.py
RENAMED
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/web_search/anthropic.py
RENAMED
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/web_search/gemini.py
RENAMED
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/web_search/openai.py
RENAMED
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/agents/tools/web_search/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/codebase/core/change_detector.py
RENAMED
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/codebase/core/code_retrieval.py
RENAMED
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/codebase/core/cypher_models.py
RENAMED
|
File without changes
|
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/codebase/core/language_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/codebase/core/parser_loader.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/agents/state/system_state.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/codebase/cypher_system.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/prompts/history/summarization.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/components/prompt_input.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/components/vertical_tail.py
RENAMED
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/filtered_codebase_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/screens/chat_screen/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/screens/chat_screen/history.py
RENAMED
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/screens/directory_setup.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shotgun_sh-0.2.10.dev6 → shotgun_sh-0.2.10.dev8}/src/shotgun/tui/screens/provider_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|