shotgun-sh 0.1.12.dev2__py3-none-any.whl → 0.1.12.dev3__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/main.py CHANGED
@@ -118,7 +118,15 @@ def main(
118
118
 
119
119
  if ctx.invoked_subcommand is None and not ctx.resilient_parsing:
120
120
  logger.debug("Launching shotgun TUI application")
121
- tui_app.run(no_update_check=no_update_check, continue_session=continue_session)
121
+ try:
122
+ tui_app.run(
123
+ no_update_check=no_update_check, continue_session=continue_session
124
+ )
125
+ finally:
126
+ # Ensure PostHog is shut down cleanly even if TUI exits unexpectedly
127
+ from shotgun.posthog_telemetry import shutdown
128
+
129
+ shutdown()
122
130
  raise typer.Exit()
123
131
 
124
132
  # For CLI commands, register PostHog shutdown handler
shotgun/tui/app.py CHANGED
@@ -83,6 +83,10 @@ class ShotgunApp(App[None]):
83
83
 
84
84
  async def action_quit(self) -> None:
85
85
  """Quit the application."""
86
+ # Shut down PostHog client to prevent threading errors
87
+ from shotgun.posthog_telemetry import shutdown
88
+
89
+ shutdown()
86
90
  self.exit()
87
91
 
88
92
  def get_system_commands(self, screen: Screen[Any]) -> Iterable[SystemCommand]:
@@ -16,6 +16,7 @@ from textual import events, on, work
16
16
  from textual.app import ComposeResult
17
17
  from textual.command import CommandPalette
18
18
  from textual.containers import Container, Grid
19
+ from textual.keys import Keys
19
20
  from textual.reactive import reactive
20
21
  from textual.screen import ModalScreen, Screen
21
22
  from textual.widget import Widget
@@ -285,13 +286,18 @@ class ChatScreen(Screen[None]):
285
286
 
286
287
  async def on_key(self, event: events.Key) -> None:
287
288
  """Handle key presses for cancellation."""
288
- # If escape is pressed while agent is working, cancel the operation
289
- if event.key == "escape" and self.working and self._current_worker:
290
- # Track ESC cancellation event
289
+ # If escape or ctrl+c is pressed while agent is working, cancel the operation
290
+ if (
291
+ event.key in (Keys.Escape, Keys.ControlC)
292
+ and self.working
293
+ and self._current_worker
294
+ ):
295
+ # Track cancellation event
291
296
  track_event(
292
- "agent_cancelled_escape",
297
+ "agent_cancelled",
293
298
  {
294
299
  "agent_mode": self.mode.value,
300
+ "cancel_key": event.key,
295
301
  },
296
302
  )
297
303
 
@@ -302,6 +308,8 @@ class ChatScreen(Screen[None]):
302
308
  # Re-enable the input
303
309
  prompt_input = self.query_one(PromptInput)
304
310
  prompt_input.focus()
311
+ # Prevent the event from propagating (don't quit the app)
312
+ event.stop()
305
313
 
306
314
  @work
307
315
  async def check_if_codebase_is_indexed(self) -> None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: shotgun-sh
3
- Version: 0.1.12.dev2
3
+ Version: 0.1.12.dev3
4
4
  Summary: AI-powered research, planning, and task management CLI tool
5
5
  Project-URL: Homepage, https://shotgun.sh/
6
6
  Project-URL: Repository, https://github.com/shotgun-sh/shotgun
@@ -1,7 +1,7 @@
1
1
  shotgun/__init__.py,sha256=P40K0fnIsb7SKcQrFnXZ4aREjpWchVDhvM1HxI4cyIQ,104
2
2
  shotgun/build_constants.py,sha256=RXNxMz46HaB5jucgMVpw8a2yCJqjbhTOh0PddyEVMN8,713
3
3
  shotgun/logging_config.py,sha256=UKenihvgH8OA3W0b8ZFcItYaFJVe9MlsMYlcevyW1HY,7440
4
- shotgun/main.py,sha256=qteehx2FyqPVvSRNawEMorybNiIrYfgVeqtMaASQcPw,4606
4
+ shotgun/main.py,sha256=Fbg4MNEOR-FPibcbIQ7LwdQIOdYMNYMbMCPPjasbJyA,4834
5
5
  shotgun/posthog_telemetry.py,sha256=tu5FLao8uXd76RcKMyWQ9RWPCCJos749XJ_9uT_NNwI,4294
6
6
  shotgun/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  shotgun/sentry_telemetry.py,sha256=L7jFMNAnDIENWVeQYSLpyul2nmIm2w3wnOp2kDP_cic,2902
@@ -102,7 +102,7 @@ shotgun/sdk/exceptions.py,sha256=qBcQv0v7ZTwP7CMcxZST4GqCsfOWtOUjSzGBo0-heqo,412
102
102
  shotgun/sdk/models.py,sha256=X9nOTUHH0cdkQW1NfnMEDu-QgK9oUsEISh1Jtwr5Am4,5496
103
103
  shotgun/sdk/services.py,sha256=J4PJFSxCQ6--u7rb3Ta-9eYtlYcxcbnzrMP6ThyCnw4,705
104
104
  shotgun/tui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
- shotgun/tui/app.py,sha256=rNi1a2vIhu385-DylE1rYgVj3_cok65X_z1lEamrFqo,3445
105
+ shotgun/tui/app.py,sha256=3_g11ZyhJ0avcnX0vundJ9dF2EkkcZnHBBSYzg-P_54,3583
106
106
  shotgun/tui/filtered_codebase_service.py,sha256=lJ8gTMhIveTatmvmGLP299msWWTkVYKwvY_2FhuL2s4,1687
107
107
  shotgun/tui/styles.tcss,sha256=ETyyw1bpMBOqTi5RLcAJUScdPWTvAWEqE9YcT0kVs_E,121
108
108
  shotgun/tui/commands/__init__.py,sha256=8D5lvtpqMW5-fF7Bg3oJtUzU75cKOv6aUaHYYszydU8,2518
@@ -110,7 +110,7 @@ shotgun/tui/components/prompt_input.py,sha256=Ss-htqraHZAPaehGE4x86ij0veMjc4Ugad
110
110
  shotgun/tui/components/spinner.py,sha256=ovTDeaJ6FD6chZx_Aepia6R3UkPOVJ77EKHfRmn39MY,2427
111
111
  shotgun/tui/components/splash.py,sha256=vppy9vEIEvywuUKRXn2y11HwXSRkQZHLYoVjhDVdJeU,1267
112
112
  shotgun/tui/components/vertical_tail.py,sha256=kROwTaRjUwVB7H35dtmNcUVPQqNYvvfq7K2tXBKEb6c,638
113
- shotgun/tui/screens/chat.py,sha256=0fIERVokK06L-kIko_q57gx85j9M95hNpx7OPVZUGjc,27067
113
+ shotgun/tui/screens/chat.py,sha256=HYHiHpvek465tOX2YBs_O1en29O524qaDlB3R_8Z9s4,27304
114
114
  shotgun/tui/screens/chat.tcss,sha256=2Yq3E23jxsySYsgZf4G1AYrYVcpX0UDW6kNNI0tDmtM,437
115
115
  shotgun/tui/screens/directory_setup.py,sha256=lIZ1J4A6g5Q2ZBX8epW7BhR96Dmdcg22CyiM5S-I5WU,3237
116
116
  shotgun/tui/screens/provider_config.py,sha256=A_tvDHF5KLP5PV60LjMJ_aoOdT3TjI6_g04UIUqGPqM,7126
@@ -126,8 +126,8 @@ shotgun/utils/env_utils.py,sha256=8QK5aw_f_V2AVTleQQlcL0RnD4sPJWXlDG46fsHu0d8,10
126
126
  shotgun/utils/file_system_utils.py,sha256=l-0p1bEHF34OU19MahnRFdClHufThfGAjQ431teAIp0,1004
127
127
  shotgun/utils/source_detection.py,sha256=Co6Q03R3fT771TF3RzB-70stfjNP2S4F_ArZKibwzm8,454
128
128
  shotgun/utils/update_checker.py,sha256=IgzPHRhS1ETH7PnJR_dIx6lxgr1qHpCkMTgzUxvGjhI,7586
129
- shotgun_sh-0.1.12.dev2.dist-info/METADATA,sha256=aFhkNs5ZqJOHIFX-AoG2XKuJlBGKuhYFBgmOUTStq64,11197
130
- shotgun_sh-0.1.12.dev2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
131
- shotgun_sh-0.1.12.dev2.dist-info/entry_points.txt,sha256=asZxLU4QILneq0MWW10saVCZc4VWhZfb0wFZvERnzfA,45
132
- shotgun_sh-0.1.12.dev2.dist-info/licenses/LICENSE,sha256=YebsZl590zCHrF_acCU5pmNt0pnAfD2DmAnevJPB1tY,1065
133
- shotgun_sh-0.1.12.dev2.dist-info/RECORD,,
129
+ shotgun_sh-0.1.12.dev3.dist-info/METADATA,sha256=DVBz9JPoN3t6ypYy6oit9oEExatPN8WDvVlcvA1bFp4,11197
130
+ shotgun_sh-0.1.12.dev3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
131
+ shotgun_sh-0.1.12.dev3.dist-info/entry_points.txt,sha256=asZxLU4QILneq0MWW10saVCZc4VWhZfb0wFZvERnzfA,45
132
+ shotgun_sh-0.1.12.dev3.dist-info/licenses/LICENSE,sha256=YebsZl590zCHrF_acCU5pmNt0pnAfD2DmAnevJPB1tY,1065
133
+ shotgun_sh-0.1.12.dev3.dist-info/RECORD,,