shotgun-sh 0.4.0.dev2__tar.gz → 0.4.0.dev3__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.
Files changed (243) hide show
  1. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/PKG-INFO +1 -1
  2. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/pyproject.toml +1 -1
  3. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/agent_manager.py +9 -1
  4. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/router/models.py +4 -0
  5. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/router/tools/plan_tools.py +5 -0
  6. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/chat/chat_screen.py +32 -0
  7. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/chat_screen/history/chat_history.py +30 -0
  8. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/.gitignore +0 -0
  9. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/LICENSE +0 -0
  10. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/README.md +0 -0
  11. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/hatch_build.py +0 -0
  12. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/__init__.py +0 -0
  13. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/__init__.py +0 -0
  14. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/common.py +0 -0
  15. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/config/README.md +0 -0
  16. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/config/__init__.py +0 -0
  17. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/config/constants.py +0 -0
  18. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/config/manager.py +0 -0
  19. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/config/models.py +0 -0
  20. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/config/provider.py +0 -0
  21. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/config/streaming_test.py +0 -0
  22. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/context_analyzer/__init__.py +0 -0
  23. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/context_analyzer/analyzer.py +0 -0
  24. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/context_analyzer/constants.py +0 -0
  25. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/context_analyzer/formatter.py +0 -0
  26. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/context_analyzer/models.py +0 -0
  27. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/__init__.py +0 -0
  28. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/filters.py +0 -0
  29. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/history/__init__.py +0 -0
  30. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/history/chunking.py +0 -0
  31. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/history/compaction.py +0 -0
  32. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/history/constants.py +0 -0
  33. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/history/context_extraction.py +0 -0
  34. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/history/file_content_deduplication.py +0 -0
  35. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/history/history_building.py +0 -0
  36. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/history/history_processors.py +0 -0
  37. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/history/message_utils.py +0 -0
  38. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/history/token_counting/__init__.py +0 -0
  39. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/history/token_counting/anthropic.py +0 -0
  40. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/history/token_counting/base.py +0 -0
  41. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/history/token_counting/openai.py +0 -0
  42. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/history/token_counting/sentencepiece_counter.py +0 -0
  43. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/history/token_counting/tokenizer_cache.py +0 -0
  44. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/history/token_counting/utils.py +0 -0
  45. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/history/token_estimation.py +0 -0
  46. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/manager.py +0 -0
  47. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/conversation/models.py +0 -0
  48. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/error/__init__.py +0 -0
  49. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/error/models.py +0 -0
  50. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/export.py +0 -0
  51. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/llm.py +0 -0
  52. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/messages.py +0 -0
  53. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/models.py +0 -0
  54. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/plan.py +0 -0
  55. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/research.py +0 -0
  56. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/router/__init__.py +0 -0
  57. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/router/router.py +0 -0
  58. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/router/tools/__init__.py +0 -0
  59. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/router/tools/delegation_tools.py +0 -0
  60. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/runner.py +0 -0
  61. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/specify.py +0 -0
  62. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/tasks.py +0 -0
  63. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/tools/__init__.py +0 -0
  64. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/tools/codebase/__init__.py +0 -0
  65. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/tools/codebase/codebase_shell.py +0 -0
  66. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/tools/codebase/directory_lister.py +0 -0
  67. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/tools/codebase/file_read.py +0 -0
  68. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/tools/codebase/models.py +0 -0
  69. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/tools/codebase/query_graph.py +0 -0
  70. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/tools/codebase/retrieve_code.py +0 -0
  71. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/tools/file_management.py +0 -0
  72. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/tools/registry.py +0 -0
  73. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/tools/web_search/__init__.py +0 -0
  74. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/tools/web_search/anthropic.py +0 -0
  75. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/tools/web_search/gemini.py +0 -0
  76. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/tools/web_search/openai.py +0 -0
  77. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/tools/web_search/utils.py +0 -0
  78. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/agents/usage_manager.py +0 -0
  79. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/api_endpoints.py +0 -0
  80. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/build_constants.py +0 -0
  81. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/__init__.py +0 -0
  82. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/clear.py +0 -0
  83. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/codebase/__init__.py +0 -0
  84. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/codebase/commands.py +0 -0
  85. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/codebase/models.py +0 -0
  86. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/compact.py +0 -0
  87. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/config.py +0 -0
  88. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/context.py +0 -0
  89. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/error_handler.py +0 -0
  90. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/export.py +0 -0
  91. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/feedback.py +0 -0
  92. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/models.py +0 -0
  93. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/plan.py +0 -0
  94. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/research.py +0 -0
  95. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/spec/__init__.py +0 -0
  96. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/spec/backup.py +0 -0
  97. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/spec/commands.py +0 -0
  98. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/spec/models.py +0 -0
  99. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/spec/pull_service.py +0 -0
  100. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/specify.py +0 -0
  101. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/tasks.py +0 -0
  102. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/update.py +0 -0
  103. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/cli/utils.py +0 -0
  104. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/codebase/__init__.py +0 -0
  105. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/codebase/core/__init__.py +0 -0
  106. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/codebase/core/change_detector.py +0 -0
  107. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/codebase/core/code_retrieval.py +0 -0
  108. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/codebase/core/cypher_models.py +0 -0
  109. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/codebase/core/ingestor.py +0 -0
  110. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/codebase/core/language_config.py +0 -0
  111. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/codebase/core/manager.py +0 -0
  112. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/codebase/core/nl_query.py +0 -0
  113. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/codebase/core/parser_loader.py +0 -0
  114. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/codebase/models.py +0 -0
  115. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/codebase/service.py +0 -0
  116. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/exceptions.py +0 -0
  117. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/llm_proxy/__init__.py +0 -0
  118. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/llm_proxy/client.py +0 -0
  119. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/llm_proxy/clients.py +0 -0
  120. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/llm_proxy/constants.py +0 -0
  121. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/llm_proxy/models.py +0 -0
  122. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/logging_config.py +0 -0
  123. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/main.py +0 -0
  124. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/posthog_telemetry.py +0 -0
  125. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/__init__.py +0 -0
  126. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/agents/__init__.py +0 -0
  127. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/agents/export.j2 +0 -0
  128. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/agents/partials/codebase_understanding.j2 +0 -0
  129. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/agents/partials/common_agent_system_prompt.j2 +0 -0
  130. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/agents/partials/content_formatting.j2 +0 -0
  131. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/agents/partials/interactive_mode.j2 +0 -0
  132. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/agents/partials/router_delegation_mode.j2 +0 -0
  133. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/agents/plan.j2 +0 -0
  134. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/agents/research.j2 +0 -0
  135. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/agents/router.j2 +0 -0
  136. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/agents/specify.j2 +0 -0
  137. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/agents/state/codebase/codebase_graphs_available.j2 +0 -0
  138. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/agents/state/system_state.j2 +0 -0
  139. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/agents/tasks.j2 +0 -0
  140. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/codebase/__init__.py +0 -0
  141. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/codebase/cypher_query_patterns.j2 +0 -0
  142. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/codebase/cypher_system.j2 +0 -0
  143. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/codebase/enhanced_query_context.j2 +0 -0
  144. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/codebase/partials/cypher_rules.j2 +0 -0
  145. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/codebase/partials/graph_schema.j2 +0 -0
  146. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/codebase/partials/temporal_context.j2 +0 -0
  147. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/history/__init__.py +0 -0
  148. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/history/chunk_summarization.j2 +0 -0
  149. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/history/combine_summaries.j2 +0 -0
  150. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/history/incremental_summarization.j2 +0 -0
  151. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/history/summarization.j2 +0 -0
  152. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/loader.py +0 -0
  153. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/prompts/tools/web_search.j2 +0 -0
  154. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/py.typed +0 -0
  155. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/sdk/__init__.py +0 -0
  156. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/sdk/codebase.py +0 -0
  157. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/sdk/exceptions.py +0 -0
  158. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/sdk/models.py +0 -0
  159. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/sdk/services.py +0 -0
  160. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/sentry_telemetry.py +0 -0
  161. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/settings.py +0 -0
  162. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/shotgun_web/__init__.py +0 -0
  163. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/shotgun_web/client.py +0 -0
  164. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/shotgun_web/constants.py +0 -0
  165. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/shotgun_web/exceptions.py +0 -0
  166. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/shotgun_web/models.py +0 -0
  167. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/shotgun_web/shared_specs/__init__.py +0 -0
  168. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/shotgun_web/shared_specs/file_scanner.py +0 -0
  169. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/shotgun_web/shared_specs/hasher.py +0 -0
  170. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/shotgun_web/shared_specs/models.py +0 -0
  171. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/shotgun_web/shared_specs/upload_pipeline.py +0 -0
  172. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/shotgun_web/shared_specs/utils.py +0 -0
  173. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/shotgun_web/specs_client.py +0 -0
  174. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/shotgun_web/supabase_client.py +0 -0
  175. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/telemetry.py +0 -0
  176. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/__init__.py +0 -0
  177. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/app.py +0 -0
  178. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/commands/__init__.py +0 -0
  179. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/components/context_indicator.py +0 -0
  180. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/components/mode_indicator.py +0 -0
  181. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/components/prompt_input.py +0 -0
  182. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/components/spinner.py +0 -0
  183. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/components/splash.py +0 -0
  184. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/components/status_bar.py +0 -0
  185. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/components/vertical_tail.py +0 -0
  186. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/containers.py +0 -0
  187. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/dependencies.py +0 -0
  188. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/filtered_codebase_service.py +0 -0
  189. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/layout.py +0 -0
  190. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/protocols.py +0 -0
  191. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/chat/__init__.py +0 -0
  192. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/chat/chat.tcss +0 -0
  193. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/chat/codebase_index_prompt_screen.py +0 -0
  194. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/chat/codebase_index_selection.py +0 -0
  195. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/chat/help_text.py +0 -0
  196. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/chat/prompt_history.py +0 -0
  197. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/chat.tcss +0 -0
  198. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/chat_screen/__init__.py +0 -0
  199. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/chat_screen/command_providers.py +0 -0
  200. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/chat_screen/hint_message.py +0 -0
  201. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/chat_screen/history/__init__.py +0 -0
  202. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/chat_screen/history/agent_response.py +0 -0
  203. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/chat_screen/history/formatters.py +0 -0
  204. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/chat_screen/history/partial_response.py +0 -0
  205. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/chat_screen/history/user_question.py +0 -0
  206. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/chat_screen/messages.py +0 -0
  207. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/confirmation_dialog.py +0 -0
  208. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/directory_setup.py +0 -0
  209. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/feedback.py +0 -0
  210. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/github_issue.py +0 -0
  211. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/model_picker.py +0 -0
  212. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/onboarding.py +0 -0
  213. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/pipx_migration.py +0 -0
  214. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/provider_config.py +0 -0
  215. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/shared_specs/__init__.py +0 -0
  216. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/shared_specs/create_spec_dialog.py +0 -0
  217. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/shared_specs/models.py +0 -0
  218. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/shared_specs/share_specs_dialog.py +0 -0
  219. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/shared_specs/upload_progress_screen.py +0 -0
  220. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/shotgun_auth.py +0 -0
  221. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/spec_pull.py +0 -0
  222. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/splash.py +0 -0
  223. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/screens/welcome.py +0 -0
  224. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/services/__init__.py +0 -0
  225. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/services/conversation_service.py +0 -0
  226. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/state/__init__.py +0 -0
  227. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/state/processing_state.py +0 -0
  228. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/styles.tcss +0 -0
  229. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/utils/__init__.py +0 -0
  230. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/utils/mode_progress.py +0 -0
  231. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/widgets/__init__.py +0 -0
  232. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/widgets/approval_widget.py +0 -0
  233. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/widgets/cascade_confirmation_widget.py +0 -0
  234. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/widgets/plan_panel.py +0 -0
  235. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/widgets/step_checkpoint_widget.py +0 -0
  236. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/tui/widgets/widget_coordinator.py +0 -0
  237. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/utils/__init__.py +0 -0
  238. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/utils/datetime_utils.py +0 -0
  239. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/utils/env_utils.py +0 -0
  240. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/utils/file_system_utils.py +0 -0
  241. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/utils/marketing.py +0 -0
  242. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/utils/source_detection.py +0 -0
  243. {shotgun_sh-0.4.0.dev2 → shotgun_sh-0.4.0.dev3}/src/shotgun/utils/update_checker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: shotgun-sh
3
- Version: 0.4.0.dev2
3
+ Version: 0.4.0.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,6 +1,6 @@
1
1
  [project]
2
2
  name = "shotgun-sh"
3
- version = "0.4.0.dev2"
3
+ version = "0.4.0.dev3"
4
4
  description = "AI-powered research, planning, and task management CLI tool"
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -78,7 +78,7 @@ from .models import AgentDeps, AgentRuntimeOptions
78
78
  from .plan import create_plan_agent
79
79
  from .research import create_research_agent
80
80
  from .router import create_router_agent
81
- from .router.models import RouterDeps
81
+ from .router.models import RouterDeps, RouterMode
82
82
  from .specify import create_specify_agent
83
83
  from .tasks import create_tasks_agent
84
84
 
@@ -1384,6 +1384,14 @@ class AgentManager(Widget):
1384
1384
  return
1385
1385
 
1386
1386
  plan_display = deps.current_plan.format_for_display()
1387
+
1388
+ # In drafting mode, if plan is not complete, prompt user to continue
1389
+ if (
1390
+ deps.router_mode == RouterMode.DRAFTING
1391
+ and not deps.current_plan.is_complete()
1392
+ ):
1393
+ plan_display += "\n\n**Shall I continue?**"
1394
+
1387
1395
  logger.debug("Adding plan hint to UI history")
1388
1396
  self.ui_message_history.append(
1389
1397
  HintMessage(message=f"**Current Plan**\n\n{plan_display}")
@@ -358,6 +358,10 @@ class RouterDeps(AgentDeps):
358
358
  # Set by create_plan tool when plan.needs_approval() returns True
359
359
  # Excluded from serialization as it's transient UI state
360
360
  pending_approval: PendingApproval | None = Field(default=None, exclude=True)
361
+ # Completion state for Drafting mode
362
+ # Set by mark_step_done when plan completes in drafting mode
363
+ # Excluded from serialization as it's transient UI state
364
+ pending_completion: bool = Field(default=False, exclude=True)
361
365
  # Event stream handler for forwarding sub-agent streaming events to UI
362
366
  # This is set by the AgentManager when running the router with streaming
363
367
  # Excluded from serialization as it's a callable
@@ -167,6 +167,11 @@ async def mark_step_done(
167
167
  if plan.is_complete():
168
168
  ctx.deps.is_executing = False
169
169
  logger.debug("Plan complete, is_executing=False")
170
+ # Set pending completion for Drafting mode
171
+ # The TUI will detect this and show the completion message
172
+ if ctx.deps.router_mode == RouterMode.DRAFTING:
173
+ ctx.deps.pending_completion = True
174
+ logger.debug("Set pending_completion=True for drafting mode")
170
175
  # Set pending checkpoint for Planning mode
171
176
  # The TUI will detect this and show the StepCheckpointWidget
172
177
  elif ctx.deps.router_mode == RouterMode.PLANNING:
@@ -988,6 +988,10 @@ class ChatScreen(Screen[None]):
988
988
  self, event: MessageHistoryUpdated
989
989
  ) -> None:
990
990
  """Handle message history updates from the agent manager."""
991
+ logger.debug(
992
+ "[MSG_HISTORY] MessageHistoryUpdated received - %d messages",
993
+ len(event.messages),
994
+ )
991
995
  self._clear_partial_response()
992
996
  self.messages = event.messages
993
997
 
@@ -1623,6 +1627,9 @@ class ChatScreen(Screen[None]):
1623
1627
  # Check for pending checkpoint (Planning mode step completion)
1624
1628
  self._check_pending_checkpoint()
1625
1629
 
1630
+ # Check for plan completion (Drafting mode)
1631
+ self._check_plan_completion()
1632
+
1626
1633
  # Save conversation after each interaction
1627
1634
  self._save_conversation()
1628
1635
 
@@ -1826,6 +1833,31 @@ class ChatScreen(Screen[None]):
1826
1833
  )
1827
1834
  )
1828
1835
 
1836
+ def _check_plan_completion(self) -> None:
1837
+ """Check if a plan was completed in Drafting mode and show completion message.
1838
+
1839
+ This is called after each agent run to check if mark_step_done
1840
+ set pending_completion in Drafting mode.
1841
+ """
1842
+ logger.debug("[PLAN] _check_plan_completion called")
1843
+ if not isinstance(self.deps, RouterDeps):
1844
+ logger.debug("[PLAN] Not RouterDeps, skipping plan completion check")
1845
+ return
1846
+
1847
+ if not self.deps.pending_completion:
1848
+ logger.debug("[PLAN] No pending completion")
1849
+ return
1850
+
1851
+ # Clear the pending state
1852
+ self.deps.pending_completion = False
1853
+
1854
+ # Show completion message
1855
+ logger.debug("[PLAN] Showing plan completion message for drafting mode")
1856
+ self.mount_hint("✅ All plan steps completed!")
1857
+
1858
+ # Hide the plan panel since the plan is done
1859
+ self._hide_plan_panel()
1860
+
1829
1861
  # =========================================================================
1830
1862
  # Sub-Agent Lifecycle Handlers (Stage 8)
1831
1863
  # =========================================================================
@@ -1,5 +1,6 @@
1
1
  """Chat history widget - main container for message display."""
2
2
 
3
+ import logging
3
4
  from collections.abc import Generator, Sequence
4
5
 
5
6
  from pydantic_ai.messages import (
@@ -21,6 +22,8 @@ from .agent_response import AgentResponseWidget
21
22
  from .partial_response import PartialResponseWidget
22
23
  from .user_question import UserQuestionWidget
23
24
 
25
+ logger = logging.getLogger(__name__)
26
+
24
27
 
25
28
  class ChatHistory(Widget):
26
29
  """Main widget for displaying chat message history."""
@@ -89,23 +92,44 @@ class ChatHistory(Widget):
89
92
  def update_messages(self, messages: list[ModelMessage | HintMessage]) -> None:
90
93
  """Update the displayed messages using incremental mounting."""
91
94
  if not self.vertical_tail:
95
+ logger.debug(
96
+ "[CHAT_HISTORY] update_messages called but vertical_tail is None"
97
+ )
92
98
  return
93
99
 
94
100
  self.items = messages
95
101
  filtered = list(self.filtered_items())
96
102
 
103
+ logger.debug(
104
+ "[CHAT_HISTORY] update_messages - total=%d, filtered=%d, rendered=%d",
105
+ len(messages),
106
+ len(filtered),
107
+ self._rendered_count,
108
+ )
109
+
97
110
  # Only mount new messages that haven't been rendered yet
98
111
  if len(filtered) > self._rendered_count:
99
112
  new_messages = filtered[self._rendered_count :]
113
+ logger.debug(
114
+ "[CHAT_HISTORY] Mounting %d new messages",
115
+ len(new_messages),
116
+ )
100
117
  for item in new_messages:
101
118
  widget: Widget
102
119
  if isinstance(item, ModelRequest):
103
120
  widget = UserQuestionWidget(item)
121
+ logger.debug("[CHAT_HISTORY] Mounting UserQuestionWidget")
104
122
  elif isinstance(item, HintMessage):
105
123
  widget = HintMessageWidget(item)
124
+ logger.debug("[CHAT_HISTORY] Mounting HintMessageWidget")
106
125
  elif isinstance(item, ModelResponse):
107
126
  widget = AgentResponseWidget(item)
127
+ logger.debug("[CHAT_HISTORY] Mounting AgentResponseWidget")
108
128
  else:
129
+ logger.debug(
130
+ "[CHAT_HISTORY] Skipping unknown message type: %s",
131
+ type(item).__name__,
132
+ )
109
133
  continue
110
134
 
111
135
  # Mount before the PartialResponseWidget
@@ -115,6 +139,12 @@ class ChatHistory(Widget):
115
139
 
116
140
  # Scroll to bottom to show newly added messages
117
141
  self.vertical_tail.scroll_end(animate=False)
142
+ else:
143
+ logger.debug(
144
+ "[CHAT_HISTORY] No new messages to mount (filtered=%d, rendered=%d)",
145
+ len(filtered),
146
+ self._rendered_count,
147
+ )
118
148
 
119
149
  def on_click(self, event: events.Click) -> None:
120
150
  """Focus the prompt input when clicking on the history area."""
File without changes