tunacode-cli 0.0.76.4__tar.gz → 0.0.76.6__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.76.4 → tunacode_cli-0.0.76.6}/.claude/delta_summaries/behavior_changes.json +53 -5
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/memory_anchors/anchors.json +49 -4
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/metadata/file_classifications.json +0 -10
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/AGENTS.md +0 -2
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/CLAUDE.md +0 -2
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/PKG-INFO +1 -1
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/TODO.md +7 -7
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/changelog/CHANGELOG.md +14 -4
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/development/hatch-build-system.md +0 -1
- tunacode_cli-0.0.76.6/memory-bank/plan/2025-09-24_cli_prompt_toolkit_fuzzy_plan.md +89 -0
- tunacode_cli-0.0.76.6/memory-bank/research/2025-09-24_fuzzy_logic_implementation_analysis.md +96 -0
- tunacode_cli-0.0.76.6/plan-models.md +60 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/pyproject.toml +2 -2
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/registry.py +2 -7
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/main.py +1 -1
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/constants.py +1 -1
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/ui/completers.py +172 -39
- tunacode_cli-0.0.76.6/src/tunacode/ui/path_heuristics.py +89 -0
- tunacode_cli-0.0.76.6/tests/characterization/test_cli_fuzzy_matching.py +60 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/conftest.py +8 -0
- tunacode_cli-0.0.76.4/.claude/patterns/coding_patterns.md +0 -12
- tunacode_cli-0.0.76.4/llm-agent-tools/knowledge_base/README.md +0 -88
- tunacode_cli-0.0.76.4/llm-agent-tools/knowledge_base/README.md:Zone.Identifier +0 -0
- tunacode_cli-0.0.76.4/llm-agent-tools/knowledge_base/tools/anchor_drop.py +0 -104
- tunacode_cli-0.0.76.4/llm-agent-tools/knowledge_base/tools/anchor_drop.py:Zone.Identifier +0 -0
- tunacode_cli-0.0.76.4/memory-bank/research/2025-09-22_12-01-06_cli_fuzzy_logic_analysis.md +0 -51
- tunacode_cli-0.0.76.4/src/tunacode/utils/fuzzy_utils.py +0 -33
- tunacode_cli-0.0.76.4/tests/characterization/test_cli_fuzzy_matching.py +0 -19
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/README.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/debug_history/2025-09-21-rag-search-hyphen-gotcha.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/debug_history/debug_sessions.json +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/delta_summaries/2025-01-05-baseline.yml +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/delta_summaries/2025-09-21-models_registry-pydantic-conversion.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/delta_summaries/2025-09-21-models_registry-validation-tests.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/delta_summaries/2025-09-21-test-update-model-command-characterization.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/delta_summaries/api_change_logs.json +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/delta_summaries/fix-text-alignment-layout-task3.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/delta_summaries/reasoning_logs.json +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/delta_summaries/task4_ui_formatting_fix.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/delta_summaries/v0.0.53_to_v0.0.54.diff +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/development/always-on-display-implementation.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/development/cli-json-recovery-incident.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/development/directory-caching-optimization.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/development/esc-investigation/ESC_KEY_INVESTIGATION.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/development/esc-investigation/ESC_KEY_STREAMING_ANALYSIS.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/development/hatch-commands.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/development/model-updates-2025.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/development/onboarding-improvements.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/development/openai_tool_calling_evaluation.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/development/phase5-prompt-injection-system.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/development/slash-commands.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/development/uv-hatch-setup.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/development/uv-installer-updates.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/development/version-management.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/docs_model_friendly/component_purpose.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/docs_model_friendly/component_relationships.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/docs_model_friendly/rag_modules_overview.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/kv/github-actions-release-fix.json +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/metadata/components.yml +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/metadata/hotspots.txt +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/patterns/canonical_patterns/backward_compatibility_refactor.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/patterns/json_retry_implementation.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/qa/context_logs/latest_session.txt +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/qa/context_logs/main-agent-integration-20250917-123100/commits.txt +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/qa/context_logs/main-agent-integration-20250917-123100/diffstat.txt +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/qa/context_logs/main-agent-integration-20250917-123100/files.json +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/qa/context_logs/main-agent-integration-20250917-123100/hunks.txt +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/qa/context_logs/main-agent-integration-20250917-141518/commits.txt +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/qa/context_logs/main-agent-integration-20250917-141518/diffstat.txt +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/qa/context_logs/main-agent-integration-20250917-141518/files.json +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/qa/context_logs/main-agent-integration-20250917-141518/hunks.txt +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/qa/context_logs/react-tool-session-20250120-000002/summary.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/qa/context_logs/smart-git-20250917-122934/commits.txt +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/qa/context_logs/smart-git-20250917-122934/diffstat.txt +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/qa/context_logs/smart-git-20250917-122934/files.json +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/qa/fix-agent-errors.yml +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/qa/fix-publish-script.yml +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/qa/fix-runtime-warnings.yml +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/qa/reasoning_docs/main-agent-integration-20250917-123100.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/qa/reasoning_docs/main-agent-integration-20250917-141518.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/qa/reasoning_docs/smart-git-20250917-122934.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/semantic_index/function_call_graphs.json +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/semantic_index/intent_mappings.json +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/semantic_index/type_relationships.json +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.github/pull_request_template.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.github/scripts/check_file_size.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.github/workflows/lint.yml +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.github/workflows/publish-release-v2.yml +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.gitignore +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.pre-commit-config.yaml +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/LICENSE +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/MANIFEST.in +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/README.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/assets/tunacode_example.png +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/docs/reports/subagent_analysis/code-synthesis-analyzer_report.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/docs/reports/subagent_analysis/codebase-analyzer_report.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/docs/reviews/FAGAN_PLAN.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/docs/reviews/agent_seams.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/docs/reviews/fagan_inspection_defects.json +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/docs/reviews/fagan_inspection_summary.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/docs/reviews/main_agent_refactor_issues.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/docs/reviews/main_agent_refactor_plan.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/README.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/agent/TOOLS_WORKFLOW.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/agent/agent-flow.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/agent/agent-inspo.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/agent/how-tunacode-agent-works.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/agent/main-agent-architecture.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/agent/swepmini-example.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/agent/tunacode-tool-system.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/agent-tools/ReAct-vs-ReWoo.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/agent-tools/tools-architecture.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/configuration/.env.example +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/configuration/config-file-example.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/configuration/config-flow-diagram.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/configuration/config-touch-points.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/configuration/environment-variables.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/configuration/local-models.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/configuration/logging-configuration.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/configuration/tunacode-json-example.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/configuration/tunacode.json.example +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/development/codebase-hygiene.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/development/command-system-architecture.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/development/creating-custom-commands.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/development/performance-optimizations.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/development/prompt-principles.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/development/publishing-workflow.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/development/streaming-text-prefix-fix.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/tests/README.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/tests/characterization-testing.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/tests/mocking-strategies.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/tests/troubleshooting.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/ui/ui-architecture.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/user/commands.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/user/getting-started.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/documentation/user/tools.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/llm-agent-tools/.gitignore +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/llm-agent-tools/README.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/llm-agent-tools/rag_modules/README.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/llm-agent-tools/rag_modules/indexer.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/llm-agent-tools/rag_modules/rag-cli.sh +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/llm-agent-tools/rag_modules/search.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/llm-agent-tools/rag_modules/stats.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/execute/2025-09-12_15-20-00_model_selection_config_persistence_fix.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/execute/2025-09-15_12-30-00_configuration_dashboard_implementation.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/execute/2025-09-15_configuration_dashboard_ux_improvements.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/plan/2025-09-11_13-30-00_agent_loop_architecture_enhancement.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/plan/2025-09-11_14-00-00_enum_state_machine_implementation.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/plan/2025-09-11_14-15-00_automated_cli_tool_testing_framework.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/plan/2025-09-12_12-20-00_global_graceful_error_handling_implementation.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/plan/2025-09-12_15-08-14_model_selection_config_persistence_fix.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/plan/2025-09-15_12-29-04_configuration_dashboard_implementation.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/plan/2025-09-17_15-30-00_main-agent-refactor_plan.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/plan/2025-09-19_11-30-00_tunacode_md_to_agents_md_migration.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/research/2025-01-19_react-shim-analysis.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/research/2025-09-07_21-13-37_agent_loop_architecture.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/research/2025-09-11_13-14-06_agent_loop_enhancement_analysis.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/research/2025-09-12_12-15-48_global_graceful_error_handling_analysis.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/research/2025-09-12_14-54-43_model_configuration_crash_analysis.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/research/2025-09-12_15-06-58_model_selection_config_update_issue.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/research/2025-09-12_ai-agent-tools-architecture.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/research/2025-09-15_12-19-00_configuration_system_and_dashboard.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/research/2025-09-15_13-54-11_first-chunk_character_loss_investigation.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/research/2025-09-16_11-12-45_setup_py_usage_and_location_analysis.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/research/2025-09-19_11-25-00_tunacode_md_to_agents_md_migration.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/research/2025-09-21_models-registry-pydantic-conversion.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/memory-bank/research/main_agent_refactor_plan.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/pytest.ini +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/scripts/check-file-length.sh +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/scripts/download_ripgrep.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/scripts/install_linux.sh +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/scripts/playwright_cache.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/scripts/setup_dev_env.sh +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/scripts/startup_timer.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/scripts/uninstall.sh +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/scripts/utils/vulture_whitelist.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/scripts/verify_dev_env.sh +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/README.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/base.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/implementations/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/implementations/command_reload.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/implementations/conversation.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/implementations/debug.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/implementations/development.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/implementations/model.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/implementations/plan.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/implementations/quickstart.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/implementations/system.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/implementations/template.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/implementations/todo.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/slash/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/slash/command.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/slash/loader.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/slash/processor.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/slash/types.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/slash/validator.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/commands/template_shortcut.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/repl.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/repl_components/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/repl_components/command_parser.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/repl_components/error_recovery.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/repl_components/output_display.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/cli/repl_components/tool_executor.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/configuration/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/configuration/defaults.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/configuration/key_descriptions.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/configuration/models.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/configuration/settings.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/context.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/agents/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/agents/agent_components/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/agents/agent_components/agent_config.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/agents/agent_components/agent_helpers.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/agents/agent_components/json_tool_parser.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/agents/agent_components/message_handler.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/agents/agent_components/node_processor.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/agents/agent_components/response_state.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/agents/agent_components/result_wrapper.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/agents/agent_components/state_transition.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/agents/agent_components/streaming.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/agents/agent_components/task_completion.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/agents/agent_components/tool_buffer.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/agents/agent_components/tool_executor.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/agents/agent_components/truncation_checker.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/agents/main.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/agents/utils.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/background/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/background/manager.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/code_index.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/llm/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/logging/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/logging/config.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/logging/formatters.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/logging/handlers.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/logging/logger.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/setup/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/setup/agent_setup.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/setup/base.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/setup/config_setup.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/setup/config_wizard.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/setup/coordinator.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/setup/environment_setup.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/setup/git_safety_setup.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/setup/template_setup.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/state.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/token_usage/api_response_parser.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/token_usage/cost_calculator.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/token_usage/usage_tracker.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/core/tool_handler.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/exceptions.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/prompts/system.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/prompts/system.md.bak +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/py.typed +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/services/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/services/mcp.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/setup.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/templates/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/templates/loader.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/base.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/bash.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/exit_plan_mode.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/glob.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/grep.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/grep_components/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/grep_components/file_filter.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/grep_components/pattern_matcher.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/grep_components/result_formatter.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/grep_components/search_result.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/list_dir.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/present_plan.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/prompts/bash_prompt.xml +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/prompts/exit_plan_mode_prompt.xml +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/prompts/glob_prompt.xml +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/prompts/grep_prompt.xml +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/prompts/list_dir_prompt.xml +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/prompts/present_plan_prompt.xml +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/prompts/react_prompt.xml +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/prompts/read_file_prompt.xml +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/prompts/run_command_prompt.xml +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/prompts/todo_prompt.xml +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/prompts/update_file_prompt.xml +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/prompts/write_file_prompt.xml +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/react.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/read_file.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/run_command.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/schema_assembler.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/todo.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/update_file.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/write_file.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tools/xml_helper.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tutorial/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tutorial/content.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tutorial/manager.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/tutorial/steps.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/types.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/ui/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/ui/config_dashboard.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/ui/console.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/ui/constants.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/ui/decorators.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/ui/input.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/ui/keybindings.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/ui/lexers.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/ui/logging_compat.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/ui/model_selector.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/ui/output.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/ui/panels.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/ui/prompt_manager.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/ui/tool_descriptions.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/ui/tool_ui.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/ui/utils.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/ui/validators.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/utils/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/utils/api_key_validation.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/utils/bm25.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/utils/config_comparator.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/utils/diff_utils.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/utils/file_utils.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/utils/import_cache.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/utils/json_utils.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/utils/message_utils.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/utils/models_registry.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/utils/retry.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/utils/ripgrep.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/utils/security.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/utils/system.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/utils/text_utils.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/utils/token_counter.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/src/tunacode/utils/user_configuration.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/CHARACTERIZATION_README.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/CHARACTERIZATION_TEST_PLAN.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/CHARACTERIZATION_TEST_PLAN_AGENT_MAIN.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/CHARACTERIZATION_TEST_PLAN_COMMANDS.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/FILE_OPERATIONS_TEST_GUIDE.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/agent/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/agent/conftest.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/agent/test_agent_creation.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/agent/test_json_tool_parsing.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/agent/test_process_node.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/agent/test_process_request.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/agent/test_tool_message_patching.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/background/test_background_edge_cases.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/background/test_cleanup.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/background/test_task_cancellation.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/background/test_task_creation.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/background/test_task_execution.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/code_index/test_cache_management.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/code_index/test_file_scanning.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/code_index/test_index_building.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/code_index/test_search_operations.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/code_index/test_symbol_extraction.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/commands/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/commands/test_init_command.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/commands/test_model_selection_persistence.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/conftest.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/context/README.md +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/context/__init__.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/context/test_context_acceptance.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/context/test_context_integration.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/context/test_context_loading.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/context/test_tunacode_logging.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/repl/test_command_parsing.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/repl/test_error_handling.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/repl/test_escape_key_behavior.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/repl/test_input_handling.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/repl/test_keyboard_interrupts.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/repl/test_multiline_input.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/repl/test_output_display_logic.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/repl/test_repl_initialization.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/repl/test_session_flow.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/services/test_error_recovery.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/services/test_llm_routing.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/services/test_mcp_integration.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/services/test_service_lifecycle.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/state/test_agent_tracking.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/state/test_message_history.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/state/test_permissions.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/state/test_session_management.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/state/test_state_initialization.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/state/test_user_config.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/test_characterization_commands.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/test_characterization_grep.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/test_characterization_main.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/test_characterization_repl.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/ui/test_async_ui.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/ui/test_console_output.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/ui/test_diff_display.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/ui/test_prompt_rendering.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/ui/test_spinner_messages.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/ui/test_tool_confirmations.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/utils/test_expand_file_refs.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/utils/test_file_operations.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/utils/test_git_commands.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/utils/test_token_counting.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/characterization/utils/test_utils_edge_cases.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/integration/test_startup_dashboard.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/test_agent_output_formatting.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/test_command_parser_retry.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/test_completion_detection.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/test_glob_phase3.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/test_json_concatenation_recovery.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/test_json_retry.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/test_logging_config.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/test_onboarding_features.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/test_phase2_type_hints.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/test_plan_mode.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/test_prompt_changes_validation.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/test_prompt_injection.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/test_security.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/test_slash_commands_comprehensive.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/test_slash_commands_functional.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/test_slash_commands_integration.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/test_slash_commands_isolated.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/test_spinner_updates.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/test_tool_batching_retry.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/ui/test_config_dashboard.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/unit/commands/test_model_selection_persistence_new.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/unit/config/test_user_configuration_permissions.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/unit/test_constants_enums.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/unit/test_react_tool.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/unit/utils/test_models_registry.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/unit/utils/test_models_registry_validation.py +0 -0
- {tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/tests/utils/test_config_comparator.py +0 -0
{tunacode_cli-0.0.76.4 → tunacode_cli-0.0.76.6}/.claude/delta_summaries/behavior_changes.json
RENAMED
|
@@ -123,8 +123,7 @@
|
|
|
123
123
|
"Routed CLI REPL agent imports through tunacode.core.agents to expose helper mocks",
|
|
124
124
|
"Extended check_task_completion to accept legacy TUNACODE_TASK_COMPLETE marker"
|
|
125
125
|
]
|
|
126
|
-
}
|
|
127
|
-
,
|
|
126
|
+
},
|
|
128
127
|
{
|
|
129
128
|
"id": "cli-fuzzy-matching-20250922-120500",
|
|
130
129
|
"time": "2025-09-22T12:05:00",
|
|
@@ -137,8 +136,7 @@
|
|
|
137
136
|
"Zero new dependencies; minimal code change localized to CommandRegistry.find_matching_commands",
|
|
138
137
|
"Added tests to characterize prefix behavior and validate fuzzy suggestions for typos"
|
|
139
138
|
]
|
|
140
|
-
}
|
|
141
|
-
,
|
|
139
|
+
},
|
|
142
140
|
{
|
|
143
141
|
"id": "file-ref-completer-dir-browse-20250922-122900",
|
|
144
142
|
"time": "2025-09-22T12:29:00",
|
|
@@ -149,6 +147,56 @@
|
|
|
149
147
|
"FileReferenceCompleter now treats a bare directory prefix without trailing slash as browsing inside that directory (e.g., '@tests' shows files inside tests/).",
|
|
150
148
|
"Behavior and ordering preserved: exact files > fuzzy files > exact dirs > fuzzy dirs; existing case-insensitive exact matching and fuzzy improvements remain."
|
|
151
149
|
]
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"id": "cli-fuzzy-removal-20250924-150600",
|
|
153
|
+
"time": "2025-09-24T15:06:00",
|
|
154
|
+
"branch": "current",
|
|
155
|
+
"base": "current",
|
|
156
|
+
"head": "current",
|
|
157
|
+
"bullets": [
|
|
158
|
+
"Removed difflib-backed fuzzy fallback from CommandRegistry.find_matching_commands; prefix-only matching restored.",
|
|
159
|
+
"Deleted shared fuzzy_utils helper module and characterization test covering fuzzy suggestions.",
|
|
160
|
+
"Simplified FileReferenceCompleter to rely on case-insensitive prefix ordering (files before directories).",
|
|
161
|
+
"Updated documentation and metadata to reflect removal of fuzzy matching implementation."
|
|
162
|
+
]
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"id": "cli-fuzzy-reintegration-20250924-181500",
|
|
166
|
+
"time": "2025-09-24T18:15:00",
|
|
167
|
+
"branch": "current",
|
|
168
|
+
"base": "current",
|
|
169
|
+
"head": "current",
|
|
170
|
+
"bullets": [
|
|
171
|
+
"Wired prompt_toolkit FuzzyWordCompleter into CommandCompleter and FileReferenceCompleter for typo-tolerant suggestions.",
|
|
172
|
+
"Restored CLI fuzzy characterization tests validating command and @file completions.",
|
|
173
|
+
"Adjusted test harness to load real prompt_toolkit modules instead of stubs when available.",
|
|
174
|
+
"Updated changelog, TODO, and research notes to document the prompt toolkit-based fuzzy implementation."
|
|
175
|
+
]
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"id": "merge-fuzzy-touchup-20250925-125158",
|
|
179
|
+
"time": "2025-09-25T12:51:58",
|
|
180
|
+
"branch": "fuzzy-touchup",
|
|
181
|
+
"base": "master",
|
|
182
|
+
"head": "master",
|
|
183
|
+
"bullets": [
|
|
184
|
+
"Merged fuzzy-touchup: refined file reference heuristics and fuzzy fixes",
|
|
185
|
+
"Accepted branch versions for conflicts in registry and completers",
|
|
186
|
+
"Reintroduced CLI fuzzy characterization test"
|
|
187
|
+
]
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"id": "release-0.0.76.5-20250925-125611",
|
|
191
|
+
"time": "2025-09-25T12:56:11",
|
|
192
|
+
"branch": "master",
|
|
193
|
+
"base": "v0.0.76.4",
|
|
194
|
+
"head": "v0.0.76.5",
|
|
195
|
+
"bullets": [
|
|
196
|
+
"Release v0.0.76.5: merged fuzzy-touchup branch",
|
|
197
|
+
"Bumped versions in pyproject and constants",
|
|
198
|
+
"Created GitHub release to trigger publish workflow"
|
|
199
|
+
]
|
|
152
200
|
}
|
|
153
201
|
]
|
|
154
|
-
}
|
|
202
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 2,
|
|
3
|
-
"generated": "2025-
|
|
3
|
+
"generated": "2025-09-24T16:12:08Z",
|
|
4
4
|
"description": "Memory anchors are now embedded in source files as CLAUDE_ANCHOR[key] comments",
|
|
5
5
|
"session_history": [
|
|
6
6
|
{
|
|
@@ -151,14 +151,59 @@
|
|
|
151
151
|
"kind": "line",
|
|
152
152
|
"description": "Renamed release workflow so GitHub Actions executes the Ruff lint/test pipeline without cached definitions and pins Python 3.12 for Hatch stability",
|
|
153
153
|
"status": "active"
|
|
154
|
-
}
|
|
155
|
-
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
156
|
"anchor_key": "model-command-registry-validation-skip",
|
|
157
157
|
"path": "tests/characterization/test_characterization_commands.py",
|
|
158
158
|
"line": 73,
|
|
159
159
|
"kind": "line",
|
|
160
160
|
"description": "Characterization test bypasses registry.load() to avoid Pydantic validation failures from cached API data (e.g., zero limits). Preserves intent to display current model info.",
|
|
161
161
|
"status": "active"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"anchor_key": "86cc1a41",
|
|
165
|
+
"path": "src/tunacode/cli/commands/registry.py",
|
|
166
|
+
"line": 317,
|
|
167
|
+
"kind": "line",
|
|
168
|
+
"description": "Prefix-only command matching after removing fuzzy fallback",
|
|
169
|
+
"status": "active",
|
|
170
|
+
"created": "2025-09-24T15:05:39Z"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"anchor_key": "1f0911c7",
|
|
174
|
+
"path": "src/tunacode/ui/completers.py",
|
|
175
|
+
"line": 176,
|
|
176
|
+
"kind": "line",
|
|
177
|
+
"description": "Prompt Toolkit fuzzy matching consolidates file and directory suggestions",
|
|
178
|
+
"status": "active",
|
|
179
|
+
"created": "2025-09-24T15:29:42Z"
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"key": "0b3f320e",
|
|
183
|
+
"path": "src/tunacode/ui/path_heuristics.py",
|
|
184
|
+
"line": 7,
|
|
185
|
+
"kind": "line",
|
|
186
|
+
"description": "Cross-ecosystem skip directory defaults for FileReferenceCompleter global roots",
|
|
187
|
+
"status": "active",
|
|
188
|
+
"created": "2025-09-24T16:08:12Z"
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"key": "6fd59413",
|
|
192
|
+
"path": "src/tunacode/ui/path_heuristics.py",
|
|
193
|
+
"line": 22,
|
|
194
|
+
"kind": "line",
|
|
195
|
+
"description": "Skip list includes __pycache__ to avoid noisy Python build artifacts in suggestions",
|
|
196
|
+
"status": "active",
|
|
197
|
+
"created": "2025-09-24T16:10:11Z"
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"key": "2bcebd52",
|
|
201
|
+
"path": "src/tunacode/ui/path_heuristics.py",
|
|
202
|
+
"line": 31,
|
|
203
|
+
"kind": "line",
|
|
204
|
+
"description": "Skip heuristic checks every path component to prune nested junk directories such as __pycache__",
|
|
205
|
+
"status": "active",
|
|
206
|
+
"created": "2025-09-24T16:12:08Z"
|
|
162
207
|
}
|
|
163
208
|
]
|
|
164
|
-
}
|
|
209
|
+
}
|
|
@@ -145,16 +145,6 @@
|
|
|
145
145
|
"type": "test",
|
|
146
146
|
"category": "tools",
|
|
147
147
|
"classification": "test"
|
|
148
|
-
},
|
|
149
|
-
"src/tunacode/cli/commands/registry.py": {
|
|
150
|
-
"type": "source",
|
|
151
|
-
"category": "commands",
|
|
152
|
-
"classification": "implementation"
|
|
153
|
-
},
|
|
154
|
-
"tests/characterization/test_cli_fuzzy_matching.py": {
|
|
155
|
-
"type": "test",
|
|
156
|
-
"category": "commands",
|
|
157
|
-
"classification": "test"
|
|
158
148
|
}
|
|
159
149
|
}
|
|
160
150
|
}
|
|
@@ -96,8 +96,6 @@ Docs → model-friendly explanations of purposes & relationships.
|
|
|
96
96
|
Delta Summaries → record API/behavior shifts with reasoning.
|
|
97
97
|
|
|
98
98
|
Memory Anchors → embed UUID-tagged semantic anchors in code.
|
|
99
|
-
you MUST use this tool to drop anchors: python3 knowledge_base/tools/anchor_drop.py <file> <line> <description> to mark important locations
|
|
100
|
-
with UUID-based comments stored in .claude/memory_anchors/anchors.json
|
|
101
99
|
---
|
|
102
100
|
|
|
103
101
|
### Example##\#
|
|
@@ -91,8 +91,6 @@ Rules:
|
|
|
91
91
|
* Docs → model-friendly explanations of purposes & relationships.
|
|
92
92
|
* Delta Summaries → record API/behavior shifts with reasoning.
|
|
93
93
|
* Memory Anchors → embed UUID-tagged semantic anchors in code.
|
|
94
|
-
you MUST use this tool to drop anchors: python3 knowledge_base/tools/anchor_drop.py <file> <line> <description> to mark important locations
|
|
95
|
-
with UUID-based comments stored in .claude/memory_anchors/anchors.json
|
|
96
94
|
* Keeep entries nonverbose and distilled to the core implemenation for the next dev. You will be punished for not following these instructions.
|
|
97
95
|
|
|
98
96
|
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Prompt Toolkit Fuzzy Reintegration
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Fuzzy-first matching resumed on 2025-09-24 using prompt_toolkit's native fuzzy completers. Notes below capture the revived implementation plan and historical context for further refinement.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
## Architecture Analysis
|
|
7
|
+
## Architecture Analysis (current state)
|
|
8
8
|
|
|
9
|
-
- `src/tunacode/ui/completers.py:
|
|
10
|
-
- `src/tunacode/
|
|
11
|
-
- `src/tunacode/utils/models_registry.py`:
|
|
9
|
+
- `src/tunacode/ui/completers.py:23-74`: `CommandCompleter` wraps registry commands with `FuzzyWordCompleter` for near-miss suggestions.
|
|
10
|
+
- `src/tunacode/ui/completers.py:80-164`: `FileReferenceCompleter` blends exact prefix ordering with fuzzy scoring for files then directories.
|
|
11
|
+
- `src/tunacode/utils/models_registry.py`: Continues to expose `SequenceMatcher`-based fuzzy similarity for models.
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
15
|
-
## Minimal Implementation Strategy
|
|
15
|
+
## Minimal Implementation Strategy (archived plan)
|
|
16
16
|
|
|
17
17
|
1. **Create Shared Fuzzy Utility**
|
|
18
18
|
- File: `src/tunacode/utils/fuzzy_utils.py`
|
|
@@ -5,6 +5,18 @@ 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.76.6] - 2025-09-25
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- CI Lint: formatted path_heuristics.py to satisfy ruff format
|
|
12
|
+
- Release: re-tag to include formatting fix
|
|
13
|
+
|
|
14
|
+
## [0.0.76.5] - 2025-09-25
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
- Merge fuzzy-touchup branch: refined fuzzy matching and file reference heuristics
|
|
18
|
+
- Release process: version bump and CI publish workflow used
|
|
19
|
+
|
|
8
20
|
## [0.0.76.4] - 2025-09-25
|
|
9
21
|
|
|
10
22
|
### Added
|
|
@@ -24,20 +36,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
24
36
|
## [Unreleased] - 2025-09-22
|
|
25
37
|
|
|
26
38
|
### Added
|
|
27
|
-
- **Enhanced File Reference Completion** - Fuzzy-first matching for @mentions with smart directory browsing
|
|
28
|
-
- **Fuzzy CLI Command Matching** - CLI suggests closest commands when no exact/prefix match
|
|
29
39
|
- **Models Registry Pydantic Conversion** - Complete conversion to Pydantic BaseModel with validation
|
|
30
40
|
- **RAG Tooling** - SQLite FTS5 index for .claude/ knowledge base search and indexing
|
|
31
41
|
- **Comprehensive Validation Tests** - Added golden baseline tests and validation edge cases
|
|
42
|
+
- **Prompt Toolkit Fuzzy Completers** - Wrapped command and @file completers with native fuzzy matching for typo tolerance
|
|
32
43
|
|
|
33
44
|
### Changed
|
|
34
|
-
- **File Reference Ordering** -
|
|
45
|
+
- **File Reference Ordering** - Re-established fuzzy priority: exact files > fuzzy files > exact dirs > fuzzy dirs
|
|
35
46
|
- **Bare Directory Browsing** - Type `@dir` (without trailing slash) to browse directory contents
|
|
36
47
|
- **Code Style Guidelines** - Updated CLAUDE.md with improved coding patterns and best practices
|
|
37
48
|
- **Models Registry Validation** - Added constraints for non-negative costs and positive limits
|
|
38
49
|
|
|
39
50
|
### Fixed
|
|
40
|
-
- **Unused Import Removal** - Removed unused Iterable import from fuzzy_utils.py
|
|
41
51
|
- **Validation Edge Cases** - Enhanced registry validation for model loading scenarios
|
|
42
52
|
|
|
43
53
|
## [0.0.76.2] - 2025-09-19
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Plan – Prompt Toolkit Fuzzy Completion Reintegration
|
|
2
|
+
**Date:** 2025-09-24
|
|
3
|
+
**Owner:** Claude Coding Agent
|
|
4
|
+
**Status:** Draft
|
|
5
|
+
|
|
6
|
+
**Progress Snapshot (2025-09-24 18:20 UTC)**
|
|
7
|
+
- Red ✅ – Characterization tests recreated and failing baseline captured.
|
|
8
|
+
- Green ✅ – prompt_toolkit fuzzy completions implemented; targeted tests pass via `uv run`.
|
|
9
|
+
- Blue ▢ – Refactor/documentation cleanup and broader regression testing still pending.
|
|
10
|
+
|
|
11
|
+
## 1. Objective & Success Criteria
|
|
12
|
+
- Reintroduce fuzzy matching for command names and @file references using `prompt_toolkit`'s native fuzzy completers (`FuzzyCompleter`, `FuzzyWordCompleter`).
|
|
13
|
+
- Deliver behavior that restores typo tolerance and mid-string matching while preserving existing prefix ordering expectations.
|
|
14
|
+
- Avoid introducing new source modules; limit scope to targeted edits with clear fail-fast semantics and explicit typing.
|
|
15
|
+
|
|
16
|
+
Success is measured by:
|
|
17
|
+
1. A green characterization test capturing fuzzy suggestions for both slash commands and @file references.
|
|
18
|
+
2. Manually verified CLI experience showing fuzzy suggestions ordered ahead of less-relevant results without performance regressions.
|
|
19
|
+
3. Updated documentation and knowledge base entries reflecting the renewed behavior.
|
|
20
|
+
|
|
21
|
+
## 1.1 Existing Prompt Toolkit Usage (proof)
|
|
22
|
+
- `src/tunacode/ui/completers.py:6-16` already imports `prompt_toolkit.completion` classes and integrates them into the CLI completer pipeline.
|
|
23
|
+
- `src/tunacode/ui/prompt_manager.py:6-12` builds the primary prompt session using `prompt_toolkit` components (`PromptSession`, `KeyBindings`, `Completer`).
|
|
24
|
+
- `src/tunacode/ui/model_selector.py:5-21` constructs a rich TUI with `prompt_toolkit` layout primitives, confirming the library underpins current interactive flows.
|
|
25
|
+
- `src/tunacode/cli/repl.py:11-32` depends on `prompt_toolkit.application.run_in_terminal` to coordinate CLI rendering, demonstrating tight integration today.
|
|
26
|
+
|
|
27
|
+
## 2. Implementation Surfaces (no new files)
|
|
28
|
+
| Area | File | Change Intent |
|
|
29
|
+
| --- | --- | --- |
|
|
30
|
+
| Command registry completer wiring | `src/tunacode/cli/commands/registry.py` | Inject `FuzzyCompleter` around existing command lists when building the prompt-toolkit completer, while keeping fallback error handling fail-fast. |
|
|
31
|
+
| REPL command completion bootstrap | `src/tunacode/cli/repl.py` & `src/tunacode/ui/completers.py` | Introduce prompt toolkit fuzzy wrappers for both slash-command and file reference completers; ensure ordering logic stays explicit and hidden state removed. |
|
|
32
|
+
| UI completers | `src/tunacode/ui/completers.py` | Refactor `CommandCompleter`/`FileReferenceCompleter` to delegate fuzzy scoring to `prompt_toolkit`, extracting symbolic constants for cutoffs and match limits. |
|
|
33
|
+
| Metadata & anchors | `.claude/memory_anchors/anchors.json`, `.claude/delta_summaries/behavior_changes.json` | Update anchors to capture new fuzzy integration touch-points; document behavior shift.
|
|
34
|
+
| Documentation | `documentation/changelog/CHANGELOG.md`, `TODO.md`, `memory-bank/research/2025-09-24_fuzzy_logic_implementation_analysis.md` | Refresh changelog/TODO to reflect reintroduction; append research updates.
|
|
35
|
+
|
|
36
|
+
## 3. Test-First Strategy (single failing test)
|
|
37
|
+
- Add characterization test `tests/characterization/test_cli_fuzzy_matching.py::TestPromptToolkitFuzzy::test_fuzzy_suggests_command` that spins up the CLI completer, feeds a typo like `"/hep"`, and asserts the fuzzy candidate list includes `/help` while prefix-only logic would fail.
|
|
38
|
+
- Extend same test module with `test_fuzzy_file_reference_prioritizes_files` to verify `@tst_example.py` suggests `test_example.py` via fuzzy selection, ensuring files precede directories.
|
|
39
|
+
- Run the new test in isolation with `uv run --python .venv/bin/python -m pytest tests/characterization/test_cli_fuzzy_matching.py` expecting RED initially.
|
|
40
|
+
|
|
41
|
+
## 4. Execution Timeline (TDD Red → Green → Blue)
|
|
42
|
+
1. **Red**
|
|
43
|
+
- Recreate `tests/characterization/test_cli_fuzzy_matching.py` with updated prompt-toolkit based expectations.
|
|
44
|
+
- Exercise CLI completer wiring without touching implementation to confirm failure.
|
|
45
|
+
2. **Green**
|
|
46
|
+
- Layer `FuzzyCompleter` around command and file completers; expose configuration constants.
|
|
47
|
+
- Verify green by re-running the isolated test, then full suite via `uv run hatch run test` to confirm no regressions.
|
|
48
|
+
3. **Blue**
|
|
49
|
+
- Refine duplicated logic, extract helper functions where intent is repeated, and update documentation/metadata/anchors.
|
|
50
|
+
|
|
51
|
+
**Cross-ecosystem follow-ups (deferred):**
|
|
52
|
+
- Auto-prioritise roots by inspecting ecosystem markers (e.g., `package.json`, `CMakeLists.txt`) instead of hard-coding Python paths.
|
|
53
|
+
- Extend ignore lists to cover `node_modules`, `build`, `dist`, `target`, and other non-Python artifacts.
|
|
54
|
+
- Consider optional metadata-driven weighting so language-specific extensions (.js/.ts, .cpp/.hpp) bubble up appropriately.
|
|
55
|
+
|
|
56
|
+
## 5. Risks & Mitigations
|
|
57
|
+
- **Performance degradation with large command/file sets** → Use `ThreadedCompleter` if latency is observed; document fallback in TODO.
|
|
58
|
+
- **Inconsistent ordering vs. historical expectations** → Maintain explicit post-processing to enforce file-before-dir rules.*
|
|
59
|
+
- **Prompt Toolkit version drift** → Confirm current version supports `FuzzyCompleter` and capture requirement in research note if upgrade needed.
|
|
60
|
+
|
|
61
|
+
## 6. Open Questions
|
|
62
|
+
1. Should we gate fuzzy behavior behind a user config flag for power users who prefer prefix-only matching?
|
|
63
|
+
2. Do we need to resurrect additional fuzzy tests (e.g., for models registry) or limit surface area to CLI interactions?
|
|
64
|
+
3. Are there accessibility considerations (e.g., highlight styling) that require Rich integration updates?
|
|
65
|
+
|
|
66
|
+
## 7. Next Immediate Action
|
|
67
|
+
- Implement RED step: restore the characterization test, then execute `uv run --python .venv/bin/python -m pytest tests/characterization/test_cli_fuzzy_matching.py` to capture the failing baseline before touching implementation code.
|
|
68
|
+
|
|
69
|
+
*Maintain file-before-directory ordering by combining prompt-toolkit fuzzy scoring with deterministic post-sort tied to symbolic constants.
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
- Clarify Objective: Target a detection + weighting layer that broadens ecosystem coverage while keeping current Python-first flow intact when nothing else matches.
|
|
73
|
+
okay again this is the issue we dont know whart codin g languae they will use
|
|
74
|
+
|
|
75
|
+
- Inventory Current State: Document today’s hardcoded paths/skip lists in src/tunacode/ui/completers.py so we know exactly what must stay as the Python fallback.
|
|
76
|
+
- Introduce Ecosystem Schema: Define a small EcosystemProfile dataclass or typed dict storing markers, roots, skips, extensions, metadata tags; start with just
|
|
77
|
+
Python + JS/TS + C++ to keep diff tiny.
|
|
78
|
+
- Add Detection Utility: Implement _detect_ecosystem() that walks upward a bounded depth, counts marker hits per profile, and returns the best match (ties fall back
|
|
79
|
+
to Python profile). Cache result on the completer instance.
|
|
80
|
+
- Refactor Root/Skip Providers: Swap the current module-level constants for a profile = self._detect_or_default() call that feeds priority roots, skip prefixes, and
|
|
81
|
+
extension sets into the existing traversal logic. Preserve ordering rules from the behavior change log.
|
|
82
|
+
- Lightweight Metadata Hook: When building Completion, append the profile’s metadata hint if defined for the file extension; no UI overhaul required.
|
|
83
|
+
- Optional Config Ingestion: Allow a simple TOML override (e.g., .tunacode-completer.toml) that merges into the selected profile. Keep parsing isolated so it can be
|
|
84
|
+
skipped if file absent.
|
|
85
|
+
- Testing Strategy: Extend characterization tests with tmpdir fixtures for JS and C++ layouts; ensure Python baseline stays green. Cover config override and no-
|
|
86
|
+
marker fallback. Run via hatch run test.
|
|
87
|
+
- Knowledge Base Updates: Plan to record new anchors around detection logic, refresh .claude/semantic_index/function_call_graphs.json, and log behavior/API shifts in
|
|
88
|
+
delta_summaries/behavior_changes.json once code lands.
|
|
89
|
+
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Research – Fuzzy Logic Implementation Analysis
|
|
2
|
+
**Date:** 2025-09-24
|
|
3
|
+
**Owner:** Claude Research Agent
|
|
4
|
+
**Phase:** Research
|
|
5
|
+
|
|
6
|
+
## Goal
|
|
7
|
+
Summarize all *existing knowledge* about fuzzy logic implementation before making changes to support first-class fuzzy matching with @t syntax.
|
|
8
|
+
|
|
9
|
+
## Status Update (2025-09-24)
|
|
10
|
+
- CLI fuzzy fallback and @file fuzzy completion were removed on the safe branch to retire accumulated tech debt. This document now serves as a historical reference for any future reintroduction work.
|
|
11
|
+
- Shared helper `src/tunacode/utils/fuzzy_utils.py` and characterization test `tests/characterization/test_cli_fuzzy_matching.py` were deleted; changelog and metadata record the regression to prefix-only behavior.
|
|
12
|
+
- Prompt toolkit-native fuzzy completions were reintroduced on 2025-09-24, wiring `FuzzyWordCompleter` into `CommandCompleter` and `FileReferenceCompleter` with fresh characterization tests capturing the new behavior.
|
|
13
|
+
|
|
14
|
+
## Additional Search
|
|
15
|
+
- `grep -ri "fuzzy" .claude/` - Found behavior changes and file classifications
|
|
16
|
+
- RAG search revealed CLI fuzzy matching enhancement details
|
|
17
|
+
|
|
18
|
+
Post-removal verification confirmed updated changelog entry (`documentation/changelog/CHANGELOG.md`) and new delta summary (`.claude/delta_summaries/behavior_changes.json`) documenting the rollback.
|
|
19
|
+
|
|
20
|
+
## Findings
|
|
21
|
+
|
|
22
|
+
### Removed CLI/File components (2025-09-24 early session)
|
|
23
|
+
- `src/tunacode/utils/fuzzy_utils.py` → Deleted module that wrapped `difflib.get_close_matches`.
|
|
24
|
+
- `src/tunacode/cli/commands/registry.py` → Fuzzy fallback removed; command matching temporarily reverted to prefix-only with anchor `86cc1a41` marking the change.
|
|
25
|
+
- `src/tunacode/ui/completers.py` → Fuzzy ordering removed; completion relied on case-insensitive prefixes until prompt toolkit reintegration.
|
|
26
|
+
- `tests/characterization/test_cli_fuzzy_matching.py` → Deleted golden coverage for CLI fuzzy suggestions ahead of prompt toolkit rewrite.
|
|
27
|
+
|
|
28
|
+
### Reintroduced surfaces (2025-09-24 late session)
|
|
29
|
+
- `tests/characterization/test_cli_fuzzy_matching.py` → Recreated characterization tests covering prompt toolkit fuzzy suggestions for slash commands and @file references.
|
|
30
|
+
- `src/tunacode/ui/completers.py` → Adopted `FuzzyWordCompleter` for both command and file completions, maintaining explicit ordering guarantees.
|
|
31
|
+
- `tests/conftest.py` → Adjusted to honor real prompt_toolkit modules when installed, ensuring tests exercise genuine fuzzy completers.
|
|
32
|
+
|
|
33
|
+
### Remaining fuzzy usage
|
|
34
|
+
- `src/tunacode/utils/models_registry.py:114-132` → Still employs `SequenceMatcher` for model similarity scoring; untouched by the rollback.
|
|
35
|
+
|
|
36
|
+
## Key Patterns / Solutions Found
|
|
37
|
+
|
|
38
|
+
### Historical CLI/File architecture (removed 2025-09-24)
|
|
39
|
+
- **Two-tier matching**: Exact/prefix matches first, fuzzy fallback second.
|
|
40
|
+
- **Multiple fuzzy algorithms**: `get_close_matches` (CLI) + `SequenceMatcher` (models).
|
|
41
|
+
- **Priority ordering**: exact files > fuzzy files > exact dirs > fuzzy dirs.
|
|
42
|
+
- **Case-insensitive matching** with original case preservation.
|
|
43
|
+
|
|
44
|
+
### Algorithm Details (historical CLI behavior)
|
|
45
|
+
- **difflib.get_close_matches**: Previously used Ratcliff/Obershelp pattern matching for CLI fallbacks
|
|
46
|
+
- **Cutoff threshold**: 0.75 similarity ratio (configurable)
|
|
47
|
+
- **Result limits**: 3 for CLI, 10 for file completions
|
|
48
|
+
- **Zero external dependencies**: Uses only Python standard library
|
|
49
|
+
|
|
50
|
+
### Command System Overview (post-removal)
|
|
51
|
+
- **@file references**: Include file contents (`@filename.ext`)
|
|
52
|
+
- **@dir references**: Directory expansion (`@dirname/` or `@dirname/**`)
|
|
53
|
+
- **Slash commands**: Markdown-based commands in `.claude/commands/`
|
|
54
|
+
- **File completion**: Case-insensitive prefix matching (fuzzy support removed)
|
|
55
|
+
|
|
56
|
+
## Knowledge Gaps
|
|
57
|
+
|
|
58
|
+
### Missing Context for First-Class Fuzzy Implementation
|
|
59
|
+
- **@t syntax specification**: How should @t behave differently from current @file?
|
|
60
|
+
- **Priority algorithm details**: What factors determine file priority beyond name matching?
|
|
61
|
+
- **Performance requirements**: Need for caching/indexing vs real-time fuzzy matching
|
|
62
|
+
- **User experience expectations**: Should @t show matches immediately or require confirmation?
|
|
63
|
+
- **Integration points**: How to replace current prefix-first approach with fuzzy-first
|
|
64
|
+
|
|
65
|
+
### Technical Considerations
|
|
66
|
+
- **Backward compatibility**: Current system preserves prefix behavior - breaking changes needed
|
|
67
|
+
- **File discovery scope**: Current code index vs full filesystem search
|
|
68
|
+
- **Memory/performance tradeoffs**: Caching strategies for frequent @t usage
|
|
69
|
+
- **Configuration options**: User customization of cutoff thresholds and result limits
|
|
70
|
+
|
|
71
|
+
## References
|
|
72
|
+
|
|
73
|
+
### Implementation Files
|
|
74
|
+
- `src/tunacode/cli/commands/registry.py` - Historical fuzzy fallback implementation (removed; see anchor `86cc1a41`).
|
|
75
|
+
- `src/tunacode/ui/completers.py` - Historical fuzzy ordering implementation (removed).
|
|
76
|
+
- `src/tunacode/utils/models_registry.py` - Still provides advanced similarity scoring for models.
|
|
77
|
+
|
|
78
|
+
### Test Files
|
|
79
|
+
- `tests/characterization/test_cli_fuzzy_matching.py` - Historical characterization test (deleted 2025-09-24).
|
|
80
|
+
- `tests/unit/utils/test_models_registry.py` - Model registry fuzzy matching tests (still valid).
|
|
81
|
+
|
|
82
|
+
### Documentation
|
|
83
|
+
- `memory-bank/research/2025-09-22_12-01-06_cli_fuzzy_logic_analysis.md` - Previous fuzzy logic analysis
|
|
84
|
+
- `.claude/delta_summaries/behavior_changes.json` - Historical enhancement, 2025-09-24 removal entry, and prompt toolkit reintegration log
|
|
85
|
+
- `.claude/memory_anchors/anchors.json` - Memory anchors tracking removal (key `86cc1a41`) and new prompt toolkit fuzzy anchors
|
|
86
|
+
|
|
87
|
+
### Configuration
|
|
88
|
+
- `.claude/metadata/file_classifications.json` - Historical classification entries updated with restored CLI fuzzy test coverage
|
|
89
|
+
|
|
90
|
+
## Next Steps Recommendations
|
|
91
|
+
|
|
92
|
+
1. **Define @t specification** (if reintroducing fuzzy behavior): Clarify exact behavior and user experience expectations.
|
|
93
|
+
2. **Design priority algorithm**: Determine ranking factors for file matches, acknowledging the previous fuzzy-first experiment.
|
|
94
|
+
3. **Plan migration strategy**: Outline how to reintroduce fuzzy logic without regressing current prefix guarantees.
|
|
95
|
+
4. **Performance testing**: Evaluate fuzzy matching performance characteristics before any future rollout.
|
|
96
|
+
5. **User feedback integration**: Capture how users would prefer disambiguation when fuzzy suggestions return.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Models Registry Pydantic Conversion Plan
|
|
2
|
+
|
|
3
|
+
## Phase 1: Characterization Tests (Red)
|
|
4
|
+
|
|
5
|
+
1. **Create Golden Baseline Tests**
|
|
6
|
+
- Create `tests/unit/utils/test_models_registry.py`
|
|
7
|
+
- Test current dataclass behavior and field access patterns
|
|
8
|
+
- Test the complex `_parse_data()` method with various inputs
|
|
9
|
+
- Test all method signatures (`format_display()`, `matches_search()`, etc.)
|
|
10
|
+
- Test fallback data loading and parsing
|
|
11
|
+
|
|
12
|
+
2. **Integration Characterization**
|
|
13
|
+
- Document current error handling behavior (silent fallbacks)
|
|
14
|
+
- Test field access patterns used by dependent components
|
|
15
|
+
- Verify current serialization/deserialization behavior
|
|
16
|
+
|
|
17
|
+
## Phase 2: Pydantic Conversion (Green)
|
|
18
|
+
|
|
19
|
+
3. **Convert Data Classes to Pydantic Models**
|
|
20
|
+
- Replace `@dataclass` with `BaseModel` for all 5 classes
|
|
21
|
+
- Add proper validation rules (non-negative costs, positive limits)
|
|
22
|
+
- Preserve all existing methods and properties
|
|
23
|
+
- Ensure backward compatibility for field access
|
|
24
|
+
|
|
25
|
+
4. **Update Parsing Logic**
|
|
26
|
+
- Simplify `_parse_data()` method using Pydantic validation
|
|
27
|
+
- Remove manual type checking code
|
|
28
|
+
- Add proper error handling for validation failures
|
|
29
|
+
- Validate hardcoded fallback data
|
|
30
|
+
|
|
31
|
+
5. **Update Dependencies**
|
|
32
|
+
- Update 4 dependent files (`completers.py`, `input.py`, `model_selector.py`, `model.py`)
|
|
33
|
+
- Ensure all imports and field access patterns work with Pydantic models
|
|
34
|
+
- Test integration points still function correctly
|
|
35
|
+
|
|
36
|
+
## Phase 3: Validation and Testing (Blue)
|
|
37
|
+
|
|
38
|
+
6. **Create Validation Tests**
|
|
39
|
+
- Test Pydantic validation scenarios (invalid costs, negative limits)
|
|
40
|
+
- Test error handling with malformed data
|
|
41
|
+
- Test type coercion behavior
|
|
42
|
+
- Test backward compatibility
|
|
43
|
+
|
|
44
|
+
7. **Manual Confirmation**
|
|
45
|
+
- Run existing test suite to ensure no regressions
|
|
46
|
+
- Test CLI model selection functionality manually
|
|
47
|
+
- Verify UI components still work correctly
|
|
48
|
+
- Check performance impact on model loading
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
### Success Criteria
|
|
53
|
+
|
|
54
|
+
- All existing tests pass
|
|
55
|
+
- New validation tests pass
|
|
56
|
+
- Field access patterns preserved
|
|
57
|
+
- Method signatures unchanged
|
|
58
|
+
- Parsing logic simplified from 66 lines to ~20 lines
|
|
59
|
+
- Proper validation errors raised for invalid data
|
|
60
|
+
- Performance impact < 10%
|
|
@@ -5,7 +5,7 @@ build-backend = "hatchling.build"
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "tunacode-cli"
|
|
7
7
|
|
|
8
|
-
version = "0.0.76.
|
|
8
|
+
version = "0.0.76.6"
|
|
9
9
|
description = "Your agentic CLI developer."
|
|
10
10
|
keywords = ["cli", "agent", "development", "automation"]
|
|
11
11
|
readme = "README.md"
|
|
@@ -170,7 +170,7 @@ typecheck = "mypy src/"
|
|
|
170
170
|
security = "bandit -r src/ -ll"
|
|
171
171
|
|
|
172
172
|
# Version management
|
|
173
|
-
version = "0.0.76.
|
|
173
|
+
version = "0.0.76.6"
|
|
174
174
|
|
|
175
175
|
# Release workflow
|
|
176
176
|
release = [
|
|
@@ -5,7 +5,6 @@ CLAUDE_ANCHOR[command-registry]: Central command registration and execution
|
|
|
5
5
|
|
|
6
6
|
import logging
|
|
7
7
|
from dataclasses import dataclass
|
|
8
|
-
from difflib import get_close_matches
|
|
9
8
|
from pathlib import Path
|
|
10
9
|
from typing import Any, Dict, List, Optional, Type
|
|
11
10
|
|
|
@@ -315,16 +314,12 @@ class CommandRegistry:
|
|
|
315
314
|
self.discover_commands()
|
|
316
315
|
partial = partial_command.lower()
|
|
317
316
|
|
|
318
|
-
#
|
|
317
|
+
# CLAUDE_ANCHOR[key=86cc1a41] Prefix-only command matching after removing fuzzy fallback
|
|
319
318
|
prefix_matches = [cmd for cmd in self._commands.keys() if cmd.startswith(partial)]
|
|
320
319
|
if prefix_matches:
|
|
321
320
|
return prefix_matches
|
|
322
321
|
|
|
323
|
-
|
|
324
|
-
# CLAUDE_ANCHOR[fuzzy-command-matching]: Fuzzy fallback using difflib
|
|
325
|
-
# Keep minimal change: reuse built-ins, avoid new deps.
|
|
326
|
-
fuzzy = get_close_matches(partial, list(self._commands.keys()), n=3, cutoff=0.75)
|
|
327
|
-
return fuzzy
|
|
322
|
+
return []
|
|
328
323
|
|
|
329
324
|
def is_command(self, text: str) -> bool:
|
|
330
325
|
"""Check if text starts with a registered command (supports partial matching)."""
|
|
@@ -19,7 +19,7 @@ from tunacode.ui import console as ui
|
|
|
19
19
|
from tunacode.utils.system import check_for_updates
|
|
20
20
|
|
|
21
21
|
app_settings = ApplicationSettings()
|
|
22
|
-
app = typer.Typer(help="TunaCode - OS AI-powered
|
|
22
|
+
app = typer.Typer(help="TunaCode - OS AI-powered development assistant")
|
|
23
23
|
state_manager = StateManager()
|
|
24
24
|
|
|
25
25
|
|