This is page 43 of 47. Use http://codebase.md/doobidoo/mcp-memory-service?lines=true&page={x} to view the full context.
# Directory Structure
```
├── .claude
│ ├── agents
│ │ ├── amp-bridge.md
│ │ ├── amp-pr-automator.md
│ │ ├── code-quality-guard.md
│ │ ├── gemini-pr-automator.md
│ │ └── github-release-manager.md
│ ├── settings.local.json.backup
│ └── settings.local.json.local
├── .commit-message
├── .dockerignore
├── .env.example
├── .env.sqlite.backup
├── .envnn#
├── .gitattributes
├── .github
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE
│ │ ├── bug_report.yml
│ │ ├── config.yml
│ │ ├── feature_request.yml
│ │ └── performance_issue.yml
│ ├── pull_request_template.md
│ └── workflows
│ ├── bridge-tests.yml
│ ├── CACHE_FIX.md
│ ├── claude-code-review.yml
│ ├── claude.yml
│ ├── cleanup-images.yml.disabled
│ ├── dev-setup-validation.yml
│ ├── docker-publish.yml
│ ├── LATEST_FIXES.md
│ ├── main-optimized.yml.disabled
│ ├── main.yml
│ ├── publish-and-test.yml
│ ├── README_OPTIMIZATION.md
│ ├── release-tag.yml.disabled
│ ├── release.yml
│ ├── roadmap-review-reminder.yml
│ ├── SECRET_CONDITIONAL_FIX.md
│ └── WORKFLOW_FIXES.md
├── .gitignore
├── .mcp.json.backup
├── .mcp.json.template
├── .pyscn
│ ├── .gitignore
│ └── reports
│ └── analyze_20251123_214224.html
├── AGENTS.md
├── archive
│ ├── deployment
│ │ ├── deploy_fastmcp_fixed.sh
│ │ ├── deploy_http_with_mcp.sh
│ │ └── deploy_mcp_v4.sh
│ ├── deployment-configs
│ │ ├── empty_config.yml
│ │ └── smithery.yaml
│ ├── development
│ │ └── test_fastmcp.py
│ ├── docs-removed-2025-08-23
│ │ ├── authentication.md
│ │ ├── claude_integration.md
│ │ ├── claude-code-compatibility.md
│ │ ├── claude-code-integration.md
│ │ ├── claude-code-quickstart.md
│ │ ├── claude-desktop-setup.md
│ │ ├── complete-setup-guide.md
│ │ ├── database-synchronization.md
│ │ ├── development
│ │ │ ├── autonomous-memory-consolidation.md
│ │ │ ├── CLEANUP_PLAN.md
│ │ │ ├── CLEANUP_README.md
│ │ │ ├── CLEANUP_SUMMARY.md
│ │ │ ├── dream-inspired-memory-consolidation.md
│ │ │ ├── hybrid-slm-memory-consolidation.md
│ │ │ ├── mcp-milestone.md
│ │ │ ├── multi-client-architecture.md
│ │ │ ├── test-results.md
│ │ │ └── TIMESTAMP_FIX_SUMMARY.md
│ │ ├── distributed-sync.md
│ │ ├── invocation_guide.md
│ │ ├── macos-intel.md
│ │ ├── master-guide.md
│ │ ├── mcp-client-configuration.md
│ │ ├── multi-client-server.md
│ │ ├── service-installation.md
│ │ ├── sessions
│ │ │ └── MCP_ENHANCEMENT_SESSION_MEMORY_v4.1.0.md
│ │ ├── UBUNTU_SETUP.md
│ │ ├── ubuntu.md
│ │ ├── windows-setup.md
│ │ └── windows.md
│ ├── docs-root-cleanup-2025-08-23
│ │ ├── AWESOME_LIST_SUBMISSION.md
│ │ ├── CLOUDFLARE_IMPLEMENTATION.md
│ │ ├── DOCUMENTATION_ANALYSIS.md
│ │ ├── DOCUMENTATION_CLEANUP_PLAN.md
│ │ ├── DOCUMENTATION_CONSOLIDATION_COMPLETE.md
│ │ ├── LITESTREAM_SETUP_GUIDE.md
│ │ ├── lm_studio_system_prompt.md
│ │ ├── PYTORCH_DOWNLOAD_FIX.md
│ │ └── README-ORIGINAL-BACKUP.md
│ ├── investigations
│ │ └── MACOS_HOOKS_INVESTIGATION.md
│ ├── litestream-configs-v6.3.0
│ │ ├── install_service.sh
│ │ ├── litestream_master_config_fixed.yml
│ │ ├── litestream_master_config.yml
│ │ ├── litestream_replica_config_fixed.yml
│ │ ├── litestream_replica_config.yml
│ │ ├── litestream_replica_simple.yml
│ │ ├── litestream-http.service
│ │ ├── litestream.service
│ │ └── requirements-cloudflare.txt
│ ├── release-notes
│ │ └── release-notes-v7.1.4.md
│ └── setup-development
│ ├── README.md
│ ├── setup_consolidation_mdns.sh
│ ├── STARTUP_SETUP_GUIDE.md
│ └── test_service.sh
├── CHANGELOG-HISTORIC.md
├── CHANGELOG.md
├── claude_commands
│ ├── memory-context.md
│ ├── memory-health.md
│ ├── memory-ingest-dir.md
│ ├── memory-ingest.md
│ ├── memory-recall.md
│ ├── memory-search.md
│ ├── memory-store.md
│ ├── README.md
│ └── session-start.md
├── claude-hooks
│ ├── config.json
│ ├── config.template.json
│ ├── CONFIGURATION.md
│ ├── core
│ │ ├── memory-retrieval.js
│ │ ├── mid-conversation.js
│ │ ├── session-end.js
│ │ ├── session-start.js
│ │ └── topic-change.js
│ ├── debug-pattern-test.js
│ ├── install_claude_hooks_windows.ps1
│ ├── install_hooks.py
│ ├── memory-mode-controller.js
│ ├── MIGRATION.md
│ ├── README-NATURAL-TRIGGERS.md
│ ├── README-phase2.md
│ ├── README.md
│ ├── simple-test.js
│ ├── statusline.sh
│ ├── test-adaptive-weights.js
│ ├── test-dual-protocol-hook.js
│ ├── test-mcp-hook.js
│ ├── test-natural-triggers.js
│ ├── test-recency-scoring.js
│ ├── tests
│ │ ├── integration-test.js
│ │ ├── phase2-integration-test.js
│ │ ├── test-code-execution.js
│ │ ├── test-cross-session.json
│ │ ├── test-session-tracking.json
│ │ └── test-threading.json
│ ├── utilities
│ │ ├── adaptive-pattern-detector.js
│ │ ├── context-formatter.js
│ │ ├── context-shift-detector.js
│ │ ├── conversation-analyzer.js
│ │ ├── dynamic-context-updater.js
│ │ ├── git-analyzer.js
│ │ ├── mcp-client.js
│ │ ├── memory-client.js
│ │ ├── memory-scorer.js
│ │ ├── performance-manager.js
│ │ ├── project-detector.js
│ │ ├── session-tracker.js
│ │ ├── tiered-conversation-monitor.js
│ │ └── version-checker.js
│ └── WINDOWS-SESSIONSTART-BUG.md
├── CLAUDE.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Development-Sprint-November-2025.md
├── docs
│ ├── amp-cli-bridge.md
│ ├── api
│ │ ├── code-execution-interface.md
│ │ ├── memory-metadata-api.md
│ │ ├── PHASE1_IMPLEMENTATION_SUMMARY.md
│ │ ├── PHASE2_IMPLEMENTATION_SUMMARY.md
│ │ ├── PHASE2_REPORT.md
│ │ └── tag-standardization.md
│ ├── architecture
│ │ ├── search-enhancement-spec.md
│ │ └── search-examples.md
│ ├── architecture.md
│ ├── archive
│ │ └── obsolete-workflows
│ │ ├── load_memory_context.md
│ │ └── README.md
│ ├── assets
│ │ └── images
│ │ ├── dashboard-v3.3.0-preview.png
│ │ ├── memory-awareness-hooks-example.png
│ │ ├── project-infographic.svg
│ │ └── README.md
│ ├── CLAUDE_CODE_QUICK_REFERENCE.md
│ ├── cloudflare-setup.md
│ ├── deployment
│ │ ├── docker.md
│ │ ├── dual-service.md
│ │ ├── production-guide.md
│ │ └── systemd-service.md
│ ├── development
│ │ ├── ai-agent-instructions.md
│ │ ├── code-quality
│ │ │ ├── phase-2a-completion.md
│ │ │ ├── phase-2a-handle-get-prompt.md
│ │ │ ├── phase-2a-index.md
│ │ │ ├── phase-2a-install-package.md
│ │ │ └── phase-2b-session-summary.md
│ │ ├── code-quality-workflow.md
│ │ ├── dashboard-workflow.md
│ │ ├── issue-management.md
│ │ ├── pr-review-guide.md
│ │ ├── refactoring-notes.md
│ │ ├── release-checklist.md
│ │ └── todo-tracker.md
│ ├── docker-optimized-build.md
│ ├── document-ingestion.md
│ ├── DOCUMENTATION_AUDIT.md
│ ├── enhancement-roadmap-issue-14.md
│ ├── examples
│ │ ├── analysis-scripts.js
│ │ ├── maintenance-session-example.md
│ │ ├── memory-distribution-chart.jsx
│ │ └── tag-schema.json
│ ├── first-time-setup.md
│ ├── glama-deployment.md
│ ├── guides
│ │ ├── advanced-command-examples.md
│ │ ├── chromadb-migration.md
│ │ ├── commands-vs-mcp-server.md
│ │ ├── mcp-enhancements.md
│ │ ├── mdns-service-discovery.md
│ │ ├── memory-consolidation-guide.md
│ │ ├── migration.md
│ │ ├── scripts.md
│ │ └── STORAGE_BACKENDS.md
│ ├── HOOK_IMPROVEMENTS.md
│ ├── hooks
│ │ └── phase2-code-execution-migration.md
│ ├── http-server-management.md
│ ├── ide-compatability.md
│ ├── IMAGE_RETENTION_POLICY.md
│ ├── images
│ │ └── dashboard-placeholder.md
│ ├── implementation
│ │ ├── health_checks.md
│ │ └── performance.md
│ ├── IMPLEMENTATION_PLAN_HTTP_SSE.md
│ ├── integration
│ │ ├── homebrew.md
│ │ └── multi-client.md
│ ├── integrations
│ │ ├── gemini.md
│ │ ├── groq-bridge.md
│ │ ├── groq-integration-summary.md
│ │ └── groq-model-comparison.md
│ ├── integrations.md
│ ├── legacy
│ │ └── dual-protocol-hooks.md
│ ├── LM_STUDIO_COMPATIBILITY.md
│ ├── maintenance
│ │ └── memory-maintenance.md
│ ├── mastery
│ │ ├── api-reference.md
│ │ ├── architecture-overview.md
│ │ ├── configuration-guide.md
│ │ ├── local-setup-and-run.md
│ │ ├── testing-guide.md
│ │ └── troubleshooting.md
│ ├── migration
│ │ └── code-execution-api-quick-start.md
│ ├── natural-memory-triggers
│ │ ├── cli-reference.md
│ │ ├── installation-guide.md
│ │ └── performance-optimization.md
│ ├── oauth-setup.md
│ ├── pr-graphql-integration.md
│ ├── quick-setup-cloudflare-dual-environment.md
│ ├── README.md
│ ├── remote-configuration-wiki-section.md
│ ├── research
│ │ ├── code-execution-interface-implementation.md
│ │ └── code-execution-interface-summary.md
│ ├── ROADMAP.md
│ ├── sqlite-vec-backend.md
│ ├── statistics
│ │ ├── charts
│ │ │ ├── activity_patterns.png
│ │ │ ├── contributors.png
│ │ │ ├── growth_trajectory.png
│ │ │ ├── monthly_activity.png
│ │ │ └── october_sprint.png
│ │ ├── data
│ │ │ ├── activity_by_day.csv
│ │ │ ├── activity_by_hour.csv
│ │ │ ├── contributors.csv
│ │ │ └── monthly_activity.csv
│ │ ├── generate_charts.py
│ │ └── REPOSITORY_STATISTICS.md
│ ├── technical
│ │ ├── development.md
│ │ ├── memory-migration.md
│ │ ├── migration-log.md
│ │ ├── sqlite-vec-embedding-fixes.md
│ │ └── tag-storage.md
│ ├── testing
│ │ └── regression-tests.md
│ ├── testing-cloudflare-backend.md
│ ├── troubleshooting
│ │ ├── cloudflare-api-token-setup.md
│ │ ├── cloudflare-authentication.md
│ │ ├── general.md
│ │ ├── hooks-quick-reference.md
│ │ ├── pr162-schema-caching-issue.md
│ │ ├── session-end-hooks.md
│ │ └── sync-issues.md
│ └── tutorials
│ ├── advanced-techniques.md
│ ├── data-analysis.md
│ └── demo-session-walkthrough.md
├── examples
│ ├── claude_desktop_config_template.json
│ ├── claude_desktop_config_windows.json
│ ├── claude-desktop-http-config.json
│ ├── config
│ │ └── claude_desktop_config.json
│ ├── http-mcp-bridge.js
│ ├── memory_export_template.json
│ ├── README.md
│ ├── setup
│ │ └── setup_multi_client_complete.py
│ └── start_https_example.sh
├── install_service.py
├── install.py
├── LICENSE
├── NOTICE
├── pyproject.toml
├── pytest.ini
├── README.md
├── run_server.py
├── scripts
│ ├── .claude
│ │ └── settings.local.json
│ ├── archive
│ │ └── check_missing_timestamps.py
│ ├── backup
│ │ ├── backup_memories.py
│ │ ├── backup_sqlite_vec.sh
│ │ ├── export_distributable_memories.sh
│ │ └── restore_memories.py
│ ├── benchmarks
│ │ ├── benchmark_code_execution_api.py
│ │ ├── benchmark_hybrid_sync.py
│ │ └── benchmark_server_caching.py
│ ├── database
│ │ ├── analyze_sqlite_vec_db.py
│ │ ├── check_sqlite_vec_status.py
│ │ ├── db_health_check.py
│ │ └── simple_timestamp_check.py
│ ├── development
│ │ ├── debug_server_initialization.py
│ │ ├── find_orphaned_files.py
│ │ ├── fix_mdns.sh
│ │ ├── fix_sitecustomize.py
│ │ ├── remote_ingest.sh
│ │ ├── setup-git-merge-drivers.sh
│ │ ├── uv-lock-merge.sh
│ │ └── verify_hybrid_sync.py
│ ├── hooks
│ │ └── pre-commit
│ ├── installation
│ │ ├── install_linux_service.py
│ │ ├── install_macos_service.py
│ │ ├── install_uv.py
│ │ ├── install_windows_service.py
│ │ ├── install.py
│ │ ├── setup_backup_cron.sh
│ │ ├── setup_claude_mcp.sh
│ │ └── setup_cloudflare_resources.py
│ ├── linux
│ │ ├── service_status.sh
│ │ ├── start_service.sh
│ │ ├── stop_service.sh
│ │ ├── uninstall_service.sh
│ │ └── view_logs.sh
│ ├── maintenance
│ │ ├── assign_memory_types.py
│ │ ├── check_memory_types.py
│ │ ├── cleanup_corrupted_encoding.py
│ │ ├── cleanup_memories.py
│ │ ├── cleanup_organize.py
│ │ ├── consolidate_memory_types.py
│ │ ├── consolidation_mappings.json
│ │ ├── delete_orphaned_vectors_fixed.py
│ │ ├── fast_cleanup_duplicates_with_tracking.sh
│ │ ├── find_all_duplicates.py
│ │ ├── find_cloudflare_duplicates.py
│ │ ├── find_duplicates.py
│ │ ├── memory-types.md
│ │ ├── README.md
│ │ ├── recover_timestamps_from_cloudflare.py
│ │ ├── regenerate_embeddings.py
│ │ ├── repair_malformed_tags.py
│ │ ├── repair_memories.py
│ │ ├── repair_sqlite_vec_embeddings.py
│ │ ├── repair_zero_embeddings.py
│ │ ├── restore_from_json_export.py
│ │ └── scan_todos.sh
│ ├── migration
│ │ ├── cleanup_mcp_timestamps.py
│ │ ├── legacy
│ │ │ └── migrate_chroma_to_sqlite.py
│ │ ├── mcp-migration.py
│ │ ├── migrate_sqlite_vec_embeddings.py
│ │ ├── migrate_storage.py
│ │ ├── migrate_tags.py
│ │ ├── migrate_timestamps.py
│ │ ├── migrate_to_cloudflare.py
│ │ ├── migrate_to_sqlite_vec.py
│ │ ├── migrate_v5_enhanced.py
│ │ ├── TIMESTAMP_CLEANUP_README.md
│ │ └── verify_mcp_timestamps.py
│ ├── pr
│ │ ├── amp_collect_results.sh
│ │ ├── amp_detect_breaking_changes.sh
│ │ ├── amp_generate_tests.sh
│ │ ├── amp_pr_review.sh
│ │ ├── amp_quality_gate.sh
│ │ ├── amp_suggest_fixes.sh
│ │ ├── auto_review.sh
│ │ ├── detect_breaking_changes.sh
│ │ ├── generate_tests.sh
│ │ ├── lib
│ │ │ └── graphql_helpers.sh
│ │ ├── quality_gate.sh
│ │ ├── resolve_threads.sh
│ │ ├── run_pyscn_analysis.sh
│ │ ├── run_quality_checks.sh
│ │ ├── thread_status.sh
│ │ └── watch_reviews.sh
│ ├── quality
│ │ ├── fix_dead_code_install.sh
│ │ ├── phase1_dead_code_analysis.md
│ │ ├── phase2_complexity_analysis.md
│ │ ├── README_PHASE1.md
│ │ ├── README_PHASE2.md
│ │ ├── track_pyscn_metrics.sh
│ │ └── weekly_quality_review.sh
│ ├── README.md
│ ├── run
│ │ ├── run_mcp_memory.sh
│ │ ├── run-with-uv.sh
│ │ └── start_sqlite_vec.sh
│ ├── run_memory_server.py
│ ├── server
│ │ ├── check_http_server.py
│ │ ├── check_server_health.py
│ │ ├── memory_offline.py
│ │ ├── preload_models.py
│ │ ├── run_http_server.py
│ │ ├── run_memory_server.py
│ │ ├── start_http_server.bat
│ │ └── start_http_server.sh
│ ├── service
│ │ ├── deploy_dual_services.sh
│ │ ├── install_http_service.sh
│ │ ├── mcp-memory-http.service
│ │ ├── mcp-memory.service
│ │ ├── memory_service_manager.sh
│ │ ├── service_control.sh
│ │ ├── service_utils.py
│ │ └── update_service.sh
│ ├── sync
│ │ ├── check_drift.py
│ │ ├── claude_sync_commands.py
│ │ ├── export_memories.py
│ │ ├── import_memories.py
│ │ ├── litestream
│ │ │ ├── apply_local_changes.sh
│ │ │ ├── enhanced_memory_store.sh
│ │ │ ├── init_staging_db.sh
│ │ │ ├── io.litestream.replication.plist
│ │ │ ├── manual_sync.sh
│ │ │ ├── memory_sync.sh
│ │ │ ├── pull_remote_changes.sh
│ │ │ ├── push_to_remote.sh
│ │ │ ├── README.md
│ │ │ ├── resolve_conflicts.sh
│ │ │ ├── setup_local_litestream.sh
│ │ │ ├── setup_remote_litestream.sh
│ │ │ ├── staging_db_init.sql
│ │ │ ├── stash_local_changes.sh
│ │ │ ├── sync_from_remote_noconfig.sh
│ │ │ └── sync_from_remote.sh
│ │ ├── README.md
│ │ ├── safe_cloudflare_update.sh
│ │ ├── sync_memory_backends.py
│ │ └── sync_now.py
│ ├── testing
│ │ ├── run_complete_test.py
│ │ ├── run_memory_test.sh
│ │ ├── simple_test.py
│ │ ├── test_cleanup_logic.py
│ │ ├── test_cloudflare_backend.py
│ │ ├── test_docker_functionality.py
│ │ ├── test_installation.py
│ │ ├── test_mdns.py
│ │ ├── test_memory_api.py
│ │ ├── test_memory_simple.py
│ │ ├── test_migration.py
│ │ ├── test_search_api.py
│ │ ├── test_sqlite_vec_embeddings.py
│ │ ├── test_sse_events.py
│ │ ├── test-connection.py
│ │ └── test-hook.js
│ ├── utils
│ │ ├── claude_commands_utils.py
│ │ ├── generate_personalized_claude_md.sh
│ │ ├── groq
│ │ ├── groq_agent_bridge.py
│ │ ├── list-collections.py
│ │ ├── memory_wrapper_uv.py
│ │ ├── query_memories.py
│ │ ├── smithery_wrapper.py
│ │ ├── test_groq_bridge.sh
│ │ └── uv_wrapper.py
│ └── validation
│ ├── check_dev_setup.py
│ ├── check_documentation_links.py
│ ├── diagnose_backend_config.py
│ ├── validate_configuration_complete.py
│ ├── validate_memories.py
│ ├── validate_migration.py
│ ├── validate_timestamp_integrity.py
│ ├── verify_environment.py
│ ├── verify_pytorch_windows.py
│ └── verify_torch.py
├── SECURITY.md
├── selective_timestamp_recovery.py
├── SPONSORS.md
├── src
│ └── mcp_memory_service
│ ├── __init__.py
│ ├── api
│ │ ├── __init__.py
│ │ ├── client.py
│ │ ├── operations.py
│ │ ├── sync_wrapper.py
│ │ └── types.py
│ ├── backup
│ │ ├── __init__.py
│ │ └── scheduler.py
│ ├── cli
│ │ ├── __init__.py
│ │ ├── ingestion.py
│ │ ├── main.py
│ │ └── utils.py
│ ├── config.py
│ ├── consolidation
│ │ ├── __init__.py
│ │ ├── associations.py
│ │ ├── base.py
│ │ ├── clustering.py
│ │ ├── compression.py
│ │ ├── consolidator.py
│ │ ├── decay.py
│ │ ├── forgetting.py
│ │ ├── health.py
│ │ └── scheduler.py
│ ├── dependency_check.py
│ ├── discovery
│ │ ├── __init__.py
│ │ ├── client.py
│ │ └── mdns_service.py
│ ├── embeddings
│ │ ├── __init__.py
│ │ └── onnx_embeddings.py
│ ├── ingestion
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── chunker.py
│ │ ├── csv_loader.py
│ │ ├── json_loader.py
│ │ ├── pdf_loader.py
│ │ ├── registry.py
│ │ ├── semtools_loader.py
│ │ └── text_loader.py
│ ├── lm_studio_compat.py
│ ├── mcp_server.py
│ ├── models
│ │ ├── __init__.py
│ │ └── memory.py
│ ├── server.py
│ ├── services
│ │ ├── __init__.py
│ │ └── memory_service.py
│ ├── storage
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── cloudflare.py
│ │ ├── factory.py
│ │ ├── http_client.py
│ │ ├── hybrid.py
│ │ └── sqlite_vec.py
│ ├── sync
│ │ ├── __init__.py
│ │ ├── exporter.py
│ │ ├── importer.py
│ │ └── litestream_config.py
│ ├── utils
│ │ ├── __init__.py
│ │ ├── cache_manager.py
│ │ ├── content_splitter.py
│ │ ├── db_utils.py
│ │ ├── debug.py
│ │ ├── document_processing.py
│ │ ├── gpu_detection.py
│ │ ├── hashing.py
│ │ ├── http_server_manager.py
│ │ ├── port_detection.py
│ │ ├── system_detection.py
│ │ └── time_parser.py
│ └── web
│ ├── __init__.py
│ ├── api
│ │ ├── __init__.py
│ │ ├── analytics.py
│ │ ├── backup.py
│ │ ├── consolidation.py
│ │ ├── documents.py
│ │ ├── events.py
│ │ ├── health.py
│ │ ├── manage.py
│ │ ├── mcp.py
│ │ ├── memories.py
│ │ ├── search.py
│ │ └── sync.py
│ ├── app.py
│ ├── dependencies.py
│ ├── oauth
│ │ ├── __init__.py
│ │ ├── authorization.py
│ │ ├── discovery.py
│ │ ├── middleware.py
│ │ ├── models.py
│ │ ├── registration.py
│ │ └── storage.py
│ ├── sse.py
│ └── static
│ ├── app.js
│ ├── index.html
│ ├── README.md
│ ├── sse_test.html
│ └── style.css
├── start_http_debug.bat
├── start_http_server.sh
├── test_document.txt
├── test_version_checker.js
├── tests
│ ├── __init__.py
│ ├── api
│ │ ├── __init__.py
│ │ ├── test_compact_types.py
│ │ └── test_operations.py
│ ├── bridge
│ │ ├── mock_responses.js
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ └── test_http_mcp_bridge.js
│ ├── conftest.py
│ ├── consolidation
│ │ ├── __init__.py
│ │ ├── conftest.py
│ │ ├── test_associations.py
│ │ ├── test_clustering.py
│ │ ├── test_compression.py
│ │ ├── test_consolidator.py
│ │ ├── test_decay.py
│ │ └── test_forgetting.py
│ ├── contracts
│ │ └── api-specification.yml
│ ├── integration
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── test_api_key_fallback.py
│ │ ├── test_api_memories_chronological.py
│ │ ├── test_api_tag_time_search.py
│ │ ├── test_api_with_memory_service.py
│ │ ├── test_bridge_integration.js
│ │ ├── test_cli_interfaces.py
│ │ ├── test_cloudflare_connection.py
│ │ ├── test_concurrent_clients.py
│ │ ├── test_data_serialization_consistency.py
│ │ ├── test_http_server_startup.py
│ │ ├── test_mcp_memory.py
│ │ ├── test_mdns_integration.py
│ │ ├── test_oauth_basic_auth.py
│ │ ├── test_oauth_flow.py
│ │ ├── test_server_handlers.py
│ │ └── test_store_memory.py
│ ├── performance
│ │ ├── test_background_sync.py
│ │ └── test_hybrid_live.py
│ ├── README.md
│ ├── smithery
│ │ └── test_smithery.py
│ ├── sqlite
│ │ └── simple_sqlite_vec_test.py
│ ├── test_client.py
│ ├── test_content_splitting.py
│ ├── test_database.py
│ ├── test_hybrid_cloudflare_limits.py
│ ├── test_hybrid_storage.py
│ ├── test_memory_ops.py
│ ├── test_semantic_search.py
│ ├── test_sqlite_vec_storage.py
│ ├── test_time_parser.py
│ ├── test_timestamp_preservation.py
│ ├── timestamp
│ │ ├── test_hook_vs_manual_storage.py
│ │ ├── test_issue99_final_validation.py
│ │ ├── test_search_retrieval_inconsistency.py
│ │ ├── test_timestamp_issue.py
│ │ └── test_timestamp_simple.py
│ └── unit
│ ├── conftest.py
│ ├── test_cloudflare_storage.py
│ ├── test_csv_loader.py
│ ├── test_fastapi_dependencies.py
│ ├── test_import.py
│ ├── test_json_loader.py
│ ├── test_mdns_simple.py
│ ├── test_mdns.py
│ ├── test_memory_service.py
│ ├── test_memory.py
│ ├── test_semtools_loader.py
│ ├── test_storage_interface_compatibility.py
│ └── test_tag_time_filtering.py
├── tools
│ ├── docker
│ │ ├── DEPRECATED.md
│ │ ├── docker-compose.http.yml
│ │ ├── docker-compose.pythonpath.yml
│ │ ├── docker-compose.standalone.yml
│ │ ├── docker-compose.uv.yml
│ │ ├── docker-compose.yml
│ │ ├── docker-entrypoint-persistent.sh
│ │ ├── docker-entrypoint-unified.sh
│ │ ├── docker-entrypoint.sh
│ │ ├── Dockerfile
│ │ ├── Dockerfile.glama
│ │ ├── Dockerfile.slim
│ │ ├── README.md
│ │ └── test-docker-modes.sh
│ └── README.md
└── uv.lock
```
# Files
--------------------------------------------------------------------------------
/.pyscn/reports/analyze_20251123_214224.html:
--------------------------------------------------------------------------------
```html
1 | <!DOCTYPE html>
2 | <html lang="en">
3 | <head>
4 | <meta charset="UTF-8">
5 | <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 | <title>pyscn Analysis Report</title>
7 | <style>
8 | * { margin: 0; padding: 0; box-sizing: border-box; }
9 | body {
10 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
11 | line-height: 1.6;
12 | color: #333;
13 | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
14 | min-height: 100vh;
15 | }
16 | .container {
17 | max-width: 1200px;
18 | margin: 0 auto;
19 | padding: 20px;
20 | }
21 | .header {
22 | background: white;
23 | border-radius: 10px;
24 | padding: 30px;
25 | margin-bottom: 20px;
26 | box-shadow: 0 10px 30px rgba(0,0,0,0.1);
27 | }
28 | .header h1 {
29 | color: #667eea;
30 | margin-bottom: 10px;
31 | }
32 | .score-badge {
33 | display: inline-block;
34 | padding: 10px 20px;
35 | border-radius: 50px;
36 | font-size: 24px;
37 | font-weight: bold;
38 | margin: 10px 0;
39 | }
40 | .grade-a { background: #4caf50; color: white; }
41 | .grade-b { background: #8bc34a; color: white; }
42 | .grade-c { background: #ff9800; color: white; }
43 | .grade-d { background: #ff5722; color: white; }
44 | .grade-f { background: #f44336; color: white; }
45 |
46 | .tabs {
47 | background: white;
48 | border-radius: 10px;
49 | overflow: hidden;
50 | box-shadow: 0 10px 30px rgba(0,0,0,0.1);
51 | }
52 | .tab-buttons {
53 | display: flex;
54 | background: #f5f5f5;
55 | }
56 | .tab-button {
57 | flex: 1;
58 | padding: 15px;
59 | border: none;
60 | background: transparent;
61 | cursor: pointer;
62 | font-size: 16px;
63 | transition: all 0.3s;
64 | }
65 | .tab-button.active {
66 | background: white;
67 | color: #667eea;
68 | font-weight: bold;
69 | }
70 | .tab-content {
71 | display: none;
72 | padding: 30px;
73 | }
74 | .tab-content.active {
75 | display: block;
76 | }
77 |
78 | .metric-grid {
79 | display: grid;
80 | grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
81 | gap: 20px;
82 | margin: 20px 0;
83 | }
84 | .metric-card {
85 | background: #f8f9fa;
86 | padding: 20px;
87 | border-radius: 8px;
88 | text-align: center;
89 | }
90 | .metric-value {
91 | font-size: 32px;
92 | font-weight: bold;
93 | color: #667eea;
94 | }
95 | .metric-label {
96 | color: #666;
97 | margin-top: 5px;
98 | }
99 |
100 | .table {
101 | width: 100%;
102 | border-collapse: collapse;
103 | margin: 20px 0;
104 | }
105 | .table th, .table td {
106 | padding: 12px;
107 | text-align: left;
108 | border-bottom: 1px solid #ddd;
109 | }
110 | .table th {
111 | background: #f8f9fa;
112 | font-weight: 600;
113 | }
114 |
115 | .risk-low { color: #4caf50; }
116 | .risk-medium { color: #ff9800; }
117 | .risk-high { color: #f44336; }
118 |
119 | .severity-critical { color: #f44336; }
120 | .severity-warning { color: #ff9800; }
121 | .severity-info { color: #2196f3; }
122 |
123 |
124 | .score-bars {
125 | margin: 20px 0;
126 | }
127 | .score-bar-item {
128 | margin-bottom: 24px;
129 | }
130 | .score-bar-header {
131 | display: flex;
132 | justify-content: space-between;
133 | margin-bottom: 6px;
134 | font-size: 14px;
135 | }
136 | .score-label {
137 | font-weight: 600;
138 | color: #333;
139 | }
140 | .score-value {
141 | font-weight: 700;
142 | color: #667eea;
143 | }
144 | .score-bar-container {
145 | width: 100%;
146 | height: 12px;
147 | background: #e0e0e0;
148 | border-radius: 6px;
149 | overflow: hidden;
150 | box-shadow: inset 0 1px 3px rgba(0,0,0,0.1);
151 | }
152 | .score-bar-fill {
153 | height: 100%;
154 | transition: width 0.3s ease;
155 | border-radius: 6px;
156 | }
157 | .score-excellent { background: linear-gradient(90deg, #4caf50, #66bb6a); }
158 | .score-good { background: linear-gradient(90deg, #8bc34a, #9ccc65); }
159 | .score-fair { background: linear-gradient(90deg, #ff9800, #ffa726); }
160 | .score-poor { background: linear-gradient(90deg, #f44336, #ef5350); }
161 | .score-detail {
162 | margin-top: 4px;
163 | font-size: 12px;
164 | color: #666;
165 | }
166 |
167 |
168 | .tab-header-with-score {
169 | display: flex;
170 | align-items: center;
171 | justify-content: space-between;
172 | margin-bottom: 20px;
173 | padding-bottom: 12px;
174 | border-bottom: 2px solid #e0e0e0;
175 | }
176 |
177 | .score-badge-compact {
178 | display: inline-block;
179 | padding: 6px 14px;
180 | border-radius: 16px;
181 | font-size: 13px;
182 | font-weight: 700;
183 | color: white;
184 | white-space: nowrap;
185 | }
186 | .score-badge-compact.score-excellent {
187 | background: linear-gradient(135deg, #4caf50, #66bb6a);
188 | box-shadow: 0 2px 6px rgba(76, 175, 80, 0.4);
189 | }
190 | .score-badge-compact.score-good {
191 | background: linear-gradient(135deg, #8bc34a, #9ccc65);
192 | box-shadow: 0 2px 6px rgba(139, 195, 74, 0.4);
193 | }
194 | .score-badge-compact.score-fair {
195 | background: linear-gradient(135deg, #ff9800, #ffa726);
196 | box-shadow: 0 2px 6px rgba(255, 152, 0, 0.4);
197 | }
198 | .score-badge-compact.score-poor {
199 | background: linear-gradient(135deg, #f44336, #ef5350);
200 | box-shadow: 0 2px 6px rgba(244, 67, 54, 0.4);
201 | }
202 | </style>
203 | </head>
204 | <body>
205 | <div class="container">
206 | <div class="header">
207 | <h1>pyscn Analysis Report</h1>
208 | <p>Generated: 2025-11-23 21:42:24</p>
209 | <div class="score-badge grade-c">
210 | Health Score: 63/100 (Grade: C)
211 | </div>
212 | </div>
213 |
214 | <div class="tabs">
215 | <div class="tab-buttons">
216 | <button class="tab-button active" onclick="showTab('summary', this)">Summary</button>
217 |
218 | <button class="tab-button" onclick="showTab('complexity', this)">Complexity</button>
219 |
220 |
221 | <button class="tab-button" onclick="showTab('deadcode', this)">Dead Code</button>
222 |
223 |
224 | <button class="tab-button" onclick="showTab('clone', this)">Clone Detection</button>
225 |
226 |
227 | <button class="tab-button" onclick="showTab('cbo', this)">Class Coupling</button>
228 |
229 |
230 |
231 | <button class="tab-button" onclick="showTab('sys-deps', this)">Dependencies</button>
232 |
233 |
234 | <button class="tab-button" onclick="showTab('sys-arch', this)">Architecture</button>
235 |
236 |
237 | </div>
238 |
239 | <div id="summary" class="tab-content active">
240 | <h2>Analysis Summary</h2>
241 |
242 | <h3 style="margin-top: 20px; margin-bottom: 16px; color: #2c3e50;">Quality Scores</h3>
243 | <div class="score-bars">
244 |
245 | <div class="score-bar-item">
246 | <div class="score-bar-header">
247 | <span class="score-label">Complexity</span>
248 | <span class="score-value">40/100</span>
249 | </div>
250 | <div class="score-bar-container">
251 | <div class="score-bar-fill score-poor" style="width: 40%"></div>
252 | </div>
253 | <div class="score-detail">Avg: 9.5, High-risk: 28</div>
254 | </div>
255 |
256 |
257 |
258 | <div class="score-bar-item">
259 | <div class="score-bar-header">
260 | <span class="score-label">Dead Code</span>
261 | <span class="score-value">70/100</span>
262 | </div>
263 | <div class="score-bar-container">
264 | <div class="score-bar-fill score-fair" style="width: 70%"></div>
265 | </div>
266 | <div class="score-detail">27 issues, 2 critical</div>
267 | </div>
268 |
269 |
270 |
271 | <div class="score-bar-item">
272 | <div class="score-bar-header">
273 | <span class="score-label">Duplication</span>
274 | <span class="score-value">30/100</span>
275 | </div>
276 | <div class="score-bar-container">
277 | <div class="score-bar-fill score-poor" style="width: 30%"></div>
278 | </div>
279 | <div class="score-detail">6.0% duplication, 18 groups</div>
280 | </div>
281 |
282 |
283 |
284 | <div class="score-bar-item">
285 | <div class="score-bar-header">
286 | <span class="score-label">Coupling (CBO)</span>
287 | <span class="score-value">100/100</span>
288 | </div>
289 | <div class="score-bar-container">
290 | <div class="score-bar-fill score-excellent" style="width: 100%"></div>
291 | </div>
292 | <div class="score-detail">Avg: 1.5, High-coupling: 0/145</div>
293 | </div>
294 |
295 |
296 |
297 | <div class="score-bar-item">
298 | <div class="score-bar-header">
299 | <span class="score-label">Dependencies</span>
300 | <span class="score-value">85/100</span>
301 | </div>
302 | <div class="score-bar-container">
303 | <div class="score-bar-fill score-good" style="width: 85%"></div>
304 | </div>
305 | <div class="score-detail">No cycles, Depth: 7</div>
306 | </div>
307 |
308 |
309 |
310 | <div class="score-bar-item">
311 | <div class="score-bar-header">
312 | <span class="score-label">Architecture</span>
313 | <span class="score-value">75/100</span>
314 | </div>
315 | <div class="score-bar-container">
316 | <div class="score-bar-fill score-good" style="width: 75%"></div>
317 | </div>
318 | <div class="score-detail">76% compliant</div>
319 | </div>
320 |
321 | </div>
322 |
323 | <h3 style="margin-top: 24px; margin-bottom: 16px; color: #2c3e50;">File Statistics</h3>
324 | <div class="metric-grid">
325 | <div class="metric-card">
326 | <div class="metric-value">252</div>
327 | <div class="metric-label">Total Files</div>
328 | </div>
329 | <div class="metric-card">
330 | <div class="metric-value">252</div>
331 | <div class="metric-label">Analyzed Files</div>
332 | </div>
333 | <div class="metric-card">
334 | <div class="metric-value">9.52</div>
335 | <div class="metric-label">Avg Complexity</div>
336 | </div>
337 | <div class="metric-card">
338 | <div class="metric-value">27</div>
339 | <div class="metric-label">Dead Code Issues</div>
340 | </div>
341 | <div class="metric-card">
342 | <div class="metric-value">2360</div>
343 | <div class="metric-label">Unique Fragments</div>
344 | </div>
345 | <div class="metric-card">
346 | <div class="metric-value">6.0%</div>
347 | <div class="metric-label">Code Duplication</div>
348 | </div>
349 |
350 | <div class="metric-card">
351 | <div class="metric-value">145</div>
352 | <div class="metric-label">Total Classes</div>
353 | </div>
354 | <div class="metric-card">
355 | <div class="metric-value">0</div>
356 | <div class="metric-label">High Coupling (CBO)</div>
357 | </div>
358 | <div class="metric-card">
359 | <div class="metric-value">1.50</div>
360 | <div class="metric-label">Avg CBO</div>
361 | </div>
362 |
363 | </div>
364 |
365 |
366 |
367 |
368 | <h3 style="margin-top: 16px; color: #2c3e50;">Dependencies</h3>
369 | <div class="metric-grid">
370 | <div class="metric-card">
371 | <div class="metric-value">252</div>
372 | <div class="metric-label">Total Modules</div>
373 | </div>
374 | <div class="metric-card">
375 | <div class="metric-value">237</div>
376 | <div class="metric-label">Total Dependencies</div>
377 | </div>
378 | <div class="metric-card">
379 | <div class="metric-value">7</div>
380 | <div class="metric-label">Max Depth</div>
381 | </div>
382 |
383 | <div class="metric-card">
384 | <div class="metric-value">✅ 0</div>
385 | <div class="metric-label">Circular Dependencies</div>
386 | </div>
387 |
388 | </div>
389 |
390 |
391 |
392 | <h3 style="margin-top: 8px; color: #2c3e50;">Architecture</h3>
393 | <div class="metric-grid">
394 | <div class="metric-card">
395 | <div class="metric-value">58</div>
396 | <div class="metric-label">Violations</div>
397 | </div>
398 | <div class="metric-card">
399 | <div class="metric-value">75.5%</div>
400 | <div class="metric-label">Compliance</div>
401 | </div>
402 | <div class="metric-card">
403 | <div class="metric-value">4</div>
404 | <div class="metric-label">Layers Analyzed</div>
405 | </div>
406 | <div class="metric-card">
407 | <div class="metric-value">237</div>
408 | <div class="metric-label">Total Rules</div>
409 | </div>
410 | </div>
411 |
412 |
413 | </div>
414 |
415 |
416 | <div id="complexity" class="tab-content">
417 | <div class="tab-header-with-score">
418 | <h2 style="margin: 0;">Complexity Analysis</h2>
419 | <div class="score-badge-compact score-poor">
420 | 40/100
421 | </div>
422 | </div>
423 |
424 | <div class="metric-grid">
425 | <div class="metric-card">
426 | <div class="metric-value">567</div>
427 | <div class="metric-label">Total Functions</div>
428 | </div>
429 | <div class="metric-card">
430 | <div class="metric-value">9.52</div>
431 | <div class="metric-label">Average</div>
432 | </div>
433 | <div class="metric-card">
434 | <div class="metric-value">62</div>
435 | <div class="metric-label">Maximum</div>
436 | </div>
437 | </div>
438 |
439 | <h3>Top Complex Functions</h3>
440 | <table class="table">
441 | <thead>
442 | <tr>
443 | <th>Function</th>
444 | <th>File</th>
445 | <th>Complexity</th>
446 | <th>Nesting Depth</th>
447 | <th>Risk</th>
448 | </tr>
449 | </thead>
450 | <tbody>
451 |
452 |
453 | <tr>
454 | <td>main</td>
455 | <td>install.py</td>
456 | <td>62</td>
457 | <td>6</td>
458 | <td class="risk-high">high</td>
459 | </tr>
460 |
461 |
462 |
463 | <tr>
464 | <td>__main__</td>
465 | <td>src/mcp_memory_service/config.py</td>
466 | <td>42</td>
467 | <td>0</td>
468 | <td class="risk-high">high</td>
469 | </tr>
470 |
471 |
472 |
473 | <tr>
474 | <td>SqliteVecMemoryStorage.initialize</td>
475 | <td>src/mcp_memory_service/storage/sqlite_vec.py</td>
476 | <td>38</td>
477 | <td>10</td>
478 | <td class="risk-high">high</td>
479 | </tr>
480 |
481 |
482 |
483 | <tr>
484 | <td>token</td>
485 | <td>src/mcp_memory_service/web/oauth/authorization.py</td>
486 | <td>35</td>
487 | <td>4</td>
488 | <td class="risk-high">high</td>
489 | </tr>
490 |
491 |
492 |
493 | <tr>
494 | <td>install_package</td>
495 | <td>scripts/installation/install.py</td>
496 | <td>33</td>
497 | <td>4</td>
498 | <td class="risk-high">high</td>
499 | </tr>
500 |
501 |
502 |
503 | <tr>
504 | <td>SqliteVecMemoryStorage._initialize_embedding_model</td>
505 | <td>src/mcp_memory_service/storage/sqlite_vec.py</td>
506 | <td>33</td>
507 | <td>6</td>
508 | <td class="risk-high">high</td>
509 | </tr>
510 |
511 |
512 |
513 | <tr>
514 | <td>detect_gpu</td>
515 | <td>scripts/installation/install.py</td>
516 | <td>30</td>
517 | <td>8</td>
518 | <td class="risk-high">high</td>
519 | </tr>
520 |
521 |
522 |
523 | <tr>
524 | <td>detect_gpu</td>
525 | <td>install.py</td>
526 | <td>30</td>
527 | <td>8</td>
528 | <td class="risk-high">high</td>
529 | </tr>
530 |
531 |
532 |
533 | <tr>
534 | <td>verify_installation</td>
535 | <td>install.py</td>
536 | <td>30</td>
537 | <td>5</td>
538 | <td class="risk-high">high</td>
539 | </tr>
540 |
541 |
542 |
543 | <tr>
544 | <td>test_memory_crud</td>
545 | <td>scripts/testing/test_memory_api.py</td>
546 | <td>30</td>
547 | <td>6</td>
548 | <td class="risk-high">high</td>
549 | </tr>
550 |
551 |
552 |
553 |
554 |
555 |
556 |
557 |
558 |
559 |
560 |
561 |
562 |
563 |
564 |
565 |
566 |
567 |
568 |
569 |
570 |
571 |
572 |
573 |
574 |
575 |
576 |
577 |
578 |
579 |
580 |
581 |
582 |
583 |
584 |
585 |
586 |
587 |
588 |
589 |
590 |
591 |
592 |
593 |
594 |
595 |
596 |
597 |
598 |
599 |
600 |
601 |
602 |
603 |
604 |
605 |
606 |
607 |
608 |
609 |
610 |
611 |
612 |
613 |
614 |
615 |
616 |
617 |
618 |
619 |
620 |
621 |
622 |
623 |
624 |
625 |
626 |
627 |
628 |
629 |
630 |
631 |
632 |
633 |
634 |
635 |
636 |
637 |
638 |
639 |
640 |
641 |
642 |
643 |
644 |
645 |
646 |
647 |
648 |
649 |
650 |
651 |
652 |
653 |
654 |
655 |
656 |
657 |
658 |
659 |
660 |
661 |
662 |
663 |
664 |
665 |
666 |
667 |
668 |
669 |
670 |
671 |
672 |
673 |
674 |
675 |
676 |
677 |
678 |
679 |
680 |
681 |
682 |
683 |
684 |
685 |
686 |
687 |
688 |
689 |
690 |
691 |
692 |
693 |
694 |
695 |
696 |
697 |
698 |
699 |
700 |
701 |
702 |
703 |
704 |
705 |
706 |
707 |
708 |
709 |
710 |
711 |
712 |
713 |
714 |
715 |
716 |
717 |
718 |
719 |
720 |
721 |
722 |
723 |
724 |
725 |
726 |
727 |
728 |
729 |
730 |
731 |
732 |
733 |
734 |
735 |
736 |
737 |
738 |
739 |
740 |
741 |
742 |
743 |
744 |
745 |
746 |
747 |
748 |
749 |
750 |
751 |
752 |
753 |
754 |
755 |
756 |
757 |
758 |
759 |
760 |
761 |
762 |
763 |
764 |
765 |
766 |
767 |
768 |
769 |
770 |
771 |
772 |
773 |
774 |
775 |
776 |
777 |
778 |
779 |
780 |
781 |
782 |
783 |
784 |
785 |
786 |
787 |
788 |
789 |
790 |
791 |
792 |
793 |
794 |
795 |
796 |
797 |
798 |
799 |
800 |
801 |
802 |
803 |
804 |
805 |
806 |
807 |
808 |
809 |
810 |
811 |
812 |
813 |
814 |
815 |
816 |
817 |
818 |
819 |
820 |
821 |
822 |
823 |
824 |
825 |
826 |
827 |
828 |
829 |
830 |
831 |
832 |
833 |
834 |
835 |
836 |
837 |
838 |
839 |
840 |
841 |
842 |
843 |
844 |
845 |
846 |
847 |
848 |
849 |
850 |
851 |
852 |
853 |
854 |
855 |
856 |
857 |
858 |
859 |
860 |
861 |
862 |
863 |
864 |
865 |
866 |
867 |
868 |
869 |
870 |
871 |
872 |
873 |
874 |
875 |
876 |
877 |
878 |
879 |
880 |
881 |
882 |
883 |
884 |
885 |
886 |
887 |
888 |
889 |
890 |
891 |
892 |
893 |
894 |
895 |
896 |
897 |
898 |
899 |
900 |
901 |
902 |
903 |
904 |
905 |
906 |
907 |
908 |
909 |
910 |
911 |
912 |
913 |
914 |
915 |
916 |
917 |
918 |
919 |
920 |
921 |
922 |
923 |
924 |
925 |
926 |
927 |
928 |
929 |
930 |
931 |
932 |
933 |
934 |
935 |
936 |
937 |
938 |
939 |
940 |
941 |
942 |
943 |
944 |
945 |
946 |
947 |
948 |
949 |
950 |
951 |
952 |
953 |
954 |
955 |
956 |
957 |
958 |
959 |
960 |
961 |
962 |
963 |
964 |
965 |
966 |
967 |
968 |
969 |
970 |
971 |
972 |
973 |
974 |
975 |
976 |
977 |
978 |
979 |
980 |
981 |
982 |
983 |
984 |
985 |
986 |
987 |
988 |
989 |
990 |
991 |
992 |
993 |
994 |
995 |
996 |
997 |
998 |
999 |
1000 |
1001 |
1002 |
1003 |
1004 |
1005 |
1006 |
1007 |
1008 |
1009 |
1010 |
1011 |
1012 |
1013 |
1014 |
1015 |
1016 |
1017 |
1018 |
1019 |
1020 |
1021 |
1022 |
1023 |
1024 |
1025 |
1026 |
1027 |
1028 |
1029 |
1030 |
1031 |
1032 |
1033 |
1034 |
1035 |
1036 |
1037 |
1038 |
1039 |
1040 |
1041 |
1042 |
1043 |
1044 |
1045 |
1046 |
1047 |
1048 |
1049 |
1050 |
1051 |
1052 |
1053 |
1054 |
1055 |
1056 |
1057 |
1058 |
1059 |
1060 |
1061 |
1062 |
1063 |
1064 |
1065 |
1066 |
1067 |
1068 |
1069 |
1070 |
1071 |
1072 |
1073 |
1074 |
1075 |
1076 |
1077 |
1078 |
1079 |
1080 |
1081 |
1082 |
1083 |
1084 |
1085 |
1086 |
1087 |
1088 |
1089 |
1090 |
1091 |
1092 |
1093 |
1094 |
1095 |
1096 |
1097 |
1098 |
1099 |
1100 |
1101 |
1102 |
1103 |
1104 |
1105 |
1106 |
1107 |
1108 |
1109 |
1110 |
1111 |
1112 |
1113 |
1114 |
1115 |
1116 |
1117 |
1118 |
1119 |
1120 |
1121 |
1122 |
1123 |
1124 |
1125 |
1126 |
1127 |
1128 |
1129 |
1130 |
1131 |
1132 |
1133 |
1134 |
1135 |
1136 |
1137 |
1138 |
1139 |
1140 |
1141 |
1142 |
1143 |
1144 |
1145 |
1146 |
1147 |
1148 |
1149 |
1150 |
1151 |
1152 |
1153 |
1154 |
1155 |
1156 |
1157 |
1158 |
1159 |
1160 |
1161 |
1162 |
1163 |
1164 |
1165 |
1166 |
1167 |
1168 |
1169 |
1170 |
1171 |
1172 |
1173 |
1174 |
1175 |
1176 |
1177 |
1178 |
1179 |
1180 |
1181 |
1182 |
1183 |
1184 |
1185 |
1186 |
1187 |
1188 |
1189 |
1190 |
1191 |
1192 |
1193 |
1194 |
1195 |
1196 |
1197 |
1198 |
1199 |
1200 |
1201 |
1202 |
1203 |
1204 |
1205 |
1206 |
1207 |
1208 |
1209 |
1210 |
1211 |
1212 |
1213 |
1214 |
1215 |
1216 |
1217 |
1218 |
1219 |
1220 |
1221 |
1222 |
1223 |
1224 |
1225 |
1226 |
1227 |
1228 |
1229 |
1230 |
1231 |
1232 |
1233 |
1234 |
1235 |
1236 |
1237 |
1238 |
1239 |
1240 |
1241 |
1242 |
1243 |
1244 |
1245 |
1246 |
1247 |
1248 |
1249 |
1250 |
1251 |
1252 |
1253 |
1254 |
1255 |
1256 |
1257 |
1258 |
1259 |
1260 |
1261 |
1262 |
1263 |
1264 |
1265 |
1266 |
1267 |
1268 |
1269 |
1270 |
1271 |
1272 |
1273 |
1274 |
1275 |
1276 |
1277 |
1278 |
1279 |
1280 |
1281 |
1282 |
1283 |
1284 |
1285 |
1286 |
1287 |
1288 |
1289 |
1290 |
1291 |
1292 |
1293 |
1294 |
1295 |
1296 |
1297 |
1298 |
1299 |
1300 |
1301 |
1302 |
1303 |
1304 |
1305 |
1306 |
1307 |
1308 |
1309 |
1310 |
1311 |
1312 |
1313 |
1314 |
1315 |
1316 |
1317 |
1318 |
1319 |
1320 |
1321 |
1322 |
1323 |
1324 |
1325 |
1326 |
1327 |
1328 |
1329 |
1330 |
1331 |
1332 |
1333 |
1334 |
1335 |
1336 |
1337 |
1338 |
1339 |
1340 |
1341 |
1342 |
1343 |
1344 |
1345 |
1346 |
1347 |
1348 |
1349 |
1350 |
1351 |
1352 |
1353 |
1354 |
1355 |
1356 |
1357 |
1358 |
1359 |
1360 |
1361 |
1362 |
1363 |
1364 |
1365 |
1366 |
1367 |
1368 |
1369 |
1370 |
1371 |
1372 |
1373 |
1374 |
1375 |
1376 |
1377 |
1378 |
1379 |
1380 |
1381 |
1382 |
1383 |
1384 |
1385 |
1386 |
1387 |
1388 |
1389 |
1390 |
1391 |
1392 |
1393 |
1394 |
1395 |
1396 |
1397 |
1398 |
1399 |
1400 |
1401 |
1402 |
1403 |
1404 |
1405 |
1406 |
1407 |
1408 |
1409 |
1410 |
1411 |
1412 |
1413 |
1414 |
1415 |
1416 |
1417 |
1418 |
1419 |
1420 |
1421 |
1422 |
1423 |
1424 |
1425 |
1426 |
1427 |
1428 |
1429 |
1430 |
1431 |
1432 |
1433 |
1434 |
1435 |
1436 |
1437 |
1438 |
1439 |
1440 |
1441 |
1442 |
1443 |
1444 |
1445 |
1446 |
1447 |
1448 |
1449 |
1450 |
1451 |
1452 |
1453 |
1454 |
1455 |
1456 |
1457 |
1458 |
1459 |
1460 |
1461 |
1462 |
1463 |
1464 |
1465 |
1466 |
1467 |
1468 |
1469 |
1470 |
1471 |
1472 |
1473 |
1474 |
1475 |
1476 |
1477 |
1478 |
1479 |
1480 |
1481 |
1482 |
1483 |
1484 |
1485 |
1486 |
1487 |
1488 |
1489 |
1490 |
1491 |
1492 |
1493 |
1494 |
1495 |
1496 |
1497 |
1498 |
1499 |
1500 |
1501 |
1502 |
1503 |
1504 |
1505 |
1506 |
1507 |
1508 |
1509 |
1510 |
1511 |
1512 |
1513 |
1514 |
1515 |
1516 |
1517 |
1518 |
1519 |
1520 |
1521 |
1522 |
1523 |
1524 |
1525 |
1526 |
1527 |
1528 |
1529 |
1530 |
1531 |
1532 |
1533 |
1534 |
1535 |
1536 |
1537 |
1538 |
1539 |
1540 |
1541 |
1542 |
1543 |
1544 |
1545 |
1546 |
1547 |
1548 |
1549 |
1550 |
1551 |
1552 |
1553 |
1554 |
1555 |
1556 |
1557 |
1558 |
1559 |
1560 |
1561 |
1562 |
1563 |
1564 |
1565 |
1566 |
1567 |
1568 |
1569 |
1570 |
1571 |
1572 |
1573 |
1574 |
1575 |
1576 |
1577 |
1578 |
1579 |
1580 |
1581 |
1582 |
1583 |
1584 |
1585 |
1586 |
1587 |
1588 |
1589 |
1590 |
1591 |
1592 |
1593 |
1594 |
1595 |
1596 |
1597 |
1598 |
1599 |
1600 |
1601 |
1602 |
1603 |
1604 |
1605 |
1606 |
1607 |
1608 |
1609 |
1610 |
1611 |
1612 |
1613 |
1614 |
1615 |
1616 |
1617 |
1618 |
1619 |
1620 |
1621 |
1622 |
1623 |
1624 |
1625 |
1626 |
1627 |
1628 |
1629 |
1630 |
1631 |
1632 |
1633 |
1634 |
1635 |
1636 |
1637 |
1638 |
1639 |
1640 |
1641 |
1642 |
1643 |
1644 |
1645 |
1646 |
1647 |
1648 |
1649 |
1650 |
1651 |
1652 |
1653 |
1654 |
1655 |
1656 |
1657 |
1658 |
1659 |
1660 |
1661 |
1662 |
1663 |
1664 |
1665 |
1666 | </tbody>
1667 | </table>
1668 |
1669 | <p style="color: #666; margin-top: 10px;">Showing top 10 of 567 functions</p>
1670 |
1671 |
1672 | </div>
1673 |
1674 |
1675 |
1676 | <div id="deadcode" class="tab-content">
1677 | <div class="tab-header-with-score">
1678 | <h2 style="margin: 0;">Dead Code Detection</h2>
1679 | <div class="score-badge-compact score-fair">
1680 | 70/100
1681 | </div>
1682 | </div>
1683 |
1684 | <div class="metric-grid">
1685 | <div class="metric-card">
1686 | <div class="metric-value">27</div>
1687 | <div class="metric-label">Total Issues</div>
1688 | </div>
1689 | <div class="metric-card">
1690 | <div class="metric-value">2</div>
1691 | <div class="metric-label">Critical</div>
1692 | </div>
1693 | <div class="metric-card">
1694 | <div class="metric-value">25</div>
1695 | <div class="metric-label">Warnings</div>
1696 | </div>
1697 | </div>
1698 |
1699 |
1700 | <h3>Top Dead Code Issues</h3>
1701 | <table class="table">
1702 | <thead>
1703 | <tr>
1704 | <th>File</th>
1705 | <th>Function</th>
1706 | <th>Lines</th>
1707 | <th>Severity</th>
1708 | <th>Reason</th>
1709 | </tr>
1710 | </thead>
1711 | <tbody>
1712 |
1713 |
1714 |
1715 |
1716 | <tr>
1717 | <td>scripts/installation/install.py</td>
1718 | <td>configure_paths</td>
1719 | <td>1361-1365</td>
1720 | <td class="severity-critical">critical</td>
1721 | <td>unreachable_after_return</td>
1722 | </tr>
1723 |
1724 |
1725 |
1726 | <tr>
1727 | <td>scripts/installation/install.py</td>
1728 | <td>configure_paths</td>
1729 | <td>1367-1436</td>
1730 | <td class="severity-warning">warning</td>
1731 | <td>unreachable_branch</td>
1732 | </tr>
1733 |
1734 |
1735 |
1736 | <tr>
1737 | <td>scripts/installation/install.py</td>
1738 | <td>configure_paths</td>
1739 | <td>1368-1436</td>
1740 | <td class="severity-warning">warning</td>
1741 | <td>unreachable_branch</td>
1742 | </tr>
1743 |
1744 |
1745 |
1746 | <tr>
1747 | <td>scripts/installation/install.py</td>
1748 | <td>configure_paths</td>
1749 | <td>1369-1369</td>
1750 | <td class="severity-warning">warning</td>
1751 | <td>unreachable_branch</td>
1752 | </tr>
1753 |
1754 |
1755 |
1756 | <tr>
1757 | <td>scripts/installation/install.py</td>
1758 | <td>configure_paths</td>
1759 | <td>1371-1371</td>
1760 | <td class="severity-warning">warning</td>
1761 | <td>unreachable_branch</td>
1762 | </tr>
1763 |
1764 |
1765 |
1766 | <tr>
1767 | <td>scripts/installation/install.py</td>
1768 | <td>configure_paths</td>
1769 | <td>1372-1373</td>
1770 | <td class="severity-warning">warning</td>
1771 | <td>unreachable_branch</td>
1772 | </tr>
1773 |
1774 |
1775 |
1776 | <tr>
1777 | <td>scripts/installation/install.py</td>
1778 | <td>configure_paths</td>
1779 | <td>1373-1373</td>
1780 | <td class="severity-warning">warning</td>
1781 | <td>unreachable_branch</td>
1782 | </tr>
1783 |
1784 |
1785 |
1786 | <tr>
1787 | <td>scripts/installation/install.py</td>
1788 | <td>configure_paths</td>
1789 | <td>1376-1377</td>
1790 | <td class="severity-warning">warning</td>
1791 | <td>unreachable_branch</td>
1792 | </tr>
1793 |
1794 |
1795 |
1796 | <tr>
1797 | <td>scripts/installation/install.py</td>
1798 | <td>configure_paths</td>
1799 | <td>1377-1377</td>
1800 | <td class="severity-warning">warning</td>
1801 | <td>unreachable_branch</td>
1802 | </tr>
1803 |
1804 |
1805 |
1806 | <tr>
1807 | <td>scripts/installation/install.py</td>
1808 | <td>configure_paths</td>
1809 | <td>1380-1388</td>
1810 | <td class="severity-warning">warning</td>
1811 | <td>unreachable_branch</td>
1812 | </tr>
1813 |
1814 |
1815 |
1816 |
1817 |
1818 |
1819 |
1820 |
1821 |
1822 |
1823 |
1824 |
1825 |
1826 |
1827 |
1828 |
1829 |
1830 |
1831 |
1832 |
1833 |
1834 |
1835 |
1836 |
1837 |
1838 |
1839 |
1840 |
1841 |
1842 |
1843 |
1844 |
1845 |
1846 |
1847 |
1848 |
1849 |
1850 |
1851 | </tbody>
1852 | </table>
1853 |
1854 | <p style="color: #666; margin-top: 10px;">Showing top 10 of 27 dead code issues</p>
1855 |
1856 |
1857 |
1858 | </div>
1859 |
1860 |
1861 |
1862 | <div id="clone" class="tab-content">
1863 | <div class="tab-header-with-score">
1864 | <h2 style="margin: 0;">Clone Detection</h2>
1865 | <div class="score-badge-compact score-poor">
1866 | 30/100
1867 | </div>
1868 | </div>
1869 |
1870 | <div class="metric-grid">
1871 | <div class="metric-card">
1872 | <div class="metric-value">2360</div>
1873 | <div class="metric-label">Unique Fragments</div>
1874 | </div>
1875 | <div class="metric-card">
1876 | <div class="metric-value">18</div>
1877 | <div class="metric-label">Clone Groups</div>
1878 | </div>
1879 | <div class="metric-card">
1880 | <div class="metric-value">1.00</div>
1881 | <div class="metric-label">Avg Similarity</div>
1882 | </div>
1883 | </div>
1884 |
1885 |
1886 | <h3>Clone Groups</h3>
1887 | <p style="color: #666; margin-bottom: 15px;">Code fragments grouped by similarity</p>
1888 |
1889 |
1890 | <div style="background: #f8f9fa; padding: 15px; margin-bottom: 15px; border-radius: 8px; border-left: 4px solid #667eea;">
1891 | <h4 style="margin-top: 0; color: #333;">Group 17 - 5 clones (Type Type-1, similarity: 1.00)</h4>
1892 | <table class="table" style="margin-bottom: 0;">
1893 | <thead>
1894 | <tr>
1895 | <th>File</th>
1896 | <th>Lines</th>
1897 | <th>Size</th>
1898 | </tr>
1899 | </thead>
1900 | <tbody>
1901 |
1902 |
1903 | <tr>
1904 | <td>tests/unit/test_csv_loader.py</td>
1905 | <td>135-146</td>
1906 | <td>12 lines</td>
1907 | </tr>
1908 |
1909 |
1910 |
1911 | <tr>
1912 | <td>tests/unit/test_csv_loader.py</td>
1913 | <td>155-168</td>
1914 | <td>14 lines</td>
1915 | </tr>
1916 |
1917 |
1918 |
1919 | <tr>
1920 | <td>tests/unit/test_csv_loader.py</td>
1921 | <td>177-189</td>
1922 | <td>13 lines</td>
1923 | </tr>
1924 |
1925 |
1926 |
1927 | <tr>
1928 | <td>tests/unit/test_csv_loader.py</td>
1929 | <td>269-282</td>
1930 | <td>14 lines</td>
1931 | </tr>
1932 |
1933 |
1934 |
1935 | <tr>
1936 | <td>tests/unit/test_json_loader.py</td>
1937 | <td>125-147</td>
1938 | <td>23 lines</td>
1939 | </tr>
1940 |
1941 |
1942 |
1943 | </tbody>
1944 | </table>
1945 | </div>
1946 |
1947 |
1948 |
1949 | <div style="background: #f8f9fa; padding: 15px; margin-bottom: 15px; border-radius: 8px; border-left: 4px solid #667eea;">
1950 | <h4 style="margin-top: 0; color: #333;">Group 5 - 4 clones (Type Type-1, similarity: 1.00)</h4>
1951 | <table class="table" style="margin-bottom: 0;">
1952 | <thead>
1953 | <tr>
1954 | <th>File</th>
1955 | <th>Lines</th>
1956 | <th>Size</th>
1957 | </tr>
1958 | </thead>
1959 | <tbody>
1960 |
1961 |
1962 | <tr>
1963 | <td>install.py</td>
1964 | <td>1509-1522</td>
1965 | <td>14 lines</td>
1966 | </tr>
1967 |
1968 |
1969 |
1970 | <tr>
1971 | <td>scripts/database/db_health_check.py</td>
1972 | <td>233-249</td>
1973 | <td>17 lines</td>
1974 | </tr>
1975 |
1976 |
1977 |
1978 | <tr>
1979 | <td>scripts/installation/install.py</td>
1980 | <td>1314-1327</td>
1981 | <td>14 lines</td>
1982 | </tr>
1983 |
1984 |
1985 |
1986 | <tr>
1987 | <td>scripts/installation/install.py</td>
1988 | <td>1334-1347</td>
1989 | <td>14 lines</td>
1990 | </tr>
1991 |
1992 |
1993 |
1994 | </tbody>
1995 | </table>
1996 | </div>
1997 |
1998 |
1999 |
2000 | <div style="background: #f8f9fa; padding: 15px; margin-bottom: 15px; border-radius: 8px; border-left: 4px solid #667eea;">
2001 | <h4 style="margin-top: 0; color: #333;">Group 7 - 4 clones (Type Type-1, similarity: 1.00)</h4>
2002 | <table class="table" style="margin-bottom: 0;">
2003 | <thead>
2004 | <tr>
2005 | <th>File</th>
2006 | <th>Lines</th>
2007 | <th>Size</th>
2008 | </tr>
2009 | </thead>
2010 | <tbody>
2011 |
2012 |
2013 | <tr>
2014 | <td>install.py</td>
2015 | <td>2862-2873</td>
2016 | <td>12 lines</td>
2017 | </tr>
2018 |
2019 |
2020 |
2021 | <tr>
2022 | <td>install.py</td>
2023 | <td>2892-2903</td>
2024 | <td>12 lines</td>
2025 | </tr>
2026 |
2027 |
2028 |
2029 | <tr>
2030 | <td>scripts/installation/install.py</td>
2031 | <td>1785-1796</td>
2032 | <td>12 lines</td>
2033 | </tr>
2034 |
2035 |
2036 |
2037 | <tr>
2038 | <td>scripts/installation/install.py</td>
2039 | <td>1817-1828</td>
2040 | <td>12 lines</td>
2041 | </tr>
2042 |
2043 |
2044 |
2045 | </tbody>
2046 | </table>
2047 | </div>
2048 |
2049 |
2050 |
2051 | <div style="background: #f8f9fa; padding: 15px; margin-bottom: 15px; border-radius: 8px; border-left: 4px solid #667eea;">
2052 | <h4 style="margin-top: 0; color: #333;">Group 16 - 4 clones (Type Type-1, similarity: 1.00)</h4>
2053 | <table class="table" style="margin-bottom: 0;">
2054 | <thead>
2055 | <tr>
2056 | <th>File</th>
2057 | <th>Lines</th>
2058 | <th>Size</th>
2059 | </tr>
2060 | </thead>
2061 | <tbody>
2062 |
2063 |
2064 | <tr>
2065 | <td>tests/unit/test_csv_loader.py</td>
2066 | <td>88-103</td>
2067 | <td>16 lines</td>
2068 | </tr>
2069 |
2070 |
2071 |
2072 | <tr>
2073 | <td>tests/unit/test_csv_loader.py</td>
2074 | <td>112-126</td>
2075 | <td>15 lines</td>
2076 | </tr>
2077 |
2078 |
2079 |
2080 | <tr>
2081 | <td>tests/unit/test_csv_loader.py</td>
2082 | <td>244-260</td>
2083 | <td>17 lines</td>
2084 | </tr>
2085 |
2086 |
2087 |
2088 | <tr>
2089 | <td>tests/unit/test_json_loader.py</td>
2090 | <td>215-234</td>
2091 | <td>20 lines</td>
2092 | </tr>
2093 |
2094 |
2095 |
2096 | </tbody>
2097 | </table>
2098 | </div>
2099 |
2100 |
2101 |
2102 | <div style="background: #f8f9fa; padding: 15px; margin-bottom: 15px; border-radius: 8px; border-left: 4px solid #667eea;">
2103 | <h4 style="margin-top: 0; color: #333;">Group 0 - 3 clones (Type Type-1, similarity: 1.00)</h4>
2104 | <table class="table" style="margin-bottom: 0;">
2105 | <thead>
2106 | <tr>
2107 | <th>File</th>
2108 | <th>Lines</th>
2109 | <th>Size</th>
2110 | </tr>
2111 | </thead>
2112 | <tbody>
2113 |
2114 |
2115 | <tr>
2116 | <td>claude-hooks/install_hooks.py</td>
2117 | <td>180-203</td>
2118 | <td>24 lines</td>
2119 | </tr>
2120 |
2121 |
2122 |
2123 | <tr>
2124 | <td>scripts/testing/test_memory_simple.py</td>
2125 | <td>91-102</td>
2126 | <td>12 lines</td>
2127 | </tr>
2128 |
2129 |
2130 |
2131 | <tr>
2132 | <td>scripts/testing/test_search_api.py</td>
2133 | <td>79-96</td>
2134 | <td>18 lines</td>
2135 | </tr>
2136 |
2137 |
2138 |
2139 | </tbody>
2140 | </table>
2141 | </div>
2142 |
2143 |
2144 |
2145 | <div style="background: #f8f9fa; padding: 15px; margin-bottom: 15px; border-radius: 8px; border-left: 4px solid #667eea;">
2146 | <h4 style="margin-top: 0; color: #333;">Group 1 - 3 clones (Type Type-1, similarity: 1.00)</h4>
2147 | <table class="table" style="margin-bottom: 0;">
2148 | <thead>
2149 | <tr>
2150 | <th>File</th>
2151 | <th>Lines</th>
2152 | <th>Size</th>
2153 | </tr>
2154 | </thead>
2155 | <tbody>
2156 |
2157 |
2158 | <tr>
2159 | <td>install.py</td>
2160 | <td>327-358</td>
2161 | <td>32 lines</td>
2162 | </tr>
2163 |
2164 |
2165 |
2166 | <tr>
2167 | <td>scripts/installation/install.py</td>
2168 | <td>274-305</td>
2169 | <td>32 lines</td>
2170 | </tr>
2171 |
2172 |
2173 |
2174 | <tr>
2175 | <td>scripts/validation/verify_environment.py</td>
2176 | <td>126-159</td>
2177 | <td>34 lines</td>
2178 | </tr>
2179 |
2180 |
2181 |
2182 | </tbody>
2183 | </table>
2184 | </div>
2185 |
2186 |
2187 |
2188 | <div style="background: #f8f9fa; padding: 15px; margin-bottom: 15px; border-radius: 8px; border-left: 4px solid #667eea;">
2189 | <h4 style="margin-top: 0; color: #333;">Group 2 - 3 clones (Type Type-1, similarity: 1.00)</h4>
2190 | <table class="table" style="margin-bottom: 0;">
2191 | <thead>
2192 | <tr>
2193 | <th>File</th>
2194 | <th>Lines</th>
2195 | <th>Size</th>
2196 | </tr>
2197 | </thead>
2198 | <tbody>
2199 |
2200 |
2201 | <tr>
2202 | <td>install.py</td>
2203 | <td>344-358</td>
2204 | <td>15 lines</td>
2205 | </tr>
2206 |
2207 |
2208 |
2209 | <tr>
2210 | <td>scripts/installation/install.py</td>
2211 | <td>291-305</td>
2212 | <td>15 lines</td>
2213 | </tr>
2214 |
2215 |
2216 |
2217 | <tr>
2218 | <td>scripts/validation/verify_environment.py</td>
2219 | <td>144-159</td>
2220 | <td>16 lines</td>
2221 | </tr>
2222 |
2223 |
2224 |
2225 | </tbody>
2226 | </table>
2227 | </div>
2228 |
2229 |
2230 |
2231 | <div style="background: #f8f9fa; padding: 15px; margin-bottom: 15px; border-radius: 8px; border-left: 4px solid #667eea;">
2232 | <h4 style="margin-top: 0; color: #333;">Group 3 - 3 clones (Type Type-1, similarity: 1.00)</h4>
2233 | <table class="table" style="margin-bottom: 0;">
2234 | <thead>
2235 | <tr>
2236 | <th>File</th>
2237 | <th>Lines</th>
2238 | <th>Size</th>
2239 | </tr>
2240 | </thead>
2241 | <tbody>
2242 |
2243 |
2244 | <tr>
2245 | <td>install.py</td>
2246 | <td>363-383</td>
2247 | <td>21 lines</td>
2248 | </tr>
2249 |
2250 |
2251 |
2252 | <tr>
2253 | <td>scripts/installation/install.py</td>
2254 | <td>310-330</td>
2255 | <td>21 lines</td>
2256 | </tr>
2257 |
2258 |
2259 |
2260 | <tr>
2261 | <td>scripts/validation/verify_environment.py</td>
2262 | <td>162-183</td>
2263 | <td>22 lines</td>
2264 | </tr>
2265 |
2266 |
2267 |
2268 | </tbody>
2269 | </table>
2270 | </div>
2271 |
2272 |
2273 |
2274 | <div style="background: #f8f9fa; padding: 15px; margin-bottom: 15px; border-radius: 8px; border-left: 4px solid #667eea;">
2275 | <h4 style="margin-top: 0; color: #333;">Group 6 - 3 clones (Type Type-1, similarity: 1.00)</h4>
2276 | <table class="table" style="margin-bottom: 0;">
2277 | <thead>
2278 | <tr>
2279 | <th>File</th>
2280 | <th>Lines</th>
2281 | <th>Size</th>
2282 | </tr>
2283 | </thead>
2284 | <tbody>
2285 |
2286 |
2287 | <tr>
2288 | <td>install.py</td>
2289 | <td>2313-2356</td>
2290 | <td>44 lines</td>
2291 | </tr>
2292 |
2293 |
2294 |
2295 | <tr>
2296 | <td>install.py</td>
2297 | <td>2383-2421</td>
2298 | <td>39 lines</td>
2299 | </tr>
2300 |
2301 |
2302 |
2303 | <tr>
2304 | <td>install.py</td>
2305 | <td>2425-2463</td>
2306 | <td>39 lines</td>
2307 | </tr>
2308 |
2309 |
2310 |
2311 | </tbody>
2312 | </table>
2313 | </div>
2314 |
2315 |
2316 |
2317 | <div style="background: #f8f9fa; padding: 15px; margin-bottom: 15px; border-radius: 8px; border-left: 4px solid #667eea;">
2318 | <h4 style="margin-top: 0; color: #333;">Group 8 - 3 clones (Type Type-1, similarity: 1.00)</h4>
2319 | <table class="table" style="margin-bottom: 0;">
2320 | <thead>
2321 | <tr>
2322 | <th>File</th>
2323 | <th>Lines</th>
2324 | <th>Size</th>
2325 | </tr>
2326 | </thead>
2327 | <tbody>
2328 |
2329 |
2330 | <tr>
2331 | <td>install.py</td>
2332 | <td>3124-3151</td>
2333 | <td>28 lines</td>
2334 | </tr>
2335 |
2336 |
2337 |
2338 | <tr>
2339 | <td>install.py</td>
2340 | <td>3127-3145</td>
2341 | <td>19 lines</td>
2342 | </tr>
2343 |
2344 |
2345 |
2346 | <tr>
2347 | <td>scripts/installation/install.py</td>
2348 | <td>1927-1945</td>
2349 | <td>19 lines</td>
2350 | </tr>
2351 |
2352 |
2353 |
2354 | </tbody>
2355 | </table>
2356 | </div>
2357 |
2358 |
2359 |
2360 |
2361 |
2362 |
2363 |
2364 |
2365 |
2366 |
2367 |
2368 |
2369 |
2370 |
2371 |
2372 |
2373 |
2374 |
2375 |
2376 | <p style="color: #666; margin-top: 10px;">Showing top 10 of 18 clone groups</p>
2377 |
2378 |
2379 |
2380 | </div>
2381 |
2382 |
2383 |
2384 | <div id="cbo" class="tab-content">
2385 | <div class="tab-header-with-score">
2386 | <h2 style="margin: 0;">Class Coupling</h2>
2387 | <div class="score-badge-compact score-excellent">
2388 | 100/100
2389 | </div>
2390 | </div>
2391 | <p style="margin-bottom: 20px; color: #666;">Coupling Between Objects (CBO) metrics</p>
2392 |
2393 | <div class="metric-grid">
2394 | <div class="metric-card">
2395 | <div class="metric-value">145</div>
2396 | <div class="metric-label">Total Classes</div>
2397 | </div>
2398 | <div class="metric-card">
2399 | <div class="metric-value">0</div>
2400 | <div class="metric-label">High Risk Classes</div>
2401 | </div>
2402 | <div class="metric-card">
2403 | <div class="metric-value">1.50</div>
2404 | <div class="metric-label">Average CBO</div>
2405 | </div>
2406 | <div class="metric-card">
2407 | <div class="metric-value">4</div>
2408 | <div class="metric-label">Max CBO</div>
2409 | </div>
2410 | </div>
2411 |
2412 | <h3>Most Dependent Classes</h3>
2413 | <table class="table">
2414 | <thead>
2415 | <tr>
2416 | <th>Class</th>
2417 | <th>File</th>
2418 | <th>CBO</th>
2419 | <th>Risk Level</th>
2420 | <th>Dependent Classes</th>
2421 | </tr>
2422 | </thead>
2423 | <tbody>
2424 |
2425 |
2426 | <tr>
2427 | <td>ConsolidationHealthMonitor</td>
2428 | <td>src/mcp_memory_service/consolidation/health.py</td>
2429 | <td>4</td>
2430 | <td class="risk-low">low</td>
2431 | <td>HealthMetric, HealthAlert, Any, HealthStatus</td>
2432 | </tr>
2433 |
2434 |
2435 |
2436 | <tr>
2437 | <td>ControlledForgettingEngine</td>
2438 | <td>src/mcp_memory_service/consolidation/forgetting.py</td>
2439 | <td>3</td>
2440 | <td class="risk-low">low</td>
2441 | <td>ConsolidationBase, ForgettingCandidate, ForgettingResult</td>
2442 | </tr>
2443 |
2444 |
2445 |
2446 | <tr>
2447 | <td>StorageStats</td>
2448 | <td>src/mcp_memory_service/web/api/analytics.py</td>
2449 | <td>3</td>
2450 | <td class="risk-low">low</td>
2451 | <td>BaseModel, LargestMemory, GrowthTrendPoint</td>
2452 | </tr>
2453 |
2454 |
2455 |
2456 | <tr>
2457 | <td>HybridMemoryStorage</td>
2458 | <td>src/mcp_memory_service/storage/hybrid.py</td>
2459 | <td>3</td>
2460 | <td class="risk-low">low</td>
2461 | <td>MemoryStorage, BackgroundSyncService, SyncOperation</td>
2462 | </tr>
2463 |
2464 |
2465 |
2466 | <tr>
2467 | <td>HTTPClientStorage</td>
2468 | <td>src/mcp_memory_service/storage/http_client.py</td>
2469 | <td>3</td>
2470 | <td class="risk-low">low</td>
2471 | <td>MemoryStorage, Any, Memory</td>
2472 | </tr>
2473 |
2474 |
2475 |
2476 | <tr>
2477 | <td>CloudflareStorage</td>
2478 | <td>src/mcp_memory_service/storage/cloudflare.py</td>
2479 | <td>3</td>
2480 | <td class="risk-low">low</td>
2481 | <td>Any, Memory, MemoryStorage</td>
2482 | </tr>
2483 |
2484 |
2485 |
2486 | <tr>
2487 | <td>ServiceDiscovery</td>
2488 | <td>src/mcp_memory_service/discovery/mdns_service.py</td>
2489 | <td>3</td>
2490 | <td class="risk-low">low</td>
2491 | <td>AsyncZeroconf, AsyncServiceBrowser, DiscoveryListener</td>
2492 | </tr>
2493 |
2494 |
2495 |
2496 | <tr>
2497 | <td>CacheManager</td>
2498 | <td>src/mcp_memory_service/utils/cache_manager.py</td>
2499 | <td>2</td>
2500 | <td class="risk-low">low</td>
2501 | <td>Any, CacheStats</td>
2502 | </tr>
2503 |
2504 |
2505 |
2506 | <tr>
2507 | <td>MemoryResult</td>
2508 | <td>src/mcp_memory_service/services/memory_service.py</td>
2509 | <td>2</td>
2510 | <td class="risk-low">low</td>
2511 | <td>TypedDict, Any</td>
2512 | </tr>
2513 |
2514 |
2515 |
2516 | <tr>
2517 | <td>SSEManager</td>
2518 | <td>src/mcp_memory_service/web/sse.py</td>
2519 | <td>2</td>
2520 | <td class="risk-low">low</td>
2521 | <td>Any, SSEEvent</td>
2522 | </tr>
2523 |
2524 |
2525 |
2526 |
2527 |
2528 |
2529 |
2530 |
2531 |
2532 |
2533 |
2534 |
2535 |
2536 |
2537 |
2538 |
2539 |
2540 |
2541 |
2542 |
2543 |
2544 |
2545 |
2546 |
2547 |
2548 |
2549 |
2550 |
2551 |
2552 |
2553 |
2554 |
2555 |
2556 |
2557 |
2558 |
2559 |
2560 |
2561 |
2562 |
2563 |
2564 |
2565 |
2566 |
2567 |
2568 |
2569 |
2570 |
2571 |
2572 |
2573 |
2574 |
2575 |
2576 |
2577 |
2578 |
2579 |
2580 |
2581 |
2582 |
2583 |
2584 |
2585 |
2586 |
2587 |
2588 |
2589 |
2590 |
2591 |
2592 |
2593 |
2594 |
2595 |
2596 |
2597 |
2598 |
2599 |
2600 |
2601 |
2602 |
2603 |
2604 |
2605 |
2606 |
2607 |
2608 |
2609 |
2610 |
2611 |
2612 |
2613 |
2614 |
2615 |
2616 |
2617 |
2618 |
2619 |
2620 |
2621 |
2622 |
2623 |
2624 |
2625 |
2626 |
2627 |
2628 |
2629 |
2630 |
2631 |
2632 |
2633 |
2634 |
2635 |
2636 |
2637 |
2638 |
2639 |
2640 |
2641 |
2642 |
2643 |
2644 |
2645 |
2646 |
2647 |
2648 |
2649 |
2650 |
2651 |
2652 |
2653 |
2654 |
2655 |
2656 |
2657 |
2658 |
2659 |
2660 |
2661 |
2662 |
2663 |
2664 |
2665 |
2666 |
2667 |
2668 |
2669 |
2670 |
2671 |
2672 |
2673 |
2674 |
2675 |
2676 |
2677 |
2678 |
2679 |
2680 |
2681 |
2682 |
2683 |
2684 |
2685 |
2686 |
2687 |
2688 |
2689 |
2690 |
2691 |
2692 |
2693 |
2694 |
2695 |
2696 |
2697 |
2698 |
2699 |
2700 |
2701 |
2702 |
2703 |
2704 |
2705 |
2706 |
2707 |
2708 |
2709 |
2710 |
2711 |
2712 |
2713 |
2714 |
2715 |
2716 |
2717 |
2718 |
2719 |
2720 |
2721 |
2722 |
2723 |
2724 |
2725 |
2726 |
2727 |
2728 |
2729 |
2730 |
2731 |
2732 |
2733 |
2734 |
2735 |
2736 |
2737 |
2738 |
2739 |
2740 |
2741 |
2742 |
2743 |
2744 |
2745 |
2746 |
2747 |
2748 |
2749 |
2750 |
2751 |
2752 |
2753 |
2754 |
2755 |
2756 |
2757 |
2758 |
2759 |
2760 |
2761 |
2762 |
2763 |
2764 |
2765 |
2766 |
2767 |
2768 |
2769 |
2770 |
2771 |
2772 |
2773 |
2774 |
2775 |
2776 |
2777 |
2778 |
2779 |
2780 |
2781 |
2782 |
2783 |
2784 |
2785 |
2786 |
2787 |
2788 |
2789 |
2790 |
2791 |
2792 |
2793 |
2794 |
2795 | </tbody>
2796 | </table>
2797 |
2798 | <p style="color: #666; margin-top: 10px;">Showing top 10 of 145 classes</p>
2799 |
2800 |
2801 | </div>
2802 |
2803 |
2804 |
2805 |
2806 | <div id="sys-deps" class="tab-content">
2807 | <div class="tab-header-with-score">
2808 | <h2 style="margin: 0;">Module Dependencies</h2>
2809 | <div class="score-badge-compact score-good">
2810 | 85/100
2811 | </div>
2812 | </div>
2813 | <p style="margin-bottom: 20px; color: #666;">Project-wide module dependency graph metrics</p>
2814 | <div class="metric-grid">
2815 | <div class="metric-card">
2816 | <div class="metric-value">252</div>
2817 | <div class="metric-label">Total Modules</div>
2818 | </div>
2819 | <div class="metric-card">
2820 | <div class="metric-value">237</div>
2821 | <div class="metric-label">Total Dependencies</div>
2822 | </div>
2823 | <div class="metric-card">
2824 | <div class="metric-value">7</div>
2825 | <div class="metric-label">Max Depth</div>
2826 | </div>
2827 |
2828 | <div class="metric-card">
2829 | <div class="metric-value">✅ 0</div>
2830 | <div class="metric-label">Circular Dependencies</div>
2831 | </div>
2832 |
2833 | </div>
2834 |
2835 |
2836 |
2837 | <h3 style="margin-top: 30px;">Circular Dependencies</h3>
2838 |
2839 | <div style="padding: 20px; background: #d4edda; border-left: 4px solid #28a745; border-radius: 4px; margin: 20px 0;">
2840 | <strong style="color: #155724;">✅ No circular dependencies detected</strong>
2841 | <p style="color: #155724; margin: 10px 0 0 0;">All modules have acyclic dependency relationships.</p>
2842 | </div>
2843 |
2844 |
2845 |
2846 |
2847 | <h3>Longest Dependency Chains</h3>
2848 | <table class="table">
2849 | <thead>
2850 | <tr>
2851 | <th>#</th>
2852 | <th>Depth</th>
2853 | <th>Path</th>
2854 | </tr>
2855 | </thead>
2856 | <tbody>
2857 |
2858 |
2859 | <tr>
2860 | <td>1</td>
2861 | <td>6</td>
2862 | <td>src.mcp_memory_service.web.app → src.mcp_memory_service.web.api.mcp → src.mcp_memory_service.web.dependencies → src.mcp_memory_service.services.memory_service → src.mcp_memory_service.storage.base → src.mcp_memory_service.models.memory</td>
2863 | </tr>
2864 |
2865 |
2866 |
2867 | <tr>
2868 | <td>2</td>
2869 | <td>6</td>
2870 | <td>src.mcp_memory_service.discovery → src.mcp_memory_service.api.client → src.mcp_memory_service.storage.factory → src.mcp_memory_service.storage.sqlite_vec → src.mcp_memory_service.consolidation.base → src.mcp_memory_service.models.memory</td>
2871 | </tr>
2872 |
2873 |
2874 |
2875 | <tr>
2876 | <td>3</td>
2877 | <td>6</td>
2878 | <td>src.mcp_memory_service.web.api.events → src.mcp_memory_service.web.dependencies → src.mcp_memory_service.storage.factory → src.mcp_memory_service.storage.sqlite_vec → src.mcp_memory_service.consolidation.base → src.mcp_memory_service.models.memory</td>
2879 | </tr>
2880 |
2881 |
2882 |
2883 | <tr>
2884 | <td>4</td>
2885 | <td>5</td>
2886 | <td>src.mcp_memory_service.api.operations → src.mcp_memory_service.api.client → src.mcp_memory_service.storage.factory → src.mcp_memory_service.storage.sqlite_vec → src.mcp_memory_service.config</td>
2887 | </tr>
2888 |
2889 |
2890 |
2891 | <tr>
2892 | <td>5</td>
2893 | <td>5</td>
2894 | <td>src.mcp_memory_service.discovery → src.mcp_memory_service.api.client → src.mcp_memory_service.storage.factory → src.mcp_memory_service.consolidation.base → src.mcp_memory_service.models.memory</td>
2895 | </tr>
2896 |
2897 |
2898 |
2899 | <tr>
2900 | <td>6</td>
2901 | <td>5</td>
2902 | <td>src.mcp_memory_service.web.app → src.mcp_memory_service.web.api.mcp → src.mcp_memory_service.web.dependencies → src.mcp_memory_service.services.memory_service → src.mcp_memory_service.storage.base</td>
2903 | </tr>
2904 |
2905 |
2906 |
2907 | <tr>
2908 | <td>7</td>
2909 | <td>5</td>
2910 | <td>src.mcp_memory_service.web.app → src.mcp_memory_service.web.api.mcp → src.mcp_memory_service.web.dependencies → src.mcp_memory_service.services.memory_service → src.mcp_memory_service.utils.hashing</td>
2911 | </tr>
2912 |
2913 |
2914 |
2915 | <tr>
2916 | <td>8</td>
2917 | <td>5</td>
2918 | <td>src.mcp_memory_service.web.app → src.mcp_memory_service.web.api.mcp → src.mcp_memory_service.web.dependencies → src.mcp_memory_service.services.memory_service → src.mcp_memory_service.models.memory</td>
2919 | </tr>
2920 |
2921 |
2922 |
2923 | <tr>
2924 | <td>9</td>
2925 | <td>5</td>
2926 | <td>src.mcp_memory_service.web.app → src.mcp_memory_service.web.api.mcp → src.mcp_memory_service.web.dependencies → src.mcp_memory_service.services.memory_service → src.mcp_memory_service.utils.content_splitter</td>
2927 | </tr>
2928 |
2929 |
2930 |
2931 | <tr>
2932 | <td>10</td>
2933 | <td>5</td>
2934 | <td>src.mcp_memory_service.web.api.mcp → src.mcp_memory_service.web.dependencies → src.mcp_memory_service.services.memory_service → src.mcp_memory_service.storage.base → src.mcp_memory_service.models.memory</td>
2935 | </tr>
2936 |
2937 |
2938 | </tbody>
2939 | </table>
2940 |
2941 | </div>
2942 |
2943 |
2944 |
2945 | <div id="sys-arch" class="tab-content">
2946 | <div class="tab-header-with-score">
2947 | <h2 style="margin: 0;">Architecture Validation</h2>
2948 | <div class="score-badge-compact score-good">
2949 | 75/100
2950 | </div>
2951 | </div>
2952 | <div class="metric-grid">
2953 | <div class="metric-card">
2954 | <div class="metric-value">4</div>
2955 | <div class="metric-label">Layers Analyzed</div>
2956 | </div>
2957 | <div class="metric-card">
2958 | <div class="metric-value">237</div>
2959 | <div class="metric-label">Total Rules</div>
2960 | </div>
2961 | <div class="metric-card">
2962 | <div class="metric-value">58</div>
2963 | <div class="metric-label">Violations</div>
2964 | </div>
2965 | <div class="metric-card">
2966 | <div class="metric-value">75.5%</div>
2967 | <div class="metric-label">Compliance</div>
2968 | </div>
2969 | </div>
2970 |
2971 |
2972 | <h3>Top Rule Violations</h3>
2973 | <table class="table">
2974 | <thead>
2975 | <tr>
2976 | <th>Severity</th>
2977 | <th>Rule</th>
2978 | <th>From</th>
2979 | <th>To</th>
2980 | </tr>
2981 | </thead>
2982 | <tbody>
2983 |
2984 |
2985 | <tr>
2986 | <td>error</td>
2987 | <td>application -> {application,domain,infrastructure}</td>
2988 | <td>scripts.backup.backup_memories</td>
2989 | <td>src.mcp_memory_service.config</td>
2990 | </tr>
2991 |
2992 |
2993 |
2994 | <tr>
2995 | <td>error</td>
2996 | <td>infrastructure -> {infrastructure,domain,application}</td>
2997 | <td>scripts.backup.restore_memories</td>
2998 | <td>src.mcp_memory_service.config</td>
2999 | </tr>
3000 |
3001 |
3002 |
3003 | <tr>
3004 | <td>error</td>
3005 | <td>domain !> presentation</td>
3006 | <td>scripts.maintenance.cleanup_memories</td>
3007 | <td>src.mcp_memory_service.config</td>
3008 | </tr>
3009 |
3010 |
3011 |
3012 | <tr>
3013 | <td>error</td>
3014 | <td>application -> {application,domain,infrastructure}</td>
3015 | <td>scripts.maintenance.regenerate_embeddings</td>
3016 | <td>src.mcp_memory_service.config</td>
3017 | </tr>
3018 |
3019 |
3020 |
3021 | <tr>
3022 | <td>error</td>
3023 | <td>infrastructure -> {infrastructure,domain,application}</td>
3024 | <td>scripts.maintenance.repair_malformed_tags</td>
3025 | <td>src.mcp_memory_service.config</td>
3026 | </tr>
3027 |
3028 |
3029 |
3030 | <tr>
3031 | <td>error</td>
3032 | <td>domain !> presentation</td>
3033 | <td>src.mcp_memory_service.api.client</td>
3034 | <td>src.mcp_memory_service.config</td>
3035 | </tr>
3036 |
3037 |
3038 |
3039 | <tr>
3040 | <td>error</td>
3041 | <td>domain !> presentation</td>
3042 | <td>src.mcp_memory_service.api.operations</td>
3043 | <td>src.mcp_memory_service.api.sync_wrapper</td>
3044 | </tr>
3045 |
3046 |
3047 |
3048 | <tr>
3049 | <td>error</td>
3050 | <td>domain !> presentation</td>
3051 | <td>src.mcp_memory_service.backup.scheduler</td>
3052 | <td>src.mcp_memory_service.config</td>
3053 | </tr>
3054 |
3055 |
3056 |
3057 | <tr>
3058 | <td>error</td>
3059 | <td>domain !> presentation</td>
3060 | <td>src.mcp_memory_service.cli.main</td>
3061 | <td>src.mcp_memory_service.server</td>
3062 | </tr>
3063 |
3064 |
3065 |
3066 | <tr>
3067 | <td>error</td>
3068 | <td>domain !> presentation</td>
3069 | <td>src.mcp_memory_service.cli.utils</td>
3070 | <td>src.mcp_memory_service.config</td>
3071 | </tr>
3072 |
3073 |
3074 |
3075 | <tr>
3076 | <td>error</td>
3077 | <td>domain !> application</td>
3078 | <td>src.mcp_memory_service.consolidation.associations</td>
3079 | <td>src.mcp_memory_service.consolidation.base</td>
3080 | </tr>
3081 |
3082 |
3083 |
3084 | <tr>
3085 | <td>error</td>
3086 | <td>domain !> application</td>
3087 | <td>src.mcp_memory_service.consolidation.clustering</td>
3088 | <td>src.mcp_memory_service.consolidation.base</td>
3089 | </tr>
3090 |
3091 |
3092 |
3093 | <tr>
3094 | <td>error</td>
3095 | <td>domain !> application</td>
3096 | <td>src.mcp_memory_service.consolidation.compression</td>
3097 | <td>src.mcp_memory_service.consolidation.base</td>
3098 | </tr>
3099 |
3100 |
3101 |
3102 | <tr>
3103 | <td>error</td>
3104 | <td>domain !> application</td>
3105 | <td>src.mcp_memory_service.consolidation.consolidator</td>
3106 | <td>src.mcp_memory_service.consolidation.base</td>
3107 | </tr>
3108 |
3109 |
3110 |
3111 | <tr>
3112 | <td>error</td>
3113 | <td>domain !> presentation</td>
3114 | <td>src.mcp_memory_service.consolidation.consolidator</td>
3115 | <td>src.mcp_memory_service.consolidation.decay</td>
3116 | </tr>
3117 |
3118 |
3119 |
3120 | <tr>
3121 | <td>error</td>
3122 | <td>domain !> application</td>
3123 | <td>src.mcp_memory_service.consolidation.consolidator</td>
3124 | <td>src.mcp_memory_service.consolidation.forgetting</td>
3125 | </tr>
3126 |
3127 |
3128 |
3129 | <tr>
3130 | <td>error</td>
3131 | <td>domain !> presentation</td>
3132 | <td>src.mcp_memory_service.consolidation.consolidator</td>
3133 | <td>src.mcp_memory_service.consolidation.health</td>
3134 | </tr>
3135 |
3136 |
3137 |
3138 | <tr>
3139 | <td>error</td>
3140 | <td>application -> {application,domain,infrastructure}</td>
3141 | <td>src.mcp_memory_service.consolidation.forgetting</td>
3142 | <td>src.mcp_memory_service.consolidation.decay</td>
3143 | </tr>
3144 |
3145 |
3146 |
3147 | <tr>
3148 | <td>error</td>
3149 | <td>domain !> application</td>
3150 | <td>src.mcp_memory_service.consolidation.scheduler</td>
3151 | <td>src.mcp_memory_service.consolidation.base</td>
3152 | </tr>
3153 |
3154 |
3155 |
3156 | <tr>
3157 | <td>error</td>
3158 | <td>domain !> presentation</td>
3159 | <td>src.mcp_memory_service.discovery.client</td>
3160 | <td>src.mcp_memory_service.config</td>
3161 | </tr>
3162 |
3163 |
3164 |
3165 |
3166 |
3167 |
3168 |
3169 |
3170 |
3171 |
3172 |
3173 |
3174 |
3175 |
3176 |
3177 |
3178 |
3179 |
3180 |
3181 |
3182 |
3183 |
3184 |
3185 |
3186 |
3187 |
3188 |
3189 |
3190 |
3191 |
3192 |
3193 |
3194 |
3195 |
3196 |
3197 |
3198 |
3199 |
3200 |
3201 |
3202 |
3203 |
3204 |
3205 |
3206 |
3207 |
3208 |
3209 |
3210 |
3211 |
3212 |
3213 |
3214 |
3215 |
3216 |
3217 |
3218 |
3219 |
3220 |
3221 |
3222 |
3223 |
3224 |
3225 |
3226 |
3227 |
3228 |
3229 |
3230 |
3231 |
3232 |
3233 |
3234 |
3235 |
3236 |
3237 |
3238 |
3239 |
3240 | </tbody>
3241 | </table>
3242 |
3243 | </div>
3244 |
3245 |
3246 | </div>
3247 | </div>
3248 |
3249 | <script>
3250 | function showTab(tabName, el) {
3251 |
3252 | const tabs = document.querySelectorAll('.tab-content');
3253 | tabs.forEach(tab => tab.classList.remove('active'));
3254 |
3255 |
3256 | const buttons = document.querySelectorAll('.tab-button');
3257 | buttons.forEach(btn => btn.classList.remove('active'));
3258 |
3259 |
3260 | document.getElementById(tabName).classList.add('active');
3261 |
3262 |
3263 | if (el) { el.classList.add('active'); }
3264 | }
3265 | </script>
3266 | </body>
3267 | </html>
```