tunacode-cli 0.0.62__tar.gz → 0.0.64__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 (413) hide show
  1. tunacode_cli-0.0.64/.claude/development/uv-hatch-setup.md +102 -0
  2. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/development/uv-installer-updates.md +2 -2
  3. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/agents/default/scratchpad.md +2 -0
  4. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/settings.local.json +2 -1
  5. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.pre-commit-config.yaml +8 -6
  6. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/CHANGELOG.md +80 -5
  7. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/PKG-INFO +1 -1
  8. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/pyproject.toml +2 -2
  9. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/scripts/install_linux.sh +85 -14
  10. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/scripts/uninstall.sh +28 -28
  11. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/commands/implementations/system.py +50 -0
  12. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/configuration/defaults.py +1 -1
  13. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/constants.py +1 -1
  14. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/prompts/system.md +1 -0
  15. tunacode_cli-0.0.62/.claude/development/uv-hatch-setup.md +0 -235
  16. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/MEMORY_ANCHOR_SPEC.md +0 -0
  17. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/NEXT_PR_RULES.md +0 -0
  18. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/README.md +0 -0
  19. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/agents/bug-context-analyzer.md +0 -0
  20. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/agents/code-synthesis-analyzer.md +0 -0
  21. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/agents/documentation-synthesis-qa.md +0 -0
  22. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/agents/expert-debugger.md +0 -0
  23. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/agents/phased-task-processor.md +0 -0
  24. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/agents/prompt-engineer.md +0 -0
  25. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/agents/rapid-code-synthesis-qa.md +0 -0
  26. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/agents/tech-docs-maintainer.md +0 -0
  27. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/anchors.json +0 -0
  28. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/commands/deploy.md +0 -0
  29. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/commands/github-issue.md +0 -0
  30. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/commands/smells.md +0 -0
  31. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/commands/work.md +0 -0
  32. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/commands/workflow.md +0 -0
  33. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/delta/2025-01-05-baseline.yml +0 -0
  34. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/delta/fix-text-alignment-layout-task3.md +0 -0
  35. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/delta/task4_ui_formatting_fix.md +0 -0
  36. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/delta/v0.0.53_to_v0.0.54.diff +0 -0
  37. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/development/always-on-display-implementation.md +0 -0
  38. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/development/cli-json-recovery-incident.md +0 -0
  39. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/development/directory-caching-optimization.md +0 -0
  40. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/development/esc-investigation/ESC_KEY_INVESTIGATION.md +0 -0
  41. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/development/esc-investigation/ESC_KEY_STREAMING_ANALYSIS.md +0 -0
  42. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/development/hatch-commands.md +0 -0
  43. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/development/phase5-prompt-injection-system.md +0 -0
  44. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/metadata/components.yml +0 -0
  45. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/metadata/hotspots.txt +0 -0
  46. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/patterns/json_retry_implementation.md +0 -0
  47. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/qa/fix-agent-errors.yml +0 -0
  48. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/qa/fix-publish-script.yml +0 -0
  49. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/qa/fix-runtime-warnings.yml +0 -0
  50. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/README.md +0 -0
  51. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/active/task_json_retry_implementation_summary_2025-07-24_13-05-40.md +0 -0
  52. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/active/task_standardize_ui_formatting_patterns_2025-07-23_20-43-28.md +0 -0
  53. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/agents/default/spinner-enhancement-2025-08-07.md +0 -0
  54. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/agents/esc-investigation/scratchpad.md +0 -0
  55. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/agents/phase5-recovery/scratchpad.md +0 -0
  56. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/agents/tech-docs-maintainer/scratchpad.md +0 -0
  57. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/code-synthesis-analyzer_ESC_Double-Press_REPL_Abort_Analysis_2025-08-06_134859_scratchpad.md +0 -0
  58. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Add_Prompt_Injection_to_Remaining_Tools_-_Continuation_2025-08-13_152542_scratchpad.md +0 -0
  59. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Add_Prompt_Injection_to_Remaining_Tools_2025-08-13_152352_scratchpad.md +0 -0
  60. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_CLI_Agent_JSON_Recovery_Investigation_2025-08-12_124206_scratchpad.md +0 -0
  61. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_CLI_Agent_JSON_Recovery_Investigation_2025-08-12_124727_scratchpad.md +0 -0
  62. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Completely_remove_TUNACODE_TASK_COMPLETE_from_plan_mode_2025-08-09_091836_scratchpad.md +0 -0
  63. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Debug_ESC_key_still_not_working_in_approval_prompt_2025-08-09_033534_scratchpad.md +0 -0
  64. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Debug_persistent_KeyboardInterrupt_in_event_loop_2025-08-09_034136_scratchpad.md +0 -0
  65. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Debug_present_plan_tool_registration_and_model_capability_2025-08-09_092923_scratchpad.md +0 -0
  66. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Debug_stuck_double_escape_in_plan_approval_2025-08-09_033214_scratchpad.md +0 -0
  67. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Fix_Application.exit()_failed_error_in_ESC_keybinding_2025-08-09_075607_scratchpad.md +0 -0
  68. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Fix_ESC_double-tap_and_plan_display_issues_2025-08-09_090055_scratchpad.md +0 -0
  69. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Fix_ESC_exceptions_and_missing_present_plan_tool_2025-08-09_081700_scratchpad.md +0 -0
  70. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Fix_agent_not_calling_present_plan_tool_2025-08-09_090827_scratchpad.md +0 -0
  71. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Fix_double_escape_for_planning_mode_approval_prompt_2025-08-09_032759_scratchpad.md +0 -0
  72. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Fix_unhandled_KeyboardInterrupt_exception_in_event_loop_2025-08-09_033843_scratchpad.md +0 -0
  73. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Fixed_Thinking_dots_animation_2025-08-11_121009_scratchpad.md +0 -0
  74. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Force_agent_to_actually_call_present_plan_tool_2025-08-09_091334_scratchpad.md +0 -0
  75. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_GitHub_Directory_Review_2025-08-11_122451_scratchpad.md +0 -0
  76. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Implementing_ESC_key_double-press_for_REPL_abort_2025-08-06_124754_scratchpad.md +0 -0
  77. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_JSON_Recovery_Implementation_2025-08-12_130251_scratchpad.md +0 -0
  78. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Makefile_to_Hatch_Migration_2025-08-07_192356_scratchpad.md +0 -0
  79. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Performance_Optimization_-_Agent_Initialization_2025-08-13_160447_scratchpad.md +0 -0
  80. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Phase_3_-_Glob_Tool_Optimization_2025-08-13_142601_scratchpad.md +0 -0
  81. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Replace_entire_system_prompt_with_tool-only_instructions_2025-08-09_112839_scratchpad.md +0 -0
  82. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_TunaCode_Search_Enhancement_Implementation_2025-08-13_140905_scratchpad.md +0 -0
  83. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Update_Documentation_for_JSON_Recovery_System_2025-08-12_131127_scratchpad.md +0 -0
  84. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/default_Update_documentation_for_always-on_display_UX_improvements_2025-08-12_154818_scratchpad.md +0 -0
  85. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/archived/phase5-recovery_Phase_5_Recovery_Analysis_2025-08-13_145339_scratchpad.md +0 -0
  86. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/locks/code-synthesis-analyzer.lock +0 -0
  87. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/locks/default.lock +0 -0
  88. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/locks/esc-investigation.lock +0 -0
  89. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/locks/phase5-recovery.lock +0 -0
  90. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/locks/tech-docs-maintainer.lock +0 -0
  91. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/code-synthesis-analyzer_ESC_Double-Press_REPL_Abort_Analysis_2025-08-06_134859_scratchpad.md +0 -0
  92. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Add_Prompt_Injection_to_Remaining_Tools_-_Continuation_2025-08-13_152542_scratchpad.md +0 -0
  93. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Add_Prompt_Injection_to_Remaining_Tools_2025-08-13_152352_scratchpad.md +0 -0
  94. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_CLI_Agent_JSON_Recovery_Investigation_2025-08-12_124206_scratchpad.md +0 -0
  95. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_CLI_Agent_JSON_Recovery_Investigation_2025-08-12_124727_scratchpad.md +0 -0
  96. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Completely_remove_TUNACODE_TASK_COMPLETE_from_plan_mode_2025-08-09_091836_scratchpad.md +0 -0
  97. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Debug_ESC_key_still_not_working_in_approval_prompt_2025-08-09_033534_scratchpad.md +0 -0
  98. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Debug_persistent_KeyboardInterrupt_in_event_loop_2025-08-09_034136_scratchpad.md +0 -0
  99. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Debug_present_plan_tool_registration_and_model_capability_2025-08-09_092923_scratchpad.md +0 -0
  100. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Debug_stuck_double_escape_in_plan_approval_2025-08-09_033214_scratchpad.md +0 -0
  101. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Fix_Application.exit()_failed_error_in_ESC_keybinding_2025-08-09_075607_scratchpad.md +0 -0
  102. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Fix_ESC_double-tap_and_plan_display_issues_2025-08-09_090055_scratchpad.md +0 -0
  103. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Fix_ESC_exceptions_and_missing_present_plan_tool_2025-08-09_081700_scratchpad.md +0 -0
  104. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Fix_agent_not_calling_present_plan_tool_2025-08-09_090827_scratchpad.md +0 -0
  105. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Fix_double_escape_for_planning_mode_approval_prompt_2025-08-09_032759_scratchpad.md +0 -0
  106. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Fix_unhandled_KeyboardInterrupt_exception_in_event_loop_2025-08-09_033843_scratchpad.md +0 -0
  107. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Fixed_Thinking_dots_animation_2025-08-11_121009_scratchpad.md +0 -0
  108. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Force_agent_to_actually_call_present_plan_tool_2025-08-09_091334_scratchpad.md +0 -0
  109. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_GitHub_Directory_Review_2025-08-11_122451_scratchpad.md +0 -0
  110. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Implementing_ESC_key_double-press_for_REPL_abort_2025-08-06_124754_scratchpad.md +0 -0
  111. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_JSON_Recovery_Implementation_2025-08-12_130251_scratchpad.md +0 -0
  112. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Makefile_to_Hatch_Migration_2025-08-07_192356_scratchpad.md +0 -0
  113. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Performance_Optimization_-_Agent_Initialization_2025-08-13_160447_scratchpad.md +0 -0
  114. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Phase_3_-_Glob_Tool_Optimization_2025-08-13_142601_scratchpad.md +0 -0
  115. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Replace_entire_system_prompt_with_tool-only_instructions_2025-08-09_112839_scratchpad.md +0 -0
  116. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_TunaCode_Search_Enhancement_Implementation_2025-08-13_140905_scratchpad.md +0 -0
  117. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Update_Documentation_for_JSON_Recovery_System_2025-08-12_131127_scratchpad.md +0 -0
  118. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/default_Update_documentation_for_always-on_display_UX_improvements_2025-08-12_154818_scratchpad.md +0 -0
  119. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/scratchpad/shared/done_tasks/phase5-recovery_Phase_5_Recovery_Analysis_2025-08-13_145339_scratchpad.md +0 -0
  120. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/tech-docs-maintainer.md +0 -0
  121. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.claude/test_suite_issues_resolved.md +0 -0
  122. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.env.example +0 -0
  123. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.github/pull_request_template.md +0 -0
  124. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.github/scripts/check_file_size.py +0 -0
  125. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.github/workflows/lint.yml +0 -0
  126. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.gitignore +0 -0
  127. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.taskmaster/CLAUDE.md +0 -0
  128. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.taskmaster/config.json +0 -0
  129. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.taskmaster/docs/prd.txt +0 -0
  130. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.taskmaster/state.json +0 -0
  131. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.taskmaster/tasks/task_001.txt +0 -0
  132. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.taskmaster/tasks/task_002.txt +0 -0
  133. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.taskmaster/tasks/task_003.txt +0 -0
  134. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.taskmaster/tasks/task_004.txt +0 -0
  135. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.taskmaster/tasks/task_005.txt +0 -0
  136. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.taskmaster/tasks/task_006.txt +0 -0
  137. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.taskmaster/tasks/tasks.json +0 -0
  138. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/.taskmaster/templates/example_prd.txt +0 -0
  139. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/CLAUDE.md +0 -0
  140. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/LICENSE +0 -0
  141. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/MANIFEST.in +0 -0
  142. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/README.md +0 -0
  143. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/SEARCH_ENHANCEMENT_PLAN.md +0 -0
  144. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/assets/tunacode_example.png +0 -0
  145. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/documentation/README.md +0 -0
  146. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/documentation/agent/TOOLS_WORKFLOW.md +0 -0
  147. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/documentation/agent/agent-inspo.md +0 -0
  148. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/documentation/agent/how-tunacode-agent-works.md +0 -0
  149. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/documentation/agent/main-agent-architecture.md +0 -0
  150. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/documentation/agent/swepmini-example.md +0 -0
  151. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/documentation/configuration/config-file-example.md +0 -0
  152. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/documentation/configuration/logging-configuration.md +0 -0
  153. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/documentation/development/codebase-hygiene.md +0 -0
  154. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/documentation/development/hatch-build-system.md +0 -0
  155. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/documentation/development/performance-optimizations.md +0 -0
  156. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/documentation/development/prompt-principles.md +0 -0
  157. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/documentation/ui/ui-architecture.md +0 -0
  158. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/example.md +0 -0
  159. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/activeContext.md +0 -0
  160. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/locks/claude.lock +0 -0
  161. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/locks/default.lock +0 -0
  162. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/locks/main.lock +0 -0
  163. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/locks/task-15.lock +0 -0
  164. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/locks/task17.lock +0 -0
  165. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/locks/tunacode.lock +0 -0
  166. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/locks/workflow.lock +0 -0
  167. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/memory-bank.md +0 -0
  168. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/productContext.md +0 -0
  169. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/progress.md +0 -0
  170. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/projectbrief.md +0 -0
  171. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/shared/done_tasks/claude_Task_18:_Create_comprehensive_test_suite_for_multi-turn_retry_bug_fix_2025-07-29_153844_scratchpad.md +0 -0
  172. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/shared/done_tasks/default_Task_11:_Create_template_directory_structure_for_TunaCode_2025-08-02_132101_scratchpad.md +0 -0
  173. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/shared/done_tasks/default_Task_11:_Update_setup_dev_env.sh_script_-_COMPLETED_2025-07-29_111547_scratchpad.md +0 -0
  174. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/shared/done_tasks/default_Task_12:_Create_Template_dataclass_and_TemplateLoader_class_2025-08-02_132215_scratchpad.md +0 -0
  175. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/shared/done_tasks/default_Task_12:_pyproject.toml_updates_2025-07-29_112303_scratchpad.md +0 -0
  176. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/shared/done_tasks/default_Task_13:_Add_active_template_property_to_ToolHandler_2025-08-02_132326_scratchpad.md +0 -0
  177. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/shared/done_tasks/default_Task_14:_Create_TemplateCommand_class_with_subcommands_2025-08-02_132621_scratchpad.md +0 -0
  178. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/shared/done_tasks/default_Task_15:_Create_example_JSON_templates_2025-08-02_132813_scratchpad.md +0 -0
  179. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/shared/done_tasks/default_Tasks_11-13:_Setup_robustness_and_documentation_2025-07-29_113044_scratchpad.md +0 -0
  180. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/shared/done_tasks/main_Task_16:_Error_synthesis_system_implementation_complete_2025-07-29_150745_scratchpad.md +0 -0
  181. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/shared/done_tasks/task-15_Task_15:_Implement_retry_limit_mechanism_2025-07-29_145737_scratchpad.md +0 -0
  182. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/shared/done_tasks/task17_Task_17:_Fix_message_history_cleanup_in_patch_tool_messages()_2025-07-29_152006_scratchpad.md +0 -0
  183. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/shared/done_tasks/tunacode_Task_14_Completed:_Defensive_Type_Checking_in__attempt_tool_recovery()_2025-07-29_144542_scratchpad.md +0 -0
  184. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/shared/done_tasks/workflow_Task_6:_Implement_Multi-Turn_Recursive_Loop_for_Complex_Task_Decomposition_2025-07-23_213518_scratchpad.md +0 -0
  185. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/systemPatterns.md +0 -0
  186. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/memory-bank/techContext.md +0 -0
  187. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/pytest.ini +0 -0
  188. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/scripts/check-file-length.sh +0 -0
  189. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/scripts/download_ripgrep.py +0 -0
  190. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/scripts/playwright_cache.py +0 -0
  191. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/scripts/publish_to_pip.sh +0 -0
  192. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/scripts/setup_dev_env.sh +0 -0
  193. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/scripts/startup_timer.py +0 -0
  194. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/scripts/utils/vulture_whitelist.py +0 -0
  195. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/scripts/verify_dev_env.sh +0 -0
  196. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/setup.py +0 -0
  197. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/README.md +0 -0
  198. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/__init__.py +0 -0
  199. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/__init__.py +0 -0
  200. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/__init__.py +0 -0
  201. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/commands/__init__.py +0 -0
  202. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/commands/base.py +0 -0
  203. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/commands/implementations/__init__.py +0 -0
  204. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/commands/implementations/conversation.py +0 -0
  205. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/commands/implementations/debug.py +0 -0
  206. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/commands/implementations/development.py +0 -0
  207. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/commands/implementations/model.py +0 -0
  208. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/commands/implementations/plan.py +0 -0
  209. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/commands/implementations/template.py +0 -0
  210. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/commands/implementations/todo.py +0 -0
  211. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/commands/registry.py +0 -0
  212. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/commands/template_shortcut.py +0 -0
  213. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/main.py +0 -0
  214. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/repl.py +0 -0
  215. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/repl_components/__init__.py +0 -0
  216. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/repl_components/command_parser.py +0 -0
  217. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/repl_components/error_recovery.py +0 -0
  218. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/repl_components/output_display.py +0 -0
  219. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/cli/repl_components/tool_executor.py +0 -0
  220. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/configuration/__init__.py +0 -0
  221. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/configuration/models.py +0 -0
  222. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/configuration/settings.py +0 -0
  223. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/context.py +0 -0
  224. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/__init__.py +0 -0
  225. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/agents/__init__.py +0 -0
  226. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/agents/agent_components/__init__.py +0 -0
  227. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/agents/agent_components/agent_config.py +0 -0
  228. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/agents/agent_components/agent_helpers.py +0 -0
  229. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/agents/agent_components/json_tool_parser.py +0 -0
  230. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/agents/agent_components/message_handler.py +0 -0
  231. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/agents/agent_components/node_processor.py +0 -0
  232. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/agents/agent_components/response_state.py +0 -0
  233. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/agents/agent_components/result_wrapper.py +0 -0
  234. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/agents/agent_components/task_completion.py +0 -0
  235. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/agents/agent_components/tool_buffer.py +0 -0
  236. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/agents/agent_components/tool_executor.py +0 -0
  237. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/agents/agent_components/truncation_checker.py +0 -0
  238. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/agents/main.py +0 -0
  239. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/agents/utils.py +0 -0
  240. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/background/__init__.py +0 -0
  241. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/background/manager.py +0 -0
  242. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/code_index.py +0 -0
  243. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/llm/__init__.py +0 -0
  244. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/logging/__init__.py +0 -0
  245. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/logging/config.py +0 -0
  246. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/logging/formatters.py +0 -0
  247. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/logging/handlers.py +0 -0
  248. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/logging/logger.py +0 -0
  249. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/setup/__init__.py +0 -0
  250. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/setup/agent_setup.py +0 -0
  251. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/setup/base.py +0 -0
  252. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/setup/config_setup.py +0 -0
  253. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/setup/coordinator.py +0 -0
  254. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/setup/environment_setup.py +0 -0
  255. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/setup/git_safety_setup.py +0 -0
  256. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/setup/template_setup.py +0 -0
  257. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/state.py +0 -0
  258. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/token_usage/api_response_parser.py +0 -0
  259. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/token_usage/cost_calculator.py +0 -0
  260. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/token_usage/usage_tracker.py +0 -0
  261. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/core/tool_handler.py +0 -0
  262. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/exceptions.py +0 -0
  263. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/prompts/system.md.bak +0 -0
  264. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/py.typed +0 -0
  265. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/services/__init__.py +0 -0
  266. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/services/mcp.py +0 -0
  267. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/setup.py +0 -0
  268. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/templates/__init__.py +0 -0
  269. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/templates/loader.py +0 -0
  270. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/__init__.py +0 -0
  271. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/base.py +0 -0
  272. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/bash.py +0 -0
  273. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/exit_plan_mode.py +0 -0
  274. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/glob.py +0 -0
  275. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/grep.py +0 -0
  276. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/grep_components/__init__.py +0 -0
  277. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/grep_components/file_filter.py +0 -0
  278. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/grep_components/pattern_matcher.py +0 -0
  279. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/grep_components/result_formatter.py +0 -0
  280. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/grep_components/search_result.py +0 -0
  281. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/list_dir.py +0 -0
  282. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/present_plan.py +0 -0
  283. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/prompts/bash_prompt.xml +0 -0
  284. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/prompts/exit_plan_mode_prompt.xml +0 -0
  285. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/prompts/glob_prompt.xml +0 -0
  286. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/prompts/grep_prompt.xml +0 -0
  287. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/prompts/list_dir_prompt.xml +0 -0
  288. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/prompts/present_plan_prompt.xml +0 -0
  289. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/prompts/read_file_prompt.xml +0 -0
  290. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/prompts/run_command_prompt.xml +0 -0
  291. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/prompts/todo_prompt.xml +0 -0
  292. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/prompts/update_file_prompt.xml +0 -0
  293. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/prompts/write_file_prompt.xml +0 -0
  294. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/read_file.py +0 -0
  295. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/run_command.py +0 -0
  296. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/schema_assembler.py +0 -0
  297. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/todo.py +0 -0
  298. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/update_file.py +0 -0
  299. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/tools/write_file.py +0 -0
  300. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/types.py +0 -0
  301. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/ui/__init__.py +0 -0
  302. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/ui/completers.py +0 -0
  303. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/ui/console.py +0 -0
  304. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/ui/constants.py +0 -0
  305. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/ui/decorators.py +0 -0
  306. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/ui/input.py +0 -0
  307. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/ui/keybindings.py +0 -0
  308. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/ui/lexers.py +0 -0
  309. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/ui/logging_compat.py +0 -0
  310. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/ui/output.py +0 -0
  311. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/ui/panels.py +0 -0
  312. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/ui/prompt_manager.py +0 -0
  313. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/ui/tool_descriptions.py +0 -0
  314. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/ui/tool_ui.py +0 -0
  315. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/ui/utils.py +0 -0
  316. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/ui/validators.py +0 -0
  317. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/utils/__init__.py +0 -0
  318. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/utils/bm25.py +0 -0
  319. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/utils/diff_utils.py +0 -0
  320. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/utils/file_utils.py +0 -0
  321. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/utils/import_cache.py +0 -0
  322. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/utils/json_utils.py +0 -0
  323. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/utils/message_utils.py +0 -0
  324. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/utils/retry.py +0 -0
  325. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/utils/ripgrep.py +0 -0
  326. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/utils/security.py +0 -0
  327. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/utils/system.py +0 -0
  328. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/utils/text_utils.py +0 -0
  329. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/utils/token_counter.py +0 -0
  330. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/src/tunacode/utils/user_configuration.py +0 -0
  331. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/CHARACTERIZATION_README.md +0 -0
  332. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/CHARACTERIZATION_TEST_PLAN.md +0 -0
  333. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/CHARACTERIZATION_TEST_PLAN_AGENT_MAIN.md +0 -0
  334. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/CHARACTERIZATION_TEST_PLAN_COMMANDS.md +0 -0
  335. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/FILE_OPERATIONS_TEST_GUIDE.md +0 -0
  336. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/__init__.py +0 -0
  337. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/agent/__init__.py +0 -0
  338. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/agent/conftest.py +0 -0
  339. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/agent/test_agent_creation.py +0 -0
  340. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/agent/test_json_tool_parsing.py +0 -0
  341. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/agent/test_process_node.py +0 -0
  342. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/agent/test_process_request.py +0 -0
  343. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/agent/test_tool_message_patching.py +0 -0
  344. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/background/test_background_edge_cases.py +0 -0
  345. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/background/test_cleanup.py +0 -0
  346. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/background/test_task_cancellation.py +0 -0
  347. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/background/test_task_creation.py +0 -0
  348. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/background/test_task_execution.py +0 -0
  349. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/code_index/test_cache_management.py +0 -0
  350. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/code_index/test_file_scanning.py +0 -0
  351. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/code_index/test_index_building.py +0 -0
  352. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/code_index/test_search_operations.py +0 -0
  353. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/code_index/test_symbol_extraction.py +0 -0
  354. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/commands/__init__.py +0 -0
  355. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/commands/test_init_command.py +0 -0
  356. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/conftest.py +0 -0
  357. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/context/README.md +0 -0
  358. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/context/__init__.py +0 -0
  359. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/context/test_context_acceptance.py +0 -0
  360. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/context/test_context_integration.py +0 -0
  361. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/context/test_context_loading.py +0 -0
  362. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/context/test_tunacode_logging.py +0 -0
  363. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/repl/test_command_parsing.py +0 -0
  364. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/repl/test_error_handling.py +0 -0
  365. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/repl/test_escape_key_behavior.py +0 -0
  366. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/repl/test_input_handling.py +0 -0
  367. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/repl/test_keyboard_interrupts.py +0 -0
  368. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/repl/test_multiline_input.py +0 -0
  369. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/repl/test_output_display_logic.py +0 -0
  370. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/repl/test_repl_initialization.py +0 -0
  371. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/repl/test_session_flow.py +0 -0
  372. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/services/test_error_recovery.py +0 -0
  373. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/services/test_llm_routing.py +0 -0
  374. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/services/test_mcp_integration.py +0 -0
  375. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/services/test_service_lifecycle.py +0 -0
  376. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/state/test_agent_tracking.py +0 -0
  377. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/state/test_message_history.py +0 -0
  378. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/state/test_permissions.py +0 -0
  379. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/state/test_session_management.py +0 -0
  380. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/state/test_state_initialization.py +0 -0
  381. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/state/test_user_config.py +0 -0
  382. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/test_characterization_commands.py +0 -0
  383. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/test_characterization_grep.py +0 -0
  384. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/test_characterization_main.py +0 -0
  385. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/test_characterization_repl.py +0 -0
  386. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/ui/test_async_ui.py +0 -0
  387. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/ui/test_console_output.py +0 -0
  388. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/ui/test_diff_display.py +0 -0
  389. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/ui/test_prompt_rendering.py +0 -0
  390. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/ui/test_spinner_messages.py +0 -0
  391. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/ui/test_tool_confirmations.py +0 -0
  392. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/utils/test_expand_file_refs.py +0 -0
  393. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/utils/test_file_operations.py +0 -0
  394. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/utils/test_git_commands.py +0 -0
  395. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/utils/test_token_counting.py +0 -0
  396. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/characterization/utils/test_utils_edge_cases.py +0 -0
  397. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/conftest.py +0 -0
  398. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/test_agent_output_formatting.py +0 -0
  399. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/test_command_parser_retry.py +0 -0
  400. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/test_completion_detection.py +0 -0
  401. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/test_glob_phase3.py +0 -0
  402. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/test_json_concatenation_recovery.py +0 -0
  403. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/test_json_retry.py +0 -0
  404. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/test_logging_config.py +0 -0
  405. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/test_phase2_type_hints.py +0 -0
  406. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/test_plan_mode.py +0 -0
  407. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/test_prompt_changes_validation.py +0 -0
  408. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/test_prompt_injection.py +0 -0
  409. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/test_security.py +0 -0
  410. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/test_spinner_updates.py +0 -0
  411. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/test_tool_batching_retry.py +0 -0
  412. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tests/unit/test_constants_enums.py +0 -0
  413. {tunacode_cli-0.0.62 → tunacode_cli-0.0.64}/tools/emoji_cleaner.py +0 -0
@@ -0,0 +1,102 @@
1
+ # UV + Hatch Setup Documentation - COMPLETED
2
+
3
+ ## Overview
4
+ This project uses **Hatch** with **UV** as the package installer for fast, reliable dependency management. Successfully implemented and published v0.0.62.
5
+
6
+ ## Final Working Configuration
7
+
8
+ ### pyproject.toml Setup
9
+ ```toml
10
+ [build-system]
11
+ requires = ["hatchling"]
12
+ build-backend = "hatchling.build" # Fixed: was setuptools
13
+
14
+ [tool.hatch.envs.default]
15
+ installer = "uv" # Uses UV for 10-100x faster installs
16
+ features = ["dev"] # Ensures dev dependencies are installed
17
+
18
+ [tool.hatch.build.targets.wheel]
19
+ packages = ["src/tunacode"] # Required for hatchling
20
+
21
+ [project]
22
+ dependencies = [
23
+ "defusedxml", # Fixed: runtime dependency, not dev-only
24
+ # ... other runtime deps
25
+ ]
26
+
27
+ [project.optional-dependencies]
28
+ dev = [
29
+ "build", "twine", "ruff", "pytest", "pre-commit",
30
+ # ... dev-only deps (defusedxml moved to runtime)
31
+ ]
32
+ ```
33
+
34
+ ## Key Fixes Applied
35
+
36
+ ### 1. Build System
37
+ - **Fixed**: Changed from `setuptools` to `hatchling` build-backend
38
+ - **Added**: `[tool.hatch.build.targets.wheel]` configuration
39
+
40
+ ### 2. Dependencies
41
+ - **Fixed**: Moved `defusedxml` from dev to runtime dependencies (used in bash tool)
42
+ - **Root cause**: Dependency not installed in hatch environment despite being in pyproject.toml
43
+
44
+ ### 3. Publishing Script
45
+ - **Fixed**: Removed problematic `uv sync --dev` command
46
+ - **Uses**: Pure Hatch workflow with UV as installer
47
+
48
+ ### 4. Install Script Enhancement
49
+ - **Fixed**: Detection logic now distinguishes wrapper scripts from actual binaries
50
+ - **Handles**: venv+wrapper, user site-packages, and system installations correctly
51
+ - **Added**: Automatic creation of `~/.config/tunacode.json` with sensible defaults
52
+ - **Enhanced**: Comprehensive post-install guidance with next steps
53
+ - **Updated**: Default model changed to `openrouter:openai/gpt-4.1` for better accessibility
54
+
55
+ ## Final Result
56
+ - ✅ Published tunacode-cli v0.0.62 to PyPI
57
+ - ✅ All 298 tests passing
58
+ - ✅ Hatch + UV working complementarily
59
+ - ✅ Clean install/update process for users
60
+ - ✅ Auto-created config file with OpenRouter defaults
61
+ - ✅ Enhanced user onboarding with clear next steps
62
+
63
+ ## Recent Improvements (Latest Updates)
64
+
65
+ ### Enhanced Installation Experience
66
+ - **Config File Creation**: Install script now automatically creates `~/.config/tunacode.json` with sensible defaults
67
+ - **OpenRouter Default**: Changed default model to `openrouter:openai/gpt-4.1` for broader model access
68
+ - **User Guidance**: Post-install messages provide clear next steps:
69
+ 1. API key configuration options
70
+ 2. Reference to `tunacode --setup` wizard
71
+ 3. Getting started commands
72
+
73
+ ### Example Fresh Installation Flow
74
+ ```bash
75
+ # Install creates config automatically
76
+ ./scripts/install_linux.sh
77
+
78
+ # Results in:
79
+ # ✅ ~/.config/tunacode.json created with OpenRouter defaults
80
+ # ✅ Clear guidance about API key setup
81
+ # ✅ References to setup wizard and documentation
82
+ ```
83
+
84
+ ### Configuration Auto-Creation
85
+ The install script now creates initial config with:
86
+ - Default model: `"openrouter:openai/gpt-4.1"`
87
+ - Empty API key placeholders for all providers
88
+ - Sensible defaults for all settings
89
+ - Proper JSON structure ready for user customization
90
+
91
+ ## Usage
92
+
93
+ ```bash
94
+ # Development workflow
95
+ hatch run test # Run tests
96
+ hatch run lint-check # Run linting
97
+ hatch build # Build package
98
+ ./scripts/publish_to_pip.sh # Publish to PyPI
99
+
100
+ # User installation (automatic UV detection + config creation)
101
+ ./scripts/install_linux.sh # Creates venv + wrapper + config for global use
102
+ ```
@@ -36,7 +36,7 @@ _Updated: 2025-08-14_
36
36
  ## Installation Types Supported
37
37
 
38
38
  1. **Venv**: `~/.tunacode-venv/` (recommended)
39
- 2. **Global System**: `/usr/local/bin/`, `/usr/bin/`
39
+ 2. **Global System**: `/usr/local/bin/`, `/usr/bin/`
40
40
  3. **Global User**: `pip install --user`
41
41
  4. **Pipx**: `pipx install tunacode-cli`
42
42
 
@@ -64,4 +64,4 @@ Successfully tested scenarios:
64
64
  - Mixed venv + system pip installations
65
65
  - UV available vs unavailable environments
66
66
  - Multiple installation cleanup
67
- - Failed installation rollback
67
+ - Failed installation rollback
@@ -12,3 +12,5 @@ _Agent: default
12
12
  [8] Uninstalled existing tunacode installation: removed venv at /root/.tunacode-venv and wrapper script issues resolved
13
13
  [9] Validation SUCCESS: hatch run lint-check passed - all code formatting and linting checks passed
14
14
  [10] PUBLISHING SUCCESS: Script successfully validated all tests (298 passed), bumped version to 0.0.62, and proceeding with PyPI upload
15
+ [11] 🎉 PUBLISHING COMPLETE: tunacode-cli v0.0.62 successfully published to PyPI at https://pypi.org/project/tunacode-cli/0.0.62/
16
+ [12] INSTALL SCRIPT IMPROVEMENT: Enhanced detection logic to distinguish between wrapper scripts and actual user installations. Now properly detects: 1) venv+wrapper installs, 2) user site-packages installs, 3) system installs
@@ -119,7 +119,8 @@
119
119
  "Bash(test-env/bin/tunacode:*)",
120
120
  "Bash(hatch env remove:*)",
121
121
  "Bash(hatch env:*)",
122
- "Bash(hatch run pip:*)"
122
+ "Bash(hatch run pip:*)",
123
+ "Bash(./scripts/install_linux.sh:*)"
123
124
  ]
124
125
  },
125
126
  "enableAllProjectMcpServers": true,
@@ -59,9 +59,11 @@ repos:
59
59
 
60
60
 
61
61
  # Local hooks for project-specific checks
62
+ # Strategy: Use 'hatch run' for commands defined in pyproject.toml scripts
63
+ # Use 'uv run' for standalone tools not managed by hatch environments
62
64
  - repo: local
63
65
  hooks:
64
- # Existing hatch lint check - already runs ruff which respects exclusions
66
+ # Hatch-managed commands (use hatch run for consistency)
65
67
  - id: hatch-lint
66
68
  name: Run hatch lint check
67
69
  entry: hatch run lint
@@ -70,7 +72,7 @@ repos:
70
72
  always_run: true
71
73
  stages: [pre-commit]
72
74
 
73
- # Check for unused imports in changed files only
75
+ # UV-managed standalone tools (not in hatch environments)
74
76
  - id: dead-imports
75
77
  name: Check for unused imports in changed files
76
78
  entry: uv run unimport --check --diff --exclude "venv/*" --gitignore
@@ -78,7 +80,6 @@ repos:
78
80
  files: \.py$
79
81
  stages: [pre-commit]
80
82
 
81
- # Check for dead code in changed files only
82
83
  - id: vulture-changed
83
84
  name: Check for dead code in changed files
84
85
  entry: uv run vulture --min-confidence 80 src/ scripts/utils/vulture_whitelist.py
@@ -87,10 +88,10 @@ repos:
87
88
  exclude: ^(tests/|test_)
88
89
  stages: [pre-commit]
89
90
 
90
- # Run test suite (same as hatch run test)
91
+ # Run test suite using hatch for consistency
91
92
  - id: run-tests
92
93
  name: Run test suite
93
- entry: uv run pytest -q tests/characterization tests/test_security.py tests/test_agent_output_formatting.py tests/test_prompt_changes_validation.py
94
+ entry: hatch run test
94
95
  language: system
95
96
  pass_filenames: false
96
97
  always_run: true
@@ -151,5 +152,6 @@ ci:
151
152
  autoupdate_branch: ''
152
153
  autoupdate_commit_msg: '[pre-commit.ci] pre-commit autoupdate'
153
154
  autoupdate_schedule: weekly
154
- skip: [run-tests, hatch-lint, dead-imports]
155
+ # Skip hooks that require project-specific environment setup
156
+ skip: [run-tests, hatch-lint, dead-imports, vulture-changed]
155
157
  submodules: false
@@ -9,7 +9,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  ### Performance
11
11
 
12
- - **Directory Caching System**: Implemented intelligent directory caching using CodeIndex infrastructure
12
+ - **Tool Prompt Micro-Injection System**: XML-based prompt loading for tools
13
+ - Tool prompts now loaded from dedicated XML files in `tools/prompts/`
14
+ - Uses `defusedxml` for secure XML parsing with fallback mechanisms
15
+ - Added specialized prompts for grep and glob tools
16
+ - Tool parameters loaded from XML with fallbacks to hardcoded defaults
17
+ - Reduced overall context size through targeted prompt injection
18
+
19
+ - **Agent Initialization Caching**: Multiple caching optimizations for startup speed
20
+ - Added `@lru_cache` to XML parsing methods in 8 tool files (~200ms improvement)
21
+ - Module-level agent caching with config validation (~1s improvement)
22
+ - MCP server connection caching with config hash validation (~500ms improvement)
23
+ - Added `clear_all_caches()` function for testing
24
+ - Total improvement: 1.7-2s faster agent initialization
25
+
26
+ - **Directory Caching System**: Intelligent directory caching using CodeIndex infrastructure
13
27
  - Added singleton pattern to CodeIndex with public API and cache freshness tracking
14
28
  - Background pre-warming of directory cache during REPL startup (non-blocking)
15
29
  - Smart `list_dir` tool integration with CodeIndex cache lookup
@@ -18,16 +32,77 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
18
32
  - Automatic cache invalidation with 5-second TTL
19
33
  - Memory efficient: ~1-5MB overhead for typical projects
20
34
 
21
- - **System Prompt Caching**: Added file-based caching for system prompts and TUNACODE.md
35
+ - **System Prompt Caching**: File-based caching for system prompts and TUNACODE.md
22
36
  - **9x faster** system prompt loading with modification time checking
23
37
  - **3-8 second reduction** in agent initialization time
24
38
  - Zero-risk automatic cache invalidation on file changes
25
39
 
40
+ - **Search Infrastructure Foundation**: Base implementation for ripgrep binary management
41
+ - Added foundation for search tool improvements
42
+ - Cross-platform binary management infrastructure
43
+ - Preparation for future search optimizations
44
+
45
+ ### Added
46
+
47
+ - **Tool Enhancement Infrastructure**: XML-based tool prompt system
48
+ - Created `src/tunacode/tools/prompts/` directory for prompt files
49
+ - Added XML prompt files for grep and glob tools
50
+ - Enhanced tool base classes with dynamic prompt loading
51
+
52
+ ### Documentation
53
+
54
+ - Added performance optimization documentation
55
+ - Documented XML-based tool prompt system
56
+ - Updated directory caching technical documentation
57
+ - Added performance guides to documentation index
58
+
59
+ ## [0.0.62] - 2025-08-14
60
+
61
+ ### Added
62
+
63
+ - **Enhanced Installation Experience**: Complete overhaul of user onboarding
64
+ - **Automatic Config Creation**: Install script now creates `~/.config/tunacode.json` with sensible defaults
65
+ - **Comprehensive Setup Guidance**: Post-install messages with clear next steps for API key configuration
66
+ - **Setup Wizard Integration**: Prominent mention of `tunacode --setup` for guided configuration
67
+ - **Default Model Update**: Changed default from OpenAI to `openrouter:openai/gpt-4.1` for broader model access
68
+
69
+ - **UV+Hatch Integration Improvements**: Complete build system enhancements
70
+ - **Dependency Management**: Fixed runtime vs dev dependency issues (moved `defusedxml` to runtime)
71
+ - **Build System**: Migrated to `hatchling` build backend with proper wheel configuration
72
+ - **Publishing Pipeline**: Streamlined publish workflow with pure Hatch+UV integration
73
+
74
+ - **Robust Installation Scripts**: Professional-grade installation and maintenance
75
+ - **Smart Detection**: Install script distinguishes wrapper scripts from actual binaries
76
+ - **Update Logic**: Intelligent update detection for venv, global, and system installations
77
+ - **Comprehensive Uninstall**: Complete removal tool with multi-installation detection
78
+ - **UV Acceleration**: 10-100x faster installs when UV is available with graceful pip fallback
79
+
80
+ ### Changed
81
+
82
+ - **Pre-commit Hook Optimization**: Consistent tool usage strategy
83
+ - Use `hatch run` for commands defined in pyproject.toml scripts
84
+ - Use `uv run` for standalone tools not managed by hatch environments
85
+ - Updated test runner from `uv run pytest` to `hatch run test` for consistency
86
+ - Enhanced CI configuration with appropriate hook skipping
87
+
88
+ - **Development Workflow**: Improved developer experience
89
+ - All 298 tests passing with new build system
90
+ - Optimized pre-commit hooks for faster development cycles
91
+ - Better documentation maintenance with automated quality checks
92
+
93
+ ### Fixed
94
+
95
+ - **Build System Issues**: Resolved setuptools to hatchling migration problems
96
+ - **Dependency Resolution**: Fixed missing runtime dependencies in hatch environments
97
+ - **Install Script**: Added missing print helper functions for consistent colored output
98
+ - **Documentation**: Updated UV+Hatch setup documentation with recent improvements
99
+
26
100
  ### Documentation
27
101
 
28
- - Added comprehensive performance optimization documentation
29
- - Created detailed technical documentation for directory caching system
30
- - Updated documentation index with performance optimization guides
102
+ - **UV+Hatch Setup Guide**: Comprehensive documentation of build system migration
103
+ - **Installation Experience**: Documented automatic config creation and user guidance
104
+ - **Development Workflow**: Updated all build, test, and deployment procedures
105
+ - **Pre-commit Strategy**: Clear guidelines for tool selection and usage
31
106
 
32
107
  ## [0.0.56] - 2025-08-11
33
108
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tunacode-cli
3
- Version: 0.0.62
3
+ Version: 0.0.64
4
4
  Summary: Your agentic CLI developer.
5
5
  Project-URL: Homepage, https://tunacode.xyz/
6
6
  Project-URL: Repository, https://github.com/alchemiststudiosDOTai/tunacode
@@ -5,7 +5,7 @@ build-backend = "hatchling.build"
5
5
  [project]
6
6
  name = "tunacode-cli"
7
7
 
8
- version = "0.0.62"
8
+ version = "0.0.64"
9
9
  description = "Your agentic CLI developer."
10
10
  keywords = ["cli", "agent", "development", "automation"]
11
11
  readme = "README.md"
@@ -170,7 +170,7 @@ typecheck = "mypy src/"
170
170
  security = "bandit -r src/ -ll"
171
171
 
172
172
  # Version management
173
- version = "0.0.62"
173
+ version = "0.0.64"
174
174
 
175
175
  # Release workflow
176
176
  release = [
@@ -21,6 +21,23 @@ BIN_DIR="${HOME}/.local/bin"
21
21
  PYTHON=${PYTHON:-python3}
22
22
  USE_UV=false
23
23
 
24
+ # Function to print colored output
25
+ print_status() {
26
+ echo -e "${BLUE}[INFO]${NC} $1"
27
+ }
28
+
29
+ print_success() {
30
+ echo -e "${GREEN}[SUCCESS]${NC} $1"
31
+ }
32
+
33
+ print_warning() {
34
+ echo -e "${YELLOW}[WARNING]${NC} $1"
35
+ }
36
+
37
+ print_error() {
38
+ echo -e "${RED}[ERROR]${NC} $1"
39
+ }
40
+
24
41
  echo -e "${BLUE}🐟 TunaCode CLI Installer${NC}"
25
42
  echo "================================"
26
43
 
@@ -71,20 +88,27 @@ detect_installations() {
71
88
  fi
72
89
  fi
73
90
 
74
- # Check global user installation
75
- if [ -f "$HOME/.local/bin/tunacode" ] && [ "$HOME/.local/bin/tunacode" != "$BIN_DIR/tunacode" ]; then
76
- found_global_user=true
77
- if "$HOME/.local/bin/tunacode" --version &>/dev/null; then
78
- global_user_working=true
79
- echo -e "${GREEN}✓${NC} Found working global user installation"
91
+ # Check global user installation (distinguish from wrapper script)
92
+ if [ -f "$HOME/.local/bin/tunacode" ]; then
93
+ # Check if it's our wrapper script or actual binary
94
+ if grep -q "\.tunacode-venv/bin/tunacode" "$HOME/.local/bin/tunacode" 2>/dev/null; then
95
+ # This is our wrapper script, not a user install
96
+ echo -e "${BLUE}Found wrapper script pointing to venv${NC}"
80
97
  else
81
- echo -e "${YELLOW}⚠${NC} Found global user installation but it's not working"
98
+ # This is an actual user site-packages installation
99
+ found_global_user=true
100
+ if "$HOME/.local/bin/tunacode" --version &>/dev/null; then
101
+ global_user_working=true
102
+ echo -e "${GREEN}✓${NC} Found working global user installation"
103
+ else
104
+ echo -e "${YELLOW}⚠${NC} Found global user installation but it's not working"
105
+ fi
82
106
  fi
83
107
  fi
84
108
 
85
- # Check wrapper script health
109
+ # Check wrapper script health (only if it's actually our wrapper)
86
110
  local wrapper_status="missing"
87
- if [ -f "$BIN_DIR/tunacode" ]; then
111
+ if [ -f "$BIN_DIR/tunacode" ] && grep -q "\.tunacode-venv/bin/tunacode" "$BIN_DIR/tunacode" 2>/dev/null; then
88
112
  if [ -x "$BIN_DIR/tunacode" ]; then
89
113
  if "$BIN_DIR/tunacode" --version &>/dev/null; then
90
114
  wrapper_status="working"
@@ -97,8 +121,6 @@ detect_installations() {
97
121
  wrapper_status="not_executable"
98
122
  echo -e "${YELLOW}⚠${NC} Wrapper script not executable"
99
123
  fi
100
- else
101
- echo -e "${YELLOW}⚠${NC} No wrapper script found"
102
124
  fi
103
125
 
104
126
  # Export detection results
@@ -452,10 +474,48 @@ if [[ ":$PATH:" != *":$BIN_DIR:"* ]]; then
452
474
  fi
453
475
  fi
454
476
 
455
- # Create config directory (for user config storage)
477
+ # Create config directory and initial config file
456
478
  CONFIG_DIR="${HOME}/.config"
479
+ CONFIG_FILE="$CONFIG_DIR/tunacode.json"
457
480
  mkdir -p "$CONFIG_DIR"
458
481
 
482
+ # Create initial config file if it doesn't exist
483
+ if [ ! -f "$CONFIG_FILE" ]; then
484
+ echo -e "${BLUE}Creating initial configuration file...${NC}"
485
+ cat <<'EOC' >"$CONFIG_FILE"
486
+ {
487
+ "default_model": "openrouter:openai/gpt-4.1",
488
+ "env": {
489
+ "ANTHROPIC_API_KEY": "",
490
+ "GEMINI_API_KEY": "",
491
+ "OPENAI_API_KEY": "",
492
+ "OPENROUTER_API_KEY": ""
493
+ },
494
+ "settings": {
495
+ "max_retries": 10,
496
+ "max_iterations": 40,
497
+ "tool_ignore": ["read_file"],
498
+ "guide_file": "TUNACODE.md",
499
+ "fallback_response": true,
500
+ "fallback_verbosity": "normal",
501
+ "context_window_size": 200000,
502
+ "ripgrep": {
503
+ "use_bundled": false,
504
+ "timeout": 10,
505
+ "max_buffer_size": 1048576,
506
+ "max_results": 100,
507
+ "enable_metrics": false,
508
+ "debug": false
509
+ }
510
+ },
511
+ "mcpServers": {}
512
+ }
513
+ EOC
514
+ print_success "Created config file at $CONFIG_FILE"
515
+ else
516
+ echo -e "${BLUE}Config file already exists at $CONFIG_FILE${NC}"
517
+ fi
518
+
459
519
  # Check if bin directory is in PATH (after our auto-fallback)
460
520
  if [[ ":$PATH:" != *":$BIN_DIR:"* ]]; then
461
521
  if [[ $EUID -eq 0 ]]; then
@@ -469,8 +529,6 @@ if [[ ":$PATH:" != *":$BIN_DIR:"* ]]; then
469
529
  fi
470
530
 
471
531
  echo -e "\n${GREEN}✨ Installation complete!${NC}"
472
- echo -e "\nRun ${BLUE}tunacode${NC} to get started"
473
- echo -e "Run ${BLUE}tunacode --help${NC} for usage information"
474
532
 
475
533
  # Test if we can run tunacode
476
534
  if command -v tunacode &> /dev/null; then
@@ -479,3 +537,16 @@ else
479
537
  echo -e "\n${YELLOW}!${NC} tunacode command not found in PATH"
480
538
  echo -e " Try running: ${GREEN}$BIN_DIR/tunacode${NC}"
481
539
  fi
540
+
541
+ echo ""
542
+ echo -e "${BLUE}🔧 Next Steps:${NC}"
543
+ echo -e "1. ${BLUE}Configure API keys:${NC} Edit ${GREEN}~/.config/tunacode.json${NC}"
544
+ echo -e " - Add your OpenAI, Anthropic, or other provider API keys"
545
+ echo -e " - Or run ${BLUE}tunacode --setup${NC} for guided configuration"
546
+ echo -e ""
547
+ echo -e "2. ${BLUE}Get started:${NC}"
548
+ echo -e " - Run ${BLUE}tunacode${NC} to start an interactive session"
549
+ echo -e " - Run ${BLUE}tunacode --help${NC} for all available options"
550
+ echo -e ""
551
+ echo -e "📖 ${BLUE}Documentation:${NC} Visit the repo for guides and examples"
552
+ echo -e "🔑 ${BLUE}API Keys:${NC} You'll need keys from OpenAI, Anthropic, or OpenRouter to use TunaCode"
@@ -64,9 +64,9 @@ detect_installations() {
64
64
  local global_system_working=false
65
65
  local global_user_working=false
66
66
  local pipx_working=false
67
-
67
+
68
68
  echo -e "${BLUE}Scanning for TunaCode installations...${NC}"
69
-
69
+
70
70
  # Check venv installation
71
71
  if [ -d "$VENV_DIR" ]; then
72
72
  found_venv=true
@@ -81,7 +81,7 @@ detect_installations() {
81
81
  echo -e "${YELLOW}⚠${NC} Found venv directory but no tunacode binary"
82
82
  fi
83
83
  fi
84
-
84
+
85
85
  # Check global system installation
86
86
  if command -v tunacode &>/dev/null; then
87
87
  local tunacode_path=$(command -v tunacode)
@@ -95,7 +95,7 @@ detect_installations() {
95
95
  fi
96
96
  fi
97
97
  fi
98
-
98
+
99
99
  # Check global user installation (direct pip --user installs)
100
100
  if [ -f "$HOME/.local/bin/tunacode" ] && [ "$HOME/.local/bin/tunacode" != "$BIN_DIR/tunacode" ]; then
101
101
  found_global_user=true
@@ -106,7 +106,7 @@ detect_installations() {
106
106
  echo -e "${YELLOW}⚠${NC} Found global user installation but not working"
107
107
  fi
108
108
  fi
109
-
109
+
110
110
  # Check pipx installation
111
111
  if command_exists pipx; then
112
112
  if pipx list 2>/dev/null | grep -q "tunacode"; then
@@ -119,7 +119,7 @@ detect_installations() {
119
119
  fi
120
120
  fi
121
121
  fi
122
-
122
+
123
123
  # Check wrapper script
124
124
  if [ -f "$BIN_DIR/tunacode" ]; then
125
125
  echo -e "${BLUE}Found wrapper script at $BIN_DIR/tunacode${NC}"
@@ -133,7 +133,7 @@ detect_installations() {
133
133
  echo -e "${YELLOW}⚠${NC} Wrapper script not executable"
134
134
  fi
135
135
  fi
136
-
136
+
137
137
  # Export detection results
138
138
  export FOUND_VENV=$found_venv
139
139
  export FOUND_GLOBAL_SYSTEM=$found_global_system
@@ -165,7 +165,7 @@ if [ $installation_count -eq 0 ]; then
165
165
  print_status "Checking for leftover files anyway..."
166
166
  else
167
167
  print_status "Found $installation_count TunaCode installation(s)"
168
-
168
+
169
169
  # If multiple installations, ask user what to remove
170
170
  if [ $installation_count -gt 1 ]; then
171
171
  echo ""
@@ -182,21 +182,21 @@ else
182
182
  echo ""
183
183
  echo -n "Choice (1-3): "
184
184
  read -r choice
185
-
185
+
186
186
  case "$choice" in
187
- 1)
187
+ 1)
188
188
  REMOVE_ALL=true
189
189
  print_status "Will remove all installations"
190
190
  ;;
191
- 2)
191
+ 2)
192
192
  REMOVE_ALL=false
193
193
  print_status "Interactive removal mode"
194
194
  ;;
195
- 3)
195
+ 3)
196
196
  print_status "Uninstall cancelled by user"
197
197
  exit 0
198
198
  ;;
199
- *)
199
+ *)
200
200
  print_error "Invalid choice. Cancelling uninstall."
201
201
  exit 1
202
202
  ;;
@@ -205,10 +205,10 @@ else
205
205
  REMOVE_ALL=true
206
206
  print_status "Single installation detected, will remove it"
207
207
  fi
208
-
208
+
209
209
  echo ""
210
210
  print_status "Proceeding with TunaCode removal..."
211
-
211
+
212
212
  # Remove venv installation
213
213
  if [ "$FOUND_VENV" = true ]; then
214
214
  should_remove=true
@@ -217,7 +217,7 @@ else
217
217
  read -r response
218
218
  [ "$response" != "y" ] && [ "$response" != "Y" ] && should_remove=false
219
219
  fi
220
-
220
+
221
221
  if [ "$should_remove" = true ]; then
222
222
  print_status "Removing venv installation..."
223
223
  if safe_remove "$VENV_DIR"; then
@@ -226,7 +226,7 @@ else
226
226
  fi
227
227
  fi
228
228
  fi
229
-
229
+
230
230
  # Remove pipx installation
231
231
  if [ "$FOUND_PIPX" = true ]; then
232
232
  should_remove=true
@@ -235,7 +235,7 @@ else
235
235
  read -r response
236
236
  [ "$response" != "y" ] && [ "$response" != "Y" ] && should_remove=false
237
237
  fi
238
-
238
+
239
239
  if [ "$should_remove" = true ]; then
240
240
  print_status "Removing pipx installation..."
241
241
  if pipx uninstall tunacode; then
@@ -247,7 +247,7 @@ else
247
247
  fi
248
248
  fi
249
249
  fi
250
-
250
+
251
251
  # Remove global user installation
252
252
  if [ "$FOUND_GLOBAL_USER" = true ]; then
253
253
  should_remove=true
@@ -256,12 +256,12 @@ else
256
256
  read -r response
257
257
  [ "$response" != "y" ] && [ "$response" != "Y" ] && should_remove=false
258
258
  fi
259
-
259
+
260
260
  if [ "$should_remove" = true ]; then
261
261
  print_status "Removing global user installation..."
262
262
  # Try different methods for user installations
263
263
  local removed_via_pip=false
264
-
264
+
265
265
  # Try UV first if available
266
266
  if command_exists uv; then
267
267
  if uv pip uninstall tunacode-cli --user 2>/dev/null; then
@@ -269,7 +269,7 @@ else
269
269
  print_success "Removed via UV"
270
270
  fi
271
271
  fi
272
-
272
+
273
273
  # Fallback to pip
274
274
  if [ "$removed_via_pip" = false ]; then
275
275
  if pip uninstall tunacode-cli -y --user 2>/dev/null; then
@@ -282,7 +282,7 @@ else
282
282
  fi
283
283
  fi
284
284
  fi
285
-
285
+
286
286
  if [ "$removed_via_pip" = true ]; then
287
287
  found_installation=true
288
288
  ((removed_count++))
@@ -291,7 +291,7 @@ else
291
291
  fi
292
292
  fi
293
293
  fi
294
-
294
+
295
295
  # Remove global system installation
296
296
  if [ "$FOUND_GLOBAL_SYSTEM" = true ]; then
297
297
  should_remove=true
@@ -300,11 +300,11 @@ else
300
300
  read -r response
301
301
  [ "$response" != "y" ] && [ "$response" != "Y" ] && should_remove=false
302
302
  fi
303
-
303
+
304
304
  if [ "$should_remove" = true ]; then
305
305
  print_status "Removing global system installation..."
306
306
  local removed_via_pip=false
307
-
307
+
308
308
  # Try UV first if available
309
309
  if command_exists uv; then
310
310
  if uv pip uninstall tunacode-cli --system 2>/dev/null; then
@@ -312,7 +312,7 @@ else
312
312
  print_success "Removed via UV --system"
313
313
  fi
314
314
  fi
315
-
315
+
316
316
  # Fallback to pip
317
317
  if [ "$removed_via_pip" = false ]; then
318
318
  if pip uninstall tunacode-cli -y 2>/dev/null; then
@@ -331,7 +331,7 @@ else
331
331
  fi
332
332
  fi
333
333
  fi
334
-
334
+
335
335
  if [ "$removed_via_pip" = true ]; then
336
336
  found_installation=true
337
337
  ((removed_count++))