tunacode-cli 0.0.77.2__tar.gz → 0.0.77.3__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 (455) hide show
  1. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/debug_history/debug_sessions.json +17 -0
  2. tunacode_cli-0.0.77.3/.claude/delta_summaries/2025-10-03-tool_handler-behavior-optimization.md +70 -0
  3. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/delta_summaries/api_change_logs.json +25 -0
  4. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/delta_summaries/behavior_changes.json +38 -0
  5. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/delta_summaries/reasoning_logs.json +51 -0
  6. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/docs_model_friendly/component_purpose.md +14 -5
  7. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/docs_model_friendly/component_relationships.md +6 -0
  8. tunacode_cli-0.0.77.3/.claude/memory_anchors/anchors.json +60 -0
  9. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/metadata/file_classifications.json +30 -0
  10. tunacode_cli-0.0.77.3/.claude/qa/context_logs/latest_session.txt +1 -0
  11. tunacode_cli-0.0.77.3/.claude/qa/context_logs/tool-rejection-feedback-20251010-000001/summary.md +7 -0
  12. tunacode_cli-0.0.77.3/.claude/qa/reasoning_docs/tool-rejection-feedback-20251010-000001.md +16 -0
  13. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/semantic_index/function_call_graphs.json +43 -0
  14. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/semantic_index/intent_mappings.json +11 -0
  15. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/semantic_index/type_relationships.json +19 -0
  16. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/PKG-INFO +1 -1
  17. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/changelog/CHANGELOG.md +5 -0
  18. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/development/publishing-workflow.md +10 -10
  19. tunacode_cli-0.0.77.3/memory-bank/execute/2025-10-02_14-45-00_release_process_automation.md +25 -0
  20. tunacode_cli-0.0.77.3/memory-bank/plan/2025-10-02_14-30-45_release_process_automation.md +114 -0
  21. tunacode_cli-0.0.77.3/memory-bank/research/2025-10-02_14-26-18_release_process_analysis.md +151 -0
  22. tunacode_cli-0.0.77.3/memory-bank/research/2025-10-03_11-17-55_repl-test-analysis.md +101 -0
  23. tunacode_cli-0.0.77.3/memory-bank/research/2025-10-10_11-44-51_userabort_error_analysis.md +76 -0
  24. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/pyproject.toml +2 -2
  25. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/repl.py +2 -1
  26. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/constants.py +1 -1
  27. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/agents/agent_components/node_processor.py +3 -0
  28. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/tool_handler.py +16 -0
  29. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/types.py +1 -0
  30. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/ui/tool_ui.py +30 -8
  31. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/repl/test_error_handling.py +4 -2
  32. tunacode_cli-0.0.77.3/tests/characterization/repl_components/test_tool_handler.py +76 -0
  33. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/ui/test_tool_confirmations.py +24 -5
  34. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/test_plan_mode.py +44 -1
  35. tunacode_cli-0.0.77.2/.claude/memory_anchors/anchors.json +0 -33
  36. tunacode_cli-0.0.77.2/.claude/qa/context_logs/latest_session.txt +0 -1
  37. tunacode_cli-0.0.77.2/src/tunacode/context.py +0 -71
  38. tunacode_cli-0.0.77.2/tests/characterization/context/README.md +0 -28
  39. tunacode_cli-0.0.77.2/tests/characterization/context/__init__.py +0 -1
  40. tunacode_cli-0.0.77.2/tests/characterization/context/test_context_acceptance.py +0 -103
  41. tunacode_cli-0.0.77.2/tests/characterization/context/test_context_integration.py +0 -116
  42. tunacode_cli-0.0.77.2/tests/characterization/context/test_context_loading.py +0 -152
  43. tunacode_cli-0.0.77.2/tests/characterization/context/test_tunacode_logging.py +0 -96
  44. tunacode_cli-0.0.77.2/tests/characterization/test_characterization_repl.py +0 -372
  45. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/README.md +0 -0
  46. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/debug_history/2025-09-21-rag-search-hyphen-gotcha.md +0 -0
  47. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/delta_summaries/2025-01-05-baseline.yml +0 -0
  48. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/delta_summaries/2025-09-21-models_registry-pydantic-conversion.md +0 -0
  49. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/delta_summaries/2025-09-21-models_registry-validation-tests.md +0 -0
  50. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/delta_summaries/2025-09-21-test-update-model-command-characterization.md +0 -0
  51. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/delta_summaries/2025-10-01-startup-banner-panel.md +0 -0
  52. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/delta_summaries/fix-text-alignment-layout-task3.md +0 -0
  53. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/delta_summaries/prompt_system_xml_migration.json +0 -0
  54. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/delta_summaries/task4_ui_formatting_fix.md +0 -0
  55. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/delta_summaries/v0.0.53_to_v0.0.54.diff +0 -0
  56. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/development/always-on-display-implementation.md +0 -0
  57. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/development/cli-json-recovery-incident.md +0 -0
  58. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/development/directory-caching-optimization.md +0 -0
  59. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/development/esc-investigation/ESC_KEY_INVESTIGATION.md +0 -0
  60. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/development/esc-investigation/ESC_KEY_STREAMING_ANALYSIS.md +0 -0
  61. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/development/hatch-commands.md +0 -0
  62. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/development/model-updates-2025.md +0 -0
  63. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/development/onboarding-improvements.md +0 -0
  64. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/development/openai_tool_calling_evaluation.md +0 -0
  65. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/development/phase5-prompt-injection-system.md +0 -0
  66. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/development/slash-commands.md +0 -0
  67. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/development/uv-hatch-setup.md +0 -0
  68. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/development/uv-installer-updates.md +0 -0
  69. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/development/version-management.md +0 -0
  70. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/docs_model_friendly/rag_modules_overview.md +0 -0
  71. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/kv/github-actions-release-fix.json +0 -0
  72. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/metadata/components.yml +0 -0
  73. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/metadata/hotspots.txt +0 -0
  74. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/patterns/canonical_patterns/backward_compatibility_refactor.md +0 -0
  75. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/patterns/json_retry_implementation.md +0 -0
  76. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/qa/context_logs/main-agent-integration-20250917-123100/commits.txt +0 -0
  77. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/qa/context_logs/main-agent-integration-20250917-123100/diffstat.txt +0 -0
  78. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/qa/context_logs/main-agent-integration-20250917-123100/files.json +0 -0
  79. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/qa/context_logs/main-agent-integration-20250917-123100/hunks.txt +0 -0
  80. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/qa/context_logs/main-agent-integration-20250917-141518/commits.txt +0 -0
  81. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/qa/context_logs/main-agent-integration-20250917-141518/diffstat.txt +0 -0
  82. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/qa/context_logs/main-agent-integration-20250917-141518/files.json +0 -0
  83. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/qa/context_logs/main-agent-integration-20250917-141518/hunks.txt +0 -0
  84. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/qa/context_logs/react-tool-session-20250120-000002/summary.md +0 -0
  85. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/qa/context_logs/smart-git-20250917-122934/commits.txt +0 -0
  86. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/qa/context_logs/smart-git-20250917-122934/diffstat.txt +0 -0
  87. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/qa/context_logs/smart-git-20250917-122934/files.json +0 -0
  88. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/qa/fix-agent-errors.yml +0 -0
  89. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/qa/fix-publish-script.yml +0 -0
  90. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/qa/fix-runtime-warnings.yml +0 -0
  91. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/qa/reasoning_docs/main-agent-integration-20250917-123100.md +0 -0
  92. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/qa/reasoning_docs/main-agent-integration-20250917-141518.md +0 -0
  93. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/qa/reasoning_docs/simplified-agent-handoff-20250929.md +0 -0
  94. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/qa/reasoning_docs/smart-git-20250917-122934.md +0 -0
  95. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/rag_knowledge.db +0 -0
  96. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.claude/semantic_index/prompt_system_changes.json +0 -0
  97. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.github/pull_request_template.md +0 -0
  98. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.github/scripts/check_file_size.py +0 -0
  99. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.github/workflows/lint.yml +0 -0
  100. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.github/workflows/publish-release.yml +0 -0
  101. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.gitignore +0 -0
  102. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/.pre-commit-config.yaml +0 -0
  103. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/AGENTS.md +0 -0
  104. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/CLAUDE.md +0 -0
  105. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/LICENSE +0 -0
  106. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/MANIFEST.in +0 -0
  107. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/README.md +0 -0
  108. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/TODO.md +0 -0
  109. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/assets/tunacode_example.png +0 -0
  110. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/docs/reports/subagent_analysis/code-synthesis-analyzer_report.md +0 -0
  111. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/docs/reports/subagent_analysis/codebase-analyzer_report.md +0 -0
  112. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/docs/reviews/FAGAN_PLAN.md +0 -0
  113. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/docs/reviews/agent_seams.md +0 -0
  114. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/docs/reviews/fagan_inspection_defects.json +0 -0
  115. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/docs/reviews/fagan_inspection_summary.md +0 -0
  116. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/docs/reviews/main_agent_refactor_issues.md +0 -0
  117. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/docs/reviews/main_agent_refactor_plan.md +0 -0
  118. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/README.md +0 -0
  119. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/agent/TOOLS_WORKFLOW.md +0 -0
  120. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/agent/agent-flow.md +0 -0
  121. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/agent/agent-inspo.md +0 -0
  122. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/agent/how-tunacode-agent-works.md +0 -0
  123. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/agent/main-agent-architecture.md +0 -0
  124. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/agent/main-agent.md +0 -0
  125. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/agent/swepmini-example.md +0 -0
  126. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/agent/tunacode-tool-system.md +0 -0
  127. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/agent-tools/ReAct-vs-ReWoo.md +0 -0
  128. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/agent-tools/tools-architecture.md +0 -0
  129. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/configuration/.env.example +0 -0
  130. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/configuration/config-file-example.md +0 -0
  131. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/configuration/config-flow-diagram.md +0 -0
  132. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/configuration/config-touch-points.md +0 -0
  133. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/configuration/environment-variables.md +0 -0
  134. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/configuration/local-models.md +0 -0
  135. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/configuration/logging-configuration.md +0 -0
  136. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/configuration/tunacode-json-example.md +0 -0
  137. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/configuration/tunacode.json.example +0 -0
  138. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/development/codebase-hygiene.md +0 -0
  139. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/development/command-system-architecture.md +0 -0
  140. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/development/creating-custom-commands.md +0 -0
  141. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/development/hatch-build-system.md +0 -0
  142. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/development/performance-optimizations.md +0 -0
  143. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/development/prompt-principles.md +0 -0
  144. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/development/streaming-text-prefix-fix.md +0 -0
  145. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/tests/README.md +0 -0
  146. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/tests/characterization-testing.md +0 -0
  147. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/tests/mocking-strategies.md +0 -0
  148. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/tests/troubleshooting.md +0 -0
  149. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/ui/ui-architecture.md +0 -0
  150. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/user/commands.md +0 -0
  151. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/user/getting-started.md +0 -0
  152. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/documentation/user/tools.md +0 -0
  153. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/llm-agent-tools/.gitignore +0 -0
  154. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/llm-agent-tools/README.md +0 -0
  155. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/llm-agent-tools/kb_synch/Cargo.lock +0 -0
  156. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/llm-agent-tools/kb_synch/Cargo.toml +0 -0
  157. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/llm-agent-tools/kb_synch/anchor_drop.rs +0 -0
  158. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/llm-agent-tools/rag_modules/README.md +0 -0
  159. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/llm-agent-tools/rag_modules/indexer.py +0 -0
  160. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/llm-agent-tools/rag_modules/rag-cli.sh +0 -0
  161. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/llm-agent-tools/rag_modules/search.py +0 -0
  162. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/llm-agent-tools/rag_modules/stats.py +0 -0
  163. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/execute/2025-09-12_15-20-00_model_selection_config_persistence_fix.md +0 -0
  164. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/execute/2025-09-15_12-30-00_configuration_dashboard_implementation.md +0 -0
  165. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/execute/2025-09-15_configuration_dashboard_ux_improvements.md +0 -0
  166. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/execute/2025-09-29_12-15-00_git_safety_branch_removal_log.md +0 -0
  167. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/plan/2025-09-11_13-30-00_agent_loop_architecture_enhancement.md +0 -0
  168. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/plan/2025-09-11_14-00-00_enum_state_machine_implementation.md +0 -0
  169. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/plan/2025-09-11_14-15-00_automated_cli_tool_testing_framework.md +0 -0
  170. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/plan/2025-09-12_12-20-00_global_graceful_error_handling_implementation.md +0 -0
  171. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/plan/2025-09-12_15-08-14_model_selection_config_persistence_fix.md +0 -0
  172. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/plan/2025-09-15_12-29-04_configuration_dashboard_implementation.md +0 -0
  173. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/plan/2025-09-17_15-30-00_main-agent-refactor_plan.md +0 -0
  174. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/plan/2025-09-19_11-30-00_tunacode_md_to_agents_md_migration.md +0 -0
  175. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/plan/2025-09-24_cli_prompt_toolkit_fuzzy_plan.md +0 -0
  176. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/plan/2025-09-29_11-15-30_simplified_agent_implementation.md +0 -0
  177. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/plan/2025-09-29_11-45-00_git_safety_branch_removal_plan.md +0 -0
  178. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/research/2025-01-19_react-shim-analysis.md +0 -0
  179. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/research/2025-09-07_21-13-37_agent_loop_architecture.md +0 -0
  180. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/research/2025-09-11_13-14-06_agent_loop_enhancement_analysis.md +0 -0
  181. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/research/2025-09-12_12-15-48_global_graceful_error_handling_analysis.md +0 -0
  182. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/research/2025-09-12_14-54-43_model_configuration_crash_analysis.md +0 -0
  183. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/research/2025-09-12_15-06-58_model_selection_config_update_issue.md +0 -0
  184. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/research/2025-09-12_ai-agent-tools-architecture.md +0 -0
  185. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/research/2025-09-15_12-19-00_configuration_system_and_dashboard.md +0 -0
  186. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/research/2025-09-15_13-54-11_first-chunk_character_loss_investigation.md +0 -0
  187. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/research/2025-09-16_11-12-45_setup_py_usage_and_location_analysis.md +0 -0
  188. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/research/2025-09-19_11-25-00_tunacode_md_to_agents_md_migration.md +0 -0
  189. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/research/2025-09-21_models-registry-pydantic-conversion.md +0 -0
  190. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/research/2025-09-24_fuzzy_logic_implementation_analysis.md +0 -0
  191. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/research/2025-09-26_10-56-29_main_agent_architecture.md +0 -0
  192. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/research/2025-09-29_11-08-14_state_and_task_logic.md +0 -0
  193. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/research/2025-09-29_11-41-39_git_safety_branch_removal_analysis.md +0 -0
  194. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/research/2025-10-01_11-15-38_model_validation_error.md +0 -0
  195. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/research/2025-10-02_12-19-05_startup_performance_analysis.md +0 -0
  196. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/memory-bank/research/main_agent_refactor_plan.md +0 -0
  197. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/plan-models.md +0 -0
  198. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/pytest.ini +0 -0
  199. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/reports/dead_code_vulture.txt +0 -0
  200. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/reports/unused_imports.txt +0 -0
  201. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/scripts/check-file-length.sh +0 -0
  202. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/scripts/download_ripgrep.py +0 -0
  203. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/scripts/install_linux.sh +0 -0
  204. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/scripts/playwright_cache.py +0 -0
  205. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/scripts/run-dead-imports.sh +0 -0
  206. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/scripts/setup_dev_env.sh +0 -0
  207. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/scripts/startup_timer.py +0 -0
  208. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/scripts/ui_import_timer.py +0 -0
  209. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/scripts/uninstall.sh +0 -0
  210. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/scripts/utils/vulture_whitelist.py +0 -0
  211. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/scripts/verify_dev_env.sh +0 -0
  212. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/README.md +0 -0
  213. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/__init__.py +0 -0
  214. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/__init__.py +0 -0
  215. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/__init__.py +0 -0
  216. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/__init__.py +0 -0
  217. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/base.py +0 -0
  218. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/implementations/__init__.py +0 -0
  219. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/implementations/command_reload.py +0 -0
  220. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/implementations/conversation.py +0 -0
  221. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/implementations/debug.py +0 -0
  222. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/implementations/development.py +0 -0
  223. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/implementations/model.py +0 -0
  224. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/implementations/plan.py +0 -0
  225. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/implementations/quickstart.py +0 -0
  226. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/implementations/system.py +0 -0
  227. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/implementations/template.py +0 -0
  228. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/implementations/todo.py +0 -0
  229. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/registry.py +0 -0
  230. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/slash/__init__.py +0 -0
  231. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/slash/command.py +0 -0
  232. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/slash/loader.py +0 -0
  233. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/slash/processor.py +0 -0
  234. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/slash/types.py +0 -0
  235. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/slash/validator.py +0 -0
  236. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/commands/template_shortcut.py +0 -0
  237. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/main.py +0 -0
  238. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/repl_components/__init__.py +0 -0
  239. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/repl_components/command_parser.py +0 -0
  240. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/repl_components/error_recovery.py +0 -0
  241. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/repl_components/output_display.py +0 -0
  242. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/cli/repl_components/tool_executor.py +0 -0
  243. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/configuration/__init__.py +0 -0
  244. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/configuration/defaults.py +0 -0
  245. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/configuration/key_descriptions.py +0 -0
  246. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/configuration/models.py +0 -0
  247. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/configuration/settings.py +0 -0
  248. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/__init__.py +0 -0
  249. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/agents/__init__.py +0 -0
  250. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/agents/agent_components/__init__.py +0 -0
  251. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/agents/agent_components/agent_config.py +0 -0
  252. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/agents/agent_components/agent_helpers.py +0 -0
  253. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/agents/agent_components/json_tool_parser.py +0 -0
  254. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/agents/agent_components/message_handler.py +0 -0
  255. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/agents/agent_components/response_state.py +0 -0
  256. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/agents/agent_components/result_wrapper.py +0 -0
  257. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/agents/agent_components/state_transition.py +0 -0
  258. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/agents/agent_components/streaming.py +0 -0
  259. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/agents/agent_components/task_completion.py +0 -0
  260. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/agents/agent_components/tool_buffer.py +0 -0
  261. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/agents/agent_components/tool_executor.py +0 -0
  262. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/agents/agent_components/truncation_checker.py +0 -0
  263. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/agents/main.py +0 -0
  264. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/agents/utils.py +0 -0
  265. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/background/__init__.py +0 -0
  266. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/background/manager.py +0 -0
  267. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/code_index.py +0 -0
  268. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/llm/__init__.py +0 -0
  269. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/logging/__init__.py +0 -0
  270. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/logging/config.py +0 -0
  271. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/logging/formatters.py +0 -0
  272. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/logging/handlers.py +0 -0
  273. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/logging/logger.py +0 -0
  274. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/setup/__init__.py +0 -0
  275. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/setup/agent_setup.py +0 -0
  276. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/setup/base.py +0 -0
  277. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/setup/config_setup.py +0 -0
  278. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/setup/config_wizard.py +0 -0
  279. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/setup/coordinator.py +0 -0
  280. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/setup/environment_setup.py +0 -0
  281. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/setup/template_setup.py +0 -0
  282. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/state.py +0 -0
  283. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/token_usage/api_response_parser.py +0 -0
  284. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/token_usage/cost_calculator.py +0 -0
  285. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/core/token_usage/usage_tracker.py +0 -0
  286. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/exceptions.py +0 -0
  287. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/prompts/system.md.bak +0 -0
  288. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/prompts/system.xml +0 -0
  289. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/py.typed +0 -0
  290. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/services/__init__.py +0 -0
  291. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/services/mcp.py +0 -0
  292. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/setup.py +0 -0
  293. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/templates/__init__.py +0 -0
  294. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/templates/loader.py +0 -0
  295. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/__init__.py +0 -0
  296. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/base.py +0 -0
  297. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/bash.py +0 -0
  298. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/exit_plan_mode.py +0 -0
  299. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/glob.py +0 -0
  300. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/grep.py +0 -0
  301. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/grep_components/__init__.py +0 -0
  302. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/grep_components/file_filter.py +0 -0
  303. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/grep_components/pattern_matcher.py +0 -0
  304. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/grep_components/result_formatter.py +0 -0
  305. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/grep_components/search_result.py +0 -0
  306. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/list_dir.py +0 -0
  307. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/present_plan.py +0 -0
  308. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/prompts/bash_prompt.xml +0 -0
  309. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/prompts/exit_plan_mode_prompt.xml +0 -0
  310. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/prompts/glob_prompt.xml +0 -0
  311. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/prompts/grep_prompt.xml +0 -0
  312. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/prompts/list_dir_prompt.xml +0 -0
  313. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/prompts/present_plan_prompt.xml +0 -0
  314. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/prompts/react_prompt.xml +0 -0
  315. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/prompts/read_file_prompt.xml +0 -0
  316. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/prompts/run_command_prompt.xml +0 -0
  317. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/prompts/todo_prompt.xml +0 -0
  318. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/prompts/update_file_prompt.xml +0 -0
  319. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/prompts/write_file_prompt.xml +0 -0
  320. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/react.py +0 -0
  321. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/read_file.py +0 -0
  322. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/run_command.py +0 -0
  323. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/schema_assembler.py +0 -0
  324. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/todo.py +0 -0
  325. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/update_file.py +0 -0
  326. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/write_file.py +0 -0
  327. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tools/xml_helper.py +0 -0
  328. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tutorial/__init__.py +0 -0
  329. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tutorial/content.py +0 -0
  330. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tutorial/manager.py +0 -0
  331. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/tutorial/steps.py +0 -0
  332. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/ui/__init__.py +0 -0
  333. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/ui/completers.py +0 -0
  334. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/ui/config_dashboard.py +0 -0
  335. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/ui/console.py +0 -0
  336. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/ui/constants.py +0 -0
  337. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/ui/decorators.py +0 -0
  338. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/ui/input.py +0 -0
  339. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/ui/keybindings.py +0 -0
  340. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/ui/lexers.py +0 -0
  341. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/ui/logging_compat.py +0 -0
  342. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/ui/model_selector.py +0 -0
  343. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/ui/output.py +0 -0
  344. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/ui/panels.py +0 -0
  345. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/ui/path_heuristics.py +0 -0
  346. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/ui/prompt_manager.py +0 -0
  347. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/ui/tool_descriptions.py +0 -0
  348. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/ui/utils.py +0 -0
  349. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/ui/validators.py +0 -0
  350. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/utils/__init__.py +0 -0
  351. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/utils/api_key_validation.py +0 -0
  352. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/utils/bm25.py +0 -0
  353. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/utils/config_comparator.py +0 -0
  354. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/utils/diff_utils.py +0 -0
  355. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/utils/file_utils.py +0 -0
  356. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/utils/import_cache.py +0 -0
  357. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/utils/json_utils.py +0 -0
  358. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/utils/message_utils.py +0 -0
  359. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/utils/models_registry.py +0 -0
  360. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/utils/retry.py +0 -0
  361. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/utils/ripgrep.py +0 -0
  362. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/utils/security.py +0 -0
  363. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/utils/system.py +0 -0
  364. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/utils/text_utils.py +0 -0
  365. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/utils/token_counter.py +0 -0
  366. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/src/tunacode/utils/user_configuration.py +0 -0
  367. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/CHARACTERIZATION_README.md +0 -0
  368. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/CHARACTERIZATION_TEST_PLAN.md +0 -0
  369. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/CHARACTERIZATION_TEST_PLAN_AGENT_MAIN.md +0 -0
  370. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/CHARACTERIZATION_TEST_PLAN_COMMANDS.md +0 -0
  371. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/FILE_OPERATIONS_TEST_GUIDE.md +0 -0
  372. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/__init__.py +0 -0
  373. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/agent/__init__.py +0 -0
  374. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/agent/conftest.py +0 -0
  375. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/agent/test_agent_creation.py +0 -0
  376. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/agent/test_json_tool_parsing.py +0 -0
  377. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/agent/test_process_node.py +0 -0
  378. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/agent/test_process_request.py +0 -0
  379. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/agent/test_tool_message_patching.py +0 -0
  380. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/background/test_background_edge_cases.py +0 -0
  381. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/background/test_cleanup.py +0 -0
  382. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/background/test_task_cancellation.py +0 -0
  383. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/background/test_task_creation.py +0 -0
  384. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/background/test_task_execution.py +0 -0
  385. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/code_index/test_cache_management.py +0 -0
  386. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/code_index/test_file_scanning.py +0 -0
  387. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/code_index/test_index_building.py +0 -0
  388. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/code_index/test_search_operations.py +0 -0
  389. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/code_index/test_symbol_extraction.py +0 -0
  390. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/commands/__init__.py +0 -0
  391. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/commands/test_init_command.py +0 -0
  392. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/commands/test_model_selection_persistence.py +0 -0
  393. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/conftest.py +0 -0
  394. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/repl/test_command_parsing.py +0 -0
  395. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/repl/test_escape_key_behavior.py +0 -0
  396. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/repl/test_input_handling.py +0 -0
  397. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/repl/test_keyboard_interrupts.py +0 -0
  398. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/repl/test_multiline_input.py +0 -0
  399. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/repl/test_output_display_logic.py +0 -0
  400. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/repl/test_repl_initialization.py +0 -0
  401. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/repl/test_session_flow.py +0 -0
  402. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/services/test_error_recovery.py +0 -0
  403. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/services/test_llm_routing.py +0 -0
  404. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/services/test_mcp_integration.py +0 -0
  405. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/services/test_service_lifecycle.py +0 -0
  406. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/state/test_agent_tracking.py +0 -0
  407. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/state/test_message_history.py +0 -0
  408. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/state/test_permissions.py +0 -0
  409. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/state/test_session_management.py +0 -0
  410. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/state/test_state_initialization.py +0 -0
  411. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/state/test_user_config.py +0 -0
  412. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/test_characterization_commands.py +0 -0
  413. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/test_characterization_grep.py +0 -0
  414. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/test_characterization_main.py +0 -0
  415. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/test_cli_fuzzy_matching.py +0 -0
  416. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/test_setup_flow.py +0 -0
  417. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/ui/test_async_ui.py +0 -0
  418. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/ui/test_console_output.py +0 -0
  419. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/ui/test_diff_display.py +0 -0
  420. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/ui/test_prompt_rendering.py +0 -0
  421. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/ui/test_spinner_messages.py +0 -0
  422. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/utils/test_expand_file_refs.py +0 -0
  423. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/utils/test_file_operations.py +0 -0
  424. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/utils/test_token_counting.py +0 -0
  425. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/utils/test_utils_edge_cases.py +0 -0
  426. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/characterization/version/test_version_metadata.py +0 -0
  427. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/conftest.py +0 -0
  428. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/integration/test_startup_dashboard.py +0 -0
  429. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/test_agent_output_formatting.py +0 -0
  430. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/test_command_parser_retry.py +0 -0
  431. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/test_completion_detection.py +0 -0
  432. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/test_glob_phase3.py +0 -0
  433. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/test_json_concatenation_recovery.py +0 -0
  434. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/test_json_retry.py +0 -0
  435. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/test_logging_config.py +0 -0
  436. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/test_onboarding_features.py +0 -0
  437. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/test_phase2_type_hints.py +0 -0
  438. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/test_prompt_changes_validation.py +0 -0
  439. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/test_prompt_injection.py +0 -0
  440. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/test_security.py +0 -0
  441. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/test_slash_commands_comprehensive.py +0 -0
  442. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/test_slash_commands_functional.py +0 -0
  443. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/test_slash_commands_integration.py +0 -0
  444. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/test_slash_commands_isolated.py +0 -0
  445. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/test_spinner_updates.py +0 -0
  446. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/test_tool_batching_retry.py +0 -0
  447. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/ui/test_config_dashboard.py +0 -0
  448. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/ui/test_lazy_rich_loading.py +0 -0
  449. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/unit/commands/test_model_selection_persistence_new.py +0 -0
  450. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/unit/config/test_user_configuration_permissions.py +0 -0
  451. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/unit/test_constants_enums.py +0 -0
  452. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/unit/test_react_tool.py +0 -0
  453. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/unit/utils/test_models_registry.py +0 -0
  454. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/unit/utils/test_models_registry_validation.py +0 -0
  455. {tunacode_cli-0.0.77.2 → tunacode_cli-0.0.77.3}/tests/utils/test_config_comparator.py +0 -0
@@ -1,6 +1,23 @@
1
1
  {
2
2
  "version": 1,
3
3
  "sessions": [
4
+ {
5
+ "id": "tool-rejection-feedback-20251010-000001",
6
+ "time": "2025-10-10T00:00:01",
7
+ "branch": "master",
8
+ "base": "current",
9
+ "head": "current",
10
+ "changed_files": [
11
+ "src/tunacode/ui/tool_ui.py",
12
+ "src/tunacode/core/tool_handler.py",
13
+ "src/tunacode/types.py",
14
+ "src/tunacode/cli/repl.py",
15
+ "tests/characterization/ui/test_tool_confirmations.py",
16
+ "tests/characterization/repl/test_error_handling.py",
17
+ "tests/test_plan_mode.py"
18
+ ],
19
+ "notes": "Golden test captured existing abort-only option 3, failing test asserted rejection guidance should become a user message. Added instructions field to ToolConfirmationResponse, prompted for feedback in ToolUI, and routed guidance via create_user_message so the agent receives corrective direction."
20
+ },
4
21
  {
5
22
  "id": "publish-workflow-cache-bust-20250105-000000",
6
23
  "time": "2025-01-05T00:00:00",
@@ -0,0 +1,70 @@
1
+ # Tool Handler Behavior Optimization
2
+
3
+ **Date**: 2025-10-03
4
+ **Component**: `tool_handler` function in `src/tunacode/cli/repl_components/tool_executor.py`
5
+ **Change Type**: Test optimization and behavior clarification
6
+
7
+ ## Summary
8
+
9
+ Optimized test coverage for `tool_handler` to focus on the specific behavior we rely on: fail-fast cancellation path and handler instantiation. Removed redundant shell commands, REPL loops, and parsing assertions already covered elsewhere.
10
+
11
+ ## Key Behavioral Changes
12
+
13
+ ### 1. Fail-Fast Cancellation Path
14
+ - **Location**: `tool_executor.py:31-34`
15
+ - **Behavior**: Immediate `CancelledError` raise when `state_manager.session.operation_cancelled` is `True`
16
+ - **Test Coverage**: `tests/characterization/repl_components/test_tool_handler.py:22-37`
17
+ - **Key Assertion**: `parse_args` and `ToolHandler` constructors are NOT called when cancelled
18
+
19
+ ### 2. Handler Instantiation Path
20
+ - **Location**: `tool_executor.py:37-41`
21
+ - **Behavior**: Creates new `ToolHandler` only if `state_manager.tool_handler` is `None`
22
+ - **Test Coverage**: `tests/characterization/repl_components/test_tool_handler.py:41-70`
23
+ - **Key Assertions**:
24
+ - `ToolHandler` called with `state_manager`
25
+ - `state_manager.set_tool_handler` called with new instance
26
+ - `parse_args` processes tool arguments
27
+
28
+ ## Implementation Details
29
+
30
+ ### Clear Fixtures and Constants
31
+ ```python
32
+ TOOL_NAME = "read_file"
33
+ TOOL_ARGS: Dict[str, Any] = {"file_path": "example.py"}
34
+ ```
35
+
36
+ ### Semantic Anchor
37
+ - **UUID**: `8f5a4d92` (line 18)
38
+ - **Purpose**: Golden baseline for tool_handler cancellation and handler creation
39
+
40
+ ### Minimal Mocking Strategy
41
+ - Patch only what `tool_handler` directly touches
42
+ - Avoid over-mocked setup from previous implementation
43
+ - Assert exact side effects we care about
44
+
45
+ ## Style Compliance
46
+
47
+ - **Variable Birth Adjacent**: All variables declared immediately before first use
48
+ - **Explicit Typing**: All function parameters and return types annotated
49
+ - **Early Returns**: Cancellation check at function entry for fail-fast behavior
50
+ - **No Magic Literals**: Symbolic constants used throughout
51
+
52
+ ## Dependencies
53
+
54
+ - `asyncio.exceptions.CancelledError` for cancellation behavior
55
+ - `unittest.mock.AsyncMock` for async function mocking
56
+ - `prompt_toolkit.application.run_in_terminal` for terminal operations
57
+
58
+ ## Testing Approach
59
+
60
+ 1. **Golden Baseline First**: Capture current behavior before changes
61
+ 2. **Focused Assertions**: Test only the specific paths we care about
62
+ 3. **Minimal Patching**: Mock only direct dependencies
63
+ 4. **Clear Intent**: Intention-revealing test names and fixtures
64
+
65
+ ## Impact Assessment
66
+
67
+ - **Backward Compatibility**: Maintained - no functional changes to `tool_handler`
68
+ - **Test Coverage**: Improved - more focused and reliable tests
69
+ - **Maintenance**: Reduced - simpler test setup and clearer intent
70
+ - **Performance**: No impact - same execution paths
@@ -1,6 +1,19 @@
1
1
  {
2
2
  "version": 1,
3
3
  "sessions": [
4
+ {
5
+ "id": "tool-rejection-feedback-20251010-000000",
6
+ "time": "2025-10-10T00:00:00",
7
+ "branch": "master",
8
+ "base": "current",
9
+ "head": "current",
10
+ "bullets": [
11
+ "ToolConfirmationResponse gains an optional instructions field emitted when the user rejects a tool.",
12
+ "ToolHandler.process_confirmation now calls create_user_message with rejection guidance so the agent can react.",
13
+ "ToolUI prompts for corrective instructions during option 3 without altering approval or skip semantics.",
14
+ "process_request stops emitting the legacy \"Operation aborted\" UI banner after guided aborts."
15
+ ]
16
+ },
4
17
  {
5
18
  "id": "triple-redundancy-removal-20250919-115649",
6
19
  "time": "2025-09-19T11:56:49",
@@ -91,6 +104,18 @@
91
104
  "RENAMED publish workflow file back to publish-release.yml so docs and automation match",
92
105
  "ADDED version characterization test ensuring pyproject and constants stay synchronized"
93
106
  ]
107
+ },
108
+ {
109
+ "id": "version-bump-0.0.77.3-20251010-120000",
110
+ "time": "2025-10-10T12:00:00",
111
+ "branch": "master",
112
+ "base": "current",
113
+ "head": "current",
114
+ "bullets": [
115
+ "BUMPED project metadata and Hatch script versions to 0.0.77.3 for the upcoming release",
116
+ "SYNCHRONIZED src/tunacode/constants.APP_VERSION with the new patch number",
117
+ "UPDATED release documentation and changelog to guide GitHub release creation"
118
+ ]
94
119
  }
95
120
  ]
96
121
  }
@@ -1,6 +1,32 @@
1
1
  {
2
2
  "version": 1,
3
3
  "sessions": [
4
+ {
5
+ "id": "tool-rejection-feedback-20251010-000000",
6
+ "time": "2025-10-10T00:00:00Z",
7
+ "branch": "master",
8
+ "base": "current",
9
+ "head": "current",
10
+ "bullets": [
11
+ "Tool confirmation option 3 now prompts for follow-up guidance instead of silently aborting.",
12
+ "ToolHandler injects user-provided rejection instructions into session messages for the agent to read.",
13
+ "Skip-future and approval flows remain unchanged; only the abort path gains guidance capture.",
14
+ "REPL no longer prints the \"Operation aborted\" banner once guidance has been captured."
15
+ ]
16
+ },
17
+ {
18
+ "id": "context-py-removal-20251003-000000",
19
+ "time": "2025-10-03T00:00:00Z",
20
+ "branch": "master",
21
+ "base": "current",
22
+ "head": "current",
23
+ "bullets": [
24
+ "Removed src/tunacode/context.py - identified as completely dead code with zero production usage",
25
+ "Context functions were never imported or called in production code, only existed in test files",
26
+ "Actual context loading uses agent_config.py:load_tunacode_context() directly, bypassing context.py entirely",
27
+ "Dead code analysis tools failed to detect this unused module despite it having no production dependencies"
28
+ ]
29
+ },
4
30
  {
5
31
  "id": "check-file-length-cache-exclusion-20251005-000001",
6
32
  "time": "2025-10-05T00:00:01Z",
@@ -58,6 +84,18 @@
58
84
  "Added characterization test asserting APP_VERSION stays aligned with both pyproject version declarations."
59
85
  ]
60
86
  },
87
+ {
88
+ "id": "version-metadata-0.0.77.3-20251010-120001",
89
+ "time": "2025-10-10T12:00:01Z",
90
+ "branch": "master",
91
+ "base": "current",
92
+ "head": "current",
93
+ "bullets": [
94
+ "Updated pyproject version metadata and hatch script declarations to 0.0.77.3.",
95
+ "Synchronized src/tunacode/constants.APP_VERSION with the new 0.0.77.3 release number.",
96
+ "Refreshed changelog and publishing workflow documentation to point at the 0.0.77.3 release process."
97
+ ]
98
+ },
61
99
  {
62
100
  "id": "version-bump-0.0.77-20251001-190636",
63
101
  "time": "2025-10-01T19:06:36Z",
@@ -1,6 +1,32 @@
1
1
  {
2
2
  "version": 1,
3
3
  "sessions": [
4
+ {
5
+ "id": "tool-rejection-feedback-20251010-000001",
6
+ "time": "2025-10-10T00:00:01Z",
7
+ "branch": "master",
8
+ "base": "current",
9
+ "head": "current",
10
+ "reasoning": {
11
+ "problem": "Option 3 in the tool confirmation dialog promised to collect corrective guidance but only aborted tool execution.",
12
+ "why_change": "Agents need the user's replacement instructions to continue productively after a rejection, otherwise the workflow stalls without direction.",
13
+ "solution": "Expanded ToolUI to prompt for instructions, extended ToolConfirmationResponse with an instructions field, and taught ToolHandler.process_confirmation to dispatch the guidance via create_user_message when the tool is aborted.",
14
+ "benefits": [
15
+ "Agents immediately see what to do after a rejected tool call",
16
+ "Keeps skip-future and approval flows untouched, minimizing surface area",
17
+ "Characterization coverage documents both legacy abort behavior and the new guidance routing",
18
+ "REPL output stays quiet—no more legacy abort banner once guidance is captured"
19
+ ],
20
+ "risks": [
21
+ "Empty guidance texts would generate noise",
22
+ "Potential for duplicate prompts if the UI loop miscounts inputs"
23
+ ],
24
+ "mitigations": [
25
+ "Strip and ignore empty instructions before creating messages",
26
+ "Golden test ensures option sequencing remains stable"
27
+ ]
28
+ }
29
+ },
4
30
  {
5
31
  "id": "publish-workflow-slim-20251001-195209",
6
32
  "time": "2025-10-01T19:52:09Z",
@@ -47,6 +73,31 @@
47
73
  ]
48
74
  }
49
75
  },
76
+ {
77
+ "id": "version-bump-0.0.77.3-20251010-120002",
78
+ "time": "2025-10-10T12:00:02Z",
79
+ "branch": "master",
80
+ "base": "current",
81
+ "head": "current",
82
+ "reasoning": {
83
+ "problem": "All release metadata still advertised v0.0.77.2, so a fresh GitHub release would fail the version consistency checks baked into the publishing workflow.",
84
+ "why_change": "Preparing v0.0.77.3 demands that pyproject, hatch scripts, runtime constants, documentation, and knowledge base references share the same patch number.",
85
+ "solution": "Increment pyproject version declarations, update src/tunacode/constants.APP_VERSION and uv.lock, refresh changelog and publishing docs, and synchronize .claude anchors and delta summaries to the new release number.",
86
+ "benefits": [
87
+ "Guarantees the GitHub release workflow sees matching metadata before packaging",
88
+ "Keeps maintainers and future agents aligned on the current release number and commands",
89
+ "Extends knowledge base traceability so the 0.0.77.3 bump is discoverable via RAG tooling"
90
+ ],
91
+ "risks": [
92
+ "Missing an embedded version string would leave inconsistent metadata",
93
+ "Knowledge base edits could drift from the source files if the version changes again soon"
94
+ ],
95
+ "mitigations": [
96
+ "Searched repository for the previous version string and updated every hit in code and docs",
97
+ "Captured the change in .claude delta summaries and refreshed the memory anchor for APP_VERSION"
98
+ ]
99
+ }
100
+ },
50
101
  {
51
102
  "id": "version-bump-0.0.77-20251001-190642",
52
103
  "time": "2025-10-01T19:06:42Z",
@@ -65,13 +65,22 @@ This document describes the purpose and responsibilities of each component in th
65
65
 
66
66
  #### 4.1 Tool Executor (`tool_executor.py`)
67
67
 
68
- **Purpose**: Coordinates parallel execution of tools with proper error handling.
68
+ **Purpose**: Coordinates tool execution with fail-fast cancellation and handler instantiation.
69
69
 
70
70
  **Key Responsibilities**:
71
- - Execute tools in parallel for performance
72
- - Handle tool execution errors gracefully
73
- - Provide fallback mechanisms for failed tools
74
- - Aggregate tool results
71
+ - Execute tools with immediate cancellation when operation_cancelled=True
72
+ - Manage ToolHandler lifecycle (create if None, reuse existing)
73
+ - Handle tool confirmation dialogs and plan mode restrictions
74
+ - Coordinate with prompt_toolkit for terminal interactions
75
+ - Provide graceful error handling for user aborts
76
+
77
+ **Critical Behavior Patterns**:
78
+ - **Fail-Fast Cancellation**: Checks `state_manager.session.operation_cancelled` before any processing
79
+ - **Handler Instantiation**: Creates `ToolHandler(state_manager)` only when needed, caches in `state_manager.tool_handler`
80
+ - **Confirmation Flow**: Uses `run_in_terminal` for synchronous confirmation dialogs
81
+ - **Plan Mode Enforcement**: Blocks write-only tools in plan mode with clear error messages
82
+
83
+ **Test Coverage**: Golden baseline tests in `tests/characterization/repl_components/test_tool_handler.py` with semantic anchor `8f5a4d92`
75
84
 
76
85
  #### 4.2 Tool Buffer (`tool_buffer.py`)
77
86
 
@@ -85,6 +85,12 @@ JSON Tool Parser → Tool Buffer → Tool Executor → Parallel Execution
85
85
  - **JSON Tool Parser** handles JSON-formatted tool calls
86
86
  - **Result Aggregation** combines tool results
87
87
 
88
+ #### Rejection Guidance Loop
89
+
90
+ - When the user rejects a tool via option 3, **ToolUI** now prompts for corrective guidance and stores it on `ToolConfirmationResponse.instructions`.
91
+ - **ToolHandler.process_confirmation** detects guided aborts and calls `agent_helpers.create_user_message` so the agent receives the user's corrective instructions on the next turn.
92
+ - The REPL suppresses the legacy "Operation aborted" banner once guidance is captured, keeping the transcript focused on the new instructions instead of noise.
93
+
88
94
  ## Dependency Graph
89
95
 
90
96
  ### Core Dependencies
@@ -0,0 +1,60 @@
1
+ {
2
+ "version": 1,
3
+ "generated": "2025-09-26T17:12:31Z",
4
+ "anchors": [
5
+ {
6
+ "key": "d595ceb5",
7
+ "path": "src/tunacode/core/agents/main.py",
8
+ "line": 34,
9
+ "kind": "line",
10
+ "description": "Direct UI console import aligns with removal of defensive shim",
11
+ "status": "active",
12
+ "created": "2025-09-26T17:12:31Z"
13
+ },
14
+ {
15
+ "key": "f4dc6db7",
16
+ "path": "src/tunacode/constants.py",
17
+ "line": 12,
18
+ "kind": "line",
19
+ "description": "APP_VERSION updated to 0.0.77.3; keep in sync with pyproject metadata for releases.",
20
+ "status": "active",
21
+ "created": "2025-10-10T00:00:00Z"
22
+ },
23
+ {
24
+ "key": "9e2d3a1c",
25
+ "path": "tests/characterization/version/test_version_metadata.py",
26
+ "line": 1,
27
+ "kind": "file",
28
+ "description": "Golden characterization test pinning APP_VERSION to pyproject metadata to guard release workflow failures.",
29
+ "status": "active",
30
+ "created": "2025-10-02T00:00:00Z"
31
+ },
32
+ {
33
+ "key": "8f5a4d92",
34
+ "path": "tests/characterization/repl_components/test_tool_handler.py",
35
+ "line": 18,
36
+ "kind": "line",
37
+ "description": "Golden baseline for tool_handler cancellation and handler creation - fail-fast behavior and instantiation path",
38
+ "status": "active",
39
+ "created": "2025-10-03T00:00:00Z"
40
+ },
41
+ {
42
+ "key": "3c8b1f70",
43
+ "path": "src/tunacode/core/tool_handler.py",
44
+ "line": 82,
45
+ "kind": "line",
46
+ "description": "Abort path routes user rejection guidance into create_user_message so the agent can react next turn.",
47
+ "status": "active",
48
+ "created": "2025-10-10T00:00:00Z"
49
+ },
50
+ {
51
+ "key": "7b2c1d4e",
52
+ "path": "src/tunacode/cli/repl.py",
53
+ "line": 392,
54
+ "kind": "line",
55
+ "description": "Guided aborts skip the legacy 'Operation aborted' banner; UI stays focused on user instructions.",
56
+ "status": "active",
57
+ "created": "2025-10-10T00:00:00Z"
58
+ }
59
+ ]
60
+ }
@@ -125,6 +125,21 @@
125
125
  "classification": "implementation",
126
126
  "type": "source"
127
127
  },
128
+ "src/tunacode/core/tool_handler.py": {
129
+ "category": "core",
130
+ "classification": "implementation",
131
+ "type": "source"
132
+ },
133
+ "src/tunacode/types.py": {
134
+ "category": "core",
135
+ "classification": "support",
136
+ "type": "source"
137
+ },
138
+ "src/tunacode/ui/tool_ui.py": {
139
+ "category": "ui",
140
+ "classification": "interface",
141
+ "type": "source"
142
+ },
128
143
  "tests/characterization/agent/test_agent_creation.py": {
129
144
  "category": "agent",
130
145
  "classification": "test",
@@ -155,6 +170,21 @@
155
170
  "classification": "test",
156
171
  "type": "test"
157
172
  },
173
+ "tests/characterization/ui/test_tool_confirmations.py": {
174
+ "category": "ui",
175
+ "classification": "test",
176
+ "type": "test"
177
+ },
178
+ "tests/characterization/repl/test_error_handling.py": {
179
+ "category": "repl",
180
+ "classification": "test",
181
+ "type": "test"
182
+ },
183
+ "tests/test_plan_mode.py": {
184
+ "category": "plan_mode",
185
+ "classification": "test",
186
+ "type": "test"
187
+ },
158
188
  "tests/unit/test_react_tool.py": {
159
189
  "category": "tools",
160
190
  "classification": "test",
@@ -0,0 +1 @@
1
+ tool-rejection-feedback-20251010-000001
@@ -0,0 +1,7 @@
1
+ # Tool Rejection Feedback Session
2
+
3
+ - Option 3 in the tool confirmation dialog now collects user guidance via `ToolUI`, storing it on `ToolConfirmationResponse.instructions`.
4
+ - `ToolHandler.process_confirmation` detects guided aborts and calls `create_user_message`, injecting the corrective instructions into the session timeline for the agent.
5
+ - Characterization coverage keeps the legacy abort baseline while the new plan mode test ensures rejection guidance is recorded.
6
+ - No changes to approval or skip semantics; only the abort path gains the guidance recording behavior.
7
+ - REPL skips the old "Operation aborted" banner so the agent immediately focuses on the injected guidance message.
@@ -0,0 +1,16 @@
1
+ # Tool Rejection Feedback Reasoning Log
2
+
3
+ ## Problem Signal
4
+ - Users selecting option 3 "No, and tell TunaCode what to do differently" triggered `UserAbortError` without collecting any guidance.
5
+ - Research document 2025-10-10_11-44-51_userabort_error_analysis.md confirmed this path was intentionally aborting but lacked the promised feedback hook.
6
+
7
+ ## Approach
8
+ 1. Captured a golden baseline around the existing abort path to guard regressions.
9
+ 2. Introduced a failing test asserting that rejection guidance becomes a session message the next agent turn can consume.
10
+ 3. Extended `ToolConfirmationResponse` with an `instructions` field, updated `ToolUI` to prompt for guidance, and routed non-empty guidance through `create_user_message` in `ToolHandler.process_confirmation`.
11
+
12
+ ## Outcome
13
+ - Agents now receive explicit user instructions after a rejected tool call, removing ambiguity around option 3.
14
+ - Approval and skip logic remains unchanged; only aborts now append corrective guidance.
15
+ - Characterization coverage documents both the baseline abort behavior and the new guidance routing.
16
+ - The REPL no longer prints the legacy "Operation aborted" banner, preventing noise after guided aborts.
@@ -262,6 +262,49 @@
262
262
  "purpose": "Inject guidance as system prompt to influence next LLM turn"
263
263
  }
264
264
  ]
265
+ },
266
+ "tool_handler_flow": {
267
+ "description": "Tool execution handler with fail-fast cancellation and instantiation",
268
+ "entry_point": "tunacode.cli.repl_components.tool_executor.tool_handler",
269
+ "flow": [
270
+ {
271
+ "step": 1,
272
+ "function": "cancellation_check",
273
+ "location": "tool_executor.py:31-34",
274
+ "purpose": "Fail-fast cancellation when operation_cancelled=True",
275
+ "raises": "CancelledError"
276
+ },
277
+ {
278
+ "step": 2,
279
+ "function": "handler_instantiation",
280
+ "location": "tool_executor.py:37-41",
281
+ "purpose": "Create ToolHandler if not exists, reuse existing instance",
282
+ "dependency": "tunacode.core.tool_handler.ToolHandler"
283
+ },
284
+ {
285
+ "step": 3,
286
+ "function": "confirmation_flow",
287
+ "location": "tool_executor.py:43-84",
288
+ "purpose": "Handle tool confirmation dialogs and plan mode restrictions",
289
+ "dependency": "prompt_toolkit.application.run_in_terminal"
290
+ },
291
+ {
292
+ "step": 4,
293
+ "function": "user_feedback_routing",
294
+ "location": "core/tool_handler.py:60-93",
295
+ "purpose": "Convert rejection guidance into an inline user message the agent can consume",
296
+ "dependency": "agent_components.agent_helpers.create_user_message"
297
+ }
298
+ ],
299
+ "test_coverage": {
300
+ "file": "tests/characterization/repl_components/test_tool_handler.py",
301
+ "anchor": "8f5a4d92",
302
+ "behaviors_tested": [
303
+ "fail_fast_cancellation",
304
+ "handler_instantiation_without_confirmation",
305
+ "rejection_feedback_routing"
306
+ ]
307
+ }
265
308
  }
266
309
  },
267
310
  "refactor_summary": {
@@ -100,6 +100,17 @@
100
100
  "inject_system_prompt"
101
101
  ],
102
102
  "state_dependency": "increments SessionState.react_forced_calls"
103
+ },
104
+ "ToolHandler.process_confirmation": {
105
+ "file": "src/tunacode/core/tool_handler.py",
106
+ "intent": "TOOL_CONFIRMATION_ROUTING",
107
+ "purpose": "Resolve confirmation responses, persist trust choices, and surface rejection guidance to the agent",
108
+ "semantic_role": "Bridge between UI confirmation responses and agent state",
109
+ "key_responsibilities": [
110
+ "Persist skip-future decisions per tool",
111
+ "Abort execution when approval is denied",
112
+ "Promote rejection instructions into session user messages via create_user_message"
113
+ ]
103
114
  }
104
115
  },
105
116
  "node_processing": {
@@ -61,6 +61,25 @@
61
61
  "completion_detection": "Integrated with state machine",
62
62
  "thread_safety": "Through AgentStateMachine"
63
63
  }
64
+ },
65
+ "ToolConfirmationResponse": {
66
+ "definition": "src/tunacode/types.py",
67
+ "purpose": "Structured response emitted by tool confirmation dialogs",
68
+ "fields": {
69
+ "approved": "bool flag to allow tool execution",
70
+ "skip_future": "bool flag to trust future calls without prompting",
71
+ "abort": "bool flag indicating the tool should not run",
72
+ "instructions": "str with optional user guidance when aborting"
73
+ },
74
+ "relationships": {
75
+ "produced_by": [
76
+ "ToolUI.show_confirmation",
77
+ "ToolUI.show_sync_confirmation"
78
+ ],
79
+ "consumed_by": [
80
+ "ToolHandler.process_confirmation"
81
+ ]
82
+ }
64
83
  }
65
84
  },
66
85
  "state_machine_types": {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tunacode-cli
3
- Version: 0.0.77.2
3
+ Version: 0.0.77.3
4
4
  Summary: Your agentic CLI developer.
5
5
  Project-URL: Homepage, https://tunacode.xyz/
6
6
  Project-URL: Repository, https://github.com/alchemiststudiosDOTai/tunacode
@@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.0.77.3] - 2025-10-10
9
+
10
+ ### Changed
11
+ - Bump project metadata and runtime constants to 0.0.77.3 to prepare the GitHub release workflow.
12
+
8
13
  ## [0.0.77.2] - 2025-10-02
9
14
 
10
15
  ### Changed
@@ -25,12 +25,12 @@ The project uses GitHub Actions to automatically publish releases to PyPI when a
25
25
  2. **Commit Changes**: Commit the version updates to the master branch
26
26
  3. **Create Tag**: Create and push a version tag:
27
27
  ```bash
28
- git tag v0.0.77.2
29
- git push origin v0.0.77.2
28
+ git tag v0.0.77.3
29
+ git push origin v0.0.77.3
30
30
  ```
31
31
  4. **Create Release**: Create a GitHub release:
32
32
  ```bash
33
- gh release create v0.0.77.2 --generate-notes
33
+ gh release create v0.0.77.3 --generate-notes
34
34
  ```
35
35
 
36
36
  ### Workflow Steps
@@ -97,19 +97,19 @@ The workflow is configured in `.github/workflows/publish-release.yml` and:
97
97
  ## Example Release Commands
98
98
 
99
99
  ```bash
100
- # Update version to 0.0.77.2
101
- sed -i 's/version = "0.0.77.1"/version = "0.0.77.2"/g' pyproject.toml
102
- sed -i 's/APP_VERSION = "0.0.77.1"/APP_VERSION = "0.0.77.2"/' src/tunacode/constants.py
100
+ # Update version to 0.0.77.3
101
+ sed -i 's/version = "0.0.77.2"/version = "0.0.77.3"/g' pyproject.toml
102
+ sed -i 's/APP_VERSION = "0.0.77.2"/APP_VERSION = "0.0.77.3"/' src/tunacode/constants.py
103
103
 
104
104
  # Commit and tag
105
105
  git add pyproject.toml src/tunacode/constants.py
106
- git commit -m "chore: bump version to 0.0.77.2"
107
- git tag v0.0.77.2
106
+ git commit -m "chore: bump version to 0.0.77.3"
107
+ git tag v0.0.77.3
108
108
  git push origin master
109
- git push origin v0.0.77.2
109
+ git push origin v0.0.77.3
110
110
 
111
111
  # Create release
112
- gh release create v0.0.77.2 --generate-notes
112
+ gh release create v0.0.77.3 --generate-notes
113
113
  ```
114
114
 
115
115
  ## Related Documentation
@@ -0,0 +1,25 @@
1
+ ---
2
+ title: "Release Process Automation – Execution Log"
3
+ phase: Execute
4
+ date: "2025-10-02T14:45:00Z"
5
+ owner: "context-engineer"
6
+ plan_path: "memory-bank/plan/2025-10-02_14-30-45_release_process_automation.md"
7
+ start_commit: "0e5c473"
8
+ env: {target: "local", notes: "Development environment with Hatch and GitHub CLI available"}
9
+ ---
10
+
11
+ ## Pre-Flight Checks
12
+ - DoR satisfied? ✅ YES
13
+ - Hatch build system available: `/usr/local/bin/hatch`
14
+ - GitHub CLI installed: `/usr/bin/gh`
15
+ - Write permissions: Confirmed (on master branch)
16
+ - Python 3.8+ available: Yes
17
+ - Dependencies installed: Will verify during implementation
18
+ - Access/secrets present? ✅ YES
19
+ - GitHub CLI available and will be tested during implementation
20
+ - PyPI token assumed configured (existing setup)
21
+ - Fixtures/data ready? ✅ YES
22
+ - Current project structure available
23
+ - Version files identified: `pyproject.toml` (lines 8, 173), `src/tunacode/constants.py:12`
24
+
25
+ ## Status: READY TO PROCEED