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