shotgun-sh 0.1.16.dev1__py3-none-any.whl → 0.2.0__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/common.py +4 -5
- shotgun/agents/config/constants.py +21 -5
- shotgun/agents/config/manager.py +171 -63
- shotgun/agents/config/models.py +65 -84
- shotgun/agents/config/provider.py +174 -85
- shotgun/agents/history/compaction.py +1 -1
- shotgun/agents/history/history_processors.py +18 -9
- shotgun/agents/history/token_counting/__init__.py +31 -0
- shotgun/agents/history/token_counting/anthropic.py +89 -0
- shotgun/agents/history/token_counting/base.py +67 -0
- shotgun/agents/history/token_counting/openai.py +80 -0
- shotgun/agents/history/token_counting/sentencepiece_counter.py +119 -0
- shotgun/agents/history/token_counting/tokenizer_cache.py +90 -0
- shotgun/agents/history/token_counting/utils.py +147 -0
- shotgun/agents/history/token_estimation.py +12 -12
- shotgun/agents/llm.py +62 -0
- shotgun/agents/models.py +2 -2
- shotgun/agents/tools/web_search/__init__.py +42 -15
- shotgun/agents/tools/web_search/anthropic.py +54 -50
- shotgun/agents/tools/web_search/gemini.py +31 -20
- shotgun/agents/tools/web_search/openai.py +4 -4
- shotgun/build_constants.py +2 -2
- shotgun/cli/config.py +28 -57
- shotgun/cli/models.py +2 -2
- shotgun/codebase/models.py +4 -4
- shotgun/llm_proxy/__init__.py +16 -0
- shotgun/llm_proxy/clients.py +39 -0
- shotgun/llm_proxy/constants.py +8 -0
- shotgun/main.py +6 -0
- shotgun/posthog_telemetry.py +5 -3
- shotgun/tui/app.py +7 -3
- shotgun/tui/screens/chat.py +15 -10
- shotgun/tui/screens/chat_screen/command_providers.py +118 -11
- shotgun/tui/screens/chat_screen/history.py +3 -1
- shotgun/tui/screens/model_picker.py +327 -0
- shotgun/tui/screens/provider_config.py +57 -26
- shotgun/utils/env_utils.py +12 -0
- {shotgun_sh-0.1.16.dev1.dist-info → shotgun_sh-0.2.0.dist-info}/METADATA +2 -2
- {shotgun_sh-0.1.16.dev1.dist-info → shotgun_sh-0.2.0.dist-info}/RECORD +42 -31
- shotgun/agents/history/token_counting.py +0 -429
- {shotgun_sh-0.1.16.dev1.dist-info → shotgun_sh-0.2.0.dist-info}/WHEEL +0 -0
- {shotgun_sh-0.1.16.dev1.dist-info → shotgun_sh-0.2.0.dist-info}/entry_points.txt +0 -0
- {shotgun_sh-0.1.16.dev1.dist-info → shotgun_sh-0.2.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -12,11 +12,25 @@ from textual.screen import Screen
|
|
|
12
12
|
from textual.widgets import Button, Input, Label, ListItem, ListView, Markdown, Static
|
|
13
13
|
|
|
14
14
|
from shotgun.agents.config import ConfigManager, ProviderType
|
|
15
|
+
from shotgun.utils.env_utils import is_shotgun_account_enabled
|
|
15
16
|
|
|
16
17
|
if TYPE_CHECKING:
|
|
17
18
|
from ..app import ShotgunApp
|
|
18
19
|
|
|
19
20
|
|
|
21
|
+
def get_configurable_providers() -> list[str]:
|
|
22
|
+
"""Get list of configurable providers based on feature flags.
|
|
23
|
+
|
|
24
|
+
Returns:
|
|
25
|
+
List of provider identifiers that can be configured.
|
|
26
|
+
Includes shotgun only if SHOTGUN_ACCOUNT_ENABLED is set.
|
|
27
|
+
"""
|
|
28
|
+
providers = ["openai", "anthropic", "google"]
|
|
29
|
+
if is_shotgun_account_enabled():
|
|
30
|
+
providers.append("shotgun")
|
|
31
|
+
return providers
|
|
32
|
+
|
|
33
|
+
|
|
20
34
|
class ProviderConfigScreen(Screen[None]):
|
|
21
35
|
"""Collect API keys for available providers."""
|
|
22
36
|
|
|
@@ -73,7 +87,7 @@ class ProviderConfigScreen(Screen[None]):
|
|
|
73
87
|
("escape", "done", "Back"),
|
|
74
88
|
]
|
|
75
89
|
|
|
76
|
-
selected_provider: reactive[
|
|
90
|
+
selected_provider: reactive[str] = reactive("openai")
|
|
77
91
|
|
|
78
92
|
def compose(self) -> ComposeResult:
|
|
79
93
|
with Vertical(id="titlebox"):
|
|
@@ -102,9 +116,16 @@ class ProviderConfigScreen(Screen[None]):
|
|
|
102
116
|
list_view = self.query_one(ListView)
|
|
103
117
|
if list_view.children:
|
|
104
118
|
list_view.index = 0
|
|
105
|
-
self.selected_provider =
|
|
119
|
+
self.selected_provider = "openai"
|
|
106
120
|
self.set_focus(self.query_one("#api-key", Input))
|
|
107
121
|
|
|
122
|
+
def on_screenresume(self) -> None:
|
|
123
|
+
"""Refresh provider status when screen is resumed.
|
|
124
|
+
|
|
125
|
+
This ensures the UI reflects any provider changes made elsewhere.
|
|
126
|
+
"""
|
|
127
|
+
self.refresh_provider_status()
|
|
128
|
+
|
|
108
129
|
def action_done(self) -> None:
|
|
109
130
|
self.dismiss()
|
|
110
131
|
|
|
@@ -152,45 +173,55 @@ class ProviderConfigScreen(Screen[None]):
|
|
|
152
173
|
|
|
153
174
|
def refresh_provider_status(self) -> None:
|
|
154
175
|
"""Update the list view entries to reflect configured providers."""
|
|
155
|
-
for
|
|
156
|
-
label = self.query_one(f"#label-{
|
|
157
|
-
label.update(self._provider_label(
|
|
176
|
+
for provider_id in get_configurable_providers():
|
|
177
|
+
label = self.query_one(f"#label-{provider_id}", Label)
|
|
178
|
+
label.update(self._provider_label(provider_id))
|
|
158
179
|
|
|
159
180
|
def _build_provider_items(self) -> list[ListItem]:
|
|
160
181
|
items: list[ListItem] = []
|
|
161
|
-
for
|
|
162
|
-
label = Label(self._provider_label(
|
|
163
|
-
items.append(ListItem(label, id=f"provider-{
|
|
182
|
+
for provider_id in get_configurable_providers():
|
|
183
|
+
label = Label(self._provider_label(provider_id), id=f"label-{provider_id}")
|
|
184
|
+
items.append(ListItem(label, id=f"provider-{provider_id}"))
|
|
164
185
|
return items
|
|
165
186
|
|
|
166
|
-
def _provider_from_item(self, item: ListItem | None) ->
|
|
187
|
+
def _provider_from_item(self, item: ListItem | None) -> str | None:
|
|
167
188
|
if item is None or item.id is None:
|
|
168
189
|
return None
|
|
169
190
|
provider_id = item.id.removeprefix("provider-")
|
|
170
|
-
|
|
171
|
-
return ProviderType(provider_id)
|
|
172
|
-
except ValueError:
|
|
173
|
-
return None
|
|
191
|
+
return provider_id if provider_id in get_configurable_providers() else None
|
|
174
192
|
|
|
175
|
-
def _provider_label(self,
|
|
176
|
-
display = self._provider_display_name(
|
|
193
|
+
def _provider_label(self, provider_id: str) -> str:
|
|
194
|
+
display = self._provider_display_name(provider_id)
|
|
177
195
|
status = (
|
|
178
|
-
"Configured"
|
|
179
|
-
if self.config_manager.has_provider_key(provider)
|
|
180
|
-
else "Not configured"
|
|
196
|
+
"Configured" if self._has_provider_key(provider_id) else "Not configured"
|
|
181
197
|
)
|
|
182
198
|
return f"{display} · {status}"
|
|
183
199
|
|
|
184
|
-
def _provider_display_name(self,
|
|
200
|
+
def _provider_display_name(self, provider_id: str) -> str:
|
|
185
201
|
names = {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
202
|
+
"openai": "OpenAI",
|
|
203
|
+
"anthropic": "Anthropic",
|
|
204
|
+
"google": "Google Gemini",
|
|
205
|
+
"shotgun": "Shotgun Account",
|
|
189
206
|
}
|
|
190
|
-
return names.get(
|
|
191
|
-
|
|
192
|
-
def _input_placeholder(self,
|
|
193
|
-
return f"{self._provider_display_name(
|
|
207
|
+
return names.get(provider_id, provider_id.title())
|
|
208
|
+
|
|
209
|
+
def _input_placeholder(self, provider_id: str) -> str:
|
|
210
|
+
return f"{self._provider_display_name(provider_id)} API key"
|
|
211
|
+
|
|
212
|
+
def _has_provider_key(self, provider_id: str) -> bool:
|
|
213
|
+
"""Check if provider has a configured API key."""
|
|
214
|
+
if provider_id == "shotgun":
|
|
215
|
+
# Check shotgun key directly
|
|
216
|
+
config = self.config_manager.load()
|
|
217
|
+
return self.config_manager._provider_has_api_key(config.shotgun)
|
|
218
|
+
else:
|
|
219
|
+
# Check LLM provider key
|
|
220
|
+
try:
|
|
221
|
+
provider = ProviderType(provider_id)
|
|
222
|
+
return self.config_manager.has_provider_key(provider)
|
|
223
|
+
except ValueError:
|
|
224
|
+
return False
|
|
194
225
|
|
|
195
226
|
def _save_api_key(self) -> None:
|
|
196
227
|
input_widget = self.query_one("#api-key", Input)
|
shotgun/utils/env_utils.py
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
"""Utilities for working with environment variables."""
|
|
2
2
|
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def is_shotgun_account_enabled() -> bool:
|
|
7
|
+
"""Check if Shotgun Account feature is enabled via environment variable.
|
|
8
|
+
|
|
9
|
+
Returns:
|
|
10
|
+
True if SHOTGUN_ACCOUNT_ENABLED is set to a truthy value,
|
|
11
|
+
False otherwise
|
|
12
|
+
"""
|
|
13
|
+
return is_truthy(os.environ.get("SHOTGUN_ACCOUNT_ENABLED"))
|
|
14
|
+
|
|
3
15
|
|
|
4
16
|
def is_truthy(value: str | None) -> bool:
|
|
5
17
|
"""Check if a string value represents true.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: shotgun-sh
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
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
|
|
@@ -23,7 +23,6 @@ Classifier: Topic :: Utilities
|
|
|
23
23
|
Requires-Python: >=3.11
|
|
24
24
|
Requires-Dist: anthropic>=0.39.0
|
|
25
25
|
Requires-Dist: genai-prices>=0.0.27
|
|
26
|
-
Requires-Dist: google-generativeai>=0.8.5
|
|
27
26
|
Requires-Dist: httpx>=0.27.0
|
|
28
27
|
Requires-Dist: jinja2>=3.1.0
|
|
29
28
|
Requires-Dist: kuzu>=0.7.0
|
|
@@ -33,6 +32,7 @@ Requires-Dist: packaging>=23.0
|
|
|
33
32
|
Requires-Dist: posthog>=3.0.0
|
|
34
33
|
Requires-Dist: pydantic-ai>=0.0.14
|
|
35
34
|
Requires-Dist: rich>=13.0.0
|
|
35
|
+
Requires-Dist: sentencepiece>=0.2.0
|
|
36
36
|
Requires-Dist: sentry-sdk[pure-eval]>=2.0.0
|
|
37
37
|
Requires-Dist: textual-dev>=1.7.0
|
|
38
38
|
Requires-Dist: textual>=6.1.0
|
|
@@ -1,38 +1,45 @@
|
|
|
1
1
|
shotgun/__init__.py,sha256=P40K0fnIsb7SKcQrFnXZ4aREjpWchVDhvM1HxI4cyIQ,104
|
|
2
|
-
shotgun/build_constants.py,sha256=
|
|
2
|
+
shotgun/build_constants.py,sha256=hDFr6eO0lwN0iCqHQ1A5s0D68txR8sYrTJLGa7tSi0o,654
|
|
3
3
|
shotgun/logging_config.py,sha256=UKenihvgH8OA3W0b8ZFcItYaFJVe9MlsMYlcevyW1HY,7440
|
|
4
|
-
shotgun/main.py,sha256=
|
|
5
|
-
shotgun/posthog_telemetry.py,sha256=
|
|
4
|
+
shotgun/main.py,sha256=RA3q1xPfqxCu43UmgI2ryZpA-IxPhJb_MJrbLqp9c_g,5140
|
|
5
|
+
shotgun/posthog_telemetry.py,sha256=RGA_rgKxAnIofjkm-cLKzyuckAKz-861gpp97tk8IME,5949
|
|
6
6
|
shotgun/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
7
|
shotgun/sentry_telemetry.py,sha256=L7jFMNAnDIENWVeQYSLpyul2nmIm2w3wnOp2kDP_cic,2902
|
|
8
8
|
shotgun/telemetry.py,sha256=Ves6Ih3hshpKVNVAUUmwRdtW8NkTjFPg8hEqvFKZ0t0,3208
|
|
9
9
|
shotgun/agents/__init__.py,sha256=8Jzv1YsDuLyNPFJyckSr_qI4ehTVeDyIMDW4omsfPGc,25
|
|
10
10
|
shotgun/agents/agent_manager.py,sha256=xq8L0oAFgtFCpKVsyUoMtYJqUyz5XxjWLKNnxoe1zo4,26577
|
|
11
|
-
shotgun/agents/common.py,sha256=
|
|
11
|
+
shotgun/agents/common.py,sha256=Hr9HigsDopkI0Sr3FThGDv1f67NLemOjcYA6LV9v970,18963
|
|
12
12
|
shotgun/agents/conversation_history.py,sha256=5J8_1yxdZiiWTq22aDio88DkBDZ4_Lh_p5Iy5_ENszc,3898
|
|
13
13
|
shotgun/agents/conversation_manager.py,sha256=fxAvXbEl3Cl2ugJ4N9aWXaqZtkrnfj3QzwjWC4LFXwI,3514
|
|
14
14
|
shotgun/agents/export.py,sha256=Zke952DbJ_lOBUmN-TPHw7qmjbfqsFu1uycBRQI_pkg,2969
|
|
15
|
+
shotgun/agents/llm.py,sha256=hs8j1wwTczGtehzahL1Z_5D4qus5QUx4-h9-m5ZPzm4,2209
|
|
15
16
|
shotgun/agents/messages.py,sha256=wNn0qC5AqASM8LMaSGFOerZEJPn5FsIOmaJs1bdosuU,1036
|
|
16
|
-
shotgun/agents/models.py,sha256=
|
|
17
|
+
shotgun/agents/models.py,sha256=IvwwjbJYi5wi9S-budg8g1ezi1VaO57Q-XtegkbTrXg,8096
|
|
17
18
|
shotgun/agents/plan.py,sha256=s-WfILBOW4l8kY59RUOVtX5MJSuSzFm1nGp6b17If78,3030
|
|
18
19
|
shotgun/agents/research.py,sha256=lYG7Rytcitop8mXs3isMI3XvYzzI3JH9u0VZz6K9zfo,3274
|
|
19
20
|
shotgun/agents/specify.py,sha256=7MoMxfIn34G27mw6wrp_F0i2O5rid476L3kHFONDCd0,3137
|
|
20
21
|
shotgun/agents/tasks.py,sha256=nk8zIl24o01hfzOGyWSbeVWeke6OGseO4Ppciurh13U,2999
|
|
21
22
|
shotgun/agents/usage_manager.py,sha256=5d9JC4_cthXwhTSytMfMExMDAUYp8_nkPepTJZXk13w,5017
|
|
22
23
|
shotgun/agents/config/__init__.py,sha256=Fl8K_81zBpm-OfOW27M_WWLSFdaHHek6lWz95iDREjQ,318
|
|
23
|
-
shotgun/agents/config/constants.py,sha256=
|
|
24
|
-
shotgun/agents/config/manager.py,sha256=
|
|
25
|
-
shotgun/agents/config/models.py,sha256=
|
|
26
|
-
shotgun/agents/config/provider.py,sha256=
|
|
24
|
+
shotgun/agents/config/constants.py,sha256=I3f0ueoQaTg5HddXGCYimCYpj-U57z3IBQYIVJxVIhg,872
|
|
25
|
+
shotgun/agents/config/manager.py,sha256=2QBpaWBV3WAqZR-wFHE9Ufwen05KHQbEkPzjSb3r_V0,15140
|
|
26
|
+
shotgun/agents/config/models.py,sha256=ZojhfheNO337e1icy_cE2PpBXIl5oHkdajr4azzFF-U,5106
|
|
27
|
+
shotgun/agents/config/provider.py,sha256=TwwZC_BtYSOpN2jdX6WZdor29EnAqfMoQK5GmNEYaPI,11012
|
|
27
28
|
shotgun/agents/history/__init__.py,sha256=XFQj2a6fxDqVg0Q3juvN9RjV_RJbgvFZtQOCOjVJyp4,147
|
|
28
|
-
shotgun/agents/history/compaction.py,sha256=
|
|
29
|
+
shotgun/agents/history/compaction.py,sha256=9RMpG0aY_7L4TecbgwHSOkGtbd9W5XZTg-MbzZmNl00,3515
|
|
29
30
|
shotgun/agents/history/constants.py,sha256=yWY8rrTZarLA3flCCMB_hS2NMvUDRDTwP4D4j7MIh1w,446
|
|
30
31
|
shotgun/agents/history/context_extraction.py,sha256=yVka1U6TqNVsORR4JlxpWi9yBt3Quip8g_u3x2Vi9Gs,3564
|
|
31
32
|
shotgun/agents/history/history_building.py,sha256=6LFDZ60MTPDoGAcmu_mjlnjVYu8YYWdIi-cGbF3jm7A,3532
|
|
32
|
-
shotgun/agents/history/history_processors.py,sha256=
|
|
33
|
+
shotgun/agents/history/history_processors.py,sha256=D3z-hzrXHxE7OAZaVX4_YAKN_nyxSF5iYMIYO24V_CI,17943
|
|
33
34
|
shotgun/agents/history/message_utils.py,sha256=aPusAl2RYKbjc7lBxPaNprRHmZEG6fe97q7DQUlhlzU,2918
|
|
34
|
-
shotgun/agents/history/
|
|
35
|
-
shotgun/agents/history/
|
|
35
|
+
shotgun/agents/history/token_estimation.py,sha256=iRyKq-YDivEpJrULIbQgNpjhOuSC4nHVJYfsWEFV8sQ,4770
|
|
36
|
+
shotgun/agents/history/token_counting/__init__.py,sha256=YZt5Lus--fkF6l1hdkIlp1e_oAIpACNwHOI0FRP4q8s,924
|
|
37
|
+
shotgun/agents/history/token_counting/anthropic.py,sha256=b2LvwKM4dSILGhv_-W4mLMKMUCPLhe1ov9UGW_-iBsw,3011
|
|
38
|
+
shotgun/agents/history/token_counting/base.py,sha256=TN4mzwSyWNQyTuOuCFaU-8AgLdAyquoX3af4qrmkxCs,1904
|
|
39
|
+
shotgun/agents/history/token_counting/openai.py,sha256=XJ2z2HaUG6f3Cw9tCK_yaOsaMJGHpSFF1I30-d3soSI,2350
|
|
40
|
+
shotgun/agents/history/token_counting/sentencepiece_counter.py,sha256=qj1bT7J5nCd5y6Mr42O9K1KTaele0rjdd09FeyyEA70,3987
|
|
41
|
+
shotgun/agents/history/token_counting/tokenizer_cache.py,sha256=Y0V6KMtEwn42M5-zJGAc7YudM8X6m5-j2ekA6YGL5Xk,2868
|
|
42
|
+
shotgun/agents/history/token_counting/utils.py,sha256=d124IDjtd0IYBYrr3gDJGWxSbdP10Vrc7ZistbUosMg,5002
|
|
36
43
|
shotgun/agents/tools/__init__.py,sha256=QaN80IqWvB5qEcjHqri1-PYvYlO74vdhcwLugoEdblo,772
|
|
37
44
|
shotgun/agents/tools/file_management.py,sha256=HYNe_QA4T3_bPzSWBYcFZcnWdj8eb4aQ3GB735-G8Nw,7138
|
|
38
45
|
shotgun/agents/tools/user_interaction.py,sha256=b3ncEpvoD06Cz4hwsS-ppVbQajQj640iWnVfA5WBjAA,1236
|
|
@@ -43,16 +50,16 @@ shotgun/agents/tools/codebase/file_read.py,sha256=EGK5yNqiS4cbIEQfDtdKVoJSJYk20N
|
|
|
43
50
|
shotgun/agents/tools/codebase/models.py,sha256=8eR3_8DQiBNgB2twu0aC_evIJbugN9KW3gtxMZdGYCE,10087
|
|
44
51
|
shotgun/agents/tools/codebase/query_graph.py,sha256=vOeyN4-OZj-vpTSk3Z9W5TjraZAepJ-Qjk_zzvum3fU,2115
|
|
45
52
|
shotgun/agents/tools/codebase/retrieve_code.py,sha256=2VjiqVKJMd9rPV-mGrL4C-N8fqGjYLW6ZInFGbcTxOM,2878
|
|
46
|
-
shotgun/agents/tools/web_search/__init__.py,sha256=
|
|
47
|
-
shotgun/agents/tools/web_search/anthropic.py,sha256=
|
|
48
|
-
shotgun/agents/tools/web_search/gemini.py,sha256
|
|
49
|
-
shotgun/agents/tools/web_search/openai.py,sha256=
|
|
53
|
+
shotgun/agents/tools/web_search/__init__.py,sha256=_9rgs_gv41-wfPvwfWM_Qfq-zvboyQ_srfyneGsxgM4,3182
|
|
54
|
+
shotgun/agents/tools/web_search/anthropic.py,sha256=GelAhAmb-b4o87-3sgxNFfw-G2LXDEjfdZ7XfF0bQD0,4983
|
|
55
|
+
shotgun/agents/tools/web_search/gemini.py,sha256=-fI_deaBT4-_61A7KlKtz8tmKXW50fVx_97WAJTUg4w,3468
|
|
56
|
+
shotgun/agents/tools/web_search/openai.py,sha256=pnIcTV3vwXJQuxPs4I7gQNX18XzM7D7FqeNxnn1E7yw,3437
|
|
50
57
|
shotgun/agents/tools/web_search/utils.py,sha256=GLJ5QV9bT2ubFMuFN7caMN7tK9OTJ0R3GD57B-tCMF0,532
|
|
51
58
|
shotgun/cli/__init__.py,sha256=_F1uW2g87y4bGFxz8Gp8u7mq2voHp8vQIUtCmm8Tojo,40
|
|
52
|
-
shotgun/cli/config.py,sha256=
|
|
59
|
+
shotgun/cli/config.py,sha256=Lrcqxm7W7I6g6iP_K5-yK7QFOgcYt5KIc8A6Wit1Ksg,7835
|
|
53
60
|
shotgun/cli/export.py,sha256=3hIwK2_OM1MFYSTfzBxsGuuBGm5fo0XdxASfQ5Uqb3Y,2471
|
|
54
61
|
shotgun/cli/feedback.py,sha256=Me1dQQgkYwP4AIFwYgfHcPXxFdJ6CzFbCBttKcFd2Q0,1238
|
|
55
|
-
shotgun/cli/models.py,sha256=
|
|
62
|
+
shotgun/cli/models.py,sha256=kwZEldQWUheNsqF_ezgDzRBc6h0Y0JxFw1VMQjZlvPE,182
|
|
56
63
|
shotgun/cli/plan.py,sha256=T-eu-I9z-dSoKqJ-KI8X5i5Mm0VL1BfornxRiUjTgnk,2324
|
|
57
64
|
shotgun/cli/research.py,sha256=qvBBtX3Wyn6pDZlJpcEvbeK-0iTOXegi71tm8HKVYaE,2490
|
|
58
65
|
shotgun/cli/specify.py,sha256=ErRQ72Zc75fmxopZbKy0vvnLPuYBLsGynpjj1X6-BwI,2166
|
|
@@ -63,7 +70,7 @@ shotgun/cli/codebase/__init__.py,sha256=rKdvx33p0i_BYbNkz5_4DCFgEMwzOOqLi9f5p7XT
|
|
|
63
70
|
shotgun/cli/codebase/commands.py,sha256=1N2yOGmok0ZarqXPIpWGcsQrwm_ZJcyWiMxy6tm0j70,8711
|
|
64
71
|
shotgun/cli/codebase/models.py,sha256=B9vs-d-Bq0aS6FZKebhHT-9tw90Y5f6k_t71VlZpL8k,374
|
|
65
72
|
shotgun/codebase/__init__.py,sha256=QBgFE2Abd5Vl7_NdYOglF9S6d-vIjkb3C0cpIYoHZEU,309
|
|
66
|
-
shotgun/codebase/models.py,sha256=
|
|
73
|
+
shotgun/codebase/models.py,sha256=5e_7zaPL032n_ghcvs01Uug3BH4jyKiQ3S3U5w21BSM,5296
|
|
67
74
|
shotgun/codebase/service.py,sha256=nyggapfHKdwkKXyuT9oA0tJ9qf4RNVsOxfY8lC5pHro,8006
|
|
68
75
|
shotgun/codebase/core/__init__.py,sha256=GWWhJEqChiDXAF4omYCgzgoZmJjwsAf6P1aZ5Bl8OE0,1170
|
|
69
76
|
shotgun/codebase/core/change_detector.py,sha256=kWCYLWzRzb3IGGOj71KBn7UOCOKMpINJbOBDf98aMxE,12409
|
|
@@ -74,6 +81,9 @@ shotgun/codebase/core/language_config.py,sha256=vsqHyuFnumRPRBV1lMOxWKNOIiClO6Fy
|
|
|
74
81
|
shotgun/codebase/core/manager.py,sha256=USGLBdDUoFtq6fMFWRtUu2HBC_FI8d6lWcAV4l6fcvk,66000
|
|
75
82
|
shotgun/codebase/core/nl_query.py,sha256=kPoSJXBlm5rLhzOofZhqPVMJ_Lj3rV2H6sld6BwtMdg,16115
|
|
76
83
|
shotgun/codebase/core/parser_loader.py,sha256=LZRrDS8Sp518jIu3tQW-BxdwJ86lnsTteI478ER9Td8,4278
|
|
84
|
+
shotgun/llm_proxy/__init__.py,sha256=BLD9NnVzdD0H7gFb65Ajud-Q7SiCymegLRaGx8UkC-Y,435
|
|
85
|
+
shotgun/llm_proxy/clients.py,sha256=wP4UlgtCdrNwWsZLZ9inE3fEIDa-i1j7gsr9oXQf1o4,1037
|
|
86
|
+
shotgun/llm_proxy/constants.py,sha256=E8sqL-8GZzl989T3OS7E1hImSZPj2vqmp3lbM6zGiQU,309
|
|
77
87
|
shotgun/prompts/__init__.py,sha256=RswUm0HMdfm2m2YKUwUsEdRIwoczdbI7zlucoEvHYRo,132
|
|
78
88
|
shotgun/prompts/loader.py,sha256=jy24-E02pCSmz2651aCT2NgHfRrHAGMYvKrD6gs0Er8,4424
|
|
79
89
|
shotgun/prompts/agents/__init__.py,sha256=YRIJMbzpArojNX1BP5gfxxois334z_GQga8T-xyWMbY,39
|
|
@@ -104,7 +114,7 @@ shotgun/sdk/exceptions.py,sha256=qBcQv0v7ZTwP7CMcxZST4GqCsfOWtOUjSzGBo0-heqo,412
|
|
|
104
114
|
shotgun/sdk/models.py,sha256=X9nOTUHH0cdkQW1NfnMEDu-QgK9oUsEISh1Jtwr5Am4,5496
|
|
105
115
|
shotgun/sdk/services.py,sha256=J4PJFSxCQ6--u7rb3Ta-9eYtlYcxcbnzrMP6ThyCnw4,705
|
|
106
116
|
shotgun/tui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
107
|
-
shotgun/tui/app.py,sha256=
|
|
117
|
+
shotgun/tui/app.py,sha256=sBPviBs-3niD8rDoD0wC27lfBsKRbFYMUPttOwmDzOM,5139
|
|
108
118
|
shotgun/tui/filtered_codebase_service.py,sha256=lJ8gTMhIveTatmvmGLP299msWWTkVYKwvY_2FhuL2s4,1687
|
|
109
119
|
shotgun/tui/styles.tcss,sha256=ETyyw1bpMBOqTi5RLcAJUScdPWTvAWEqE9YcT0kVs_E,121
|
|
110
120
|
shotgun/tui/commands/__init__.py,sha256=8D5lvtpqMW5-fF7Bg3oJtUzU75cKOv6aUaHYYszydU8,2518
|
|
@@ -112,25 +122,26 @@ shotgun/tui/components/prompt_input.py,sha256=Ss-htqraHZAPaehGE4x86ij0veMjc4Ugad
|
|
|
112
122
|
shotgun/tui/components/spinner.py,sha256=ovTDeaJ6FD6chZx_Aepia6R3UkPOVJ77EKHfRmn39MY,2427
|
|
113
123
|
shotgun/tui/components/splash.py,sha256=vppy9vEIEvywuUKRXn2y11HwXSRkQZHLYoVjhDVdJeU,1267
|
|
114
124
|
shotgun/tui/components/vertical_tail.py,sha256=kROwTaRjUwVB7H35dtmNcUVPQqNYvvfq7K2tXBKEb6c,638
|
|
115
|
-
shotgun/tui/screens/chat.py,sha256=
|
|
125
|
+
shotgun/tui/screens/chat.py,sha256=CqAv_x6R4zl-MGbtg8KgZWt8OhpBJYpx5gGBQ3oxqgw,30313
|
|
116
126
|
shotgun/tui/screens/chat.tcss,sha256=2Yq3E23jxsySYsgZf4G1AYrYVcpX0UDW6kNNI0tDmtM,437
|
|
117
127
|
shotgun/tui/screens/directory_setup.py,sha256=lIZ1J4A6g5Q2ZBX8epW7BhR96Dmdcg22CyiM5S-I5WU,3237
|
|
118
128
|
shotgun/tui/screens/feedback.py,sha256=cYtmuM3qqKwevstu8gJ9mmk7lkIKZvfAyDEBUOLh-yI,5660
|
|
119
|
-
shotgun/tui/screens/
|
|
129
|
+
shotgun/tui/screens/model_picker.py,sha256=G-EvalpxgHKk0W3FgHMcxIr817VwZyEgh_ZadSQiRwo,11831
|
|
130
|
+
shotgun/tui/screens/provider_config.py,sha256=RWH7ksf9dp7eD7mz0g_o2Q-O6HTAyzIv7ZkOYrIOAI4,8686
|
|
120
131
|
shotgun/tui/screens/splash.py,sha256=E2MsJihi3c9NY1L28o_MstDxGwrCnnV7zdq00MrGAsw,706
|
|
121
132
|
shotgun/tui/screens/chat_screen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
122
|
-
shotgun/tui/screens/chat_screen/command_providers.py,sha256=
|
|
133
|
+
shotgun/tui/screens/chat_screen/command_providers.py,sha256=7Xnxd4k30bpLOMZSX32bcugU4IgpqU4Y8f6eHWKXd4o,12694
|
|
123
134
|
shotgun/tui/screens/chat_screen/hint_message.py,sha256=WOpbk8q7qt7eOHTyyHvh_IQIaublVDeJGaLpsxEk9FA,933
|
|
124
|
-
shotgun/tui/screens/chat_screen/history.py,sha256=
|
|
135
|
+
shotgun/tui/screens/chat_screen/history.py,sha256=Go859iEjw0s5aELKpF42MjLXy7UFQ52XnJMTIkV3aLo,12406
|
|
125
136
|
shotgun/tui/utils/__init__.py,sha256=cFjDfoXTRBq29wgP7TGRWUu1eFfiIG-LLOzjIGfadgI,150
|
|
126
137
|
shotgun/tui/utils/mode_progress.py,sha256=lseRRo7kMWLkBzI3cU5vqJmS2ZcCjyRYf9Zwtvc-v58,10931
|
|
127
138
|
shotgun/utils/__init__.py,sha256=WinIEp9oL2iMrWaDkXz2QX4nYVPAm8C9aBSKTeEwLtE,198
|
|
128
|
-
shotgun/utils/env_utils.py,sha256=
|
|
139
|
+
shotgun/utils/env_utils.py,sha256=5spVCdeqVKtlWoKocPhz_5j_iRN30neqcGUzUuiWmfc,1365
|
|
129
140
|
shotgun/utils/file_system_utils.py,sha256=l-0p1bEHF34OU19MahnRFdClHufThfGAjQ431teAIp0,1004
|
|
130
141
|
shotgun/utils/source_detection.py,sha256=Co6Q03R3fT771TF3RzB-70stfjNP2S4F_ArZKibwzm8,454
|
|
131
142
|
shotgun/utils/update_checker.py,sha256=IgzPHRhS1ETH7PnJR_dIx6lxgr1qHpCkMTgzUxvGjhI,7586
|
|
132
|
-
shotgun_sh-0.
|
|
133
|
-
shotgun_sh-0.
|
|
134
|
-
shotgun_sh-0.
|
|
135
|
-
shotgun_sh-0.
|
|
136
|
-
shotgun_sh-0.
|
|
143
|
+
shotgun_sh-0.2.0.dist-info/METADATA,sha256=GMbem4VmalbvjFnNaBI1-XbnlghM_YVUMlrtNkKKqXA,11221
|
|
144
|
+
shotgun_sh-0.2.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
145
|
+
shotgun_sh-0.2.0.dist-info/entry_points.txt,sha256=asZxLU4QILneq0MWW10saVCZc4VWhZfb0wFZvERnzfA,45
|
|
146
|
+
shotgun_sh-0.2.0.dist-info/licenses/LICENSE,sha256=YebsZl590zCHrF_acCU5pmNt0pnAfD2DmAnevJPB1tY,1065
|
|
147
|
+
shotgun_sh-0.2.0.dist-info/RECORD,,
|