tunacode-cli 0.0.76.3__tar.gz → 0.0.76.4__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.3 → tunacode_cli-0.0.76.4}/.claude/patterns/coding_patterns.md +1 -1
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.gitignore +1 -1
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/AGENTS.md +28 -2
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/CLAUDE.md +17 -2
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/PKG-INFO +1 -1
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/TODO.md +1 -1
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/changelog/CHANGELOG.md +35 -0
- tunacode_cli-0.0.76.4/llm-agent-tools/.gitignore +15 -0
- tunacode_cli-0.0.76.4/llm-agent-tools/README.md +155 -0
- tunacode_cli-0.0.76.4/llm-agent-tools/knowledge_base/README.md +88 -0
- tunacode_cli-0.0.76.4/llm-agent-tools/knowledge_base/tools/anchor_drop.py +104 -0
- tunacode_cli-0.0.76.4/llm-agent-tools/rag_modules/README.md +155 -0
- tunacode_cli-0.0.76.4/llm-agent-tools/rag_modules/indexer.py +324 -0
- tunacode_cli-0.0.76.4/llm-agent-tools/rag_modules/rag-cli.sh +208 -0
- tunacode_cli-0.0.76.4/llm-agent-tools/rag_modules/search.py +248 -0
- tunacode_cli-0.0.76.4/llm-agent-tools/rag_modules/stats.py +150 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/pyproject.toml +2 -2
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/constants.py +1 -1
- tunacode_cli-0.0.76.4/src/tunacode/py.typed +0 -0
- tunacode_cli-0.0.76.4/src/tunacode/utils/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/README.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/debug_history/2025-09-21-rag-search-hyphen-gotcha.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/debug_history/debug_sessions.json +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/delta_summaries/2025-01-05-baseline.yml +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/delta_summaries/2025-09-21-models_registry-pydantic-conversion.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/delta_summaries/2025-09-21-models_registry-validation-tests.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/delta_summaries/2025-09-21-test-update-model-command-characterization.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/delta_summaries/api_change_logs.json +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/delta_summaries/behavior_changes.json +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/delta_summaries/fix-text-alignment-layout-task3.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/delta_summaries/reasoning_logs.json +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/delta_summaries/task4_ui_formatting_fix.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/delta_summaries/v0.0.53_to_v0.0.54.diff +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/development/always-on-display-implementation.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/development/cli-json-recovery-incident.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/development/directory-caching-optimization.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/development/esc-investigation/ESC_KEY_INVESTIGATION.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/development/esc-investigation/ESC_KEY_STREAMING_ANALYSIS.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/development/hatch-commands.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/development/model-updates-2025.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/development/onboarding-improvements.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/development/openai_tool_calling_evaluation.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/development/phase5-prompt-injection-system.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/development/slash-commands.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/development/uv-hatch-setup.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/development/uv-installer-updates.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/development/version-management.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/docs_model_friendly/component_purpose.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/docs_model_friendly/component_relationships.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/docs_model_friendly/rag_modules_overview.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/kv/github-actions-release-fix.json +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/memory_anchors/anchors.json +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/metadata/components.yml +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/metadata/file_classifications.json +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/metadata/hotspots.txt +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/patterns/canonical_patterns/backward_compatibility_refactor.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/patterns/json_retry_implementation.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/qa/context_logs/latest_session.txt +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/qa/context_logs/main-agent-integration-20250917-123100/commits.txt +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/qa/context_logs/main-agent-integration-20250917-123100/diffstat.txt +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/qa/context_logs/main-agent-integration-20250917-123100/files.json +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/qa/context_logs/main-agent-integration-20250917-123100/hunks.txt +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/qa/context_logs/main-agent-integration-20250917-141518/commits.txt +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/qa/context_logs/main-agent-integration-20250917-141518/diffstat.txt +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/qa/context_logs/main-agent-integration-20250917-141518/files.json +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/qa/context_logs/main-agent-integration-20250917-141518/hunks.txt +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/qa/context_logs/react-tool-session-20250120-000002/summary.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/qa/context_logs/smart-git-20250917-122934/commits.txt +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/qa/context_logs/smart-git-20250917-122934/diffstat.txt +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/qa/context_logs/smart-git-20250917-122934/files.json +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/qa/fix-agent-errors.yml +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/qa/fix-publish-script.yml +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/qa/fix-runtime-warnings.yml +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/qa/reasoning_docs/main-agent-integration-20250917-123100.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/qa/reasoning_docs/main-agent-integration-20250917-141518.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/qa/reasoning_docs/smart-git-20250917-122934.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/semantic_index/function_call_graphs.json +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/semantic_index/intent_mappings.json +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.claude/semantic_index/type_relationships.json +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.github/pull_request_template.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.github/scripts/check_file_size.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.github/workflows/lint.yml +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.github/workflows/publish-release-v2.yml +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/.pre-commit-config.yaml +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/LICENSE +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/MANIFEST.in +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/README.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/assets/tunacode_example.png +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/docs/reports/subagent_analysis/code-synthesis-analyzer_report.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/docs/reports/subagent_analysis/codebase-analyzer_report.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/docs/reviews/FAGAN_PLAN.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/docs/reviews/agent_seams.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/docs/reviews/fagan_inspection_defects.json +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/docs/reviews/fagan_inspection_summary.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/docs/reviews/main_agent_refactor_issues.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/docs/reviews/main_agent_refactor_plan.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/README.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/agent/TOOLS_WORKFLOW.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/agent/agent-flow.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/agent/agent-inspo.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/agent/how-tunacode-agent-works.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/agent/main-agent-architecture.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/agent/swepmini-example.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/agent/tunacode-tool-system.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/agent-tools/ReAct-vs-ReWoo.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/agent-tools/tools-architecture.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/configuration/.env.example +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/configuration/config-file-example.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/configuration/config-flow-diagram.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/configuration/config-touch-points.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/configuration/environment-variables.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/configuration/local-models.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/configuration/logging-configuration.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/configuration/tunacode-json-example.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/configuration/tunacode.json.example +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/development/codebase-hygiene.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/development/command-system-architecture.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/development/creating-custom-commands.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/development/hatch-build-system.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/development/performance-optimizations.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/development/prompt-principles.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/development/publishing-workflow.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/development/streaming-text-prefix-fix.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/tests/README.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/tests/characterization-testing.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/tests/mocking-strategies.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/tests/troubleshooting.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/ui/ui-architecture.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/user/commands.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/user/getting-started.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/documentation/user/tools.md +0 -0
- /tunacode_cli-0.0.76.3/src/__init__.py → /tunacode_cli-0.0.76.4/llm-agent-tools/knowledge_base/README.md:Zone.Identifier +0 -0
- /tunacode_cli-0.0.76.3/src/tunacode/core/__init__.py → /tunacode_cli-0.0.76.4/llm-agent-tools/knowledge_base/tools/anchor_drop.py:Zone.Identifier +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/execute/2025-09-12_15-20-00_model_selection_config_persistence_fix.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/execute/2025-09-15_12-30-00_configuration_dashboard_implementation.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/execute/2025-09-15_configuration_dashboard_ux_improvements.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/plan/2025-09-11_13-30-00_agent_loop_architecture_enhancement.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/plan/2025-09-11_14-00-00_enum_state_machine_implementation.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/plan/2025-09-11_14-15-00_automated_cli_tool_testing_framework.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/plan/2025-09-12_12-20-00_global_graceful_error_handling_implementation.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/plan/2025-09-12_15-08-14_model_selection_config_persistence_fix.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/plan/2025-09-15_12-29-04_configuration_dashboard_implementation.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/plan/2025-09-17_15-30-00_main-agent-refactor_plan.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/plan/2025-09-19_11-30-00_tunacode_md_to_agents_md_migration.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/research/2025-01-19_react-shim-analysis.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/research/2025-09-07_21-13-37_agent_loop_architecture.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/research/2025-09-11_13-14-06_agent_loop_enhancement_analysis.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/research/2025-09-12_12-15-48_global_graceful_error_handling_analysis.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/research/2025-09-12_14-54-43_model_configuration_crash_analysis.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/research/2025-09-12_15-06-58_model_selection_config_update_issue.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/research/2025-09-12_ai-agent-tools-architecture.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/research/2025-09-15_12-19-00_configuration_system_and_dashboard.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/research/2025-09-15_13-54-11_first-chunk_character_loss_investigation.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/research/2025-09-16_11-12-45_setup_py_usage_and_location_analysis.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/research/2025-09-19_11-25-00_tunacode_md_to_agents_md_migration.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/research/2025-09-21_models-registry-pydantic-conversion.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/research/2025-09-22_12-01-06_cli_fuzzy_logic_analysis.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/memory-bank/research/main_agent_refactor_plan.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/pytest.ini +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/scripts/check-file-length.sh +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/scripts/download_ripgrep.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/scripts/install_linux.sh +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/scripts/playwright_cache.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/scripts/setup_dev_env.sh +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/scripts/startup_timer.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/scripts/uninstall.sh +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/scripts/utils/vulture_whitelist.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/scripts/verify_dev_env.sh +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/README.md +0 -0
- {tunacode_cli-0.0.76.3/src/tunacode/core/background → tunacode_cli-0.0.76.4/src}/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/base.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/implementations/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/implementations/command_reload.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/implementations/conversation.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/implementations/debug.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/implementations/development.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/implementations/model.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/implementations/plan.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/implementations/quickstart.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/implementations/system.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/implementations/template.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/implementations/todo.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/registry.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/slash/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/slash/command.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/slash/loader.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/slash/processor.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/slash/types.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/slash/validator.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/commands/template_shortcut.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/main.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/repl.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/repl_components/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/repl_components/command_parser.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/repl_components/error_recovery.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/repl_components/output_display.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/cli/repl_components/tool_executor.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/configuration/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/configuration/defaults.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/configuration/key_descriptions.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/configuration/models.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/configuration/settings.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/context.py +0 -0
- {tunacode_cli-0.0.76.3/src/tunacode/core/llm → tunacode_cli-0.0.76.4/src/tunacode/core}/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/agents/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/agents/agent_components/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/agents/agent_components/agent_config.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/agents/agent_components/agent_helpers.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/agents/agent_components/json_tool_parser.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/agents/agent_components/message_handler.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/agents/agent_components/node_processor.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/agents/agent_components/response_state.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/agents/agent_components/result_wrapper.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/agents/agent_components/state_transition.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/agents/agent_components/streaming.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/agents/agent_components/task_completion.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/agents/agent_components/tool_buffer.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/agents/agent_components/tool_executor.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/agents/agent_components/truncation_checker.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/agents/main.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/agents/utils.py +0 -0
- {tunacode_cli-0.0.76.3/src/tunacode/utils → tunacode_cli-0.0.76.4/src/tunacode/core/background}/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/background/manager.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/code_index.py +0 -0
- /tunacode_cli-0.0.76.3/src/tunacode/py.typed → /tunacode_cli-0.0.76.4/src/tunacode/core/llm/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/logging/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/logging/config.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/logging/formatters.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/logging/handlers.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/logging/logger.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/setup/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/setup/agent_setup.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/setup/base.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/setup/config_setup.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/setup/config_wizard.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/setup/coordinator.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/setup/environment_setup.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/setup/git_safety_setup.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/setup/template_setup.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/state.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/token_usage/api_response_parser.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/token_usage/cost_calculator.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/token_usage/usage_tracker.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/core/tool_handler.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/exceptions.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/prompts/system.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/prompts/system.md.bak +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/services/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/services/mcp.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/setup.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/templates/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/templates/loader.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/base.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/bash.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/exit_plan_mode.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/glob.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/grep.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/grep_components/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/grep_components/file_filter.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/grep_components/pattern_matcher.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/grep_components/result_formatter.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/grep_components/search_result.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/list_dir.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/present_plan.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/prompts/bash_prompt.xml +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/prompts/exit_plan_mode_prompt.xml +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/prompts/glob_prompt.xml +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/prompts/grep_prompt.xml +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/prompts/list_dir_prompt.xml +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/prompts/present_plan_prompt.xml +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/prompts/react_prompt.xml +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/prompts/read_file_prompt.xml +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/prompts/run_command_prompt.xml +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/prompts/todo_prompt.xml +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/prompts/update_file_prompt.xml +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/prompts/write_file_prompt.xml +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/react.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/read_file.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/run_command.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/schema_assembler.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/todo.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/update_file.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/write_file.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tools/xml_helper.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tutorial/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tutorial/content.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tutorial/manager.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/tutorial/steps.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/types.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/ui/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/ui/completers.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/ui/config_dashboard.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/ui/console.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/ui/constants.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/ui/decorators.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/ui/input.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/ui/keybindings.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/ui/lexers.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/ui/logging_compat.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/ui/model_selector.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/ui/output.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/ui/panels.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/ui/prompt_manager.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/ui/tool_descriptions.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/ui/tool_ui.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/ui/utils.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/ui/validators.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/utils/api_key_validation.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/utils/bm25.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/utils/config_comparator.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/utils/diff_utils.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/utils/file_utils.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/utils/fuzzy_utils.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/utils/import_cache.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/utils/json_utils.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/utils/message_utils.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/utils/models_registry.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/utils/retry.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/utils/ripgrep.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/utils/security.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/utils/system.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/utils/text_utils.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/utils/token_counter.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/src/tunacode/utils/user_configuration.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/CHARACTERIZATION_README.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/CHARACTERIZATION_TEST_PLAN.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/CHARACTERIZATION_TEST_PLAN_AGENT_MAIN.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/CHARACTERIZATION_TEST_PLAN_COMMANDS.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/FILE_OPERATIONS_TEST_GUIDE.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/agent/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/agent/conftest.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/agent/test_agent_creation.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/agent/test_json_tool_parsing.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/agent/test_process_node.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/agent/test_process_request.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/agent/test_tool_message_patching.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/background/test_background_edge_cases.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/background/test_cleanup.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/background/test_task_cancellation.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/background/test_task_creation.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/background/test_task_execution.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/code_index/test_cache_management.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/code_index/test_file_scanning.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/code_index/test_index_building.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/code_index/test_search_operations.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/code_index/test_symbol_extraction.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/commands/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/commands/test_init_command.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/commands/test_model_selection_persistence.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/conftest.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/context/README.md +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/context/__init__.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/context/test_context_acceptance.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/context/test_context_integration.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/context/test_context_loading.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/context/test_tunacode_logging.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/repl/test_command_parsing.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/repl/test_error_handling.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/repl/test_escape_key_behavior.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/repl/test_input_handling.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/repl/test_keyboard_interrupts.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/repl/test_multiline_input.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/repl/test_output_display_logic.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/repl/test_repl_initialization.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/repl/test_session_flow.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/services/test_error_recovery.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/services/test_llm_routing.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/services/test_mcp_integration.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/services/test_service_lifecycle.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/state/test_agent_tracking.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/state/test_message_history.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/state/test_permissions.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/state/test_session_management.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/state/test_state_initialization.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/state/test_user_config.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/test_characterization_commands.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/test_characterization_grep.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/test_characterization_main.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/test_characterization_repl.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/test_cli_fuzzy_matching.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/ui/test_async_ui.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/ui/test_console_output.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/ui/test_diff_display.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/ui/test_prompt_rendering.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/ui/test_spinner_messages.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/ui/test_tool_confirmations.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/utils/test_expand_file_refs.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/utils/test_file_operations.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/utils/test_git_commands.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/utils/test_token_counting.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/characterization/utils/test_utils_edge_cases.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/conftest.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/integration/test_startup_dashboard.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/test_agent_output_formatting.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/test_command_parser_retry.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/test_completion_detection.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/test_glob_phase3.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/test_json_concatenation_recovery.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/test_json_retry.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/test_logging_config.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/test_onboarding_features.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/test_phase2_type_hints.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/test_plan_mode.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/test_prompt_changes_validation.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/test_prompt_injection.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/test_security.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/test_slash_commands_comprehensive.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/test_slash_commands_functional.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/test_slash_commands_integration.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/test_slash_commands_isolated.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/test_spinner_updates.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/test_tool_batching_retry.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/ui/test_config_dashboard.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/unit/commands/test_model_selection_persistence_new.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/unit/config/test_user_configuration_permissions.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/unit/test_constants_enums.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/unit/test_react_tool.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/unit/utils/test_models_registry.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/unit/utils/test_models_registry_validation.py +0 -0
- {tunacode_cli-0.0.76.3 → tunacode_cli-0.0.76.4}/tests/utils/test_config_comparator.py +0 -0
|
@@ -9,4 +9,4 @@
|
|
|
9
9
|
7. **Move Declaration & Initialization Together** - Keep a variable's birth and first value adjacent for comprehension & dependency safety
|
|
10
10
|
8. **Explaining Variable** - Extract a sub-expression into a well-named variable to record intent
|
|
11
11
|
9. **Explaining Constant** - Replace magic literals with symbolic constants that broadcast meaning
|
|
12
|
-
10. **Explicit Parameters** - Split a routine so all inputs are passed openly, banishing hidden state or maps
|
|
12
|
+
10. **Explicit Parameters** - Split a routine so all inputs are passed openly, banishing hidden state or maps
|
|
@@ -21,6 +21,16 @@ You MUST comply with the rules below. You will be penalized if you deviate. Answ
|
|
|
21
21
|
* Enforce `ruff check --fix .` before PRs.
|
|
22
22
|
* Use explicit typing. `cast(...)` and `assert ...` are OK.
|
|
23
23
|
* `# type: ignore` only with strong justification.
|
|
24
|
+
* You must flatten nested conditionals by returning early, so pre-conditions are explicit.
|
|
25
|
+
* If it is never executed, remove it. You MUST make sure what we remove has been committed before in case we need to rollback.
|
|
26
|
+
* Normalize symmetries: you must make identical things look identical and different things look different for faster pattern-spotting.
|
|
27
|
+
* You must reorder elements so a developer meets ideas in the order they need them.
|
|
28
|
+
* You must cluster coupled functions/files so related edits sit together.
|
|
29
|
+
* You must keep a variable's birth and first value adjacent for comprehension & dependency safety.
|
|
30
|
+
* Always extract a sub-expression into a well-named variable to record intent.
|
|
31
|
+
* Always replace magic numbers with symbolic constants that broadcast meaning.
|
|
32
|
+
* Never use magic literals; symbolic constants are preferred.
|
|
33
|
+
* ALWAYS split a routine so all inputs are passed openly, banishing hidden state or maps.
|
|
24
34
|
|
|
25
35
|
### Error Handling
|
|
26
36
|
|
|
@@ -86,6 +96,8 @@ Docs → model-friendly explanations of purposes & relationships.
|
|
|
86
96
|
Delta Summaries → record API/behavior shifts with reasoning.
|
|
87
97
|
|
|
88
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
|
|
89
101
|
---
|
|
90
102
|
|
|
91
103
|
### Example##\#
|
|
@@ -108,9 +120,23 @@ in llm-agent-tools/rag_modules/ a tool exist to search the .claude/ directory vi
|
|
|
108
120
|
./rag-cli.sh search "query" # Search across .claude/
|
|
109
121
|
./rag-cli.sh stats # Show index stats
|
|
110
122
|
|
|
111
|
-
|
|
112
|
-
./rag-cli.sh search "query" --category dev --format json --limit 5
|
|
123
|
+
### Filtered / formatted search
|
|
113
124
|
|
|
125
|
+
./rag-cli.sh search "query" --category dev --format json --limit 5
|
|
114
126
|
You MUST call this tool at least once per session to ground context.
|
|
115
127
|
Use it heuristically before answering tasks that require repo knowledge. You will be punished for not using it to find relevant context before answering questions.
|
|
128
|
+
|
|
129
|
+
**Problem**: Search for "fuzzy" in the .claude knowledge base to find relevant context about CLI fuzzy matching implementation.
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# First index the .claude directory
|
|
133
|
+
./rag-cli.sh index --dir .claude
|
|
134
|
+
|
|
135
|
+
# Search for specific content
|
|
136
|
+
./rag-cli.sh search "fuzzy" --format text
|
|
137
|
+
|
|
138
|
+
# Results found:
|
|
139
|
+
# 1. behavior_changes.json - CLI fuzzy matching enhancement details
|
|
140
|
+
# 2. file_classifications.json - Test file classification for fuzzy matching
|
|
141
|
+
```
|
|
116
142
|
---
|
|
@@ -91,7 +91,9 @@ 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
|
-
|
|
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
|
+
* Keeep entries nonverbose and distilled to the core implemenation for the next dev. You will be punished for not following these instructions.
|
|
95
97
|
|
|
96
98
|
|
|
97
99
|
---
|
|
@@ -121,9 +123,22 @@ In llm-agent-tools/rag_modules/ a tool exists to search the .claude/ directory v
|
|
|
121
123
|
|
|
122
124
|
./rag-cli.sh search "query" --category dev --format json --limit 5
|
|
123
125
|
You MUST call this tool at least once per session to ground context.
|
|
124
|
-
If llm-agent-tool dir doesnt exist skip this step
|
|
125
126
|
Use it heuristically before answering tasks that require repo knowledge. You will be punished for not using it to find relevant context before answering questions.
|
|
126
127
|
|
|
128
|
+
**Problem**: Search for "fuzzy" in the .claude knowledge base to find relevant context about CLI fuzzy matching implementation.
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# First index the .claude directory
|
|
132
|
+
./rag-cli.sh index --dir .claude
|
|
133
|
+
|
|
134
|
+
# Search for specific content
|
|
135
|
+
./rag-cli.sh search "fuzzy" --format text
|
|
136
|
+
|
|
137
|
+
# Results found:
|
|
138
|
+
# 1. behavior_changes.json - CLI fuzzy matching enhancement details
|
|
139
|
+
# 2. file_classifications.json - Test file classification for fuzzy matching
|
|
140
|
+
```
|
|
141
|
+
|
|
127
142
|
---
|
|
128
143
|
|
|
129
144
|
## Available Sub-Agents
|
|
@@ -5,6 +5,41 @@ 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.4] - 2025-09-25
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **Fuzzy Matching Integration** - Merged new-fuzzy branch with enhanced CLI and file reference completion
|
|
12
|
+
- **Memory Anchor Tool** - Added UUID-based semantic anchoring system for code documentation
|
|
13
|
+
- **Knowledge Base Structure** - Comprehensive RAG tooling for .claude/ directory search and indexing
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- **File Reference System** - Enhanced @mentions with fuzzy-first matching and smart directory browsing
|
|
17
|
+
- **CLI Command Resolution** - Added fuzzy fallback using difflib.get_close_matches for better UX
|
|
18
|
+
- **Code Quality** - Updated coding patterns and best practices in CLAUDE.md
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
- **Documentation Consistency** - Resolved merge conflicts and updated project instructions
|
|
22
|
+
- **Import Cleanup** - Removed unused imports and improved code organization
|
|
23
|
+
|
|
24
|
+
## [Unreleased] - 2025-09-22
|
|
25
|
+
|
|
26
|
+
### 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
|
+
- **Models Registry Pydantic Conversion** - Complete conversion to Pydantic BaseModel with validation
|
|
30
|
+
- **RAG Tooling** - SQLite FTS5 index for .claude/ knowledge base search and indexing
|
|
31
|
+
- **Comprehensive Validation Tests** - Added golden baseline tests and validation edge cases
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
- **File Reference Ordering** - New priority: exact files > fuzzy files > exact dirs > fuzzy dirs
|
|
35
|
+
- **Bare Directory Browsing** - Type `@dir` (without trailing slash) to browse directory contents
|
|
36
|
+
- **Code Style Guidelines** - Updated CLAUDE.md with improved coding patterns and best practices
|
|
37
|
+
- **Models Registry Validation** - Added constraints for non-negative costs and positive limits
|
|
38
|
+
|
|
39
|
+
### Fixed
|
|
40
|
+
- **Unused Import Removal** - Removed unused Iterable import from fuzzy_utils.py
|
|
41
|
+
- **Validation Edge Cases** - Enhanced registry validation for model loading scenarios
|
|
42
|
+
|
|
8
43
|
## [0.0.76.2] - 2025-09-19
|
|
9
44
|
|
|
10
45
|
### Added
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# RAG Modules
|
|
2
|
+
|
|
3
|
+
Retrieval-Augmented Generation modules for indexing and searching documentation using SQLite FTS5.
|
|
4
|
+
|
|
5
|
+
## Quick Start (CLI)
|
|
6
|
+
|
|
7
|
+
The included `rag-cli.sh` provides a simple interface for using the RAG tools:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Index the default memory-bank directory
|
|
11
|
+
./rag-cli.sh index
|
|
12
|
+
|
|
13
|
+
# Search indexed content
|
|
14
|
+
./rag-cli.sh search "your query here"
|
|
15
|
+
|
|
16
|
+
# View index statistics
|
|
17
|
+
./rag-cli.sh stats
|
|
18
|
+
|
|
19
|
+
# Index a custom directory
|
|
20
|
+
./rag-cli.sh index --dir /path/to/your/docs
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Directory Structure
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
rag_modules/
|
|
27
|
+
├── rag-cli.sh # Main CLI script
|
|
28
|
+
├── rag_knowledge.db # SQLite database (created after first run)
|
|
29
|
+
├── indexer.py # Documentation indexer
|
|
30
|
+
├── search.py # Full-text search interface
|
|
31
|
+
├── stats.py # Index statistics and health monitoring
|
|
32
|
+
├── README.md # This file
|
|
33
|
+
└── default_directory_behavior.md # Details on directory detection
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Customizing Path Pointing
|
|
37
|
+
|
|
38
|
+
The RAG system is flexible and can point to any directory you want to index:
|
|
39
|
+
|
|
40
|
+
### Via CLI (Recommended)
|
|
41
|
+
```bash
|
|
42
|
+
# Index any directory
|
|
43
|
+
./rag-cli.sh index --dir /path/to/your/project/docs
|
|
44
|
+
|
|
45
|
+
# Index multiple directories
|
|
46
|
+
./rag-cli.sh index --dir ./docs ./wiki ./notes
|
|
47
|
+
|
|
48
|
+
# Use a custom database location
|
|
49
|
+
./rag-cli.sh index --dir ./docs --db-path /custom/path/to/my.db
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Via Environment Variables
|
|
53
|
+
```bash
|
|
54
|
+
# Set custom database path
|
|
55
|
+
export RAG_DB_PATH="/custom/location/knowledge.db"
|
|
56
|
+
|
|
57
|
+
# Enable verbose output
|
|
58
|
+
export RAG_VERBOSE=1
|
|
59
|
+
|
|
60
|
+
# Then run commands normally
|
|
61
|
+
./rag-cli.sh index
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Direct Module Usage
|
|
65
|
+
```bash
|
|
66
|
+
# Index specific directories with full control
|
|
67
|
+
python3 indexer.py --directories ./src ./docs ./README.md --db-path ./my_docs.db
|
|
68
|
+
|
|
69
|
+
# Search with specific parameters
|
|
70
|
+
python3 search.py --db-path ./my_docs.db --query "API reference" --category src --format json
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Agent Usage Guide
|
|
74
|
+
|
|
75
|
+
For AI agents and programmatic use:
|
|
76
|
+
|
|
77
|
+
### 1. Index Documentation
|
|
78
|
+
```bash
|
|
79
|
+
# For agent knowledge bases
|
|
80
|
+
./rag-cli.sh index --dir /path/to/agent/knowledge
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 2. Search (JSON output recommended)
|
|
84
|
+
```bash
|
|
85
|
+
# Get search results in JSON format for parsing
|
|
86
|
+
./rag-cli.sh search "implementation details" --format json
|
|
87
|
+
|
|
88
|
+
# Search within specific categories
|
|
89
|
+
./rag-cli.sh search "API methods" --category api --format json
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 3. Check Index Health
|
|
93
|
+
```bash
|
|
94
|
+
# Get statistics in JSON format
|
|
95
|
+
./rag-cli.sh stats --json
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## CLI Reference
|
|
99
|
+
|
|
100
|
+
### Index Command
|
|
101
|
+
```bash
|
|
102
|
+
./rag-cli.sh index [options]
|
|
103
|
+
--full # Full rebuild of index
|
|
104
|
+
--dir DIR # Directory to index (default: ../memory-bank)
|
|
105
|
+
--db PATH # Custom database path
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Search Command
|
|
109
|
+
```bash
|
|
110
|
+
./rag-cli.sh search <query> [options]
|
|
111
|
+
--category CAT # Search within specific category
|
|
112
|
+
--format FMT # Output: json|text|markdown (default: json)
|
|
113
|
+
--limit N # Maximum results (default: 10)
|
|
114
|
+
--db PATH # Custom database path
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Stats Command
|
|
118
|
+
```bash
|
|
119
|
+
./rag-cli.sh stats [options]
|
|
120
|
+
--json # Output in JSON format
|
|
121
|
+
--db PATH # Custom database path
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Default Directory Behavior
|
|
125
|
+
|
|
126
|
+
When no directories are specified, the system automatically searches for documentation:
|
|
127
|
+
1. First looks in the current directory for `docs/` or `documentation/` folders
|
|
128
|
+
2. If not found, checks the parent directory for the same folders
|
|
129
|
+
|
|
130
|
+
## Supported File Types
|
|
131
|
+
|
|
132
|
+
- Markdown files (.md, .markdown)
|
|
133
|
+
- Text files (.txt)
|
|
134
|
+
|
|
135
|
+
## Output Formats
|
|
136
|
+
|
|
137
|
+
- **JSON**: Compact JSONL format for agent consumption
|
|
138
|
+
- **Text**: Human-readable with highlighted search terms
|
|
139
|
+
- **Markdown**: Formatted output with proper formatting
|
|
140
|
+
|
|
141
|
+
## Examples
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
# Index project documentation
|
|
145
|
+
./rag-cli.sh index --dir ./docs
|
|
146
|
+
|
|
147
|
+
# Search for specific patterns
|
|
148
|
+
./rag-cli.sh search "authentication flow" --category guide --format markdown
|
|
149
|
+
|
|
150
|
+
# Check what's indexed
|
|
151
|
+
./rag-cli.sh stats
|
|
152
|
+
|
|
153
|
+
# Full reindex when files change significantly
|
|
154
|
+
./rag-cli.sh index --full --dir ./docs
|
|
155
|
+
```
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Knowledge Base Tools
|
|
2
|
+
|
|
3
|
+
A suite of command-line tools designed for code agents and human-in-the-loop workflows to Create, Read, Update, and Delete (CRUD) knowledge base anchors in code repositories.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
These tools help maintain persistent memory anchors within codebases, enabling:
|
|
8
|
+
- Code agents to remember important context across sessions
|
|
9
|
+
- Human developers to mark and annotate significant code locations
|
|
10
|
+
- Collaborative annotation of code with contextual information
|
|
11
|
+
- Persistent knowledge storage that survives code changes
|
|
12
|
+
|
|
13
|
+
## Tools
|
|
14
|
+
|
|
15
|
+
### anchor_drop.py
|
|
16
|
+
|
|
17
|
+
The first tool in the suite. Drops memory anchors at specific locations in code files.
|
|
18
|
+
|
|
19
|
+
**Features:**
|
|
20
|
+
- Inserts `CLAUDE_ANCHOR[key=UUID]` comments in code
|
|
21
|
+
- Supports multiple programming languages with appropriate comment syntax
|
|
22
|
+
- Maintains anchor metadata in `.claude/memory_anchors/anchors.json`
|
|
23
|
+
- Generates unique UUID keys for each anchor
|
|
24
|
+
|
|
25
|
+
**Usage:**
|
|
26
|
+
```bash
|
|
27
|
+
python3 anchor_drop.py <file_path> <line_number> <description> [kind]
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**Examples:**
|
|
31
|
+
```bash
|
|
32
|
+
# Drop an anchor at line 42 in main.py
|
|
33
|
+
python3 anchor_drop.py main.py 42 "Critical authentication logic"
|
|
34
|
+
|
|
35
|
+
# Drop an anchor with specific kind
|
|
36
|
+
python3 anchor_drop.py utils.py 15 "Helper function" "function"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Supported Languages:**
|
|
40
|
+
- Python (.py) - `#` comments
|
|
41
|
+
- JavaScript (.js) - `//` comments
|
|
42
|
+
- TypeScript (.ts) - `//` comments
|
|
43
|
+
- Go (.go) - `//` comments
|
|
44
|
+
- C/C++ (.c, .cpp) - `//` comments
|
|
45
|
+
- Java (.java) - `//` comments
|
|
46
|
+
- Rust (.rs) - `//` comments
|
|
47
|
+
- Zig (.zig) - `//` comments
|
|
48
|
+
- SQL (.sql) - `--` comments
|
|
49
|
+
- HTML (.html, .htm) - `<!-- -->` comments
|
|
50
|
+
|
|
51
|
+
## Anchor Data Structure
|
|
52
|
+
|
|
53
|
+
Anchors are stored in `.claude/memory_anchors/anchors.json` with the following structure:
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"version": 1,
|
|
58
|
+
"generated": "2025-09-23T11:35:02Z",
|
|
59
|
+
"anchors": [
|
|
60
|
+
{
|
|
61
|
+
"key": "affbd046",
|
|
62
|
+
"path": "test_file.py",
|
|
63
|
+
"line": 12,
|
|
64
|
+
"kind": "line",
|
|
65
|
+
"description": "Important calculation function",
|
|
66
|
+
"status": "active",
|
|
67
|
+
"created": "2025-09-23T11:35:00Z"
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Use Cases
|
|
74
|
+
|
|
75
|
+
1. **Code Agent Memory**: Allow agents to remember important code locations and context
|
|
76
|
+
2. **Code Reviews**: Mark sections needing attention or explanation
|
|
77
|
+
3. **Documentation**: Embed documentation directly in code locations
|
|
78
|
+
4. **Debugging**: Anchor problematic code sections with notes
|
|
79
|
+
5. **Learning**: Annotate code examples with explanations
|
|
80
|
+
|
|
81
|
+
## Future Tools
|
|
82
|
+
|
|
83
|
+
Planned additions to the tool suite:
|
|
84
|
+
- `anchor_list.py` - List all anchors in the repository
|
|
85
|
+
- `anchor_update.py` - Update anchor descriptions and metadata
|
|
86
|
+
- `anchor_delete.py` - Remove anchors from code and registry
|
|
87
|
+
- `anchor_search.py` - Search anchors by description or metadata
|
|
88
|
+
- `anchor_export.py` - Export anchors in various formats
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Drop a memory anchor:
|
|
4
|
+
- Inserts a CLAUDE_ANCHOR comment in the code with UUID key
|
|
5
|
+
- Appends entry in .claude/memory_anchors/anchors.json
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import json
|
|
9
|
+
import pathlib
|
|
10
|
+
import time
|
|
11
|
+
import uuid
|
|
12
|
+
|
|
13
|
+
LANG_PREFIX = {
|
|
14
|
+
".py": "#",
|
|
15
|
+
".js": "//",
|
|
16
|
+
".ts": "//",
|
|
17
|
+
".go": "//",
|
|
18
|
+
".c": "//",
|
|
19
|
+
".cpp": "//",
|
|
20
|
+
".java": "//",
|
|
21
|
+
".rs": "//",
|
|
22
|
+
".zig": "//",
|
|
23
|
+
".sql": "--",
|
|
24
|
+
".html": "<!--",
|
|
25
|
+
".htm": "<!--",
|
|
26
|
+
}
|
|
27
|
+
LANG_SUFFIX = {".html": " -->", ".htm": " -->"}
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def drop_anchor(file_path, line_num, desc, kind="line"):
|
|
31
|
+
root = pathlib.Path(".claude/memory_anchors")
|
|
32
|
+
root.mkdir(parents=True, exist_ok=True)
|
|
33
|
+
anchors_file = root / "anchors.json"
|
|
34
|
+
|
|
35
|
+
# Load or init template
|
|
36
|
+
data = {
|
|
37
|
+
"version": 1,
|
|
38
|
+
"generated": time.strftime("%Y-%m-%dT%H:%M:%SZ"),
|
|
39
|
+
"anchors": [],
|
|
40
|
+
}
|
|
41
|
+
if anchors_file.exists():
|
|
42
|
+
with open(anchors_file, "r") as f:
|
|
43
|
+
try:
|
|
44
|
+
data = json.load(f)
|
|
45
|
+
except json.JSONDecodeError:
|
|
46
|
+
print("Invalid anchors.json; reinitializing.")
|
|
47
|
+
|
|
48
|
+
# Generate key
|
|
49
|
+
key = str(uuid.uuid4())[:8]
|
|
50
|
+
|
|
51
|
+
# New entry
|
|
52
|
+
entry = {
|
|
53
|
+
"key": key,
|
|
54
|
+
"path": file_path,
|
|
55
|
+
"line": line_num,
|
|
56
|
+
"kind": kind,
|
|
57
|
+
"description": desc,
|
|
58
|
+
"status": "active",
|
|
59
|
+
"created": time.strftime("%Y-%m-%dT%H:%M:%SZ"),
|
|
60
|
+
}
|
|
61
|
+
data["anchors"].append(entry)
|
|
62
|
+
data["generated"] = time.strftime("%Y-%m-%dT%H:%M:%SZ")
|
|
63
|
+
|
|
64
|
+
# Insert comment
|
|
65
|
+
p = pathlib.Path(file_path)
|
|
66
|
+
if not p.exists():
|
|
67
|
+
print(f"File {file_path} not found.")
|
|
68
|
+
return
|
|
69
|
+
|
|
70
|
+
with open(p, "r") as f:
|
|
71
|
+
text = f.readlines()
|
|
72
|
+
|
|
73
|
+
if line_num < 1 or line_num > len(text) + 1:
|
|
74
|
+
print(f"Invalid line {line_num} for file with {len(text)} lines.")
|
|
75
|
+
return
|
|
76
|
+
|
|
77
|
+
ext = p.suffix.lower()
|
|
78
|
+
pre = LANG_PREFIX.get(ext, "//")
|
|
79
|
+
post = LANG_SUFFIX.get(ext, "")
|
|
80
|
+
comment = f"{pre} CLAUDE_ANCHOR[key={key}] {desc}{post}\n"
|
|
81
|
+
text.insert(line_num - 1, comment)
|
|
82
|
+
|
|
83
|
+
with open(p, "w") as f:
|
|
84
|
+
f.writelines(text)
|
|
85
|
+
|
|
86
|
+
# Write JSON
|
|
87
|
+
with open(anchors_file, "w") as f:
|
|
88
|
+
json.dump(data, f, indent=2)
|
|
89
|
+
|
|
90
|
+
print(f"Anchor {key} dropped at {file_path}:{line_num}")
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
if __name__ == "__main__":
|
|
94
|
+
import sys
|
|
95
|
+
|
|
96
|
+
if len(sys.argv) < 4:
|
|
97
|
+
print("Usage: python anchor_drop.py <file> <line> <desc> [kind]")
|
|
98
|
+
sys.exit(1)
|
|
99
|
+
|
|
100
|
+
file_path = sys.argv[1]
|
|
101
|
+
line_num = int(sys.argv[2])
|
|
102
|
+
desc = sys.argv[3]
|
|
103
|
+
kind = sys.argv[4] if len(sys.argv) > 4 else "line"
|
|
104
|
+
drop_anchor(file_path, line_num, desc, kind)
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# RAG Modules
|
|
2
|
+
|
|
3
|
+
Retrieval-Augmented Generation modules for indexing and searching documentation using SQLite FTS5.
|
|
4
|
+
|
|
5
|
+
## Quick Start (CLI)
|
|
6
|
+
|
|
7
|
+
The included `rag-cli.sh` provides a simple interface for using the RAG tools:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Index the default memory-bank directory
|
|
11
|
+
./rag-cli.sh index
|
|
12
|
+
|
|
13
|
+
# Search indexed content
|
|
14
|
+
./rag-cli.sh search "your query here"
|
|
15
|
+
|
|
16
|
+
# View index statistics
|
|
17
|
+
./rag-cli.sh stats
|
|
18
|
+
|
|
19
|
+
# Index a custom directory
|
|
20
|
+
./rag-cli.sh index --dir /path/to/your/docs
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Directory Structure
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
rag_modules/
|
|
27
|
+
├── rag-cli.sh # Main CLI script
|
|
28
|
+
├── rag_knowledge.db # SQLite database (created after first run)
|
|
29
|
+
├── indexer.py # Documentation indexer
|
|
30
|
+
├── search.py # Full-text search interface
|
|
31
|
+
├── stats.py # Index statistics and health monitoring
|
|
32
|
+
├── README.md # This file
|
|
33
|
+
└── default_directory_behavior.md # Details on directory detection
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Customizing Path Pointing
|
|
37
|
+
|
|
38
|
+
The RAG system is flexible and can point to any directory you want to index:
|
|
39
|
+
|
|
40
|
+
### Via CLI (Recommended)
|
|
41
|
+
```bash
|
|
42
|
+
# Index any directory
|
|
43
|
+
./rag-cli.sh index --dir /path/to/your/project/docs
|
|
44
|
+
|
|
45
|
+
# Index multiple directories
|
|
46
|
+
./rag-cli.sh index --dir ./docs ./wiki ./notes
|
|
47
|
+
|
|
48
|
+
# Use a custom database location
|
|
49
|
+
./rag-cli.sh index --dir ./docs --db-path /custom/path/to/my.db
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Via Environment Variables
|
|
53
|
+
```bash
|
|
54
|
+
# Set custom database path
|
|
55
|
+
export RAG_DB_PATH="/custom/location/knowledge.db"
|
|
56
|
+
|
|
57
|
+
# Enable verbose output
|
|
58
|
+
export RAG_VERBOSE=1
|
|
59
|
+
|
|
60
|
+
# Then run commands normally
|
|
61
|
+
./rag-cli.sh index
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Direct Module Usage
|
|
65
|
+
```bash
|
|
66
|
+
# Index specific directories with full control
|
|
67
|
+
python3 indexer.py --directories ./src ./docs ./README.md --db-path ./my_docs.db
|
|
68
|
+
|
|
69
|
+
# Search with specific parameters
|
|
70
|
+
python3 search.py --db-path ./my_docs.db --query "API reference" --category src --format json
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Agent Usage Guide
|
|
74
|
+
|
|
75
|
+
For AI agents and programmatic use:
|
|
76
|
+
|
|
77
|
+
### 1. Index Documentation
|
|
78
|
+
```bash
|
|
79
|
+
# For agent knowledge bases
|
|
80
|
+
./rag-cli.sh index --dir /path/to/agent/knowledge
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 2. Search (JSON output recommended)
|
|
84
|
+
```bash
|
|
85
|
+
# Get search results in JSON format for parsing
|
|
86
|
+
./rag-cli.sh search "implementation details" --format json
|
|
87
|
+
|
|
88
|
+
# Search within specific categories
|
|
89
|
+
./rag-cli.sh search "API methods" --category api --format json
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 3. Check Index Health
|
|
93
|
+
```bash
|
|
94
|
+
# Get statistics in JSON format
|
|
95
|
+
./rag-cli.sh stats --json
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## CLI Reference
|
|
99
|
+
|
|
100
|
+
### Index Command
|
|
101
|
+
```bash
|
|
102
|
+
./rag-cli.sh index [options]
|
|
103
|
+
--full # Full rebuild of index
|
|
104
|
+
--dir DIR # Directory to index (default: ../memory-bank)
|
|
105
|
+
--db PATH # Custom database path
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Search Command
|
|
109
|
+
```bash
|
|
110
|
+
./rag-cli.sh search <query> [options]
|
|
111
|
+
--category CAT # Search within specific category
|
|
112
|
+
--format FMT # Output: json|text|markdown (default: json)
|
|
113
|
+
--limit N # Maximum results (default: 10)
|
|
114
|
+
--db PATH # Custom database path
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Stats Command
|
|
118
|
+
```bash
|
|
119
|
+
./rag-cli.sh stats [options]
|
|
120
|
+
--json # Output in JSON format
|
|
121
|
+
--db PATH # Custom database path
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Default Directory Behavior
|
|
125
|
+
|
|
126
|
+
When no directories are specified, the system automatically searches for documentation:
|
|
127
|
+
1. First looks in the current directory for `docs/` or `documentation/` folders
|
|
128
|
+
2. If not found, checks the parent directory for the same folders
|
|
129
|
+
|
|
130
|
+
## Supported File Types
|
|
131
|
+
|
|
132
|
+
- Markdown files (.md, .markdown)
|
|
133
|
+
- Text files (.txt)
|
|
134
|
+
|
|
135
|
+
## Output Formats
|
|
136
|
+
|
|
137
|
+
- **JSON**: Compact JSONL format for agent consumption
|
|
138
|
+
- **Text**: Human-readable with highlighted search terms
|
|
139
|
+
- **Markdown**: Formatted output with proper formatting
|
|
140
|
+
|
|
141
|
+
## Examples
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
# Index project documentation
|
|
145
|
+
./rag-cli.sh index --dir ./docs
|
|
146
|
+
|
|
147
|
+
# Search for specific patterns
|
|
148
|
+
./rag-cli.sh search "authentication flow" --category guide --format markdown
|
|
149
|
+
|
|
150
|
+
# Check what's indexed
|
|
151
|
+
./rag-cli.sh stats
|
|
152
|
+
|
|
153
|
+
# Full reindex when files change significantly
|
|
154
|
+
./rag-cli.sh index --full --dir ./docs
|
|
155
|
+
```
|