shotgun-sh 0.2.3.dev2__py3-none-any.whl → 0.2.11.dev5__py3-none-any.whl
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/agents/agent_manager.py +664 -75
- shotgun/agents/common.py +76 -70
- shotgun/agents/config/constants.py +0 -6
- shotgun/agents/config/manager.py +78 -36
- shotgun/agents/config/models.py +41 -1
- shotgun/agents/config/provider.py +70 -15
- shotgun/agents/context_analyzer/__init__.py +28 -0
- shotgun/agents/context_analyzer/analyzer.py +471 -0
- shotgun/agents/context_analyzer/constants.py +9 -0
- shotgun/agents/context_analyzer/formatter.py +115 -0
- shotgun/agents/context_analyzer/models.py +212 -0
- shotgun/agents/conversation_history.py +125 -2
- shotgun/agents/conversation_manager.py +57 -19
- shotgun/agents/export.py +6 -7
- shotgun/agents/history/compaction.py +9 -4
- shotgun/agents/history/context_extraction.py +93 -6
- shotgun/agents/history/history_processors.py +14 -2
- shotgun/agents/history/token_counting/anthropic.py +49 -11
- shotgun/agents/history/token_counting/base.py +14 -3
- shotgun/agents/history/token_counting/openai.py +8 -0
- shotgun/agents/history/token_counting/sentencepiece_counter.py +8 -0
- shotgun/agents/history/token_counting/tokenizer_cache.py +3 -1
- shotgun/agents/history/token_counting/utils.py +0 -3
- shotgun/agents/models.py +50 -2
- shotgun/agents/plan.py +6 -7
- shotgun/agents/research.py +7 -8
- shotgun/agents/specify.py +6 -7
- shotgun/agents/tasks.py +6 -7
- shotgun/agents/tools/__init__.py +0 -2
- shotgun/agents/tools/codebase/codebase_shell.py +6 -0
- shotgun/agents/tools/codebase/directory_lister.py +6 -0
- shotgun/agents/tools/codebase/file_read.py +11 -2
- shotgun/agents/tools/codebase/query_graph.py +6 -0
- shotgun/agents/tools/codebase/retrieve_code.py +6 -0
- shotgun/agents/tools/file_management.py +82 -16
- shotgun/agents/tools/registry.py +217 -0
- shotgun/agents/tools/web_search/__init__.py +30 -18
- shotgun/agents/tools/web_search/anthropic.py +26 -5
- shotgun/agents/tools/web_search/gemini.py +23 -11
- shotgun/agents/tools/web_search/openai.py +22 -13
- shotgun/agents/tools/web_search/utils.py +2 -2
- shotgun/agents/usage_manager.py +16 -11
- shotgun/api_endpoints.py +7 -3
- shotgun/build_constants.py +1 -1
- shotgun/cli/clear.py +53 -0
- shotgun/cli/compact.py +186 -0
- shotgun/cli/config.py +8 -5
- shotgun/cli/context.py +111 -0
- shotgun/cli/export.py +1 -1
- shotgun/cli/feedback.py +4 -2
- shotgun/cli/models.py +1 -0
- shotgun/cli/plan.py +1 -1
- shotgun/cli/research.py +1 -1
- shotgun/cli/specify.py +1 -1
- shotgun/cli/tasks.py +1 -1
- shotgun/cli/update.py +16 -2
- shotgun/codebase/core/change_detector.py +5 -3
- shotgun/codebase/core/code_retrieval.py +4 -2
- shotgun/codebase/core/ingestor.py +10 -8
- shotgun/codebase/core/manager.py +13 -4
- shotgun/codebase/core/nl_query.py +1 -1
- shotgun/llm_proxy/__init__.py +5 -2
- shotgun/llm_proxy/clients.py +12 -7
- shotgun/logging_config.py +18 -27
- shotgun/main.py +73 -11
- shotgun/posthog_telemetry.py +23 -7
- shotgun/prompts/agents/export.j2 +18 -1
- shotgun/prompts/agents/partials/common_agent_system_prompt.j2 +5 -1
- shotgun/prompts/agents/partials/interactive_mode.j2 +24 -7
- shotgun/prompts/agents/plan.j2 +1 -1
- shotgun/prompts/agents/research.j2 +1 -1
- shotgun/prompts/agents/specify.j2 +270 -3
- shotgun/prompts/agents/state/system_state.j2 +4 -0
- shotgun/prompts/agents/tasks.j2 +1 -1
- shotgun/prompts/loader.py +2 -2
- shotgun/prompts/tools/web_search.j2 +14 -0
- shotgun/sentry_telemetry.py +7 -16
- shotgun/settings.py +238 -0
- shotgun/telemetry.py +18 -33
- shotgun/tui/app.py +243 -43
- shotgun/tui/commands/__init__.py +1 -1
- shotgun/tui/components/context_indicator.py +179 -0
- shotgun/tui/components/mode_indicator.py +70 -0
- shotgun/tui/components/status_bar.py +48 -0
- shotgun/tui/containers.py +91 -0
- shotgun/tui/dependencies.py +39 -0
- shotgun/tui/protocols.py +45 -0
- shotgun/tui/screens/chat/__init__.py +5 -0
- shotgun/tui/screens/chat/chat.tcss +54 -0
- shotgun/tui/screens/chat/chat_screen.py +1202 -0
- shotgun/tui/screens/chat/codebase_index_prompt_screen.py +64 -0
- shotgun/tui/screens/chat/codebase_index_selection.py +12 -0
- shotgun/tui/screens/chat/help_text.py +40 -0
- shotgun/tui/screens/chat/prompt_history.py +48 -0
- shotgun/tui/screens/chat.tcss +11 -0
- shotgun/tui/screens/chat_screen/command_providers.py +78 -2
- shotgun/tui/screens/chat_screen/history/__init__.py +22 -0
- shotgun/tui/screens/chat_screen/history/agent_response.py +66 -0
- shotgun/tui/screens/chat_screen/history/chat_history.py +116 -0
- shotgun/tui/screens/chat_screen/history/formatters.py +115 -0
- shotgun/tui/screens/chat_screen/history/partial_response.py +43 -0
- shotgun/tui/screens/chat_screen/history/user_question.py +42 -0
- shotgun/tui/screens/confirmation_dialog.py +151 -0
- shotgun/tui/screens/feedback.py +4 -4
- shotgun/tui/screens/github_issue.py +102 -0
- shotgun/tui/screens/model_picker.py +49 -24
- shotgun/tui/screens/onboarding.py +431 -0
- shotgun/tui/screens/pipx_migration.py +153 -0
- shotgun/tui/screens/provider_config.py +50 -27
- shotgun/tui/screens/shotgun_auth.py +2 -2
- shotgun/tui/screens/welcome.py +32 -10
- shotgun/tui/services/__init__.py +5 -0
- shotgun/tui/services/conversation_service.py +184 -0
- shotgun/tui/state/__init__.py +7 -0
- shotgun/tui/state/processing_state.py +185 -0
- shotgun/tui/utils/mode_progress.py +14 -7
- shotgun/tui/widgets/__init__.py +5 -0
- shotgun/tui/widgets/widget_coordinator.py +262 -0
- shotgun/utils/datetime_utils.py +77 -0
- shotgun/utils/file_system_utils.py +22 -2
- shotgun/utils/marketing.py +110 -0
- shotgun/utils/update_checker.py +69 -14
- shotgun_sh-0.2.11.dev5.dist-info/METADATA +130 -0
- shotgun_sh-0.2.11.dev5.dist-info/RECORD +193 -0
- {shotgun_sh-0.2.3.dev2.dist-info → shotgun_sh-0.2.11.dev5.dist-info}/entry_points.txt +1 -0
- {shotgun_sh-0.2.3.dev2.dist-info → shotgun_sh-0.2.11.dev5.dist-info}/licenses/LICENSE +1 -1
- shotgun/agents/tools/user_interaction.py +0 -37
- shotgun/tui/screens/chat.py +0 -804
- shotgun/tui/screens/chat_screen/history.py +0 -352
- shotgun_sh-0.2.3.dev2.dist-info/METADATA +0 -467
- shotgun_sh-0.2.3.dev2.dist-info/RECORD +0 -154
- {shotgun_sh-0.2.3.dev2.dist-info → shotgun_sh-0.2.11.dev5.dist-info}/WHEEL +0 -0
shotgun/utils/update_checker.py
CHANGED
|
@@ -10,6 +10,7 @@ from packaging import version
|
|
|
10
10
|
|
|
11
11
|
from shotgun import __version__
|
|
12
12
|
from shotgun.logging_config import get_logger
|
|
13
|
+
from shotgun.settings import settings
|
|
13
14
|
|
|
14
15
|
logger = get_logger(__name__)
|
|
15
16
|
|
|
@@ -18,8 +19,34 @@ def detect_installation_method() -> str:
|
|
|
18
19
|
"""Detect how shotgun-sh was installed.
|
|
19
20
|
|
|
20
21
|
Returns:
|
|
21
|
-
Installation method: 'pipx', 'pip', 'venv', or 'unknown'.
|
|
22
|
+
Installation method: 'uvx', 'uv-tool', 'pipx', 'pip', 'venv', or 'unknown'.
|
|
22
23
|
"""
|
|
24
|
+
# Check for simulation environment variable (for testing)
|
|
25
|
+
if settings.dev.pipx_simulate:
|
|
26
|
+
logger.debug("SHOTGUN_PIPX_SIMULATE enabled, simulating pipx installation")
|
|
27
|
+
return "pipx"
|
|
28
|
+
|
|
29
|
+
# Check for uvx (ephemeral execution) by looking at executable path
|
|
30
|
+
# uvx runs from a temporary cache directory
|
|
31
|
+
executable = Path(sys.executable)
|
|
32
|
+
if ".cache/uv" in str(executable) or "uv/cache" in str(executable):
|
|
33
|
+
logger.debug("Detected uvx (ephemeral) execution")
|
|
34
|
+
return "uvx"
|
|
35
|
+
|
|
36
|
+
# Check for uv tool installation
|
|
37
|
+
try:
|
|
38
|
+
result = subprocess.run(
|
|
39
|
+
["uv", "tool", "list"], # noqa: S607, S603
|
|
40
|
+
capture_output=True,
|
|
41
|
+
text=True,
|
|
42
|
+
timeout=5,
|
|
43
|
+
)
|
|
44
|
+
if result.returncode == 0 and "shotgun-sh" in result.stdout:
|
|
45
|
+
logger.debug("Detected uv tool installation")
|
|
46
|
+
return "uv-tool"
|
|
47
|
+
except (subprocess.SubprocessError, FileNotFoundError):
|
|
48
|
+
pass
|
|
49
|
+
|
|
23
50
|
# Check for pipx installation
|
|
24
51
|
try:
|
|
25
52
|
result = subprocess.run(
|
|
@@ -59,7 +86,7 @@ def detect_installation_method() -> str:
|
|
|
59
86
|
|
|
60
87
|
|
|
61
88
|
def perform_auto_update(no_update_check: bool = False) -> None:
|
|
62
|
-
"""Perform automatic update if installed via pipx.
|
|
89
|
+
"""Perform automatic update if installed via pipx or uv tool.
|
|
63
90
|
|
|
64
91
|
Args:
|
|
65
92
|
no_update_check: If True, skip the update.
|
|
@@ -68,23 +95,40 @@ def perform_auto_update(no_update_check: bool = False) -> None:
|
|
|
68
95
|
return
|
|
69
96
|
|
|
70
97
|
try:
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
98
|
+
method = detect_installation_method()
|
|
99
|
+
|
|
100
|
+
# Skip auto-update for ephemeral uvx executions
|
|
101
|
+
if method == "uvx":
|
|
102
|
+
logger.debug("uvx (ephemeral) execution, skipping auto-update")
|
|
74
103
|
return
|
|
75
104
|
|
|
76
|
-
#
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
105
|
+
# Only auto-update for pipx and uv-tool installations
|
|
106
|
+
if method not in ["pipx", "uv-tool"]:
|
|
107
|
+
logger.debug(f"Installation method '{method}', skipping auto-update")
|
|
108
|
+
return
|
|
109
|
+
|
|
110
|
+
# Determine the appropriate upgrade command
|
|
111
|
+
if method == "pipx":
|
|
112
|
+
command = ["pipx", "upgrade", "shotgun-sh", "--quiet"]
|
|
113
|
+
logger.debug("Running pipx upgrade shotgun-sh --quiet")
|
|
114
|
+
elif method == "uv-tool":
|
|
115
|
+
command = ["uv", "tool", "upgrade", "shotgun-sh"]
|
|
116
|
+
logger.debug("Running uv tool upgrade shotgun-sh")
|
|
117
|
+
else:
|
|
118
|
+
return
|
|
119
|
+
|
|
120
|
+
# Run upgrade command
|
|
121
|
+
result = subprocess.run( # noqa: S603, S607
|
|
122
|
+
command,
|
|
80
123
|
capture_output=True,
|
|
81
124
|
text=True,
|
|
82
125
|
timeout=30,
|
|
83
126
|
)
|
|
84
127
|
|
|
85
128
|
if result.returncode == 0:
|
|
86
|
-
# Check if there was an actual update
|
|
87
|
-
|
|
129
|
+
# Check if there was an actual update
|
|
130
|
+
output = result.stdout.lower()
|
|
131
|
+
if "upgraded" in output or "updated" in output:
|
|
88
132
|
logger.info("Shotgun-sh has been updated to the latest version")
|
|
89
133
|
else:
|
|
90
134
|
# Only log errors at debug level to not annoy users
|
|
@@ -166,16 +210,18 @@ def compare_versions(current: str, latest: str) -> bool:
|
|
|
166
210
|
return False
|
|
167
211
|
|
|
168
212
|
|
|
169
|
-
def get_update_command(method: str) -> list[str]:
|
|
213
|
+
def get_update_command(method: str) -> list[str] | None:
|
|
170
214
|
"""Get the appropriate update command based on installation method.
|
|
171
215
|
|
|
172
216
|
Args:
|
|
173
|
-
method: Installation method ('pipx', 'pip', 'venv', or 'unknown').
|
|
217
|
+
method: Installation method ('uvx', 'uv-tool', 'pipx', 'pip', 'venv', or 'unknown').
|
|
174
218
|
|
|
175
219
|
Returns:
|
|
176
|
-
Command list to execute for updating.
|
|
220
|
+
Command list to execute for updating, or None for uvx (ephemeral).
|
|
177
221
|
"""
|
|
178
222
|
commands = {
|
|
223
|
+
"uvx": None, # uvx is ephemeral, no update command
|
|
224
|
+
"uv-tool": ["uv", "tool", "upgrade", "shotgun-sh"],
|
|
179
225
|
"pipx": ["pipx", "upgrade", "shotgun-sh"],
|
|
180
226
|
"pip": [sys.executable, "-m", "pip", "install", "--upgrade", "shotgun-sh"],
|
|
181
227
|
"venv": [sys.executable, "-m", "pip", "install", "--upgrade", "shotgun-sh"],
|
|
@@ -210,6 +256,15 @@ def perform_update(force: bool = False) -> tuple[bool, str]:
|
|
|
210
256
|
method = detect_installation_method()
|
|
211
257
|
command = get_update_command(method)
|
|
212
258
|
|
|
259
|
+
# Handle uvx (ephemeral) installations
|
|
260
|
+
if method == "uvx" or command is None:
|
|
261
|
+
return (
|
|
262
|
+
False,
|
|
263
|
+
"You're running shotgun-sh via uvx (ephemeral mode). "
|
|
264
|
+
"To get the latest version, simply run 'uvx shotgun-sh' again, "
|
|
265
|
+
"or install permanently with 'uv tool install shotgun-sh'.",
|
|
266
|
+
)
|
|
267
|
+
|
|
213
268
|
# Perform update
|
|
214
269
|
try:
|
|
215
270
|
logger.info(f"Updating shotgun-sh using {method}...")
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: shotgun-sh
|
|
3
|
+
Version: 0.2.11.dev5
|
|
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,193 @@
|
|
|
1
|
+
shotgun/__init__.py,sha256=P40K0fnIsb7SKcQrFnXZ4aREjpWchVDhvM1HxI4cyIQ,104
|
|
2
|
+
shotgun/api_endpoints.py,sha256=cHNkXbaxMOw6t9M7_SGHwEkz9bL1CH_kw8qIhgdXfi0,630
|
|
3
|
+
shotgun/build_constants.py,sha256=ffbErQTMR15TUKFFx5FYu5pji3Pr7UwTskgnAZsMswM,713
|
|
4
|
+
shotgun/logging_config.py,sha256=fMnO0Ep76PIRxr0AqLcgE5QxUl4-WfqwLkMKCA2OVRc,7110
|
|
5
|
+
shotgun/main.py,sha256=XSb7ZeOxMXyZuQMxVGD6aCKl5DCgNKfYmXbZXtZBTMI,7072
|
|
6
|
+
shotgun/posthog_telemetry.py,sha256=0ZLEjQKfjnSel935mgPBH3BKrBT5QzEV45w28cq9Ldw,6617
|
|
7
|
+
shotgun/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
|
+
shotgun/sentry_telemetry.py,sha256=ZfX7JqiPKynVLuYCa4txrAUY9l4YYOpmnN5-Z02jfrA,2665
|
|
9
|
+
shotgun/settings.py,sha256=1pheWh5YRXCVzIWy7kGWiC1yGbJ8qTWxqQsxggs2BZI,7202
|
|
10
|
+
shotgun/telemetry.py,sha256=6trR92Q6ERvSuUGyS8VyBCv1Dfs20vI1-4BYPieLcxM,2917
|
|
11
|
+
shotgun/agents/__init__.py,sha256=8Jzv1YsDuLyNPFJyckSr_qI4ehTVeDyIMDW4omsfPGc,25
|
|
12
|
+
shotgun/agents/agent_manager.py,sha256=25azhJYBysW0Ri3HAZ67YIVSSLqvsY8zlyKavSVcFgY,49854
|
|
13
|
+
shotgun/agents/common.py,sha256=U18bN5mokVddIuhtSEG5i_uRjiLw6kx1tEaDtsTdhIw,19183
|
|
14
|
+
shotgun/agents/conversation_history.py,sha256=djfzHu0ZQnEiRPDwqKaBIZK1KKPmdV7wE_L-7cAGb8M,7909
|
|
15
|
+
shotgun/agents/conversation_manager.py,sha256=CvmealftUc3n3pYXBGpZ29mpXGaM8bzmbGtT4KM9sdU,5280
|
|
16
|
+
shotgun/agents/export.py,sha256=aCuytVFgkp4VkcGWak1TlXYasEe1WbFTTRiA6TGfhVI,2931
|
|
17
|
+
shotgun/agents/llm.py,sha256=hs8j1wwTczGtehzahL1Z_5D4qus5QUx4-h9-m5ZPzm4,2209
|
|
18
|
+
shotgun/agents/messages.py,sha256=wNn0qC5AqASM8LMaSGFOerZEJPn5FsIOmaJs1bdosuU,1036
|
|
19
|
+
shotgun/agents/models.py,sha256=anNz8_U95B1__VPXgxFqfzk2BRIHrIO4clJlnfedVS8,9862
|
|
20
|
+
shotgun/agents/plan.py,sha256=7bP9VVQ5yfUE76fJEdBL-S2OIy3P-s5RdaorbThJQfc,2992
|
|
21
|
+
shotgun/agents/research.py,sha256=0bkEGdmwJiHz_ubJ835xvsp2dDQpZWKrr8Qd55OadJI,3242
|
|
22
|
+
shotgun/agents/specify.py,sha256=EsnHtQ-kRwZX_GRyp5D_y94yRaOo1gfLCIKeoF8ohNY,3099
|
|
23
|
+
shotgun/agents/tasks.py,sha256=rebwa9z2-YUAQTxEhxglUKeDO5i0gAq39CmR9_LXMKE,2961
|
|
24
|
+
shotgun/agents/usage_manager.py,sha256=0O1G7ovgYtJ_zCTITQ1Cks75eXMwvjl1SgGE1uoZ0x4,5383
|
|
25
|
+
shotgun/agents/config/__init__.py,sha256=Fl8K_81zBpm-OfOW27M_WWLSFdaHHek6lWz95iDREjQ,318
|
|
26
|
+
shotgun/agents/config/constants.py,sha256=GZ62PTrMd_yXDBvQwpNqh401GVlMHh5Li7_xM-zdp8Y,742
|
|
27
|
+
shotgun/agents/config/manager.py,sha256=p3RUm6SPGmiR-rdO0mI9a9zVl1OH1bbzvksI25bUnEw,20392
|
|
28
|
+
shotgun/agents/config/models.py,sha256=wSTHi-SagVuxDktkm9oN9gPHRU55jxS4UMw4DMWkvuo,6912
|
|
29
|
+
shotgun/agents/config/provider.py,sha256=fdL8STD1jgZMAK5NKxD0E0CaDLJ-3-Vn3Y7yPeElfk0,13402
|
|
30
|
+
shotgun/agents/context_analyzer/__init__.py,sha256=p-R3SVa3yDkXnHaZ7XV_SI_9FGhoYwvnbvDr3oxGU3M,732
|
|
31
|
+
shotgun/agents/context_analyzer/analyzer.py,sha256=3WNdzY6gp4cfzf6uDiFnVo7P2VnFSdbh8SE7uMx5ffQ,20005
|
|
32
|
+
shotgun/agents/context_analyzer/constants.py,sha256=oG8IJXEFN-V5wtnoz_ZBhOIGNXG1kjR4K_yOC5e95hY,323
|
|
33
|
+
shotgun/agents/context_analyzer/formatter.py,sha256=QovmxUdpGkBKwxegxhvXRmHrpNFF31MoD3LRYTVCKY8,4008
|
|
34
|
+
shotgun/agents/context_analyzer/models.py,sha256=Ww2NOgqaQlZ45tyBsVevt5r9bz0X-dQ4lNwAElfwAJk,8362
|
|
35
|
+
shotgun/agents/history/__init__.py,sha256=XFQj2a6fxDqVg0Q3juvN9RjV_RJbgvFZtQOCOjVJyp4,147
|
|
36
|
+
shotgun/agents/history/compaction.py,sha256=S7U00K3-tHOBHjSseGLaNSozkfmZknnqNyat8Hcixfk,3923
|
|
37
|
+
shotgun/agents/history/constants.py,sha256=yWY8rrTZarLA3flCCMB_hS2NMvUDRDTwP4D4j7MIh1w,446
|
|
38
|
+
shotgun/agents/history/context_extraction.py,sha256=yPF3oYpv5GFsFQT5y53ORKdADtrkGH4u8LwPdO0YVzU,7157
|
|
39
|
+
shotgun/agents/history/history_building.py,sha256=6LFDZ60MTPDoGAcmu_mjlnjVYu8YYWdIi-cGbF3jm7A,3532
|
|
40
|
+
shotgun/agents/history/history_processors.py,sha256=Xt025vfcTesV8WjcnOvdHBz1Sv0UwvvOBehH5-qtbj0,18708
|
|
41
|
+
shotgun/agents/history/message_utils.py,sha256=aPusAl2RYKbjc7lBxPaNprRHmZEG6fe97q7DQUlhlzU,2918
|
|
42
|
+
shotgun/agents/history/token_estimation.py,sha256=iRyKq-YDivEpJrULIbQgNpjhOuSC4nHVJYfsWEFV8sQ,4770
|
|
43
|
+
shotgun/agents/history/token_counting/__init__.py,sha256=YZt5Lus--fkF6l1hdkIlp1e_oAIpACNwHOI0FRP4q8s,924
|
|
44
|
+
shotgun/agents/history/token_counting/anthropic.py,sha256=kGxfDF4GyaPbNnS4DUiOM5EPThEBXBOgbxbO_W8iBXo,4575
|
|
45
|
+
shotgun/agents/history/token_counting/base.py,sha256=eVtNmFnnDcsX3E9GE-OH_4_ibdlwg4fETi2cq60sqLw,2327
|
|
46
|
+
shotgun/agents/history/token_counting/openai.py,sha256=22gNJMOO1fPwD1RcoBUvGM4gY6AX9kHwc3YqhUQC2LQ,2560
|
|
47
|
+
shotgun/agents/history/token_counting/sentencepiece_counter.py,sha256=JTSWGAuCtqa7e2fJQzNQ52HqprSJJOcMZLnwxDId-vk,4201
|
|
48
|
+
shotgun/agents/history/token_counting/tokenizer_cache.py,sha256=owa4E12iMx8H1mNpCbHEtArE_b4vuwHl_0zKeRovv3w,2936
|
|
49
|
+
shotgun/agents/history/token_counting/utils.py,sha256=zL9pzrQHCyi5YMgUyLTnLI9WJmMr3UEEDUECgh4_TjE,4872
|
|
50
|
+
shotgun/agents/tools/__init__.py,sha256=kYppd4f4MoJcfTEPzkY2rqtxL1suXRGa9IRUm1G82GY,717
|
|
51
|
+
shotgun/agents/tools/file_management.py,sha256=29D9aF1e9wGhIFr7cW_NALNmkybtg_dRJZ-atMqa23M,9859
|
|
52
|
+
shotgun/agents/tools/registry.py,sha256=7F6qFcdGd5Hka6uEC9Xrc4ZCENed8R5_1QJMAgKHYqs,6458
|
|
53
|
+
shotgun/agents/tools/codebase/__init__.py,sha256=ceAGkK006NeOYaIJBLQsw7Q46sAyCRK9PYDs8feMQVw,661
|
|
54
|
+
shotgun/agents/tools/codebase/codebase_shell.py,sha256=XwrfxAyDGRTRBaZdO0ivcllwIZnDX-Dfbtdp-ncJXlM,8779
|
|
55
|
+
shotgun/agents/tools/codebase/directory_lister.py,sha256=dB38gPS2G02EnDBVFP99_Zu23rl7XyCjS4OwiDt8GcA,4904
|
|
56
|
+
shotgun/agents/tools/codebase/file_read.py,sha256=eQ-iS7y38cZhLoKrmKGzO4eLifheqjUHZnr8lC7AxbM,5373
|
|
57
|
+
shotgun/agents/tools/codebase/models.py,sha256=8eR3_8DQiBNgB2twu0aC_evIJbugN9KW3gtxMZdGYCE,10087
|
|
58
|
+
shotgun/agents/tools/codebase/query_graph.py,sha256=taWU8yzADUoZ22Z9msGvw4xXFYZz91Xh-V2aAVVb_7M,2308
|
|
59
|
+
shotgun/agents/tools/codebase/retrieve_code.py,sha256=KCcKzro0YQ9cFetcm5NF8yKO8hkW7_9aBf67P3PlF2Q,3082
|
|
60
|
+
shotgun/agents/tools/web_search/__init__.py,sha256=QKrTqD9JIrFavj7Ah6i-QeAw9stZsRAhZLVhnjr7eyU,3747
|
|
61
|
+
shotgun/agents/tools/web_search/anthropic.py,sha256=CqkKlMTBajz3bGbQfSvYYndy9npe00bTOSw8luLc5MY,5700
|
|
62
|
+
shotgun/agents/tools/web_search/gemini.py,sha256=Ruk2Om7jc85veSvaHlQ_pWDlu0pBjAoeuvBgAMH5QvM,3859
|
|
63
|
+
shotgun/agents/tools/web_search/openai.py,sha256=3KJpSLmmOjPqEEUCsJaR-LcmFaacu5_herUHbHOVt38,3739
|
|
64
|
+
shotgun/agents/tools/web_search/utils.py,sha256=O4IMu9mPBZe5551fNclfXbSmoL7fxP1hziqkWq8CRrI,544
|
|
65
|
+
shotgun/cli/__init__.py,sha256=_F1uW2g87y4bGFxz8Gp8u7mq2voHp8vQIUtCmm8Tojo,40
|
|
66
|
+
shotgun/cli/clear.py,sha256=_mAb3cjlLNGAk19Bu1fKoSF1fpBg05vRIRfSFZzhUyw,1625
|
|
67
|
+
shotgun/cli/compact.py,sha256=ZF8bS3hReJYG_uzRfWwCi9cINeZwzvre9SK7A-a9qRk,5914
|
|
68
|
+
shotgun/cli/config.py,sha256=wKBPSQ8ZVF6ITPS_bE2F46_xyWiI80QJhhgjt8uuDSY,8031
|
|
69
|
+
shotgun/cli/context.py,sha256=sRCNKM_irXASOJclAbYdz8-ftwdBIv68Qyin_w8KK8k,3813
|
|
70
|
+
shotgun/cli/export.py,sha256=xe14DKxeL9zN9M2bomuiXxa2JdqIZ1FBPPkTFBVhkxQ,2484
|
|
71
|
+
shotgun/cli/feedback.py,sha256=wMRIN6UtBI4832XfUwE7nQLjVLuVu4zjupMme02nfwc,1346
|
|
72
|
+
shotgun/cli/models.py,sha256=cutimFStP6m5pXmg3kbhtWZjNA2us2cPQFJtz2pTdOU,208
|
|
73
|
+
shotgun/cli/plan.py,sha256=PbD7ckPIgdDOp7RLQecf4F1S59W_Bag2qMTcR6QqlDw,2337
|
|
74
|
+
shotgun/cli/research.py,sha256=chFMuVcznuJqnGwDcK7o1Qk3RQ4q0cFPqRQjyW_GURw,2496
|
|
75
|
+
shotgun/cli/specify.py,sha256=gLbnZ4GP9QmRy1QFdhF2mnXqP9Fbo07CY-3GdmbbL3w,2179
|
|
76
|
+
shotgun/cli/tasks.py,sha256=GIgwS5a-B92BghjlD0lMDEZd35Izl0S4QguRrdFxciI,2433
|
|
77
|
+
shotgun/cli/update.py,sha256=sc3uuw3AXFF0kpskWah1JEoTwrKv67fCnqp9BjeND3o,5328
|
|
78
|
+
shotgun/cli/utils.py,sha256=umVWXDx8pelovMk-nT8B7m0c39AKY9hHsuAMnbw_Hcg,732
|
|
79
|
+
shotgun/cli/codebase/__init__.py,sha256=rKdvx33p0i_BYbNkz5_4DCFgEMwzOOqLi9f5p7XTLKM,73
|
|
80
|
+
shotgun/cli/codebase/commands.py,sha256=1N2yOGmok0ZarqXPIpWGcsQrwm_ZJcyWiMxy6tm0j70,8711
|
|
81
|
+
shotgun/cli/codebase/models.py,sha256=B9vs-d-Bq0aS6FZKebhHT-9tw90Y5f6k_t71VlZpL8k,374
|
|
82
|
+
shotgun/codebase/__init__.py,sha256=QBgFE2Abd5Vl7_NdYOglF9S6d-vIjkb3C0cpIYoHZEU,309
|
|
83
|
+
shotgun/codebase/models.py,sha256=5e_7zaPL032n_ghcvs01Uug3BH4jyKiQ3S3U5w21BSM,5296
|
|
84
|
+
shotgun/codebase/service.py,sha256=nyggapfHKdwkKXyuT9oA0tJ9qf4RNVsOxfY8lC5pHro,8006
|
|
85
|
+
shotgun/codebase/core/__init__.py,sha256=GWWhJEqChiDXAF4omYCgzgoZmJjwsAf6P1aZ5Bl8OE0,1170
|
|
86
|
+
shotgun/codebase/core/change_detector.py,sha256=uqqQLe8LPC_LVj64cDrmc1ctjKyZsfHfBBdTJQlSjE0,12486
|
|
87
|
+
shotgun/codebase/core/code_retrieval.py,sha256=8ob-xWjcSmEilpI1h5IU94ykd2dETMf84CfY36N_big,8015
|
|
88
|
+
shotgun/codebase/core/cypher_models.py,sha256=Yfysfa9lLguILftkmtuJCN3kLBFIo7WW7NigM-Zr-W4,1735
|
|
89
|
+
shotgun/codebase/core/ingestor.py,sha256=xWCz84Iwad4kXOqcb5JYHTtBc3YqLdYoPuUcWccrX-o,64708
|
|
90
|
+
shotgun/codebase/core/language_config.py,sha256=vsqHyuFnumRPRBV1lMOxWKNOIiClO6FyfKQR0fGrtl4,8934
|
|
91
|
+
shotgun/codebase/core/manager.py,sha256=8FbiLyTe2JDELgx1tpOv_Kqba8J7QSXyORCAO3dERmk,66722
|
|
92
|
+
shotgun/codebase/core/nl_query.py,sha256=qH32btb5w7eY2ij7-wc6Z0QXIDOqjz0pZXXRUboSbYs,16121
|
|
93
|
+
shotgun/codebase/core/parser_loader.py,sha256=LZRrDS8Sp518jIu3tQW-BxdwJ86lnsTteI478ER9Td8,4278
|
|
94
|
+
shotgun/llm_proxy/__init__.py,sha256=3ST3ygtf2sXXSOjIFHxVZ5xqRbT3TF7jpNHwuZAtIwA,452
|
|
95
|
+
shotgun/llm_proxy/clients.py,sha256=Y19W8Gb2e-37w8rUKPmxJOqoTk6GlcPhZhoeAbbURU0,1341
|
|
96
|
+
shotgun/llm_proxy/constants.py,sha256=_4piKdyvM7pAIRdAGrzYexwWoDlueUZiEMfwWrOa4T0,381
|
|
97
|
+
shotgun/prompts/__init__.py,sha256=RswUm0HMdfm2m2YKUwUsEdRIwoczdbI7zlucoEvHYRo,132
|
|
98
|
+
shotgun/prompts/loader.py,sha256=_7CdUYrAo6ZwvTBUlXugKyLU0IDBg5CVzUIAHFPw418,4433
|
|
99
|
+
shotgun/prompts/agents/__init__.py,sha256=YRIJMbzpArojNX1BP5gfxxois334z_GQga8T-xyWMbY,39
|
|
100
|
+
shotgun/prompts/agents/export.j2,sha256=DGqVijH1PkpkY0rDauU52u_fMv15frEvOdXAPFZNMM4,17057
|
|
101
|
+
shotgun/prompts/agents/plan.j2,sha256=mbt505NdqmzmPxXzQYJS_gH5vkiVa2a3Dgz2K-15JZk,6093
|
|
102
|
+
shotgun/prompts/agents/research.j2,sha256=QFoSSiF_5v7c78RHaiucZEb9mOC_wF54BVKnJEH_DnI,3964
|
|
103
|
+
shotgun/prompts/agents/specify.j2,sha256=XdB2WehbVmszw9crl6PEHLyLgwvU08MV--ClV3hI4mA,12014
|
|
104
|
+
shotgun/prompts/agents/tasks.j2,sha256=SMvTQPzRR6eHlW3fcj-7Bl-Lh9HWaiF3uAKv77nMdZw,5956
|
|
105
|
+
shotgun/prompts/agents/partials/codebase_understanding.j2,sha256=7WH-PVd-TRBFQUdOdKkwwn9hAUaJznFZMAGHhO7IGGU,5633
|
|
106
|
+
shotgun/prompts/agents/partials/common_agent_system_prompt.j2,sha256=wfjsQGcMTWWGBk9l0pKDnPehG8NrwTHm5FFEqba__LI,2161
|
|
107
|
+
shotgun/prompts/agents/partials/content_formatting.j2,sha256=MG0JB7SSp8YV5akDWpbs2f9DcdREIYqLp38NnoWLeQ0,1854
|
|
108
|
+
shotgun/prompts/agents/partials/interactive_mode.j2,sha256=nyNTURRszG_Pl7M3TS_luUshekDn9yVHfBDMkHSZ1kw,1448
|
|
109
|
+
shotgun/prompts/agents/state/system_state.j2,sha256=RPweqBYmgWMiDuOjdEDl6NLgYU7HMaUGW1jBSnD5UzQ,1270
|
|
110
|
+
shotgun/prompts/agents/state/codebase/codebase_graphs_available.j2,sha256=U-hy-H9bPwV0sYIHTZ5TESxc5EOCtntI8GUZOmJipJw,601
|
|
111
|
+
shotgun/prompts/codebase/__init__.py,sha256=NYuPMtmYM2ptuwf3YxVuotNlJOUq0hnjmwlzKcJkGK4,42
|
|
112
|
+
shotgun/prompts/codebase/cypher_query_patterns.j2,sha256=ufTx_xT3VoS76KcVUbIgGQx-bJoJHx3bBE3dagAXv18,8913
|
|
113
|
+
shotgun/prompts/codebase/cypher_system.j2,sha256=jo8d_AIoyAd0zKCvPXSmYGBxvtulMsCfeaOTdOfeC5g,2620
|
|
114
|
+
shotgun/prompts/codebase/enhanced_query_context.j2,sha256=WzGnFaBLZO-mOdkZ_u_PewSu9niKy87DKNL4uzQq1Jg,724
|
|
115
|
+
shotgun/prompts/codebase/partials/cypher_rules.j2,sha256=yhptyyZNzFNJWFGmOkxpF5PzZtUAXWDF4xl9ADu7yDw,3200
|
|
116
|
+
shotgun/prompts/codebase/partials/graph_schema.j2,sha256=fUsD1ZgU1pIWUzrs97jHq3TatKeGSvZgG8XP5gCQUJc,1939
|
|
117
|
+
shotgun/prompts/codebase/partials/temporal_context.j2,sha256=yYHQHBQ4EeSs6TtKPm9fflGW3y6H0-yAANcTdsApkk4,1388
|
|
118
|
+
shotgun/prompts/history/__init__.py,sha256=wbMLQ8yWmYz1sfXXigEAUlNkFcM50KdQv0kp4VU_P58,43
|
|
119
|
+
shotgun/prompts/history/incremental_summarization.j2,sha256=GmnNh0pWTjaEaI1sPwKNsGCys5fK8xrzWqalAs_LhJw,2447
|
|
120
|
+
shotgun/prompts/history/summarization.j2,sha256=OYNVHg65zbuWB6_pXzTOs2T2k5qFD2gyfbmr6NP01rs,2268
|
|
121
|
+
shotgun/prompts/tools/web_search.j2,sha256=_F1m5UYiZENPQCqTUiO2du9Lkzs1SWujjAiauDD_5-Y,568
|
|
122
|
+
shotgun/sdk/__init__.py,sha256=ESV0WM9MigjXG30g9qVjcCMI40GQv-P-MSMGVuOisK4,380
|
|
123
|
+
shotgun/sdk/codebase.py,sha256=7doUvwwl27RDJZIbP56LQsAx26GANtAKEBptTUhLT6w,8842
|
|
124
|
+
shotgun/sdk/exceptions.py,sha256=qBcQv0v7ZTwP7CMcxZST4GqCsfOWtOUjSzGBo0-heqo,412
|
|
125
|
+
shotgun/sdk/models.py,sha256=X9nOTUHH0cdkQW1NfnMEDu-QgK9oUsEISh1Jtwr5Am4,5496
|
|
126
|
+
shotgun/sdk/services.py,sha256=J4PJFSxCQ6--u7rb3Ta-9eYtlYcxcbnzrMP6ThyCnw4,705
|
|
127
|
+
shotgun/shotgun_web/__init__.py,sha256=IB-TvK3WvLNrdKH0j9MwMGtIjqi81ASFIVwaZa0ifNg,461
|
|
128
|
+
shotgun/shotgun_web/client.py,sha256=n5DDuVfSa6VPZjhSsfSxQlSFOnhgDHyidRnB8Hv9XF4,4134
|
|
129
|
+
shotgun/shotgun_web/constants.py,sha256=eNvtjlu81bAVQaCwZXOVjSpDopUm9pf34XuZEvuMiko,661
|
|
130
|
+
shotgun/shotgun_web/models.py,sha256=Ie9VfqKZM2tIJhIjentU9qLoNaMZvnUJaIu-xg9kQsA,1391
|
|
131
|
+
shotgun/tui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
132
|
+
shotgun/tui/app.py,sha256=63eg_5bL3v2xfoep3wDA1YfikI6Gyn8WG2cXtMIIRuQ,12700
|
|
133
|
+
shotgun/tui/containers.py,sha256=c2gJnFWab873F8IDOwgUBM-2ukf2kbIlO7_s20JxH1w,3540
|
|
134
|
+
shotgun/tui/dependencies.py,sha256=I8xIPUujCeQqqkkKbNYrsL6dCA2MfQ8Vlh4Q0VGlAfI,1331
|
|
135
|
+
shotgun/tui/filtered_codebase_service.py,sha256=lJ8gTMhIveTatmvmGLP299msWWTkVYKwvY_2FhuL2s4,1687
|
|
136
|
+
shotgun/tui/protocols.py,sha256=udScqPLb6yRGw1uDO6AuskRu33riaVVh0CAynEogvPM,1256
|
|
137
|
+
shotgun/tui/styles.tcss,sha256=ETyyw1bpMBOqTi5RLcAJUScdPWTvAWEqE9YcT0kVs_E,121
|
|
138
|
+
shotgun/tui/commands/__init__.py,sha256=qxYz-9aGhXAZF9VQ5AyALejI1TacsEc2cX2DH7vTXoM,2559
|
|
139
|
+
shotgun/tui/components/context_indicator.py,sha256=GeEMvLYf09Hkw-sTqX1v8RDHb6rt6mXcUpI4DT9DVHQ,5792
|
|
140
|
+
shotgun/tui/components/mode_indicator.py,sha256=NWswddRaYxTY27XOd2oKsWKhaM4dFmCl_LyclRJJQR4,2354
|
|
141
|
+
shotgun/tui/components/prompt_input.py,sha256=Ss-htqraHZAPaehGE4x86ij0veMjc4UgadMXpbdXr40,2229
|
|
142
|
+
shotgun/tui/components/spinner.py,sha256=ovTDeaJ6FD6chZx_Aepia6R3UkPOVJ77EKHfRmn39MY,2427
|
|
143
|
+
shotgun/tui/components/splash.py,sha256=vppy9vEIEvywuUKRXn2y11HwXSRkQZHLYoVjhDVdJeU,1267
|
|
144
|
+
shotgun/tui/components/status_bar.py,sha256=ctfk1YcHBb9-iwAw3VOO6gLoSrcjvykFOxMl096eYsg,1703
|
|
145
|
+
shotgun/tui/components/vertical_tail.py,sha256=kROwTaRjUwVB7H35dtmNcUVPQqNYvvfq7K2tXBKEb6c,638
|
|
146
|
+
shotgun/tui/screens/chat.tcss,sha256=7jM4YTBj-N-5T4NIiU2AJiGtKYvYO50OAkI0o7_qimI,574
|
|
147
|
+
shotgun/tui/screens/confirmation_dialog.py,sha256=62RYcTSfZHLH77bewmtSEeGgLRyYvCQh16ZoZuIE1J0,4788
|
|
148
|
+
shotgun/tui/screens/directory_setup.py,sha256=lIZ1J4A6g5Q2ZBX8epW7BhR96Dmdcg22CyiM5S-I5WU,3237
|
|
149
|
+
shotgun/tui/screens/feedback.py,sha256=V4Fkk0Nqe-S7Cak-mzqGtGKNeEeluW4oCZGZKsOtiN0,5732
|
|
150
|
+
shotgun/tui/screens/github_issue.py,sha256=5i-Uo4U6q7T7Sdb-uj8LK2WJYbYGOkLgkpahUbFCex4,2902
|
|
151
|
+
shotgun/tui/screens/model_picker.py,sha256=JXtFs476WGhu4fhDNG0Bit59e4mtuykNziAM953CNEk,12930
|
|
152
|
+
shotgun/tui/screens/onboarding.py,sha256=inSdwIMbfMf376fOA0x3AdSDvNhJcxjWnDNKpMRMCp0,13821
|
|
153
|
+
shotgun/tui/screens/pipx_migration.py,sha256=i5g9pQLKeGfqwppVFddRTypXCBk9byaIQ_1wgYuDTfc,4326
|
|
154
|
+
shotgun/tui/screens/provider_config.py,sha256=bBPtgdcmUln8tPDoVrECmcWDq_2_BDfdsUVWumA4Ebo,12036
|
|
155
|
+
shotgun/tui/screens/shotgun_auth.py,sha256=g1mA4d0hlIH8AWwV8go95WNEQsPKoq9n6QJQ3vtviSo,10675
|
|
156
|
+
shotgun/tui/screens/splash.py,sha256=E2MsJihi3c9NY1L28o_MstDxGwrCnnV7zdq00MrGAsw,706
|
|
157
|
+
shotgun/tui/screens/welcome.py,sha256=Lr7fJqXccjZnbBF_9qn5UpewW1gHsRuVLAioWEKbhPE,6364
|
|
158
|
+
shotgun/tui/screens/chat/__init__.py,sha256=wChPqpJG-7kPYVYZjE8BlkXWxfW_YABhTR2fQ51opHY,113
|
|
159
|
+
shotgun/tui/screens/chat/chat.tcss,sha256=7jM4YTBj-N-5T4NIiU2AJiGtKYvYO50OAkI0o7_qimI,574
|
|
160
|
+
shotgun/tui/screens/chat/chat_screen.py,sha256=EBvoDQMSHN6OOByW7QiOb7V7ySol2GgJ3RJ2_0HPM8Y,49299
|
|
161
|
+
shotgun/tui/screens/chat/codebase_index_prompt_screen.py,sha256=QjqOOqaXJks-82prEHCUnIZbmNBoGb2FLqxet_dUUYM,2070
|
|
162
|
+
shotgun/tui/screens/chat/codebase_index_selection.py,sha256=Zz0vi3uLhWysdPHRO8Rye9QX4hIPeWhSAw6Y9-BlOVA,241
|
|
163
|
+
shotgun/tui/screens/chat/help_text.py,sha256=MkDq0Z7yQCXHVtLlnZaFU_Ijq1rbQX9KMOGVsb_1Hm8,1610
|
|
164
|
+
shotgun/tui/screens/chat/prompt_history.py,sha256=uL3KVFb32vD09jN338mebFAi0QI-EJXTxcEQy-j6QdQ,1201
|
|
165
|
+
shotgun/tui/screens/chat_screen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
166
|
+
shotgun/tui/screens/chat_screen/command_providers.py,sha256=w8Ga9R2QDHa2Y-IzqZ5-ofZ0BqB-FjNErdgZieFqnZg,15482
|
|
167
|
+
shotgun/tui/screens/chat_screen/hint_message.py,sha256=WOpbk8q7qt7eOHTyyHvh_IQIaublVDeJGaLpsxEk9FA,933
|
|
168
|
+
shotgun/tui/screens/chat_screen/history/__init__.py,sha256=PRznBlnm9caNE0YYC08PkvNMAK-JpuULwmByaRNTKO0,581
|
|
169
|
+
shotgun/tui/screens/chat_screen/history/agent_response.py,sha256=m-RtSg77y-g_mzkVHOBMTMSW1ZE6RUCUYupn-PylPcc,2378
|
|
170
|
+
shotgun/tui/screens/chat_screen/history/chat_history.py,sha256=6owb83I3RefJzh7xtqgKHR-x5-3XYi6CGiIMyn5xfyI,4078
|
|
171
|
+
shotgun/tui/screens/chat_screen/history/formatters.py,sha256=R1roy6Ap04dUJ7clMLtYqSLkCMD6g2K6sVanOpDGwdc,4616
|
|
172
|
+
shotgun/tui/screens/chat_screen/history/partial_response.py,sha256=loMaUoXLphnRh3gl4xvmTtkfaFY-ULrSDjndAWQcy1s,1318
|
|
173
|
+
shotgun/tui/screens/chat_screen/history/user_question.py,sha256=BKl4FVKh4veszykkfr8RI06O5NEDIBZ17IZSCLzlImA,1305
|
|
174
|
+
shotgun/tui/services/__init__.py,sha256=-BKRCRYQSnQZI4PxxUpkbvq8eYhXGjWHJtVW06CYQ2o,149
|
|
175
|
+
shotgun/tui/services/conversation_service.py,sha256=iT8YP4c8nncbYiSk82t-1j06_71RBxLVUCUJnj5EmGE,6741
|
|
176
|
+
shotgun/tui/state/__init__.py,sha256=oPV_VsvoiXhuZPwnra38kCT3RyXLvVxkVKDOv-LXGgA,141
|
|
177
|
+
shotgun/tui/state/processing_state.py,sha256=O0SxqQmljWyaSAhdCAr2fNgS0ibFiIhGRNHpiUSCkW0,6234
|
|
178
|
+
shotgun/tui/utils/__init__.py,sha256=cFjDfoXTRBq29wgP7TGRWUu1eFfiIG-LLOzjIGfadgI,150
|
|
179
|
+
shotgun/tui/utils/mode_progress.py,sha256=6zh5NKtx0mF5eIOL9OPex93a4l_--s2uXrpOkqemAFU,11168
|
|
180
|
+
shotgun/tui/widgets/__init__.py,sha256=rfWJJ3R9ID9J-qWm4ESnGgTK5KpKZJ7bdO0BH0PLdPI,152
|
|
181
|
+
shotgun/tui/widgets/widget_coordinator.py,sha256=ApHslajShTHXJUSqqEdE_GMJe3ntumTJBkNyBUbnrlo,9026
|
|
182
|
+
shotgun/utils/__init__.py,sha256=WinIEp9oL2iMrWaDkXz2QX4nYVPAm8C9aBSKTeEwLtE,198
|
|
183
|
+
shotgun/utils/datetime_utils.py,sha256=x_uYmG1n9rkhSO2oR2uV9ttiuPL0nKa9os8YYaPfdWY,2592
|
|
184
|
+
shotgun/utils/env_utils.py,sha256=ulM3BRi9ZhS7uC-zorGeDQm4SHvsyFuuU9BtVPqdrHY,1418
|
|
185
|
+
shotgun/utils/file_system_utils.py,sha256=zuuWO12bzSfeocTbi4DHVJKJTBekjP-_vRmb36FHrQ4,1525
|
|
186
|
+
shotgun/utils/marketing.py,sha256=WAPEtJDagNsDmIBdrZ0XBHOgsLONz_eT25wEng-HDBs,3759
|
|
187
|
+
shotgun/utils/source_detection.py,sha256=Co6Q03R3fT771TF3RzB-70stfjNP2S4F_ArZKibwzm8,454
|
|
188
|
+
shotgun/utils/update_checker.py,sha256=6fjiVUXgdxUrI54dfw0xBsrw7jlobYkjYNZaR-JoTpI,9667
|
|
189
|
+
shotgun_sh-0.2.11.dev5.dist-info/METADATA,sha256=Br6NMZHhKNPARxJ6pfrHc3ApHp1754kB89OZxL0XhaU,4485
|
|
190
|
+
shotgun_sh-0.2.11.dev5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
191
|
+
shotgun_sh-0.2.11.dev5.dist-info/entry_points.txt,sha256=GQmtjKaPtviqYOuB3C0SMGlG5RZS9-VDDIKxV_IVHmY,75
|
|
192
|
+
shotgun_sh-0.2.11.dev5.dist-info/licenses/LICENSE,sha256=ZZEiPnjIkv3rNT-CJBMU6l7VukLUdddCo3bTwal1NIQ,1070
|
|
193
|
+
shotgun_sh-0.2.11.dev5.dist-info/RECORD,,
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"""User interaction tools for Pydantic AI agents."""
|
|
2
|
-
|
|
3
|
-
from asyncio import get_running_loop
|
|
4
|
-
|
|
5
|
-
from pydantic_ai import CallDeferred, RunContext
|
|
6
|
-
|
|
7
|
-
from shotgun.agents.models import AgentDeps, UserQuestion
|
|
8
|
-
from shotgun.logging_config import get_logger
|
|
9
|
-
|
|
10
|
-
logger = get_logger(__name__)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
async def ask_user(ctx: RunContext[AgentDeps], question: str) -> str:
|
|
14
|
-
"""Ask the human a question and return the answer.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
Args:
|
|
18
|
-
question: The question to ask the user with a clear CTA at the end. Needs to be is readable, clear, and easy to understand. Use Markdown formatting. Make key phrases and words stand out.
|
|
19
|
-
|
|
20
|
-
Returns:
|
|
21
|
-
The user's response as a string
|
|
22
|
-
"""
|
|
23
|
-
tool_call_id = ctx.tool_call_id
|
|
24
|
-
assert tool_call_id is not None # noqa: S101
|
|
25
|
-
|
|
26
|
-
try:
|
|
27
|
-
logger.debug("\n👉 %s\n", question)
|
|
28
|
-
future = get_running_loop().create_future()
|
|
29
|
-
await ctx.deps.queue.put(
|
|
30
|
-
UserQuestion(question=question, tool_call_id=tool_call_id, result=future)
|
|
31
|
-
)
|
|
32
|
-
ctx.deps.tasks.append(future)
|
|
33
|
-
raise CallDeferred(question)
|
|
34
|
-
|
|
35
|
-
except (EOFError, KeyboardInterrupt):
|
|
36
|
-
logger.warning("User input interrupted or unavailable")
|
|
37
|
-
return "User input not available or interrupted"
|