tunacode-cli 0.0.51__tar.gz → 0.0.53__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of tunacode-cli might be problematic. Click here for more details.

Files changed (212) hide show
  1. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/CLAUDE.md +10 -89
  2. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/MANIFEST.in +1 -1
  3. {tunacode_cli-0.0.51/src/tunacode_cli.egg-info → tunacode_cli-0.0.53}/PKG-INFO +146 -1
  4. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/README.md +141 -0
  5. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/pyproject.toml +22 -3
  6. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/cli/commands/base.py +2 -2
  7. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/cli/commands/implementations/__init__.py +7 -1
  8. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/cli/commands/implementations/conversation.py +1 -1
  9. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/cli/commands/implementations/debug.py +1 -1
  10. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/cli/commands/implementations/development.py +4 -1
  11. tunacode_cli-0.0.53/src/tunacode/cli/commands/implementations/template.py +132 -0
  12. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/cli/commands/registry.py +28 -1
  13. tunacode_cli-0.0.53/src/tunacode/cli/commands/template_shortcut.py +93 -0
  14. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/cli/main.py +6 -0
  15. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/cli/repl.py +29 -174
  16. tunacode_cli-0.0.53/src/tunacode/cli/repl_components/__init__.py +10 -0
  17. tunacode_cli-0.0.53/src/tunacode/cli/repl_components/command_parser.py +34 -0
  18. tunacode_cli-0.0.53/src/tunacode/cli/repl_components/error_recovery.py +88 -0
  19. tunacode_cli-0.0.53/src/tunacode/cli/repl_components/output_display.py +33 -0
  20. tunacode_cli-0.0.53/src/tunacode/cli/repl_components/tool_executor.py +84 -0
  21. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/configuration/defaults.py +2 -2
  22. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/configuration/settings.py +11 -14
  23. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/constants.py +57 -23
  24. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/context.py +0 -14
  25. tunacode_cli-0.0.53/src/tunacode/core/agents/agent_components/__init__.py +27 -0
  26. tunacode_cli-0.0.53/src/tunacode/core/agents/agent_components/agent_config.py +109 -0
  27. tunacode_cli-0.0.53/src/tunacode/core/agents/agent_components/json_tool_parser.py +109 -0
  28. tunacode_cli-0.0.53/src/tunacode/core/agents/agent_components/message_handler.py +100 -0
  29. tunacode_cli-0.0.53/src/tunacode/core/agents/agent_components/node_processor.py +480 -0
  30. tunacode_cli-0.0.53/src/tunacode/core/agents/agent_components/response_state.py +13 -0
  31. tunacode_cli-0.0.53/src/tunacode/core/agents/agent_components/result_wrapper.py +50 -0
  32. tunacode_cli-0.0.53/src/tunacode/core/agents/agent_components/task_completion.py +28 -0
  33. tunacode_cli-0.0.53/src/tunacode/core/agents/agent_components/tool_buffer.py +24 -0
  34. tunacode_cli-0.0.53/src/tunacode/core/agents/agent_components/tool_executor.py +49 -0
  35. tunacode_cli-0.0.53/src/tunacode/core/agents/main.py +686 -0
  36. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/agents/utils.py +42 -2
  37. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/background/manager.py +3 -3
  38. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/logging/__init__.py +4 -3
  39. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/logging/config.py +1 -1
  40. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/logging/formatters.py +1 -1
  41. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/logging/handlers.py +41 -7
  42. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/setup/__init__.py +2 -0
  43. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/setup/agent_setup.py +2 -2
  44. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/setup/base.py +2 -2
  45. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/setup/config_setup.py +10 -6
  46. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/setup/git_safety_setup.py +13 -2
  47. tunacode_cli-0.0.53/src/tunacode/core/setup/template_setup.py +75 -0
  48. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/state.py +13 -2
  49. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/token_usage/api_response_parser.py +6 -2
  50. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/token_usage/usage_tracker.py +37 -7
  51. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/tool_handler.py +24 -1
  52. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/prompts/system.md +289 -4
  53. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/setup.py +2 -0
  54. tunacode_cli-0.0.53/src/tunacode/templates/__init__.py +9 -0
  55. tunacode_cli-0.0.53/src/tunacode/templates/loader.py +210 -0
  56. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/tools/glob.py +3 -3
  57. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/tools/grep.py +26 -276
  58. tunacode_cli-0.0.53/src/tunacode/tools/grep_components/__init__.py +9 -0
  59. tunacode_cli-0.0.53/src/tunacode/tools/grep_components/file_filter.py +93 -0
  60. tunacode_cli-0.0.53/src/tunacode/tools/grep_components/pattern_matcher.py +152 -0
  61. tunacode_cli-0.0.53/src/tunacode/tools/grep_components/result_formatter.py +45 -0
  62. tunacode_cli-0.0.53/src/tunacode/tools/grep_components/search_result.py +35 -0
  63. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/tools/todo.py +27 -21
  64. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/types.py +19 -4
  65. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/ui/completers.py +6 -1
  66. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/ui/decorators.py +2 -2
  67. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/ui/keybindings.py +1 -1
  68. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/ui/panels.py +13 -5
  69. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/ui/prompt_manager.py +1 -1
  70. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/ui/tool_ui.py +8 -2
  71. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/utils/bm25.py +4 -4
  72. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/utils/file_utils.py +2 -2
  73. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/utils/message_utils.py +3 -1
  74. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/utils/system.py +0 -4
  75. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/utils/text_utils.py +1 -1
  76. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/utils/token_counter.py +2 -2
  77. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53/src/tunacode_cli.egg-info}/PKG-INFO +146 -1
  78. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode_cli.egg-info/SOURCES.txt +32 -12
  79. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode_cli.egg-info/requires.txt +4 -0
  80. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode_cli.egg-info/top_level.txt +0 -1
  81. tunacode_cli-0.0.53/tests/characterization/__init__.py +1 -0
  82. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/agent/test_agent_creation.py +24 -11
  83. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/agent/test_json_tool_parsing.py +10 -5
  84. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/agent/test_process_node.py +22 -33
  85. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/agent/test_process_request.py +140 -87
  86. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/agent/test_tool_message_patching.py +7 -5
  87. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/context/test_context_acceptance.py +15 -9
  88. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/context/test_context_integration.py +15 -5
  89. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/context/test_context_loading.py +18 -9
  90. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/context/test_tunacode_logging.py +4 -4
  91. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/test_characterization_commands.py +1 -0
  92. tunacode_cli-0.0.53/tests/characterization/test_characterization_grep.py +281 -0
  93. tunacode_cli-0.0.53/tests/characterization/test_characterization_main.py +321 -0
  94. tunacode_cli-0.0.53/tests/characterization/test_characterization_repl.py +368 -0
  95. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/utils/test_expand_file_refs.py +1 -5
  96. tunacode_cli-0.0.53/tests/test_completion_detection.py +76 -0
  97. tunacode_cli-0.0.53/tests/test_phase2_type_hints.py +203 -0
  98. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/test_tool_batching_retry.py +1 -1
  99. tunacode_cli-0.0.53/tests/unit/test_constants_enums.py +117 -0
  100. tunacode_cli-0.0.51/TUNACODE.md +0 -27
  101. tunacode_cli-0.0.51/src/api/auth.py +0 -13
  102. tunacode_cli-0.0.51/src/api/users.py +0 -8
  103. tunacode_cli-0.0.51/src/tunacode/core/agents/main.py +0 -1043
  104. tunacode_cli-0.0.51/src/tunacode/core/recursive/__init__.py +0 -18
  105. tunacode_cli-0.0.51/src/tunacode/core/recursive/aggregator.py +0 -467
  106. tunacode_cli-0.0.51/src/tunacode/core/recursive/budget.py +0 -414
  107. tunacode_cli-0.0.51/src/tunacode/core/recursive/decomposer.py +0 -398
  108. tunacode_cli-0.0.51/src/tunacode/core/recursive/executor.py +0 -470
  109. tunacode_cli-0.0.51/src/tunacode/core/recursive/hierarchy.py +0 -488
  110. tunacode_cli-0.0.51/src/tunacode/ui/recursive_progress.py +0 -380
  111. tunacode_cli-0.0.51/tests/characterization/utils/conftest.py +0 -4
  112. tunacode_cli-0.0.51/tests/unit/test_recursive_executor.py +0 -218
  113. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/LICENSE +0 -0
  114. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/setup.cfg +0 -0
  115. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/setup.py +0 -0
  116. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/__init__.py +0 -0
  117. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/cli/__init__.py +0 -0
  118. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/cli/commands/__init__.py +0 -0
  119. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/cli/commands/implementations/model.py +0 -0
  120. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/cli/commands/implementations/system.py +0 -0
  121. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/cli/commands/implementations/todo.py +0 -0
  122. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/configuration/__init__.py +0 -0
  123. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/configuration/models.py +0 -0
  124. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/__init__.py +0 -0
  125. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/agents/__init__.py +0 -0
  126. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/background/__init__.py +0 -0
  127. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/code_index.py +0 -0
  128. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/llm/__init__.py +0 -0
  129. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/logging/logger.py +0 -0
  130. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/setup/coordinator.py +0 -0
  131. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/setup/environment_setup.py +0 -0
  132. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/core/token_usage/cost_calculator.py +0 -0
  133. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/exceptions.py +0 -0
  134. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/py.typed +0 -0
  135. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/services/__init__.py +0 -0
  136. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/services/mcp.py +0 -0
  137. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/tools/__init__.py +0 -0
  138. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/tools/base.py +0 -0
  139. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/tools/bash.py +0 -0
  140. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/tools/list_dir.py +0 -0
  141. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/tools/read_file.py +0 -0
  142. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/tools/read_file_async_poc.py +0 -0
  143. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/tools/run_command.py +0 -0
  144. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/tools/update_file.py +0 -0
  145. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/tools/write_file.py +0 -0
  146. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/ui/__init__.py +0 -0
  147. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/ui/console.py +0 -0
  148. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/ui/constants.py +0 -0
  149. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/ui/input.py +0 -0
  150. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/ui/lexers.py +0 -0
  151. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/ui/logging_compat.py +0 -0
  152. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/ui/output.py +0 -0
  153. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/ui/utils.py +0 -0
  154. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/ui/validators.py +0 -0
  155. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/utils/__init__.py +0 -0
  156. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/utils/diff_utils.py +0 -0
  157. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/utils/import_cache.py +0 -0
  158. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/utils/retry.py +0 -0
  159. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/utils/ripgrep.py +0 -0
  160. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/utils/security.py +0 -0
  161. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode/utils/user_configuration.py +0 -0
  162. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode_cli.egg-info/dependency_links.txt +0 -0
  163. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/src/tunacode_cli.egg-info/entry_points.txt +0 -0
  164. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/agent/__init__.py +0 -0
  165. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/agent/conftest.py +0 -0
  166. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/background/test_background_edge_cases.py +0 -0
  167. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/background/test_cleanup.py +0 -0
  168. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/background/test_task_cancellation.py +0 -0
  169. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/background/test_task_creation.py +0 -0
  170. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/background/test_task_execution.py +0 -0
  171. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/code_index/test_cache_management.py +0 -0
  172. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/code_index/test_file_scanning.py +0 -0
  173. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/code_index/test_index_building.py +0 -0
  174. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/code_index/test_search_operations.py +0 -0
  175. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/code_index/test_symbol_extraction.py +0 -0
  176. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/commands/__init__.py +0 -0
  177. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/commands/test_init_command.py +0 -0
  178. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/conftest.py +0 -0
  179. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/context/__init__.py +0 -0
  180. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/repl/test_command_parsing.py +0 -0
  181. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/repl/test_error_handling.py +0 -0
  182. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/repl/test_input_handling.py +0 -0
  183. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/repl/test_keyboard_interrupts.py +0 -0
  184. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/repl/test_multiline_input.py +0 -0
  185. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/repl/test_output_display_logic.py +0 -0
  186. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/repl/test_repl_initialization.py +0 -0
  187. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/repl/test_session_flow.py +0 -0
  188. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/services/test_error_recovery.py +0 -0
  189. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/services/test_llm_routing.py +0 -0
  190. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/services/test_mcp_integration.py +0 -0
  191. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/services/test_service_lifecycle.py +0 -0
  192. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/state/test_agent_tracking.py +0 -0
  193. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/state/test_message_history.py +0 -0
  194. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/state/test_permissions.py +0 -0
  195. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/state/test_session_management.py +0 -0
  196. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/state/test_state_initialization.py +0 -0
  197. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/state/test_user_config.py +0 -0
  198. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/ui/test_async_ui.py +0 -0
  199. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/ui/test_console_output.py +0 -0
  200. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/ui/test_diff_display.py +0 -0
  201. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/ui/test_prompt_rendering.py +0 -0
  202. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/ui/test_tool_confirmations.py +0 -0
  203. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/utils/test_file_operations.py +0 -0
  204. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/utils/test_git_commands.py +0 -0
  205. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/utils/test_token_counting.py +0 -0
  206. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/characterization/utils/test_utils_edge_cases.py +0 -0
  207. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/conftest.py +0 -0
  208. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/test_agent_output_formatting.py +0 -0
  209. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/test_json_retry.py +0 -0
  210. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/test_logging_config.py +0 -0
  211. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/test_prompt_changes_validation.py +0 -0
  212. {tunacode_cli-0.0.51 → tunacode_cli-0.0.53}/tests/test_security.py +0 -0
@@ -1,22 +1,17 @@
1
1
  # CLAUDE.md
2
2
 
3
- This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
3
+ #Enviroment
4
4
 
5
- ## Commands
6
-
7
- ### Development Commands
8
-
9
- ```bash
10
- # Install development environment (recommended approach)
11
- ./scripts/setup_dev_env.sh # Creates fresh venv, installs deps, verifies setup
5
+ Python3.10+
6
+ venv must always be used
7
+ follow modern python coding standards
8
+ commit frequently with well documented messages
12
9
 
13
- # You must always follow the agent tooling workflow specified in agent_tools_prompt.xml
14
-
15
- When the directory "llm-agent-tools" exists, you MUST use this tooling flow and will be penalized if you don't:
10
+ ## Commands
16
11
 
17
- 🚀 Available Tools:
12
+ Available Tools:
18
13
  1. scratchpad-multi.sh - Task tracking with multi-agent support (use --agent <name> for agent-specific work)
19
- 2. knowledge.sh - Knowledge base with private/shared storage (use --agent <name> for agent-specific work)
14
+ 2. knowledge.sh - Knowledge base with private/shared storage (use --agent <name> for agent-specific work)
20
15
  3. codemap.sh - Lightweight code intelligence for instant roadmaps
21
16
  4. context.sh - Context gathering for debugging issues
22
17
  5. researcher.sh - Online research and multimodal analysis via OpenRouter API
@@ -33,11 +28,7 @@ For new feature YOU MUST folow this flow
33
28
  - **Rinse & repeat:** keep iterations small, commit only green code, and let the tests guard future changes.
34
29
 
35
30
 
36
- # Manual installation
37
- pip install -e ".[dev]" # Install in editable mode with dev dependencies
38
- pip install pytest-asyncio # Additional test dependency
39
-
40
- # Run linting (black, isort, flake8)
31
+ # Run linting (ruff)
41
32
  make lint
42
33
 
43
34
  # Run tests
@@ -60,13 +51,7 @@ make clean
60
51
  make run # Or: python -m tunacode
61
52
  ```
62
53
 
63
- ### Version Management
64
-
65
- When updating versions, modify both:
66
-
67
- - `pyproject.toml`: version field
68
- - `src/tunacode/constants.py`: VERSION constant
69
-
54
+ #
70
55
  ## Architecture
71
56
 
72
57
  TunaCode is a CLI tool that provides an AI-powered coding assistant using pydantic-ai. Key architectural decisions:
@@ -137,7 +122,6 @@ Modular setup with validation steps:
137
122
  - Output formatting via `rich` library
138
123
  - Tool confirmations show diffs for file operations
139
124
  - Spinner during agent processing
140
- - Optional Textual UI bridge (`cli/textual_app.py`, `cli/textual_bridge.py`)
141
125
 
142
126
  ## Testing
143
127
 
@@ -148,29 +132,7 @@ Modular setup with validation steps:
148
132
  - Characterization tests for capturing existing behavior
149
133
  - Async tests using `@pytest.mark.asyncio`
150
134
 
151
- ### Test Markers
152
-
153
- - `@pytest.mark.slow` - Long-running tests
154
- - `@pytest.mark.integration` - Integration tests
155
- - `@pytest.mark.asyncio` - Async test functions
156
-
157
- ### Running Tests
158
135
 
159
- ```bash
160
- # Skip slow tests during development
161
- pytest -m "not slow"
162
-
163
- # Run only characterization tests
164
- pytest tests/test_characterization_*.py
165
-
166
- # Run with verbose output
167
- pytest -v
168
-
169
- # Run with coverage report
170
- pytest --cov=tunacode --cov-report=html
171
- ```
172
-
173
- ## Configuration
174
136
 
175
137
  ### User Configuration
176
138
 
@@ -186,21 +148,6 @@ Location: `~/.config/tunacode.json`
186
148
  }
187
149
  ```
188
150
 
189
- ### Project Guide
190
-
191
- Location: `TUNACODE.md` in project root
192
-
193
- - Project-specific context for the AI assistant
194
- - Loaded automatically when present
195
- - Can include codebase conventions, architecture notes
196
-
197
- ### Linting Configuration
198
-
199
- `.flake8` settings:
200
-
201
- - Max line length: 120
202
- - Ignores: E203, W503, E704 (Black compatibility)
203
- - Excludes: venv, build, dist directories
204
151
 
205
152
  ## Key Design Patterns
206
153
 
@@ -227,29 +174,3 @@ Location: `TUNACODE.md` in project root
227
174
  - Grep tool uses fast-glob prefiltering with MAX_GLOB limit
228
175
  - 3-second deadline for first match in searches
229
176
  - Background task management for non-blocking operations
230
-
231
- ### Safety Features
232
-
233
- - No automatic git commits
234
- - File operations require explicit confirmation (unless in yolo mode)
235
- - Encourages git branches for experiments: `/branch <name>`
236
- - Git safety checks during setup
237
-
238
- Follow this code styling
239
-
240
- | # | Rule | One-line purpose |
241
- | --- | ---------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
242
- | 1 | **Guard Clause** | Flatten nested conditionals by returning early, so pre-conditions are explicit |
243
- | 2 | **Delete Dead Code** | If it’s never executed, delete it – that’s what VCS is for |
244
- | 3 | **Normalize Symmetries** | Make identical things look identical and different things look different for faster pattern-spotting |
245
- | 4 | **New Interface, Old Implementation** | Write the interface you wish existed; delegate to the old one for now |
246
- | 5 | **Reading Order** | Re-order elements so a reader meets ideas in the order they need them |
247
- | 6 | **Cohesion Order** | Cluster coupled functions/files so related edits sit together |
248
- | 7 | **Move Declaration & Initialization Together** | Keep a variable’s birth and first value adjacent for comprehension & dependency safety |
249
- | 8 | **Explaining Variable** | Extract a sub-expression into a well-named variable to record intent |
250
- | 9 | **Explaining Constant** | Replace magic literals with symbolic constants that broadcast meaning |
251
- | 10 | **Explicit Parameters** | Split a routine so all inputs are passed openly, banishing hidden state or maps |
252
-
253
- ## Task Master AI Instructions
254
- **Import Task Master's development workflow commands and guidelines, treat as if import is in the main CLAUDE.md file.**
255
- @./.taskmaster/CLAUDE.md
@@ -16,4 +16,4 @@ recursive-include tests *.py
16
16
  global-exclude *.pyc
17
17
  global-exclude __pycache__
18
18
  global-exclude *.so
19
- global-exclude *.egg-info
19
+ global-exclude *.egg-info
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tunacode-cli
3
- Version: 0.0.51
3
+ Version: 0.0.53
4
4
  Summary: Your agentic CLI developer.
5
5
  Author-email: larock22 <noreply@github.com>
6
6
  License: MIT
@@ -35,6 +35,10 @@ Requires-Dist: pytest-cov; extra == "dev"
35
35
  Requires-Dist: pytest-asyncio; extra == "dev"
36
36
  Requires-Dist: textual-dev; extra == "dev"
37
37
  Requires-Dist: pre-commit; extra == "dev"
38
+ Requires-Dist: vulture>=2.7; extra == "dev"
39
+ Requires-Dist: unimport>=1.0.0; extra == "dev"
40
+ Requires-Dist: autoflake>=2.0.0; extra == "dev"
41
+ Requires-Dist: dead>=1.5.0; extra == "dev"
38
42
  Dynamic: license-file
39
43
 
40
44
  # TunaCode CLI
@@ -175,3 +179,144 @@ _Note: While the tool is fully functional, we're focusing on stability and core
175
179
  ---
176
180
 
177
181
  MIT License - see [LICENSE](LICENSE) file
182
+
183
+ hello from tuna world
184
+
185
+ hello world
186
+
187
+ ## Getting Started
188
+
189
+ ### Prerequisites
190
+
191
+ Before you begin, ensure you have the following installed:
192
+
193
+ - Python 3.10 or higher
194
+ - Git
195
+
196
+ ### Installation
197
+
198
+ To install TunaCode, you can use one of the following methods:
199
+
200
+ ```bash
201
+ # Option 1: One-line install (Linux/macOS)
202
+ wget -qO- https://raw.githubusercontent.com/alchemiststudiosDOTai/tunacode/master/scripts/install_linux.sh | bash
203
+
204
+ # Option 2: pip install
205
+ pip install tunacode-cli
206
+ ```
207
+
208
+ ### Development Installation
209
+
210
+ For developers who want to contribute to TunaCode:
211
+
212
+ ```bash
213
+ # Clone the repository
214
+ git clone https://github.com/alchemiststudiosDOTai/tunacode.git
215
+ cd tunacode
216
+
217
+ # Quick setup (recommended)
218
+ ./scripts/setup_dev_env.sh
219
+
220
+ # Or manual setup
221
+ python3 -m venv venv
222
+ source venv/bin/activate # On Windows: venv\Scripts\activate
223
+ pip install -e ".[dev]"
224
+
225
+ # Verify installation
226
+ python -m tunacode --version
227
+ ```
228
+
229
+ See [Development Guide](docs/DEVELOPMENT.md) for detailed instructions.
230
+
231
+ ### Configuration
232
+
233
+ Choose your AI provider and set your API key:
234
+
235
+ ```bash
236
+ # OpenAI
237
+ tunacode --model "openai:gpt-4o" --key "sk-your-openai-key"
238
+
239
+ # Anthropic Claude
240
+ tunacode --model "anthropic:claude-3.5-sonnet" --key "sk-ant-your-anthropic-key"
241
+
242
+ # OpenRouter (100+ models)
243
+ tunacode --model "openrouter:openai/gpt-4o" --key "sk-or-your-openrouter-key"
244
+ ```
245
+
246
+ Your config is saved to `~/.config/tunacode.json` (edit directly with `nvim ~/.config/tunacode.json`)
247
+
248
+ ### Recommended Models
249
+
250
+ Based on extensive testing, these models provide the best performance:
251
+
252
+ - `google/gemini-2.5-pro` - Excellent for complex reasoning
253
+ - `openai/gpt-4.1` - Strong general-purpose model
254
+ - `deepseek/deepseek-r1-0528` - Great for code generation
255
+ - `openai/gpt-4.1-mini` - Fast and cost-effective
256
+ - `anthropic/claude-4-sonnet-20250522` - Superior context handling
257
+
258
+ _Note: Formal evaluations coming soon. Any model can work, but these have shown the best results in practice._
259
+
260
+ ## Usage
261
+
262
+ ### Starting TunaCode
263
+
264
+ ```bash
265
+ tunacode
266
+ ```
267
+
268
+ ### Basic Commands
269
+
270
+ | Command | Description |
271
+ | ------------------------ | ---------------------- |
272
+ | `/help` | Show all commands |
273
+ | `/model <provider:name>` | Switch model |
274
+ | `/clear` | Clear message history |
275
+ | `/compact` | Summarize conversation |
276
+ | `/branch <name>` | Create Git branch |
277
+ | `/yolo` | Skip confirmations |
278
+ | `!<command>` | Run shell command |
279
+ | `exit` | Exit TunaCode |
280
+
281
+ ## Performance
282
+
283
+ TunaCode leverages parallel execution for read-only operations, achieving **3x faster** file operations:
284
+
285
+ ![Parallel Execution Performance](docs/assets/parrelel_work_3x.png)
286
+
287
+ Multiple file reads, directory listings, and searches execute concurrently using async I/O, making code exploration significantly faster.
288
+
289
+ ## Features in Development
290
+
291
+ - **Streaming UI**: Currently working on implementing streaming responses for better user experience
292
+ - **Bug Fixes**: Actively addressing issues - please report any bugs you encounter!
293
+
294
+ _Note: While the tool is fully functional, we're focusing on stability and core features before optimizing for speed._
295
+
296
+ ## Safety First
297
+
298
+ ⚠️ **Important**: TunaCode can modify your codebase. Always:
299
+
300
+ - Use Git branches before making changes
301
+ - Review file modifications before confirming
302
+ - Keep backups of important work
303
+
304
+ ## Documentation
305
+
306
+ - [**Features**](docs/FEATURES.md) - All features, tools, and commands
307
+ - [**Advanced Configuration**](docs/ADVANCED-CONFIG.md) - Provider setup, MCP, customization
308
+ - [**Architecture**](docs/ARCHITECTURE.md) - Source code organization and design
309
+ - [**Development**](docs/DEVELOPMENT.md) - Contributing and development setup
310
+ - [**Troubleshooting**](docs/TROUBLESHOOTING.md) - Common issues and solutions
311
+
312
+ ## Links
313
+
314
+ - [PyPI Package](https://pypi.org/project/tunacode-cli/)
315
+ - [GitHub Repository](https://github.com/alchemiststudiosDOTai/tunacode)
316
+ - [Report Issues](https://github.com/alchemiststudiosDOTai/tunacode/issues)
317
+
318
+ ---
319
+
320
+ MIT License - see [LICENSE](LICENSE) file
321
+ # Test
322
+ # Test
@@ -136,3 +136,144 @@ _Note: While the tool is fully functional, we're focusing on stability and core
136
136
  ---
137
137
 
138
138
  MIT License - see [LICENSE](LICENSE) file
139
+
140
+ hello from tuna world
141
+
142
+ hello world
143
+
144
+ ## Getting Started
145
+
146
+ ### Prerequisites
147
+
148
+ Before you begin, ensure you have the following installed:
149
+
150
+ - Python 3.10 or higher
151
+ - Git
152
+
153
+ ### Installation
154
+
155
+ To install TunaCode, you can use one of the following methods:
156
+
157
+ ```bash
158
+ # Option 1: One-line install (Linux/macOS)
159
+ wget -qO- https://raw.githubusercontent.com/alchemiststudiosDOTai/tunacode/master/scripts/install_linux.sh | bash
160
+
161
+ # Option 2: pip install
162
+ pip install tunacode-cli
163
+ ```
164
+
165
+ ### Development Installation
166
+
167
+ For developers who want to contribute to TunaCode:
168
+
169
+ ```bash
170
+ # Clone the repository
171
+ git clone https://github.com/alchemiststudiosDOTai/tunacode.git
172
+ cd tunacode
173
+
174
+ # Quick setup (recommended)
175
+ ./scripts/setup_dev_env.sh
176
+
177
+ # Or manual setup
178
+ python3 -m venv venv
179
+ source venv/bin/activate # On Windows: venv\Scripts\activate
180
+ pip install -e ".[dev]"
181
+
182
+ # Verify installation
183
+ python -m tunacode --version
184
+ ```
185
+
186
+ See [Development Guide](docs/DEVELOPMENT.md) for detailed instructions.
187
+
188
+ ### Configuration
189
+
190
+ Choose your AI provider and set your API key:
191
+
192
+ ```bash
193
+ # OpenAI
194
+ tunacode --model "openai:gpt-4o" --key "sk-your-openai-key"
195
+
196
+ # Anthropic Claude
197
+ tunacode --model "anthropic:claude-3.5-sonnet" --key "sk-ant-your-anthropic-key"
198
+
199
+ # OpenRouter (100+ models)
200
+ tunacode --model "openrouter:openai/gpt-4o" --key "sk-or-your-openrouter-key"
201
+ ```
202
+
203
+ Your config is saved to `~/.config/tunacode.json` (edit directly with `nvim ~/.config/tunacode.json`)
204
+
205
+ ### Recommended Models
206
+
207
+ Based on extensive testing, these models provide the best performance:
208
+
209
+ - `google/gemini-2.5-pro` - Excellent for complex reasoning
210
+ - `openai/gpt-4.1` - Strong general-purpose model
211
+ - `deepseek/deepseek-r1-0528` - Great for code generation
212
+ - `openai/gpt-4.1-mini` - Fast and cost-effective
213
+ - `anthropic/claude-4-sonnet-20250522` - Superior context handling
214
+
215
+ _Note: Formal evaluations coming soon. Any model can work, but these have shown the best results in practice._
216
+
217
+ ## Usage
218
+
219
+ ### Starting TunaCode
220
+
221
+ ```bash
222
+ tunacode
223
+ ```
224
+
225
+ ### Basic Commands
226
+
227
+ | Command | Description |
228
+ | ------------------------ | ---------------------- |
229
+ | `/help` | Show all commands |
230
+ | `/model <provider:name>` | Switch model |
231
+ | `/clear` | Clear message history |
232
+ | `/compact` | Summarize conversation |
233
+ | `/branch <name>` | Create Git branch |
234
+ | `/yolo` | Skip confirmations |
235
+ | `!<command>` | Run shell command |
236
+ | `exit` | Exit TunaCode |
237
+
238
+ ## Performance
239
+
240
+ TunaCode leverages parallel execution for read-only operations, achieving **3x faster** file operations:
241
+
242
+ ![Parallel Execution Performance](docs/assets/parrelel_work_3x.png)
243
+
244
+ Multiple file reads, directory listings, and searches execute concurrently using async I/O, making code exploration significantly faster.
245
+
246
+ ## Features in Development
247
+
248
+ - **Streaming UI**: Currently working on implementing streaming responses for better user experience
249
+ - **Bug Fixes**: Actively addressing issues - please report any bugs you encounter!
250
+
251
+ _Note: While the tool is fully functional, we're focusing on stability and core features before optimizing for speed._
252
+
253
+ ## Safety First
254
+
255
+ ⚠️ **Important**: TunaCode can modify your codebase. Always:
256
+
257
+ - Use Git branches before making changes
258
+ - Review file modifications before confirming
259
+ - Keep backups of important work
260
+
261
+ ## Documentation
262
+
263
+ - [**Features**](docs/FEATURES.md) - All features, tools, and commands
264
+ - [**Advanced Configuration**](docs/ADVANCED-CONFIG.md) - Provider setup, MCP, customization
265
+ - [**Architecture**](docs/ARCHITECTURE.md) - Source code organization and design
266
+ - [**Development**](docs/DEVELOPMENT.md) - Contributing and development setup
267
+ - [**Troubleshooting**](docs/TROUBLESHOOTING.md) - Common issues and solutions
268
+
269
+ ## Links
270
+
271
+ - [PyPI Package](https://pypi.org/project/tunacode-cli/)
272
+ - [GitHub Repository](https://github.com/alchemiststudiosDOTai/tunacode)
273
+ - [Report Issues](https://github.com/alchemiststudiosDOTai/tunacode/issues)
274
+
275
+ ---
276
+
277
+ MIT License - see [LICENSE](LICENSE) file
278
+ # Test
279
+ # Test
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
  [project]
6
6
  name = "tunacode-cli"
7
7
 
8
- version = "0.0.51"
8
+ version = "0.0.53"
9
9
  description = "Your agentic CLI developer."
10
10
  keywords = ["cli", "agent", "development", "automation"]
11
11
  readme = "README.md"
@@ -46,6 +46,10 @@ dev = [
46
46
  "pytest-asyncio",
47
47
  "textual-dev",
48
48
  "pre-commit",
49
+ "vulture>=2.7",
50
+ "unimport>=1.0.0",
51
+ "autoflake>=2.0.0",
52
+ "dead>=1.5.0",
49
53
  ]
50
54
 
51
55
  [project.urls]
@@ -77,6 +81,7 @@ exclude = [
77
81
  "build",
78
82
  "dist",
79
83
  "venv",
84
+ "vulture_whitelist.py",
80
85
  ]
81
86
 
82
87
  [tool.vulture]
@@ -87,13 +92,13 @@ exclude = ["venv/", "build/", "dist/", ".git/", "__pycache__/", "*.egg-info/"]
87
92
  ignore_names = [
88
93
  # TYPE_CHECKING imports
89
94
  "ReadStream",
90
- "WriteStream",
95
+ "WriteStream",
91
96
  "StateManager",
92
97
  "ModelRequest",
93
98
  "CommandRegistry",
94
99
  # Pytest fixtures
95
100
  "caplog",
96
- "temp_workspace",
101
+ "temp_workspace",
97
102
  "setup_test_environment",
98
103
  "excinfo",
99
104
  # Common patterns
@@ -110,3 +115,17 @@ ignore_names = [
110
115
  "style_dict", # Style.from_dict parameter
111
116
  "style_str", # get_attrs_for_style_str parameter
112
117
  ]
118
+
119
+ [tool.bandit]
120
+ # Skip low-severity warnings for subprocess and assert statements
121
+ skips = ["B404", "B603", "B101", "B607", "B110", "B324", "B103", "B604", "B602", "B108"]
122
+ # B404: import subprocess
123
+ # B603: subprocess without shell=True
124
+ # B101: assert statements
125
+ # B607: start process with partial path
126
+ # B110: try/except/pass
127
+ # B324: hashlib (SHA1 for non-security fingerprinting)
128
+ # B103: chmod permissions (needed for template dirs)
129
+ # B604: shell=True (validated usage in REPL)
130
+ # B602: subprocess with shell=True (security utils)
131
+ # B108: hardcoded tmp paths (test fixtures)
@@ -44,12 +44,12 @@ class Command(ABC):
44
44
  return CommandCategory.SYSTEM
45
45
 
46
46
  @abstractmethod
47
- async def execute(self, args: CommandArgs, context: CommandContext) -> CommandResult:
47
+ async def execute(self, _args: CommandArgs, context: CommandContext) -> CommandResult:
48
48
  """
49
49
  Execute the command.
50
50
 
51
51
  Args:
52
- args: Command arguments (excluding the command name)
52
+ _args: Command arguments (excluding the command name)
53
53
  context: Execution context with state and config
54
54
 
55
55
  Returns:
@@ -12,7 +12,13 @@ from .debug import (
12
12
  )
13
13
  from .development import BranchCommand, InitCommand
14
14
  from .model import ModelCommand
15
- from .system import ClearCommand, HelpCommand, RefreshConfigCommand, StreamingCommand, UpdateCommand
15
+ from .system import (
16
+ ClearCommand,
17
+ HelpCommand,
18
+ RefreshConfigCommand,
19
+ StreamingCommand,
20
+ UpdateCommand,
21
+ )
16
22
  from .todo import TodoCommand
17
23
 
18
24
  __all__ = [
@@ -40,7 +40,7 @@ class CompactCommand(SimpleCommand):
40
40
  result = await process_request(
41
41
  summary_prompt,
42
42
  context.state_manager,
43
- output=False, # We'll handle the output ourselves
43
+ False, # We'll handle the output ourselves
44
44
  )
45
45
 
46
46
  # Extract summary text from result
@@ -169,7 +169,7 @@ class ParseToolsCommand(SimpleCommand):
169
169
  # Create tool callback
170
170
  from tunacode.cli.repl import _tool_handler
171
171
 
172
- def tool_callback_with_state(part, node):
172
+ def tool_callback_with_state(part, _node):
173
173
  return _tool_handler(part, context.state_manager)
174
174
 
175
175
  try:
@@ -72,6 +72,9 @@ If there are Cursor rules (in .cursor/rules/ or .cursorrules) or Copilot rules (
72
72
  make sure to include them."""
73
73
 
74
74
  # Call the agent to analyze and create/update the file
75
- await context.process_request(prompt, context.state_manager)
75
+ if context.process_request:
76
+ await context.process_request(
77
+ prompt, context.state_manager.session.current_model, context.state_manager
78
+ )
76
79
 
77
80
  return None