tunacode-cli 0.0.75__tar.gz → 0.0.76.1__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 (466) hide show
  1. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.github/workflows/publish.yml +0 -7
  2. tunacode_cli-0.0.76.1/CLAUDE.md +132 -0
  3. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/PKG-INFO +63 -6
  4. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/README.md +62 -5
  5. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/README.md +9 -3
  6. tunacode_cli-0.0.76.1/documentation/agent/agent-flow.md +85 -0
  7. tunacode_cli-0.0.76.1/documentation/agent-tools/tools-architecture.md +222 -0
  8. tunacode_cli-0.0.76.1/documentation/changelog/CHANGELOG.md +188 -0
  9. tunacode_cli-0.0.76.1/documentation/configuration/config-flow-diagram.md +65 -0
  10. tunacode_cli-0.0.76.1/documentation/configuration/config-touch-points.md +21 -0
  11. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/development/hatch-build-system.md +38 -35
  12. tunacode_cli-0.0.76.1/documentation/development/publishing-workflow.md +119 -0
  13. tunacode_cli-0.0.76.1/documentation/development/streaming-text-prefix-fix.md +199 -0
  14. tunacode_cli-0.0.76.1/documentation/user/getting-started.md +251 -0
  15. tunacode_cli-0.0.76.1/memory-bank/execute/2025-09-12_15-20-00_model_selection_config_persistence_fix.md +146 -0
  16. tunacode_cli-0.0.76.1/memory-bank/execute/2025-09-15_12-30-00_configuration_dashboard_implementation.md +121 -0
  17. tunacode_cli-0.0.76.1/memory-bank/execute/2025-09-15_configuration_dashboard_ux_improvements.md +177 -0
  18. tunacode_cli-0.0.76.1/memory-bank/plan/2025-09-12_15-08-14_model_selection_config_persistence_fix.md +208 -0
  19. tunacode_cli-0.0.76.1/memory-bank/plan/2025-09-15_12-29-04_configuration_dashboard_implementation.md +485 -0
  20. tunacode_cli-0.0.76.1/memory-bank/research/2025-09-12_14-54-43_model_configuration_crash_analysis.md +130 -0
  21. tunacode_cli-0.0.76.1/memory-bank/research/2025-09-12_15-06-58_model_selection_config_update_issue.md +63 -0
  22. tunacode_cli-0.0.76.1/memory-bank/research/2025-09-12_ai-agent-tools-architecture.md +222 -0
  23. tunacode_cli-0.0.76.1/memory-bank/research/2025-09-15_12-19-00_configuration_system_and_dashboard.md +184 -0
  24. tunacode_cli-0.0.76.1/memory-bank/research/2025-09-15_13-54-11_first-chunk_character_loss_investigation.md +109 -0
  25. tunacode_cli-0.0.76.1/memory-bank/research/2025-09-16_11-12-45_setup_py_usage_and_location_analysis.md +145 -0
  26. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/pyproject.toml +2 -2
  27. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/scripts/setup_dev_env.sh +28 -27
  28. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/model.py +33 -5
  29. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/main.py +10 -0
  30. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/repl.py +17 -1
  31. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/configuration/defaults.py +2 -2
  32. tunacode_cli-0.0.76.1/src/tunacode/configuration/key_descriptions.py +275 -0
  33. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/constants.py +1 -1
  34. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/node_processor.py +40 -4
  35. tunacode_cli-0.0.76.1/src/tunacode/core/agents/agent_components/streaming.py +268 -0
  36. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/main.py +30 -15
  37. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/setup/config_setup.py +67 -224
  38. tunacode_cli-0.0.76.1/src/tunacode/core/setup/config_wizard.py +229 -0
  39. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/state.py +3 -1
  40. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/prompts/system.md +43 -29
  41. tunacode_cli-0.0.76.1/src/tunacode/ui/config_dashboard.py +567 -0
  42. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/panels.py +92 -9
  43. tunacode_cli-0.0.76.1/src/tunacode/utils/config_comparator.py +340 -0
  44. tunacode_cli-0.0.76.1/tests/characterization/commands/test_model_selection_persistence.py +237 -0
  45. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/state/test_state_initialization.py +1 -1
  46. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/test_characterization_commands.py +7 -2
  47. tunacode_cli-0.0.76.1/tests/integration/test_startup_dashboard.py +221 -0
  48. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_prompt_changes_validation.py +4 -1
  49. tunacode_cli-0.0.76.1/tests/ui/test_config_dashboard.py +404 -0
  50. tunacode_cli-0.0.76.1/tests/unit/commands/test_model_selection_persistence_new.py +118 -0
  51. tunacode_cli-0.0.76.1/tests/unit/config/test_user_configuration_permissions.py +95 -0
  52. tunacode_cli-0.0.76.1/tests/utils/test_config_comparator.py +246 -0
  53. tunacode_cli-0.0.75/CLAUDE.md +0 -114
  54. tunacode_cli-0.0.75/documentation/changelog/CHANGELOG.md +0 -61
  55. tunacode_cli-0.0.75/documentation/user/getting-started.md +0 -103
  56. tunacode_cli-0.0.75/setup.py +0 -10
  57. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/MEMORY_ANCHOR_SPEC.md +0 -0
  58. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/NEXT_PR_RULES.md +0 -0
  59. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/README.md +0 -0
  60. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/antipattern-sniffer.md +0 -0
  61. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/bug-context-analyzer.md +0 -0
  62. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/code-synthesis-analyzer.md +0 -0
  63. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/codebase-analyzer.md +0 -0
  64. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/codebase-locator.md +0 -0
  65. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/context-synthesis.md +0 -0
  66. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/documentation-synthesis-qa.md +0 -0
  67. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/expert-debugger.md +0 -0
  68. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/phased-task-processor.md +0 -0
  69. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/prompt-engineer.md +0 -0
  70. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/rapid-code-synthesis-qa.md +0 -0
  71. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/tech-docs-maintainer.md +0 -0
  72. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/anchors.json +0 -0
  73. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/CE/QA.md +0 -0
  74. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/CE/documentation-synthesis.md +0 -0
  75. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/CE/execute.md +0 -0
  76. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/CE/plan.md +0 -0
  77. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/CE/research.md +0 -0
  78. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/context-engineer/QA.md +0 -0
  79. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/context-engineer/documentation-synthesis.md +0 -0
  80. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/context-engineer/execute.md +0 -0
  81. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/context-engineer/plan.md +0 -0
  82. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/context-engineer/research.md +0 -0
  83. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/deploy.md +0 -0
  84. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/github-issue.md +0 -0
  85. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/phaser.md +0 -0
  86. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/smart-git.md +0 -0
  87. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/smells.md +0 -0
  88. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/work.md +0 -0
  89. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/workflow.md +0 -0
  90. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/delta/2025-01-05-baseline.yml +0 -0
  91. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/delta/fix-text-alignment-layout-task3.md +0 -0
  92. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/delta/task4_ui_formatting_fix.md +0 -0
  93. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/delta/v0.0.53_to_v0.0.54.diff +0 -0
  94. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/always-on-display-implementation.md +0 -0
  95. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/cli-json-recovery-incident.md +0 -0
  96. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/directory-caching-optimization.md +0 -0
  97. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/esc-investigation/ESC_KEY_INVESTIGATION.md +0 -0
  98. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/esc-investigation/ESC_KEY_STREAMING_ANALYSIS.md +0 -0
  99. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/hatch-commands.md +0 -0
  100. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/model-updates-2025.md +0 -0
  101. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/onboarding-improvements.md +0 -0
  102. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/openai_tool_calling_evaluation.md +0 -0
  103. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/phase5-prompt-injection-system.md +0 -0
  104. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/slash-commands.md +0 -0
  105. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/uv-hatch-setup.md +0 -0
  106. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/uv-installer-updates.md +0 -0
  107. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/metadata/components.yml +0 -0
  108. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/metadata/hotspots.txt +0 -0
  109. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/patterns/json_retry_implementation.md +0 -0
  110. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/qa/fix-agent-errors.yml +0 -0
  111. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/qa/fix-publish-script.yml +0 -0
  112. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/qa/fix-runtime-warnings.yml +0 -0
  113. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/README.md +0 -0
  114. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/active/task_json_retry_implementation_summary_2025-07-24_13-05-40.md +0 -0
  115. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/active/task_standardize_ui_formatting_patterns_2025-07-23_20-43-28.md +0 -0
  116. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/agents/default/spinner-enhancement-2025-08-07.md +0 -0
  117. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/agents/esc-investigation/scratchpad.md +0 -0
  118. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/agents/phase5-recovery/scratchpad.md +0 -0
  119. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/agents/tech-docs-maintainer/scratchpad.md +0 -0
  120. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/code-synthesis-analyzer_ESC_Double-Press_REPL_Abort_Analysis_2025-08-06_134859_scratchpad.md +0 -0
  121. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Add_Prompt_Injection_to_Remaining_Tools_-_Continuation_2025-08-13_152542_scratchpad.md +0 -0
  122. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Add_Prompt_Injection_to_Remaining_Tools_2025-08-13_152352_scratchpad.md +0 -0
  123. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_CLI_Agent_JSON_Recovery_Investigation_2025-08-12_124206_scratchpad.md +0 -0
  124. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_CLI_Agent_JSON_Recovery_Investigation_2025-08-12_124727_scratchpad.md +0 -0
  125. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Completely_remove_TUNACODE_TASK_COMPLETE_from_plan_mode_2025-08-09_091836_scratchpad.md +0 -0
  126. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Debug_ESC_key_still_not_working_in_approval_prompt_2025-08-09_033534_scratchpad.md +0 -0
  127. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Debug_persistent_KeyboardInterrupt_in_event_loop_2025-08-09_034136_scratchpad.md +0 -0
  128. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Debug_present_plan_tool_registration_and_model_capability_2025-08-09_092923_scratchpad.md +0 -0
  129. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Debug_stuck_double_escape_in_plan_approval_2025-08-09_033214_scratchpad.md +0 -0
  130. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Fix_Application.exit()_failed_error_in_ESC_keybinding_2025-08-09_075607_scratchpad.md +0 -0
  131. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Fix_ESC_double-tap_and_plan_display_issues_2025-08-09_090055_scratchpad.md +0 -0
  132. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Fix_ESC_exceptions_and_missing_present_plan_tool_2025-08-09_081700_scratchpad.md +0 -0
  133. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Fix_agent_not_calling_present_plan_tool_2025-08-09_090827_scratchpad.md +0 -0
  134. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Fix_double_escape_for_planning_mode_approval_prompt_2025-08-09_032759_scratchpad.md +0 -0
  135. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Fix_unhandled_KeyboardInterrupt_exception_in_event_loop_2025-08-09_033843_scratchpad.md +0 -0
  136. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Fix_wizard_UI_-_branch_safety_interference_2025-08-20_222738_scratchpad.md +0 -0
  137. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Fixed_Thinking_dots_animation_2025-08-11_121009_scratchpad.md +0 -0
  138. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Force_agent_to_actually_call_present_plan_tool_2025-08-09_091334_scratchpad.md +0 -0
  139. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_GitHub_Directory_Review_2025-08-11_122451_scratchpad.md +0 -0
  140. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Implementing_ESC_key_double-press_for_REPL_abort_2025-08-06_124754_scratchpad.md +0 -0
  141. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_JSON_Recovery_Implementation_2025-08-12_130251_scratchpad.md +0 -0
  142. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Makefile_to_Hatch_Migration_2025-08-07_192356_scratchpad.md +0 -0
  143. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Performance_Optimization_-_Agent_Initialization_2025-08-13_160447_scratchpad.md +0 -0
  144. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Phase_3_-_Glob_Tool_Optimization_2025-08-13_142601_scratchpad.md +0 -0
  145. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Replace_entire_system_prompt_with_tool-only_instructions_2025-08-09_112839_scratchpad.md +0 -0
  146. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_TunaCode_Search_Enhancement_Implementation_2025-08-13_140905_scratchpad.md +0 -0
  147. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Update_Documentation_for_JSON_Recovery_System_2025-08-12_131127_scratchpad.md +0 -0
  148. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_Update_documentation_for_always-on_display_UX_improvements_2025-08-12_154818_scratchpad.md +0 -0
  149. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/default_slash_command_system_implementation_2025-08-14_034024_scratchpad.md +0 -0
  150. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/archived/phase5-recovery_Phase_5_Recovery_Analysis_2025-08-13_145339_scratchpad.md +0 -0
  151. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/locks/code-synthesis-analyzer.lock +0 -0
  152. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/locks/default.lock +0 -0
  153. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/locks/esc-investigation.lock +0 -0
  154. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/locks/phase5-recovery.lock +0 -0
  155. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/locks/tech-docs-maintainer.lock +0 -0
  156. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/code-synthesis-analyzer_ESC_Double-Press_REPL_Abort_Analysis_2025-08-06_134859_scratchpad.md +0 -0
  157. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Add_Prompt_Injection_to_Remaining_Tools_-_Continuation_2025-08-13_152542_scratchpad.md +0 -0
  158. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Add_Prompt_Injection_to_Remaining_Tools_2025-08-13_152352_scratchpad.md +0 -0
  159. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_CLI_Agent_JSON_Recovery_Investigation_2025-08-12_124206_scratchpad.md +0 -0
  160. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_CLI_Agent_JSON_Recovery_Investigation_2025-08-12_124727_scratchpad.md +0 -0
  161. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Completely_remove_TUNACODE_TASK_COMPLETE_from_plan_mode_2025-08-09_091836_scratchpad.md +0 -0
  162. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Debug_ESC_key_still_not_working_in_approval_prompt_2025-08-09_033534_scratchpad.md +0 -0
  163. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Debug_persistent_KeyboardInterrupt_in_event_loop_2025-08-09_034136_scratchpad.md +0 -0
  164. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Debug_present_plan_tool_registration_and_model_capability_2025-08-09_092923_scratchpad.md +0 -0
  165. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Debug_stuck_double_escape_in_plan_approval_2025-08-09_033214_scratchpad.md +0 -0
  166. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Fix_Application.exit()_failed_error_in_ESC_keybinding_2025-08-09_075607_scratchpad.md +0 -0
  167. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Fix_ESC_double-tap_and_plan_display_issues_2025-08-09_090055_scratchpad.md +0 -0
  168. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Fix_ESC_exceptions_and_missing_present_plan_tool_2025-08-09_081700_scratchpad.md +0 -0
  169. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Fix_agent_not_calling_present_plan_tool_2025-08-09_090827_scratchpad.md +0 -0
  170. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Fix_double_escape_for_planning_mode_approval_prompt_2025-08-09_032759_scratchpad.md +0 -0
  171. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Fix_unhandled_KeyboardInterrupt_exception_in_event_loop_2025-08-09_033843_scratchpad.md +0 -0
  172. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Fix_wizard_UI_-_branch_safety_interference_2025-08-20_222738_scratchpad.md +0 -0
  173. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Fixed_Thinking_dots_animation_2025-08-11_121009_scratchpad.md +0 -0
  174. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Force_agent_to_actually_call_present_plan_tool_2025-08-09_091334_scratchpad.md +0 -0
  175. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_GitHub_Directory_Review_2025-08-11_122451_scratchpad.md +0 -0
  176. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Implementing_ESC_key_double-press_for_REPL_abort_2025-08-06_124754_scratchpad.md +0 -0
  177. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_JSON_Recovery_Implementation_2025-08-12_130251_scratchpad.md +0 -0
  178. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Makefile_to_Hatch_Migration_2025-08-07_192356_scratchpad.md +0 -0
  179. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Performance_Optimization_-_Agent_Initialization_2025-08-13_160447_scratchpad.md +0 -0
  180. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Phase_3_-_Glob_Tool_Optimization_2025-08-13_142601_scratchpad.md +0 -0
  181. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Replace_entire_system_prompt_with_tool-only_instructions_2025-08-09_112839_scratchpad.md +0 -0
  182. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_TunaCode_Search_Enhancement_Implementation_2025-08-13_140905_scratchpad.md +0 -0
  183. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Update_Documentation_for_JSON_Recovery_System_2025-08-12_131127_scratchpad.md +0 -0
  184. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/default_Update_documentation_for_always-on_display_UX_improvements_2025-08-12_154818_scratchpad.md +0 -0
  185. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/shared/done_tasks/phase5-recovery_Phase_5_Recovery_Analysis_2025-08-13_145339_scratchpad.md +0 -0
  186. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/tech-docs-maintainer.md +0 -0
  187. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/test_suite_issues_resolved.md +0 -0
  188. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.github/pull_request_template.md +0 -0
  189. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.github/scripts/check_file_size.py +0 -0
  190. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.github/workflows/lint.yml +0 -0
  191. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.gitignore +0 -0
  192. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.pre-commit-config.yaml +0 -0
  193. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/LICENSE +0 -0
  194. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/MANIFEST.in +0 -0
  195. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/TUNACODE.md +0 -0
  196. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/assets/tunacode_example.png +0 -0
  197. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/agent/TOOLS_WORKFLOW.md +0 -0
  198. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/agent/agent-inspo.md +0 -0
  199. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/agent/how-tunacode-agent-works.md +0 -0
  200. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/agent/main-agent-architecture.md +0 -0
  201. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/agent/swepmini-example.md +0 -0
  202. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/agent/tunacode-tool-system.md +0 -0
  203. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/configuration/.env.example +0 -0
  204. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/configuration/config-file-example.md +0 -0
  205. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/configuration/environment-variables.md +0 -0
  206. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/configuration/local-models.md +0 -0
  207. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/configuration/logging-configuration.md +0 -0
  208. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/configuration/tunacode-json-example.md +0 -0
  209. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/configuration/tunacode.json.example +0 -0
  210. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/development/codebase-hygiene.md +0 -0
  211. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/development/command-system-architecture.md +0 -0
  212. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/development/creating-custom-commands.md +0 -0
  213. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/development/performance-optimizations.md +0 -0
  214. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/development/prompt-principles.md +0 -0
  215. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/tests/README.md +0 -0
  216. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/tests/characterization-testing.md +0 -0
  217. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/tests/mocking-strategies.md +0 -0
  218. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/tests/troubleshooting.md +0 -0
  219. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/ui/ui-architecture.md +0 -0
  220. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/user/commands.md +0 -0
  221. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/user/tools.md +0 -0
  222. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/memory-bank/plan/2025-09-11_13-30-00_agent_loop_architecture_enhancement.md +0 -0
  223. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/memory-bank/plan/2025-09-11_14-00-00_enum_state_machine_implementation.md +0 -0
  224. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/memory-bank/plan/2025-09-11_14-15-00_automated_cli_tool_testing_framework.md +0 -0
  225. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/memory-bank/plan/2025-09-12_12-20-00_global_graceful_error_handling_implementation.md +0 -0
  226. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/memory-bank/research/2025-09-07_21-13-37_agent_loop_architecture.md +0 -0
  227. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/memory-bank/research/2025-09-11_13-14-06_agent_loop_enhancement_analysis.md +0 -0
  228. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/memory-bank/research/2025-09-12_12-15-48_global_graceful_error_handling_analysis.md +0 -0
  229. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/pytest.ini +0 -0
  230. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/scripts/check-file-length.sh +0 -0
  231. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/scripts/download_ripgrep.py +0 -0
  232. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/scripts/install_linux.sh +0 -0
  233. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/scripts/playwright_cache.py +0 -0
  234. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/scripts/startup_timer.py +0 -0
  235. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/scripts/uninstall.sh +0 -0
  236. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/scripts/utils/vulture_whitelist.py +0 -0
  237. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/scripts/verify_dev_env.sh +0 -0
  238. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/README.md +0 -0
  239. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/__init__.py +0 -0
  240. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/__init__.py +0 -0
  241. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/__init__.py +0 -0
  242. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/__init__.py +0 -0
  243. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/base.py +0 -0
  244. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/__init__.py +0 -0
  245. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/command_reload.py +0 -0
  246. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/conversation.py +0 -0
  247. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/debug.py +0 -0
  248. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/development.py +0 -0
  249. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/plan.py +0 -0
  250. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/quickstart.py +0 -0
  251. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/system.py +0 -0
  252. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/template.py +0 -0
  253. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/todo.py +0 -0
  254. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/registry.py +0 -0
  255. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/slash/__init__.py +0 -0
  256. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/slash/command.py +0 -0
  257. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/slash/loader.py +0 -0
  258. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/slash/processor.py +0 -0
  259. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/slash/types.py +0 -0
  260. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/slash/validator.py +0 -0
  261. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/template_shortcut.py +0 -0
  262. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/repl_components/__init__.py +0 -0
  263. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/repl_components/command_parser.py +0 -0
  264. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/repl_components/error_recovery.py +0 -0
  265. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/repl_components/output_display.py +0 -0
  266. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/repl_components/tool_executor.py +0 -0
  267. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/configuration/__init__.py +0 -0
  268. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/configuration/models.py +0 -0
  269. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/configuration/settings.py +0 -0
  270. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/context.py +0 -0
  271. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/__init__.py +0 -0
  272. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/__init__.py +0 -0
  273. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/__init__.py +0 -0
  274. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/agent_config.py +0 -0
  275. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/agent_helpers.py +0 -0
  276. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/json_tool_parser.py +0 -0
  277. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/message_handler.py +0 -0
  278. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/response_state.py +0 -0
  279. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/result_wrapper.py +0 -0
  280. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/state_transition.py +0 -0
  281. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/task_completion.py +0 -0
  282. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/tool_buffer.py +0 -0
  283. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/tool_executor.py +0 -0
  284. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/truncation_checker.py +0 -0
  285. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/utils.py +0 -0
  286. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/background/__init__.py +0 -0
  287. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/background/manager.py +0 -0
  288. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/code_index.py +0 -0
  289. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/llm/__init__.py +0 -0
  290. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/logging/__init__.py +0 -0
  291. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/logging/config.py +0 -0
  292. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/logging/formatters.py +0 -0
  293. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/logging/handlers.py +0 -0
  294. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/logging/logger.py +0 -0
  295. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/setup/__init__.py +0 -0
  296. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/setup/agent_setup.py +0 -0
  297. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/setup/base.py +0 -0
  298. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/setup/coordinator.py +0 -0
  299. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/setup/environment_setup.py +0 -0
  300. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/setup/git_safety_setup.py +0 -0
  301. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/setup/template_setup.py +0 -0
  302. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/token_usage/api_response_parser.py +0 -0
  303. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/token_usage/cost_calculator.py +0 -0
  304. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/token_usage/usage_tracker.py +0 -0
  305. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/tool_handler.py +0 -0
  306. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/exceptions.py +0 -0
  307. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/prompts/system.md.bak +0 -0
  308. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/py.typed +0 -0
  309. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/services/__init__.py +0 -0
  310. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/services/mcp.py +0 -0
  311. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/setup.py +0 -0
  312. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/templates/__init__.py +0 -0
  313. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/templates/loader.py +0 -0
  314. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/__init__.py +0 -0
  315. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/base.py +0 -0
  316. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/bash.py +0 -0
  317. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/exit_plan_mode.py +0 -0
  318. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/glob.py +0 -0
  319. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/grep.py +0 -0
  320. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/grep_components/__init__.py +0 -0
  321. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/grep_components/file_filter.py +0 -0
  322. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/grep_components/pattern_matcher.py +0 -0
  323. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/grep_components/result_formatter.py +0 -0
  324. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/grep_components/search_result.py +0 -0
  325. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/list_dir.py +0 -0
  326. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/present_plan.py +0 -0
  327. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/bash_prompt.xml +0 -0
  328. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/exit_plan_mode_prompt.xml +0 -0
  329. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/glob_prompt.xml +0 -0
  330. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/grep_prompt.xml +0 -0
  331. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/list_dir_prompt.xml +0 -0
  332. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/present_plan_prompt.xml +0 -0
  333. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/read_file_prompt.xml +0 -0
  334. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/run_command_prompt.xml +0 -0
  335. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/todo_prompt.xml +0 -0
  336. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/update_file_prompt.xml +0 -0
  337. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/write_file_prompt.xml +0 -0
  338. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/read_file.py +0 -0
  339. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/run_command.py +0 -0
  340. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/schema_assembler.py +0 -0
  341. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/todo.py +0 -0
  342. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/update_file.py +0 -0
  343. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/write_file.py +0 -0
  344. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/xml_helper.py +0 -0
  345. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tutorial/__init__.py +0 -0
  346. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tutorial/content.py +0 -0
  347. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tutorial/manager.py +0 -0
  348. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tutorial/steps.py +0 -0
  349. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/types.py +0 -0
  350. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/__init__.py +0 -0
  351. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/completers.py +0 -0
  352. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/console.py +0 -0
  353. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/constants.py +0 -0
  354. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/decorators.py +0 -0
  355. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/input.py +0 -0
  356. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/keybindings.py +0 -0
  357. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/lexers.py +0 -0
  358. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/logging_compat.py +0 -0
  359. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/model_selector.py +0 -0
  360. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/output.py +0 -0
  361. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/prompt_manager.py +0 -0
  362. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/tool_descriptions.py +0 -0
  363. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/tool_ui.py +0 -0
  364. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/utils.py +0 -0
  365. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/validators.py +0 -0
  366. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/__init__.py +0 -0
  367. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/api_key_validation.py +0 -0
  368. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/bm25.py +0 -0
  369. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/diff_utils.py +0 -0
  370. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/file_utils.py +0 -0
  371. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/import_cache.py +0 -0
  372. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/json_utils.py +0 -0
  373. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/message_utils.py +0 -0
  374. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/models_registry.py +0 -0
  375. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/retry.py +0 -0
  376. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/ripgrep.py +0 -0
  377. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/security.py +0 -0
  378. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/system.py +0 -0
  379. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/text_utils.py +0 -0
  380. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/token_counter.py +0 -0
  381. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/user_configuration.py +0 -0
  382. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/CHARACTERIZATION_README.md +0 -0
  383. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/CHARACTERIZATION_TEST_PLAN.md +0 -0
  384. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/CHARACTERIZATION_TEST_PLAN_AGENT_MAIN.md +0 -0
  385. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/CHARACTERIZATION_TEST_PLAN_COMMANDS.md +0 -0
  386. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/FILE_OPERATIONS_TEST_GUIDE.md +0 -0
  387. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/__init__.py +0 -0
  388. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/agent/__init__.py +0 -0
  389. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/agent/conftest.py +0 -0
  390. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/agent/test_agent_creation.py +0 -0
  391. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/agent/test_json_tool_parsing.py +0 -0
  392. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/agent/test_process_node.py +0 -0
  393. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/agent/test_process_request.py +0 -0
  394. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/agent/test_tool_message_patching.py +0 -0
  395. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/background/test_background_edge_cases.py +0 -0
  396. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/background/test_cleanup.py +0 -0
  397. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/background/test_task_cancellation.py +0 -0
  398. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/background/test_task_creation.py +0 -0
  399. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/background/test_task_execution.py +0 -0
  400. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/code_index/test_cache_management.py +0 -0
  401. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/code_index/test_file_scanning.py +0 -0
  402. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/code_index/test_index_building.py +0 -0
  403. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/code_index/test_search_operations.py +0 -0
  404. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/code_index/test_symbol_extraction.py +0 -0
  405. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/commands/__init__.py +0 -0
  406. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/commands/test_init_command.py +0 -0
  407. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/conftest.py +0 -0
  408. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/context/README.md +0 -0
  409. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/context/__init__.py +0 -0
  410. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/context/test_context_acceptance.py +0 -0
  411. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/context/test_context_integration.py +0 -0
  412. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/context/test_context_loading.py +0 -0
  413. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/context/test_tunacode_logging.py +0 -0
  414. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/repl/test_command_parsing.py +0 -0
  415. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/repl/test_error_handling.py +0 -0
  416. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/repl/test_escape_key_behavior.py +0 -0
  417. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/repl/test_input_handling.py +0 -0
  418. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/repl/test_keyboard_interrupts.py +0 -0
  419. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/repl/test_multiline_input.py +0 -0
  420. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/repl/test_output_display_logic.py +0 -0
  421. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/repl/test_repl_initialization.py +0 -0
  422. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/repl/test_session_flow.py +0 -0
  423. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/services/test_error_recovery.py +0 -0
  424. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/services/test_llm_routing.py +0 -0
  425. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/services/test_mcp_integration.py +0 -0
  426. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/services/test_service_lifecycle.py +0 -0
  427. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/state/test_agent_tracking.py +0 -0
  428. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/state/test_message_history.py +0 -0
  429. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/state/test_permissions.py +0 -0
  430. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/state/test_session_management.py +0 -0
  431. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/state/test_user_config.py +0 -0
  432. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/test_characterization_grep.py +0 -0
  433. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/test_characterization_main.py +0 -0
  434. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/test_characterization_repl.py +0 -0
  435. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/ui/test_async_ui.py +0 -0
  436. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/ui/test_console_output.py +0 -0
  437. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/ui/test_diff_display.py +0 -0
  438. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/ui/test_prompt_rendering.py +0 -0
  439. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/ui/test_spinner_messages.py +0 -0
  440. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/ui/test_tool_confirmations.py +0 -0
  441. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/utils/test_expand_file_refs.py +0 -0
  442. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/utils/test_file_operations.py +0 -0
  443. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/utils/test_git_commands.py +0 -0
  444. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/utils/test_token_counting.py +0 -0
  445. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/utils/test_utils_edge_cases.py +0 -0
  446. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/conftest.py +0 -0
  447. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_agent_output_formatting.py +0 -0
  448. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_command_parser_retry.py +0 -0
  449. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_completion_detection.py +0 -0
  450. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_glob_phase3.py +0 -0
  451. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_json_concatenation_recovery.py +0 -0
  452. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_json_retry.py +0 -0
  453. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_logging_config.py +0 -0
  454. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_onboarding_features.py +0 -0
  455. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_phase2_type_hints.py +0 -0
  456. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_plan_mode.py +0 -0
  457. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_prompt_injection.py +0 -0
  458. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_security.py +0 -0
  459. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_slash_commands_comprehensive.py +0 -0
  460. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_slash_commands_functional.py +0 -0
  461. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_slash_commands_integration.py +0 -0
  462. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_slash_commands_isolated.py +0 -0
  463. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_spinner_updates.py +0 -0
  464. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_tool_batching_retry.py +0 -0
  465. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/unit/test_constants_enums.py +0 -0
  466. {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tools/emoji_cleaner.py +0 -0
@@ -71,10 +71,3 @@ jobs:
71
71
  TWINE_USERNAME: __token__
72
72
  TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
73
73
  run: python -m twine upload dist/*
74
-
75
- # Fallback: username/password secrets
76
- - name: Publish to PyPI (user/pass)
77
- env:
78
- TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
79
- TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
80
- run: python -m twine upload dist/*
@@ -0,0 +1,132 @@
1
+
2
+ ### Workflow
3
+ Make this repository perfectly optimized for you and future instances of Claude working with it. Implement the following structure and instructions precisely:
4
+
5
+ ### Directory Structure
6
+
7
+ ```
8
+ claude/
9
+ ├── metadata/
10
+ │ ├── dependency_graphs/
11
+ │ ├── file_classifications.json (implementation vs. interface)
12
+ │ └── intent_classifications.json
13
+ ├── semantic_index/
14
+ │ ├── function_call_graphs.json
15
+ │ ├── intent_mappings.json
16
+ │ └── type_relationships.json
17
+ ├── debug_history/
18
+ │ ├── error_solution_logs.json (categorized by component and error type)
19
+ │ └── context_and_versions.json
20
+ ├── patterns/
21
+ │ ├── canonical_patterns/
22
+ │ ├── empirical_interface_patterns/
23
+ │ └── reliability_metrics.json
24
+ ├── cheatsheets/
25
+ │ └── component_cheatsheets.md (quick-reference guides, known pitfalls, Claude-specific behaviors)
26
+ ├── qa/
27
+ │ ├── solved_problems/
28
+ │ ├── context_logs/
29
+ │ └── reasoning_docs/
30
+ ├── debug_history/
31
+ │ └── debug_sessions.json (error→solution pairs, context, code versions)
32
+ ├── docs_model_friendly/
33
+ │ ├── component_purpose.md
34
+ │ └── component_relationships.md
35
+ ├── delta_summaries/
36
+ │ ├── api_change_logs.json
37
+ │ ├── behavior_changes.json
38
+ │ └── reasoning_logs/
39
+ └── memory_anchors/
40
+ ├── anchors.json (UUID-based anchors with semantic structure)
41
+
42
+ To perfectly optimize this repository for you and future instances of Claude working with it, implement the following explicit instructions:
43
+
44
+ 1. **Claude-specific Metadata Directory**
45
+ - Maintain normalized metadata about the codebase, including dependency graphs, file types (implementation/interface), and intent classifications.
46
+
47
+ 2. **Semantic Code Indexing**
48
+ - Create a semantic index with intent classification and pre-analyzed semantic relationships.
49
+ - Document detailed function-to-function call graphs and intent mappings.
50
+
51
+ 3. **Debug History Database**
52
+ - Log all debugging sessions explicitly, including error-solution pairs, context, code versions, and categorization by component/error type.
53
+
54
+ 4. **Pattern and Industry Database**
55
+ - Provide canonical implementation patterns and empirical interface examples.
56
+ - Include explicit reliability metrics for assessing robustness.
57
+
58
+ 4. **Component-specific Cheat Sheets**
59
+ - Create quick-reference guides documenting common operations, pitfalls, edge cases, and Claude-specific behaviors clearly.
60
+
61
+ 5. **Queries-and-Answers Database**
62
+ - Store solved queries explicitly indexed by component, file, error type, with context and detailed reasoning.
63
+
64
+ 6. **Claude-specific Model-Friendly Documentation**
65
+ - Include clear, explicit documentation on component purposes and relationships optimized for Claude.
66
+
67
+ 7. **Delta Summaries**
68
+ - Clearly document semantic change logs, highlighting API changes, behavior shifts, and reasoning behind these changes.
69
+
70
+ 7. **Explicit Memory Anchors**
71
+ - Embed special "memory anchor" comments with UUID-based identifiers and semantic structure for easy and precise future reference.
72
+
73
+ Implementing these changes ensures an optimized, efficient, and highly actionable Claude-specific repository structure for current and future Claude interactions
74
+
75
+ - **CRITICAL: WORKTREE REQUIREMENT** - When user requests a worktree, you MUST:
76
+ 1. Create the worktree with `git worktree add -b branch-name ../dirname`
77
+ 2. If access is blocked, immediately ask: "I cannot access the worktree directory. Should I: a) Work in a subdirectory instead, b) Use a branch in the main directory, or c) Another solution?"
78
+ 3. NEVER proceed without a worktree if user specifically requested one
79
+
80
+ - before any updates make a git commit rollback point, clearly labeled for future agents
81
+
82
+ - the clear outline of the objective MUST be established before we begin ANY coding, do not under any circumstance begin any updates untill this is clearly understood, if you have any ambiuguity or quesiton, the user can be brought in or use best practises
83
+
84
+ - pre-commit hooks can NOT be skipped, you will be punished for skipping the
85
+
86
+
87
+ - grep documentation and .claude as needed BOTH of these have a README.md that ahs a direcoty map, you MUST read these before any bigger grep or context searches
88
+
89
+ - in general gather as much context as needed, unless specified by the user
90
+
91
+ - this is the most important part of this prompt: Synthesis context aggressively and heuristically AS NEEDED ONLY You can deploy the appropriate subagent for complex tasks agents list below
92
+
93
+ ### Documentation
94
+
95
+ - update the documents @documentation and in .claude after any update.
96
+
97
+ - use the subagent tech-docs-maintainer to update the documentation you MUST instruct the subagent to keep doc updates short you will be PUNISHED for not telling the documentation agent to keep it to only the most distilled information
98
+
99
+ - always follow best practices with git commits naming and gh cli workflows
100
+
101
+ - commit frequently
102
+
103
+ - always be on the side of safety, if you have any question consult the user
104
+
105
+ ### Python Coding Standards
106
+
107
+ - always use the .venv
108
+ - Use type hints (PEP 484) for all function signatures
109
+ - Prefer f-strings (PEP 498) over %-formatting or .format()
110
+ - Use pathlib.Path instead of os.path for filesystem operations
111
+ - Structure imports: stdlib → third-party → local (PEP 8)
112
+ - Use dataclasses (PEP 557) for simple data containers
113
+ - Prefer context managers (with) for resource handling
114
+ - Use structural pattern matching (PEP 634) for complex
115
+ - run ruff frequently for both linting and formatting
116
+
117
+ ### Testing
118
+
119
+ - "hatch run test" command for testing suite
120
+
121
+ - anytime a new feature or refactor is done, we MUST find or make the golden/character test FIRST as a baseline standaard BEFORE starting, under no circumstance are you to NOT follow this TDD pattern
122
+
123
+ - if a test for a feature does not exist you MUST create one FIRST to capture current behavior
124
+
125
+
126
+
127
+
128
+ ## Available Agents:
129
+
130
+ 1. **bug-context-analyzer** - Investigates precise context around bugs without suggesting fixes
131
+ 2. **code-synthesis-analyzer** - Analyzes recent code changes to identify issues needing fixes
132
+ 3. **documentation-synthesis-qa** - Creates comprehensive docs via multi-agent orchestration
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tunacode-cli
3
- Version: 0.0.75
3
+ Version: 0.0.76.1
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
@@ -75,6 +75,27 @@ pip install tunacode-cli
75
75
 
76
76
  For detailed installation and configuration instructions, see the [**Getting Started Guide**](documentation/user/getting-started.md).
77
77
 
78
+ ## Quickstart
79
+
80
+ ```bash
81
+ # 1) Install
82
+ pip install tunacode-cli
83
+
84
+ # 2) Launch the CLI
85
+ tunacode --wizard # guided setup (enter an API key, pick a model)
86
+
87
+ # 3) Try common commands in the REPL
88
+ /help # see commands
89
+ /model # explore models and set a default
90
+ /plan # enter read-only Plan Mode
91
+ ```
92
+
93
+ Tip: You can also skip the wizard and set everything via flags:
94
+
95
+ ```bash
96
+ tunacode --model openai:gpt-4.1 --key sk-your-key
97
+ ```
98
+
78
99
  ## Development Installation
79
100
 
80
101
  For contributors and developers who want to work on TunaCode:
@@ -87,13 +108,13 @@ cd tunacode
87
108
  # Quick setup (recommended)
88
109
  ./scripts/setup_dev_env.sh
89
110
 
90
- # Or manual setup
91
- python3 -m venv venv
92
- source venv/bin/activate # On Windows: venv\Scripts\activate
93
- pip install -e ".[dev]"
111
+ # Or manual setup with UV (recommended)
112
+ uv venv
113
+ source .venv/bin/activate # On Windows: .venv\Scripts\activate
114
+ uv pip install -e ".[dev]"
94
115
 
95
116
  # Verify installation
96
- python -m tunacode --version
117
+ tunacode --version
97
118
  ```
98
119
 
99
120
  See the [Hatch Build System Guide](documentation/development/hatch-build-system.md) for detailed instructions on the development environment.
@@ -102,6 +123,42 @@ See the [Hatch Build System Guide](documentation/development/hatch-build-system.
102
123
 
103
124
  Choose your AI provider and set your API key. For more details, see the [Configuration Section](documentation/user/getting-started.md#2-configuration) in the Getting Started Guide. For local models (LM Studio, Ollama, etc.), see the [Local Models Setup Guide](documentation/configuration/local-models.md).
104
125
 
126
+ ### New: Enhanced Model Selection
127
+
128
+ TunaCode now automatically saves your model selection for future sessions. When you choose a model using `/model <provider:name>`, it will be remembered across restarts.
129
+
130
+ **If you encounter API key errors**, you can manually create a configuration file that matches the current schema:
131
+
132
+ ```bash
133
+ # Create the config file
134
+ cat > ~/.config/tunacode.json << 'EOF'
135
+ {
136
+ "default_model": "openai:gpt-4.1",
137
+ "env": {
138
+ "OPENAI_API_KEY": "your-openai-api-key-here",
139
+ "ANTHROPIC_API_KEY": "",
140
+ "GEMINI_API_KEY": "",
141
+ "OPENROUTER_API_KEY": ""
142
+ },
143
+ "settings": {
144
+ "enable_streaming": true,
145
+ "max_iterations": 40,
146
+ "context_window_size": 200000
147
+ },
148
+ "mcpServers": {}
149
+ }
150
+ EOF
151
+ ```
152
+
153
+ Replace the model and API key with your preferred provider and credentials. Examples:
154
+ - `openai:gpt-4.1` (requires OPENAI_API_KEY)
155
+ - `anthropic:claude-4-sonnet-20250522` (requires ANTHROPIC_API_KEY)
156
+ - `google:gemini-2.5-pro` (requires GEMINI_API_KEY)
157
+
158
+ ### ⚠️ Important Notice
159
+
160
+ I apologize for any recent issues with model selection and configuration. I'm actively working to fix these problems and improve the overall stability of TunaCode. Your patience and feedback are greatly appreciated as I work to make the tool more reliable.
161
+
105
162
  ### Recommended Models
106
163
 
107
164
  Based on extensive testing, these models provide the best performance:
@@ -27,6 +27,27 @@ pip install tunacode-cli
27
27
 
28
28
  For detailed installation and configuration instructions, see the [**Getting Started Guide**](documentation/user/getting-started.md).
29
29
 
30
+ ## Quickstart
31
+
32
+ ```bash
33
+ # 1) Install
34
+ pip install tunacode-cli
35
+
36
+ # 2) Launch the CLI
37
+ tunacode --wizard # guided setup (enter an API key, pick a model)
38
+
39
+ # 3) Try common commands in the REPL
40
+ /help # see commands
41
+ /model # explore models and set a default
42
+ /plan # enter read-only Plan Mode
43
+ ```
44
+
45
+ Tip: You can also skip the wizard and set everything via flags:
46
+
47
+ ```bash
48
+ tunacode --model openai:gpt-4.1 --key sk-your-key
49
+ ```
50
+
30
51
  ## Development Installation
31
52
 
32
53
  For contributors and developers who want to work on TunaCode:
@@ -39,13 +60,13 @@ cd tunacode
39
60
  # Quick setup (recommended)
40
61
  ./scripts/setup_dev_env.sh
41
62
 
42
- # Or manual setup
43
- python3 -m venv venv
44
- source venv/bin/activate # On Windows: venv\Scripts\activate
45
- pip install -e ".[dev]"
63
+ # Or manual setup with UV (recommended)
64
+ uv venv
65
+ source .venv/bin/activate # On Windows: .venv\Scripts\activate
66
+ uv pip install -e ".[dev]"
46
67
 
47
68
  # Verify installation
48
- python -m tunacode --version
69
+ tunacode --version
49
70
  ```
50
71
 
51
72
  See the [Hatch Build System Guide](documentation/development/hatch-build-system.md) for detailed instructions on the development environment.
@@ -54,6 +75,42 @@ See the [Hatch Build System Guide](documentation/development/hatch-build-system.
54
75
 
55
76
  Choose your AI provider and set your API key. For more details, see the [Configuration Section](documentation/user/getting-started.md#2-configuration) in the Getting Started Guide. For local models (LM Studio, Ollama, etc.), see the [Local Models Setup Guide](documentation/configuration/local-models.md).
56
77
 
78
+ ### New: Enhanced Model Selection
79
+
80
+ TunaCode now automatically saves your model selection for future sessions. When you choose a model using `/model <provider:name>`, it will be remembered across restarts.
81
+
82
+ **If you encounter API key errors**, you can manually create a configuration file that matches the current schema:
83
+
84
+ ```bash
85
+ # Create the config file
86
+ cat > ~/.config/tunacode.json << 'EOF'
87
+ {
88
+ "default_model": "openai:gpt-4.1",
89
+ "env": {
90
+ "OPENAI_API_KEY": "your-openai-api-key-here",
91
+ "ANTHROPIC_API_KEY": "",
92
+ "GEMINI_API_KEY": "",
93
+ "OPENROUTER_API_KEY": ""
94
+ },
95
+ "settings": {
96
+ "enable_streaming": true,
97
+ "max_iterations": 40,
98
+ "context_window_size": 200000
99
+ },
100
+ "mcpServers": {}
101
+ }
102
+ EOF
103
+ ```
104
+
105
+ Replace the model and API key with your preferred provider and credentials. Examples:
106
+ - `openai:gpt-4.1` (requires OPENAI_API_KEY)
107
+ - `anthropic:claude-4-sonnet-20250522` (requires ANTHROPIC_API_KEY)
108
+ - `google:gemini-2.5-pro` (requires GEMINI_API_KEY)
109
+
110
+ ### ⚠️ Important Notice
111
+
112
+ I apologize for any recent issues with model selection and configuration. I'm actively working to fix these problems and improve the overall stability of TunaCode. Your patience and feedback are greatly appreciated as I work to make the tool more reliable.
113
+
57
114
  ### Recommended Models
58
115
 
59
116
  Based on extensive testing, these models provide the best performance:
@@ -4,7 +4,7 @@ Project documentation for tunacode.
4
4
 
5
5
  ## Directory Structure
6
6
 
7
- ```
7
+ ```text
8
8
  documentation/
9
9
  ├── agent/ # Agent architecture and workflows
10
10
  │ ├── TOOLS_WORKFLOW.md
@@ -12,6 +12,8 @@ documentation/
12
12
  │ └── main-agent-architecture.md
13
13
  ├── configuration/ # System configuration docs
14
14
  │ ├── config-file-example.md
15
+ │ ├── config-flow-diagram.md
16
+ │ ├── config-touch-points.md
15
17
  │ ├── local-models.md
16
18
  │ └── logging-configuration.md
17
19
  ├── development/ # Development practices
@@ -19,8 +21,10 @@ documentation/
19
21
  │ ├── command-system-architecture.md
20
22
  │ ├── creating-custom-commands.md
21
23
  │ ├── hatch-build-system.md
22
- | ├── performance-optimizations.md
23
- └── prompt-principles.md
24
+ ├── performance-optimizations.md
25
+ ├── publishing-workflow.md
26
+ │ ├── prompt-principles.md
27
+ │ └── streaming-text-prefix-fix.md
24
28
  │── user/ # user guides
25
29
  │── getting-started.md
26
30
  │── commands.md
@@ -36,6 +40,8 @@ General project documentation for features, architecture, and best practices.
36
40
  - [Command System Architecture](development/command-system-architecture.md) - Technical overview of the command system design and components.
37
41
  - [Creating Custom Commands](development/creating-custom-commands.md) - Step-by-step guide for creating built-in and slash commands.
38
42
  - [Hatch Build System](development/hatch-build-system.md) - Complete guide to using Hatch for development and building.
43
+ - [Publishing Workflow](development/publishing-workflow.md) - Automated PyPI publishing process and release management.
39
44
  - [Configuration File Example](configuration/config-file-example.md) - Complete example of `~/.config/tunacode.json` with all available settings.
40
45
  - [Local Models Setup](configuration/local-models.md) - Guide for using local models with LM Studio or any OpenAI-compatible API.
41
46
  - [Performance Optimizations](development/performance-optimizations.md) - Major performance improvements and optimization strategies.
47
+ - [Streaming Text Prefix Fix](development/streaming-text-prefix-fix.md) - Technical documentation for the streaming text truncation fix.
@@ -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)