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.
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.github/workflows/publish.yml +0 -7
- tunacode_cli-0.0.76.1/CLAUDE.md +132 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/PKG-INFO +63 -6
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/README.md +62 -5
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/README.md +9 -3
- tunacode_cli-0.0.76.1/documentation/agent/agent-flow.md +85 -0
- tunacode_cli-0.0.76.1/documentation/agent-tools/tools-architecture.md +222 -0
- tunacode_cli-0.0.76.1/documentation/changelog/CHANGELOG.md +188 -0
- tunacode_cli-0.0.76.1/documentation/configuration/config-flow-diagram.md +65 -0
- tunacode_cli-0.0.76.1/documentation/configuration/config-touch-points.md +21 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/development/hatch-build-system.md +38 -35
- tunacode_cli-0.0.76.1/documentation/development/publishing-workflow.md +119 -0
- tunacode_cli-0.0.76.1/documentation/development/streaming-text-prefix-fix.md +199 -0
- tunacode_cli-0.0.76.1/documentation/user/getting-started.md +251 -0
- tunacode_cli-0.0.76.1/memory-bank/execute/2025-09-12_15-20-00_model_selection_config_persistence_fix.md +146 -0
- tunacode_cli-0.0.76.1/memory-bank/execute/2025-09-15_12-30-00_configuration_dashboard_implementation.md +121 -0
- tunacode_cli-0.0.76.1/memory-bank/execute/2025-09-15_configuration_dashboard_ux_improvements.md +177 -0
- tunacode_cli-0.0.76.1/memory-bank/plan/2025-09-12_15-08-14_model_selection_config_persistence_fix.md +208 -0
- tunacode_cli-0.0.76.1/memory-bank/plan/2025-09-15_12-29-04_configuration_dashboard_implementation.md +485 -0
- tunacode_cli-0.0.76.1/memory-bank/research/2025-09-12_14-54-43_model_configuration_crash_analysis.md +130 -0
- tunacode_cli-0.0.76.1/memory-bank/research/2025-09-12_15-06-58_model_selection_config_update_issue.md +63 -0
- tunacode_cli-0.0.76.1/memory-bank/research/2025-09-12_ai-agent-tools-architecture.md +222 -0
- tunacode_cli-0.0.76.1/memory-bank/research/2025-09-15_12-19-00_configuration_system_and_dashboard.md +184 -0
- tunacode_cli-0.0.76.1/memory-bank/research/2025-09-15_13-54-11_first-chunk_character_loss_investigation.md +109 -0
- tunacode_cli-0.0.76.1/memory-bank/research/2025-09-16_11-12-45_setup_py_usage_and_location_analysis.md +145 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/pyproject.toml +2 -2
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/scripts/setup_dev_env.sh +28 -27
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/model.py +33 -5
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/main.py +10 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/repl.py +17 -1
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/configuration/defaults.py +2 -2
- tunacode_cli-0.0.76.1/src/tunacode/configuration/key_descriptions.py +275 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/constants.py +1 -1
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/node_processor.py +40 -4
- tunacode_cli-0.0.76.1/src/tunacode/core/agents/agent_components/streaming.py +268 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/main.py +30 -15
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/setup/config_setup.py +67 -224
- tunacode_cli-0.0.76.1/src/tunacode/core/setup/config_wizard.py +229 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/state.py +3 -1
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/prompts/system.md +43 -29
- tunacode_cli-0.0.76.1/src/tunacode/ui/config_dashboard.py +567 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/panels.py +92 -9
- tunacode_cli-0.0.76.1/src/tunacode/utils/config_comparator.py +340 -0
- tunacode_cli-0.0.76.1/tests/characterization/commands/test_model_selection_persistence.py +237 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/state/test_state_initialization.py +1 -1
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/test_characterization_commands.py +7 -2
- tunacode_cli-0.0.76.1/tests/integration/test_startup_dashboard.py +221 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_prompt_changes_validation.py +4 -1
- tunacode_cli-0.0.76.1/tests/ui/test_config_dashboard.py +404 -0
- tunacode_cli-0.0.76.1/tests/unit/commands/test_model_selection_persistence_new.py +118 -0
- tunacode_cli-0.0.76.1/tests/unit/config/test_user_configuration_permissions.py +95 -0
- tunacode_cli-0.0.76.1/tests/utils/test_config_comparator.py +246 -0
- tunacode_cli-0.0.75/CLAUDE.md +0 -114
- tunacode_cli-0.0.75/documentation/changelog/CHANGELOG.md +0 -61
- tunacode_cli-0.0.75/documentation/user/getting-started.md +0 -103
- tunacode_cli-0.0.75/setup.py +0 -10
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/MEMORY_ANCHOR_SPEC.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/NEXT_PR_RULES.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/README.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/antipattern-sniffer.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/bug-context-analyzer.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/code-synthesis-analyzer.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/codebase-analyzer.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/codebase-locator.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/context-synthesis.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/documentation-synthesis-qa.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/expert-debugger.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/phased-task-processor.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/prompt-engineer.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/rapid-code-synthesis-qa.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/agents/tech-docs-maintainer.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/anchors.json +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/CE/QA.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/CE/documentation-synthesis.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/CE/execute.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/CE/plan.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/CE/research.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/context-engineer/QA.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/context-engineer/documentation-synthesis.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/context-engineer/execute.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/context-engineer/plan.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/context-engineer/research.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/deploy.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/github-issue.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/phaser.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/smart-git.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/smells.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/work.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/commands/workflow.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/delta/2025-01-05-baseline.yml +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/delta/fix-text-alignment-layout-task3.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/delta/task4_ui_formatting_fix.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/delta/v0.0.53_to_v0.0.54.diff +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/always-on-display-implementation.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/cli-json-recovery-incident.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/directory-caching-optimization.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/esc-investigation/ESC_KEY_INVESTIGATION.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/esc-investigation/ESC_KEY_STREAMING_ANALYSIS.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/hatch-commands.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/model-updates-2025.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/onboarding-improvements.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/openai_tool_calling_evaluation.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/phase5-prompt-injection-system.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/slash-commands.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/uv-hatch-setup.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/development/uv-installer-updates.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/metadata/components.yml +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/metadata/hotspots.txt +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/patterns/json_retry_implementation.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/qa/fix-agent-errors.yml +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/qa/fix-publish-script.yml +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/qa/fix-runtime-warnings.yml +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/README.md +0 -0
- {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
- {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
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/agents/default/spinner-enhancement-2025-08-07.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/agents/esc-investigation/scratchpad.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/agents/phase5-recovery/scratchpad.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/agents/tech-docs-maintainer/scratchpad.md +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/locks/code-synthesis-analyzer.lock +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/locks/default.lock +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/locks/esc-investigation.lock +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/locks/phase5-recovery.lock +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/scratchpad/locks/tech-docs-maintainer.lock +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/tech-docs-maintainer.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.claude/test_suite_issues_resolved.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.github/pull_request_template.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.github/scripts/check_file_size.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.github/workflows/lint.yml +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.gitignore +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/.pre-commit-config.yaml +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/LICENSE +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/MANIFEST.in +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/TUNACODE.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/assets/tunacode_example.png +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/agent/TOOLS_WORKFLOW.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/agent/agent-inspo.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/agent/how-tunacode-agent-works.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/agent/main-agent-architecture.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/agent/swepmini-example.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/agent/tunacode-tool-system.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/configuration/.env.example +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/configuration/config-file-example.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/configuration/environment-variables.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/configuration/local-models.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/configuration/logging-configuration.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/configuration/tunacode-json-example.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/configuration/tunacode.json.example +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/development/codebase-hygiene.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/development/command-system-architecture.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/development/creating-custom-commands.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/development/performance-optimizations.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/development/prompt-principles.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/tests/README.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/tests/characterization-testing.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/tests/mocking-strategies.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/tests/troubleshooting.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/ui/ui-architecture.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/user/commands.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/documentation/user/tools.md +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/pytest.ini +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/scripts/check-file-length.sh +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/scripts/download_ripgrep.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/scripts/install_linux.sh +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/scripts/playwright_cache.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/scripts/startup_timer.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/scripts/uninstall.sh +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/scripts/utils/vulture_whitelist.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/scripts/verify_dev_env.sh +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/README.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/base.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/command_reload.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/conversation.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/debug.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/development.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/plan.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/quickstart.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/system.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/template.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/implementations/todo.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/registry.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/slash/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/slash/command.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/slash/loader.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/slash/processor.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/slash/types.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/slash/validator.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/commands/template_shortcut.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/repl_components/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/repl_components/command_parser.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/repl_components/error_recovery.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/repl_components/output_display.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/cli/repl_components/tool_executor.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/configuration/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/configuration/models.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/configuration/settings.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/context.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/agent_config.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/agent_helpers.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/json_tool_parser.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/message_handler.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/response_state.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/result_wrapper.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/state_transition.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/task_completion.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/tool_buffer.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/tool_executor.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/agent_components/truncation_checker.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/agents/utils.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/background/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/background/manager.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/code_index.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/llm/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/logging/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/logging/config.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/logging/formatters.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/logging/handlers.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/logging/logger.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/setup/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/setup/agent_setup.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/setup/base.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/setup/coordinator.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/setup/environment_setup.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/setup/git_safety_setup.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/setup/template_setup.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/token_usage/api_response_parser.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/token_usage/cost_calculator.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/token_usage/usage_tracker.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/core/tool_handler.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/exceptions.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/prompts/system.md.bak +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/py.typed +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/services/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/services/mcp.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/setup.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/templates/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/templates/loader.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/base.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/bash.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/exit_plan_mode.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/glob.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/grep.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/grep_components/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/grep_components/file_filter.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/grep_components/pattern_matcher.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/grep_components/result_formatter.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/grep_components/search_result.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/list_dir.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/present_plan.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/bash_prompt.xml +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/exit_plan_mode_prompt.xml +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/glob_prompt.xml +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/grep_prompt.xml +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/list_dir_prompt.xml +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/present_plan_prompt.xml +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/read_file_prompt.xml +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/run_command_prompt.xml +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/todo_prompt.xml +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/update_file_prompt.xml +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/prompts/write_file_prompt.xml +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/read_file.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/run_command.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/schema_assembler.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/todo.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/update_file.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/write_file.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tools/xml_helper.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tutorial/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tutorial/content.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tutorial/manager.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/tutorial/steps.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/types.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/completers.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/console.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/constants.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/decorators.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/input.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/keybindings.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/lexers.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/logging_compat.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/model_selector.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/output.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/prompt_manager.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/tool_descriptions.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/tool_ui.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/utils.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/ui/validators.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/api_key_validation.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/bm25.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/diff_utils.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/file_utils.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/import_cache.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/json_utils.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/message_utils.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/models_registry.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/retry.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/ripgrep.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/security.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/system.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/text_utils.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/token_counter.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/src/tunacode/utils/user_configuration.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/CHARACTERIZATION_README.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/CHARACTERIZATION_TEST_PLAN.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/CHARACTERIZATION_TEST_PLAN_AGENT_MAIN.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/CHARACTERIZATION_TEST_PLAN_COMMANDS.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/FILE_OPERATIONS_TEST_GUIDE.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/agent/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/agent/conftest.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/agent/test_agent_creation.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/agent/test_json_tool_parsing.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/agent/test_process_node.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/agent/test_process_request.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/agent/test_tool_message_patching.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/background/test_background_edge_cases.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/background/test_cleanup.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/background/test_task_cancellation.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/background/test_task_creation.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/background/test_task_execution.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/code_index/test_cache_management.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/code_index/test_file_scanning.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/code_index/test_index_building.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/code_index/test_search_operations.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/code_index/test_symbol_extraction.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/commands/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/commands/test_init_command.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/conftest.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/context/README.md +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/context/__init__.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/context/test_context_acceptance.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/context/test_context_integration.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/context/test_context_loading.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/context/test_tunacode_logging.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/repl/test_command_parsing.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/repl/test_error_handling.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/repl/test_escape_key_behavior.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/repl/test_input_handling.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/repl/test_keyboard_interrupts.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/repl/test_multiline_input.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/repl/test_output_display_logic.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/repl/test_repl_initialization.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/repl/test_session_flow.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/services/test_error_recovery.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/services/test_llm_routing.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/services/test_mcp_integration.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/services/test_service_lifecycle.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/state/test_agent_tracking.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/state/test_message_history.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/state/test_permissions.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/state/test_session_management.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/state/test_user_config.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/test_characterization_grep.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/test_characterization_main.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/test_characterization_repl.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/ui/test_async_ui.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/ui/test_console_output.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/ui/test_diff_display.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/ui/test_prompt_rendering.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/ui/test_spinner_messages.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/ui/test_tool_confirmations.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/utils/test_expand_file_refs.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/utils/test_file_operations.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/utils/test_git_commands.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/utils/test_token_counting.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/characterization/utils/test_utils_edge_cases.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/conftest.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_agent_output_formatting.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_command_parser_retry.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_completion_detection.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_glob_phase3.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_json_concatenation_recovery.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_json_retry.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_logging_config.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_onboarding_features.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_phase2_type_hints.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_plan_mode.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_prompt_injection.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_security.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_slash_commands_comprehensive.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_slash_commands_functional.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_slash_commands_integration.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_slash_commands_isolated.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_spinner_updates.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/test_tool_batching_retry.py +0 -0
- {tunacode_cli-0.0.75 → tunacode_cli-0.0.76.1}/tests/unit/test_constants_enums.py +0 -0
- {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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
23
|
-
│
|
|
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)
|