Coverage report: 89%

Files Functions Classes

coverage.py v7.13.5, created at 2026-06-05 15:47 +0000

File function   statements missing excluded   coverage
src / kemi / __init__.py (no function)   9 0 2   100%
src / kemi / __main__.py main   10 0 0   100%
src / kemi / __main__.py (no function)   2 0 2   100%
src / kemi / _memory_impl.py _memory_to_dict   3 1 0   67%
src / kemi / _memory_impl.py Memory.__init__   47 10 6   79%
src / kemi / _memory_impl.py Memory._latency_tracker   2 0 0   100%
src / kemi / _memory_impl.py Memory.remember   15 3 0   80%
src / kemi / _memory_impl.py Memory._build_ingestion_context   2 0 0   100%
src / kemi / _memory_impl.py Memory._validate_remember_inputs   8 0 0   100%
src / kemi / _memory_impl.py Memory._build_memory_object   2 0 0   100%
src / kemi / _memory_impl.py Memory.recall   9 1 0   89%
src / kemi / _memory_impl.py Memory._build_retrieval_context   2 0 0   100%
src / kemi / _memory_impl.py Memory.recall_many   6 1 0   83%
src / kemi / _memory_impl.py Memory.update_many   5 0 0   100%
src / kemi / _memory_impl.py Memory.forget_many   5 0 0   100%
src / kemi / _memory_impl.py Memory.forget   17 0 0   100%
src / kemi / _memory_impl.py Memory.context_block   7 0 0   100%
src / kemi / _memory_impl.py Memory.aremember   2 0 0   100%
src / kemi / _memory_impl.py Memory.recall_stream   61 12 0   80%
src / kemi / _memory_impl.py Memory.arecall   4 0 0   100%
src / kemi / _memory_impl.py Memory.aforget   2 0 0   100%
src / kemi / _memory_impl.py Memory.acontext_block   2 0 0   100%
src / kemi / _memory_impl.py Memory.migrate   22 2 0   91%
src / kemi / _memory_impl.py Memory.export   9 0 0   100%
src / kemi / _memory_impl.py Memory.import_from   17 0 0   100%
src / kemi / _memory_impl.py Memory.aexport   2 0 0   100%
src / kemi / _memory_impl.py Memory.aimport_from   2 0 0   100%
src / kemi / _memory_impl.py Memory.upgrade   2 0 0   100%
src / kemi / _memory_impl.py Memory.remember_many   24 4 0   83%
src / kemi / _memory_impl.py Memory._remember_with_embedding   4 0 0   100%
src / kemi / _memory_impl.py Memory.list_users   1 0 0   100%
src / kemi / _memory_impl.py Memory.prune   21 1 0   95%
src / kemi / _memory_impl.py Memory.prune_expired   21 0 0   100%
src / kemi / _memory_impl.py Memory._known_namespaces   9 2 0   78%
src / kemi / _memory_impl.py Memory.recall_between   9 9 0   0%
src / kemi / _memory_impl.py Memory.recall_user_profile   18 2 0   89%
src / kemi / _memory_impl.py Memory.recall_session_context   20 2 0   90%
src / kemi / _memory_impl.py Memory.recall_agent_knowledge   23 2 0   91%
src / kemi / _memory_impl.py Memory.recall_explain   41 8 0   80%
src / kemi / _memory_impl.py Memory.consolidate   6 0 3   100%
src / kemi / _memory_impl.py Memory.cluster_topics   3 0 3   100%
src / kemi / _memory_impl.py Memory.extract_entities   6 6 3   0%
src / kemi / _memory_impl.py Memory.get_memory_graph   3 0 3   100%
src / kemi / _memory_impl.py Memory.stats   20 1 0   95%
src / kemi / _memory_impl.py Memory.astats   2 2 0   0%
src / kemi / _memory_impl.py Memory.recall_by_tag   5 0 0   100%
src / kemi / _memory_impl.py Memory.arecall_by_tag   2 0 0   100%
src / kemi / _memory_impl.py Memory.update   40 1 0   98%
src / kemi / _memory_impl.py Memory.recall_since   5 5 0   0%
src / kemi / _memory_impl.py Memory.alist_users   2 2 0   0%
src / kemi / _memory_impl.py Memory.aupdate   2 0 0   100%
src / kemi / _memory_impl.py Memory.aupdate_many   7 2 0   71%
src / kemi / _memory_impl.py Memory.aforget_many   6 1 0   83%
src / kemi / _memory_impl.py Memory.arecall_many   6 1 0   83%
src / kemi / _memory_impl.py Memory.arecall_since   2 2 0   0%
src / kemi / _memory_impl.py Memory.aremember_many   2 0 0   100%
src / kemi / _memory_impl.py Memory.feedback   20 20 0   0%
src / kemi / _memory_impl.py Memory.backfill_entities   25 0 0   100%
src / kemi / _memory_impl.py Memory.abackfill_entities   2 0 0   100%
src / kemi / _memory_impl.py Memory.run_maintenance   19 3 0   84%
src / kemi / _memory_impl.py Memory.get_metrics   3 3 0   0%
src / kemi / _memory_impl.py Memory.get_metrics_prometheus   3 3 0   0%
src / kemi / _memory_impl.py Memory.enable_adaptive_retrieval   7 7 0   0%
src / kemi / _memory_impl.py Memory._track_operation   2 0 0   100%
src / kemi / _memory_impl.py Memory._record_embed_error   2 2 0   0%
src / kemi / _memory_impl.py Memory._record_store_error   2 2 0   0%
src / kemi / _memory_impl.py Memory.add_event_hook   2 0 0   100%
src / kemi / _memory_impl.py Memory.remove_event_hook   2 0 0   100%
src / kemi / _memory_impl.py Memory._run_hooks   2 0 0   100%
src / kemi / _memory_impl.py Memory.enable_query_cache   2 0 0   100%
src / kemi / _memory_impl.py Memory.disable_query_cache   2 0 0   100%
src / kemi / _memory_impl.py Memory.configure_versioning   2 0 0   100%
src / kemi / _memory_impl.py Memory._get_version_store   2 0 0   100%
src / kemi / _memory_impl.py Memory.get_history   2 0 0   100%
src / kemi / _memory_impl.py Memory.diff_versions   2 0 0   100%
src / kemi / _memory_impl.py Memory.rollback_memory   2 0 0   100%
src / kemi / _memory_impl.py Memory._auto_prune_versions_for_memory   2 0 0   100%
src / kemi / _memory_impl.py Memory.configure_webhooks   2 2 0   0%
src / kemi / _memory_impl.py Memory._dispatch_webhook_event   2 0 0   100%
src / kemi / _memory_impl.py Memory.enable_audit_trail   2 0 0   100%
src / kemi / _memory_impl.py Memory.get_metrics   2 0 0   100%
src / kemi / _memory_impl.py Memory.get_metrics_prometheus   2 0 0   100%
src / kemi / _memory_impl.py Memory.enable_adaptive_retrieval   2 0 0   100%
src / kemi / _memory_impl.py _QueryCache.__new__   0 0 3   100%
src / kemi / _memory_impl.py (no function)   99 0 3   100%
src / kemi / adapters / __init__.py (no function)   0 0 0   100%
src / kemi / adapters / embedding / __init__.py (no function)   0 0 0   100%
src / kemi / adapters / embedding / custom.py CustomEmbedAdapter.__init__   2 0 0   100%
src / kemi / adapters / embedding / custom.py CustomEmbedAdapter.embed   1 0 0   100%
src / kemi / adapters / embedding / custom.py CustomEmbedAdapter.embed_single   1 0 0   100%
src / kemi / adapters / embedding / custom.py CustomEmbedAdapter.dimension   1 0 0   100%
src / kemi / adapters / embedding / custom.py (no function)   7 0 0   100%
src / kemi / adapters / storage / __init__.py (no function)   0 0 0   100%
src / kemi / adapters / storage / json.py JSONStorageAdapter.__init__   10 2 0   80%
src / kemi / adapters / storage / json.py JSONStorageAdapter._load   4 2 0   50%
src / kemi / adapters / storage / json.py JSONStorageAdapter._save   2 0 0   100%
src / kemi / adapters / storage / json.py JSONStorageAdapter._row_to_memory   13 1 0   92%
src / kemi / adapters / storage / json.py JSONStorageAdapter.store   10 1 0   90%
src / kemi / adapters / storage / json.py JSONStorageAdapter.search   20 2 0   90%
src / kemi / adapters / storage / json.py JSONStorageAdapter.get   4 0 0   100%
src / kemi / adapters / storage / json.py JSONStorageAdapter.update   1 0 0   100%
src / kemi / adapters / storage / json.py JSONStorageAdapter.delete_by_user   6 0 0   100%
src / kemi / adapters / storage / json.py JSONStorageAdapter.delete_by_id   5 0 0   100%
src / kemi / adapters / storage / json.py JSONStorageAdapter.get_all_by_user   9 2 0   78%
src / kemi / adapters / storage / json.py JSONStorageAdapter.count   1 0 0   100%
src / kemi / adapters / storage / json.py JSONStorageAdapter.get_all   6 2 0   67%
src / kemi / adapters / storage / json.py JSONStorageAdapter.get_all_users   2 2 0   0%
src / kemi / adapters / storage / json.py JSONStorageAdapter.upgrade_schema   2 0 0   100%
src / kemi / adapters / storage / json.py JSONStorageAdapter.get_by_tag   4 4 0   0%
src / kemi / adapters / storage / json.py JSONStorageAdapter.search_by_content   9 9 0   0%
src / kemi / adapters / storage / json.py (no function)   26 0 2   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.__init__   11 2 0   82%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter._get_connection   7 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter._transaction   9 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.close   4 0 2   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter._shared_conn   1 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.__del__   1 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.__enter__   1 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.__exit__   1 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter._init_schema   14 2 0   86%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter._get_schema_version   6 0 2   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter._run_migrations   42 4 2   90%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter._row_to_memory   40 15 0   62%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter._memory_to_row   15 2 0   87%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.store   4 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.store_many   8 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter._sync_fts_single   5 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.rebuild_fts_index   10 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.search   20 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.get   6 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.update   1 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.delete_by_user   7 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.delete_by_id   7 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.get_all_by_user   18 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.count   3 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.get_all   12 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.search_by_content   5 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter._fts5_search   24 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter._prepare_fts_query   21 3 0   86%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter._bm25_python_fallback   21 3 0   86%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.get_all_users   4 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.upgrade_schema   2 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.get_by_tag   9 0 0   100%
src / kemi / adapters / storage / sqlite.py SQLiteStorageAdapter.get_api_key_manager   2 0 0   100%
src / kemi / adapters / storage / sqlite.py (no function)   50 0 2   100%
src / kemi / adapters / storage / sqlite_vec.py _embedding_to_json   1 0 0   100%
src / kemi / adapters / storage / sqlite_vec.py SQLiteVecStorageAdapter.__init__   5 0 0   100%
src / kemi / adapters / storage / sqlite_vec.py SQLiteVecStorageAdapter.is_lazy   1 0 0   100%
src / kemi / adapters / storage / sqlite_vec.py SQLiteVecStorageAdapter._get_connection   9 6 2   33%
src / kemi / adapters / storage / sqlite_vec.py SQLiteVecStorageAdapter._init_schema   13 0 0   100%
src / kemi / adapters / storage / sqlite_vec.py SQLiteVecStorageAdapter._init_vec_table   6 4 2   33%
src / kemi / adapters / storage / sqlite_vec.py SQLiteVecStorageAdapter._run_migrations   45 4 0   91%
src / kemi / adapters / storage / sqlite_vec.py SQLiteVecStorageAdapter.store   12 2 0   83%
src / kemi / adapters / storage / sqlite_vec.py SQLiteVecStorageAdapter._store_pending_on_conn   4 0 0   100%
src / kemi / adapters / storage / sqlite_vec.py SQLiteVecStorageAdapter._store_vec_direct_on_conn   11 11 0   0%
src / kemi / adapters / storage / sqlite_vec.py SQLiteVecStorageAdapter._count_pending   6 0 0   100%
src / kemi / adapters / storage / sqlite_vec.py SQLiteVecStorageAdapter._has_pending   1 0 0   100%
src / kemi / adapters / storage / sqlite_vec.py SQLiteVecStorageAdapter._flush_pending   21 17 0   19%
src / kemi / adapters / storage / sqlite_vec.py SQLiteVecStorageAdapter.search   8 3 0   62%
src / kemi / adapters / storage / sqlite_vec.py SQLiteVecStorageAdapter._search_vec   24 24 0   0%
src / kemi / adapters / storage / sqlite_vec.py SQLiteVecStorageAdapter.delete_by_id   9 1 0   89%
src / kemi / adapters / storage / sqlite_vec.py SQLiteVecStorageAdapter.delete_by_user   9 1 0   89%
src / kemi / adapters / storage / sqlite_vec.py SQLiteVecStorageAdapter.update   1 0 0   100%
src / kemi / adapters / storage / sqlite_vec.py SQLiteVecStorageAdapter._memory_to_row   4 0 0   100%
src / kemi / adapters / storage / sqlite_vec.py SQLiteVecStorageAdapter._row_to_memory   6 0 2   100%
src / kemi / adapters / storage / sqlite_vec.py SQLiteVecStorageAdapter.is_vec_available   1 0 0   100%
src / kemi / adapters / storage / sqlite_vec.py (no function)   41 6 5   85%
src / kemi / adaptive.py AdaptiveRetriever.__init__   3 0 0   100%
src / kemi / adaptive.py AdaptiveRetriever.analyze_query   12 0 0   100%
src / kemi / adaptive.py AdaptiveRetriever.get_weights   4 0 0   100%
src / kemi / adaptive.py AdaptiveRetriever.record_feedback   4 0 0   100%
src / kemi / adaptive.py AdaptiveRetriever.get_user_profile   7 0 0   100%
src / kemi / adaptive.py AdaptiveRetriever._classify_query   29 0 0   100%
src / kemi / adaptive.py AdaptiveRetriever._compute_keyword_density   4 1 0   75%
src / kemi / adaptive.py AdaptiveRetriever._compute_specificity   19 1 0   95%
src / kemi / adaptive.py AdaptiveRetriever._adjust_weights   24 0 0   100%
src / kemi / adaptive.py (no function)   47 0 0   100%
src / kemi / api_keys.py APIKey.is_expired   9 0 0   100%
src / kemi / api_keys.py APIKey.is_active   1 0 0   100%
src / kemi / api_keys.py APIKey.to_dict   4 0 0   100%
src / kemi / api_keys.py _hash_key   1 0 0   100%
src / kemi / api_keys.py _generate_raw_key   2 0 0   100%
src / kemi / api_keys.py _generate_key_id   1 0 0   100%
src / kemi / api_keys.py APIKeyManager.__init__   1 0 0   100%
src / kemi / api_keys.py APIKeyManager.create_key   14 0 0   100%
src / kemi / api_keys.py APIKeyManager.lookup   13 0 2   100%
src / kemi / api_keys.py APIKeyManager.list_keys   4 0 0   100%
src / kemi / api_keys.py APIKeyManager.revoke   3 0 0   100%
src / kemi / api_keys.py APIKeyManager.get   4 0 0   100%
src / kemi / api_keys.py APIKeyManager.cleanup_expired   4 0 0   100%
src / kemi / api_keys.py make_expiry   3 0 0   100%
src / kemi / api_keys.py (no function)   39 0 0   100%
src / kemi / api_server.py _api_key_required   1 0 0   100%
src / kemi / api_server.py _is_exempt   5 1 0   80%
src / kemi / api_server.py _resolve_user_id   8 0 0   100%
src / kemi / api_server.py _require_admin   4 0 0   100%
src / kemi / api_server.py RateLimiter.__init__   4 0 0   100%
src / kemi / api_server.py RateLimiter.is_allowed   8 0 0   100%
src / kemi / api_server.py RateLimiter.get_retry_after   8 0 0   100%
src / kemi / api_server.py _get_rate_limiter   10 0 0   100%
src / kemi / api_server.py _check_rate_limit   6 0 0   100%
src / kemi / api_server.py _get_api_key_manager   17 17 0   0%
src / kemi / api_server.py _reset_api_key_manager   2 0 0   100%
src / kemi / api_server.py _get_memory_singleton   6 0 0   100%
src / kemi / api_server.py lifespan   16 2 0   88%
src / kemi / api_server.py create_app   114 9 0   92%
src / kemi / api_server.py create_app.api_key_middleware   15 1 0   93%
src / kemi / api_server.py create_app._ensure_state_defaults   5 0 0   100%
src / kemi / api_server.py create_app.remember   11 0 0   100%
src / kemi / api_server.py create_app.recall   9 3 0   67%
src / kemi / api_server.py create_app.recall_stream   7 1 0   86%
src / kemi / api_server.py create_app.recall_stream._generate   11 3 0   73%
src / kemi / api_server.py create_app.recall_explain   9 3 0   67%
src / kemi / api_server.py create_app.forget   6 1 0   83%
src / kemi / api_server.py create_app.update_memory   18 2 0   89%
src / kemi / api_server.py create_app.prune   12 1 0   92%
src / kemi / api_server.py create_app.stats   8 1 0   88%
src / kemi / api_server.py create_app.list_users   5 1 0   80%
src / kemi / api_server.py create_app.consolidate_user   11 1 0   91%
src / kemi / api_server.py create_app.topics_user   9 1 0   89%
src / kemi / api_server.py create_app.graph_user   9 1 0   89%
src / kemi / api_server.py create_app.feedback_user   9 1 0   89%
src / kemi / api_server.py create_app.health   24 9 0   62%
src / kemi / api_server.py create_app.submit_embed_batch_task   8 2 0   75%
src / kemi / api_server.py create_app.submit_rebuild_fts_task   13 5 0   62%
src / kemi / api_server.py create_app.get_task_stats   3 0 0   100%
src / kemi / api_server.py create_app.get_task_status   6 0 0   100%
src / kemi / api_server.py create_app.list_tasks   11 0 0   100%
src / kemi / api_server.py create_app.cancel_task   6 0 0   100%
src / kemi / api_server.py create_app.admin_rebuild_fts   9 3 0   67%
src / kemi / api_server.py create_app.admin_fts_stats   25 6 0   76%
src / kemi / api_server.py create_app.admin_fts_verify   22 6 0   73%
src / kemi / api_server.py create_app.admin_health   35 9 0   74%
src / kemi / api_server.py create_app.get_metrics   9 1 0   89%
src / kemi / api_server.py create_app.audit_log   9 3 0   67%
src / kemi / api_server.py create_app.audit_query   14 6 0   57%
src / kemi / api_server.py create_app.audit_stats   7 3 0   57%
src / kemi / api_server.py create_app.audit_export   14 6 0   57%
src / kemi / api_server.py create_app.adaptive_analyze   8 3 0   62%
src / kemi / api_server.py create_app.adaptive_user_profile   8 3 0   62%
src / kemi / api_server.py create_app.admin_enable_audit   10 4 0   60%
src / kemi / api_server.py create_app.admin_enable_adaptive   8 4 0   50%
src / kemi / api_server.py create_app.create_api_key   13 2 0   85%
src / kemi / api_server.py create_app.list_api_keys   7 1 0   86%
src / kemi / api_server.py create_app.revoke_api_key   13 6 0   54%
src / kemi / api_server.py create_app.get_memory_history   6 2 0   67%
src / kemi / api_server.py create_app._get_webhook_store   5 2 0   60%
src / kemi / api_server.py create_app.create_webhook   10 1 0   90%
src / kemi / api_server.py create_app.list_webhooks   5 1 0   80%
src / kemi / api_server.py create_app.delete_webhook   6 1 0   83%
src / kemi / api_server.py create_app.admin_list_users   16 1 2   94%
src / kemi / api_server.py (no function)   127 0 5   100%
src / kemi / audit.py AuditEntry.to_dict   1 0 0   100%
src / kemi / audit.py AuditTrail.__init__   9 0 0   100%
src / kemi / audit.py AuditTrail._ensure_schema   2 0 0   100%
src / kemi / audit.py AuditTrail.log_operation   13 0 0   100%
src / kemi / audit.py AuditTrail.log_operation_batch   15 1 0   93%
src / kemi / audit.py AuditTrail.query   39 2 0   95%
src / kemi / audit.py AuditTrail.get_user_activity   13 3 0   77%
src / kemi / audit.py AuditTrail.get_stats   13 0 0   100%
src / kemi / audit.py AuditTrail.export   2 0 0   100%
src / kemi / audit.py AuditTrail._maybe_purge   8 3 0   62%
src / kemi / audit.py AuditTrail._purge_old_entries   14 12 0   14%
src / kemi / audit.py AuditTrail.purge_all   9 0 0   100%
src / kemi / audit.py AuditTrail.close   1 0 0   100%
src / kemi / audit.py (no function)   38 0 0   100%
src / kemi / background_tasks.py TaskResult.to_dict   1 0 0   100%
src / kemi / background_tasks.py BackgroundTaskManager.__init__   7 0 0   100%
src / kemi / background_tasks.py BackgroundTaskManager._ensure_loop_started   8 0 0   100%
src / kemi / background_tasks.py BackgroundTaskManager._ensure_loop_started.run_loop   3 0 0   100%
src / kemi / background_tasks.py BackgroundTaskManager._get_loop   3 0 0   100%
src / kemi / background_tasks.py BackgroundTaskManager.submit_embed_batch   13 0 0   100%
src / kemi / background_tasks.py BackgroundTaskManager._run_embed_batch   25 0 0   100%
src / kemi / background_tasks.py BackgroundTaskManager.submit_rebuild_fts_index   14 1 0   93%
src / kemi / background_tasks.py BackgroundTaskManager._run_rebuild_fts   25 0 0   100%
src / kemi / background_tasks.py BackgroundTaskManager.get_task_status   2 0 0   100%
src / kemi / background_tasks.py BackgroundTaskManager.list_tasks   6 0 0   100%
src / kemi / background_tasks.py BackgroundTaskManager.get_stats   7 0 0   100%
src / kemi / background_tasks.py BackgroundTaskManager.shutdown   5 0 0   100%
src / kemi / background_tasks.py BackgroundTaskManager._cleanup_old_tasks   7 0 0   100%
src / kemi / background_tasks.py BackgroundTaskManager.cancel_task   10 0 0   100%
src / kemi / background_tasks.py BackgroundTaskManager.submit_ttl_sweep   14 1 0   93%
src / kemi / background_tasks.py BackgroundTaskManager._run_ttl_sweep   23 0 0   100%
src / kemi / background_tasks.py get_task_manager   4 0 0   100%
src / kemi / background_tasks.py (no function)   45 0 0   100%
src / kemi / chunker.py ChunkInfo.to_dict   1 0 0   100%
src / kemi / chunker.py Chunk.__len__   1 0 0   100%
src / kemi / chunker.py Chunk.word_count   1 0 0   100%
src / kemi / chunker.py Chunk.token_count_estimate   1 0 0   100%
src / kemi / chunker.py _is_sentence_boundary   9 0 0   100%
src / kemi / chunker.py split_into_sentences   30 6 0   80%
src / kemi / chunker.py semantic_chunks   54 2 0   96%
src / kemi / chunker.py semantic_chunks.sentence_tokens   1 0 0   100%
src / kemi / chunker.py _cosine_sim   6 0 0   100%
src / kemi / chunker.py chunk_and_embed   1 0 0   100%
src / kemi / chunker.py (no function)   30 0 2   100%
src / kemi / cli_writer.py Writer.write   1 1 0   0%
src / kemi / cli_writer.py Writer.error   1 1 0   0%
src / kemi / cli_writer.py Writer.warn   1 1 0   0%
src / kemi / cli_writer.py ConsoleWriter.__init__   1 0 0   100%
src / kemi / cli_writer.py ConsoleWriter._stream   1 0 0   100%
src / kemi / cli_writer.py ConsoleWriter.write   2 0 0   100%
src / kemi / cli_writer.py ConsoleWriter.error   1 0 0   100%
src / kemi / cli_writer.py ConsoleWriter.warn   1 0 0   100%
src / kemi / cli_writer.py JsonWriter.__init__   1 0 0   100%
src / kemi / cli_writer.py JsonWriter._emit   2 0 0   100%
src / kemi / cli_writer.py JsonWriter.write   1 0 0   100%
src / kemi / cli_writer.py JsonWriter.error   1 0 0   100%
src / kemi / cli_writer.py JsonWriter.warn   1 0 0   100%
src / kemi / cli_writer.py SilentWriter.write   2 0 0   100%
src / kemi / cli_writer.py SilentWriter.error   1 0 0   100%
src / kemi / cli_writer.py SilentWriter.warn   1 0 0   100%
src / kemi / cli_writer.py make_writer   5 0 0   100%
src / kemi / cli_writer.py (no function)   25 0 0   100%
src / kemi / consolidation.py _get_summarizer   8 0 0   100%
src / kemi / consolidation.py consolidate_cluster   15 0 0   100%
src / kemi / consolidation.py consolidate   20 4 0   80%
src / kemi / consolidation.py _cluster_by_similarity   18 0 0   100%
src / kemi / consolidation.py _extractive_summary   31 0 0   100%
src / kemi / consolidation.py (no function)   13 0 0   100%
src / kemi / core.py (no function)   3 0 0   100%
src / kemi / decomposer.py QueryDecompositionStrategy.decompose   0 0 1   100%
src / kemi / decomposer.py SimpleDecomposition.decompose   17 2 0   88%
src / kemi / decomposer.py SimpleDecomposition._starts_with_question_word   2 0 0   100%
src / kemi / decomposer.py SimpleDecomposition._reconstruct_query   4 0 0   100%
src / kemi / decomposer.py SubqueryExpansion.decompose   10 0 0   100%
src / kemi / decomposer.py decompose_query   21 0 0   100%
src / kemi / decomposer.py fused_recall   30 0 0   100%
src / kemi / decomposer.py rerank_with_reranker   2 0 0   100%
src / kemi / decomposer.py (no function)   30 0 3   100%
src / kemi / dedup.py _extract_nouns   14 0 0   100%
src / kemi / dedup.py has_sentiment_flip   8 0 6   100%
src / kemi / dedup.py find_duplicates   11 0 2   100%
src / kemi / dedup.py find_conflicts   11 0 0   100%
src / kemi / dedup.py resolve_duplicate   1 0 0   100%
src / kemi / dedup.py (no function)   10 0 0   100%
src / kemi / encryption.py EncryptionConfig.__init__   7 0 0   100%
src / kemi / encryption.py EncryptionConfig.from_env   5 0 0   100%
src / kemi / encryption.py EncryptionConfig.from_key_file   3 0 0   100%
src / kemi / encryption.py EncryptionConfig.key   5 0 0   100%
src / kemi / encryption.py load_key_from_file   4 0 0   100%
src / kemi / encryption.py generate_key   9 2 0   78%
src / kemi / encryption.py FernetEncryptor.__init__   8 2 0   75%
src / kemi / encryption.py FernetEncryptor.encrypt   6 0 0   100%
src / kemi / encryption.py FernetEncryptor.decrypt   3 0 0   100%
src / kemi / encryption.py FernetEncryptor.decrypt_str   1 0 0   100%
src / kemi / encryption.py FieldEncryptor.__init__   11 0 0   100%
src / kemi / encryption.py FieldEncryptor.is_enabled   1 0 0   100%
src / kemi / encryption.py FieldEncryptor._encrypt_value   5 1 0   80%
src / kemi / encryption.py FieldEncryptor.encrypt_field   11 5 0   55%
src / kemi / encryption.py FieldEncryptor.decrypt_field   7 2 0   71%
src / kemi / encryption.py FieldEncryptor._is_encrypted   1 0 0   100%
src / kemi / encryption.py FieldEncryptor.encrypt_memory_row   11 1 0   91%
src / kemi / encryption.py FieldEncryptor.decrypt_memory_row   11 1 0   91%
src / kemi / encryption.py SQLCipherManager.__init__   5 0 0   100%
src / kemi / encryption.py SQLCipherManager.key   1 0 0   100%
src / kemi / encryption.py SQLCipherManager.configure_connection   9 9 0   0%
src / kemi / encryption.py SQLCipherManager.connect   7 7 0   0%
src / kemi / encryption.py is_sqlcipher_available   5 1 0   80%
src / kemi / encryption.py is_cryptography_available   5 2 0   60%
src / kemi / encryption.py (no function)   41 0 0   100%
src / kemi / entities.py EntityLinker.extract   1 1 0   0%
src / kemi / entities.py NoopEntityLinker.extract   1 0 0   100%
src / kemi / entities.py RegexEntityLinker.extract   11 0 0   100%
src / kemi / entities.py SpacyEntityLinker.__init__   6 0 0   100%
src / kemi / entities.py SpacyEntityLinker.extract   6 0 0   100%
src / kemi / entities.py (no function)   19 0 0   100%
src / kemi / graph.py extract_entities   15 0 0   100%
src / kemi / graph.py _guess_entity_label   14 0 0   100%
src / kemi / graph.py extract_relations   10 0 0   100%
src / kemi / graph.py _find_nearest_entity   10 0 0   100%
src / kemi / graph.py build_memory_graph   21 0 0   100%
src / kemi / graph.py (no function)   10 0 0   100%
src / kemi / integrations / __init__.py (no function)   0 0 0   100%
src / kemi / lifecycle.py evaluate_lifecycle   11 0 0   100%
src / kemi / lifecycle.py transition   2 0 0   100%
src / kemi / lifecycle.py get_recall_filter   1 0 0   100%
src / kemi / lifecycle.py validate_transition   2 0 0   100%
src / kemi / lifecycle.py (no function)   7 0 0   100%
src / kemi / memory_formation.py LLMMemoryExtractor.extract   1 1 0   0%
src / kemi / memory_formation.py RegexMemoryExtractor.__init__   1 0 0   100%
src / kemi / memory_formation.py RegexMemoryExtractor.extract   19 3 0   84%
src / kemi / memory_formation.py OpenAIMemoryExtractor.__init__   6 0 0   100%
src / kemi / memory_formation.py OpenAIMemoryExtractor.extract   30 0 0   100%
src / kemi / memory_formation.py StaticMemoryExtractor.__init__   1 0 0   100%
src / kemi / memory_formation.py StaticMemoryExtractor.extract   1 0 0   100%
src / kemi / memory_formation.py extract_memories   33 1 0   97%
src / kemi / memory_formation.py remember_from_conversation   11 0 0   100%
src / kemi / memory_formation.py (no function)   34 0 2   100%
src / kemi / models.py MemoryConfig.__post_init__   22 0 0   100%
src / kemi / models.py (no function)   62 0 0   100%
src / kemi / observability.py Counter.__init__   5 0 0   100%
src / kemi / observability.py Counter.inc   2 0 0   100%
src / kemi / observability.py Counter.value   2 0 0   100%
src / kemi / observability.py Counter.to_prometheus   3 0 0   100%
src / kemi / observability.py Histogram.__init__   8 0 0   100%
src / kemi / observability.py Histogram.observe   6 0 0   100%
src / kemi / observability.py Histogram.to_prometheus   8 0 0   100%
src / kemi / observability.py Gauge.__init__   4 0 0   100%
src / kemi / observability.py Gauge.set   2 0 0   100%
src / kemi / observability.py Gauge.inc   2 0 0   100%
src / kemi / observability.py Gauge.dec   2 0 0   100%
src / kemi / observability.py Gauge.value   2 0 0   100%
src / kemi / observability.py Gauge.to_prometheus   3 0 0   100%
src / kemi / observability.py MetricsCollector.__init__   28 0 0   100%
src / kemi / observability.py MetricsCollector._start_timer   1 0 0   100%
src / kemi / observability.py MetricsCollector._stop_timer   3 0 0   100%
src / kemi / observability.py MetricsCollector.track   1 0 0   100%
src / kemi / observability.py MetricsCollector.record_operation   1 0 0   100%
src / kemi / observability.py MetricsCollector.to_dict   1 0 0   100%
src / kemi / observability.py MetricsCollector.to_prometheus   11 0 0   100%
src / kemi / observability.py MetricsCollector.reset   14 0 0   100%
src / kemi / observability.py _OperationTracker.__init__   3 0 0   100%
src / kemi / observability.py _OperationTracker.__enter__   2 0 0   100%
src / kemi / observability.py _OperationTracker.__exit__   3 0 0   100%
src / kemi / observability.py _OperationTracker.duration   3 0 0   100%
src / kemi / observability.py get_metrics_collector   7 1 0   86%
src / kemi / observability.py reset_metrics   2 0 0   100%
src / kemi / observability.py (no function)   48 0 0   100%
src / kemi / operations / __init__.py (no function)   2 0 0   100%
src / kemi / operations / _ops_hooks.py add   3 1 0   67%
src / kemi / operations / _ops_hooks.py remove   4 1 0   75%
src / kemi / operations / _ops_hooks.py run   9 0 0   100%
src / kemi / operations / _ops_hooks.py (no function)   7 0 2   100%
src / kemi / operations / _ops_metrics.py latency_tracker   3 1 0   67%
src / kemi / operations / _ops_metrics.py track_operation   9 9 0   0%
src / kemi / operations / _ops_metrics.py track_operation_full   16 4 0   75%
src / kemi / operations / _ops_metrics.py record_embed_error   5 5 0   0%
src / kemi / operations / _ops_metrics.py record_store_error   5 5 0   0%
src / kemi / operations / _ops_metrics.py get_metrics   10 6 0   40%
src / kemi / operations / _ops_metrics.py get_metrics_prometheus   8 4 0   50%
src / kemi / operations / _ops_metrics.py enable_adaptive_retrieval   9 2 0   78%
src / kemi / operations / _ops_metrics.py enable_audit_trail   6 2 0   67%
src / kemi / operations / _ops_metrics.py enable_query_cache   2 0 0   100%
src / kemi / operations / _ops_metrics.py disable_query_cache   1 0 0   100%
src / kemi / operations / _ops_metrics.py (no function)   16 0 2   100%
src / kemi / operations / _ops_versioning.py configure   13 2 0   85%
src / kemi / operations / _ops_versioning.py get_store   7 0 0   100%
src / kemi / operations / _ops_versioning.py get_history   7 0 0   100%
src / kemi / operations / _ops_versioning.py diff   6 0 0   100%
src / kemi / operations / _ops_versioning.py rollback   6 0 0   100%
src / kemi / operations / _ops_versioning.py auto_prune   16 3 0   81%
src / kemi / operations / _ops_versioning.py (no function)   12 0 2   100%
src / kemi / operations / _ops_webhooks.py configure   12 12 0   0%
src / kemi / operations / _ops_webhooks.py dispatch   19 17 0   11%
src / kemi / operations / _ops_webhooks.py (no function)   8 0 2   100%
src / kemi / operations / _query_cache.py _QueryCache.__init__   2 0 0   100%
src / kemi / operations / _query_cache.py _QueryCache._make_key   3 0 0   100%
src / kemi / operations / _query_cache.py _QueryCache._copy_memories   1 0 0   100%
src / kemi / operations / _query_cache.py _QueryCache.get   4 0 0   100%
src / kemi / operations / _query_cache.py _QueryCache.put   5 2 0   60%
src / kemi / operations / _query_cache.py (no function)   10 0 0   100%
src / kemi / pipeline / __init__.py (no function)   0 0 0   100%
src / kemi / pipeline / ingestion.py _memory_to_dict   1 0 0   100%
src / kemi / pipeline / ingestion.py IngestionPipeline.__init__   1 0 0   100%
src / kemi / pipeline / ingestion.py IngestionPipeline.ingest   33 3 0   91%
src / kemi / pipeline / ingestion.py IngestionPipeline._handle_duplicate   20 0 0   100%
src / kemi / pipeline / ingestion.py (no function)   26 0 4   100%
src / kemi / pipeline / retrieval.py RetrievalPipeline.__init__   1 0 0   100%
src / kemi / pipeline / retrieval.py RetrievalPipeline.retrieve   26 0 0   100%
src / kemi / pipeline / retrieval.py RetrievalPipeline._embed_query   1 0 0   100%
src / kemi / pipeline / retrieval.py RetrievalPipeline._check_cache   8 0 0   100%
src / kemi / pipeline / retrieval.py RetrievalPipeline._search_storage   4 0 0   100%
src / kemi / pipeline / retrieval.py RetrievalPipeline._validate_embedding_dim   6 0 0   100%
src / kemi / pipeline / retrieval.py RetrievalPipeline._build_entity_maps   10 0 0   100%
src / kemi / pipeline / retrieval.py RetrievalPipeline._rank   1 0 0   100%
src / kemi / pipeline / retrieval.py RetrievalPipeline._mmr_rerank   3 0 0   100%
src / kemi / pipeline / retrieval.py RetrievalPipeline._truncate   3 0 0   100%
src / kemi / pipeline / retrieval.py RetrievalPipeline._update_lifecycle   9 4 0   56%
src / kemi / pipeline / retrieval.py RetrievalPipeline._cache_results   4 0 0   100%
src / kemi / pipeline / retrieval.py RetrievalPipeline._adaptive_feedback   7 2 0   71%
src / kemi / pipeline / retrieval.py (no function)   38 0 3   100%
src / kemi / procedures.py remember_procedure   11 0 0   100%
src / kemi / procedures.py recall_procedures   10 0 0   100%
src / kemi / procedures.py (no function)   5 0 3   100%
src / kemi / reranker.py rerank_results   16 1 0   94%
src / kemi / reranker.py FallbackReranker.__init__   1 0 0   100%
src / kemi / reranker.py FallbackReranker.score   19 2 0   89%
src / kemi / reranker.py FallbackReranker._normalize_terms   1 0 0   100%
src / kemi / reranker.py FallbackReranker._stemmed_overlap   4 0 0   100%
src / kemi / reranker.py FallbackReranker._strip_suffix   4 0 0   100%
src / kemi / reranker.py FallbackReranker._position_bonus   7 0 0   100%
src / kemi / reranker.py FallbackReranker._cosine_sim   6 1 0   83%
src / kemi / reranker.py CrossEncoderReranker.__init__   4 4 0   0%
src / kemi / reranker.py CrossEncoderReranker.score   1 1 0   0%
src / kemi / reranker.py NomicReranker.__init__   6 2 0   67%
src / kemi / reranker.py NomicReranker.score   18 8 0   56%
src / kemi / reranker.py fuse_and_rerank   11 0 0   100%
src / kemi / reranker.py (no function)   36 0 2   100%
src / kemi / sanitize.py _log_detection   6 0 0   100%
src / kemi / sanitize.py _get_content_hash   1 0 0   100%
src / kemi / sanitize.py is_suspicious   7 0 0   100%
src / kemi / sanitize.py sanitize   17 0 0   100%
src / kemi / sanitize.py sanitize_with_rejection   18 0 0   100%
src / kemi / sanitize.py (no function)   13 0 0   100%
src / kemi / scoring.py bm25_score   24 0 4   100%
src / kemi / scoring.py bm25_score_corpus   30 0 4   100%
src / kemi / scoring.py cosine_similarity   15 12 5   20%
src / kemi / scoring.py temporal_recency   5 0 0   100%
src / kemi / scoring.py jaccard_similarity   5 0 0   100%
src / kemi / scoring.py score_memory   16 0 0   100%
src / kemi / scoring.py rank_memories   7 0 0   100%
src / kemi / scoring.py mmr_rerank   22 0 2   100%
src / kemi / scoring.py _default_token_counter   2 0 0   100%
src / kemi / scoring.py mmr_rerank_stream   25 2 0   92%
src / kemi / scoring.py truncate_by_tokens   14 0 2   100%
src / kemi / scoring.py (no function)   16 1 4   94%
src / kemi / summarizer.py LLMSummarizer.__init__   9 0 0   100%
src / kemi / summarizer.py LLMSummarizer._init_client   24 0 0   100%
src / kemi / summarizer.py LLMSummarizer.summarize   22 0 0   100%
src / kemi / summarizer.py (no function)   10 0 0   100%
src / kemi / topics.py _sklearn_available   5 2 0   60%
src / kemi / topics.py cluster_memories   29 1 0   97%
src / kemi / topics.py _generate_topic_label   12 0 0   100%
src / kemi / topics.py (no function)   7 0 0   100%
src / kemi / versions.py _pack_embedding   3 0 0   100%
src / kemi / versions.py _unpack_embedding   7 1 0   86%
src / kemi / versions.py MemoryVersionStore.__init__   7 1 0   86%
src / kemi / versions.py MemoryVersionStore._get_connection   4 0 0   100%
src / kemi / versions.py MemoryVersionStore._ensure_tables   6 0 0   100%
src / kemi / versions.py MemoryVersionStore._next_version_number   8 0 0   100%
src / kemi / versions.py MemoryVersionStore.record_version   15 0 0   100%
src / kemi / versions.py MemoryVersionStore.record_before_update   17 0 0   100%
src / kemi / versions.py MemoryVersionStore.prune_versions   22 3 0   86%
src / kemi / versions.py MemoryVersionStore.verify_sequential_versions   7 0 0   100%
src / kemi / versions.py MemoryVersionStore.list_versions   8 0 0   100%
src / kemi / versions.py MemoryVersionStore.get_version   7 0 0   100%
src / kemi / versions.py MemoryVersionStore.get_latest_version_number   7 0 0   100%
src / kemi / versions.py MemoryVersionStore.rollback   28 5 0   82%
src / kemi / versions.py MemoryVersionStore.diff   12 0 0   100%
src / kemi / versions.py MemoryVersionStore._row_to_snapshot   2 0 0   100%
src / kemi / versions.py MemoryVersionStore._normalize_field_value   3 0 0   100%
src / kemi / versions.py diff_memories   7 0 0   100%
src / kemi / versions.py enable_versioning   4 0 0   100%
src / kemi / versions.py (no function)   60 0 0   100%
src / kemi / webhooks.py WebhookEventType.from_string   5 0 0   100%
src / kemi / webhooks.py RetryConfig.delay   2 0 0   100%
src / kemi / webhooks.py WebhookConfig.matches_event   1 0 0   100%
src / kemi / webhooks.py build_payload   8 0 0   100%
src / kemi / webhooks.py sign_payload   3 0 0   100%
src / kemi / webhooks.py WebhookStore.__init__   2 0 0   100%
src / kemi / webhooks.py WebhookStore._get_connection   4 0 0   100%
src / kemi / webhooks.py WebhookStore._init_schema   2 0 0   100%
src / kemi / webhooks.py WebhookStore.create   7 0 0   100%
src / kemi / webhooks.py WebhookStore.get   5 0 0   100%
src / kemi / webhooks.py WebhookStore.list_all   5 0 0   100%
src / kemi / webhooks.py WebhookStore.list_for_event   2 0 0   100%
src / kemi / webhooks.py WebhookStore.delete   3 0 0   100%
src / kemi / webhooks.py WebhookStore.update   5 0 0   100%
src / kemi / webhooks.py WebhookStore._row_to_config   6 2 0   67%
src / kemi / webhooks.py WebhookDispatcher.__init__   1 0 0   100%
src / kemi / webhooks.py WebhookDispatcher.dispatch_sync   5 0 0   100%
src / kemi / webhooks.py WebhookDispatcher._call_with_retry_sync   23 3 0   87%
src / kemi / webhooks.py WebhookDispatcher.dispatch_async   5 0 0   100%
src / kemi / webhooks.py WebhookDispatcher.dispatch_async._call   22 3 0   86%
src / kemi / webhooks.py (no function)   55 0 0   100%
Total     5618 624 115   89%

No items found using the specified filter.