tunacode-cli 0.0.73__tar.gz → 0.0.76__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 (464) hide show
  1. tunacode_cli-0.0.76/.github/workflows/publish.yml +75 -0
  2. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/PKG-INFO +1 -1
  3. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/README.md +3 -1
  4. tunacode_cli-0.0.76/documentation/agent/agent-flow.md +85 -0
  5. tunacode_cli-0.0.76/documentation/agent-tools/tools-architecture.md +222 -0
  6. tunacode_cli-0.0.76/documentation/changelog/CHANGELOG.md +188 -0
  7. tunacode_cli-0.0.76/documentation/configuration/environment-variables.md +195 -0
  8. tunacode_cli-0.0.76/documentation/configuration/tunacode-json-example.md +125 -0
  9. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76/documentation/configuration}/tunacode.json.example +1 -0
  10. tunacode_cli-0.0.76/documentation/development/publishing-workflow.md +119 -0
  11. tunacode_cli-0.0.76/memory-bank/execute/2025-09-12_15-20-00_model_selection_config_persistence_fix.md +146 -0
  12. tunacode_cli-0.0.76/memory-bank/plan/2025-09-12_12-20-00_global_graceful_error_handling_implementation.md +399 -0
  13. tunacode_cli-0.0.76/memory-bank/plan/2025-09-12_15-08-14_model_selection_config_persistence_fix.md +208 -0
  14. tunacode_cli-0.0.76/memory-bank/research/2025-09-12_12-15-48_global_graceful_error_handling_analysis.md +126 -0
  15. tunacode_cli-0.0.76/memory-bank/research/2025-09-12_14-54-43_model_configuration_crash_analysis.md +130 -0
  16. tunacode_cli-0.0.76/memory-bank/research/2025-09-12_15-06-58_model_selection_config_update_issue.md +63 -0
  17. tunacode_cli-0.0.76/memory-bank/research/2025-09-12_ai-agent-tools-architecture.md +222 -0
  18. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/pyproject.toml +2 -2
  19. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/implementations/model.py +33 -5
  20. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/constants.py +1 -1
  21. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/agents/agent_components/node_processor.py +16 -1
  22. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/agents/main.py +55 -9
  23. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/setup/config_setup.py +67 -224
  24. tunacode_cli-0.0.76/src/tunacode/core/setup/config_wizard.py +228 -0
  25. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/state.py +3 -1
  26. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/prompts/system.md +43 -29
  27. tunacode_cli-0.0.76/tests/characterization/commands/test_model_selection_persistence.py +237 -0
  28. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/state/test_state_initialization.py +1 -1
  29. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/test_characterization_commands.py +7 -2
  30. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/test_prompt_changes_validation.py +4 -1
  31. tunacode_cli-0.0.76/tests/unit/commands/test_model_selection_persistence_new.py +118 -0
  32. tunacode_cli-0.0.76/tests/unit/config/test_user_configuration_permissions.py +95 -0
  33. tunacode_cli-0.0.73/.claude/settings.local.json +0 -133
  34. tunacode_cli-0.0.73/.taskmaster/CLAUDE.md +0 -417
  35. tunacode_cli-0.0.73/.taskmaster/config.json +0 -35
  36. tunacode_cli-0.0.73/.taskmaster/docs/prd.txt +0 -322
  37. tunacode_cli-0.0.73/.taskmaster/state.json +0 -6
  38. tunacode_cli-0.0.73/.taskmaster/tasks/task_001.txt +0 -14
  39. tunacode_cli-0.0.73/.taskmaster/tasks/task_002.txt +0 -11
  40. tunacode_cli-0.0.73/.taskmaster/tasks/task_003.txt +0 -11
  41. tunacode_cli-0.0.73/.taskmaster/tasks/task_004.txt +0 -11
  42. tunacode_cli-0.0.73/.taskmaster/tasks/task_005.txt +0 -11
  43. tunacode_cli-0.0.73/.taskmaster/tasks/task_006.txt +0 -54
  44. tunacode_cli-0.0.73/.taskmaster/tasks/tasks.json +0 -369
  45. tunacode_cli-0.0.73/.taskmaster/templates/example_prd.txt +0 -47
  46. tunacode_cli-0.0.73/CHANGELOG.md +0 -107
  47. tunacode_cli-0.0.73/documentation/changelog/CHANGELOG.md +0 -61
  48. tunacode_cli-0.0.73/planner.md +0 -29
  49. tunacode_cli-0.0.73/scripts/publish_to_pip.sh +0 -146
  50. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/MEMORY_ANCHOR_SPEC.md +0 -0
  51. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/NEXT_PR_RULES.md +0 -0
  52. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/README.md +0 -0
  53. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/agents/antipattern-sniffer.md +0 -0
  54. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/agents/bug-context-analyzer.md +0 -0
  55. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/agents/code-synthesis-analyzer.md +0 -0
  56. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/agents/codebase-analyzer.md +0 -0
  57. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/agents/codebase-locator.md +0 -0
  58. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/agents/context-synthesis.md +0 -0
  59. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/agents/documentation-synthesis-qa.md +0 -0
  60. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/agents/expert-debugger.md +0 -0
  61. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/agents/phased-task-processor.md +0 -0
  62. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/agents/prompt-engineer.md +0 -0
  63. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/agents/rapid-code-synthesis-qa.md +0 -0
  64. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/agents/tech-docs-maintainer.md +0 -0
  65. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/anchors.json +0 -0
  66. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/commands/CE/QA.md +0 -0
  67. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/commands/CE/documentation-synthesis.md +0 -0
  68. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/commands/CE/execute.md +0 -0
  69. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/commands/CE/plan.md +0 -0
  70. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/commands/CE/research.md +0 -0
  71. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/commands/context-engineer/QA.md +0 -0
  72. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/commands/context-engineer/documentation-synthesis.md +0 -0
  73. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/commands/context-engineer/execute.md +0 -0
  74. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/commands/context-engineer/plan.md +0 -0
  75. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/commands/context-engineer/research.md +0 -0
  76. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/commands/deploy.md +0 -0
  77. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/commands/github-issue.md +0 -0
  78. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/commands/phaser.md +0 -0
  79. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/commands/smart-git.md +0 -0
  80. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/commands/smells.md +0 -0
  81. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/commands/work.md +0 -0
  82. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/commands/workflow.md +0 -0
  83. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/delta/2025-01-05-baseline.yml +0 -0
  84. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/delta/fix-text-alignment-layout-task3.md +0 -0
  85. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/delta/task4_ui_formatting_fix.md +0 -0
  86. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/delta/v0.0.53_to_v0.0.54.diff +0 -0
  87. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/development/always-on-display-implementation.md +0 -0
  88. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/development/cli-json-recovery-incident.md +0 -0
  89. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/development/directory-caching-optimization.md +0 -0
  90. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/development/esc-investigation/ESC_KEY_INVESTIGATION.md +0 -0
  91. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/development/esc-investigation/ESC_KEY_STREAMING_ANALYSIS.md +0 -0
  92. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/development/hatch-commands.md +0 -0
  93. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/development/model-updates-2025.md +0 -0
  94. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/development/onboarding-improvements.md +0 -0
  95. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/development/openai_tool_calling_evaluation.md +0 -0
  96. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/development/phase5-prompt-injection-system.md +0 -0
  97. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/development/slash-commands.md +0 -0
  98. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/development/uv-hatch-setup.md +0 -0
  99. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/development/uv-installer-updates.md +0 -0
  100. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/metadata/components.yml +0 -0
  101. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/metadata/hotspots.txt +0 -0
  102. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/patterns/json_retry_implementation.md +0 -0
  103. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/qa/fix-agent-errors.yml +0 -0
  104. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/qa/fix-publish-script.yml +0 -0
  105. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/qa/fix-runtime-warnings.yml +0 -0
  106. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/README.md +0 -0
  107. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/active/task_json_retry_implementation_summary_2025-07-24_13-05-40.md +0 -0
  108. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/active/task_standardize_ui_formatting_patterns_2025-07-23_20-43-28.md +0 -0
  109. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/agents/default/spinner-enhancement-2025-08-07.md +0 -0
  110. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/agents/esc-investigation/scratchpad.md +0 -0
  111. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/agents/phase5-recovery/scratchpad.md +0 -0
  112. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/agents/tech-docs-maintainer/scratchpad.md +0 -0
  113. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/code-synthesis-analyzer_ESC_Double-Press_REPL_Abort_Analysis_2025-08-06_134859_scratchpad.md +0 -0
  114. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Add_Prompt_Injection_to_Remaining_Tools_-_Continuation_2025-08-13_152542_scratchpad.md +0 -0
  115. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Add_Prompt_Injection_to_Remaining_Tools_2025-08-13_152352_scratchpad.md +0 -0
  116. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_CLI_Agent_JSON_Recovery_Investigation_2025-08-12_124206_scratchpad.md +0 -0
  117. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_CLI_Agent_JSON_Recovery_Investigation_2025-08-12_124727_scratchpad.md +0 -0
  118. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Completely_remove_TUNACODE_TASK_COMPLETE_from_plan_mode_2025-08-09_091836_scratchpad.md +0 -0
  119. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Debug_ESC_key_still_not_working_in_approval_prompt_2025-08-09_033534_scratchpad.md +0 -0
  120. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Debug_persistent_KeyboardInterrupt_in_event_loop_2025-08-09_034136_scratchpad.md +0 -0
  121. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Debug_present_plan_tool_registration_and_model_capability_2025-08-09_092923_scratchpad.md +0 -0
  122. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Debug_stuck_double_escape_in_plan_approval_2025-08-09_033214_scratchpad.md +0 -0
  123. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Fix_Application.exit()_failed_error_in_ESC_keybinding_2025-08-09_075607_scratchpad.md +0 -0
  124. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Fix_ESC_double-tap_and_plan_display_issues_2025-08-09_090055_scratchpad.md +0 -0
  125. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Fix_ESC_exceptions_and_missing_present_plan_tool_2025-08-09_081700_scratchpad.md +0 -0
  126. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Fix_agent_not_calling_present_plan_tool_2025-08-09_090827_scratchpad.md +0 -0
  127. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Fix_double_escape_for_planning_mode_approval_prompt_2025-08-09_032759_scratchpad.md +0 -0
  128. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Fix_unhandled_KeyboardInterrupt_exception_in_event_loop_2025-08-09_033843_scratchpad.md +0 -0
  129. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Fix_wizard_UI_-_branch_safety_interference_2025-08-20_222738_scratchpad.md +0 -0
  130. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Fixed_Thinking_dots_animation_2025-08-11_121009_scratchpad.md +0 -0
  131. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Force_agent_to_actually_call_present_plan_tool_2025-08-09_091334_scratchpad.md +0 -0
  132. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_GitHub_Directory_Review_2025-08-11_122451_scratchpad.md +0 -0
  133. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Implementing_ESC_key_double-press_for_REPL_abort_2025-08-06_124754_scratchpad.md +0 -0
  134. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_JSON_Recovery_Implementation_2025-08-12_130251_scratchpad.md +0 -0
  135. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Makefile_to_Hatch_Migration_2025-08-07_192356_scratchpad.md +0 -0
  136. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Performance_Optimization_-_Agent_Initialization_2025-08-13_160447_scratchpad.md +0 -0
  137. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Phase_3_-_Glob_Tool_Optimization_2025-08-13_142601_scratchpad.md +0 -0
  138. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Replace_entire_system_prompt_with_tool-only_instructions_2025-08-09_112839_scratchpad.md +0 -0
  139. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_TunaCode_Search_Enhancement_Implementation_2025-08-13_140905_scratchpad.md +0 -0
  140. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Update_Documentation_for_JSON_Recovery_System_2025-08-12_131127_scratchpad.md +0 -0
  141. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_Update_documentation_for_always-on_display_UX_improvements_2025-08-12_154818_scratchpad.md +0 -0
  142. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/default_slash_command_system_implementation_2025-08-14_034024_scratchpad.md +0 -0
  143. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/archived/phase5-recovery_Phase_5_Recovery_Analysis_2025-08-13_145339_scratchpad.md +0 -0
  144. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/locks/code-synthesis-analyzer.lock +0 -0
  145. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/locks/default.lock +0 -0
  146. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/locks/esc-investigation.lock +0 -0
  147. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/locks/phase5-recovery.lock +0 -0
  148. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/locks/tech-docs-maintainer.lock +0 -0
  149. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/code-synthesis-analyzer_ESC_Double-Press_REPL_Abort_Analysis_2025-08-06_134859_scratchpad.md +0 -0
  150. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Add_Prompt_Injection_to_Remaining_Tools_-_Continuation_2025-08-13_152542_scratchpad.md +0 -0
  151. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Add_Prompt_Injection_to_Remaining_Tools_2025-08-13_152352_scratchpad.md +0 -0
  152. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_CLI_Agent_JSON_Recovery_Investigation_2025-08-12_124206_scratchpad.md +0 -0
  153. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_CLI_Agent_JSON_Recovery_Investigation_2025-08-12_124727_scratchpad.md +0 -0
  154. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Completely_remove_TUNACODE_TASK_COMPLETE_from_plan_mode_2025-08-09_091836_scratchpad.md +0 -0
  155. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Debug_ESC_key_still_not_working_in_approval_prompt_2025-08-09_033534_scratchpad.md +0 -0
  156. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Debug_persistent_KeyboardInterrupt_in_event_loop_2025-08-09_034136_scratchpad.md +0 -0
  157. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Debug_present_plan_tool_registration_and_model_capability_2025-08-09_092923_scratchpad.md +0 -0
  158. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Debug_stuck_double_escape_in_plan_approval_2025-08-09_033214_scratchpad.md +0 -0
  159. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Fix_Application.exit()_failed_error_in_ESC_keybinding_2025-08-09_075607_scratchpad.md +0 -0
  160. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Fix_ESC_double-tap_and_plan_display_issues_2025-08-09_090055_scratchpad.md +0 -0
  161. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Fix_ESC_exceptions_and_missing_present_plan_tool_2025-08-09_081700_scratchpad.md +0 -0
  162. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Fix_agent_not_calling_present_plan_tool_2025-08-09_090827_scratchpad.md +0 -0
  163. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Fix_double_escape_for_planning_mode_approval_prompt_2025-08-09_032759_scratchpad.md +0 -0
  164. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Fix_unhandled_KeyboardInterrupt_exception_in_event_loop_2025-08-09_033843_scratchpad.md +0 -0
  165. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Fix_wizard_UI_-_branch_safety_interference_2025-08-20_222738_scratchpad.md +0 -0
  166. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Fixed_Thinking_dots_animation_2025-08-11_121009_scratchpad.md +0 -0
  167. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Force_agent_to_actually_call_present_plan_tool_2025-08-09_091334_scratchpad.md +0 -0
  168. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_GitHub_Directory_Review_2025-08-11_122451_scratchpad.md +0 -0
  169. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Implementing_ESC_key_double-press_for_REPL_abort_2025-08-06_124754_scratchpad.md +0 -0
  170. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_JSON_Recovery_Implementation_2025-08-12_130251_scratchpad.md +0 -0
  171. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Makefile_to_Hatch_Migration_2025-08-07_192356_scratchpad.md +0 -0
  172. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Performance_Optimization_-_Agent_Initialization_2025-08-13_160447_scratchpad.md +0 -0
  173. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Phase_3_-_Glob_Tool_Optimization_2025-08-13_142601_scratchpad.md +0 -0
  174. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Replace_entire_system_prompt_with_tool-only_instructions_2025-08-09_112839_scratchpad.md +0 -0
  175. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_TunaCode_Search_Enhancement_Implementation_2025-08-13_140905_scratchpad.md +0 -0
  176. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Update_Documentation_for_JSON_Recovery_System_2025-08-12_131127_scratchpad.md +0 -0
  177. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/default_Update_documentation_for_always-on_display_UX_improvements_2025-08-12_154818_scratchpad.md +0 -0
  178. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/scratchpad/shared/done_tasks/phase5-recovery_Phase_5_Recovery_Analysis_2025-08-13_145339_scratchpad.md +0 -0
  179. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/tech-docs-maintainer.md +0 -0
  180. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.claude/test_suite_issues_resolved.md +0 -0
  181. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.github/pull_request_template.md +0 -0
  182. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.github/scripts/check_file_size.py +0 -0
  183. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.github/workflows/lint.yml +0 -0
  184. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.gitignore +0 -0
  185. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/.pre-commit-config.yaml +0 -0
  186. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/CLAUDE.md +0 -0
  187. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/LICENSE +0 -0
  188. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/MANIFEST.in +0 -0
  189. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/README.md +0 -0
  190. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/TUNACODE.md +0 -0
  191. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/assets/tunacode_example.png +0 -0
  192. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/agent/TOOLS_WORKFLOW.md +0 -0
  193. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/agent/agent-inspo.md +0 -0
  194. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/agent/how-tunacode-agent-works.md +0 -0
  195. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/agent/main-agent-architecture.md +0 -0
  196. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/agent/swepmini-example.md +0 -0
  197. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/agent/tunacode-tool-system.md +0 -0
  198. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76/documentation/configuration}/.env.example +0 -0
  199. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/configuration/config-file-example.md +0 -0
  200. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/configuration/local-models.md +0 -0
  201. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/configuration/logging-configuration.md +0 -0
  202. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/development/codebase-hygiene.md +0 -0
  203. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/development/command-system-architecture.md +0 -0
  204. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/development/creating-custom-commands.md +0 -0
  205. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/development/hatch-build-system.md +0 -0
  206. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/development/performance-optimizations.md +0 -0
  207. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/development/prompt-principles.md +0 -0
  208. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/tests/README.md +0 -0
  209. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/tests/characterization-testing.md +0 -0
  210. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/tests/mocking-strategies.md +0 -0
  211. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/tests/troubleshooting.md +0 -0
  212. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/ui/ui-architecture.md +0 -0
  213. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/user/commands.md +0 -0
  214. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/user/getting-started.md +0 -0
  215. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/documentation/user/tools.md +0 -0
  216. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/memory-bank/plan/2025-09-11_13-30-00_agent_loop_architecture_enhancement.md +0 -0
  217. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/memory-bank/plan/2025-09-11_14-00-00_enum_state_machine_implementation.md +0 -0
  218. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/memory-bank/plan/2025-09-11_14-15-00_automated_cli_tool_testing_framework.md +0 -0
  219. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/memory-bank/research/2025-09-07_21-13-37_agent_loop_architecture.md +0 -0
  220. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/memory-bank/research/2025-09-11_13-14-06_agent_loop_enhancement_analysis.md +0 -0
  221. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/pytest.ini +0 -0
  222. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/scripts/check-file-length.sh +0 -0
  223. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/scripts/download_ripgrep.py +0 -0
  224. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/scripts/install_linux.sh +0 -0
  225. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/scripts/playwright_cache.py +0 -0
  226. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/scripts/setup_dev_env.sh +0 -0
  227. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/scripts/startup_timer.py +0 -0
  228. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/scripts/uninstall.sh +0 -0
  229. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/scripts/utils/vulture_whitelist.py +0 -0
  230. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/scripts/verify_dev_env.sh +0 -0
  231. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/setup.py +0 -0
  232. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/README.md +0 -0
  233. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/__init__.py +0 -0
  234. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/__init__.py +0 -0
  235. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/__init__.py +0 -0
  236. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/__init__.py +0 -0
  237. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/base.py +0 -0
  238. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/implementations/__init__.py +0 -0
  239. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/implementations/command_reload.py +0 -0
  240. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/implementations/conversation.py +0 -0
  241. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/implementations/debug.py +0 -0
  242. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/implementations/development.py +0 -0
  243. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/implementations/plan.py +0 -0
  244. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/implementations/quickstart.py +0 -0
  245. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/implementations/system.py +0 -0
  246. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/implementations/template.py +0 -0
  247. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/implementations/todo.py +0 -0
  248. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/registry.py +0 -0
  249. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/slash/__init__.py +0 -0
  250. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/slash/command.py +0 -0
  251. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/slash/loader.py +0 -0
  252. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/slash/processor.py +0 -0
  253. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/slash/types.py +0 -0
  254. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/slash/validator.py +0 -0
  255. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/commands/template_shortcut.py +0 -0
  256. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/main.py +0 -0
  257. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/repl.py +0 -0
  258. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/repl_components/__init__.py +0 -0
  259. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/repl_components/command_parser.py +0 -0
  260. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/repl_components/error_recovery.py +0 -0
  261. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/repl_components/output_display.py +0 -0
  262. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/cli/repl_components/tool_executor.py +0 -0
  263. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/configuration/__init__.py +0 -0
  264. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/configuration/defaults.py +0 -0
  265. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/configuration/models.py +0 -0
  266. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/configuration/settings.py +0 -0
  267. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/context.py +0 -0
  268. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/__init__.py +0 -0
  269. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/agents/__init__.py +0 -0
  270. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/agents/agent_components/__init__.py +0 -0
  271. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/agents/agent_components/agent_config.py +0 -0
  272. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/agents/agent_components/agent_helpers.py +0 -0
  273. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/agents/agent_components/json_tool_parser.py +0 -0
  274. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/agents/agent_components/message_handler.py +0 -0
  275. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/agents/agent_components/response_state.py +0 -0
  276. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/agents/agent_components/result_wrapper.py +0 -0
  277. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/agents/agent_components/state_transition.py +0 -0
  278. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/agents/agent_components/task_completion.py +0 -0
  279. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/agents/agent_components/tool_buffer.py +0 -0
  280. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/agents/agent_components/tool_executor.py +0 -0
  281. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/agents/agent_components/truncation_checker.py +0 -0
  282. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/agents/utils.py +0 -0
  283. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/background/__init__.py +0 -0
  284. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/background/manager.py +0 -0
  285. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/code_index.py +0 -0
  286. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/llm/__init__.py +0 -0
  287. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/logging/__init__.py +0 -0
  288. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/logging/config.py +0 -0
  289. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/logging/formatters.py +0 -0
  290. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/logging/handlers.py +0 -0
  291. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/logging/logger.py +0 -0
  292. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/setup/__init__.py +0 -0
  293. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/setup/agent_setup.py +0 -0
  294. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/setup/base.py +0 -0
  295. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/setup/coordinator.py +0 -0
  296. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/setup/environment_setup.py +0 -0
  297. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/setup/git_safety_setup.py +0 -0
  298. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/setup/template_setup.py +0 -0
  299. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/token_usage/api_response_parser.py +0 -0
  300. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/token_usage/cost_calculator.py +0 -0
  301. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/token_usage/usage_tracker.py +0 -0
  302. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/core/tool_handler.py +0 -0
  303. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/exceptions.py +0 -0
  304. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/prompts/system.md.bak +0 -0
  305. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/py.typed +0 -0
  306. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/services/__init__.py +0 -0
  307. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/services/mcp.py +0 -0
  308. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/setup.py +0 -0
  309. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/templates/__init__.py +0 -0
  310. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/templates/loader.py +0 -0
  311. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/__init__.py +0 -0
  312. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/base.py +0 -0
  313. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/bash.py +0 -0
  314. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/exit_plan_mode.py +0 -0
  315. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/glob.py +0 -0
  316. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/grep.py +0 -0
  317. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/grep_components/__init__.py +0 -0
  318. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/grep_components/file_filter.py +0 -0
  319. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/grep_components/pattern_matcher.py +0 -0
  320. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/grep_components/result_formatter.py +0 -0
  321. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/grep_components/search_result.py +0 -0
  322. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/list_dir.py +0 -0
  323. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/present_plan.py +0 -0
  324. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/prompts/bash_prompt.xml +0 -0
  325. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/prompts/exit_plan_mode_prompt.xml +0 -0
  326. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/prompts/glob_prompt.xml +0 -0
  327. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/prompts/grep_prompt.xml +0 -0
  328. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/prompts/list_dir_prompt.xml +0 -0
  329. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/prompts/present_plan_prompt.xml +0 -0
  330. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/prompts/read_file_prompt.xml +0 -0
  331. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/prompts/run_command_prompt.xml +0 -0
  332. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/prompts/todo_prompt.xml +0 -0
  333. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/prompts/update_file_prompt.xml +0 -0
  334. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/prompts/write_file_prompt.xml +0 -0
  335. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/read_file.py +0 -0
  336. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/run_command.py +0 -0
  337. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/schema_assembler.py +0 -0
  338. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/todo.py +0 -0
  339. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/update_file.py +0 -0
  340. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/write_file.py +0 -0
  341. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tools/xml_helper.py +0 -0
  342. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tutorial/__init__.py +0 -0
  343. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tutorial/content.py +0 -0
  344. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tutorial/manager.py +0 -0
  345. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/tutorial/steps.py +0 -0
  346. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/types.py +0 -0
  347. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/ui/__init__.py +0 -0
  348. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/ui/completers.py +0 -0
  349. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/ui/console.py +0 -0
  350. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/ui/constants.py +0 -0
  351. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/ui/decorators.py +0 -0
  352. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/ui/input.py +0 -0
  353. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/ui/keybindings.py +0 -0
  354. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/ui/lexers.py +0 -0
  355. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/ui/logging_compat.py +0 -0
  356. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/ui/model_selector.py +0 -0
  357. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/ui/output.py +0 -0
  358. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/ui/panels.py +0 -0
  359. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/ui/prompt_manager.py +0 -0
  360. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/ui/tool_descriptions.py +0 -0
  361. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/ui/tool_ui.py +0 -0
  362. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/ui/utils.py +0 -0
  363. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/ui/validators.py +0 -0
  364. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/utils/__init__.py +0 -0
  365. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/utils/api_key_validation.py +0 -0
  366. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/utils/bm25.py +0 -0
  367. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/utils/diff_utils.py +0 -0
  368. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/utils/file_utils.py +0 -0
  369. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/utils/import_cache.py +0 -0
  370. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/utils/json_utils.py +0 -0
  371. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/utils/message_utils.py +0 -0
  372. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/utils/models_registry.py +0 -0
  373. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/utils/retry.py +0 -0
  374. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/utils/ripgrep.py +0 -0
  375. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/utils/security.py +0 -0
  376. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/utils/system.py +0 -0
  377. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/utils/text_utils.py +0 -0
  378. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/utils/token_counter.py +0 -0
  379. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/src/tunacode/utils/user_configuration.py +0 -0
  380. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/CHARACTERIZATION_README.md +0 -0
  381. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/CHARACTERIZATION_TEST_PLAN.md +0 -0
  382. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/CHARACTERIZATION_TEST_PLAN_AGENT_MAIN.md +0 -0
  383. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/CHARACTERIZATION_TEST_PLAN_COMMANDS.md +0 -0
  384. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/FILE_OPERATIONS_TEST_GUIDE.md +0 -0
  385. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/__init__.py +0 -0
  386. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/agent/__init__.py +0 -0
  387. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/agent/conftest.py +0 -0
  388. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/agent/test_agent_creation.py +0 -0
  389. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/agent/test_json_tool_parsing.py +0 -0
  390. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/agent/test_process_node.py +0 -0
  391. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/agent/test_process_request.py +0 -0
  392. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/agent/test_tool_message_patching.py +0 -0
  393. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/background/test_background_edge_cases.py +0 -0
  394. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/background/test_cleanup.py +0 -0
  395. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/background/test_task_cancellation.py +0 -0
  396. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/background/test_task_creation.py +0 -0
  397. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/background/test_task_execution.py +0 -0
  398. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/code_index/test_cache_management.py +0 -0
  399. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/code_index/test_file_scanning.py +0 -0
  400. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/code_index/test_index_building.py +0 -0
  401. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/code_index/test_search_operations.py +0 -0
  402. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/code_index/test_symbol_extraction.py +0 -0
  403. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/commands/__init__.py +0 -0
  404. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/commands/test_init_command.py +0 -0
  405. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/conftest.py +0 -0
  406. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/context/README.md +0 -0
  407. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/context/__init__.py +0 -0
  408. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/context/test_context_acceptance.py +0 -0
  409. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/context/test_context_integration.py +0 -0
  410. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/context/test_context_loading.py +0 -0
  411. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/context/test_tunacode_logging.py +0 -0
  412. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/repl/test_command_parsing.py +0 -0
  413. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/repl/test_error_handling.py +0 -0
  414. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/repl/test_escape_key_behavior.py +0 -0
  415. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/repl/test_input_handling.py +0 -0
  416. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/repl/test_keyboard_interrupts.py +0 -0
  417. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/repl/test_multiline_input.py +0 -0
  418. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/repl/test_output_display_logic.py +0 -0
  419. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/repl/test_repl_initialization.py +0 -0
  420. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/repl/test_session_flow.py +0 -0
  421. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/services/test_error_recovery.py +0 -0
  422. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/services/test_llm_routing.py +0 -0
  423. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/services/test_mcp_integration.py +0 -0
  424. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/services/test_service_lifecycle.py +0 -0
  425. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/state/test_agent_tracking.py +0 -0
  426. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/state/test_message_history.py +0 -0
  427. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/state/test_permissions.py +0 -0
  428. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/state/test_session_management.py +0 -0
  429. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/state/test_user_config.py +0 -0
  430. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/test_characterization_grep.py +0 -0
  431. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/test_characterization_main.py +0 -0
  432. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/test_characterization_repl.py +0 -0
  433. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/ui/test_async_ui.py +0 -0
  434. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/ui/test_console_output.py +0 -0
  435. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/ui/test_diff_display.py +0 -0
  436. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/ui/test_prompt_rendering.py +0 -0
  437. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/ui/test_spinner_messages.py +0 -0
  438. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/ui/test_tool_confirmations.py +0 -0
  439. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/utils/test_expand_file_refs.py +0 -0
  440. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/utils/test_file_operations.py +0 -0
  441. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/utils/test_git_commands.py +0 -0
  442. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/utils/test_token_counting.py +0 -0
  443. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/characterization/utils/test_utils_edge_cases.py +0 -0
  444. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/conftest.py +0 -0
  445. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/test_agent_output_formatting.py +0 -0
  446. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/test_command_parser_retry.py +0 -0
  447. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/test_completion_detection.py +0 -0
  448. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/test_glob_phase3.py +0 -0
  449. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/test_json_concatenation_recovery.py +0 -0
  450. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/test_json_retry.py +0 -0
  451. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/test_logging_config.py +0 -0
  452. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/test_onboarding_features.py +0 -0
  453. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/test_phase2_type_hints.py +0 -0
  454. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/test_plan_mode.py +0 -0
  455. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/test_prompt_injection.py +0 -0
  456. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/test_security.py +0 -0
  457. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/test_slash_commands_comprehensive.py +0 -0
  458. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/test_slash_commands_functional.py +0 -0
  459. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/test_slash_commands_integration.py +0 -0
  460. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/test_slash_commands_isolated.py +0 -0
  461. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/test_spinner_updates.py +0 -0
  462. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/test_tool_batching_retry.py +0 -0
  463. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tests/unit/test_constants_enums.py +0 -0
  464. {tunacode_cli-0.0.73 → tunacode_cli-0.0.76}/tools/emoji_cleaner.py +0 -0
@@ -0,0 +1,75 @@
1
+ name: Publish to PyPI
2
+
3
+ "on":
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+
8
+ jobs:
9
+ publish:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+
14
+ - name: Set up Python
15
+ uses: actions/setup-python@v5
16
+ with:
17
+ python-version: '3.x'
18
+
19
+ - name: Install build tooling
20
+ run: |
21
+ python -m pip install --upgrade pip
22
+ pip install hatch twine uv
23
+
24
+ - name: Determine version from tag
25
+ id: ver
26
+ shell: bash
27
+ run: |
28
+ # Prefer release tag when present; fall back to ref name
29
+ if [ "${{ github.event_name }}" = "release" ]; then
30
+ TAG="${{ github.event.release.tag_name }}"
31
+ else
32
+ TAG="${{ github.ref_name }}"
33
+ fi
34
+ TAG="${TAG#v}"
35
+ echo "tag=$TAG" >> "$GITHUB_OUTPUT"
36
+
37
+ - name: Check version consistency
38
+ shell: bash
39
+ run: |
40
+ TAG="${{ steps.ver.outputs.tag }}"
41
+ # Extract only the [project] version from pyproject.toml
42
+ PYPROJ=$(awk '
43
+ /^\[project\]/ { in_proj=1; next }
44
+ /^\[/ { if (in_proj) exit }
45
+ in_proj && /^version =/ { match($0, /"([^"]+)"/, m); print m[1]; exit }
46
+ ' pyproject.toml)
47
+ # Extract APP_VERSION from constants
48
+ CONST=$(awk -F '"' '/^APP_VERSION =/ { print $2; exit }' src/tunacode/constants.py)
49
+ echo "Tag: $TAG"
50
+ echo "pyproject.toml: $PYPROJ"
51
+ echo "constants.APP_VERSION: $CONST"
52
+ if [[ "$TAG" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
53
+ [[ "$TAG" == "$PYPROJ" ]] || { echo 'pyproject.toml version mismatch'; exit 1; }
54
+ [[ "$TAG" == "$CONST" ]] || { echo 'constants.py APP_VERSION mismatch'; exit 1; }
55
+ else
56
+ echo "No semver tag detected; skipping tag consistency check."
57
+ fi
58
+
59
+ - name: Lint
60
+ run: hatch run lint-check
61
+
62
+ - name: Test
63
+ run: hatch run test
64
+
65
+ - name: Build
66
+ run: hatch build
67
+
68
+ # Preferred: API token secret
69
+ - name: Publish to PyPI (API token)
70
+ env:
71
+ TWINE_USERNAME: __token__
72
+ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
73
+ run: python -m twine upload dist/*
74
+
75
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tunacode-cli
3
- Version: 0.0.73
3
+ Version: 0.0.76
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
@@ -19,7 +19,8 @@ documentation/
19
19
  │ ├── command-system-architecture.md
20
20
  │ ├── creating-custom-commands.md
21
21
  │ ├── hatch-build-system.md
22
- | ├── performance-optimizations.md
22
+ ├── performance-optimizations.md
23
+ │ ├── publishing-workflow.md
23
24
  │ └── prompt-principles.md
24
25
  │── user/ # user guides
25
26
  │── getting-started.md
@@ -36,6 +37,7 @@ General project documentation for features, architecture, and best practices.
36
37
  - [Command System Architecture](development/command-system-architecture.md) - Technical overview of the command system design and components.
37
38
  - [Creating Custom Commands](development/creating-custom-commands.md) - Step-by-step guide for creating built-in and slash commands.
38
39
  - [Hatch Build System](development/hatch-build-system.md) - Complete guide to using Hatch for development and building.
40
+ - [Publishing Workflow](development/publishing-workflow.md) - Automated PyPI publishing process and release management.
39
41
  - [Configuration File Example](configuration/config-file-example.md) - Complete example of `~/.config/tunacode.json` with all available settings.
40
42
  - [Local Models Setup](configuration/local-models.md) - Guide for using local models with LM Studio or any OpenAI-compatible API.
41
43
  - [Performance Optimizations](development/performance-optimizations.md) - Major performance improvements and optimization strategies.
@@ -0,0 +1,85 @@
1
+ Now I have a good understanding of how the agent system works. Let me create a flowchart to explain the agent creation and processing flow:
2
+
3
+ ## TunaCode Agent Creation and Processing Flow
4
+
5
+ ```mermaid
6
+ graph TD
7
+ A[User Request] --> B[process_request function]
8
+ B --> C[get_or_create_agent]
9
+ C --> D{Agent in Cache?}
10
+ D -->|Yes - Valid| E[Use Cached Agent]
11
+ D -->|No/Invalid| F[Create New Agent]
12
+ F --> G[Load System Prompt]
13
+ G --> H[Load TUNACODE.md Context]
14
+ F --> I[Initialize Tools]
15
+ I --> J{Plan Mode?}
16
+ J -->|Yes| K[Plan Mode Tools Only]
17
+ J -->|No| L[All Tools Available]
18
+ K --> M[Create Agent with Read-only + present_plan tools]
19
+ L --> N[Create Agent with All tools]
20
+ M --> O[Cache Agent]
21
+ N --> O
22
+ O --> P[Agent Iteration Loop]
23
+ P --> Q[Process Each Node]
24
+ Q --> R{Model Request Node?}
25
+ R -->|Yes + Streaming| S[Stream Token-level Response]
26
+ R -->|No| T[Process Node Content]
27
+ T --> U{Task Completion Marker?}
28
+ U -->|Yes| V[Mark Task Complete]
29
+ U -->|No| W[Check for Tool Calls]
30
+ W --> X{Read-only Tool?}
31
+ X -->|Yes| Y[Buffer for Parallel Execution]
32
+ X -->|No| Z[Execute Sequentially]
33
+ Y --> AA[ToolBuffer Collection]
34
+ Z --> AB[Immediate Tool Execution]
35
+ AA --> AC[Execute Buffered Tools in Parallel]
36
+ P --> AD{Max Iterations Reached?}
37
+ AD -->|Yes| AE[Create Fallback Response]
38
+ AD -->|No| AF[Continue Loop]
39
+ V --> AG[Return AgentRun Result]
40
+ AE --> AG
41
+ AF --> P
42
+ ```
43
+
44
+ ## Detailed Flow Explanation
45
+
46
+ ### 1. **Agent Creation Process**
47
+ - **`get_or_create_agent(model, state_manager)`** is called for each request
48
+ - Uses dual caching system (session-level and module-level)
49
+ - Cache invalidation based on configuration changes
50
+ - Loads system prompt from `src/tunacode/prompts/system.md`
51
+ - Appends TUNACODE.md project context if available
52
+ - Dynamically configures tools based on mode (plan vs normal)
53
+
54
+ ### 2. **Plan Mode vs Normal Mode**
55
+ - **Plan Mode**: Restricted to read-only tools + `present_plan` tool
56
+ - **Normal Mode**: Full toolset including write/execute tools
57
+ - System prompt is completely replaced in plan mode with plan-specific instructions
58
+
59
+ ### 3. **Request Processing Loop**
60
+ - **`process_request()`** creates agent iteration context
61
+ - Processes nodes one by one in async loop
62
+ - Handles streaming responses at token level
63
+ - Monitors for task completion markers (`TUNACODE DONE:`)
64
+ - Implements productivity tracking (3 consecutive empty iterations triggers action)
65
+ - Manages tool execution batching for performance
66
+
67
+ ### 4. **Tool Execution Strategy**
68
+ - **Read-only tools** (read_file, grep, list_dir, glob) are buffered for parallel execution
69
+ - **Write/execute tools** (bash, run_command, write_file, update_file) run sequentially
70
+ - **ToolBuffer** collects multiple read-only tools and executes them in batches
71
+ - Provides speedup metrics and visual feedback during batch execution
72
+
73
+ ### 5. **Completion Detection**
74
+ - Looks for `TUNACODE DONE:` marker in response content
75
+ - Validates that no tools are queued when completion is signaled
76
+ - Prevents premature completion when tools are pending
77
+ - Handles fallback responses when iterations are exhausted
78
+
79
+ ### 6. **State Management**
80
+ - Uses **ResponseState** with enum-based state machine
81
+ - Tracks: USER_INPUT → ASSISTANT → TOOL_EXECUTION → RESPONSE transitions
82
+ - Maintains backward compatibility with boolean flags
83
+ - Session state persists across requests with caching
84
+
85
+ The system is designed for optimal performance through parallel tool execution while maintaining safety through sequential write operations and comprehensive state tracking.
@@ -0,0 +1,222 @@
1
+ ---
2
+ title: "Research – AI Agent and Tools Architecture"
3
+ date: "2025-09-12"
4
+ owner: "context-engineer"
5
+ phase: "Research"
6
+ last_updated: "2025-09-12"
7
+ last_updated_by: "context-engineer"
8
+ last_updated_note: "Initial comprehensive research on AI agent and tools relation to OpenAI tool call format and JSON tooling"
9
+ tags: ["agents", "tools", "openai", "json-tooling", "architecture", "pydantic-ai"]
10
+ git_commit: "320ee40"
11
+ ---
12
+
13
+ # Research – AI Agent and Tools Architecture
14
+ **Date:** 2025-09-12
15
+ **Owner:** context-engineer
16
+ **Phase:** Research
17
+
18
+ ## Goal
19
+ Summarize all *existing knowledge* about how the AI agent and tools are used in relation to the OpenAI tool call format and JSON tooling in the tunacode system before any new work.
20
+
21
+ ## Additional Search
22
+ - `grep -ri "tool.*call" src/tunacode/core/agents/`
23
+ - `grep -ri "openai.*tool" src/tunacode/`
24
+ - `grep -ri "json.*tool" src/tunacode/core/agents/`
25
+
26
+ ## Findings
27
+
28
+ ### Core Architecture Overview
29
+
30
+ The tunacode system implements a sophisticated tool calling architecture that bridges OpenAI's function calling specification with custom JSON tooling. The system is built around `pydantic-ai` as the primary framework while providing robust fallback mechanisms for maximum compatibility across different LLM providers.
31
+
32
+ ### Key Files & Components
33
+
34
+ #### Agent System (`src/tunacode/core/agents/`)
35
+ - `main.py` → Primary agent orchestrator using pydantic-ai with OpenAI tool integration
36
+ - `agent_config.py` → Tool registration and configuration with pydantic-ai Tool wrappers
37
+ - `agent_components/` → Core components for tool processing and execution
38
+ - `node_processor.py` → Tool call processing from LLM responses
39
+ - `tool_executor.py` → Parallel tool execution orchestration
40
+ - `json_tool_parser.py` → Fallback JSON tool parsing for non-structured APIs
41
+ - `tool_buffer.py` → Tool buffering for batch execution
42
+ - `message_handler.py` → Tool message patching and state management
43
+
44
+ #### Tool System (`src/tunacode/tools/`)
45
+ - `base.py` → BaseTool class with OpenAI function schema generation
46
+ - `schema_assembler.py` → Tool schema assembly for different model providers
47
+ - Individual tools (bash.py, grep.py, read_file.py, etc.) → Tool implementations with JSON Schema compliance
48
+
49
+ #### LLM Integration (`src/tunacode/core/llm/` and utils/)
50
+ - Model configuration and registry for OpenAI-compatible providers
51
+ - API key validation and response parsing
52
+ - Token cost calculation for different models
53
+
54
+ ### OpenAI Tool Call Format Implementation
55
+
56
+ #### 1. Schema Generation Pattern
57
+ All tools generate OpenAI-compatible function schemas through the `get_tool_schema()` method:
58
+
59
+ ```python
60
+ {
61
+ "name": "tool_name",
62
+ "description": "Tool description with usage instructions",
63
+ "parameters": {
64
+ "type": "object",
65
+ "properties": {
66
+ "param_name": {
67
+ "type": "string|number|boolean|array",
68
+ "description": "Parameter description"
69
+ }
70
+ },
71
+ "required": ["required_param"]
72
+ }
73
+ }
74
+ ```
75
+
76
+ #### 2. Tool Registration with pydantic-ai
77
+ Tools are registered using pydantic-ai's `Tool` wrapper for OpenAI compatibility:
78
+
79
+ ```python
80
+ tools_list = [
81
+ Tool(bash, max_retries=max_retries, strict=tool_strict_validation),
82
+ Tool(grep, max_retries=max_retries, strict=tool_strict_validation),
83
+ # ... more tools
84
+ ]
85
+
86
+ agent = Agent(
87
+ model=model,
88
+ system_prompt=system_prompt,
89
+ tools=tools_list,
90
+ mcp_servers=get_mcp_servers(state_manager),
91
+ )
92
+ ```
93
+
94
+ #### 3. Tool Call Processing Flow
95
+ The system processes tool calls through multiple layers:
96
+ 1. **Primary**: OpenAI structured tool calling via pydantic-ai
97
+ 2. **Secondary**: JSON object parsing for non-structured APIs
98
+ 3. **Tertiary**: Manual tool execution with error handling
99
+
100
+ ### JSON Tooling Patterns
101
+
102
+ #### 1. Fallback JSON Parsing
103
+ When structured tool calling fails, the system extracts JSON objects using pattern matching:
104
+
105
+ ```python
106
+ # Pattern: {"tool": "tool_name", "args": {...}}
107
+ async def parse_json_tool_calls(text: str, tool_callback: Optional[ToolCallback],
108
+ state_manager: StateManager) -> int:
109
+ # Find JSON objects in text using brace counting
110
+ # Validate tool structure and create mock tool call objects
111
+ ```
112
+
113
+ #### 2. Schema-Driven Design
114
+ - All tools implement JSON Schema for parameter validation
115
+ - Dynamic schema generation based on execution context
116
+ - XML-based schema definitions with hardcoded fallbacks
117
+ - Environment-specific schema adaptation
118
+
119
+ #### 3. Tool Result Handling
120
+ - Structured error responses with `ModelRetry` support
121
+ - Tool call tracking and state management
122
+ - Message patching for orphaned tool calls
123
+ - UI integration for user feedback
124
+
125
+ ### Parallel Execution Architecture
126
+
127
+ #### 1. Tool Categorization
128
+ - **Read-Only Tools**: `read_file`, `list_dir`, `grep`, `glob` (3-4x parallel performance)
129
+ - **Write Tools**: `write_file`, `update_file` (sequential execution)
130
+ - **System Tools**: `bash`, `run_command` (safety checks required)
131
+
132
+ #### 2. Batching Strategy
133
+ ```python
134
+ async def execute_tools_parallel(tool_calls: List[Tuple[Any, Any]],
135
+ callback: ToolCallback, return_exceptions: bool = True) -> List[Any]:
136
+ max_parallel = int(os.environ.get("TUNACODE_MAX_PARALLEL", os.cpu_count() or 4))
137
+ # Batch execution with configurable parallelism
138
+ ```
139
+
140
+ ### Safety and Permission Systems
141
+
142
+ #### 1. Tool Confirmation
143
+ - Write/execute tools require user confirmation
144
+ - Path restrictions and sandboxing
145
+ - Dangerous operation warnings
146
+
147
+ #### 2. Input Validation
148
+ - Schema-based parameter validation
149
+ - Type checking and range validation
150
+ - File path safety checks
151
+
152
+ ### Configuration and Extensibility
153
+
154
+ #### 1. Model Support
155
+ - OpenAI GPT models with full tool calling support
156
+ - Anthropic Claude models with JSON fallback
157
+ - Local models via OpenAI-compatible APIs
158
+
159
+ #### 2. MCP Integration
160
+ - Model Context Protocol server support
161
+ - External tool provider integration
162
+ - Dynamic tool discovery
163
+
164
+ ## Key Patterns / Solutions Found
165
+
166
+ ### **Bridge Pattern**: System bridges OpenAI function calling, custom JSON tooling, and pydantic-ai interface
167
+ - Relevance: Enables compatibility across multiple LLM providers
168
+ - Location: `src/tunacode/core/agents/agent_config.py:45-67`
169
+
170
+ ### **Fallback Pattern**: Multi-layer fallback system ensures tool execution across different APIs
171
+ - Relevance: Provides robustness when structured tool calling fails
172
+ - Location: `src/tunacode/core/agents/agent_components/json_tool_parser.py:12-89`
173
+
174
+ ### **Schema-Driven Design**: All tools define JSON Schema for consistent parameter validation
175
+ - Relevance: Standardizes tool interface and enables dynamic tool discovery
176
+ - Location: `src/tunacode/tools/base.py:23-41`
177
+
178
+ ### **Parallelization Strategy**: Read-only tools batched for 3-4x performance improvement
179
+ - Relevance: Dramatically improves performance for file operations and searches
180
+ - Location: `src/tunacode/core/agents/agent_components/tool_executor.py:34-78`
181
+
182
+ ### **Safety Architecture**: Tool categorization with confirmation system prevents dangerous operations
183
+ - Relevance: Essential for production-safe AI agent tooling
184
+ - Location: `src/tunacode/core/tool_handler.py:23-67`
185
+
186
+ ## Knowledge Gaps
187
+
188
+ ### Missing Context
189
+ - Detailed MCP server implementation patterns
190
+ - Performance benchmarks for different tool batching strategies
191
+ - Error recovery mechanisms for specific tool failure scenarios
192
+ - Advanced configuration options for tool parallelism limits
193
+
194
+ ### Areas for Further Investigation
195
+ - Real-world usage patterns and common failure modes
196
+ - Integration patterns with external tool providers
197
+ - Security implications of different tool execution strategies
198
+ - Optimization opportunities for tool schema generation
199
+
200
+ ## References
201
+
202
+ ### Core Documentation
203
+ - [Main Agent Architecture](https://github.com/alchemiststudiosDOTai/tunacode/blob/320ee40/documentation/agent/main-agent-architecture.md)
204
+ - [Tool System Technical Guide](https://github.com/alchemiststudiosDOTai/tunacode/blob/320ee40/documentation/agent/tunacode-tool-system.md)
205
+ - [Tools Workflow Guide](https://github.com/alchemiststudiosDOTai/tunacode/blob/320ee40/documentation/agent/TOOLS_WORKFLOW.md)
206
+
207
+ ### Key Implementation Files
208
+ - [Agent Configuration](https://github.com/alchemiststudiosDOTai/tunacode/blob/320ee40/src/tunacode/core/agents/agent_config.py)
209
+ - [Base Tool Implementation](https://github.com/alchemiststudiosDOTai/tunacode/blob/320ee40/src/tunacode/tools/base.py)
210
+ - [Schema Assembler](https://github.com/alchemiststudiosDOTai/tunacode/blob/320ee40/src/tunacode/tools/schema_assembler.py)
211
+ - [JSON Tool Parser](https://github.com/alchemiststudiosDOTai/tunacode/blob/320ee40/src/tunacode/core/agents/agent_components/json_tool_parser.py)
212
+ - [Tool Executor](https://github.com/alchemiststudiosDOTai/tunacode/blob/320ee40/src/tunacode/core/agents/agent_components/tool_executor.py)
213
+
214
+ ### Configuration Files
215
+ - [Model Configuration](https://github.com/alchemiststudiosDOTai/tunacode/blob/320ee40/src/tunacode/configuration/models.py)
216
+ - [Default Settings](https://github.com/alchemiststudiosDOTai/tunacode/blob/320ee40/src/tunacode/configuration/defaults.py)
217
+ - [Example Configuration](https://github.com/alchemiststudiosDOTai/tunacode/blob/320ee40/documentation/configuration/tunacode.json.example)
218
+
219
+ ### Testing Infrastructure
220
+ - [Agent Initialization Tests](https://github.com/alchemiststudiosDOTai/tunacode/blob/320ee40/tests/test_agent_initialization.py)
221
+ - [JSON Tool Parsing Tests](https://github.com/alchemiststudiosDOTai/tunacode/blob/320ee40/tests/characterization/agent/test_json_tool_parsing.py)
222
+ - [Parallel Tool Execution Tests](https://github.com/alchemiststudiosDOTai/tunacode/blob/320ee40/tests/test_parallel_tool_execution.py)
@@ -0,0 +1,188 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.0.75] - 2025-09-12
9
+
10
+ ### Changed
11
+ - Removed fallback PyPI auth method from CI workflow
12
+ - Bumped version to 0.0.75
13
+
14
+ ### Fixed
15
+ - Fixed version check in CI pipeline
16
+ - Updated publish workflow constants for version 0.0.73
17
+
18
+ ## [0.0.74] - 2025-09-11
19
+
20
+ ### Added
21
+ - Implemented enum-based state machine for agent completion detection
22
+ - Added Claude command executor documentation and test guides
23
+
24
+ ### Changed
25
+ - Enhanced agent loop architecture
26
+
27
+ ## [0.0.73] - 2025-09-11
28
+
29
+ ### Changed
30
+ - Made tool strict validation configurable in tunacode.json
31
+ - Enhanced /model command with multi-source routing and models.dev integration
32
+
33
+ ### Fixed
34
+ - Added strict=False parameter to Tool constructors to prevent validation issues
35
+ - Replaced invalid bright_white with ansiwhite in model selector
36
+ - Updated model command tests to match new models.dev integration behavior
37
+
38
+ ## [0.0.72] - 2025-09-10
39
+
40
+ ### Changed
41
+ - Refactored agent and command documentation structure
42
+ - Improved wizard UX and fixed API key loading
43
+
44
+ ### Fixed
45
+ - Prevent crash when API key is missing for configured model
46
+ - Prevent config reset on startup by loading config before initialization
47
+
48
+ ## [0.0.71] - 2025-08-25
49
+
50
+ ### Added
51
+ - Comprehensive TunaCode tool system documentation
52
+ - Local models configuration guide
53
+
54
+ ### Changed
55
+ - Refactored tool system and cleaned up obsolete tools
56
+ - Excluded llm-agent-tools from pre-commit hooks and file checks
57
+
58
+ ## [0.0.70] - 2025-08-23
59
+
60
+ ### Added
61
+ - Enhanced /update command with UV tool installation support
62
+ - Improved venv detection for UV-created environments
63
+ - Added emoji prohibition to system prompt
64
+
65
+ ### Changed
66
+ - Changed default model to OpenRouter GPT-4.1
67
+ - Migrated to UV for dependency management with Hatch integration
68
+ - Enhanced install script with config file creation and setup guidance
69
+
70
+ ### Fixed
71
+ - Improved venv installation detection for /update command
72
+ - Added defusedxml dependency and fixed typer compatibility
73
+
74
+ ## [0.0.69] - 2025-08-21
75
+
76
+ ### Summary
77
+ This release includes comprehensive command system documentation, updated model configurations, and builds upon recent community contributions including the slash command system by @Lftobs (#85) and onboarding improvements by @ryumacodes (#88).
78
+
79
+ ### Changed
80
+ - Updated OpenRouter GPT model reference from `gpt-4o` to `gpt-4.1` in setup configuration
81
+
82
+ ### Added
83
+ - Additional development documentation in `.claude/` directory
84
+ - Model updates documentation
85
+ - Slash commands documentation
86
+ - Onboarding improvements documentation
87
+
88
+ ## [0.0.68] - 2025-08-21
89
+
90
+ ### Added
91
+ - **Comprehensive Command System Documentation**
92
+ - Created `command-system-architecture.md` with technical overview of command infrastructure
93
+ - Created `creating-custom-commands.md` with step-by-step guide for developers
94
+ - Updated user documentation with slash command information
95
+ - Added `/command-reload` command documentation
96
+
97
+ ### Fixed
98
+ - Removed broken link to non-existent `templates.md` file in documentation
99
+
100
+ ## [0.0.67] - 2025-08-14
101
+
102
+ ### Added
103
+ - Added UV tool installation support to /update command
104
+ - Added venv manual update option to error message
105
+ - Added emoji prohibition to system prompt
106
+
107
+ ### Fixed
108
+ - Improved venv detection for UV-created environments
109
+ - Added venv installation detection for /update command
110
+
111
+ ## [0.0.66] - 2025-08-14
112
+
113
+ ### Fixed
114
+ - Replaced aggressive retry messaging with constructive guidance
115
+
116
+ ## [0.0.65] - 2025-08-14
117
+
118
+ ### Added
119
+ - Implemented robust uninstall script with comprehensive detection
120
+ - Implemented robust update logic for Linux installer
121
+
122
+ ### Changed
123
+ - Changed default model to OpenRouter GPT-4.1
124
+ - Enhanced install script with config file creation and setup guidance
125
+
126
+ ### Fixed
127
+ - Added missing print helper functions to install script
128
+
129
+ ## [0.0.64] - 2025-08-14
130
+
131
+ ### Added
132
+ - Implemented UV and Hatch support to installation scripts
133
+ - Added comprehensive UV+Hatch setup documentation
134
+
135
+ ### Changed
136
+ - Migrated to UV for dependency management
137
+ - Optimized pre-commit hooks for Hatch+UV integration
138
+
139
+ ### Fixed
140
+ - Properly configured Hatch with UV installer
141
+ - Added defusedxml dependency and fixed typer compatibility
142
+
143
+ ## [0.0.63] - 2025-08-14
144
+
145
+ ### Added
146
+ - Phase 5 - Tool Prompt Micro-Injection System
147
+
148
+ ### Fixed
149
+ - Fixed agent initialization performance with strategic caching
150
+ - Added exception for glob.py in file length check
151
+
152
+ ## [0.0.62] - 2025-08-14
153
+
154
+ ### Added
155
+ - **Major Performance Optimizations & JSON Recovery System** (#82)
156
+ - Phase 1 - Ripgrep binary management foundation
157
+
158
+ ### Changed
159
+ - Complete UV+Hatch integration with dependency fixes
160
+
161
+ ## [Unreleased] - 2025-08-20
162
+
163
+ ### Added
164
+
165
+ - **Comprehensive Onboarding Experience Improvements** (#88) - Thanks to **@ryumacodes**!
166
+ - Enhanced user onboarding flow and setup experience
167
+ - Improved first-time user guidance and documentation
168
+ - Streamlined installation and configuration process
169
+ - Resolved issue #55
170
+
171
+ ### Recent Pull Requests
172
+
173
+ - **Slash Command System for Custom Automation Workflows** (#85) - Thanks to **@Lftobs**!
174
+ - Implemented flexible slash command infrastructure
175
+ - Enabled custom automation workflows
176
+ - Extended CLI capabilities with user-defined commands
177
+
178
+ - **User Documentation and README Index** (#83) - Thanks to **@MclPio**!
179
+ - Added comprehensive user documentation
180
+ - Updated main README with organized index
181
+ - Improved documentation structure and accessibility
182
+
183
+ ### Contributors
184
+
185
+ Special thanks to our recent contributors:
186
+ - **@ryumacodes** - Onboarding improvements and multiple feature implementations
187
+ - **@Lftobs** - Slash command system and workflow automation
188
+ - **@MclPio** - Documentation improvements and organization