tunacode-cli 0.0.73__tar.gz → 0.0.75__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/.github/workflows/publish.yml +80 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/PKG-INFO +1 -1
- tunacode_cli-0.0.75/documentation/configuration/environment-variables.md +195 -0
- tunacode_cli-0.0.75/documentation/configuration/tunacode-json-example.md +125 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75/documentation/configuration}/tunacode.json.example +1 -0
- tunacode_cli-0.0.75/memory-bank/plan/2025-09-12_12-20-00_global_graceful_error_handling_implementation.md +399 -0
- tunacode_cli-0.0.75/memory-bank/research/2025-09-12_12-15-48_global_graceful_error_handling_analysis.md +126 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/pyproject.toml +2 -2
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/constants.py +1 -1
- tunacode_cli-0.0.73/.claude/settings.local.json +0 -133
- tunacode_cli-0.0.73/.taskmaster/CLAUDE.md +0 -417
- tunacode_cli-0.0.73/.taskmaster/config.json +0 -35
- tunacode_cli-0.0.73/.taskmaster/docs/prd.txt +0 -322
- tunacode_cli-0.0.73/.taskmaster/state.json +0 -6
- tunacode_cli-0.0.73/.taskmaster/tasks/task_001.txt +0 -14
- tunacode_cli-0.0.73/.taskmaster/tasks/task_002.txt +0 -11
- tunacode_cli-0.0.73/.taskmaster/tasks/task_003.txt +0 -11
- tunacode_cli-0.0.73/.taskmaster/tasks/task_004.txt +0 -11
- tunacode_cli-0.0.73/.taskmaster/tasks/task_005.txt +0 -11
- tunacode_cli-0.0.73/.taskmaster/tasks/task_006.txt +0 -54
- tunacode_cli-0.0.73/.taskmaster/tasks/tasks.json +0 -369
- tunacode_cli-0.0.73/.taskmaster/templates/example_prd.txt +0 -47
- tunacode_cli-0.0.73/CHANGELOG.md +0 -107
- tunacode_cli-0.0.73/planner.md +0 -29
- tunacode_cli-0.0.73/scripts/publish_to_pip.sh +0 -146
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/MEMORY_ANCHOR_SPEC.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/NEXT_PR_RULES.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/README.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/agents/antipattern-sniffer.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/agents/bug-context-analyzer.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/agents/code-synthesis-analyzer.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/agents/codebase-analyzer.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/agents/codebase-locator.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/agents/context-synthesis.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/agents/documentation-synthesis-qa.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/agents/expert-debugger.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/agents/phased-task-processor.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/agents/prompt-engineer.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/agents/rapid-code-synthesis-qa.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/agents/tech-docs-maintainer.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/anchors.json +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/commands/CE/QA.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/commands/CE/documentation-synthesis.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/commands/CE/execute.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/commands/CE/plan.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/commands/CE/research.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/commands/context-engineer/QA.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/commands/context-engineer/documentation-synthesis.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/commands/context-engineer/execute.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/commands/context-engineer/plan.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/commands/context-engineer/research.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/commands/deploy.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/commands/github-issue.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/commands/phaser.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/commands/smart-git.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/commands/smells.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/commands/work.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/commands/workflow.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/delta/2025-01-05-baseline.yml +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/delta/fix-text-alignment-layout-task3.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/delta/task4_ui_formatting_fix.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/delta/v0.0.53_to_v0.0.54.diff +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/development/always-on-display-implementation.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/development/cli-json-recovery-incident.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/development/directory-caching-optimization.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/development/esc-investigation/ESC_KEY_INVESTIGATION.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/development/esc-investigation/ESC_KEY_STREAMING_ANALYSIS.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/development/hatch-commands.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/development/model-updates-2025.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/development/onboarding-improvements.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/development/openai_tool_calling_evaluation.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/development/phase5-prompt-injection-system.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/development/slash-commands.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/development/uv-hatch-setup.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/development/uv-installer-updates.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/metadata/components.yml +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/metadata/hotspots.txt +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/patterns/json_retry_implementation.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/qa/fix-agent-errors.yml +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/qa/fix-publish-script.yml +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/qa/fix-runtime-warnings.yml +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/README.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/active/task_json_retry_implementation_summary_2025-07-24_13-05-40.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/active/task_standardize_ui_formatting_patterns_2025-07-23_20-43-28.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/agents/default/spinner-enhancement-2025-08-07.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/agents/esc-investigation/scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/agents/phase5-recovery/scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/agents/tech-docs-maintainer/scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/code-synthesis-analyzer_ESC_Double-Press_REPL_Abort_Analysis_2025-08-06_134859_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Add_Prompt_Injection_to_Remaining_Tools_-_Continuation_2025-08-13_152542_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Add_Prompt_Injection_to_Remaining_Tools_2025-08-13_152352_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_CLI_Agent_JSON_Recovery_Investigation_2025-08-12_124206_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_CLI_Agent_JSON_Recovery_Investigation_2025-08-12_124727_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Completely_remove_TUNACODE_TASK_COMPLETE_from_plan_mode_2025-08-09_091836_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.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.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Debug_persistent_KeyboardInterrupt_in_event_loop_2025-08-09_034136_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Debug_present_plan_tool_registration_and_model_capability_2025-08-09_092923_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Debug_stuck_double_escape_in_plan_approval_2025-08-09_033214_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Fix_Application.exit()_failed_error_in_ESC_keybinding_2025-08-09_075607_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Fix_ESC_double-tap_and_plan_display_issues_2025-08-09_090055_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Fix_ESC_exceptions_and_missing_present_plan_tool_2025-08-09_081700_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Fix_agent_not_calling_present_plan_tool_2025-08-09_090827_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Fix_double_escape_for_planning_mode_approval_prompt_2025-08-09_032759_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Fix_unhandled_KeyboardInterrupt_exception_in_event_loop_2025-08-09_033843_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Fix_wizard_UI_-_branch_safety_interference_2025-08-20_222738_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Fixed_Thinking_dots_animation_2025-08-11_121009_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Force_agent_to_actually_call_present_plan_tool_2025-08-09_091334_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_GitHub_Directory_Review_2025-08-11_122451_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Implementing_ESC_key_double-press_for_REPL_abort_2025-08-06_124754_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_JSON_Recovery_Implementation_2025-08-12_130251_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Makefile_to_Hatch_Migration_2025-08-07_192356_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Performance_Optimization_-_Agent_Initialization_2025-08-13_160447_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Phase_3_-_Glob_Tool_Optimization_2025-08-13_142601_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Replace_entire_system_prompt_with_tool-only_instructions_2025-08-09_112839_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_TunaCode_Search_Enhancement_Implementation_2025-08-13_140905_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Update_Documentation_for_JSON_Recovery_System_2025-08-12_131127_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_Update_documentation_for_always-on_display_UX_improvements_2025-08-12_154818_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/default_slash_command_system_implementation_2025-08-14_034024_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/archived/phase5-recovery_Phase_5_Recovery_Analysis_2025-08-13_145339_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/locks/code-synthesis-analyzer.lock +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/locks/default.lock +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/locks/esc-investigation.lock +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/locks/phase5-recovery.lock +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/locks/tech-docs-maintainer.lock +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.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.73 → tunacode_cli-0.0.75}/.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.73 → tunacode_cli-0.0.75}/.claude/scratchpad/shared/done_tasks/default_Add_Prompt_Injection_to_Remaining_Tools_2025-08-13_152352_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/shared/done_tasks/default_CLI_Agent_JSON_Recovery_Investigation_2025-08-12_124206_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/shared/done_tasks/default_CLI_Agent_JSON_Recovery_Investigation_2025-08-12_124727_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.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.73 → tunacode_cli-0.0.75}/.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.73 → tunacode_cli-0.0.75}/.claude/scratchpad/shared/done_tasks/default_Debug_persistent_KeyboardInterrupt_in_event_loop_2025-08-09_034136_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.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.73 → tunacode_cli-0.0.75}/.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.73 → tunacode_cli-0.0.75}/.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.73 → tunacode_cli-0.0.75}/.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.73 → tunacode_cli-0.0.75}/.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.73 → tunacode_cli-0.0.75}/.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.73 → tunacode_cli-0.0.75}/.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.73 → tunacode_cli-0.0.75}/.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.73 → tunacode_cli-0.0.75}/.claude/scratchpad/shared/done_tasks/default_Fix_wizard_UI_-_branch_safety_interference_2025-08-20_222738_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/shared/done_tasks/default_Fixed_Thinking_dots_animation_2025-08-11_121009_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.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.73 → tunacode_cli-0.0.75}/.claude/scratchpad/shared/done_tasks/default_GitHub_Directory_Review_2025-08-11_122451_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.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.73 → tunacode_cli-0.0.75}/.claude/scratchpad/shared/done_tasks/default_JSON_Recovery_Implementation_2025-08-12_130251_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/shared/done_tasks/default_Makefile_to_Hatch_Migration_2025-08-07_192356_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/shared/done_tasks/default_Performance_Optimization_-_Agent_Initialization_2025-08-13_160447_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/shared/done_tasks/default_Phase_3_-_Glob_Tool_Optimization_2025-08-13_142601_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.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.73 → tunacode_cli-0.0.75}/.claude/scratchpad/shared/done_tasks/default_TunaCode_Search_Enhancement_Implementation_2025-08-13_140905_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/scratchpad/shared/done_tasks/default_Update_Documentation_for_JSON_Recovery_System_2025-08-12_131127_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.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.73 → tunacode_cli-0.0.75}/.claude/scratchpad/shared/done_tasks/phase5-recovery_Phase_5_Recovery_Analysis_2025-08-13_145339_scratchpad.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/tech-docs-maintainer.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.claude/test_suite_issues_resolved.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.github/pull_request_template.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.github/scripts/check_file_size.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.github/workflows/lint.yml +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.gitignore +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/.pre-commit-config.yaml +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/CLAUDE.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/LICENSE +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/MANIFEST.in +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/README.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/TUNACODE.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/assets/tunacode_example.png +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/README.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/agent/TOOLS_WORKFLOW.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/agent/agent-inspo.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/agent/how-tunacode-agent-works.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/agent/main-agent-architecture.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/agent/swepmini-example.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/agent/tunacode-tool-system.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/changelog/CHANGELOG.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75/documentation/configuration}/.env.example +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/configuration/config-file-example.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/configuration/local-models.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/configuration/logging-configuration.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/development/codebase-hygiene.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/development/command-system-architecture.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/development/creating-custom-commands.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/development/hatch-build-system.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/development/performance-optimizations.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/development/prompt-principles.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/tests/README.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/tests/characterization-testing.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/tests/mocking-strategies.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/tests/troubleshooting.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/ui/ui-architecture.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/user/commands.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/user/getting-started.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/documentation/user/tools.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/memory-bank/plan/2025-09-11_13-30-00_agent_loop_architecture_enhancement.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/memory-bank/plan/2025-09-11_14-00-00_enum_state_machine_implementation.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/memory-bank/plan/2025-09-11_14-15-00_automated_cli_tool_testing_framework.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/memory-bank/research/2025-09-07_21-13-37_agent_loop_architecture.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/memory-bank/research/2025-09-11_13-14-06_agent_loop_enhancement_analysis.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/pytest.ini +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/scripts/check-file-length.sh +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/scripts/download_ripgrep.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/scripts/install_linux.sh +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/scripts/playwright_cache.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/scripts/setup_dev_env.sh +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/scripts/startup_timer.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/scripts/uninstall.sh +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/scripts/utils/vulture_whitelist.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/scripts/verify_dev_env.sh +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/setup.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/README.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/base.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/implementations/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/implementations/command_reload.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/implementations/conversation.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/implementations/debug.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/implementations/development.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/implementations/model.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/implementations/plan.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/implementations/quickstart.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/implementations/system.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/implementations/template.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/implementations/todo.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/registry.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/slash/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/slash/command.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/slash/loader.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/slash/processor.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/slash/types.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/slash/validator.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/commands/template_shortcut.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/main.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/repl.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/repl_components/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/repl_components/command_parser.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/repl_components/error_recovery.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/repl_components/output_display.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/cli/repl_components/tool_executor.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/configuration/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/configuration/defaults.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/configuration/models.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/configuration/settings.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/context.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/agents/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/agents/agent_components/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/agents/agent_components/agent_config.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/agents/agent_components/agent_helpers.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/agents/agent_components/json_tool_parser.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/agents/agent_components/message_handler.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/agents/agent_components/node_processor.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/agents/agent_components/response_state.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/agents/agent_components/result_wrapper.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/agents/agent_components/state_transition.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/agents/agent_components/task_completion.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/agents/agent_components/tool_buffer.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/agents/agent_components/tool_executor.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/agents/agent_components/truncation_checker.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/agents/main.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/agents/utils.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/background/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/background/manager.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/code_index.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/llm/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/logging/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/logging/config.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/logging/formatters.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/logging/handlers.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/logging/logger.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/setup/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/setup/agent_setup.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/setup/base.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/setup/config_setup.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/setup/coordinator.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/setup/environment_setup.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/setup/git_safety_setup.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/setup/template_setup.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/state.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/token_usage/api_response_parser.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/token_usage/cost_calculator.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/token_usage/usage_tracker.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/core/tool_handler.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/exceptions.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/prompts/system.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/prompts/system.md.bak +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/py.typed +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/services/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/services/mcp.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/setup.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/templates/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/templates/loader.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/base.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/bash.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/exit_plan_mode.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/glob.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/grep.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/grep_components/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/grep_components/file_filter.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/grep_components/pattern_matcher.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/grep_components/result_formatter.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/grep_components/search_result.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/list_dir.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/present_plan.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/prompts/bash_prompt.xml +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/prompts/exit_plan_mode_prompt.xml +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/prompts/glob_prompt.xml +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/prompts/grep_prompt.xml +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/prompts/list_dir_prompt.xml +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/prompts/present_plan_prompt.xml +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/prompts/read_file_prompt.xml +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/prompts/run_command_prompt.xml +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/prompts/todo_prompt.xml +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/prompts/update_file_prompt.xml +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/prompts/write_file_prompt.xml +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/read_file.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/run_command.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/schema_assembler.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/todo.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/update_file.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/write_file.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tools/xml_helper.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tutorial/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tutorial/content.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tutorial/manager.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/tutorial/steps.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/types.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/ui/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/ui/completers.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/ui/console.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/ui/constants.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/ui/decorators.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/ui/input.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/ui/keybindings.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/ui/lexers.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/ui/logging_compat.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/ui/model_selector.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/ui/output.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/ui/panels.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/ui/prompt_manager.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/ui/tool_descriptions.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/ui/tool_ui.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/ui/utils.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/ui/validators.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/utils/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/utils/api_key_validation.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/utils/bm25.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/utils/diff_utils.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/utils/file_utils.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/utils/import_cache.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/utils/json_utils.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/utils/message_utils.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/utils/models_registry.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/utils/retry.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/utils/ripgrep.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/utils/security.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/utils/system.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/utils/text_utils.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/utils/token_counter.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/src/tunacode/utils/user_configuration.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/CHARACTERIZATION_README.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/CHARACTERIZATION_TEST_PLAN.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/CHARACTERIZATION_TEST_PLAN_AGENT_MAIN.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/CHARACTERIZATION_TEST_PLAN_COMMANDS.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/FILE_OPERATIONS_TEST_GUIDE.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/agent/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/agent/conftest.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/agent/test_agent_creation.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/agent/test_json_tool_parsing.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/agent/test_process_node.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/agent/test_process_request.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/agent/test_tool_message_patching.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/background/test_background_edge_cases.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/background/test_cleanup.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/background/test_task_cancellation.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/background/test_task_creation.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/background/test_task_execution.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/code_index/test_cache_management.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/code_index/test_file_scanning.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/code_index/test_index_building.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/code_index/test_search_operations.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/code_index/test_symbol_extraction.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/commands/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/commands/test_init_command.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/conftest.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/context/README.md +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/context/__init__.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/context/test_context_acceptance.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/context/test_context_integration.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/context/test_context_loading.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/context/test_tunacode_logging.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/repl/test_command_parsing.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/repl/test_error_handling.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/repl/test_escape_key_behavior.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/repl/test_input_handling.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/repl/test_keyboard_interrupts.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/repl/test_multiline_input.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/repl/test_output_display_logic.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/repl/test_repl_initialization.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/repl/test_session_flow.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/services/test_error_recovery.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/services/test_llm_routing.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/services/test_mcp_integration.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/services/test_service_lifecycle.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/state/test_agent_tracking.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/state/test_message_history.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/state/test_permissions.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/state/test_session_management.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/state/test_state_initialization.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/state/test_user_config.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/test_characterization_commands.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/test_characterization_grep.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/test_characterization_main.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/test_characterization_repl.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/ui/test_async_ui.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/ui/test_console_output.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/ui/test_diff_display.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/ui/test_prompt_rendering.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/ui/test_spinner_messages.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/ui/test_tool_confirmations.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/utils/test_expand_file_refs.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/utils/test_file_operations.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/utils/test_git_commands.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/utils/test_token_counting.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/characterization/utils/test_utils_edge_cases.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/conftest.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/test_agent_output_formatting.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/test_command_parser_retry.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/test_completion_detection.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/test_glob_phase3.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/test_json_concatenation_recovery.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/test_json_retry.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/test_logging_config.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/test_onboarding_features.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/test_phase2_type_hints.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/test_plan_mode.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/test_prompt_changes_validation.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/test_prompt_injection.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/test_security.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/test_slash_commands_comprehensive.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/test_slash_commands_functional.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/test_slash_commands_integration.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/test_slash_commands_isolated.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/test_spinner_updates.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/test_tool_batching_retry.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tests/unit/test_constants_enums.py +0 -0
- {tunacode_cli-0.0.73 → tunacode_cli-0.0.75}/tools/emoji_cleaner.py +0 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
"on":
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
publish:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v4
|
|
13
|
+
|
|
14
|
+
- name: Set up Python
|
|
15
|
+
uses: actions/setup-python@v5
|
|
16
|
+
with:
|
|
17
|
+
python-version: '3.x'
|
|
18
|
+
|
|
19
|
+
- name: Install build tooling
|
|
20
|
+
run: |
|
|
21
|
+
python -m pip install --upgrade pip
|
|
22
|
+
pip install hatch twine uv
|
|
23
|
+
|
|
24
|
+
- name: Determine version from tag
|
|
25
|
+
id: ver
|
|
26
|
+
shell: bash
|
|
27
|
+
run: |
|
|
28
|
+
# Prefer release tag when present; fall back to ref name
|
|
29
|
+
if [ "${{ github.event_name }}" = "release" ]; then
|
|
30
|
+
TAG="${{ github.event.release.tag_name }}"
|
|
31
|
+
else
|
|
32
|
+
TAG="${{ github.ref_name }}"
|
|
33
|
+
fi
|
|
34
|
+
TAG="${TAG#v}"
|
|
35
|
+
echo "tag=$TAG" >> "$GITHUB_OUTPUT"
|
|
36
|
+
|
|
37
|
+
- name: Check version consistency
|
|
38
|
+
shell: bash
|
|
39
|
+
run: |
|
|
40
|
+
TAG="${{ steps.ver.outputs.tag }}"
|
|
41
|
+
# Extract only the [project] version from pyproject.toml
|
|
42
|
+
PYPROJ=$(awk '
|
|
43
|
+
/^\[project\]/ { in_proj=1; next }
|
|
44
|
+
/^\[/ { if (in_proj) exit }
|
|
45
|
+
in_proj && /^version =/ { match($0, /"([^"]+)"/, m); print m[1]; exit }
|
|
46
|
+
' pyproject.toml)
|
|
47
|
+
# Extract APP_VERSION from constants
|
|
48
|
+
CONST=$(awk -F '"' '/^APP_VERSION =/ { print $2; exit }' src/tunacode/constants.py)
|
|
49
|
+
echo "Tag: $TAG"
|
|
50
|
+
echo "pyproject.toml: $PYPROJ"
|
|
51
|
+
echo "constants.APP_VERSION: $CONST"
|
|
52
|
+
if [[ "$TAG" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
53
|
+
[[ "$TAG" == "$PYPROJ" ]] || { echo 'pyproject.toml version mismatch'; exit 1; }
|
|
54
|
+
[[ "$TAG" == "$CONST" ]] || { echo 'constants.py APP_VERSION mismatch'; exit 1; }
|
|
55
|
+
else
|
|
56
|
+
echo "No semver tag detected; skipping tag consistency check."
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
- name: Lint
|
|
60
|
+
run: hatch run lint-check
|
|
61
|
+
|
|
62
|
+
- name: Test
|
|
63
|
+
run: hatch run test
|
|
64
|
+
|
|
65
|
+
- name: Build
|
|
66
|
+
run: hatch build
|
|
67
|
+
|
|
68
|
+
# Preferred: API token secret
|
|
69
|
+
- name: Publish to PyPI (API token)
|
|
70
|
+
env:
|
|
71
|
+
TWINE_USERNAME: __token__
|
|
72
|
+
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
|
73
|
+
run: python -m twine upload dist/*
|
|
74
|
+
|
|
75
|
+
# 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,195 @@
|
|
|
1
|
+
# Environment Variables Configuration
|
|
2
|
+
|
|
3
|
+
The `.env.example` file demonstrates all environment variables that can be used to configure TunaCode. These variables provide an alternative method for setting API keys and configuration options.
|
|
4
|
+
|
|
5
|
+
## File Usage
|
|
6
|
+
|
|
7
|
+
1. **Copy the example file**:
|
|
8
|
+
```bash
|
|
9
|
+
cp documentation/configuration/.env.example .env
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
2. **Edit with your values**:
|
|
13
|
+
```bash
|
|
14
|
+
# Set your actual API keys
|
|
15
|
+
ANTHROPIC_API_KEY="sk-ant-api03-your-key-here"
|
|
16
|
+
OPENAI_API_KEY="sk-proj-your-key-here"
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
3. **Load the environment**:
|
|
20
|
+
```bash
|
|
21
|
+
# Load variables in your shell
|
|
22
|
+
source .env
|
|
23
|
+
|
|
24
|
+
# Or use with direnv (auto-loading)
|
|
25
|
+
echo "dotenv" > .envrc
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Environment Variables
|
|
29
|
+
|
|
30
|
+
### Required API Keys
|
|
31
|
+
|
|
32
|
+
**Anthropic Claude**
|
|
33
|
+
- `ANTHROPIC_API_KEY`: Required for Claude models
|
|
34
|
+
- Format: `sk-ant-api03-...`
|
|
35
|
+
- Get from: https://console.anthropic.com
|
|
36
|
+
|
|
37
|
+
**OpenAI**
|
|
38
|
+
- `OPENAI_API_KEY`: Required for OpenAI models (GPT-3.5, GPT-4, etc.)
|
|
39
|
+
- Format: `sk-proj-...`
|
|
40
|
+
- Get from: https://platform.openai.com/api-keys
|
|
41
|
+
|
|
42
|
+
### Optional API Keys
|
|
43
|
+
|
|
44
|
+
**Google Gemini**
|
|
45
|
+
- `GOOGLE_API_KEY`: For Google Gemini models
|
|
46
|
+
- Get from: https://makersuite.google.com/app/apikey
|
|
47
|
+
|
|
48
|
+
**Perplexity**
|
|
49
|
+
- `PERPLEXITY_API_KEY`: For Perplexity AI models
|
|
50
|
+
- Format: `pplx-...`
|
|
51
|
+
- Get from: https://www.perplexity.ai/settings/api
|
|
52
|
+
|
|
53
|
+
**Mistral AI**
|
|
54
|
+
- `MISTRAL_API_KEY`: For Mistral models
|
|
55
|
+
- Get from: https://console.mistral.ai/api-keys
|
|
56
|
+
|
|
57
|
+
**xAI**
|
|
58
|
+
- `XAI_API_KEY`: For xAI models (Grok)
|
|
59
|
+
- Get from: https://console.x.ai
|
|
60
|
+
|
|
61
|
+
**Groq**
|
|
62
|
+
- `GROQ_API_KEY`: For Groq's fast inference
|
|
63
|
+
- Get from: https://console.groq.com
|
|
64
|
+
|
|
65
|
+
**OpenRouter**
|
|
66
|
+
- `OPENROUTER_API_KEY`: For OpenRouter models
|
|
67
|
+
- Get from: https://openrouter.ai/keys
|
|
68
|
+
|
|
69
|
+
**Azure OpenAI**
|
|
70
|
+
- `AZURE_OPENAI_API_KEY`: For Azure OpenAI services
|
|
71
|
+
- Requires additional configuration in `tunacode.json` for endpoint
|
|
72
|
+
|
|
73
|
+
**Ollama**
|
|
74
|
+
- `OLLAMA_API_KEY`: For remote Ollama servers requiring authentication
|
|
75
|
+
- Local Ollama typically doesn't require a key
|
|
76
|
+
|
|
77
|
+
**GitHub**
|
|
78
|
+
- `GITHUB_API_KEY`: For GitHub import/export features
|
|
79
|
+
- Format: `ghp_...` or `github_pat_...`
|
|
80
|
+
- Get from: https://github.com/settings/tokens
|
|
81
|
+
|
|
82
|
+
## Configuration Priority
|
|
83
|
+
|
|
84
|
+
Environment variables are processed in this order:
|
|
85
|
+
|
|
86
|
+
1. **Environment variables** (highest priority)
|
|
87
|
+
2. **`tunacode.json` configuration file**
|
|
88
|
+
3. **Default values** (lowest priority)
|
|
89
|
+
|
|
90
|
+
Example: If `OPENAI_API_KEY` is set both in `.env` and `tunacode.json`, the `.env` value takes precedence.
|
|
91
|
+
|
|
92
|
+
## Security Best Practices
|
|
93
|
+
|
|
94
|
+
### Never Commit `.env` Files
|
|
95
|
+
```bash
|
|
96
|
+
# Add to .gitignore
|
|
97
|
+
.env
|
|
98
|
+
.env.local
|
|
99
|
+
.env.production
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Use Different Files for Different Environments
|
|
103
|
+
```
|
|
104
|
+
.env # Local development
|
|
105
|
+
.env.staging # Staging environment
|
|
106
|
+
.env.production # Production environment
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Secure Storage
|
|
110
|
+
- Use encrypted secrets management in production
|
|
111
|
+
- Consider using `direnv` for automatic environment loading
|
|
112
|
+
- Use `.env.example` as a template for required variables
|
|
113
|
+
|
|
114
|
+
### Key Rotation
|
|
115
|
+
- Regularly rotate API keys
|
|
116
|
+
- Monitor key usage and billing
|
|
117
|
+
- Revoke compromised keys immediately
|
|
118
|
+
|
|
119
|
+
## Usage Examples
|
|
120
|
+
|
|
121
|
+
### Development Setup
|
|
122
|
+
```bash
|
|
123
|
+
# Copy and configure
|
|
124
|
+
cp documentation/configuration/.env.example .env
|
|
125
|
+
echo 'ANTHROPIC_API_KEY="your-key"' >> .env
|
|
126
|
+
|
|
127
|
+
# Load environment
|
|
128
|
+
source .env
|
|
129
|
+
|
|
130
|
+
# Run tunacode
|
|
131
|
+
tunacode --model "anthropic:claude-3-sonnet"
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### CI/CD Integration
|
|
135
|
+
```yaml
|
|
136
|
+
# GitHub Actions example
|
|
137
|
+
env:
|
|
138
|
+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
139
|
+
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Docker Integration
|
|
143
|
+
```dockerfile
|
|
144
|
+
# Dockerfile
|
|
145
|
+
COPY .env.example .env
|
|
146
|
+
# Build-time or run-time environment injection
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Troubleshooting
|
|
150
|
+
|
|
151
|
+
### Common Issues
|
|
152
|
+
|
|
153
|
+
**API Key Not Found**
|
|
154
|
+
```bash
|
|
155
|
+
# Check if variable is set
|
|
156
|
+
echo $ANTHROPIC_API_KEY
|
|
157
|
+
|
|
158
|
+
# Verify file exists
|
|
159
|
+
ls -la .env
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Invalid API Key Format**
|
|
163
|
+
- Ensure keys start with correct prefix (`sk-`, `pplx-`, etc.)
|
|
164
|
+
- Check for extra spaces or quotes
|
|
165
|
+
- Verify key hasn't expired
|
|
166
|
+
|
|
167
|
+
**Permission Issues**
|
|
168
|
+
```bash
|
|
169
|
+
# Check file permissions
|
|
170
|
+
chmod 600 .env
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Debug Environment Loading
|
|
174
|
+
```bash
|
|
175
|
+
# Show all environment variables
|
|
176
|
+
env | grep API_KEY
|
|
177
|
+
|
|
178
|
+
# Test with specific variable
|
|
179
|
+
python -c "import os; print(os.getenv('ANTHROPIC_API_KEY', 'NOT SET'))"
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Integration with Configuration Files
|
|
183
|
+
|
|
184
|
+
Environment variables can be referenced in `tunacode.json`:
|
|
185
|
+
|
|
186
|
+
```json
|
|
187
|
+
{
|
|
188
|
+
"env": {
|
|
189
|
+
"ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
|
|
190
|
+
"OPENAI_API_KEY": "${OPENAI_API_KEY}"
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
This allows for flexible configuration management across different deployment environments.
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# TunaCode Configuration Example File
|
|
2
|
+
|
|
3
|
+
The `tunacode.json.example` file provides a comprehensive template for configuring the TunaCode system. This file demonstrates all available configuration options and their default values.
|
|
4
|
+
|
|
5
|
+
## File Location
|
|
6
|
+
|
|
7
|
+
The actual configuration file should be located at:
|
|
8
|
+
- **Linux/macOS**: `~/.config/tunacode.json`
|
|
9
|
+
- **Windows**: `%APPDATA%\tunacode.json`
|
|
10
|
+
|
|
11
|
+
## Configuration Structure
|
|
12
|
+
|
|
13
|
+
```json
|
|
14
|
+
{
|
|
15
|
+
"default_model": "openai:gpt-4.1",
|
|
16
|
+
"env": {
|
|
17
|
+
"ANTHROPIC_API_KEY": "",
|
|
18
|
+
"GEMINI_API_KEY": "",
|
|
19
|
+
"OPENAI_API_KEY": "api-key",
|
|
20
|
+
"OPENROUTER_API_KEY": "",
|
|
21
|
+
"OPENAI_BASE_URL": "https://api.cerebras.ai/v1"
|
|
22
|
+
},
|
|
23
|
+
"settings": {
|
|
24
|
+
"max_retries": 10,
|
|
25
|
+
"max_iterations": 40,
|
|
26
|
+
"tool_ignore": [
|
|
27
|
+
"read_file"
|
|
28
|
+
],
|
|
29
|
+
"guide_file": "TUNACODE.md",
|
|
30
|
+
"fallback_response": true,
|
|
31
|
+
"fallback_verbosity": "normal",
|
|
32
|
+
"context_window_size": 200000,
|
|
33
|
+
"enable_streaming": true,
|
|
34
|
+
"ripgrep": {
|
|
35
|
+
"use_bundled": false,
|
|
36
|
+
"timeout": 10,
|
|
37
|
+
"max_buffer_size": 1048576,
|
|
38
|
+
"max_results": 100,
|
|
39
|
+
"enable_metrics": false,
|
|
40
|
+
"debug": false
|
|
41
|
+
},
|
|
42
|
+
"enable_tutorial": true,
|
|
43
|
+
"first_installation_date": "2025-09-11T11:50:40.167105",
|
|
44
|
+
"tutorial_declined": true
|
|
45
|
+
},
|
|
46
|
+
"mcpServers": {}
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Configuration Options
|
|
51
|
+
|
|
52
|
+
### Default Model
|
|
53
|
+
- `default_model`: Default AI model to use (format: `provider:model-name`)
|
|
54
|
+
- Examples: `openai:gpt-4.1`, `anthropic:claude-3-sonnet`, `google:gemini-pro`
|
|
55
|
+
|
|
56
|
+
### Environment Variables (`env`)
|
|
57
|
+
Configure API keys and endpoints for different AI providers:
|
|
58
|
+
|
|
59
|
+
**Required Keys:**
|
|
60
|
+
- `ANTHROPIC_API_KEY`: Anthropic Claude API key (format: `sk-ant-api03-...`)
|
|
61
|
+
- `OPENAI_API_KEY`: OpenAI API key (format: `sk-proj-...`)
|
|
62
|
+
- `OPENROUTER_API_KEY`: OpenRouter API key
|
|
63
|
+
|
|
64
|
+
**Optional Keys:**
|
|
65
|
+
- `GEMINI_API_KEY`: Google Gemini API key
|
|
66
|
+
- `OPENAI_BASE_URL`: Custom OpenAI-compatible endpoint (e.g., Cerebras, LocalAI)
|
|
67
|
+
|
|
68
|
+
### Settings
|
|
69
|
+
|
|
70
|
+
**Core Settings:**
|
|
71
|
+
- `max_retries`: Maximum retry attempts for failed operations (default: 10)
|
|
72
|
+
- `max_iterations`: Maximum agent iterations per request (default: 40)
|
|
73
|
+
- `tool_ignore`: List of tools to disable (e.g., `["read_file"]`)
|
|
74
|
+
- `guide_file`: Project instruction file (default: `TUNACODE.md`)
|
|
75
|
+
- `fallback_response`: Enable fallback when iterations exhausted (default: true)
|
|
76
|
+
- `fallback_verbosity`: Fallback verbosity level (`minimal`, `normal`, `detailed`)
|
|
77
|
+
- `context_window_size`: Maximum context size in tokens (default: 200000)
|
|
78
|
+
- `enable_streaming`: Enable streaming responses (default: true)
|
|
79
|
+
|
|
80
|
+
**Ripgrep Configuration:**
|
|
81
|
+
- `use_bundled`: Use bundled ripgrep binary (default: false)
|
|
82
|
+
- `timeout`: Ripgrep timeout in seconds (default: 10)
|
|
83
|
+
- `max_buffer_size`: Maximum buffer size in bytes (default: 1048576)
|
|
84
|
+
- `max_results`: Maximum search results (default: 100)
|
|
85
|
+
- `enable_metrics`: Enable ripgrep metrics (default: false)
|
|
86
|
+
- `debug`: Enable debug output (default: false)
|
|
87
|
+
|
|
88
|
+
**Tutorial Settings:**
|
|
89
|
+
- `enable_tutorial`: Enable first-time tutorial (default: true)
|
|
90
|
+
- `first_installation_date`: Installation timestamp
|
|
91
|
+
- `tutorial_declined`: User has declined tutorial (default: false)
|
|
92
|
+
|
|
93
|
+
### MCP Servers
|
|
94
|
+
- `mcpServers`: Model Context Protocol server configurations (empty by default)
|
|
95
|
+
|
|
96
|
+
## Setup Methods
|
|
97
|
+
|
|
98
|
+
1. **Copy from Example**:
|
|
99
|
+
```bash
|
|
100
|
+
cp documentation/configuration/tunacode.json.example ~/.config/tunacode.json
|
|
101
|
+
# Edit the file with your API keys
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
2. **Setup Wizard**:
|
|
105
|
+
```bash
|
|
106
|
+
tunacode --setup
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
3. **CLI Configuration**:
|
|
110
|
+
```bash
|
|
111
|
+
tunacode --model "openai:gpt-4.1" --key "your-api-key"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Runtime Configuration Changes
|
|
115
|
+
|
|
116
|
+
- Change iterations: `/iterations 30`
|
|
117
|
+
- Switch models: `/model`
|
|
118
|
+
- View current config: `/config`
|
|
119
|
+
|
|
120
|
+
## Security Notes
|
|
121
|
+
|
|
122
|
+
- Never commit your actual `tunacode.json` file to version control
|
|
123
|
+
- Use environment variables for sensitive keys in production
|
|
124
|
+
- Keep API keys secure and rotate them regularly
|
|
125
|
+
- The example file contains placeholder values only
|